From 1546ca3b0ddf83812fa727a1f93e62f3817c7030 Mon Sep 17 00:00:00 2001 From: William Brooks Date: Wed, 15 Dec 2021 11:18:07 +0200 Subject: [PATCH 01/52] IDCOM-1425 Updated credentials to be spec compliant --- .../credentials/VerifiableCredential.test.js | 8 +- __test__/creds/VerifiableCredential.test.js | 383 ++++++++---------- __test__/schemaLoader.test.js | 16 +- src/creds/CvcMerkleProof.js | 2 +- src/creds/VerifiableCredential.js | 102 ++--- src/schemas/jsonSchema/index.js | 22 +- 6 files changed, 258 insertions(+), 275 deletions(-) diff --git a/__integrations__/credentials/VerifiableCredential.test.js b/__integrations__/credentials/VerifiableCredential.test.js index f7cf988c..e64ff1d0 100644 --- a/__integrations__/credentials/VerifiableCredential.test.js +++ b/__integrations__/credentials/VerifiableCredential.test.js @@ -3,6 +3,8 @@ const { Claim } = require('../../src/claim/Claim'); const VC = require('../../src/creds/VerifiableCredential'); const { schemaLoader, CVCSchemaLoader } = require('../../src'); +const credentialSubject = 'did:sol:J2vss1hB3kgEfQMSSdvvjwRm3JdyFWp7S7dbX5mudS4V'; + jest.setTimeout(200000); describe('Integration Tests for Verifiable Credentials', () => { @@ -19,7 +21,7 @@ describe('Integration Tests for Verifiable Credentials', () => { { givenNames: 'Joao', otherNames: 'Barbosa', familyNames: 'Santos' }); const dob = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', { day: 20, month: 3, year: 1978 }); - const cred = await VC.create('credential-cvc:Identity-v1', uuidv4(), null, [name, dob], 1); + const cred = await VC.create('credential-cvc:Identity-v3', uuidv4(), null, credentialSubject, [name, dob]); return cred.requestAnchor().then((updated) => { expect(updated.proof.anchor.type).toBe('temporary'); expect(updated.proof.anchor.value).not.toBeDefined(); @@ -34,7 +36,7 @@ describe('Integration Tests for Verifiable Credentials', () => { { givenNames: 'Joao', otherNames: 'Barbosa', familyNames: 'Santos' }); const dob = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', { day: 20, month: 3, year: 1978 }); - const cred = await VC.create('credential-cvc:Identity-v1', uuidv4(), null, [name, dob], 1); + const cred = await VC.create('credential-cvc:Identity-v3', uuidv4(), null, credentialSubject, [name, dob]); return cred.requestAnchor().then((updated) => { expect(updated.proof.anchor).toBeDefined(); return updated.updateAnchor().then((newUpdated) => { @@ -50,7 +52,7 @@ describe('Integration Tests for Verifiable Credentials', () => { { givenNames: 'Joao', otherNames: 'Barbosa', familyNames: 'Santos' }); const dob = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', { day: 20, month: 3, year: 1978 }); - const cred = await VC.create('credential-cvc:Identity-v1', uuidv4(), null, [name, dob], 1); + const cred = await VC.create('credential-cvc:Identity-v3', uuidv4(), null, credentialSubject, [name, dob]); await cred.requestAnchor(); await cred.updateAnchor(); const validation = await cred.verifyAttestation(); diff --git a/__test__/creds/VerifiableCredential.test.js b/__test__/creds/VerifiableCredential.test.js index 98035cdf..30f5dcb7 100644 --- a/__test__/creds/VerifiableCredential.test.js +++ b/__test__/creds/VerifiableCredential.test.js @@ -18,6 +18,7 @@ const prvBase58 = 'xprv9s21ZrQH143K4aBUwUW6GVec7Y6oUEBqrt2WWaXyxjh2pjofNc1of44BL // eslint-disable-next-line max-len const pubBase58 = 'xpub661MyMwAqRbcH4Fx3W36ddbLfZwHsguhE6x7JxwbX5E1hY8ov9L4CrNfCCQpV8pVK64CVqkhYQ9QLFgkVAUqkRThkTY1R4GiWHNZtAFSVpD'; +const credentialSubject = 'did:sol:J2vss1hB3kgEfQMSSdvvjwRm3JdyFWp7S7dbX5mudS4V'; jest.setTimeout(150000); @@ -45,6 +46,8 @@ const signAttestationSubject = (subject, xprv, xpub) => { }; }; +const toValueObject = obj => JSON.parse(JSON.stringify(obj)); + describe('Unit tests for Verifiable Credentials', () => { beforeAll(() => { schemaLoader.addLoader(new CVCSchemaLoader()); @@ -58,29 +61,21 @@ describe('Unit tests for Verifiable Credentials', () => { const name = await Claim.create('claim-cvc:Identity.name-v1', identityName); const dob = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', identityDateOfBirth); - return expect(VC.create('cvc:cred:Test', uuidv4(), null, [name, dob], '1')) + return expect(VC.create('cvc:cred:Test', uuidv4(), null, credentialSubject, [name, dob])) .rejects.toThrow(/cvc:cred:Test is not defined/); }); - test('Dont construct Credentials with wrong version', async () => { - const name = await Claim.create('claim-cvc:Identity.name-v1', identityName); - const dob = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', identityDateOfBirth); - - return expect(VC.create('credential-cvc:Identity-v1', uuidv4(), null, [name, dob], '2')) - .rejects.toThrow(/Credential definition for credential-cvc:Identity-v1 v2 not found/); - }); - test('New Defined Credentials', async () => { const name = await Claim.create('claim-cvc:Identity.name-v1', identityName); const dob = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', identityDateOfBirth); - const cred = await VC.create('credential-cvc:Identity-v1', uuidv4(), null, [name, dob], '1'); + const cred = await VC.create('credential-cvc:Identity-v3', uuidv4(), null, credentialSubject, [name, dob]); expect(cred).toBeDefined(); - expect(cred.claim.identity.name.givenNames).toBe('Max'); - expect(cred.claim.identity.name.otherNames).toBe('Abc'); - expect(cred.claim.identity.name.familyNames).toBe('Mustermann'); - expect(cred.claim.identity.dateOfBirth.day).toBe(20); - expect(cred.claim.identity.dateOfBirth.month).toBe(3); - expect(cred.claim.identity.dateOfBirth.year).toBe(1978); + expect(cred.credentialSubject.identity.name.givenNames).toBe('Max'); + expect(cred.credentialSubject.identity.name.otherNames).toBe('Abc'); + expect(cred.credentialSubject.identity.name.familyNames).toBe('Mustermann'); + expect(cred.credentialSubject.identity.dateOfBirth.day).toBe(20); + expect(cred.credentialSubject.identity.dateOfBirth.month).toBe(3); + expect(cred.credentialSubject.identity.dateOfBirth.year).toBe(1978); expect(cred.proof.leaves).toHaveLength(8); }); @@ -88,7 +83,7 @@ describe('Unit tests for Verifiable Credentials', () => { + ' null value', async () => { const name = await Claim.create('claim-cvc:Identity.name-v1', identityName); const dob = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', identityDateOfBirth); - const cred = await VC.create('credential-cvc:Identity-v1', uuidv4(), null, [name, dob], '1'); + const cred = await VC.create('credential-cvc:Identity-v3', uuidv4(), null, credentialSubject, [name, dob]); expect(cred).toBeDefined(); expect(cred.expirationDate).toBeNull(); }); @@ -96,14 +91,14 @@ describe('Unit tests for Verifiable Credentials', () => { test('New Expirable Credentials', async () => { const name = await Claim.create('claim-cvc:Identity.name-v1', identityName); const dob = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', identityDateOfBirth); - const cred = await VC.create('credential-cvc:Identity-v1', uuidv4(), '-1d', [name, dob], '1'); + const cred = await VC.create('credential-cvc:Identity-v3', uuidv4(), '-1d', credentialSubject, [name, dob]); expect(cred).toBeDefined(); - expect(cred.claim.identity.name.givenNames).toBe('Max'); - expect(cred.claim.identity.name.otherNames).toBe('Abc'); - expect(cred.claim.identity.name.familyNames).toBe('Mustermann'); - expect(cred.claim.identity.dateOfBirth.day).toBe(20); - expect(cred.claim.identity.dateOfBirth.month).toBe(3); - expect(cred.claim.identity.dateOfBirth.year).toBe(1978); + expect(cred.credentialSubject.identity.name.givenNames).toBe('Max'); + expect(cred.credentialSubject.identity.name.otherNames).toBe('Abc'); + expect(cred.credentialSubject.identity.name.familyNames).toBe('Mustermann'); + expect(cred.credentialSubject.identity.dateOfBirth.day).toBe(20); + expect(cred.credentialSubject.identity.dateOfBirth.month).toBe(3); + expect(cred.credentialSubject.identity.dateOfBirth.year).toBe(1978); expect(_.find(cred.proof.leaves, { identifier: 'cvc:Meta:issuer' })).toBeDefined(); expect(_.find(cred.proof.leaves, { identifier: 'cvc:Meta:issuanceDate' })).toBeDefined(); expect(cred.expirationDate).toBeDefined(); @@ -114,14 +109,14 @@ describe('Unit tests for Verifiable Credentials', () => { test('New Defined Credentials return the incorrect global Credential Identifier', async () => { const name = await Claim.create('claim-cvc:Identity.name-v1', identityName); const dob = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', identityDateOfBirth); - const cred = await VC.create('credential-cvc:Identity-v1', uuidv4(), null, [name, dob], '1'); - expect(cred.getGlobalIdentifier()).toBe('credential-credential-cvc:Identity-v1-1'); + const cred = await VC.create('credential-cvc:Identity-v3', uuidv4(), null, credentialSubject, [name, dob]); + expect(cred.getGlobalIdentifier()).toBe('credential-credential-cvc:Identity-v3-3'); }); it('should request an anchor for Credential and return an temporary attestation', async (done) => { const name = await Claim.create('claim-cvc:Identity.name-v1', identityName); const dob = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', identityDateOfBirth); - const cred = await VC.create('credential-cvc:Identity-v1', uuidv4(), '-1d', [name, dob], '1'); + const cred = await VC.create('credential-cvc:Identity-v3', uuidv4(), '-1d', credentialSubject, [name, dob]); return cred.requestAnchor().then((updated) => { expect(updated.proof.anchor.type).toBe('temporary'); expect(updated.proof.anchor.value).not.toBeDefined(); @@ -134,7 +129,7 @@ describe('Unit tests for Verifiable Credentials', () => { it('should refresh an temporary anchoring with an permanent one', async (done) => { const name = await Claim.create('claim-cvc:Identity.name-v1', identityName); const dob = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', identityDateOfBirth); - const cred = await VC.create('credential-cvc:Identity-v1', uuidv4(), null, [name, dob], '1'); + const cred = await VC.create('credential-cvc:Identity-v3', uuidv4(), null, credentialSubject, [name, dob]); cred.requestAnchor = jest.fn().mockImplementation(async () => { // mock the function or otherwise it would call the server @@ -158,16 +153,16 @@ describe('Unit tests for Verifiable Credentials', () => { const nameUca = await Claim.create('claim-cvc:Identity.name-v1', identityName); const dobUca = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', identityDateOfBirth); - const simpleIdentity = await VC.create('credential-cvc:Identity-v1', - 'did:ethr:0xaf9482c84De4e2a961B98176C9f295F9b6008BfD', null, [nameUca, dobUca], '1'); + const simpleIdentity = await VC.create('credential-cvc:Identity-v3', + 'did:ethr:0xaf9482c84De4e2a961B98176C9f295F9b6008BfD', null, credentialSubject, [nameUca, dobUca]); const filtered = simpleIdentity.filter(['claim-cvc:Name.givenNames-v1']); - expect(filtered.claim.identity.name.givenNames).toBeDefined(); - expect(filtered.claim.identity.name.otherNames).not.toBeDefined(); - expect(filtered.claim.identity.name.familyNames).not.toBeDefined(); + expect(filtered.credentialSubject.identity.name.givenNames).toBeDefined(); + expect(filtered.credentialSubject.identity.name.otherNames).not.toBeDefined(); + expect(filtered.credentialSubject.identity.name.familyNames).not.toBeDefined(); const emptyFiltered = simpleIdentity.filter([]); - expect(emptyFiltered.claim).toEqual({}); + expect(emptyFiltered.credentialSubject).toEqual({}); }); it('Should filter claims for Email asking for claim-cvc:Contact.email-v1 and return them on the filtered VC', @@ -181,12 +176,12 @@ describe('Unit tests for Verifiable Credentials', () => { }; const emailUca = await Claim.create('claim-cvc:Contact.email-v1', email, '1'); - const emailCredential = await VC.create('credential-cvc:Email-v1', '', null, [emailUca], '1'); + const emailCredential = await VC.create('credential-cvc:Email-v3', '', null, credentialSubject, [emailUca]); const filtered = emailCredential.filter(['claim-cvc:Contact.email-v1']); - expect(filtered.claim.contact.email.domain).toBeDefined(); - expect(filtered.claim.contact.email.domain.tld).toBe('oVaPsceZ4C'); - expect(filtered.claim.contact.email.domain.name).toBe('UTpHKFyaaB'); - expect(filtered.claim.contact.email.username).toBe('ZcMpCBQ0lE'); + expect(filtered.credentialSubject.contact.email.domain).toBeDefined(); + expect(filtered.credentialSubject.contact.email.domain.tld).toBe('oVaPsceZ4C'); + expect(filtered.credentialSubject.contact.email.domain.name).toBe('UTpHKFyaaB'); + expect(filtered.credentialSubject.contact.email.username).toBe('ZcMpCBQ0lE'); }); it('Should filter claims for Email asking for cvc:Contact:domain and not return the cvc:Contact:address', @@ -201,14 +196,14 @@ describe('Unit tests for Verifiable Credentials', () => { const emailUca = await Claim.create('claim-cvc:Contact.email-v1', email, '1'); const emailCredential = await VC.create( - 'credential-cvc:Email-v1', '', null, [emailUca], '1', + 'credential-cvc:Email-v3', '', null, credentialSubject, [emailUca], ); const filtered = emailCredential.filter(['claim-cvc:Email.domain-v1']); - expect(filtered.claim.contact.email.domain).toBeDefined(); - expect(filtered.claim.contact.email.domain.tld).toBe('oVaPsceZ4C'); - expect(filtered.claim.contact.email.domain.name).toBe('UTpHKFyaaB'); - expect(filtered.claim.contact.email.username).toBeUndefined(); + expect(filtered.credentialSubject.contact.email.domain).toBeDefined(); + expect(filtered.credentialSubject.contact.email.domain.tld).toBe('oVaPsceZ4C'); + expect(filtered.credentialSubject.contact.email.domain.name).toBe('UTpHKFyaaB'); + expect(filtered.credentialSubject.contact.email.username).toBeUndefined(); }); it('Should filter claims for Address asking for claim-cvc:Type.address-v1' @@ -225,21 +220,21 @@ describe('Unit tests for Verifiable Credentials', () => { const uca = await Claim.create('claim-cvc:Identity.address-v1', value, '1'); const credential = await VC.create( - 'credential-cvc:Address-v1', '', null, [uca], '1', + 'credential-cvc:Address-v3', '', null, credentialSubject, [uca], ); const filtered = credential.filter(['claim-cvc:Identity.address-v1']); - expect(filtered.claim.identity.address).toBeDefined(); - expect(filtered.claim.identity.address.country).toBe('X2sEB9F9W9'); - expect(filtered.claim.identity.address.county).toBe('sDlIM4Rjpo'); - expect(filtered.claim.identity.address.state).toBe('ZZEOrbenrM'); - expect(filtered.claim.identity.address.street).toBe('JkHgN5gdZ2'); - expect(filtered.claim.identity.address.unit).toBe('fo9OmPSZNe'); - expect(filtered.claim.identity.address.city).toBe('LVkRGsKqIf'); - expect(filtered.claim.identity.address.postalCode).toBe('5JhmWkXBAg'); + expect(filtered.credentialSubject.identity.address).toBeDefined(); + expect(filtered.credentialSubject.identity.address.country).toBe('X2sEB9F9W9'); + expect(filtered.credentialSubject.identity.address.county).toBe('sDlIM4Rjpo'); + expect(filtered.credentialSubject.identity.address.state).toBe('ZZEOrbenrM'); + expect(filtered.credentialSubject.identity.address.street).toBe('JkHgN5gdZ2'); + expect(filtered.credentialSubject.identity.address.unit).toBe('fo9OmPSZNe'); + expect(filtered.credentialSubject.identity.address.city).toBe('LVkRGsKqIf'); + expect(filtered.credentialSubject.identity.address.postalCode).toBe('5JhmWkXBAg'); }); - it('Should filter claims for PhoneNumber asking for credential-cvc:PhoneNumber-v1 and return the full claim', + it('Should filter claims for PhoneNumber asking for credential-cvc:PhoneNumber-v3 and return the full claim', async () => { const value = { country: '1ApYikRwDl', @@ -251,16 +246,16 @@ describe('Unit tests for Verifiable Credentials', () => { const uca = await Claim.create('claim-cvc:Contact.phoneNumber-v1', value, '1'); const credential = await VC.create( - 'credential-cvc:PhoneNumber-v1', '', null, [uca], '1', + 'credential-cvc:PhoneNumber-v3', '', null, credentialSubject, [uca], ); const filtered = credential.filter(['claim-cvc:Contact.phoneNumber-v1']); - expect(filtered.claim.contact.phoneNumber).toBeDefined(); - expect(filtered.claim.contact.phoneNumber.country).toBe('1ApYikRwDl'); - expect(filtered.claim.contact.phoneNumber.countryCode).toBe('U4drpB96Hk'); - expect(filtered.claim.contact.phoneNumber.extension).toBe('sXZpZJTe4R'); - expect(filtered.claim.contact.phoneNumber.lineType).toBe('OaguqgUaR7'); - expect(filtered.claim.contact.phoneNumber.number).toBe('kCTGifTdom'); + expect(filtered.credentialSubject.contact.phoneNumber).toBeDefined(); + expect(filtered.credentialSubject.contact.phoneNumber.country).toBe('1ApYikRwDl'); + expect(filtered.credentialSubject.contact.phoneNumber.countryCode).toBe('U4drpB96Hk'); + expect(filtered.credentialSubject.contact.phoneNumber.extension).toBe('sXZpZJTe4R'); + expect(filtered.credentialSubject.contact.phoneNumber.lineType).toBe('OaguqgUaR7'); + expect(filtered.credentialSubject.contact.phoneNumber.number).toBe('kCTGifTdom'); }); it('Should filter claims for GenericDocumentId asking for claim-cvc:Identity.dateOfBirth-v1 and return nothing', @@ -322,12 +317,12 @@ describe('Unit tests for Verifiable Credentials', () => { }; const image = await Claim.create('cvc:Document:image', imageValue, '1'); const credential = await VC.create( - 'credential-cvc:GenericDocumentId-v1', '', null, [type, number, name, gender, issueAuthority, - issueLocation, issueCountry, placeOfBirth, properties, address, image, dateOfBirth], '1', + 'credential-cvc:GenericDocumentId-v3', '', null, credentialSubject, [type, number, name, gender, issueAuthority, + issueLocation, issueCountry, placeOfBirth, properties, address, image, dateOfBirth], ); const filtered = credential.filter(['claim-cvc:Identity.dateOfBirth-v1']); - expect(filtered.claim.document).toBeUndefined(); + expect(filtered.credentialSubject.document).toBeUndefined(); }); it('Should filter claims for PhoneNumber asking for cvc:Phone:countryCode and return only the' @@ -340,47 +335,18 @@ describe('Unit tests for Verifiable Credentials', () => { lineType: 'OaguqgUaR7', }; const uca = await Claim.create('claim-cvc:Contact.phoneNumber-v1', value, '1'); - const credential = await VC.create('credential-cvc:PhoneNumber-v1', '', null, [uca], '1'); + const credential = await VC.create('credential-cvc:PhoneNumber-v3', '', null, credentialSubject, [uca]); const filtered = credential.filter(['claim-cvc:PhoneNumber.countryCode-v1']); - expect(filtered.claim.contact.phoneNumber).toBeDefined(); - expect(filtered.claim.contact.phoneNumber.country).toBeUndefined(); - expect(filtered.claim.contact.phoneNumber.countryCode).toBe('U4drpB96Hk'); - expect(filtered.claim.contact.phoneNumber.extension).toBeUndefined(); - expect(filtered.claim.contact.phoneNumber.lineType).toBeUndefined(); - expect(filtered.claim.contact.phoneNumber.number).toBeUndefined(); - }); - - it('Should create IdDocument-v1 credential', async () => { - const type = await Claim.create('claim-cvc:Document.type-v1', 'passport', '1'); - const number = await Claim.create('claim-cvc:Document.number-v1', 'FP12345', '1'); - const nameValue = { - givenNames: 'e8qhs4Iak1', - familyNames: 'e8qak1', - otherNames: 'qhs4I', - }; - const name = await Claim.create('claim-cvc:Document.name-v1', nameValue, '1'); - const gender = await Claim.create('claim-cvc:Document.gender-v1', 'M', '1'); - const issueCountry = await Claim.create('claim-cvc:Document.issueCountry-v1', 'Brazil', '1'); - const placeOfBirth = await Claim.create('claim-cvc:Document.placeOfBirth-v1', 'Belo Horizonte', '1'); - const dateOfBirthValue = identityDateOfBirth; - const dateOfBirth = await Claim.create('claim-cvc:Document.dateOfBirth-v1', dateOfBirthValue, '1'); - const dateOfExpiryValue = { - day: 12, - month: 2, - year: 2025, - }; - const dateOfExpiry = await Claim.create('claim-cvc:Document.dateOfExpiry-v1', dateOfExpiryValue, '1'); - const nationality = await Claim.create('claim-cvc:Document.nationality-v1', 'Brazilian', '1'); - - const credential = await VC.create( - 'credential-cvc:IdDocument-v1', '', null, [type, number, name, gender, - issueCountry, placeOfBirth, dateOfBirth, dateOfExpiry, nationality], '1', - ); - expect(credential).toBeDefined(); + expect(filtered.credentialSubject.contact.phoneNumber).toBeDefined(); + expect(filtered.credentialSubject.contact.phoneNumber.country).toBeUndefined(); + expect(filtered.credentialSubject.contact.phoneNumber.countryCode).toBe('U4drpB96Hk'); + expect(filtered.credentialSubject.contact.phoneNumber.extension).toBeUndefined(); + expect(filtered.credentialSubject.contact.phoneNumber.lineType).toBeUndefined(); + expect(filtered.credentialSubject.contact.phoneNumber.number).toBeUndefined(); }); - it('Should create IdDocument-v2 credential', async () => { + it('Should create IdDocument-v3 credential', async () => { const type = await Claim.create('claim-cvc:Document.type-v1', 'passport', '1'); const number = await Claim.create('claim-cvc:Document.number-v1', 'FP12345', '1'); const nameValue = { @@ -419,8 +385,8 @@ describe('Unit tests for Verifiable Credentials', () => { const evidences = await Claim.create('claim-cvc:Document.evidences-v1', evidencesValue, '1'); const credential = await VC.create( - 'credential-cvc:IdDocument-v2', '', null, [type, number, name, gender, - issueCountry, placeOfBirth, dateOfBirth, dateOfExpiry, nationality, evidences], '1', + 'credential-cvc:IdDocument-v3', '', null, credentialSubject, [type, number, name, gender, + issueCountry, placeOfBirth, dateOfBirth, dateOfExpiry, nationality, evidences], ); expect(credential).toBeDefined(); const filtered = credential.filter(['claim-cvc:Document.dateOfBirth-v1']); @@ -455,7 +421,7 @@ describe('Unit tests for Verifiable Credentials', () => { const address = await Claim.create('claim-cvc:Document.address-v1', addressValue, '1'); const credential = await VC.create( - 'credential-alt:Identity-v1', '', null, [name, dateOfBirth, address], '1', + 'credential-alt:Identity-v3', '', null, credentialSubject, [name, dateOfBirth, address], ); expect(credential).toBeDefined(); }); @@ -557,7 +523,7 @@ describe('Unit tests for Verifiable Credentials', () => { const covidClaim = await Claim.create('claim-cvc:Medical.covid19-v1', covidDetails); const credential = await VC.create( - 'credential-cvc:Covid19-v1', '', null, [covidClaim], '1', + 'credential-cvc:Covid19-v3', '', null, credentialSubject, [covidClaim], ); expect(credential).toBeDefined(); expect(credential.verifyProofs()).toBeTruthy(); @@ -622,12 +588,13 @@ describe('Unit tests for Verifiable Credentials', () => { }; const image = await Claim.create('cvc:Document:image', imageValue, '1'); const credential = await VC.create( - 'credential-cvc:GenericDocumentId-v1', '', null, [type, number, name, gender, issueAuthority, - issueLocation, issueCountry, placeOfBirth, properties, address, image, dateOfBirth], '1', + 'credential-cvc:GenericDocumentId-v3', '', null, credentialSubject, [type, number, name, gender, issueAuthority, + issueLocation, issueCountry, placeOfBirth, properties, address, image, dateOfBirth], ); + const filtered = credential.filter(['claim-cvc:Document.type-v1']); - expect(filtered.claim.document.type).toBe('passport'); + expect(filtered.credentialSubject.document.type).toBe('passport'); }); it('Should verify an VC of type Email', async () => { @@ -641,7 +608,7 @@ describe('Unit tests for Verifiable Credentials', () => { const credJSon = require('./fixtures/Email.json'); // eslint-disable-line const cred = await VC.fromJSON(credJSon); expect(cred).toBeDefined(); - cred.claim.contact.email.domain.name = 'civic'; + cred.credentialSubject.contact.email.domain.name = 'civic'; expect(await cred.verifyProofs()).toBeFalsy(); }); @@ -649,7 +616,7 @@ describe('Unit tests for Verifiable Credentials', () => { const credJSon = require('./fixtures/Email.json'); // eslint-disable-line const cred = await VC.fromJSON(credJSon); expect(cred).toBeDefined(); - cred.claim.contact.email.username = 'jpMustermann'; + cred.credentialSubject.contact.email.username = 'jpMustermann'; expect(await cred.verifyProofs()).toBeFalsy(); }); @@ -664,7 +631,7 @@ describe('Unit tests for Verifiable Credentials', () => { const credJSon = require('./fixtures/Address.json'); // eslint-disable-line const cred = await VC.fromJSON(credJSon); expect(cred).toBeDefined(); - cred.claim.identity.address.city = 'Rio de Janeiro'; + cred.credentialSubject.identity.address.city = 'Rio de Janeiro'; expect(await cred.verifyProofs()).toBeFalsy(); }); @@ -686,8 +653,8 @@ describe('Unit tests for Verifiable Credentials', () => { const credJSon = require('./fixtures/GenericDocumentId.json'); // eslint-disable-line const cred = await VC.fromJSON(credJSon); expect(cred).toBeDefined(); - cred.claim.document.dateOfBirth.day = 20; - cred.claim.document.dateOfBirth.year = 1900; + cred.credentialSubject.document.dateOfBirth.day = 20; + cred.credentialSubject.document.dateOfBirth.year = 1900; expect(await cred.verifyProofs()).toBeFalsy(); }); @@ -725,7 +692,7 @@ describe('Unit tests for Verifiable Credentials', () => { }; const uca = await Claim.create('claim-cvc:Contact.phoneNumber-v1', value, '1'); - const credential = await VC.create('credential-cvc:PhoneNumber-v1', '', null, [uca], '1'); + const credential = await VC.create('credential-cvc:PhoneNumber-v3', '', null, credentialSubject, [uca]); const isValid = await VC.nonCryptographicallySecureVerify(credential); expect(isValid).toBeTruthy(); }); @@ -851,10 +818,10 @@ describe('Unit tests for Verifiable Credentials', () => { it('should have a empty "granted" field just after construct a VC', async (done) => { const name = await Claim.create('claim-cvc:Identity.name-v1', identityName); const dob = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', identityDateOfBirth); - const cred = await VC.create('credential-cvc:Identity-v1', uuidv4(), null, [name, dob], '1'); + const cred = await VC.create('credential-cvc:Identity-v3', uuidv4(), null, credentialSubject, [name, dob]); expect(cred).toBeDefined(); - expect(cred.granted).toBeNull(); + expect(cred.proof.granted).toBeNull(); done(); }); @@ -864,7 +831,7 @@ describe('Unit tests for Verifiable Credentials', () => { const credentialJson = JSON.parse(credentialContents); const cred = await VC.fromJSON(credentialJson); expect(cred).toBeDefined(); - expect(cred.granted).toBeNull(); + expect(cred.proof.granted).toBeNull(); done(); }); @@ -872,10 +839,10 @@ describe('Unit tests for Verifiable Credentials', () => { it('should throw exception id ".grantUsageFor()" request without proper ".requestAnchor()" first', async (done) => { const name = await Claim.create('claim-cvc:Identity.name-v1', identityName); const dob = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', identityDateOfBirth); - const cred = await VC.create('credential-cvc:Identity-v1', uuidv4(), null, [name, dob], '1'); + const cred = await VC.create('credential-cvc:Identity-v3', uuidv4(), null, credentialSubject, [name, dob]); expect(cred).toBeDefined(); - expect(cred.granted).toBeNull(); + expect(cred.proof.granted).toBeNull(); const requestorId = 'REQUESTOR_ID_12345'; const requestId = new Date().getTime(); // simulate an nonce ID @@ -890,15 +857,15 @@ describe('Unit tests for Verifiable Credentials', () => { it('should have a filled "granted" field after ".grantUsageFor()" request', async (done) => { const name = await Claim.create('claim-cvc:Identity.name-v1', identityName); const dob = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', identityDateOfBirth); - const cred = await VC.create('credential-cvc:Identity-v1', uuidv4(), null, [name, dob], '1'); + const cred = await VC.create('credential-cvc:Identity-v3', uuidv4(), null, credentialSubject, [name, dob]); await cred.requestAnchor(); expect(cred).toBeDefined(); - expect(cred.granted).toBeNull(); + expect(cred.proof.granted).toBeNull(); cred.proof.anchor.subject = signAttestationSubject(cred.proof.anchor.subject, XPVT1, XPUB1); const requestorId = 'ANY_REQUESTOR_ID_12345'; const requestId = new Date().getTime(); // simulate an nonce ID cred.grantUsageFor(requestorId, requestId, { pvtKey: XPVT1 }); - expect(cred.granted).not.toBeNull(); + expect(cred.proof.granted).not.toBeNull(); done(); }); @@ -907,25 +874,25 @@ describe('Unit tests for Verifiable Credentials', () => { const credentialJson = JSON.parse(credentialContents); const cred = await VC.fromJSON(credentialJson); expect(cred).toBeDefined(); - expect(cred.granted).toBeNull(); + expect(cred.proof.granted).toBeNull(); cred.proof.anchor.subject = signAttestationSubject(cred.proof.anchor.subject, XPVT1, XPUB1); const requestorId = 'ANY_REQUESTOR_ID_12345'; const requestId = new Date().getTime(); // simulate an nonce ID cred.grantUsageFor(requestorId, requestId, { pvtKey: XPVT1 }); - expect(cred.granted).not.toBeNull(); + expect(cred.proof.granted).not.toBeNull(); done(); }); it('should verifyGrant() accordingly', async (done) => { const name = await Claim.create('claim-cvc:Identity.name-v1', identityName); const dob = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', identityDateOfBirth); - const cred = await VC.create('credential-cvc:Identity-v1', uuidv4(), null, [name, dob], '1'); + const cred = await VC.create('credential-cvc:Identity-v3', uuidv4(), null, credentialSubject, [name, dob]); const anchoredCred = await cred.requestAnchor(); expect(anchoredCred).toBeDefined(); - expect(anchoredCred.granted).toBeNull(); + expect(anchoredCred.proof.granted).toBeNull(); const subject = signAttestationSubject(anchoredCred.proof.anchor.subject, XPVT1, XPUB1); - const signedCred = await VC.fromJSON(_.merge({}, anchoredCred, { proof: { anchor: { subject } } })); + const signedCred = await VC.fromJSON(toValueObject(_.merge({}, anchoredCred, { proof: { anchor: { subject } } }))); const requestorId = 'ANY_REQUESTOR_ID_12345'; const requestId = new Date().getTime(); // simulate an nonce ID @@ -937,7 +904,7 @@ describe('Unit tests for Verifiable Credentials', () => { // const receivedCred = await VC.fromJSON(JSON.parse(transmittedCred)); - expect(receivedCred.granted).not.toBeNull(); + expect(receivedCred.proof.granted).not.toBeNull(); const verifyGrant = receivedCred.verifyGrant(requestorId, requestId); expect(verifyGrant).toEqual(true); @@ -948,13 +915,13 @@ describe('Unit tests for Verifiable Credentials', () => { it('should fail verifyGrant() with a invalid "granted" token', async (done) => { const name = await Claim.create('claim-cvc:Identity.name-v1', identityName); const dob = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', identityDateOfBirth); - const cred = await VC.create('credential-cvc:Identity-v1', uuidv4(), null, [name, dob], '1'); + const cred = await VC.create('credential-cvc:Identity-v3', uuidv4(), null, credentialSubject, [name, dob]); const anchoredCred = await cred.requestAnchor(); expect(anchoredCred).toBeDefined(); - expect(anchoredCred.granted).toBeNull(); + expect(anchoredCred.proof.granted).toBeNull(); const subject = signAttestationSubject(anchoredCred.proof.anchor.subject, XPVT1, XPUB1); - const signedCred = await VC.fromJSON(_.merge({}, anchoredCred, { proof: { anchor: { subject } } })); + const signedCred = await VC.fromJSON(toValueObject(_.merge({}, anchoredCred, { proof: { anchor: { subject } } }))); const requestorId = 'ANY_REQUESTOR_ID_12345'; const requestId = new Date().getTime(); // simulate an nonce ID @@ -966,11 +933,11 @@ describe('Unit tests for Verifiable Credentials', () => { // const receivedCred = await VC.fromJSON(JSON.parse(transmittedCred)); - expect(receivedCred.granted).not.toBeNull(); + expect(receivedCred.proof.granted).not.toBeNull(); // Simulate a invalid granted token - one not based on the same nonce // eslint-disable-next-line - receivedCred.granted = '304502210085f6baceefcddefff535416df0eda6c9b8a01dcba592c599ec2c83cce7171dd802204473f5a15b3904dbf0fc309fe812fbf449948714938fb4871196d338ef38f1d1'; + receivedCred.proof.granted = '304502210085f6baceefcddefff535416df0eda6c9b8a01dcba592c599ec2c83cce7171dd802204473f5a15b3904dbf0fc309fe812fbf449948714938fb4871196d338ef38f1d1'; const verifyGrant = receivedCred.verifyGrant(requestorId, requestId); expect(verifyGrant).toEqual(false); @@ -981,13 +948,13 @@ describe('Unit tests for Verifiable Credentials', () => { it('should verify a granted credential json with requesterGrantVerify', async (done) => { const name = await Claim.create('claim-cvc:Identity.name-v1', identityName); const dob = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', identityDateOfBirth); - const cred = await VC.create('credential-cvc:Identity-v1', uuidv4(), null, [name, dob], '1'); + const cred = await VC.create('credential-cvc:Identity-v3', uuidv4(), null, credentialSubject, [name, dob]); const anchoredCred = await cred.requestAnchor(); expect(anchoredCred).toBeDefined(); - expect(anchoredCred.granted).toBeNull(); + expect(anchoredCred.proof.granted).toBeNull(); const subject = signAttestationSubject(anchoredCred.proof.anchor.subject, XPVT1, XPUB1); - const signedCred = await VC.fromJSON(_.merge({}, anchoredCred, { proof: { anchor: { subject } } })); + const signedCred = await VC.fromJSON(toValueObject(_.merge({}, anchoredCred, { proof: { anchor: { subject } } }))); const requestorId = 'ANY_REQUESTOR_ID_12345'; const requestId = new Date().getTime(); // simulate an nonce ID @@ -996,7 +963,7 @@ describe('Unit tests for Verifiable Credentials', () => { // simulate a wire transmission const transmittedCred = JSON.stringify(signedCred, null, 2); expect(transmittedCred).toBeDefined(); - expect(transmittedCred.granted).not.toBeNull(); + expect(signedCred.proof.granted).not.toBeNull(); const credentialObj = JSON.parse(transmittedCred); @@ -1009,13 +976,13 @@ describe('Unit tests for Verifiable Credentials', () => { it('should fail to verify a credential json with invalid granted token with requesterGrantVerify', async (done) => { const name = await Claim.create('claim-cvc:Identity.name-v1', identityName); const dob = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', identityDateOfBirth); - const cred = await VC.create('credential-cvc:Identity-v1', uuidv4(), null, [name, dob], '1'); + const cred = await VC.create('credential-cvc:Identity-v3', uuidv4(), null, credentialSubject, [name, dob]); const anchoredCred = await cred.requestAnchor(); expect(anchoredCred).toBeDefined(); - expect(anchoredCred.granted).toBeNull(); + expect(anchoredCred.proof.granted).toBeNull(); const subject = signAttestationSubject(anchoredCred.proof.anchor.subject, XPVT1, XPUB1); - const signedCred = await VC.fromJSON(_.merge({}, anchoredCred, { proof: { anchor: { subject } } })); + const signedCred = await VC.fromJSON(toValueObject(_.merge({}, anchoredCred, { proof: { anchor: { subject } } }))); const requestorId = 'ANY_REQUESTOR_ID_12345'; const requestId = new Date().getTime(); // simulate an nonce ID @@ -1024,13 +991,13 @@ describe('Unit tests for Verifiable Credentials', () => { // simulate a wire transmission const transmittedCred = JSON.stringify(signedCred, null, 2); expect(transmittedCred).toBeDefined(); - expect(transmittedCred.granted).not.toBeNull(); + expect(signedCred.proof.granted).not.toBeNull(); const credentialObj = JSON.parse(transmittedCred); // Simulate a invalid granted token - one not based on the same nonce // eslint-disable-next-line max-len - credentialObj.granted = '304502210085f6baceefcddefff535416df0eda6c9b8a01dcba592c599ec2c83cce7171dd802204473f5a15b3904dbf0fc309fe812fbf449948714938fb4871196d338ef38f1d1'; + credentialObj.proof.granted = '304502210085f6baceefcddefff535416df0eda6c9b8a01dcba592c599ec2c83cce7171dd802204473f5a15b3904dbf0fc309fe812fbf449948714938fb4871196d338ef38f1d1'; const verifyGrant = VC.requesterGrantVerify(credentialObj, requestorId, requestId); expect(verifyGrant).toEqual(false); @@ -1041,13 +1008,13 @@ describe('Unit tests for Verifiable Credentials', () => { it('should verify() with maximum level of GRANTED', async (done) => { const name = await Claim.create('claim-cvc:Identity.name-v1', identityName); const dob = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', identityDateOfBirth); - const cred = await VC.create('credential-cvc:Identity-v1', uuidv4(), null, [name, dob], '1'); + const cred = await VC.create('credential-cvc:Identity-v3', uuidv4(), null, credentialSubject, [name, dob]); const anchoredCred = await cred.requestAnchor(); expect(anchoredCred).toBeDefined(); - expect(anchoredCred.granted).toBeNull(); + expect(anchoredCred.proof.granted).toBeNull(); const subject = signAttestationSubject(anchoredCred.proof.anchor.subject, XPVT1, XPUB1); - const signedCred = await VC.fromJSON(_.merge({}, anchoredCred, { proof: { anchor: { subject } } })); + const signedCred = await VC.fromJSON(toValueObject(_.merge({}, anchoredCred, { proof: { anchor: { subject } } }))); const requestorId = 'ANY_REQUESTOR_ID_12345'; const requestId = new Date().getTime(); // simulate an nonce ID @@ -1059,7 +1026,7 @@ describe('Unit tests for Verifiable Credentials', () => { // const receivedCred = await VC.fromJSON(JSON.parse(transmittedCred)); - expect(receivedCred.granted).not.toBeNull(); + expect(receivedCred.proof.granted).not.toBeNull(); const verifyLevel = await receivedCred.verify(VC.VERIFY_LEVELS.GRANTED, { requestorId, @@ -1073,13 +1040,13 @@ describe('Unit tests for Verifiable Credentials', () => { it('should fail verify() with maximum level of GRANTED if granted is invalid', async (done) => { const name = await Claim.create('claim-cvc:Identity.name-v1', identityName); const dob = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', identityDateOfBirth); - const cred = await VC.create('credential-cvc:Identity-v1', uuidv4(), null, [name, dob], '1'); + const cred = await VC.create('credential-cvc:Identity-v3', uuidv4(), null, credentialSubject, [name, dob]); const anchoredCred = await cred.requestAnchor(); expect(anchoredCred).toBeDefined(); - expect(anchoredCred.granted).toBeNull(); + expect(anchoredCred.proof.granted).toBeNull(); const subject = signAttestationSubject(anchoredCred.proof.anchor.subject, XPVT1, XPUB1); - const signedCred = await VC.fromJSON(_.merge({}, anchoredCred, { proof: { anchor: { subject } } })); + const signedCred = await VC.fromJSON(toValueObject(_.merge({}, anchoredCred, { proof: { anchor: { subject } } }))); const requestorId = 'ANY_REQUESTOR_ID_12345'; const requestId = new Date().getTime(); // simulate an nonce ID @@ -1091,11 +1058,11 @@ describe('Unit tests for Verifiable Credentials', () => { // const receivedCred = await VC.fromJSON(JSON.parse(transmittedCred)); - expect(receivedCred.granted).not.toBeNull(); + expect(receivedCred.proof.granted).not.toBeNull(); // Simulate a invalid granted token - one not based on the same nonce // eslint-disable-next-line - receivedCred.granted = '304502210085f6baceefcddefff535416df0eda6c9b8a01dcba592c599ec2c83cce7171dd802204473f5a15b3904dbf0fc309fe812fbf449948714938fb4871196d338ef38f1d1'; + receivedCred.proof.granted = '304502210085f6baceefcddefff535416df0eda6c9b8a01dcba592c599ec2c83cce7171dd802204473f5a15b3904dbf0fc309fe812fbf449948714938fb4871196d338ef38f1d1'; const verifyLevel = await receivedCred.verify(VC.VERIFY_LEVELS.GRANTED, { requestorId, @@ -1145,7 +1112,7 @@ describe('Unit tests for Verifiable Credentials', () => { it('should revoke the permanent anchor and succeed verification', async (done) => { const name = await Claim.create('claim-cvc:Identity.name-v1', identityName); const dob = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', identityDateOfBirth); - const cred = await VC.create('credential-cvc:Identity-v1', uuidv4(), null, [name, dob], '1'); + const cred = await VC.create('credential-cvc:Identity-v3', uuidv4(), null, credentialSubject, [name, dob]); await cred.requestAnchor(); await cred.updateAnchor(); const validation = await cred.verifyAttestation(); @@ -1170,7 +1137,7 @@ describe('Unit tests for Verifiable Credentials', () => { it('Should match with one constraint', async () => { const name = await Claim.create('claim-cvc:Identity.name-v1', identityName); const dob = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', identityDateOfBirth); - const cred = await VC.create('credential-cvc:Identity-v1', uuidv4(), null, [name, dob], '1'); + const cred = await VC.create('credential-cvc:Identity-v3', uuidv4(), null, credentialSubject, [name, dob]); expect(cred.isMatch({ claims: [ { path: 'identity.name.givenNames', is: { $eq: 'Max' } }, @@ -1181,7 +1148,7 @@ describe('Unit tests for Verifiable Credentials', () => { it('Should match with two constraints', async () => { const name = await Claim.create('claim-cvc:Identity.name-v1', identityName); const dob = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', identityDateOfBirth); - const cred = await VC.create('credential-cvc:Identity-v1', uuidv4(), null, [name, dob], '1'); + const cred = await VC.create('credential-cvc:Identity-v3', uuidv4(), null, credentialSubject, [name, dob]); expect(cred.isMatch({ claims: [ { path: 'identity.name.givenNames', is: { $eq: 'Max' } }, @@ -1193,7 +1160,7 @@ describe('Unit tests for Verifiable Credentials', () => { it('Should fail with two constraints if one of them fails', async () => { const name = await Claim.create('claim-cvc:Identity.name-v1', identityName); const dob = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', identityDateOfBirth); - const cred = await VC.create('credential-cvc:Identity-v1', uuidv4(), null, [name, dob], '1'); + const cred = await VC.create('credential-cvc:Identity-v3', uuidv4(), null, credentialSubject, [name, dob]); expect(cred.isMatch({ claims: [ { path: 'identity.name.givenNames', is: { $eq: 'NOT MAX' } }, @@ -1205,7 +1172,7 @@ describe('Unit tests for Verifiable Credentials', () => { it('Should match with gt constraint', async () => { const name = await Claim.create('claim-cvc:Identity.name-v1', identityName); const dob = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', identityDateOfBirth); - const cred = await VC.create('credential-cvc:Identity-v1', uuidv4(), null, [name, dob], '1'); + const cred = await VC.create('credential-cvc:Identity-v3', uuidv4(), null, credentialSubject, [name, dob]); expect(cred.isMatch({ claims: [ { path: 'identity.dateOfBirth.year', is: { $gt: 1900 } }, @@ -1216,7 +1183,7 @@ describe('Unit tests for Verifiable Credentials', () => { it('Should match constraints targeting the parent properties of dates', async () => { const name = await Claim.create('claim-cvc:Identity.name-v1', identityName); const dob = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', identityDateOfBirth); - const cred = await VC.create('credential-cvc:Identity-v1', uuidv4(), null, [name, dob], '1'); + const cred = await VC.create('credential-cvc:Identity-v3', uuidv4(), null, credentialSubject, [name, dob]); expect(cred.isMatch({ claims: [ { path: 'identity.dateOfBirth', is: { $lt: 1554377905342 } }, // 4-4-2019 @@ -1240,7 +1207,7 @@ describe('Unit tests for Verifiable Credentials', () => { const dob = await dateToDOBClaim(exactlyFortyYearsAgo); const name = await Claim.create('claim-cvc:Identity.name-v1', identityName); - const cred = await VC.create('credential-cvc:Identity-v1', uuidv4(), null, [name, dob], '1'); + const cred = await VC.create('credential-cvc:Identity-v3', uuidv4(), null, credentialSubject, [name, dob]); expect(cred.isMatch({ claims: [ { path: 'identity.dateOfBirth', is: { $lte: '-40y' } }, @@ -1251,7 +1218,7 @@ describe('Unit tests for Verifiable Credentials', () => { it('Should not match', async () => { const name = await Claim.create('claim-cvc:Identity.name-v1', identityName); const dob = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', identityDateOfBirth); - const cred = await VC.create('credential-cvc:Identity-v1', uuidv4(), null, [name, dob], '1'); + const cred = await VC.create('credential-cvc:Identity-v3', uuidv4(), null, credentialSubject, [name, dob]); expect(cred.isMatch({ claims: [ { path: 'identity.name.first', is: { $eq: 'Maxime' } }, @@ -1262,20 +1229,20 @@ describe('Unit tests for Verifiable Credentials', () => { it('Should match credential on constraints.meta', () => { const vcMeta = { id: '123456789', - identifier: 'credential-cvc:Email-v1', + identifier: 'credential-cvc:Email-v3', issuer: 'did:ethr:0xaf9482c84De4e2a961B98176C9f295F9b6008BfD', issuanceDate: '2018-09-27T01:14:41.287Z', expirationDate: '2028-09-26T11:22:21.287Z', version: '1', type: [ 'Credential', - 'credential-cvc:Email-v1', + 'credential-cvc:Email-v3', ], }; const constraints = { meta: { - credential: 'credential-cvc:Email-v1', + credential: 'credential-cvc:Email-v3', }, }; @@ -1285,20 +1252,20 @@ describe('Unit tests for Verifiable Credentials', () => { it('Should match credential on constraints.meta with issuer', () => { const vcMeta = { id: '123456789', - identifier: 'credential-cvc:Email-v1', + identifier: 'credential-cvc:Email-v3', issuer: 'did:ethr:0xaf9482c84De4e2a961B98176C9f295F9b6008BfD', issuanceDate: '2018-09-27T01:14:41.287Z', expirationDate: '2028-09-26T11:22:21.287Z', version: '1', type: [ 'Credential', - 'credential-cvc:Email-v1', + 'credential-cvc:Email-v3', ], }; const constraints = { meta: { - credential: 'credential-cvc:Email-v1', + credential: 'credential-cvc:Email-v3', issuer: { is: { $eq: 'did:ethr:0xaf9482c84De4e2a961B98176C9f295F9b6008BfD', @@ -1313,20 +1280,20 @@ describe('Unit tests for Verifiable Credentials', () => { it('Should not match credential on constraints.meta with wrong issuer', () => { const vcMeta = { id: '123456789', - identifier: 'credential-cvc:Email-v1', + identifier: 'credential-cvc:Email-v3', issuer: 'did:ethr:0x00000', issuanceDate: '2018-09-27T01:14:41.287Z', expirationDate: '2028-09-26T11:22:21.287Z', version: '1', type: [ 'Credential', - 'credential-cvc:Email-v1', + 'credential-cvc:Email-v3', ], }; const constraints = { meta: { - credential: 'credential-cvc:Email-v1', + credential: 'credential-cvc:Email-v3', issuer: { is: { $eq: 'did:ethr:0xaf9482c84De4e2a961B98176C9f295F9b6008BfD', @@ -1341,20 +1308,20 @@ describe('Unit tests for Verifiable Credentials', () => { it('Should match credential on constraints.meta with multiple fields', () => { const vcMeta = { id: '123456789', - identifier: 'credential-cvc:Email-v1', + identifier: 'credential-cvc:Email-v3', issuer: 'did:ethr:0xaf9482c84De4e2a961B98176C9f295F9b6008BfD', issuanceDate: '2018-09-27T01:14:41.287Z', expirationDate: '2028-09-26T11:22:21.287Z', version: '1', type: [ 'Credential', - 'credential-cvc:Email-v1', + 'credential-cvc:Email-v3', ], }; const constraints = { meta: { - credential: 'credential-cvc:Email-v1', + credential: 'credential-cvc:Email-v3', issuer: { is: { $eq: 'did:ethr:0xaf9482c84De4e2a961B98176C9f295F9b6008BfD', @@ -1422,8 +1389,8 @@ describe('Unit tests for Verifiable Credentials', () => { expect(VC.isMatchCredentialMeta(vcMeta, constraint)).toBeFalsy(); }); - it('Should return all Credential properties for credential-cvc:GenericDocumentId-v1', async () => { - const properties = await VC.getAllProperties('credential-cvc:GenericDocumentId-v1'); + it('Should return all Credential properties for credential-cvc:GenericDocumentId-v3', async () => { + const properties = await VC.getAllProperties('credential-cvc:GenericDocumentId-v3'); expect(properties).toHaveLength(30); expect(properties).toContain('document.type'); expect(properties).toContain('document.number'); @@ -1457,8 +1424,8 @@ describe('Unit tests for Verifiable Credentials', () => { expect(properties).toContain('document.image.backMD5'); }); - it('Should return all Credential properties for credential-cvc:Identity-v1', async () => { - const properties = await VC.getAllProperties('credential-cvc:Identity-v1'); + it('Should return all Credential properties for credential-cvc:Identity-v3', async () => { + const properties = await VC.getAllProperties('credential-cvc:Identity-v3'); expect(properties).toHaveLength(6); expect(properties).toContain('identity.name.givenNames'); expect(properties).toContain('identity.name.familyNames'); @@ -1468,8 +1435,8 @@ describe('Unit tests for Verifiable Credentials', () => { expect(properties).toContain('identity.dateOfBirth.year'); }); - it('Should return all Credential properties for credential-cvc:Address-v1', async () => { - const properties = await VC.getAllProperties('credential-cvc:Address-v1'); + it('Should return all Credential properties for credential-cvc:Address-v3', async () => { + const properties = await VC.getAllProperties('credential-cvc:Address-v3'); expect(properties).toHaveLength(7); expect(properties).toContain('identity.address.country'); expect(properties).toContain('identity.address.county'); @@ -1480,8 +1447,8 @@ describe('Unit tests for Verifiable Credentials', () => { expect(properties).toContain('identity.address.postalCode'); }); - it('Should return all Credential properties for credential-cvc:PhoneNumber-v1', async () => { - const properties = await VC.getAllProperties('credential-cvc:PhoneNumber-v1'); + it('Should return all Credential properties for credential-cvc:PhoneNumber-v3', async () => { + const properties = await VC.getAllProperties('credential-cvc:PhoneNumber-v3'); expect(properties).toHaveLength(5); expect(properties).toContain('contact.phoneNumber.country'); expect(properties).toContain('contact.phoneNumber.countryCode'); @@ -1490,8 +1457,8 @@ describe('Unit tests for Verifiable Credentials', () => { expect(properties).toContain('contact.phoneNumber.lineType'); }); - it('Should return all Credential properties for credential-cvc:Email-v1', async () => { - const properties = await VC.getAllProperties('credential-cvc:Email-v1'); + it('Should return all Credential properties for credential-cvc:Email-v3', async () => { + const properties = await VC.getAllProperties('credential-cvc:Email-v3'); expect(properties).toHaveLength(3); expect(properties).toContain('contact.email.username'); expect(properties).toContain('contact.email.domain.name'); @@ -1502,7 +1469,7 @@ describe('Unit tests for Verifiable Credentials', () => { const name = await Claim.create('claim-cvc:Identity.name-v1', { givenNames: 'Neymar', otherNames: 'Jr', familyNames: 'Mustermann' }); const dob = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', { day: 5, month: 2, year: 1992 }); - const cred = await VC.create('credential-cvc:Identity-v1', uuidv4(), null, [name, dob], '1'); + const cred = await VC.create('credential-cvc:Identity-v3', uuidv4(), null, credentialSubject, [name, dob]); expect(cred).toBeDefined(); }); @@ -1525,7 +1492,9 @@ describe('Unit tests for Verifiable Credentials', () => { month: 2, year: 1992, }); - const cred = await VC.create('credential-cvc:Identity-v1', uuidv4(), null, [name, dob], '1', evidence); + const cred = await VC.create( + 'credential-cvc:Identity-v3', uuidv4(), null, credentialSubject, [name, dob], evidence, + ); expect(cred.evidence).toBeDefined(); expect(cred.evidence).toEqual([evidence]); }); @@ -1559,7 +1528,9 @@ describe('Unit tests for Verifiable Credentials', () => { month: 2, year: 1992, }); - const cred = await VC.create('credential-cvc:Identity-v1', uuidv4(), null, [name, dob], '1', evidence); + const cred = await VC.create( + 'credential-cvc:Identity-v3', uuidv4(), null, credentialSubject, [name, dob], evidence, + ); expect(cred.evidence).toBeDefined(); expect(cred.evidence).toEqual(evidence); }); @@ -1586,7 +1557,9 @@ describe('Unit tests for Verifiable Credentials', () => { month: 2, year: 1992, }); - const cred = await VC.create('credential-cvc:Identity-v1', uuidv4(), null, [name, dob], '1', evidence); + const cred = await VC.create( + 'credential-cvc:Identity-v3', uuidv4(), null, credentialSubject, [name, dob], evidence, + ); expect(cred.evidence).toBeDefined(); expect(cred.evidence.other).not.toBeDefined(); }); @@ -1611,7 +1584,9 @@ describe('Unit tests for Verifiable Credentials', () => { month: 2, year: 1992, }); - const cred = await VC.create('credential-cvc:Identity-v1', uuidv4(), null, [name, dob], '1', evidence); + const cred = await VC.create( + 'credential-cvc:Identity-v3', uuidv4(), null, credentialSubject, [name, dob], evidence, + ); expect(cred.evidence).toBeDefined(); expect(cred.evidence).toEqual(evidence); }); @@ -1639,7 +1614,7 @@ describe('Unit tests for Verifiable Credentials', () => { }); return expect(VC.create( - 'credential-cvc:Identity-v1', uuidv4(), null, [name, dob], '1', evidence, + 'credential-cvc:Identity-v3', uuidv4(), null, credentialSubject, [name, dob], evidence, )).rejects.toThrow(/Evidence type is required/); }); @@ -1667,7 +1642,7 @@ describe('Unit tests for Verifiable Credentials', () => { }); return expect(VC.create( - 'credential-cvc:Identity-v1', uuidv4(), null, [name, dob], '1', evidence, + 'credential-cvc:Identity-v3', uuidv4(), null, credentialSubject, [name, dob], evidence, )).rejects.toThrow(/Evidence id is not a valid URL/); }); @@ -1695,7 +1670,7 @@ describe('Unit tests for Verifiable Credentials', () => { }); return expect(VC.create( - 'credential-cvc:Identity-v1', uuidv4(), null, [name, dob], '1', evidence, + 'credential-cvc:Identity-v3', uuidv4(), null, credentialSubject, [name, dob], evidence, )).rejects.toThrow(/Evidence type is not an Array object/); }); @@ -1733,19 +1708,7 @@ describe('Unit tests for Verifiable Credentials', () => { const ucas = [ type, number, name, gender, issueCountry, placeOfBirth, dateOfBirth, nationality, dateOfExpiry, evidences, ]; - const credential = await VC.create('credential-cvc:IdDocument-v1', '', null, ucas, '1'); - expect(credential).toBeDefined(); - }); - - it('Should create credential if non-required claims are missing', async () => { - const type = await Claim.create('claim-cvc:Document.type-v1', 'passport', '1'); - const name = await Claim.create('claim-cvc:Document.name-v1', { givenNames: 'Maxime' }, '1'); - const issueCountry = await Claim.create('claim-cvc:Document.issueCountry-v1', 'Brazil', '1'); - const dateOfBirthValue = identityDateOfBirth; - const dateOfBirth = await Claim.create('claim-cvc:Document.dateOfBirth-v1', dateOfBirthValue, '1'); - - const ucas = [type, name, issueCountry, dateOfBirth]; - const credential = await VC.create('credential-cvc:IdDocument-v1', '', null, ucas, '1'); + const credential = await VC.create('credential-cvc:IdDocument-v3', '', null, credentialSubject, ucas); expect(credential).toBeDefined(); }); @@ -1756,8 +1719,8 @@ describe('Unit tests for Verifiable Credentials', () => { const ucas = [type, name, issueCountry]; - return expect(VC.create('credential-cvc:IdDocument-v2', '', null, ucas, '1')).rejects - .toThrow(/Missing required claim\(s\): claim-cvc:Document.dateOfBirth-v1, claim-cvc:Document.evidences-v1/); + return expect(VC.create('credential-cvc:IdDocument-v3', '', null, credentialSubject, ucas)).rejects + .toThrow(/Missing required fields to credential-cvc:IdDocument-v3/); }); it('Should throw exception on credential creation if required uca is missing', async () => { @@ -1767,8 +1730,8 @@ describe('Unit tests for Verifiable Credentials', () => { const ucas = [type, name, issueCountry]; - return expect(VC.create('credential-cvc:IdDocument-v1', '', null, ucas, '1')) - .rejects.toThrow(/Missing required claim\(s\): claim-cvc:Document.dateOfBirth-v1/); + return expect(VC.create('credential-cvc:IdDocument-v3', '', null, credentialSubject, ucas)) + .rejects.toThrow(/Missing required fields to credential-cvc:IdDocument-v3/); }); it('Should verify a VC without non-required claims', async () => { @@ -1807,7 +1770,7 @@ describe('Transient Credential Tests', () => { }; const uca = await Claim.create('claim-cvc:Identity.address-v1', value, '1'); - const credential = await VC.create('credential-cvc:UnverifiedAddress-v1', '', null, [uca], '1'); + const credential = await VC.create('credential-cvc:UnverifiedAddress-v3', '', null, credentialSubject, [uca]); expect(credential).toBeDefined(); expect(credential.transient).toBeTruthy(); @@ -1832,7 +1795,7 @@ describe('Transient Credential Tests', () => { }; const uca = await Claim.create('claim-cvc:SocialSecurity.number-v1', value, '1'); - const credential = await VC.create('credential-cvc:UnverifiedSsn-v1', '', null, [uca], '1'); + const credential = await VC.create('credential-cvc:UnverifiedSsn-v3', '', null, credentialSubject, [uca]); expect(credential).toBeDefined(); expect(credential.transient).toBeTruthy(); @@ -1862,7 +1825,7 @@ describe('Signned Verifiable Credentials', () => { test('Should create a verifiable credential instance', async () => { const name = await Claim.create('claim-cvc:Identity.name-v1', identityName); const dob = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', identityDateOfBirth); - const cred = await VC.create('credential-cvc:Identity-v1', uuidv4(), null, [name, dob], '1', null, + const cred = await VC.create('credential-cvc:Identity-v3', uuidv4(), null, credentialSubject, [name, dob], null, new CredentialSignerVerifier({ prvBase58 })); expect(cred).toBeDefined(); expect(cred.proof.merkleRootSignature).toBeDefined(); @@ -1873,7 +1836,7 @@ describe('Signned Verifiable Credentials', () => { const name = await Claim.create('claim-cvc:Identity.name-v1', identityName); const dob = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', identityDateOfBirth); const signerVerifier = new CredentialSignerVerifier({ prvBase58 }); - const cred = await VC.create('credential-cvc:Identity-v1', uuidv4(), null, [name, dob], '1', null, + const cred = await VC.create('credential-cvc:Identity-v3', uuidv4(), null, credentialSubject, [name, dob], null, signerVerifier); expect(cred).toBeDefined(); expect(cred.proof.merkleRootSignature).toBeDefined(); diff --git a/__test__/schemaLoader.test.js b/__test__/schemaLoader.test.js index 8e3ae3d6..051a9f1f 100644 --- a/__test__/schemaLoader.test.js +++ b/__test__/schemaLoader.test.js @@ -7,6 +7,8 @@ const { const claimDefinitions = require('../src/claim/definitions'); const credentialDefinitions = require('../src/creds/definitions'); +const credentialSubject = 'did:sol:J2vss1hB3kgEfQMSSdvvjwRm3JdyFWp7S7dbX5mudS4V'; + const { summaryMap } = schemaLoader; jest.setTimeout(30000); @@ -108,7 +110,7 @@ describe('schema loading tests', () => { year: 1970, }); - await VC.create('credential-cvc:Identity-v1', 'issuer', null, [name, dob]); + await VC.create('credential-cvc:Identity-v3', 'issuer', null, credentialSubject, [name, dob]); expect(credentialDefinitions) .toHaveLength(1); @@ -116,8 +118,8 @@ describe('schema loading tests', () => { expect(credentialDefinitions) .toEqual(expect.arrayContaining([ expect.objectContaining({ - identifier: 'credential-cvc:Identity-v1', - version: '1', + identifier: 'credential-cvc:Identity-v3', + version: '3', depends: [ 'claim-cvc:Identity.name-v1', 'claim-cvc:Identity.dateOfBirth-v1', @@ -191,18 +193,18 @@ describe('schema loading tests', () => { year: 1970, }); - await VC.create('credential-cvc:Identity-v1', 'issuer', null, [name, dob]); + await VC.create('credential-cvc:Identity-v3', 'issuer', null, credentialSubject, [name, dob]); expect(summaryMap) .toEqual(expect.objectContaining({ 'identity.credential': { - identifier: 'credential-cvc:Identity-v1', + identifier: 'credential-cvc:Identity-v3', textLabel: 'identity.credential', credentials: [ - 'credential-cvc:Identity-v1', + 'credential-cvc:Identity-v3', ], labelFor: [ - 'credential-cvc:Identity-v1', + 'credential-cvc:Identity-v3', ], changeable: true, claimPath: null, diff --git a/src/creds/CvcMerkleProof.js b/src/creds/CvcMerkleProof.js index 3d1480b0..b2beb1d5 100644 --- a/src/creds/CvcMerkleProof.js +++ b/src/creds/CvcMerkleProof.js @@ -7,7 +7,6 @@ const { services } = require('../services'); /** * Transforms a list of UCAs into the signature property of the verifiable claims - */ class CvcMerkleProof { static get PADDING_INCREMENTS() { @@ -21,6 +20,7 @@ class CvcMerkleProof { this.anchor = 'TBD (Civic Blockchain Attestation)'; this.leaves = CvcMerkleProof.getAllAttestableValue(withRandomUcas); this.buildMerkleTree(credentialSigner); + this.granted = null; } buildMerkleTree(credentialSigner = null) { diff --git a/src/creds/VerifiableCredential.js b/src/creds/VerifiableCredential.js index 2bb7d5c3..8f31f464 100644 --- a/src/creds/VerifiableCredential.js +++ b/src/creds/VerifiableCredential.js @@ -17,7 +17,7 @@ const { CvcMerkleProof } = require('./CvcMerkleProof'); const { ClaimModel } = require('./ClaimModel'); const CredentialSignerVerifier = require('./CredentialSignerVerifier'); const { schemaLoader } = require('../schemas/jsonSchema'); - +const { parseIdentifier } = require('../lib/stringUtils'); // convert a time delta to a timestamp const convertDeltaToTimestamp = delta => time.applyDeltaToDate(delta).getTime() / 1000; @@ -45,13 +45,16 @@ function verifyLeave(leave, merkleTools, claims, signature, invalidValues, inval // 1. verify valid targetHashs // 1.1 "leave.value" should be equal claim values const ucaValue = new Claim(leave.identifier, { attestableValue: leave.value }); + let providedClaimValue = _.get(claims, leave.claimPath); + if (!providedClaimValue) providedClaimValue = null; + if (ucaValue.type === 'String' || ucaValue.type === 'Number') { - if (ucaValue.value !== _.get(claims, leave.claimPath)) { + if (ucaValue.value !== providedClaimValue) { invalidValues.push(leave.value); } } else if (ucaValue.type === 'Object') { const ucaValueValue = ucaValue.value; - const innerClaimValue = _.get(claims, leave.claimPath); + const innerClaimValue = providedClaimValue; const claimPathSufix = _.last(_.split(leave.claimPath, '.')); const claimValue = {}; @@ -64,7 +67,7 @@ function verifyLeave(leave, merkleTools, claims, signature, invalidValues, inval } }); } else if (ucaValue.type === 'Array') { - const innerClaimValue = _.get(claims, leave.claimPath); + const innerClaimValue = providedClaimValue; _.forEach(ucaValue.value, (arrayItem, idx) => { const itemInnerClaimValue = innerClaimValue[idx]; @@ -176,7 +179,7 @@ async function nonCryptographicallySecureVerify(credential) { await schemaLoader.loadSchemaFromTitle(credential.identifier); const expiry = _.clone(credential.expirationDate); - const claims = _.clone(credential.claim); + const claims = _.clone(credential.credentialSubject); const signature = _.clone(credential.proof); const signLeaves = _.get(signature, 'leaves'); let valid = false; @@ -189,7 +192,7 @@ async function nonCryptographicallySecureVerify(credential) { const invalidValues = []; const invalidHashs = []; const invalidProofs = []; - _.forEach(_.keys(claimsWithFlatKeys), (claimKey) => { + _.forEach(_.keys(claimsWithFlatKeys).filter(key => key !== 'id'), (claimKey) => { // check if `claimKey` has a `claimPath` proof const leaveIdx = _.indexOf(leavesClaimPaths, claimKey); // if not found @@ -280,7 +283,7 @@ function requesterGrantVerify(credential, requesterId, requestId, keyName) { const anchorPubKey = _.get(credential.proof, 'anchor.subject.pub'); const anchorData = _.get(credential.proof, 'anchor.subject.data'); - if (_.isEmpty(credential.granted) || _.isEmpty(label) || _.isEmpty(anchorPubKey)) { + if (_.isEmpty(credential.proof.granted) || _.isEmpty(label) || _.isEmpty(anchorPubKey)) { return false; } @@ -298,7 +301,7 @@ function requesterGrantVerify(credential, requesterId, requestId, keyName) { cryptoManager.installKey(verifyKey, anchorPubKey); } - return cryptoManager.verify(verifyKey, hexHash, credential.granted); + return cryptoManager.verify(verifyKey, hexHash, credential.proof.granted); } /** @@ -334,23 +337,6 @@ function verifyRequiredClaims(definition, ucas) { } } -/** - * Throws exception if the definition has missing required claims - * @param {*} definition - the credential definition - * @param {*} verifiableCredentialJSON - the verifiable credential JSON - */ -function verifyRequiredClaimsFromJSON(definition, verifiableCredentialJSON) { - const leaves = _.get(verifiableCredentialJSON, 'proof.leaves'); - - if (!_.isEmpty(definition.required) && leaves) { - const identifiers = leaves.map(leave => leave.identifier); - const missings = _.difference(definition.required, identifiers); - if (!_.isEmpty(missings)) { - throw new Error(`Missing required claim(s): ${_.join(missings, ', ')}`); - } - } -} - /** * Retrieves the credential definition * @param {string} identifier - credential identifier @@ -377,8 +363,11 @@ function getCredentialDefinition(identifier, version) { * @param {*} version * @param {*} [evidence] */ -function VerifiableCredentialBaseConstructor(identifier, issuer, expiryIn, ucas, - version, evidence, signerVerifier = null) { +function VerifiableCredentialBaseConstructor(identifier, issuer, expiryIn, subject, ucas, + evidence, signerVerifier = null) { + const parsedIdentifier = parseIdentifier(identifier); + const version = parsedIdentifier ? parsedIdentifier[4] : '1'; + this.id = uuidv4(); this.issuer = issuer; const issuerUCA = new Claim('cvc:Meta:issuer', this.issuer); @@ -396,33 +385,38 @@ function VerifiableCredentialBaseConstructor(identifier, issuer, expiryIn, ucas, } const definition = getCredentialDefinition(identifier, version); - this.version = `${version}` || definition.version; - this.type = ['Credential', identifier]; + // this.version = `${version}` || definition.version; + this.type = ['VerifiableCredential', 'IdentityCredential']; this.transient = definition.transient || false; if (evidence) { this.evidence = serializeEvidence(evidence); } + this.credentialSubject = { + id: subject, + }; + // ucas can be empty here if it is been constructed from JSON if (!_.isEmpty(ucas)) { verifyRequiredClaims(definition, ucas); - this.claim = new ClaimModel(ucas); + this.credentialSubject = { + ...this.credentialSubject, + ...new ClaimModel(ucas), + }; this.proof = new CvcMerkleProof(proofUCAs, signerVerifier); if (!_.isEmpty(definition.excludes)) { const removed = _.remove(this.proof.leaves, el => _.includes(definition.excludes, el.identifier)); _.forEach(removed, (r) => { - _.unset(this.claim, r.claimPath); + _.unset(this.credentialSubject, r.claimPath); }); } - // The VC Grantted session (see .grantUsageFor) - this.granted = null; } /** * Returns the global identifier of the Credential */ - this.getGlobalIdentifier = () => (`credential-${this.identifier}-${this.version}`); + this.getGlobalIdentifier = () => (`credential-${this.identifier}-${version}`); /** * Creates a filtered credential exposing only the requested claims @@ -432,9 +426,9 @@ function VerifiableCredentialBaseConstructor(identifier, issuer, expiryIn, ucas, const filtered = _.cloneDeep(this); _.remove(filtered.proof.leaves, el => !_.includes(requestedClaims, el.identifier)); - filtered.claim = {}; + filtered.credentialSubject = {}; _.forEach(filtered.proof.leaves, (el) => { - _.set(filtered.claim, el.claimPath, _.get(this.claim, el.claimPath)); + _.set(filtered.credentialSubject, el.claimPath, _.get(this.credentialSubject, el.claimPath)); }); return filtered; @@ -602,7 +596,7 @@ function VerifiableCredentialBaseConstructor(identifier, issuer, expiryIn, ucas, const convertTimestampIfString = obj => (_.isString(obj) ? convertDeltaToTimestamp(obj) : obj); this.isMatch = (constraints) => { - const claims = _.cloneDeep(this.claim); + const claims = _.cloneDeep(this.credentialSubject); const siftCompatibleConstraints = transformConstraint(constraints); const claimsMatchConstraint = (constraint) => { @@ -659,7 +653,7 @@ function VerifiableCredentialBaseConstructor(identifier, issuer, expiryIn, ucas, } const hexSign = cryptoManager.sign(signKey, hexHash); - this.granted = hexSign; + this.proof.granted = hexSign; }; /** @@ -681,7 +675,6 @@ const CREDENTIAL_META_FIELDS = [ 'issuer', 'issuanceDate', 'expirationDate', - 'version', 'type', ]; @@ -747,8 +740,8 @@ VerifiableCredentialBaseConstructor.CREDENTIAL_META_FIELDS = CREDENTIAL_META_FIE VerifiableCredentialBaseConstructor.getCredentialMeta = getCredentialMeta; VerifiableCredentialBaseConstructor.isMatchCredentialMeta = isMatchCredentialMeta; -VerifiableCredentialBaseConstructor.create = async (identifier, issuer, expiryIn, ucas, version, evidence, - signerVerifier = null) => { +VerifiableCredentialBaseConstructor.create = async (identifier, issuer, expiryIn, subject, ucas, evidence, + signerVerifier = null, validate = true) => { // Load the schema and it's references from a source to be used for validation and defining the schema definitions await schemaLoader.loadSchemaFromTitle(identifier); @@ -758,7 +751,15 @@ VerifiableCredentialBaseConstructor.create = async (identifier, issuer, expiryIn await schemaLoader.loadSchemaFromTitle('cvc:Meta:expirationDate'); await schemaLoader.loadSchemaFromTitle('cvc:Random:node'); - return new VerifiableCredentialBaseConstructor(identifier, issuer, expiryIn, ucas, version, evidence, signerVerifier); + const vc = new VerifiableCredentialBaseConstructor( + identifier, issuer, expiryIn, subject, ucas, evidence, signerVerifier, + ); + + if (validate) { + await schemaLoader.validateSchema(identifier, JSON.parse(JSON.stringify(vc))); + } + + return vc; }; /** @@ -769,30 +770,33 @@ VerifiableCredentialBaseConstructor.create = async (identifier, issuer, expiryIn VerifiableCredentialBaseConstructor.fromJSON = async (verifiableCredentialJSON, partialPresentation = false) => { await schemaLoader.loadSchemaFromTitle(verifiableCredentialJSON.identifier); - const definition = getCredentialDefinition(verifiableCredentialJSON.identifier, - verifiableCredentialJSON.version); - if (!partialPresentation) { - verifyRequiredClaimsFromJSON(definition, verifiableCredentialJSON); + await schemaLoader.validateSchema(verifiableCredentialJSON.identifier, verifiableCredentialJSON); } const newObj = await VerifiableCredentialBaseConstructor.create( verifiableCredentialJSON.identifier, verifiableCredentialJSON.issuer, + null, + null, + null, + null, + null, + false, ); newObj.id = _.clone(verifiableCredentialJSON.id); newObj.issuanceDate = _.clone(verifiableCredentialJSON.issuanceDate); newObj.expirationDate = _.clone(verifiableCredentialJSON.expirationDate); newObj.identifier = _.clone(verifiableCredentialJSON.identifier); - newObj.version = _.clone(verifiableCredentialJSON.version); newObj.type = _.cloneDeep(verifiableCredentialJSON.type); - newObj.claim = _.cloneDeep(verifiableCredentialJSON.claim); + newObj.credentialSubject = _.cloneDeep(verifiableCredentialJSON.credentialSubject); newObj.proof = _.cloneDeep(verifiableCredentialJSON.proof); - newObj.granted = _.clone(verifiableCredentialJSON.granted) || null; + return newObj; }; + /** * List all properties of a Verifiable Credential */ diff --git a/src/schemas/jsonSchema/index.js b/src/schemas/jsonSchema/index.js index 9f6fe70d..424c52f0 100644 --- a/src/schemas/jsonSchema/index.js +++ b/src/schemas/jsonSchema/index.js @@ -115,7 +115,7 @@ class SummaryMapper { } const getSchemaVersion = (identifier) => { - const matches = identifier.match(/D-v([\d]+$)/); + const matches = identifier.match(/-v([\d]+$)/); if (matches && matches.length > 1) { return matches[1]; } @@ -135,6 +135,10 @@ function isDefinitionEqual(definition, ucaDefinition) { const isUCA = uca => /^[^:]+:[^:]+:[^:]+$/.test(uca); +const getCredentialSubjectProperties = schema => ( + schema.properties.credentialSubject ? schema.properties.credentialSubject : schema.properties.claim +); + /** * This class loads the schema definitions as needed by using loaders provided by the */ @@ -149,10 +153,14 @@ class SchemaLoader { this.validUcaIdentifiers = []; this.validCredentialIdentifiers = []; this.ucaCompared = []; + + // allowUnionTypes is required because of the anchor in the proof can be a string/object (this should be changed) this.ajv = new Ajv({ logger: console, allErrors: true, verbose: true, + strict: true, + allowUnionTypes: true, }); // add data formats such as date-time @@ -200,7 +208,9 @@ class SchemaLoader { definition.depends.push(propertySchema.title); } - if (schema.properties.claim.required && schema.properties.claim.required.includes(property)) { + const csProperties = getCredentialSubjectProperties(schema); + + if (csProperties.required && csProperties.required.includes(property)) { definition.required.push(propertySchema.title); } } @@ -230,12 +240,14 @@ class SchemaLoader { definition.transient = true; } - if (schema.properties.claim.required) { + const credentialSubjectDefinition = getCredentialSubjectProperties(schema); + + if (credentialSubjectDefinition.required) { definition.required = []; } const references = []; - _.forEach(schema.properties.claim.properties, (vo) => { + _.forEach(credentialSubjectDefinition.properties, (vo) => { _.forEach(vo.properties, (vi, ki) => { references.push({ ref: vo.properties[ki].$ref, property: ki }); }); @@ -421,7 +433,7 @@ class SchemaLoader { const references = []; traverse(schema, { cb: (currentNode) => { - if (currentNode.$ref !== undefined) { + if (currentNode.$ref !== undefined && !currentNode.$ref.startsWith('#')) { // Prevent the same schema loaded multiple times references.push(this.loadSchemaFromUri(currentNode.$ref)); } From ff325d3299c6a8478a4a509365d812d7fc718ed2 Mon Sep 17 00:00:00 2001 From: William Brooks Date: Wed, 15 Dec 2021 11:19:04 +0200 Subject: [PATCH 02/52] IDCOM-1425 Updated fixtures to be W3C compliant --- __test__/creds/fixtures/Address.json | 16 +- __test__/creds/fixtures/Cred1.json | 13 +- __test__/creds/fixtures/CredExpired.json | 14 +- __test__/creds/fixtures/CredFiltered1.json | 14 +- .../creds/fixtures/CredWithFutureExpiry.json | 14 +- .../creds/fixtures/CredentialAddress.json | 13 +- .../fixtures/CredentialAttestationFaked.json | 19 +- .../fixtures/CredentialEmailInvalid.json | 14 +- __test__/creds/fixtures/Email.json | 15 +- .../creds/fixtures/GenericDocumentId.json | 525 ++++++++++-------- .../IdDocumentWithoutNonRequiredClaims.json | 394 ++++--------- .../IdDocumentWithoutRequiredClaims.json | 17 +- __test__/creds/fixtures/Identity.json | 16 +- __test__/creds/fixtures/PhoneNumber.json | 16 +- .../creds/fixtures/VCPermanentAnchor.json | 18 +- __test__/creds/fixtures/VCTempAnchor.json | 16 +- .../fixtures/VCWithTamperedLeafValue.json | 14 +- .../creds/fixtures/filteredIdDocument-v2.json | 18 +- 18 files changed, 522 insertions(+), 644 deletions(-) diff --git a/__test__/creds/fixtures/Address.json b/__test__/creds/fixtures/Address.json index 988ea48f..726e8d91 100644 --- a/__test__/creds/fixtures/Address.json +++ b/__test__/creds/fixtures/Address.json @@ -2,14 +2,13 @@ "id": "7704ddf0-6226-4b2b-9146-d36083c7b01d", "issuer": "jest:test:fe0c0990-e8b0-11e8-8a40-7fe4d191eb47", "issuanceDate": "2018-11-15T08:32:30.890Z", - "identifier": "credential-cvc:Address-v1", - "expirationDate": null, - "version": "1", + "identifier": "credential-cvc:Address-v3", "type": [ - "Credential", - "credential-cvc:Address-v1" + "VerifiableCredential", + "IdentityCredential" ], - "claim": { + "credentialSubject": { + "id": "did:sol:J2vss1hB3kgEfQMSSdvvjwRm3JdyFWp7S7dbX5mudS4V", "identity": { "address": { "city": "raSl8SUpYZ", @@ -46,7 +45,7 @@ "path": "/" }, "coin": "dummycoin", - "tx": {}, + "tx": "", "network": "dummynet", "type": "permanent", "civicAsPrimary": false, @@ -261,6 +260,7 @@ } ] } - ] + ], + "granted": null } } diff --git a/__test__/creds/fixtures/Cred1.json b/__test__/creds/fixtures/Cred1.json index 5f0ffcd7..cc83de39 100644 --- a/__test__/creds/fixtures/Cred1.json +++ b/__test__/creds/fixtures/Cred1.json @@ -2,14 +2,14 @@ "id": "3636227c-5adf-4135-b81c-6dd1da53fd67", "issuer": "", "issuanceDate": "2018-11-13T18:54:11.665Z", - "identifier": "credential-cvc:Email-v1", - "expirationDate": null, + "identifier": "credential-cvc:Email-v3", "version": "1", "type": [ - "Credential", - "credential-cvc:Email-v1" + "VerifiableCredential", + "IdentityCredential" ], - "claim": { + "credentialSubject": { + "id": "did:sol:J2vss1hB3kgEfQMSSdvvjwRm3JdyFWp7S7dbX5mudS4V", "contact": { "email": { "domain": { @@ -140,6 +140,7 @@ } ] } - ] + ], + "granted": null } } diff --git a/__test__/creds/fixtures/CredExpired.json b/__test__/creds/fixtures/CredExpired.json index bbbfa991..5be3bd6c 100644 --- a/__test__/creds/fixtures/CredExpired.json +++ b/__test__/creds/fixtures/CredExpired.json @@ -2,14 +2,15 @@ "id": "41ab3aaa-7ebd-4f02-a1e4-815ba6054cdd", "issuer": "did:ethr:0xaf9482c84De4e2a961B98176C9f295F9b6008BfD", "issuanceDate": "2018-11-14T08:59:12.241Z", - "identifier": "credential-cvc:Address-v1", + "identifier": "credential-cvc:Address-v3", "expirationDate": "2008-11-13T22:51:32.241Z", "version": "1", "type": [ - "Credential", - "credential-cvc:Address-v1" + "VerifiableCredential", + "IdentityCredential" ], - "claim": { + "credentialSubject": { + "id": "did:sol:J2vss1hB3kgEfQMSSdvvjwRm3JdyFWp7S7dbX5mudS4V", "identity": { "address": { "city": "Belo Horizonte", @@ -46,7 +47,7 @@ "path": "/" }, "coin": "dummycoin", - "tx": {}, + "tx": "", "network": "dummynet", "type": "permanent", "civicAsPrimary": false, @@ -261,6 +262,7 @@ } ] } - ] + ], + "granted": null } } diff --git a/__test__/creds/fixtures/CredFiltered1.json b/__test__/creds/fixtures/CredFiltered1.json index 89e2399f..1e61eef0 100644 --- a/__test__/creds/fixtures/CredFiltered1.json +++ b/__test__/creds/fixtures/CredFiltered1.json @@ -2,14 +2,15 @@ "id": null, "issuer": "jest:test", "issuanceDate": "2018-06-19T21:52:47.512Z", - "identifier": "credential-cvc:TestWithExcludes-v1", + "identifier": "credential-cvc:TestWithExcludes-v3", "expirationDate": "2028-06-19T08:04:47.512Z", "version": 1, "type": [ - "Credential", - "civ:Credential:TestWithExcludes" + "VerifiableCredential", + "IdentityCredential" ], - "claim": { + "credentialSubject": { + "id": "did:sol:J2vss1hB3kgEfQMSSdvvjwRm3JdyFWp7S7dbX5mudS4V", "identity": { "name": { "first": "Joao", @@ -215,6 +216,7 @@ } ] } - ] + ], + "granted": null } -} \ No newline at end of file +} diff --git a/__test__/creds/fixtures/CredWithFutureExpiry.json b/__test__/creds/fixtures/CredWithFutureExpiry.json index f6f937b8..34d7b9e6 100644 --- a/__test__/creds/fixtures/CredWithFutureExpiry.json +++ b/__test__/creds/fixtures/CredWithFutureExpiry.json @@ -2,14 +2,15 @@ "id": "8a842560-40fc-4dcf-ae7f-23148a108829", "issuer": "did:ethr:0xaf9482c84De4e2a961B98176C9f295F9b6008BfD", "issuanceDate": "2018-11-14T09:00:43.439Z", - "identifier": "credential-cvc:Address-v1", + "identifier": "credential-cvc:Address-v3", "expirationDate": "2028-11-13T19:08:23.439Z", "version": "1", "type": [ - "Credential", - "credential-cvc:Address-v1" + "VerifiableCredential", + "IdentityCredential" ], - "claim": { + "credentialSubject": { + "id": "did:sol:J2vss1hB3kgEfQMSSdvvjwRm3JdyFWp7S7dbX5mudS4V", "identity": { "address": { "city": "Belo Horizonte", @@ -46,7 +47,7 @@ "path": "/" }, "coin": "dummycoin", - "tx": {}, + "tx": "", "network": "dummynet", "type": "permanent", "civicAsPrimary": false, @@ -261,6 +262,7 @@ } ] } - ] + ], + "granted": null } } diff --git a/__test__/creds/fixtures/CredentialAddress.json b/__test__/creds/fixtures/CredentialAddress.json index a03d1bab..3c623840 100644 --- a/__test__/creds/fixtures/CredentialAddress.json +++ b/__test__/creds/fixtures/CredentialAddress.json @@ -2,14 +2,14 @@ "id": "fc60be8f-ea01-4881-a6e9-b4ae9a63e55e", "issuer": "jest:test:9ff1e700-dd46-11e8-958d-e5793374641e", "issuanceDate": "2018-10-31T19:53:23.568Z", - "identifier": "credential-cvc:PhoneNumber-v1", - "expirationDate": null, + "identifier": "credential-cvc:PhoneNumber-v3", "version": "1", "type": [ - "Credential", - "credential-cvc:PhoneNumber-v1" + "VerifiableCredential", + "IdentityCredential" ], - "claim": { + "credentialSubject": { + "id": "did:sol:J2vss1hB3kgEfQMSSdvvjwRm3JdyFWp7S7dbX5mudS4V", "contact": { "phoneNumber": { "country": "WTYqO3zRU0", @@ -236,6 +236,7 @@ } ] } - ] + ], + "granted": null } } diff --git a/__test__/creds/fixtures/CredentialAttestationFaked.json b/__test__/creds/fixtures/CredentialAttestationFaked.json index 79d89076..7c9d1046 100644 --- a/__test__/creds/fixtures/CredentialAttestationFaked.json +++ b/__test__/creds/fixtures/CredentialAttestationFaked.json @@ -1,15 +1,15 @@ { - "id": null, + "id": "", "issuer": "d460c90d-4032-4c29-9743-f52e0a852602", "issuanceDate": "2018-10-08T19:46:22.364Z", - "identifier": "credential-cvc:Identity-v1", - "expirationDate": null, + "identifier": "credential-cvc:Identity-v3", "version": "1", "type": [ - "Credential", - "credential-cvc:Identity-v1" + "VerifiableCredential", + "IdentityCredential" ], - "claim": { + "credentialSubject": { + "id": "did:sol:J2vss1hB3kgEfQMSSdvvjwRm3JdyFWp7S7dbX5mudS4V", "identity": { "name": { "familyNames": "Santos", @@ -47,7 +47,7 @@ "path": "/" }, "coin": "dummycoin", - "tx": {}, + "tx": "", "network": "dummynet", "type": "permanent", "civicAsPrimary": false, @@ -238,6 +238,7 @@ } ] } - ] + ], + "granted": null } -} \ No newline at end of file +} diff --git a/__test__/creds/fixtures/CredentialEmailInvalid.json b/__test__/creds/fixtures/CredentialEmailInvalid.json index 236431ba..ef0fe8bd 100644 --- a/__test__/creds/fixtures/CredentialEmailInvalid.json +++ b/__test__/creds/fixtures/CredentialEmailInvalid.json @@ -3,14 +3,14 @@ "id": "81eed612-0bce-4eb5-a88f-d96c34cc5431", "issuer": "did:ethr:0x1a88a35421a4a0d3e13fe4e8ebcf18e9a249dc5a", "issuanceDate": "2019-08-15T21:18:25.058Z", - "identifier": "credential-cvc:Email-v1", - "expirationDate": null, + "identifier": "credential-cvc:Email-v3", "version": "1", "type": [ - "Credential", - "credential-cvc:Email-v1" + "VerifiableCredential", + "IdentityCredential" ], - "claim": { + "credentialSubject": { + "id": "did:sol:J2vss1hB3kgEfQMSSdvvjwRm3JdyFWp7S7dbX5mudS4V", "contact": { "email": { "domain": { @@ -167,9 +167,9 @@ } ] } - ] + ], + "granted": null }, - "granted": null, "user_id": "03bf176a6a4e4841ec348a8007e655e2e746806576048fc1fe4ff2e8bc6351ecc2", "createdAt": "2019-08-15T21:18:01.774Z", "updatedAt": "2019-08-15T21:18:34.148Z", diff --git a/__test__/creds/fixtures/Email.json b/__test__/creds/fixtures/Email.json index 25c0f3ef..9e28f78e 100644 --- a/__test__/creds/fixtures/Email.json +++ b/__test__/creds/fixtures/Email.json @@ -2,14 +2,14 @@ "id": "e3dc1ceb-3899-454f-a80c-52c97a0cc9d8", "issuer": "jest:test:fe07c3d0-e8b0-11e8-8a40-7fe4d191eb47", "issuanceDate": "2018-11-15T08:32:30.862Z", - "identifier": "credential-cvc:Email-v1", - "expirationDate": null, + "identifier": "credential-cvc:Email-v3", "version": "1", "type": [ - "Credential", - "credential-cvc:Email-v1" + "VerifiableCredential", + "IdentityCredential" ], - "claim": { + "credentialSubject": { + "id": "did:sol:J2vss1hB3kgEfQMSSdvvjwRm3JdyFWp7S7dbX5mudS4V", "contact": { "email": { "domain": { @@ -44,7 +44,7 @@ "path": "/" }, "coin": "dummycoin", - "tx": {}, + "tx": "", "network": "dummynet", "type": "permanent", "civicAsPrimary": false, @@ -167,6 +167,7 @@ } ] } - ] + ], + "granted": null } } diff --git a/__test__/creds/fixtures/GenericDocumentId.json b/__test__/creds/fixtures/GenericDocumentId.json index 140a5e32..709ee062 100644 --- a/__test__/creds/fixtures/GenericDocumentId.json +++ b/__test__/creds/fixtures/GenericDocumentId.json @@ -1,636 +1,681 @@ { - "id": "7e984bcc-602a-478f-adaa-5a586e4abae6", - "issuer": "did:ethr:0xaf9482c84De4e2a961B98176C9f295F9b6008BfD", - "issuanceDate": "2018-11-20T20:41:59.861Z", - "identifier": "credential-cvc:GenericDocumentId-v1", + "id": "0fa189e2-ad95-4520-a713-f56c6105caf6", + "issuer": "", + "issuanceDate": "2021-12-15T08:05:00.559Z", + "identifier": "credential-cvc:GenericDocumentId-v3", "expirationDate": null, - "version": "1", "type": [ - "Credential", - "credential-cvc:GenericDocumentId-v1" + "VerifiableCredential", + "IdentityCredential" ], - "claim": { + "transient": false, + "credentialSubject": { + "id": "did:sol:J2vss1hB3kgEfQMSSdvvjwRm3JdyFWp7S7dbX5mudS4V", "document": { - "type": "UYOTemeop1", - "number": "hwktDQnVSM", + "type": "passport", + "number": "3bj1LUg9yG", "name": { - "familyNames": "o74I3q0Udy", - "givenNames": "xVIkPSoKlw", - "otherNames": "90Dov8xBgR" - }, - "gender": "6ZgZaMAEC1", - "issueLocation": "qlWfJ4znwU", - "issueAuthority": "I0LM3IeIBy", - "issueCountry": "EzAXU0eTKT", - "placeOfBirth": "mPX5qQBMlU", - "dateOfBirth": { - "day": 23.509202572883346, - "month": 10.046320849916473, - "year": 1972.4471022760558 - }, - "address": { - "city": "FM7pcb3F68", - "country": "C6DK4Ad534", - "county": "7JUOzujKGo", - "postalCode": "hTmK78Pkbu", - "state": "bpPbF2Z3wS", - "street": "vBC4ibu7a3", - "unit": "iAvobg7Lah" + "familyNames": "4h8sLtEfav", + "givenNames": "e8qhs4Iak1", + "otherNames": "bDTn4stMpX" }, + "gender": "jFtCBFceQI", + "issueAuthority": "BO2xblNSVK", + "issueLocation": "OZbhzBU8ng", + "issueCountry": "p4dNUeAKtI", + "placeOfBirth": "r4hIHbyLru", "properties": { "dateOfExpiry": { - "day": 9.14320914518909, - "month": 0.7636856996725372, - "year": 1956.942523652118 + "day": 8, + "month": 1, + "year": 1957 }, "dateOfIssue": { - "day": 11.923255701048788, - "month": 12.215323364578072, - "year": 1982.8838709090696 + "day": 18, + "month": 6, + "year": 1928 } }, + "address": { + "city": "WU9GJ0R9be", + "country": "IH4aiXuEoo", + "county": "akKjaQehNK", + "postalCode": "ci1DMuz16W", + "state": "IQB7oLhSnS", + "street": "52Os5zJgkh", + "unit": "3dGDkhEHxW" + }, "image": { - "back": "Ff5sn0LlBV", - "backMD5": "MAHR7iPXPI", - "front": "DemvYiM1DD", - "frontMD5": "Txh0ap6D8u" + "back": "uPrJKO3cbq", + "backMD5": "0yr9zkdApo", + "front": "9NMgeFErNd", + "frontMD5": "zgOvmWXruS" + }, + "dateOfBirth": { + "day": 23, + "month": 2, + "year": 1973 } } }, "proof": { "type": "CvcMerkleProof2018", - "merkleRoot": "384f87e62391b370752fbf9bc210512e2741c4d01d8d5787e5266729a0736bf6", + "merkleRoot": "f2d36b142f892ca2acd8c4bc89418d25bd21d489ece87907c501bdf799bbd373", "anchor": "TBD (Civic Blockchain Attestation)", "leaves": [ { "identifier": "claim-cvc:Document.type-v1", - "value": "urn:type:3c6c88d9054ff152103737d4631d508519ceb3398f4a2fdb68079feb6a8d6d22:UYOTemeop1|", + "value": "urn:type:ec3a7400b70a40dc5c7bf4f5f2dd21d4a83c74d5963076dff660267ff576b38c:passport|", "claimPath": "document.type", - "targetHash": "862fb2fbfd5c47581c61c936fe6eb72b0f8fddc323f59d5615e8143c0f71b167", + "targetHash": "9e2a14a3e3f7847225c3c9196c7472d2fe2957a342fd9145c7630950aa234866", "node": [ { - "right": "e04a092fce6e0734feb469e4dcd6058336e61e750874ccd3081200b987669ec0" + "right": "e035dcc932641e7f2bb93dabd1596a31be05a107814614b64b15f9c42edd8ab2" }, { - "right": "0e53226c66037493fa67d0af7971adee6e16aab5d7ebc7b01b6e8d7851b66f3a" + "right": "9372b962ee1b64cffacd61c4f92c4447387d0dc79d7cbe1b6b527ac5f8d25bf6" }, { - "right": "caecab2bc73908b56ef7f0e5f6400bbad33c5bdfadfaedbd4b8feff2cd176ee4" + "right": "97e28a1c93d165cc2b4d505dc07b5e75a115f78589561865b25abfdd165aec28" }, { - "right": "4d25da1de6c0ec7c5eac464a861cc07ad19d34cc8d8f52f1ce81dd498c56f68b" + "right": "6c1ab190cdc42f45f0dfd776d75b96e21b75ea8ef17f4f033208343dce1b1e4f" }, { - "right": "01afbce03241ff3666c6d88a2f176165f56af679177586d53819a15efad29760" + "right": "6c8a71144dac626127ab2673ecab068efd10113fd2394a110883f74de2fb1c84" } ] }, { "identifier": "claim-cvc:Document.number-v1", - "value": "urn:number:6a3d75f1c6ca6b30c2ec7583dc963aeb028bdd5d0b90f199c2aed131c201ba3a:hwktDQnVSM|", + "value": "urn:number:7ba0f8b2d2e47533de279f231f179d40f1de53f7fe31a7e494a320d0451f3199:3bj1LUg9yG|", "claimPath": "document.number", - "targetHash": "e04a092fce6e0734feb469e4dcd6058336e61e750874ccd3081200b987669ec0", + "targetHash": "e035dcc932641e7f2bb93dabd1596a31be05a107814614b64b15f9c42edd8ab2", "node": [ { - "left": "862fb2fbfd5c47581c61c936fe6eb72b0f8fddc323f59d5615e8143c0f71b167" + "left": "9e2a14a3e3f7847225c3c9196c7472d2fe2957a342fd9145c7630950aa234866" }, { - "right": "0e53226c66037493fa67d0af7971adee6e16aab5d7ebc7b01b6e8d7851b66f3a" + "right": "9372b962ee1b64cffacd61c4f92c4447387d0dc79d7cbe1b6b527ac5f8d25bf6" }, { - "right": "caecab2bc73908b56ef7f0e5f6400bbad33c5bdfadfaedbd4b8feff2cd176ee4" + "right": "97e28a1c93d165cc2b4d505dc07b5e75a115f78589561865b25abfdd165aec28" }, { - "right": "4d25da1de6c0ec7c5eac464a861cc07ad19d34cc8d8f52f1ce81dd498c56f68b" + "right": "6c1ab190cdc42f45f0dfd776d75b96e21b75ea8ef17f4f033208343dce1b1e4f" }, { - "right": "01afbce03241ff3666c6d88a2f176165f56af679177586d53819a15efad29760" + "right": "6c8a71144dac626127ab2673ecab068efd10113fd2394a110883f74de2fb1c84" } ] }, { "identifier": "claim-cvc:Document.name-v1", - "value": "urn:name.familyNames:ae24dd60b8a4259d478d725efd12900c8b83a6c36f7b0090b8f81a51567c44c6:o74I3q0Udy|urn:name.givenNames:5bef2387e1e897fb64de2ba5c20607f704b57056939bd4258a6ddf762b5a6c7d:xVIkPSoKlw|urn:name.otherNames:1f7b6a70eba5550a47664e85286ab2fda0d9dee99908da0a88234860b29b5d7e:90Dov8xBgR|", + "value": "urn:name.familyNames:7e073b65e03f03f17534e5d28845cfcb497be44f8f7e76f6f672bb8c5b286853:4h8sLtEfav|urn:name.givenNames:6579ae3b7e6a42fed2b43843d592a72b9593cc3ac0cd3b3ec5d9bdc2d236b4c5:e8qhs4Iak1|urn:name.otherNames:f66f86a7aef4c67b38b12c2b48a12dadf0e4865fe83978363921cbdd4824ec2b:bDTn4stMpX|", "claimPath": "document.name", - "targetHash": "b4bb4b697b78c253f3dbc1a0b9d5b14218616cd5ebddd8983bb231ef647db36d", + "targetHash": "17de2fadb88dac8ecd024882fd7e37050fe7365e8c86cf28388e014945712064", "node": [ { - "right": "736ce485a7c50a89b1863e8dc7f24c0e2cf9bc63950408e9a539d427137d57ee" + "right": "1eb5a4fa7a0468164fd50c8d408539e8ff7f0ae3648bd37f9adfa44afce552c3" }, { - "left": "86899574e732b268802c3366daffea60231e3fc9b8179401c9ab9cc55c17eee1" + "left": "e3d2e984d6218132d29a82358942a59fd581d8921b578d42b51c36ac03a3d727" }, { - "right": "caecab2bc73908b56ef7f0e5f6400bbad33c5bdfadfaedbd4b8feff2cd176ee4" + "right": "97e28a1c93d165cc2b4d505dc07b5e75a115f78589561865b25abfdd165aec28" }, { - "right": "4d25da1de6c0ec7c5eac464a861cc07ad19d34cc8d8f52f1ce81dd498c56f68b" + "right": "6c1ab190cdc42f45f0dfd776d75b96e21b75ea8ef17f4f033208343dce1b1e4f" }, { - "right": "01afbce03241ff3666c6d88a2f176165f56af679177586d53819a15efad29760" + "right": "6c8a71144dac626127ab2673ecab068efd10113fd2394a110883f74de2fb1c84" } ] }, { "identifier": "claim-cvc:Name.givenNames-v1", - "value": "urn:givenNames:5bef2387e1e897fb64de2ba5c20607f704b57056939bd4258a6ddf762b5a6c7d:xVIkPSoKlw|", + "value": "urn:givenNames:6579ae3b7e6a42fed2b43843d592a72b9593cc3ac0cd3b3ec5d9bdc2d236b4c5:e8qhs4Iak1|", "claimPath": "document.name.givenNames", - "targetHash": "736ce485a7c50a89b1863e8dc7f24c0e2cf9bc63950408e9a539d427137d57ee", + "targetHash": "1eb5a4fa7a0468164fd50c8d408539e8ff7f0ae3648bd37f9adfa44afce552c3", "node": [ { - "left": "b4bb4b697b78c253f3dbc1a0b9d5b14218616cd5ebddd8983bb231ef647db36d" + "left": "17de2fadb88dac8ecd024882fd7e37050fe7365e8c86cf28388e014945712064" }, { - "left": "86899574e732b268802c3366daffea60231e3fc9b8179401c9ab9cc55c17eee1" + "left": "e3d2e984d6218132d29a82358942a59fd581d8921b578d42b51c36ac03a3d727" }, { - "right": "caecab2bc73908b56ef7f0e5f6400bbad33c5bdfadfaedbd4b8feff2cd176ee4" + "right": "97e28a1c93d165cc2b4d505dc07b5e75a115f78589561865b25abfdd165aec28" }, { - "right": "4d25da1de6c0ec7c5eac464a861cc07ad19d34cc8d8f52f1ce81dd498c56f68b" + "right": "6c1ab190cdc42f45f0dfd776d75b96e21b75ea8ef17f4f033208343dce1b1e4f" }, { - "right": "01afbce03241ff3666c6d88a2f176165f56af679177586d53819a15efad29760" + "right": "6c8a71144dac626127ab2673ecab068efd10113fd2394a110883f74de2fb1c84" } ] }, { "identifier": "claim-cvc:Name.familyNames-v1", - "value": "urn:familyNames:ae24dd60b8a4259d478d725efd12900c8b83a6c36f7b0090b8f81a51567c44c6:o74I3q0Udy|", + "value": "urn:familyNames:7e073b65e03f03f17534e5d28845cfcb497be44f8f7e76f6f672bb8c5b286853:4h8sLtEfav|", "claimPath": "document.name.familyNames", - "targetHash": "e909ecb6288af6f60261756ed591fb8e0dbfe8a23f8b17c596bfee3dbf88b1ff", + "targetHash": "7f67e09a89eac4caf89a0493319f757b4413564bfee64840eb4c302549929be0", "node": [ { - "right": "fa12c4aee6b4c9a7892d98c95f1c0341043c481f6dd1484497e6aa2b4d4fd1cf" + "right": "0fc2cb0aea9669786099f5b373e636d0b6e991ff803b861f77c2a5f3964fa415" }, { - "right": "63a5ac7cad14bf2c7c00708bcfc544b93bb951e28b51151dcb1bce053279689d" + "right": "892b860e92ba9e962d54c722a70f94b7c099edc37bdf6110efec92e0d9ae429d" }, { - "left": "0743b6a6b33419d57f24dfd14e3c6ca7dba96eb5e34a20c5e9dfb64ed866a623" + "left": "5796ebe8828981f0e799fe265984eb0439f8fae67e241d3a8d435abe2911617c" }, { - "right": "4d25da1de6c0ec7c5eac464a861cc07ad19d34cc8d8f52f1ce81dd498c56f68b" + "right": "6c1ab190cdc42f45f0dfd776d75b96e21b75ea8ef17f4f033208343dce1b1e4f" }, { - "right": "01afbce03241ff3666c6d88a2f176165f56af679177586d53819a15efad29760" + "right": "6c8a71144dac626127ab2673ecab068efd10113fd2394a110883f74de2fb1c84" } ] }, { "identifier": "claim-cvc:Name.otherNames-v1", - "value": "urn:otherNames:1f7b6a70eba5550a47664e85286ab2fda0d9dee99908da0a88234860b29b5d7e:90Dov8xBgR|", + "value": "urn:otherNames:f66f86a7aef4c67b38b12c2b48a12dadf0e4865fe83978363921cbdd4824ec2b:bDTn4stMpX|", "claimPath": "document.name.otherNames", - "targetHash": "fa12c4aee6b4c9a7892d98c95f1c0341043c481f6dd1484497e6aa2b4d4fd1cf", + "targetHash": "0fc2cb0aea9669786099f5b373e636d0b6e991ff803b861f77c2a5f3964fa415", "node": [ { - "left": "e909ecb6288af6f60261756ed591fb8e0dbfe8a23f8b17c596bfee3dbf88b1ff" + "left": "7f67e09a89eac4caf89a0493319f757b4413564bfee64840eb4c302549929be0" }, { - "right": "63a5ac7cad14bf2c7c00708bcfc544b93bb951e28b51151dcb1bce053279689d" + "right": "892b860e92ba9e962d54c722a70f94b7c099edc37bdf6110efec92e0d9ae429d" }, { - "left": "0743b6a6b33419d57f24dfd14e3c6ca7dba96eb5e34a20c5e9dfb64ed866a623" + "left": "5796ebe8828981f0e799fe265984eb0439f8fae67e241d3a8d435abe2911617c" }, { - "right": "4d25da1de6c0ec7c5eac464a861cc07ad19d34cc8d8f52f1ce81dd498c56f68b" + "right": "6c1ab190cdc42f45f0dfd776d75b96e21b75ea8ef17f4f033208343dce1b1e4f" }, { - "right": "01afbce03241ff3666c6d88a2f176165f56af679177586d53819a15efad29760" + "right": "6c8a71144dac626127ab2673ecab068efd10113fd2394a110883f74de2fb1c84" } ] }, { "identifier": "claim-cvc:Document.gender-v1", - "value": "urn:gender:11bdb5ad75545352a0adea4a740d59d98b7e0575c9bda65fcc887dfb20774cce:6ZgZaMAEC1|", + "value": "urn:gender:db2dd6516ffdf9745d231a4092b76c3e31f5d6d3e962f18c8c540c6bcee6b039:jFtCBFceQI|", "claimPath": "document.gender", - "targetHash": "46bc6d28dced24e1b4be54fb33a95c3e0005ae4ae4ccfb4deff2129953f9d3e5", + "targetHash": "6159999c245b20a7638c67399f5e60d034bb884168e2867c81d9b7464830cd4b", "node": [ { - "right": "f1761ba3e96e3040f82ab63c4f54c3fedc8b51d54bb23abf3cbfc605dfc1fa7b" + "right": "7d67d76877ff2928408b22fafd772adc1609d53ada37b515dc7ba3155a9a6860" }, { - "left": "21321446187e166b39cf6a1cffedaa3d916ea5c65c78b0264bf045b2fe5b53b4" + "left": "5572fb3c24ac60b6dd96d1d42c4055b830e28bac595f5c732d082c7de53fa1e6" }, { - "left": "0743b6a6b33419d57f24dfd14e3c6ca7dba96eb5e34a20c5e9dfb64ed866a623" + "left": "5796ebe8828981f0e799fe265984eb0439f8fae67e241d3a8d435abe2911617c" }, { - "right": "4d25da1de6c0ec7c5eac464a861cc07ad19d34cc8d8f52f1ce81dd498c56f68b" + "right": "6c1ab190cdc42f45f0dfd776d75b96e21b75ea8ef17f4f033208343dce1b1e4f" }, { - "right": "01afbce03241ff3666c6d88a2f176165f56af679177586d53819a15efad29760" + "right": "6c8a71144dac626127ab2673ecab068efd10113fd2394a110883f74de2fb1c84" } ] }, { - "identifier": "claim-cvc:Document.issueLocation-v1", - "value": "urn:issueLocation:b5170635bf804356f6b11e205caed4ae82325395a3507b3309690e725f5aec67:qlWfJ4znwU|", - "claimPath": "document.issueLocation", - "targetHash": "f1761ba3e96e3040f82ab63c4f54c3fedc8b51d54bb23abf3cbfc605dfc1fa7b", + "identifier": "claim-cvc:Document.issueAuthority-v1", + "value": "urn:issueAuthority:3a7caccab14fccb235423b482ac5089d87d32d5d513ad2a6d7182709613e48ec:BO2xblNSVK|", + "claimPath": "document.issueAuthority", + "targetHash": "7d67d76877ff2928408b22fafd772adc1609d53ada37b515dc7ba3155a9a6860", "node": [ { - "left": "46bc6d28dced24e1b4be54fb33a95c3e0005ae4ae4ccfb4deff2129953f9d3e5" + "left": "6159999c245b20a7638c67399f5e60d034bb884168e2867c81d9b7464830cd4b" }, { - "left": "21321446187e166b39cf6a1cffedaa3d916ea5c65c78b0264bf045b2fe5b53b4" + "left": "5572fb3c24ac60b6dd96d1d42c4055b830e28bac595f5c732d082c7de53fa1e6" }, { - "left": "0743b6a6b33419d57f24dfd14e3c6ca7dba96eb5e34a20c5e9dfb64ed866a623" + "left": "5796ebe8828981f0e799fe265984eb0439f8fae67e241d3a8d435abe2911617c" }, { - "right": "4d25da1de6c0ec7c5eac464a861cc07ad19d34cc8d8f52f1ce81dd498c56f68b" + "right": "6c1ab190cdc42f45f0dfd776d75b96e21b75ea8ef17f4f033208343dce1b1e4f" }, { - "right": "01afbce03241ff3666c6d88a2f176165f56af679177586d53819a15efad29760" + "right": "6c8a71144dac626127ab2673ecab068efd10113fd2394a110883f74de2fb1c84" } ] }, { - "identifier": "claim-cvc:Document.issueAuthority-v1", - "value": "urn:issueAuthority:8593ee28f4f5cbedb3a7bbf6d9827caac43c1d3d8ecc2c9d718e62446a5da269:I0LM3IeIBy|", - "claimPath": "document.issueAuthority", - "targetHash": "2b07878f4cdf087786eab97145281952430ba63e5e37d562b5985b0c011b6fe4", + "identifier": "claim-cvc:Document.issueLocation-v1", + "value": "urn:issueLocation:428509fac92d802ff988f3735d4a3ec34d6dd81e621b6bbb882bad106c8562fb:OZbhzBU8ng|", + "claimPath": "document.issueLocation", + "targetHash": "2e5b04a84f15abda4ca8ac9cd7d7f5956f6ec7d5c14b122b0e1b24f70bf9804c", "node": [ { - "right": "ec2187615883221a545fe324b85e4b98b8b9ac8fe6c37d84d847137f9f34a8e4" + "right": "4786f7a75bde5734def3d8a93bc717f5f82da1e0ffeacd659625bd36f4540950" }, { - "right": "824f6a238a9e470d0507bdd78dfb89aa06fb997665669abff593eaf85832682b" + "right": "23f2969456374b1855d6b1064e25e09ca9b0eb64692f753bf2849b38ed5da92d" }, { - "right": "11f2130a4531cd0d184c39adf4d79d6fcb527c7fdf8224b1a6aeac57fdf86fad" + "right": "08723fc5b89118586a6bd56d30dc88727c5860d0c15cc2a42593a6e1e9228bab" }, { - "left": "186106dbcc2526d6c1a97d23c323e4255a7ff70ba3526abf60f66849f0300ec0" + "left": "ca2cb49280c6deeeb65cf388a02d80db6911ee682ed3f899bb57d33e20461a42" }, { - "right": "01afbce03241ff3666c6d88a2f176165f56af679177586d53819a15efad29760" + "right": "6c8a71144dac626127ab2673ecab068efd10113fd2394a110883f74de2fb1c84" } ] }, { "identifier": "claim-cvc:Document.issueCountry-v1", - "value": "urn:issueCountry:b213aecb4747a9019f6353e3ab75b4731daac7a77bc94785c874264591c3c11f:EzAXU0eTKT|", + "value": "urn:issueCountry:6ac59248b9a202e5e8616234a046b60a1315abf970686700fb33f369d20da80f:p4dNUeAKtI|", "claimPath": "document.issueCountry", - "targetHash": "ec2187615883221a545fe324b85e4b98b8b9ac8fe6c37d84d847137f9f34a8e4", + "targetHash": "4786f7a75bde5734def3d8a93bc717f5f82da1e0ffeacd659625bd36f4540950", "node": [ { - "left": "2b07878f4cdf087786eab97145281952430ba63e5e37d562b5985b0c011b6fe4" + "left": "2e5b04a84f15abda4ca8ac9cd7d7f5956f6ec7d5c14b122b0e1b24f70bf9804c" }, { - "right": "824f6a238a9e470d0507bdd78dfb89aa06fb997665669abff593eaf85832682b" + "right": "23f2969456374b1855d6b1064e25e09ca9b0eb64692f753bf2849b38ed5da92d" }, { - "right": "11f2130a4531cd0d184c39adf4d79d6fcb527c7fdf8224b1a6aeac57fdf86fad" + "right": "08723fc5b89118586a6bd56d30dc88727c5860d0c15cc2a42593a6e1e9228bab" }, { - "left": "186106dbcc2526d6c1a97d23c323e4255a7ff70ba3526abf60f66849f0300ec0" + "left": "ca2cb49280c6deeeb65cf388a02d80db6911ee682ed3f899bb57d33e20461a42" }, { - "right": "01afbce03241ff3666c6d88a2f176165f56af679177586d53819a15efad29760" + "right": "6c8a71144dac626127ab2673ecab068efd10113fd2394a110883f74de2fb1c84" } ] }, { "identifier": "claim-cvc:Document.placeOfBirth-v1", - "value": "urn:placeOfBirth:f5a93b9e3716946d0287dcbbb9425eb10d5c3d91bbe6433e53106271dce8c359:mPX5qQBMlU|", + "value": "urn:placeOfBirth:cc8e642a8dfbbc18c11ad00aeb40bf652b2534dde240a8162133bbd2585e2e66:r4hIHbyLru|", "claimPath": "document.placeOfBirth", - "targetHash": "eca8173c15059da48ff863e6391a958af428f6ecc935222b52807adadb4d7e98", + "targetHash": "d46e5fc5a070cb0485c3cd154a875199b8beb2b703b134fdaef11517636c9376", "node": [ { - "right": "90bad2d86838bd2253bac063313007397c4b5b8538f9c49467419cc491d38315" + "right": "0d94d632aeb11fa221debf95f32cecdb502306e63a95c0f88575ac26a49a3d99" }, { - "left": "ae7bff07f5c239bc70d2fd3bbdf7225e641ac047d9d1d326baf917866470f642" + "left": "6ca2d4562868a04e950aaa5fc715d2c13842e8695b27e545aafb8322c7fa58e2" }, { - "right": "11f2130a4531cd0d184c39adf4d79d6fcb527c7fdf8224b1a6aeac57fdf86fad" + "right": "08723fc5b89118586a6bd56d30dc88727c5860d0c15cc2a42593a6e1e9228bab" }, { - "left": "186106dbcc2526d6c1a97d23c323e4255a7ff70ba3526abf60f66849f0300ec0" + "left": "ca2cb49280c6deeeb65cf388a02d80db6911ee682ed3f899bb57d33e20461a42" }, { - "right": "01afbce03241ff3666c6d88a2f176165f56af679177586d53819a15efad29760" + "right": "6c8a71144dac626127ab2673ecab068efd10113fd2394a110883f74de2fb1c84" } ] }, { - "identifier": "claim-cvc:Document.dateOfBirth-v1", - "value": "urn:dateOfBirth.day:d90296bbf0a86f74bbcb9f9b00217d2436b7596a552402f83f7b3b3b1b539106:23.509202572883346|urn:dateOfBirth.month:c60e2d34d02dec716d3419a941b601800c6c97dd4543a347b8b231966105a831:10.046320849916473|urn:dateOfBirth.year:8f02a483181f1f60c5617b861324142ca5f9ffdecc431852cfd24162e3c96225:1972.4471022760558|", - "claimPath": "document.dateOfBirth", - "targetHash": "90bad2d86838bd2253bac063313007397c4b5b8538f9c49467419cc491d38315", + "identifier": "claim-cvc:Document.properties-v1", + "value": "urn:properties.dateOfExpiry.day:7cb6e57649f5152bb0f8f2f8229617e1e3e74ec68a1b7578e855f9e33e78351e:8|urn:properties.dateOfExpiry.month:dfa54d941d6bef58461c5083ceceb3214fbf040c8987e8bf589d85f098fb0549:1|urn:properties.dateOfExpiry.year:572210047579a284fd92a2b1bad68904441030538be95e6915eac1b663422c28:1957|urn:properties.dateOfIssue.day:4e3ffc41dbfd5a2b834741ca55d1117bab4a9736e610cbde531f362dae05f888:18|urn:properties.dateOfIssue.month:74aa4b2302d363e83bda47fcc6d95d0696a67879f0802efeb628719f9f5c24be:6|urn:properties.dateOfIssue.year:92d9947b713b49d23174fd786b8b8a8c169b302a30500c4e1fbb57c1c327550c:1928|", + "claimPath": "document.properties", + "targetHash": "0d94d632aeb11fa221debf95f32cecdb502306e63a95c0f88575ac26a49a3d99", + "node": [ + { + "left": "d46e5fc5a070cb0485c3cd154a875199b8beb2b703b134fdaef11517636c9376" + }, + { + "left": "6ca2d4562868a04e950aaa5fc715d2c13842e8695b27e545aafb8322c7fa58e2" + }, + { + "right": "08723fc5b89118586a6bd56d30dc88727c5860d0c15cc2a42593a6e1e9228bab" + }, + { + "left": "ca2cb49280c6deeeb65cf388a02d80db6911ee682ed3f899bb57d33e20461a42" + }, + { + "right": "6c8a71144dac626127ab2673ecab068efd10113fd2394a110883f74de2fb1c84" + } + ] + }, + { + "identifier": "claim-cvc:Document.dateOfIssue-v1", + "value": "urn:dateOfIssue.day:4e3ffc41dbfd5a2b834741ca55d1117bab4a9736e610cbde531f362dae05f888:18|urn:dateOfIssue.month:74aa4b2302d363e83bda47fcc6d95d0696a67879f0802efeb628719f9f5c24be:6|urn:dateOfIssue.year:92d9947b713b49d23174fd786b8b8a8c169b302a30500c4e1fbb57c1c327550c:1928|", + "claimPath": "document.properties.document.dateOfIssue", + "targetHash": "37b34208de17b3645ab99a8ed149eb78b61eb7c939473b8193c1411684d6d3d5", "node": [ { - "left": "eca8173c15059da48ff863e6391a958af428f6ecc935222b52807adadb4d7e98" + "right": "29686a4e7a00cd02956292e08d9838705bc52aae24e18c997dbbbcd508f35020" }, { - "left": "ae7bff07f5c239bc70d2fd3bbdf7225e641ac047d9d1d326baf917866470f642" + "right": "80783154fe55fa4d6bd746bc5a2c7983bbe482d5df5657016d23d251c1b1d6ef" }, { - "right": "11f2130a4531cd0d184c39adf4d79d6fcb527c7fdf8224b1a6aeac57fdf86fad" + "left": "c64d88133d4a4591ee210f5997778841be25a4ae517019e799dbd0e4a0df6d63" }, { - "left": "186106dbcc2526d6c1a97d23c323e4255a7ff70ba3526abf60f66849f0300ec0" + "left": "ca2cb49280c6deeeb65cf388a02d80db6911ee682ed3f899bb57d33e20461a42" }, { - "right": "01afbce03241ff3666c6d88a2f176165f56af679177586d53819a15efad29760" + "right": "6c8a71144dac626127ab2673ecab068efd10113fd2394a110883f74de2fb1c84" + } + ] + }, + { + "identifier": "claim-cvc:Document.dateOfExpiry-v1", + "value": "urn:dateOfExpiry.day:7cb6e57649f5152bb0f8f2f8229617e1e3e74ec68a1b7578e855f9e33e78351e:8|urn:dateOfExpiry.month:dfa54d941d6bef58461c5083ceceb3214fbf040c8987e8bf589d85f098fb0549:1|urn:dateOfExpiry.year:572210047579a284fd92a2b1bad68904441030538be95e6915eac1b663422c28:1957|", + "claimPath": "document.properties.document.dateOfExpiry", + "targetHash": "29686a4e7a00cd02956292e08d9838705bc52aae24e18c997dbbbcd508f35020", + "node": [ + { + "left": "37b34208de17b3645ab99a8ed149eb78b61eb7c939473b8193c1411684d6d3d5" + }, + { + "right": "80783154fe55fa4d6bd746bc5a2c7983bbe482d5df5657016d23d251c1b1d6ef" + }, + { + "left": "c64d88133d4a4591ee210f5997778841be25a4ae517019e799dbd0e4a0df6d63" + }, + { + "left": "ca2cb49280c6deeeb65cf388a02d80db6911ee682ed3f899bb57d33e20461a42" + }, + { + "right": "6c8a71144dac626127ab2673ecab068efd10113fd2394a110883f74de2fb1c84" } ] }, { "identifier": "claim-cvc:Document.address-v1", - "value": "urn:address.city:8ad2e2298eda7623d46256882306bf2eb9f20c043697e6d59fbcca1f7a30a3e2:FM7pcb3F68|urn:address.country:9bdff9437318cbee926fc1f43bf21a66b1054d1ffb7c0af0f26b6d5092617ce5:C6DK4Ad534|urn:address.county:1e2ded862696ab32a69f7ac3419583e3a97c5c3fcc658d7316f954dce5947342:7JUOzujKGo|urn:address.postalCode:949e7cc3190664424a46ad78370e9b88977f3b254b3e6eef05f9e9bfafd09e8b:hTmK78Pkbu|urn:address.state:aca9a888e7249805a906156e903523c3538fb5a54d413f4ab891e4844665a7d6:bpPbF2Z3wS|urn:address.street:d1efdf491876f7728c597aa29db0c5159cc8c6ec7c233aa0a02d8531ce060fdd:vBC4ibu7a3|urn:address.unit:0a8cfa23cf9f9c048b1629cc0607a1b5ab7f5239387007d61a0337b324016424:iAvobg7Lah|", + "value": "urn:address.city:42eb46c6b74133d89421d01b0b682beb394f2de678164d8314fc002636ecae36:WU9GJ0R9be|urn:address.country:208a29654f734307a77d7dea335385cfb82fa0a49d128115027074284d0f233d:IH4aiXuEoo|urn:address.county:90a9a7e18c81c7e251b4e69bac4cd718cdd8eecd90f0fd4fc652410949e65bca:akKjaQehNK|urn:address.postalCode:c92bee43c833563d5753941837c3c9d5f65bc0222e76405183f8292593f41f95:ci1DMuz16W|urn:address.state:97a6c8e162473615d3c6904e3b4d8154f69f203c35155ddc5db12301689e4afa:IQB7oLhSnS|urn:address.street:40db6cb8dbb8b1d8d0d4c2387d9b87abc377f9544e312697b95f787a17cc4574:52Os5zJgkh|urn:address.unit:f2dde7327e5f7ddcb130acbcc4cc98b787eef9a7f3ef90445ad2394814611651:3dGDkhEHxW|", "claimPath": "document.address", - "targetHash": "02c108d38408c8c07f9d31719e251c12a58dae108ab0d6d78fc40e993d721b1b", + "targetHash": "03b99c75c54133c84ae86175c21b21f9f9d9853555cbc6fbe5f03cc3c2710e33", "node": [ { - "right": "b519dbefb94f5495026a4b9c5a696d7b22d81cbd75542c9e45e84664a3d9eca0" + "right": "d320417a04c59d4172fff95cb8a16801c970f49925d1ed3cabafb0bd83dcb0f3" }, { - "right": "f07fd97c468aa0250977aaa6ac123db52a0815eef982a609d65dac9aadb29b3b" + "left": "649a7c3f28600089ef8c0211f396cecc0acbec03df43e5e48553a2a4794d4a15" }, { - "left": "15ddb91d93316ccad1a0b9a1462e1956120b7d2425fe3e5563f3423e0be5e119" + "left": "c64d88133d4a4591ee210f5997778841be25a4ae517019e799dbd0e4a0df6d63" }, { - "left": "186106dbcc2526d6c1a97d23c323e4255a7ff70ba3526abf60f66849f0300ec0" + "left": "ca2cb49280c6deeeb65cf388a02d80db6911ee682ed3f899bb57d33e20461a42" }, { - "right": "01afbce03241ff3666c6d88a2f176165f56af679177586d53819a15efad29760" + "right": "6c8a71144dac626127ab2673ecab068efd10113fd2394a110883f74de2fb1c84" } ] }, { - "identifier": "claim-cvc:Address.county-v1", - "value": "urn:country:9bdff9437318cbee926fc1f43bf21a66b1054d1ffb7c0af0f26b6d5092617ce5:C6DK4Ad534|", + "identifier": "claim-cvc:Address.country-v1", + "value": "urn:country:208a29654f734307a77d7dea335385cfb82fa0a49d128115027074284d0f233d:IH4aiXuEoo|", "claimPath": "document.address.country", - "targetHash": "b519dbefb94f5495026a4b9c5a696d7b22d81cbd75542c9e45e84664a3d9eca0", + "targetHash": "d320417a04c59d4172fff95cb8a16801c970f49925d1ed3cabafb0bd83dcb0f3", "node": [ { - "left": "02c108d38408c8c07f9d31719e251c12a58dae108ab0d6d78fc40e993d721b1b" + "left": "03b99c75c54133c84ae86175c21b21f9f9d9853555cbc6fbe5f03cc3c2710e33" }, { - "right": "f07fd97c468aa0250977aaa6ac123db52a0815eef982a609d65dac9aadb29b3b" + "left": "649a7c3f28600089ef8c0211f396cecc0acbec03df43e5e48553a2a4794d4a15" }, { - "left": "15ddb91d93316ccad1a0b9a1462e1956120b7d2425fe3e5563f3423e0be5e119" + "left": "c64d88133d4a4591ee210f5997778841be25a4ae517019e799dbd0e4a0df6d63" }, { - "left": "186106dbcc2526d6c1a97d23c323e4255a7ff70ba3526abf60f66849f0300ec0" + "left": "ca2cb49280c6deeeb65cf388a02d80db6911ee682ed3f899bb57d33e20461a42" }, { - "right": "01afbce03241ff3666c6d88a2f176165f56af679177586d53819a15efad29760" + "right": "6c8a71144dac626127ab2673ecab068efd10113fd2394a110883f74de2fb1c84" } ] }, { "identifier": "claim-cvc:Address.county-v1", - "value": "urn:county:1e2ded862696ab32a69f7ac3419583e3a97c5c3fcc658d7316f954dce5947342:7JUOzujKGo|", + "value": "urn:county:90a9a7e18c81c7e251b4e69bac4cd718cdd8eecd90f0fd4fc652410949e65bca:akKjaQehNK|", "claimPath": "document.address.county", - "targetHash": "236e2c5e658b3d6cdc38fd1a15cb05175ea43c1ce2f45244b58bcfd8875195d2", + "targetHash": "5d4b1970105cacc5d7f76cbc0cbc972ebd95b239ece970226874c91bc05fa0f0", "node": [ { - "right": "594d40f665ffa1c789b0c5130decccd92c740f9969d354c05d88f6d3c91f5e6b" + "right": "46b4aca042efca707434f1c38f08afc01db2e1e1933fb99cbbfc1728e3c166f8" }, { - "left": "670abb0403a5d619c288942bfff997dbf0156e355e1e2bb5bff14f9403b96470" + "right": "e65890a5c6e15446b5c29f246619594b504a065c76cccd8ebf7d0c3a4c54535a" }, { - "left": "15ddb91d93316ccad1a0b9a1462e1956120b7d2425fe3e5563f3423e0be5e119" + "right": "88b154f8884ab98e49eb1c43097f76e19566bc9d0c170cf8f5174bd3a3cd37ab" }, { - "left": "186106dbcc2526d6c1a97d23c323e4255a7ff70ba3526abf60f66849f0300ec0" + "right": "31bfd2295c16743e6b3fc017ce03514c467a3de4213020674b2ab35d4e810b4e" }, { - "right": "01afbce03241ff3666c6d88a2f176165f56af679177586d53819a15efad29760" + "left": "f39c00275a0d549cb70caf8c9087132209c0187020f1fb7d3d09b7e2d7d6de0a" } ] }, { "identifier": "claim-cvc:Address.state-v1", - "value": "urn:state:aca9a888e7249805a906156e903523c3538fb5a54d413f4ab891e4844665a7d6:bpPbF2Z3wS|", + "value": "urn:state:97a6c8e162473615d3c6904e3b4d8154f69f203c35155ddc5db12301689e4afa:IQB7oLhSnS|", "claimPath": "document.address.state", - "targetHash": "594d40f665ffa1c789b0c5130decccd92c740f9969d354c05d88f6d3c91f5e6b", + "targetHash": "46b4aca042efca707434f1c38f08afc01db2e1e1933fb99cbbfc1728e3c166f8", "node": [ { - "left": "236e2c5e658b3d6cdc38fd1a15cb05175ea43c1ce2f45244b58bcfd8875195d2" + "left": "5d4b1970105cacc5d7f76cbc0cbc972ebd95b239ece970226874c91bc05fa0f0" }, { - "left": "670abb0403a5d619c288942bfff997dbf0156e355e1e2bb5bff14f9403b96470" + "right": "e65890a5c6e15446b5c29f246619594b504a065c76cccd8ebf7d0c3a4c54535a" }, { - "left": "15ddb91d93316ccad1a0b9a1462e1956120b7d2425fe3e5563f3423e0be5e119" + "right": "88b154f8884ab98e49eb1c43097f76e19566bc9d0c170cf8f5174bd3a3cd37ab" }, { - "left": "186106dbcc2526d6c1a97d23c323e4255a7ff70ba3526abf60f66849f0300ec0" + "right": "31bfd2295c16743e6b3fc017ce03514c467a3de4213020674b2ab35d4e810b4e" }, { - "right": "01afbce03241ff3666c6d88a2f176165f56af679177586d53819a15efad29760" + "left": "f39c00275a0d549cb70caf8c9087132209c0187020f1fb7d3d09b7e2d7d6de0a" } ] }, { - "identifier": "claim-cvc:Address.city-v1", - "value": "urn:city:8ad2e2298eda7623d46256882306bf2eb9f20c043697e6d59fbcca1f7a30a3e2:FM7pcb3F68|", - "claimPath": "document.address.city", - "targetHash": "76fdb32e4b242f524950bc5ffc4702276da3abd9c953fdce37b24d471508ee23", + "identifier": "claim-cvc:Address.street-v1", + "value": "urn:street:40db6cb8dbb8b1d8d0d4c2387d9b87abc377f9544e312697b95f787a17cc4574:52Os5zJgkh|", + "claimPath": "document.address.street", + "targetHash": "602c0157688d57c1df743ad05696bb15f3111ca0919c63788414336906c0c56f", "node": [ { - "right": "23d512efa9f798ce35659b2efc0eb73786088105c597620b63d3b1c4c9538e63" + "right": "ef77e5827cd8935b3f47f91ea98f9f9eef7eeafe4c5ea0ff7dfb7e7d54ab2ac6" }, { - "right": "d260143c4ece0ec99bb74a96d31a97132431c7f8204754a7d1472e64dc3a739d" + "left": "8ae9e5acb627e56ede792e07e553eb06164eb0adcb6e1f36b2166dded36e22e9" }, { - "right": "ab9b58efd1151192a3c439fc7a62050bdb5d40f1c25a49cdd035e386d6ed8720" + "right": "88b154f8884ab98e49eb1c43097f76e19566bc9d0c170cf8f5174bd3a3cd37ab" }, { - "right": "adb99e21f13841760cac2b91295c657586cd963c6da0e59d6d58c45f3fa77b8b" + "right": "31bfd2295c16743e6b3fc017ce03514c467a3de4213020674b2ab35d4e810b4e" }, { - "left": "2e93001e85bc4f4cf1f554f4e982a1677d731854aa7332dc9af11b742e2479ca" + "left": "f39c00275a0d549cb70caf8c9087132209c0187020f1fb7d3d09b7e2d7d6de0a" } ] }, { - "identifier": "claim-cvc:Address.postalCode-v1", - "value": "urn:postalCode:949e7cc3190664424a46ad78370e9b88977f3b254b3e6eef05f9e9bfafd09e8b:hTmK78Pkbu|", - "claimPath": "document.address.postalCode", - "targetHash": "23d512efa9f798ce35659b2efc0eb73786088105c597620b63d3b1c4c9538e63", + "identifier": "claim-cvc:Address.unit-v1", + "value": "urn:unit:f2dde7327e5f7ddcb130acbcc4cc98b787eef9a7f3ef90445ad2394814611651:3dGDkhEHxW|", + "claimPath": "document.address.unit", + "targetHash": "ef77e5827cd8935b3f47f91ea98f9f9eef7eeafe4c5ea0ff7dfb7e7d54ab2ac6", "node": [ { - "left": "76fdb32e4b242f524950bc5ffc4702276da3abd9c953fdce37b24d471508ee23" + "left": "602c0157688d57c1df743ad05696bb15f3111ca0919c63788414336906c0c56f" }, { - "right": "d260143c4ece0ec99bb74a96d31a97132431c7f8204754a7d1472e64dc3a739d" + "left": "8ae9e5acb627e56ede792e07e553eb06164eb0adcb6e1f36b2166dded36e22e9" }, { - "right": "ab9b58efd1151192a3c439fc7a62050bdb5d40f1c25a49cdd035e386d6ed8720" + "right": "88b154f8884ab98e49eb1c43097f76e19566bc9d0c170cf8f5174bd3a3cd37ab" }, { - "right": "adb99e21f13841760cac2b91295c657586cd963c6da0e59d6d58c45f3fa77b8b" + "right": "31bfd2295c16743e6b3fc017ce03514c467a3de4213020674b2ab35d4e810b4e" }, { - "left": "2e93001e85bc4f4cf1f554f4e982a1677d731854aa7332dc9af11b742e2479ca" + "left": "f39c00275a0d549cb70caf8c9087132209c0187020f1fb7d3d09b7e2d7d6de0a" } ] }, { - "identifier": "claim-cvc:Document.properties-v1", - "value": "urn:properties.dateOfExpiry.day:36e953f09aa82006bf6d440f9254e1624c4671ae2f2239dc159185095cf7ede1:9.14320914518909|urn:properties.dateOfExpiry.month:d7613bf86aab2145bc437be871499497773257670b53059992ccbb1abf534cf3:0.7636856996725372|urn:properties.dateOfExpiry.year:bc2415865fb397d1c7ab321b1289d7b366faab01cce1332c5c1ae71eab5ffc6d:1956.942523652118|urn:properties.dateOfIssue.day:4e1cbadfa735adbe2ab85bc1543020a4cd25dd25834abcf41a66bb52337448e4:11.923255701048788|urn:properties.dateOfIssue.month:a35de497883832af0b19a2c0475d1269143611167c2d5f1054005190d2eb58fa:12.215323364578072|urn:properties.dateOfIssue.year:32084189d4aee0cabda3d31840b3b4b48024912c491d8bd82acf7019ea9dd9de:1982.8838709090696|", - "claimPath": "document.properties", - "targetHash": "998c8c996d42d7ae04447b110274a68bdf1c234a0b0f6bc6d6bff3ff4c43f4c6", + "identifier": "claim-cvc:Address.city-v1", + "value": "urn:city:42eb46c6b74133d89421d01b0b682beb394f2de678164d8314fc002636ecae36:WU9GJ0R9be|", + "claimPath": "document.address.city", + "targetHash": "f597e9371e7fb696f66ade83c163cb2a82b381397c2367b6afbeeffed7bfdc52", "node": [ { - "right": "e980447ea9ce8468a0e5d820604cccf73a55cd942e2991a1b0156f384e2062d1" + "right": "022596826fd6090d2185ce74f8dc342c62b005455c90a45970459de81708ac25" }, { - "left": "78fdc065d5687343ca163ec8e6615ad731a192aa249ebd8bf442b221e6758d0f" + "right": "e225f62c9b4acb615e253ef750e7dc724c7232877270f94817c5b3e7c6dd7ce3" }, { - "right": "ab9b58efd1151192a3c439fc7a62050bdb5d40f1c25a49cdd035e386d6ed8720" + "left": "526e3d4a1ff0a4a7332302c46fff3bf09ccf8a4b9daa3366da847cbcf2bcd046" }, { - "right": "adb99e21f13841760cac2b91295c657586cd963c6da0e59d6d58c45f3fa77b8b" + "right": "31bfd2295c16743e6b3fc017ce03514c467a3de4213020674b2ab35d4e810b4e" }, { - "left": "2e93001e85bc4f4cf1f554f4e982a1677d731854aa7332dc9af11b742e2479ca" + "left": "f39c00275a0d549cb70caf8c9087132209c0187020f1fb7d3d09b7e2d7d6de0a" } ] }, { - "identifier": "cvc:Document:dateOfIssue", - "value": "urn:dateOfIssue.day:4e1cbadfa735adbe2ab85bc1543020a4cd25dd25834abcf41a66bb52337448e4:11.923255701048788|urn:dateOfIssue.month:a35de497883832af0b19a2c0475d1269143611167c2d5f1054005190d2eb58fa:12.215323364578072|urn:dateOfIssue.year:32084189d4aee0cabda3d31840b3b4b48024912c491d8bd82acf7019ea9dd9de:1982.8838709090696|", - "claimPath": "document.dateOfIssue", - "targetHash": "e980447ea9ce8468a0e5d820604cccf73a55cd942e2991a1b0156f384e2062d1", + "identifier": "claim-cvc:Address.postalCode-v1", + "value": "urn:postalCode:c92bee43c833563d5753941837c3c9d5f65bc0222e76405183f8292593f41f95:ci1DMuz16W|", + "claimPath": "document.address.postalCode", + "targetHash": "022596826fd6090d2185ce74f8dc342c62b005455c90a45970459de81708ac25", "node": [ { - "left": "998c8c996d42d7ae04447b110274a68bdf1c234a0b0f6bc6d6bff3ff4c43f4c6" + "left": "f597e9371e7fb696f66ade83c163cb2a82b381397c2367b6afbeeffed7bfdc52" }, { - "left": "78fdc065d5687343ca163ec8e6615ad731a192aa249ebd8bf442b221e6758d0f" + "right": "e225f62c9b4acb615e253ef750e7dc724c7232877270f94817c5b3e7c6dd7ce3" }, { - "right": "ab9b58efd1151192a3c439fc7a62050bdb5d40f1c25a49cdd035e386d6ed8720" + "left": "526e3d4a1ff0a4a7332302c46fff3bf09ccf8a4b9daa3366da847cbcf2bcd046" }, { - "right": "adb99e21f13841760cac2b91295c657586cd963c6da0e59d6d58c45f3fa77b8b" + "right": "31bfd2295c16743e6b3fc017ce03514c467a3de4213020674b2ab35d4e810b4e" }, { - "left": "2e93001e85bc4f4cf1f554f4e982a1677d731854aa7332dc9af11b742e2479ca" + "left": "f39c00275a0d549cb70caf8c9087132209c0187020f1fb7d3d09b7e2d7d6de0a" } ] }, { - "identifier": "cvc:Document:dateOfExpiry", - "value": "urn:dateOfExpiry.day:36e953f09aa82006bf6d440f9254e1624c4671ae2f2239dc159185095cf7ede1:9.14320914518909|urn:dateOfExpiry.month:d7613bf86aab2145bc437be871499497773257670b53059992ccbb1abf534cf3:0.7636856996725372|urn:dateOfExpiry.year:bc2415865fb397d1c7ab321b1289d7b366faab01cce1332c5c1ae71eab5ffc6d:1956.942523652118|", - "claimPath": "document.dateOfExpiry", - "targetHash": "e23d070653b11f110e302ef1150c4c876c8a10c9f1a307a550e60d3edc5c3c52", + "identifier": "cvc:Document:image", + "value": "urn:image.back:987bb3823d07d182a77097ac2bde747078d9e57ad8866fb65f8d20bd429405c4:uPrJKO3cbq|urn:image.backMD5:028c0a90b9a3f584ead3a3719ab556e887df39dd8c82a0a9419af15a230c9322:0yr9zkdApo|urn:image.front:b13daad4b811194f95c7403983373f60f5b59106c558ba5cb3c53ab4304b49b8:9NMgeFErNd|urn:image.frontMD5:a71d1b1e3dbb6f79c19808dcc745bd9701baf26d82733e3bb892718d928ba207:zgOvmWXruS|", + "claimPath": "document.image", + "targetHash": "4564e23cec35fde9217cd27851f5049079232f97e6c1696927c26c79620f795c", "node": [ { - "right": "c1f238e6e7180afac91666193ed9c88baeeebc9ad90c2cd5cb8dc60ee62052d2" + "right": "819cbe60694272e523d0165231ceac312e60584dba60e1afdd710b47f9deed93" }, { - "right": "5fdbd5c479e928d0cd9a5019400547ed4c7d5405a34a1cb3c8ed4f691fcc6f2f" + "left": "52bd0c453305b9313c840f2d6700385351bf3f8313d590fde2094786550d1d07" }, { - "left": "108571852d0d4617446414764ed00ff1cafbcc56b54c6c544e0730680bfac47c" + "left": "526e3d4a1ff0a4a7332302c46fff3bf09ccf8a4b9daa3366da847cbcf2bcd046" }, { - "right": "adb99e21f13841760cac2b91295c657586cd963c6da0e59d6d58c45f3fa77b8b" + "right": "31bfd2295c16743e6b3fc017ce03514c467a3de4213020674b2ab35d4e810b4e" }, { - "left": "2e93001e85bc4f4cf1f554f4e982a1677d731854aa7332dc9af11b742e2479ca" + "left": "f39c00275a0d549cb70caf8c9087132209c0187020f1fb7d3d09b7e2d7d6de0a" } ] }, { - "identifier": "cvc:Document:image", - "value": "urn:image.back:242e0799669d9b049b7ca1c2b07abcfb7c6d452be206c6ebe25d7112a8319600:Ff5sn0LlBV|urn:image.backMD5:ca3de0ef11f29baa78ac0097c2412d7e6311ff9c635085873f6c8eb438e3ca6f:MAHR7iPXPI|urn:image.front:0725d42eff988cbbadd1da2b995323d15d04a859b965f9462fbf369deccbd779:DemvYiM1DD|urn:image.frontMD5:af47fe13c89d49b7f8e01c9a21e1f1fe4a54214e2be12c1d4dd580c0dec8ef84:Txh0ap6D8u|", - "claimPath": "document.image", - "targetHash": "c1f238e6e7180afac91666193ed9c88baeeebc9ad90c2cd5cb8dc60ee62052d2", + "identifier": "claim-cvc:Document.dateOfBirth-v1", + "value": "urn:dateOfBirth.day:ee0bc035a2de6b1dc24637c8ec9d5c6bf518f86fcafc85ab54eb6faf17b850cd:23|urn:dateOfBirth.month:f164278f5e7d054a40cbd898c30c28db8e4c9f5fd21b1c5048b14a208a3094f4:2|urn:dateOfBirth.year:6502ba83b7f1782593781c1d88521c52c48b83d996347d3fdb564a383cd67a24:1973|", + "claimPath": "document.dateOfBirth", + "targetHash": "819cbe60694272e523d0165231ceac312e60584dba60e1afdd710b47f9deed93", "node": [ { - "left": "e23d070653b11f110e302ef1150c4c876c8a10c9f1a307a550e60d3edc5c3c52" + "left": "4564e23cec35fde9217cd27851f5049079232f97e6c1696927c26c79620f795c" }, { - "right": "5fdbd5c479e928d0cd9a5019400547ed4c7d5405a34a1cb3c8ed4f691fcc6f2f" + "left": "52bd0c453305b9313c840f2d6700385351bf3f8313d590fde2094786550d1d07" }, { - "left": "108571852d0d4617446414764ed00ff1cafbcc56b54c6c544e0730680bfac47c" + "left": "526e3d4a1ff0a4a7332302c46fff3bf09ccf8a4b9daa3366da847cbcf2bcd046" }, { - "right": "adb99e21f13841760cac2b91295c657586cd963c6da0e59d6d58c45f3fa77b8b" + "right": "31bfd2295c16743e6b3fc017ce03514c467a3de4213020674b2ab35d4e810b4e" }, { - "left": "2e93001e85bc4f4cf1f554f4e982a1677d731854aa7332dc9af11b742e2479ca" + "left": "f39c00275a0d549cb70caf8c9087132209c0187020f1fb7d3d09b7e2d7d6de0a" } ] }, { "identifier": "cvc:Meta:issuer", - "value": "urn:issuer:8cc14917546619fa14745a9f7614312ddbe460c2a82062c6cc810f5298b6f24f:did:ethr:0xaf9482c84De4e2a961B98176C9f295F9b6008BfD|", + "value": "urn:issuer:40ded62eda5d21790b73c7b4651f754fab39287f6002d6939c5dc75f6b40c00f:|", "claimPath": "meta.issuer", - "targetHash": "261ac809931f9f0b44cf1b883dd4e040448e988c7490affab4fbfc5860f80fda", + "targetHash": "a3d3d1fc42a3fd2b43b8c498ed90a98737a92f4bc2630c5798d8040f0df8589c", "node": [ { - "right": "eada9867cf3399284e9ee977a332d3769ed6856c2fcd8d358e00347d6e3cb187" - }, - { - "left": "24da55912d6856030d60ead985526e3df47a8fe8494caed04eff97ac0d266f2c" + "right": "267bd001226e309bb85880ef7b72ece18311ca29c7ceae26718f0e3f18dd1bda" }, { - "left": "108571852d0d4617446414764ed00ff1cafbcc56b54c6c544e0730680bfac47c" + "right": "460873a03ed4a758075661d9810bc80ddce62da2bedfdc92da6a7baa0cbea50f" }, { - "right": "adb99e21f13841760cac2b91295c657586cd963c6da0e59d6d58c45f3fa77b8b" + "left": "5898ba1529d7573abb0640dd831371e5da104f7dfc8025d5a1a490ff33a09a03" }, { - "left": "2e93001e85bc4f4cf1f554f4e982a1677d731854aa7332dc9af11b742e2479ca" + "left": "f39c00275a0d549cb70caf8c9087132209c0187020f1fb7d3d09b7e2d7d6de0a" } ] }, { "identifier": "cvc:Meta:issuanceDate", - "value": "urn:issuanceDate:26d817a47ca9e083a6f70242e4b107af5edb56e287ce4d7539eb042380d73812:2018-11-20T20:41:59.861Z|", + "value": "urn:issuanceDate:3716f25a28dcca289dc0b6ba29aa47547ded9acad5d11cfeadec09ff2f0eeef3:2021-12-15T08:05:00.559Z|", "claimPath": "meta.issuanceDate", - "targetHash": "eada9867cf3399284e9ee977a332d3769ed6856c2fcd8d358e00347d6e3cb187", + "targetHash": "267bd001226e309bb85880ef7b72ece18311ca29c7ceae26718f0e3f18dd1bda", "node": [ { - "left": "261ac809931f9f0b44cf1b883dd4e040448e988c7490affab4fbfc5860f80fda" + "left": "a3d3d1fc42a3fd2b43b8c498ed90a98737a92f4bc2630c5798d8040f0df8589c" }, { - "left": "24da55912d6856030d60ead985526e3df47a8fe8494caed04eff97ac0d266f2c" + "right": "460873a03ed4a758075661d9810bc80ddce62da2bedfdc92da6a7baa0cbea50f" }, { - "left": "108571852d0d4617446414764ed00ff1cafbcc56b54c6c544e0730680bfac47c" + "left": "5898ba1529d7573abb0640dd831371e5da104f7dfc8025d5a1a490ff33a09a03" }, { - "right": "adb99e21f13841760cac2b91295c657586cd963c6da0e59d6d58c45f3fa77b8b" - }, - { - "left": "2e93001e85bc4f4cf1f554f4e982a1677d731854aa7332dc9af11b742e2479ca" + "left": "f39c00275a0d549cb70caf8c9087132209c0187020f1fb7d3d09b7e2d7d6de0a" } ] }, { "identifier": "cvc:Meta:expirationDate", - "value": "urn:expirationDate:a36229be9643b9db709a130847d00c74f91ff4befeca99cdd06d0558e11e2e1d:null|", + "value": "urn:expirationDate:08677420bde3f19a437c139d08d142452449c204326d4ea535efd54d372a2cda:null|", "claimPath": "meta.expirationDate", - "targetHash": "1b703aa7a808e0ace530b5e533643341baa2136418170026701cdce64eeaf471", + "targetHash": "56c3f6d84e983fb2db48f86b9feafc95d583cfcf3a5f83b1f588dd479f8c5ce2", "node": [ { - "right": "c9f8cb0aeca578e2ec2526638ee140882c1cf768f6d8dcb63529638480bd8885" + "right": "666eaf8fe8294261099a00192fce5c9a0b70b2d9a6fd47086d694c5499854331" + }, + { + "left": "92fd5f45a2229bc952639888be6b1e6e3085d9d2ba3acc092e232ba59fd3e95e" }, { - "left": "de12d95d617dec249e86ce88e15016f3fe65fa4d103df8f9e27d2b0f89989256" + "left": "5898ba1529d7573abb0640dd831371e5da104f7dfc8025d5a1a490ff33a09a03" }, { - "left": "2e93001e85bc4f4cf1f554f4e982a1677d731854aa7332dc9af11b742e2479ca" + "left": "f39c00275a0d549cb70caf8c9087132209c0187020f1fb7d3d09b7e2d7d6de0a" } ] } - ] + ], + "granted": null } } diff --git a/__test__/creds/fixtures/IdDocumentWithoutNonRequiredClaims.json b/__test__/creds/fixtures/IdDocumentWithoutNonRequiredClaims.json index 0d900b17..d1b5d987 100644 --- a/__test__/creds/fixtures/IdDocumentWithoutNonRequiredClaims.json +++ b/__test__/creds/fixtures/IdDocumentWithoutNonRequiredClaims.json @@ -1,487 +1,311 @@ { - "id": "0b41d088-03cb-4cce-b5c8-908fb6207cac", + "id": "0a1e472c-1042-4f29-94b8-cca4cadce1ce", "issuer": "", - "issuanceDate": "2019-06-18T18:40:43.324Z", - "identifier": "credential-cvc:IdDocument-v1", + "issuanceDate": "2021-12-15T08:10:39.602Z", + "identifier": "credential-cvc:GenericDocumentId-v3", "expirationDate": null, - "version": "1", "type": [ - "Credential", - "credential-cvc:IdDocument-v1" + "VerifiableCredential", + "IdentityCredential" ], - "claim": { + "transient": false, + "credentialSubject": { + "id": "did:sol:J2vss1hB3kgEfQMSSdvvjwRm3JdyFWp7S7dbX5mudS4V", "document": { - "type": "Passport", - "number": "FP12345", + "type": "passport", + "number": "3bj1LUg9yG", "name": { - "familyNames": "e8qak1", + "familyNames": "4h8sLtEfav", "givenNames": "e8qhs4Iak1", - "otherNames": "qhs4I" + "otherNames": "bDTn4stMpX" }, - "gender": "M", - "issueCountry": "Brazil", - "placeOfBirth": "Belo Horizonte", - "dateOfBirth": { - "day": 20, - "month": 3, - "year": 1978 - }, - "dateOfExpiry": { - "day": 12, - "month": 2, - "year": 2025 - }, - "nationality": "Brazilian", - "evidences": { - "idDocumentBack": { - "algorithm": "sha256", - "data": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" - }, - "idDocumentFront": { - "algorithm": "sha256", - "data": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" - }, - "selfie": { - "algorithm": "sha256", - "data": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" - } - } + "gender": "jFtCBFceQI", + "issueCountry": "p4dNUeAKtI", + "placeOfBirth": "r4hIHbyLru" } }, "proof": { "type": "CvcMerkleProof2018", - "merkleRoot": "287caa502816149f9787c6ab77d7161c45045b6e06659cf6ea94575d7ba3ae2a", + "merkleRoot": "10ed22ccb1edcf4651c9a7fb428438ad1978c107de007917c7ce1d9970d00e0c", "anchor": "TBD (Civic Blockchain Attestation)", "leaves": [ { "identifier": "claim-cvc:Document.type-v1", - "value": "urn:type:e2e862de517ce17d552f985b44c801d56b203d53a3da611b1d13e6a860f96f4d:Passport|", + "value": "urn:type:056da3a66a1743ecd0d5c8b57ecd2a1976e3a295320b163c7c844c246f38e4e7:passport|", "claimPath": "document.type", - "targetHash": "7f3038b53480db16f959050ae61021933460822855204bbe9a4a1f6e8a3d0116", + "targetHash": "16f4a85b190cfcae259643c4c3598422b7871af8257199f84bfd86a0751112f5", "node": [ { - "right": "30ac51aa0955500498a1b0b4771c7d762d51ba325d71f33d991f9dd9d2761560" + "right": "129533160707a1c995d18ac9ba13ff11edf08ceab38d049b61fd02a531833baf" }, { - "right": "bc79b4b362ba3df5631ab6abf95a9b61cc03eb287c3ebeb8284a61c030d6bbd0" + "right": "14addf4688bbcc103c4da4d963cb0fbd1abf5784d546c6df44abbb313674547d" }, { - "right": "8960a6b8304488e88f5c9a94d9eefb3a204038f68a65835d336f66eb671193a3" + "right": "60d7fd1dc22cc12de2c4de25594172fdfb39a68eaebf97a29b00bad8da8d29b2" }, { - "right": "52cfc99632cdacba9c14728c7e90f25aa7109ed98b6b5446cf049b4d861a428b" + "right": "2f167eb869455dc69a96598541cd0a552f44a608a3e9aa02cf3817541c0627bc" }, { - "right": "52e2e64063c533f9419667ced3c3a79582f9e560b9de8bd52cb5c6cd0e0f5e48" + "right": "4fe1568a21766bf778d869b69e2af55ad77d3d65b6ed2617ec716793ea1fec0e" } ] }, { "identifier": "claim-cvc:Document.number-v1", - "value": "urn:number:5f9e5213d98a47958f0ca35ce61b719f60be3c28e6470a608bcafd6425cb26db:FP12345|", + "value": "urn:number:adffa65ee9f96d895ed9edb532cf59e2b0d2601d54905dbb6bf20b3a80a4b184:3bj1LUg9yG|", "claimPath": "document.number", - "targetHash": "30ac51aa0955500498a1b0b4771c7d762d51ba325d71f33d991f9dd9d2761560", + "targetHash": "129533160707a1c995d18ac9ba13ff11edf08ceab38d049b61fd02a531833baf", "node": [ { - "left": "7f3038b53480db16f959050ae61021933460822855204bbe9a4a1f6e8a3d0116" + "left": "16f4a85b190cfcae259643c4c3598422b7871af8257199f84bfd86a0751112f5" }, { - "right": "bc79b4b362ba3df5631ab6abf95a9b61cc03eb287c3ebeb8284a61c030d6bbd0" + "right": "14addf4688bbcc103c4da4d963cb0fbd1abf5784d546c6df44abbb313674547d" }, { - "right": "8960a6b8304488e88f5c9a94d9eefb3a204038f68a65835d336f66eb671193a3" + "right": "60d7fd1dc22cc12de2c4de25594172fdfb39a68eaebf97a29b00bad8da8d29b2" }, { - "right": "52cfc99632cdacba9c14728c7e90f25aa7109ed98b6b5446cf049b4d861a428b" + "right": "2f167eb869455dc69a96598541cd0a552f44a608a3e9aa02cf3817541c0627bc" }, { - "right": "52e2e64063c533f9419667ced3c3a79582f9e560b9de8bd52cb5c6cd0e0f5e48" + "right": "4fe1568a21766bf778d869b69e2af55ad77d3d65b6ed2617ec716793ea1fec0e" } ] }, { "identifier": "claim-cvc:Document.name-v1", - "value": "urn:name.familyNames:27b5254a5a0da53721c8a19940d43b7f23ee53355339b68876ca4f026c206f67:e8qak1|urn:name.givenNames:ea26343fd3bb2ac7b38978b8a3ed979a66fdb4e51cf57c8b39ec20bb16a7a7f1:e8qhs4Iak1|urn:name.otherNames:9c0bf86efabbd942565e66ff5549a1e69316f220e5b11b74b2382efa7ef619e4:qhs4I|", + "value": "urn:name.familyNames:788258053883fe5bdab70366a4578d913e4d222702ff63341661b2c02c765b26:4h8sLtEfav|urn:name.givenNames:b490e0627ee8ffdcfcd2c18b66bedaaf5745ca6c1ec6b7b17f8391b0c0ae22ee:e8qhs4Iak1|urn:name.otherNames:ff5498f9ec9064c814e9138a1595c9219a24140c242d7a7e5f7695b9d8a6898c:bDTn4stMpX|", "claimPath": "document.name", - "targetHash": "1685e316cdb23cbd1c6d77fbc832f7860d207a117804cba28ac887e4fc479705", + "targetHash": "e76e03997ac72edc6ddb651352faf5a0e99ee3091370d3e789d9bfcaaca039aa", "node": [ { - "right": "05a43d95727cb6e14b3843e48da8cfd11634c6a4f13c72478acae8656ab8eb61" + "right": "d22e720fe68d76d071f07940177d60865e2e088ed87191cc4767248c77b9dc4d" }, { - "left": "9c62a73848c4e5af6fd138ceeb52ad67937266707ee15be238e949ad915ddcac" + "left": "c28f0fb572fcd3f948905ae892fa28bde90792499f675889f222395cbddc9b06" }, { - "right": "8960a6b8304488e88f5c9a94d9eefb3a204038f68a65835d336f66eb671193a3" + "right": "60d7fd1dc22cc12de2c4de25594172fdfb39a68eaebf97a29b00bad8da8d29b2" }, { - "right": "52cfc99632cdacba9c14728c7e90f25aa7109ed98b6b5446cf049b4d861a428b" + "right": "2f167eb869455dc69a96598541cd0a552f44a608a3e9aa02cf3817541c0627bc" }, { - "right": "52e2e64063c533f9419667ced3c3a79582f9e560b9de8bd52cb5c6cd0e0f5e48" + "right": "4fe1568a21766bf778d869b69e2af55ad77d3d65b6ed2617ec716793ea1fec0e" } ] }, { "identifier": "claim-cvc:Name.givenNames-v1", - "value": "urn:givenNames:ea26343fd3bb2ac7b38978b8a3ed979a66fdb4e51cf57c8b39ec20bb16a7a7f1:e8qhs4Iak1|", + "value": "urn:givenNames:b490e0627ee8ffdcfcd2c18b66bedaaf5745ca6c1ec6b7b17f8391b0c0ae22ee:e8qhs4Iak1|", "claimPath": "document.name.givenNames", - "targetHash": "05a43d95727cb6e14b3843e48da8cfd11634c6a4f13c72478acae8656ab8eb61", + "targetHash": "d22e720fe68d76d071f07940177d60865e2e088ed87191cc4767248c77b9dc4d", "node": [ { - "left": "1685e316cdb23cbd1c6d77fbc832f7860d207a117804cba28ac887e4fc479705" + "left": "e76e03997ac72edc6ddb651352faf5a0e99ee3091370d3e789d9bfcaaca039aa" }, { - "left": "9c62a73848c4e5af6fd138ceeb52ad67937266707ee15be238e949ad915ddcac" + "left": "c28f0fb572fcd3f948905ae892fa28bde90792499f675889f222395cbddc9b06" }, { - "right": "8960a6b8304488e88f5c9a94d9eefb3a204038f68a65835d336f66eb671193a3" + "right": "60d7fd1dc22cc12de2c4de25594172fdfb39a68eaebf97a29b00bad8da8d29b2" }, { - "right": "52cfc99632cdacba9c14728c7e90f25aa7109ed98b6b5446cf049b4d861a428b" + "right": "2f167eb869455dc69a96598541cd0a552f44a608a3e9aa02cf3817541c0627bc" }, { - "right": "52e2e64063c533f9419667ced3c3a79582f9e560b9de8bd52cb5c6cd0e0f5e48" + "right": "4fe1568a21766bf778d869b69e2af55ad77d3d65b6ed2617ec716793ea1fec0e" } ] }, { "identifier": "claim-cvc:Name.familyNames-v1", - "value": "urn:familyNames:27b5254a5a0da53721c8a19940d43b7f23ee53355339b68876ca4f026c206f67:e8qak1|", + "value": "urn:familyNames:788258053883fe5bdab70366a4578d913e4d222702ff63341661b2c02c765b26:4h8sLtEfav|", "claimPath": "document.name.familyNames", - "targetHash": "d6276700ed3070f923b013c051bcd5fb6f73981a873e0b82d6f328dc4d2be4ea", + "targetHash": "733ff82db88a74e168736078171e7e52460645dcd0c49ef91ce96e3fd6af06b9", "node": [ { - "right": "807fd50603579963b55aa117f07bab90d0882b317ea31817f4d0efc9fe74258a" + "right": "e9d3fef9f1641e0407e1b83e19c3882c5ed1abbe761ac66390d8bf77c11ac6ab" }, { - "right": "e82cfc4a020cf3ccaf42dc07bd99b8bfebf213655ce069742cb77110b9de304d" + "right": "968ae6c3a1e728e92fb5fdb76f9dc14349cbca8d2d09810c821c3c434e41fba7" }, { - "left": "d5d87dc0138b470774f7affe3a0efbadfd621bc57c00c14a62ef4caaa9d45987" + "left": "b25ce8528d6a3c795ba53edde485dcbb5cf04ab024c903719e249140370837ce" }, { - "right": "52cfc99632cdacba9c14728c7e90f25aa7109ed98b6b5446cf049b4d861a428b" + "right": "2f167eb869455dc69a96598541cd0a552f44a608a3e9aa02cf3817541c0627bc" }, { - "right": "52e2e64063c533f9419667ced3c3a79582f9e560b9de8bd52cb5c6cd0e0f5e48" + "right": "4fe1568a21766bf778d869b69e2af55ad77d3d65b6ed2617ec716793ea1fec0e" } ] }, { "identifier": "claim-cvc:Name.otherNames-v1", - "value": "urn:otherNames:9c0bf86efabbd942565e66ff5549a1e69316f220e5b11b74b2382efa7ef619e4:qhs4I|", + "value": "urn:otherNames:ff5498f9ec9064c814e9138a1595c9219a24140c242d7a7e5f7695b9d8a6898c:bDTn4stMpX|", "claimPath": "document.name.otherNames", - "targetHash": "807fd50603579963b55aa117f07bab90d0882b317ea31817f4d0efc9fe74258a", + "targetHash": "e9d3fef9f1641e0407e1b83e19c3882c5ed1abbe761ac66390d8bf77c11ac6ab", "node": [ { - "left": "d6276700ed3070f923b013c051bcd5fb6f73981a873e0b82d6f328dc4d2be4ea" + "left": "733ff82db88a74e168736078171e7e52460645dcd0c49ef91ce96e3fd6af06b9" }, { - "right": "e82cfc4a020cf3ccaf42dc07bd99b8bfebf213655ce069742cb77110b9de304d" + "right": "968ae6c3a1e728e92fb5fdb76f9dc14349cbca8d2d09810c821c3c434e41fba7" }, { - "left": "d5d87dc0138b470774f7affe3a0efbadfd621bc57c00c14a62ef4caaa9d45987" + "left": "b25ce8528d6a3c795ba53edde485dcbb5cf04ab024c903719e249140370837ce" }, { - "right": "52cfc99632cdacba9c14728c7e90f25aa7109ed98b6b5446cf049b4d861a428b" + "right": "2f167eb869455dc69a96598541cd0a552f44a608a3e9aa02cf3817541c0627bc" }, { - "right": "52e2e64063c533f9419667ced3c3a79582f9e560b9de8bd52cb5c6cd0e0f5e48" + "right": "4fe1568a21766bf778d869b69e2af55ad77d3d65b6ed2617ec716793ea1fec0e" } ] }, { "identifier": "claim-cvc:Document.gender-v1", - "value": "urn:gender:95f7a5eb0e64cc63d5ebc3cd2316db75541f070e426dca7e2db5690c9b20a17f:M|", + "value": "urn:gender:6b3f1c5e8b3d152c5d259de22212c3d5ad27744e92c12abfb0dc11d24dc867ac:jFtCBFceQI|", "claimPath": "document.gender", - "targetHash": "2a9b491d5e669fd4c8663cab06e896e81da82fc5927b49e1dbf7c0bd92c041f5", + "targetHash": "d4d107007bdaff0a865b50bf193c39aff579f5d8bb6c897eafb5e4e5e649e295", "node": [ { - "right": "8f424b01c81efb1178e9026f2247135f77ec8b2e28b8b6cd5cb3c242f9c3aff0" + "right": "861c6599f9c4ec74ca5e2194c9c6705118ba751c281d6b7eac2b88d327bf0b08" }, { - "left": "30887eb2255aa9c4790f4033c4ec750325cca28ac0f38f1d7291cbbe497e3490" + "left": "3a36920d71ee0fbc49a156bf1be644c14e7b916948910ffd5d670c37d5e9d370" }, { - "left": "d5d87dc0138b470774f7affe3a0efbadfd621bc57c00c14a62ef4caaa9d45987" + "left": "b25ce8528d6a3c795ba53edde485dcbb5cf04ab024c903719e249140370837ce" }, { - "right": "52cfc99632cdacba9c14728c7e90f25aa7109ed98b6b5446cf049b4d861a428b" + "right": "2f167eb869455dc69a96598541cd0a552f44a608a3e9aa02cf3817541c0627bc" }, { - "right": "52e2e64063c533f9419667ced3c3a79582f9e560b9de8bd52cb5c6cd0e0f5e48" + "right": "4fe1568a21766bf778d869b69e2af55ad77d3d65b6ed2617ec716793ea1fec0e" } ] }, { "identifier": "claim-cvc:Document.issueCountry-v1", - "value": "urn:issueCountry:26015cb27ac94844cb265b55856e43e8b43ccfe8ab8e76a71654d8ee61ed1e91:Brazil|", + "value": "urn:issueCountry:73baa5fd5b518ad02b2586b40cddda7ad154b40ee60c2f188a16f36d46a16688:p4dNUeAKtI|", "claimPath": "document.issueCountry", - "targetHash": "8f424b01c81efb1178e9026f2247135f77ec8b2e28b8b6cd5cb3c242f9c3aff0", + "targetHash": "861c6599f9c4ec74ca5e2194c9c6705118ba751c281d6b7eac2b88d327bf0b08", "node": [ { - "left": "2a9b491d5e669fd4c8663cab06e896e81da82fc5927b49e1dbf7c0bd92c041f5" + "left": "d4d107007bdaff0a865b50bf193c39aff579f5d8bb6c897eafb5e4e5e649e295" }, { - "left": "30887eb2255aa9c4790f4033c4ec750325cca28ac0f38f1d7291cbbe497e3490" + "left": "3a36920d71ee0fbc49a156bf1be644c14e7b916948910ffd5d670c37d5e9d370" }, { - "left": "d5d87dc0138b470774f7affe3a0efbadfd621bc57c00c14a62ef4caaa9d45987" + "left": "b25ce8528d6a3c795ba53edde485dcbb5cf04ab024c903719e249140370837ce" }, { - "right": "52cfc99632cdacba9c14728c7e90f25aa7109ed98b6b5446cf049b4d861a428b" + "right": "2f167eb869455dc69a96598541cd0a552f44a608a3e9aa02cf3817541c0627bc" }, { - "right": "52e2e64063c533f9419667ced3c3a79582f9e560b9de8bd52cb5c6cd0e0f5e48" + "right": "4fe1568a21766bf778d869b69e2af55ad77d3d65b6ed2617ec716793ea1fec0e" } ] }, { "identifier": "claim-cvc:Document.placeOfBirth-v1", - "value": "urn:placeOfBirth:ab9ebaf999a0a7b08de876e96b1f728ae480f8b054ca81e6ee6b6eb357aaae1d:Belo Horizonte|", + "value": "urn:placeOfBirth:8735b7348e79075bd5ddf746398c92d71f830f404624e88e70b7b9a8b858c2a4:r4hIHbyLru|", "claimPath": "document.placeOfBirth", - "targetHash": "e9905e6f38a2f13985e96f305ce80f4919de9b6753a6248ade279f7b1718837b", - "node": [ - { - "right": "1d41f39d93a7c21f9a545331735f80636bd63e1d4a10538d64973e9515e2b198" - }, - { - "right": "71f311383be069133baf8af0fe381bea0aaed4d4de374c68c9ac089167699a2b" - }, - { - "right": "5f8fec66c1df66d4bca8b38c07536946640380614a0884e3422ee1eb35bdfadf" - }, - { - "left": "7928776907776ed7bece599ffcd96b65de5f5340834af968b5089b01d69f7b62" - }, - { - "right": "52e2e64063c533f9419667ced3c3a79582f9e560b9de8bd52cb5c6cd0e0f5e48" - } - ] - }, - { - "identifier": "claim-cvc:Document.dateOfBirth-v1", - "value": "urn:dateOfBirth.day:11f75d1de599c5edee287ee4f4c7967ceb69a6707da0bc6a5dd97550c570d7db:20|urn:dateOfBirth.month:4a551178fdc75854ffef6e83b330156b36c423891a3f876972190a942bc265a7:3|urn:dateOfBirth.year:f12af3a4cc5cac31520e90d3cd9416b3174247fe1cf5b8c2c348249e62373f87:1978|", - "claimPath": "document.dateOfBirth", - "targetHash": "1d41f39d93a7c21f9a545331735f80636bd63e1d4a10538d64973e9515e2b198", - "node": [ - { - "left": "e9905e6f38a2f13985e96f305ce80f4919de9b6753a6248ade279f7b1718837b" - }, - { - "right": "71f311383be069133baf8af0fe381bea0aaed4d4de374c68c9ac089167699a2b" - }, - { - "right": "5f8fec66c1df66d4bca8b38c07536946640380614a0884e3422ee1eb35bdfadf" - }, - { - "left": "7928776907776ed7bece599ffcd96b65de5f5340834af968b5089b01d69f7b62" - }, - { - "right": "52e2e64063c533f9419667ced3c3a79582f9e560b9de8bd52cb5c6cd0e0f5e48" - } - ] - }, - { - "identifier": "claim-cvc:Document.dateOfExpiry-v1", - "value": "urn:dateOfExpiry.day:1ac23cac425819692044482563516f24a57be63468e4f8d7b0e127a8f35bd535:12|urn:dateOfExpiry.month:9c962026289b6cc25eae1a74e2a599194ab3adf144f900b15e09dfb67887471a:2|urn:dateOfExpiry.year:fb8d624c780ac0a87b87c8e8ec5861cb902f5aa186ffc3fecb72e2b004d60fc9:2025|", - "claimPath": "document.dateOfExpiry", - "targetHash": "4ed1ed6ccad83c10ba3bf6aad4d241b5ba77b885cb7dbf51cbc2bd46063d0ccd", - "node": [ - { - "right": "cdc4c59ad08d3af4ca9fa882395ad528df8b92cd5d6960f69e0f9006095b2a23" - }, - { - "left": "bad3055592187467ef5b1caa9c6e9d637ed520cc8e2abdf72e4958a0a7b727de" - }, - { - "right": "5f8fec66c1df66d4bca8b38c07536946640380614a0884e3422ee1eb35bdfadf" - }, - { - "left": "7928776907776ed7bece599ffcd96b65de5f5340834af968b5089b01d69f7b62" - }, - { - "right": "52e2e64063c533f9419667ced3c3a79582f9e560b9de8bd52cb5c6cd0e0f5e48" - } - ] - }, - { - "identifier": "claim-cvc:Document.nationality-v1", - "value": "urn:nationality:24c38aacc4a7764f0c535a8a01c19f7551ca97a88242a5c06e416593fc24c2e4:Brazilian|", - "claimPath": "document.nationality", - "targetHash": "cdc4c59ad08d3af4ca9fa882395ad528df8b92cd5d6960f69e0f9006095b2a23", - "node": [ - { - "left": "4ed1ed6ccad83c10ba3bf6aad4d241b5ba77b885cb7dbf51cbc2bd46063d0ccd" - }, - { - "left": "bad3055592187467ef5b1caa9c6e9d637ed520cc8e2abdf72e4958a0a7b727de" - }, - { - "right": "5f8fec66c1df66d4bca8b38c07536946640380614a0884e3422ee1eb35bdfadf" - }, - { - "left": "7928776907776ed7bece599ffcd96b65de5f5340834af968b5089b01d69f7b62" - }, - { - "right": "52e2e64063c533f9419667ced3c3a79582f9e560b9de8bd52cb5c6cd0e0f5e48" - } - ] - }, - { - "identifier": "claim-cvc:Document.evidences-v1", - "value": "urn:evidences.idDocumentBack.algorithm:2d0f9636ca117366dd97dd69f2a9a63b99e634d37f612ceeffa12a30db9a86d5:sha256|urn:evidences.idDocumentBack.data:620b742575b5f52ca5d03c29efd5cf3c17ca6a52116deff07f2ea09a8ef63dbf:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855|urn:evidences.idDocumentFront.algorithm:bcbd9b333241be0fb62f29dd9c9b1165cceb4408aaa955a7ef9c8ba9de952088:sha256|urn:evidences.idDocumentFront.data:273f235a2730fd2a18c5ab669fa7e2c78e63a5e2806677cd5d4075596dd9529f:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855|urn:evidences.selfie.algorithm:2f79f2e31a9ce9bc774eb89468e6484a23ff9e619d2bf30a0bb23a7ba884f1af:sha256|urn:evidences.selfie.data:d44efec6c580b3b1300801e594bd4c615309d5604442b8699d34e503b0be9312:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855|", - "claimPath": "document.evidences", - "targetHash": "2e19a0209d987aeff1d56ff2be7b7e2af83d3abc17cf951ddb47cb4515511305", - "node": [ - { - "right": "dadad5ed64260bebb3e2f5fdf8c66109d6faba308b2483d22251082890e9009f" - }, - { - "right": "f44b7344b7b49b9876817c52e328112f139b6443ce3dcb72ed450b6186b58dff" - }, - { - "left": "af8d81492cf8d727f2749d4b10a19c19ded0eb4d93342fde11cc7e6866b8e566" - }, - { - "left": "7928776907776ed7bece599ffcd96b65de5f5340834af968b5089b01d69f7b62" - }, - { - "right": "52e2e64063c533f9419667ced3c3a79582f9e560b9de8bd52cb5c6cd0e0f5e48" - } - ] - }, - { - "identifier": "claim-cvc:Validation:evidences.idDocumentFront-v1", - "value": "urn:idDocumentFront.algorithm:bcbd9b333241be0fb62f29dd9c9b1165cceb4408aaa955a7ef9c8ba9de952088:sha256|urn:idDocumentFront.data:273f235a2730fd2a18c5ab669fa7e2c78e63a5e2806677cd5d4075596dd9529f:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855|", - "claimPath": "validationEvidences.idDocumentFront", - "targetHash": "dadad5ed64260bebb3e2f5fdf8c66109d6faba308b2483d22251082890e9009f", - "node": [ - { - "left": "2e19a0209d987aeff1d56ff2be7b7e2af83d3abc17cf951ddb47cb4515511305" - }, - { - "right": "f44b7344b7b49b9876817c52e328112f139b6443ce3dcb72ed450b6186b58dff" - }, - { - "left": "af8d81492cf8d727f2749d4b10a19c19ded0eb4d93342fde11cc7e6866b8e566" - }, - { - "left": "7928776907776ed7bece599ffcd96b65de5f5340834af968b5089b01d69f7b62" - }, - { - "right": "52e2e64063c533f9419667ced3c3a79582f9e560b9de8bd52cb5c6cd0e0f5e48" - } - ] - }, - { - "identifier": "claim-cvc:Validation:evidences.idDocumentBack-v1", - "value": "urn:idDocumentBack.algorithm:2d0f9636ca117366dd97dd69f2a9a63b99e634d37f612ceeffa12a30db9a86d5:sha256|urn:idDocumentBack.data:620b742575b5f52ca5d03c29efd5cf3c17ca6a52116deff07f2ea09a8ef63dbf:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855|", - "claimPath": "validationEvidences.idDocumentBack", - "targetHash": "e3a604848f2bcee8f2e580c4a72bca8666421efe03deb9ad719d2513e242daf1", + "targetHash": "efbc76f14721c2405b604640bda1047ca05b7d1c787ba7583ad23f8c784a44ec", "node": [ { - "right": "6f1a450426909a5920eb9d44be17b94ad6df1b93cc9422464c1d85f01daf16bc" + "right": "f9f0ff6c874e0c2168740a77f1fc0faa550273654f0288daaf223ac972290c5c" }, { - "left": "954f2146938ca577eed53690bf9776775d1634af53a8f6abeacb1805b7a92c10" + "right": "24e321a7697af1aac369c0b686eb0508e7eefcc14fd374b08f220ecc76a0d010" }, { - "left": "af8d81492cf8d727f2749d4b10a19c19ded0eb4d93342fde11cc7e6866b8e566" + "right": "8925b669ade962e6d1a56b7e509e090c7a23329cd24f7e3e88a677a796c507f6" }, { - "left": "7928776907776ed7bece599ffcd96b65de5f5340834af968b5089b01d69f7b62" + "left": "1baed2cd107ddf7fc8bedfd7c670ff7d7d8361609c0102e93493413754597799" }, { - "right": "52e2e64063c533f9419667ced3c3a79582f9e560b9de8bd52cb5c6cd0e0f5e48" - } - ] - }, - { - "identifier": "claim-cvc:Validation:evidences.selfie-v1", - "value": "urn:selfie.algorithm:2f79f2e31a9ce9bc774eb89468e6484a23ff9e619d2bf30a0bb23a7ba884f1af:sha256|urn:selfie.data:d44efec6c580b3b1300801e594bd4c615309d5604442b8699d34e503b0be9312:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855|", - "claimPath": "validationEvidences.selfie", - "targetHash": "6f1a450426909a5920eb9d44be17b94ad6df1b93cc9422464c1d85f01daf16bc", - "node": [ - { - "left": "e3a604848f2bcee8f2e580c4a72bca8666421efe03deb9ad719d2513e242daf1" - }, - { - "left": "954f2146938ca577eed53690bf9776775d1634af53a8f6abeacb1805b7a92c10" - }, - { - "left": "af8d81492cf8d727f2749d4b10a19c19ded0eb4d93342fde11cc7e6866b8e566" - }, - { - "left": "7928776907776ed7bece599ffcd96b65de5f5340834af968b5089b01d69f7b62" - }, - { - "right": "52e2e64063c533f9419667ced3c3a79582f9e560b9de8bd52cb5c6cd0e0f5e48" + "right": "4fe1568a21766bf778d869b69e2af55ad77d3d65b6ed2617ec716793ea1fec0e" } ] }, { "identifier": "cvc:Meta:issuer", - "value": "urn:issuer:292b0049dfd8c15f0310c760b6fbe8a8485b9beb389ba29262604510877a5cfb:|", + "value": "urn:issuer:86be9d2fa57b1fdd7459f50c5335efc09c3d9f890f450071b89a1774c142ebf1:|", "claimPath": "meta.issuer", - "targetHash": "f8fadea6eab4ae1c5e81c36778d2756c38c84b92eaa11d0ea2841577d8dbc816", + "targetHash": "f9f0ff6c874e0c2168740a77f1fc0faa550273654f0288daaf223ac972290c5c", "node": [ { - "right": "731b43aca212bd7a1de986a939c8e9fed0d079d1cc638ffa17550d78d202159a" + "left": "efbc76f14721c2405b604640bda1047ca05b7d1c787ba7583ad23f8c784a44ec" }, { - "right": "765f969858f73f8722f132ed0f54ca563bf4dcf01dbb63050befc60f5c2689d6" + "right": "24e321a7697af1aac369c0b686eb0508e7eefcc14fd374b08f220ecc76a0d010" }, { - "right": "57c3b18b1e5bc473a1b957ffbed2367943e17a4c46783e082ec73201422c7e0d" + "right": "8925b669ade962e6d1a56b7e509e090c7a23329cd24f7e3e88a677a796c507f6" }, { - "left": "fc861ec3a17be8fd5a4b447d10516ed8721f0cc0e16dd697dc2586986c94a3ac" + "left": "1baed2cd107ddf7fc8bedfd7c670ff7d7d8361609c0102e93493413754597799" + }, + { + "right": "4fe1568a21766bf778d869b69e2af55ad77d3d65b6ed2617ec716793ea1fec0e" } ] }, { "identifier": "cvc:Meta:issuanceDate", - "value": "urn:issuanceDate:f548bd51bd8e6067af740f98e78eba10d327abf31352f902e10acac9e244d7da:2019-06-18T18:40:43.324Z|", + "value": "urn:issuanceDate:cdd894bddf1bb699f7dd29100415cbe5853b45ea1cb29a2fe53ccf7b61dfd4f0:2021-12-15T08:10:39.602Z|", "claimPath": "meta.issuanceDate", - "targetHash": "731b43aca212bd7a1de986a939c8e9fed0d079d1cc638ffa17550d78d202159a", + "targetHash": "a25840d82b574fdb5c0f78190b32a112179ccd4c8d87fd8084a053a68c2943ae", "node": [ { - "left": "f8fadea6eab4ae1c5e81c36778d2756c38c84b92eaa11d0ea2841577d8dbc816" + "right": "ed5767b76992810de6b5a6c8f8b9d08f9aac626f19e1f4c54d1b2f1fa72bc2d1" + }, + { + "left": "6b90165563cebbcb628dbdf64804aaa76b54fde9d9dc6b7b782e5c7dbd95986b" }, { - "right": "765f969858f73f8722f132ed0f54ca563bf4dcf01dbb63050befc60f5c2689d6" + "right": "8925b669ade962e6d1a56b7e509e090c7a23329cd24f7e3e88a677a796c507f6" }, { - "right": "57c3b18b1e5bc473a1b957ffbed2367943e17a4c46783e082ec73201422c7e0d" + "left": "1baed2cd107ddf7fc8bedfd7c670ff7d7d8361609c0102e93493413754597799" }, { - "left": "fc861ec3a17be8fd5a4b447d10516ed8721f0cc0e16dd697dc2586986c94a3ac" + "right": "4fe1568a21766bf778d869b69e2af55ad77d3d65b6ed2617ec716793ea1fec0e" } ] }, { "identifier": "cvc:Meta:expirationDate", - "value": "urn:expirationDate:54a7ae635fbc7a1f4280464724001b9b5717e075569df07f737fb67e37d84a55:null|", + "value": "urn:expirationDate:40c5f9de9a21eddd67e733e19d37be0be082b359f9646fa5c6e405debf286331:null|", "claimPath": "meta.expirationDate", - "targetHash": "c995d499a9af3ca85e519bfaa48fb72fc8f180c7cfae58f7991aa86194e20460", + "targetHash": "ed5767b76992810de6b5a6c8f8b9d08f9aac626f19e1f4c54d1b2f1fa72bc2d1", "node": [ { - "right": "d3a8e00d2496a1a4276f195d29457a9ab572f0367e807837ba1b22cefa383f5d" + "left": "a25840d82b574fdb5c0f78190b32a112179ccd4c8d87fd8084a053a68c2943ae" }, { - "left": "86e5e3315073bb73a898616d20e72161dd5ffe8aa6ddefab8e50e0d1e0e66c48" + "left": "6b90165563cebbcb628dbdf64804aaa76b54fde9d9dc6b7b782e5c7dbd95986b" }, { - "right": "57c3b18b1e5bc473a1b957ffbed2367943e17a4c46783e082ec73201422c7e0d" + "right": "8925b669ade962e6d1a56b7e509e090c7a23329cd24f7e3e88a677a796c507f6" }, { - "left": "fc861ec3a17be8fd5a4b447d10516ed8721f0cc0e16dd697dc2586986c94a3ac" + "left": "1baed2cd107ddf7fc8bedfd7c670ff7d7d8361609c0102e93493413754597799" + }, + { + "right": "4fe1568a21766bf778d869b69e2af55ad77d3d65b6ed2617ec716793ea1fec0e" } ] } - ] - }, - "granted": null + ], + "granted": null + } } diff --git a/__test__/creds/fixtures/IdDocumentWithoutRequiredClaims.json b/__test__/creds/fixtures/IdDocumentWithoutRequiredClaims.json index cbdd0128..ffdd94a6 100644 --- a/__test__/creds/fixtures/IdDocumentWithoutRequiredClaims.json +++ b/__test__/creds/fixtures/IdDocumentWithoutRequiredClaims.json @@ -2,14 +2,13 @@ "id": "31cd46c4-7165-42bd-8a31-c20c1dc0a629", "issuer": "", "issuanceDate": "2019-06-05T19:20:30.688Z", - "identifier": "credential-cvc:IdDocument-v1", - "expirationDate": null, - "version": "1", + "identifier": "credential-cvc:IdDocument-v3", "type": [ - "Credential", - "credential-cvc:IdDocument-v1" + "VerifiableCredential", + "IdentityCredential" ], - "claim": { + "credentialSubject": { + "id": "did:sol:J2vss1hB3kgEfQMSSdvvjwRm3JdyFWp7S7dbX5mudS4V", "document": { "type": "Passport", "name": { @@ -184,7 +183,7 @@ } ] } - ] - }, - "granted": null + ], + "granted": null + } } diff --git a/__test__/creds/fixtures/Identity.json b/__test__/creds/fixtures/Identity.json index 650efc7e..fbf6292c 100644 --- a/__test__/creds/fixtures/Identity.json +++ b/__test__/creds/fixtures/Identity.json @@ -2,14 +2,13 @@ "id": "e24b2c57-3d78-42c3-9111-aaabcab8006d", "issuer": "jest:test:fe0ca5d0-e8b0-11e8-8a40-7fe4d191eb47", "issuanceDate": "2018-11-15T08:32:30.893Z", - "identifier": "credential-cvc:Identity-v1", - "expirationDate": null, - "version": "1", + "identifier": "credential-cvc:Identity-v3", "type": [ - "Credential", - "credential-cvc:Identity-v1" + "VerifiableCredential", + "IdentityCredential" ], - "claim": { + "credentialSubject": { + "id": "did:sol:J2vss1hB3kgEfQMSSdvvjwRm3JdyFWp7S7dbX5mudS4V", "identity": { "name": { "familyNames": "sWYglHZ6Ry", @@ -47,7 +46,7 @@ "path": "/" }, "coin": "dummycoin", - "tx": {}, + "tx": "", "network": "dummynet", "type": "permanent", "civicAsPrimary": false, @@ -239,6 +238,7 @@ } ] } - ] + ], + "granted": null } } diff --git a/__test__/creds/fixtures/PhoneNumber.json b/__test__/creds/fixtures/PhoneNumber.json index c0233f81..5fd89478 100644 --- a/__test__/creds/fixtures/PhoneNumber.json +++ b/__test__/creds/fixtures/PhoneNumber.json @@ -2,14 +2,13 @@ "id": "c409433d-53a0-413b-ab36-cf223ef11261", "issuer": "jest:test:fe097180-e8b0-11e8-8a40-7fe4d191eb47", "issuanceDate": "2018-11-15T08:32:30.872Z", - "identifier": "credential-cvc:PhoneNumber-v1", - "expirationDate": null, - "version": "1", + "identifier": "credential-cvc:PhoneNumber-v3", "type": [ - "Credential", - "credential-cvc:PhoneNumber-v1" + "VerifiableCredential", + "IdentityCredential" ], - "claim": { + "credentialSubject": { + "id": "did:sol:J2vss1hB3kgEfQMSSdvvjwRm3JdyFWp7S7dbX5mudS4V", "contact": { "phoneNumber": { "country": "Y1kbIF49uq", @@ -44,7 +43,7 @@ "path": "/" }, "coin": "dummycoin", - "tx": {}, + "tx": "", "network": "dummynet", "type": "permanent", "civicAsPrimary": false, @@ -236,6 +235,7 @@ } ] } - ] + ], + "granted": null } } diff --git a/__test__/creds/fixtures/VCPermanentAnchor.json b/__test__/creds/fixtures/VCPermanentAnchor.json index 5afaadc1..27c4a755 100644 --- a/__test__/creds/fixtures/VCPermanentAnchor.json +++ b/__test__/creds/fixtures/VCPermanentAnchor.json @@ -1,15 +1,14 @@ { - "id": null, + "id": "", "issuer": "d460c90d-4032-4c29-9743-f52e0a852602", "issuanceDate": "2018-10-08T19:46:22.364Z", - "identifier": "credential-cvc:Identity-v1", - "expirationDate": null, - "version": "1", + "identifier": "credential-cvc:Identity-v3", "type": [ - "Credential", - "credential-cvc:Identity-v1" + "VerifiableCredential", + "IdentityCredential" ], - "claim": { + "credentialSubject": { + "id": "did:sol:J2vss1hB3kgEfQMSSdvvjwRm3JdyFWp7S7dbX5mudS4V", "identity": { "name": { "familyNames": "Santos", @@ -47,7 +46,7 @@ "path": "/" }, "coin": "dummycoin", - "tx": {}, + "tx": "", "network": "dummynet", "type": "permanent", "civicAsPrimary": false, @@ -238,6 +237,7 @@ } ] } - ] + ], + "granted": null } } diff --git a/__test__/creds/fixtures/VCTempAnchor.json b/__test__/creds/fixtures/VCTempAnchor.json index 1426acd1..65dfa41b 100644 --- a/__test__/creds/fixtures/VCTempAnchor.json +++ b/__test__/creds/fixtures/VCTempAnchor.json @@ -2,14 +2,13 @@ "id": null, "issuer": "d460c90d-4032-4c29-9743-f52e0a852602", "issuanceDate": "2018-10-08T19:46:22.364Z", - "identifier": "credential-cvc:Identity-v1", - "expirationDate": null, - "version": "1", + "identifier": "credential-cvc:Identity-v3", "type": [ - "Credential", - "credential-cvc:Identity-v1" + "VerifiableCredential", + "IdentityCredential" ], - "claim": { + "credentialSubject": { + "id": "did:sol:J2vss1hB3kgEfQMSSdvvjwRm3JdyFWp7S7dbX5mudS4V", "identity": { "name": { "familyNames": "Santos", @@ -238,6 +237,7 @@ } ] } - ] + ], + "granted": null } -} \ No newline at end of file +} diff --git a/__test__/creds/fixtures/VCWithTamperedLeafValue.json b/__test__/creds/fixtures/VCWithTamperedLeafValue.json index 6e16101c..b0cdf297 100644 --- a/__test__/creds/fixtures/VCWithTamperedLeafValue.json +++ b/__test__/creds/fixtures/VCWithTamperedLeafValue.json @@ -2,14 +2,13 @@ "id": "3636227c-5adf-4135-b81c-6dd1da53fd67", "issuer": "", "issuanceDate": "2018-11-13T18:54:11.665Z", - "identifier": "credential-cvc:Email-v1", - "expirationDate": null, - "version": "1", + "identifier": "credential-cvc:Email-v3", "type": [ - "Credential", - "credential-cvc:Email-v1" + "VerifiableCredential", + "IdentityCredential" ], - "claim": { + "credentialSubject": { + "id": "did:sol:J2vss1hB3kgEfQMSSdvvjwRm3JdyFWp7S7dbX5mudS4V", "contact": { "email": { "domain": { @@ -140,6 +139,7 @@ } ] } - ] + ], + "granted": null } } diff --git a/__test__/creds/fixtures/filteredIdDocument-v2.json b/__test__/creds/fixtures/filteredIdDocument-v2.json index fa556492..562509da 100644 --- a/__test__/creds/fixtures/filteredIdDocument-v2.json +++ b/__test__/creds/fixtures/filteredIdDocument-v2.json @@ -2,15 +2,15 @@ "id": "f471b5f8-6ad6-4782-968d-f2924145fa54", "issuer": "", "issuanceDate": "2021-05-26T20:11:12.082Z", - "identifier": "credential-cvc:IdDocument-v2", - "expirationDate": null, + "identifier": "credential-cvc:IdDocument-v3", "version": "1", "type": [ - "Credential", - "credential-cvc:IdDocument-v2" + "VerifiableCredential", + "IdentityCredential" ], "transient": false, - "claim": { + "credentialSubject": { + "id": "did:sol:J2vss1hB3kgEfQMSSdvvjwRm3JdyFWp7S7dbX5mudS4V", "document": { "dateOfBirth": { "day": 20, @@ -47,7 +47,7 @@ } ] } - ] - }, - "granted": null -} \ No newline at end of file + ], + "granted": null + } +} From dd98fc65f15428e51ad60f54a2076fc6bc49d253 Mon Sep 17 00:00:00 2001 From: William Brooks Date: Wed, 15 Dec 2021 11:24:53 +0200 Subject: [PATCH 03/52] IDCOM-1425 Renamed fixture to v3 --- .../{filteredIdDocument-v2.json => filteredIdDocument-v3.json} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename __test__/creds/fixtures/{filteredIdDocument-v2.json => filteredIdDocument-v3.json} (100%) diff --git a/__test__/creds/fixtures/filteredIdDocument-v2.json b/__test__/creds/fixtures/filteredIdDocument-v3.json similarity index 100% rename from __test__/creds/fixtures/filteredIdDocument-v2.json rename to __test__/creds/fixtures/filteredIdDocument-v3.json From cf946efe8deed7b9f08963f2639067b1301e379e Mon Sep 17 00:00:00 2001 From: William Brooks Date: Wed, 15 Dec 2021 11:25:48 +0200 Subject: [PATCH 04/52] IDCOM-1425 Renamed fixture to v3 --- __test__/creds/VerifiableCredential.test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/__test__/creds/VerifiableCredential.test.js b/__test__/creds/VerifiableCredential.test.js index 30f5dcb7..6c231e0e 100644 --- a/__test__/creds/VerifiableCredential.test.js +++ b/__test__/creds/VerifiableCredential.test.js @@ -10,7 +10,7 @@ const { schemaLoader, CVCSchemaLoader, } = require('../../src'); -const filteredCredentialJson = require('./fixtures/filteredIdDocument-v2.json'); +const filteredCredentialJson = require('./fixtures/filteredIdDocument-v3.json'); const invalidEmailJson = require('./fixtures/CredentialEmailInvalid.json'); // eslint-disable-next-line max-len From f5d507212df3ab05c9ded9b2ac92a1ecbeb10f87 Mon Sep 17 00:00:00 2001 From: William Brooks Date: Wed, 15 Dec 2021 11:37:26 +0200 Subject: [PATCH 05/52] IDCOM-1425 Removed version from fixture --- __test__/creds/fixtures/CredentialAttestationFaked.json | 1 - 1 file changed, 1 deletion(-) diff --git a/__test__/creds/fixtures/CredentialAttestationFaked.json b/__test__/creds/fixtures/CredentialAttestationFaked.json index 7c9d1046..202f30b1 100644 --- a/__test__/creds/fixtures/CredentialAttestationFaked.json +++ b/__test__/creds/fixtures/CredentialAttestationFaked.json @@ -3,7 +3,6 @@ "issuer": "d460c90d-4032-4c29-9743-f52e0a852602", "issuanceDate": "2018-10-08T19:46:22.364Z", "identifier": "credential-cvc:Identity-v3", - "version": "1", "type": [ "VerifiableCredential", "IdentityCredential" From aef59b51a238cf30aa899a9e093053a0f36a809b Mon Sep 17 00:00:00 2001 From: William Brooks Date: Wed, 15 Dec 2021 11:43:02 +0200 Subject: [PATCH 06/52] IDCOM-1425 Add a toJSON to convert the VC --- src/creds/VerifiableCredential.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/creds/VerifiableCredential.js b/src/creds/VerifiableCredential.js index 8f31f464..085af16b 100644 --- a/src/creds/VerifiableCredential.js +++ b/src/creds/VerifiableCredential.js @@ -656,6 +656,12 @@ function VerifiableCredentialBaseConstructor(identifier, issuer, expiryIn, subje this.proof.granted = hexSign; }; + /** + * Serializes the VerifiableCredential to a JSON string + * @param space The number of spaces to indent the JSON with + */ + this.toJSON = (space = null) => JSON.stringify(this, null, space); + /** * @param {} requestorId * @param {} requestId From 6e86a213d62eb30d8e8ba6ca65eca17b1c890828 Mon Sep 17 00:00:00 2001 From: William Brooks Date: Wed, 15 Dec 2021 12:05:18 +0200 Subject: [PATCH 07/52] IDCOM-1425 Add a toJSON to convert the VC --- src/creds/VerifiableCredential.js | 30 ++++++++++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/src/creds/VerifiableCredential.js b/src/creds/VerifiableCredential.js index 085af16b..218e0915 100644 --- a/src/creds/VerifiableCredential.js +++ b/src/creds/VerifiableCredential.js @@ -660,8 +660,34 @@ function VerifiableCredentialBaseConstructor(identifier, issuer, expiryIn, subje * Serializes the VerifiableCredential to a JSON string * @param space The number of spaces to indent the JSON with */ - this.toJSON = (space = null) => JSON.stringify(this, null, space); + this.toJSON = () => { + const obj = _.pick(this, [ + 'id', + 'identifier', + 'issuer', + 'issuanceDate', + 'expirationDate', + 'type', + 'credentialSubject', + 'proof', + ]); + + // Remove undefined/null values + // eslint-disable-next-line no-restricted-syntax + for (const k in obj) { + if (obj[k] === null || obj[k] === undefined) { + delete obj[k]; + } + } + return { + '@context': [ + 'https://www.w3.org/2018/credentials/v1', + `https://www.identity.com/credentials/v${version}`, + ], + ...obj, + }; + }; /** * @param {} requestorId * @param {} requestId @@ -762,7 +788,7 @@ VerifiableCredentialBaseConstructor.create = async (identifier, issuer, expiryIn ); if (validate) { - await schemaLoader.validateSchema(identifier, JSON.parse(JSON.stringify(vc))); + await schemaLoader.validateSchema(identifier, vc.toJSON()); } return vc; From bb8d8ad82af5b87d85c48655f757e1a360e6e5c6 Mon Sep 17 00:00:00 2001 From: William Brooks Date: Wed, 15 Dec 2021 13:09:28 +0200 Subject: [PATCH 08/52] IDCOM-1426 Added backwards compatible proxy VC --- src/creds/VerifiableCredentialProxy.js | 147 +++++++++++++++++++++++++ 1 file changed, 147 insertions(+) create mode 100644 src/creds/VerifiableCredentialProxy.js diff --git a/src/creds/VerifiableCredentialProxy.js b/src/creds/VerifiableCredentialProxy.js new file mode 100644 index 00000000..bcc4deae --- /dev/null +++ b/src/creds/VerifiableCredentialProxy.js @@ -0,0 +1,147 @@ +const _ = require('lodash'); +const VerifiableCredential = require('./VerifiableCredential'); +const { schemaLoader } = require('../schemas/jsonSchema'); + +const definitions = schemaLoader.credentialDefinitions; + +/** + * Retrieves the credential definition + * @param {string} identifier - credential identifier + * @param {*} [version] - definition version + */ +function getCredentialDefinition(identifier, version) { + let definition; + if (version) { + definition = _.find(definitions, { identifier, version: `${version}` }); + } else { + definition = _.find(definitions, { identifier }); + } + if (!definition) { + throw new Error(`Credential definition for ${identifier} v${version} not found`); + } + return definition; +} + +/** + * Throws exception if the definition has missing required claims + * @param {*} definition - the credential definition + * @param {*} verifiableCredentialJSON - the verifiable credential JSON + */ +function verifyRequiredClaimsFromJSON(definition, verifiableCredentialJSON) { + const leaves = _.get(verifiableCredentialJSON, 'proof.leaves'); + + if (!_.isEmpty(definition.required) && leaves) { + const identifiers = leaves.map(leave => leave.identifier); + const missings = _.difference(definition.required, identifiers); + if (!_.isEmpty(missings)) { + throw new Error(`Missing required claim(s): ${_.join(missings, ', ')}`); + } + } +} + +class VerifiableCredentialProxy extends VerifiableCredential { + get claim() { + return this.credentialSubject; + } + + get granted() { + return this.proof && this.proof.granted ? this.proof.granted : null; + } + + set granted(granted) { + this.proof.granted = granted; + } + + constructor(identifier, issuer, expiryIn, ucas, version, evidence, signerVerifier = null) { + super(identifier, issuer, expiryIn, null, ucas, evidence, signerVerifier); + + this.version = version; + + /** + * Returns the old format VC when converting to JSON + */ + this.toJSON = () => { + const obj = { + id: _.clone(this.id), + identifier: _.clone(this.identifier), + issuer: _.clone(this.issuer), + issuanceDate: _.clone(this.issuanceDate), + expirationDate: _.clone(this.expirationDate), + version: _.clone(this.version), + type: _.clone(this.type), + claim: _.clone(this.credentialSubject), + proof: _.clone(this.proof), + }; + + if (obj.claim) delete obj.claim.id; + + return obj; + }; + } +} + +VerifiableCredentialProxy.create = async (identifier, issuer, expiryIn, ucas, version, evidence, + signerVerifier = null) => { + // Load the schema and it's references from a source to be used for validation and defining the schema definitions + const schema = await schemaLoader.loadSchemaFromTitle(identifier); + + // If it has a credentialSubject, use the new VC format + if (schema && schema.properties.credentialSubject) { + return VerifiableCredential.create(identifier, issuer, expiryIn, '', ucas, evidence, signerVerifier); + } + + // Load the meta schema's from a source + await schemaLoader.loadSchemaFromTitle('cvc:Meta:issuer'); + await schemaLoader.loadSchemaFromTitle('cvc:Meta:issuanceDate'); + await schemaLoader.loadSchemaFromTitle('cvc:Meta:expirationDate'); + await schemaLoader.loadSchemaFromTitle('cvc:Random:node'); + + return new VerifiableCredentialProxy(identifier, issuer, expiryIn, ucas, version, evidence, signerVerifier); +}; + +VerifiableCredentialProxy.fromJSON = async (verifiableCredentialJSON, partialPresentation = false) => { + const newObj = await VerifiableCredentialProxy.create( + verifiableCredentialJSON.identifier, + verifiableCredentialJSON.issuer, + ); + + newObj.id = _.clone(verifiableCredentialJSON.id); + newObj.issuanceDate = _.clone(verifiableCredentialJSON.issuanceDate); + newObj.expirationDate = _.clone(verifiableCredentialJSON.expirationDate); + newObj.identifier = _.clone(verifiableCredentialJSON.identifier); + newObj.version = _.clone(verifiableCredentialJSON.version); + newObj.type = [ + 'VerifiableCredential', + 'IdentityCredential', + ]; + newObj.credentialSubject = _.cloneDeep(verifiableCredentialJSON.claim); + newObj.proof = _.cloneDeep(verifiableCredentialJSON.proof); + + if (!partialPresentation) { + const definition = getCredentialDefinition(verifiableCredentialJSON.identifier, verifiableCredentialJSON.version); + verifyRequiredClaimsFromJSON(definition, verifiableCredentialJSON); + } + + return newObj; +}; + + +VerifiableCredentialProxy + + .nonCryptographicallySecureVerify = async (credential) => { + const vc = await VerifiableCredentialProxy.fromJSON(credential); + + return VerifiableCredential.nonCryptographicallySecureVerify(vc); + }; + +VerifiableCredentialProxy + + .cryptographicallySecureVerify = async (credential, verifyAttestationFunc, verifySignatureFunc) => { + const vc = await VerifiableCredentialProxy.fromJSON(credential); + + return VerifiableCredential.cryptographicallySecureVerify(vc, verifyAttestationFunc, verifySignatureFunc); + }; + +module + + .exports = VerifiableCredentialProxy; From 086677dad106adf194cf5c5a44b0fc9a3c89d0c1 Mon Sep 17 00:00:00 2001 From: William Brooks Date: Wed, 15 Dec 2021 13:10:20 +0200 Subject: [PATCH 09/52] IDCOM-1426 Added unit tests and fixtures for proxy --- .../creds/VerifiableCredentialProxy.test.js | 1889 +++++++++++++++++ __test__/creds/proxyFixtures/Address.json | 266 +++ __test__/creds/proxyFixtures/Cred1.json | 145 ++ __test__/creds/proxyFixtures/CredExpired.json | 266 +++ .../creds/proxyFixtures/CredFiltered1.json | 220 ++ .../proxyFixtures/CredWithFutureExpiry.json | 266 +++ .../proxyFixtures/CredentialAddress.json | 241 +++ .../CredentialAttestationFaked.json | 243 +++ .../proxyFixtures/CredentialEmailInvalid.json | 177 ++ __test__/creds/proxyFixtures/Email.json | 172 ++ .../proxyFixtures/GenericDocumentId.json | 636 ++++++ .../IdDocumentWithoutNonRequiredClaims.json | 487 +++++ .../IdDocumentWithoutRequiredClaims.json | 190 ++ __test__/creds/proxyFixtures/Identity.json | 244 +++ .../creds/proxyFixtures/PermanentAnchor.json | 25 + __test__/creds/proxyFixtures/PhoneNumber.json | 241 +++ __test__/creds/proxyFixtures/TempAnchor.json | 23 + .../proxyFixtures/VCPermanentAnchor.json | 243 +++ .../creds/proxyFixtures/VCTempAnchor.json | 243 +++ .../VCWithTamperedLeafValue.json | 145 ++ .../proxyFixtures/filteredIdDocument-v2.json | 53 + 21 files changed, 6415 insertions(+) create mode 100644 __test__/creds/VerifiableCredentialProxy.test.js create mode 100644 __test__/creds/proxyFixtures/Address.json create mode 100644 __test__/creds/proxyFixtures/Cred1.json create mode 100644 __test__/creds/proxyFixtures/CredExpired.json create mode 100644 __test__/creds/proxyFixtures/CredFiltered1.json create mode 100644 __test__/creds/proxyFixtures/CredWithFutureExpiry.json create mode 100644 __test__/creds/proxyFixtures/CredentialAddress.json create mode 100644 __test__/creds/proxyFixtures/CredentialAttestationFaked.json create mode 100644 __test__/creds/proxyFixtures/CredentialEmailInvalid.json create mode 100644 __test__/creds/proxyFixtures/Email.json create mode 100644 __test__/creds/proxyFixtures/GenericDocumentId.json create mode 100644 __test__/creds/proxyFixtures/IdDocumentWithoutNonRequiredClaims.json create mode 100644 __test__/creds/proxyFixtures/IdDocumentWithoutRequiredClaims.json create mode 100644 __test__/creds/proxyFixtures/Identity.json create mode 100644 __test__/creds/proxyFixtures/PermanentAnchor.json create mode 100644 __test__/creds/proxyFixtures/PhoneNumber.json create mode 100644 __test__/creds/proxyFixtures/TempAnchor.json create mode 100644 __test__/creds/proxyFixtures/VCPermanentAnchor.json create mode 100644 __test__/creds/proxyFixtures/VCTempAnchor.json create mode 100644 __test__/creds/proxyFixtures/VCWithTamperedLeafValue.json create mode 100644 __test__/creds/proxyFixtures/filteredIdDocument-v2.json diff --git a/__test__/creds/VerifiableCredentialProxy.test.js b/__test__/creds/VerifiableCredentialProxy.test.js new file mode 100644 index 00000000..f7daaa1b --- /dev/null +++ b/__test__/creds/VerifiableCredentialProxy.test.js @@ -0,0 +1,1889 @@ +const _ = require('lodash'); +const fs = require('fs'); +const uuidv4 = require('uuid/v4'); +const sjcl = require('sjcl'); +const { Claim } = require('../../src/claim/Claim'); +const VC = require('../../src/creds/VerifiableCredentialProxy'); +const MiniCryptoManagerImpl = require('../../src/services/MiniCryptoManagerImpl'); +const CredentialSignerVerifier = require('../../src/creds/CredentialSignerVerifier'); +const { + schemaLoader, + CVCSchemaLoader, +} = require('../../src'); +const filteredCredentialJson = require('./proxyFixtures/filteredIdDocument-v2.json'); +const invalidEmailJson = require('./proxyFixtures/CredentialEmailInvalid.json'); + +// eslint-disable-next-line max-len +const prvBase58 = 'xprv9s21ZrQH143K4aBUwUW6GVec7Y6oUEBqrt2WWaXyxjh2pjofNc1of44BLufn4p1t7Jq4EPzm5C9sRxCuBYJdHu62jhgfyPm544sNjtH7x8S'; +// eslint-disable-next-line max-len +const pubBase58 = 'xpub661MyMwAqRbcH4Fx3W36ddbLfZwHsguhE6x7JxwbX5E1hY8ov9L4CrNfCCQpV8pVK64CVqkhYQ9QLFgkVAUqkRThkTY1R4GiWHNZtAFSVpD'; + + +jest.setTimeout(150000); + +const XPVT1 = 'xprvA1yULd2DFYnQRVbLiAKrFdftVLsANiC3rqLvp8iiCbnchcWqd6kJPoaV3sy7R6CjHM8RbpoNdWVgiPZLVa1EmneRLtwiitNpWgwyVmjvay7'; // eslint-disable-line +const XPUB1 = 'xpub6Expk8Z75vLhdyfopBrrcmcd3NhenAuuE4GXcX8KkwKbaQqzAe4Ywbtxu9F95hRHj79PvdtYEJcoR6gesbZ79fS4bLi1PQtm81rjxAHeLL9'; // eslint-disable-line + +const identityName = { givenNames: 'Max', otherNames: 'Abc', familyNames: 'Mustermann' }; +const identityDateOfBirth = { day: 20, month: 3, year: 1978 }; + +const miniCryptoManager = new MiniCryptoManagerImpl(); +const signAttestationSubject = (subject, xprv, xpub) => { + const { label } = subject; + const { data } = subject; + const tupleToHash = JSON.stringify({ xpub, label, data }); + const hashToSignHex = sjcl.codec.hex.fromBits(sjcl.hash.sha256.hash(tupleToHash)); + const keyName = `TEMP_KEY_${new Date().getTime()}`; + miniCryptoManager.installKey(keyName, xprv); + const signature = miniCryptoManager.sign(keyName, hashToSignHex); + + return { + pub: xpub, + label, + data, + signature, + }; +}; + +describe('Unit tests for Verifiable Credential Proxy', () => { + beforeAll(() => { + schemaLoader.addLoader(new CVCSchemaLoader()); + }); + + beforeEach(() => { + schemaLoader.reset(); + }); + + test('Dont construct undefined Credentials', async () => { + const name = await Claim.create('claim-cvc:Identity.name-v1', identityName); + const dob = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', identityDateOfBirth); + + return expect(VC.create('cvc:cred:Test', uuidv4(), null, [name, dob], '1')) + .rejects.toThrow(/cvc:cred:Test is not defined/); + }); + + test('New Defined Credentials', async () => { + const name = await Claim.create('claim-cvc:Identity.name-v1', identityName); + const dob = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', identityDateOfBirth); + const cred = await VC.create('credential-cvc:Identity-v1', uuidv4(), null, [name, dob], '1'); + expect(cred).toBeDefined(); + expect(cred.claim.identity.name.givenNames).toBe('Max'); + expect(cred.claim.identity.name.otherNames).toBe('Abc'); + expect(cred.claim.identity.name.familyNames).toBe('Mustermann'); + expect(cred.claim.identity.dateOfBirth.day).toBe(20); + expect(cred.claim.identity.dateOfBirth.month).toBe(3); + expect(cred.claim.identity.dateOfBirth.year).toBe(1978); + expect(cred.proof.leaves).toHaveLength(8); + }); + + test('should validate new defined credentials with the obligatory Meta:expirationDate UCA with' + + ' null value', async () => { + const name = await Claim.create('claim-cvc:Identity.name-v1', identityName); + const dob = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', identityDateOfBirth); + const cred = await VC.create('credential-cvc:Identity-v1', uuidv4(), null, [name, dob], '1'); + expect(cred).toBeDefined(); + expect(cred.expirationDate).toBeNull(); + }); + + test('New Expirable Credentials', async () => { + const name = await Claim.create('claim-cvc:Identity.name-v1', identityName); + const dob = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', identityDateOfBirth); + const cred = await VC.create('credential-cvc:Identity-v1', uuidv4(), '-1d', [name, dob], '1'); + expect(cred).toBeDefined(); + expect(cred.claim.identity.name.givenNames).toBe('Max'); + expect(cred.claim.identity.name.otherNames).toBe('Abc'); + expect(cred.claim.identity.name.familyNames).toBe('Mustermann'); + expect(cred.claim.identity.dateOfBirth.day).toBe(20); + expect(cred.claim.identity.dateOfBirth.month).toBe(3); + expect(cred.claim.identity.dateOfBirth.year).toBe(1978); + expect(_.find(cred.proof.leaves, { identifier: 'cvc:Meta:issuer' })).toBeDefined(); + expect(_.find(cred.proof.leaves, { identifier: 'cvc:Meta:issuanceDate' })).toBeDefined(); + expect(cred.expirationDate).toBeDefined(); + expect(_.find(cred.proof.leaves, { identifier: 'cvc:Meta:expirationDate' })).toBeDefined(); + expect(cred.proof.leaves).toHaveLength(8); + }); + + test('New Defined Credentials return the incorrect global Credential Identifier', async () => { + const name = await Claim.create('claim-cvc:Identity.name-v1', identityName); + const dob = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', identityDateOfBirth); + const cred = await VC.create('credential-cvc:Identity-v1', uuidv4(), null, [name, dob], '1'); + expect(cred.getGlobalIdentifier()).toBe('credential-credential-cvc:Identity-v1-1'); + }); + + it('should request an anchor for Credential and return an temporary attestation', async (done) => { + const name = await Claim.create('claim-cvc:Identity.name-v1', identityName); + const dob = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', identityDateOfBirth); + const cred = await VC.create('credential-cvc:Identity-v1', uuidv4(), '-1d', [name, dob], '1'); + return cred.requestAnchor().then((updated) => { + expect(updated.proof.anchor.type).toBe('temporary'); + expect(updated.proof.anchor.value).not.toBeDefined(); + expect(updated.proof.anchor).toBeDefined(); + expect(updated.proof.anchor.schema).toBe('dummy-20180201'); + done(); + }); + }); + + it('should refresh an temporary anchoring with an permanent one', async (done) => { + const name = await Claim.create('claim-cvc:Identity.name-v1', identityName); + const dob = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', identityDateOfBirth); + const cred = await VC.create('credential-cvc:Identity-v1', uuidv4(), null, [name, dob], '1'); + + cred.requestAnchor = jest.fn().mockImplementation(async () => { + // mock the function or otherwise it would call the server + const credentialContents = fs.readFileSync('__test__/creds/proxyFixtures/VCPermanentAnchor.json', 'utf8'); + const mockedVc = await VC.fromJSON(JSON.parse(credentialContents)); + mockedVc.updateAnchor = jest.fn().mockImplementation(async () => mockedVc); + return mockedVc; + }); + return cred.requestAnchor().then((updated) => { + expect(updated.proof.anchor).toBeDefined(); + return updated.updateAnchor().then((newUpdated) => { + expect(newUpdated.proof.anchor.type).toBe('permanent'); + expect(newUpdated.proof.anchor).toBeDefined(); + expect(newUpdated.proof.anchor.subject).toBeDefined(); + done(); + }); + }); + }); + + test('Filter claims from Identity Name', async () => { + const nameUca = await Claim.create('claim-cvc:Identity.name-v1', identityName); + + const dobUca = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', identityDateOfBirth); + const simpleIdentity = await VC.create('credential-cvc:Identity-v1', + 'did:ethr:0xaf9482c84De4e2a961B98176C9f295F9b6008BfD', null, [nameUca, dobUca], '1'); + + const filtered = simpleIdentity.filter(['claim-cvc:Name.givenNames-v1']); + expect(filtered.claim.identity.name.givenNames).toBeDefined(); + expect(filtered.claim.identity.name.otherNames).not.toBeDefined(); + expect(filtered.claim.identity.name.familyNames).not.toBeDefined(); + + const emptyFiltered = simpleIdentity.filter([]); + expect(emptyFiltered.credentialSubject).toEqual({}); + }); + + it('Should filter claims for Email asking for claim-cvc:Contact.email-v1 and return them on the filtered VC', + async () => { + const email = { + domain: { + tld: 'oVaPsceZ4C', + name: 'UTpHKFyaaB', + }, + username: 'ZcMpCBQ0lE', + }; + + const emailUca = await Claim.create('claim-cvc:Contact.email-v1', email, '1'); + const emailCredential = await VC.create('credential-cvc:Email-v1', '', null, [emailUca], '1'); + const filtered = emailCredential.filter(['claim-cvc:Contact.email-v1']); + expect(filtered.claim.contact.email.domain).toBeDefined(); + expect(filtered.claim.contact.email.domain.tld).toBe('oVaPsceZ4C'); + expect(filtered.claim.contact.email.domain.name).toBe('UTpHKFyaaB'); + expect(filtered.claim.contact.email.username).toBe('ZcMpCBQ0lE'); + }); + + it('Should filter claims for Email asking for cvc:Contact:domain and not return the cvc:Contact:address', + async () => { + const email = { + domain: { + tld: 'oVaPsceZ4C', + name: 'UTpHKFyaaB', + }, + username: 'ZcMpCBQ0lE', + }; + + const emailUca = await Claim.create('claim-cvc:Contact.email-v1', email, '1'); + const emailCredential = await VC.create( + 'credential-cvc:Email-v1', '', null, [emailUca], '1', + ); + const filtered = emailCredential.filter(['claim-cvc:Email.domain-v1']); + + expect(filtered.claim.contact.email.domain).toBeDefined(); + expect(filtered.claim.contact.email.domain.tld).toBe('oVaPsceZ4C'); + expect(filtered.claim.contact.email.domain.name).toBe('UTpHKFyaaB'); + expect(filtered.claim.contact.email.username).toBeUndefined(); + }); + + it('Should filter claims for Address asking for claim-cvc:Type.address-v1' + + 'and return the claim-cvc:Type.address-v1', async () => { + const value = { + country: 'X2sEB9F9W9', + county: 'sDlIM4Rjpo', + state: 'ZZEOrbenrM', + street: 'JkHgN5gdZ2', + unit: 'fo9OmPSZNe', + city: 'LVkRGsKqIf', + postalCode: '5JhmWkXBAg', + }; + + const uca = await Claim.create('claim-cvc:Identity.address-v1', value, '1'); + const credential = await VC.create( + 'credential-cvc:Address-v1', '', null, [uca], '1', + ); + const filtered = credential.filter(['claim-cvc:Identity.address-v1']); + + expect(filtered.claim.identity.address).toBeDefined(); + expect(filtered.claim.identity.address.country).toBe('X2sEB9F9W9'); + expect(filtered.claim.identity.address.county).toBe('sDlIM4Rjpo'); + expect(filtered.claim.identity.address.state).toBe('ZZEOrbenrM'); + expect(filtered.claim.identity.address.street).toBe('JkHgN5gdZ2'); + expect(filtered.claim.identity.address.unit).toBe('fo9OmPSZNe'); + expect(filtered.claim.identity.address.city).toBe('LVkRGsKqIf'); + expect(filtered.claim.identity.address.postalCode).toBe('5JhmWkXBAg'); + }); + + it('Should filter claims for PhoneNumber asking for credential-cvc:PhoneNumber-v1 and return the full claim', + async () => { + const value = { + country: '1ApYikRwDl', + countryCode: 'U4drpB96Hk', + number: 'kCTGifTdom', + extension: 'sXZpZJTe4R', + lineType: 'OaguqgUaR7', + }; + + const uca = await Claim.create('claim-cvc:Contact.phoneNumber-v1', value, '1'); + const credential = await VC.create( + 'credential-cvc:PhoneNumber-v1', '', null, [uca], '1', + ); + const filtered = credential.filter(['claim-cvc:Contact.phoneNumber-v1']); + + expect(filtered.claim.contact.phoneNumber).toBeDefined(); + expect(filtered.claim.contact.phoneNumber.country).toBe('1ApYikRwDl'); + expect(filtered.claim.contact.phoneNumber.countryCode).toBe('U4drpB96Hk'); + expect(filtered.claim.contact.phoneNumber.extension).toBe('sXZpZJTe4R'); + expect(filtered.claim.contact.phoneNumber.lineType).toBe('OaguqgUaR7'); + expect(filtered.claim.contact.phoneNumber.number).toBe('kCTGifTdom'); + }); + + it('Should filter claims for GenericDocumentId asking for claim-cvc:Identity.dateOfBirth-v1 and return nothing', + async () => { + const typeValue = 'passport'; + const type = await Claim.create('claim-cvc:Document.type-v1', typeValue, '1'); + const numberValue = '3bj1LUg9yG'; + const number = await Claim.create('claim-cvc:Document.number-v1', numberValue, '1'); + const nameValue = { + givenNames: 'e8qhs4Iak1', + familyNames: '4h8sLtEfav', + otherNames: 'bDTn4stMpX', + }; + const name = await Claim.create('claim-cvc:Document.name-v1', nameValue, '1'); + const genderValue = 'jFtCBFceQI'; + const gender = await Claim.create('claim-cvc:Document.gender-v1', genderValue, '1'); + const issueLocationValue = 'OZbhzBU8ng'; + const issueLocation = await Claim.create('claim-cvc:Document.issueLocation-v1', issueLocationValue, '1'); + const issueAuthorityValue = 'BO2xblNSVK'; + const issueAuthority = await Claim.create('claim-cvc:Document.issueAuthority-v1', issueAuthorityValue, '1'); + const issueCountryValue = 'p4dNUeAKtI'; + const issueCountry = await Claim.create('claim-cvc:Document.issueCountry-v1', issueCountryValue, '1'); + const placeOfBirthValue = 'r4hIHbyLru'; + const placeOfBirth = await Claim.create('claim-cvc:Document.placeOfBirth-v1', placeOfBirthValue, '1'); + const dateOfBirthValue = { + day: 23, + month: 2, + year: 1973, + }; + const dateOfBirth = await Claim.create('claim-cvc:Document.dateOfBirth-v1', dateOfBirthValue, '1'); + const addressValue = { + country: 'IH4aiXuEoo', + county: 'akKjaQehNK', + state: 'IQB7oLhSnS', + street: '52Os5zJgkh', + unit: '3dGDkhEHxW', + city: 'WU9GJ0R9be', + postalCode: 'ci1DMuz16W', + }; + const address = await Claim.create('claim-cvc:Document.address-v1', addressValue, '1'); + const propertiesValue = { + dateOfIssue: { + day: 18, + month: 6, + year: 1928, + }, + dateOfExpiry: { + day: 8, + month: 1, + year: 1957, + }, + }; + const properties = await Claim.create('claim-cvc:Document.properties-v1', propertiesValue, '1'); + const imageValue = { + front: '9NMgeFErNd', + frontMD5: 'zgOvmWXruS', + back: 'uPrJKO3cbq', + backMD5: '0yr9zkdApo', + }; + const image = await Claim.create('cvc:Document:image', imageValue, '1'); + const credential = await VC.create( + 'credential-cvc:GenericDocumentId-v1', '', null, [type, number, name, gender, issueAuthority, + issueLocation, issueCountry, placeOfBirth, properties, address, image, dateOfBirth], '1', + ); + const filtered = credential.filter(['claim-cvc:Identity.dateOfBirth-v1']); + + expect(filtered.claim.document).toBeUndefined(); + }); + + it('Should filter claims for PhoneNumber asking for cvc:Phone:countryCode and return only the' + + ' claim for country code', async () => { + const value = { + country: '1ApYikRwDl', + countryCode: 'U4drpB96Hk', + number: 'kCTGifTdom', + extension: 'sXZpZJTe4R', + lineType: 'OaguqgUaR7', + }; + const uca = await Claim.create('claim-cvc:Contact.phoneNumber-v1', value, '1'); + const credential = await VC.create('credential-cvc:PhoneNumber-v1', '', null, [uca], '1'); + const filtered = credential.filter(['claim-cvc:PhoneNumber.countryCode-v1']); + + expect(filtered.claim.contact.phoneNumber).toBeDefined(); + expect(filtered.claim.contact.phoneNumber.country).toBeUndefined(); + expect(filtered.claim.contact.phoneNumber.countryCode).toBe('U4drpB96Hk'); + expect(filtered.claim.contact.phoneNumber.extension).toBeUndefined(); + expect(filtered.claim.contact.phoneNumber.lineType).toBeUndefined(); + expect(filtered.claim.contact.phoneNumber.number).toBeUndefined(); + }); + + it('Should create IdDocument-v1 credential', async () => { + const type = await Claim.create('claim-cvc:Document.type-v1', 'passport', '1'); + const number = await Claim.create('claim-cvc:Document.number-v1', 'FP12345', '1'); + const nameValue = { + givenNames: 'e8qhs4Iak1', + familyNames: 'e8qak1', + otherNames: 'qhs4I', + }; + const name = await Claim.create('claim-cvc:Document.name-v1', nameValue, '1'); + const gender = await Claim.create('claim-cvc:Document.gender-v1', 'M', '1'); + const issueCountry = await Claim.create('claim-cvc:Document.issueCountry-v1', 'Brazil', '1'); + const placeOfBirth = await Claim.create('claim-cvc:Document.placeOfBirth-v1', 'Belo Horizonte', '1'); + const dateOfBirthValue = identityDateOfBirth; + const dateOfBirth = await Claim.create('claim-cvc:Document.dateOfBirth-v1', dateOfBirthValue, '1'); + const dateOfExpiryValue = { + day: 12, + month: 2, + year: 2025, + }; + const dateOfExpiry = await Claim.create('claim-cvc:Document.dateOfExpiry-v1', dateOfExpiryValue, '1'); + const nationality = await Claim.create('claim-cvc:Document.nationality-v1', 'Brazilian', '1'); + + const credential = await VC.create( + 'credential-cvc:IdDocument-v1', '', null, [type, number, name, gender, + issueCountry, placeOfBirth, dateOfBirth, dateOfExpiry, nationality], '1', + ); + expect(credential).toBeDefined(); + }); + + it('Should create IdDocument-v2 credential', async () => { + const type = await Claim.create('claim-cvc:Document.type-v1', 'passport', '1'); + const number = await Claim.create('claim-cvc:Document.number-v1', 'FP12345', '1'); + const nameValue = { + givenNames: 'e8qhs4Iak1', + familyNames: 'e8qak1', + otherNames: 'qhs4I', + }; + const name = await Claim.create('claim-cvc:Document.name-v1', nameValue, '1'); + const gender = await Claim.create('claim-cvc:Document.gender-v1', 'M', '1'); + const issueCountry = await Claim.create('claim-cvc:Document.issueCountry-v1', 'Brazil', '1'); + const placeOfBirth = await Claim.create('claim-cvc:Document.placeOfBirth-v1', 'Belo Horizonte', '1'); + const dateOfBirthValue = identityDateOfBirth; + const dateOfBirth = await Claim.create('claim-cvc:Document.dateOfBirth-v1', dateOfBirthValue, '1'); + const dateOfExpiryValue = { + day: 12, + month: 2, + year: 2025, + }; + const dateOfExpiry = await Claim.create('claim-cvc:Document.dateOfExpiry-v1', dateOfExpiryValue, '1'); + const nationality = await Claim.create('claim-cvc:Document.nationality-v1', 'Brazilian', '1'); + + const evidencesValue = { + idDocumentFront: { + algorithm: 'sha256', + data: 'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855', + }, + idDocumentBack: { + algorithm: 'sha256', + data: 'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855', + }, + selfie: { + algorithm: 'sha256', + data: 'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855', + }, + }; + const evidences = await Claim.create('claim-cvc:Document.evidences-v1', evidencesValue, '1'); + + const credential = await VC.create( + 'credential-cvc:IdDocument-v2', '', null, [type, number, name, gender, + issueCountry, placeOfBirth, dateOfBirth, dateOfExpiry, nationality, evidences], '1', + ); + expect(credential).toBeDefined(); + const filtered = credential.filter(['claim-cvc:Document.dateOfBirth-v1']); + expect(filtered).toBeDefined(); + }); + + it('Should hydrate a partial presentation', async () => { + const presentation = await VC.fromJSON(filteredCredentialJson, true); + expect(presentation).toBeDefined(); + + return expect(VC.fromJSON(filteredCredentialJson)).rejects.toThrow(); + }); + + it('Should create alt:Identity-v1 credential', async () => { + const nameValue = { + givenNames: 'e8qhs4Iak1', + familyNames: 'e8qak1', + otherNames: 'qhs4I', + }; + const name = await Claim.create('claim-cvc:Document.name-v1', nameValue, '1'); + const dateOfBirthValue = identityDateOfBirth; + const dateOfBirth = await Claim.create('claim-cvc:Document.dateOfBirth-v1', dateOfBirthValue, '1'); + const addressValue = { + country: 'IH4aiXuEoo', + county: 'akKjaQehNK', + state: 'IQB7oLhSnS', + street: '52Os5zJgkh', + unit: '3dGDkhEHxW', + city: 'WU9GJ0R9be', + postalCode: 'ci1DMuz16W', + }; + const address = await Claim.create('claim-cvc:Document.address-v1', addressValue, '1'); + + const credential = await VC.create( + 'credential-alt:Identity-v1', '', null, [name, dateOfBirth, address], '1', + ); + expect(credential).toBeDefined(); + }); + + it.skip('Should create and verify a credential with an array of clains ', async () => { + const covidDetails = { + patient: { + fullName: 'Patient Name', + dateOfBirth: { + day: 2, + month: 2, + year: 1945, + }, + }, + vaccinations: [ + { + vaccinationId: 'vID-123', + dateOfAdministration: '150000001', + name: 'Pfizer', + manufacturer: { + name: 'Pfizer', + code: { + name: 'codeName', + code: 'codeCode', + codeSystem: 'codeCodeSystem', + codeSystemName: 'codeCodeSystemName', + }, + }, + detail: { + createdAt: { + day: 2, + month: 2, + year: 1945, + }, + updatedAt: { + day: 2, + month: 2, + year: 1945, + }, + }, + organization: { + name: 'CVS', + }, + codes: [ + { + name: 'codeName1', + code: 'codeCode1', + codeSystem: 'codeCodeSystem1', + codeSystemName: 'codeCodeSystemName1', + }, + { + name: 'codeName2', + code: 'codeCode2', + codeSystem: 'codeCodeSystem3', + codeSystemName: 'codeCodeSystemName3', + }, + ], + }, + { + vaccinationId: 'vID-124', + dateOfAdministration: '150000002', + name: 'Pfizer', + organization: { + name: 'CVS', + }, + }, + ], + tests: [ + { + testId: 'tID-23', + testDate: '150000008', + resultDate: '150000010', + type: 'testType', + result: 'negative', + codes: [ + { + name: 'codeName21', + code: 'codeCode21', + codeSystem: 'codeCodeSystem21', + codeSystemName: 'codeCodeSystemName21', + }, + { + name: 'codeName22', + code: 'codeCode22', + codeSystem: 'codeCodeSystem23', + codeSystemName: 'codeCodeSystemName23', + }, + ], + }, + { + testId: 'tID-25', + testDate: '150000028', + resultDate: '150000020', + type: 'testType', + result: 'negative', + }, + ], + }; + const covidClaim = await Claim.create('claim-cvc:Medical.covid19-v1', covidDetails); + + const credential = await VC.create( + 'credential-cvc:Covid19-v1', '', null, [covidClaim], '1', + ); + expect(credential).toBeDefined(); + expect(credential.verifyProofs()).toBeTruthy(); + }); + + it('Should filter claims for GenericDocumentId asking for cvc:Document:Type and return only that claim', + async () => { + const typeValue = 'passport'; + const type = await Claim.create('claim-cvc:Document.type-v1', typeValue, '1'); + const numberValue = '3bj1LUg9yG'; + const number = await Claim.create('claim-cvc:Document.number-v1', numberValue, '1'); + const nameValue = { + givenNames: 'e8qhs4Iak1', + familyNames: '4h8sLtEfav', + otherNames: 'bDTn4stMpX', + }; + const name = await Claim.create('claim-cvc:Document.name-v1', nameValue, '1'); + const genderValue = 'jFtCBFceQI'; + const gender = await Claim.create('claim-cvc:Document.gender-v1', genderValue, '1'); + const issueLocationValue = 'OZbhzBU8ng'; + const issueLocation = await Claim.create('claim-cvc:Document.issueLocation-v1', issueLocationValue, '1'); + const issueAuthorityValue = 'BO2xblNSVK'; + const issueAuthority = await Claim.create('claim-cvc:Document.issueAuthority-v1', issueAuthorityValue, '1'); + const issueCountryValue = 'p4dNUeAKtI'; + const issueCountry = await Claim.create('claim-cvc:Document.issueCountry-v1', issueCountryValue, '1'); + const placeOfBirthValue = 'r4hIHbyLru'; + const placeOfBirth = await Claim.create('claim-cvc:Document.placeOfBirth-v1', placeOfBirthValue, '1'); + const dateOfBirthValue = { + day: 23, + month: 2, + year: 1973, + }; + const dateOfBirth = await Claim.create('claim-cvc:Document.dateOfBirth-v1', dateOfBirthValue, '1'); + const addressValue = { + country: 'IH4aiXuEoo', + county: 'akKjaQehNK', + state: 'IQB7oLhSnS', + street: '52Os5zJgkh', + unit: '3dGDkhEHxW', + city: 'WU9GJ0R9be', + postalCode: 'ci1DMuz16W', + }; + const address = await Claim.create('claim-cvc:Document.address-v1', addressValue, '1'); + const propertiesValue = { + dateOfIssue: { + day: 18, + month: 6, + year: 1928, + }, + dateOfExpiry: { + day: 8, + month: 1, + year: 1957, + }, + }; + const properties = await Claim.create('claim-cvc:Document.properties-v1', propertiesValue, '1'); + const imageValue = { + front: '9NMgeFErNd', + frontMD5: 'zgOvmWXruS', + back: 'uPrJKO3cbq', + backMD5: '0yr9zkdApo', + }; + const image = await Claim.create('cvc:Document:image', imageValue, '1'); + const credential = await VC.create( + 'credential-cvc:GenericDocumentId-v1', '', null, [type, number, name, gender, issueAuthority, + issueLocation, issueCountry, placeOfBirth, properties, address, image, dateOfBirth], '1', + ); + const filtered = credential.filter(['claim-cvc:Document.type-v1']); + + expect(filtered.claim.document.type).toBe('passport'); + }); + + it('Should verify an VC of type Email', async () => { + const credJSon = require('./proxyFixtures/Email.json'); // eslint-disable-line + const cred = await VC.fromJSON(credJSon); + expect(cred).toBeDefined(); + expect(cred.verifyProofs()).toBeTruthy(); + }); + + it('Should not verify an VC of with tampered domain Email', async () => { + const credJSon = require('./proxyFixtures/Email.json'); // eslint-disable-line + const cred = await VC.fromJSON(credJSon); + expect(cred).toBeDefined(); + cred.claim.contact.email.domain.name = 'civic'; + expect(await cred.verifyProofs()).toBeFalsy(); + }); + + it('Should not verify an VC of with tampered username Email', async () => { + const credJSon = require('./proxyFixtures/Email.json'); // eslint-disable-line + const cred = await VC.fromJSON(credJSon); + expect(cred).toBeDefined(); + cred.claim.contact.email.username = 'jpMustermann'; + expect(await cred.verifyProofs()).toBeFalsy(); + }); + + it('Should verify an VC of type Address', async () => { + const credJSon = require('./proxyFixtures/Address.json'); // eslint-disable-line + const cred = await VC.fromJSON(credJSon); + expect(cred).toBeDefined(); + expect(cred.verifyProofs()).toBeTruthy(); + }); + + it('Should not verify an VC of tampered Address', async () => { + const credJSon = require('./proxyFixtures/Address.json'); // eslint-disable-line + const cred = await VC.fromJSON(credJSon); + expect(cred).toBeDefined(); + cred.claim.identity.address.city = 'Rio de Janeiro'; + expect(await cred.verifyProofs()).toBeFalsy(); + }); + + it('Should verify an VC of type Identity', async () => { + const credJSon = require('./proxyFixtures/Identity.json'); // eslint-disable-line + const cred = await VC.fromJSON(credJSon); + expect(cred).toBeDefined(); + expect(cred.verifyProofs()).toBeTruthy(); + }); + + it('Should verify an VC of type GenericDocumentId and doing await VC.fromJSON', async () => { + const credJSon = require('./proxyFixtures/GenericDocumentId.json'); // eslint-disable-line + const cred = await VC.fromJSON(credJSon); + expect(cred).toBeDefined(); + expect(cred.verifyProofs()).toBeTruthy(); + }); + + it('Should not verify an VC of tampered GenericDocumentId', async () => { + const credJSon = require('./proxyFixtures/GenericDocumentId.json'); // eslint-disable-line + const cred = await VC.fromJSON(credJSon); + expect(cred).toBeDefined(); + cred.claim.document.dateOfBirth.day = 20; + cred.claim.document.dateOfBirth.year = 1900; + + expect(await cred.verifyProofs()).toBeFalsy(); + }); + + it('Should verify an VC of type PhoneNumber', async () => { + const credJSon = require('./proxyFixtures/PhoneNumber.json'); // eslint-disable-line + const cred = await VC.fromJSON(credJSon); + expect(cred).toBeDefined(); + expect(await cred.verifyProofs()).toBeTruthy(); + }); + + + // This breaks VC.verify - verify has been deprecated + test.skip('cred.verify(): with a valid cred without expirationDate, should return at least' + + ' VERIFY_LEVELS.PROOFS level', async () => { + const credJSon = require('./proxyFixtures/Cred1.json'); // eslint-disable-line + const cred = await VC.fromJSON(credJSon); + expect(cred).toBeDefined(); + expect(await cred.verify()).toBeGreaterThanOrEqual(VC.VERIFY_LEVELS.PROOFS); + }); + + it('Should verify an credential json with no cryptographic security', async () => { + const credential = require('./proxyFixtures/PhoneNumber.json'); // eslint-disable-line + const isValid = await VC.nonCryptographicallySecureVerify(credential); + expect(isValid).toBeTruthy(); + }); + + it('Should verify a not anchored VC with non cryptographic verify', async () => { + const value = { + country: '1ApYikRwDl', + countryCode: 'U4drpB96Hk', + number: 'kCTGifTdom', + extension: 'sXZpZJTe4R', + lineType: 'OaguqgUaR7', + }; + + const uca = await Claim.create('claim-cvc:Contact.phoneNumber-v1', value, '1'); + const credential = await VC.create('credential-cvc:PhoneNumber-v1', '', null, [uca], '1'); + const isValid = await VC.nonCryptographicallySecureVerify(credential); + expect(isValid).toBeTruthy(); + }); + + it('Should fail verification of a VC with invalid cryptographic security', + async () => expect(VC.cryptographicallySecureVerify(invalidEmailJson)).resolves.toBeFalsy()); + + it('Should verify an VC with cryptographic security', async (done) => { + const credJSon = require('./proxyFixtures/PhoneNumber.json'); // eslint-disable-line + const credential = await VC.fromJSON(credJSon); + + let isValid = await VC.cryptographicallySecureVerify(credential); + expect(isValid).toBeTruthy(); + + const verifyAttestationFunc = () => true; + isValid = await VC.cryptographicallySecureVerify(credential, verifyAttestationFunc); + expect(isValid).toBeTruthy(); + + const verifySignatureFunc = () => true; + isValid = await VC.cryptographicallySecureVerify(credential, verifyAttestationFunc, verifySignatureFunc); + expect(isValid).toBeTruthy(); + + done(); + }); + + it('Should return false if attestation or signature check fail on cryptographic verification', async (done) => { + const credJSon = require('./proxyFixtures/PhoneNumber.json'); // eslint-disable-line + const credential = await VC.fromJSON(credJSon); + + let verifyAttestationFunc = () => false; + let isValid = await VC.cryptographicallySecureVerify(credential, verifyAttestationFunc); + expect(isValid).toBeFalsy(); + + verifyAttestationFunc = () => true; + const verifySignatureFunc = () => false; + isValid = await VC.cryptographicallySecureVerify(credential, verifyAttestationFunc, verifySignatureFunc); + expect(isValid).toBeFalsy(); + + done(); + }); + + test('cred.verify(): VERIFY_LEVELS.PROOFS without expirationDate INVALID', async () => { + const credJSon = require('./proxyFixtures/Cred1.json'); // eslint-disable-line + // messing up with the targetHash: + credJSon.proof.leaves[0].targetHash = credJSon.proof.leaves[0].targetHash.replace('a', 'b'); + const cred = await VC.fromJSON(credJSon); + expect(cred).toBeDefined(); + expect(await cred.verify()).toEqual(VC.VERIFY_LEVELS.INVALID); + }); + + it('should fail verification since it doesn\'t have an Meta:expirationDate UCA', async () => { + const credJSon = require('./proxyFixtures/Cred1.json'); // eslint-disable-line + // messing up with the targetHash: + credJSon.proof.leaves[0].targetHash = credJSon.proof.leaves[0].targetHash.replace('a', 'b'); + const cred = await VC.fromJSON(credJSon); + expect(cred).toBeDefined(); + expect(await cred.verifyProofs()).toBeFalsy(); + }); + + test('cred.verifyProofs(): with a valid cred with expirationDate, should return TRUE', async () => { + const credJSon = require('./proxyFixtures/CredWithFutureExpiry.json'); // eslint-disable-line + const cred = await VC.fromJSON(credJSon); + expect(cred).toBeDefined(); + expect(cred.verifyProofs()).toBeTruthy(); + }); + + test('cred.verifyProofs(): with a valid cred but expired, should return FALSE', async () => { + const credJSon = require('./proxyFixtures/CredExpired.json'); // eslint-disable-line + const cred = await VC.fromJSON(credJSon); + expect(cred).toBeDefined(); + expect(await cred.verifyProofs()).not.toBeTruthy(); + }); + + it('should fail verification since the leaf value is tampered', async () => { + const credentialContents = fs.readFileSync('__test__/creds/proxyFixtures/VCWithTamperedLeafValue.json', 'utf8'); + const credentialJson = JSON.parse(credentialContents); + const cred = await VC.fromJSON(credentialJson); + expect(await cred.verifyProofs()).not.toBeTruthy(); + }); + + it('should check that signature matches for the root of the Merkle Tree', async (done) => { + const credentialContents = fs.readFileSync('__test__/creds/proxyFixtures/VCPermanentAnchor.json', 'utf8'); + const credentialJson = JSON.parse(credentialContents); + const cred = await VC.fromJSON(credentialJson); + expect(cred).toBeDefined(); + expect(cred.proof.anchor).toBeDefined(); + expect(await cred.verifyAnchorSignature()).toBeTruthy(); + done(); + }); + + it('should check that signature matches for the root of the Merkle Tree using a pinned key', async (done) => { + const credentialContents = fs.readFileSync('__test__/creds/proxyFixtures/VCPermanentAnchor.json', 'utf8'); + const credentialJson = JSON.parse(credentialContents); + const cred = await VC.fromJSON(credentialJson); + expect(cred).toBeDefined(); + expect(cred.proof.anchor).toBeDefined(); + expect(await cred.verifyAnchorSignature(XPUB1)).toBeTruthy(); + done(); + }); + + it('should fail to check that signature using a bad pinned key', async (done) => { + const credentialContents = fs.readFileSync('__test__/creds/proxyFixtures/VCPermanentAnchor.json', 'utf8'); + const credentialJson = JSON.parse(credentialContents); + const cred = await VC.fromJSON(credentialJson); + expect(cred).toBeDefined(); + expect(cred.proof.anchor).toBeDefined(); + expect(() => cred.verifyAnchorSignature(XPUB1.replace('9', '6'))).toThrow(); + done(); + }); + + it('should tamper the root of Merkle and the signature should not match', async (done) => { + const credentialContents = fs.readFileSync('__test__/creds/proxyFixtures/VCPermanentAnchor.json', 'utf8'); + const credentialJson = JSON.parse(credentialContents); + const cred = await VC.fromJSON(credentialJson); + // tamper merkle root + cred.proof.merkleRoot = 'gfdagfagfda'; + expect(cred).toBeDefined(); + expect(cred.proof.anchor).toBeDefined(); + expect(await cred.verifyAnchorSignature()).toBeFalsy(); + done(); + }); + + it('should have a empty "granted" field just after construct a VC', async (done) => { + const name = await Claim.create('claim-cvc:Identity.name-v1', identityName); + const dob = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', identityDateOfBirth); + const cred = await VC.create('credential-cvc:Identity-v1', uuidv4(), null, [name, dob], '1'); + + expect(cred).toBeDefined(); + expect(cred.granted).toBeNull(); + + done(); + }); + + it('should have a empty "granted" field just after construct a VC from a JSON', async (done) => { + const credentialContents = fs.readFileSync('__test__/creds/proxyFixtures/VCPermanentAnchor.json', 'utf8'); + const credentialJson = JSON.parse(credentialContents); + const cred = await VC.fromJSON(credentialJson); + expect(cred).toBeDefined(); + expect(cred.granted).toBeNull(); + + done(); + }); + + it('should throw exception id ".grantUsageFor()" request without proper ".requestAnchor()" first', async (done) => { + const name = await Claim.create('claim-cvc:Identity.name-v1', identityName); + const dob = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', identityDateOfBirth); + const cred = await VC.create('credential-cvc:Identity-v1', uuidv4(), null, [name, dob], '1'); + + expect(cred).toBeDefined(); + expect(cred.granted).toBeNull(); + + const requestorId = 'REQUESTOR_ID_12345'; + const requestId = new Date().getTime(); // simulate an nonce ID + try { + cred.grantUsageFor(requestorId, requestId, { pvtKey: XPVT1 }); + } catch (err) { + expect(err.message).toEqual('Invalid credential attestation/anchor'); + done(); + } + }); + + it('should have a filled "granted" field after ".grantUsageFor()" request', async (done) => { + const name = await Claim.create('claim-cvc:Identity.name-v1', identityName); + const dob = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', identityDateOfBirth); + const cred = await VC.create('credential-cvc:Identity-v1', uuidv4(), null, [name, dob], '1'); + await cred.requestAnchor(); + expect(cred).toBeDefined(); + expect(cred.granted).toBeNull(); + cred.proof.anchor.subject = signAttestationSubject(cred.proof.anchor.subject, XPVT1, XPUB1); + const requestorId = 'ANY_REQUESTOR_ID_12345'; + const requestId = new Date().getTime(); // simulate an nonce ID + cred.grantUsageFor(requestorId, requestId, { pvtKey: XPVT1 }); + expect(cred.granted).not.toBeNull(); + done(); + }); + + it('should have a filled "granted" field after ".grantUsageFor()" request (fromJSON test)', async (done) => { + const credentialContents = fs.readFileSync('__test__/creds/proxyFixtures/VCPermanentAnchor.json', 'utf8'); + const credentialJson = JSON.parse(credentialContents); + const cred = await VC.fromJSON(credentialJson); + expect(cred).toBeDefined(); + // expect(cred.granted).toBeNull(); + cred.proof.anchor.subject = signAttestationSubject(cred.proof.anchor.subject, XPVT1, XPUB1); + const requestorId = 'ANY_REQUESTOR_ID_12345'; + const requestId = new Date().getTime(); // simulate an nonce ID + cred.grantUsageFor(requestorId, requestId, { pvtKey: XPVT1 }); + expect(cred.granted).not.toBeNull(); + done(); + }); + + it('should verifyGrant() accordingly', async (done) => { + const name = await Claim.create('claim-cvc:Identity.name-v1', identityName); + const dob = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', identityDateOfBirth); + const cred = await VC.create('credential-cvc:Identity-v1', uuidv4(), null, [name, dob], '1'); + const anchoredCred = await cred.requestAnchor(); + expect(anchoredCred).toBeDefined(); + expect(anchoredCred.granted).toBeNull(); + + const subject = signAttestationSubject(anchoredCred.proof.anchor.subject, XPVT1, XPUB1); + const signedCred = await VC.fromJSON(_.merge({}, anchoredCred, { proof: { anchor: { subject } } })); + + const requestorId = 'ANY_REQUESTOR_ID_12345'; + const requestId = new Date().getTime(); // simulate an nonce ID + signedCred.grantUsageFor(requestorId, requestId, { pvtKey: XPVT1 }); + + // simulate a wire transmission + const transmittedCred = JSON.stringify(signedCred, null, 2); + expect(transmittedCred).toBeDefined(); + + // + const receivedCred = await VC.fromJSON(JSON.parse(transmittedCred)); + expect(receivedCred.granted).not.toBeNull(); + + const verifyGrant = receivedCred.verifyGrant(requestorId, requestId); + expect(verifyGrant).toEqual(true); + + done(); + }); + + it('should fail verifyGrant() with a invalid "granted" token', async (done) => { + const name = await Claim.create('claim-cvc:Identity.name-v1', identityName); + const dob = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', identityDateOfBirth); + const cred = await VC.create('credential-cvc:Identity-v1', uuidv4(), null, [name, dob], '1'); + const anchoredCred = await cred.requestAnchor(); + expect(anchoredCred).toBeDefined(); + expect(anchoredCred.granted).toBeNull(); + + const subject = signAttestationSubject(anchoredCred.proof.anchor.subject, XPVT1, XPUB1); + const signedCred = await VC.fromJSON(_.merge({}, anchoredCred, { proof: { anchor: { subject } } })); + + const requestorId = 'ANY_REQUESTOR_ID_12345'; + const requestId = new Date().getTime(); // simulate an nonce ID + signedCred.grantUsageFor(requestorId, requestId, { pvtKey: XPVT1 }); + + // simulate a wire transmission + const transmittedCred = JSON.stringify(signedCred, null, 2); + expect(transmittedCred).toBeDefined(); + + // + const receivedCred = await VC.fromJSON(JSON.parse(transmittedCred)); + expect(receivedCred.granted).not.toBeNull(); + + // Simulate a invalid granted token - one not based on the same nonce + // eslint-disable-next-line + receivedCred.granted = '304502210085f6baceefcddefff535416df0eda6c9b8a01dcba592c599ec2c83cce7171dd802204473f5a15b3904dbf0fc309fe812fbf449948714938fb4871196d338ef38f1d1'; + + const verifyGrant = receivedCred.verifyGrant(requestorId, requestId); + expect(verifyGrant).toEqual(false); + + done(); + }); + + it('should verify a granted credential json with requesterGrantVerify', async (done) => { + const name = await Claim.create('claim-cvc:Identity.name-v1', identityName); + const dob = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', identityDateOfBirth); + const cred = await VC.create('credential-cvc:Identity-v1', uuidv4(), null, [name, dob], '1'); + const anchoredCred = await cred.requestAnchor(); + expect(anchoredCred).toBeDefined(); + expect(anchoredCred.granted).toBeNull(); + + const subject = signAttestationSubject(anchoredCred.proof.anchor.subject, XPVT1, XPUB1); + const signedCred = await VC.fromJSON(_.merge({}, anchoredCred, { proof: { anchor: { subject } } })); + + const requestorId = 'ANY_REQUESTOR_ID_12345'; + const requestId = new Date().getTime(); // simulate an nonce ID + signedCred.grantUsageFor(requestorId, requestId, { pvtKey: XPVT1 }); + + // simulate a wire transmission + const transmittedCred = JSON.stringify(signedCred, null, 2); + expect(transmittedCred).toBeDefined(); + expect(transmittedCred.granted).not.toBeNull(); + + const credentialObj = JSON.parse(transmittedCred); + + const verifyGrant = VC.requesterGrantVerify(credentialObj, requestorId, requestId); + expect(verifyGrant).toEqual(true); + + done(); + }); + + it('should fail to verify a credential json with invalid granted token with requesterGrantVerify', async (done) => { + const name = await Claim.create('claim-cvc:Identity.name-v1', identityName); + const dob = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', identityDateOfBirth); + const cred = await VC.create('credential-cvc:Identity-v1', uuidv4(), null, [name, dob], '1'); + const anchoredCred = await cred.requestAnchor(); + expect(anchoredCred).toBeDefined(); + expect(anchoredCred.granted).toBeNull(); + + const subject = signAttestationSubject(anchoredCred.proof.anchor.subject, XPVT1, XPUB1); + const signedCred = await VC.fromJSON(_.merge({}, anchoredCred, { proof: { anchor: { subject } } })); + + const requestorId = 'ANY_REQUESTOR_ID_12345'; + const requestId = new Date().getTime(); // simulate an nonce ID + signedCred.grantUsageFor(requestorId, requestId, { pvtKey: XPVT1 }); + + // simulate a wire transmission + const transmittedCred = JSON.stringify(signedCred, null, 2); + expect(transmittedCred).toBeDefined(); + expect(transmittedCred.granted).not.toBeNull(); + + const credentialObj = JSON.parse(transmittedCred); + + // Simulate a invalid granted token - one not based on the same nonce + // eslint-disable-next-line max-len + credentialObj.proof.granted = '304502210085f6baceefcddefff535416df0eda6c9b8a01dcba592c599ec2c83cce7171dd802204473f5a15b3904dbf0fc309fe812fbf449948714938fb4871196d338ef38f1d1'; + + const verifyGrant = VC.requesterGrantVerify(credentialObj, requestorId, requestId); + expect(verifyGrant).toEqual(false); + + done(); + }); + + it('should verify() with maximum level of GRANTED', async (done) => { + const name = await Claim.create('claim-cvc:Identity.name-v1', identityName); + const dob = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', identityDateOfBirth); + const cred = await VC.create('credential-cvc:Identity-v1', uuidv4(), null, [name, dob], '1'); + const anchoredCred = await cred.requestAnchor(); + expect(anchoredCred).toBeDefined(); + expect(anchoredCred.granted).toBeNull(); + + const subject = signAttestationSubject(anchoredCred.proof.anchor.subject, XPVT1, XPUB1); + const anchorCredJSON = anchoredCred.toJSON(); + anchorCredJSON.proof.anchor.subject = subject; + + const signedCred = await VC.fromJSON(anchorCredJSON); + + const requestorId = 'ANY_REQUESTOR_ID_12345'; + const requestId = new Date().getTime(); // simulate an nonce ID + signedCred.grantUsageFor(requestorId, requestId, { pvtKey: XPVT1 }); + + // simulate a wire transmission + const transmittedCred = JSON.stringify(signedCred, null, 2); + expect(transmittedCred).toBeDefined(); + + // + const receivedCred = await VC.fromJSON(JSON.parse(transmittedCred)); + expect(receivedCred.granted).not.toBeNull(); + + const verifyLevel = await receivedCred.verify(VC.VERIFY_LEVELS.GRANTED, { + requestorId, + requestId, + }); + expect(verifyLevel).toBeGreaterThanOrEqual(VC.VERIFY_LEVELS.GRANTED); + + done(); + }); + + it('should fail verify() with maximum level of GRANTED if granted is invalid', async (done) => { + const name = await Claim.create('claim-cvc:Identity.name-v1', identityName); + const dob = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', identityDateOfBirth); + const cred = await VC.create('credential-cvc:Identity-v1', uuidv4(), null, [name, dob], '1'); + const anchoredCred = await cred.requestAnchor(); + expect(anchoredCred).toBeDefined(); + expect(anchoredCred.granted).toBeNull(); + + const subject = signAttestationSubject(anchoredCred.proof.anchor.subject, XPVT1, XPUB1); + const anchoredCredJSON = anchoredCred.toJSON(); + anchoredCredJSON.proof.anchor.subject = subject; + const signedCred = await VC.fromJSON(anchoredCredJSON); + + const requestorId = 'ANY_REQUESTOR_ID_12345'; + const requestId = new Date().getTime(); // simulate an nonce ID + signedCred.grantUsageFor(requestorId, requestId, { pvtKey: XPVT1 }); + + // simulate a wire transmission + const transmittedCred = JSON.stringify(signedCred, null, 2); + expect(transmittedCred).toBeDefined(); + + // + const receivedCred = await VC.fromJSON(JSON.parse(transmittedCred)); + expect(receivedCred.granted).not.toBeNull(); + + // Simulate a invalid granted token - one not based on the same nonce + // eslint-disable-next-line + receivedCred.granted = '304502210085f6baceefcddefff535416df0eda6c9b8a01dcba592c599ec2c83cce7171dd802204473f5a15b3904dbf0fc309fe812fbf449948714938fb4871196d338ef38f1d1'; + + const verifyLevel = await receivedCred.verify(VC.VERIFY_LEVELS.GRANTED, { + requestorId, + requestId, + }); + expect(verifyLevel).toBeGreaterThanOrEqual(VC.VERIFY_LEVELS.ANCHOR); // Should be at least one level lower + + done(); + }); + + it('should check that the anchor exists on the chain', async (done) => { + const credentialContents = fs.readFileSync('__test__/creds/proxyFixtures/VCPermanentAnchor.json', 'utf8'); + const credentialJson = JSON.parse(credentialContents); + const cred = await VC.fromJSON(credentialJson); + expect(cred).toBeDefined(); + expect(cred.proof.anchor).toBeDefined(); + const validation = await cred.verifyAttestation(); + expect(validation).toBeTruthy(); + done(); + }); + + // TODO skiing this test to release a hotfix + // We need to mock the "online" verification in this unit test to get it working + it.skip('should fail the check that the anchor exists on the chain', async (done) => { + const credentialContents = fs.readFileSync('__test__/creds/proxyFixtures/VCTempAnchor.json', 'utf8'); + const credentialJson = JSON.parse(credentialContents); + const cred = await VC.fromJSON(credentialJson); + + cred.proof.anchor.network = 'mainnet'; + + const validation = await cred.verifyAttestation(); + expect(validation).toBeFalsy(); + done(); + }); + + it('should fail the check with temporary attestations faked as permanent', async () => { + const credentialContents = fs.readFileSync('__test__/creds/proxyFixtures/CredentialAttestationFaked.json', 'utf8'); + const credentialJson = JSON.parse(credentialContents); + const cred = await VC.fromJSON(credentialJson); + + cred.proof.anchor.network = 'mainnet'; + + const shouldFail = cred.verifyAttestation(); + await expect(shouldFail).rejects.toThrow(/Error: Invalid URI/); + }); + + it('should revoke the permanent anchor and succeed verification', async (done) => { + const name = await Claim.create('claim-cvc:Identity.name-v1', identityName); + const dob = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', identityDateOfBirth); + const cred = await VC.create('credential-cvc:Identity-v1', uuidv4(), null, [name, dob], '1'); + await cred.requestAnchor(); + await cred.updateAnchor(); + const validation = await cred.verifyAttestation(); + if (validation) { + const isRevoked = await cred.revokeAttestation(); + expect(isRevoked).toBeTruthy(); + } + done(); + }); + + it('should check an unrevoked attestation and validate that is not revoked', async (done) => { + const credentialContents = fs.readFileSync('__test__/creds/proxyFixtures/VCPermanentAnchor.json', 'utf8'); + const credentialJson = JSON.parse(credentialContents); + const cred = await VC.fromJSON(credentialJson); + expect(cred).toBeDefined(); + expect(cred.proof.anchor).toBeDefined(); + const isRevoked = await cred.isRevoked(); + expect(isRevoked).toBeFalsy(); + done(); + }); + + it('Should match with one constraint', async () => { + const name = await Claim.create('claim-cvc:Identity.name-v1', identityName); + const dob = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', identityDateOfBirth); + const cred = await VC.create('credential-cvc:Identity-v1', uuidv4(), null, [name, dob], '1'); + expect(cred.isMatch({ + claims: [ + { path: 'identity.name.givenNames', is: { $eq: 'Max' } }, + ], + })).toBeTruthy(); + }); + + it('Should match with two constraints', async () => { + const name = await Claim.create('claim-cvc:Identity.name-v1', identityName); + const dob = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', identityDateOfBirth); + const cred = await VC.create('credential-cvc:Identity-v1', uuidv4(), null, [name, dob], '1'); + expect(cred.isMatch({ + claims: [ + { path: 'identity.name.givenNames', is: { $eq: 'Max' } }, + { path: 'identity.name.otherNames', is: { $eq: 'Abc' } }, + ], + })).toBeTruthy(); + }); + + it('Should fail with two constraints if one of them fails', async () => { + const name = await Claim.create('claim-cvc:Identity.name-v1', identityName); + const dob = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', identityDateOfBirth); + const cred = await VC.create('credential-cvc:Identity-v1', uuidv4(), null, [name, dob], '1'); + expect(cred.isMatch({ + claims: [ + { path: 'identity.name.givenNames', is: { $eq: 'NOT MAX' } }, + { path: 'identity.name.otherNames', is: { $eq: 'Abc' } }, + ], + })).toBeFalsy(); + }); + + it('Should match with gt constraint', async () => { + const name = await Claim.create('claim-cvc:Identity.name-v1', identityName); + const dob = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', identityDateOfBirth); + const cred = await VC.create('credential-cvc:Identity-v1', uuidv4(), null, [name, dob], '1'); + expect(cred.isMatch({ + claims: [ + { path: 'identity.dateOfBirth.year', is: { $gt: 1900 } }, + ], + })).toBeTruthy(); + }); + + it('Should match constraints targeting the parent properties of dates', async () => { + const name = await Claim.create('claim-cvc:Identity.name-v1', identityName); + const dob = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', identityDateOfBirth); + const cred = await VC.create('credential-cvc:Identity-v1', uuidv4(), null, [name, dob], '1'); + expect(cred.isMatch({ + claims: [ + { path: 'identity.dateOfBirth', is: { $lt: 1554377905342 } }, // 4-4-2019 + ], + })).toBeTruthy(); + }); + + const getExactYearsAgo = (yearDelta) => { + const exactYearsAgo = new Date(); + exactYearsAgo.setFullYear(new Date().getFullYear() - yearDelta); + return exactYearsAgo; + }; + + const dateToDOBClaim = async (date) => { + const dobClaim = { day: date.getDate(), month: date.getMonth() + 1, year: date.getFullYear() }; + return Claim.create('claim-cvc:Identity.dateOfBirth-v1', dobClaim); + }; + + it('Should match constraints targeting the parent properties and string deltas', async () => { + const exactlyFortyYearsAgo = getExactYearsAgo(40); + const dob = await dateToDOBClaim(exactlyFortyYearsAgo); + const name = await Claim.create('claim-cvc:Identity.name-v1', identityName); + + const cred = await VC.create('credential-cvc:Identity-v1', uuidv4(), null, [name, dob], '1'); + expect(cred.isMatch({ + claims: [ + { path: 'identity.dateOfBirth', is: { $lte: '-40y' } }, + ], + })).toBeTruthy(); + }); + + it('Should not match', async () => { + const name = await Claim.create('claim-cvc:Identity.name-v1', identityName); + const dob = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', identityDateOfBirth); + const cred = await VC.create('credential-cvc:Identity-v1', uuidv4(), null, [name, dob], '1'); + expect(cred.isMatch({ + claims: [ + { path: 'identity.name.first', is: { $eq: 'Maxime' } }, + ], + })).toBeFalsy(); + }); + + it('Should match credential on constraints.meta', () => { + const vcMeta = { + id: '123456789', + identifier: 'credential-cvc:Email-v1', + issuer: 'did:ethr:0xaf9482c84De4e2a961B98176C9f295F9b6008BfD', + issuanceDate: '2018-09-27T01:14:41.287Z', + expirationDate: '2028-09-26T11:22:21.287Z', + version: '1', + type: [ + 'Credential', + 'credential-cvc:Email-v1', + ], + }; + + const constraints = { + meta: { + credential: 'credential-cvc:Email-v1', + }, + }; + + expect(VC.isMatchCredentialMeta(vcMeta, constraints)).toBeTruthy(); + }); + + it('Should match credential on constraints.meta with issuer', () => { + const vcMeta = { + id: '123456789', + identifier: 'credential-cvc:Email-v1', + issuer: 'did:ethr:0xaf9482c84De4e2a961B98176C9f295F9b6008BfD', + issuanceDate: '2018-09-27T01:14:41.287Z', + expirationDate: '2028-09-26T11:22:21.287Z', + version: '1', + type: [ + 'Credential', + 'credential-cvc:Email-v1', + ], + }; + + const constraints = { + meta: { + credential: 'credential-cvc:Email-v1', + issuer: { + is: { + $eq: 'did:ethr:0xaf9482c84De4e2a961B98176C9f295F9b6008BfD', + }, + }, + }, + }; + + expect(VC.isMatchCredentialMeta(vcMeta, constraints)).toBeTruthy(); + }); + + it('Should not match credential on constraints.meta with wrong issuer', () => { + const vcMeta = { + id: '123456789', + identifier: 'credential-cvc:Email-v1', + issuer: 'did:ethr:0x00000', + issuanceDate: '2018-09-27T01:14:41.287Z', + expirationDate: '2028-09-26T11:22:21.287Z', + version: '1', + type: [ + 'Credential', + 'credential-cvc:Email-v1', + ], + }; + + const constraints = { + meta: { + credential: 'credential-cvc:Email-v1', + issuer: { + is: { + $eq: 'did:ethr:0xaf9482c84De4e2a961B98176C9f295F9b6008BfD', + }, + }, + }, + }; + + expect(VC.isMatchCredentialMeta(vcMeta, constraints)).toBeFalsy(); + }); + + it('Should match credential on constraints.meta with multiple fields', () => { + const vcMeta = { + id: '123456789', + identifier: 'credential-cvc:Email-v1', + issuer: 'did:ethr:0xaf9482c84De4e2a961B98176C9f295F9b6008BfD', + issuanceDate: '2018-09-27T01:14:41.287Z', + expirationDate: '2028-09-26T11:22:21.287Z', + version: '1', + type: [ + 'Credential', + 'credential-cvc:Email-v1', + ], + }; + + const constraints = { + meta: { + credential: 'credential-cvc:Email-v1', + issuer: { + is: { + $eq: 'did:ethr:0xaf9482c84De4e2a961B98176C9f295F9b6008BfD', + }, + }, + id: { + is: { + $eq: '123456789', + }, + }, + }, + }; + + expect(VC.isMatchCredentialMeta(vcMeta, constraints)).toBeTruthy(); + }); + + it('Should not match credential on constraints.meta with invalid field', () => { + const vcMeta = { + id: '123456789', + identifier: 'civ:Credential:CivicBasic', + issuer: 'did:ethr:0xaf9482c84De4e2a961B98176C9f295F9b6008BfD', + issuanceDate: '2018-09-27T01:14:41.287Z', + expirationDate: '2028-09-26T11:22:21.287Z', + version: '1', + type: [ + 'Credential', + 'civ:Credential:CivicBasic', + ], + }; + + const constraints = { + meta: { + credential: 'credential-civ:Credential:CivicBasic-1', + issuer: { + is: { + $eq: 'did:ethr:NOT_MATCH', + }, + }, + id: { + is: { + $eq: '123456789', + }, + }, + }, + }; + + expect(VC.isMatchCredentialMeta(vcMeta, constraints)).toBeFalsy(); + }); + + it('Should not match credential if constraints.meta are invalid or empty', () => { + const vcMeta = { + id: '123456789', + identifier: 'civ:Credential:CivicBasic', + issuer: 'did:ethr:0xaf9482c84De4e2a961B98176C9f295F9b6008BfD', + issuanceDate: '2018-09-27T01:14:41.287Z', + expirationDate: '2028-09-26T11:22:21.287Z', + version: '1', + type: [ + 'Credential', + 'civ:Credential:CivicBasic', + ], + }; + + const constraint = {}; + expect(VC.isMatchCredentialMeta(vcMeta, constraint)).toBeFalsy(); + }); + + it('Should return all Credential properties for credential-cvc:GenericDocumentId-v1', async () => { + const properties = await VC.getAllProperties('credential-cvc:GenericDocumentId-v1'); + expect(properties).toHaveLength(30); + expect(properties).toContain('document.type'); + expect(properties).toContain('document.number'); + expect(properties).toContain('document.gender'); + expect(properties).toContain('document.issueLocation'); + expect(properties).toContain('document.issueAuthority'); + expect(properties).toContain('document.issueCountry'); + expect(properties).toContain('document.placeOfBirth'); + expect(properties).toContain('document.name.givenNames'); + expect(properties).toContain('document.name.familyNames'); + expect(properties).toContain('document.name.otherNames'); + expect(properties).toContain('document.dateOfBirth.day'); + expect(properties).toContain('document.dateOfBirth.month'); + expect(properties).toContain('document.dateOfBirth.year'); + expect(properties).toContain('document.address.country'); + expect(properties).toContain('document.address.county'); + expect(properties).toContain('document.address.state'); + expect(properties).toContain('document.address.street'); + expect(properties).toContain('document.address.unit'); + expect(properties).toContain('document.address.city'); + expect(properties).toContain('document.address.postalCode'); + expect(properties).toContain('document.properties.dateOfIssue.day'); + expect(properties).toContain('document.properties.dateOfIssue.month'); + expect(properties).toContain('document.properties.dateOfIssue.year'); + expect(properties).toContain('document.properties.dateOfExpiry.day'); + expect(properties).toContain('document.properties.dateOfExpiry.month'); + expect(properties).toContain('document.properties.dateOfExpiry.year'); + expect(properties).toContain('document.image.front'); + expect(properties).toContain('document.image.frontMD5'); + expect(properties).toContain('document.image.back'); + expect(properties).toContain('document.image.backMD5'); + }); + + it('Should return all Credential properties for credential-cvc:Identity-v1', async () => { + const properties = await VC.getAllProperties('credential-cvc:Identity-v1'); + expect(properties).toHaveLength(6); + expect(properties).toContain('identity.name.givenNames'); + expect(properties).toContain('identity.name.familyNames'); + expect(properties).toContain('identity.name.otherNames'); + expect(properties).toContain('identity.dateOfBirth.day'); + expect(properties).toContain('identity.dateOfBirth.month'); + expect(properties).toContain('identity.dateOfBirth.year'); + }); + + it('Should return all Credential properties for credential-cvc:Address-v1', async () => { + const properties = await VC.getAllProperties('credential-cvc:Address-v1'); + expect(properties).toHaveLength(7); + expect(properties).toContain('identity.address.country'); + expect(properties).toContain('identity.address.county'); + expect(properties).toContain('identity.address.state'); + expect(properties).toContain('identity.address.street'); + expect(properties).toContain('identity.address.unit'); + expect(properties).toContain('identity.address.city'); + expect(properties).toContain('identity.address.postalCode'); + }); + + it('Should return all Credential properties for credential-cvc:PhoneNumber-v1', async () => { + const properties = await VC.getAllProperties('credential-cvc:PhoneNumber-v1'); + expect(properties).toHaveLength(5); + expect(properties).toContain('contact.phoneNumber.country'); + expect(properties).toContain('contact.phoneNumber.countryCode'); + expect(properties).toContain('contact.phoneNumber.number'); + expect(properties).toContain('contact.phoneNumber.extension'); + expect(properties).toContain('contact.phoneNumber.lineType'); + }); + + it('Should return all Credential properties for credential-cvc:Email-v1', async () => { + const properties = await VC.getAllProperties('credential-cvc:Email-v1'); + expect(properties).toHaveLength(3); + expect(properties).toContain('contact.email.username'); + expect(properties).toContain('contact.email.domain.name'); + expect(properties).toContain('contact.email.domain.tld'); + }); + + it('Should construct a VC with no evidence provided', async () => { + const name = await Claim.create('claim-cvc:Identity.name-v1', + { givenNames: 'Neymar', otherNames: 'Jr', familyNames: 'Mustermann' }); + const dob = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', { day: 5, month: 2, year: 1992 }); + const cred = await VC.create('credential-cvc:Identity-v1', uuidv4(), null, [name, dob], '1'); + expect(cred).toBeDefined(); + }); + + it('Should construct a VC with the provided evidence', async () => { + const evidence = { + id: 'https://idv.civic.com/evidence/f2aeec97-fc0d-42bf-8ca7-0548192dxyzab', + type: ['DocumentVerification'], + verifier: 'did:ethr:xxx', + evidenceDocument: 'Brazilian Passport', + subjectPresence: 'Digital', + documentPresence: 'Digital', + }; + const name = await Claim.create('claim-cvc:Identity.name-v1', { + givenNames: 'Neymar', + otherNames: 'Jr', + familyNames: 'Mustermann', + }); + const dob = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', { + day: 5, + month: 2, + year: 1992, + }); + const cred = await VC.create('credential-cvc:Identity-v1', uuidv4(), null, [name, dob], '1', evidence); + expect(cred.evidence).toBeDefined(); + expect(cred.evidence).toEqual([evidence]); + }); + + it('Should construct a VC with multiple evidence items', async () => { + const evidence = [ + { + id: 'https://idv.civic.com/evidence/f2aeec97-fc0d-42bf-8ca7-0548192dxyzab', + type: ['DocumentVerification'], + verifier: 'did:ethr:xxx', + evidenceDocument: 'Brazilian Passport', + subjectPresence: 'Digital', + documentPresence: 'Digital', + }, + { + id: 'https://idv.civic.com/evidence/a1adcc52-ac1d-31ff-1cd3-0123591dcadal', + type: ['DocumentVerification'], + verifier: 'did:ethr:xxx', + evidenceDocument: 'Brazilian Passport', + subjectPresence: 'Digital', + documentPresence: 'Digital', + }, + ]; + const name = await Claim.create('claim-cvc:Identity.name-v1', { + givenNames: 'Neymar', + otherNames: 'Jr', + familyNames: 'Mustermann', + }); + const dob = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', { + day: 5, + month: 2, + year: 1992, + }); + const cred = await VC.create('credential-cvc:Identity-v1', uuidv4(), null, [name, dob], '1', evidence); + expect(cred.evidence).toBeDefined(); + expect(cred.evidence).toEqual(evidence); + }); + + it('Should include only the evidence properties in the credential', async () => { + const evidence = [ + { + id: 'https://idv.civic.com/evidence/f2aeec97-fc0d-42bf-8ca7-0548192dxyzab', + type: ['DocumentVerification'], + verifier: 'did:ethr:xxx', + evidenceDocument: 'Brazilian Passport', + subjectPresence: 'Digital', + documentPresence: 'Digital', + other: 'other', + }, + ]; + const name = await Claim.create('claim-cvc:Identity.name-v1', { + givenNames: 'Neymar', + otherNames: 'Jr', + familyNames: 'Mustermann', + }); + const dob = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', { + day: 5, + month: 2, + year: 1992, + }); + const cred = await VC.create('credential-cvc:Identity-v1', uuidv4(), null, [name, dob], '1', evidence); + expect(cred.evidence).toBeDefined(); + expect(cred.evidence.other).not.toBeDefined(); + }); + + it('Should construct a credential with an evidence without id', async () => { + const evidence = [ + { + type: ['DocumentVerification'], + verifier: 'did:ethr:xxx', + evidenceDocument: 'Brazilian Passport', + subjectPresence: 'Digital', + documentPresence: 'Digital', + }, + ]; + const name = await Claim.create('claim-cvc:Identity.name-v1', { + givenNames: 'Neymar', + otherNames: 'Jr', + familyNames: 'Mustermann', + }); + const dob = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', { + day: 5, + month: 2, + year: 1992, + }); + const cred = await VC.create('credential-cvc:Identity-v1', uuidv4(), null, [name, dob], '1', evidence); + expect(cred.evidence).toBeDefined(); + expect(cred.evidence).toEqual(evidence); + }); + + it('Should throw exception if a evidence required property is missing', async () => { + const evidence = [ + { + id: 'https://idv.civic.com/evidence/f2aeec97-fc0d-42bf-8ca7-0548192dxyzab', + verifier: 'did:ethr:xxx', + evidenceDocument: 'Brazilian Passport', + subjectPresence: 'Digital', + documentPresence: 'Digital', + }, + ]; + + const name = await Claim.create('claim-cvc:Identity.name-v1', { + givenNames: 'Neymar', + otherNames: 'Jr', + familyNames: 'Mustermann', + }); + const dob = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', { + day: 5, + month: 2, + year: 1992, + }); + + return expect(VC.create( + 'credential-cvc:Identity-v1', uuidv4(), null, [name, dob], '1', evidence, + )).rejects.toThrow(/Evidence type is required/); + }); + + it('Should throw exception if evidence id is NOT a valid url', async () => { + const evidence = [ + { + id: 'not an URL', + type: ['DocumentVerification'], + verifier: 'did:ethr:xxx', + evidenceDocument: 'Brazilian Passport', + subjectPresence: 'Digital', + documentPresence: 'Digital', + }, + ]; + + const name = await Claim.create('claim-cvc:Identity.name-v1', { + givenNames: 'Neymar', + otherNames: 'Jr', + familyNames: 'Mustermann', + }); + const dob = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', { + day: 5, + month: 2, + year: 1992, + }); + + return expect(VC.create( + 'credential-cvc:Identity-v1', uuidv4(), null, [name, dob], '1', evidence, + )).rejects.toThrow(/Evidence id is not a valid URL/); + }); + + it('Should throw exception if evidence type is not an array', async () => { + const evidence = [ + { + id: 'https://idv.civic.com/evidence/f2aeec97-fc0d-42bf-8ca7-0548192dxyzab', + type: 'DocumentVerification', + verifier: 'did:ethr:xxx', + evidenceDocument: 'Brazilian Passport', + subjectPresence: 'Digital', + documentPresence: 'Digital', + }, + ]; + + const name = await Claim.create('claim-cvc:Identity.name-v1', { + givenNames: 'Neymar', + otherNames: 'Jr', + familyNames: 'Mustermann', + }); + const dob = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', { + day: 5, + month: 2, + year: 1992, + }); + + return expect(VC.create( + 'credential-cvc:Identity-v1', uuidv4(), null, [name, dob], '1', evidence, + )).rejects.toThrow(/Evidence type is not an Array object/); + }); + + it('Should create credential if all claims are provided', async () => { + const type = await Claim.create('claim-cvc:Document.type-v1', 'passport', '1'); + const number = await Claim.create('claim-cvc:Document.number-v1', '123', '1'); + const name = await Claim.create('claim-cvc:Document.name-v1', { givenNames: 'Maxime' }, '1'); + const gender = await Claim.create('claim-cvc:Document.gender-v1', 'M', '1'); + const nationality = await Claim.create('claim-cvc:Document.nationality-v1', 'Brazilian', '1'); + const placeOfBirth = await Claim.create('claim-cvc:Document.placeOfBirth-v1', 'Brazil', '1'); + const issueCountry = await Claim.create('claim-cvc:Document.issueCountry-v1', 'Brazil', '1'); + const dateOfExpiryValue = { + day: 20, + month: 3, + year: 2020, + }; + const dateOfExpiry = await Claim.create('claim-cvc:Document.dateOfExpiry-v1', dateOfExpiryValue, '1'); + const dateOfBirthValue = identityDateOfBirth; + const dateOfBirth = await Claim.create('claim-cvc:Document.dateOfBirth-v1', dateOfBirthValue, '1'); + const evidences = await Claim.create('claim-cvc:Document.evidences-v1', { + idDocumentFront: { + algorithm: 'sha256', + data: 'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855', + }, + idDocumentBack: { + algorithm: 'sha256', + data: 'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855', + }, + selfie: { + algorithm: 'sha256', + data: 'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855', + }, + }, '1'); + + const ucas = [ + type, number, name, gender, issueCountry, placeOfBirth, dateOfBirth, nationality, dateOfExpiry, evidences, + ]; + const credential = await VC.create('credential-cvc:IdDocument-v1', '', null, ucas, '1'); + expect(credential).toBeDefined(); + }); + + it('Should create credential if non-required claims are missing', async () => { + const type = await Claim.create('claim-cvc:Document.type-v1', 'passport', '1'); + const name = await Claim.create('claim-cvc:Document.name-v1', { givenNames: 'Maxime' }, '1'); + const issueCountry = await Claim.create('claim-cvc:Document.issueCountry-v1', 'Brazil', '1'); + const dateOfBirthValue = identityDateOfBirth; + const dateOfBirth = await Claim.create('claim-cvc:Document.dateOfBirth-v1', dateOfBirthValue, '1'); + + const ucas = [type, name, issueCountry, dateOfBirth]; + const credential = await VC.create('credential-cvc:IdDocument-v1', '', null, ucas, '1'); + expect(credential).toBeDefined(); + }); + + it('Should throw exception on credential creation if required uca is missing', async () => { + const type = await Claim.create('claim-cvc:Document.type-v1', 'passport', '1'); + const name = await Claim.create('claim-cvc:Document.name-v1', { givenNames: 'Maxime' }, '1'); + const issueCountry = await Claim.create('claim-cvc:Document.issueCountry-v1', 'Brazil', '1'); + + const ucas = [type, name, issueCountry]; + + return expect(VC.create('credential-cvc:IdDocument-v2', '', null, ucas, '1')).rejects + .toThrow(/Missing required claim\(s\): claim-cvc:Document.dateOfBirth-v1, claim-cvc:Document.evidences-v1/); + }); + + it('Should throw exception on credential creation if required uca is missing', async () => { + const type = await Claim.create('claim-cvc:Document.type-v1', 'passport', '1'); + const name = await Claim.create('claim-cvc:Document.name-v1', { givenNames: 'Maxime' }, '1'); + const issueCountry = await Claim.create('claim-cvc:Document.issueCountry-v1', 'Brazil', '1'); + + const ucas = [type, name, issueCountry]; + + return expect(VC.create('credential-cvc:IdDocument-v1', '', null, ucas, '1')) + .rejects.toThrow(/Missing required claim\(s\): claim-cvc:Document.dateOfBirth-v1/); + }); + + it('Should verify a VC without non-required claims', async () => { + const credJSon = require('./proxyFixtures/IdDocumentWithoutNonRequiredClaims.json'); // eslint-disable-line + const cred = await VC.fromJSON(credJSon); + expect(cred).toBeDefined(); + expect(cred.verifyProofs()).toBeTruthy(); + }); + + it('Should throw exception when creating a VC from json without required claims', async () => { + const credJSon = require('./proxyFixtures/IdDocumentWithoutRequiredClaims.json'); // eslint-disable-line + + return expect(VC.fromJSON(credJSon)) + .rejects.toThrow(); + }); +}); + +describe('Transient Credential Tests', () => { + beforeAll(() => { + schemaLoader.addLoader(new CVCSchemaLoader()); + }); + + beforeEach(() => { + schemaLoader.reset(); + }); + + it('Should create an US Address Transient Credential', async () => { + const value = { + country: 'US', + county: 'Melo Park', + state: 'California', + street: 'Oak', + unit: '12', + city: 'Palo Alto', + postalCode: '94555', + }; + + const uca = await Claim.create('claim-cvc:Identity.address-v1', value, '1'); + const credential = await VC.create('credential-cvc:UnverifiedAddress-v1', '', null, [uca], '1'); + + expect(credential).toBeDefined(); + expect(credential.transient).toBeTruthy(); + + credential.requestAnchor(); + + expect(credential.proof.anchor).toBeDefined(); + expect(credential.proof.anchor.type).toBe('transient'); + + const verified = await credential.verifyAttestation(); + expect(verified).toBeTruthy(); + + const proved = credential.verifyProofs(); + expect(proved).toBeTruthy(); + }); + + it('Should create an US SSN Transient Credential', async () => { + const value = { + areaNumber: '111', + groupNumber: '11', + serialNumber: '1111', + }; + + const uca = await Claim.create('claim-cvc:SocialSecurity.number-v1', value, '1'); + const credential = await VC.create('credential-cvc:UnverifiedSsn-v1', '', null, [uca], '1'); + + expect(credential).toBeDefined(); + expect(credential.transient).toBeTruthy(); + + credential.requestAnchor(); + + expect(credential.proof.anchor).toBeDefined(); + expect(credential.proof.anchor.type).toBe('transient'); + + const verified = await credential.verifyAttestation(); + expect(verified).toBeTruthy(); + + const proved = credential.verifyProofs(); + expect(proved).toBeTruthy(); + }); +}); + +describe('Signned Verifiable Credentials', () => { + beforeAll(() => { + schemaLoader.addLoader(new CVCSchemaLoader()); + }); + + beforeEach(() => { + schemaLoader.reset(); + }); + + test('Should create a verifiable credential instance', async () => { + const name = await Claim.create('claim-cvc:Identity.name-v1', identityName); + const dob = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', identityDateOfBirth); + const cred = await VC.create('credential-cvc:Identity-v1', uuidv4(), null, [name, dob], '1', null, + new CredentialSignerVerifier({ prvBase58 })); + expect(cred).toBeDefined(); + expect(cred.proof.merkleRootSignature).toBeDefined(); + expect(cred.verifyMerkletreeSignature(pubBase58)).toBeTruthy(); + }); + + test('Should verify credential(data only) signature', async () => { + const name = await Claim.create('claim-cvc:Identity.name-v1', identityName); + const dob = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', identityDateOfBirth); + const signerVerifier = new CredentialSignerVerifier({ prvBase58 }); + const cred = await VC.create('credential-cvc:Identity-v1', uuidv4(), null, [name, dob], '1', null, + signerVerifier); + expect(cred).toBeDefined(); + expect(cred.proof.merkleRootSignature).toBeDefined(); + + const dataOnlyCredential = JSON.parse(JSON.stringify(cred)); + expect(signerVerifier.isSignatureValid(dataOnlyCredential)).toBeTruthy(); + }); + + test('should return a new credential via the proxy', async () => { + const name = await Claim.create('claim-cvc:Identity.name-v1', identityName); + const dob = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', identityDateOfBirth); + const cred = await VC.create('credential-cvc:Identity-v3', uuidv4(), null, [name, dob], '3'); + + expect(cred.credentialSubject).toBeDefined(); + }); +}); diff --git a/__test__/creds/proxyFixtures/Address.json b/__test__/creds/proxyFixtures/Address.json new file mode 100644 index 00000000..0e198926 --- /dev/null +++ b/__test__/creds/proxyFixtures/Address.json @@ -0,0 +1,266 @@ +{ + "id": "7704ddf0-6226-4b2b-9146-d36083c7b01d", + "issuer": "jest:test:fe0c0990-e8b0-11e8-8a40-7fe4d191eb47", + "issuanceDate": "2018-11-15T08:32:30.890Z", + "identifier": "credential-cvc:Address-v1", + "expirationDate": null, + "version": "1", + "type": [ + "Credential", + "credential-cvc:Address-v1" + ], + "claim": { + "identity": { + "address": { + "city": "raSl8SUpYZ", + "country": "mqVSbDJF7I", + "county": "Lm2OhnTyw3", + "postalCode": "IZfp7BVc84", + "state": "C6vHYVzv2R", + "street": "MVJWImdrGv", + "unit": "6kP9kdNgHF" + } + } + }, + "proof": { + "type": "CvcMerkleProof2018", + "merkleRoot": "65825b6e759d96ed442aff3879fad771e4542a6bf129170fa28ad28725ae3193", + "anchor": { + "subject": { + "pub": "xpub:dummy", + "label": "credential-cvc:Address-v1", + "data": "65825b6e759d96ed442aff3879fad771e4542a6bf129170fa28ad28725ae3193", + "signature": "signed:dummy" + }, + "walletId": "none", + "cosigners": [ + { + "pub": "xpub:dummy" + }, + { + "pub": "xpub:dummy" + } + ], + "authority": { + "pub": "xpub:dummy", + "path": "/" + }, + "coin": "dummycoin", + "tx": "", + "network": "dummynet", + "type": "permanent", + "civicAsPrimary": false, + "schema": "dummy-20180201", + "value": {} + }, + "leaves": [ + { + "identifier": "claim-cvc:Identity.address-v1", + "value": "urn:address.city:0c22195bc8be13f690253e7a7d77850d6f3a2028593da99fdc87e23c8f7ad716:raSl8SUpYZ|urn:address.country:e3a8e92030c324a07c0a431f523d6311d55ec834dfe55c78a7c60f004d716ef1:mqVSbDJF7I|urn:address.county:40fbe881d6164e044d13e2bb1d5b8aa46141cdd97844c2167657d91d189c223b:Lm2OhnTyw3|urn:address.postalCode:85b81d9ce80e246f700d474ff6f3a51af21635633759754b8a527a79513365f4:IZfp7BVc84|urn:address.state:fdc1115c610e69f08c46bce846a72b71bf9c73488b92d4713a6c4c85f6cee773:C6vHYVzv2R|urn:address.street:939212e16f1e6ac159f97376d7015c962d23e0dea37eb447f3669246a122220e:MVJWImdrGv|urn:address.unit:e21c62cdfb0b874f104d3b6ed00ded1bef86a918aeee5446f63c7f7f6c3953ef:6kP9kdNgHF|", + "claimPath": "identity.address", + "targetHash": "6b8a901936f75dc4f27d12d81d3703e4d4b0199b275fce4cf339d80c06e00184", + "node": [ + { + "right": "4ad22678ea5865cf00e123357a06599943fb3c5fffc1f5aeb9881c902306b95d" + }, + { + "right": "76d6e6bc0d29bb97ba922e5a7ce868d6478b193b7b5878b7eaab560370d1e2d5" + }, + { + "right": "a68529456c987a188b58707055c1784f576333e12e588028cd9a4ae7986fc99c" + }, + { + "right": "1460a84306154ed08984336461319d4f9c5de0c9e2e79192fea82c17a7367832" + }, + { + "right": "87b8b89bcd06c7793e93567e4242ff376323ab862d3624ede4c8bed0b2364b9e" + } + ] + }, + { + "identifier": "claim-cvc:Address.county-v1", + "value": "urn:country:e3a8e92030c324a07c0a431f523d6311d55ec834dfe55c78a7c60f004d716ef1:mqVSbDJF7I|", + "claimPath": "identity.address.country", + "targetHash": "4ad22678ea5865cf00e123357a06599943fb3c5fffc1f5aeb9881c902306b95d", + "node": [ + { + "left": "6b8a901936f75dc4f27d12d81d3703e4d4b0199b275fce4cf339d80c06e00184" + }, + { + "right": "76d6e6bc0d29bb97ba922e5a7ce868d6478b193b7b5878b7eaab560370d1e2d5" + }, + { + "right": "a68529456c987a188b58707055c1784f576333e12e588028cd9a4ae7986fc99c" + }, + { + "right": "1460a84306154ed08984336461319d4f9c5de0c9e2e79192fea82c17a7367832" + }, + { + "right": "87b8b89bcd06c7793e93567e4242ff376323ab862d3624ede4c8bed0b2364b9e" + } + ] + }, + { + "identifier": "claim-cvc:Address.county-v1", + "value": "urn:county:40fbe881d6164e044d13e2bb1d5b8aa46141cdd97844c2167657d91d189c223b:Lm2OhnTyw3|", + "claimPath": "identity.address.county", + "targetHash": "03cf7915076dac2f500b5bb730738ee7c20c4fba93d4b3cdda7baf37aa6ccdfe", + "node": [ + { + "right": "30e3acf8512a5243caeabfadbdb72eec1332660e6af75e52070084eec445960f" + }, + { + "left": "1d155256a758aaa2fae08a309826350747a824be67dc263a182aac4743d14763" + }, + { + "right": "a68529456c987a188b58707055c1784f576333e12e588028cd9a4ae7986fc99c" + }, + { + "right": "1460a84306154ed08984336461319d4f9c5de0c9e2e79192fea82c17a7367832" + }, + { + "right": "87b8b89bcd06c7793e93567e4242ff376323ab862d3624ede4c8bed0b2364b9e" + } + ] + }, + { + "identifier": "claim-cvc:Address.state-v1", + "value": "urn:state:fdc1115c610e69f08c46bce846a72b71bf9c73488b92d4713a6c4c85f6cee773:C6vHYVzv2R|", + "claimPath": "identity.address.state", + "targetHash": "30e3acf8512a5243caeabfadbdb72eec1332660e6af75e52070084eec445960f", + "node": [ + { + "left": "03cf7915076dac2f500b5bb730738ee7c20c4fba93d4b3cdda7baf37aa6ccdfe" + }, + { + "left": "1d155256a758aaa2fae08a309826350747a824be67dc263a182aac4743d14763" + }, + { + "right": "a68529456c987a188b58707055c1784f576333e12e588028cd9a4ae7986fc99c" + }, + { + "right": "1460a84306154ed08984336461319d4f9c5de0c9e2e79192fea82c17a7367832" + }, + { + "right": "87b8b89bcd06c7793e93567e4242ff376323ab862d3624ede4c8bed0b2364b9e" + } + ] + }, + { + "identifier": "claim-cvc:Address.city-v1", + "value": "urn:city:0c22195bc8be13f690253e7a7d77850d6f3a2028593da99fdc87e23c8f7ad716:raSl8SUpYZ|", + "claimPath": "identity.address.city", + "targetHash": "9ccfc097a9ef2124a3b2cf1ae6ff71dd17a9adf8213adf90649594eba0e9a824", + "node": [ + { + "right": "1682744ff5a27fe7ef17086acb9d3d3d1fd4bb297d322e198027706a4432a672" + }, + { + "right": "3137574e9395e29ecbff9f9540559e7997067925a55d4d95bfe3b6e0fc3024cc" + }, + { + "left": "e682d8be77ad80c88794ad2466ad9c41e9353f14d5d2b3ca3c4c5b9fb0bf6b3c" + }, + { + "right": "1460a84306154ed08984336461319d4f9c5de0c9e2e79192fea82c17a7367832" + }, + { + "right": "87b8b89bcd06c7793e93567e4242ff376323ab862d3624ede4c8bed0b2364b9e" + } + ] + }, + { + "identifier": "claim-cvc:Address.postalCode-v1", + "value": "urn:postalCode:85b81d9ce80e246f700d474ff6f3a51af21635633759754b8a527a79513365f4:IZfp7BVc84|", + "claimPath": "identity.address.postalCode", + "targetHash": "1682744ff5a27fe7ef17086acb9d3d3d1fd4bb297d322e198027706a4432a672", + "node": [ + { + "left": "9ccfc097a9ef2124a3b2cf1ae6ff71dd17a9adf8213adf90649594eba0e9a824" + }, + { + "right": "3137574e9395e29ecbff9f9540559e7997067925a55d4d95bfe3b6e0fc3024cc" + }, + { + "left": "e682d8be77ad80c88794ad2466ad9c41e9353f14d5d2b3ca3c4c5b9fb0bf6b3c" + }, + { + "right": "1460a84306154ed08984336461319d4f9c5de0c9e2e79192fea82c17a7367832" + }, + { + "right": "87b8b89bcd06c7793e93567e4242ff376323ab862d3624ede4c8bed0b2364b9e" + } + ] + }, + { + "identifier": "cvc:Meta:issuer", + "value": "urn:issuer:40170bb006cc13d4f4868db5c7701fda8757857c910d64eff703172da20ba87d:jest:test:fe0c0990-e8b0-11e8-8a40-7fe4d191eb47|", + "claimPath": "meta.issuer", + "targetHash": "8bf25c5f15314b652511a075e9d952f8fb64582d642fc9289cc12e00547f7627", + "node": [ + { + "right": "df8a9da6a83881d4e2dc96874f8c34a32f08247614469cf3935289ea837eaa4d" + }, + { + "left": "2084b091edf3262d688d7254c92f43e718ee271db4bb74838baa34aa803c84c2" + }, + { + "left": "e682d8be77ad80c88794ad2466ad9c41e9353f14d5d2b3ca3c4c5b9fb0bf6b3c" + }, + { + "right": "1460a84306154ed08984336461319d4f9c5de0c9e2e79192fea82c17a7367832" + }, + { + "right": "87b8b89bcd06c7793e93567e4242ff376323ab862d3624ede4c8bed0b2364b9e" + } + ] + }, + { + "identifier": "cvc:Meta:issuanceDate", + "value": "urn:issuanceDate:dd867d88bef20850d36f7b5c406c68cc57657450e206eeb9da41bbf3b5773deb:2018-11-15T08:32:30.890Z|", + "claimPath": "meta.issuanceDate", + "targetHash": "df8a9da6a83881d4e2dc96874f8c34a32f08247614469cf3935289ea837eaa4d", + "node": [ + { + "left": "8bf25c5f15314b652511a075e9d952f8fb64582d642fc9289cc12e00547f7627" + }, + { + "left": "2084b091edf3262d688d7254c92f43e718ee271db4bb74838baa34aa803c84c2" + }, + { + "left": "e682d8be77ad80c88794ad2466ad9c41e9353f14d5d2b3ca3c4c5b9fb0bf6b3c" + }, + { + "right": "1460a84306154ed08984336461319d4f9c5de0c9e2e79192fea82c17a7367832" + }, + { + "right": "87b8b89bcd06c7793e93567e4242ff376323ab862d3624ede4c8bed0b2364b9e" + } + ] + }, + { + "identifier": "cvc:Meta:expirationDate", + "value": "urn:expirationDate:2fe45cc905cd094206e2e929b28ee7fc761c7e1b4e13a5e7eb9d73891333919e:null|", + "claimPath": "meta.expirationDate", + "targetHash": "7f557ffcc00e1d0b840c0024edda1a2d08ca4c8674b3ddd5c635b5bfc2566302", + "node": [ + { + "right": "8056bb669221ef4c9167cbe8d38a4eaef9146d1dc05f785170b321afc95d7f8d" + }, + { + "right": "a77fbc22a7c387002dc27970d3c63d751af5d30440ba927e72c06036b922fc3b" + }, + { + "right": "32a3703108a9698d5aeeb57ead7b66f2adba0771b259c3e1fc5818691ad3492a" + }, + { + "left": "5064c9052bd72025b4e63598ddde532d1d9efb101450366938c30a221f311b6c" + }, + { + "right": "87b8b89bcd06c7793e93567e4242ff376323ab862d3624ede4c8bed0b2364b9e" + } + ] + } + ] + } +} diff --git a/__test__/creds/proxyFixtures/Cred1.json b/__test__/creds/proxyFixtures/Cred1.json new file mode 100644 index 00000000..5f0ffcd7 --- /dev/null +++ b/__test__/creds/proxyFixtures/Cred1.json @@ -0,0 +1,145 @@ +{ + "id": "3636227c-5adf-4135-b81c-6dd1da53fd67", + "issuer": "", + "issuanceDate": "2018-11-13T18:54:11.665Z", + "identifier": "credential-cvc:Email-v1", + "expirationDate": null, + "version": "1", + "type": [ + "Credential", + "credential-cvc:Email-v1" + ], + "claim": { + "contact": { + "email": { + "domain": { + "name": "UTpHKFyaaB", + "tld": "oVaPsceZ4C" + }, + "username": "ZcMpCBQ0lE" + } + } + }, + "proof": { + "type": "CvcMerkleProof2018", + "merkleRoot": "7f62f719275f47331782c57d98e138c2c063065476f73a38c99023ddf9009287", + "anchor": "TBD (Civic Blockchain Attestation)", + "leaves": [ + { + "identifier": "claim-cvc:Contact.email-v1", + "value": "urn:email.domain.name:65572f78625ca98197745bd560fc5d8e6a7be7d8d9fcf6344947b697b73cd676:UTpHKFyaaB|urn:email.domain.tld:199c3b2cbc991cf024860f3cdfb71c956f0dea1fe397efb10ad1d8621163a9a1:oVaPsceZ4C|urn:email.username:705e41988a3659d943eeaaa5e6c91cc8de401674c4e130a7c44f5b4b2e8d7736:ZcMpCBQ0lE|", + "claimPath": "contact.email", + "targetHash": "dbd7c2e9f6369bdc1653cd29484b23324bac5cc2681bc956d5621163d10c82e7", + "node": [ + { + "right": "e3662aeff5df76f0a694848bf529ec9e52f4a981d5a0afa27e48bfeae37992d7" + }, + { + "right": "43a08a21a85219f2964a5473e270698296aeda22c08299ba61523d6b51bab102" + }, + { + "right": "825986e22e786f431106b7e262bda5a2b8d7794a5ad6158727d77c978b47d290" + }, + { + "right": "15442a3233e960fb6165bad383a9e7eca948a70576e42c627c1d71ca4bf15644" + }, + { + "right": "81c3ed3f0c3da91e4d8d8d0143c2ef10ee92f911d5f1c941d67c8545f251d5d4" + } + ] + }, + { + "identifier": "claim-cvc:Email.domain-v1", + "value": "urn:domain.name:65572f78625ca98197745bd560fc5d8e6a7be7d8d9fcf6344947b697b73cd676:UTpHKFyaaB|urn:domain.tld:199c3b2cbc991cf024860f3cdfb71c956f0dea1fe397efb10ad1d8621163a9a1:oVaPsceZ4C|", + "claimPath": "contact.email.domain", + "targetHash": "e3662aeff5df76f0a694848bf529ec9e52f4a981d5a0afa27e48bfeae37992d7", + "node": [ + { + "left": "dbd7c2e9f6369bdc1653cd29484b23324bac5cc2681bc956d5621163d10c82e7" + }, + { + "right": "43a08a21a85219f2964a5473e270698296aeda22c08299ba61523d6b51bab102" + }, + { + "right": "825986e22e786f431106b7e262bda5a2b8d7794a5ad6158727d77c978b47d290" + }, + { + "right": "15442a3233e960fb6165bad383a9e7eca948a70576e42c627c1d71ca4bf15644" + }, + { + "right": "81c3ed3f0c3da91e4d8d8d0143c2ef10ee92f911d5f1c941d67c8545f251d5d4" + } + ] + }, + { + "identifier": "cvc:Meta:issuer", + "value": "urn:issuer:3c1d9cc9f8bd5dd7f4845c18017c559ecee758c6dc2f5a3b63385bf3f681e13a:|", + "claimPath": "meta.issuer", + "targetHash": "321c8608ee0b80eab76db4d753e1f5311e722d0d77468e376bc25a78b8560b1b", + "node": [ + { + "right": "2820718fc34e3e07c40c4c0c0985937a193a63839695768f38630acfbecaf85d" + }, + { + "left": "b13aa2fb81649ae46142393ef503c7dea123f60e0909002f9f5d19a49cf8c787" + }, + { + "right": "825986e22e786f431106b7e262bda5a2b8d7794a5ad6158727d77c978b47d290" + }, + { + "right": "15442a3233e960fb6165bad383a9e7eca948a70576e42c627c1d71ca4bf15644" + }, + { + "right": "81c3ed3f0c3da91e4d8d8d0143c2ef10ee92f911d5f1c941d67c8545f251d5d4" + } + ] + }, + { + "identifier": "cvc:Meta:issuanceDate", + "value": "urn:issuanceDate:0029acb02ff26faf7775883957e9a5271b358f56734496b7ffde2760ace9ddce:2018-11-13T18:54:11.665Z|", + "claimPath": "meta.issuanceDate", + "targetHash": "2820718fc34e3e07c40c4c0c0985937a193a63839695768f38630acfbecaf85d", + "node": [ + { + "left": "321c8608ee0b80eab76db4d753e1f5311e722d0d77468e376bc25a78b8560b1b" + }, + { + "left": "b13aa2fb81649ae46142393ef503c7dea123f60e0909002f9f5d19a49cf8c787" + }, + { + "right": "825986e22e786f431106b7e262bda5a2b8d7794a5ad6158727d77c978b47d290" + }, + { + "right": "15442a3233e960fb6165bad383a9e7eca948a70576e42c627c1d71ca4bf15644" + }, + { + "right": "81c3ed3f0c3da91e4d8d8d0143c2ef10ee92f911d5f1c941d67c8545f251d5d4" + } + ] + }, + { + "identifier": "cvc:Meta:expirationDate", + "value": "urn:expirationDate:f437c1d530d5422b3df947b7d97da82c5abfee582c1be15bd2900ff35e8d0624:null|", + "claimPath": "meta.expirationDate", + "targetHash": "c73ce4be4e264f366dfc8a95abf7e507e75d13a2a06af5e50d2dc09e6c71d9cd", + "node": [ + { + "right": "8c741ed5a929697f02cfb47019d1e60ed038ac40b4f32ef52ae48ea0fa93c0fe" + }, + { + "right": "9740db43522f2170c4ad18230f53ac4dbdb9f7e423687e320767b569d6ee12be" + }, + { + "left": "63866d32feddce9393a91d54b85d370c5cfc38641ce3b4db2df73499b9347918" + }, + { + "right": "15442a3233e960fb6165bad383a9e7eca948a70576e42c627c1d71ca4bf15644" + }, + { + "right": "81c3ed3f0c3da91e4d8d8d0143c2ef10ee92f911d5f1c941d67c8545f251d5d4" + } + ] + } + ] + } +} diff --git a/__test__/creds/proxyFixtures/CredExpired.json b/__test__/creds/proxyFixtures/CredExpired.json new file mode 100644 index 00000000..25493a57 --- /dev/null +++ b/__test__/creds/proxyFixtures/CredExpired.json @@ -0,0 +1,266 @@ +{ + "id": "41ab3aaa-7ebd-4f02-a1e4-815ba6054cdd", + "issuer": "did:ethr:0xaf9482c84De4e2a961B98176C9f295F9b6008BfD", + "issuanceDate": "2018-11-14T08:59:12.241Z", + "identifier": "credential-cvc:Address-v1", + "expirationDate": "2008-11-13T22:51:32.241Z", + "version": "1", + "type": [ + "Credential", + "credential-cvc:Address-v1" + ], + "claim": { + "identity": { + "address": { + "city": "Belo Horizonte", + "country": "Brazil", + "county": "Sao Bento", + "postalCode": "94103345", + "state": "Minas Gerais", + "street": "Alameda dos Anjos", + "unit": "500" + } + } + }, + "proof": { + "type": "CvcMerkleProof2018", + "merkleRoot": "3a513a3fbf30843465c6bd77f5ba315fea3d6c5d3f7c62a4151b0484adcc48e5", + "anchor": { + "subject": { + "pub": "xpub:dummy", + "label": "credential-cvc:Address-v1", + "data": "3a513a3fbf30843465c6bd77f5ba315fea3d6c5d3f7c62a4151b0484adcc48e5", + "signature": "signed:dummy" + }, + "walletId": "none", + "cosigners": [ + { + "pub": "xpub:dummy" + }, + { + "pub": "xpub:dummy" + } + ], + "authority": { + "pub": "xpub:dummy", + "path": "/" + }, + "coin": "dummycoin", + "tx": "", + "network": "dummynet", + "type": "permanent", + "civicAsPrimary": false, + "schema": "dummy-20180201", + "value": {} + }, + "leaves": [ + { + "identifier": "claim-cvc:Identity.address-v1", + "value": "urn:address.city:304439b144c9c98eb029ebe9acfbc5ce1956ecdec9501619313fd4e1d34cd145:Belo Horizonte|urn:address.country:0ab5eb5f6129c1359e11c1eba514ffac6c5c9876a3ff99f839312dccf5560d61:Brazil|urn:address.county:2b18194dd667becedb53ee6220a3f5248c72192b98e0c5860e567ff2d948c63d:Sao Bento|urn:address.postalCode:5623d043537adf8cd8728e2fd84d457db2412ccdbed9f90d6a5daaacf412ac8b:94103345|urn:address.state:9fb2ba30a6903749669340e5c6525fa39e10a78712e1114dd4d0ee9fccc1841e:Minas Gerais|urn:address.street:5369705a0e1a693071da1e92eca865e65685509075e27cb948c098c418bb03fb:Alameda dos Anjos|urn:address.unit:fe01b55010d52d6c0dabca1e811741831c506dc4ef80b29983622fff050b83f9:500|", + "claimPath": "identity.address", + "targetHash": "e3e46c7cc3b928b17762e43b4a4850f710598b94e4fca189653c9cd9f9952cd6", + "node": [ + { + "right": "d2af8c084dfaa6c44ed13e370e09d8a3a9697d3a44085c02b04dc75b5d826b5a" + }, + { + "right": "f407ec45ab5fdcdc1b22c385bfc31d1c1ee69af95eb61c5e91e7de8153284e1d" + }, + { + "right": "3c85abb94e28c250ccc9fbc642cf974167075e503bf5a5631a43db70abdede0e" + }, + { + "right": "21793ace1e6bd8d05b818db3c37faa34eb1de20d02cacb1dc8bed2c302c7d667" + }, + { + "right": "b8972ce7e1b536cf40a8c7d8ae3eeb0ebb22a7843dd5362217e726b7ad2f9aaa" + } + ] + }, + { + "identifier": "claim-cvc:Address.city-v1", + "value": "urn:city:304439b144c9c98eb029ebe9acfbc5ce1956ecdec9501619313fd4e1d34cd145:Belo Horizonte|", + "claimPath": "identity.address.city", + "targetHash": "d2af8c084dfaa6c44ed13e370e09d8a3a9697d3a44085c02b04dc75b5d826b5a", + "node": [ + { + "left": "e3e46c7cc3b928b17762e43b4a4850f710598b94e4fca189653c9cd9f9952cd6" + }, + { + "right": "f407ec45ab5fdcdc1b22c385bfc31d1c1ee69af95eb61c5e91e7de8153284e1d" + }, + { + "right": "3c85abb94e28c250ccc9fbc642cf974167075e503bf5a5631a43db70abdede0e" + }, + { + "right": "21793ace1e6bd8d05b818db3c37faa34eb1de20d02cacb1dc8bed2c302c7d667" + }, + { + "right": "b8972ce7e1b536cf40a8c7d8ae3eeb0ebb22a7843dd5362217e726b7ad2f9aaa" + } + ] + }, + { + "identifier": "claim-cvc:Address.postalCode-v1", + "value": "urn:postalCode:5623d043537adf8cd8728e2fd84d457db2412ccdbed9f90d6a5daaacf412ac8b:94103345|", + "claimPath": "identity.address.postalCode", + "targetHash": "220824357aefd1538fd058e3ac72a2f39d1ebe145d93109b5aefc01ca3da1bf3", + "node": [ + { + "right": "f471ea8edd64a5a9a36f9bf87e5c5ce935003500cb24ca4a1db042213bbe61d1" + }, + { + "left": "2b4f29f828cb9481dc9ec609d90410f8f17751b6e353b84c92a3ade96a76565d" + }, + { + "right": "3c85abb94e28c250ccc9fbc642cf974167075e503bf5a5631a43db70abdede0e" + }, + { + "right": "21793ace1e6bd8d05b818db3c37faa34eb1de20d02cacb1dc8bed2c302c7d667" + }, + { + "right": "b8972ce7e1b536cf40a8c7d8ae3eeb0ebb22a7843dd5362217e726b7ad2f9aaa" + } + ] + }, + { + "identifier": "claim-cvc:Address.state-v1", + "value": "urn:state:9fb2ba30a6903749669340e5c6525fa39e10a78712e1114dd4d0ee9fccc1841e:Minas Gerais|", + "claimPath": "identity.address.state", + "targetHash": "f471ea8edd64a5a9a36f9bf87e5c5ce935003500cb24ca4a1db042213bbe61d1", + "node": [ + { + "left": "220824357aefd1538fd058e3ac72a2f39d1ebe145d93109b5aefc01ca3da1bf3" + }, + { + "left": "2b4f29f828cb9481dc9ec609d90410f8f17751b6e353b84c92a3ade96a76565d" + }, + { + "right": "3c85abb94e28c250ccc9fbc642cf974167075e503bf5a5631a43db70abdede0e" + }, + { + "right": "21793ace1e6bd8d05b818db3c37faa34eb1de20d02cacb1dc8bed2c302c7d667" + }, + { + "right": "b8972ce7e1b536cf40a8c7d8ae3eeb0ebb22a7843dd5362217e726b7ad2f9aaa" + } + ] + }, + { + "identifier": "claim-cvc:Address.county-v1", + "value": "urn:county:2b18194dd667becedb53ee6220a3f5248c72192b98e0c5860e567ff2d948c63d:Sao Bento|", + "claimPath": "identity.address.county", + "targetHash": "1dcd10c572b73adf74c2e7ce43244fd8673c943e05772a572b55761d7d8c1ca4", + "node": [ + { + "right": "56a50a2a6debbea623de511b769e53a6d28773199115e108ff6618b85e912081" + }, + { + "right": "3ccb667d3053fa62a7fcf42970a9a01285fe9fb786a229ecbba3da7a350a6bef" + }, + { + "left": "87557c0dd21ea97dc710a8db9787739a08ea96d12ab10d0549d9e6571d22f6e0" + }, + { + "right": "21793ace1e6bd8d05b818db3c37faa34eb1de20d02cacb1dc8bed2c302c7d667" + }, + { + "right": "b8972ce7e1b536cf40a8c7d8ae3eeb0ebb22a7843dd5362217e726b7ad2f9aaa" + } + ] + }, + { + "identifier": "claim-cvc:Address.county-v1", + "value": "urn:country:0ab5eb5f6129c1359e11c1eba514ffac6c5c9876a3ff99f839312dccf5560d61:Brazil|", + "claimPath": "identity.address.country", + "targetHash": "56a50a2a6debbea623de511b769e53a6d28773199115e108ff6618b85e912081", + "node": [ + { + "left": "1dcd10c572b73adf74c2e7ce43244fd8673c943e05772a572b55761d7d8c1ca4" + }, + { + "right": "3ccb667d3053fa62a7fcf42970a9a01285fe9fb786a229ecbba3da7a350a6bef" + }, + { + "left": "87557c0dd21ea97dc710a8db9787739a08ea96d12ab10d0549d9e6571d22f6e0" + }, + { + "right": "21793ace1e6bd8d05b818db3c37faa34eb1de20d02cacb1dc8bed2c302c7d667" + }, + { + "right": "b8972ce7e1b536cf40a8c7d8ae3eeb0ebb22a7843dd5362217e726b7ad2f9aaa" + } + ] + }, + { + "identifier": "cvc:Meta:issuer", + "value": "urn:issuer:f99a51fb30de4ed925d04ce3cbdb9bfb433b82d37fa7a813e6a1c7f9aa912bbc:did:ethr:0xaf9482c84De4e2a961B98176C9f295F9b6008BfD|", + "claimPath": "meta.issuer", + "targetHash": "f8bd53c96d5a6ee23074c1480b48e4ebf704b8aa009987f880e49511370f46f9", + "node": [ + { + "right": "a5f7edc588233634be469b499add5090fd01bdd7bba3ef05d0f48e96eea5634d" + }, + { + "left": "3608c88e75330068204d4c55c2b50a6fffa82ff856121b8c29a6717768a02008" + }, + { + "left": "87557c0dd21ea97dc710a8db9787739a08ea96d12ab10d0549d9e6571d22f6e0" + }, + { + "right": "21793ace1e6bd8d05b818db3c37faa34eb1de20d02cacb1dc8bed2c302c7d667" + }, + { + "right": "b8972ce7e1b536cf40a8c7d8ae3eeb0ebb22a7843dd5362217e726b7ad2f9aaa" + } + ] + }, + { + "identifier": "cvc:Meta:issuanceDate", + "value": "urn:issuanceDate:4e89a4981f5543ae8efbdde2ac64684a1c6decb4f004b3dd9daa8b785e1eda95:2018-11-14T08:59:12.241Z|", + "claimPath": "meta.issuanceDate", + "targetHash": "a5f7edc588233634be469b499add5090fd01bdd7bba3ef05d0f48e96eea5634d", + "node": [ + { + "left": "f8bd53c96d5a6ee23074c1480b48e4ebf704b8aa009987f880e49511370f46f9" + }, + { + "left": "3608c88e75330068204d4c55c2b50a6fffa82ff856121b8c29a6717768a02008" + }, + { + "left": "87557c0dd21ea97dc710a8db9787739a08ea96d12ab10d0549d9e6571d22f6e0" + }, + { + "right": "21793ace1e6bd8d05b818db3c37faa34eb1de20d02cacb1dc8bed2c302c7d667" + }, + { + "right": "b8972ce7e1b536cf40a8c7d8ae3eeb0ebb22a7843dd5362217e726b7ad2f9aaa" + } + ] + }, + { + "identifier": "cvc:Meta:expirationDate", + "value": "urn:expirationDate:67d7d4a87e862bd72c24b198d1773dbdf2bb6ae424617427cf434f004a03fa19:2008-11-13T22:51:32.241Z|", + "claimPath": "meta.expirationDate", + "targetHash": "552ac625ba33eaecee589d226da8bf6c206bcc634bc99d79b46f35ccd34c22f2", + "node": [ + { + "right": "f23cddd34559092bf18ea7547ce792d7b56aa105cde0107a9ad1c0b4c0f6e46e" + }, + { + "right": "67566c9a3ce09a50b184f3ac701061a04529d1bfa9b5ae4ffbcfadb6922ba7ad" + }, + { + "right": "7cd187363758f53fdaa4206c711d2f822a9ff102713e5436f79d596ca4f8068f" + }, + { + "left": "b64de3344caee3c24e934f637583b89372f4dc30f2b7f609522b285e5d0fbda8" + }, + { + "right": "b8972ce7e1b536cf40a8c7d8ae3eeb0ebb22a7843dd5362217e726b7ad2f9aaa" + } + ] + } + ] + } +} diff --git a/__test__/creds/proxyFixtures/CredFiltered1.json b/__test__/creds/proxyFixtures/CredFiltered1.json new file mode 100644 index 00000000..8cc2326b --- /dev/null +++ b/__test__/creds/proxyFixtures/CredFiltered1.json @@ -0,0 +1,220 @@ +{ + "id": null, + "issuer": "jest:test", + "issuanceDate": "2018-06-19T21:52:47.512Z", + "identifier": "credential-cvc:TestWithExcludes-v1", + "expirationDate": "2028-06-19T08:04:47.512Z", + "version": 1, + "type": [ + "Credential", + "civ:Credential:TestWithExcludes" + ], + "claim": { + "identity": { + "name": { + "first": "Joao", + "last": "Santos" + }, + "dateOfBirth": { + "day": "00000020", + "month": "00000003", + "year": "00001978" + } + } + }, + "proof": { + "type": "CivicMerkleProof2018", + "merkleRoot": "727e31f168b63192872be6c51ac476bafbdf55b927f755503b3674bd669c7483", + "anchor": { + "subject": { + "pub": "xpub:dummy", + "label": "civ:Credential:Address", + "data": "c81c5b22438916f2bd75e2966df989b9302ce65887813dd1661f9f24407c5dfe", + "signature": "signed:dummy" + }, + "walletId": "none", + "cosigners": [ + { + "pub": "xpub:dummy" + }, + { + "pub": "xpub:dummy" + } + ], + "authority": { + "pub": "xpub:dummy", + "path": "/" + }, + "coin": "dummycoin", + "tx": "", + "network": "dummynet", + "type": "permanent", + "civicAsPrimary": false, + "schema": "dummy-20180201", + "value": {} + }, + "leaves": [ + { + "identifier": "civ:Identity:name", + "value": "urn:first:06bd5d7540cac730128336b7d3018e61466168bb2a5e0d1162286c1193e53806:Joao|urn:last:5322fead9f581930aa3bd53bf8a05cf5d9a2196978d69d5c1dab32fbd201f229:Santos|urn:middle:c16c304da31a95714e7ff3842388108198f48951eab462e4b224b3ba74933a41:Barbosa|", + "claimPath": "identity.name", + "targetHash": "b611a28aa02fec445f4d10daa08c77282c048d7c085cfccaa3da1fb37df8eec3", + "node": [ + { + "right": "fb9ff4f4d59cc9e081a160513dc29a1a27a89acab5fdd850a4962769d56ae47a" + }, + { + "right": "7b90a23897ba3155c140603216fbee40b91b4fcfa3f615fbde47477861f24e10" + }, + { + "right": "e6dd11c53b1d630195c0fd0d19093907c79820bc797c71f9d06b0c00b2adfc61" + }, + { + "right": "d552f190111a5bb356075f50d9e16b041b39f6775dbcd9f93a450aee6f8fcf42" + }, + { + "right": "2cf712964d5bc60af5ae3a76e443504e4368bd8599348951e3c9b6b952ace485" + } + ] + }, + { + "identifier": "civ:Identity:name.first", + "value": "urn:first:06bd5d7540cac730128336b7d3018e61466168bb2a5e0d1162286c1193e53806:Joao", + "claimPath": "identity.name.first", + "targetHash": "fb9ff4f4d59cc9e081a160513dc29a1a27a89acab5fdd850a4962769d56ae47a", + "node": [ + { + "left": "b611a28aa02fec445f4d10daa08c77282c048d7c085cfccaa3da1fb37df8eec3" + }, + { + "right": "7b90a23897ba3155c140603216fbee40b91b4fcfa3f615fbde47477861f24e10" + }, + { + "right": "e6dd11c53b1d630195c0fd0d19093907c79820bc797c71f9d06b0c00b2adfc61" + }, + { + "right": "d552f190111a5bb356075f50d9e16b041b39f6775dbcd9f93a450aee6f8fcf42" + }, + { + "right": "2cf712964d5bc60af5ae3a76e443504e4368bd8599348951e3c9b6b952ace485" + } + ] + }, + { + "identifier": "civ:Identity:name.last", + "value": "urn:last:5322fead9f581930aa3bd53bf8a05cf5d9a2196978d69d5c1dab32fbd201f229:Santos", + "claimPath": "identity.name.last", + "targetHash": "1b7fb200672fd586f0e5af599c82b99c3c82701f0fbf1bce370a86260724a8fb", + "node": [ + { + "left": "93d81a31943bf99fca620865b2034d4efe8271ddc2aa80cca09bf02ba7b1a1af" + }, + { + "left": "16e4fa431cad803c0ff0c5901276dfb423a32544297103501467d9874182a122" + }, + { + "right": "e6dd11c53b1d630195c0fd0d19093907c79820bc797c71f9d06b0c00b2adfc61" + }, + { + "right": "d552f190111a5bb356075f50d9e16b041b39f6775dbcd9f93a450aee6f8fcf42" + }, + { + "right": "2cf712964d5bc60af5ae3a76e443504e4368bd8599348951e3c9b6b952ace485" + } + ] + }, + { + "identifier": "civ:Identity:dateOfBirth", + "value": "urn:day:7d778001ef55728251ed83acb9f845a909326c831fbf2248718a106bf61a649d:00000020|urn:month:24bb78bbda6808e4dc926d5e35bd0b95c496d79d94c7a121a7e3c2ba51df03c2:00000003|urn:year:b628c03201fd5b41f6e1dea006f42083f8ea51351e590218e7edf58dca73febf:00001978|", + "claimPath": "identity.dateOfBirth", + "targetHash": "265477d6ad8eaa1462389d3fc88e4a69e5de8a675644724efa6ee1116f6fe5df", + "node": [ + { + "right": "c37bb183602396349a53581ddca31d99b2aca4c7fb9d467959c19b00639eb1f6" + }, + { + "right": "c7dc902b0432fcae7fe083ba5feda0c1e33390c2b386d00cb2aeed0d325f75d0" + }, + { + "left": "97552ab9fd9c1b8630e644c74a0bb948284fe31800ece9c8b08bcdbe142d9e49" + }, + { + "right": "d552f190111a5bb356075f50d9e16b041b39f6775dbcd9f93a450aee6f8fcf42" + }, + { + "right": "2cf712964d5bc60af5ae3a76e443504e4368bd8599348951e3c9b6b952ace485" + } + ] + }, + { + "identifier": "civ:Meta:issuer", + "value": "urn:issuer:e98bae4cb7c700aa3bebb6d046c3d27cca56ab3701f9c1c876e70faaccb63b26:jest:test", + "claimPath": "meta.issuer", + "targetHash": "c37bb183602396349a53581ddca31d99b2aca4c7fb9d467959c19b00639eb1f6", + "node": [ + { + "left": "265477d6ad8eaa1462389d3fc88e4a69e5de8a675644724efa6ee1116f6fe5df" + }, + { + "right": "c7dc902b0432fcae7fe083ba5feda0c1e33390c2b386d00cb2aeed0d325f75d0" + }, + { + "left": "97552ab9fd9c1b8630e644c74a0bb948284fe31800ece9c8b08bcdbe142d9e49" + }, + { + "right": "d552f190111a5bb356075f50d9e16b041b39f6775dbcd9f93a450aee6f8fcf42" + }, + { + "right": "2cf712964d5bc60af5ae3a76e443504e4368bd8599348951e3c9b6b952ace485" + } + ] + }, + { + "identifier": "civ:Meta:issuanceDate", + "value": "urn:issuanceDate:6e8ec32829149c0e79f842bcea74e9ecb35b5caef8ebbef3a2cb4d0acc050c7b:2018-06-19T21:52:47.512Z", + "claimPath": "meta.issuanceDate", + "targetHash": "c2b6b8d96dd3a3ff0e08fd9ee3c92c2a1092188553264a7269f1141e7335afb6", + "node": [ + { + "right": "6393b47db993ca6de857f5ea39f987d2a324e1cfcdb8076a63a8b35b8cdab6e7" + }, + { + "left": "f737f7202ba3ae83ea9c7a7f1329c7e4e487915894a5c1869074ea843688a042" + }, + { + "left": "97552ab9fd9c1b8630e644c74a0bb948284fe31800ece9c8b08bcdbe142d9e49" + }, + { + "right": "d552f190111a5bb356075f50d9e16b041b39f6775dbcd9f93a450aee6f8fcf42" + }, + { + "right": "2cf712964d5bc60af5ae3a76e443504e4368bd8599348951e3c9b6b952ace485" + } + ] + }, + { + "identifier": "civ:Meta:expirationDate", + "value": "urn:expirationDate:f4729360448714d9902894b38f5f977702441379ffc53337f2261914879fc32d:2028-06-19T08:04:47.512Z", + "claimPath": "meta.expirationDate", + "targetHash": "6393b47db993ca6de857f5ea39f987d2a324e1cfcdb8076a63a8b35b8cdab6e7", + "node": [ + { + "left": "c2b6b8d96dd3a3ff0e08fd9ee3c92c2a1092188553264a7269f1141e7335afb6" + }, + { + "left": "f737f7202ba3ae83ea9c7a7f1329c7e4e487915894a5c1869074ea843688a042" + }, + { + "left": "97552ab9fd9c1b8630e644c74a0bb948284fe31800ece9c8b08bcdbe142d9e49" + }, + { + "right": "d552f190111a5bb356075f50d9e16b041b39f6775dbcd9f93a450aee6f8fcf42" + }, + { + "right": "2cf712964d5bc60af5ae3a76e443504e4368bd8599348951e3c9b6b952ace485" + } + ] + } + ] + } +} diff --git a/__test__/creds/proxyFixtures/CredWithFutureExpiry.json b/__test__/creds/proxyFixtures/CredWithFutureExpiry.json new file mode 100644 index 00000000..91e23a62 --- /dev/null +++ b/__test__/creds/proxyFixtures/CredWithFutureExpiry.json @@ -0,0 +1,266 @@ +{ + "id": "8a842560-40fc-4dcf-ae7f-23148a108829", + "issuer": "did:ethr:0xaf9482c84De4e2a961B98176C9f295F9b6008BfD", + "issuanceDate": "2018-11-14T09:00:43.439Z", + "identifier": "credential-cvc:Address-v1", + "expirationDate": "2028-11-13T19:08:23.439Z", + "version": "1", + "type": [ + "Credential", + "credential-cvc:Address-v1" + ], + "claim": { + "identity": { + "address": { + "city": "Belo Horizonte", + "country": "Brazil", + "county": "Sao Bento", + "postalCode": "94103345", + "state": "Minas Gerais", + "street": "Alameda dos Anjos", + "unit": "500" + } + } + }, + "proof": { + "type": "CvcMerkleProof2018", + "merkleRoot": "b9714602a25118942d5aa1e4865aabd8238c4f6b2bb74c746b2a954c9fd1b9ea", + "anchor": { + "subject": { + "pub": "xpub:dummy", + "label": "credential-cvc:Address-v1", + "data": "b9714602a25118942d5aa1e4865aabd8238c4f6b2bb74c746b2a954c9fd1b9ea", + "signature": "signed:dummy" + }, + "walletId": "none", + "cosigners": [ + { + "pub": "xpub:dummy" + }, + { + "pub": "xpub:dummy" + } + ], + "authority": { + "pub": "xpub:dummy", + "path": "/" + }, + "coin": "dummycoin", + "tx": "", + "network": "dummynet", + "type": "permanent", + "civicAsPrimary": false, + "schema": "dummy-20180201", + "value": {} + }, + "leaves": [ + { + "identifier": "claim-cvc:Identity.address-v1", + "value": "urn:address.city:ee7831025d001c630566afd1f4067e90f28caa23823e764c6295f41dff89e18a:Belo Horizonte|urn:address.country:75c6faa83a9621b3cf6e05762d1440be1a58c857faee4fab50d0c62575a3e7e6:Brazil|urn:address.county:e18f114049b5e5a37958c662a61ea27817fb69c7123bdc16c196dd460151b16a:Sao Bento|urn:address.postalCode:5bc128e2161a7cc971cca3d32da2af201d87fa7b2f236549d1d28b2dce7af318:94103345|urn:address.state:6ff19a2a4928c2d8b8c3265d44206290d686068a3ed1ae551caf4d8762a77c33:Minas Gerais|urn:address.street:e9bed36fda0902eb92c9661b4f525855105a400e7fc08083564e379befc7414d:Alameda dos Anjos|urn:address.unit:78783212de2926fc1221870bcca846d7e9378b5b750d6104b773ce776eefa961:500|", + "claimPath": "identity.address", + "targetHash": "514fc789cc8a37abd2dfdcb11017051f51cc84ae7878d2da8b190c3c5074b329", + "node": [ + { + "right": "adbded73c3db76bb49d718184588184547b511737419e51cbec04ae1be0847ac" + }, + { + "right": "cad620d70c72ef671ace60e756875d22332469924f48be0da14078d9e5814d9c" + }, + { + "right": "f7cf58c4223a7f2368e9d7bf913abd88c06ef7525ec59c45f03ebc5c9be5ac5a" + }, + { + "right": "93185bcd8244aa98c885b3ae2d8eecf01661c633fd8ed3743b31605e2fd66e55" + }, + { + "right": "5131392d9fc303b956cf03855a147a732aebc9ab70fab32828ddad319b7dd6eb" + } + ] + }, + { + "identifier": "claim-cvc:Address.city-v1", + "value": "urn:city:ee7831025d001c630566afd1f4067e90f28caa23823e764c6295f41dff89e18a:Belo Horizonte|", + "claimPath": "identity.address.city", + "targetHash": "adbded73c3db76bb49d718184588184547b511737419e51cbec04ae1be0847ac", + "node": [ + { + "left": "514fc789cc8a37abd2dfdcb11017051f51cc84ae7878d2da8b190c3c5074b329" + }, + { + "right": "cad620d70c72ef671ace60e756875d22332469924f48be0da14078d9e5814d9c" + }, + { + "right": "f7cf58c4223a7f2368e9d7bf913abd88c06ef7525ec59c45f03ebc5c9be5ac5a" + }, + { + "right": "93185bcd8244aa98c885b3ae2d8eecf01661c633fd8ed3743b31605e2fd66e55" + }, + { + "right": "5131392d9fc303b956cf03855a147a732aebc9ab70fab32828ddad319b7dd6eb" + } + ] + }, + { + "identifier": "claim-cvc:Address.postalCode-v1", + "value": "urn:postalCode:5bc128e2161a7cc971cca3d32da2af201d87fa7b2f236549d1d28b2dce7af318:94103345|", + "claimPath": "identity.address.postalCode", + "targetHash": "c8a2719635d2eb4d4dfcee2d04ec4651318c8a9406ccebd12345ca644c75b51d", + "node": [ + { + "right": "e7f430e61b6d5ac758f35e881289077978cd59ed648b841f0d8b09671bf697dd" + }, + { + "left": "7d3d13f8af2e7fffe78c393b5c2683aa0daa3495fec3197f9a8a5308ab9f233e" + }, + { + "right": "f7cf58c4223a7f2368e9d7bf913abd88c06ef7525ec59c45f03ebc5c9be5ac5a" + }, + { + "right": "93185bcd8244aa98c885b3ae2d8eecf01661c633fd8ed3743b31605e2fd66e55" + }, + { + "right": "5131392d9fc303b956cf03855a147a732aebc9ab70fab32828ddad319b7dd6eb" + } + ] + }, + { + "identifier": "claim-cvc:Address.state-v1", + "value": "urn:state:6ff19a2a4928c2d8b8c3265d44206290d686068a3ed1ae551caf4d8762a77c33:Minas Gerais|", + "claimPath": "identity.address.state", + "targetHash": "e7f430e61b6d5ac758f35e881289077978cd59ed648b841f0d8b09671bf697dd", + "node": [ + { + "left": "c8a2719635d2eb4d4dfcee2d04ec4651318c8a9406ccebd12345ca644c75b51d" + }, + { + "left": "7d3d13f8af2e7fffe78c393b5c2683aa0daa3495fec3197f9a8a5308ab9f233e" + }, + { + "right": "f7cf58c4223a7f2368e9d7bf913abd88c06ef7525ec59c45f03ebc5c9be5ac5a" + }, + { + "right": "93185bcd8244aa98c885b3ae2d8eecf01661c633fd8ed3743b31605e2fd66e55" + }, + { + "right": "5131392d9fc303b956cf03855a147a732aebc9ab70fab32828ddad319b7dd6eb" + } + ] + }, + { + "identifier": "claim-cvc:Address.county-v1", + "value": "urn:county:e18f114049b5e5a37958c662a61ea27817fb69c7123bdc16c196dd460151b16a:Sao Bento|", + "claimPath": "identity.address.county", + "targetHash": "cba237895ec0aa51ded88b320b727114472e5dfd7a70651bf51c619bdfd787e2", + "node": [ + { + "right": "ac2e07db0f6c4923e1cb67dcd387af07150d6043fcdd12ba7c884d72709b724b" + }, + { + "right": "e63c76842c514b0e9280fa7511605340eee0e9f17359643f16fa0a9fc372bb22" + }, + { + "left": "2f895fbd920dadd74aec18fb24dcb28a74caa32c0d4079250a98ba734a0ed156" + }, + { + "right": "93185bcd8244aa98c885b3ae2d8eecf01661c633fd8ed3743b31605e2fd66e55" + }, + { + "right": "5131392d9fc303b956cf03855a147a732aebc9ab70fab32828ddad319b7dd6eb" + } + ] + }, + { + "identifier": "claim-cvc:Address.county-v1", + "value": "urn:country:75c6faa83a9621b3cf6e05762d1440be1a58c857faee4fab50d0c62575a3e7e6:Brazil|", + "claimPath": "identity.address.country", + "targetHash": "ac2e07db0f6c4923e1cb67dcd387af07150d6043fcdd12ba7c884d72709b724b", + "node": [ + { + "left": "cba237895ec0aa51ded88b320b727114472e5dfd7a70651bf51c619bdfd787e2" + }, + { + "right": "e63c76842c514b0e9280fa7511605340eee0e9f17359643f16fa0a9fc372bb22" + }, + { + "left": "2f895fbd920dadd74aec18fb24dcb28a74caa32c0d4079250a98ba734a0ed156" + }, + { + "right": "93185bcd8244aa98c885b3ae2d8eecf01661c633fd8ed3743b31605e2fd66e55" + }, + { + "right": "5131392d9fc303b956cf03855a147a732aebc9ab70fab32828ddad319b7dd6eb" + } + ] + }, + { + "identifier": "cvc:Meta:issuer", + "value": "urn:issuer:fd95eb174ddb8a0ec545894995a7ee542430fd9ce20da3117b35d8fbe29b7dcb:did:ethr:0xaf9482c84De4e2a961B98176C9f295F9b6008BfD|", + "claimPath": "meta.issuer", + "targetHash": "fdc74b079604ba0a45cfdb771e677b3ae426d07d8536d18d6a1b98e5781be56a", + "node": [ + { + "right": "a286fc2a5baef447725b08cf55466589e31990038ee42269fd43d59cf186d613" + }, + { + "left": "d0d888ba93cadb3e89ab97b6fb3a08c6de2b416a83b6b492bb58253906a0fcd6" + }, + { + "left": "2f895fbd920dadd74aec18fb24dcb28a74caa32c0d4079250a98ba734a0ed156" + }, + { + "right": "93185bcd8244aa98c885b3ae2d8eecf01661c633fd8ed3743b31605e2fd66e55" + }, + { + "right": "5131392d9fc303b956cf03855a147a732aebc9ab70fab32828ddad319b7dd6eb" + } + ] + }, + { + "identifier": "cvc:Meta:issuanceDate", + "value": "urn:issuanceDate:08df34a6cea04496033a2e467019e57c17f63c730c6599a57238e77d9d842577:2018-11-14T09:00:43.439Z|", + "claimPath": "meta.issuanceDate", + "targetHash": "a286fc2a5baef447725b08cf55466589e31990038ee42269fd43d59cf186d613", + "node": [ + { + "left": "fdc74b079604ba0a45cfdb771e677b3ae426d07d8536d18d6a1b98e5781be56a" + }, + { + "left": "d0d888ba93cadb3e89ab97b6fb3a08c6de2b416a83b6b492bb58253906a0fcd6" + }, + { + "left": "2f895fbd920dadd74aec18fb24dcb28a74caa32c0d4079250a98ba734a0ed156" + }, + { + "right": "93185bcd8244aa98c885b3ae2d8eecf01661c633fd8ed3743b31605e2fd66e55" + }, + { + "right": "5131392d9fc303b956cf03855a147a732aebc9ab70fab32828ddad319b7dd6eb" + } + ] + }, + { + "identifier": "cvc:Meta:expirationDate", + "value": "urn:expirationDate:330447afa605c5d0dfc277489c3cc8cf7fb78552376629d47c2eb56eafa791cc:2028-11-13T19:08:23.439Z|", + "claimPath": "meta.expirationDate", + "targetHash": "17a922e8326ede33f3b9ce28077a6ab0babf541419b3d991842a0fbd4ce53124", + "node": [ + { + "right": "cb660f250ca9b3531adb83fa60f38d296bad4dd9c43125581c149b19e60f5e40" + }, + { + "right": "e3f1503236f58e01e0f09de72417ab3d615b55987bc22291ba8c2b8cdfe9a4af" + }, + { + "right": "6a818422c060cfb057ff8328c03f558e3f7ebdf7a69aadafee592ac061941f68" + }, + { + "left": "e9856ae68eda3f8697efc54c455430a2bbd323fa3a9cf723931b77a077db401f" + }, + { + "right": "5131392d9fc303b956cf03855a147a732aebc9ab70fab32828ddad319b7dd6eb" + } + ] + } + ] + } +} diff --git a/__test__/creds/proxyFixtures/CredentialAddress.json b/__test__/creds/proxyFixtures/CredentialAddress.json new file mode 100644 index 00000000..197bb701 --- /dev/null +++ b/__test__/creds/proxyFixtures/CredentialAddress.json @@ -0,0 +1,241 @@ +{ + "id": "fc60be8f-ea01-4881-a6e9-b4ae9a63e55e", + "issuer": "jest:test:9ff1e700-dd46-11e8-958d-e5793374641e", + "issuanceDate": "2018-10-31T19:53:23.568Z", + "identifier": "credential-cvc:PhoneNumber-v1", + "expirationDate": null, + "version": "1", + "type": [ + "Credential", + "credential-cvc:PhoneNumber-v1" + ], + "claim": { + "contact": { + "phoneNumber": { + "country": "WTYqO3zRU0", + "countryCode": "nmQfVTPkEM", + "extension": "lo6CoXdj2N", + "lineType": "zkdkjiX1eP", + "number": "h7CrPkWRoA" + } + } + }, + "proof": { + "type": "CivicMerkleProof2018", + "merkleRoot": "77ca9a60724d007173136465fa6bdcaa27d12a1801b1d1e8ab974552344d2e39", + "anchor": { + "subject": { + "pub": "xpub:dummy", + "label": "credential-cvc:PhoneNumber-v1", + "data": "77ca9a60724d007173136465fa6bdcaa27d12a1801b1d1e8ab974552344d2e39", + "signature": "signed:dummy" + }, + "walletId": "none", + "cosigners": [ + { + "pub": "xpub:dummy" + }, + { + "pub": "xpub:dummy" + } + ], + "authority": { + "pub": "xpub:dummy", + "path": "/" + }, + "coin": "dummycoin", + "tx": "", + "network": "dummynet", + "type": "permanent", + "civicAsPrimary": false, + "schema": "dummy-20180201", + "value": {} + }, + "leaves": [ + { + "identifier": "credential-cvc:PhoneNumber-v1", + "value": "urn:country:ca3bce5c4b3256888c8fa9937d3025516b49b422112bd99cdaf9be66087984e9:WTYqO3zRU0|urn:countryCode:81a228f771ef72126b22d6d17f08222f4241efedf5f13fbb635d8568686a0b6f:nmQfVTPkEM|urn:extension:42cab0927b370d5ee047152aaf52c902f80d7de312bdeca6e4c4e3d4c6603abc:lo6CoXdj2N|urn:lineType:0a71c9a31246f2f6ecfd76a7c71f34a6f741cef3afb2466cc88017bdc16d95a7:zkdkjiX1eP|urn:number:53a8ba743f83a16e533d5572c24dad080820baef958e80c39899838ba1cdd674:h7CrPkWRoA|", + "claimPath": "contact.phoneNumber", + "targetHash": "cc8f00eaf13969a880fe5d57204b509dd7cc087b99019af1c6e678d4fe072499", + "node": [ + { + "right": "082eeee25eae17f13a74b4d0801d182f9e490ddd70969d1b1a23a709fe87a184" + }, + { + "right": "cd0013b49b3d52aa5c6bf6ac854e77fcac1eab934d4c388ae5837f70172ee91e" + }, + { + "right": "a1d95e970de891aa6d227426d071a28f3440ee0a3e99f2a76c1a49193cd999f8" + }, + { + "right": "ac9e75c2d832091f3b18e974dc224ed5ef970673ed679ff931c1f4a33db3f929" + }, + { + "right": "3b2728ce00cdc42c8c524574ab20a8ea1e78efa805bba6e988c10e0c13f77d3f" + } + ] + }, + { + "identifier": "cvc:Phone:countryCode", + "value": "urn:countryCode:81a228f771ef72126b22d6d17f08222f4241efedf5f13fbb635d8568686a0b6f:nmQfVTPkEM", + "claimPath": "phone.countryCode", + "targetHash": "082eeee25eae17f13a74b4d0801d182f9e490ddd70969d1b1a23a709fe87a184", + "node": [ + { + "left": "cc8f00eaf13969a880fe5d57204b509dd7cc087b99019af1c6e678d4fe072499" + }, + { + "right": "cd0013b49b3d52aa5c6bf6ac854e77fcac1eab934d4c388ae5837f70172ee91e" + }, + { + "right": "a1d95e970de891aa6d227426d071a28f3440ee0a3e99f2a76c1a49193cd999f8" + }, + { + "right": "ac9e75c2d832091f3b18e974dc224ed5ef970673ed679ff931c1f4a33db3f929" + }, + { + "right": "3b2728ce00cdc42c8c524574ab20a8ea1e78efa805bba6e988c10e0c13f77d3f" + } + ] + }, + { + "identifier": "cvc:Phone:number", + "value": "urn:number:53a8ba743f83a16e533d5572c24dad080820baef958e80c39899838ba1cdd674:h7CrPkWRoA", + "claimPath": "phone.number", + "targetHash": "bf6403908a22f3e8c5d477498d6828411801280128289ecd8680ea8496a92d4d", + "node": [ + { + "right": "1b52b0600694813ce1992fafe6d106d10ecef752721f7c79aae6db6be8eede54" + }, + { + "left": "a9cb50eddf122581028336ac675bd83d681eaeda754aced0630e8c765914a656" + }, + { + "right": "a1d95e970de891aa6d227426d071a28f3440ee0a3e99f2a76c1a49193cd999f8" + }, + { + "right": "ac9e75c2d832091f3b18e974dc224ed5ef970673ed679ff931c1f4a33db3f929" + }, + { + "right": "3b2728ce00cdc42c8c524574ab20a8ea1e78efa805bba6e988c10e0c13f77d3f" + } + ] + }, + { + "identifier": "cvc:Phone:extension", + "value": "urn:extension:42cab0927b370d5ee047152aaf52c902f80d7de312bdeca6e4c4e3d4c6603abc:lo6CoXdj2N", + "claimPath": "phone.extension", + "targetHash": "1b52b0600694813ce1992fafe6d106d10ecef752721f7c79aae6db6be8eede54", + "node": [ + { + "left": "bf6403908a22f3e8c5d477498d6828411801280128289ecd8680ea8496a92d4d" + }, + { + "left": "a9cb50eddf122581028336ac675bd83d681eaeda754aced0630e8c765914a656" + }, + { + "right": "a1d95e970de891aa6d227426d071a28f3440ee0a3e99f2a76c1a49193cd999f8" + }, + { + "right": "ac9e75c2d832091f3b18e974dc224ed5ef970673ed679ff931c1f4a33db3f929" + }, + { + "right": "3b2728ce00cdc42c8c524574ab20a8ea1e78efa805bba6e988c10e0c13f77d3f" + } + ] + }, + { + "identifier": "cvc:Phone:lineType", + "value": "urn:lineType:0a71c9a31246f2f6ecfd76a7c71f34a6f741cef3afb2466cc88017bdc16d95a7:zkdkjiX1eP", + "claimPath": "phone.lineType", + "targetHash": "90891289e7dd6c36dd1fc38187fce024899bdd1c20bf857ff1fe439b2bd18754", + "node": [ + { + "right": "059d1df65ffdc8a1c0cff86412f716745531466cdd1c9c2c1264364bba325e01" + }, + { + "right": "7d167b4360413c5016d7bdf6b080767275e925e07c18f0a16729b882ef245ace" + }, + { + "left": "0d4f56aae6f29bab5d8f83fb595673bdc629d5d0973e78b53ad43a1bb1dd9515" + }, + { + "right": "ac9e75c2d832091f3b18e974dc224ed5ef970673ed679ff931c1f4a33db3f929" + }, + { + "right": "3b2728ce00cdc42c8c524574ab20a8ea1e78efa805bba6e988c10e0c13f77d3f" + } + ] + }, + { + "identifier": "cvc:Meta:issuer", + "value": "urn:issuer:5bd06324dc242c17e811f56c8d449b4c8f966503811abc1f5a0ff35b876fee2d:jest:test:9ff1e700-dd46-11e8-958d-e5793374641e", + "claimPath": "meta.issuer", + "targetHash": "059d1df65ffdc8a1c0cff86412f716745531466cdd1c9c2c1264364bba325e01", + "node": [ + { + "left": "90891289e7dd6c36dd1fc38187fce024899bdd1c20bf857ff1fe439b2bd18754" + }, + { + "right": "7d167b4360413c5016d7bdf6b080767275e925e07c18f0a16729b882ef245ace" + }, + { + "left": "0d4f56aae6f29bab5d8f83fb595673bdc629d5d0973e78b53ad43a1bb1dd9515" + }, + { + "right": "ac9e75c2d832091f3b18e974dc224ed5ef970673ed679ff931c1f4a33db3f929" + }, + { + "right": "3b2728ce00cdc42c8c524574ab20a8ea1e78efa805bba6e988c10e0c13f77d3f" + } + ] + }, + { + "identifier": "cvc:Meta:issuanceDate", + "value": "urn:issuanceDate:b8b3000ae66079b85aaadb9adfe6658ae09452f77fb8eefeddf96c40692c8bd7:2018-10-31T19:53:23.568Z", + "claimPath": "meta.issuanceDate", + "targetHash": "93c37224a3cd5e6dd47a98e55f42854ee5b3b9fda63f60b8076c57a59bd84f0b", + "node": [ + { + "right": "292ed3b6a33a406ae43bf0d43d159a04a5417e1a244017c174194889898de1e1" + }, + { + "left": "785d97b0b9fe7809bf55803fc3ded62180e9b01fac15a488ac84e6238eb466f3" + }, + { + "left": "0d4f56aae6f29bab5d8f83fb595673bdc629d5d0973e78b53ad43a1bb1dd9515" + }, + { + "right": "ac9e75c2d832091f3b18e974dc224ed5ef970673ed679ff931c1f4a33db3f929" + }, + { + "right": "3b2728ce00cdc42c8c524574ab20a8ea1e78efa805bba6e988c10e0c13f77d3f" + } + ] + }, + { + "identifier": "cvc:Meta:expirationDate", + "value": "urn:expirationDate:a43b2ec05674437f2e440be5c72cfcee323fe544c88e212f4bc6c463a8c35dda:null", + "claimPath": "meta.expirationDate", + "targetHash": "292ed3b6a33a406ae43bf0d43d159a04a5417e1a244017c174194889898de1e1", + "node": [ + { + "left": "93c37224a3cd5e6dd47a98e55f42854ee5b3b9fda63f60b8076c57a59bd84f0b" + }, + { + "left": "785d97b0b9fe7809bf55803fc3ded62180e9b01fac15a488ac84e6238eb466f3" + }, + { + "left": "0d4f56aae6f29bab5d8f83fb595673bdc629d5d0973e78b53ad43a1bb1dd9515" + }, + { + "right": "ac9e75c2d832091f3b18e974dc224ed5ef970673ed679ff931c1f4a33db3f929" + }, + { + "right": "3b2728ce00cdc42c8c524574ab20a8ea1e78efa805bba6e988c10e0c13f77d3f" + } + ] + } + ] + } +} diff --git a/__test__/creds/proxyFixtures/CredentialAttestationFaked.json b/__test__/creds/proxyFixtures/CredentialAttestationFaked.json new file mode 100644 index 00000000..5af6d07c --- /dev/null +++ b/__test__/creds/proxyFixtures/CredentialAttestationFaked.json @@ -0,0 +1,243 @@ +{ + "id": null, + "issuer": "d460c90d-4032-4c29-9743-f52e0a852602", + "issuanceDate": "2018-10-08T19:46:22.364Z", + "identifier": "credential-cvc:Identity-v1", + "expirationDate": null, + "version": "1", + "type": [ + "Credential", + "credential-cvc:Identity-v1" + ], + "claim": { + "identity": { + "name": { + "familyNames": "Santos", + "givenNames": "Joao", + "otherNames": "Barbosa" + }, + "dateOfBirth": { + "day": 20, + "month": 3, + "year": 1978 + } + } + }, + "proof": { + "type": "CivicMerkleProof2018", + "merkleRoot": "1fbe357dfcb0f19b0470d1017ce617bc8f3e88ff06552f425a3e2e81d6f38c10", + "anchor": { + "subject": { + "pub": "xpub:dummy", + "label": "credential-cvc:Identity-v1", + "data": "1fbe357dfcb0f19b0470d1017ce617bc8f3e88ff06552f425a3e2e81d6f38c10", + "signature": "signed:dummy" + }, + "walletId": "none", + "cosigners": [ + { + "pub": "xpub:dummy" + }, + { + "pub": "xpub:dummy" + } + ], + "authority": { + "pub": "xpub:dummy", + "path": "/" + }, + "coin": "dummycoin", + "tx": "", + "network": "dummynet", + "type": "permanent", + "civicAsPrimary": false, + "schema": "dummy-20180201" + }, + "leaves": [ + { + "identifier": "claim-cvc:Identity.name-v1", + "value": "urn:familyNames:f9cebb16c7ce72cc4cb75f49e7ca4435478be80f0a03740a97fbb508c9fe26eb:Santos|urn:givenNames:3b99f45fbd9aad638f34a40d7647293ee5c955316cf2bda31b856470efb04c49:Joao|urn:otherNames:ea17e5a9b080a9684d63983c7538fd053373f3d10245130cbedff75d82d4c714:Barbosa|", + "claimPath": "identity.name", + "targetHash": "7f576a0cfa81df08b8df1937bacfea632ab2a03f3dba4e9744c22418c0557286", + "node": [ + { + "right": "5b8d77d60a05af6dcad4c96d8e451adaaeae3e352ec20b68a5307466a5d8afbd" + }, + { + "right": "cdd1ff29f8fa9248ef3d909e76faf7011a276befb631d46a9073cd61ad420446" + }, + { + "right": "7e68e0871dc4504629bcde9669c500a9d0fc6bf1aaa701efb996943320ef2d89" + }, + { + "right": "f0bea436f87b9b691324e18afaf800411d6d2e213d180fc2721782fb393a36f0" + }, + { + "right": "efb0034a22c3f78c5435f0b33dfa120f9720313ced0b2defe465e087f3fe470b" + } + ] + }, + { + "identifier": "claim-cvc:Name.givenNames-v1", + "value": "urn:givenNames:3b99f45fbd9aad638f34a40d7647293ee5c955316cf2bda31b856470efb04c49:Joao", + "claimPath": "identity.name.givenNames", + "targetHash": "5b8d77d60a05af6dcad4c96d8e451adaaeae3e352ec20b68a5307466a5d8afbd", + "node": [ + { + "left": "7f576a0cfa81df08b8df1937bacfea632ab2a03f3dba4e9744c22418c0557286" + }, + { + "right": "cdd1ff29f8fa9248ef3d909e76faf7011a276befb631d46a9073cd61ad420446" + }, + { + "right": "7e68e0871dc4504629bcde9669c500a9d0fc6bf1aaa701efb996943320ef2d89" + }, + { + "right": "f0bea436f87b9b691324e18afaf800411d6d2e213d180fc2721782fb393a36f0" + }, + { + "right": "efb0034a22c3f78c5435f0b33dfa120f9720313ced0b2defe465e087f3fe470b" + } + ] + }, + { + "identifier": "claim-cvc:Name.otherNames-v1", + "value": "urn:otherNames:ea17e5a9b080a9684d63983c7538fd053373f3d10245130cbedff75d82d4c714:Barbosa", + "claimPath": "identity.name.otherNames", + "targetHash": "b013a25bcbb6d1fafe0ac5d07dcca6964686869463a31d3adc5baceaa0538d29", + "node": [ + { + "right": "5fdafb2f464e4798e8a46d04e70ddf210960e7717ed343cf205367f89318bab3" + }, + { + "left": "191255794cb6b5314f416cfaf7f86bc9ab01fffe2c94c4852faa9169faeaaf48" + }, + { + "right": "7e68e0871dc4504629bcde9669c500a9d0fc6bf1aaa701efb996943320ef2d89" + }, + { + "right": "f0bea436f87b9b691324e18afaf800411d6d2e213d180fc2721782fb393a36f0" + }, + { + "right": "efb0034a22c3f78c5435f0b33dfa120f9720313ced0b2defe465e087f3fe470b" + } + ] + }, + { + "identifier": "claim-cvc:Name.familyNames-v1", + "value": "urn:familyNames:f9cebb16c7ce72cc4cb75f49e7ca4435478be80f0a03740a97fbb508c9fe26eb:Santos", + "claimPath": "identity.name.familyNames", + "targetHash": "5fdafb2f464e4798e8a46d04e70ddf210960e7717ed343cf205367f89318bab3", + "node": [ + { + "left": "b013a25bcbb6d1fafe0ac5d07dcca6964686869463a31d3adc5baceaa0538d29" + }, + { + "left": "191255794cb6b5314f416cfaf7f86bc9ab01fffe2c94c4852faa9169faeaaf48" + }, + { + "right": "7e68e0871dc4504629bcde9669c500a9d0fc6bf1aaa701efb996943320ef2d89" + }, + { + "right": "f0bea436f87b9b691324e18afaf800411d6d2e213d180fc2721782fb393a36f0" + }, + { + "right": "efb0034a22c3f78c5435f0b33dfa120f9720313ced0b2defe465e087f3fe470b" + } + ] + }, + { + "identifier": "claim-cvc:Identity.dateOfBirth-v1", + "value": "urn:day:37721c821560995d992f9f6a7859f0da13a7c06908e298ece50c1f84cd16669f:00000020|urn:month:2c5a20c2f6a1cb6c74001646eecd2015bfcde98a20d9006483a2aad3d4714a3e:00000003|urn:year:7e189630ad86951dc1160624c161f1f6227f83d926233629e4a8da2d2386ae9d:00001978|", + "claimPath": "identity.dateOfBirth", + "targetHash": "93f1faaa5af8b5f9db24f660940d5fe975d71f6d29d0ee2857b47e2cef7f11e8", + "node": [ + { + "right": "45b52663fcffbc0ef018979179d16dab408b3183a64ebf534ab109b7fe594a48" + }, + { + "right": "b213a284c598763254471aac74326af69c13355404356f794c3606f0c8d85b9c" + }, + { + "left": "f89530e2b7e3e5e243674f1fe0ced3d4e660b4b3d9d2f78dc74afe7aa2069e8b" + }, + { + "right": "f0bea436f87b9b691324e18afaf800411d6d2e213d180fc2721782fb393a36f0" + }, + { + "right": "efb0034a22c3f78c5435f0b33dfa120f9720313ced0b2defe465e087f3fe470b" + } + ] + }, + { + "identifier": "cvc:Meta:issuer", + "value": "urn:issuer:769197d3d0e416dd621d75d9d0449ab30e2f501dea364cc792552df0b6e8ec05:d460c90d-4032-4c29-9743-f52e0a852602", + "claimPath": "meta.issuer", + "targetHash": "45b52663fcffbc0ef018979179d16dab408b3183a64ebf534ab109b7fe594a48", + "node": [ + { + "left": "93f1faaa5af8b5f9db24f660940d5fe975d71f6d29d0ee2857b47e2cef7f11e8" + }, + { + "right": "b213a284c598763254471aac74326af69c13355404356f794c3606f0c8d85b9c" + }, + { + "left": "f89530e2b7e3e5e243674f1fe0ced3d4e660b4b3d9d2f78dc74afe7aa2069e8b" + }, + { + "right": "f0bea436f87b9b691324e18afaf800411d6d2e213d180fc2721782fb393a36f0" + }, + { + "right": "efb0034a22c3f78c5435f0b33dfa120f9720313ced0b2defe465e087f3fe470b" + } + ] + }, + { + "identifier": "cvc:Meta:issuanceDate", + "value": "urn:issuanceDate:dbeeebc31ea7f7371540a75479ee265dab9db6a291ae406acdf80d227a49056c:2018-10-08T19:46:22.364Z", + "claimPath": "meta.issuanceDate", + "targetHash": "1702fc187d05ee760f13e143370e09298e6bd44ad0db9c8025053839b50f7968", + "node": [ + { + "right": "3319c5ed870611c4dcd9baf2f5da3c6bc77437edcaa5721283528b231892c56d" + }, + { + "left": "5396bfaf8f82259a40a4b50723d1ae0c3332ea89f064dafc2a03c8d3a5650bf1" + }, + { + "left": "f89530e2b7e3e5e243674f1fe0ced3d4e660b4b3d9d2f78dc74afe7aa2069e8b" + }, + { + "right": "f0bea436f87b9b691324e18afaf800411d6d2e213d180fc2721782fb393a36f0" + }, + { + "right": "efb0034a22c3f78c5435f0b33dfa120f9720313ced0b2defe465e087f3fe470b" + } + ] + }, + { + "identifier": "cvc:Meta:expirationDate", + "value": "urn:expirationDate:beb8164634c2a861f122a17b553ec8a35dbf1bbf8b07b921dbc752d28b12b73a:null", + "claimPath": "meta.expirationDate", + "targetHash": "3319c5ed870611c4dcd9baf2f5da3c6bc77437edcaa5721283528b231892c56d", + "node": [ + { + "left": "1702fc187d05ee760f13e143370e09298e6bd44ad0db9c8025053839b50f7968" + }, + { + "left": "5396bfaf8f82259a40a4b50723d1ae0c3332ea89f064dafc2a03c8d3a5650bf1" + }, + { + "left": "f89530e2b7e3e5e243674f1fe0ced3d4e660b4b3d9d2f78dc74afe7aa2069e8b" + }, + { + "right": "f0bea436f87b9b691324e18afaf800411d6d2e213d180fc2721782fb393a36f0" + }, + { + "right": "efb0034a22c3f78c5435f0b33dfa120f9720313ced0b2defe465e087f3fe470b" + } + ] + } + ] + } +} diff --git a/__test__/creds/proxyFixtures/CredentialEmailInvalid.json b/__test__/creds/proxyFixtures/CredentialEmailInvalid.json new file mode 100644 index 00000000..236431ba --- /dev/null +++ b/__test__/creds/proxyFixtures/CredentialEmailInvalid.json @@ -0,0 +1,177 @@ +{ + "_id": "5d55cc213f132d004ecc54d6", + "id": "81eed612-0bce-4eb5-a88f-d96c34cc5431", + "issuer": "did:ethr:0x1a88a35421a4a0d3e13fe4e8ebcf18e9a249dc5a", + "issuanceDate": "2019-08-15T21:18:25.058Z", + "identifier": "credential-cvc:Email-v1", + "expirationDate": null, + "version": "1", + "type": [ + "Credential", + "credential-cvc:Email-v1" + ], + "claim": { + "contact": { + "email": { + "domain": { + "name": "civic", + "tld": "com" + }, + "username": "invalid" + } + } + }, + "proof": { + "type": "CvcMerkleProof2018", + "merkleRoot": "bf5c9c0ca7ecc6ff9b95f7ee9d0fc641ca735ceccb8c7a949fcaae23734db2a8", + "anchor": { + "_id": "5d55cc2b047f07004e95cf40", + "subject": { + "pub": "xpub6ZfrHWxuNKiAvctVdyyhq92xRq9oXV546EpSRJUArH2jqZpWHFbEPfWQ9yNTwcrgPZzZv2ayYBkeNLmB2mh4PNytZnQfVvnVZyJ7qWb4kUr", + "label": "credential-cvc:Email-v1", + "data": "bf5c9c0ca7ecc6ff9b95f7ee9d0fc641ca735ceccb8c7a949fcaae23734db2a8", + "signature": "3045022100949e5e2eb45a9908e427235da46994171291bf8c4fe218a39c44724a387cda740220521a0060c1855aacbc5b85d16361f2559f2976a7506809d4c7ee29cd4000cd31" + }, + "cosigners": [ + { + "pub": "xpub661MyMwAqRbcFML6P96tik5kQ2hZmL2p6yD72dTdh4gJafpwrWRgqEUhx1k9RjztGJ4LscYrcqYUiH6hKksbsUZrFCmpjqgZCa9sKtbyWvi" + }, + { + "pub": "xpub661MyMwAqRbcFHnyf1o6Q6dTNTuqfL5qLZqAFnnaDjbhqPvHJyJ1XaCGbuokdRC6SAv1NB1GU3FnBP9yw7F5cxJiqerZXGkRWvJdRrqGYZ8" + } + ], + "authority": { + "pub": "xpub661MyMwAqRbcFeLHVqQi8mo3Ck1yz7aDcWV6MTKpai7p8pw9fNstmqY3x4Te9hf3sKkD1mMqPiLjjiCvkaCLRm1zv2KBneudxJ4ZZZH4q92", + "path": "/1/0/0/0" + }, + "tx": "01000000011539906515adfb3e4b3127527268b74a701fa268b001f43cf91680edcb5fc65b00000000fc00473044022064eae65f425779bd2c9fc1deaaf97ba3b040788f3dce7d061409d5837ce5332202202669fc56ebb2e0d9814ae0178751c37576bc410f15afee592de62ee3a3016fb8014730440220519684f041c96859184d9364c7e63a991b4a62fcf75f902f980be4aaf3997ab502206ee68c7a8c32675dc4c3f950d50c2a7dbdcebabcbaf5ee9ecec6c0a1fa88d679014c69522102a3318eddcb8b8070798df9325208e3cb23a0a80779b9eea57dadbc07b097a5d821028ff94b0224911a4d1efa9f236e315fd394fd19393c8b62d5807da4c30f90f929210222fd97636daac00985045072cdd13b8feb5b08384d2fb9df3c8f882a1e4a692a53aeffffffff01551500000000000017a914cee83ff767d0417767d6d035e0ece8b0859f9df98700000000", + "type": "temporary", + "network": "bitcoincashTestnet", + "schema": "tbch-20180201", + "requestId": "5d55cc2a047f07004e95cf3f", + "deletedAt": -1 + }, + "leaves": [ + { + "identifier": "claim-cvc:Contact.email-v1", + "value": "urn:email.domain.name:ccbadf46768f874a143cee3cd84e5256221ffc6118a34eb75fcbef1e9b4be7ef:civic|urn:email.domain.tld:df3c5d1d8298b341e48f17b12dc74cad129c2b337b9653516ed9b04e36d3d01b:com|urn:email.username:820487c5d3a32806aa71887c0f6fe479ffff9e0eae30f20144c4b64935116a34:testUsername|", + "claimPath": "contact.email", + "targetHash": "68b90b962c5aabfdf97b9f0149441e196f0b849fa908af88dd6c1abb74e4a517", + "node": [ + { + "right": "16c0dd39f9a3da5a791010d3bb7a6e893de936586465c53d1b2d157f3ea15e7b" + }, + { + "right": "49b250f44b2bf2d204490ea686e34570f25d9612291981e6fde84f139a1e692e" + }, + { + "right": "dacdb82bac682cd4e7a15462cd0e3f2fc003e5bb88b00ce7610e5f4fa4dbbcb4" + }, + { + "right": "062cdef9d0440ae5fc8537175922017b56fff0acf23209a2270222470c1c5420" + }, + { + "right": "c12996ffd5e6f394f401dece6bb90d9576b22e6dedca11d734a80b7eb35698bd" + } + ] + }, + { + "identifier": "claim-cvc:Email.domain-v1", + "value": "urn:domain.name:ccbadf46768f874a143cee3cd84e5256221ffc6118a34eb75fcbef1e9b4be7ef:civic|urn:domain.tld:df3c5d1d8298b341e48f17b12dc74cad129c2b337b9653516ed9b04e36d3d01b:com|", + "claimPath": "contact.email.domain", + "targetHash": "16c0dd39f9a3da5a791010d3bb7a6e893de936586465c53d1b2d157f3ea15e7b", + "node": [ + { + "left": "68b90b962c5aabfdf97b9f0149441e196f0b849fa908af88dd6c1abb74e4a517" + }, + { + "right": "49b250f44b2bf2d204490ea686e34570f25d9612291981e6fde84f139a1e692e" + }, + { + "right": "dacdb82bac682cd4e7a15462cd0e3f2fc003e5bb88b00ce7610e5f4fa4dbbcb4" + }, + { + "right": "062cdef9d0440ae5fc8537175922017b56fff0acf23209a2270222470c1c5420" + }, + { + "right": "c12996ffd5e6f394f401dece6bb90d9576b22e6dedca11d734a80b7eb35698bd" + } + ] + }, + { + "identifier": "cvc:Meta:issuer", + "value": "urn:issuer:4a7fae9e883f1902ab24c0acb2a35ae0c02cf129aa2d53b3c4eba1c2d522ee3c:did:ethr:0x1a88a35421a4a0d3e13fe4e8ebcf18e9a249dc5a|", + "claimPath": "meta.issuer", + "targetHash": "84676aff46e82e2ffd7b4863f1ea715dee3fc67783375bcc4cbfe0f1da02dcf2", + "node": [ + { + "right": "5188fbf5359a890af182b29df1aeb53aad598cd592f6e082a622f44a734bc4da" + }, + { + "left": "ddf3d00dfd62881820130196cd0ccdfb1306f7b44c1c9b60ee262aff98bc4309" + }, + { + "right": "dacdb82bac682cd4e7a15462cd0e3f2fc003e5bb88b00ce7610e5f4fa4dbbcb4" + }, + { + "right": "062cdef9d0440ae5fc8537175922017b56fff0acf23209a2270222470c1c5420" + }, + { + "right": "c12996ffd5e6f394f401dece6bb90d9576b22e6dedca11d734a80b7eb35698bd" + } + ] + }, + { + "identifier": "cvc:Meta:issuanceDate", + "value": "urn:issuanceDate:50d0c175a845941df3e9120728080bd6ae8f1a6a1be59d28b09cd81467de8aa7:2019-08-15T21:18:25.058Z|", + "claimPath": "meta.issuanceDate", + "targetHash": "5188fbf5359a890af182b29df1aeb53aad598cd592f6e082a622f44a734bc4da", + "node": [ + { + "left": "84676aff46e82e2ffd7b4863f1ea715dee3fc67783375bcc4cbfe0f1da02dcf2" + }, + { + "left": "ddf3d00dfd62881820130196cd0ccdfb1306f7b44c1c9b60ee262aff98bc4309" + }, + { + "right": "dacdb82bac682cd4e7a15462cd0e3f2fc003e5bb88b00ce7610e5f4fa4dbbcb4" + }, + { + "right": "062cdef9d0440ae5fc8537175922017b56fff0acf23209a2270222470c1c5420" + }, + { + "right": "c12996ffd5e6f394f401dece6bb90d9576b22e6dedca11d734a80b7eb35698bd" + } + ] + }, + { + "identifier": "cvc:Meta:expirationDate", + "value": "urn:expirationDate:21f6f6515962c5c4a8826640a6cbbcc3957f6f23a53b601395fc420e240b4f78:null|", + "claimPath": "meta.expirationDate", + "targetHash": "4a6b43d606855c5c9cce702199ad89adc6792fde439522c3fb83c0acea7b7622", + "node": [ + { + "right": "43d54e401c3325b8945be4d897ceffcb36075669a5c6c7ed7e22d6b283562a8d" + }, + { + "right": "15aa5aa36659b55c297ed031a1d76df17bc3e6af3e49df4f6cfb36787c0569ac" + }, + { + "left": "bf5ac61c45ede224c6fa20b9bd0803fe3d77f5284f4a76bbe7fdff75a9123c4d" + }, + { + "right": "062cdef9d0440ae5fc8537175922017b56fff0acf23209a2270222470c1c5420" + }, + { + "right": "c12996ffd5e6f394f401dece6bb90d9576b22e6dedca11d734a80b7eb35698bd" + } + ] + } + ] + }, + "granted": null, + "user_id": "03bf176a6a4e4841ec348a8007e655e2e746806576048fc1fe4ff2e8bc6351ecc2", + "createdAt": "2019-08-15T21:18:01.774Z", + "updatedAt": "2019-08-15T21:18:34.148Z", + "deletedAt": -1 +} diff --git a/__test__/creds/proxyFixtures/Email.json b/__test__/creds/proxyFixtures/Email.json new file mode 100644 index 00000000..26b19f24 --- /dev/null +++ b/__test__/creds/proxyFixtures/Email.json @@ -0,0 +1,172 @@ +{ + "id": "e3dc1ceb-3899-454f-a80c-52c97a0cc9d8", + "issuer": "jest:test:fe07c3d0-e8b0-11e8-8a40-7fe4d191eb47", + "issuanceDate": "2018-11-15T08:32:30.862Z", + "identifier": "credential-cvc:Email-v1", + "expirationDate": null, + "version": "1", + "type": [ + "Credential", + "credential-cvc:Email-v1" + ], + "claim": { + "contact": { + "email": { + "domain": { + "name": "X6gQFO3QYg", + "tld": "PSsiuGIgez" + }, + "username": "b6J7B5pCWo" + } + } + }, + "proof": { + "type": "CvcMerkleProof2018", + "merkleRoot": "03e9bccbf5109b7b70154eddd95b089a24896d0a6b46f52549d8471febd83a3d", + "anchor": { + "subject": { + "pub": "xpub:dummy", + "label": "credential-cvc:Email-v1", + "data": "03e9bccbf5109b7b70154eddd95b089a24896d0a6b46f52549d8471febd83a3d", + "signature": "signed:dummy" + }, + "walletId": "none", + "cosigners": [ + { + "pub": "xpub:dummy" + }, + { + "pub": "xpub:dummy" + } + ], + "authority": { + "pub": "xpub:dummy", + "path": "/" + }, + "coin": "dummycoin", + "tx": "", + "network": "dummynet", + "type": "permanent", + "civicAsPrimary": false, + "schema": "dummy-20180201", + "value": {} + }, + "leaves": [ + { + "identifier": "claim-cvc:Contact.email-v1", + "value": "urn:email.domain.name:d8ca1591c2526a1b03e8ab9be02f32036c112b1b347e3cd7ae6bf5079ab249a2:X6gQFO3QYg|urn:email.domain.tld:58f18dc6fe5a24b3626fbd9a03548864dc380114a17f346f0d97d3b9cb0700d5:PSsiuGIgez|urn:email.username:3e19732ba77e798b6b85f55e3d5321e58108c758b865614a60b3198fb10c0d69:b6J7B5pCWo|", + "claimPath": "contact.email", + "targetHash": "1952a3a7260b286d1251f40db511d9b5cf78960a414791c96ac6437b2968a190", + "node": [ + { + "right": "5478af59d9d5633434dbcac0c4d98d65c3c23dd80fb008081aabd5c95ea40642" + }, + { + "right": "070c1ad44f28450390cd89e482bc4b8af8a41b4b1a5e112d9218bea051f6ad26" + }, + { + "right": "b826226710e04f3cfbab3e877e574489a79c84ad3acffe651cd7e95cd3e6ac60" + }, + { + "right": "b0ce0c779bce746b589a4fca78d14dc482aa1e66bf015a15321644c0cceb4735" + }, + { + "right": "322500cf2d9c6b3a1dc8a9c4cf9c0bfaddf244678395429f9f74806055224d81" + } + ] + }, + { + "identifier": "claim-cvc:Email.domain-v1", + "value": "urn:domain.name:d8ca1591c2526a1b03e8ab9be02f32036c112b1b347e3cd7ae6bf5079ab249a2:X6gQFO3QYg|urn:domain.tld:58f18dc6fe5a24b3626fbd9a03548864dc380114a17f346f0d97d3b9cb0700d5:PSsiuGIgez|", + "claimPath": "contact.email.domain", + "targetHash": "5478af59d9d5633434dbcac0c4d98d65c3c23dd80fb008081aabd5c95ea40642", + "node": [ + { + "left": "1952a3a7260b286d1251f40db511d9b5cf78960a414791c96ac6437b2968a190" + }, + { + "right": "070c1ad44f28450390cd89e482bc4b8af8a41b4b1a5e112d9218bea051f6ad26" + }, + { + "right": "b826226710e04f3cfbab3e877e574489a79c84ad3acffe651cd7e95cd3e6ac60" + }, + { + "right": "b0ce0c779bce746b589a4fca78d14dc482aa1e66bf015a15321644c0cceb4735" + }, + { + "right": "322500cf2d9c6b3a1dc8a9c4cf9c0bfaddf244678395429f9f74806055224d81" + } + ] + }, + { + "identifier": "cvc:Meta:issuer", + "value": "urn:issuer:572ac63d41247d7b2cb3f8f344447b51e1898e11206b38750261250f976fbedf:jest:test:fe07c3d0-e8b0-11e8-8a40-7fe4d191eb47|", + "claimPath": "meta.issuer", + "targetHash": "3e2858af4f6365227b60e562e6633c48f4c11665e0f80454a88591c71d3b1983", + "node": [ + { + "right": "d20fab7ea0835b15ce3bc78118f0a044ce1f2da4fcaf06f2df465964811168b0" + }, + { + "left": "f4688dcbf2bcd091b274227f1ffcd7a55a125526871caeda08b9ca344303fec6" + }, + { + "right": "b826226710e04f3cfbab3e877e574489a79c84ad3acffe651cd7e95cd3e6ac60" + }, + { + "right": "b0ce0c779bce746b589a4fca78d14dc482aa1e66bf015a15321644c0cceb4735" + }, + { + "right": "322500cf2d9c6b3a1dc8a9c4cf9c0bfaddf244678395429f9f74806055224d81" + } + ] + }, + { + "identifier": "cvc:Meta:issuanceDate", + "value": "urn:issuanceDate:34618d06738b071a224f2cf0236def1022dcfaf23827b85050cf653d27001635:2018-11-15T08:32:30.862Z|", + "claimPath": "meta.issuanceDate", + "targetHash": "d20fab7ea0835b15ce3bc78118f0a044ce1f2da4fcaf06f2df465964811168b0", + "node": [ + { + "left": "3e2858af4f6365227b60e562e6633c48f4c11665e0f80454a88591c71d3b1983" + }, + { + "left": "f4688dcbf2bcd091b274227f1ffcd7a55a125526871caeda08b9ca344303fec6" + }, + { + "right": "b826226710e04f3cfbab3e877e574489a79c84ad3acffe651cd7e95cd3e6ac60" + }, + { + "right": "b0ce0c779bce746b589a4fca78d14dc482aa1e66bf015a15321644c0cceb4735" + }, + { + "right": "322500cf2d9c6b3a1dc8a9c4cf9c0bfaddf244678395429f9f74806055224d81" + } + ] + }, + { + "identifier": "cvc:Meta:expirationDate", + "value": "urn:expirationDate:629bc2bb479244a518ead46215278d86241cf206a4c32d5fff0eff3ef9f881ab:null|", + "claimPath": "meta.expirationDate", + "targetHash": "56eb2aa57e7d904e37bbe4cf4d9e34cd068ceeb1a18fd09d7be56bc9f715dfd0", + "node": [ + { + "right": "856e21db11d11e74c7ca39b02adb7373283eaf205670b11a9dec9dc03f97c606" + }, + { + "right": "740f2a0682cca1c44a1973a81fa24c3eaf81cb50f4effdcc7b1d76bc0f9da60c" + }, + { + "left": "5cb4049edfe5a169032dbb4a66d01c59c64b50ef7d40ec2690d24429afd87ea4" + }, + { + "right": "b0ce0c779bce746b589a4fca78d14dc482aa1e66bf015a15321644c0cceb4735" + }, + { + "right": "322500cf2d9c6b3a1dc8a9c4cf9c0bfaddf244678395429f9f74806055224d81" + } + ] + } + ] + } +} diff --git a/__test__/creds/proxyFixtures/GenericDocumentId.json b/__test__/creds/proxyFixtures/GenericDocumentId.json new file mode 100644 index 00000000..140a5e32 --- /dev/null +++ b/__test__/creds/proxyFixtures/GenericDocumentId.json @@ -0,0 +1,636 @@ +{ + "id": "7e984bcc-602a-478f-adaa-5a586e4abae6", + "issuer": "did:ethr:0xaf9482c84De4e2a961B98176C9f295F9b6008BfD", + "issuanceDate": "2018-11-20T20:41:59.861Z", + "identifier": "credential-cvc:GenericDocumentId-v1", + "expirationDate": null, + "version": "1", + "type": [ + "Credential", + "credential-cvc:GenericDocumentId-v1" + ], + "claim": { + "document": { + "type": "UYOTemeop1", + "number": "hwktDQnVSM", + "name": { + "familyNames": "o74I3q0Udy", + "givenNames": "xVIkPSoKlw", + "otherNames": "90Dov8xBgR" + }, + "gender": "6ZgZaMAEC1", + "issueLocation": "qlWfJ4znwU", + "issueAuthority": "I0LM3IeIBy", + "issueCountry": "EzAXU0eTKT", + "placeOfBirth": "mPX5qQBMlU", + "dateOfBirth": { + "day": 23.509202572883346, + "month": 10.046320849916473, + "year": 1972.4471022760558 + }, + "address": { + "city": "FM7pcb3F68", + "country": "C6DK4Ad534", + "county": "7JUOzujKGo", + "postalCode": "hTmK78Pkbu", + "state": "bpPbF2Z3wS", + "street": "vBC4ibu7a3", + "unit": "iAvobg7Lah" + }, + "properties": { + "dateOfExpiry": { + "day": 9.14320914518909, + "month": 0.7636856996725372, + "year": 1956.942523652118 + }, + "dateOfIssue": { + "day": 11.923255701048788, + "month": 12.215323364578072, + "year": 1982.8838709090696 + } + }, + "image": { + "back": "Ff5sn0LlBV", + "backMD5": "MAHR7iPXPI", + "front": "DemvYiM1DD", + "frontMD5": "Txh0ap6D8u" + } + } + }, + "proof": { + "type": "CvcMerkleProof2018", + "merkleRoot": "384f87e62391b370752fbf9bc210512e2741c4d01d8d5787e5266729a0736bf6", + "anchor": "TBD (Civic Blockchain Attestation)", + "leaves": [ + { + "identifier": "claim-cvc:Document.type-v1", + "value": "urn:type:3c6c88d9054ff152103737d4631d508519ceb3398f4a2fdb68079feb6a8d6d22:UYOTemeop1|", + "claimPath": "document.type", + "targetHash": "862fb2fbfd5c47581c61c936fe6eb72b0f8fddc323f59d5615e8143c0f71b167", + "node": [ + { + "right": "e04a092fce6e0734feb469e4dcd6058336e61e750874ccd3081200b987669ec0" + }, + { + "right": "0e53226c66037493fa67d0af7971adee6e16aab5d7ebc7b01b6e8d7851b66f3a" + }, + { + "right": "caecab2bc73908b56ef7f0e5f6400bbad33c5bdfadfaedbd4b8feff2cd176ee4" + }, + { + "right": "4d25da1de6c0ec7c5eac464a861cc07ad19d34cc8d8f52f1ce81dd498c56f68b" + }, + { + "right": "01afbce03241ff3666c6d88a2f176165f56af679177586d53819a15efad29760" + } + ] + }, + { + "identifier": "claim-cvc:Document.number-v1", + "value": "urn:number:6a3d75f1c6ca6b30c2ec7583dc963aeb028bdd5d0b90f199c2aed131c201ba3a:hwktDQnVSM|", + "claimPath": "document.number", + "targetHash": "e04a092fce6e0734feb469e4dcd6058336e61e750874ccd3081200b987669ec0", + "node": [ + { + "left": "862fb2fbfd5c47581c61c936fe6eb72b0f8fddc323f59d5615e8143c0f71b167" + }, + { + "right": "0e53226c66037493fa67d0af7971adee6e16aab5d7ebc7b01b6e8d7851b66f3a" + }, + { + "right": "caecab2bc73908b56ef7f0e5f6400bbad33c5bdfadfaedbd4b8feff2cd176ee4" + }, + { + "right": "4d25da1de6c0ec7c5eac464a861cc07ad19d34cc8d8f52f1ce81dd498c56f68b" + }, + { + "right": "01afbce03241ff3666c6d88a2f176165f56af679177586d53819a15efad29760" + } + ] + }, + { + "identifier": "claim-cvc:Document.name-v1", + "value": "urn:name.familyNames:ae24dd60b8a4259d478d725efd12900c8b83a6c36f7b0090b8f81a51567c44c6:o74I3q0Udy|urn:name.givenNames:5bef2387e1e897fb64de2ba5c20607f704b57056939bd4258a6ddf762b5a6c7d:xVIkPSoKlw|urn:name.otherNames:1f7b6a70eba5550a47664e85286ab2fda0d9dee99908da0a88234860b29b5d7e:90Dov8xBgR|", + "claimPath": "document.name", + "targetHash": "b4bb4b697b78c253f3dbc1a0b9d5b14218616cd5ebddd8983bb231ef647db36d", + "node": [ + { + "right": "736ce485a7c50a89b1863e8dc7f24c0e2cf9bc63950408e9a539d427137d57ee" + }, + { + "left": "86899574e732b268802c3366daffea60231e3fc9b8179401c9ab9cc55c17eee1" + }, + { + "right": "caecab2bc73908b56ef7f0e5f6400bbad33c5bdfadfaedbd4b8feff2cd176ee4" + }, + { + "right": "4d25da1de6c0ec7c5eac464a861cc07ad19d34cc8d8f52f1ce81dd498c56f68b" + }, + { + "right": "01afbce03241ff3666c6d88a2f176165f56af679177586d53819a15efad29760" + } + ] + }, + { + "identifier": "claim-cvc:Name.givenNames-v1", + "value": "urn:givenNames:5bef2387e1e897fb64de2ba5c20607f704b57056939bd4258a6ddf762b5a6c7d:xVIkPSoKlw|", + "claimPath": "document.name.givenNames", + "targetHash": "736ce485a7c50a89b1863e8dc7f24c0e2cf9bc63950408e9a539d427137d57ee", + "node": [ + { + "left": "b4bb4b697b78c253f3dbc1a0b9d5b14218616cd5ebddd8983bb231ef647db36d" + }, + { + "left": "86899574e732b268802c3366daffea60231e3fc9b8179401c9ab9cc55c17eee1" + }, + { + "right": "caecab2bc73908b56ef7f0e5f6400bbad33c5bdfadfaedbd4b8feff2cd176ee4" + }, + { + "right": "4d25da1de6c0ec7c5eac464a861cc07ad19d34cc8d8f52f1ce81dd498c56f68b" + }, + { + "right": "01afbce03241ff3666c6d88a2f176165f56af679177586d53819a15efad29760" + } + ] + }, + { + "identifier": "claim-cvc:Name.familyNames-v1", + "value": "urn:familyNames:ae24dd60b8a4259d478d725efd12900c8b83a6c36f7b0090b8f81a51567c44c6:o74I3q0Udy|", + "claimPath": "document.name.familyNames", + "targetHash": "e909ecb6288af6f60261756ed591fb8e0dbfe8a23f8b17c596bfee3dbf88b1ff", + "node": [ + { + "right": "fa12c4aee6b4c9a7892d98c95f1c0341043c481f6dd1484497e6aa2b4d4fd1cf" + }, + { + "right": "63a5ac7cad14bf2c7c00708bcfc544b93bb951e28b51151dcb1bce053279689d" + }, + { + "left": "0743b6a6b33419d57f24dfd14e3c6ca7dba96eb5e34a20c5e9dfb64ed866a623" + }, + { + "right": "4d25da1de6c0ec7c5eac464a861cc07ad19d34cc8d8f52f1ce81dd498c56f68b" + }, + { + "right": "01afbce03241ff3666c6d88a2f176165f56af679177586d53819a15efad29760" + } + ] + }, + { + "identifier": "claim-cvc:Name.otherNames-v1", + "value": "urn:otherNames:1f7b6a70eba5550a47664e85286ab2fda0d9dee99908da0a88234860b29b5d7e:90Dov8xBgR|", + "claimPath": "document.name.otherNames", + "targetHash": "fa12c4aee6b4c9a7892d98c95f1c0341043c481f6dd1484497e6aa2b4d4fd1cf", + "node": [ + { + "left": "e909ecb6288af6f60261756ed591fb8e0dbfe8a23f8b17c596bfee3dbf88b1ff" + }, + { + "right": "63a5ac7cad14bf2c7c00708bcfc544b93bb951e28b51151dcb1bce053279689d" + }, + { + "left": "0743b6a6b33419d57f24dfd14e3c6ca7dba96eb5e34a20c5e9dfb64ed866a623" + }, + { + "right": "4d25da1de6c0ec7c5eac464a861cc07ad19d34cc8d8f52f1ce81dd498c56f68b" + }, + { + "right": "01afbce03241ff3666c6d88a2f176165f56af679177586d53819a15efad29760" + } + ] + }, + { + "identifier": "claim-cvc:Document.gender-v1", + "value": "urn:gender:11bdb5ad75545352a0adea4a740d59d98b7e0575c9bda65fcc887dfb20774cce:6ZgZaMAEC1|", + "claimPath": "document.gender", + "targetHash": "46bc6d28dced24e1b4be54fb33a95c3e0005ae4ae4ccfb4deff2129953f9d3e5", + "node": [ + { + "right": "f1761ba3e96e3040f82ab63c4f54c3fedc8b51d54bb23abf3cbfc605dfc1fa7b" + }, + { + "left": "21321446187e166b39cf6a1cffedaa3d916ea5c65c78b0264bf045b2fe5b53b4" + }, + { + "left": "0743b6a6b33419d57f24dfd14e3c6ca7dba96eb5e34a20c5e9dfb64ed866a623" + }, + { + "right": "4d25da1de6c0ec7c5eac464a861cc07ad19d34cc8d8f52f1ce81dd498c56f68b" + }, + { + "right": "01afbce03241ff3666c6d88a2f176165f56af679177586d53819a15efad29760" + } + ] + }, + { + "identifier": "claim-cvc:Document.issueLocation-v1", + "value": "urn:issueLocation:b5170635bf804356f6b11e205caed4ae82325395a3507b3309690e725f5aec67:qlWfJ4znwU|", + "claimPath": "document.issueLocation", + "targetHash": "f1761ba3e96e3040f82ab63c4f54c3fedc8b51d54bb23abf3cbfc605dfc1fa7b", + "node": [ + { + "left": "46bc6d28dced24e1b4be54fb33a95c3e0005ae4ae4ccfb4deff2129953f9d3e5" + }, + { + "left": "21321446187e166b39cf6a1cffedaa3d916ea5c65c78b0264bf045b2fe5b53b4" + }, + { + "left": "0743b6a6b33419d57f24dfd14e3c6ca7dba96eb5e34a20c5e9dfb64ed866a623" + }, + { + "right": "4d25da1de6c0ec7c5eac464a861cc07ad19d34cc8d8f52f1ce81dd498c56f68b" + }, + { + "right": "01afbce03241ff3666c6d88a2f176165f56af679177586d53819a15efad29760" + } + ] + }, + { + "identifier": "claim-cvc:Document.issueAuthority-v1", + "value": "urn:issueAuthority:8593ee28f4f5cbedb3a7bbf6d9827caac43c1d3d8ecc2c9d718e62446a5da269:I0LM3IeIBy|", + "claimPath": "document.issueAuthority", + "targetHash": "2b07878f4cdf087786eab97145281952430ba63e5e37d562b5985b0c011b6fe4", + "node": [ + { + "right": "ec2187615883221a545fe324b85e4b98b8b9ac8fe6c37d84d847137f9f34a8e4" + }, + { + "right": "824f6a238a9e470d0507bdd78dfb89aa06fb997665669abff593eaf85832682b" + }, + { + "right": "11f2130a4531cd0d184c39adf4d79d6fcb527c7fdf8224b1a6aeac57fdf86fad" + }, + { + "left": "186106dbcc2526d6c1a97d23c323e4255a7ff70ba3526abf60f66849f0300ec0" + }, + { + "right": "01afbce03241ff3666c6d88a2f176165f56af679177586d53819a15efad29760" + } + ] + }, + { + "identifier": "claim-cvc:Document.issueCountry-v1", + "value": "urn:issueCountry:b213aecb4747a9019f6353e3ab75b4731daac7a77bc94785c874264591c3c11f:EzAXU0eTKT|", + "claimPath": "document.issueCountry", + "targetHash": "ec2187615883221a545fe324b85e4b98b8b9ac8fe6c37d84d847137f9f34a8e4", + "node": [ + { + "left": "2b07878f4cdf087786eab97145281952430ba63e5e37d562b5985b0c011b6fe4" + }, + { + "right": "824f6a238a9e470d0507bdd78dfb89aa06fb997665669abff593eaf85832682b" + }, + { + "right": "11f2130a4531cd0d184c39adf4d79d6fcb527c7fdf8224b1a6aeac57fdf86fad" + }, + { + "left": "186106dbcc2526d6c1a97d23c323e4255a7ff70ba3526abf60f66849f0300ec0" + }, + { + "right": "01afbce03241ff3666c6d88a2f176165f56af679177586d53819a15efad29760" + } + ] + }, + { + "identifier": "claim-cvc:Document.placeOfBirth-v1", + "value": "urn:placeOfBirth:f5a93b9e3716946d0287dcbbb9425eb10d5c3d91bbe6433e53106271dce8c359:mPX5qQBMlU|", + "claimPath": "document.placeOfBirth", + "targetHash": "eca8173c15059da48ff863e6391a958af428f6ecc935222b52807adadb4d7e98", + "node": [ + { + "right": "90bad2d86838bd2253bac063313007397c4b5b8538f9c49467419cc491d38315" + }, + { + "left": "ae7bff07f5c239bc70d2fd3bbdf7225e641ac047d9d1d326baf917866470f642" + }, + { + "right": "11f2130a4531cd0d184c39adf4d79d6fcb527c7fdf8224b1a6aeac57fdf86fad" + }, + { + "left": "186106dbcc2526d6c1a97d23c323e4255a7ff70ba3526abf60f66849f0300ec0" + }, + { + "right": "01afbce03241ff3666c6d88a2f176165f56af679177586d53819a15efad29760" + } + ] + }, + { + "identifier": "claim-cvc:Document.dateOfBirth-v1", + "value": "urn:dateOfBirth.day:d90296bbf0a86f74bbcb9f9b00217d2436b7596a552402f83f7b3b3b1b539106:23.509202572883346|urn:dateOfBirth.month:c60e2d34d02dec716d3419a941b601800c6c97dd4543a347b8b231966105a831:10.046320849916473|urn:dateOfBirth.year:8f02a483181f1f60c5617b861324142ca5f9ffdecc431852cfd24162e3c96225:1972.4471022760558|", + "claimPath": "document.dateOfBirth", + "targetHash": "90bad2d86838bd2253bac063313007397c4b5b8538f9c49467419cc491d38315", + "node": [ + { + "left": "eca8173c15059da48ff863e6391a958af428f6ecc935222b52807adadb4d7e98" + }, + { + "left": "ae7bff07f5c239bc70d2fd3bbdf7225e641ac047d9d1d326baf917866470f642" + }, + { + "right": "11f2130a4531cd0d184c39adf4d79d6fcb527c7fdf8224b1a6aeac57fdf86fad" + }, + { + "left": "186106dbcc2526d6c1a97d23c323e4255a7ff70ba3526abf60f66849f0300ec0" + }, + { + "right": "01afbce03241ff3666c6d88a2f176165f56af679177586d53819a15efad29760" + } + ] + }, + { + "identifier": "claim-cvc:Document.address-v1", + "value": "urn:address.city:8ad2e2298eda7623d46256882306bf2eb9f20c043697e6d59fbcca1f7a30a3e2:FM7pcb3F68|urn:address.country:9bdff9437318cbee926fc1f43bf21a66b1054d1ffb7c0af0f26b6d5092617ce5:C6DK4Ad534|urn:address.county:1e2ded862696ab32a69f7ac3419583e3a97c5c3fcc658d7316f954dce5947342:7JUOzujKGo|urn:address.postalCode:949e7cc3190664424a46ad78370e9b88977f3b254b3e6eef05f9e9bfafd09e8b:hTmK78Pkbu|urn:address.state:aca9a888e7249805a906156e903523c3538fb5a54d413f4ab891e4844665a7d6:bpPbF2Z3wS|urn:address.street:d1efdf491876f7728c597aa29db0c5159cc8c6ec7c233aa0a02d8531ce060fdd:vBC4ibu7a3|urn:address.unit:0a8cfa23cf9f9c048b1629cc0607a1b5ab7f5239387007d61a0337b324016424:iAvobg7Lah|", + "claimPath": "document.address", + "targetHash": "02c108d38408c8c07f9d31719e251c12a58dae108ab0d6d78fc40e993d721b1b", + "node": [ + { + "right": "b519dbefb94f5495026a4b9c5a696d7b22d81cbd75542c9e45e84664a3d9eca0" + }, + { + "right": "f07fd97c468aa0250977aaa6ac123db52a0815eef982a609d65dac9aadb29b3b" + }, + { + "left": "15ddb91d93316ccad1a0b9a1462e1956120b7d2425fe3e5563f3423e0be5e119" + }, + { + "left": "186106dbcc2526d6c1a97d23c323e4255a7ff70ba3526abf60f66849f0300ec0" + }, + { + "right": "01afbce03241ff3666c6d88a2f176165f56af679177586d53819a15efad29760" + } + ] + }, + { + "identifier": "claim-cvc:Address.county-v1", + "value": "urn:country:9bdff9437318cbee926fc1f43bf21a66b1054d1ffb7c0af0f26b6d5092617ce5:C6DK4Ad534|", + "claimPath": "document.address.country", + "targetHash": "b519dbefb94f5495026a4b9c5a696d7b22d81cbd75542c9e45e84664a3d9eca0", + "node": [ + { + "left": "02c108d38408c8c07f9d31719e251c12a58dae108ab0d6d78fc40e993d721b1b" + }, + { + "right": "f07fd97c468aa0250977aaa6ac123db52a0815eef982a609d65dac9aadb29b3b" + }, + { + "left": "15ddb91d93316ccad1a0b9a1462e1956120b7d2425fe3e5563f3423e0be5e119" + }, + { + "left": "186106dbcc2526d6c1a97d23c323e4255a7ff70ba3526abf60f66849f0300ec0" + }, + { + "right": "01afbce03241ff3666c6d88a2f176165f56af679177586d53819a15efad29760" + } + ] + }, + { + "identifier": "claim-cvc:Address.county-v1", + "value": "urn:county:1e2ded862696ab32a69f7ac3419583e3a97c5c3fcc658d7316f954dce5947342:7JUOzujKGo|", + "claimPath": "document.address.county", + "targetHash": "236e2c5e658b3d6cdc38fd1a15cb05175ea43c1ce2f45244b58bcfd8875195d2", + "node": [ + { + "right": "594d40f665ffa1c789b0c5130decccd92c740f9969d354c05d88f6d3c91f5e6b" + }, + { + "left": "670abb0403a5d619c288942bfff997dbf0156e355e1e2bb5bff14f9403b96470" + }, + { + "left": "15ddb91d93316ccad1a0b9a1462e1956120b7d2425fe3e5563f3423e0be5e119" + }, + { + "left": "186106dbcc2526d6c1a97d23c323e4255a7ff70ba3526abf60f66849f0300ec0" + }, + { + "right": "01afbce03241ff3666c6d88a2f176165f56af679177586d53819a15efad29760" + } + ] + }, + { + "identifier": "claim-cvc:Address.state-v1", + "value": "urn:state:aca9a888e7249805a906156e903523c3538fb5a54d413f4ab891e4844665a7d6:bpPbF2Z3wS|", + "claimPath": "document.address.state", + "targetHash": "594d40f665ffa1c789b0c5130decccd92c740f9969d354c05d88f6d3c91f5e6b", + "node": [ + { + "left": "236e2c5e658b3d6cdc38fd1a15cb05175ea43c1ce2f45244b58bcfd8875195d2" + }, + { + "left": "670abb0403a5d619c288942bfff997dbf0156e355e1e2bb5bff14f9403b96470" + }, + { + "left": "15ddb91d93316ccad1a0b9a1462e1956120b7d2425fe3e5563f3423e0be5e119" + }, + { + "left": "186106dbcc2526d6c1a97d23c323e4255a7ff70ba3526abf60f66849f0300ec0" + }, + { + "right": "01afbce03241ff3666c6d88a2f176165f56af679177586d53819a15efad29760" + } + ] + }, + { + "identifier": "claim-cvc:Address.city-v1", + "value": "urn:city:8ad2e2298eda7623d46256882306bf2eb9f20c043697e6d59fbcca1f7a30a3e2:FM7pcb3F68|", + "claimPath": "document.address.city", + "targetHash": "76fdb32e4b242f524950bc5ffc4702276da3abd9c953fdce37b24d471508ee23", + "node": [ + { + "right": "23d512efa9f798ce35659b2efc0eb73786088105c597620b63d3b1c4c9538e63" + }, + { + "right": "d260143c4ece0ec99bb74a96d31a97132431c7f8204754a7d1472e64dc3a739d" + }, + { + "right": "ab9b58efd1151192a3c439fc7a62050bdb5d40f1c25a49cdd035e386d6ed8720" + }, + { + "right": "adb99e21f13841760cac2b91295c657586cd963c6da0e59d6d58c45f3fa77b8b" + }, + { + "left": "2e93001e85bc4f4cf1f554f4e982a1677d731854aa7332dc9af11b742e2479ca" + } + ] + }, + { + "identifier": "claim-cvc:Address.postalCode-v1", + "value": "urn:postalCode:949e7cc3190664424a46ad78370e9b88977f3b254b3e6eef05f9e9bfafd09e8b:hTmK78Pkbu|", + "claimPath": "document.address.postalCode", + "targetHash": "23d512efa9f798ce35659b2efc0eb73786088105c597620b63d3b1c4c9538e63", + "node": [ + { + "left": "76fdb32e4b242f524950bc5ffc4702276da3abd9c953fdce37b24d471508ee23" + }, + { + "right": "d260143c4ece0ec99bb74a96d31a97132431c7f8204754a7d1472e64dc3a739d" + }, + { + "right": "ab9b58efd1151192a3c439fc7a62050bdb5d40f1c25a49cdd035e386d6ed8720" + }, + { + "right": "adb99e21f13841760cac2b91295c657586cd963c6da0e59d6d58c45f3fa77b8b" + }, + { + "left": "2e93001e85bc4f4cf1f554f4e982a1677d731854aa7332dc9af11b742e2479ca" + } + ] + }, + { + "identifier": "claim-cvc:Document.properties-v1", + "value": "urn:properties.dateOfExpiry.day:36e953f09aa82006bf6d440f9254e1624c4671ae2f2239dc159185095cf7ede1:9.14320914518909|urn:properties.dateOfExpiry.month:d7613bf86aab2145bc437be871499497773257670b53059992ccbb1abf534cf3:0.7636856996725372|urn:properties.dateOfExpiry.year:bc2415865fb397d1c7ab321b1289d7b366faab01cce1332c5c1ae71eab5ffc6d:1956.942523652118|urn:properties.dateOfIssue.day:4e1cbadfa735adbe2ab85bc1543020a4cd25dd25834abcf41a66bb52337448e4:11.923255701048788|urn:properties.dateOfIssue.month:a35de497883832af0b19a2c0475d1269143611167c2d5f1054005190d2eb58fa:12.215323364578072|urn:properties.dateOfIssue.year:32084189d4aee0cabda3d31840b3b4b48024912c491d8bd82acf7019ea9dd9de:1982.8838709090696|", + "claimPath": "document.properties", + "targetHash": "998c8c996d42d7ae04447b110274a68bdf1c234a0b0f6bc6d6bff3ff4c43f4c6", + "node": [ + { + "right": "e980447ea9ce8468a0e5d820604cccf73a55cd942e2991a1b0156f384e2062d1" + }, + { + "left": "78fdc065d5687343ca163ec8e6615ad731a192aa249ebd8bf442b221e6758d0f" + }, + { + "right": "ab9b58efd1151192a3c439fc7a62050bdb5d40f1c25a49cdd035e386d6ed8720" + }, + { + "right": "adb99e21f13841760cac2b91295c657586cd963c6da0e59d6d58c45f3fa77b8b" + }, + { + "left": "2e93001e85bc4f4cf1f554f4e982a1677d731854aa7332dc9af11b742e2479ca" + } + ] + }, + { + "identifier": "cvc:Document:dateOfIssue", + "value": "urn:dateOfIssue.day:4e1cbadfa735adbe2ab85bc1543020a4cd25dd25834abcf41a66bb52337448e4:11.923255701048788|urn:dateOfIssue.month:a35de497883832af0b19a2c0475d1269143611167c2d5f1054005190d2eb58fa:12.215323364578072|urn:dateOfIssue.year:32084189d4aee0cabda3d31840b3b4b48024912c491d8bd82acf7019ea9dd9de:1982.8838709090696|", + "claimPath": "document.dateOfIssue", + "targetHash": "e980447ea9ce8468a0e5d820604cccf73a55cd942e2991a1b0156f384e2062d1", + "node": [ + { + "left": "998c8c996d42d7ae04447b110274a68bdf1c234a0b0f6bc6d6bff3ff4c43f4c6" + }, + { + "left": "78fdc065d5687343ca163ec8e6615ad731a192aa249ebd8bf442b221e6758d0f" + }, + { + "right": "ab9b58efd1151192a3c439fc7a62050bdb5d40f1c25a49cdd035e386d6ed8720" + }, + { + "right": "adb99e21f13841760cac2b91295c657586cd963c6da0e59d6d58c45f3fa77b8b" + }, + { + "left": "2e93001e85bc4f4cf1f554f4e982a1677d731854aa7332dc9af11b742e2479ca" + } + ] + }, + { + "identifier": "cvc:Document:dateOfExpiry", + "value": "urn:dateOfExpiry.day:36e953f09aa82006bf6d440f9254e1624c4671ae2f2239dc159185095cf7ede1:9.14320914518909|urn:dateOfExpiry.month:d7613bf86aab2145bc437be871499497773257670b53059992ccbb1abf534cf3:0.7636856996725372|urn:dateOfExpiry.year:bc2415865fb397d1c7ab321b1289d7b366faab01cce1332c5c1ae71eab5ffc6d:1956.942523652118|", + "claimPath": "document.dateOfExpiry", + "targetHash": "e23d070653b11f110e302ef1150c4c876c8a10c9f1a307a550e60d3edc5c3c52", + "node": [ + { + "right": "c1f238e6e7180afac91666193ed9c88baeeebc9ad90c2cd5cb8dc60ee62052d2" + }, + { + "right": "5fdbd5c479e928d0cd9a5019400547ed4c7d5405a34a1cb3c8ed4f691fcc6f2f" + }, + { + "left": "108571852d0d4617446414764ed00ff1cafbcc56b54c6c544e0730680bfac47c" + }, + { + "right": "adb99e21f13841760cac2b91295c657586cd963c6da0e59d6d58c45f3fa77b8b" + }, + { + "left": "2e93001e85bc4f4cf1f554f4e982a1677d731854aa7332dc9af11b742e2479ca" + } + ] + }, + { + "identifier": "cvc:Document:image", + "value": "urn:image.back:242e0799669d9b049b7ca1c2b07abcfb7c6d452be206c6ebe25d7112a8319600:Ff5sn0LlBV|urn:image.backMD5:ca3de0ef11f29baa78ac0097c2412d7e6311ff9c635085873f6c8eb438e3ca6f:MAHR7iPXPI|urn:image.front:0725d42eff988cbbadd1da2b995323d15d04a859b965f9462fbf369deccbd779:DemvYiM1DD|urn:image.frontMD5:af47fe13c89d49b7f8e01c9a21e1f1fe4a54214e2be12c1d4dd580c0dec8ef84:Txh0ap6D8u|", + "claimPath": "document.image", + "targetHash": "c1f238e6e7180afac91666193ed9c88baeeebc9ad90c2cd5cb8dc60ee62052d2", + "node": [ + { + "left": "e23d070653b11f110e302ef1150c4c876c8a10c9f1a307a550e60d3edc5c3c52" + }, + { + "right": "5fdbd5c479e928d0cd9a5019400547ed4c7d5405a34a1cb3c8ed4f691fcc6f2f" + }, + { + "left": "108571852d0d4617446414764ed00ff1cafbcc56b54c6c544e0730680bfac47c" + }, + { + "right": "adb99e21f13841760cac2b91295c657586cd963c6da0e59d6d58c45f3fa77b8b" + }, + { + "left": "2e93001e85bc4f4cf1f554f4e982a1677d731854aa7332dc9af11b742e2479ca" + } + ] + }, + { + "identifier": "cvc:Meta:issuer", + "value": "urn:issuer:8cc14917546619fa14745a9f7614312ddbe460c2a82062c6cc810f5298b6f24f:did:ethr:0xaf9482c84De4e2a961B98176C9f295F9b6008BfD|", + "claimPath": "meta.issuer", + "targetHash": "261ac809931f9f0b44cf1b883dd4e040448e988c7490affab4fbfc5860f80fda", + "node": [ + { + "right": "eada9867cf3399284e9ee977a332d3769ed6856c2fcd8d358e00347d6e3cb187" + }, + { + "left": "24da55912d6856030d60ead985526e3df47a8fe8494caed04eff97ac0d266f2c" + }, + { + "left": "108571852d0d4617446414764ed00ff1cafbcc56b54c6c544e0730680bfac47c" + }, + { + "right": "adb99e21f13841760cac2b91295c657586cd963c6da0e59d6d58c45f3fa77b8b" + }, + { + "left": "2e93001e85bc4f4cf1f554f4e982a1677d731854aa7332dc9af11b742e2479ca" + } + ] + }, + { + "identifier": "cvc:Meta:issuanceDate", + "value": "urn:issuanceDate:26d817a47ca9e083a6f70242e4b107af5edb56e287ce4d7539eb042380d73812:2018-11-20T20:41:59.861Z|", + "claimPath": "meta.issuanceDate", + "targetHash": "eada9867cf3399284e9ee977a332d3769ed6856c2fcd8d358e00347d6e3cb187", + "node": [ + { + "left": "261ac809931f9f0b44cf1b883dd4e040448e988c7490affab4fbfc5860f80fda" + }, + { + "left": "24da55912d6856030d60ead985526e3df47a8fe8494caed04eff97ac0d266f2c" + }, + { + "left": "108571852d0d4617446414764ed00ff1cafbcc56b54c6c544e0730680bfac47c" + }, + { + "right": "adb99e21f13841760cac2b91295c657586cd963c6da0e59d6d58c45f3fa77b8b" + }, + { + "left": "2e93001e85bc4f4cf1f554f4e982a1677d731854aa7332dc9af11b742e2479ca" + } + ] + }, + { + "identifier": "cvc:Meta:expirationDate", + "value": "urn:expirationDate:a36229be9643b9db709a130847d00c74f91ff4befeca99cdd06d0558e11e2e1d:null|", + "claimPath": "meta.expirationDate", + "targetHash": "1b703aa7a808e0ace530b5e533643341baa2136418170026701cdce64eeaf471", + "node": [ + { + "right": "c9f8cb0aeca578e2ec2526638ee140882c1cf768f6d8dcb63529638480bd8885" + }, + { + "left": "de12d95d617dec249e86ce88e15016f3fe65fa4d103df8f9e27d2b0f89989256" + }, + { + "left": "2e93001e85bc4f4cf1f554f4e982a1677d731854aa7332dc9af11b742e2479ca" + } + ] + } + ] + } +} diff --git a/__test__/creds/proxyFixtures/IdDocumentWithoutNonRequiredClaims.json b/__test__/creds/proxyFixtures/IdDocumentWithoutNonRequiredClaims.json new file mode 100644 index 00000000..0d900b17 --- /dev/null +++ b/__test__/creds/proxyFixtures/IdDocumentWithoutNonRequiredClaims.json @@ -0,0 +1,487 @@ +{ + "id": "0b41d088-03cb-4cce-b5c8-908fb6207cac", + "issuer": "", + "issuanceDate": "2019-06-18T18:40:43.324Z", + "identifier": "credential-cvc:IdDocument-v1", + "expirationDate": null, + "version": "1", + "type": [ + "Credential", + "credential-cvc:IdDocument-v1" + ], + "claim": { + "document": { + "type": "Passport", + "number": "FP12345", + "name": { + "familyNames": "e8qak1", + "givenNames": "e8qhs4Iak1", + "otherNames": "qhs4I" + }, + "gender": "M", + "issueCountry": "Brazil", + "placeOfBirth": "Belo Horizonte", + "dateOfBirth": { + "day": 20, + "month": 3, + "year": 1978 + }, + "dateOfExpiry": { + "day": 12, + "month": 2, + "year": 2025 + }, + "nationality": "Brazilian", + "evidences": { + "idDocumentBack": { + "algorithm": "sha256", + "data": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "idDocumentFront": { + "algorithm": "sha256", + "data": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "selfie": { + "algorithm": "sha256", + "data": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + } + } + } + }, + "proof": { + "type": "CvcMerkleProof2018", + "merkleRoot": "287caa502816149f9787c6ab77d7161c45045b6e06659cf6ea94575d7ba3ae2a", + "anchor": "TBD (Civic Blockchain Attestation)", + "leaves": [ + { + "identifier": "claim-cvc:Document.type-v1", + "value": "urn:type:e2e862de517ce17d552f985b44c801d56b203d53a3da611b1d13e6a860f96f4d:Passport|", + "claimPath": "document.type", + "targetHash": "7f3038b53480db16f959050ae61021933460822855204bbe9a4a1f6e8a3d0116", + "node": [ + { + "right": "30ac51aa0955500498a1b0b4771c7d762d51ba325d71f33d991f9dd9d2761560" + }, + { + "right": "bc79b4b362ba3df5631ab6abf95a9b61cc03eb287c3ebeb8284a61c030d6bbd0" + }, + { + "right": "8960a6b8304488e88f5c9a94d9eefb3a204038f68a65835d336f66eb671193a3" + }, + { + "right": "52cfc99632cdacba9c14728c7e90f25aa7109ed98b6b5446cf049b4d861a428b" + }, + { + "right": "52e2e64063c533f9419667ced3c3a79582f9e560b9de8bd52cb5c6cd0e0f5e48" + } + ] + }, + { + "identifier": "claim-cvc:Document.number-v1", + "value": "urn:number:5f9e5213d98a47958f0ca35ce61b719f60be3c28e6470a608bcafd6425cb26db:FP12345|", + "claimPath": "document.number", + "targetHash": "30ac51aa0955500498a1b0b4771c7d762d51ba325d71f33d991f9dd9d2761560", + "node": [ + { + "left": "7f3038b53480db16f959050ae61021933460822855204bbe9a4a1f6e8a3d0116" + }, + { + "right": "bc79b4b362ba3df5631ab6abf95a9b61cc03eb287c3ebeb8284a61c030d6bbd0" + }, + { + "right": "8960a6b8304488e88f5c9a94d9eefb3a204038f68a65835d336f66eb671193a3" + }, + { + "right": "52cfc99632cdacba9c14728c7e90f25aa7109ed98b6b5446cf049b4d861a428b" + }, + { + "right": "52e2e64063c533f9419667ced3c3a79582f9e560b9de8bd52cb5c6cd0e0f5e48" + } + ] + }, + { + "identifier": "claim-cvc:Document.name-v1", + "value": "urn:name.familyNames:27b5254a5a0da53721c8a19940d43b7f23ee53355339b68876ca4f026c206f67:e8qak1|urn:name.givenNames:ea26343fd3bb2ac7b38978b8a3ed979a66fdb4e51cf57c8b39ec20bb16a7a7f1:e8qhs4Iak1|urn:name.otherNames:9c0bf86efabbd942565e66ff5549a1e69316f220e5b11b74b2382efa7ef619e4:qhs4I|", + "claimPath": "document.name", + "targetHash": "1685e316cdb23cbd1c6d77fbc832f7860d207a117804cba28ac887e4fc479705", + "node": [ + { + "right": "05a43d95727cb6e14b3843e48da8cfd11634c6a4f13c72478acae8656ab8eb61" + }, + { + "left": "9c62a73848c4e5af6fd138ceeb52ad67937266707ee15be238e949ad915ddcac" + }, + { + "right": "8960a6b8304488e88f5c9a94d9eefb3a204038f68a65835d336f66eb671193a3" + }, + { + "right": "52cfc99632cdacba9c14728c7e90f25aa7109ed98b6b5446cf049b4d861a428b" + }, + { + "right": "52e2e64063c533f9419667ced3c3a79582f9e560b9de8bd52cb5c6cd0e0f5e48" + } + ] + }, + { + "identifier": "claim-cvc:Name.givenNames-v1", + "value": "urn:givenNames:ea26343fd3bb2ac7b38978b8a3ed979a66fdb4e51cf57c8b39ec20bb16a7a7f1:e8qhs4Iak1|", + "claimPath": "document.name.givenNames", + "targetHash": "05a43d95727cb6e14b3843e48da8cfd11634c6a4f13c72478acae8656ab8eb61", + "node": [ + { + "left": "1685e316cdb23cbd1c6d77fbc832f7860d207a117804cba28ac887e4fc479705" + }, + { + "left": "9c62a73848c4e5af6fd138ceeb52ad67937266707ee15be238e949ad915ddcac" + }, + { + "right": "8960a6b8304488e88f5c9a94d9eefb3a204038f68a65835d336f66eb671193a3" + }, + { + "right": "52cfc99632cdacba9c14728c7e90f25aa7109ed98b6b5446cf049b4d861a428b" + }, + { + "right": "52e2e64063c533f9419667ced3c3a79582f9e560b9de8bd52cb5c6cd0e0f5e48" + } + ] + }, + { + "identifier": "claim-cvc:Name.familyNames-v1", + "value": "urn:familyNames:27b5254a5a0da53721c8a19940d43b7f23ee53355339b68876ca4f026c206f67:e8qak1|", + "claimPath": "document.name.familyNames", + "targetHash": "d6276700ed3070f923b013c051bcd5fb6f73981a873e0b82d6f328dc4d2be4ea", + "node": [ + { + "right": "807fd50603579963b55aa117f07bab90d0882b317ea31817f4d0efc9fe74258a" + }, + { + "right": "e82cfc4a020cf3ccaf42dc07bd99b8bfebf213655ce069742cb77110b9de304d" + }, + { + "left": "d5d87dc0138b470774f7affe3a0efbadfd621bc57c00c14a62ef4caaa9d45987" + }, + { + "right": "52cfc99632cdacba9c14728c7e90f25aa7109ed98b6b5446cf049b4d861a428b" + }, + { + "right": "52e2e64063c533f9419667ced3c3a79582f9e560b9de8bd52cb5c6cd0e0f5e48" + } + ] + }, + { + "identifier": "claim-cvc:Name.otherNames-v1", + "value": "urn:otherNames:9c0bf86efabbd942565e66ff5549a1e69316f220e5b11b74b2382efa7ef619e4:qhs4I|", + "claimPath": "document.name.otherNames", + "targetHash": "807fd50603579963b55aa117f07bab90d0882b317ea31817f4d0efc9fe74258a", + "node": [ + { + "left": "d6276700ed3070f923b013c051bcd5fb6f73981a873e0b82d6f328dc4d2be4ea" + }, + { + "right": "e82cfc4a020cf3ccaf42dc07bd99b8bfebf213655ce069742cb77110b9de304d" + }, + { + "left": "d5d87dc0138b470774f7affe3a0efbadfd621bc57c00c14a62ef4caaa9d45987" + }, + { + "right": "52cfc99632cdacba9c14728c7e90f25aa7109ed98b6b5446cf049b4d861a428b" + }, + { + "right": "52e2e64063c533f9419667ced3c3a79582f9e560b9de8bd52cb5c6cd0e0f5e48" + } + ] + }, + { + "identifier": "claim-cvc:Document.gender-v1", + "value": "urn:gender:95f7a5eb0e64cc63d5ebc3cd2316db75541f070e426dca7e2db5690c9b20a17f:M|", + "claimPath": "document.gender", + "targetHash": "2a9b491d5e669fd4c8663cab06e896e81da82fc5927b49e1dbf7c0bd92c041f5", + "node": [ + { + "right": "8f424b01c81efb1178e9026f2247135f77ec8b2e28b8b6cd5cb3c242f9c3aff0" + }, + { + "left": "30887eb2255aa9c4790f4033c4ec750325cca28ac0f38f1d7291cbbe497e3490" + }, + { + "left": "d5d87dc0138b470774f7affe3a0efbadfd621bc57c00c14a62ef4caaa9d45987" + }, + { + "right": "52cfc99632cdacba9c14728c7e90f25aa7109ed98b6b5446cf049b4d861a428b" + }, + { + "right": "52e2e64063c533f9419667ced3c3a79582f9e560b9de8bd52cb5c6cd0e0f5e48" + } + ] + }, + { + "identifier": "claim-cvc:Document.issueCountry-v1", + "value": "urn:issueCountry:26015cb27ac94844cb265b55856e43e8b43ccfe8ab8e76a71654d8ee61ed1e91:Brazil|", + "claimPath": "document.issueCountry", + "targetHash": "8f424b01c81efb1178e9026f2247135f77ec8b2e28b8b6cd5cb3c242f9c3aff0", + "node": [ + { + "left": "2a9b491d5e669fd4c8663cab06e896e81da82fc5927b49e1dbf7c0bd92c041f5" + }, + { + "left": "30887eb2255aa9c4790f4033c4ec750325cca28ac0f38f1d7291cbbe497e3490" + }, + { + "left": "d5d87dc0138b470774f7affe3a0efbadfd621bc57c00c14a62ef4caaa9d45987" + }, + { + "right": "52cfc99632cdacba9c14728c7e90f25aa7109ed98b6b5446cf049b4d861a428b" + }, + { + "right": "52e2e64063c533f9419667ced3c3a79582f9e560b9de8bd52cb5c6cd0e0f5e48" + } + ] + }, + { + "identifier": "claim-cvc:Document.placeOfBirth-v1", + "value": "urn:placeOfBirth:ab9ebaf999a0a7b08de876e96b1f728ae480f8b054ca81e6ee6b6eb357aaae1d:Belo Horizonte|", + "claimPath": "document.placeOfBirth", + "targetHash": "e9905e6f38a2f13985e96f305ce80f4919de9b6753a6248ade279f7b1718837b", + "node": [ + { + "right": "1d41f39d93a7c21f9a545331735f80636bd63e1d4a10538d64973e9515e2b198" + }, + { + "right": "71f311383be069133baf8af0fe381bea0aaed4d4de374c68c9ac089167699a2b" + }, + { + "right": "5f8fec66c1df66d4bca8b38c07536946640380614a0884e3422ee1eb35bdfadf" + }, + { + "left": "7928776907776ed7bece599ffcd96b65de5f5340834af968b5089b01d69f7b62" + }, + { + "right": "52e2e64063c533f9419667ced3c3a79582f9e560b9de8bd52cb5c6cd0e0f5e48" + } + ] + }, + { + "identifier": "claim-cvc:Document.dateOfBirth-v1", + "value": "urn:dateOfBirth.day:11f75d1de599c5edee287ee4f4c7967ceb69a6707da0bc6a5dd97550c570d7db:20|urn:dateOfBirth.month:4a551178fdc75854ffef6e83b330156b36c423891a3f876972190a942bc265a7:3|urn:dateOfBirth.year:f12af3a4cc5cac31520e90d3cd9416b3174247fe1cf5b8c2c348249e62373f87:1978|", + "claimPath": "document.dateOfBirth", + "targetHash": "1d41f39d93a7c21f9a545331735f80636bd63e1d4a10538d64973e9515e2b198", + "node": [ + { + "left": "e9905e6f38a2f13985e96f305ce80f4919de9b6753a6248ade279f7b1718837b" + }, + { + "right": "71f311383be069133baf8af0fe381bea0aaed4d4de374c68c9ac089167699a2b" + }, + { + "right": "5f8fec66c1df66d4bca8b38c07536946640380614a0884e3422ee1eb35bdfadf" + }, + { + "left": "7928776907776ed7bece599ffcd96b65de5f5340834af968b5089b01d69f7b62" + }, + { + "right": "52e2e64063c533f9419667ced3c3a79582f9e560b9de8bd52cb5c6cd0e0f5e48" + } + ] + }, + { + "identifier": "claim-cvc:Document.dateOfExpiry-v1", + "value": "urn:dateOfExpiry.day:1ac23cac425819692044482563516f24a57be63468e4f8d7b0e127a8f35bd535:12|urn:dateOfExpiry.month:9c962026289b6cc25eae1a74e2a599194ab3adf144f900b15e09dfb67887471a:2|urn:dateOfExpiry.year:fb8d624c780ac0a87b87c8e8ec5861cb902f5aa186ffc3fecb72e2b004d60fc9:2025|", + "claimPath": "document.dateOfExpiry", + "targetHash": "4ed1ed6ccad83c10ba3bf6aad4d241b5ba77b885cb7dbf51cbc2bd46063d0ccd", + "node": [ + { + "right": "cdc4c59ad08d3af4ca9fa882395ad528df8b92cd5d6960f69e0f9006095b2a23" + }, + { + "left": "bad3055592187467ef5b1caa9c6e9d637ed520cc8e2abdf72e4958a0a7b727de" + }, + { + "right": "5f8fec66c1df66d4bca8b38c07536946640380614a0884e3422ee1eb35bdfadf" + }, + { + "left": "7928776907776ed7bece599ffcd96b65de5f5340834af968b5089b01d69f7b62" + }, + { + "right": "52e2e64063c533f9419667ced3c3a79582f9e560b9de8bd52cb5c6cd0e0f5e48" + } + ] + }, + { + "identifier": "claim-cvc:Document.nationality-v1", + "value": "urn:nationality:24c38aacc4a7764f0c535a8a01c19f7551ca97a88242a5c06e416593fc24c2e4:Brazilian|", + "claimPath": "document.nationality", + "targetHash": "cdc4c59ad08d3af4ca9fa882395ad528df8b92cd5d6960f69e0f9006095b2a23", + "node": [ + { + "left": "4ed1ed6ccad83c10ba3bf6aad4d241b5ba77b885cb7dbf51cbc2bd46063d0ccd" + }, + { + "left": "bad3055592187467ef5b1caa9c6e9d637ed520cc8e2abdf72e4958a0a7b727de" + }, + { + "right": "5f8fec66c1df66d4bca8b38c07536946640380614a0884e3422ee1eb35bdfadf" + }, + { + "left": "7928776907776ed7bece599ffcd96b65de5f5340834af968b5089b01d69f7b62" + }, + { + "right": "52e2e64063c533f9419667ced3c3a79582f9e560b9de8bd52cb5c6cd0e0f5e48" + } + ] + }, + { + "identifier": "claim-cvc:Document.evidences-v1", + "value": "urn:evidences.idDocumentBack.algorithm:2d0f9636ca117366dd97dd69f2a9a63b99e634d37f612ceeffa12a30db9a86d5:sha256|urn:evidences.idDocumentBack.data:620b742575b5f52ca5d03c29efd5cf3c17ca6a52116deff07f2ea09a8ef63dbf:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855|urn:evidences.idDocumentFront.algorithm:bcbd9b333241be0fb62f29dd9c9b1165cceb4408aaa955a7ef9c8ba9de952088:sha256|urn:evidences.idDocumentFront.data:273f235a2730fd2a18c5ab669fa7e2c78e63a5e2806677cd5d4075596dd9529f:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855|urn:evidences.selfie.algorithm:2f79f2e31a9ce9bc774eb89468e6484a23ff9e619d2bf30a0bb23a7ba884f1af:sha256|urn:evidences.selfie.data:d44efec6c580b3b1300801e594bd4c615309d5604442b8699d34e503b0be9312:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855|", + "claimPath": "document.evidences", + "targetHash": "2e19a0209d987aeff1d56ff2be7b7e2af83d3abc17cf951ddb47cb4515511305", + "node": [ + { + "right": "dadad5ed64260bebb3e2f5fdf8c66109d6faba308b2483d22251082890e9009f" + }, + { + "right": "f44b7344b7b49b9876817c52e328112f139b6443ce3dcb72ed450b6186b58dff" + }, + { + "left": "af8d81492cf8d727f2749d4b10a19c19ded0eb4d93342fde11cc7e6866b8e566" + }, + { + "left": "7928776907776ed7bece599ffcd96b65de5f5340834af968b5089b01d69f7b62" + }, + { + "right": "52e2e64063c533f9419667ced3c3a79582f9e560b9de8bd52cb5c6cd0e0f5e48" + } + ] + }, + { + "identifier": "claim-cvc:Validation:evidences.idDocumentFront-v1", + "value": "urn:idDocumentFront.algorithm:bcbd9b333241be0fb62f29dd9c9b1165cceb4408aaa955a7ef9c8ba9de952088:sha256|urn:idDocumentFront.data:273f235a2730fd2a18c5ab669fa7e2c78e63a5e2806677cd5d4075596dd9529f:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855|", + "claimPath": "validationEvidences.idDocumentFront", + "targetHash": "dadad5ed64260bebb3e2f5fdf8c66109d6faba308b2483d22251082890e9009f", + "node": [ + { + "left": "2e19a0209d987aeff1d56ff2be7b7e2af83d3abc17cf951ddb47cb4515511305" + }, + { + "right": "f44b7344b7b49b9876817c52e328112f139b6443ce3dcb72ed450b6186b58dff" + }, + { + "left": "af8d81492cf8d727f2749d4b10a19c19ded0eb4d93342fde11cc7e6866b8e566" + }, + { + "left": "7928776907776ed7bece599ffcd96b65de5f5340834af968b5089b01d69f7b62" + }, + { + "right": "52e2e64063c533f9419667ced3c3a79582f9e560b9de8bd52cb5c6cd0e0f5e48" + } + ] + }, + { + "identifier": "claim-cvc:Validation:evidences.idDocumentBack-v1", + "value": "urn:idDocumentBack.algorithm:2d0f9636ca117366dd97dd69f2a9a63b99e634d37f612ceeffa12a30db9a86d5:sha256|urn:idDocumentBack.data:620b742575b5f52ca5d03c29efd5cf3c17ca6a52116deff07f2ea09a8ef63dbf:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855|", + "claimPath": "validationEvidences.idDocumentBack", + "targetHash": "e3a604848f2bcee8f2e580c4a72bca8666421efe03deb9ad719d2513e242daf1", + "node": [ + { + "right": "6f1a450426909a5920eb9d44be17b94ad6df1b93cc9422464c1d85f01daf16bc" + }, + { + "left": "954f2146938ca577eed53690bf9776775d1634af53a8f6abeacb1805b7a92c10" + }, + { + "left": "af8d81492cf8d727f2749d4b10a19c19ded0eb4d93342fde11cc7e6866b8e566" + }, + { + "left": "7928776907776ed7bece599ffcd96b65de5f5340834af968b5089b01d69f7b62" + }, + { + "right": "52e2e64063c533f9419667ced3c3a79582f9e560b9de8bd52cb5c6cd0e0f5e48" + } + ] + }, + { + "identifier": "claim-cvc:Validation:evidences.selfie-v1", + "value": "urn:selfie.algorithm:2f79f2e31a9ce9bc774eb89468e6484a23ff9e619d2bf30a0bb23a7ba884f1af:sha256|urn:selfie.data:d44efec6c580b3b1300801e594bd4c615309d5604442b8699d34e503b0be9312:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855|", + "claimPath": "validationEvidences.selfie", + "targetHash": "6f1a450426909a5920eb9d44be17b94ad6df1b93cc9422464c1d85f01daf16bc", + "node": [ + { + "left": "e3a604848f2bcee8f2e580c4a72bca8666421efe03deb9ad719d2513e242daf1" + }, + { + "left": "954f2146938ca577eed53690bf9776775d1634af53a8f6abeacb1805b7a92c10" + }, + { + "left": "af8d81492cf8d727f2749d4b10a19c19ded0eb4d93342fde11cc7e6866b8e566" + }, + { + "left": "7928776907776ed7bece599ffcd96b65de5f5340834af968b5089b01d69f7b62" + }, + { + "right": "52e2e64063c533f9419667ced3c3a79582f9e560b9de8bd52cb5c6cd0e0f5e48" + } + ] + }, + { + "identifier": "cvc:Meta:issuer", + "value": "urn:issuer:292b0049dfd8c15f0310c760b6fbe8a8485b9beb389ba29262604510877a5cfb:|", + "claimPath": "meta.issuer", + "targetHash": "f8fadea6eab4ae1c5e81c36778d2756c38c84b92eaa11d0ea2841577d8dbc816", + "node": [ + { + "right": "731b43aca212bd7a1de986a939c8e9fed0d079d1cc638ffa17550d78d202159a" + }, + { + "right": "765f969858f73f8722f132ed0f54ca563bf4dcf01dbb63050befc60f5c2689d6" + }, + { + "right": "57c3b18b1e5bc473a1b957ffbed2367943e17a4c46783e082ec73201422c7e0d" + }, + { + "left": "fc861ec3a17be8fd5a4b447d10516ed8721f0cc0e16dd697dc2586986c94a3ac" + } + ] + }, + { + "identifier": "cvc:Meta:issuanceDate", + "value": "urn:issuanceDate:f548bd51bd8e6067af740f98e78eba10d327abf31352f902e10acac9e244d7da:2019-06-18T18:40:43.324Z|", + "claimPath": "meta.issuanceDate", + "targetHash": "731b43aca212bd7a1de986a939c8e9fed0d079d1cc638ffa17550d78d202159a", + "node": [ + { + "left": "f8fadea6eab4ae1c5e81c36778d2756c38c84b92eaa11d0ea2841577d8dbc816" + }, + { + "right": "765f969858f73f8722f132ed0f54ca563bf4dcf01dbb63050befc60f5c2689d6" + }, + { + "right": "57c3b18b1e5bc473a1b957ffbed2367943e17a4c46783e082ec73201422c7e0d" + }, + { + "left": "fc861ec3a17be8fd5a4b447d10516ed8721f0cc0e16dd697dc2586986c94a3ac" + } + ] + }, + { + "identifier": "cvc:Meta:expirationDate", + "value": "urn:expirationDate:54a7ae635fbc7a1f4280464724001b9b5717e075569df07f737fb67e37d84a55:null|", + "claimPath": "meta.expirationDate", + "targetHash": "c995d499a9af3ca85e519bfaa48fb72fc8f180c7cfae58f7991aa86194e20460", + "node": [ + { + "right": "d3a8e00d2496a1a4276f195d29457a9ab572f0367e807837ba1b22cefa383f5d" + }, + { + "left": "86e5e3315073bb73a898616d20e72161dd5ffe8aa6ddefab8e50e0d1e0e66c48" + }, + { + "right": "57c3b18b1e5bc473a1b957ffbed2367943e17a4c46783e082ec73201422c7e0d" + }, + { + "left": "fc861ec3a17be8fd5a4b447d10516ed8721f0cc0e16dd697dc2586986c94a3ac" + } + ] + } + ] + }, + "granted": null +} diff --git a/__test__/creds/proxyFixtures/IdDocumentWithoutRequiredClaims.json b/__test__/creds/proxyFixtures/IdDocumentWithoutRequiredClaims.json new file mode 100644 index 00000000..cbdd0128 --- /dev/null +++ b/__test__/creds/proxyFixtures/IdDocumentWithoutRequiredClaims.json @@ -0,0 +1,190 @@ +{ + "id": "31cd46c4-7165-42bd-8a31-c20c1dc0a629", + "issuer": "", + "issuanceDate": "2019-06-05T19:20:30.688Z", + "identifier": "credential-cvc:IdDocument-v1", + "expirationDate": null, + "version": "1", + "type": [ + "Credential", + "credential-cvc:IdDocument-v1" + ], + "claim": { + "document": { + "type": "Passport", + "name": { + "givenNames": "Lucas" + }, + "issueCountry": "Brazil" + } + }, + "proof": { + "type": "CvcMerkleProof2018", + "merkleRoot": "e7f64a4cf0806ec7e20ec4387efa7e16bd1acbce74e313a10f103e93b3738fbf", + "anchor": "TBD (Civic Blockchain Attestation)", + "leaves": [ + { + "identifier": "claim-cvc:Document.type-v1", + "value": "urn:type:83b6896ec68e5ec2702bfa6e89b26c4a886ee73eb22e3c0c5b9c893096a351ab:Passport|", + "claimPath": "document.type", + "targetHash": "34612fc426fa8199c256f86f6fee333cff72567626fb32ab8ddce0a922b27b03", + "node": [ + { + "right": "9be5ee405cbe8c8a4f91cb0731213fcfa41b0b6b293f4b861a22ace736214674" + }, + { + "right": "2ac677d8a50069fdf69d6f24b01219f86882f62f9c16c6e82dc06746f3060d19" + }, + { + "right": "0328de70d7d76ebdd2865a4943ed394564426a8525ce532126e5f071e132136f" + }, + { + "right": "2988aad4c88123d23e03f3aa5a85089cca99f3803d694a45b175efb5969d0eb2" + }, + { + "right": "8f6f4e6cfd5feac30c987516ba35e865ed403b65595f3ea981a420055141b424" + } + ] + }, + { + "identifier": "claim-cvc:Document.name-v1", + "value": "urn:name.givenNames:284e6fb1c2d4176d9e1630c61687a029979572b45f513927bab71589fc54fa29:Lucas|", + "claimPath": "document.name", + "targetHash": "9be5ee405cbe8c8a4f91cb0731213fcfa41b0b6b293f4b861a22ace736214674", + "node": [ + { + "left": "34612fc426fa8199c256f86f6fee333cff72567626fb32ab8ddce0a922b27b03" + }, + { + "right": "2ac677d8a50069fdf69d6f24b01219f86882f62f9c16c6e82dc06746f3060d19" + }, + { + "right": "0328de70d7d76ebdd2865a4943ed394564426a8525ce532126e5f071e132136f" + }, + { + "right": "2988aad4c88123d23e03f3aa5a85089cca99f3803d694a45b175efb5969d0eb2" + }, + { + "right": "8f6f4e6cfd5feac30c987516ba35e865ed403b65595f3ea981a420055141b424" + } + ] + }, + { + "identifier": "claim-cvc:Name.givenNames-v1", + "value": "urn:givenNames:284e6fb1c2d4176d9e1630c61687a029979572b45f513927bab71589fc54fa29:Lucas|", + "claimPath": "document.name.givenNames", + "targetHash": "759bccd7fa4af7e16867b0b57710f5d4a610857ea7e8d6614faccb5ae7b20077", + "node": [ + { + "right": "da0e8cdb77405b37e09a8fd0f8c6ee7a0f18fc502748a90974951ac7929490cb" + }, + { + "left": "4a03718df9750763893e0032331650fdb4932dade6ed409f51c41253b2cd3b8b" + }, + { + "right": "0328de70d7d76ebdd2865a4943ed394564426a8525ce532126e5f071e132136f" + }, + { + "right": "2988aad4c88123d23e03f3aa5a85089cca99f3803d694a45b175efb5969d0eb2" + }, + { + "right": "8f6f4e6cfd5feac30c987516ba35e865ed403b65595f3ea981a420055141b424" + } + ] + }, + { + "identifier": "claim-cvc:Document.issueCountry-v1", + "value": "urn:issueCountry:27d7b788ad59cc383fb1cb637826e211dec7de39a5489edc0b149c0f65b9b7f6:Brazil|", + "claimPath": "document.issueCountry", + "targetHash": "da0e8cdb77405b37e09a8fd0f8c6ee7a0f18fc502748a90974951ac7929490cb", + "node": [ + { + "left": "759bccd7fa4af7e16867b0b57710f5d4a610857ea7e8d6614faccb5ae7b20077" + }, + { + "left": "4a03718df9750763893e0032331650fdb4932dade6ed409f51c41253b2cd3b8b" + }, + { + "right": "0328de70d7d76ebdd2865a4943ed394564426a8525ce532126e5f071e132136f" + }, + { + "right": "2988aad4c88123d23e03f3aa5a85089cca99f3803d694a45b175efb5969d0eb2" + }, + { + "right": "8f6f4e6cfd5feac30c987516ba35e865ed403b65595f3ea981a420055141b424" + } + ] + }, + { + "identifier": "cvc:Meta:issuer", + "value": "urn:issuer:582e1ecbbc557e077bd0c4e827d8da0602a6a75b672aec5ecf292e8a1ca0b7b8:|", + "claimPath": "meta.issuer", + "targetHash": "9760de82d2f8ed5d64d4b2134d001f766d74c56b718c62eee495e16e0ebd4b71", + "node": [ + { + "right": "9179950900a3d5273abeffdfc6042deed5bfec286e061bc7de52e7a825192eeb" + }, + { + "right": "0be159b0efaaf9f7f53699f36e38c2a42e7416467c29ee4812c53d3aa9965eaa" + }, + { + "left": "33e5280f9473fa50a39db90042a7a3d0f44614a1f7d7aedd868fbd0022d34d9e" + }, + { + "right": "2988aad4c88123d23e03f3aa5a85089cca99f3803d694a45b175efb5969d0eb2" + }, + { + "right": "8f6f4e6cfd5feac30c987516ba35e865ed403b65595f3ea981a420055141b424" + } + ] + }, + { + "identifier": "cvc:Meta:issuanceDate", + "value": "urn:issuanceDate:c1c7ccedff8518269c43a881b9eb8047c7b97521d0354c6d38e55755be9d1fcf:2019-06-05T19:20:30.688Z|", + "claimPath": "meta.issuanceDate", + "targetHash": "9179950900a3d5273abeffdfc6042deed5bfec286e061bc7de52e7a825192eeb", + "node": [ + { + "left": "9760de82d2f8ed5d64d4b2134d001f766d74c56b718c62eee495e16e0ebd4b71" + }, + { + "right": "0be159b0efaaf9f7f53699f36e38c2a42e7416467c29ee4812c53d3aa9965eaa" + }, + { + "left": "33e5280f9473fa50a39db90042a7a3d0f44614a1f7d7aedd868fbd0022d34d9e" + }, + { + "right": "2988aad4c88123d23e03f3aa5a85089cca99f3803d694a45b175efb5969d0eb2" + }, + { + "right": "8f6f4e6cfd5feac30c987516ba35e865ed403b65595f3ea981a420055141b424" + } + ] + }, + { + "identifier": "cvc:Meta:expirationDate", + "value": "urn:expirationDate:484b45435b363728a261ac654556d0943279a4b0a8d01f93c4f01a677273aa27:null|", + "claimPath": "meta.expirationDate", + "targetHash": "3924e82d2ed8fcb8ce8a6478f42ae5c50d3b7e9fac707531cc2ec4bc305c3cd8", + "node": [ + { + "right": "624ba87d3c589266c49166b118134209c832de54a80a540e04f517cde17bf439" + }, + { + "left": "286b28037689c42a0647d466295f66b5949231e8ef4e798ea138136913d5a982" + }, + { + "left": "33e5280f9473fa50a39db90042a7a3d0f44614a1f7d7aedd868fbd0022d34d9e" + }, + { + "right": "2988aad4c88123d23e03f3aa5a85089cca99f3803d694a45b175efb5969d0eb2" + }, + { + "right": "8f6f4e6cfd5feac30c987516ba35e865ed403b65595f3ea981a420055141b424" + } + ] + } + ] + }, + "granted": null +} diff --git a/__test__/creds/proxyFixtures/Identity.json b/__test__/creds/proxyFixtures/Identity.json new file mode 100644 index 00000000..950b33da --- /dev/null +++ b/__test__/creds/proxyFixtures/Identity.json @@ -0,0 +1,244 @@ +{ + "id": "e24b2c57-3d78-42c3-9111-aaabcab8006d", + "issuer": "jest:test:fe0ca5d0-e8b0-11e8-8a40-7fe4d191eb47", + "issuanceDate": "2018-11-15T08:32:30.893Z", + "identifier": "credential-cvc:Identity-v1", + "expirationDate": null, + "version": "1", + "type": [ + "Credential", + "credential-cvc:Identity-v1" + ], + "claim": { + "identity": { + "name": { + "familyNames": "sWYglHZ6Ry", + "givenNames": "1otj7GaELc", + "otherNames": "0QpdyidiaF" + }, + "dateOfBirth": { + "day": 2.138220070139745, + "month": 9.54655376259586, + "year": 1947.6347555235777 + } + } + }, + "proof": { + "type": "CvcMerkleProof2018", + "merkleRoot": "6b15fdc326568870aed3adfe73683ee6e91f1a5af11835647aec55e9c7bdd5f7", + "anchor": { + "subject": { + "pub": "xpub:dummy", + "label": "credential-cvc:Identity-v1", + "data": "6b15fdc326568870aed3adfe73683ee6e91f1a5af11835647aec55e9c7bdd5f7", + "signature": "signed:dummy" + }, + "walletId": "none", + "cosigners": [ + { + "pub": "xpub:dummy" + }, + { + "pub": "xpub:dummy" + } + ], + "authority": { + "pub": "xpub:dummy", + "path": "/" + }, + "coin": "dummycoin", + "tx": "", + "network": "dummynet", + "type": "permanent", + "civicAsPrimary": false, + "schema": "dummy-20180201", + "value": {} + }, + "leaves": [ + { + "identifier": "claim-cvc:Identity.name-v1", + "value": "urn:name.familyNames:b9aaf1b43b90a6636909e884977ea4e853dcc794098a7d9016094057aa0ecbbd:sWYglHZ6Ry|urn:name.givenNames:65b4fd7d6d2e99b9108c68f0d0a239a0aa6ecaa50658f2705788a9965ca3f7cf:1otj7GaELc|urn:name.otherNames:75d5ffd2e6466e5a6b6497cda5a9118676af7df99c8e00a4870b1af1adb9b451:0QpdyidiaF|", + "claimPath": "identity.name", + "targetHash": "741c9b32c0e46c7335ee6bfea3819e6df80cb49f48fe87132574a39ed8910ba2", + "node": [ + { + "right": "325c544bc8d3e303473da4cf8b9a9edb86838a3897da8f5af961ec1536e88af0" + }, + { + "right": "7b90deaaa228466fde5fdc49ac27367b705302b21c3fc4b67bf6817409a3f886" + }, + { + "right": "786ef34a150627e8245c6cfe320424b987bb40c0f811d5dbcf3a2722bce378d6" + }, + { + "right": "04bef12661f9a409d18cbbb52bc58651f65e286abd8bc140e1344594841a14ed" + }, + { + "right": "da4d8a5e274061369782e64bbb86f213271f67ea21d096437bc15b05d91508f9" + } + ] + }, + { + "identifier": "claim-cvc:Name.givenNames-v1", + "value": "urn:givenNames:65b4fd7d6d2e99b9108c68f0d0a239a0aa6ecaa50658f2705788a9965ca3f7cf:1otj7GaELc|", + "claimPath": "identity.name.givenNames", + "targetHash": "325c544bc8d3e303473da4cf8b9a9edb86838a3897da8f5af961ec1536e88af0", + "node": [ + { + "left": "741c9b32c0e46c7335ee6bfea3819e6df80cb49f48fe87132574a39ed8910ba2" + }, + { + "right": "7b90deaaa228466fde5fdc49ac27367b705302b21c3fc4b67bf6817409a3f886" + }, + { + "right": "786ef34a150627e8245c6cfe320424b987bb40c0f811d5dbcf3a2722bce378d6" + }, + { + "right": "04bef12661f9a409d18cbbb52bc58651f65e286abd8bc140e1344594841a14ed" + }, + { + "right": "da4d8a5e274061369782e64bbb86f213271f67ea21d096437bc15b05d91508f9" + } + ] + }, + { + "identifier": "claim-cvc:Name.familyNames-v1", + "value": "urn:familyNames:b9aaf1b43b90a6636909e884977ea4e853dcc794098a7d9016094057aa0ecbbd:sWYglHZ6Ry|", + "claimPath": "identity.name.familyNames", + "targetHash": "2e1a69df77b5abbbc0c30b1eb73a010ec5b15826417119ce001504efe16fdc52", + "node": [ + { + "right": "cee7323edd25b8d6f329854eb4b81c7eeace99609eea28db528f626da3a5ba85" + }, + { + "left": "c5cce935d2e38c9e15eab57ba3125b3b11a8062fd62786612d2b1420cff4fe10" + }, + { + "right": "786ef34a150627e8245c6cfe320424b987bb40c0f811d5dbcf3a2722bce378d6" + }, + { + "right": "04bef12661f9a409d18cbbb52bc58651f65e286abd8bc140e1344594841a14ed" + }, + { + "right": "da4d8a5e274061369782e64bbb86f213271f67ea21d096437bc15b05d91508f9" + } + ] + }, + { + "identifier": "claim-cvc:Name.otherNames-v1", + "value": "urn:otherNames:75d5ffd2e6466e5a6b6497cda5a9118676af7df99c8e00a4870b1af1adb9b451:0QpdyidiaF|", + "claimPath": "identity.name.otherNames", + "targetHash": "cee7323edd25b8d6f329854eb4b81c7eeace99609eea28db528f626da3a5ba85", + "node": [ + { + "left": "2e1a69df77b5abbbc0c30b1eb73a010ec5b15826417119ce001504efe16fdc52" + }, + { + "left": "c5cce935d2e38c9e15eab57ba3125b3b11a8062fd62786612d2b1420cff4fe10" + }, + { + "right": "786ef34a150627e8245c6cfe320424b987bb40c0f811d5dbcf3a2722bce378d6" + }, + { + "right": "04bef12661f9a409d18cbbb52bc58651f65e286abd8bc140e1344594841a14ed" + }, + { + "right": "da4d8a5e274061369782e64bbb86f213271f67ea21d096437bc15b05d91508f9" + } + ] + }, + { + "identifier": "claim-cvc:Identity.dateOfBirth-v1", + "value": "urn:dateOfBirth.day:fa11c23cdf7383160eaea4d9407ecce905d447ba9e7f29b1ea779c35fe3c304b:2.138220070139745|urn:dateOfBirth.month:5f5d7db849b9929a4c1691b7f3e4a0a61a77a5719bb199e3d07ee57d448cb62e:9.54655376259586|urn:dateOfBirth.year:2a07dbbde111ac2a9a62f92ad22ba9a7aa418446ae2c5cad03e5d689ff8e72bd:1947.6347555235777|", + "claimPath": "identity.dateOfBirth", + "targetHash": "028ab3dc56ff0bf8a421b666968a24efb8360283d35e5fa572f22eb399b266d8", + "node": [ + { + "right": "32402efef3cd6155a1762e4017c30960127f5ac371276fa98b4071de9e4167e2" + }, + { + "right": "b7abb6a07c3d34f93481b1640a2737b58083cb625c76cc033c082a35eeb03561" + }, + { + "left": "1a90f7b369d4110b4268715692b1d3c896476ba06b4e7c48c98452536eb5471b" + }, + { + "right": "04bef12661f9a409d18cbbb52bc58651f65e286abd8bc140e1344594841a14ed" + }, + { + "right": "da4d8a5e274061369782e64bbb86f213271f67ea21d096437bc15b05d91508f9" + } + ] + }, + { + "identifier": "cvc:Meta:issuer", + "value": "urn:issuer:2477fdbab78769105cfd637c53b5fe4500f1b528b4917ca371e25e32ba27ad79:jest:test:fe0ca5d0-e8b0-11e8-8a40-7fe4d191eb47|", + "claimPath": "meta.issuer", + "targetHash": "32402efef3cd6155a1762e4017c30960127f5ac371276fa98b4071de9e4167e2", + "node": [ + { + "left": "028ab3dc56ff0bf8a421b666968a24efb8360283d35e5fa572f22eb399b266d8" + }, + { + "right": "b7abb6a07c3d34f93481b1640a2737b58083cb625c76cc033c082a35eeb03561" + }, + { + "left": "1a90f7b369d4110b4268715692b1d3c896476ba06b4e7c48c98452536eb5471b" + }, + { + "right": "04bef12661f9a409d18cbbb52bc58651f65e286abd8bc140e1344594841a14ed" + }, + { + "right": "da4d8a5e274061369782e64bbb86f213271f67ea21d096437bc15b05d91508f9" + } + ] + }, + { + "identifier": "cvc:Meta:issuanceDate", + "value": "urn:issuanceDate:ca2c56221898ce1dc364c8f4cf153f5b61d3c03b4505daede5cb23a22cd6f9ba:2018-11-15T08:32:30.893Z|", + "claimPath": "meta.issuanceDate", + "targetHash": "a6b536e9d69c7fbe30017c4d89de2e1e4501532e2f1de145a28dff904ac7fb67", + "node": [ + { + "right": "e4f5675ab686ed53b7d5fa60bc0c412e59cc312648c515cf8ff88497b0e6e971" + }, + { + "left": "dfa31fa614a9cef75da528036a11e5ca09ad521a5483b8c709d5408aaac6bd11" + }, + { + "left": "1a90f7b369d4110b4268715692b1d3c896476ba06b4e7c48c98452536eb5471b" + }, + { + "right": "04bef12661f9a409d18cbbb52bc58651f65e286abd8bc140e1344594841a14ed" + }, + { + "right": "da4d8a5e274061369782e64bbb86f213271f67ea21d096437bc15b05d91508f9" + } + ] + }, + { + "identifier": "cvc:Meta:expirationDate", + "value": "urn:expirationDate:27d69dde4c16a4f841236ae17d4e5839667ddcff19a6bb99e679fe64be301006:null|", + "claimPath": "meta.expirationDate", + "targetHash": "e4f5675ab686ed53b7d5fa60bc0c412e59cc312648c515cf8ff88497b0e6e971", + "node": [ + { + "left": "a6b536e9d69c7fbe30017c4d89de2e1e4501532e2f1de145a28dff904ac7fb67" + }, + { + "left": "dfa31fa614a9cef75da528036a11e5ca09ad521a5483b8c709d5408aaac6bd11" + }, + { + "left": "1a90f7b369d4110b4268715692b1d3c896476ba06b4e7c48c98452536eb5471b" + }, + { + "right": "04bef12661f9a409d18cbbb52bc58651f65e286abd8bc140e1344594841a14ed" + }, + { + "right": "da4d8a5e274061369782e64bbb86f213271f67ea21d096437bc15b05d91508f9" + } + ] + } + ] + } +} diff --git a/__test__/creds/proxyFixtures/PermanentAnchor.json b/__test__/creds/proxyFixtures/PermanentAnchor.json new file mode 100644 index 00000000..d92d1b10 --- /dev/null +++ b/__test__/creds/proxyFixtures/PermanentAnchor.json @@ -0,0 +1,25 @@ +{ + "subject": { + "pub": "xpub:dummy", + "label": "test1530668445601", + "data": "test1530668445601", + "signature": "304402204e4521f4f49baf55fb85539a2e8897e4fb05fad8bed6418e793d952ea63d559f02200f1a65d43392efe6e4388ced8694097333224685676e2c954c76efdbf87d4b55" + }, + "walletId": "5b3c25ae531deca003af947456de0316", + "cosigners": [{ + "pub": "xpub:dummy" + }, { + "pub": "xpub:dummy" + }], + "authority": { + "pub": "xpub:dummy", + "path": "/" + }, + "coin": "dummycoin", + "tx": "d42108e60e941483045022100bd2fe1e1958424dddfac818c1cb9cf9b4b0758bff0165dafcb6ca3fb935864b80220621f79767d8b4a144f0b371ece12704eadc4d7cf60a23687d156fffdce9f76a3414c69522102896c0bad1cba92ff30e93a3301dcaed0c4a188e3a60e1b0abc64e572b38a70a12103f53ac90200000001ac0bacc5039e659e5a22365ca5f45f6f6f43b97c7d21812f457ca8a73122dcde00000000fdfd000047304402203cdac186e4678ce837b7acffbb769740fb440b419f237b407303858b3d29e4ed02204b62e3a5071bbca7c81581ced96d519b24d39114bedc13405fa81eac48ba895619b56825e473e7b5bb72a1c473a8f3bd0000000092bf025bf8da001210261d79a240feb1ba9642068856f928e3bd21985a443631007fed2fbed8d067c5353aeffffffff02db497d0f0000000017a914f7e370d5d2af95e058985724a4fe7c2c175f423087fb1700000000000017a914cd14854e02d273af9612ae649e7d13a2f73fcfde87", + "network": "dummynet", + "value": 259876034, + "type": "permanent", + "civicAsPrimary": false, + "schema": "dummy-20180201" +} \ No newline at end of file diff --git a/__test__/creds/proxyFixtures/PhoneNumber.json b/__test__/creds/proxyFixtures/PhoneNumber.json new file mode 100644 index 00000000..2c348830 --- /dev/null +++ b/__test__/creds/proxyFixtures/PhoneNumber.json @@ -0,0 +1,241 @@ +{ + "id": "c409433d-53a0-413b-ab36-cf223ef11261", + "issuer": "jest:test:fe097180-e8b0-11e8-8a40-7fe4d191eb47", + "issuanceDate": "2018-11-15T08:32:30.872Z", + "identifier": "credential-cvc:PhoneNumber-v1", + "expirationDate": null, + "version": "1", + "type": [ + "Credential", + "credential-cvc:PhoneNumber-v1" + ], + "claim": { + "contact": { + "phoneNumber": { + "country": "Y1kbIF49uq", + "countryCode": "LN0V7AMZ1R", + "extension": "MNPIrwwpt4", + "lineType": "pmu0Mibtod", + "number": "PPWP1gUyxx" + } + } + }, + "proof": { + "type": "CvcMerkleProof2018", + "merkleRoot": "724ae5eef62ff52a72f21b613ab05024b4d52bc3c6dc64c64af242c670e85fff", + "anchor": { + "subject": { + "pub": "xpub:dummy", + "label": "credential-cvc:PhoneNumber-v1", + "data": "724ae5eef62ff52a72f21b613ab05024b4d52bc3c6dc64c64af242c670e85fff", + "signature": "signed:dummy" + }, + "walletId": "none", + "cosigners": [ + { + "pub": "xpub:dummy" + }, + { + "pub": "xpub:dummy" + } + ], + "authority": { + "pub": "xpub:dummy", + "path": "/" + }, + "coin": "dummycoin", + "tx": "", + "network": "dummynet", + "type": "permanent", + "civicAsPrimary": false, + "schema": "dummy-20180201", + "value": {} + }, + "leaves": [ + { + "identifier": "claim-cvc:Contact.phoneNumber-v1", + "value": "urn:phoneNumber.country:9a27746e2c234c14d80874f647ed69f491e5e19f4aee6c89f0cc8105747c2dcb:Y1kbIF49uq|urn:phoneNumber.countryCode:932d51a15a2e3079f3922d4ee77a7bb763ddda6515a790b4b79bb7c0dda8a4fd:LN0V7AMZ1R|urn:phoneNumber.extension:e22172ed0cece05274bab12d0944270c54c88203d205aae62ea3cf81fecf35c9:MNPIrwwpt4|urn:phoneNumber.lineType:65b327d40d8a19cae121a278d1fcb5dd9f89019c2eaf27544dc751c5f1bb4e2c:pmu0Mibtod|urn:phoneNumber.number:4fa664bf00f78628a95750172c4460d427cb66314504dd24dacd1e37cb560a22:PPWP1gUyxx|", + "claimPath": "contact.phoneNumber", + "targetHash": "ed75e2a2456b606010f54fc5a946e3c43d06eb2b3b6580ed180b927bcdd23342", + "node": [ + { + "right": "fa1c0349205f0afac38aa71fcab8ffc9314a05f06d17579ef5293340f21f4afd" + }, + { + "right": "17a1351eccf90d8c03ea88b6833b1ab559df152df76a0ec27444f3eec5a53355" + }, + { + "right": "1558c61d73086831c4638bbe226e8c5ed815bcac60fb543df42f1b743ed8b4ab" + }, + { + "right": "d255628334cca0a257bdf60d0a5788060223e70adeb8eb7b75bccfe5bfc0f135" + }, + { + "right": "e0f44c7674b99460957856b11daf7ffead8aa4c5af9e96b1452bdd4b8b8560ad" + } + ] + }, + { + "identifier": "claim-cvc:PhoneNumber.countryCode-v1", + "value": "urn:countryCode:932d51a15a2e3079f3922d4ee77a7bb763ddda6515a790b4b79bb7c0dda8a4fd:LN0V7AMZ1R|", + "claimPath": "contact.phoneNumber.countryCode", + "targetHash": "fa1c0349205f0afac38aa71fcab8ffc9314a05f06d17579ef5293340f21f4afd", + "node": [ + { + "left": "ed75e2a2456b606010f54fc5a946e3c43d06eb2b3b6580ed180b927bcdd23342" + }, + { + "right": "17a1351eccf90d8c03ea88b6833b1ab559df152df76a0ec27444f3eec5a53355" + }, + { + "right": "1558c61d73086831c4638bbe226e8c5ed815bcac60fb543df42f1b743ed8b4ab" + }, + { + "right": "d255628334cca0a257bdf60d0a5788060223e70adeb8eb7b75bccfe5bfc0f135" + }, + { + "right": "e0f44c7674b99460957856b11daf7ffead8aa4c5af9e96b1452bdd4b8b8560ad" + } + ] + }, + { + "identifier": "claim-cvc:PhoneNumber.number-v1", + "value": "urn:number:4fa664bf00f78628a95750172c4460d427cb66314504dd24dacd1e37cb560a22:PPWP1gUyxx|", + "claimPath": "contact.phoneNumber.number", + "targetHash": "7926d2d136e715d11cf39e1200542733f6808bd93eff9eadd2f3b811c4367372", + "node": [ + { + "right": "ae91bfc54716606456a96f3d2c4ca8c1467b295cad5fe5f37fc960c804ea292d" + }, + { + "left": "913277555b0fe34e4c35a150365d259861a6c974a6b3354f48e6c67f26a9b43f" + }, + { + "right": "1558c61d73086831c4638bbe226e8c5ed815bcac60fb543df42f1b743ed8b4ab" + }, + { + "right": "d255628334cca0a257bdf60d0a5788060223e70adeb8eb7b75bccfe5bfc0f135" + }, + { + "right": "e0f44c7674b99460957856b11daf7ffead8aa4c5af9e96b1452bdd4b8b8560ad" + } + ] + }, + { + "identifier": "claim-cvc:PhoneNumber.extension-v1", + "value": "urn:extension:e22172ed0cece05274bab12d0944270c54c88203d205aae62ea3cf81fecf35c9:MNPIrwwpt4|", + "claimPath": "contact.phoneNumber.extension", + "targetHash": "ae91bfc54716606456a96f3d2c4ca8c1467b295cad5fe5f37fc960c804ea292d", + "node": [ + { + "left": "7926d2d136e715d11cf39e1200542733f6808bd93eff9eadd2f3b811c4367372" + }, + { + "left": "913277555b0fe34e4c35a150365d259861a6c974a6b3354f48e6c67f26a9b43f" + }, + { + "right": "1558c61d73086831c4638bbe226e8c5ed815bcac60fb543df42f1b743ed8b4ab" + }, + { + "right": "d255628334cca0a257bdf60d0a5788060223e70adeb8eb7b75bccfe5bfc0f135" + }, + { + "right": "e0f44c7674b99460957856b11daf7ffead8aa4c5af9e96b1452bdd4b8b8560ad" + } + ] + }, + { + "identifier": "claim-cvc:PhoneNumber.lineType-v1", + "value": "urn:lineType:65b327d40d8a19cae121a278d1fcb5dd9f89019c2eaf27544dc751c5f1bb4e2c:pmu0Mibtod|", + "claimPath": "contact.phoneNumber.lineType", + "targetHash": "43b6ae3e8cab63b818106d18fafeed21eeb3c95018a0a4ddd630148c5bf7e357", + "node": [ + { + "right": "06576c1526b1fc221bb481158fa57ef0896207240b21d183db7b4cec2bc45e58" + }, + { + "right": "714d0da1745522318318f3efebb2d0ec16aee0753d659133d0561a2360f44d5e" + }, + { + "left": "c09f9f8fa44d9685c82ec2807e9add5498557df66aa06c2e90fb813fc6a93395" + }, + { + "right": "d255628334cca0a257bdf60d0a5788060223e70adeb8eb7b75bccfe5bfc0f135" + }, + { + "right": "e0f44c7674b99460957856b11daf7ffead8aa4c5af9e96b1452bdd4b8b8560ad" + } + ] + }, + { + "identifier": "cvc:Meta:issuer", + "value": "urn:issuer:e22a7aacb5e25cccf68f98c4287c6fa977048b4588a5a667a6b5007c25a09cb8:jest:test:fe097180-e8b0-11e8-8a40-7fe4d191eb47|", + "claimPath": "meta.issuer", + "targetHash": "06576c1526b1fc221bb481158fa57ef0896207240b21d183db7b4cec2bc45e58", + "node": [ + { + "left": "43b6ae3e8cab63b818106d18fafeed21eeb3c95018a0a4ddd630148c5bf7e357" + }, + { + "right": "714d0da1745522318318f3efebb2d0ec16aee0753d659133d0561a2360f44d5e" + }, + { + "left": "c09f9f8fa44d9685c82ec2807e9add5498557df66aa06c2e90fb813fc6a93395" + }, + { + "right": "d255628334cca0a257bdf60d0a5788060223e70adeb8eb7b75bccfe5bfc0f135" + }, + { + "right": "e0f44c7674b99460957856b11daf7ffead8aa4c5af9e96b1452bdd4b8b8560ad" + } + ] + }, + { + "identifier": "cvc:Meta:issuanceDate", + "value": "urn:issuanceDate:1a9383edbc7a0d8e4bcd791bcbbfc0c4ad79a2a4c0fef6e534c24bd618517f40:2018-11-15T08:32:30.872Z|", + "claimPath": "meta.issuanceDate", + "targetHash": "ac9a76b08f65e397bec51050f7ba9a7dd5580a858aed6e8d6745118ab98a17ac", + "node": [ + { + "right": "4e9539df672c8789b924dc5eaf4d457ba75452e259edca9543e30130600e38f9" + }, + { + "left": "5d9dd28239cbab651e5fa085d13ac480a46c527dc9958fe65c3e0bac85e7c84d" + }, + { + "left": "c09f9f8fa44d9685c82ec2807e9add5498557df66aa06c2e90fb813fc6a93395" + }, + { + "right": "d255628334cca0a257bdf60d0a5788060223e70adeb8eb7b75bccfe5bfc0f135" + }, + { + "right": "e0f44c7674b99460957856b11daf7ffead8aa4c5af9e96b1452bdd4b8b8560ad" + } + ] + }, + { + "identifier": "cvc:Meta:expirationDate", + "value": "urn:expirationDate:73719558c8aa661f54267f5b5aa25c334e85fd95e3decba2a196eff5e0ac3f78:null|", + "claimPath": "meta.expirationDate", + "targetHash": "4e9539df672c8789b924dc5eaf4d457ba75452e259edca9543e30130600e38f9", + "node": [ + { + "left": "ac9a76b08f65e397bec51050f7ba9a7dd5580a858aed6e8d6745118ab98a17ac" + }, + { + "left": "5d9dd28239cbab651e5fa085d13ac480a46c527dc9958fe65c3e0bac85e7c84d" + }, + { + "left": "c09f9f8fa44d9685c82ec2807e9add5498557df66aa06c2e90fb813fc6a93395" + }, + { + "right": "d255628334cca0a257bdf60d0a5788060223e70adeb8eb7b75bccfe5bfc0f135" + }, + { + "right": "e0f44c7674b99460957856b11daf7ffead8aa4c5af9e96b1452bdd4b8b8560ad" + } + ] + } + ] + } +} diff --git a/__test__/creds/proxyFixtures/TempAnchor.json b/__test__/creds/proxyFixtures/TempAnchor.json new file mode 100644 index 00000000..4c1d1318 --- /dev/null +++ b/__test__/creds/proxyFixtures/TempAnchor.json @@ -0,0 +1,23 @@ +{ + "schema": "dummy-20180201", + "tx": "01000000018815822815dbd6c355ad40da1f2fac328a408d538638143177168b57af5d753a00000000fc004730440220424268275da66825bc99a3f487472baa0751b67355407b4a4e99da04a3186c520220578b820dd051c919c2fb57b26aa29667483b547f6766a23e3c821e47a5d1237b0147304402201316cc0ee8a968f4d86a616fcf710b663e0bb7021e95d7a300036b65e95ca34602204f05162db06278af2a8abdd7ab4d92e973dc4154a92bf37a4056f3298fa9ecad014c695221028f9205846d9b23dd9a17588ae13603aa3eda3599582750904716c827d02269db210340f8f56a56b2af2a9698f66574882068cf8bd8fa95a26136ac34edabfe5eb5d021029d52d336232eb3d4f37730822df9d3993a84c3edba20f14d3ee0f20141c0bdfd53aeffffffff01551500000000000017a91460312cbbb8ec560305a239d56398f0d8aa57ecf68700000000", + "subject": { + "label": "teste", + "pub": "xpub:dummy", + "data": "testesdsd", + "signature": "304502210089e94f11587bf7fa202817ace9664639855a146565d4e54b9f853f31f4d7ce31022077098a904e0dda7ab947db92a3e7dd7a5d52654c286151c3cc97feb0ef4a3310" + }, + "authority": { + "pub": "xpub:dummy", + "path": "/1/0/0/0" + }, + "cosigners": [{ + "pub": "xpub:dummy" + }, + { + "pub": "xpub:dummy" + } + ], + "type": "temporary", + "network": "dummynet" +} \ No newline at end of file diff --git a/__test__/creds/proxyFixtures/VCPermanentAnchor.json b/__test__/creds/proxyFixtures/VCPermanentAnchor.json new file mode 100644 index 00000000..fa5f6e05 --- /dev/null +++ b/__test__/creds/proxyFixtures/VCPermanentAnchor.json @@ -0,0 +1,243 @@ +{ + "id": "", + "issuer": "d460c90d-4032-4c29-9743-f52e0a852602", + "issuanceDate": "2018-10-08T19:46:22.364Z", + "identifier": "credential-cvc:Identity-v1", + "expirationDate": null, + "version": "1", + "type": [ + "Credential", + "credential-cvc:Identity-v1" + ], + "claim": { + "identity": { + "name": { + "familyNames": "Santos", + "givenNames": "Joao", + "otherNames": "Barbosa" + }, + "dateOfBirth": { + "day": 20, + "month": 3, + "year": 1978 + } + } + }, + "proof": { + "type": "CivicMerkleProof2018", + "merkleRoot": "1fbe357dfcb0f19b0470d1017ce617bc8f3e88ff06552f425a3e2e81d6f38c10", + "anchor": { + "subject": { + "pub": "xpub6Expk8Z75vLhdyfopBrrcmcd3NhenAuuE4GXcX8KkwKbaQqzAe4Ywbtxu9F95hRHj79PvdtYEJcoR6gesbZ79fS4bLi1PQtm81rjxAHeLL9", + "label": "credential-cvc:Identity-v1", + "data": "1fbe357dfcb0f19b0470d1017ce617bc8f3e88ff06552f425a3e2e81d6f38c10", + "signature": "3045022100cec320a177f699d1981a823c4030973d180db0b893592096b7d343531c13e3e7022064a5093c97d3372f81c7104b571c532db3b1a6eb4eb9d26bb3ac7d7be5e314b8" + }, + "walletId": "none", + "cosigners": [ + { + "pub": "xpub:dummy" + }, + { + "pub": "xpub:dummy" + } + ], + "authority": { + "pub": "xpub:dummy", + "path": "/" + }, + "coin": "dummycoin", + "tx": "", + "network": "dummynet", + "type": "permanent", + "civicAsPrimary": false, + "schema": "dummy-20180201" + }, + "leaves": [ + { + "identifier": "claim-cvc:Identity.name-v1", + "value": "urn:familyNames:f9cebb16c7ce72cc4cb75f49e7ca4435478be80f0a03740a97fbb508c9fe26eb:Santos|urn:givenNames:3b99f45fbd9aad638f34a40d7647293ee5c955316cf2bda31b856470efb04c49:Joao|urn:otherNames:ea17e5a9b080a9684d63983c7538fd053373f3d10245130cbedff75d82d4c714:Barbosa|", + "claimPath": "identity.name", + "targetHash": "7f576a0cfa81df08b8df1937bacfea632ab2a03f3dba4e9744c22418c0557286", + "node": [ + { + "right": "5b8d77d60a05af6dcad4c96d8e451adaaeae3e352ec20b68a5307466a5d8afbd" + }, + { + "right": "cdd1ff29f8fa9248ef3d909e76faf7011a276befb631d46a9073cd61ad420446" + }, + { + "right": "7e68e0871dc4504629bcde9669c500a9d0fc6bf1aaa701efb996943320ef2d89" + }, + { + "right": "f0bea436f87b9b691324e18afaf800411d6d2e213d180fc2721782fb393a36f0" + }, + { + "right": "efb0034a22c3f78c5435f0b33dfa120f9720313ced0b2defe465e087f3fe470b" + } + ] + }, + { + "identifier": "claim-cvc:Name.givenNames-v1", + "value": "urn:givenNames:3b99f45fbd9aad638f34a40d7647293ee5c955316cf2bda31b856470efb04c49:Joao", + "claimPath": "identity.name.givenNames", + "targetHash": "5b8d77d60a05af6dcad4c96d8e451adaaeae3e352ec20b68a5307466a5d8afbd", + "node": [ + { + "left": "7f576a0cfa81df08b8df1937bacfea632ab2a03f3dba4e9744c22418c0557286" + }, + { + "right": "cdd1ff29f8fa9248ef3d909e76faf7011a276befb631d46a9073cd61ad420446" + }, + { + "right": "7e68e0871dc4504629bcde9669c500a9d0fc6bf1aaa701efb996943320ef2d89" + }, + { + "right": "f0bea436f87b9b691324e18afaf800411d6d2e213d180fc2721782fb393a36f0" + }, + { + "right": "efb0034a22c3f78c5435f0b33dfa120f9720313ced0b2defe465e087f3fe470b" + } + ] + }, + { + "identifier": "claim-cvc:Name.otherNames-v1", + "value": "urn:otherNames:ea17e5a9b080a9684d63983c7538fd053373f3d10245130cbedff75d82d4c714:Barbosa", + "claimPath": "identity.name.otherNames", + "targetHash": "b013a25bcbb6d1fafe0ac5d07dcca6964686869463a31d3adc5baceaa0538d29", + "node": [ + { + "right": "5fdafb2f464e4798e8a46d04e70ddf210960e7717ed343cf205367f89318bab3" + }, + { + "left": "191255794cb6b5314f416cfaf7f86bc9ab01fffe2c94c4852faa9169faeaaf48" + }, + { + "right": "7e68e0871dc4504629bcde9669c500a9d0fc6bf1aaa701efb996943320ef2d89" + }, + { + "right": "f0bea436f87b9b691324e18afaf800411d6d2e213d180fc2721782fb393a36f0" + }, + { + "right": "efb0034a22c3f78c5435f0b33dfa120f9720313ced0b2defe465e087f3fe470b" + } + ] + }, + { + "identifier": "claim-cvc:Name.familyNames-v1", + "value": "urn:familyNames:f9cebb16c7ce72cc4cb75f49e7ca4435478be80f0a03740a97fbb508c9fe26eb:Santos", + "claimPath": "identity.name.familyNames", + "targetHash": "5fdafb2f464e4798e8a46d04e70ddf210960e7717ed343cf205367f89318bab3", + "node": [ + { + "left": "b013a25bcbb6d1fafe0ac5d07dcca6964686869463a31d3adc5baceaa0538d29" + }, + { + "left": "191255794cb6b5314f416cfaf7f86bc9ab01fffe2c94c4852faa9169faeaaf48" + }, + { + "right": "7e68e0871dc4504629bcde9669c500a9d0fc6bf1aaa701efb996943320ef2d89" + }, + { + "right": "f0bea436f87b9b691324e18afaf800411d6d2e213d180fc2721782fb393a36f0" + }, + { + "right": "efb0034a22c3f78c5435f0b33dfa120f9720313ced0b2defe465e087f3fe470b" + } + ] + }, + { + "identifier": "claim-cvc:Identity.dateOfBirth-v1", + "value": "urn:day:37721c821560995d992f9f6a7859f0da13a7c06908e298ece50c1f84cd16669f:00000020|urn:month:2c5a20c2f6a1cb6c74001646eecd2015bfcde98a20d9006483a2aad3d4714a3e:00000003|urn:year:7e189630ad86951dc1160624c161f1f6227f83d926233629e4a8da2d2386ae9d:00001978|", + "claimPath": "identity.dateOfBirth", + "targetHash": "93f1faaa5af8b5f9db24f660940d5fe975d71f6d29d0ee2857b47e2cef7f11e8", + "node": [ + { + "right": "45b52663fcffbc0ef018979179d16dab408b3183a64ebf534ab109b7fe594a48" + }, + { + "right": "b213a284c598763254471aac74326af69c13355404356f794c3606f0c8d85b9c" + }, + { + "left": "f89530e2b7e3e5e243674f1fe0ced3d4e660b4b3d9d2f78dc74afe7aa2069e8b" + }, + { + "right": "f0bea436f87b9b691324e18afaf800411d6d2e213d180fc2721782fb393a36f0" + }, + { + "right": "efb0034a22c3f78c5435f0b33dfa120f9720313ced0b2defe465e087f3fe470b" + } + ] + }, + { + "identifier": "cvc:Meta:issuer", + "value": "urn:issuer:769197d3d0e416dd621d75d9d0449ab30e2f501dea364cc792552df0b6e8ec05:d460c90d-4032-4c29-9743-f52e0a852602", + "claimPath": "meta.issuer", + "targetHash": "45b52663fcffbc0ef018979179d16dab408b3183a64ebf534ab109b7fe594a48", + "node": [ + { + "left": "93f1faaa5af8b5f9db24f660940d5fe975d71f6d29d0ee2857b47e2cef7f11e8" + }, + { + "right": "b213a284c598763254471aac74326af69c13355404356f794c3606f0c8d85b9c" + }, + { + "left": "f89530e2b7e3e5e243674f1fe0ced3d4e660b4b3d9d2f78dc74afe7aa2069e8b" + }, + { + "right": "f0bea436f87b9b691324e18afaf800411d6d2e213d180fc2721782fb393a36f0" + }, + { + "right": "efb0034a22c3f78c5435f0b33dfa120f9720313ced0b2defe465e087f3fe470b" + } + ] + }, + { + "identifier": "cvc:Meta:issuanceDate", + "value": "urn:issuanceDate:dbeeebc31ea7f7371540a75479ee265dab9db6a291ae406acdf80d227a49056c:2018-10-08T19:46:22.364Z", + "claimPath": "meta.issuanceDate", + "targetHash": "1702fc187d05ee760f13e143370e09298e6bd44ad0db9c8025053839b50f7968", + "node": [ + { + "right": "3319c5ed870611c4dcd9baf2f5da3c6bc77437edcaa5721283528b231892c56d" + }, + { + "left": "5396bfaf8f82259a40a4b50723d1ae0c3332ea89f064dafc2a03c8d3a5650bf1" + }, + { + "left": "f89530e2b7e3e5e243674f1fe0ced3d4e660b4b3d9d2f78dc74afe7aa2069e8b" + }, + { + "right": "f0bea436f87b9b691324e18afaf800411d6d2e213d180fc2721782fb393a36f0" + }, + { + "right": "efb0034a22c3f78c5435f0b33dfa120f9720313ced0b2defe465e087f3fe470b" + } + ] + }, + { + "identifier": "cvc:Meta:expirationDate", + "value": "urn:expirationDate:beb8164634c2a861f122a17b553ec8a35dbf1bbf8b07b921dbc752d28b12b73a:null", + "claimPath": "meta.expirationDate", + "targetHash": "3319c5ed870611c4dcd9baf2f5da3c6bc77437edcaa5721283528b231892c56d", + "node": [ + { + "left": "1702fc187d05ee760f13e143370e09298e6bd44ad0db9c8025053839b50f7968" + }, + { + "left": "5396bfaf8f82259a40a4b50723d1ae0c3332ea89f064dafc2a03c8d3a5650bf1" + }, + { + "left": "f89530e2b7e3e5e243674f1fe0ced3d4e660b4b3d9d2f78dc74afe7aa2069e8b" + }, + { + "right": "f0bea436f87b9b691324e18afaf800411d6d2e213d180fc2721782fb393a36f0" + }, + { + "right": "efb0034a22c3f78c5435f0b33dfa120f9720313ced0b2defe465e087f3fe470b" + } + ] + } + ] + } +} diff --git a/__test__/creds/proxyFixtures/VCTempAnchor.json b/__test__/creds/proxyFixtures/VCTempAnchor.json new file mode 100644 index 00000000..6854e567 --- /dev/null +++ b/__test__/creds/proxyFixtures/VCTempAnchor.json @@ -0,0 +1,243 @@ +{ + "id": null, + "issuer": "d460c90d-4032-4c29-9743-f52e0a852602", + "issuanceDate": "2018-10-08T19:46:22.364Z", + "identifier": "credential-cvc:Identity-v1", + "expirationDate": null, + "version": "1", + "type": [ + "Credential", + "credential-cvc:Identity-v1" + ], + "claim": { + "identity": { + "name": { + "familyNames": "Santos", + "givenNames": "Joao", + "otherNames": "Barbosa" + }, + "dateOfBirth": { + "day": 20, + "month": 3, + "year": 1978 + } + } + }, + "proof": { + "type": "CivicMerkleProof2018", + "merkleRoot": "1fbe357dfcb0f19b0470d1017ce617bc8f3e88ff06552f425a3e2e81d6f38c10", + "anchor": { + "subject": { + "pub": "xpub:dummy", + "label": "credential-cvc:Identity-v1", + "data": "1fbe357dfcb0f19b0470d1017ce617bc8f3e88ff06552f425a3e2e81d6f38c10", + "signature": "signed:dummy" + }, + "walletId": "none", + "cosigners": [ + { + "pub": "xpub:dummy" + }, + { + "pub": "xpub:dummy" + } + ], + "authority": { + "pub": "xpub:dummy", + "path": "/" + }, + "coin": "dummycoin", + "tx": "", + "network": "dummynet", + "type": "temporary", + "civicAsPrimary": false, + "schema": "dummy-20180201" + }, + "leaves": [ + { + "identifier": "claim-cvc:Identity.name-v1", + "value": "urn:familyNames:f9cebb16c7ce72cc4cb75f49e7ca4435478be80f0a03740a97fbb508c9fe26eb:Santos|urn:givenNames:3b99f45fbd9aad638f34a40d7647293ee5c955316cf2bda31b856470efb04c49:Joao|urn:otherNames:ea17e5a9b080a9684d63983c7538fd053373f3d10245130cbedff75d82d4c714:Barbosa|", + "claimPath": "identity.name", + "targetHash": "7f576a0cfa81df08b8df1937bacfea632ab2a03f3dba4e9744c22418c0557286", + "node": [ + { + "right": "5b8d77d60a05af6dcad4c96d8e451adaaeae3e352ec20b68a5307466a5d8afbd" + }, + { + "right": "cdd1ff29f8fa9248ef3d909e76faf7011a276befb631d46a9073cd61ad420446" + }, + { + "right": "7e68e0871dc4504629bcde9669c500a9d0fc6bf1aaa701efb996943320ef2d89" + }, + { + "right": "f0bea436f87b9b691324e18afaf800411d6d2e213d180fc2721782fb393a36f0" + }, + { + "right": "efb0034a22c3f78c5435f0b33dfa120f9720313ced0b2defe465e087f3fe470b" + } + ] + }, + { + "identifier": "claim-cvc:Name.givenNames-v1", + "value": "urn:givenNames:3b99f45fbd9aad638f34a40d7647293ee5c955316cf2bda31b856470efb04c49:Joao", + "claimPath": "identity.name.givenNames", + "targetHash": "5b8d77d60a05af6dcad4c96d8e451adaaeae3e352ec20b68a5307466a5d8afbd", + "node": [ + { + "left": "7f576a0cfa81df08b8df1937bacfea632ab2a03f3dba4e9744c22418c0557286" + }, + { + "right": "cdd1ff29f8fa9248ef3d909e76faf7011a276befb631d46a9073cd61ad420446" + }, + { + "right": "7e68e0871dc4504629bcde9669c500a9d0fc6bf1aaa701efb996943320ef2d89" + }, + { + "right": "f0bea436f87b9b691324e18afaf800411d6d2e213d180fc2721782fb393a36f0" + }, + { + "right": "efb0034a22c3f78c5435f0b33dfa120f9720313ced0b2defe465e087f3fe470b" + } + ] + }, + { + "identifier": "claim-cvc:Name.otherNames-v1", + "value": "urn:otherNames:ea17e5a9b080a9684d63983c7538fd053373f3d10245130cbedff75d82d4c714:Barbosa", + "claimPath": "identity.name.otherNames", + "targetHash": "b013a25bcbb6d1fafe0ac5d07dcca6964686869463a31d3adc5baceaa0538d29", + "node": [ + { + "right": "5fdafb2f464e4798e8a46d04e70ddf210960e7717ed343cf205367f89318bab3" + }, + { + "left": "191255794cb6b5314f416cfaf7f86bc9ab01fffe2c94c4852faa9169faeaaf48" + }, + { + "right": "7e68e0871dc4504629bcde9669c500a9d0fc6bf1aaa701efb996943320ef2d89" + }, + { + "right": "f0bea436f87b9b691324e18afaf800411d6d2e213d180fc2721782fb393a36f0" + }, + { + "right": "efb0034a22c3f78c5435f0b33dfa120f9720313ced0b2defe465e087f3fe470b" + } + ] + }, + { + "identifier": "claim-cvc:Name.familyNames-v1", + "value": "urn:familyNames:f9cebb16c7ce72cc4cb75f49e7ca4435478be80f0a03740a97fbb508c9fe26eb:Santos", + "claimPath": "identity.name.familyNames", + "targetHash": "5fdafb2f464e4798e8a46d04e70ddf210960e7717ed343cf205367f89318bab3", + "node": [ + { + "left": "b013a25bcbb6d1fafe0ac5d07dcca6964686869463a31d3adc5baceaa0538d29" + }, + { + "left": "191255794cb6b5314f416cfaf7f86bc9ab01fffe2c94c4852faa9169faeaaf48" + }, + { + "right": "7e68e0871dc4504629bcde9669c500a9d0fc6bf1aaa701efb996943320ef2d89" + }, + { + "right": "f0bea436f87b9b691324e18afaf800411d6d2e213d180fc2721782fb393a36f0" + }, + { + "right": "efb0034a22c3f78c5435f0b33dfa120f9720313ced0b2defe465e087f3fe470b" + } + ] + }, + { + "identifier": "claim-cvc:Identity.dateOfBirth-v1", + "value": "urn:day:37721c821560995d992f9f6a7859f0da13a7c06908e298ece50c1f84cd16669f:00000020|urn:month:2c5a20c2f6a1cb6c74001646eecd2015bfcde98a20d9006483a2aad3d4714a3e:00000003|urn:year:7e189630ad86951dc1160624c161f1f6227f83d926233629e4a8da2d2386ae9d:00001978|", + "claimPath": "identity.dateOfBirth", + "targetHash": "93f1faaa5af8b5f9db24f660940d5fe975d71f6d29d0ee2857b47e2cef7f11e8", + "node": [ + { + "right": "45b52663fcffbc0ef018979179d16dab408b3183a64ebf534ab109b7fe594a48" + }, + { + "right": "b213a284c598763254471aac74326af69c13355404356f794c3606f0c8d85b9c" + }, + { + "left": "f89530e2b7e3e5e243674f1fe0ced3d4e660b4b3d9d2f78dc74afe7aa2069e8b" + }, + { + "right": "f0bea436f87b9b691324e18afaf800411d6d2e213d180fc2721782fb393a36f0" + }, + { + "right": "efb0034a22c3f78c5435f0b33dfa120f9720313ced0b2defe465e087f3fe470b" + } + ] + }, + { + "identifier": "cvc:Meta:issuer", + "value": "urn:issuer:769197d3d0e416dd621d75d9d0449ab30e2f501dea364cc792552df0b6e8ec05:d460c90d-4032-4c29-9743-f52e0a852602", + "claimPath": "meta.issuer", + "targetHash": "45b52663fcffbc0ef018979179d16dab408b3183a64ebf534ab109b7fe594a48", + "node": [ + { + "left": "93f1faaa5af8b5f9db24f660940d5fe975d71f6d29d0ee2857b47e2cef7f11e8" + }, + { + "right": "b213a284c598763254471aac74326af69c13355404356f794c3606f0c8d85b9c" + }, + { + "left": "f89530e2b7e3e5e243674f1fe0ced3d4e660b4b3d9d2f78dc74afe7aa2069e8b" + }, + { + "right": "f0bea436f87b9b691324e18afaf800411d6d2e213d180fc2721782fb393a36f0" + }, + { + "right": "efb0034a22c3f78c5435f0b33dfa120f9720313ced0b2defe465e087f3fe470b" + } + ] + }, + { + "identifier": "cvc:Meta:issuanceDate", + "value": "urn:issuanceDate:dbeeebc31ea7f7371540a75479ee265dab9db6a291ae406acdf80d227a49056c:2018-10-08T19:46:22.364Z", + "claimPath": "meta.issuanceDate", + "targetHash": "1702fc187d05ee760f13e143370e09298e6bd44ad0db9c8025053839b50f7968", + "node": [ + { + "right": "3319c5ed870611c4dcd9baf2f5da3c6bc77437edcaa5721283528b231892c56d" + }, + { + "left": "5396bfaf8f82259a40a4b50723d1ae0c3332ea89f064dafc2a03c8d3a5650bf1" + }, + { + "left": "f89530e2b7e3e5e243674f1fe0ced3d4e660b4b3d9d2f78dc74afe7aa2069e8b" + }, + { + "right": "f0bea436f87b9b691324e18afaf800411d6d2e213d180fc2721782fb393a36f0" + }, + { + "right": "efb0034a22c3f78c5435f0b33dfa120f9720313ced0b2defe465e087f3fe470b" + } + ] + }, + { + "identifier": "cvc:Meta:expirationDate", + "value": "urn:expirationDate:beb8164634c2a861f122a17b553ec8a35dbf1bbf8b07b921dbc752d28b12b73a:null", + "claimPath": "meta.expirationDate", + "targetHash": "3319c5ed870611c4dcd9baf2f5da3c6bc77437edcaa5721283528b231892c56d", + "node": [ + { + "left": "1702fc187d05ee760f13e143370e09298e6bd44ad0db9c8025053839b50f7968" + }, + { + "left": "5396bfaf8f82259a40a4b50723d1ae0c3332ea89f064dafc2a03c8d3a5650bf1" + }, + { + "left": "f89530e2b7e3e5e243674f1fe0ced3d4e660b4b3d9d2f78dc74afe7aa2069e8b" + }, + { + "right": "f0bea436f87b9b691324e18afaf800411d6d2e213d180fc2721782fb393a36f0" + }, + { + "right": "efb0034a22c3f78c5435f0b33dfa120f9720313ced0b2defe465e087f3fe470b" + } + ] + } + ] + } +} diff --git a/__test__/creds/proxyFixtures/VCWithTamperedLeafValue.json b/__test__/creds/proxyFixtures/VCWithTamperedLeafValue.json new file mode 100644 index 00000000..6e16101c --- /dev/null +++ b/__test__/creds/proxyFixtures/VCWithTamperedLeafValue.json @@ -0,0 +1,145 @@ +{ + "id": "3636227c-5adf-4135-b81c-6dd1da53fd67", + "issuer": "", + "issuanceDate": "2018-11-13T18:54:11.665Z", + "identifier": "credential-cvc:Email-v1", + "expirationDate": null, + "version": "1", + "type": [ + "Credential", + "credential-cvc:Email-v1" + ], + "claim": { + "contact": { + "email": { + "domain": { + "name": "UTpHKFyaaB", + "tld": "oVaPsceZ4C" + }, + "username": "ZcMpCBQ0lE" + } + } + }, + "proof": { + "type": "CvcMerkleProof2018", + "merkleRoot": "7f62f719275f47331782c57d98e138c2c063065476f73a38c99023ddf9009287", + "anchor": "TBD (Civic Blockchain Attestation)", + "leaves": [ + { + "identifier": "claim-cvc:Contact.email-v1", + "value": "urn:email.domain.name:65572f78625ca98197745bd560fc5d8e6a7be7d8d9fcf6344947b697b73cd676:UTpHKFyaB|urn:email.domain.tld:199c3b2cbc991cf024860f3cdfb71c956f0dea1fe397efb10ad1d8621163a9a1:oVaPsceZ4C|urn:email.username:705e41988a3659d943eeaaa5e6c91cc8de401674c4e130a7c44f5b4b2e8d7736:ZcMpCBQ0lE|", + "claimPath": "contact.email", + "targetHash": "dbd7c2e9f6369bdc1653cd29484b23324bac5cc2681bc956d5621163d10c82e7", + "node": [ + { + "right": "e3662aeff5df76694848bf529ec9e52f4a981d5a0afa27e48bfeae37992d7" + }, + { + "right": "43a08a21a85219f2964a5473e270698296aeda22c08299ba61523d6b51bab102" + }, + { + "right": "825986e22e786f431106b7e262bda5a2b8d7794a5ad6158727d77c978b47d290" + }, + { + "right": "15442a3233e960fb6165bad383a9e7eca948a70576e42c627c1d71ca4bf15644" + }, + { + "right": "81c3ed3f0c3da91e4d8d8d0143c2ef10ee92f911d5f1c941d67c8545f251d5d4" + } + ] + }, + { + "identifier": "claim-cvc:Email.domain-v1", + "value": "urn:domain.name:65572f78625ca98197745bd560fc5d8e6a7be7d8d9fcf6344947b697b73cd676:UTpHKFyaaB|urn:domain.tld:199c3b2cbc991cf024860f3cdfb71c956f0dea1fe397efb10ad1d8621163a9a1:oVaPsceZ4C|", + "claimPath": "contact.email.domain", + "targetHash": "e3662aeff5df76f0a694848bf529ec9e52f4a981d5a0afa27e48bfeae37992d7", + "node": [ + { + "left": "dbd7c2e9f6369bdc1653cd29484b23324bac5cc2681bc956d5621163d10c82e7" + }, + { + "right": "43a08a21a85219f2964a5473e270698296aeda22c08299ba61523d6b51bab102" + }, + { + "right": "825986e22e786f431106b7e262bda5a2b8d7794a5ad6158727d77c978b47d290" + }, + { + "right": "15442a3233e960fb6165bad383a9e7eca948a70576e42c627c1d71ca4bf15644" + }, + { + "right": "81c3ed3f0c3da91e4d8d8d0143c2ef10ee92f911d5f1c941d67c8545f251d5d4" + } + ] + }, + { + "identifier": "cvc:Meta:issuer", + "value": "urn:issuer:3c1d9cc9f8bd5dd7f4845c18017c559ecee758c6dc2f5a3b63385bf3f681e13a:|", + "claimPath": "meta.issuer", + "targetHash": "321c8608ee0b80eab76db4d753e1f5311e722d0d77468e376bc25a78b8560b1b", + "node": [ + { + "right": "2820718fc34e3e07c40c4c0c0985937a193a63839695768f38630acfbecaf85d" + }, + { + "left": "b13aa2fb81649ae46142393ef503c7dea123f60e0909002f9f5d19a49cf8c787" + }, + { + "right": "825986e22e786f431106b7e262bda5a2b8d7794a5ad6158727d77c978b47d290" + }, + { + "right": "15442a3233e960fb6165bad383a9e7eca948a70576e42c627c1d71ca4bf15644" + }, + { + "right": "81c3ed3f0c3da91e4d8d8d0143c2ef10ee92f911d5f1c941d67c8545f251d5d4" + } + ] + }, + { + "identifier": "cvc:Meta:issuanceDate", + "value": "urn:issuanceDate:0029acb02ff26faf7775883957e9a5271b358f56734496b7ffde2760ace9ddce:2018-11-13T18:54:11.665Z|", + "claimPath": "meta.issuanceDate", + "targetHash": "2820718fc34e3e07c40c4c0c098937a193a63839695768f38630acfbecaf85d", + "node": [ + { + "left": "321c8608ee0b80eab76db4d753e1f5311e722d0d77468e376bc25a78b8560b1b" + }, + { + "left": "b13aa2fb81649ae46142393ef503c7dea123f60e0909002f9f5d19a49cf8c787" + }, + { + "right": "825986e22e786f431106b7e262bda5a2b8d7794a5ad6158727d77c978b47d290" + }, + { + "right": "15442a3233e960fb6165bad383a9e7eca948a70576e42c627c1d71ca4bf15644" + }, + { + "right": "81c3ed3f0c3da91e4d8d8d0143c2ef10ee92f911d5f1c941d67c8545f251d5d4" + } + ] + }, + { + "identifier": "cvc:Meta:expirationDate", + "value": "urn:expirationDate:f437c1d530d5422b3df947b7d97da82c5abfee582c1be15bd2900ff35e8d0624:null|", + "claimPath": "meta.expirationDate", + "targetHash": "c73ce4be4e264f366dfc8a95abf7e507e75d13a2a06af5e50d2dc09e6c71d9cd", + "node": [ + { + "right": "8c741ed5a929697f02cfb47019d1e60ed038ac40b4f32ef52ae48ea0fa93c0fe" + }, + { + "right": "9740db43522f2170c4ad18230f53ac4dbdb9f7e423687e320767b569d6ee12be" + }, + { + "left": "63866d32feddce9393a91d54b85d370c5cfc38641ce3b4db2df73499b9347918" + }, + { + "right": "15442a3233e960fb6165bad383a9e7eca948a70576e42c627c1d71ca4bf15644" + }, + { + "right": "81c3ed3f0c3da91e4d8d8d0143c2ef10ee92f911d5f1c941d67c8545f251d5d4" + } + ] + } + ] + } +} diff --git a/__test__/creds/proxyFixtures/filteredIdDocument-v2.json b/__test__/creds/proxyFixtures/filteredIdDocument-v2.json new file mode 100644 index 00000000..fa556492 --- /dev/null +++ b/__test__/creds/proxyFixtures/filteredIdDocument-v2.json @@ -0,0 +1,53 @@ +{ + "id": "f471b5f8-6ad6-4782-968d-f2924145fa54", + "issuer": "", + "issuanceDate": "2021-05-26T20:11:12.082Z", + "identifier": "credential-cvc:IdDocument-v2", + "expirationDate": null, + "version": "1", + "type": [ + "Credential", + "credential-cvc:IdDocument-v2" + ], + "transient": false, + "claim": { + "document": { + "dateOfBirth": { + "day": 20, + "month": 3, + "year": 1978 + } + } + }, + "proof": { + "type": "CvcMerkleProof2018", + "merkleRoot": "9d424cbc30d418ed42f1b1031fa4fdef273e6b371637b4c8e5184a566b9d27cc", + "anchor": "TBD (Civic Blockchain Attestation)", + "leaves": [ + { + "identifier": "claim-cvc:Document.dateOfBirth-v1", + "value": "urn:dateOfBirth.day:f0bbfa2a35fc0dfa27a2620691feedde6fff1c522817b546e730740f7339354d:20|urn:dateOfBirth.month:75e6e5fa1f03d6b985862e7ad1467405e0c482df64e6ed1692312aaba7d4d951:3|urn:dateOfBirth.year:c4d7200e945ef41009be24127cdd394d17a7bc0330d3b1b19270372543ff6517:1978|", + "claimPath": "document.dateOfBirth", + "targetHash": "3fdb18a8022d009da8eda7b353ebfdaad91ad4d6256f647e174ac16448d42f6d", + "node": [ + { + "left": "72e6f2e8c817048bb82442371202c9c078cabbacb7739ce4781f68855b362ca8" + }, + { + "right": "aae76d0dd2b272496a4ccc799cd60a329da4d78742b9e4f8792c4a3b4259d414" + }, + { + "right": "9c4a9d7c1d1a76dd3c8aa274d6cf8de8cd5ed4658162c84db409e8c0dab422ea" + }, + { + "left": "03024ff54437b7d65ad908229977e8603f3f5451a611ec88235775db23d522f5" + }, + { + "right": "b8dc070cacd5d604ec328cfee7d396e3a6ba5011a616049126d37460f7280154" + } + ] + } + ] + }, + "granted": null +} \ No newline at end of file From 07edc7e806330bc3626568c436b60a2dc924b27a Mon Sep 17 00:00:00 2001 From: William Brooks Date: Wed, 15 Dec 2021 13:13:39 +0200 Subject: [PATCH 10/52] IDCOM-1426 Fixed type when converting back to old credential format --- src/creds/VerifiableCredentialProxy.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/creds/VerifiableCredentialProxy.js b/src/creds/VerifiableCredentialProxy.js index bcc4deae..0ab1817d 100644 --- a/src/creds/VerifiableCredentialProxy.js +++ b/src/creds/VerifiableCredentialProxy.js @@ -68,7 +68,7 @@ class VerifiableCredentialProxy extends VerifiableCredential { issuanceDate: _.clone(this.issuanceDate), expirationDate: _.clone(this.expirationDate), version: _.clone(this.version), - type: _.clone(this.type), + type: ['Credential', this.identifier], claim: _.clone(this.credentialSubject), proof: _.clone(this.proof), }; @@ -80,8 +80,9 @@ class VerifiableCredentialProxy extends VerifiableCredential { } } -VerifiableCredentialProxy.create = async (identifier, issuer, expiryIn, ucas, version, evidence, - signerVerifier = null) => { +VerifiableCredentialProxy.create = async ( + identifier, issuer, expiryIn, ucas, version, evidence, signerVerifier = null, +) => { // Load the schema and it's references from a source to be used for validation and defining the schema definitions const schema = await schemaLoader.loadSchemaFromTitle(identifier); From 6be2c22ac89eab819202c0ddfa4693b5ed020ece Mon Sep 17 00:00:00 2001 From: William Brooks Date: Wed, 15 Dec 2021 13:17:53 +0200 Subject: [PATCH 11/52] IDCOM-1426 Updated comments --- src/creds/VerifiableCredentialProxy.js | 52 ++++++++++++++++++-------- 1 file changed, 36 insertions(+), 16 deletions(-) diff --git a/src/creds/VerifiableCredentialProxy.js b/src/creds/VerifiableCredentialProxy.js index 0ab1817d..811ed74d 100644 --- a/src/creds/VerifiableCredentialProxy.js +++ b/src/creds/VerifiableCredentialProxy.js @@ -100,6 +100,13 @@ VerifiableCredentialProxy.create = async ( return new VerifiableCredentialProxy(identifier, issuer, expiryIn, ucas, version, evidence, signerVerifier); }; +/** + * Factory function that creates a new Verifiable Credential based on a JSON object. + * + * This proxy function ensures that the VC is converted into the new format. + * @param {*} verifiableCredentialJSON + * @returns VerifiableCredentialBaseConstructor + */ VerifiableCredentialProxy.fromJSON = async (verifiableCredentialJSON, partialPresentation = false) => { const newObj = await VerifiableCredentialProxy.create( verifiableCredentialJSON.identifier, @@ -126,23 +133,36 @@ VerifiableCredentialProxy.fromJSON = async (verifiableCredentialJSON, partialPre return newObj; }; +/** + * Non cryptographically secure verify the Credential + * Performs a proofs verification only. + * + * This proxy function ensures that if the VC is provided as a value object, it is correctly converted + * @param credential - A credential object with expirationDate, claim and proof + * @return true if verified, false otherwise. + */ +VerifiableCredentialProxy.nonCryptographicallySecureVerify = async (credential) => { + const vc = await VerifiableCredentialProxy.fromJSON(credential); -VerifiableCredentialProxy - - .nonCryptographicallySecureVerify = async (credential) => { - const vc = await VerifiableCredentialProxy.fromJSON(credential); - - return VerifiableCredential.nonCryptographicallySecureVerify(vc); - }; - -VerifiableCredentialProxy - - .cryptographicallySecureVerify = async (credential, verifyAttestationFunc, verifySignatureFunc) => { - const vc = await VerifiableCredentialProxy.fromJSON(credential); + return VerifiableCredential.nonCryptographicallySecureVerify(vc); +}; - return VerifiableCredential.cryptographicallySecureVerify(vc, verifyAttestationFunc, verifySignatureFunc); - }; +/** + * Cryptographically secure verify the Credential. + * Performs a non cryptographically secure verification, attestation check and signature validation. + * + * This proxy function ensures that if the VC is provided as a value object, it is correctly converted + * @param credential - A credential object with expirationDate, claim and proof + * @param verifyAttestationFunc - Async method to verify a credential attestation + * @param verifySignatureFunc - Async method to verify a credential signature + * @return true if verified, false otherwise. + */ +VerifiableCredentialProxy.cryptographicallySecureVerify = async ( + credential, verifyAttestationFunc, verifySignatureFunc, +) => { + const vc = await VerifiableCredentialProxy.fromJSON(credential); -module + return VerifiableCredential.cryptographicallySecureVerify(vc, verifyAttestationFunc, verifySignatureFunc); +}; - .exports = VerifiableCredentialProxy; +module.exports = VerifiableCredentialProxy; From 1a18937bd005fde52cc879a68061ff67c1abd4b8 Mon Sep 17 00:00:00 2001 From: William Brooks Date: Wed, 15 Dec 2021 16:50:38 +0200 Subject: [PATCH 12/52] IDCOM-1425 Removed redundant code and added additional comments --- src/creds/VerifiableCredential.js | 6 ------ src/schemas/jsonSchema/index.js | 6 ++++++ 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/creds/VerifiableCredential.js b/src/creds/VerifiableCredential.js index 218e0915..51b26995 100644 --- a/src/creds/VerifiableCredential.js +++ b/src/creds/VerifiableCredential.js @@ -809,12 +809,6 @@ VerifiableCredentialBaseConstructor.fromJSON = async (verifiableCredentialJSON, const newObj = await VerifiableCredentialBaseConstructor.create( verifiableCredentialJSON.identifier, verifiableCredentialJSON.issuer, - null, - null, - null, - null, - null, - false, ); newObj.id = _.clone(verifiableCredentialJSON.id); diff --git a/src/schemas/jsonSchema/index.js b/src/schemas/jsonSchema/index.js index 424c52f0..e9ac5a6d 100644 --- a/src/schemas/jsonSchema/index.js +++ b/src/schemas/jsonSchema/index.js @@ -135,6 +135,12 @@ function isDefinitionEqual(definition, ucaDefinition) { const isUCA = uca => /^[^:]+:[^:]+:[^:]+$/.test(uca); +/** + * Supporting both claim and credentialSubject + * TODO: remove this once backwards compatibility has been removed + * @param schema + * @returns {*|(() => Promise)} + */ const getCredentialSubjectProperties = schema => ( schema.properties.credentialSubject ? schema.properties.credentialSubject : schema.properties.claim ); From bccddb681fbf6b884a4fdd12237266c3f83938a3 Mon Sep 17 00:00:00 2001 From: William Brooks Date: Tue, 21 Dec 2021 10:13:51 +0200 Subject: [PATCH 13/52] IDCOM-1435 fix after merge --- src/schemas/jsonSchema/index.js | 71 +++++++++++++++++---------------- 1 file changed, 36 insertions(+), 35 deletions(-) diff --git a/src/schemas/jsonSchema/index.js b/src/schemas/jsonSchema/index.js index 37aff4af..5048f3c3 100644 --- a/src/schemas/jsonSchema/index.js +++ b/src/schemas/jsonSchema/index.js @@ -114,6 +114,41 @@ class SummaryMapper { } } +/** + * Flattens the properties of a schema if there are any referenced schemas + * @param schema + * @returns {Promise<*>} + */ +const flattenCredentialSchemaProperties = async (schema) => { + let properties = schema.properties ? schema.properties : {}; + + if (schema.allOf) { + const promises = schema.allOf.map(async (allOf) => { + if (allOf.$ref) { + const refSchema = await this.loadSchemaFromUri(allOf.$ref); + const refProperties = await flattenCredentialSchemaProperties(refSchema); + + properties = { + ...properties, + ...refProperties, + }; + } + + if (allOf.properties) { + properties = { + ...properties, + ...allOf.properties, + }; + } + }); + + await Promise.all(promises); + } + + return properties; +}; + + const getSchemaVersion = (identifier) => { const matches = identifier.match(/-v([\d]+$)/); if (matches && matches.length > 1) { @@ -142,7 +177,7 @@ const isUCA = uca => /^[^:]+:[^:]+:[^:]+$/.test(uca); * @returns {*|(() => Promise)} */ const getCredentialSubjectProperties = async (schema) => { - const schemaProperties = await this.flattenCredentialSchemaProperties(schema); + const schemaProperties = await flattenCredentialSchemaProperties(schema); return schemaProperties.credentialSubject ? schemaProperties.credentialSubject : schemaProperties.claim; }; @@ -234,40 +269,6 @@ class SchemaLoader { } } - /** - * Flattens the properties of a schema if there are any referenced schemas - * @param schema - * @returns {Promise<*>} - */ - async flattenCredentialSchemaProperties(schema) { - let properties = schema.properties ? schema.properties : {}; - - if (schema.allOf) { - const promises = schema.allOf.map(async (allOf) => { - if (allOf.$ref) { - const refSchema = await this.loadSchemaFromUri(allOf.$ref); - const refProperties = await this.flattenCredentialSchemaProperties(refSchema); - - properties = { - ...properties, - ...refProperties, - }; - } - - if (allOf.properties) { - properties = { - ...properties, - ...allOf.properties, - }; - } - }); - - await Promise.all(promises); - } - - return properties; - } - /** * Adds a credential definition to be backwards compatible with the old schema structure. */ From 3736066fafce04279926839efea7e3c282a86a98 Mon Sep 17 00:00:00 2001 From: William Brooks Date: Tue, 21 Dec 2021 10:55:53 +0200 Subject: [PATCH 14/52] IDCOM-1435 refactor after merge --- __test__/creds/VerifiableCredential.test.js | 10 +- .../credential-test:IdDocument-v1.schema.json | 5 +- src/schemas/jsonSchema/index.js | 101 +++++++++--------- 3 files changed, 57 insertions(+), 59 deletions(-) diff --git a/__test__/creds/VerifiableCredential.test.js b/__test__/creds/VerifiableCredential.test.js index 32f9d190..74d0869a 100644 --- a/__test__/creds/VerifiableCredential.test.js +++ b/__test__/creds/VerifiableCredential.test.js @@ -1908,8 +1908,9 @@ describe('Referenced Schemas for Verifiable Credentials', () => { const evidences = await Claim.create('claim-cvc:Document.evidences-v1', evidencesValue, '1'); const credential = await VC.create( - 'credential-test:IdDocument-v1', '', null, [type, number, name, gender, - issueCountry, placeOfBirth, dateOfBirth, dateOfExpiry, nationality, evidences], '1', + 'credential-test:IdDocument-v1', '', null, credentialSubject, [type, number, name, gender, + // 'credential-test:IdDocument-v1', '', null, credentialSubject, [type, number, name, gender, + issueCountry, placeOfBirth, dateOfBirth, dateOfExpiry, nationality, evidences], ); expect(credential).toBeDefined(); @@ -1922,10 +1923,9 @@ describe('Referenced Schemas for Verifiable Credentials', () => { const number = await Claim.create('claim-cvc:Document.number-v1', 'FP12345', '1'); const createCredential = VC.create( - 'credential-test:IdDocument-v1', '', null, [type, number], '1', + 'credential-test:IdDocument-v1', '', null, credentialSubject, [type, number], ); - expect(createCredential).rejects.toThrow('Missing required claim(s): claim-cvc:Document.name-v1, ' - + 'claim-cvc:Document.issueCountry-v1, claim-cvc:Document.dateOfBirth-v1, claim-cvc:Document.evidences-v1'); + return expect(createCredential).rejects.toThrow('Missing required fields to credential-test:IdDocument-v1'); }); }); diff --git a/__test__/schema/fixtures/credential-test:IdDocument-v1.schema.json b/__test__/schema/fixtures/credential-test:IdDocument-v1.schema.json index 26e5e133..b7ef5343 100644 --- a/__test__/schema/fixtures/credential-test:IdDocument-v1.schema.json +++ b/__test__/schema/fixtures/credential-test:IdDocument-v1.schema.json @@ -5,8 +5,7 @@ "type": "object", "allOf": [ { - "$ref": "http://identity.com/schemas/credential-cvc:IdDocument-v2" + "$ref": "http://identity.com/schemas/credential-cvc:IdDocument-v3" } - ], - "additionalProperties": false + ] } diff --git a/src/schemas/jsonSchema/index.js b/src/schemas/jsonSchema/index.js index 5048f3c3..edc9c4ad 100644 --- a/src/schemas/jsonSchema/index.js +++ b/src/schemas/jsonSchema/index.js @@ -114,41 +114,6 @@ class SummaryMapper { } } -/** - * Flattens the properties of a schema if there are any referenced schemas - * @param schema - * @returns {Promise<*>} - */ -const flattenCredentialSchemaProperties = async (schema) => { - let properties = schema.properties ? schema.properties : {}; - - if (schema.allOf) { - const promises = schema.allOf.map(async (allOf) => { - if (allOf.$ref) { - const refSchema = await this.loadSchemaFromUri(allOf.$ref); - const refProperties = await flattenCredentialSchemaProperties(refSchema); - - properties = { - ...properties, - ...refProperties, - }; - } - - if (allOf.properties) { - properties = { - ...properties, - ...allOf.properties, - }; - } - }); - - await Promise.all(promises); - } - - return properties; -}; - - const getSchemaVersion = (identifier) => { const matches = identifier.match(/-v([\d]+$)/); if (matches && matches.length > 1) { @@ -170,18 +135,6 @@ function isDefinitionEqual(definition, ucaDefinition) { const isUCA = uca => /^[^:]+:[^:]+:[^:]+$/.test(uca); -/** - * Supporting both claim and credentialSubject - * TODO: remove this once backwards compatibility has been removed - * @param schema - * @returns {*|(() => Promise)} - */ -const getCredentialSubjectProperties = async (schema) => { - const schemaProperties = await flattenCredentialSchemaProperties(schema); - - return schemaProperties.credentialSubject ? schemaProperties.credentialSubject : schemaProperties.claim; -}; - /** * This class loads the schema definitions as needed by using loaders provided by the */ @@ -251,13 +204,60 @@ class SchemaLoader { definition.depends.push(propertySchema.title); } - const csProperties = getCredentialSubjectProperties(schema); + const csProperties = await this.getCredentialSubjectProperties(schema); if (csProperties.required && csProperties.required.includes(property)) { definition.required.push(propertySchema.title); } } + /** + * Supporting both claim and credentialSubject + * TODO: remove this once backwards compatibility has been removed + * @param schema + * @returns {*|(() => Promise)} + */ + async getCredentialSubjectProperties(schema) { + const schemaProperties = await this.flattenCredentialSchemaProperties(schema); + + return schemaProperties.credentialSubject ? schemaProperties.credentialSubject : schemaProperties.claim; + } + + /** + * Flattens the properties of a schema if there are any referenced schemas + * @param schema + * @returns {Promise<*>} + */ + async flattenCredentialSchemaProperties(schema) { + let properties = schema.properties ? schema.properties : {}; + + if (schema.allOf) { + const promises = schema.allOf.map(async (allOf) => { + if (allOf.$ref) { + const refSchema = await this.loadSchemaFromUri(allOf.$ref); + const refProperties = await this.flattenCredentialSchemaProperties(refSchema); + + properties = { + ...properties, + ...refProperties, + }; + } + + if (allOf.properties) { + properties = { + ...properties, + ...allOf.properties, + }; + } + }); + + await Promise.all(promises); + } + + return properties; + } + + /** * Adds a claim definition to be backwards compatible with the old schema structure. */ @@ -283,7 +283,7 @@ class SchemaLoader { definition.transient = true; } - const credentialSubjectDefinition = getCredentialSubjectProperties(schema); + const credentialSubjectDefinition = await this.getCredentialSubjectProperties(schema); if (credentialSubjectDefinition.required) { definition.required = []; @@ -440,8 +440,7 @@ class SchemaLoader { if (schema.type === 'object') { if (!_.isEmpty(schema.properties)) { - const values = await this.getPropertyValues(schema.properties); - return values; + return this.getPropertyValues(schema.properties); } } From 4e0adc76fbd7b29fbf0f451f490cc5f40ba765ee Mon Sep 17 00:00:00 2001 From: William Brooks Date: Tue, 21 Dec 2021 21:43:01 +0200 Subject: [PATCH 15/52] IDCOM-1435 Added additional tests and fixed bug relating to conversion of W3C schemas --- __test__/creds/VerifiableCredential.test.js | 41 ++++++- .../creds/VerifiableCredentialProxy.test.js | 104 ++++++++++++++++++ __test__/creds/fixtures/Identity.json | 4 + src/creds/VerifiableCredentialProxy.js | 6 + 4 files changed, 153 insertions(+), 2 deletions(-) diff --git a/__test__/creds/VerifiableCredential.test.js b/__test__/creds/VerifiableCredential.test.js index 74d0869a..2ad40012 100644 --- a/__test__/creds/VerifiableCredential.test.js +++ b/__test__/creds/VerifiableCredential.test.js @@ -1831,7 +1831,7 @@ describe('Transient Credential Tests', () => { }); }); -describe('Signned Verifiable Credentials', () => { +describe('Signed Verifiable Credentials', () => { beforeAll(() => { schemaLoader.addLoader(new CVCSchemaLoader()); }); @@ -1909,7 +1909,6 @@ describe('Referenced Schemas for Verifiable Credentials', () => { const credential = await VC.create( 'credential-test:IdDocument-v1', '', null, credentialSubject, [type, number, name, gender, - // 'credential-test:IdDocument-v1', '', null, credentialSubject, [type, number, name, gender, issueCountry, placeOfBirth, dateOfBirth, dateOfExpiry, nationality, evidences], ); @@ -1929,3 +1928,41 @@ describe('Referenced Schemas for Verifiable Credentials', () => { return expect(createCredential).rejects.toThrow('Missing required fields to credential-test:IdDocument-v1'); }); }); + +describe('Verifiable Credential JSON serialization', () => { + beforeAll(() => { + schemaLoader.addLoader(new CVCSchemaLoader()); + }); + + it('serializes a VC to JSON', async () => { + const name = await Claim.create('claim-cvc:Identity.name-v1', identityName); + const dob = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', identityDateOfBirth); + const cred = await VC.create('credential-cvc:Identity-v3', uuidv4(), null, credentialSubject, [name, dob], null); + + // serialize the credential to JSON, then back to an object to be tested against + const credJSON = JSON.parse(JSON.stringify(cred)); + + expect(credJSON).toEqual(expect.objectContaining({ + '@context': ['https://www.w3.org/2018/credentials/v1', 'https://www.identity.com/credentials/v3'], + id: cred.id, + issuer: cred.issuer, + issuanceDate: cred.issuanceDate, + type: ['VerifiableCredential', 'IdentityCredential'], + credentialSubject: { + id: credentialSubject, + identity: { + name: { + familyNames: identityName.familyNames, + givenNames: identityName.givenNames, + otherNames: identityName.otherNames, + }, + dateOfBirth: { + day: identityDateOfBirth.day, + month: identityDateOfBirth.month, + year: identityDateOfBirth.year, + }, + }, + }, + })); + }); +}); diff --git a/__test__/creds/VerifiableCredentialProxy.test.js b/__test__/creds/VerifiableCredentialProxy.test.js index f7daaa1b..e2c06311 100644 --- a/__test__/creds/VerifiableCredentialProxy.test.js +++ b/__test__/creds/VerifiableCredentialProxy.test.js @@ -1887,3 +1887,107 @@ describe('Signned Verifiable Credentials', () => { expect(cred.credentialSubject).toBeDefined(); }); }); + +describe('Verifiable Credential JSON serialization', () => { + // eslint-disable-next-line global-require + const idCredOld = require('./proxyFixtures/Identity.json'); + // eslint-disable-next-line global-require + const idCredNew = require('./fixtures/Identity.json'); + + beforeAll(() => { + schemaLoader.addLoader(new CVCSchemaLoader()); + }); + + it('serializes an "old" format VC to JSON', async () => { + const name = await Claim.create('claim-cvc:Identity.name-v1', identityName); + const dob = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', identityDateOfBirth); + const cred = await VC.create('credential-cvc:Identity-v1', uuidv4(), null, [name, dob]); + + // serialize the credential to JSON, then back to an object to be tested against + const credJSON = JSON.parse(JSON.stringify(cred)); + + expect(credJSON).toEqual(expect.objectContaining({ + id: cred.id, + identifier: 'credential-cvc:Identity-v1', + issuer: cred.issuer, + issuanceDate: cred.issuanceDate, + type: ['Credential', 'credential-cvc:Identity-v1'], + claim: { + identity: { + name: { + familyNames: identityName.familyNames, + givenNames: identityName.givenNames, + otherNames: identityName.otherNames, + }, + dateOfBirth: { + day: identityDateOfBirth.day, + month: identityDateOfBirth.month, + year: identityDateOfBirth.year, + }, + }, + }, + })); + }); + + it('serializes a VC to W3C JSON', async () => { + const name = await Claim.create('claim-cvc:Identity.name-v1', identityName); + const dob = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', identityDateOfBirth); + const cred = await VC.create('credential-cvc:Identity-v3', uuidv4(), null, [name, dob], null); + + // serialize the credential to JSON, then back to an object to be tested against + const credJSON = JSON.parse(JSON.stringify(cred)); + + expect(credJSON).toEqual(expect.objectContaining({ + '@context': ['https://www.w3.org/2018/credentials/v1', 'https://www.identity.com/credentials/v3'], + id: cred.id, + issuer: cred.issuer, + issuanceDate: cred.issuanceDate, + type: ['VerifiableCredential', 'IdentityCredential'], + credentialSubject: { + id: '', + identity: { + name: { + familyNames: identityName.familyNames, + givenNames: identityName.givenNames, + otherNames: identityName.otherNames, + }, + dateOfBirth: { + day: identityDateOfBirth.day, + month: identityDateOfBirth.month, + year: identityDateOfBirth.year, + }, + }, + }, + })); + }); + + it('deserializes and re-serializes an "old" VC format via the proxy class', async () => { + const cred = await VC.fromJSON(idCredOld); + + const credJSON = JSON.parse(JSON.stringify(cred)); + + expect(credJSON).toEqual(expect.objectContaining({ + id: idCredOld.id, + identifier: idCredOld.identifier, + issuer: idCredOld.issuer, + issuanceDate: idCredOld.issuanceDate, + type: idCredOld.type, + claim: idCredOld.claim, + })); + }); + + it('deserializes and re-serializes a W3C VC format via the proxy class', async () => { + const cred = await VC.fromJSON(idCredNew); + + const credJSON = JSON.parse(JSON.stringify(cred)); + + expect(credJSON).toEqual(expect.objectContaining({ + '@context': idCredNew['@context'], + id: idCredNew.id, + issuer: idCredNew.issuer, + issuanceDate: idCredNew.issuanceDate, + type: idCredNew.type, + credentialSubject: idCredNew.credentialSubject, + })); + }); +}); diff --git a/__test__/creds/fixtures/Identity.json b/__test__/creds/fixtures/Identity.json index fbf6292c..15a16e45 100644 --- a/__test__/creds/fixtures/Identity.json +++ b/__test__/creds/fixtures/Identity.json @@ -1,4 +1,8 @@ { + "@context": [ + "https://www.w3.org/2018/credentials/v1", + "https://www.identity.com/credentials/v3" + ], "id": "e24b2c57-3d78-42c3-9111-aaabcab8006d", "issuer": "jest:test:fe0ca5d0-e8b0-11e8-8a40-7fe4d191eb47", "issuanceDate": "2018-11-15T08:32:30.893Z", diff --git a/src/creds/VerifiableCredentialProxy.js b/src/creds/VerifiableCredentialProxy.js index 811ed74d..cc5ba135 100644 --- a/src/creds/VerifiableCredentialProxy.js +++ b/src/creds/VerifiableCredentialProxy.js @@ -108,6 +108,12 @@ VerifiableCredentialProxy.create = async ( * @returns VerifiableCredentialBaseConstructor */ VerifiableCredentialProxy.fromJSON = async (verifiableCredentialJSON, partialPresentation = false) => { + const schema = await schemaLoader.loadSchemaFromTitle(verifiableCredentialJSON.identifier); + const properties = await schemaLoader.flattenCredentialSchemaProperties(schema); + if (properties.credentialSubject) { + return VerifiableCredential.fromJSON(verifiableCredentialJSON); + } + const newObj = await VerifiableCredentialProxy.create( verifiableCredentialJSON.identifier, verifiableCredentialJSON.issuer, From 9c84524fc0ab5cbf04535187662379d3ba141eda Mon Sep 17 00:00:00 2001 From: William Brooks Date: Tue, 11 Jan 2022 15:31:52 +0200 Subject: [PATCH 16/52] IDCOM-1427 Added util function for working with DIDs --- src/lib/did.js | 65 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 src/lib/did.js diff --git a/src/lib/did.js b/src/lib/did.js new file mode 100644 index 00000000..58fe3158 --- /dev/null +++ b/src/lib/did.js @@ -0,0 +1,65 @@ +const { findVerificationMethod } = require('@digitalbazaar/did-io'); +// TODO: Fix the CachedResolver loading issue in jest +const didIo = require('did-io'); +const didSol = require('@identity.com/did-io-driver-sol').default; +const { Keypair } = require('@solana/web3.js'); + +const kp = Keypair.generate(); +// no payer is needed as we are only resolving documents +didIo.use('sol', didSol.driver({ payer: kp.secretKey })); + +module.exports = { + /** + * Checks if a verificationMethod can sign for the DID document + * + * @param didOrDocument A DID (string) or DID document (object) + * @param verificationMethod The verification method to check + * @returns {Promise} True if the verification method can sign + */ + async canSign(didOrDocument, verificationMethod) { + const [verificationMethodDid] = verificationMethod.split('#'); + const document = didOrDocument.id ? didOrDocument : (await this.resolve(didOrDocument)); + + const did = document.id; + + // if the verificationMethod DID is for the document DID + if (verificationMethodDid === did) { + return document.capabilityInvocation.includes(verificationMethod); + } + + if (!document.controller.includes(verificationMethodDid)) { + // If the verification method DID is not a controller of the provided DID + return false; + } + + // Check if the verificationMethod exists on the controller DID document + const controllerDocument = await this.resolve(verificationMethodDid); + return controllerDocument.capabilityInvocation.includes(verificationMethod); + }, + + /** + * Resolves a DID document + * + * @param did The DID to resolve the document for + */ + async resolve(did) { + return didIo.get({ did }); + }, + + /** + * Finds the verificationMethod in a document (if it exists and is part of the capabilityInvocation) + * + * @param document The document to search through + * @param verificationMethod The verification method to return + */ + findVerificationMethod(document, verificationMethod) { + if (!document.capabilityInvocation.includes(verificationMethod)) { + return null; + } + + return findVerificationMethod({ + doc: document, + methodId: verificationMethod, + }); + }, +}; From 0cf819f32f24475f3389735750a0df00901bfe29 Mon Sep 17 00:00:00 2001 From: William Brooks Date: Tue, 11 Jan 2022 15:33:18 +0200 Subject: [PATCH 17/52] IDCOM-1427 Tests for DID functionality --- __test__/lib/did.test.js | 61 ++++++++++++++++ __test__/lib/fixtures/sol.did.controlled.json | 34 +++++++++ __test__/lib/fixtures/sol.did.controller.json | 32 +++++++++ .../lib/fixtures/sol.did.no_default_key.json | 44 ++++++++++++ __test__/lib/fixtures/sol.did.sparse.json | 32 +++++++++ __test__/lib/util/did.js | 70 +++++++++++++++++++ 6 files changed, 273 insertions(+) create mode 100644 __test__/lib/did.test.js create mode 100644 __test__/lib/fixtures/sol.did.controlled.json create mode 100644 __test__/lib/fixtures/sol.did.controller.json create mode 100644 __test__/lib/fixtures/sol.did.no_default_key.json create mode 100644 __test__/lib/fixtures/sol.did.sparse.json create mode 100644 __test__/lib/util/did.js diff --git a/__test__/lib/did.test.js b/__test__/lib/did.test.js new file mode 100644 index 00000000..e213e67e --- /dev/null +++ b/__test__/lib/did.test.js @@ -0,0 +1,61 @@ +const { + mockDids, + DID_WITH_NO_DEFAULT, + DID_SPARSE, + DID_CONTROLLER, + DID_CONTROLLED, +} = require('./util/did'); +const didUtil = require('../../src/lib/did'); + +describe('DIDs', () => { + beforeAll(mockDids); + + it('finds a valid verification method on a DID document', async () => { + const vm = `${DID_SPARSE}#default`; + const document = await didUtil.resolve(DID_SPARSE); + const verificationMethod = didUtil.findVerificationMethod(document, vm); + + expect(verificationMethod).toBeTruthy(); + expect(verificationMethod.id).toBe(vm); + expect(verificationMethod.controller).toBe(DID_SPARSE); + }); + + it('doesn\'t find a verification that is not in the capabilityInvocation', async () => { + const vm = `${DID_WITH_NO_DEFAULT}#default`; + const document = await didUtil.resolve(DID_WITH_NO_DEFAULT); + const verificationMethod = didUtil.findVerificationMethod(document, vm); + + expect(verificationMethod).toBe(null); + }); + + it('resolves a did:sol document', async () => { + const document = await didUtil.resolve(DID_SPARSE); + + expect(document).toBeTruthy(); + expect(document.id).toBe(DID_SPARSE); + }); + + it('did has authority to use a key', async () => { + const hasAuthority = await didUtil.canSign(DID_SPARSE, `${DID_SPARSE}#default`); + + expect(hasAuthority).toBeTruthy(); + }); + + it('did doesn\'t have authority to use non-existent key', async () => { + const hasAuthority = await didUtil.canSign(DID_SPARSE, `${DID_SPARSE}#key2`); + + expect(hasAuthority).toBeFalsy(); + }); + + it('did doesn\'t have authority to use a _removed_ default key', async () => { + const hasAuthority = await didUtil.canSign(DID_WITH_NO_DEFAULT, `${DID_WITH_NO_DEFAULT}#default`); + + expect(hasAuthority).toBeFalsy(); + }); + + it('did has authority to use key on controller', async () => { + const hasAuthority = await didUtil.canSign(DID_CONTROLLED, `${DID_CONTROLLER}#default`); + + expect(hasAuthority).toBeTruthy(); + }); +}); diff --git a/__test__/lib/fixtures/sol.did.controlled.json b/__test__/lib/fixtures/sol.did.controlled.json new file mode 100644 index 00000000..c64af668 --- /dev/null +++ b/__test__/lib/fixtures/sol.did.controlled.json @@ -0,0 +1,34 @@ +{ + "@context": [ + "https://w3id.org/did/v1.0", + "https://w3id.org/sol/v1" + ], + "id": "did:sol:localnet:2McEWrgSX2oU3aEWkJrpGN49kDp3ciKrH5MTi8vvuZpD", + "controller": [ + "did:sol:localnet:DY5HzWG9GJGTw3cfkFndMapGGMXpPVBhRe9jEJjX25u9" + ], + "verificationMethod": [ + { + "id": "did:sol:localnet:2McEWrgSX2oU3aEWkJrpGN49kDp3ciKrH5MTi8vvuZpD#default", + "type": "Ed25519VerificationKey2018", + "controller": "did:sol:localnet:2McEWrgSX2oU3aEWkJrpGN49kDp3ciKrH5MTi8vvuZpD", + "publicKeyBase58": "2McEWrgSX2oU3aEWkJrpGN49kDp3ciKrH5MTi8vvuZpD" + } + ], + "authentication": [], + "assertionMethod": [], + "keyAgreement": [], + "capabilityInvocation": [ + "did:sol:localnet:2McEWrgSX2oU3aEWkJrpGN49kDp3ciKrH5MTi8vvuZpD#default" + ], + "capabilityDelegation": [], + "service": [], + "publicKey": [ + { + "id": "did:sol:localnet:2McEWrgSX2oU3aEWkJrpGN49kDp3ciKrH5MTi8vvuZpD#default", + "type": "Ed25519VerificationKey2018", + "controller": "did:sol:localnet:2McEWrgSX2oU3aEWkJrpGN49kDp3ciKrH5MTi8vvuZpD", + "publicKeyBase58": "2McEWrgSX2oU3aEWkJrpGN49kDp3ciKrH5MTi8vvuZpD" + } + ] +} diff --git a/__test__/lib/fixtures/sol.did.controller.json b/__test__/lib/fixtures/sol.did.controller.json new file mode 100644 index 00000000..e5b84b50 --- /dev/null +++ b/__test__/lib/fixtures/sol.did.controller.json @@ -0,0 +1,32 @@ +{ + "@context": [ + "https://w3id.org/did/v1.0", + "https://w3id.org/sol/v1" + ], + "id": "did:sol:localnet:DY5HzWG9GJGTw3cfkFndMapGGMXpPVBhRe9jEJjX25u9", + "controller": [], + "verificationMethod": [ + { + "id": "did:sol:localnet:DY5HzWG9GJGTw3cfkFndMapGGMXpPVBhRe9jEJjX25u9#default", + "type": "Ed25519VerificationKey2018", + "controller": "did:sol:localnet:DY5HzWG9GJGTw3cfkFndMapGGMXpPVBhRe9jEJjX25u9", + "publicKeyBase58": "DY5HzWG9GJGTw3cfkFndMapGGMXpPVBhRe9jEJjX25u9" + } + ], + "authentication": [], + "assertionMethod": [], + "keyAgreement": [], + "capabilityInvocation": [ + "did:sol:localnet:DY5HzWG9GJGTw3cfkFndMapGGMXpPVBhRe9jEJjX25u9#default" + ], + "capabilityDelegation": [], + "service": [], + "publicKey": [ + { + "id": "did:sol:localnet:DY5HzWG9GJGTw3cfkFndMapGGMXpPVBhRe9jEJjX25u9#default", + "type": "Ed25519VerificationKey2018", + "controller": "did:sol:localnet:DY5HzWG9GJGTw3cfkFndMapGGMXpPVBhRe9jEJjX25u9", + "publicKeyBase58": "DY5HzWG9GJGTw3cfkFndMapGGMXpPVBhRe9jEJjX25u9" + } + ] +} diff --git a/__test__/lib/fixtures/sol.did.no_default_key.json b/__test__/lib/fixtures/sol.did.no_default_key.json new file mode 100644 index 00000000..0f4a2dac --- /dev/null +++ b/__test__/lib/fixtures/sol.did.no_default_key.json @@ -0,0 +1,44 @@ +{ + "@context": [ + "https://w3id.org/did/v1.0", + "https://w3id.org/sol/v1" + ], + "id": "did:sol:localnet:DwZYFeU2fy8JpmxwL8gH3CVqKcbeb2MALyEf1tVyyDAT", + "controller": [], + "verificationMethod": [ + { + "id": "did:sol:localnet:DwZYFeU2fy8JpmxwL8gH3CVqKcbeb2MALyEf1tVyyDAT#default", + "type": "Ed25519VerificationKey2018", + "controller": "did:sol:localnet:DwZYFeU2fy8JpmxwL8gH3CVqKcbeb2MALyEf1tVyyDAT", + "publicKeyBase58": "DwZYFeU2fy8JpmxwL8gH3CVqKcbeb2MALyEf1tVyyDAT" + }, + { + "id": "did:sol:localnet:DwZYFeU2fy8JpmxwL8gH3CVqKcbeb2MALyEf1tVyyDAT#mobile", + "type": "Ed25519VerificationKey2018", + "controller": "did:sol:localnet:DwZYFeU2fy8JpmxwL8gH3CVqKcbeb2MALyEf1tVyyDAT", + "publicKeyBase58": "DD6a2ZkggrMfsmBS5UzYA8aTx9D1C99dyokHhptepinz" + } + ], + "authentication": [], + "assertionMethod": [], + "keyAgreement": [], + "capabilityInvocation": [ + "did:sol:localnet:DwZYFeU2fy8JpmxwL8gH3CVqKcbeb2MALyEf1tVyyDAT#mobile" + ], + "capabilityDelegation": [], + "service": [], + "publicKey": [ + { + "id": "did:sol:localnet:DwZYFeU2fy8JpmxwL8gH3CVqKcbeb2MALyEf1tVyyDAT#default", + "type": "Ed25519VerificationKey2018", + "controller": "did:sol:localnet:DwZYFeU2fy8JpmxwL8gH3CVqKcbeb2MALyEf1tVyyDAT", + "publicKeyBase58": "DwZYFeU2fy8JpmxwL8gH3CVqKcbeb2MALyEf1tVyyDAT" + }, + { + "id": "did:sol:localnet:DwZYFeU2fy8JpmxwL8gH3CVqKcbeb2MALyEf1tVyyDAT#mobile", + "type": "Ed25519VerificationKey2018", + "controller": "did:sol:localnet:DwZYFeU2fy8JpmxwL8gH3CVqKcbeb2MALyEf1tVyyDAT", + "publicKeyBase58": "DD6a2ZkggrMfsmBS5UzYA8aTx9D1C99dyokHhptepinz" + } + ] +} diff --git a/__test__/lib/fixtures/sol.did.sparse.json b/__test__/lib/fixtures/sol.did.sparse.json new file mode 100644 index 00000000..f83ced59 --- /dev/null +++ b/__test__/lib/fixtures/sol.did.sparse.json @@ -0,0 +1,32 @@ +{ + "@context": [ + "https://w3id.org/did/v1.0", + "https://w3id.org/sol/v1" + ], + "id": "did:sol:localnet:6ffRJDKb3Ve83A9SsJmjyYk5Ef3LXcRkZAT6hXhBBrHf", + "controller": [], + "verificationMethod": [ + { + "id": "did:sol:localnet:6ffRJDKb3Ve83A9SsJmjyYk5Ef3LXcRkZAT6hXhBBrHf#default", + "type": "Ed25519VerificationKey2018", + "controller": "did:sol:localnet:6ffRJDKb3Ve83A9SsJmjyYk5Ef3LXcRkZAT6hXhBBrHf", + "publicKeyBase58": "6ffRJDKb3Ve83A9SsJmjyYk5Ef3LXcRkZAT6hXhBBrHf" + } + ], + "authentication": [], + "assertionMethod": [], + "keyAgreement": [], + "capabilityInvocation": [ + "did:sol:localnet:6ffRJDKb3Ve83A9SsJmjyYk5Ef3LXcRkZAT6hXhBBrHf#default" + ], + "capabilityDelegation": [], + "service": [], + "publicKey": [ + { + "id": "did:sol:localnet:6ffRJDKb3Ve83A9SsJmjyYk5Ef3LXcRkZAT6hXhBBrHf#default", + "type": "Ed25519VerificationKey2018", + "controller": "did:sol:localnet:6ffRJDKb3Ve83A9SsJmjyYk5Ef3LXcRkZAT6hXhBBrHf", + "publicKeyBase58": "6ffRJDKb3Ve83A9SsJmjyYk5Ef3LXcRkZAT6hXhBBrHf" + } + ] +} diff --git a/__test__/lib/util/did.js b/__test__/lib/util/did.js new file mode 100644 index 00000000..56260ddd --- /dev/null +++ b/__test__/lib/util/did.js @@ -0,0 +1,70 @@ +const nacl = require('tweetnacl'); +const bs58 = require('bs58'); +const didUtil = require('../../../src/lib/did'); + +// A default sparse DID document +const DID_SPARSE = 'did:sol:localnet:6ffRJDKb3Ve83A9SsJmjyYk5Ef3LXcRkZAT6hXhBBrHf'; +// A DID document where the default key has been removed +const DID_WITH_NO_DEFAULT = 'did:sol:localnet:DwZYFeU2fy8JpmxwL8gH3CVqKcbeb2MALyEf1tVyyDAT'; +// A controller DID (to be used with DID_CONTROLLED) +const DID_CONTROLLER = 'did:sol:localnet:DY5HzWG9GJGTw3cfkFndMapGGMXpPVBhRe9jEJjX25u9'; +// A controlled DID (to be used with DID_CONTROLLER) +const DID_CONTROLLED = 'did:sol:localnet:2McEWrgSX2oU3aEWkJrpGN49kDp3ciKrH5MTi8vvuZpD'; + +// Holds reference and PK for DID document fixtures +const DOCUMENTS = {}; +DOCUMENTS[DID_WITH_NO_DEFAULT] = [ + 'sol.did.no_default_key.json', + '67R6neGjm4L9kdJ4LbqLmgT3UecoHKwSBXh4zQUVRy4HqzxUFBR1uGCHxGoMbr98ACuT9XtKZejfUMvqQdDepUyq', +]; +DOCUMENTS[DID_SPARSE] = [ + 'sol.did.sparse.json', + '2yvWghJhJvMY3LLqpwdb3dCoKJiEm2s7TLLHgVKU81bgTnPdqKgSMzvR2qePG9cmGHJkpnwQTyPXTwFzpJ9JSMfw', +]; +DOCUMENTS[DID_CONTROLLER] = [ + 'sol.did.controller.json', + 'GQqLfmWSkTazpXjDgRGAvVVPqpb4LWjFFsVVBBZ5cMtJQEu47YrG7uyCMsVRequfJ2xrSohzJhKbeC56ivXfn79', +]; +DOCUMENTS[DID_CONTROLLED] = [ + 'sol.did.controlled.json', + '4shZPR61QMm4mCyS9EDMmKtPN7K4pZfysKXZ5YX7QDoHFRrHXmU7pECq7VxeQgGm8ih6jrVjynHy6EJx7b5MfZZK', +]; + +// mocks didUtil.resolve to return local fixtures instead of looking it up +const mockDids = () => { + didUtil.resolve = jest.fn() + .mockImplementation((did) => { + if (!DOCUMENTS[did]) { + return null; + } + + // eslint-disable-next-line global-require,import/no-dynamic-require + return require(`../fixtures/${DOCUMENTS[did][0]}`); + }) + .bind(didUtil); + + return didUtil; +}; + +/** + * Returns a private key for one of the above DIDs + * @param did + * @returns {nacl.SignKeyPair} + */ +const keyPair = (did) => { + const pk = DOCUMENTS[did][1]; + + return nacl.sign.keyPair.fromSecretKey(bs58.decode(pk)); +}; + +const privateKeyBase58 = did => DOCUMENTS[did][1]; + +module.exports = { + DID_WITH_NO_DEFAULT, + DID_CONTROLLER, + DID_CONTROLLED, + DID_SPARSE, + mockDids, + keyPair, + privateKeyBase58, +}; From e6aa7396e4147daeea4f96444377c223fd6b78b2 Mon Sep 17 00:00:00 2001 From: William Brooks Date: Tue, 11 Jan 2022 16:33:27 +0200 Subject: [PATCH 18/52] IDCOM-1427 Removed Solana web3 dependency --- src/lib/did.js | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/lib/did.js b/src/lib/did.js index 58fe3158..c4bb8418 100644 --- a/src/lib/did.js +++ b/src/lib/did.js @@ -2,11 +2,9 @@ const { findVerificationMethod } = require('@digitalbazaar/did-io'); // TODO: Fix the CachedResolver loading issue in jest const didIo = require('did-io'); const didSol = require('@identity.com/did-io-driver-sol').default; -const { Keypair } = require('@solana/web3.js'); -const kp = Keypair.generate(); -// no payer is needed as we are only resolving documents -didIo.use('sol', didSol.driver({ payer: kp.secretKey })); +// no payer needed as we are only resolving documents +didIo.use('sol', didSol.driver({ payer: null })); module.exports = { /** From 1398d121891cb47bb9ddaf0bb74fb8de8306f281 Mon Sep 17 00:00:00 2001 From: William Brooks Date: Tue, 11 Jan 2022 16:34:26 +0200 Subject: [PATCH 19/52] IDCOM-1427 Added functionality for signing with a provided key and DID --- __test__/lib/signerVerifier.test.js | 96 +++++++++++++++++++++++++++++ src/lib/signerVerifier.js | 78 +++++++++++++++++++++++ 2 files changed, 174 insertions(+) create mode 100644 __test__/lib/signerVerifier.test.js create mode 100644 src/lib/signerVerifier.js diff --git a/__test__/lib/signerVerifier.test.js b/__test__/lib/signerVerifier.test.js new file mode 100644 index 00000000..ff979c32 --- /dev/null +++ b/__test__/lib/signerVerifier.test.js @@ -0,0 +1,96 @@ +const nacl = require('tweetnacl'); +const signerVerifier = require('../../src/lib/signerVerifier'); +const didUtil = require('../../src/lib/did'); +const { + mockDids, + DID_SPARSE, + privateKeyBase58, + keyPair, +} = require('./util/did'); + +const originalResolve = didUtil.resolve; +didUtil.resolve = jest.fn() + .mockImplementation(did => originalResolve(did)) + .bind(didUtil); + +const textEncoder = new TextEncoder(); + +const SIGN_DATA = 'dummy_data_to_sign'; + +// TODO: Replace verify with new implementation once ready +const verify = (data, signature, publicKey) => nacl.sign.detached.verify( + textEncoder.encode(data), + Uint8Array.from(Buffer.from(signature, 'hex')), + publicKey, +); + +describe('signerVerifier', () => { + beforeAll(mockDids); + + it('creates a signer from a private key', async () => { + const keypair = keyPair(DID_SPARSE); + + const { signer } = await signerVerifier.signer({ + verificationMethod: `${DID_SPARSE}#default`, + privateKey: privateKeyBase58(DID_SPARSE), + }); + + const signed = signer.sign(SIGN_DATA); + + expect(signed).toBeTruthy(); + + const verified = verify(SIGN_DATA, signed.signature, keypair.publicKey); + + expect(verified).toBe(true); + }); + + it('creates a signer from a keypair', async () => { + const keypair = keyPair(DID_SPARSE); + + const { signer } = await signerVerifier.signer({ + verificationMethod: `${DID_SPARSE}#default`, + keypair, + }); + + const signed = signer.sign(SIGN_DATA); + + expect(signed).toBeTruthy(); + + const verified = verify(SIGN_DATA, signed.signature, keypair.publicKey); + + expect(verified).toBe(true); + }); + + it('uses a provided signer', async () => { + const verificationMethod = `${DID_SPARSE}#default`; + const keypair = keyPair(DID_SPARSE); + + const customSigner = { + sign(data) { + const encodedData = textEncoder.encode(data); + + const signature = nacl.sign.detached(encodedData, keypair.secretKey); + + return { + signature, + verificationMethod, + }; + }, + }; + + const { signer } = await signerVerifier.signer({ + verificationMethod, + signer: customSigner, + }); + + const signed = signer.sign(SIGN_DATA); + + expect(signed) + .toBeTruthy(); + + const verified = verify(SIGN_DATA, signed.signature, keypair.publicKey); + + expect(verified) + .toBe(true); + }); +}); diff --git a/src/lib/signerVerifier.js b/src/lib/signerVerifier.js new file mode 100644 index 00000000..32e04f44 --- /dev/null +++ b/src/lib/signerVerifier.js @@ -0,0 +1,78 @@ +const nacl = require('tweetnacl'); +const bs58 = require('bs58'); +const didUtil = require('./did'); + +const textEncoder = new TextEncoder(); + +class Ed25519Signer { + constructor(key, verificationMethod) { + this.key = key; + this.verificationMethod = verificationMethod; + } + + sign(data) { + const signed = nacl.sign.detached(textEncoder.encode(data), bs58.decode(this.key)); + const signature = Buffer.from(signed).toString('hex'); + + return { + signature, + verificationMethod: this.verificationMethod, + }; + } +} + +/** + * Creates a signer from the provided information + * + * @param options Signer options: + * @param options.verificationMethod The verificationMethod for the signing key + * @param options.keypair The keypair to sign with + * or + * @param options.privateKey The private key to sign with + * or + * @param options.signer An object implementing a `sign(CvcMerkleProof)` method + */ +const signer = async (options) => { + if (!options.signer && !options.keypair && !options.privateKey) { + throw new Error('Either a signer, keypair or private key is required'); + } + + const { verificationMethod } = options; + let { signer: providedSigner } = options; + + // Create a signer from keypair/key + if (!providedSigner) { + const [did] = verificationMethod.split('#'); + + const document = await didUtil.resolve(did); + + let { privateKey } = options; + if (!privateKey) { + privateKey = bs58.encode(options.keypair.secretKey); + } + + const foundMethod = didUtil.findVerificationMethod(document, verificationMethod); + if (!foundMethod) { + throw new Error('The provided verificationMethod is not valid on the DID document'); + } + + // Check the type is supported and assign the appropriate signer + switch (foundMethod.type) { + case 'Ed25519VerificationKey2018': + case 'Ed25519VerificationKey2020': + providedSigner = new Ed25519Signer(privateKey, verificationMethod); + break; + default: + throw new Error(`Unsupported type ${foundMethod.type}`); + } + } + + return { + verificationMethod, + signer: providedSigner, + }; +}; + +module.exports = { + signer, +}; From 9f130097ca6c510baaace7096623926cf47fc940 Mon Sep 17 00:00:00 2001 From: William Brooks Date: Tue, 11 Jan 2022 16:38:29 +0200 Subject: [PATCH 20/52] IDCOM-1427 Updated VC and MerkleProof to sign using the new signer --- __test__/creds/VerifiableCredential.test.js | 1117 +++++++++++++------ src/creds/CvcMerkleProof.js | 10 +- src/creds/VerifiableCredential.js | 81 +- 3 files changed, 847 insertions(+), 361 deletions(-) diff --git a/__test__/creds/VerifiableCredential.test.js b/__test__/creds/VerifiableCredential.test.js index 2ad40012..44ead811 100644 --- a/__test__/creds/VerifiableCredential.test.js +++ b/__test__/creds/VerifiableCredential.test.js @@ -5,7 +5,8 @@ const sjcl = require('sjcl'); const { Claim } = require('../../src/claim/Claim'); const VC = require('../../src/creds/VerifiableCredential'); const MiniCryptoManagerImpl = require('../../src/services/MiniCryptoManagerImpl'); -const CredentialSignerVerifier = require('../../src/creds/CredentialSignerVerifier'); +const didTestUtil = require('../lib/util/did'); + const { schemaLoader, CVCSchemaLoader, @@ -13,11 +14,6 @@ const { const filteredCredentialJson = require('./fixtures/filteredIdDocument-v3.json'); const invalidEmailJson = require('./fixtures/CredentialEmailInvalid.json'); -// eslint-disable-next-line max-len -const prvBase58 = 'xprv9s21ZrQH143K4aBUwUW6GVec7Y6oUEBqrt2WWaXyxjh2pjofNc1of44BLufn4p1t7Jq4EPzm5C9sRxCuBYJdHu62jhgfyPm544sNjtH7x8S'; -// eslint-disable-next-line max-len -const pubBase58 = 'xpub661MyMwAqRbcH4Fx3W36ddbLfZwHsguhE6x7JxwbX5E1hY8ov9L4CrNfCCQpV8pVK64CVqkhYQ9QLFgkVAUqkRThkTY1R4GiWHNZtAFSVpD'; - const credentialSubject = 'did:sol:J2vss1hB3kgEfQMSSdvvjwRm3JdyFWp7S7dbX5mudS4V'; jest.setTimeout(150000); @@ -25,14 +21,26 @@ jest.setTimeout(150000); const XPVT1 = 'xprvA1yULd2DFYnQRVbLiAKrFdftVLsANiC3rqLvp8iiCbnchcWqd6kJPoaV3sy7R6CjHM8RbpoNdWVgiPZLVa1EmneRLtwiitNpWgwyVmjvay7'; // eslint-disable-line const XPUB1 = 'xpub6Expk8Z75vLhdyfopBrrcmcd3NhenAuuE4GXcX8KkwKbaQqzAe4Ywbtxu9F95hRHj79PvdtYEJcoR6gesbZ79fS4bLi1PQtm81rjxAHeLL9'; // eslint-disable-line -const identityName = { givenNames: 'Max', otherNames: 'Abc', familyNames: 'Mustermann' }; -const identityDateOfBirth = { day: 20, month: 3, year: 1978 }; +const identityName = { + givenNames: 'Max', + otherNames: 'Abc', + familyNames: 'Mustermann', +}; +const identityDateOfBirth = { + day: 20, + month: 3, + year: 1978, +}; const miniCryptoManager = new MiniCryptoManagerImpl(); const signAttestationSubject = (subject, xprv, xpub) => { const { label } = subject; const { data } = subject; - const tupleToHash = JSON.stringify({ xpub, label, data }); + const tupleToHash = JSON.stringify({ + xpub, + label, + data, + }); const hashToSignHex = sjcl.codec.hex.fromBits(sjcl.hash.sha256.hash(tupleToHash)); const keyName = `TEMP_KEY_${new Date().getTime()}`; miniCryptoManager.installKey(keyName, xprv); @@ -80,21 +88,30 @@ describe('Unit tests for Verifiable Credentials', () => { const dob = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', identityDateOfBirth); return expect(VC.create('cvc:cred:Test', uuidv4(), null, credentialSubject, [name, dob])) - .rejects.toThrow(/cvc:cred:Test is not defined/); + .rejects + .toThrow(/cvc:cred:Test is not defined/); }); test('New Defined Credentials', async () => { const name = await Claim.create('claim-cvc:Identity.name-v1', identityName); const dob = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', identityDateOfBirth); const cred = await VC.create('credential-cvc:Identity-v3', uuidv4(), null, credentialSubject, [name, dob]); - expect(cred).toBeDefined(); - expect(cred.credentialSubject.identity.name.givenNames).toBe('Max'); - expect(cred.credentialSubject.identity.name.otherNames).toBe('Abc'); - expect(cred.credentialSubject.identity.name.familyNames).toBe('Mustermann'); - expect(cred.credentialSubject.identity.dateOfBirth.day).toBe(20); - expect(cred.credentialSubject.identity.dateOfBirth.month).toBe(3); - expect(cred.credentialSubject.identity.dateOfBirth.year).toBe(1978); - expect(cred.proof.leaves).toHaveLength(8); + expect(cred) + .toBeDefined(); + expect(cred.credentialSubject.identity.name.givenNames) + .toBe('Max'); + expect(cred.credentialSubject.identity.name.otherNames) + .toBe('Abc'); + expect(cred.credentialSubject.identity.name.familyNames) + .toBe('Mustermann'); + expect(cred.credentialSubject.identity.dateOfBirth.day) + .toBe(20); + expect(cred.credentialSubject.identity.dateOfBirth.month) + .toBe(3); + expect(cred.credentialSubject.identity.dateOfBirth.year) + .toBe(1978); + expect(cred.proof.leaves) + .toHaveLength(8); }); test('should validate new defined credentials with the obligatory Meta:expirationDate UCA with' @@ -102,46 +119,67 @@ describe('Unit tests for Verifiable Credentials', () => { const name = await Claim.create('claim-cvc:Identity.name-v1', identityName); const dob = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', identityDateOfBirth); const cred = await VC.create('credential-cvc:Identity-v3', uuidv4(), null, credentialSubject, [name, dob]); - expect(cred).toBeDefined(); - expect(cred.expirationDate).toBeNull(); + expect(cred) + .toBeDefined(); + expect(cred.expirationDate) + .toBeNull(); }); test('New Expirable Credentials', async () => { const name = await Claim.create('claim-cvc:Identity.name-v1', identityName); const dob = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', identityDateOfBirth); const cred = await VC.create('credential-cvc:Identity-v3', uuidv4(), '-1d', credentialSubject, [name, dob]); - expect(cred).toBeDefined(); - expect(cred.credentialSubject.identity.name.givenNames).toBe('Max'); - expect(cred.credentialSubject.identity.name.otherNames).toBe('Abc'); - expect(cred.credentialSubject.identity.name.familyNames).toBe('Mustermann'); - expect(cred.credentialSubject.identity.dateOfBirth.day).toBe(20); - expect(cred.credentialSubject.identity.dateOfBirth.month).toBe(3); - expect(cred.credentialSubject.identity.dateOfBirth.year).toBe(1978); - expect(_.find(cred.proof.leaves, { identifier: 'cvc:Meta:issuer' })).toBeDefined(); - expect(_.find(cred.proof.leaves, { identifier: 'cvc:Meta:issuanceDate' })).toBeDefined(); - expect(cred.expirationDate).toBeDefined(); - expect(_.find(cred.proof.leaves, { identifier: 'cvc:Meta:expirationDate' })).toBeDefined(); - expect(cred.proof.leaves).toHaveLength(8); + expect(cred) + .toBeDefined(); + expect(cred.credentialSubject.identity.name.givenNames) + .toBe('Max'); + expect(cred.credentialSubject.identity.name.otherNames) + .toBe('Abc'); + expect(cred.credentialSubject.identity.name.familyNames) + .toBe('Mustermann'); + expect(cred.credentialSubject.identity.dateOfBirth.day) + .toBe(20); + expect(cred.credentialSubject.identity.dateOfBirth.month) + .toBe(3); + expect(cred.credentialSubject.identity.dateOfBirth.year) + .toBe(1978); + expect(_.find(cred.proof.leaves, { identifier: 'cvc:Meta:issuer' })) + .toBeDefined(); + expect(_.find(cred.proof.leaves, { identifier: 'cvc:Meta:issuanceDate' })) + .toBeDefined(); + expect(cred.expirationDate) + .toBeDefined(); + expect(_.find(cred.proof.leaves, { identifier: 'cvc:Meta:expirationDate' })) + .toBeDefined(); + expect(cred.proof.leaves) + .toHaveLength(8); }); test('New Defined Credentials return the incorrect global Credential Identifier', async () => { const name = await Claim.create('claim-cvc:Identity.name-v1', identityName); const dob = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', identityDateOfBirth); const cred = await VC.create('credential-cvc:Identity-v3', uuidv4(), null, credentialSubject, [name, dob]); - expect(cred.getGlobalIdentifier()).toBe('credential-credential-cvc:Identity-v3-3'); + expect(cred.getGlobalIdentifier()) + .toBe('credential-credential-cvc:Identity-v3-3'); }); it('should request an anchor for Credential and return an temporary attestation', async (done) => { const name = await Claim.create('claim-cvc:Identity.name-v1', identityName); const dob = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', identityDateOfBirth); const cred = await VC.create('credential-cvc:Identity-v3', uuidv4(), '-1d', credentialSubject, [name, dob]); - return cred.requestAnchor().then((updated) => { - expect(updated.proof.anchor.type).toBe('temporary'); - expect(updated.proof.anchor.value).not.toBeDefined(); - expect(updated.proof.anchor).toBeDefined(); - expect(updated.proof.anchor.schema).toBe('dummy-20180201'); - done(); - }); + return cred.requestAnchor() + .then((updated) => { + expect(updated.proof.anchor.type) + .toBe('temporary'); + expect(updated.proof.anchor.value) + .not + .toBeDefined(); + expect(updated.proof.anchor) + .toBeDefined(); + expect(updated.proof.anchor.schema) + .toBe('dummy-20180201'); + done(); + }); }); it('should refresh an temporary anchoring with an permanent one', async (done) => { @@ -149,22 +187,30 @@ describe('Unit tests for Verifiable Credentials', () => { const dob = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', identityDateOfBirth); const cred = await VC.create('credential-cvc:Identity-v3', uuidv4(), null, credentialSubject, [name, dob]); - cred.requestAnchor = jest.fn().mockImplementation(async () => { - // mock the function or otherwise it would call the server - const credentialContents = fs.readFileSync('__test__/creds/fixtures/VCPermanentAnchor.json', 'utf8'); - const mockedVc = await VC.fromJSON(JSON.parse(credentialContents)); - mockedVc.updateAnchor = jest.fn().mockImplementation(async () => mockedVc); - return mockedVc; - }); - return cred.requestAnchor().then((updated) => { - expect(updated.proof.anchor).toBeDefined(); - return updated.updateAnchor().then((newUpdated) => { - expect(newUpdated.proof.anchor.type).toBe('permanent'); - expect(newUpdated.proof.anchor).toBeDefined(); - expect(newUpdated.proof.anchor.subject).toBeDefined(); - done(); + cred.requestAnchor = jest.fn() + .mockImplementation(async () => { + // mock the function or otherwise it would call the server + const credentialContents = fs.readFileSync('__test__/creds/fixtures/VCPermanentAnchor.json', 'utf8'); + const mockedVc = await VC.fromJSON(JSON.parse(credentialContents)); + mockedVc.updateAnchor = jest.fn() + .mockImplementation(async () => mockedVc); + return mockedVc; + }); + return cred.requestAnchor() + .then((updated) => { + expect(updated.proof.anchor) + .toBeDefined(); + return updated.updateAnchor() + .then((newUpdated) => { + expect(newUpdated.proof.anchor.type) + .toBe('permanent'); + expect(newUpdated.proof.anchor) + .toBeDefined(); + expect(newUpdated.proof.anchor.subject) + .toBeDefined(); + done(); + }); }); - }); }); test('Filter claims from Identity Name', async () => { @@ -175,12 +221,18 @@ describe('Unit tests for Verifiable Credentials', () => { 'did:ethr:0xaf9482c84De4e2a961B98176C9f295F9b6008BfD', null, credentialSubject, [nameUca, dobUca]); const filtered = simpleIdentity.filter(['claim-cvc:Name.givenNames-v1']); - expect(filtered.credentialSubject.identity.name.givenNames).toBeDefined(); - expect(filtered.credentialSubject.identity.name.otherNames).not.toBeDefined(); - expect(filtered.credentialSubject.identity.name.familyNames).not.toBeDefined(); + expect(filtered.credentialSubject.identity.name.givenNames) + .toBeDefined(); + expect(filtered.credentialSubject.identity.name.otherNames) + .not + .toBeDefined(); + expect(filtered.credentialSubject.identity.name.familyNames) + .not + .toBeDefined(); const emptyFiltered = simpleIdentity.filter([]); - expect(emptyFiltered.credentialSubject).toEqual({}); + expect(emptyFiltered.credentialSubject) + .toEqual({}); }); it('Should filter claims for Email asking for claim-cvc:Contact.email-v1 and return them on the filtered VC', @@ -196,10 +248,14 @@ describe('Unit tests for Verifiable Credentials', () => { const emailUca = await Claim.create('claim-cvc:Contact.email-v1', email, '1'); const emailCredential = await VC.create('credential-cvc:Email-v3', '', null, credentialSubject, [emailUca]); const filtered = emailCredential.filter(['claim-cvc:Contact.email-v1']); - expect(filtered.credentialSubject.contact.email.domain).toBeDefined(); - expect(filtered.credentialSubject.contact.email.domain.tld).toBe('oVaPsceZ4C'); - expect(filtered.credentialSubject.contact.email.domain.name).toBe('UTpHKFyaaB'); - expect(filtered.credentialSubject.contact.email.username).toBe('ZcMpCBQ0lE'); + expect(filtered.credentialSubject.contact.email.domain) + .toBeDefined(); + expect(filtered.credentialSubject.contact.email.domain.tld) + .toBe('oVaPsceZ4C'); + expect(filtered.credentialSubject.contact.email.domain.name) + .toBe('UTpHKFyaaB'); + expect(filtered.credentialSubject.contact.email.username) + .toBe('ZcMpCBQ0lE'); }); it('Should filter claims for Email asking for cvc:Contact:domain and not return the cvc:Contact:address', @@ -218,10 +274,14 @@ describe('Unit tests for Verifiable Credentials', () => { ); const filtered = emailCredential.filter(['claim-cvc:Email.domain-v1']); - expect(filtered.credentialSubject.contact.email.domain).toBeDefined(); - expect(filtered.credentialSubject.contact.email.domain.tld).toBe('oVaPsceZ4C'); - expect(filtered.credentialSubject.contact.email.domain.name).toBe('UTpHKFyaaB'); - expect(filtered.credentialSubject.contact.email.username).toBeUndefined(); + expect(filtered.credentialSubject.contact.email.domain) + .toBeDefined(); + expect(filtered.credentialSubject.contact.email.domain.tld) + .toBe('oVaPsceZ4C'); + expect(filtered.credentialSubject.contact.email.domain.name) + .toBe('UTpHKFyaaB'); + expect(filtered.credentialSubject.contact.email.username) + .toBeUndefined(); }); it('Should filter claims for Address asking for claim-cvc:Type.address-v1' @@ -242,14 +302,22 @@ describe('Unit tests for Verifiable Credentials', () => { ); const filtered = credential.filter(['claim-cvc:Identity.address-v1']); - expect(filtered.credentialSubject.identity.address).toBeDefined(); - expect(filtered.credentialSubject.identity.address.country).toBe('X2sEB9F9W9'); - expect(filtered.credentialSubject.identity.address.county).toBe('sDlIM4Rjpo'); - expect(filtered.credentialSubject.identity.address.state).toBe('ZZEOrbenrM'); - expect(filtered.credentialSubject.identity.address.street).toBe('JkHgN5gdZ2'); - expect(filtered.credentialSubject.identity.address.unit).toBe('fo9OmPSZNe'); - expect(filtered.credentialSubject.identity.address.city).toBe('LVkRGsKqIf'); - expect(filtered.credentialSubject.identity.address.postalCode).toBe('5JhmWkXBAg'); + expect(filtered.credentialSubject.identity.address) + .toBeDefined(); + expect(filtered.credentialSubject.identity.address.country) + .toBe('X2sEB9F9W9'); + expect(filtered.credentialSubject.identity.address.county) + .toBe('sDlIM4Rjpo'); + expect(filtered.credentialSubject.identity.address.state) + .toBe('ZZEOrbenrM'); + expect(filtered.credentialSubject.identity.address.street) + .toBe('JkHgN5gdZ2'); + expect(filtered.credentialSubject.identity.address.unit) + .toBe('fo9OmPSZNe'); + expect(filtered.credentialSubject.identity.address.city) + .toBe('LVkRGsKqIf'); + expect(filtered.credentialSubject.identity.address.postalCode) + .toBe('5JhmWkXBAg'); }); it('Should filter claims for PhoneNumber asking for credential-cvc:PhoneNumber-v3 and return the full claim', @@ -268,12 +336,18 @@ describe('Unit tests for Verifiable Credentials', () => { ); const filtered = credential.filter(['claim-cvc:Contact.phoneNumber-v1']); - expect(filtered.credentialSubject.contact.phoneNumber).toBeDefined(); - expect(filtered.credentialSubject.contact.phoneNumber.country).toBe('1ApYikRwDl'); - expect(filtered.credentialSubject.contact.phoneNumber.countryCode).toBe('U4drpB96Hk'); - expect(filtered.credentialSubject.contact.phoneNumber.extension).toBe('sXZpZJTe4R'); - expect(filtered.credentialSubject.contact.phoneNumber.lineType).toBe('OaguqgUaR7'); - expect(filtered.credentialSubject.contact.phoneNumber.number).toBe('kCTGifTdom'); + expect(filtered.credentialSubject.contact.phoneNumber) + .toBeDefined(); + expect(filtered.credentialSubject.contact.phoneNumber.country) + .toBe('1ApYikRwDl'); + expect(filtered.credentialSubject.contact.phoneNumber.countryCode) + .toBe('U4drpB96Hk'); + expect(filtered.credentialSubject.contact.phoneNumber.extension) + .toBe('sXZpZJTe4R'); + expect(filtered.credentialSubject.contact.phoneNumber.lineType) + .toBe('OaguqgUaR7'); + expect(filtered.credentialSubject.contact.phoneNumber.number) + .toBe('kCTGifTdom'); }); it('Should filter claims for GenericDocumentId asking for claim-cvc:Identity.dateOfBirth-v1 and return nothing', @@ -340,7 +414,8 @@ describe('Unit tests for Verifiable Credentials', () => { ); const filtered = credential.filter(['claim-cvc:Identity.dateOfBirth-v1']); - expect(filtered.credentialSubject.document).toBeUndefined(); + expect(filtered.credentialSubject.document) + .toBeUndefined(); }); it('Should filter claims for PhoneNumber asking for cvc:Phone:countryCode and return only the' @@ -356,12 +431,18 @@ describe('Unit tests for Verifiable Credentials', () => { const credential = await VC.create('credential-cvc:PhoneNumber-v3', '', null, credentialSubject, [uca]); const filtered = credential.filter(['claim-cvc:PhoneNumber.countryCode-v1']); - expect(filtered.credentialSubject.contact.phoneNumber).toBeDefined(); - expect(filtered.credentialSubject.contact.phoneNumber.country).toBeUndefined(); - expect(filtered.credentialSubject.contact.phoneNumber.countryCode).toBe('U4drpB96Hk'); - expect(filtered.credentialSubject.contact.phoneNumber.extension).toBeUndefined(); - expect(filtered.credentialSubject.contact.phoneNumber.lineType).toBeUndefined(); - expect(filtered.credentialSubject.contact.phoneNumber.number).toBeUndefined(); + expect(filtered.credentialSubject.contact.phoneNumber) + .toBeDefined(); + expect(filtered.credentialSubject.contact.phoneNumber.country) + .toBeUndefined(); + expect(filtered.credentialSubject.contact.phoneNumber.countryCode) + .toBe('U4drpB96Hk'); + expect(filtered.credentialSubject.contact.phoneNumber.extension) + .toBeUndefined(); + expect(filtered.credentialSubject.contact.phoneNumber.lineType) + .toBeUndefined(); + expect(filtered.credentialSubject.contact.phoneNumber.number) + .toBeUndefined(); }); it('Should create IdDocument-v3 credential', async () => { @@ -406,16 +487,21 @@ describe('Unit tests for Verifiable Credentials', () => { 'credential-cvc:IdDocument-v3', '', null, credentialSubject, [type, number, name, gender, issueCountry, placeOfBirth, dateOfBirth, dateOfExpiry, nationality, evidences], ); - expect(credential).toBeDefined(); + expect(credential) + .toBeDefined(); const filtered = credential.filter(['claim-cvc:Document.dateOfBirth-v1']); - expect(filtered).toBeDefined(); + expect(filtered) + .toBeDefined(); }); it('Should hydrate a partial presentation', async () => { const presentation = await VC.fromJSON(filteredCredentialJson, true); - expect(presentation).toBeDefined(); + expect(presentation) + .toBeDefined(); - return expect(VC.fromJSON(filteredCredentialJson)).rejects.toThrow(); + return expect(VC.fromJSON(filteredCredentialJson)) + .rejects + .toThrow(); }); it('Should create alt:Identity-v1 credential', async () => { @@ -441,7 +527,8 @@ describe('Unit tests for Verifiable Credentials', () => { const credential = await VC.create( 'credential-alt:Identity-v3', '', null, credentialSubject, [name, dateOfBirth, address], ); - expect(credential).toBeDefined(); + expect(credential) + .toBeDefined(); }); it.skip('Should create and verify a credential with an array of clains ', async () => { @@ -543,8 +630,10 @@ describe('Unit tests for Verifiable Credentials', () => { const credential = await VC.create( 'credential-cvc:Covid19-v3', '', null, credentialSubject, [covidClaim], ); - expect(credential).toBeDefined(); - expect(credential.verifyProofs()).toBeTruthy(); + expect(credential) + .toBeDefined(); + expect(credential.verifyProofs()) + .toBeTruthy(); }); it('Should filter claims for GenericDocumentId asking for cvc:Document:Type and return only that claim', @@ -612,76 +701,95 @@ describe('Unit tests for Verifiable Credentials', () => { const filtered = credential.filter(['claim-cvc:Document.type-v1']); - expect(filtered.credentialSubject.document.type).toBe('passport'); + expect(filtered.credentialSubject.document.type) + .toBe('passport'); }); it('Should verify an VC of type Email', async () => { const credJSon = require('./fixtures/Email.json'); // eslint-disable-line const cred = await VC.fromJSON(credJSon); - expect(cred).toBeDefined(); - expect(cred.verifyProofs()).toBeTruthy(); + expect(cred) + .toBeDefined(); + expect(cred.verifyProofs()) + .toBeTruthy(); }); it('Should not verify an VC of with tampered domain Email', async () => { const credJSon = require('./fixtures/Email.json'); // eslint-disable-line const cred = await VC.fromJSON(credJSon); - expect(cred).toBeDefined(); + expect(cred) + .toBeDefined(); cred.credentialSubject.contact.email.domain.name = 'civic'; - expect(await cred.verifyProofs()).toBeFalsy(); + expect(await cred.verifyProofs()) + .toBeFalsy(); }); it('Should not verify an VC of with tampered username Email', async () => { const credJSon = require('./fixtures/Email.json'); // eslint-disable-line const cred = await VC.fromJSON(credJSon); - expect(cred).toBeDefined(); + expect(cred) + .toBeDefined(); cred.credentialSubject.contact.email.username = 'jpMustermann'; - expect(await cred.verifyProofs()).toBeFalsy(); + expect(await cred.verifyProofs()) + .toBeFalsy(); }); it('Should verify an VC of type Address', async () => { const credJSon = require('./fixtures/Address.json'); // eslint-disable-line const cred = await VC.fromJSON(credJSon); - expect(cred).toBeDefined(); - expect(cred.verifyProofs()).toBeTruthy(); + expect(cred) + .toBeDefined(); + expect(cred.verifyProofs()) + .toBeTruthy(); }); it('Should not verify an VC of tampered Address', async () => { const credJSon = require('./fixtures/Address.json'); // eslint-disable-line const cred = await VC.fromJSON(credJSon); - expect(cred).toBeDefined(); + expect(cred) + .toBeDefined(); cred.credentialSubject.identity.address.city = 'Rio de Janeiro'; - expect(await cred.verifyProofs()).toBeFalsy(); + expect(await cred.verifyProofs()) + .toBeFalsy(); }); it('Should verify an VC of type Identity', async () => { const credJSon = require('./fixtures/Identity.json'); // eslint-disable-line const cred = await VC.fromJSON(credJSon); - expect(cred).toBeDefined(); - expect(cred.verifyProofs()).toBeTruthy(); + expect(cred) + .toBeDefined(); + expect(cred.verifyProofs()) + .toBeTruthy(); }); it('Should verify an VC of type GenericDocumentId and doing await VC.fromJSON', async () => { const credJSon = require('./fixtures/GenericDocumentId.json'); // eslint-disable-line const cred = await VC.fromJSON(credJSon); - expect(cred).toBeDefined(); - expect(cred.verifyProofs()).toBeTruthy(); + expect(cred) + .toBeDefined(); + expect(cred.verifyProofs()) + .toBeTruthy(); }); it('Should not verify an VC of tampered GenericDocumentId', async () => { const credJSon = require('./fixtures/GenericDocumentId.json'); // eslint-disable-line const cred = await VC.fromJSON(credJSon); - expect(cred).toBeDefined(); + expect(cred) + .toBeDefined(); cred.credentialSubject.document.dateOfBirth.day = 20; cred.credentialSubject.document.dateOfBirth.year = 1900; - expect(await cred.verifyProofs()).toBeFalsy(); + expect(await cred.verifyProofs()) + .toBeFalsy(); }); it('Should verify an VC of type PhoneNumber', async () => { const credJSon = require('./fixtures/PhoneNumber.json'); // eslint-disable-line const cred = await VC.fromJSON(credJSon); - expect(cred).toBeDefined(); - expect(await cred.verifyProofs()).toBeTruthy(); + expect(cred) + .toBeDefined(); + expect(await cred.verifyProofs()) + .toBeTruthy(); }); @@ -690,14 +798,17 @@ describe('Unit tests for Verifiable Credentials', () => { + ' VERIFY_LEVELS.PROOFS level', async () => { const credJSon = require('./fixtures/Cred1.json'); // eslint-disable-line const cred = await VC.fromJSON(credJSon); - expect(cred).toBeDefined(); - expect(await cred.verify()).toBeGreaterThanOrEqual(VC.VERIFY_LEVELS.PROOFS); + expect(cred) + .toBeDefined(); + expect(await cred.verify()) + .toBeGreaterThanOrEqual(VC.VERIFY_LEVELS.PROOFS); }); it('Should verify an credential json with no cryptographic security', async () => { const credential = require('./fixtures/PhoneNumber.json'); // eslint-disable-line const isValid = await VC.nonCryptographicallySecureVerify(credential); - expect(isValid).toBeTruthy(); + expect(isValid) + .toBeTruthy(); }); it('Should verify a not anchored VC with non cryptographic verify', async () => { @@ -712,26 +823,32 @@ describe('Unit tests for Verifiable Credentials', () => { const uca = await Claim.create('claim-cvc:Contact.phoneNumber-v1', value, '1'); const credential = await VC.create('credential-cvc:PhoneNumber-v3', '', null, credentialSubject, [uca]); const isValid = await VC.nonCryptographicallySecureVerify(credential); - expect(isValid).toBeTruthy(); + expect(isValid) + .toBeTruthy(); }); it('Should fail verification of a VC with invalid cryptographic security', - async () => expect(VC.cryptographicallySecureVerify(invalidEmailJson)).resolves.toBeFalsy()); + async () => expect(VC.cryptographicallySecureVerify(invalidEmailJson)) + .resolves + .toBeFalsy()); it('Should verify an VC with cryptographic security', async (done) => { const credJSon = require('./fixtures/PhoneNumber.json'); // eslint-disable-line const credential = await VC.fromJSON(credJSon); let isValid = await VC.cryptographicallySecureVerify(credential); - expect(isValid).toBeTruthy(); + expect(isValid) + .toBeTruthy(); const verifyAttestationFunc = () => true; isValid = await VC.cryptographicallySecureVerify(credential, verifyAttestationFunc); - expect(isValid).toBeTruthy(); + expect(isValid) + .toBeTruthy(); const verifySignatureFunc = () => true; isValid = await VC.cryptographicallySecureVerify(credential, verifyAttestationFunc, verifySignatureFunc); - expect(isValid).toBeTruthy(); + expect(isValid) + .toBeTruthy(); done(); }); @@ -742,12 +859,14 @@ describe('Unit tests for Verifiable Credentials', () => { let verifyAttestationFunc = () => false; let isValid = await VC.cryptographicallySecureVerify(credential, verifyAttestationFunc); - expect(isValid).toBeFalsy(); + expect(isValid) + .toBeFalsy(); verifyAttestationFunc = () => true; const verifySignatureFunc = () => false; isValid = await VC.cryptographicallySecureVerify(credential, verifyAttestationFunc, verifySignatureFunc); - expect(isValid).toBeFalsy(); + expect(isValid) + .toBeFalsy(); done(); }); @@ -757,8 +876,10 @@ describe('Unit tests for Verifiable Credentials', () => { // messing up with the targetHash: credJSon.proof.leaves[0].targetHash = credJSon.proof.leaves[0].targetHash.replace('a', 'b'); const cred = await VC.fromJSON(credJSon); - expect(cred).toBeDefined(); - expect(await cred.verify()).toEqual(VC.VERIFY_LEVELS.INVALID); + expect(cred) + .toBeDefined(); + expect(await cred.verify()) + .toEqual(VC.VERIFY_LEVELS.INVALID); }); it('should fail verification since it doesn\'t have an Meta:expirationDate UCA', async () => { @@ -766,38 +887,50 @@ describe('Unit tests for Verifiable Credentials', () => { // messing up with the targetHash: credJSon.proof.leaves[0].targetHash = credJSon.proof.leaves[0].targetHash.replace('a', 'b'); const cred = await VC.fromJSON(credJSon); - expect(cred).toBeDefined(); - expect(await cred.verifyProofs()).toBeFalsy(); + expect(cred) + .toBeDefined(); + expect(await cred.verifyProofs()) + .toBeFalsy(); }); test('cred.verifyProofs(): with a valid cred with expirationDate, should return TRUE', async () => { const credJSon = require('./fixtures/CredWithFutureExpiry.json'); // eslint-disable-line const cred = await VC.fromJSON(credJSon); - expect(cred).toBeDefined(); - expect(cred.verifyProofs()).toBeTruthy(); + expect(cred) + .toBeDefined(); + expect(cred.verifyProofs()) + .toBeTruthy(); }); test('cred.verifyProofs(): with a valid cred but expired, should return FALSE', async () => { const credJSon = require('./fixtures/CredExpired.json'); // eslint-disable-line const cred = await VC.fromJSON(credJSon); - expect(cred).toBeDefined(); - expect(await cred.verifyProofs()).not.toBeTruthy(); + expect(cred) + .toBeDefined(); + expect(await cred.verifyProofs()) + .not + .toBeTruthy(); }); it('should fail verification since the leaf value is tampered', async () => { const credentialContents = fs.readFileSync('__test__/creds/fixtures/VCWithTamperedLeafValue.json', 'utf8'); const credentialJson = JSON.parse(credentialContents); const cred = await VC.fromJSON(credentialJson); - expect(await cred.verifyProofs()).not.toBeTruthy(); + expect(await cred.verifyProofs()) + .not + .toBeTruthy(); }); it('should check that signature matches for the root of the Merkle Tree', async (done) => { const credentialContents = fs.readFileSync('__test__/creds/fixtures/VCPermanentAnchor.json', 'utf8'); const credentialJson = JSON.parse(credentialContents); const cred = await VC.fromJSON(credentialJson); - expect(cred).toBeDefined(); - expect(cred.proof.anchor).toBeDefined(); - expect(await cred.verifyAnchorSignature()).toBeTruthy(); + expect(cred) + .toBeDefined(); + expect(cred.proof.anchor) + .toBeDefined(); + expect(await cred.verifyAnchorSignature()) + .toBeTruthy(); done(); }); @@ -805,9 +938,12 @@ describe('Unit tests for Verifiable Credentials', () => { const credentialContents = fs.readFileSync('__test__/creds/fixtures/VCPermanentAnchor.json', 'utf8'); const credentialJson = JSON.parse(credentialContents); const cred = await VC.fromJSON(credentialJson); - expect(cred).toBeDefined(); - expect(cred.proof.anchor).toBeDefined(); - expect(await cred.verifyAnchorSignature(XPUB1)).toBeTruthy(); + expect(cred) + .toBeDefined(); + expect(cred.proof.anchor) + .toBeDefined(); + expect(await cred.verifyAnchorSignature(XPUB1)) + .toBeTruthy(); done(); }); @@ -815,9 +951,12 @@ describe('Unit tests for Verifiable Credentials', () => { const credentialContents = fs.readFileSync('__test__/creds/fixtures/VCPermanentAnchor.json', 'utf8'); const credentialJson = JSON.parse(credentialContents); const cred = await VC.fromJSON(credentialJson); - expect(cred).toBeDefined(); - expect(cred.proof.anchor).toBeDefined(); - expect(() => cred.verifyAnchorSignature(XPUB1.replace('9', '6'))).toThrow(); + expect(cred) + .toBeDefined(); + expect(cred.proof.anchor) + .toBeDefined(); + expect(() => cred.verifyAnchorSignature(XPUB1.replace('9', '6'))) + .toThrow(); done(); }); @@ -827,9 +966,12 @@ describe('Unit tests for Verifiable Credentials', () => { const cred = await VC.fromJSON(credentialJson); // tamper merkle root cred.proof.merkleRoot = 'gfdagfagfda'; - expect(cred).toBeDefined(); - expect(cred.proof.anchor).toBeDefined(); - expect(await cred.verifyAnchorSignature()).toBeFalsy(); + expect(cred) + .toBeDefined(); + expect(cred.proof.anchor) + .toBeDefined(); + expect(await cred.verifyAnchorSignature()) + .toBeFalsy(); done(); }); @@ -838,8 +980,10 @@ describe('Unit tests for Verifiable Credentials', () => { const dob = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', identityDateOfBirth); const cred = await VC.create('credential-cvc:Identity-v3', uuidv4(), null, credentialSubject, [name, dob]); - expect(cred).toBeDefined(); - expect(cred.proof.granted).toBeNull(); + expect(cred) + .toBeDefined(); + expect(cred.proof.granted) + .toBeNull(); done(); }); @@ -848,8 +992,10 @@ describe('Unit tests for Verifiable Credentials', () => { const credentialContents = fs.readFileSync('__test__/creds/fixtures/VCPermanentAnchor.json', 'utf8'); const credentialJson = JSON.parse(credentialContents); const cred = await VC.fromJSON(credentialJson); - expect(cred).toBeDefined(); - expect(cred.proof.granted).toBeNull(); + expect(cred) + .toBeDefined(); + expect(cred.proof.granted) + .toBeNull(); done(); }); @@ -859,15 +1005,18 @@ describe('Unit tests for Verifiable Credentials', () => { const dob = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', identityDateOfBirth); const cred = await VC.create('credential-cvc:Identity-v3', uuidv4(), null, credentialSubject, [name, dob]); - expect(cred).toBeDefined(); - expect(cred.proof.granted).toBeNull(); + expect(cred) + .toBeDefined(); + expect(cred.proof.granted) + .toBeNull(); const requestorId = 'REQUESTOR_ID_12345'; const requestId = new Date().getTime(); // simulate an nonce ID try { cred.grantUsageFor(requestorId, requestId, { pvtKey: XPVT1 }); } catch (err) { - expect(err.message).toEqual('Invalid credential attestation/anchor'); + expect(err.message) + .toEqual('Invalid credential attestation/anchor'); done(); } }); @@ -877,13 +1026,17 @@ describe('Unit tests for Verifiable Credentials', () => { const dob = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', identityDateOfBirth); const cred = await VC.create('credential-cvc:Identity-v3', uuidv4(), null, credentialSubject, [name, dob]); await cred.requestAnchor(); - expect(cred).toBeDefined(); - expect(cred.proof.granted).toBeNull(); + expect(cred) + .toBeDefined(); + expect(cred.proof.granted) + .toBeNull(); cred.proof.anchor.subject = signAttestationSubject(cred.proof.anchor.subject, XPVT1, XPUB1); const requestorId = 'ANY_REQUESTOR_ID_12345'; const requestId = new Date().getTime(); // simulate an nonce ID cred.grantUsageFor(requestorId, requestId, { pvtKey: XPVT1 }); - expect(cred.proof.granted).not.toBeNull(); + expect(cred.proof.granted) + .not + .toBeNull(); done(); }); @@ -891,13 +1044,17 @@ describe('Unit tests for Verifiable Credentials', () => { const credentialContents = fs.readFileSync('__test__/creds/fixtures/VCPermanentAnchor.json', 'utf8'); const credentialJson = JSON.parse(credentialContents); const cred = await VC.fromJSON(credentialJson); - expect(cred).toBeDefined(); - expect(cred.proof.granted).toBeNull(); + expect(cred) + .toBeDefined(); + expect(cred.proof.granted) + .toBeNull(); cred.proof.anchor.subject = signAttestationSubject(cred.proof.anchor.subject, XPVT1, XPUB1); const requestorId = 'ANY_REQUESTOR_ID_12345'; const requestId = new Date().getTime(); // simulate an nonce ID cred.grantUsageFor(requestorId, requestId, { pvtKey: XPVT1 }); - expect(cred.proof.granted).not.toBeNull(); + expect(cred.proof.granted) + .not + .toBeNull(); done(); }); @@ -906,8 +1063,10 @@ describe('Unit tests for Verifiable Credentials', () => { const dob = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', identityDateOfBirth); const cred = await VC.create('credential-cvc:Identity-v3', uuidv4(), null, credentialSubject, [name, dob]); const anchoredCred = await cred.requestAnchor(); - expect(anchoredCred).toBeDefined(); - expect(anchoredCred.proof.granted).toBeNull(); + expect(anchoredCred) + .toBeDefined(); + expect(anchoredCred.proof.granted) + .toBeNull(); const subject = signAttestationSubject(anchoredCred.proof.anchor.subject, XPVT1, XPUB1); const signedCred = await VC.fromJSON(toValueObject(_.merge({}, anchoredCred, { proof: { anchor: { subject } } }))); @@ -918,14 +1077,18 @@ describe('Unit tests for Verifiable Credentials', () => { // simulate a wire transmission const transmittedCred = JSON.stringify(signedCred, null, 2); - expect(transmittedCred).toBeDefined(); + expect(transmittedCred) + .toBeDefined(); // const receivedCred = await VC.fromJSON(JSON.parse(transmittedCred)); - expect(receivedCred.proof.granted).not.toBeNull(); + expect(receivedCred.proof.granted) + .not + .toBeNull(); const verifyGrant = receivedCred.verifyGrant(requestorId, requestId); - expect(verifyGrant).toEqual(true); + expect(verifyGrant) + .toEqual(true); done(); }); @@ -935,8 +1098,10 @@ describe('Unit tests for Verifiable Credentials', () => { const dob = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', identityDateOfBirth); const cred = await VC.create('credential-cvc:Identity-v3', uuidv4(), null, credentialSubject, [name, dob]); const anchoredCred = await cred.requestAnchor(); - expect(anchoredCred).toBeDefined(); - expect(anchoredCred.proof.granted).toBeNull(); + expect(anchoredCred) + .toBeDefined(); + expect(anchoredCred.proof.granted) + .toBeNull(); const subject = signAttestationSubject(anchoredCred.proof.anchor.subject, XPVT1, XPUB1); const signedCred = await VC.fromJSON(toValueObject(_.merge({}, anchoredCred, { proof: { anchor: { subject } } }))); @@ -947,18 +1112,22 @@ describe('Unit tests for Verifiable Credentials', () => { // simulate a wire transmission const transmittedCred = JSON.stringify(signedCred, null, 2); - expect(transmittedCred).toBeDefined(); + expect(transmittedCred) + .toBeDefined(); // const receivedCred = await VC.fromJSON(JSON.parse(transmittedCred)); - expect(receivedCred.proof.granted).not.toBeNull(); + expect(receivedCred.proof.granted) + .not + .toBeNull(); // Simulate a invalid granted token - one not based on the same nonce // eslint-disable-next-line receivedCred.proof.granted = '304502210085f6baceefcddefff535416df0eda6c9b8a01dcba592c599ec2c83cce7171dd802204473f5a15b3904dbf0fc309fe812fbf449948714938fb4871196d338ef38f1d1'; const verifyGrant = receivedCred.verifyGrant(requestorId, requestId); - expect(verifyGrant).toEqual(false); + expect(verifyGrant) + .toEqual(false); done(); }); @@ -968,8 +1137,10 @@ describe('Unit tests for Verifiable Credentials', () => { const dob = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', identityDateOfBirth); const cred = await VC.create('credential-cvc:Identity-v3', uuidv4(), null, credentialSubject, [name, dob]); const anchoredCred = await cred.requestAnchor(); - expect(anchoredCred).toBeDefined(); - expect(anchoredCred.proof.granted).toBeNull(); + expect(anchoredCred) + .toBeDefined(); + expect(anchoredCred.proof.granted) + .toBeNull(); const subject = signAttestationSubject(anchoredCred.proof.anchor.subject, XPVT1, XPUB1); const signedCred = await VC.fromJSON(toValueObject(_.merge({}, anchoredCred, { proof: { anchor: { subject } } }))); @@ -980,13 +1151,17 @@ describe('Unit tests for Verifiable Credentials', () => { // simulate a wire transmission const transmittedCred = JSON.stringify(signedCred, null, 2); - expect(transmittedCred).toBeDefined(); - expect(signedCred.proof.granted).not.toBeNull(); + expect(transmittedCred) + .toBeDefined(); + expect(signedCred.proof.granted) + .not + .toBeNull(); const credentialObj = JSON.parse(transmittedCred); const verifyGrant = VC.requesterGrantVerify(credentialObj, requestorId, requestId); - expect(verifyGrant).toEqual(true); + expect(verifyGrant) + .toEqual(true); done(); }); @@ -996,8 +1171,10 @@ describe('Unit tests for Verifiable Credentials', () => { const dob = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', identityDateOfBirth); const cred = await VC.create('credential-cvc:Identity-v3', uuidv4(), null, credentialSubject, [name, dob]); const anchoredCred = await cred.requestAnchor(); - expect(anchoredCred).toBeDefined(); - expect(anchoredCred.proof.granted).toBeNull(); + expect(anchoredCred) + .toBeDefined(); + expect(anchoredCred.proof.granted) + .toBeNull(); const subject = signAttestationSubject(anchoredCred.proof.anchor.subject, XPVT1, XPUB1); const signedCred = await VC.fromJSON(toValueObject(_.merge({}, anchoredCred, { proof: { anchor: { subject } } }))); @@ -1008,8 +1185,11 @@ describe('Unit tests for Verifiable Credentials', () => { // simulate a wire transmission const transmittedCred = JSON.stringify(signedCred, null, 2); - expect(transmittedCred).toBeDefined(); - expect(signedCred.proof.granted).not.toBeNull(); + expect(transmittedCred) + .toBeDefined(); + expect(signedCred.proof.granted) + .not + .toBeNull(); const credentialObj = JSON.parse(transmittedCred); @@ -1018,7 +1198,8 @@ describe('Unit tests for Verifiable Credentials', () => { credentialObj.proof.granted = '304502210085f6baceefcddefff535416df0eda6c9b8a01dcba592c599ec2c83cce7171dd802204473f5a15b3904dbf0fc309fe812fbf449948714938fb4871196d338ef38f1d1'; const verifyGrant = VC.requesterGrantVerify(credentialObj, requestorId, requestId); - expect(verifyGrant).toEqual(false); + expect(verifyGrant) + .toEqual(false); done(); }); @@ -1028,8 +1209,10 @@ describe('Unit tests for Verifiable Credentials', () => { const dob = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', identityDateOfBirth); const cred = await VC.create('credential-cvc:Identity-v3', uuidv4(), null, credentialSubject, [name, dob]); const anchoredCred = await cred.requestAnchor(); - expect(anchoredCred).toBeDefined(); - expect(anchoredCred.proof.granted).toBeNull(); + expect(anchoredCred) + .toBeDefined(); + expect(anchoredCred.proof.granted) + .toBeNull(); const subject = signAttestationSubject(anchoredCred.proof.anchor.subject, XPVT1, XPUB1); const signedCred = await VC.fromJSON(toValueObject(_.merge({}, anchoredCred, { proof: { anchor: { subject } } }))); @@ -1040,17 +1223,21 @@ describe('Unit tests for Verifiable Credentials', () => { // simulate a wire transmission const transmittedCred = JSON.stringify(signedCred, null, 2); - expect(transmittedCred).toBeDefined(); + expect(transmittedCred) + .toBeDefined(); // const receivedCred = await VC.fromJSON(JSON.parse(transmittedCred)); - expect(receivedCred.proof.granted).not.toBeNull(); + expect(receivedCred.proof.granted) + .not + .toBeNull(); const verifyLevel = await receivedCred.verify(VC.VERIFY_LEVELS.GRANTED, { requestorId, requestId, }); - expect(verifyLevel).toBeGreaterThanOrEqual(VC.VERIFY_LEVELS.GRANTED); + expect(verifyLevel) + .toBeGreaterThanOrEqual(VC.VERIFY_LEVELS.GRANTED); done(); }); @@ -1060,8 +1247,10 @@ describe('Unit tests for Verifiable Credentials', () => { const dob = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', identityDateOfBirth); const cred = await VC.create('credential-cvc:Identity-v3', uuidv4(), null, credentialSubject, [name, dob]); const anchoredCred = await cred.requestAnchor(); - expect(anchoredCred).toBeDefined(); - expect(anchoredCred.proof.granted).toBeNull(); + expect(anchoredCred) + .toBeDefined(); + expect(anchoredCred.proof.granted) + .toBeNull(); const subject = signAttestationSubject(anchoredCred.proof.anchor.subject, XPVT1, XPUB1); const signedCred = await VC.fromJSON(toValueObject(_.merge({}, anchoredCred, { proof: { anchor: { subject } } }))); @@ -1072,11 +1261,14 @@ describe('Unit tests for Verifiable Credentials', () => { // simulate a wire transmission const transmittedCred = JSON.stringify(signedCred, null, 2); - expect(transmittedCred).toBeDefined(); + expect(transmittedCred) + .toBeDefined(); // const receivedCred = await VC.fromJSON(JSON.parse(transmittedCred)); - expect(receivedCred.proof.granted).not.toBeNull(); + expect(receivedCred.proof.granted) + .not + .toBeNull(); // Simulate a invalid granted token - one not based on the same nonce // eslint-disable-next-line @@ -1086,7 +1278,8 @@ describe('Unit tests for Verifiable Credentials', () => { requestorId, requestId, }); - expect(verifyLevel).toBeGreaterThanOrEqual(VC.VERIFY_LEVELS.ANCHOR); // Should be at least one level lower + expect(verifyLevel) + .toBeGreaterThanOrEqual(VC.VERIFY_LEVELS.ANCHOR); // Should be at least one level lower done(); }); @@ -1095,10 +1288,13 @@ describe('Unit tests for Verifiable Credentials', () => { const credentialContents = fs.readFileSync('__test__/creds/fixtures/VCPermanentAnchor.json', 'utf8'); const credentialJson = JSON.parse(credentialContents); const cred = await VC.fromJSON(credentialJson); - expect(cred).toBeDefined(); - expect(cred.proof.anchor).toBeDefined(); + expect(cred) + .toBeDefined(); + expect(cred.proof.anchor) + .toBeDefined(); const validation = await cred.verifyAttestation(); - expect(validation).toBeTruthy(); + expect(validation) + .toBeTruthy(); done(); }); @@ -1112,7 +1308,8 @@ describe('Unit tests for Verifiable Credentials', () => { cred.proof.anchor.network = 'mainnet'; const validation = await cred.verifyAttestation(); - expect(validation).toBeFalsy(); + expect(validation) + .toBeFalsy(); done(); }); @@ -1124,7 +1321,9 @@ describe('Unit tests for Verifiable Credentials', () => { cred.proof.anchor.network = 'mainnet'; const shouldFail = cred.verifyAttestation(); - await expect(shouldFail).rejects.toThrow(/Error: Invalid URI/); + await expect(shouldFail) + .rejects + .toThrow(/Error: Invalid URI/); }); it('should revoke the permanent anchor and succeed verification', async (done) => { @@ -1136,7 +1335,8 @@ describe('Unit tests for Verifiable Credentials', () => { const validation = await cred.verifyAttestation(); if (validation) { const isRevoked = await cred.revokeAttestation(); - expect(isRevoked).toBeTruthy(); + expect(isRevoked) + .toBeTruthy(); } done(); }); @@ -1145,10 +1345,13 @@ describe('Unit tests for Verifiable Credentials', () => { const credentialContents = fs.readFileSync('__test__/creds/fixtures/VCPermanentAnchor.json', 'utf8'); const credentialJson = JSON.parse(credentialContents); const cred = await VC.fromJSON(credentialJson); - expect(cred).toBeDefined(); - expect(cred.proof.anchor).toBeDefined(); + expect(cred) + .toBeDefined(); + expect(cred.proof.anchor) + .toBeDefined(); const isRevoked = await cred.isRevoked(); - expect(isRevoked).toBeFalsy(); + expect(isRevoked) + .toBeFalsy(); done(); }); @@ -1158,9 +1361,13 @@ describe('Unit tests for Verifiable Credentials', () => { const cred = await VC.create('credential-cvc:Identity-v3', uuidv4(), null, credentialSubject, [name, dob]); expect(cred.isMatch({ claims: [ - { path: 'identity.name.givenNames', is: { $eq: 'Max' } }, + { + path: 'identity.name.givenNames', + is: { $eq: 'Max' }, + }, ], - })).toBeTruthy(); + })) + .toBeTruthy(); }); it('Should match with two constraints', async () => { @@ -1169,10 +1376,17 @@ describe('Unit tests for Verifiable Credentials', () => { const cred = await VC.create('credential-cvc:Identity-v3', uuidv4(), null, credentialSubject, [name, dob]); expect(cred.isMatch({ claims: [ - { path: 'identity.name.givenNames', is: { $eq: 'Max' } }, - { path: 'identity.name.otherNames', is: { $eq: 'Abc' } }, + { + path: 'identity.name.givenNames', + is: { $eq: 'Max' }, + }, + { + path: 'identity.name.otherNames', + is: { $eq: 'Abc' }, + }, ], - })).toBeTruthy(); + })) + .toBeTruthy(); }); it('Should fail with two constraints if one of them fails', async () => { @@ -1181,10 +1395,17 @@ describe('Unit tests for Verifiable Credentials', () => { const cred = await VC.create('credential-cvc:Identity-v3', uuidv4(), null, credentialSubject, [name, dob]); expect(cred.isMatch({ claims: [ - { path: 'identity.name.givenNames', is: { $eq: 'NOT MAX' } }, - { path: 'identity.name.otherNames', is: { $eq: 'Abc' } }, + { + path: 'identity.name.givenNames', + is: { $eq: 'NOT MAX' }, + }, + { + path: 'identity.name.otherNames', + is: { $eq: 'Abc' }, + }, ], - })).toBeFalsy(); + })) + .toBeFalsy(); }); it('Should match with gt constraint', async () => { @@ -1193,9 +1414,13 @@ describe('Unit tests for Verifiable Credentials', () => { const cred = await VC.create('credential-cvc:Identity-v3', uuidv4(), null, credentialSubject, [name, dob]); expect(cred.isMatch({ claims: [ - { path: 'identity.dateOfBirth.year', is: { $gt: 1900 } }, + { + path: 'identity.dateOfBirth.year', + is: { $gt: 1900 }, + }, ], - })).toBeTruthy(); + })) + .toBeTruthy(); }); it('Should match constraints targeting the parent properties of dates', async () => { @@ -1204,9 +1429,13 @@ describe('Unit tests for Verifiable Credentials', () => { const cred = await VC.create('credential-cvc:Identity-v3', uuidv4(), null, credentialSubject, [name, dob]); expect(cred.isMatch({ claims: [ - { path: 'identity.dateOfBirth', is: { $lt: 1554377905342 } }, // 4-4-2019 + { + path: 'identity.dateOfBirth', + is: { $lt: 1554377905342 }, + }, // 4-4-2019 ], - })).toBeTruthy(); + })) + .toBeTruthy(); }); const getExactYearsAgo = (yearDelta) => { @@ -1216,7 +1445,11 @@ describe('Unit tests for Verifiable Credentials', () => { }; const dateToDOBClaim = async (date) => { - const dobClaim = { day: date.getDate(), month: date.getMonth() + 1, year: date.getFullYear() }; + const dobClaim = { + day: date.getDate(), + month: date.getMonth() + 1, + year: date.getFullYear(), + }; return Claim.create('claim-cvc:Identity.dateOfBirth-v1', dobClaim); }; @@ -1228,9 +1461,13 @@ describe('Unit tests for Verifiable Credentials', () => { const cred = await VC.create('credential-cvc:Identity-v3', uuidv4(), null, credentialSubject, [name, dob]); expect(cred.isMatch({ claims: [ - { path: 'identity.dateOfBirth', is: { $lte: '-40y' } }, + { + path: 'identity.dateOfBirth', + is: { $lte: '-40y' }, + }, ], - })).toBeTruthy(); + })) + .toBeTruthy(); }); it('Should not match', async () => { @@ -1239,9 +1476,13 @@ describe('Unit tests for Verifiable Credentials', () => { const cred = await VC.create('credential-cvc:Identity-v3', uuidv4(), null, credentialSubject, [name, dob]); expect(cred.isMatch({ claims: [ - { path: 'identity.name.first', is: { $eq: 'Maxime' } }, + { + path: 'identity.name.first', + is: { $eq: 'Maxime' }, + }, ], - })).toBeFalsy(); + })) + .toBeFalsy(); }); it('Should match credential on constraints.meta', () => { @@ -1264,7 +1505,8 @@ describe('Unit tests for Verifiable Credentials', () => { }, }; - expect(VC.isMatchCredentialMeta(vcMeta, constraints)).toBeTruthy(); + expect(VC.isMatchCredentialMeta(vcMeta, constraints)) + .toBeTruthy(); }); it('Should match credential on constraints.meta with issuer', () => { @@ -1292,7 +1534,8 @@ describe('Unit tests for Verifiable Credentials', () => { }, }; - expect(VC.isMatchCredentialMeta(vcMeta, constraints)).toBeTruthy(); + expect(VC.isMatchCredentialMeta(vcMeta, constraints)) + .toBeTruthy(); }); it('Should not match credential on constraints.meta with wrong issuer', () => { @@ -1320,7 +1563,8 @@ describe('Unit tests for Verifiable Credentials', () => { }, }; - expect(VC.isMatchCredentialMeta(vcMeta, constraints)).toBeFalsy(); + expect(VC.isMatchCredentialMeta(vcMeta, constraints)) + .toBeFalsy(); }); it('Should match credential on constraints.meta with multiple fields', () => { @@ -1353,7 +1597,8 @@ describe('Unit tests for Verifiable Credentials', () => { }, }; - expect(VC.isMatchCredentialMeta(vcMeta, constraints)).toBeTruthy(); + expect(VC.isMatchCredentialMeta(vcMeta, constraints)) + .toBeTruthy(); }); it('Should not match credential on constraints.meta with invalid field', () => { @@ -1386,7 +1631,8 @@ describe('Unit tests for Verifiable Credentials', () => { }, }; - expect(VC.isMatchCredentialMeta(vcMeta, constraints)).toBeFalsy(); + expect(VC.isMatchCredentialMeta(vcMeta, constraints)) + .toBeFalsy(); }); it('Should not match credential if constraints.meta are invalid or empty', () => { @@ -1404,91 +1650,157 @@ describe('Unit tests for Verifiable Credentials', () => { }; const constraint = {}; - expect(VC.isMatchCredentialMeta(vcMeta, constraint)).toBeFalsy(); + expect(VC.isMatchCredentialMeta(vcMeta, constraint)) + .toBeFalsy(); }); it('Should return all Credential properties for credential-cvc:GenericDocumentId-v3', async () => { const properties = await VC.getAllProperties('credential-cvc:GenericDocumentId-v3'); - expect(properties).toHaveLength(30); - expect(properties).toContain('document.type'); - expect(properties).toContain('document.number'); - expect(properties).toContain('document.gender'); - expect(properties).toContain('document.issueLocation'); - expect(properties).toContain('document.issueAuthority'); - expect(properties).toContain('document.issueCountry'); - expect(properties).toContain('document.placeOfBirth'); - expect(properties).toContain('document.name.givenNames'); - expect(properties).toContain('document.name.familyNames'); - expect(properties).toContain('document.name.otherNames'); - expect(properties).toContain('document.dateOfBirth.day'); - expect(properties).toContain('document.dateOfBirth.month'); - expect(properties).toContain('document.dateOfBirth.year'); - expect(properties).toContain('document.address.country'); - expect(properties).toContain('document.address.county'); - expect(properties).toContain('document.address.state'); - expect(properties).toContain('document.address.street'); - expect(properties).toContain('document.address.unit'); - expect(properties).toContain('document.address.city'); - expect(properties).toContain('document.address.postalCode'); - expect(properties).toContain('document.properties.dateOfIssue.day'); - expect(properties).toContain('document.properties.dateOfIssue.month'); - expect(properties).toContain('document.properties.dateOfIssue.year'); - expect(properties).toContain('document.properties.dateOfExpiry.day'); - expect(properties).toContain('document.properties.dateOfExpiry.month'); - expect(properties).toContain('document.properties.dateOfExpiry.year'); - expect(properties).toContain('document.image.front'); - expect(properties).toContain('document.image.frontMD5'); - expect(properties).toContain('document.image.back'); - expect(properties).toContain('document.image.backMD5'); + expect(properties) + .toHaveLength(30); + expect(properties) + .toContain('document.type'); + expect(properties) + .toContain('document.number'); + expect(properties) + .toContain('document.gender'); + expect(properties) + .toContain('document.issueLocation'); + expect(properties) + .toContain('document.issueAuthority'); + expect(properties) + .toContain('document.issueCountry'); + expect(properties) + .toContain('document.placeOfBirth'); + expect(properties) + .toContain('document.name.givenNames'); + expect(properties) + .toContain('document.name.familyNames'); + expect(properties) + .toContain('document.name.otherNames'); + expect(properties) + .toContain('document.dateOfBirth.day'); + expect(properties) + .toContain('document.dateOfBirth.month'); + expect(properties) + .toContain('document.dateOfBirth.year'); + expect(properties) + .toContain('document.address.country'); + expect(properties) + .toContain('document.address.county'); + expect(properties) + .toContain('document.address.state'); + expect(properties) + .toContain('document.address.street'); + expect(properties) + .toContain('document.address.unit'); + expect(properties) + .toContain('document.address.city'); + expect(properties) + .toContain('document.address.postalCode'); + expect(properties) + .toContain('document.properties.dateOfIssue.day'); + expect(properties) + .toContain('document.properties.dateOfIssue.month'); + expect(properties) + .toContain('document.properties.dateOfIssue.year'); + expect(properties) + .toContain('document.properties.dateOfExpiry.day'); + expect(properties) + .toContain('document.properties.dateOfExpiry.month'); + expect(properties) + .toContain('document.properties.dateOfExpiry.year'); + expect(properties) + .toContain('document.image.front'); + expect(properties) + .toContain('document.image.frontMD5'); + expect(properties) + .toContain('document.image.back'); + expect(properties) + .toContain('document.image.backMD5'); }); it('Should return all Credential properties for credential-cvc:Identity-v3', async () => { const properties = await VC.getAllProperties('credential-cvc:Identity-v3'); - expect(properties).toHaveLength(6); - expect(properties).toContain('identity.name.givenNames'); - expect(properties).toContain('identity.name.familyNames'); - expect(properties).toContain('identity.name.otherNames'); - expect(properties).toContain('identity.dateOfBirth.day'); - expect(properties).toContain('identity.dateOfBirth.month'); - expect(properties).toContain('identity.dateOfBirth.year'); + expect(properties) + .toHaveLength(6); + expect(properties) + .toContain('identity.name.givenNames'); + expect(properties) + .toContain('identity.name.familyNames'); + expect(properties) + .toContain('identity.name.otherNames'); + expect(properties) + .toContain('identity.dateOfBirth.day'); + expect(properties) + .toContain('identity.dateOfBirth.month'); + expect(properties) + .toContain('identity.dateOfBirth.year'); }); it('Should return all Credential properties for credential-cvc:Address-v3', async () => { const properties = await VC.getAllProperties('credential-cvc:Address-v3'); - expect(properties).toHaveLength(7); - expect(properties).toContain('identity.address.country'); - expect(properties).toContain('identity.address.county'); - expect(properties).toContain('identity.address.state'); - expect(properties).toContain('identity.address.street'); - expect(properties).toContain('identity.address.unit'); - expect(properties).toContain('identity.address.city'); - expect(properties).toContain('identity.address.postalCode'); + expect(properties) + .toHaveLength(7); + expect(properties) + .toContain('identity.address.country'); + expect(properties) + .toContain('identity.address.county'); + expect(properties) + .toContain('identity.address.state'); + expect(properties) + .toContain('identity.address.street'); + expect(properties) + .toContain('identity.address.unit'); + expect(properties) + .toContain('identity.address.city'); + expect(properties) + .toContain('identity.address.postalCode'); }); it('Should return all Credential properties for credential-cvc:PhoneNumber-v3', async () => { const properties = await VC.getAllProperties('credential-cvc:PhoneNumber-v3'); - expect(properties).toHaveLength(5); - expect(properties).toContain('contact.phoneNumber.country'); - expect(properties).toContain('contact.phoneNumber.countryCode'); - expect(properties).toContain('contact.phoneNumber.number'); - expect(properties).toContain('contact.phoneNumber.extension'); - expect(properties).toContain('contact.phoneNumber.lineType'); + expect(properties) + .toHaveLength(5); + expect(properties) + .toContain('contact.phoneNumber.country'); + expect(properties) + .toContain('contact.phoneNumber.countryCode'); + expect(properties) + .toContain('contact.phoneNumber.number'); + expect(properties) + .toContain('contact.phoneNumber.extension'); + expect(properties) + .toContain('contact.phoneNumber.lineType'); }); it('Should return all Credential properties for credential-cvc:Email-v3', async () => { const properties = await VC.getAllProperties('credential-cvc:Email-v3'); - expect(properties).toHaveLength(3); - expect(properties).toContain('contact.email.username'); - expect(properties).toContain('contact.email.domain.name'); - expect(properties).toContain('contact.email.domain.tld'); + expect(properties) + .toHaveLength(3); + expect(properties) + .toContain('contact.email.username'); + expect(properties) + .toContain('contact.email.domain.name'); + expect(properties) + .toContain('contact.email.domain.tld'); }); it('Should construct a VC with no evidence provided', async () => { const name = await Claim.create('claim-cvc:Identity.name-v1', - { givenNames: 'Neymar', otherNames: 'Jr', familyNames: 'Mustermann' }); - const dob = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', { day: 5, month: 2, year: 1992 }); + { + givenNames: 'Neymar', + otherNames: 'Jr', + familyNames: 'Mustermann', + }); + const dob = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', { + day: 5, + month: 2, + year: 1992, + }); const cred = await VC.create('credential-cvc:Identity-v3', uuidv4(), null, credentialSubject, [name, dob]); - expect(cred).toBeDefined(); + expect(cred) + .toBeDefined(); }); it('Should construct a VC with the provided evidence', async () => { @@ -1513,8 +1825,10 @@ describe('Unit tests for Verifiable Credentials', () => { const cred = await VC.create( 'credential-cvc:Identity-v3', uuidv4(), null, credentialSubject, [name, dob], evidence, ); - expect(cred.evidence).toBeDefined(); - expect(cred.evidence).toEqual([evidence]); + expect(cred.evidence) + .toBeDefined(); + expect(cred.evidence) + .toEqual([evidence]); }); it('Should construct a VC with multiple evidence items', async () => { @@ -1549,8 +1863,10 @@ describe('Unit tests for Verifiable Credentials', () => { const cred = await VC.create( 'credential-cvc:Identity-v3', uuidv4(), null, credentialSubject, [name, dob], evidence, ); - expect(cred.evidence).toBeDefined(); - expect(cred.evidence).toEqual(evidence); + expect(cred.evidence) + .toBeDefined(); + expect(cred.evidence) + .toEqual(evidence); }); it('Should include only the evidence properties in the credential', async () => { @@ -1578,8 +1894,11 @@ describe('Unit tests for Verifiable Credentials', () => { const cred = await VC.create( 'credential-cvc:Identity-v3', uuidv4(), null, credentialSubject, [name, dob], evidence, ); - expect(cred.evidence).toBeDefined(); - expect(cred.evidence.other).not.toBeDefined(); + expect(cred.evidence) + .toBeDefined(); + expect(cred.evidence.other) + .not + .toBeDefined(); }); it('Should construct a credential with an evidence without id', async () => { @@ -1605,8 +1924,10 @@ describe('Unit tests for Verifiable Credentials', () => { const cred = await VC.create( 'credential-cvc:Identity-v3', uuidv4(), null, credentialSubject, [name, dob], evidence, ); - expect(cred.evidence).toBeDefined(); - expect(cred.evidence).toEqual(evidence); + expect(cred.evidence) + .toBeDefined(); + expect(cred.evidence) + .toEqual(evidence); }); it('Should throw exception if a evidence required property is missing', async () => { @@ -1633,7 +1954,9 @@ describe('Unit tests for Verifiable Credentials', () => { return expect(VC.create( 'credential-cvc:Identity-v3', uuidv4(), null, credentialSubject, [name, dob], evidence, - )).rejects.toThrow(/Evidence type is required/); + )) + .rejects + .toThrow(/Evidence type is required/); }); it('Should throw exception if evidence id is NOT a valid url', async () => { @@ -1661,7 +1984,9 @@ describe('Unit tests for Verifiable Credentials', () => { return expect(VC.create( 'credential-cvc:Identity-v3', uuidv4(), null, credentialSubject, [name, dob], evidence, - )).rejects.toThrow(/Evidence id is not a valid URL/); + )) + .rejects + .toThrow(/Evidence id is not a valid URL/); }); it('Should throw exception if evidence type is not an array', async () => { @@ -1689,7 +2014,9 @@ describe('Unit tests for Verifiable Credentials', () => { return expect(VC.create( 'credential-cvc:Identity-v3', uuidv4(), null, credentialSubject, [name, dob], evidence, - )).rejects.toThrow(/Evidence type is not an Array object/); + )) + .rejects + .toThrow(/Evidence type is not an Array object/); }); it('Should create credential if all claims are provided', async () => { @@ -1727,7 +2054,8 @@ describe('Unit tests for Verifiable Credentials', () => { type, number, name, gender, issueCountry, placeOfBirth, dateOfBirth, nationality, dateOfExpiry, evidences, ]; const credential = await VC.create('credential-cvc:IdDocument-v3', '', null, credentialSubject, ucas); - expect(credential).toBeDefined(); + expect(credential) + .toBeDefined(); }); it('Should throw exception on credential creation if required uca is missing', async () => { @@ -1737,7 +2065,8 @@ describe('Unit tests for Verifiable Credentials', () => { const ucas = [type, name, issueCountry]; - return expect(VC.create('credential-cvc:IdDocument-v3', '', null, credentialSubject, ucas)).rejects + return expect(VC.create('credential-cvc:IdDocument-v3', '', null, credentialSubject, ucas)) + .rejects .toThrow(/Missing required fields to credential-cvc:IdDocument-v3/); }); @@ -1749,21 +2078,25 @@ describe('Unit tests for Verifiable Credentials', () => { const ucas = [type, name, issueCountry]; return expect(VC.create('credential-cvc:IdDocument-v3', '', null, credentialSubject, ucas)) - .rejects.toThrow(/Missing required fields to credential-cvc:IdDocument-v3/); + .rejects + .toThrow(/Missing required fields to credential-cvc:IdDocument-v3/); }); it('Should verify a VC without non-required claims', async () => { const credJSon = require('./fixtures/IdDocumentWithoutNonRequiredClaims.json'); // eslint-disable-line const cred = await VC.fromJSON(credJSon); - expect(cred).toBeDefined(); - expect(cred.verifyProofs()).toBeTruthy(); + expect(cred) + .toBeDefined(); + expect(cred.verifyProofs()) + .toBeTruthy(); }); it('Should throw exception when creating a VC from json without required claims', async () => { const credJSon = require('./fixtures/IdDocumentWithoutRequiredClaims.json'); // eslint-disable-line return expect(VC.fromJSON(credJSon)) - .rejects.toThrow(); + .rejects + .toThrow(); }); }); @@ -1790,19 +2123,25 @@ describe('Transient Credential Tests', () => { const uca = await Claim.create('claim-cvc:Identity.address-v1', value, '1'); const credential = await VC.create('credential-cvc:UnverifiedAddress-v3', '', null, credentialSubject, [uca]); - expect(credential).toBeDefined(); - expect(credential.transient).toBeTruthy(); + expect(credential) + .toBeDefined(); + expect(credential.transient) + .toBeTruthy(); credential.requestAnchor(); - expect(credential.proof.anchor).toBeDefined(); - expect(credential.proof.anchor.type).toBe('transient'); + expect(credential.proof.anchor) + .toBeDefined(); + expect(credential.proof.anchor.type) + .toBe('transient'); const verified = await credential.verifyAttestation(); - expect(verified).toBeTruthy(); + expect(verified) + .toBeTruthy(); const proved = credential.verifyProofs(); - expect(proved).toBeTruthy(); + expect(proved) + .toBeTruthy(); }); it('Should create an US SSN Transient Credential', async () => { @@ -1815,25 +2154,33 @@ describe('Transient Credential Tests', () => { const uca = await Claim.create('claim-cvc:SocialSecurity.number-v1', value, '1'); const credential = await VC.create('credential-cvc:UnverifiedSsn-v3', '', null, credentialSubject, [uca]); - expect(credential).toBeDefined(); - expect(credential.transient).toBeTruthy(); + expect(credential) + .toBeDefined(); + expect(credential.transient) + .toBeTruthy(); credential.requestAnchor(); - expect(credential.proof.anchor).toBeDefined(); - expect(credential.proof.anchor.type).toBe('transient'); + expect(credential.proof.anchor) + .toBeDefined(); + expect(credential.proof.anchor.type) + .toBe('transient'); const verified = await credential.verifyAttestation(); - expect(verified).toBeTruthy(); + expect(verified) + .toBeTruthy(); const proved = credential.verifyProofs(); - expect(proved).toBeTruthy(); + expect(proved) + .toBeTruthy(); }); }); describe('Signed Verifiable Credentials', () => { beforeAll(() => { schemaLoader.addLoader(new CVCSchemaLoader()); + + didTestUtil.mockDids(); }); beforeEach(() => { @@ -1841,26 +2188,109 @@ describe('Signed Verifiable Credentials', () => { }); test('Should create a verifiable credential instance', async () => { + const verificationMethod = `${didTestUtil.DID_SPARSE}#default`; + const keypair = didTestUtil.keyPair(didTestUtil.DID_SPARSE); + const name = await Claim.create('claim-cvc:Identity.name-v1', identityName); const dob = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', identityDateOfBirth); - const cred = await VC.create('credential-cvc:Identity-v3', uuidv4(), null, credentialSubject, [name, dob], null, - new CredentialSignerVerifier({ prvBase58 })); + + const cred = await VC.create( + 'credential-cvc:Identity-v3', + didTestUtil.DID_SPARSE, + null, + credentialSubject, + [name, dob], + null, + { + verificationMethod, + keypair, + }, + ); + expect(cred).toBeDefined(); - expect(cred.proof.merkleRootSignature).toBeDefined(); - expect(cred.verifyMerkletreeSignature(pubBase58)).toBeTruthy(); + expect(cred.proof.merkleRootSignature.signature).toBeDefined(); + expect(cred.proof.merkleRootSignature.verificationMethod).toBe(verificationMethod); + + // TODO: re-activate this once verify is done + // expect(cred.verifyMerkletreeSignature(pubBase58)).toBeTruthy(); + }); + + test('Should not be able to sign with a removed key', async () => { + const verificationMethod = `${didTestUtil.DID_WITH_NO_DEFAULT}#default`; + const keypair = didTestUtil.keyPair(didTestUtil.DID_WITH_NO_DEFAULT); + + const name = await Claim.create('claim-cvc:Identity.name-v1', identityName); + const dob = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', identityDateOfBirth); + + const credCreate = VC.create( + 'credential-cvc:Identity-v3', + didTestUtil.DID_WITH_NO_DEFAULT, + null, + credentialSubject, + [name, dob], + null, + { + verificationMethod, + keypair, + }, + ); + + return expect(credCreate).rejects.toThrow( + `The verificationMethod ${verificationMethod} is not allowed to sign for ${didTestUtil.DID_WITH_NO_DEFAULT}`, + ); }); - test('Should verify credential(data only) signature', async () => { + test('Should be able to sign as a controller of the issuer did', async () => { + const verificationMethod = `${didTestUtil.DID_CONTROLLER}#default`; + const keypair = didTestUtil.keyPair(didTestUtil.DID_CONTROLLER); + const name = await Claim.create('claim-cvc:Identity.name-v1', identityName); const dob = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', identityDateOfBirth); - const signerVerifier = new CredentialSignerVerifier({ prvBase58 }); - const cred = await VC.create('credential-cvc:Identity-v3', uuidv4(), null, credentialSubject, [name, dob], null, - signerVerifier); + + const cred = await VC.create( + 'credential-cvc:Identity-v3', + didTestUtil.DID_CONTROLLED, + null, + credentialSubject, + [name, dob], + null, + { + verificationMethod, + keypair, + }, + ); + + expect(cred).toBeDefined(); + expect(cred.proof.merkleRootSignature.signature).toBeDefined(); + expect(cred.proof.merkleRootSignature.verificationMethod).toBe(verificationMethod); + }); + + // TODO: re-activate this once verify is done + test.skip('Should verify credential(data only) signature', async () => { + const verificationMethod = `${didTestUtil.DID_SPARSE}#default`; + + const name = await Claim.create('claim-cvc:Identity.name-v1', identityName); + const dob = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', identityDateOfBirth); + + const cred = await VC.create( + 'credential-cvc:Identity-v3', + didTestUtil.DID_SPARSE, + null, + credentialSubject, + [name, dob], + null, + { + verificationMethod, + keypair: didTestUtil.keyPair(didTestUtil.DID_SPARSE), + }, + ); + expect(cred).toBeDefined(); expect(cred.proof.merkleRootSignature).toBeDefined(); - const dataOnlyCredential = JSON.parse(JSON.stringify(cred)); - expect(signerVerifier.isSignatureValid(dataOnlyCredential)).toBeTruthy(); + // TODO: re-actiate this once verify is done + // const dataOnlyCredential = JSON.parse(JSON.stringify(cred)); + // expect(signerVerifier.isSignatureValid(dataOnlyCredential)).toBeTruthy(); }); }); describe('Referenced Schemas for Verifiable Credentials', () => { @@ -1912,9 +2342,11 @@ describe('Referenced Schemas for Verifiable Credentials', () => { issueCountry, placeOfBirth, dateOfBirth, dateOfExpiry, nationality, evidences], ); - expect(credential).toBeDefined(); + expect(credential) + .toBeDefined(); const filtered = credential.filter(['claim-cvc:Document.dateOfBirth-v1']); - expect(filtered).toBeDefined(); + expect(filtered) + .toBeDefined(); }); test('Validates a schema the contains a reference', async () => { @@ -1925,7 +2357,9 @@ describe('Referenced Schemas for Verifiable Credentials', () => { 'credential-test:IdDocument-v1', '', null, credentialSubject, [type, number], ); - return expect(createCredential).rejects.toThrow('Missing required fields to credential-test:IdDocument-v1'); + return expect(createCredential) + .rejects + .toThrow('Missing required fields to credential-test:IdDocument-v1'); }); }); @@ -1942,27 +2376,28 @@ describe('Verifiable Credential JSON serialization', () => { // serialize the credential to JSON, then back to an object to be tested against const credJSON = JSON.parse(JSON.stringify(cred)); - expect(credJSON).toEqual(expect.objectContaining({ - '@context': ['https://www.w3.org/2018/credentials/v1', 'https://www.identity.com/credentials/v3'], - id: cred.id, - issuer: cred.issuer, - issuanceDate: cred.issuanceDate, - type: ['VerifiableCredential', 'IdentityCredential'], - credentialSubject: { - id: credentialSubject, - identity: { - name: { - familyNames: identityName.familyNames, - givenNames: identityName.givenNames, - otherNames: identityName.otherNames, - }, - dateOfBirth: { - day: identityDateOfBirth.day, - month: identityDateOfBirth.month, - year: identityDateOfBirth.year, + expect(credJSON) + .toEqual(expect.objectContaining({ + '@context': ['https://www.w3.org/2018/credentials/v1', 'https://www.identity.com/credentials/v3'], + id: cred.id, + issuer: cred.issuer, + issuanceDate: cred.issuanceDate, + type: ['VerifiableCredential', 'IdentityCredential'], + credentialSubject: { + id: credentialSubject, + identity: { + name: { + familyNames: identityName.familyNames, + givenNames: identityName.givenNames, + otherNames: identityName.otherNames, + }, + dateOfBirth: { + day: identityDateOfBirth.day, + month: identityDateOfBirth.month, + year: identityDateOfBirth.year, + }, }, }, - }, - })); + })); }); }); diff --git a/src/creds/CvcMerkleProof.js b/src/creds/CvcMerkleProof.js index b2beb1d5..614f54d1 100644 --- a/src/creds/CvcMerkleProof.js +++ b/src/creds/CvcMerkleProof.js @@ -13,17 +13,17 @@ class CvcMerkleProof { return 16; } - constructor(ucas, credentialSigner = null) { + constructor(ucas, signer = null) { const withRandomUcas = CvcMerkleProof.padTree(ucas); this.type = 'CvcMerkleProof2018'; this.merkleRoot = null; this.anchor = 'TBD (Civic Blockchain Attestation)'; this.leaves = CvcMerkleProof.getAllAttestableValue(withRandomUcas); - this.buildMerkleTree(credentialSigner); + this.buildMerkleTree(signer); this.granted = null; } - buildMerkleTree(credentialSigner = null) { + buildMerkleTree(signer = null) { const merkleTools = new MerkleTools(); const hashes = _.map(this.leaves, n => sha256(n.value)); merkleTools.addLeaves(hashes); @@ -35,8 +35,8 @@ class CvcMerkleProof { this.leaves = _.filter(this.leaves, el => !(el.identifier === 'cvc:Random:node')); this.merkleRoot = merkleTools.getMerkleRoot().toString('hex'); - if (credentialSigner) { - this.merkleRootSignature = credentialSigner.sign(this); + if (signer) { + this.merkleRootSignature = signer.sign(this); } } diff --git a/src/creds/VerifiableCredential.js b/src/creds/VerifiableCredential.js index 51b26995..46802438 100644 --- a/src/creds/VerifiableCredential.js +++ b/src/creds/VerifiableCredential.js @@ -9,6 +9,7 @@ const MerkleTools = require('merkle-tools'); const { sha256 } = require('../lib/crypto'); const { Claim } = require('../claim/Claim'); +const didUtil = require('../lib/did'); const definitions = require('./definitions'); const { services } = require('../services'); @@ -18,8 +19,11 @@ const { ClaimModel } = require('./ClaimModel'); const CredentialSignerVerifier = require('./CredentialSignerVerifier'); const { schemaLoader } = require('../schemas/jsonSchema'); const { parseIdentifier } = require('../lib/stringUtils'); +const signerVerifier = require('../lib/signerVerifier'); + // convert a time delta to a timestamp -const convertDeltaToTimestamp = delta => time.applyDeltaToDate(delta).getTime() / 1000; +const convertDeltaToTimestamp = delta => time.applyDeltaToDate(delta) + .getTime() / 1000; function validIdentifiers() { const vi = _.map(definitions, d => d.identifier); @@ -192,7 +196,8 @@ async function nonCryptographicallySecureVerify(credential) { const invalidValues = []; const invalidHashs = []; const invalidProofs = []; - _.forEach(_.keys(claimsWithFlatKeys).filter(key => key !== 'id'), (claimKey) => { + _.forEach(_.keys(claimsWithFlatKeys) + .filter(key => key !== 'id'), (claimKey) => { // check if `claimKey` has a `claimPath` proof const leaveIdx = _.indexOf(leavesClaimPaths, claimKey); // if not found @@ -345,7 +350,10 @@ function verifyRequiredClaims(definition, ucas) { function getCredentialDefinition(identifier, version) { let definition; if (version) { - definition = _.find(definitions, { identifier, version: `${version}` }); + definition = _.find(definitions, { + identifier, + version: `${version}`, + }); } else { definition = _.find(definitions, { identifier }); } @@ -363,8 +371,7 @@ function getCredentialDefinition(identifier, version) { * @param {*} version * @param {*} [evidence] */ -function VerifiableCredentialBaseConstructor(identifier, issuer, expiryIn, subject, ucas, - evidence, signerVerifier = null) { +function VerifiableCredentialBaseConstructor(identifier, issuer, expiryIn, subject, ucas, evidence, signerOptions) { const parsedIdentifier = parseIdentifier(identifier); const version = parsedIdentifier ? parsedIdentifier[4] : '1'; @@ -374,7 +381,8 @@ function VerifiableCredentialBaseConstructor(identifier, issuer, expiryIn, subje this.issuanceDate = (new Date()).toISOString(); const issuanceDateUCA = new Claim('cvc:Meta:issuanceDate', this.issuanceDate); this.identifier = identifier; - this.expirationDate = expiryIn ? timestamp.toDate(timestamp.now(expiryIn)).toISOString() : null; + this.expirationDate = expiryIn ? timestamp.toDate(timestamp.now(expiryIn)) + .toISOString() : null; const expiryUCA = new Claim('cvc:Meta:expirationDate', this.expirationDate ? this.expirationDate : 'null'); const proofUCAs = expiryUCA ? _.concat(ucas, issuerUCA, issuanceDateUCA, expiryUCA) @@ -404,7 +412,7 @@ function VerifiableCredentialBaseConstructor(identifier, issuer, expiryIn, subje ...this.credentialSubject, ...new ClaimModel(ucas), }; - this.proof = new CvcMerkleProof(proofUCAs, signerVerifier); + this.proof = new CvcMerkleProof(proofUCAs, signerOptions ? signerOptions.signer : null); if (!_.isEmpty(definition.excludes)) { const removed = _.remove(this.proof.leaves, el => _.includes(definition.excludes, el.identifier)); _.forEach(removed, (r) => { @@ -514,24 +522,34 @@ function VerifiableCredentialBaseConstructor(identifier, issuer, expiryIn, subje * @deprecated */ this.verify = async (higherVerifyLevel, options) => { - const { requestorId, requestId, keyName } = options || {}; + const { + requestorId, + requestId, + keyName, + } = options || {}; const hVerifyLevel = !_.isNil(higherVerifyLevel) ? higherVerifyLevel : VERIFY_LEVELS.GRANTED; let verifiedlevel = VERIFY_LEVELS.INVALID; // Test next level if (verifiedlevel === VERIFY_LEVELS.INVALID && hVerifyLevel >= VERIFY_LEVELS.PROOFS - && (await this.verifyProofs())) verifiedlevel = VERIFY_LEVELS.PROOFS; + && (await this.verifyProofs())) { + verifiedlevel = VERIFY_LEVELS.PROOFS; + } // Test next level if (verifiedlevel === VERIFY_LEVELS.PROOFS && hVerifyLevel >= VERIFY_LEVELS.ANCHOR - && this.verifyAttestation()) verifiedlevel = VERIFY_LEVELS.ANCHOR; + && this.verifyAttestation()) { + verifiedlevel = VERIFY_LEVELS.ANCHOR; + } // Test next level if (verifiedlevel === VERIFY_LEVELS.ANCHOR && hVerifyLevel >= VERIFY_LEVELS.GRANTED - && this.verifyGrant(requestorId, requestId, keyName)) verifiedlevel = VERIFY_LEVELS.GRANTED; + && this.verifyGrant(requestorId, requestId, keyName)) { + verifiedlevel = VERIFY_LEVELS.GRANTED; + } return verifiedlevel; }; @@ -627,7 +645,10 @@ function VerifiableCredentialBaseConstructor(identifier, issuer, expiryIn, subje * @param {string} option.keyName - A keyName - if CryptoManager is been used. * @param {string} option.pvtKey - A pvtKey in base58 format (default impl). */ - this.grantUsageFor = (requestorId, requestId, { keyName, pvtKey }) => { + this.grantUsageFor = (requestorId, requestId, { + keyName, + pvtKey, + }) => { if (_.isEmpty(_.get(this.proof, 'anchor.subject.label')) || _.isEmpty(_.get(this.proof, 'anchor.subject.data'))) { throw new Error('Invalid credential attestation/anchor'); } @@ -772,8 +793,25 @@ VerifiableCredentialBaseConstructor.CREDENTIAL_META_FIELDS = CREDENTIAL_META_FIE VerifiableCredentialBaseConstructor.getCredentialMeta = getCredentialMeta; VerifiableCredentialBaseConstructor.isMatchCredentialMeta = isMatchCredentialMeta; -VerifiableCredentialBaseConstructor.create = async (identifier, issuer, expiryIn, subject, ucas, evidence, - signerVerifier = null, validate = true) => { +/** + * Creates a Verifiable Credential + * + * @param identifier The identifier for the VC (e.g. credential-cvc:Identity-v1) + * @param issuerDid The issuer DID + * @param expiryIn The credential expiry date (nullable) + * @param subject The subject DID + * @param ucas An array of UCAs + * @param evidence The evidence for the credential + * @param signerOptions Signer options: + * @param signerOptions.verificationMethod The verificationMethod for the signing key + * @param signerOptions.keypair The keypair to sign with + * or + * @param signerOptions.privateKey The private key to sign with + * or + * @param signerOptions.signer An object implementing a `sign(CvcMerkleProof)` method + */ +VerifiableCredentialBaseConstructor.create = async (identifier, issuerDid, expiryIn, subject, ucas, evidence, + signerOptions = null, validate = true) => { // Load the schema and it's references from a source to be used for validation and defining the schema definitions await schemaLoader.loadSchemaFromTitle(identifier); @@ -783,8 +821,21 @@ VerifiableCredentialBaseConstructor.create = async (identifier, issuer, expiryIn await schemaLoader.loadSchemaFromTitle('cvc:Meta:expirationDate'); await schemaLoader.loadSchemaFromTitle('cvc:Random:node'); + let signer; + + if (signerOptions) { + const canSignForIssuer = await didUtil.canSign(issuerDid, signerOptions.verificationMethod); + if (!canSignForIssuer) { + throw new Error( + `The verificationMethod ${signerOptions.verificationMethod} is not allowed to sign for ${issuerDid}`, + ); + } + + signer = await signerVerifier.signer(signerOptions); + } + const vc = new VerifiableCredentialBaseConstructor( - identifier, issuer, expiryIn, subject, ucas, evidence, signerVerifier, + identifier, issuerDid, expiryIn, subject, ucas, evidence, signer, ); if (validate) { From 53d4d8071afa5143602d6a3e395a4b24e14af052 Mon Sep 17 00:00:00 2001 From: William Brooks Date: Tue, 11 Jan 2022 16:39:25 +0200 Subject: [PATCH 21/52] IDCOM-1427 Backwards compatibility to support old CredentialSignerVerifier when using the compatibility proxy --- src/creds/VerifiableCredentialProxy.js | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/creds/VerifiableCredentialProxy.js b/src/creds/VerifiableCredentialProxy.js index cc5ba135..4a8b1128 100644 --- a/src/creds/VerifiableCredentialProxy.js +++ b/src/creds/VerifiableCredentialProxy.js @@ -12,7 +12,10 @@ const definitions = schemaLoader.credentialDefinitions; function getCredentialDefinition(identifier, version) { let definition; if (version) { - definition = _.find(definitions, { identifier, version: `${version}` }); + definition = _.find(definitions, { + identifier, + version: `${version}`, + }); } else { definition = _.find(definitions, { identifier }); } @@ -86,9 +89,15 @@ VerifiableCredentialProxy.create = async ( // Load the schema and it's references from a source to be used for validation and defining the schema definitions const schema = await schemaLoader.loadSchemaFromTitle(identifier); + // Wrap the old signer verifier for backwards compatibility + let signer; + if (signerVerifier) { + signer = { signer: signerVerifier }; + } + // If it has a credentialSubject, use the new VC format if (schema && schema.properties.credentialSubject) { - return VerifiableCredential.create(identifier, issuer, expiryIn, '', ucas, evidence, signerVerifier); + return VerifiableCredential.create(identifier, issuer, expiryIn, '', ucas, evidence, signer); } // Load the meta schema's from a source @@ -97,7 +106,7 @@ VerifiableCredentialProxy.create = async ( await schemaLoader.loadSchemaFromTitle('cvc:Meta:expirationDate'); await schemaLoader.loadSchemaFromTitle('cvc:Random:node'); - return new VerifiableCredentialProxy(identifier, issuer, expiryIn, ucas, version, evidence, signerVerifier); + return new VerifiableCredentialProxy(identifier, issuer, expiryIn, ucas, version, evidence, signer); }; /** From 8d5423e04ccf4b5b1ca5c39584fb2ee3c2c6642a Mon Sep 17 00:00:00 2001 From: William Brooks Date: Tue, 11 Jan 2022 16:40:21 +0200 Subject: [PATCH 22/52] IDCOM-1427 Updated package.json --- package-lock.json | 7146 ++++++++++++++++++++++++++++++++++++++++++--- package.json | 6 + 2 files changed, 6809 insertions(+), 343 deletions(-) diff --git a/package-lock.json b/package-lock.json index af053827..f07855df 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "@identity.com/credential-commons", - "version": "2.0.1", + "version": "2.0.2", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -1286,6 +1286,6556 @@ "kuler": "^2.0.0" } }, + "@digitalbazaar/did-io": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@digitalbazaar/did-io/-/did-io-1.1.0.tgz", + "integrity": "sha512-XrM0HIukrRY6rtEM2osMbAEzXfXM6SXSKRJ2iZqTkkSdqrI1iiA3Y87CMYfqVwpwyd6WcWdzKR5SpLkbIh1+WQ==", + "requires": { + "@digitalbazaar/lru-memoize": "^2.0.0", + "esm": "^3.2.25" + } + }, + "@digitalbazaar/did-method-key": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@digitalbazaar/did-method-key/-/did-method-key-2.0.0.tgz", + "integrity": "sha512-540CsZUesyRxku72Dkl7BC/h26iFko/X+NXx1D2KQpi8cSgb6gs1PqvXEAUThszGq1y2p/6ByDKYAJhlaAG8VQ==", + "requires": { + "@digitalbazaar/did-io": "^1.0.0", + "@digitalbazaar/ed25519-verification-key-2020": "^3.0.0", + "@digitalbazaar/x25519-key-agreement-key-2019": "^5.1.1", + "@digitalbazaar/x25519-key-agreement-key-2020": "^2.0.0", + "esm": "^3.2.25" + } + }, + "@digitalbazaar/ed25519-verification-key-2020": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@digitalbazaar/ed25519-verification-key-2020/-/ed25519-verification-key-2020-3.2.0.tgz", + "integrity": "sha512-A+17sRJ+rRNuN6yG0zZMucbVUpxUkBRLTb503caoJv0GB5853HXSaZbl83kKl9LCh02ExbQWxD6o/aqeR012uA==", + "requires": { + "@stablelib/ed25519": "^1.0.1", + "base58-universal": "^1.0.0", + "base64url-universal": "^1.1.0", + "crypto-ld": "^5.1.0", + "esm": "^3.2.25" + } + }, + "@digitalbazaar/lru-memoize": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@digitalbazaar/lru-memoize/-/lru-memoize-2.1.0.tgz", + "integrity": "sha512-0M/olrKC+FQzN6ltu+JJD0YbN4oMCTDpiV9A91QYpilU0vxWCBJMx41XT9YteB8yCtFQZWd3Ky33ILVWy2/LFA==", + "requires": { + "esm": "^3.2.25", + "lru-cache": "^6.0.0" + } + }, + "@digitalbazaar/x25519-key-agreement-key-2019": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@digitalbazaar/x25519-key-agreement-key-2019/-/x25519-key-agreement-key-2019-5.1.1.tgz", + "integrity": "sha512-LGsPMbGXV3wqC6yl2fyCaEl5CCW0hGQ9yYXBYqhiExgjNiLdkF1FjNBK+IjW2p5U0ysixI9NuWiPn6SjBEIkjA==", + "requires": { + "base58-universal": "^1.0.0", + "crypto-ld": "^5.0.0", + "ed2curve": "^0.3.0", + "esm": "^3.2.25", + "tweetnacl": "^1.0.3" + } + }, + "@digitalbazaar/x25519-key-agreement-key-2020": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@digitalbazaar/x25519-key-agreement-key-2020/-/x25519-key-agreement-key-2020-2.0.0.tgz", + "integrity": "sha512-VI39m0nvQlOXi4Q3w+2YFj7XvWN145KNoZMgEWFOaA/PaIjswniKSgbY98sHtMGfN/JCqQlVeYnCMuheP5H0WQ==", + "requires": { + "base58-universal": "^1.0.0", + "crypto-ld": "^5.0.0", + "ed2curve": "^0.3.0", + "esm": "^3.2.25", + "tweetnacl": "^1.0.3" + } + }, + "@identity.com/did-io-driver-sol": { + "version": "file:../sol-did/drivers/did-io", + "requires": { + "@digitalbazaar/lru-memoize": "^2.1.0", + "@identity.com/sol-did-client": "^0.2.1", + "@solana/web3.js": "^1.31.0" + }, + "dependencies": { + "101": { + "version": "1.6.3", + "requires": { + "clone": "^1.0.2", + "deep-eql": "^0.1.3", + "keypather": "^1.10.2" + } + }, + "@babel/code-frame": { + "version": "7.12.13", + "requires": { + "@babel/highlight": "^7.12.13" + } + }, + "@babel/compat-data": { + "version": "7.13.15" + }, + "@babel/core": { + "version": "7.13.15", + "requires": { + "@babel/code-frame": "^7.12.13", + "@babel/generator": "^7.13.9", + "@babel/helper-compilation-targets": "^7.13.13", + "@babel/helper-module-transforms": "^7.13.14", + "@babel/helpers": "^7.13.10", + "@babel/parser": "^7.13.15", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.15", + "@babel/types": "^7.13.14", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.1.2", + "semver": "^6.3.0", + "source-map": "^0.5.0" + }, + "dependencies": { + "source-map": { + "version": "0.5.7" + } + } + }, + "@babel/generator": { + "version": "7.13.9", + "requires": { + "@babel/types": "^7.13.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + }, + "dependencies": { + "source-map": { + "version": "0.5.7" + } + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.12.13", + "requires": { + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.12.13", + "requires": { + "@babel/helper-explode-assignable-expression": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.13.13", + "requires": { + "@babel/compat-data": "^7.13.12", + "@babel/helper-validator-option": "^7.12.17", + "browserslist": "^4.14.5", + "semver": "^6.3.0" + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.13.11", + "requires": { + "@babel/helper-function-name": "^7.12.13", + "@babel/helper-member-expression-to-functions": "^7.13.0", + "@babel/helper-optimise-call-expression": "^7.12.13", + "@babel/helper-replace-supers": "^7.13.0", + "@babel/helper-split-export-declaration": "^7.12.13" + } + }, + "@babel/helper-create-regexp-features-plugin": { + "version": "7.12.17", + "requires": { + "@babel/helper-annotate-as-pure": "^7.12.13", + "regexpu-core": "^4.7.1" + } + }, + "@babel/helper-define-polyfill-provider": { + "version": "0.2.0", + "requires": { + "@babel/helper-compilation-targets": "^7.13.0", + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/traverse": "^7.13.0", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2", + "semver": "^6.1.2" + } + }, + "@babel/helper-explode-assignable-expression": { + "version": "7.13.0", + "requires": { + "@babel/types": "^7.13.0" + } + }, + "@babel/helper-function-name": { + "version": "7.12.13", + "requires": { + "@babel/helper-get-function-arity": "^7.12.13", + "@babel/template": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.12.13", + "requires": { + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.13.0", + "requires": { + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.13.12", + "requires": { + "@babel/types": "^7.13.12" + } + }, + "@babel/helper-module-imports": { + "version": "7.13.12", + "requires": { + "@babel/types": "^7.13.12" + } + }, + "@babel/helper-module-transforms": { + "version": "7.13.14", + "requires": { + "@babel/helper-module-imports": "^7.13.12", + "@babel/helper-replace-supers": "^7.13.12", + "@babel/helper-simple-access": "^7.13.12", + "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/helper-validator-identifier": "^7.12.11", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.13", + "@babel/types": "^7.13.14" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.12.13", + "requires": { + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.13.0.tgz", + "integrity": "sha512-ZPafIPSwzUlAoWT8DKs1W2VyF2gOWthGd5NGFMsBcMMol+ZhK+EQY/e6V96poa6PA/Bh+C9plWN0hXO1uB8AfQ==" + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.13.0", + "requires": { + "@babel/helper-annotate-as-pure": "^7.12.13", + "@babel/helper-wrap-function": "^7.13.0", + "@babel/types": "^7.13.0" + } + }, + "@babel/helper-replace-supers": { + "version": "7.13.12", + "requires": { + "@babel/helper-member-expression-to-functions": "^7.13.12", + "@babel/helper-optimise-call-expression": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.12" + } + }, + "@babel/helper-simple-access": { + "version": "7.13.12", + "requires": { + "@babel/types": "^7.13.12" + } + }, + "@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.12.1", + "requires": { + "@babel/types": "^7.12.1" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.12.13", + "requires": { + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.12.11" + }, + "@babel/helper-validator-option": { + "version": "7.12.17" + }, + "@babel/helper-wrap-function": { + "version": "7.13.0", + "requires": { + "@babel/helper-function-name": "^7.12.13", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0" + } + }, + "@babel/helpers": { + "version": "7.13.10", + "requires": { + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0" + } + }, + "@babel/highlight": { + "version": "7.13.10", + "requires": { + "@babel/helper-validator-identifier": "^7.12.11", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3" + }, + "supports-color": { + "version": "5.5.0", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "@babel/parser": { + "version": "7.13.15", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.13.15.tgz", + "integrity": "sha512-b9COtcAlVEQljy/9fbcMHpG+UIW9ReF+gpaxDHTlZd0c6/UU9ng8zdySAW9sRTzpvcdCHn6bUcbuYUgGzLAWVQ==" + }, + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.13.12", + "requires": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", + "@babel/plugin-proposal-optional-chaining": "^7.13.12" + } + }, + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.13.15", + "requires": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-remap-async-to-generator": "^7.13.0", + "@babel/plugin-syntax-async-generators": "^7.8.4" + } + }, + "@babel/plugin-proposal-class-properties": { + "version": "7.13.0", + "requires": { + "@babel/helper-create-class-features-plugin": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0" + } + }, + "@babel/plugin-proposal-dynamic-import": { + "version": "7.13.8", + "requires": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + } + }, + "@babel/plugin-proposal-export-namespace-from": { + "version": "7.12.13", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + } + }, + "@babel/plugin-proposal-json-strings": { + "version": "7.13.8", + "requires": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-json-strings": "^7.8.3" + } + }, + "@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.13.8", + "requires": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + } + }, + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.13.8", + "requires": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + } + }, + "@babel/plugin-proposal-numeric-separator": { + "version": "7.12.13", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.13.8", + "requires": { + "@babel/compat-data": "^7.13.8", + "@babel/helper-compilation-targets": "^7.13.8", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.13.0" + } + }, + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.13.8", + "requires": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + } + }, + "@babel/plugin-proposal-optional-chaining": { + "version": "7.13.12", + "requires": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + } + }, + "@babel/plugin-proposal-private-methods": { + "version": "7.13.0", + "requires": { + "@babel/helper-create-class-features-plugin": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0" + } + }, + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.12.13", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.12.13", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.13.0", + "requires": { + "@babel/helper-plugin-utils": "^7.13.0" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.13.0", + "requires": { + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-remap-async-to-generator": "^7.13.0" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.12.13", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.12.13", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.13.0", + "requires": { + "@babel/helper-annotate-as-pure": "^7.12.13", + "@babel/helper-function-name": "^7.12.13", + "@babel/helper-optimise-call-expression": "^7.12.13", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-replace-supers": "^7.13.0", + "@babel/helper-split-export-declaration": "^7.12.13", + "globals": "^11.1.0" + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.13.0", + "requires": { + "@babel/helper-plugin-utils": "^7.13.0" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.13.0", + "requires": { + "@babel/helper-plugin-utils": "^7.13.0" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.12.13", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.12.13", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.12.13", + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.13.0", + "requires": { + "@babel/helper-plugin-utils": "^7.13.0" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.12.13", + "requires": { + "@babel/helper-function-name": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.12.13", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.12.13", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.13.0", + "requires": { + "@babel/helper-module-transforms": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.13.8", + "requires": { + "@babel/helper-module-transforms": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-simple-access": "^7.12.13", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.13.8", + "requires": { + "@babel/helper-hoist-variables": "^7.13.0", + "@babel/helper-module-transforms": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-validator-identifier": "^7.12.11", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.13.0", + "requires": { + "@babel/helper-module-transforms": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.12.13", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.12.13" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.12.13", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.12.13", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-replace-supers": "^7.12.13" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.13.0", + "requires": { + "@babel/helper-plugin-utils": "^7.13.0" + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.12.13", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.13.15", + "requires": { + "regenerator-transform": "^0.14.2" + } + }, + "@babel/plugin-transform-reserved-words": { + "version": "7.12.13", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.12.13", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.13.0", + "requires": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.12.13", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.13.0", + "requires": { + "@babel/helper-plugin-utils": "^7.13.0" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.12.13", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-unicode-escapes": { + "version": "7.12.13", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.12.13", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/preset-env": { + "version": "7.13.15", + "requires": { + "@babel/compat-data": "^7.13.15", + "@babel/helper-compilation-targets": "^7.13.13", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-validator-option": "^7.12.17", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.13.12", + "@babel/plugin-proposal-async-generator-functions": "^7.13.15", + "@babel/plugin-proposal-class-properties": "^7.13.0", + "@babel/plugin-proposal-dynamic-import": "^7.13.8", + "@babel/plugin-proposal-export-namespace-from": "^7.12.13", + "@babel/plugin-proposal-json-strings": "^7.13.8", + "@babel/plugin-proposal-logical-assignment-operators": "^7.13.8", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.13.8", + "@babel/plugin-proposal-numeric-separator": "^7.12.13", + "@babel/plugin-proposal-object-rest-spread": "^7.13.8", + "@babel/plugin-proposal-optional-catch-binding": "^7.13.8", + "@babel/plugin-proposal-optional-chaining": "^7.13.12", + "@babel/plugin-proposal-private-methods": "^7.13.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.12.13", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-top-level-await": "^7.12.13", + "@babel/plugin-transform-arrow-functions": "^7.13.0", + "@babel/plugin-transform-async-to-generator": "^7.13.0", + "@babel/plugin-transform-block-scoped-functions": "^7.12.13", + "@babel/plugin-transform-block-scoping": "^7.12.13", + "@babel/plugin-transform-classes": "^7.13.0", + "@babel/plugin-transform-computed-properties": "^7.13.0", + "@babel/plugin-transform-destructuring": "^7.13.0", + "@babel/plugin-transform-dotall-regex": "^7.12.13", + "@babel/plugin-transform-duplicate-keys": "^7.12.13", + "@babel/plugin-transform-exponentiation-operator": "^7.12.13", + "@babel/plugin-transform-for-of": "^7.13.0", + "@babel/plugin-transform-function-name": "^7.12.13", + "@babel/plugin-transform-literals": "^7.12.13", + "@babel/plugin-transform-member-expression-literals": "^7.12.13", + "@babel/plugin-transform-modules-amd": "^7.13.0", + "@babel/plugin-transform-modules-commonjs": "^7.13.8", + "@babel/plugin-transform-modules-systemjs": "^7.13.8", + "@babel/plugin-transform-modules-umd": "^7.13.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.12.13", + "@babel/plugin-transform-new-target": "^7.12.13", + "@babel/plugin-transform-object-super": "^7.12.13", + "@babel/plugin-transform-parameters": "^7.13.0", + "@babel/plugin-transform-property-literals": "^7.12.13", + "@babel/plugin-transform-regenerator": "^7.13.15", + "@babel/plugin-transform-reserved-words": "^7.12.13", + "@babel/plugin-transform-shorthand-properties": "^7.12.13", + "@babel/plugin-transform-spread": "^7.13.0", + "@babel/plugin-transform-sticky-regex": "^7.12.13", + "@babel/plugin-transform-template-literals": "^7.13.0", + "@babel/plugin-transform-typeof-symbol": "^7.12.13", + "@babel/plugin-transform-unicode-escapes": "^7.12.13", + "@babel/plugin-transform-unicode-regex": "^7.12.13", + "@babel/preset-modules": "^0.1.4", + "@babel/types": "^7.13.14", + "babel-plugin-polyfill-corejs2": "^0.2.0", + "babel-plugin-polyfill-corejs3": "^0.2.0", + "babel-plugin-polyfill-regenerator": "^0.2.0", + "core-js-compat": "^3.9.0", + "semver": "^6.3.0" + }, + "dependencies": { + "babel-plugin-polyfill-regenerator": { + "version": "0.2.0", + "requires": { + "@babel/helper-define-polyfill-provider": "^0.2.0" + } + } + } + }, + "@babel/preset-modules": { + "version": "0.1.4", + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + } + }, + "@babel/runtime": { + "version": "7.13.10", + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/runtime-corejs3": { + "version": "7.13.10", + "requires": { + "core-js-pure": "^3.0.0", + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/template": { + "version": "7.12.13", + "requires": { + "@babel/code-frame": "^7.12.13", + "@babel/parser": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "@babel/traverse": { + "version": "7.13.15", + "requires": { + "@babel/code-frame": "^7.12.13", + "@babel/generator": "^7.13.9", + "@babel/helper-function-name": "^7.12.13", + "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/parser": "^7.13.15", + "@babel/types": "^7.13.14", + "debug": "^4.1.0", + "globals": "^11.1.0" + } + }, + "@babel/types": { + "version": "7.13.14", + "requires": { + "@babel/helper-validator-identifier": "^7.12.11", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "@bcoe/v8-coverage": { + "version": "0.2.3" + }, + "@cnakazawa/watch": { + "version": "1.0.4", + "requires": { + "exec-sh": "^0.3.2", + "minimist": "^1.2.0" + } + }, + "@digitalbazaar/did-io": { + "version": "1.1.0", + "requires": { + "@digitalbazaar/lru-memoize": "^2.0.0", + "esm": "^3.2.25" + } + }, + "@digitalbazaar/did-method-key": { + "version": "2.0.0", + "requires": { + "@digitalbazaar/did-io": "^1.0.0", + "@digitalbazaar/ed25519-verification-key-2020": "^3.0.0", + "@digitalbazaar/x25519-key-agreement-key-2019": "^5.1.1", + "@digitalbazaar/x25519-key-agreement-key-2020": "^2.0.0", + "esm": "^3.2.25" + } + }, + "@digitalbazaar/ed25519-verification-key-2020": { + "version": "3.2.0", + "requires": { + "@stablelib/ed25519": "^1.0.1", + "base58-universal": "^1.0.0", + "base64url-universal": "^1.1.0", + "crypto-ld": "^5.1.0", + "esm": "^3.2.25" + } + }, + "@digitalbazaar/lru-memoize": { + "version": "2.1.0", + "requires": { + "esm": "^3.2.25", + "lru-cache": "^6.0.0" + } + }, + "@digitalbazaar/x25519-key-agreement-key-2019": { + "version": "5.1.1", + "requires": { + "base58-universal": "^1.0.0", + "crypto-ld": "^5.0.0", + "ed2curve": "^0.3.0", + "esm": "^3.2.25", + "tweetnacl": "^1.0.3" + } + }, + "@digitalbazaar/x25519-key-agreement-key-2020": { + "version": "2.0.0", + "requires": { + "base58-universal": "^1.0.0", + "crypto-ld": "^5.0.0", + "ed2curve": "^0.3.0", + "esm": "^3.2.25", + "tweetnacl": "^1.0.3" + } + }, + "@ethersproject/bytes": { + "version": "5.5.0", + "requires": { + "@ethersproject/logger": "^5.5.0" + } + }, + "@ethersproject/logger": { + "version": "5.5.0" + }, + "@ethersproject/sha2": { + "version": "5.5.0", + "requires": { + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "hash.js": "1.1.7" + } + }, + "@identity.com/sol-did-client": { + "version": "0.2.1", + "requires": { + "@solana/web3.js": "^1.21.0", + "bn.js": "^4.12.0", + "borsh": "^0.3.1", + "bs58": "^4.0.1", + "did-resolver": "^3.0.1", + "ramda": "^0.27.1" + }, + "dependencies": { + "@solana/web3.js": { + "version": "1.21.0", + "requires": { + "@babel/runtime": "^7.12.5", + "@solana/buffer-layout": "^3.0.0", + "bn.js": "^5.0.0", + "borsh": "^0.4.0", + "bs58": "^4.0.1", + "buffer": "6.0.1", + "crypto-hash": "^1.2.2", + "jayson": "^3.4.4", + "js-sha3": "^0.8.0", + "node-fetch": "^2.6.1", + "rpc-websockets": "^7.4.2", + "secp256k1": "^4.0.2", + "superstruct": "^0.14.2", + "tweetnacl": "^1.0.0" + }, + "dependencies": { + "bn.js": { + "version": "5.2.0" + }, + "borsh": { + "version": "0.4.0", + "requires": { + "@types/bn.js": "^4.11.5", + "bn.js": "^5.0.0", + "bs58": "^4.0.0", + "text-encoding-utf-8": "^1.0.2" + } + } + } + }, + "bn.js": { + "version": "4.12.0" + }, + "borsh": { + "version": "0.3.1", + "requires": { + "@types/bn.js": "^4.11.5", + "bn.js": "^5.0.0", + "bs58": "^4.0.0", + "text-encoding-utf-8": "^1.0.2" + }, + "dependencies": { + "bn.js": { + "version": "5.2.0" + } + } + } + } + }, + "@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "requires": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + } + }, + "@istanbuljs/schema": { + "version": "0.1.3" + }, + "@jest/console": { + "version": "25.5.0", + "requires": { + "@jest/types": "^25.5.0", + "chalk": "^3.0.0", + "jest-message-util": "^25.5.0", + "jest-util": "^25.5.0", + "slash": "^3.0.0" + } + }, + "@jest/core": { + "version": "25.5.4", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-25.5.4.tgz", + "integrity": "sha512-3uSo7laYxF00Dg/DMgbn4xMJKmDdWvZnf89n8Xj/5/AeQ2dOQmn6b6Hkj/MleyzZWXpwv+WSdYWl4cLsy2JsoA==", + "requires": { + "@jest/console": "^25.5.0", + "@jest/reporters": "^25.5.1", + "@jest/test-result": "^25.5.0", + "@jest/transform": "^25.5.1", + "@jest/types": "^25.5.0", + "ansi-escapes": "^4.2.1", + "chalk": "^3.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "jest-changed-files": "^25.5.0", + "jest-config": "^25.5.4", + "jest-haste-map": "^25.5.1", + "jest-message-util": "^25.5.0", + "jest-regex-util": "^25.2.6", + "jest-resolve": "^25.5.1", + "jest-resolve-dependencies": "^25.5.4", + "jest-runner": "^25.5.4", + "jest-runtime": "^25.5.4", + "jest-snapshot": "^25.5.1", + "jest-util": "^25.5.0", + "jest-validate": "^25.5.0", + "jest-watcher": "^25.5.0", + "micromatch": "^4.0.2", + "p-each-series": "^2.1.0", + "realpath-native": "^2.0.0", + "rimraf": "^3.0.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "@jest/environment": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-25.5.0.tgz", + "integrity": "sha512-U2VXPEqL07E/V7pSZMSQCvV5Ea4lqOlT+0ZFijl/i316cRMHvZ4qC+jBdryd+lmRetjQo0YIQr6cVPNxxK87mA==", + "requires": { + "@jest/fake-timers": "^25.5.0", + "@jest/types": "^25.5.0", + "jest-mock": "^25.5.0" + } + }, + "@jest/fake-timers": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-25.5.0.tgz", + "integrity": "sha512-9y2+uGnESw/oyOI3eww9yaxdZyHq7XvprfP/eeoCsjqKYts2yRlsHS/SgjPDV8FyMfn2nbMy8YzUk6nyvdLOpQ==", + "requires": { + "@jest/types": "^25.5.0", + "jest-message-util": "^25.5.0", + "jest-mock": "^25.5.0", + "jest-util": "^25.5.0", + "lolex": "^5.0.0" + } + }, + "@jest/globals": { + "version": "25.5.2", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-25.5.2.tgz", + "integrity": "sha512-AgAS/Ny7Q2RCIj5kZ+0MuKM1wbF0WMLxbCVl/GOMoCNbODRdJ541IxJ98xnZdVSZXivKpJlNPIWa3QmY0l4CXA==", + "requires": { + "@jest/environment": "^25.5.0", + "@jest/types": "^25.5.0", + "expect": "^25.5.0" + } + }, + "@jest/reporters": { + "version": "25.5.1", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-25.5.1.tgz", + "integrity": "sha512-3jbd8pPDTuhYJ7vqiHXbSwTJQNavczPs+f1kRprRDxETeE3u6srJ+f0NPuwvOmk+lmunZzPkYWIFZDLHQPkviw==", + "requires": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^25.5.0", + "@jest/test-result": "^25.5.0", + "@jest/transform": "^25.5.1", + "@jest/types": "^25.5.0", + "chalk": "^3.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.2", + "graceful-fs": "^4.2.4", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^4.0.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.0.2", + "jest-haste-map": "^25.5.1", + "jest-resolve": "^25.5.1", + "jest-util": "^25.5.0", + "jest-worker": "^25.5.0", + "node-notifier": "^6.0.0", + "slash": "^3.0.0", + "source-map": "^0.6.0", + "string-length": "^3.1.0", + "terminal-link": "^2.0.0", + "v8-to-istanbul": "^4.1.3" + } + }, + "@jest/source-map": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-25.5.0.tgz", + "integrity": "sha512-eIGx0xN12yVpMcPaVpjXPnn3N30QGJCJQSkEDUt9x1fI1Gdvb07Ml6K5iN2hG7NmMP6FDmtPEssE3z6doOYUwQ==", + "requires": { + "callsites": "^3.0.0", + "graceful-fs": "^4.2.4", + "source-map": "^0.6.0" + } + }, + "@jest/test-result": { + "version": "25.5.0", + "requires": { + "@jest/console": "^25.5.0", + "@jest/types": "^25.5.0", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + } + }, + "@jest/test-sequencer": { + "version": "25.5.4", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-25.5.4.tgz", + "integrity": "sha512-pTJGEkSeg1EkCO2YWq6hbFvKNXk8ejqlxiOg1jBNLnWrgXOkdY6UmqZpwGFXNnRt9B8nO1uWMzLLZ4eCmhkPNA==", + "requires": { + "@jest/test-result": "^25.5.0", + "graceful-fs": "^4.2.4", + "jest-haste-map": "^25.5.1", + "jest-runner": "^25.5.4", + "jest-runtime": "^25.5.4" + } + }, + "@jest/transform": { + "version": "25.5.1", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-25.5.1.tgz", + "integrity": "sha512-Y8CEoVwXb4QwA6Y/9uDkn0Xfz0finGkieuV0xkdF9UtZGJeLukD5nLkaVrVsODB1ojRWlaoD0AJZpVHCSnJEvg==", + "requires": { + "@babel/core": "^7.1.0", + "@jest/types": "^25.5.0", + "babel-plugin-istanbul": "^6.0.0", + "chalk": "^3.0.0", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.2.4", + "jest-haste-map": "^25.5.1", + "jest-regex-util": "^25.2.6", + "jest-util": "^25.5.0", + "micromatch": "^4.0.2", + "pirates": "^4.0.1", + "realpath-native": "^2.0.0", + "slash": "^3.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "^3.0.0" + } + }, + "@jest/types": { + "version": "25.5.0", + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^15.0.0", + "chalk": "^3.0.0" + } + }, + "@rollup/plugin-babel": { + "version": "5.3.0", + "requires": { + "@babel/helper-module-imports": "^7.10.4", + "@rollup/pluginutils": "^3.1.0" + } + }, + "@rollup/plugin-commonjs": { + "version": "11.1.0", + "requires": { + "@rollup/pluginutils": "^3.0.8", + "commondir": "^1.0.1", + "estree-walker": "^1.0.1", + "glob": "^7.1.2", + "is-reference": "^1.1.2", + "magic-string": "^0.25.2", + "resolve": "^1.11.0" + } + }, + "@rollup/plugin-json": { + "version": "4.1.0", + "requires": { + "@rollup/pluginutils": "^3.0.8" + } + }, + "@rollup/plugin-node-resolve": { + "version": "9.0.0", + "requires": { + "@rollup/pluginutils": "^3.1.0", + "@types/resolve": "1.17.1", + "builtin-modules": "^3.1.0", + "deepmerge": "^4.2.2", + "is-module": "^1.0.0", + "resolve": "^1.17.0" + } + }, + "@rollup/plugin-replace": { + "version": "2.4.2", + "requires": { + "@rollup/pluginutils": "^3.1.0", + "magic-string": "^0.25.7" + } + }, + "@rollup/pluginutils": { + "version": "3.1.0", + "requires": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + }, + "dependencies": { + "@types/estree": { + "version": "0.0.39" + } + } + }, + "@sinonjs/commons": { + "version": "1.8.3", + "requires": { + "type-detect": "4.0.8" + }, + "dependencies": { + "type-detect": { + "version": "4.0.8" + } + } + }, + "@solana/buffer-layout": { + "version": "3.0.0", + "requires": { + "buffer": "~6.0.3" + }, + "dependencies": { + "buffer": { + "version": "6.0.3", + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + } + } + }, + "@solana/web3.js": { + "version": "1.31.0", + "requires": { + "@babel/runtime": "^7.12.5", + "@ethersproject/sha2": "^5.5.0", + "@solana/buffer-layout": "^3.0.0", + "bn.js": "^5.0.0", + "borsh": "^0.4.0", + "bs58": "^4.0.1", + "buffer": "6.0.1", + "cross-fetch": "^3.1.4", + "jayson": "^3.4.4", + "js-sha3": "^0.8.0", + "rpc-websockets": "^7.4.2", + "secp256k1": "^4.0.2", + "superstruct": "^0.14.2", + "tweetnacl": "^1.0.0" + } + }, + "@stablelib/binary": { + "version": "1.0.1", + "requires": { + "@stablelib/int": "^1.0.1" + } + }, + "@stablelib/ed25519": { + "version": "1.0.2", + "requires": { + "@stablelib/random": "^1.0.1", + "@stablelib/sha512": "^1.0.1", + "@stablelib/wipe": "^1.0.1" + } + }, + "@stablelib/hash": { + "version": "1.0.1" + }, + "@stablelib/int": { + "version": "1.0.1" + }, + "@stablelib/random": { + "version": "1.0.1", + "requires": { + "@stablelib/binary": "^1.0.1", + "@stablelib/wipe": "^1.0.1" + } + }, + "@stablelib/sha512": { + "version": "1.0.1", + "requires": { + "@stablelib/binary": "^1.0.1", + "@stablelib/hash": "^1.0.1", + "@stablelib/wipe": "^1.0.1" + } + }, + "@stablelib/wipe": { + "version": "1.0.1" + }, + "@types/babel__core": { + "version": "7.1.14", + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "@types/babel__generator": { + "version": "7.6.2", + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@types/babel__template": { + "version": "7.4.0", + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@types/babel__traverse": { + "version": "7.11.1", + "requires": { + "@babel/types": "^7.3.0" + } + }, + "@types/bn.js": { + "version": "4.11.6", + "requires": { + "@types/node": "*" + } + }, + "@types/connect": { + "version": "3.4.34", + "requires": { + "@types/node": "*" + } + }, + "@types/eslint-visitor-keys": { + "version": "1.0.0" + }, + "@types/estree": { + "version": "0.0.47" + }, + "@types/express-serve-static-core": { + "version": "4.17.19", + "requires": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*" + } + }, + "@types/graceful-fs": { + "version": "4.1.5", + "requires": { + "@types/node": "*" + } + }, + "@types/istanbul-lib-coverage": { + "version": "2.0.3" + }, + "@types/istanbul-lib-report": { + "version": "3.0.0", + "requires": { + "@types/istanbul-lib-coverage": "*" + } + }, + "@types/istanbul-reports": { + "version": "1.1.2", + "requires": { + "@types/istanbul-lib-coverage": "*", + "@types/istanbul-lib-report": "*" + } + }, + "@types/jest": { + "version": "25.2.3", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-25.2.3.tgz", + "integrity": "sha512-JXc1nK/tXHiDhV55dvfzqtmP4S3sy3T3ouV2tkViZgxY/zeUkcpQcQPGRlgF4KmWzWW5oiWYSZwtCB+2RsE4Fw==", + "requires": { + "jest-diff": "^25.2.1", + "pretty-format": "^25.2.1" + } + }, + "@types/json-schema": { + "version": "7.0.7" + }, + "@types/json5": { + "version": "0.0.29" + }, + "@types/lodash": { + "version": "4.14.168" + }, + "@types/node": { + "version": "14.14.41" + }, + "@types/normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==" + }, + "@types/parse-json": { + "version": "4.0.0" + }, + "@types/prettier": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-1.19.1.tgz", + "integrity": "sha512-5qOlnZscTn4xxM5MeGXAMOsIOIKIbh9e85zJWfBRVPlRMEVawzoPhINYbRGkBZCI8LxvBe7tJCdWiarA99OZfQ==" + }, + "@types/qs": { + "version": "6.9.6" + }, + "@types/range-parser": { + "version": "1.2.3" + }, + "@types/resolve": { + "version": "1.17.1", + "requires": { + "@types/node": "*" + } + }, + "@types/stack-utils": { + "version": "1.0.1" + }, + "@types/yargs": { + "version": "15.0.13", + "requires": { + "@types/yargs-parser": "*" + } + }, + "@types/yargs-parser": { + "version": "20.2.0" + }, + "@typescript-eslint/eslint-plugin": { + "version": "2.34.0", + "requires": { + "@typescript-eslint/experimental-utils": "2.34.0", + "functional-red-black-tree": "^1.0.1", + "regexpp": "^3.0.0", + "tsutils": "^3.17.1" + }, + "dependencies": { + "regexpp": { + "version": "3.1.0" + } + } + }, + "@typescript-eslint/experimental-utils": { + "version": "2.34.0", + "requires": { + "@types/json-schema": "^7.0.3", + "@typescript-eslint/typescript-estree": "2.34.0", + "eslint-scope": "^5.0.0", + "eslint-utils": "^2.0.0" + }, + "dependencies": { + "eslint-utils": { + "version": "2.1.0", + "requires": { + "eslint-visitor-keys": "^1.1.0" + } + } + } + }, + "@typescript-eslint/parser": { + "version": "2.34.0", + "requires": { + "@types/eslint-visitor-keys": "^1.0.0", + "@typescript-eslint/experimental-utils": "2.34.0", + "@typescript-eslint/typescript-estree": "2.34.0", + "eslint-visitor-keys": "^1.1.0" + } + }, + "@typescript-eslint/typescript-estree": { + "version": "2.34.0", + "requires": { + "debug": "^4.1.1", + "eslint-visitor-keys": "^1.1.0", + "glob": "^7.1.6", + "is-glob": "^4.0.1", + "lodash": "^4.17.15", + "semver": "^7.3.2", + "tsutils": "^3.17.1" + }, + "dependencies": { + "semver": { + "version": "7.3.5", + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "JSONStream": { + "version": "1.3.5", + "requires": { + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" + } + }, + "abab": { + "version": "2.0.5" + }, + "acorn": { + "version": "7.4.1" + }, + "acorn-globals": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.4.tgz", + "integrity": "sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==", + "requires": { + "acorn": "^6.0.1", + "acorn-walk": "^6.0.1" + }, + "dependencies": { + "acorn": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==" + } + } + }, + "acorn-jsx": { + "version": "5.3.1" + }, + "acorn-walk": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.2.0.tgz", + "integrity": "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==" + }, + "ajv": { + "version": "6.12.6", + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ansi-colors": { + "version": "4.1.1" + }, + "ansi-escapes": { + "version": "4.3.2", + "requires": { + "type-fest": "^0.21.3" + }, + "dependencies": { + "type-fest": { + "version": "0.21.3" + } + } + }, + "ansi-regex": { + "version": "5.0.1" + }, + "ansi-styles": { + "version": "4.3.0", + "requires": { + "color-convert": "^2.0.1" + } + }, + "anymatch": { + "version": "3.1.2", + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "argparse": { + "version": "1.0.10", + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "aria-query": { + "version": "4.2.2", + "requires": { + "@babel/runtime": "^7.10.2", + "@babel/runtime-corejs3": "^7.10.2" + } + }, + "arr-diff": { + "version": "4.0.0" + }, + "arr-flatten": { + "version": "1.1.0" + }, + "arr-union": { + "version": "3.1.0" + }, + "array-equal": { + "version": "1.0.0" + }, + "array-includes": { + "version": "3.1.3", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.2", + "get-intrinsic": "^1.1.1", + "is-string": "^1.0.5" + } + }, + "array-unique": { + "version": "0.3.2" + }, + "array.prototype.flat": { + "version": "1.2.4", + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.1" + } + }, + "array.prototype.flatmap": { + "version": "1.2.4", + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.1", + "function-bind": "^1.1.1" + } + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "assert-args": { + "version": "1.2.1", + "requires": { + "101": "^1.2.0", + "compound-subject": "0.0.1", + "debug": "^2.2.0", + "get-prototype-of": "0.0.0", + "is-capitalized": "^1.0.0", + "is-class": "0.0.4" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0" + } + } + }, + "assert-plus": { + "version": "1.0.0" + }, + "assign-symbols": { + "version": "1.0.0" + }, + "ast-types-flow": { + "version": "0.0.7" + }, + "astral-regex": { + "version": "1.0.0" + }, + "asynckit": { + "version": "0.4.0" + }, + "asyncro": { + "version": "3.0.0" + }, + "at-least-node": { + "version": "1.0.0" + }, + "atob": { + "version": "2.1.2" + }, + "aws-sign2": { + "version": "0.7.0" + }, + "aws4": { + "version": "1.11.0" + }, + "axe-core": { + "version": "4.1.4" + }, + "axobject-query": { + "version": "2.2.0" + }, + "babel-eslint": { + "version": "10.1.0", + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.7.0", + "@babel/traverse": "^7.7.0", + "@babel/types": "^7.7.0", + "eslint-visitor-keys": "^1.0.0", + "resolve": "^1.12.0" + } + }, + "babel-jest": { + "version": "25.5.1", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-25.5.1.tgz", + "integrity": "sha512-9dA9+GmMjIzgPnYtkhBg73gOo/RHqPmLruP3BaGL4KEX3Dwz6pI8auSN8G8+iuEG90+GSswyKvslN+JYSaacaQ==", + "requires": { + "@jest/transform": "^25.5.1", + "@jest/types": "^25.5.0", + "@types/babel__core": "^7.1.7", + "babel-plugin-istanbul": "^6.0.0", + "babel-preset-jest": "^25.5.0", + "chalk": "^3.0.0", + "graceful-fs": "^4.2.4", + "slash": "^3.0.0" + } + }, + "babel-plugin-annotate-pure-calls": { + "version": "0.4.0" + }, + "babel-plugin-dev-expression": { + "version": "0.2.2" + }, + "babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "requires": { + "object.assign": "^4.1.0" + } + }, + "babel-plugin-istanbul": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz", + "integrity": "sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^4.0.0", + "test-exclude": "^6.0.0" + } + }, + "babel-plugin-jest-hoist": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-25.5.0.tgz", + "integrity": "sha512-u+/W+WAjMlvoocYGTwthAiQSxDcJAyHpQ6oWlHdFZaaN+Rlk8Q7iiwDPg2lN/FyJtAYnKjFxbn7xus4HCFkg5g==", + "requires": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__traverse": "^7.0.6" + } + }, + "babel-plugin-macros": { + "version": "2.8.0", + "requires": { + "@babel/runtime": "^7.7.2", + "cosmiconfig": "^6.0.0", + "resolve": "^1.12.0" + } + }, + "babel-plugin-polyfill-corejs2": { + "version": "0.2.0", + "requires": { + "@babel/compat-data": "^7.13.11", + "@babel/helper-define-polyfill-provider": "^0.2.0", + "semver": "^6.1.1" + } + }, + "babel-plugin-polyfill-corejs3": { + "version": "0.2.0", + "requires": { + "@babel/helper-define-polyfill-provider": "^0.2.0", + "core-js-compat": "^3.9.1" + } + }, + "babel-plugin-polyfill-regenerator": { + "version": "0.0.4", + "requires": { + "@babel/helper-define-polyfill-provider": "^0.0.3" + }, + "dependencies": { + "@babel/helper-define-polyfill-provider": { + "version": "0.0.3", + "requires": { + "@babel/helper-compilation-targets": "^7.10.4", + "@babel/helper-module-imports": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/traverse": "^7.11.5", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2", + "semver": "^6.1.2" + } + } + } + }, + "babel-plugin-transform-rename-import": { + "version": "2.3.0" + }, + "babel-preset-current-node-syntax": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-0.1.4.tgz", + "integrity": "sha512-5/INNCYhUGqw7VbVjT/hb3ucjgkVHKXY7lX3ZjlN4gm565VyFmJUrJ/h+h16ECVB38R/9SF6aACydpKMLZ/c9w==", + "requires": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.8.3", + "@babel/plugin-syntax-import-meta": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + } + }, + "babel-preset-jest": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-25.5.0.tgz", + "integrity": "sha512-8ZczygctQkBU+63DtSOKGh7tFL0CeCuz+1ieud9lJ1WPQ9O6A1a/r+LGn6Y705PA6whHQ3T1XuB/PmpfNYf8Fw==", + "requires": { + "babel-plugin-jest-hoist": "^25.5.0", + "babel-preset-current-node-syntax": "^0.1.2" + } + }, + "balanced-match": { + "version": "1.0.2" + }, + "base": { + "version": "0.11.2", + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "requires": { + "is-descriptor": "^1.0.0" + } + } + } + }, + "base-x": { + "version": "3.0.8", + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "base58-universal": { + "version": "1.0.0", + "requires": { + "esm": "^3.2.25" + } + }, + "base64-js": { + "version": "1.5.1" + }, + "base64url": { + "version": "3.0.1" + }, + "base64url-universal": { + "version": "1.1.0", + "requires": { + "base64url": "^3.0.0" + } + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "requires": { + "tweetnacl": "^0.14.3" + }, + "dependencies": { + "tweetnacl": { + "version": "0.14.5" + } + } + }, + "bn.js": { + "version": "5.2.0" + }, + "borsh": { + "version": "0.4.0", + "requires": { + "@types/bn.js": "^4.11.5", + "bn.js": "^5.0.0", + "bs58": "^4.0.0", + "text-encoding-utf-8": "^1.0.2" + } + }, + "brace-expansion": { + "version": "1.1.11", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "requires": { + "fill-range": "^7.0.1" + } + }, + "brorand": { + "version": "1.1.0" + }, + "browser-process-hrtime": { + "version": "1.0.0" + }, + "browser-resolve": { + "version": "1.11.3", + "requires": { + "resolve": "1.1.7" + }, + "dependencies": { + "resolve": { + "version": "1.1.7" + } + } + }, + "browserslist": { + "version": "4.16.4", + "requires": { + "caniuse-lite": "^1.0.30001208", + "colorette": "^1.2.2", + "electron-to-chromium": "^1.3.712", + "escalade": "^3.1.1", + "node-releases": "^1.1.71" + } + }, + "bs-logger": { + "version": "0.2.6", + "requires": { + "fast-json-stable-stringify": "2.x" + } + }, + "bs58": { + "version": "4.0.1", + "requires": { + "base-x": "^3.0.2" + } + }, + "bser": { + "version": "2.1.1", + "requires": { + "node-int64": "^0.4.0" + } + }, + "buffer": { + "version": "6.0.1", + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "buffer-from": { + "version": "1.1.1" + }, + "bufferutil": { + "version": "4.0.3", + "optional": true, + "requires": { + "node-gyp-build": "^4.2.0" + } + }, + "builtin-modules": { + "version": "3.2.0" + }, + "cache-base": { + "version": "1.0.1", + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, + "call-bind": { + "version": "1.0.2", + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "callsites": { + "version": "3.1.0" + }, + "camelcase": { + "version": "5.3.1" + }, + "caniuse-lite": { + "version": "1.0.30001209" + }, + "capture-exit": { + "version": "2.0.0", + "requires": { + "rsvp": "^4.8.4" + } + }, + "caseless": { + "version": "0.12.0" + }, + "chalk": { + "version": "3.0.0", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "chardet": { + "version": "0.7.0" + }, + "ci-info": { + "version": "2.0.0" + }, + "circular-json": { + "version": "0.5.9" + }, + "class-utils": { + "version": "0.3.6", + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + } + }, + "cli-cursor": { + "version": "3.1.0", + "requires": { + "restore-cursor": "^3.1.0" + } + }, + "cli-spinners": { + "version": "1.3.1" + }, + "cli-width": { + "version": "3.0.0" + }, + "cliui": { + "version": "6.0.0", + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + }, + "dependencies": { + "wrap-ansi": { + "version": "6.2.0", + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + } + } + }, + "clone": { + "version": "1.0.4" + }, + "co": { + "version": "4.6.0" + }, + "collect-v8-coverage": { + "version": "1.0.1" + }, + "collection-visit": { + "version": "1.0.0", + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color-convert": { + "version": "2.0.1", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4" + }, + "colorette": { + "version": "1.2.2" + }, + "combined-stream": { + "version": "1.0.8", + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "2.20.3" + }, + "commondir": { + "version": "1.0.1" + }, + "component-emitter": { + "version": "1.3.0" + }, + "compound-subject": { + "version": "0.0.1" + }, + "concat-map": { + "version": "0.0.1" + }, + "confusing-browser-globals": { + "version": "1.0.10" + }, + "contains-path": { + "version": "0.1.0" + }, + "convert-source-map": { + "version": "1.7.0", + "requires": { + "safe-buffer": "~5.1.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2" + } + } + }, + "copy-descriptor": { + "version": "0.1.1" + }, + "core-js-compat": { + "version": "3.10.1", + "requires": { + "browserslist": "^4.16.3", + "semver": "7.0.0" + }, + "dependencies": { + "semver": { + "version": "7.0.0" + } + } + }, + "core-js-pure": { + "version": "3.10.1" + }, + "core-util-is": { + "version": "1.0.2" + }, + "cosmiconfig": { + "version": "6.0.0", + "requires": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.7.2" + } + }, + "cross-fetch": { + "version": "3.1.4", + "requires": { + "node-fetch": "2.6.1" + } + }, + "cross-spawn": { + "version": "6.0.5", + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "dependencies": { + "semver": { + "version": "5.7.1" + } + } + }, + "crypto-hash": { + "version": "1.3.0" + }, + "crypto-ld": { + "version": "5.1.0" + }, + "cssom": { + "version": "0.4.4" + }, + "cssstyle": { + "version": "2.3.0", + "requires": { + "cssom": "~0.3.6" + }, + "dependencies": { + "cssom": { + "version": "0.3.8" + } + } + }, + "damerau-levenshtein": { + "version": "1.0.6" + }, + "dashdash": { + "version": "1.14.1", + "requires": { + "assert-plus": "^1.0.0" + } + }, + "data-urls": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", + "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", + "requires": { + "abab": "^2.0.0", + "whatwg-mimetype": "^2.2.0", + "whatwg-url": "^7.0.0" + } + }, + "debug": { + "version": "4.3.1", + "requires": { + "ms": "2.1.2" + } + }, + "decamelize": { + "version": "1.2.0" + }, + "decode-uri-component": { + "version": "0.2.0" + }, + "deep-eql": { + "version": "0.1.3", + "requires": { + "type-detect": "0.1.1" + } + }, + "deep-is": { + "version": "0.1.3" + }, + "deepmerge": { + "version": "4.2.2" + }, + "defaults": { + "version": "1.0.3", + "requires": { + "clone": "^1.0.2" + } + }, + "define-properties": { + "version": "1.1.3", + "requires": { + "object-keys": "^1.0.12" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + } + } + }, + "delayed-stream": { + "version": "1.0.0" + }, + "detect-newline": { + "version": "3.1.0" + }, + "did-resolver": { + "version": "3.1.5" + }, + "diff-sequences": { + "version": "25.2.6", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-25.2.6.tgz", + "integrity": "sha512-Hq8o7+6GaZeoFjtpgvRBUknSXNeJiCx7V9Fr94ZMljNiCr9n9L8H8aJqgWOQiDDGdyn29fRNcDdRVJ5fdyihfg==" + }, + "doctrine": { + "version": "1.5.0", + "requires": { + "esutils": "^2.0.2", + "isarray": "^1.0.0" + } + }, + "domexception": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", + "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", + "requires": { + "webidl-conversions": "^4.0.2" + } + }, + "ecc-jsbn": { + "version": "0.1.2", + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "ed2curve": { + "version": "0.3.0", + "requires": { + "tweetnacl": "1.x.x" + } + }, + "electron-to-chromium": { + "version": "1.3.717" + }, + "elliptic": { + "version": "6.5.4", + "requires": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0" + } + } + }, + "emoji-regex": { + "version": "8.0.0" + }, + "end-of-stream": { + "version": "1.4.4", + "requires": { + "once": "^1.4.0" + } + }, + "enquirer": { + "version": "2.3.6", + "requires": { + "ansi-colors": "^4.1.1" + } + }, + "error-ex": { + "version": "1.3.2", + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-abstract": { + "version": "1.18.0", + "requires": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.2", + "is-callable": "^1.2.3", + "is-negative-zero": "^2.0.1", + "is-regex": "^1.1.2", + "is-string": "^1.0.5", + "object-inspect": "^1.9.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "string.prototype.trimend": "^1.0.4", + "string.prototype.trimstart": "^1.0.4", + "unbox-primitive": "^1.0.0" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "es6-promise": { + "version": "4.2.8" + }, + "es6-promisify": { + "version": "5.0.0", + "requires": { + "es6-promise": "^4.0.3" + } + }, + "escalade": { + "version": "3.1.1" + }, + "escape-string-regexp": { + "version": "1.0.5" + }, + "escodegen": { + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", + "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", + "requires": { + "esprima": "^4.0.1", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + } + }, + "eslint": { + "version": "6.8.0", + "requires": { + "@babel/code-frame": "^7.0.0", + "ajv": "^6.10.0", + "chalk": "^2.1.0", + "cross-spawn": "^6.0.5", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "eslint-scope": "^5.0.0", + "eslint-utils": "^1.4.3", + "eslint-visitor-keys": "^1.1.0", + "espree": "^6.1.2", + "esquery": "^1.0.1", + "esutils": "^2.0.2", + "file-entry-cache": "^5.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.0.0", + "globals": "^12.1.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "inquirer": "^7.0.0", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.3.0", + "lodash": "^4.17.14", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "optionator": "^0.8.3", + "progress": "^2.0.0", + "regexpp": "^2.0.1", + "semver": "^6.1.2", + "strip-ansi": "^5.2.0", + "strip-json-comments": "^3.0.1", + "table": "^5.2.3", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0" + }, + "ansi-styles": { + "version": "3.2.1", + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3" + }, + "doctrine": { + "version": "3.0.0", + "requires": { + "esutils": "^2.0.2" + } + }, + "globals": { + "version": "12.4.0", + "requires": { + "type-fest": "^0.8.1" + } + }, + "strip-ansi": { + "version": "5.2.0", + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "supports-color": { + "version": "5.5.0", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "eslint-config-prettier": { + "version": "6.15.0", + "requires": { + "get-stdin": "^6.0.0" + } + }, + "eslint-config-react-app": { + "version": "5.2.1", + "requires": { + "confusing-browser-globals": "^1.0.9" + } + }, + "eslint-import-resolver-node": { + "version": "0.3.4", + "requires": { + "debug": "^2.6.9", + "resolve": "^1.13.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0" + } + } + }, + "eslint-module-utils": { + "version": "2.6.0", + "requires": { + "debug": "^2.6.9", + "pkg-dir": "^2.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "requires": { + "ms": "2.0.0" + } + }, + "find-up": { + "version": "2.1.0", + "requires": { + "locate-path": "^2.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "ms": { + "version": "2.0.0" + }, + "p-limit": { + "version": "1.3.0", + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0" + }, + "path-exists": { + "version": "3.0.0" + }, + "pkg-dir": { + "version": "2.0.0", + "requires": { + "find-up": "^2.1.0" + } + } + } + }, + "eslint-plugin-flowtype": { + "version": "3.13.0", + "requires": { + "lodash": "^4.17.15" + } + }, + "eslint-plugin-import": { + "version": "2.22.1", + "requires": { + "array-includes": "^3.1.1", + "array.prototype.flat": "^1.2.3", + "contains-path": "^0.1.0", + "debug": "^2.6.9", + "doctrine": "1.5.0", + "eslint-import-resolver-node": "^0.3.4", + "eslint-module-utils": "^2.6.0", + "has": "^1.0.3", + "minimatch": "^3.0.4", + "object.values": "^1.1.1", + "read-pkg-up": "^2.0.0", + "resolve": "^1.17.0", + "tsconfig-paths": "^3.9.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0" + } + } + }, + "eslint-plugin-jsx-a11y": { + "version": "6.4.1", + "requires": { + "@babel/runtime": "^7.11.2", + "aria-query": "^4.2.2", + "array-includes": "^3.1.1", + "ast-types-flow": "^0.0.7", + "axe-core": "^4.0.2", + "axobject-query": "^2.2.0", + "damerau-levenshtein": "^1.0.6", + "emoji-regex": "^9.0.0", + "has": "^1.0.3", + "jsx-ast-utils": "^3.1.0", + "language-tags": "^1.0.5" + }, + "dependencies": { + "emoji-regex": { + "version": "9.2.2" + } + } + }, + "eslint-plugin-prettier": { + "version": "3.4.0", + "requires": { + "prettier-linter-helpers": "^1.0.0" + } + }, + "eslint-plugin-react": { + "version": "7.23.2", + "requires": { + "array-includes": "^3.1.3", + "array.prototype.flatmap": "^1.2.4", + "doctrine": "^2.1.0", + "has": "^1.0.3", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.0.4", + "object.entries": "^1.1.3", + "object.fromentries": "^2.0.4", + "object.values": "^1.1.3", + "prop-types": "^15.7.2", + "resolve": "^2.0.0-next.3", + "string.prototype.matchall": "^4.0.4" + }, + "dependencies": { + "doctrine": { + "version": "2.1.0", + "requires": { + "esutils": "^2.0.2" + } + }, + "resolve": { + "version": "2.0.0-next.3", + "requires": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + } + } + } + }, + "eslint-plugin-react-hooks": { + "version": "2.5.1" + }, + "eslint-scope": { + "version": "5.1.1", + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "eslint-utils": { + "version": "1.4.3", + "requires": { + "eslint-visitor-keys": "^1.1.0" + } + }, + "eslint-visitor-keys": { + "version": "1.3.0" + }, + "esm": { + "version": "3.2.25" + }, + "espree": { + "version": "6.2.1", + "requires": { + "acorn": "^7.1.1", + "acorn-jsx": "^5.2.0", + "eslint-visitor-keys": "^1.1.0" + } + }, + "esprima": { + "version": "4.0.1" + }, + "esquery": { + "version": "1.4.0", + "requires": { + "estraverse": "^5.1.0" + }, + "dependencies": { + "estraverse": { + "version": "5.2.0" + } + } + }, + "esrecurse": { + "version": "4.3.0", + "requires": { + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.2.0" + } + } + }, + "estraverse": { + "version": "4.3.0" + }, + "estree-walker": { + "version": "1.0.1" + }, + "esutils": { + "version": "2.0.3" + }, + "eventemitter3": { + "version": "4.0.7" + }, + "exec-sh": { + "version": "0.3.6" + }, + "execa": { + "version": "4.1.0", + "requires": { + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "7.0.3", + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "path-key": { + "version": "3.1.1" + }, + "shebang-command": { + "version": "2.0.0", + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0" + }, + "which": { + "version": "2.0.2", + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "exit": { + "version": "0.1.2" + }, + "expand-brackets": { + "version": "2.1.4", + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0" + } + } + }, + "expect": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-25.5.0.tgz", + "integrity": "sha512-w7KAXo0+6qqZZhovCaBVPSIqQp7/UTcx4M9uKt2m6pd2VB1voyC8JizLRqeEqud3AAVP02g+hbErDu5gu64tlA==", + "requires": { + "@jest/types": "^25.5.0", + "ansi-styles": "^4.0.0", + "jest-get-type": "^25.2.6", + "jest-matcher-utils": "^25.5.0", + "jest-message-util": "^25.5.0", + "jest-regex-util": "^25.2.6" + } + }, + "extend": { + "version": "3.0.2" + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "external-editor": { + "version": "3.1.0", + "requires": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + } + }, + "extglob": { + "version": "2.0.4", + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "requires": { + "is-descriptor": "^1.0.0" + } + } + } + }, + "extsprintf": { + "version": "1.3.0" + }, + "eyes": { + "version": "0.1.8" + }, + "fast-deep-equal": { + "version": "3.1.3" + }, + "fast-diff": { + "version": "1.2.0" + }, + "fast-json-stable-stringify": { + "version": "2.1.0" + }, + "fast-levenshtein": { + "version": "2.0.6" + }, + "fb-watchman": { + "version": "2.0.1", + "requires": { + "bser": "2.1.1" + } + }, + "figures": { + "version": "3.2.0", + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "file-entry-cache": { + "version": "5.0.1", + "requires": { + "flat-cache": "^2.0.1" + } + }, + "fill-range": { + "version": "7.0.1", + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "find-cache-dir": { + "version": "3.3.1", + "requires": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + } + }, + "find-up": { + "version": "4.1.0", + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "flat-cache": { + "version": "2.0.1", + "requires": { + "flatted": "^2.0.0", + "rimraf": "2.6.3", + "write": "1.0.3" + }, + "dependencies": { + "rimraf": { + "version": "2.6.3", + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "flatted": { + "version": "2.0.2" + }, + "for-in": { + "version": "1.0.2" + }, + "forever-agent": { + "version": "0.6.1" + }, + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "fragment-cache": { + "version": "0.2.1", + "requires": { + "map-cache": "^0.2.2" + } + }, + "fs-extra": { + "version": "9.1.0", + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "fs.realpath": { + "version": "1.0.0" + }, + "fsevents": { + "version": "2.3.2", + "optional": true + }, + "function-bind": { + "version": "1.1.1" + }, + "functional-red-black-tree": { + "version": "1.0.1" + }, + "gensync": { + "version": "1.0.0-beta.2" + }, + "get-caller-file": { + "version": "2.0.5" + }, + "get-intrinsic": { + "version": "1.1.1", + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } + }, + "get-package-type": { + "version": "0.1.0" + }, + "get-prototype-of": { + "version": "0.0.0" + }, + "get-stdin": { + "version": "6.0.0" + }, + "get-stream": { + "version": "5.2.0", + "requires": { + "pump": "^3.0.0" + } + }, + "get-value": { + "version": "2.0.6" + }, + "getpass": { + "version": "0.1.7", + "requires": { + "assert-plus": "^1.0.0" + } + }, + "glob": { + "version": "7.1.6", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "5.1.2", + "requires": { + "is-glob": "^4.0.1" + } + }, + "globals": { + "version": "11.12.0" + }, + "globalyzer": { + "version": "0.1.0" + }, + "globrex": { + "version": "0.1.2" + }, + "graceful-fs": { + "version": "4.2.6" + }, + "growly": { + "version": "1.3.0", + "optional": true + }, + "har-schema": { + "version": "2.0.0" + }, + "har-validator": { + "version": "5.1.5", + "requires": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + } + }, + "has": { + "version": "1.0.3", + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-bigints": { + "version": "1.0.1" + }, + "has-flag": { + "version": "3.0.0" + }, + "has-symbols": { + "version": "1.0.2" + }, + "has-value": { + "version": "1.0.0", + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "hash.js": { + "version": "1.1.7", + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "hmac-drbg": { + "version": "1.0.1", + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "hosted-git-info": { + "version": "2.8.9" + }, + "html-encoding-sniffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", + "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", + "requires": { + "whatwg-encoding": "^1.0.1" + } + }, + "html-escaper": { + "version": "2.0.2" + }, + "http-signature": { + "version": "1.2.0", + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "human-signals": { + "version": "1.1.1" + }, + "humanize-duration": { + "version": "3.25.1" + }, + "iconv-lite": { + "version": "0.4.24", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ieee754": { + "version": "1.2.1" + }, + "ignore": { + "version": "4.0.6" + }, + "import-fresh": { + "version": "3.3.0", + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "4.0.0" + } + } + }, + "import-local": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.2.tgz", + "integrity": "sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA==", + "requires": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4" + }, + "inflight": { + "version": "1.0.6", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4" + }, + "inquirer": { + "version": "7.3.3", + "requires": { + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.19", + "mute-stream": "0.0.8", + "run-async": "^2.4.0", + "rxjs": "^6.6.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6" + }, + "dependencies": { + "chalk": { + "version": "4.1.0", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + } + } + }, + "internal-slot": { + "version": "1.0.3", + "requires": { + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + } + }, + "interpret": { + "version": "1.4.0" + }, + "ip-regex": { + "version": "2.1.0" + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "requires": { + "kind-of": "^6.0.0" + }, + "dependencies": { + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + } + } + }, + "is-arrayish": { + "version": "0.2.1" + }, + "is-bigint": { + "version": "1.0.1" + }, + "is-boolean-object": { + "version": "1.1.0", + "requires": { + "call-bind": "^1.0.0" + } + }, + "is-buffer": { + "version": "1.1.6" + }, + "is-callable": { + "version": "1.2.3" + }, + "is-capitalized": { + "version": "1.0.0" + }, + "is-ci": { + "version": "2.0.0", + "requires": { + "ci-info": "^2.0.0" + } + }, + "is-class": { + "version": "0.0.4" + }, + "is-core-module": { + "version": "2.2.0", + "requires": { + "has": "^1.0.3" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "requires": { + "kind-of": "^6.0.0" + }, + "dependencies": { + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + } + } + }, + "is-date-object": { + "version": "1.0.2" + }, + "is-descriptor": { + "version": "1.0.2", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + } + } + }, + "is-docker": { + "version": "2.2.1", + "optional": true + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" + }, + "is-extglob": { + "version": "2.1.1" + }, + "is-fullwidth-code-point": { + "version": "2.0.0" + }, + "is-generator-fn": { + "version": "2.1.0" + }, + "is-glob": { + "version": "4.0.1", + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-interactive": { + "version": "1.0.0" + }, + "is-module": { + "version": "1.0.0" + }, + "is-negative-zero": { + "version": "2.0.1" + }, + "is-number": { + "version": "3.0.0", + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-number-object": { + "version": "1.0.4" + }, + "is-plain-object": { + "version": "2.0.4", + "requires": { + "isobject": "^3.0.1" + } + }, + "is-reference": { + "version": "1.2.1", + "requires": { + "@types/estree": "*" + } + }, + "is-regex": { + "version": "1.1.2", + "requires": { + "call-bind": "^1.0.2", + "has-symbols": "^1.0.1" + } + }, + "is-stream": { + "version": "2.0.0" + }, + "is-string": { + "version": "1.0.5" + }, + "is-symbol": { + "version": "1.0.3", + "requires": { + "has-symbols": "^1.0.1" + } + }, + "is-typedarray": { + "version": "1.0.0" + }, + "is-windows": { + "version": "1.0.2" + }, + "is-wsl": { + "version": "2.2.0", + "optional": true, + "requires": { + "is-docker": "^2.0.0" + } + }, + "isarray": { + "version": "1.0.0" + }, + "isexe": { + "version": "2.0.0" + }, + "isobject": { + "version": "3.0.1" + }, + "isstream": { + "version": "0.1.2" + }, + "istanbul-lib-coverage": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz", + "integrity": "sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==" + }, + "istanbul-lib-instrument": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", + "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", + "requires": { + "@babel/core": "^7.7.5", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.0.0", + "semver": "^6.3.0" + } + }, + "istanbul-lib-report": { + "version": "3.0.0", + "requires": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^3.0.0", + "supports-color": "^7.1.0" + } + }, + "istanbul-lib-source-maps": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz", + "integrity": "sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg==", + "requires": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + } + }, + "istanbul-reports": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.2.tgz", + "integrity": "sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw==", + "requires": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + } + }, + "jayson": { + "version": "3.4.4", + "requires": { + "@types/connect": "^3.4.33", + "@types/express-serve-static-core": "^4.17.9", + "@types/lodash": "^4.14.159", + "@types/node": "^12.12.54", + "JSONStream": "^1.3.5", + "commander": "^2.20.3", + "es6-promisify": "^5.0.0", + "eyes": "^0.1.8", + "json-stringify-safe": "^5.0.1", + "lodash": "^4.17.20", + "uuid": "^3.4.0" + }, + "dependencies": { + "@types/node": { + "version": "12.20.10" + } + } + }, + "jest": { + "version": "25.5.4", + "resolved": "https://registry.npmjs.org/jest/-/jest-25.5.4.tgz", + "integrity": "sha512-hHFJROBTqZahnO+X+PMtT6G2/ztqAZJveGqz//FnWWHurizkD05PQGzRZOhF3XP6z7SJmL+5tCfW8qV06JypwQ==", + "requires": { + "@jest/core": "^25.5.4", + "import-local": "^3.0.2", + "jest-cli": "^25.5.4" + } + }, + "jest-changed-files": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-25.5.0.tgz", + "integrity": "sha512-EOw9QEqapsDT7mKF162m8HFzRPbmP8qJQny6ldVOdOVBz3ACgPm/1nAn5fPQ/NDaYhX/AHkrGwwkCncpAVSXcw==", + "requires": { + "@jest/types": "^25.5.0", + "execa": "^3.2.0", + "throat": "^5.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "execa": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-3.4.0.tgz", + "integrity": "sha512-r9vdGQk4bmCuK1yKQu1KTwcT2zwfWdbdaXfCtAh+5nU/4fSX+JAb7vZGvI5naJrQlvONrEB20jeruESI69530g==", + "requires": { + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "p-finally": "^2.0.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" + } + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "jest-cli": { + "version": "25.5.4", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-25.5.4.tgz", + "integrity": "sha512-rG8uJkIiOUpnREh1768/N3n27Cm+xPFkSNFO91tgg+8o2rXeVLStz+vkXkGr4UtzH6t1SNbjwoiswd7p4AhHTw==", + "requires": { + "@jest/core": "^25.5.4", + "@jest/test-result": "^25.5.0", + "@jest/types": "^25.5.0", + "chalk": "^3.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "import-local": "^3.0.2", + "is-ci": "^2.0.0", + "jest-config": "^25.5.4", + "jest-util": "^25.5.0", + "jest-validate": "^25.5.0", + "prompts": "^2.0.1", + "realpath-native": "^2.0.0", + "yargs": "^15.3.1" + } + }, + "jest-config": { + "version": "25.5.4", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-25.5.4.tgz", + "integrity": "sha512-SZwR91SwcdK6bz7Gco8qL7YY2sx8tFJYzvg216DLihTWf+LKY/DoJXpM9nTzYakSyfblbqeU48p/p7Jzy05Atg==", + "requires": { + "@babel/core": "^7.1.0", + "@jest/test-sequencer": "^25.5.4", + "@jest/types": "^25.5.0", + "babel-jest": "^25.5.1", + "chalk": "^3.0.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.1", + "graceful-fs": "^4.2.4", + "jest-environment-jsdom": "^25.5.0", + "jest-environment-node": "^25.5.0", + "jest-get-type": "^25.2.6", + "jest-jasmine2": "^25.5.4", + "jest-regex-util": "^25.2.6", + "jest-resolve": "^25.5.1", + "jest-util": "^25.5.0", + "jest-validate": "^25.5.0", + "micromatch": "^4.0.2", + "pretty-format": "^25.5.0", + "realpath-native": "^2.0.0" + } + }, + "jest-diff": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-25.5.0.tgz", + "integrity": "sha512-z1kygetuPiREYdNIumRpAHY6RXiGmp70YHptjdaxTWGmA085W3iCnXNx0DhflK3vwrKmrRWyY1wUpkPMVxMK7A==", + "requires": { + "chalk": "^3.0.0", + "diff-sequences": "^25.2.6", + "jest-get-type": "^25.2.6", + "pretty-format": "^25.5.0" + } + }, + "jest-docblock": { + "version": "25.3.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-25.3.0.tgz", + "integrity": "sha512-aktF0kCar8+zxRHxQZwxMy70stc9R1mOmrLsT5VO3pIT0uzGRSDAXxSlz4NqQWpuLjPpuMhPRl7H+5FRsvIQAg==", + "requires": { + "detect-newline": "^3.0.0" + } + }, + "jest-each": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-25.5.0.tgz", + "integrity": "sha512-QBogUxna3D8vtiItvn54xXde7+vuzqRrEeaw8r1s+1TG9eZLVJE5ZkKoSUlqFwRjnlaA4hyKGiu9OlkFIuKnjA==", + "requires": { + "@jest/types": "^25.5.0", + "chalk": "^3.0.0", + "jest-get-type": "^25.2.6", + "jest-util": "^25.5.0", + "pretty-format": "^25.5.0" + } + }, + "jest-environment-jsdom": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-25.5.0.tgz", + "integrity": "sha512-7Jr02ydaq4jaWMZLY+Skn8wL5nVIYpWvmeatOHL3tOcV3Zw8sjnPpx+ZdeBfc457p8jCR9J6YCc+Lga0oIy62A==", + "requires": { + "@jest/environment": "^25.5.0", + "@jest/fake-timers": "^25.5.0", + "@jest/types": "^25.5.0", + "jest-mock": "^25.5.0", + "jest-util": "^25.5.0", + "jsdom": "^15.2.1" + } + }, + "jest-environment-node": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-25.5.0.tgz", + "integrity": "sha512-iuxK6rQR2En9EID+2k+IBs5fCFd919gVVK5BeND82fYeLWPqvRcFNPKu9+gxTwfB5XwBGBvZ0HFQa+cHtIoslA==", + "requires": { + "@jest/environment": "^25.5.0", + "@jest/fake-timers": "^25.5.0", + "@jest/types": "^25.5.0", + "jest-mock": "^25.5.0", + "jest-util": "^25.5.0", + "semver": "^6.3.0" + } + }, + "jest-get-type": { + "version": "25.2.6", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-25.2.6.tgz", + "integrity": "sha512-DxjtyzOHjObRM+sM1knti6or+eOgcGU4xVSb2HNP1TqO4ahsT+rqZg+nyqHWJSvWgKC5cG3QjGFBqxLghiF/Ig==" + }, + "jest-haste-map": { + "version": "25.5.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-25.5.1.tgz", + "integrity": "sha512-dddgh9UZjV7SCDQUrQ+5t9yy8iEgKc1AKqZR9YDww8xsVOtzPQSMVLDChc21+g29oTRexb9/B0bIlZL+sWmvAQ==", + "requires": { + "@jest/types": "^25.5.0", + "@types/graceful-fs": "^4.1.2", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "fsevents": "^2.1.2", + "graceful-fs": "^4.2.4", + "jest-serializer": "^25.5.0", + "jest-util": "^25.5.0", + "jest-worker": "^25.5.0", + "micromatch": "^4.0.2", + "sane": "^4.0.3", + "walker": "^1.0.7", + "which": "^2.0.2" + }, + "dependencies": { + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "jest-jasmine2": { + "version": "25.5.4", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-25.5.4.tgz", + "integrity": "sha512-9acbWEfbmS8UpdcfqnDO+uBUgKa/9hcRh983IHdM+pKmJPL77G0sWAAK0V0kr5LK3a8cSBfkFSoncXwQlRZfkQ==", + "requires": { + "@babel/traverse": "^7.1.0", + "@jest/environment": "^25.5.0", + "@jest/source-map": "^25.5.0", + "@jest/test-result": "^25.5.0", + "@jest/types": "^25.5.0", + "chalk": "^3.0.0", + "co": "^4.6.0", + "expect": "^25.5.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^25.5.0", + "jest-matcher-utils": "^25.5.0", + "jest-message-util": "^25.5.0", + "jest-runtime": "^25.5.4", + "jest-snapshot": "^25.5.1", + "jest-util": "^25.5.0", + "pretty-format": "^25.5.0", + "throat": "^5.0.0" + } + }, + "jest-leak-detector": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-25.5.0.tgz", + "integrity": "sha512-rV7JdLsanS8OkdDpZtgBf61L5xZ4NnYLBq72r6ldxahJWWczZjXawRsoHyXzibM5ed7C2QRjpp6ypgwGdKyoVA==", + "requires": { + "jest-get-type": "^25.2.6", + "pretty-format": "^25.5.0" + } + }, + "jest-matcher-utils": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-25.5.0.tgz", + "integrity": "sha512-VWI269+9JS5cpndnpCwm7dy7JtGQT30UHfrnM3mXl22gHGt/b7NkjBqXfbhZ8V4B7ANUsjK18PlSBmG0YH7gjw==", + "requires": { + "chalk": "^3.0.0", + "jest-diff": "^25.5.0", + "jest-get-type": "^25.2.6", + "pretty-format": "^25.5.0" + } + }, + "jest-message-util": { + "version": "25.5.0", + "requires": { + "@babel/code-frame": "^7.0.0", + "@jest/types": "^25.5.0", + "@types/stack-utils": "^1.0.1", + "chalk": "^3.0.0", + "graceful-fs": "^4.2.4", + "micromatch": "^4.0.2", + "slash": "^3.0.0", + "stack-utils": "^1.0.1" + } + }, + "jest-mock": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-25.5.0.tgz", + "integrity": "sha512-eXWuTV8mKzp/ovHc5+3USJMYsTBhyQ+5A1Mak35dey/RG8GlM4YWVylZuGgVXinaW6tpvk/RSecmF37FKUlpXA==", + "requires": { + "@jest/types": "^25.5.0" + } + }, + "jest-pnp-resolver": { + "version": "1.2.2" + }, + "jest-regex-util": { + "version": "25.2.6" + }, + "jest-resolve": { + "version": "25.5.1", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-25.5.1.tgz", + "integrity": "sha512-Hc09hYch5aWdtejsUZhA+vSzcotf7fajSlPA6EZPE1RmPBAD39XtJhvHWFStid58iit4IPDLI/Da4cwdDmAHiQ==", + "requires": { + "@jest/types": "^25.5.0", + "browser-resolve": "^1.11.3", + "chalk": "^3.0.0", + "graceful-fs": "^4.2.4", + "jest-pnp-resolver": "^1.2.1", + "read-pkg-up": "^7.0.1", + "realpath-native": "^2.0.0", + "resolve": "^1.17.0", + "slash": "^3.0.0" + }, + "dependencies": { + "read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "requires": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "dependencies": { + "type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==" + } + } + }, + "read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "requires": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + } + } + } + }, + "jest-resolve-dependencies": { + "version": "25.5.4", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-25.5.4.tgz", + "integrity": "sha512-yFmbPd+DAQjJQg88HveObcGBA32nqNZ02fjYmtL16t1xw9bAttSn5UGRRhzMHIQbsep7znWvAvnD4kDqOFM0Uw==", + "requires": { + "@jest/types": "^25.5.0", + "jest-regex-util": "^25.2.6", + "jest-snapshot": "^25.5.1" + } + }, + "jest-runner": { + "version": "25.5.4", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-25.5.4.tgz", + "integrity": "sha512-V/2R7fKZo6blP8E9BL9vJ8aTU4TH2beuqGNxHbxi6t14XzTb+x90B3FRgdvuHm41GY8ch4xxvf0ATH4hdpjTqg==", + "requires": { + "@jest/console": "^25.5.0", + "@jest/environment": "^25.5.0", + "@jest/test-result": "^25.5.0", + "@jest/types": "^25.5.0", + "chalk": "^3.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "jest-config": "^25.5.4", + "jest-docblock": "^25.3.0", + "jest-haste-map": "^25.5.1", + "jest-jasmine2": "^25.5.4", + "jest-leak-detector": "^25.5.0", + "jest-message-util": "^25.5.0", + "jest-resolve": "^25.5.1", + "jest-runtime": "^25.5.4", + "jest-util": "^25.5.0", + "jest-worker": "^25.5.0", + "source-map-support": "^0.5.6", + "throat": "^5.0.0" + } + }, + "jest-runtime": { + "version": "25.5.4", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-25.5.4.tgz", + "integrity": "sha512-RWTt8LeWh3GvjYtASH2eezkc8AehVoWKK20udV6n3/gC87wlTbE1kIA+opCvNWyyPeBs6ptYsc6nyHUb1GlUVQ==", + "requires": { + "@jest/console": "^25.5.0", + "@jest/environment": "^25.5.0", + "@jest/globals": "^25.5.2", + "@jest/source-map": "^25.5.0", + "@jest/test-result": "^25.5.0", + "@jest/transform": "^25.5.1", + "@jest/types": "^25.5.0", + "@types/yargs": "^15.0.0", + "chalk": "^3.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.4", + "jest-config": "^25.5.4", + "jest-haste-map": "^25.5.1", + "jest-message-util": "^25.5.0", + "jest-mock": "^25.5.0", + "jest-regex-util": "^25.2.6", + "jest-resolve": "^25.5.1", + "jest-snapshot": "^25.5.1", + "jest-util": "^25.5.0", + "jest-validate": "^25.5.0", + "realpath-native": "^2.0.0", + "slash": "^3.0.0", + "strip-bom": "^4.0.0", + "yargs": "^15.3.1" + }, + "dependencies": { + "strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==" + } + } + }, + "jest-serializer": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-25.5.0.tgz", + "integrity": "sha512-LxD8fY1lByomEPflwur9o4e2a5twSQ7TaVNLlFUuToIdoJuBt8tzHfCsZ42Ok6LkKXWzFWf3AGmheuLAA7LcCA==", + "requires": { + "graceful-fs": "^4.2.4" + } + }, + "jest-snapshot": { + "version": "25.5.1", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-25.5.1.tgz", + "integrity": "sha512-C02JE1TUe64p2v1auUJ2ze5vcuv32tkv9PyhEb318e8XOKF7MOyXdJ7kdjbvrp3ChPLU2usI7Rjxs97Dj5P0uQ==", + "requires": { + "@babel/types": "^7.0.0", + "@jest/types": "^25.5.0", + "@types/prettier": "^1.19.0", + "chalk": "^3.0.0", + "expect": "^25.5.0", + "graceful-fs": "^4.2.4", + "jest-diff": "^25.5.0", + "jest-get-type": "^25.2.6", + "jest-matcher-utils": "^25.5.0", + "jest-message-util": "^25.5.0", + "jest-resolve": "^25.5.1", + "make-dir": "^3.0.0", + "natural-compare": "^1.4.0", + "pretty-format": "^25.5.0", + "semver": "^6.3.0" + } + }, + "jest-util": { + "version": "25.5.0", + "requires": { + "@jest/types": "^25.5.0", + "chalk": "^3.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^2.0.0", + "make-dir": "^3.0.0" + } + }, + "jest-validate": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-25.5.0.tgz", + "integrity": "sha512-okUFKqhZIpo3jDdtUXUZ2LxGUZJIlfdYBvZb1aczzxrlyMlqdnnws9MOxezoLGhSaFc2XYaHNReNQfj5zPIWyQ==", + "requires": { + "@jest/types": "^25.5.0", + "camelcase": "^5.3.1", + "chalk": "^3.0.0", + "jest-get-type": "^25.2.6", + "leven": "^3.1.0", + "pretty-format": "^25.5.0" + } + }, + "jest-watch-typeahead": { + "version": "0.5.0", + "requires": { + "ansi-escapes": "^4.2.1", + "chalk": "^3.0.0", + "jest-regex-util": "^25.2.1", + "jest-watcher": "^25.2.4", + "slash": "^3.0.0", + "string-length": "^3.1.0", + "strip-ansi": "^6.0.0" + } + }, + "jest-watcher": { + "version": "25.5.0", + "requires": { + "@jest/test-result": "^25.5.0", + "@jest/types": "^25.5.0", + "ansi-escapes": "^4.2.1", + "chalk": "^3.0.0", + "jest-util": "^25.5.0", + "string-length": "^3.1.0" + } + }, + "jest-worker": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-25.5.0.tgz", + "integrity": "sha512-/dsSmUkIy5EBGfv/IjjqmFxrNAUpBERfGs1oHROyD7yxjG/w+t0GOJDX8O1k32ySmd7+a5IhnJU2qQFcJ4n1vw==", + "requires": { + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + } + }, + "jpjs": { + "version": "1.2.1" + }, + "js-sha3": { + "version": "0.8.0" + }, + "js-tokens": { + "version": "4.0.0" + }, + "js-yaml": { + "version": "3.14.1", + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsbn": { + "version": "0.1.1" + }, + "jsdom": { + "version": "15.2.1", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-15.2.1.tgz", + "integrity": "sha512-fAl1W0/7T2G5vURSyxBzrJ1LSdQn6Tr5UX/xD4PXDx/PDgwygedfW6El/KIj3xJ7FU61TTYnc/l/B7P49Eqt6g==", + "requires": { + "abab": "^2.0.0", + "acorn": "^7.1.0", + "acorn-globals": "^4.3.2", + "array-equal": "^1.0.0", + "cssom": "^0.4.1", + "cssstyle": "^2.0.0", + "data-urls": "^1.1.0", + "domexception": "^1.0.1", + "escodegen": "^1.11.1", + "html-encoding-sniffer": "^1.0.2", + "nwsapi": "^2.2.0", + "parse5": "5.1.0", + "pn": "^1.1.0", + "request": "^2.88.0", + "request-promise-native": "^1.0.7", + "saxes": "^3.1.9", + "symbol-tree": "^3.2.2", + "tough-cookie": "^3.0.1", + "w3c-hr-time": "^1.0.1", + "w3c-xmlserializer": "^1.1.2", + "webidl-conversions": "^4.0.2", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^7.0.0", + "ws": "^7.0.0", + "xml-name-validator": "^3.0.0" + }, + "dependencies": { + "tough-cookie": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-3.0.1.tgz", + "integrity": "sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg==", + "requires": { + "ip-regex": "^2.1.0", + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + } + } + }, + "jsesc": { + "version": "2.5.2" + }, + "json-parse-even-better-errors": { + "version": "2.3.1" + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" + }, + "json-schema-traverse": { + "version": "0.4.1" + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1" + }, + "json-stringify-safe": { + "version": "5.0.1" + }, + "json5": { + "version": "2.2.0", + "requires": { + "minimist": "^1.2.5" + } + }, + "jsonfile": { + "version": "6.1.0", + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "jsonparse": { + "version": "1.3.1" + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "jsx-ast-utils": { + "version": "3.2.0", + "requires": { + "array-includes": "^3.1.2", + "object.assign": "^4.1.2" + } + }, + "keypather": { + "version": "1.10.2", + "requires": { + "101": "^1.0.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + }, + "kleur": { + "version": "3.0.3" + }, + "language-subtag-registry": { + "version": "0.3.21" + }, + "language-tags": { + "version": "1.0.5", + "requires": { + "language-subtag-registry": "~0.3.2" + } + }, + "leven": { + "version": "3.1.0" + }, + "levn": { + "version": "0.3.0", + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "lines-and-columns": { + "version": "1.1.6" + }, + "load-json-file": { + "version": "2.0.0", + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "strip-bom": "^3.0.0" + }, + "dependencies": { + "parse-json": { + "version": "2.2.0", + "requires": { + "error-ex": "^1.2.0" + } + } + } + }, + "locate-path": { + "version": "5.0.0", + "requires": { + "p-locate": "^4.1.0" + } + }, + "lodash": { + "version": "4.17.21" + }, + "lodash.debounce": { + "version": "4.0.8" + }, + "lodash.memoize": { + "version": "4.1.2" + }, + "lodash.merge": { + "version": "4.6.2" + }, + "lodash.sortby": { + "version": "4.7.0" + }, + "log-symbols": { + "version": "3.0.0", + "requires": { + "chalk": "^2.4.2" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3" + }, + "supports-color": { + "version": "5.5.0", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "log-update": { + "version": "2.3.0", + "requires": { + "ansi-escapes": "^3.0.0", + "cli-cursor": "^2.0.0", + "wrap-ansi": "^3.0.1" + }, + "dependencies": { + "ansi-escapes": { + "version": "3.2.0" + }, + "cli-cursor": { + "version": "2.1.0", + "requires": { + "restore-cursor": "^2.0.0" + } + }, + "mimic-fn": { + "version": "1.2.0" + }, + "onetime": { + "version": "2.0.1", + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "restore-cursor": { + "version": "2.0.0", + "requires": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + } + } + } + }, + "lolex": { + "version": "5.1.2", + "requires": { + "@sinonjs/commons": "^1.7.0" + } + }, + "loose-envify": { + "version": "1.4.0", + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "lower-case": { + "version": "2.0.2", + "requires": { + "tslib": "^2.0.3" + } + }, + "lru-cache": { + "version": "6.0.0", + "requires": { + "yallist": "^4.0.0" + } + }, + "magic-string": { + "version": "0.25.7", + "requires": { + "sourcemap-codec": "^1.4.4" + } + }, + "make-dir": { + "version": "3.1.0", + "requires": { + "semver": "^6.0.0" + } + }, + "make-error": { + "version": "1.3.6" + }, + "makeerror": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", + "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", + "requires": { + "tmpl": "1.0.x" + } + }, + "map-cache": { + "version": "0.2.2" + }, + "map-visit": { + "version": "1.0.0", + "requires": { + "object-visit": "^1.0.0" + } + }, + "merge-stream": { + "version": "2.0.0" + }, + "micromatch": { + "version": "4.0.4", + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.2.3" + } + }, + "mime-db": { + "version": "1.47.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.47.0.tgz", + "integrity": "sha512-QBmA/G2y+IfeS4oktet3qRZ+P5kPhCKRXxXnQEudYqUaEioAU1/Lq2us3D/t1Jfo4hE9REQPrbB7K5sOczJVIw==" + }, + "mime-types": { + "version": "2.1.30", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.30.tgz", + "integrity": "sha512-crmjA4bLtR8m9qLpHvgxSChT+XoSlZi8J4n/aIdn3z92e/U47Z0V/yl+Wh9W046GgFVAmoNR/fmdbZYcSSIUeg==", + "requires": { + "mime-db": "1.47.0" + } + }, + "mimic-fn": { + "version": "2.1.0" + }, + "minimalistic-assert": { + "version": "1.0.1" + }, + "minimalistic-crypto-utils": { + "version": "1.0.1" + }, + "minimatch": { + "version": "3.0.4", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5" + }, + "mixin-deep": { + "version": "1.3.2", + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "mkdirp": { + "version": "0.5.5", + "requires": { + "minimist": "^1.2.5" + } + }, + "mri": { + "version": "1.1.6" + }, + "ms": { + "version": "2.1.2" + }, + "mute-stream": { + "version": "0.0.8" + }, + "nanomatch": { + "version": "1.2.13", + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + } + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "^2.0.4" + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + } + } + }, + "natural-compare": { + "version": "1.4.0" + }, + "nice-try": { + "version": "1.0.5" + }, + "no-case": { + "version": "3.0.4", + "requires": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "node-addon-api": { + "version": "2.0.2" + }, + "node-fetch": { + "version": "2.6.1" + }, + "node-gyp-build": { + "version": "4.2.3" + }, + "node-int64": { + "version": "0.4.0" + }, + "node-modules-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz", + "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=" + }, + "node-notifier": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-6.0.0.tgz", + "integrity": "sha512-SVfQ/wMw+DesunOm5cKqr6yDcvUTDl/yc97ybGHMrteNEY6oekXpNpS3lZwgLlwz0FLgHoiW28ZpmBHUDg37cw==", + "optional": true, + "requires": { + "growly": "^1.3.0", + "is-wsl": "^2.1.1", + "semver": "^6.3.0", + "shellwords": "^0.1.1", + "which": "^1.3.1" + } + }, + "node-releases": { + "version": "1.1.71" + }, + "normalize-package-data": { + "version": "2.5.0", + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + }, + "dependencies": { + "semver": { + "version": "5.7.1" + } + } + }, + "normalize-path": { + "version": "3.0.0" + }, + "npm-run-path": { + "version": "4.0.1", + "requires": { + "path-key": "^3.0.0" + }, + "dependencies": { + "path-key": { + "version": "3.1.1" + } + } + }, + "nwsapi": { + "version": "2.2.0" + }, + "oauth-sign": { + "version": "0.9.0" + }, + "object-assign": { + "version": "4.1.1" + }, + "object-copy": { + "version": "0.1.0", + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + } + }, + "object-inspect": { + "version": "1.9.0" + }, + "object-keys": { + "version": "1.1.1" + }, + "object-visit": { + "version": "1.0.1", + "requires": { + "isobject": "^3.0.0" + } + }, + "object.assign": { + "version": "4.1.2", + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + } + }, + "object.entries": { + "version": "1.1.3", + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.1", + "has": "^1.0.3" + } + }, + "object.fromentries": { + "version": "2.0.4", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.2", + "has": "^1.0.3" + } + }, + "object.pick": { + "version": "1.3.0", + "requires": { + "isobject": "^3.0.1" + } + }, + "object.values": { + "version": "1.1.3", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.2", + "has": "^1.0.3" + } + }, + "once": { + "version": "1.4.0", + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "5.1.2", + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "optionator": { + "version": "0.8.3", + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + } + }, + "ora": { + "version": "4.1.1", + "requires": { + "chalk": "^3.0.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.2.0", + "is-interactive": "^1.0.0", + "log-symbols": "^3.0.0", + "mute-stream": "0.0.8", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "dependencies": { + "cli-spinners": { + "version": "2.6.0" + } + } + }, + "os-tmpdir": { + "version": "1.0.2" + }, + "p-each-series": { + "version": "2.2.0" + }, + "p-finally": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-2.0.1.tgz", + "integrity": "sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw==" + }, + "p-limit": { + "version": "2.3.0", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-try": { + "version": "2.2.0" + }, + "parent-module": { + "version": "1.0.1", + "requires": { + "callsites": "^3.0.0" + } + }, + "parse-json": { + "version": "5.2.0", + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + } + }, + "parse5": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", + "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==" + }, + "pascal-case": { + "version": "3.1.2", + "requires": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "pascalcase": { + "version": "0.1.1" + }, + "path-exists": { + "version": "4.0.0" + }, + "path-is-absolute": { + "version": "1.0.1" + }, + "path-key": { + "version": "2.0.1" + }, + "path-parse": { + "version": "1.0.6" + }, + "path-type": { + "version": "4.0.0" + }, + "performance-now": { + "version": "2.1.0" + }, + "picomatch": { + "version": "2.2.3" + }, + "pify": { + "version": "2.3.0" + }, + "pirates": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz", + "integrity": "sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==", + "requires": { + "node-modules-regexp": "^1.0.0" + } + }, + "pkg-dir": { + "version": "4.2.0", + "requires": { + "find-up": "^4.0.0" + } + }, + "pn": { + "version": "1.1.0" + }, + "posix-character-classes": { + "version": "0.1.1" + }, + "prelude-ls": { + "version": "1.1.2" + }, + "prettier": { + "version": "1.19.1" + }, + "prettier-linter-helpers": { + "version": "1.0.0", + "requires": { + "fast-diff": "^1.1.2" + } + }, + "pretty-format": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-25.5.0.tgz", + "integrity": "sha512-kbo/kq2LQ/A/is0PQwsEHM7Ca6//bGPPvU6UnsdDRSKTWxT/ru/xb88v4BJf6a69H+uTytOEsTusT9ksd/1iWQ==", + "requires": { + "@jest/types": "^25.5.0", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^16.12.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" + } + } + }, + "progress": { + "version": "2.0.3" + }, + "progress-estimator": { + "version": "0.2.2", + "requires": { + "chalk": "^2.4.1", + "cli-spinners": "^1.3.1", + "humanize-duration": "^3.15.3", + "log-update": "^2.3.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3" + }, + "supports-color": { + "version": "5.5.0", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "prompts": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.1.tgz", + "integrity": "sha512-EQyfIuO2hPDsX1L/blblV+H7I0knhgAd82cVneCwcdND9B8AuCDuRcBH6yIcG4dFzlOUqbazQqwGjx5xmsNLuQ==", + "requires": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + } + }, + "prop-types": { + "version": "15.7.2", + "requires": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.8.1" + } + }, + "psl": { + "version": "1.8.0" + }, + "pump": { + "version": "3.0.0", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "punycode": { + "version": "2.1.1" + }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" + }, + "ramda": { + "version": "0.27.1" + }, + "randombytes": { + "version": "2.1.0", + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "react-is": { + "version": "16.13.1" + }, + "read-pkg": { + "version": "2.0.0", + "requires": { + "load-json-file": "^2.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^2.0.0" + }, + "dependencies": { + "path-type": { + "version": "2.0.0", + "requires": { + "pify": "^2.0.0" + } + } + } + }, + "read-pkg-up": { + "version": "2.0.0", + "requires": { + "find-up": "^2.0.0", + "read-pkg": "^2.0.0" + }, + "dependencies": { + "find-up": { + "version": "2.1.0", + "requires": { + "locate-path": "^2.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "1.3.0", + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0" + }, + "path-exists": { + "version": "3.0.0" + } + } + }, + "realpath-native": { + "version": "2.0.0" + }, + "rechoir": { + "version": "0.6.2", + "requires": { + "resolve": "^1.1.6" + } + }, + "regenerate": { + "version": "1.4.2" + }, + "regenerate-unicode-properties": { + "version": "8.2.0", + "requires": { + "regenerate": "^1.4.0" + } + }, + "regenerator-runtime": { + "version": "0.13.7" + }, + "regenerator-transform": { + "version": "0.14.5", + "requires": { + "@babel/runtime": "^7.8.4" + } + }, + "regex-not": { + "version": "1.0.2", + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "regexp.prototype.flags": { + "version": "1.3.1", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "regexpp": { + "version": "2.0.1" + }, + "regexpu-core": { + "version": "4.7.1", + "requires": { + "regenerate": "^1.4.0", + "regenerate-unicode-properties": "^8.2.0", + "regjsgen": "^0.5.1", + "regjsparser": "^0.6.4", + "unicode-match-property-ecmascript": "^1.0.4", + "unicode-match-property-value-ecmascript": "^1.2.0" + } + }, + "regjsgen": { + "version": "0.5.2" + }, + "regjsparser": { + "version": "0.6.9", + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0" + } + } + }, + "remove-trailing-separator": { + "version": "1.1.0" + }, + "repeat-element": { + "version": "1.1.4" + }, + "repeat-string": { + "version": "1.6.1" + }, + "request": { + "version": "2.88.2", + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + } + }, + "request-promise-core": { + "version": "1.1.4", + "requires": { + "lodash": "^4.17.19" + } + }, + "request-promise-native": { + "version": "1.0.9", + "requires": { + "request-promise-core": "1.1.4", + "stealthy-require": "^1.1.1", + "tough-cookie": "^2.3.3" + } + }, + "require-directory": { + "version": "2.1.1" + }, + "require-main-filename": { + "version": "2.0.0" + }, + "resolve": { + "version": "1.20.0", + "requires": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + } + }, + "resolve-cwd": { + "version": "3.0.0", + "requires": { + "resolve-from": "^5.0.0" + } + }, + "resolve-from": { + "version": "5.0.0" + }, + "resolve-url": { + "version": "0.2.1" + }, + "restore-cursor": { + "version": "3.1.0", + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, + "ret": { + "version": "0.1.15" + }, + "rimraf": { + "version": "3.0.2", + "requires": { + "glob": "^7.1.3" + } + }, + "rollup": { + "version": "1.32.1", + "requires": { + "@types/estree": "*", + "@types/node": "*", + "acorn": "^7.1.0" + } + }, + "rollup-plugin-sourcemaps": { + "version": "0.6.3", + "requires": { + "@rollup/pluginutils": "^3.0.9", + "source-map-resolve": "^0.6.0" + } + }, + "rollup-plugin-terser": { + "version": "5.3.1", + "requires": { + "@babel/code-frame": "^7.5.5", + "jest-worker": "^24.9.0", + "rollup-pluginutils": "^2.8.2", + "serialize-javascript": "^4.0.0", + "terser": "^4.6.2" + }, + "dependencies": { + "jest-worker": { + "version": "24.9.0", + "requires": { + "merge-stream": "^2.0.0", + "supports-color": "^6.1.0" + } + }, + "supports-color": { + "version": "6.1.0", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "rollup-pluginutils": { + "version": "2.8.2", + "requires": { + "estree-walker": "^0.6.1" + }, + "dependencies": { + "estree-walker": { + "version": "0.6.1" + } + } + }, + "rpc-websockets": { + "version": "7.4.11", + "requires": { + "@babel/runtime": "^7.11.2", + "assert-args": "^1.2.1", + "bufferutil": "^4.0.1", + "circular-json": "^0.5.9", + "eventemitter3": "^4.0.7", + "utf-8-validate": "^5.0.2", + "uuid": "^8.3.0", + "ws": "^7.3.1" + }, + "dependencies": { + "uuid": { + "version": "8.3.2" + } + } + }, + "rsvp": { + "version": "4.8.5" + }, + "run-async": { + "version": "2.4.1" + }, + "rxjs": { + "version": "6.6.7", + "requires": { + "tslib": "^1.9.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1" + } + } + }, + "sade": { + "version": "1.7.4", + "requires": { + "mri": "^1.1.0" + } + }, + "safe-buffer": { + "version": "5.2.1" + }, + "safe-regex": { + "version": "1.1.0", + "requires": { + "ret": "~0.1.10" + } + }, + "safer-buffer": { + "version": "2.1.2" + }, + "sane": { + "version": "4.1.0", + "requires": { + "@cnakazawa/watch": "^1.0.3", + "anymatch": "^2.0.0", + "capture-exit": "^2.0.0", + "exec-sh": "^0.3.2", + "execa": "^1.0.0", + "fb-watchman": "^2.0.0", + "micromatch": "^3.1.4", + "minimist": "^1.1.1", + "walker": "~1.0.5" + }, + "dependencies": { + "anymatch": { + "version": "2.0.0", + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "braces": { + "version": "2.3.2", + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" + } + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + } + }, + "execa": { + "version": "1.0.0", + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "fill-range": { + "version": "4.0.0", + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" + } + } + }, + "get-stream": { + "version": "4.1.0", + "requires": { + "pump": "^3.0.0" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "^2.0.4" + } + }, + "is-stream": { + "version": "1.1.0" + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + }, + "micromatch": { + "version": "3.1.10", + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "normalize-path": { + "version": "2.1.1", + "requires": { + "remove-trailing-separator": "^1.0.1" + } + }, + "npm-run-path": { + "version": "2.0.2", + "requires": { + "path-key": "^2.0.0" + } + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" + }, + "to-regex-range": { + "version": "2.1.1", + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + } + } + }, + "saxes": { + "version": "3.1.11", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-3.1.11.tgz", + "integrity": "sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g==", + "requires": { + "xmlchars": "^2.1.1" + } + }, + "secp256k1": { + "version": "4.0.2", + "requires": { + "elliptic": "^6.5.2", + "node-addon-api": "^2.0.0", + "node-gyp-build": "^4.2.0" + } + }, + "semver": { + "version": "6.3.0" + }, + "serialize-javascript": { + "version": "4.0.0", + "requires": { + "randombytes": "^2.1.0" + } + }, + "set-blocking": { + "version": "2.0.0" + }, + "set-value": { + "version": "2.0.1", + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + } + }, + "shebang-command": { + "version": "1.2.0", + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0" + }, + "shelljs": { + "version": "0.8.4", + "requires": { + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" + } + }, + "shellwords": { + "version": "0.1.1", + "optional": true + }, + "side-channel": { + "version": "1.0.4", + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, + "signal-exit": { + "version": "3.0.3" + }, + "sisteransi": { + "version": "1.0.5" + }, + "slash": { + "version": "3.0.0" + }, + "slice-ansi": { + "version": "2.1.0", + "requires": { + "ansi-styles": "^3.2.0", + "astral-regex": "^1.0.0", + "is-fullwidth-code-point": "^2.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "requires": { + "color-convert": "^1.9.0" + } + }, + "color-convert": { + "version": "1.9.3", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3" + } + } + }, + "snapdragon": { + "version": "0.8.2", + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0" + }, + "source-map": { + "version": "0.5.7" + }, + "source-map-resolve": { + "version": "0.5.3", + "requires": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "requires": { + "is-descriptor": "^1.0.0" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "requires": { + "kind-of": "^3.2.0" + } + }, + "source-map": { + "version": "0.6.1" + }, + "source-map-resolve": { + "version": "0.6.0", + "requires": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0" + } + }, + "source-map-support": { + "version": "0.5.19", + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "source-map-url": { + "version": "0.4.1" + }, + "sourcemap-codec": { + "version": "1.4.8" + }, + "spdx-correct": { + "version": "3.1.1", + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.3.0" + }, + "spdx-expression-parse": { + "version": "3.0.1", + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.7" + }, + "split-string": { + "version": "3.1.0", + "requires": { + "extend-shallow": "^3.0.0" + }, + "dependencies": { + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "sprintf-js": { + "version": "1.0.3" + }, + "sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + }, + "dependencies": { + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" + } + } + }, + "stack-utils": { + "version": "1.0.5", + "requires": { + "escape-string-regexp": "^2.0.0" + }, + "dependencies": { + "escape-string-regexp": { + "version": "2.0.0" + } + } + }, + "static-extend": { + "version": "0.1.2", + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + } + }, + "stealthy-require": { + "version": "1.1.1" + }, + "string-length": { + "version": "3.1.0", + "requires": { + "astral-regex": "^1.0.0", + "strip-ansi": "^5.2.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0" + }, + "strip-ansi": { + "version": "5.2.0", + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "string-width": { + "version": "4.2.2", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "3.0.0" + } + } + }, + "string.prototype.matchall": { + "version": "4.0.4", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.2", + "has-symbols": "^1.0.1", + "internal-slot": "^1.0.3", + "regexp.prototype.flags": "^1.3.1", + "side-channel": "^1.0.4" + } + }, + "string.prototype.trimend": { + "version": "1.0.4", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "string.prototype.trimstart": { + "version": "1.0.4", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "strip-ansi": { + "version": "6.0.1", + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "strip-bom": { + "version": "3.0.0" + }, + "strip-eof": { + "version": "1.0.0" + }, + "strip-final-newline": { + "version": "2.0.0" + }, + "strip-json-comments": { + "version": "3.1.1" + }, + "superstruct": { + "version": "0.14.2" + }, + "supports-color": { + "version": "7.2.0", + "requires": { + "has-flag": "^4.0.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0" + } + } + }, + "supports-hyperlinks": { + "version": "2.2.0", + "requires": { + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0" + } + } + }, + "symbol-tree": { + "version": "3.2.4" + }, + "table": { + "version": "5.4.6", + "requires": { + "ajv": "^6.10.2", + "lodash": "^4.17.14", + "slice-ansi": "^2.1.0", + "string-width": "^3.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0" + }, + "emoji-regex": { + "version": "7.0.3" + }, + "string-width": { + "version": "3.1.0", + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "terminal-link": { + "version": "2.1.1", + "requires": { + "ansi-escapes": "^4.2.1", + "supports-hyperlinks": "^2.0.0" + } + }, + "terser": { + "version": "4.8.0", + "requires": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + } + }, + "test-exclude": { + "version": "6.0.0", + "requires": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + } + }, + "text-encoding-utf-8": { + "version": "1.0.2" + }, + "text-table": { + "version": "0.2.0" + }, + "throat": { + "version": "5.0.0" + }, + "through": { + "version": "2.3.8" + }, + "tiny-glob": { + "version": "0.2.8", + "requires": { + "globalyzer": "0.1.0", + "globrex": "^0.1.2" + } + }, + "tmp": { + "version": "0.0.33", + "requires": { + "os-tmpdir": "~1.0.2" + } + }, + "tmpl": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", + "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=" + }, + "to-fast-properties": { + "version": "2.0.0" + }, + "to-object-path": { + "version": "0.3.0", + "requires": { + "kind-of": "^3.0.2" + } + }, + "to-regex": { + "version": "3.0.2", + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + }, + "dependencies": { + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + } + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "to-regex-range": { + "version": "5.0.1", + "requires": { + "is-number": "^7.0.0" + }, + "dependencies": { + "is-number": { + "version": "7.0.0" + } + } + }, + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + }, + "tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", + "requires": { + "punycode": "^2.1.0" + } + }, + "ts-jest": { + "version": "26.5.5", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-26.5.5.tgz", + "integrity": "sha512-7tP4m+silwt1NHqzNRAPjW1BswnAhopTdc2K3HEkRZjF0ZG2F/e/ypVH0xiZIMfItFtD3CX0XFbwPzp9fIEUVg==", + "requires": { + "bs-logger": "0.x", + "buffer-from": "1.x", + "fast-json-stable-stringify": "2.x", + "jest-util": "^26.1.0", + "json5": "2.x", + "lodash": "4.x", + "make-error": "1.x", + "mkdirp": "1.x", + "semver": "7.x", + "yargs-parser": "20.x" + }, + "dependencies": { + "@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + } + }, + "@types/istanbul-reports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz", + "integrity": "sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA==", + "requires": { + "@types/istanbul-lib-report": "*" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "jest-util": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz", + "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==", + "requires": { + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^2.0.0", + "micromatch": "^4.0.2" + } + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" + }, + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "requires": { + "lru-cache": "^6.0.0" + } + }, + "yargs-parser": { + "version": "20.2.7", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.7.tgz", + "integrity": "sha512-FiNkvbeHzB/syOjIUxFDCnhSfzAL8R5vs40MgLFBorXACCOAEaWu0gRZl14vG8MR9AOJIZbmkjhusqBYZ3HTHw==" + } + } + }, + "tsconfig-paths": { + "version": "3.9.0", + "requires": { + "@types/json5": "^0.0.29", + "json5": "^1.0.1", + "minimist": "^1.2.0", + "strip-bom": "^3.0.0" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "requires": { + "minimist": "^1.2.0" + } + } + } + }, + "tsdx": { + "version": "0.14.1", + "requires": { + "@babel/core": "^7.4.4", + "@babel/helper-module-imports": "^7.0.0", + "@babel/parser": "^7.11.5", + "@babel/plugin-proposal-class-properties": "^7.4.4", + "@babel/preset-env": "^7.11.0", + "@babel/traverse": "^7.11.5", + "@rollup/plugin-babel": "^5.1.0", + "@rollup/plugin-commonjs": "^11.0.0", + "@rollup/plugin-json": "^4.0.0", + "@rollup/plugin-node-resolve": "^9.0.0", + "@rollup/plugin-replace": "^2.2.1", + "@types/jest": "^25.2.1", + "@typescript-eslint/eslint-plugin": "^2.12.0", + "@typescript-eslint/parser": "^2.12.0", + "ansi-escapes": "^4.2.1", + "asyncro": "^3.0.0", + "babel-eslint": "^10.0.3", + "babel-plugin-annotate-pure-calls": "^0.4.0", + "babel-plugin-dev-expression": "^0.2.1", + "babel-plugin-macros": "^2.6.1", + "babel-plugin-polyfill-regenerator": "^0.0.4", + "babel-plugin-transform-rename-import": "^2.3.0", + "camelcase": "^6.0.0", + "chalk": "^4.0.0", + "enquirer": "^2.3.4", + "eslint": "^6.1.0", + "eslint-config-prettier": "^6.0.0", + "eslint-config-react-app": "^5.2.1", + "eslint-plugin-flowtype": "^3.13.0", + "eslint-plugin-import": "^2.18.2", + "eslint-plugin-jsx-a11y": "^6.2.3", + "eslint-plugin-prettier": "^3.1.0", + "eslint-plugin-react": "^7.14.3", + "eslint-plugin-react-hooks": "^2.2.0", + "execa": "^4.0.3", + "fs-extra": "^9.0.0", + "jest": "^25.3.0", + "jest-watch-typeahead": "^0.5.0", + "jpjs": "^1.2.1", + "lodash.merge": "^4.6.2", + "ora": "^4.0.3", + "pascal-case": "^3.1.1", + "prettier": "^1.19.1", + "progress-estimator": "^0.2.2", + "regenerator-runtime": "^0.13.7", + "rollup": "^1.32.1", + "rollup-plugin-sourcemaps": "^0.6.2", + "rollup-plugin-terser": "^5.1.2", + "rollup-plugin-typescript2": "^0.27.3", + "sade": "^1.4.2", + "semver": "^7.1.1", + "shelljs": "^0.8.3", + "tiny-glob": "^0.2.6", + "ts-jest": "^25.3.1", + "tslib": "^1.9.3", + "typescript": "^3.7.3" + }, + "dependencies": { + "camelcase": { + "version": "6.2.0" + }, + "chalk": { + "version": "4.1.0", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "jsonfile": { + "version": "4.0.0", + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "resolve": { + "version": "1.17.0", + "requires": { + "path-parse": "^1.0.6" + } + }, + "rollup-plugin-typescript2": { + "version": "0.27.3", + "requires": { + "@rollup/pluginutils": "^3.1.0", + "find-cache-dir": "^3.3.1", + "fs-extra": "8.1.0", + "resolve": "1.17.0", + "tslib": "2.0.1" + }, + "dependencies": { + "fs-extra": { + "version": "8.1.0", + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "tslib": { + "version": "2.0.1" + } + } + }, + "semver": { + "version": "7.3.5", + "requires": { + "lru-cache": "^6.0.0" + } + }, + "ts-jest": { + "version": "25.5.1", + "requires": { + "bs-logger": "0.x", + "buffer-from": "1.x", + "fast-json-stable-stringify": "2.x", + "json5": "2.x", + "lodash.memoize": "4.x", + "make-error": "1.x", + "micromatch": "4.x", + "mkdirp": "0.x", + "semver": "6.x", + "yargs-parser": "18.x" + }, + "dependencies": { + "semver": { + "version": "6.3.0" + } + } + }, + "tslib": { + "version": "1.14.1" + }, + "typescript": { + "version": "3.9.9" + }, + "universalify": { + "version": "0.1.2" + } + } + }, + "tslib": { + "version": "2.2.0" + }, + "tsutils": { + "version": "3.21.0", + "requires": { + "tslib": "^1.8.1" + }, + "dependencies": { + "tslib": { + "version": "1.14.1" + }, + "typescript": { + "version": "3.9.9" + } + } + }, + "tunnel-agent": { + "version": "0.6.0", + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "1.0.3" + }, + "type-check": { + "version": "0.3.2", + "requires": { + "prelude-ls": "~1.1.2" + } + }, + "type-detect": { + "version": "0.1.1" + }, + "type-fest": { + "version": "0.8.1" + }, + "typedarray-to-buffer": { + "version": "3.1.5", + "requires": { + "is-typedarray": "^1.0.0" + } + }, + "typescript": { + "version": "4.2.4" + }, + "unbox-primitive": { + "version": "1.0.1", + "requires": { + "function-bind": "^1.1.1", + "has-bigints": "^1.0.1", + "has-symbols": "^1.0.2", + "which-boxed-primitive": "^1.0.2" + } + }, + "unicode-canonical-property-names-ecmascript": { + "version": "1.0.4" + }, + "unicode-match-property-ecmascript": { + "version": "1.0.4", + "requires": { + "unicode-canonical-property-names-ecmascript": "^1.0.4", + "unicode-property-aliases-ecmascript": "^1.0.4" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "1.2.0" + }, + "unicode-property-aliases-ecmascript": { + "version": "1.1.0" + }, + "union-value": { + "version": "1.0.1", + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + } + }, + "universalify": { + "version": "2.0.0" + }, + "unset-value": { + "version": "1.0.0", + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4" + } + } + }, + "uri-js": { + "version": "4.4.1", + "requires": { + "punycode": "^2.1.0" + } + }, + "urix": { + "version": "0.1.0" + }, + "use": { + "version": "3.1.1" + }, + "utf-8-validate": { + "version": "5.0.4", + "optional": true, + "requires": { + "node-gyp-build": "^4.2.0" + } + }, + "uuid": { + "version": "3.4.0" + }, + "v8-compile-cache": { + "version": "2.3.0" + }, + "v8-to-istanbul": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-4.1.4.tgz", + "integrity": "sha512-Rw6vJHj1mbdK8edjR7+zuJrpDtKIgNdAvTSAcpYfgMIw+u2dPDntD3dgN4XQFLU2/fvFQdzj+EeSGfd/jnY5fQ==", + "requires": { + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^1.6.0", + "source-map": "^0.7.3" + }, + "dependencies": { + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==" + } + } + }, + "validate-npm-package-license": { + "version": "3.0.4", + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "verror": { + "version": "1.10.0", + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + }, + "dependencies": { + "extsprintf": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.4.0.tgz", + "integrity": "sha1-4mifjzVvrWLMplo6kcXfX5VRaS8=" + } + } + }, + "w3c-hr-time": { + "version": "1.0.2", + "requires": { + "browser-process-hrtime": "^1.0.0" + } + }, + "w3c-xmlserializer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz", + "integrity": "sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg==", + "requires": { + "domexception": "^1.0.1", + "webidl-conversions": "^4.0.2", + "xml-name-validator": "^3.0.0" + } + }, + "walker": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz", + "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=", + "requires": { + "makeerror": "1.0.x" + } + }, + "wcwidth": { + "version": "1.0.1", + "requires": { + "defaults": "^1.0.3" + } + }, + "webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==" + }, + "whatwg-encoding": { + "version": "1.0.5", + "requires": { + "iconv-lite": "0.4.24" + } + }, + "whatwg-mimetype": { + "version": "2.3.0" + }, + "whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, + "which": { + "version": "1.3.1", + "requires": { + "isexe": "^2.0.0" + } + }, + "which-boxed-primitive": { + "version": "1.0.2", + "requires": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + } + }, + "which-module": { + "version": "2.0.0" + }, + "word-wrap": { + "version": "1.2.3" + }, + "wrap-ansi": { + "version": "3.0.1", + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0" + }, + "string-width": { + "version": "2.1.1", + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "wrappy": { + "version": "1.0.2" + }, + "write": { + "version": "1.0.3", + "requires": { + "mkdirp": "^0.5.1" + } + }, + "write-file-atomic": { + "version": "3.0.3", + "requires": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "ws": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.4.tgz", + "integrity": "sha512-Qm8k8ojNQIMx7S+Zp8u/uHOx7Qazv3Yv4q68MiWWWOJhiwG5W3x7iqmRtJo8xxrciZUY4vRxUTJCKuRnF28ZZw==" + }, + "xml-name-validator": { + "version": "3.0.0" + }, + "xmlchars": { + "version": "2.2.0" + }, + "y18n": { + "version": "4.0.3" + }, + "yallist": { + "version": "4.0.0" + }, + "yaml": { + "version": "1.10.2" + }, + "yargs": { + "version": "15.4.1", + "requires": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + } + }, + "yargs-parser": { + "version": "18.1.3", + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, "@identity.com/uca": { "version": "github:identity-com/uca#7996a9a2b6d3080c416568a7be9db2abf3413350", "from": "github:identity-com/uca#v1.0.30", @@ -1370,21 +7920,6 @@ "supports-color": "^7.1.0" } }, - "ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", - "dev": true - }, - "is-ci": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", - "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", - "dev": true, - "requires": { - "ci-info": "^2.0.0" - } - }, "jest-util": { "version": "25.5.0", "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-25.5.0.tgz", @@ -1541,12 +8076,6 @@ "supports-color": "^7.1.0" } }, - "ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", - "dev": true - }, "fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", @@ -1556,15 +8085,6 @@ "to-regex-range": "^5.0.1" } }, - "is-ci": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", - "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", - "dev": true, - "requires": { - "ci-info": "^2.0.0" - } - }, "is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -1795,21 +8315,6 @@ "supports-color": "^7.1.0" } }, - "ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", - "dev": true - }, - "is-ci": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", - "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", - "dev": true, - "requires": { - "ci-info": "^2.0.0" - } - }, "jest-util": { "version": "25.5.0", "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-25.5.0.tgz", @@ -2011,28 +8516,13 @@ "supports-color": "^7.1.0" } }, - "ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", - "dev": true - }, "fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "is-ci": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", - "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "dev": true, "requires": { - "ci-info": "^2.0.0" + "to-regex-range": "^5.0.1" } }, "is-number": { @@ -2041,6 +8531,18 @@ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true }, + "istanbul-lib-instrument": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", + "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", + "dev": true, + "requires": { + "@babel/core": "^7.7.5", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.0.0", + "semver": "^6.3.0" + } + }, "jest-haste-map": { "version": "25.5.1", "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-25.5.1.tgz", @@ -2301,12 +8803,6 @@ "supports-color": "^7.1.0" } }, - "ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", - "dev": true - }, "fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", @@ -2316,15 +8812,6 @@ "to-regex-range": "^5.0.1" } }, - "is-ci": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", - "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", - "dev": true, - "requires": { - "ci-info": "^2.0.0" - } - }, "is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -2421,23 +8908,23 @@ } }, "@jest/transform": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.0.6.tgz", - "integrity": "sha512-rj5Dw+mtIcntAUnMlW/Vju5mr73u8yg+irnHwzgtgoeI6cCPOvUwQ0D1uQtc/APmWgvRweEb1g05pkUpxH3iCA==", + "version": "27.4.6", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.4.6.tgz", + "integrity": "sha512-9MsufmJC8t5JTpWEQJ0OcOOAXaH5ioaIX6uHVBLBMoCZPfKKQF+EqP8kACAvCZ0Y1h2Zr3uOccg8re+Dr5jxyw==", "dev": true, "requires": { "@babel/core": "^7.1.0", - "@jest/types": "^27.0.6", - "babel-plugin-istanbul": "^6.0.0", + "@jest/types": "^27.4.2", + "babel-plugin-istanbul": "^6.1.1", "chalk": "^4.0.0", "convert-source-map": "^1.4.0", "fast-json-stable-stringify": "^2.0.0", "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.0.6", - "jest-regex-util": "^27.0.6", - "jest-util": "^27.0.6", + "jest-haste-map": "^27.4.6", + "jest-regex-util": "^27.4.0", + "jest-util": "^27.4.2", "micromatch": "^4.0.4", - "pirates": "^4.0.1", + "pirates": "^4.0.4", "slash": "^3.0.0", "source-map": "^0.6.1", "write-file-atomic": "^3.0.0" @@ -2501,9 +8988,9 @@ } }, "@jest/types": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", - "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", + "version": "27.4.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.4.2.tgz", + "integrity": "sha512-j35yw0PMTPpZsUoOBiuHzr1zTYoad1cVIE0ajEjcrJONxxrko/IRGKkXx3os0Nsi4Hu3+5VmDbVfq5WhG/pWAg==", "dev": true, "requires": { "@types/istanbul-lib-coverage": "^2.0.0", @@ -2542,10 +9029,62 @@ "type-detect": "4.0.8" } }, + "@stablelib/binary": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@stablelib/binary/-/binary-1.0.1.tgz", + "integrity": "sha512-ClJWvmL6UBM/wjkvv/7m5VP3GMr9t0osr4yVgLZsLCOz4hGN9gIAFEqnJ0TsSMAN+n840nf2cHZnA5/KFqHC7Q==", + "requires": { + "@stablelib/int": "^1.0.1" + } + }, + "@stablelib/ed25519": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@stablelib/ed25519/-/ed25519-1.0.2.tgz", + "integrity": "sha512-FtnvUwvKbp6l1dNcg4CswMAVFVu/nzLK3oC7/PRtjYyHbWsIkD8j+5cjXHmwcCpdCpRCaTGACkEhhMQ1RcdSOQ==", + "requires": { + "@stablelib/random": "^1.0.1", + "@stablelib/sha512": "^1.0.1", + "@stablelib/wipe": "^1.0.1" + } + }, + "@stablelib/hash": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@stablelib/hash/-/hash-1.0.1.tgz", + "integrity": "sha512-eTPJc/stDkdtOcrNMZ6mcMK1e6yBbqRBaNW55XA1jU8w/7QdnCF0CmMmOD1m7VSkBR44PWrMHU2l6r8YEQHMgg==" + }, + "@stablelib/int": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@stablelib/int/-/int-1.0.1.tgz", + "integrity": "sha512-byr69X/sDtDiIjIV6m4roLVWnNNlRGzsvxw+agj8CIEazqWGOQp2dTYgQhtyVXV9wpO6WyXRQUzLV/JRNumT2w==" + }, + "@stablelib/random": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@stablelib/random/-/random-1.0.1.tgz", + "integrity": "sha512-zOh+JHX3XG9MSfIB0LZl/YwPP9w3o6WBiJkZvjPoKKu5LKFW4OLV71vMxWp9qG5T43NaWyn0QQTWgqCdO+yOBQ==", + "requires": { + "@stablelib/binary": "^1.0.1", + "@stablelib/wipe": "^1.0.1" + } + }, + "@stablelib/sha512": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@stablelib/sha512/-/sha512-1.0.1.tgz", + "integrity": "sha512-13gl/iawHV9zvDKciLo1fQ8Bgn2Pvf7OV6amaRVKiq3pjQ3UmEpXxWiAfV8tYjUpeZroBxtyrwtdooQT/i3hzw==", + "requires": { + "@stablelib/binary": "^1.0.1", + "@stablelib/hash": "^1.0.1", + "@stablelib/wipe": "^1.0.1" + } + }, + "@stablelib/wipe": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@stablelib/wipe/-/wipe-1.0.1.tgz", + "integrity": "sha512-WfqfX/eXGiAd3RJe4VU2snh/ZPwtSjLG4ynQ/vYzvghTh7dHFcI1wl+nrkWG6lGhukOxOsUHfv8dUXr58D0ayg==" + }, "@types/babel__core": { - "version": "7.1.15", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.15.tgz", - "integrity": "sha512-bxlMKPDbY8x5h6HBwVzEOk2C8fb6SLfYQ5Jw3uBYuYF1lfWk/kbLd81la82vrIkBb0l+JdmrZaDikPrNxpS/Ew==", + "version": "7.1.18", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.18.tgz", + "integrity": "sha512-S7unDjm/C7z2A2R9NzfKCK1I+BAALDtxEmsJBwlB3EzNfb929ykjL++1CK9LO++EIp2fQrC8O+BwjKvz6UeDyQ==", "dev": true, "requires": { "@babel/parser": "^7.1.0", @@ -2556,9 +9095,9 @@ } }, "@types/babel__generator": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.3.tgz", - "integrity": "sha512-/GWCmzJWqV7diQW54smJZzWbSFf4QYtF71WCKhcx6Ru/tFyQIY2eiiITcCAeuPbNSvT9YCGkVMqqvSk2Z0mXiA==", + "version": "7.6.4", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz", + "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==", "dev": true, "requires": { "@babel/types": "^7.0.0" @@ -2593,9 +9132,9 @@ } }, "@types/istanbul-lib-coverage": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz", - "integrity": "sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", + "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", "dev": true }, "@types/istanbul-lib-report": { @@ -3111,16 +9650,16 @@ "dev": true }, "babel-jest": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.0.6.tgz", - "integrity": "sha512-iTJyYLNc4wRofASmofpOc5NK9QunwMk+TLFgGXsTFS8uEqmd8wdI7sga0FPe2oVH3b5Agt/EAK1QjPEuKL8VfA==", + "version": "27.4.6", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.4.6.tgz", + "integrity": "sha512-qZL0JT0HS1L+lOuH+xC2DVASR3nunZi/ozGhpgauJHgmI7f8rudxf6hUjEHympdQ/J64CdKmPkgfJ+A3U6QCrg==", "dev": true, "requires": { - "@jest/transform": "^27.0.6", - "@jest/types": "^27.0.6", + "@jest/transform": "^27.4.6", + "@jest/types": "^27.4.2", "@types/babel__core": "^7.1.14", - "babel-plugin-istanbul": "^6.0.0", - "babel-preset-jest": "^27.0.6", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^27.4.0", "chalk": "^4.0.0", "graceful-fs": "^4.2.4", "slash": "^3.0.0" @@ -3176,22 +9715,22 @@ } }, "babel-plugin-istanbul": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz", - "integrity": "sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ==", + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", "@istanbuljs/load-nyc-config": "^1.0.0", "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^4.0.0", + "istanbul-lib-instrument": "^5.0.4", "test-exclude": "^6.0.0" } }, "babel-plugin-jest-hoist": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.0.6.tgz", - "integrity": "sha512-CewFeM9Vv2gM7Yr9n5eyyLVPRSiBnk6lKZRjgwYnGKSl9M14TMn2vkN02wTF04OGuSDLEzlWiMzvjXuW9mB6Gw==", + "version": "27.4.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.4.0.tgz", + "integrity": "sha512-Jcu7qS4OX5kTWBc45Hz7BMmgXuJqRnhatqpUhnzGC3OBYpOmf2tv6jFNwZpwM7wU7MUuv2r9IPS/ZlYOuburVw==", "dev": true, "requires": { "@babel/template": "^7.3.3", @@ -3425,12 +9964,12 @@ } }, "babel-preset-jest": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.0.6.tgz", - "integrity": "sha512-WObA0/Biw2LrVVwZkF/2GqbOdzhKD6Fkdwhoy9ASIrOWr/zodcSpQh72JOkEn6NWyjmnPDjNSqaGN4KnpKzhXw==", + "version": "27.4.0", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.4.0.tgz", + "integrity": "sha512-NK4jGYpnBvNxcGo7/ZpZJr51jCGT+3bwwpVIDY2oNfTxJJldRtB4VAcYdgp1loDE50ODuTu+yBjpMAswv5tlpg==", "dev": true, "requires": { - "babel-plugin-jest-hoist": "^27.0.6", + "babel-plugin-jest-hoist": "^27.4.0", "babel-preset-current-node-syntax": "^1.0.0" } }, @@ -3536,19 +10075,47 @@ } }, "base-x": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.8.tgz", - "integrity": "sha512-Rl/1AWP4J/zRrk54hhlxH4drNxPJXYUaKffODVI53/dAsV4t9fBxyxYKAVPU1XBHxYwOWP9h9H0hM2MVw4YfJA==", + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.9.tgz", + "integrity": "sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==", "requires": { "safe-buffer": "^5.0.1" } }, + "base58-universal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/base58-universal/-/base58-universal-1.0.0.tgz", + "integrity": "sha512-v0Ja4jwaQP8gBZPNXpfaXlLht2ed/Gp3AsVUZXtlZgY1qbKS0CjxvYs43U0Gh00zbVc1neMe+q/ULJ7ubVyB+w==", + "requires": { + "esm": "^3.2.25" + } + }, + "base64url": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/base64url/-/base64url-3.0.1.tgz", + "integrity": "sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A==" + }, + "base64url-universal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/base64url-universal/-/base64url-universal-1.1.0.tgz", + "integrity": "sha512-WyftvZqye29YQ10ZnuiBeEj0lk8SN8xHU9hOznkLc85wS1cLTp6RpzlMrHxMPD9nH7S55gsBqMqgGyz93rqmkA==", + "requires": { + "base64url": "^3.0.0" + } + }, "bcrypt-pbkdf": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", "requires": { "tweetnacl": "^0.14.3" + }, + "dependencies": { + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" + } } }, "bech32": { @@ -3917,9 +10484,9 @@ } }, "ci-info": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.2.0.tgz", - "integrity": "sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz", + "integrity": "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==", "dev": true }, "cipher-base": { @@ -4261,6 +10828,11 @@ "which": "^2.0.1" } }, + "crypto-ld": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/crypto-ld/-/crypto-ld-5.1.0.tgz", + "integrity": "sha512-Dy1QoQzj+2K6UlGZ9l34cPp+g/YHOd+r3/DXXQTnnz5btGb0vqDlkZBn+icYmwntEmW0bvGVwFWvcwZSbk1EEQ==" + }, "cssom": { "version": "0.4.4", "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", @@ -4417,6 +10989,11 @@ "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", "dev": true }, + "did-io": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/did-io/-/did-io-0.8.3.tgz", + "integrity": "sha512-M1q+9bZ74bBlt3bpWX0P2rESqpDnVU5ef+WQ1+q27jPTT7xzw54jGrudUin2JJhqWjpAvuSGXWgpqWP1mi/aJQ==" + }, "diff-sequences": { "version": "25.2.6", "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-25.2.6.tgz", @@ -4475,6 +11052,14 @@ "safe-buffer": "^5.0.1" } }, + "ed2curve": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/ed2curve/-/ed2curve-0.3.0.tgz", + "integrity": "sha512-8w2fmmq3hv9rCrcI7g9hms2pMunQr1JINfcjwR9tAyZqhtyaMN991lF/ZfHfr5tzZQ8c7y7aBgZbjfbd0fjFwQ==", + "requires": { + "tweetnacl": "1.x.x" + } + }, "electron-to-chromium": { "version": "1.3.770", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.770.tgz", @@ -5170,6 +11755,11 @@ "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", "dev": true }, + "esm": { + "version": "3.2.25", + "resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz", + "integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==" + }, "espree": { "version": "3.5.4", "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.4.tgz", @@ -6146,9 +12736,9 @@ } }, "import-local": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.2.tgz", - "integrity": "sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", "dev": true, "requires": { "pkg-dir": "^4.2.0", @@ -6299,12 +12889,20 @@ "dev": true }, "is-ci": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.0.tgz", - "integrity": "sha512-kDXyttuLeslKAHYL/K28F2YkM3x5jvFPEw3yXbRptXydjD9rpLEz+C5K5iutY9ZiUu6AP41JdvRQwF4Iqs4ZCQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", "dev": true, "requires": { - "ci-info": "^3.1.1" + "ci-info": "^2.0.0" + }, + "dependencies": { + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + } } }, "is-core-module": { @@ -6542,20 +13140,21 @@ "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" }, "istanbul-lib-coverage": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz", - "integrity": "sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", + "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", "dev": true }, "istanbul-lib-instrument": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", - "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.1.0.tgz", + "integrity": "sha512-czwUz525rkOFDJxfKK6mYfIs9zBKILyrZQxjz3ABhjQXhbhFsSbo1HW/BFcsDnfJYJWA6thRR5/TUY2qs5W99Q==", "dev": true, "requires": { - "@babel/core": "^7.7.5", + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-coverage": "^3.2.0", "semver": "^6.3.0" }, "dependencies": { @@ -6596,9 +13195,9 @@ } }, "istanbul-lib-source-maps": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz", - "integrity": "sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", "dev": true, "requires": { "debug": "^4.1.1", @@ -6607,9 +13206,9 @@ }, "dependencies": { "debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", "dev": true, "requires": { "ms": "2.1.2" @@ -6630,9 +13229,9 @@ } }, "istanbul-reports": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.2.tgz", - "integrity": "sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.3.tgz", + "integrity": "sha512-x9LtDVtfm/t1GFiLl3NffC7hz+I1ragvgX1P/Lg1NlIagifZDKUkuuaAxH/qpwj2IuEfD8G2Bs/UKp+sZ/pKkg==", "dev": true, "requires": { "html-escaper": "^2.0.0", @@ -6691,21 +13290,6 @@ "supports-color": "^7.1.0" } }, - "ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", - "dev": true - }, - "is-ci": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", - "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", - "dev": true, - "requires": { - "ci-info": "^2.0.0" - } - }, "jest-cli": { "version": "25.5.4", "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-25.5.4.tgz", @@ -7021,12 +13605,6 @@ "supports-color": "^7.1.0" } }, - "ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", - "dev": true - }, "fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", @@ -7036,15 +13614,6 @@ "to-regex-range": "^5.0.1" } }, - "is-ci": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", - "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", - "dev": true, - "requires": { - "ci-info": "^2.0.0" - } - }, "is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -7245,21 +13814,6 @@ "supports-color": "^7.1.0" } }, - "ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", - "dev": true - }, - "is-ci": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", - "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", - "dev": true, - "requires": { - "ci-info": "^2.0.0" - } - }, "jest-util": { "version": "25.5.0", "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-25.5.0.tgz", @@ -7345,21 +13899,6 @@ "supports-color": "^7.1.0" } }, - "ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", - "dev": true - }, - "is-ci": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", - "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", - "dev": true, - "requires": { - "ci-info": "^2.0.0" - } - }, "jest-util": { "version": "25.5.0", "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-25.5.0.tgz", @@ -7445,21 +13984,6 @@ "supports-color": "^7.1.0" } }, - "ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", - "dev": true - }, - "is-ci": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", - "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", - "dev": true, - "requires": { - "ci-info": "^2.0.0" - } - }, "jest-util": { "version": "25.5.0", "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-25.5.0.tgz", @@ -7497,22 +14021,22 @@ "dev": true }, "jest-haste-map": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.0.6.tgz", - "integrity": "sha512-4ldjPXX9h8doB2JlRzg9oAZ2p6/GpQUNAeiYXqcpmrKbP0Qev0wdZlxSMOmz8mPOEnt4h6qIzXFLDi8RScX/1w==", + "version": "27.4.6", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.4.6.tgz", + "integrity": "sha512-0tNpgxg7BKurZeFkIOvGCkbmOHbLFf4LUQOxrQSMjvrQaQe3l6E8x6jYC1NuWkGo5WDdbr8FEzUxV2+LWNawKQ==", "dev": true, "requires": { - "@jest/types": "^27.0.6", + "@jest/types": "^27.4.2", "@types/graceful-fs": "^4.1.2", "@types/node": "*", "anymatch": "^3.0.3", "fb-watchman": "^2.0.0", "fsevents": "^2.3.2", "graceful-fs": "^4.2.4", - "jest-regex-util": "^27.0.6", - "jest-serializer": "^27.0.6", - "jest-util": "^27.0.6", - "jest-worker": "^27.0.6", + "jest-regex-util": "^27.4.0", + "jest-serializer": "^27.4.0", + "jest-util": "^27.4.2", + "jest-worker": "^27.4.6", "micromatch": "^4.0.4", "walker": "^1.0.7" }, @@ -7676,21 +14200,6 @@ "supports-color": "^7.1.0" } }, - "ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", - "dev": true - }, - "is-ci": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", - "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", - "dev": true, - "requires": { - "ci-info": "^2.0.0" - } - }, "jest-util": { "version": "25.5.0", "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-25.5.0.tgz", @@ -7922,9 +14431,9 @@ "dev": true }, "jest-regex-util": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.0.6.tgz", - "integrity": "sha512-SUhPzBsGa1IKm8hx2F4NfTGGp+r7BXJ4CulsZ1k2kI+mGLG+lxGrs76veN2LF/aUdGosJBzKgXmNCw+BzFqBDQ==", + "version": "27.4.0", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.4.0.tgz", + "integrity": "sha512-WeCpMpNnqJYMQoOjm1nTtsgbR4XHAk1u00qDoNBQoykM280+/TmgA5Qh5giC1ecy6a5d4hbSsHzpBtu5yvlbEg==", "dev": true }, "jest-resolve": { @@ -8189,12 +14698,6 @@ "supports-color": "^7.1.0" } }, - "ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", - "dev": true - }, "fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", @@ -8204,15 +14707,6 @@ "to-regex-range": "^5.0.1" } }, - "is-ci": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", - "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", - "dev": true, - "requires": { - "ci-info": "^2.0.0" - } - }, "is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -8426,12 +14920,6 @@ "supports-color": "^7.1.0" } }, - "ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", - "dev": true - }, "fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", @@ -8441,15 +14929,6 @@ "to-regex-range": "^5.0.1" } }, - "is-ci": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", - "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", - "dev": true, - "requires": { - "ci-info": "^2.0.0" - } - }, "is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -8570,9 +15049,9 @@ } }, "jest-serializer": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.0.6.tgz", - "integrity": "sha512-PtGdVK9EGC7dsaziskfqaAPib6wTViY3G8E5wz9tLVPhHyiDNTZn/xjZ4khAw+09QkoOVpn7vF5nPSN6dtBexA==", + "version": "27.4.0", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.4.0.tgz", + "integrity": "sha512-RDhpcn5f1JYTX2pvJAGDcnsNTnsV9bjYPU8xcV+xPwOXnUPOQwf4ZEuiU6G9H1UztH+OapMgu/ckEVwO87PwnQ==", "dev": true, "requires": { "@types/node": "*", @@ -8661,16 +15140,16 @@ } }, "jest-util": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.0.6.tgz", - "integrity": "sha512-1JjlaIh+C65H/F7D11GNkGDDZtDfMEM8EBXsvd+l/cxtgQ6QhxuloOaiayt89DxUvDarbVhqI98HhgrM1yliFQ==", + "version": "27.4.2", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.4.2.tgz", + "integrity": "sha512-YuxxpXU6nlMan9qyLuxHaMMOzXAl5aGZWCSzben5DhLHemYQxCc4YK+4L3ZrCutT8GPQ+ui9k5D8rUJoDioMnA==", "dev": true, "requires": { - "@jest/types": "^27.0.6", + "@jest/types": "^27.4.2", "@types/node": "*", "chalk": "^4.0.0", + "ci-info": "^3.2.0", "graceful-fs": "^4.2.4", - "is-ci": "^3.0.0", "picomatch": "^2.2.3" } }, @@ -8786,21 +15265,6 @@ "supports-color": "^7.1.0" } }, - "ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", - "dev": true - }, - "is-ci": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", - "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", - "dev": true, - "requires": { - "ci-info": "^2.0.0" - } - }, "jest-util": { "version": "25.5.0", "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-25.5.0.tgz", @@ -8832,9 +15296,9 @@ } }, "jest-worker": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.0.6.tgz", - "integrity": "sha512-qupxcj/dRuA3xHPMUd40gr2EaAurFbkwzOh7wfPaeE9id7hyjURRQoqNfHifHK3XjJU6YJJUQKILGUnwGPEOCA==", + "version": "27.4.6", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.4.6.tgz", + "integrity": "sha512-gHWJF/6Xi5CTG5QCvROr6GcmpIqNYpDJyc8A1h/DyXqH1tD6SnRCM0d3U5msV31D2LB/U+E0M+W4oyvKV44oNw==", "dev": true, "requires": { "@types/node": "*", @@ -9056,9 +15520,9 @@ } }, "lines-and-columns": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", - "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", "dev": true }, "load-json-file": { @@ -9173,7 +15637,6 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, "requires": { "yallist": "^4.0.0" } @@ -9189,12 +15652,12 @@ } }, "makeerror": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", - "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", "dev": true, "requires": { - "tmpl": "1.0.x" + "tmpl": "1.0.5" } }, "map-cache": { @@ -9385,12 +15848,6 @@ "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", "dev": true }, - "node-modules-regexp": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz", - "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=", - "dev": true - }, "node-notifier": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-6.0.0.tgz", @@ -13334,13 +19791,10 @@ } }, "pirates": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz", - "integrity": "sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==", - "dev": true, - "requires": { - "node-modules-regexp": "^1.0.0" - } + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.4.tgz", + "integrity": "sha512-ZIrVPH+A52Dw84R0L3/VS9Op04PuQ2SEoJL6bkshmiTic/HldyW9Tf7oH5mhJZBK7NmDx27vSMrYEXPXclpDKw==", + "dev": true }, "pkg-dir": { "version": "1.0.0", @@ -13532,9 +19986,9 @@ "dev": true }, "prompts": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.1.tgz", - "integrity": "sha512-EQyfIuO2hPDsX1L/blblV+H7I0knhgAd82cVneCwcdND9B8AuCDuRcBH6yIcG4dFzlOUqbazQqwGjx5xmsNLuQ==", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", "dev": true, "requires": { "kleur": "^3.0.3", @@ -14417,9 +20871,9 @@ } }, "source-map-support": { - "version": "0.5.19", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", - "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", "dev": true, "requires": { "buffer-from": "^1.0.0", @@ -14510,6 +20964,13 @@ "jsbn": "~0.1.0", "safer-buffer": "^2.0.2", "tweetnacl": "~0.14.0" + }, + "dependencies": { + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" + } } }, "stack-trace": { @@ -14984,9 +21445,9 @@ } }, "tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", + "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==" }, "type-check": { "version": "0.3.2", @@ -15254,12 +21715,12 @@ } }, "walker": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz", - "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", "dev": true, "requires": { - "makeerror": "1.0.x" + "makeerror": "1.0.12" } }, "webidl-conversions": { @@ -15429,9 +21890,9 @@ } }, "ws": { - "version": "7.5.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.2.tgz", - "integrity": "sha512-lkF7AWRicoB9mAgjeKbGqVUekLnSNO4VjKVnuPHpQeOxZOErX6BPXwJk70nFslRCEEA8EVW7ZjKwXaP9N+1sKQ==", + "version": "7.5.6", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.6.tgz", + "integrity": "sha512-6GLgCqo2cy2A2rjCNFlxQS6ZljG/coZfZXclldI8FB/1G3CCI36Zd8xy2HrFVACi8tfk5XrgLQEk+P0Tnz9UcA==", "dev": true }, "xml-name-validator": { @@ -15461,8 +21922,7 @@ "yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "yargs": { "version": "15.4.1", diff --git a/package.json b/package.json index 82c0e43f..008e347b 100644 --- a/package.json +++ b/package.json @@ -65,12 +65,17 @@ "clear": "^0.1.0" }, "dependencies": { + "@digitalbazaar/did-io": "^1.1.0", + "@digitalbazaar/did-method-key": "^2.0.0", + "@identity.com/did-io-driver-sol": "file:/Users/william/Work/identity.com/sol-did/drivers/did-io", "@identity.com/uca": "github:identity-com/uca#v1.0.30", "ajv": "^7.2.4", "ajv-formats": "^2.0.2", "babel-runtime": "^6.26.0", "bitcoinjs-lib": "git+https://github.com/dabura667/bitcoinjs-lib.git#bcash330", "bottlejs": "^1.7.1", + "bs58": "^4.0.1", + "did-io": "^0.8.3", "dotenv": "^8.6.0", "flat": "^4.1.0", "json-schema-traverse": "^1.0.0", @@ -83,6 +88,7 @@ "request-promise-native": "^1.0.9", "sift": "^13.5.4", "sjcl": "github:civicteam/sjcl#v1.0.8-ecc", + "tweetnacl": "^1.0.3", "type-of-is": "^3.5.1", "unix-timestamp": "^0.2.0", "uuid": "^3.3.2", From 4c65de4d2daf7778c6d9293465468f2a6eb66660 Mon Sep 17 00:00:00 2001 From: William Brooks Date: Tue, 11 Jan 2022 17:46:26 +0200 Subject: [PATCH 23/52] IDCOM-1427 Reverted unnecessary code changes --- __test__/creds/VerifiableCredential.test.js | 1004 ++++++------------- src/creds/CvcMerkleProof.js | 10 +- src/creds/VerifiableCredential.js | 37 +- src/creds/VerifiableCredentialProxy.js | 5 +- 4 files changed, 340 insertions(+), 716 deletions(-) diff --git a/__test__/creds/VerifiableCredential.test.js b/__test__/creds/VerifiableCredential.test.js index 44ead811..b487a1c7 100644 --- a/__test__/creds/VerifiableCredential.test.js +++ b/__test__/creds/VerifiableCredential.test.js @@ -21,26 +21,14 @@ jest.setTimeout(150000); const XPVT1 = 'xprvA1yULd2DFYnQRVbLiAKrFdftVLsANiC3rqLvp8iiCbnchcWqd6kJPoaV3sy7R6CjHM8RbpoNdWVgiPZLVa1EmneRLtwiitNpWgwyVmjvay7'; // eslint-disable-line const XPUB1 = 'xpub6Expk8Z75vLhdyfopBrrcmcd3NhenAuuE4GXcX8KkwKbaQqzAe4Ywbtxu9F95hRHj79PvdtYEJcoR6gesbZ79fS4bLi1PQtm81rjxAHeLL9'; // eslint-disable-line -const identityName = { - givenNames: 'Max', - otherNames: 'Abc', - familyNames: 'Mustermann', -}; -const identityDateOfBirth = { - day: 20, - month: 3, - year: 1978, -}; +const identityName = { givenNames: 'Max', otherNames: 'Abc', familyNames: 'Mustermann' }; +const identityDateOfBirth = { day: 20, month: 3, year: 1978 }; const miniCryptoManager = new MiniCryptoManagerImpl(); const signAttestationSubject = (subject, xprv, xpub) => { const { label } = subject; const { data } = subject; - const tupleToHash = JSON.stringify({ - xpub, - label, - data, - }); + const tupleToHash = JSON.stringify({ xpub, label, data }); const hashToSignHex = sjcl.codec.hex.fromBits(sjcl.hash.sha256.hash(tupleToHash)); const keyName = `TEMP_KEY_${new Date().getTime()}`; miniCryptoManager.installKey(keyName, xprv); @@ -88,30 +76,21 @@ describe('Unit tests for Verifiable Credentials', () => { const dob = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', identityDateOfBirth); return expect(VC.create('cvc:cred:Test', uuidv4(), null, credentialSubject, [name, dob])) - .rejects - .toThrow(/cvc:cred:Test is not defined/); + .rejects.toThrow(/cvc:cred:Test is not defined/); }); test('New Defined Credentials', async () => { const name = await Claim.create('claim-cvc:Identity.name-v1', identityName); const dob = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', identityDateOfBirth); const cred = await VC.create('credential-cvc:Identity-v3', uuidv4(), null, credentialSubject, [name, dob]); - expect(cred) - .toBeDefined(); - expect(cred.credentialSubject.identity.name.givenNames) - .toBe('Max'); - expect(cred.credentialSubject.identity.name.otherNames) - .toBe('Abc'); - expect(cred.credentialSubject.identity.name.familyNames) - .toBe('Mustermann'); - expect(cred.credentialSubject.identity.dateOfBirth.day) - .toBe(20); - expect(cred.credentialSubject.identity.dateOfBirth.month) - .toBe(3); - expect(cred.credentialSubject.identity.dateOfBirth.year) - .toBe(1978); - expect(cred.proof.leaves) - .toHaveLength(8); + expect(cred).toBeDefined(); + expect(cred.credentialSubject.identity.name.givenNames).toBe('Max'); + expect(cred.credentialSubject.identity.name.otherNames).toBe('Abc'); + expect(cred.credentialSubject.identity.name.familyNames).toBe('Mustermann'); + expect(cred.credentialSubject.identity.dateOfBirth.day).toBe(20); + expect(cred.credentialSubject.identity.dateOfBirth.month).toBe(3); + expect(cred.credentialSubject.identity.dateOfBirth.year).toBe(1978); + expect(cred.proof.leaves).toHaveLength(8); }); test('should validate new defined credentials with the obligatory Meta:expirationDate UCA with' @@ -119,67 +98,46 @@ describe('Unit tests for Verifiable Credentials', () => { const name = await Claim.create('claim-cvc:Identity.name-v1', identityName); const dob = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', identityDateOfBirth); const cred = await VC.create('credential-cvc:Identity-v3', uuidv4(), null, credentialSubject, [name, dob]); - expect(cred) - .toBeDefined(); - expect(cred.expirationDate) - .toBeNull(); + expect(cred).toBeDefined(); + expect(cred.expirationDate).toBeNull(); }); test('New Expirable Credentials', async () => { const name = await Claim.create('claim-cvc:Identity.name-v1', identityName); const dob = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', identityDateOfBirth); const cred = await VC.create('credential-cvc:Identity-v3', uuidv4(), '-1d', credentialSubject, [name, dob]); - expect(cred) - .toBeDefined(); - expect(cred.credentialSubject.identity.name.givenNames) - .toBe('Max'); - expect(cred.credentialSubject.identity.name.otherNames) - .toBe('Abc'); - expect(cred.credentialSubject.identity.name.familyNames) - .toBe('Mustermann'); - expect(cred.credentialSubject.identity.dateOfBirth.day) - .toBe(20); - expect(cred.credentialSubject.identity.dateOfBirth.month) - .toBe(3); - expect(cred.credentialSubject.identity.dateOfBirth.year) - .toBe(1978); - expect(_.find(cred.proof.leaves, { identifier: 'cvc:Meta:issuer' })) - .toBeDefined(); - expect(_.find(cred.proof.leaves, { identifier: 'cvc:Meta:issuanceDate' })) - .toBeDefined(); - expect(cred.expirationDate) - .toBeDefined(); - expect(_.find(cred.proof.leaves, { identifier: 'cvc:Meta:expirationDate' })) - .toBeDefined(); - expect(cred.proof.leaves) - .toHaveLength(8); + expect(cred).toBeDefined(); + expect(cred.credentialSubject.identity.name.givenNames).toBe('Max'); + expect(cred.credentialSubject.identity.name.otherNames).toBe('Abc'); + expect(cred.credentialSubject.identity.name.familyNames).toBe('Mustermann'); + expect(cred.credentialSubject.identity.dateOfBirth.day).toBe(20); + expect(cred.credentialSubject.identity.dateOfBirth.month).toBe(3); + expect(cred.credentialSubject.identity.dateOfBirth.year).toBe(1978); + expect(_.find(cred.proof.leaves, { identifier: 'cvc:Meta:issuer' })).toBeDefined(); + expect(_.find(cred.proof.leaves, { identifier: 'cvc:Meta:issuanceDate' })).toBeDefined(); + expect(cred.expirationDate).toBeDefined(); + expect(_.find(cred.proof.leaves, { identifier: 'cvc:Meta:expirationDate' })).toBeDefined(); + expect(cred.proof.leaves).toHaveLength(8); }); test('New Defined Credentials return the incorrect global Credential Identifier', async () => { const name = await Claim.create('claim-cvc:Identity.name-v1', identityName); const dob = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', identityDateOfBirth); const cred = await VC.create('credential-cvc:Identity-v3', uuidv4(), null, credentialSubject, [name, dob]); - expect(cred.getGlobalIdentifier()) - .toBe('credential-credential-cvc:Identity-v3-3'); + expect(cred.getGlobalIdentifier()).toBe('credential-credential-cvc:Identity-v3-3'); }); it('should request an anchor for Credential and return an temporary attestation', async (done) => { const name = await Claim.create('claim-cvc:Identity.name-v1', identityName); const dob = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', identityDateOfBirth); const cred = await VC.create('credential-cvc:Identity-v3', uuidv4(), '-1d', credentialSubject, [name, dob]); - return cred.requestAnchor() - .then((updated) => { - expect(updated.proof.anchor.type) - .toBe('temporary'); - expect(updated.proof.anchor.value) - .not - .toBeDefined(); - expect(updated.proof.anchor) - .toBeDefined(); - expect(updated.proof.anchor.schema) - .toBe('dummy-20180201'); - done(); - }); + return cred.requestAnchor().then((updated) => { + expect(updated.proof.anchor.type).toBe('temporary'); + expect(updated.proof.anchor.value).not.toBeDefined(); + expect(updated.proof.anchor).toBeDefined(); + expect(updated.proof.anchor.schema).toBe('dummy-20180201'); + done(); + }); }); it('should refresh an temporary anchoring with an permanent one', async (done) => { @@ -187,30 +145,22 @@ describe('Unit tests for Verifiable Credentials', () => { const dob = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', identityDateOfBirth); const cred = await VC.create('credential-cvc:Identity-v3', uuidv4(), null, credentialSubject, [name, dob]); - cred.requestAnchor = jest.fn() - .mockImplementation(async () => { - // mock the function or otherwise it would call the server - const credentialContents = fs.readFileSync('__test__/creds/fixtures/VCPermanentAnchor.json', 'utf8'); - const mockedVc = await VC.fromJSON(JSON.parse(credentialContents)); - mockedVc.updateAnchor = jest.fn() - .mockImplementation(async () => mockedVc); - return mockedVc; - }); - return cred.requestAnchor() - .then((updated) => { - expect(updated.proof.anchor) - .toBeDefined(); - return updated.updateAnchor() - .then((newUpdated) => { - expect(newUpdated.proof.anchor.type) - .toBe('permanent'); - expect(newUpdated.proof.anchor) - .toBeDefined(); - expect(newUpdated.proof.anchor.subject) - .toBeDefined(); - done(); - }); + cred.requestAnchor = jest.fn().mockImplementation(async () => { + // mock the function or otherwise it would call the server + const credentialContents = fs.readFileSync('__test__/creds/fixtures/VCPermanentAnchor.json', 'utf8'); + const mockedVc = await VC.fromJSON(JSON.parse(credentialContents)); + mockedVc.updateAnchor = jest.fn().mockImplementation(async () => mockedVc); + return mockedVc; + }); + return cred.requestAnchor().then((updated) => { + expect(updated.proof.anchor).toBeDefined(); + return updated.updateAnchor().then((newUpdated) => { + expect(newUpdated.proof.anchor.type).toBe('permanent'); + expect(newUpdated.proof.anchor).toBeDefined(); + expect(newUpdated.proof.anchor.subject).toBeDefined(); + done(); }); + }); }); test('Filter claims from Identity Name', async () => { @@ -221,18 +171,12 @@ describe('Unit tests for Verifiable Credentials', () => { 'did:ethr:0xaf9482c84De4e2a961B98176C9f295F9b6008BfD', null, credentialSubject, [nameUca, dobUca]); const filtered = simpleIdentity.filter(['claim-cvc:Name.givenNames-v1']); - expect(filtered.credentialSubject.identity.name.givenNames) - .toBeDefined(); - expect(filtered.credentialSubject.identity.name.otherNames) - .not - .toBeDefined(); - expect(filtered.credentialSubject.identity.name.familyNames) - .not - .toBeDefined(); + expect(filtered.credentialSubject.identity.name.givenNames).toBeDefined(); + expect(filtered.credentialSubject.identity.name.otherNames).not.toBeDefined(); + expect(filtered.credentialSubject.identity.name.familyNames).not.toBeDefined(); const emptyFiltered = simpleIdentity.filter([]); - expect(emptyFiltered.credentialSubject) - .toEqual({}); + expect(emptyFiltered.credentialSubject).toEqual({}); }); it('Should filter claims for Email asking for claim-cvc:Contact.email-v1 and return them on the filtered VC', @@ -248,14 +192,10 @@ describe('Unit tests for Verifiable Credentials', () => { const emailUca = await Claim.create('claim-cvc:Contact.email-v1', email, '1'); const emailCredential = await VC.create('credential-cvc:Email-v3', '', null, credentialSubject, [emailUca]); const filtered = emailCredential.filter(['claim-cvc:Contact.email-v1']); - expect(filtered.credentialSubject.contact.email.domain) - .toBeDefined(); - expect(filtered.credentialSubject.contact.email.domain.tld) - .toBe('oVaPsceZ4C'); - expect(filtered.credentialSubject.contact.email.domain.name) - .toBe('UTpHKFyaaB'); - expect(filtered.credentialSubject.contact.email.username) - .toBe('ZcMpCBQ0lE'); + expect(filtered.credentialSubject.contact.email.domain).toBeDefined(); + expect(filtered.credentialSubject.contact.email.domain.tld).toBe('oVaPsceZ4C'); + expect(filtered.credentialSubject.contact.email.domain.name).toBe('UTpHKFyaaB'); + expect(filtered.credentialSubject.contact.email.username).toBe('ZcMpCBQ0lE'); }); it('Should filter claims for Email asking for cvc:Contact:domain and not return the cvc:Contact:address', @@ -274,14 +214,10 @@ describe('Unit tests for Verifiable Credentials', () => { ); const filtered = emailCredential.filter(['claim-cvc:Email.domain-v1']); - expect(filtered.credentialSubject.contact.email.domain) - .toBeDefined(); - expect(filtered.credentialSubject.contact.email.domain.tld) - .toBe('oVaPsceZ4C'); - expect(filtered.credentialSubject.contact.email.domain.name) - .toBe('UTpHKFyaaB'); - expect(filtered.credentialSubject.contact.email.username) - .toBeUndefined(); + expect(filtered.credentialSubject.contact.email.domain).toBeDefined(); + expect(filtered.credentialSubject.contact.email.domain.tld).toBe('oVaPsceZ4C'); + expect(filtered.credentialSubject.contact.email.domain.name).toBe('UTpHKFyaaB'); + expect(filtered.credentialSubject.contact.email.username).toBeUndefined(); }); it('Should filter claims for Address asking for claim-cvc:Type.address-v1' @@ -302,22 +238,14 @@ describe('Unit tests for Verifiable Credentials', () => { ); const filtered = credential.filter(['claim-cvc:Identity.address-v1']); - expect(filtered.credentialSubject.identity.address) - .toBeDefined(); - expect(filtered.credentialSubject.identity.address.country) - .toBe('X2sEB9F9W9'); - expect(filtered.credentialSubject.identity.address.county) - .toBe('sDlIM4Rjpo'); - expect(filtered.credentialSubject.identity.address.state) - .toBe('ZZEOrbenrM'); - expect(filtered.credentialSubject.identity.address.street) - .toBe('JkHgN5gdZ2'); - expect(filtered.credentialSubject.identity.address.unit) - .toBe('fo9OmPSZNe'); - expect(filtered.credentialSubject.identity.address.city) - .toBe('LVkRGsKqIf'); - expect(filtered.credentialSubject.identity.address.postalCode) - .toBe('5JhmWkXBAg'); + expect(filtered.credentialSubject.identity.address).toBeDefined(); + expect(filtered.credentialSubject.identity.address.country).toBe('X2sEB9F9W9'); + expect(filtered.credentialSubject.identity.address.county).toBe('sDlIM4Rjpo'); + expect(filtered.credentialSubject.identity.address.state).toBe('ZZEOrbenrM'); + expect(filtered.credentialSubject.identity.address.street).toBe('JkHgN5gdZ2'); + expect(filtered.credentialSubject.identity.address.unit).toBe('fo9OmPSZNe'); + expect(filtered.credentialSubject.identity.address.city).toBe('LVkRGsKqIf'); + expect(filtered.credentialSubject.identity.address.postalCode).toBe('5JhmWkXBAg'); }); it('Should filter claims for PhoneNumber asking for credential-cvc:PhoneNumber-v3 and return the full claim', @@ -336,18 +264,12 @@ describe('Unit tests for Verifiable Credentials', () => { ); const filtered = credential.filter(['claim-cvc:Contact.phoneNumber-v1']); - expect(filtered.credentialSubject.contact.phoneNumber) - .toBeDefined(); - expect(filtered.credentialSubject.contact.phoneNumber.country) - .toBe('1ApYikRwDl'); - expect(filtered.credentialSubject.contact.phoneNumber.countryCode) - .toBe('U4drpB96Hk'); - expect(filtered.credentialSubject.contact.phoneNumber.extension) - .toBe('sXZpZJTe4R'); - expect(filtered.credentialSubject.contact.phoneNumber.lineType) - .toBe('OaguqgUaR7'); - expect(filtered.credentialSubject.contact.phoneNumber.number) - .toBe('kCTGifTdom'); + expect(filtered.credentialSubject.contact.phoneNumber).toBeDefined(); + expect(filtered.credentialSubject.contact.phoneNumber.country).toBe('1ApYikRwDl'); + expect(filtered.credentialSubject.contact.phoneNumber.countryCode).toBe('U4drpB96Hk'); + expect(filtered.credentialSubject.contact.phoneNumber.extension).toBe('sXZpZJTe4R'); + expect(filtered.credentialSubject.contact.phoneNumber.lineType).toBe('OaguqgUaR7'); + expect(filtered.credentialSubject.contact.phoneNumber.number).toBe('kCTGifTdom'); }); it('Should filter claims for GenericDocumentId asking for claim-cvc:Identity.dateOfBirth-v1 and return nothing', @@ -414,8 +336,7 @@ describe('Unit tests for Verifiable Credentials', () => { ); const filtered = credential.filter(['claim-cvc:Identity.dateOfBirth-v1']); - expect(filtered.credentialSubject.document) - .toBeUndefined(); + expect(filtered.credentialSubject.document).toBeUndefined(); }); it('Should filter claims for PhoneNumber asking for cvc:Phone:countryCode and return only the' @@ -431,18 +352,12 @@ describe('Unit tests for Verifiable Credentials', () => { const credential = await VC.create('credential-cvc:PhoneNumber-v3', '', null, credentialSubject, [uca]); const filtered = credential.filter(['claim-cvc:PhoneNumber.countryCode-v1']); - expect(filtered.credentialSubject.contact.phoneNumber) - .toBeDefined(); - expect(filtered.credentialSubject.contact.phoneNumber.country) - .toBeUndefined(); - expect(filtered.credentialSubject.contact.phoneNumber.countryCode) - .toBe('U4drpB96Hk'); - expect(filtered.credentialSubject.contact.phoneNumber.extension) - .toBeUndefined(); - expect(filtered.credentialSubject.contact.phoneNumber.lineType) - .toBeUndefined(); - expect(filtered.credentialSubject.contact.phoneNumber.number) - .toBeUndefined(); + expect(filtered.credentialSubject.contact.phoneNumber).toBeDefined(); + expect(filtered.credentialSubject.contact.phoneNumber.country).toBeUndefined(); + expect(filtered.credentialSubject.contact.phoneNumber.countryCode).toBe('U4drpB96Hk'); + expect(filtered.credentialSubject.contact.phoneNumber.extension).toBeUndefined(); + expect(filtered.credentialSubject.contact.phoneNumber.lineType).toBeUndefined(); + expect(filtered.credentialSubject.contact.phoneNumber.number).toBeUndefined(); }); it('Should create IdDocument-v3 credential', async () => { @@ -487,21 +402,16 @@ describe('Unit tests for Verifiable Credentials', () => { 'credential-cvc:IdDocument-v3', '', null, credentialSubject, [type, number, name, gender, issueCountry, placeOfBirth, dateOfBirth, dateOfExpiry, nationality, evidences], ); - expect(credential) - .toBeDefined(); + expect(credential).toBeDefined(); const filtered = credential.filter(['claim-cvc:Document.dateOfBirth-v1']); - expect(filtered) - .toBeDefined(); + expect(filtered).toBeDefined(); }); it('Should hydrate a partial presentation', async () => { const presentation = await VC.fromJSON(filteredCredentialJson, true); - expect(presentation) - .toBeDefined(); + expect(presentation).toBeDefined(); - return expect(VC.fromJSON(filteredCredentialJson)) - .rejects - .toThrow(); + return expect(VC.fromJSON(filteredCredentialJson)).rejects.toThrow(); }); it('Should create alt:Identity-v1 credential', async () => { @@ -527,8 +437,7 @@ describe('Unit tests for Verifiable Credentials', () => { const credential = await VC.create( 'credential-alt:Identity-v3', '', null, credentialSubject, [name, dateOfBirth, address], ); - expect(credential) - .toBeDefined(); + expect(credential).toBeDefined(); }); it.skip('Should create and verify a credential with an array of clains ', async () => { @@ -630,10 +539,8 @@ describe('Unit tests for Verifiable Credentials', () => { const credential = await VC.create( 'credential-cvc:Covid19-v3', '', null, credentialSubject, [covidClaim], ); - expect(credential) - .toBeDefined(); - expect(credential.verifyProofs()) - .toBeTruthy(); + expect(credential).toBeDefined(); + expect(credential.verifyProofs()).toBeTruthy(); }); it('Should filter claims for GenericDocumentId asking for cvc:Document:Type and return only that claim', @@ -701,95 +608,76 @@ describe('Unit tests for Verifiable Credentials', () => { const filtered = credential.filter(['claim-cvc:Document.type-v1']); - expect(filtered.credentialSubject.document.type) - .toBe('passport'); + expect(filtered.credentialSubject.document.type).toBe('passport'); }); it('Should verify an VC of type Email', async () => { const credJSon = require('./fixtures/Email.json'); // eslint-disable-line const cred = await VC.fromJSON(credJSon); - expect(cred) - .toBeDefined(); - expect(cred.verifyProofs()) - .toBeTruthy(); + expect(cred).toBeDefined(); + expect(cred.verifyProofs()).toBeTruthy(); }); it('Should not verify an VC of with tampered domain Email', async () => { const credJSon = require('./fixtures/Email.json'); // eslint-disable-line const cred = await VC.fromJSON(credJSon); - expect(cred) - .toBeDefined(); + expect(cred).toBeDefined(); cred.credentialSubject.contact.email.domain.name = 'civic'; - expect(await cred.verifyProofs()) - .toBeFalsy(); + expect(await cred.verifyProofs()).toBeFalsy(); }); it('Should not verify an VC of with tampered username Email', async () => { const credJSon = require('./fixtures/Email.json'); // eslint-disable-line const cred = await VC.fromJSON(credJSon); - expect(cred) - .toBeDefined(); + expect(cred).toBeDefined(); cred.credentialSubject.contact.email.username = 'jpMustermann'; - expect(await cred.verifyProofs()) - .toBeFalsy(); + expect(await cred.verifyProofs()).toBeFalsy(); }); it('Should verify an VC of type Address', async () => { const credJSon = require('./fixtures/Address.json'); // eslint-disable-line const cred = await VC.fromJSON(credJSon); - expect(cred) - .toBeDefined(); - expect(cred.verifyProofs()) - .toBeTruthy(); + expect(cred).toBeDefined(); + expect(cred.verifyProofs()).toBeTruthy(); }); it('Should not verify an VC of tampered Address', async () => { const credJSon = require('./fixtures/Address.json'); // eslint-disable-line const cred = await VC.fromJSON(credJSon); - expect(cred) - .toBeDefined(); + expect(cred).toBeDefined(); cred.credentialSubject.identity.address.city = 'Rio de Janeiro'; - expect(await cred.verifyProofs()) - .toBeFalsy(); + expect(await cred.verifyProofs()).toBeFalsy(); }); it('Should verify an VC of type Identity', async () => { const credJSon = require('./fixtures/Identity.json'); // eslint-disable-line const cred = await VC.fromJSON(credJSon); - expect(cred) - .toBeDefined(); - expect(cred.verifyProofs()) - .toBeTruthy(); + expect(cred).toBeDefined(); + expect(cred.verifyProofs()).toBeTruthy(); }); it('Should verify an VC of type GenericDocumentId and doing await VC.fromJSON', async () => { const credJSon = require('./fixtures/GenericDocumentId.json'); // eslint-disable-line const cred = await VC.fromJSON(credJSon); - expect(cred) - .toBeDefined(); - expect(cred.verifyProofs()) - .toBeTruthy(); + expect(cred).toBeDefined(); + expect(cred.verifyProofs()).toBeTruthy(); }); it('Should not verify an VC of tampered GenericDocumentId', async () => { const credJSon = require('./fixtures/GenericDocumentId.json'); // eslint-disable-line const cred = await VC.fromJSON(credJSon); - expect(cred) - .toBeDefined(); + expect(cred).toBeDefined(); cred.credentialSubject.document.dateOfBirth.day = 20; cred.credentialSubject.document.dateOfBirth.year = 1900; - expect(await cred.verifyProofs()) - .toBeFalsy(); + expect(await cred.verifyProofs()).toBeFalsy(); }); it('Should verify an VC of type PhoneNumber', async () => { const credJSon = require('./fixtures/PhoneNumber.json'); // eslint-disable-line const cred = await VC.fromJSON(credJSon); - expect(cred) - .toBeDefined(); - expect(await cred.verifyProofs()) - .toBeTruthy(); + expect(cred).toBeDefined(); + expect(await cred.verifyProofs()).toBeTruthy(); }); @@ -798,17 +686,14 @@ describe('Unit tests for Verifiable Credentials', () => { + ' VERIFY_LEVELS.PROOFS level', async () => { const credJSon = require('./fixtures/Cred1.json'); // eslint-disable-line const cred = await VC.fromJSON(credJSon); - expect(cred) - .toBeDefined(); - expect(await cred.verify()) - .toBeGreaterThanOrEqual(VC.VERIFY_LEVELS.PROOFS); + expect(cred).toBeDefined(); + expect(await cred.verify()).toBeGreaterThanOrEqual(VC.VERIFY_LEVELS.PROOFS); }); it('Should verify an credential json with no cryptographic security', async () => { const credential = require('./fixtures/PhoneNumber.json'); // eslint-disable-line const isValid = await VC.nonCryptographicallySecureVerify(credential); - expect(isValid) - .toBeTruthy(); + expect(isValid).toBeTruthy(); }); it('Should verify a not anchored VC with non cryptographic verify', async () => { @@ -823,32 +708,26 @@ describe('Unit tests for Verifiable Credentials', () => { const uca = await Claim.create('claim-cvc:Contact.phoneNumber-v1', value, '1'); const credential = await VC.create('credential-cvc:PhoneNumber-v3', '', null, credentialSubject, [uca]); const isValid = await VC.nonCryptographicallySecureVerify(credential); - expect(isValid) - .toBeTruthy(); + expect(isValid).toBeTruthy(); }); it('Should fail verification of a VC with invalid cryptographic security', - async () => expect(VC.cryptographicallySecureVerify(invalidEmailJson)) - .resolves - .toBeFalsy()); + async () => expect(VC.cryptographicallySecureVerify(invalidEmailJson)).resolves.toBeFalsy()); it('Should verify an VC with cryptographic security', async (done) => { const credJSon = require('./fixtures/PhoneNumber.json'); // eslint-disable-line const credential = await VC.fromJSON(credJSon); let isValid = await VC.cryptographicallySecureVerify(credential); - expect(isValid) - .toBeTruthy(); + expect(isValid).toBeTruthy(); const verifyAttestationFunc = () => true; isValid = await VC.cryptographicallySecureVerify(credential, verifyAttestationFunc); - expect(isValid) - .toBeTruthy(); + expect(isValid).toBeTruthy(); const verifySignatureFunc = () => true; isValid = await VC.cryptographicallySecureVerify(credential, verifyAttestationFunc, verifySignatureFunc); - expect(isValid) - .toBeTruthy(); + expect(isValid).toBeTruthy(); done(); }); @@ -859,14 +738,12 @@ describe('Unit tests for Verifiable Credentials', () => { let verifyAttestationFunc = () => false; let isValid = await VC.cryptographicallySecureVerify(credential, verifyAttestationFunc); - expect(isValid) - .toBeFalsy(); + expect(isValid).toBeFalsy(); verifyAttestationFunc = () => true; const verifySignatureFunc = () => false; isValid = await VC.cryptographicallySecureVerify(credential, verifyAttestationFunc, verifySignatureFunc); - expect(isValid) - .toBeFalsy(); + expect(isValid).toBeFalsy(); done(); }); @@ -876,10 +753,8 @@ describe('Unit tests for Verifiable Credentials', () => { // messing up with the targetHash: credJSon.proof.leaves[0].targetHash = credJSon.proof.leaves[0].targetHash.replace('a', 'b'); const cred = await VC.fromJSON(credJSon); - expect(cred) - .toBeDefined(); - expect(await cred.verify()) - .toEqual(VC.VERIFY_LEVELS.INVALID); + expect(cred).toBeDefined(); + expect(await cred.verify()).toEqual(VC.VERIFY_LEVELS.INVALID); }); it('should fail verification since it doesn\'t have an Meta:expirationDate UCA', async () => { @@ -887,50 +762,38 @@ describe('Unit tests for Verifiable Credentials', () => { // messing up with the targetHash: credJSon.proof.leaves[0].targetHash = credJSon.proof.leaves[0].targetHash.replace('a', 'b'); const cred = await VC.fromJSON(credJSon); - expect(cred) - .toBeDefined(); - expect(await cred.verifyProofs()) - .toBeFalsy(); + expect(cred).toBeDefined(); + expect(await cred.verifyProofs()).toBeFalsy(); }); test('cred.verifyProofs(): with a valid cred with expirationDate, should return TRUE', async () => { const credJSon = require('./fixtures/CredWithFutureExpiry.json'); // eslint-disable-line const cred = await VC.fromJSON(credJSon); - expect(cred) - .toBeDefined(); - expect(cred.verifyProofs()) - .toBeTruthy(); + expect(cred).toBeDefined(); + expect(cred.verifyProofs()).toBeTruthy(); }); test('cred.verifyProofs(): with a valid cred but expired, should return FALSE', async () => { const credJSon = require('./fixtures/CredExpired.json'); // eslint-disable-line const cred = await VC.fromJSON(credJSon); - expect(cred) - .toBeDefined(); - expect(await cred.verifyProofs()) - .not - .toBeTruthy(); + expect(cred).toBeDefined(); + expect(await cred.verifyProofs()).not.toBeTruthy(); }); it('should fail verification since the leaf value is tampered', async () => { const credentialContents = fs.readFileSync('__test__/creds/fixtures/VCWithTamperedLeafValue.json', 'utf8'); const credentialJson = JSON.parse(credentialContents); const cred = await VC.fromJSON(credentialJson); - expect(await cred.verifyProofs()) - .not - .toBeTruthy(); + expect(await cred.verifyProofs()).not.toBeTruthy(); }); it('should check that signature matches for the root of the Merkle Tree', async (done) => { const credentialContents = fs.readFileSync('__test__/creds/fixtures/VCPermanentAnchor.json', 'utf8'); const credentialJson = JSON.parse(credentialContents); const cred = await VC.fromJSON(credentialJson); - expect(cred) - .toBeDefined(); - expect(cred.proof.anchor) - .toBeDefined(); - expect(await cred.verifyAnchorSignature()) - .toBeTruthy(); + expect(cred).toBeDefined(); + expect(cred.proof.anchor).toBeDefined(); + expect(await cred.verifyAnchorSignature()).toBeTruthy(); done(); }); @@ -938,12 +801,9 @@ describe('Unit tests for Verifiable Credentials', () => { const credentialContents = fs.readFileSync('__test__/creds/fixtures/VCPermanentAnchor.json', 'utf8'); const credentialJson = JSON.parse(credentialContents); const cred = await VC.fromJSON(credentialJson); - expect(cred) - .toBeDefined(); - expect(cred.proof.anchor) - .toBeDefined(); - expect(await cred.verifyAnchorSignature(XPUB1)) - .toBeTruthy(); + expect(cred).toBeDefined(); + expect(cred.proof.anchor).toBeDefined(); + expect(await cred.verifyAnchorSignature(XPUB1)).toBeTruthy(); done(); }); @@ -951,12 +811,9 @@ describe('Unit tests for Verifiable Credentials', () => { const credentialContents = fs.readFileSync('__test__/creds/fixtures/VCPermanentAnchor.json', 'utf8'); const credentialJson = JSON.parse(credentialContents); const cred = await VC.fromJSON(credentialJson); - expect(cred) - .toBeDefined(); - expect(cred.proof.anchor) - .toBeDefined(); - expect(() => cred.verifyAnchorSignature(XPUB1.replace('9', '6'))) - .toThrow(); + expect(cred).toBeDefined(); + expect(cred.proof.anchor).toBeDefined(); + expect(() => cred.verifyAnchorSignature(XPUB1.replace('9', '6'))).toThrow(); done(); }); @@ -966,12 +823,9 @@ describe('Unit tests for Verifiable Credentials', () => { const cred = await VC.fromJSON(credentialJson); // tamper merkle root cred.proof.merkleRoot = 'gfdagfagfda'; - expect(cred) - .toBeDefined(); - expect(cred.proof.anchor) - .toBeDefined(); - expect(await cred.verifyAnchorSignature()) - .toBeFalsy(); + expect(cred).toBeDefined(); + expect(cred.proof.anchor).toBeDefined(); + expect(await cred.verifyAnchorSignature()).toBeFalsy(); done(); }); @@ -980,10 +834,8 @@ describe('Unit tests for Verifiable Credentials', () => { const dob = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', identityDateOfBirth); const cred = await VC.create('credential-cvc:Identity-v3', uuidv4(), null, credentialSubject, [name, dob]); - expect(cred) - .toBeDefined(); - expect(cred.proof.granted) - .toBeNull(); + expect(cred).toBeDefined(); + expect(cred.proof.granted).toBeNull(); done(); }); @@ -992,10 +844,8 @@ describe('Unit tests for Verifiable Credentials', () => { const credentialContents = fs.readFileSync('__test__/creds/fixtures/VCPermanentAnchor.json', 'utf8'); const credentialJson = JSON.parse(credentialContents); const cred = await VC.fromJSON(credentialJson); - expect(cred) - .toBeDefined(); - expect(cred.proof.granted) - .toBeNull(); + expect(cred).toBeDefined(); + expect(cred.proof.granted).toBeNull(); done(); }); @@ -1005,18 +855,15 @@ describe('Unit tests for Verifiable Credentials', () => { const dob = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', identityDateOfBirth); const cred = await VC.create('credential-cvc:Identity-v3', uuidv4(), null, credentialSubject, [name, dob]); - expect(cred) - .toBeDefined(); - expect(cred.proof.granted) - .toBeNull(); + expect(cred).toBeDefined(); + expect(cred.proof.granted).toBeNull(); const requestorId = 'REQUESTOR_ID_12345'; const requestId = new Date().getTime(); // simulate an nonce ID try { cred.grantUsageFor(requestorId, requestId, { pvtKey: XPVT1 }); } catch (err) { - expect(err.message) - .toEqual('Invalid credential attestation/anchor'); + expect(err.message).toEqual('Invalid credential attestation/anchor'); done(); } }); @@ -1026,17 +873,13 @@ describe('Unit tests for Verifiable Credentials', () => { const dob = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', identityDateOfBirth); const cred = await VC.create('credential-cvc:Identity-v3', uuidv4(), null, credentialSubject, [name, dob]); await cred.requestAnchor(); - expect(cred) - .toBeDefined(); - expect(cred.proof.granted) - .toBeNull(); + expect(cred).toBeDefined(); + expect(cred.proof.granted).toBeNull(); cred.proof.anchor.subject = signAttestationSubject(cred.proof.anchor.subject, XPVT1, XPUB1); const requestorId = 'ANY_REQUESTOR_ID_12345'; const requestId = new Date().getTime(); // simulate an nonce ID cred.grantUsageFor(requestorId, requestId, { pvtKey: XPVT1 }); - expect(cred.proof.granted) - .not - .toBeNull(); + expect(cred.proof.granted).not.toBeNull(); done(); }); @@ -1044,17 +887,13 @@ describe('Unit tests for Verifiable Credentials', () => { const credentialContents = fs.readFileSync('__test__/creds/fixtures/VCPermanentAnchor.json', 'utf8'); const credentialJson = JSON.parse(credentialContents); const cred = await VC.fromJSON(credentialJson); - expect(cred) - .toBeDefined(); - expect(cred.proof.granted) - .toBeNull(); + expect(cred).toBeDefined(); + expect(cred.proof.granted).toBeNull(); cred.proof.anchor.subject = signAttestationSubject(cred.proof.anchor.subject, XPVT1, XPUB1); const requestorId = 'ANY_REQUESTOR_ID_12345'; const requestId = new Date().getTime(); // simulate an nonce ID cred.grantUsageFor(requestorId, requestId, { pvtKey: XPVT1 }); - expect(cred.proof.granted) - .not - .toBeNull(); + expect(cred.proof.granted).not.toBeNull(); done(); }); @@ -1063,10 +902,8 @@ describe('Unit tests for Verifiable Credentials', () => { const dob = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', identityDateOfBirth); const cred = await VC.create('credential-cvc:Identity-v3', uuidv4(), null, credentialSubject, [name, dob]); const anchoredCred = await cred.requestAnchor(); - expect(anchoredCred) - .toBeDefined(); - expect(anchoredCred.proof.granted) - .toBeNull(); + expect(anchoredCred).toBeDefined(); + expect(anchoredCred.proof.granted).toBeNull(); const subject = signAttestationSubject(anchoredCred.proof.anchor.subject, XPVT1, XPUB1); const signedCred = await VC.fromJSON(toValueObject(_.merge({}, anchoredCred, { proof: { anchor: { subject } } }))); @@ -1077,18 +914,14 @@ describe('Unit tests for Verifiable Credentials', () => { // simulate a wire transmission const transmittedCred = JSON.stringify(signedCred, null, 2); - expect(transmittedCred) - .toBeDefined(); + expect(transmittedCred).toBeDefined(); // const receivedCred = await VC.fromJSON(JSON.parse(transmittedCred)); - expect(receivedCred.proof.granted) - .not - .toBeNull(); + expect(receivedCred.proof.granted).not.toBeNull(); const verifyGrant = receivedCred.verifyGrant(requestorId, requestId); - expect(verifyGrant) - .toEqual(true); + expect(verifyGrant).toEqual(true); done(); }); @@ -1098,10 +931,8 @@ describe('Unit tests for Verifiable Credentials', () => { const dob = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', identityDateOfBirth); const cred = await VC.create('credential-cvc:Identity-v3', uuidv4(), null, credentialSubject, [name, dob]); const anchoredCred = await cred.requestAnchor(); - expect(anchoredCred) - .toBeDefined(); - expect(anchoredCred.proof.granted) - .toBeNull(); + expect(anchoredCred).toBeDefined(); + expect(anchoredCred.proof.granted).toBeNull(); const subject = signAttestationSubject(anchoredCred.proof.anchor.subject, XPVT1, XPUB1); const signedCred = await VC.fromJSON(toValueObject(_.merge({}, anchoredCred, { proof: { anchor: { subject } } }))); @@ -1112,22 +943,18 @@ describe('Unit tests for Verifiable Credentials', () => { // simulate a wire transmission const transmittedCred = JSON.stringify(signedCred, null, 2); - expect(transmittedCred) - .toBeDefined(); + expect(transmittedCred).toBeDefined(); // const receivedCred = await VC.fromJSON(JSON.parse(transmittedCred)); - expect(receivedCred.proof.granted) - .not - .toBeNull(); + expect(receivedCred.proof.granted).not.toBeNull(); // Simulate a invalid granted token - one not based on the same nonce // eslint-disable-next-line receivedCred.proof.granted = '304502210085f6baceefcddefff535416df0eda6c9b8a01dcba592c599ec2c83cce7171dd802204473f5a15b3904dbf0fc309fe812fbf449948714938fb4871196d338ef38f1d1'; const verifyGrant = receivedCred.verifyGrant(requestorId, requestId); - expect(verifyGrant) - .toEqual(false); + expect(verifyGrant).toEqual(false); done(); }); @@ -1137,10 +964,8 @@ describe('Unit tests for Verifiable Credentials', () => { const dob = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', identityDateOfBirth); const cred = await VC.create('credential-cvc:Identity-v3', uuidv4(), null, credentialSubject, [name, dob]); const anchoredCred = await cred.requestAnchor(); - expect(anchoredCred) - .toBeDefined(); - expect(anchoredCred.proof.granted) - .toBeNull(); + expect(anchoredCred).toBeDefined(); + expect(anchoredCred.proof.granted).toBeNull(); const subject = signAttestationSubject(anchoredCred.proof.anchor.subject, XPVT1, XPUB1); const signedCred = await VC.fromJSON(toValueObject(_.merge({}, anchoredCred, { proof: { anchor: { subject } } }))); @@ -1151,17 +976,13 @@ describe('Unit tests for Verifiable Credentials', () => { // simulate a wire transmission const transmittedCred = JSON.stringify(signedCred, null, 2); - expect(transmittedCred) - .toBeDefined(); - expect(signedCred.proof.granted) - .not - .toBeNull(); + expect(transmittedCred).toBeDefined(); + expect(signedCred.proof.granted).not.toBeNull(); const credentialObj = JSON.parse(transmittedCred); const verifyGrant = VC.requesterGrantVerify(credentialObj, requestorId, requestId); - expect(verifyGrant) - .toEqual(true); + expect(verifyGrant).toEqual(true); done(); }); @@ -1171,10 +992,8 @@ describe('Unit tests for Verifiable Credentials', () => { const dob = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', identityDateOfBirth); const cred = await VC.create('credential-cvc:Identity-v3', uuidv4(), null, credentialSubject, [name, dob]); const anchoredCred = await cred.requestAnchor(); - expect(anchoredCred) - .toBeDefined(); - expect(anchoredCred.proof.granted) - .toBeNull(); + expect(anchoredCred).toBeDefined(); + expect(anchoredCred.proof.granted).toBeNull(); const subject = signAttestationSubject(anchoredCred.proof.anchor.subject, XPVT1, XPUB1); const signedCred = await VC.fromJSON(toValueObject(_.merge({}, anchoredCred, { proof: { anchor: { subject } } }))); @@ -1185,11 +1004,8 @@ describe('Unit tests for Verifiable Credentials', () => { // simulate a wire transmission const transmittedCred = JSON.stringify(signedCred, null, 2); - expect(transmittedCred) - .toBeDefined(); - expect(signedCred.proof.granted) - .not - .toBeNull(); + expect(transmittedCred).toBeDefined(); + expect(signedCred.proof.granted).not.toBeNull(); const credentialObj = JSON.parse(transmittedCred); @@ -1198,8 +1014,7 @@ describe('Unit tests for Verifiable Credentials', () => { credentialObj.proof.granted = '304502210085f6baceefcddefff535416df0eda6c9b8a01dcba592c599ec2c83cce7171dd802204473f5a15b3904dbf0fc309fe812fbf449948714938fb4871196d338ef38f1d1'; const verifyGrant = VC.requesterGrantVerify(credentialObj, requestorId, requestId); - expect(verifyGrant) - .toEqual(false); + expect(verifyGrant).toEqual(false); done(); }); @@ -1209,10 +1024,8 @@ describe('Unit tests for Verifiable Credentials', () => { const dob = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', identityDateOfBirth); const cred = await VC.create('credential-cvc:Identity-v3', uuidv4(), null, credentialSubject, [name, dob]); const anchoredCred = await cred.requestAnchor(); - expect(anchoredCred) - .toBeDefined(); - expect(anchoredCred.proof.granted) - .toBeNull(); + expect(anchoredCred).toBeDefined(); + expect(anchoredCred.proof.granted).toBeNull(); const subject = signAttestationSubject(anchoredCred.proof.anchor.subject, XPVT1, XPUB1); const signedCred = await VC.fromJSON(toValueObject(_.merge({}, anchoredCred, { proof: { anchor: { subject } } }))); @@ -1223,21 +1036,17 @@ describe('Unit tests for Verifiable Credentials', () => { // simulate a wire transmission const transmittedCred = JSON.stringify(signedCred, null, 2); - expect(transmittedCred) - .toBeDefined(); + expect(transmittedCred).toBeDefined(); // const receivedCred = await VC.fromJSON(JSON.parse(transmittedCred)); - expect(receivedCred.proof.granted) - .not - .toBeNull(); + expect(receivedCred.proof.granted).not.toBeNull(); const verifyLevel = await receivedCred.verify(VC.VERIFY_LEVELS.GRANTED, { requestorId, requestId, }); - expect(verifyLevel) - .toBeGreaterThanOrEqual(VC.VERIFY_LEVELS.GRANTED); + expect(verifyLevel).toBeGreaterThanOrEqual(VC.VERIFY_LEVELS.GRANTED); done(); }); @@ -1247,10 +1056,8 @@ describe('Unit tests for Verifiable Credentials', () => { const dob = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', identityDateOfBirth); const cred = await VC.create('credential-cvc:Identity-v3', uuidv4(), null, credentialSubject, [name, dob]); const anchoredCred = await cred.requestAnchor(); - expect(anchoredCred) - .toBeDefined(); - expect(anchoredCred.proof.granted) - .toBeNull(); + expect(anchoredCred).toBeDefined(); + expect(anchoredCred.proof.granted).toBeNull(); const subject = signAttestationSubject(anchoredCred.proof.anchor.subject, XPVT1, XPUB1); const signedCred = await VC.fromJSON(toValueObject(_.merge({}, anchoredCred, { proof: { anchor: { subject } } }))); @@ -1261,14 +1068,11 @@ describe('Unit tests for Verifiable Credentials', () => { // simulate a wire transmission const transmittedCred = JSON.stringify(signedCred, null, 2); - expect(transmittedCred) - .toBeDefined(); + expect(transmittedCred).toBeDefined(); // const receivedCred = await VC.fromJSON(JSON.parse(transmittedCred)); - expect(receivedCred.proof.granted) - .not - .toBeNull(); + expect(receivedCred.proof.granted).not.toBeNull(); // Simulate a invalid granted token - one not based on the same nonce // eslint-disable-next-line @@ -1278,8 +1082,7 @@ describe('Unit tests for Verifiable Credentials', () => { requestorId, requestId, }); - expect(verifyLevel) - .toBeGreaterThanOrEqual(VC.VERIFY_LEVELS.ANCHOR); // Should be at least one level lower + expect(verifyLevel).toBeGreaterThanOrEqual(VC.VERIFY_LEVELS.ANCHOR); // Should be at least one level lower done(); }); @@ -1288,13 +1091,10 @@ describe('Unit tests for Verifiable Credentials', () => { const credentialContents = fs.readFileSync('__test__/creds/fixtures/VCPermanentAnchor.json', 'utf8'); const credentialJson = JSON.parse(credentialContents); const cred = await VC.fromJSON(credentialJson); - expect(cred) - .toBeDefined(); - expect(cred.proof.anchor) - .toBeDefined(); + expect(cred).toBeDefined(); + expect(cred.proof.anchor).toBeDefined(); const validation = await cred.verifyAttestation(); - expect(validation) - .toBeTruthy(); + expect(validation).toBeTruthy(); done(); }); @@ -1308,8 +1108,7 @@ describe('Unit tests for Verifiable Credentials', () => { cred.proof.anchor.network = 'mainnet'; const validation = await cred.verifyAttestation(); - expect(validation) - .toBeFalsy(); + expect(validation).toBeFalsy(); done(); }); @@ -1321,9 +1120,7 @@ describe('Unit tests for Verifiable Credentials', () => { cred.proof.anchor.network = 'mainnet'; const shouldFail = cred.verifyAttestation(); - await expect(shouldFail) - .rejects - .toThrow(/Error: Invalid URI/); + await expect(shouldFail).rejects.toThrow(/Error: Invalid URI/); }); it('should revoke the permanent anchor and succeed verification', async (done) => { @@ -1335,8 +1132,7 @@ describe('Unit tests for Verifiable Credentials', () => { const validation = await cred.verifyAttestation(); if (validation) { const isRevoked = await cred.revokeAttestation(); - expect(isRevoked) - .toBeTruthy(); + expect(isRevoked).toBeTruthy(); } done(); }); @@ -1345,13 +1141,10 @@ describe('Unit tests for Verifiable Credentials', () => { const credentialContents = fs.readFileSync('__test__/creds/fixtures/VCPermanentAnchor.json', 'utf8'); const credentialJson = JSON.parse(credentialContents); const cred = await VC.fromJSON(credentialJson); - expect(cred) - .toBeDefined(); - expect(cred.proof.anchor) - .toBeDefined(); + expect(cred).toBeDefined(); + expect(cred.proof.anchor).toBeDefined(); const isRevoked = await cred.isRevoked(); - expect(isRevoked) - .toBeFalsy(); + expect(isRevoked).toBeFalsy(); done(); }); @@ -1361,13 +1154,9 @@ describe('Unit tests for Verifiable Credentials', () => { const cred = await VC.create('credential-cvc:Identity-v3', uuidv4(), null, credentialSubject, [name, dob]); expect(cred.isMatch({ claims: [ - { - path: 'identity.name.givenNames', - is: { $eq: 'Max' }, - }, + { path: 'identity.name.givenNames', is: { $eq: 'Max' } }, ], - })) - .toBeTruthy(); + })).toBeTruthy(); }); it('Should match with two constraints', async () => { @@ -1376,17 +1165,10 @@ describe('Unit tests for Verifiable Credentials', () => { const cred = await VC.create('credential-cvc:Identity-v3', uuidv4(), null, credentialSubject, [name, dob]); expect(cred.isMatch({ claims: [ - { - path: 'identity.name.givenNames', - is: { $eq: 'Max' }, - }, - { - path: 'identity.name.otherNames', - is: { $eq: 'Abc' }, - }, + { path: 'identity.name.givenNames', is: { $eq: 'Max' } }, + { path: 'identity.name.otherNames', is: { $eq: 'Abc' } }, ], - })) - .toBeTruthy(); + })).toBeTruthy(); }); it('Should fail with two constraints if one of them fails', async () => { @@ -1395,17 +1177,10 @@ describe('Unit tests for Verifiable Credentials', () => { const cred = await VC.create('credential-cvc:Identity-v3', uuidv4(), null, credentialSubject, [name, dob]); expect(cred.isMatch({ claims: [ - { - path: 'identity.name.givenNames', - is: { $eq: 'NOT MAX' }, - }, - { - path: 'identity.name.otherNames', - is: { $eq: 'Abc' }, - }, + { path: 'identity.name.givenNames', is: { $eq: 'NOT MAX' } }, + { path: 'identity.name.otherNames', is: { $eq: 'Abc' } }, ], - })) - .toBeFalsy(); + })).toBeFalsy(); }); it('Should match with gt constraint', async () => { @@ -1414,13 +1189,9 @@ describe('Unit tests for Verifiable Credentials', () => { const cred = await VC.create('credential-cvc:Identity-v3', uuidv4(), null, credentialSubject, [name, dob]); expect(cred.isMatch({ claims: [ - { - path: 'identity.dateOfBirth.year', - is: { $gt: 1900 }, - }, + { path: 'identity.dateOfBirth.year', is: { $gt: 1900 } }, ], - })) - .toBeTruthy(); + })).toBeTruthy(); }); it('Should match constraints targeting the parent properties of dates', async () => { @@ -1429,13 +1200,9 @@ describe('Unit tests for Verifiable Credentials', () => { const cred = await VC.create('credential-cvc:Identity-v3', uuidv4(), null, credentialSubject, [name, dob]); expect(cred.isMatch({ claims: [ - { - path: 'identity.dateOfBirth', - is: { $lt: 1554377905342 }, - }, // 4-4-2019 + { path: 'identity.dateOfBirth', is: { $lt: 1554377905342 } }, // 4-4-2019 ], - })) - .toBeTruthy(); + })).toBeTruthy(); }); const getExactYearsAgo = (yearDelta) => { @@ -1445,11 +1212,7 @@ describe('Unit tests for Verifiable Credentials', () => { }; const dateToDOBClaim = async (date) => { - const dobClaim = { - day: date.getDate(), - month: date.getMonth() + 1, - year: date.getFullYear(), - }; + const dobClaim = { day: date.getDate(), month: date.getMonth() + 1, year: date.getFullYear() }; return Claim.create('claim-cvc:Identity.dateOfBirth-v1', dobClaim); }; @@ -1461,13 +1224,9 @@ describe('Unit tests for Verifiable Credentials', () => { const cred = await VC.create('credential-cvc:Identity-v3', uuidv4(), null, credentialSubject, [name, dob]); expect(cred.isMatch({ claims: [ - { - path: 'identity.dateOfBirth', - is: { $lte: '-40y' }, - }, + { path: 'identity.dateOfBirth', is: { $lte: '-40y' } }, ], - })) - .toBeTruthy(); + })).toBeTruthy(); }); it('Should not match', async () => { @@ -1476,13 +1235,9 @@ describe('Unit tests for Verifiable Credentials', () => { const cred = await VC.create('credential-cvc:Identity-v3', uuidv4(), null, credentialSubject, [name, dob]); expect(cred.isMatch({ claims: [ - { - path: 'identity.name.first', - is: { $eq: 'Maxime' }, - }, + { path: 'identity.name.first', is: { $eq: 'Maxime' } }, ], - })) - .toBeFalsy(); + })).toBeFalsy(); }); it('Should match credential on constraints.meta', () => { @@ -1505,8 +1260,7 @@ describe('Unit tests for Verifiable Credentials', () => { }, }; - expect(VC.isMatchCredentialMeta(vcMeta, constraints)) - .toBeTruthy(); + expect(VC.isMatchCredentialMeta(vcMeta, constraints)).toBeTruthy(); }); it('Should match credential on constraints.meta with issuer', () => { @@ -1534,8 +1288,7 @@ describe('Unit tests for Verifiable Credentials', () => { }, }; - expect(VC.isMatchCredentialMeta(vcMeta, constraints)) - .toBeTruthy(); + expect(VC.isMatchCredentialMeta(vcMeta, constraints)).toBeTruthy(); }); it('Should not match credential on constraints.meta with wrong issuer', () => { @@ -1563,8 +1316,7 @@ describe('Unit tests for Verifiable Credentials', () => { }, }; - expect(VC.isMatchCredentialMeta(vcMeta, constraints)) - .toBeFalsy(); + expect(VC.isMatchCredentialMeta(vcMeta, constraints)).toBeFalsy(); }); it('Should match credential on constraints.meta with multiple fields', () => { @@ -1597,8 +1349,7 @@ describe('Unit tests for Verifiable Credentials', () => { }, }; - expect(VC.isMatchCredentialMeta(vcMeta, constraints)) - .toBeTruthy(); + expect(VC.isMatchCredentialMeta(vcMeta, constraints)).toBeTruthy(); }); it('Should not match credential on constraints.meta with invalid field', () => { @@ -1631,8 +1382,7 @@ describe('Unit tests for Verifiable Credentials', () => { }, }; - expect(VC.isMatchCredentialMeta(vcMeta, constraints)) - .toBeFalsy(); + expect(VC.isMatchCredentialMeta(vcMeta, constraints)).toBeFalsy(); }); it('Should not match credential if constraints.meta are invalid or empty', () => { @@ -1650,157 +1400,91 @@ describe('Unit tests for Verifiable Credentials', () => { }; const constraint = {}; - expect(VC.isMatchCredentialMeta(vcMeta, constraint)) - .toBeFalsy(); + expect(VC.isMatchCredentialMeta(vcMeta, constraint)).toBeFalsy(); }); it('Should return all Credential properties for credential-cvc:GenericDocumentId-v3', async () => { const properties = await VC.getAllProperties('credential-cvc:GenericDocumentId-v3'); - expect(properties) - .toHaveLength(30); - expect(properties) - .toContain('document.type'); - expect(properties) - .toContain('document.number'); - expect(properties) - .toContain('document.gender'); - expect(properties) - .toContain('document.issueLocation'); - expect(properties) - .toContain('document.issueAuthority'); - expect(properties) - .toContain('document.issueCountry'); - expect(properties) - .toContain('document.placeOfBirth'); - expect(properties) - .toContain('document.name.givenNames'); - expect(properties) - .toContain('document.name.familyNames'); - expect(properties) - .toContain('document.name.otherNames'); - expect(properties) - .toContain('document.dateOfBirth.day'); - expect(properties) - .toContain('document.dateOfBirth.month'); - expect(properties) - .toContain('document.dateOfBirth.year'); - expect(properties) - .toContain('document.address.country'); - expect(properties) - .toContain('document.address.county'); - expect(properties) - .toContain('document.address.state'); - expect(properties) - .toContain('document.address.street'); - expect(properties) - .toContain('document.address.unit'); - expect(properties) - .toContain('document.address.city'); - expect(properties) - .toContain('document.address.postalCode'); - expect(properties) - .toContain('document.properties.dateOfIssue.day'); - expect(properties) - .toContain('document.properties.dateOfIssue.month'); - expect(properties) - .toContain('document.properties.dateOfIssue.year'); - expect(properties) - .toContain('document.properties.dateOfExpiry.day'); - expect(properties) - .toContain('document.properties.dateOfExpiry.month'); - expect(properties) - .toContain('document.properties.dateOfExpiry.year'); - expect(properties) - .toContain('document.image.front'); - expect(properties) - .toContain('document.image.frontMD5'); - expect(properties) - .toContain('document.image.back'); - expect(properties) - .toContain('document.image.backMD5'); + expect(properties).toHaveLength(30); + expect(properties).toContain('document.type'); + expect(properties).toContain('document.number'); + expect(properties).toContain('document.gender'); + expect(properties).toContain('document.issueLocation'); + expect(properties).toContain('document.issueAuthority'); + expect(properties).toContain('document.issueCountry'); + expect(properties).toContain('document.placeOfBirth'); + expect(properties).toContain('document.name.givenNames'); + expect(properties).toContain('document.name.familyNames'); + expect(properties).toContain('document.name.otherNames'); + expect(properties).toContain('document.dateOfBirth.day'); + expect(properties).toContain('document.dateOfBirth.month'); + expect(properties).toContain('document.dateOfBirth.year'); + expect(properties).toContain('document.address.country'); + expect(properties).toContain('document.address.county'); + expect(properties).toContain('document.address.state'); + expect(properties).toContain('document.address.street'); + expect(properties).toContain('document.address.unit'); + expect(properties).toContain('document.address.city'); + expect(properties).toContain('document.address.postalCode'); + expect(properties).toContain('document.properties.dateOfIssue.day'); + expect(properties).toContain('document.properties.dateOfIssue.month'); + expect(properties).toContain('document.properties.dateOfIssue.year'); + expect(properties).toContain('document.properties.dateOfExpiry.day'); + expect(properties).toContain('document.properties.dateOfExpiry.month'); + expect(properties).toContain('document.properties.dateOfExpiry.year'); + expect(properties).toContain('document.image.front'); + expect(properties).toContain('document.image.frontMD5'); + expect(properties).toContain('document.image.back'); + expect(properties).toContain('document.image.backMD5'); }); it('Should return all Credential properties for credential-cvc:Identity-v3', async () => { const properties = await VC.getAllProperties('credential-cvc:Identity-v3'); - expect(properties) - .toHaveLength(6); - expect(properties) - .toContain('identity.name.givenNames'); - expect(properties) - .toContain('identity.name.familyNames'); - expect(properties) - .toContain('identity.name.otherNames'); - expect(properties) - .toContain('identity.dateOfBirth.day'); - expect(properties) - .toContain('identity.dateOfBirth.month'); - expect(properties) - .toContain('identity.dateOfBirth.year'); + expect(properties).toHaveLength(6); + expect(properties).toContain('identity.name.givenNames'); + expect(properties).toContain('identity.name.familyNames'); + expect(properties).toContain('identity.name.otherNames'); + expect(properties).toContain('identity.dateOfBirth.day'); + expect(properties).toContain('identity.dateOfBirth.month'); + expect(properties).toContain('identity.dateOfBirth.year'); }); it('Should return all Credential properties for credential-cvc:Address-v3', async () => { const properties = await VC.getAllProperties('credential-cvc:Address-v3'); - expect(properties) - .toHaveLength(7); - expect(properties) - .toContain('identity.address.country'); - expect(properties) - .toContain('identity.address.county'); - expect(properties) - .toContain('identity.address.state'); - expect(properties) - .toContain('identity.address.street'); - expect(properties) - .toContain('identity.address.unit'); - expect(properties) - .toContain('identity.address.city'); - expect(properties) - .toContain('identity.address.postalCode'); + expect(properties).toHaveLength(7); + expect(properties).toContain('identity.address.country'); + expect(properties).toContain('identity.address.county'); + expect(properties).toContain('identity.address.state'); + expect(properties).toContain('identity.address.street'); + expect(properties).toContain('identity.address.unit'); + expect(properties).toContain('identity.address.city'); + expect(properties).toContain('identity.address.postalCode'); }); it('Should return all Credential properties for credential-cvc:PhoneNumber-v3', async () => { const properties = await VC.getAllProperties('credential-cvc:PhoneNumber-v3'); - expect(properties) - .toHaveLength(5); - expect(properties) - .toContain('contact.phoneNumber.country'); - expect(properties) - .toContain('contact.phoneNumber.countryCode'); - expect(properties) - .toContain('contact.phoneNumber.number'); - expect(properties) - .toContain('contact.phoneNumber.extension'); - expect(properties) - .toContain('contact.phoneNumber.lineType'); + expect(properties).toHaveLength(5); + expect(properties).toContain('contact.phoneNumber.country'); + expect(properties).toContain('contact.phoneNumber.countryCode'); + expect(properties).toContain('contact.phoneNumber.number'); + expect(properties).toContain('contact.phoneNumber.extension'); + expect(properties).toContain('contact.phoneNumber.lineType'); }); it('Should return all Credential properties for credential-cvc:Email-v3', async () => { const properties = await VC.getAllProperties('credential-cvc:Email-v3'); - expect(properties) - .toHaveLength(3); - expect(properties) - .toContain('contact.email.username'); - expect(properties) - .toContain('contact.email.domain.name'); - expect(properties) - .toContain('contact.email.domain.tld'); + expect(properties).toHaveLength(3); + expect(properties).toContain('contact.email.username'); + expect(properties).toContain('contact.email.domain.name'); + expect(properties).toContain('contact.email.domain.tld'); }); it('Should construct a VC with no evidence provided', async () => { const name = await Claim.create('claim-cvc:Identity.name-v1', - { - givenNames: 'Neymar', - otherNames: 'Jr', - familyNames: 'Mustermann', - }); - const dob = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', { - day: 5, - month: 2, - year: 1992, - }); + { givenNames: 'Neymar', otherNames: 'Jr', familyNames: 'Mustermann' }); + const dob = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', { day: 5, month: 2, year: 1992 }); const cred = await VC.create('credential-cvc:Identity-v3', uuidv4(), null, credentialSubject, [name, dob]); - expect(cred) - .toBeDefined(); + expect(cred).toBeDefined(); }); it('Should construct a VC with the provided evidence', async () => { @@ -1825,10 +1509,8 @@ describe('Unit tests for Verifiable Credentials', () => { const cred = await VC.create( 'credential-cvc:Identity-v3', uuidv4(), null, credentialSubject, [name, dob], evidence, ); - expect(cred.evidence) - .toBeDefined(); - expect(cred.evidence) - .toEqual([evidence]); + expect(cred.evidence).toBeDefined(); + expect(cred.evidence).toEqual([evidence]); }); it('Should construct a VC with multiple evidence items', async () => { @@ -1863,10 +1545,8 @@ describe('Unit tests for Verifiable Credentials', () => { const cred = await VC.create( 'credential-cvc:Identity-v3', uuidv4(), null, credentialSubject, [name, dob], evidence, ); - expect(cred.evidence) - .toBeDefined(); - expect(cred.evidence) - .toEqual(evidence); + expect(cred.evidence).toBeDefined(); + expect(cred.evidence).toEqual(evidence); }); it('Should include only the evidence properties in the credential', async () => { @@ -1894,11 +1574,8 @@ describe('Unit tests for Verifiable Credentials', () => { const cred = await VC.create( 'credential-cvc:Identity-v3', uuidv4(), null, credentialSubject, [name, dob], evidence, ); - expect(cred.evidence) - .toBeDefined(); - expect(cred.evidence.other) - .not - .toBeDefined(); + expect(cred.evidence).toBeDefined(); + expect(cred.evidence.other).not.toBeDefined(); }); it('Should construct a credential with an evidence without id', async () => { @@ -1924,10 +1601,8 @@ describe('Unit tests for Verifiable Credentials', () => { const cred = await VC.create( 'credential-cvc:Identity-v3', uuidv4(), null, credentialSubject, [name, dob], evidence, ); - expect(cred.evidence) - .toBeDefined(); - expect(cred.evidence) - .toEqual(evidence); + expect(cred.evidence).toBeDefined(); + expect(cred.evidence).toEqual(evidence); }); it('Should throw exception if a evidence required property is missing', async () => { @@ -1954,9 +1629,7 @@ describe('Unit tests for Verifiable Credentials', () => { return expect(VC.create( 'credential-cvc:Identity-v3', uuidv4(), null, credentialSubject, [name, dob], evidence, - )) - .rejects - .toThrow(/Evidence type is required/); + )).rejects.toThrow(/Evidence type is required/); }); it('Should throw exception if evidence id is NOT a valid url', async () => { @@ -1984,9 +1657,7 @@ describe('Unit tests for Verifiable Credentials', () => { return expect(VC.create( 'credential-cvc:Identity-v3', uuidv4(), null, credentialSubject, [name, dob], evidence, - )) - .rejects - .toThrow(/Evidence id is not a valid URL/); + )).rejects.toThrow(/Evidence id is not a valid URL/); }); it('Should throw exception if evidence type is not an array', async () => { @@ -2014,9 +1685,7 @@ describe('Unit tests for Verifiable Credentials', () => { return expect(VC.create( 'credential-cvc:Identity-v3', uuidv4(), null, credentialSubject, [name, dob], evidence, - )) - .rejects - .toThrow(/Evidence type is not an Array object/); + )).rejects.toThrow(/Evidence type is not an Array object/); }); it('Should create credential if all claims are provided', async () => { @@ -2054,8 +1723,7 @@ describe('Unit tests for Verifiable Credentials', () => { type, number, name, gender, issueCountry, placeOfBirth, dateOfBirth, nationality, dateOfExpiry, evidences, ]; const credential = await VC.create('credential-cvc:IdDocument-v3', '', null, credentialSubject, ucas); - expect(credential) - .toBeDefined(); + expect(credential).toBeDefined(); }); it('Should throw exception on credential creation if required uca is missing', async () => { @@ -2065,8 +1733,7 @@ describe('Unit tests for Verifiable Credentials', () => { const ucas = [type, name, issueCountry]; - return expect(VC.create('credential-cvc:IdDocument-v3', '', null, credentialSubject, ucas)) - .rejects + return expect(VC.create('credential-cvc:IdDocument-v3', '', null, credentialSubject, ucas)).rejects .toThrow(/Missing required fields to credential-cvc:IdDocument-v3/); }); @@ -2078,25 +1745,21 @@ describe('Unit tests for Verifiable Credentials', () => { const ucas = [type, name, issueCountry]; return expect(VC.create('credential-cvc:IdDocument-v3', '', null, credentialSubject, ucas)) - .rejects - .toThrow(/Missing required fields to credential-cvc:IdDocument-v3/); + .rejects.toThrow(/Missing required fields to credential-cvc:IdDocument-v3/); }); it('Should verify a VC without non-required claims', async () => { const credJSon = require('./fixtures/IdDocumentWithoutNonRequiredClaims.json'); // eslint-disable-line const cred = await VC.fromJSON(credJSon); - expect(cred) - .toBeDefined(); - expect(cred.verifyProofs()) - .toBeTruthy(); + expect(cred).toBeDefined(); + expect(cred.verifyProofs()).toBeTruthy(); }); it('Should throw exception when creating a VC from json without required claims', async () => { const credJSon = require('./fixtures/IdDocumentWithoutRequiredClaims.json'); // eslint-disable-line return expect(VC.fromJSON(credJSon)) - .rejects - .toThrow(); + .rejects.toThrow(); }); }); @@ -2123,25 +1786,19 @@ describe('Transient Credential Tests', () => { const uca = await Claim.create('claim-cvc:Identity.address-v1', value, '1'); const credential = await VC.create('credential-cvc:UnverifiedAddress-v3', '', null, credentialSubject, [uca]); - expect(credential) - .toBeDefined(); - expect(credential.transient) - .toBeTruthy(); + expect(credential).toBeDefined(); + expect(credential.transient).toBeTruthy(); credential.requestAnchor(); - expect(credential.proof.anchor) - .toBeDefined(); - expect(credential.proof.anchor.type) - .toBe('transient'); + expect(credential.proof.anchor).toBeDefined(); + expect(credential.proof.anchor.type).toBe('transient'); const verified = await credential.verifyAttestation(); - expect(verified) - .toBeTruthy(); + expect(verified).toBeTruthy(); const proved = credential.verifyProofs(); - expect(proved) - .toBeTruthy(); + expect(proved).toBeTruthy(); }); it('Should create an US SSN Transient Credential', async () => { @@ -2154,25 +1811,19 @@ describe('Transient Credential Tests', () => { const uca = await Claim.create('claim-cvc:SocialSecurity.number-v1', value, '1'); const credential = await VC.create('credential-cvc:UnverifiedSsn-v3', '', null, credentialSubject, [uca]); - expect(credential) - .toBeDefined(); - expect(credential.transient) - .toBeTruthy(); + expect(credential).toBeDefined(); + expect(credential.transient).toBeTruthy(); credential.requestAnchor(); - expect(credential.proof.anchor) - .toBeDefined(); - expect(credential.proof.anchor.type) - .toBe('transient'); + expect(credential.proof.anchor).toBeDefined(); + expect(credential.proof.anchor.type).toBe('transient'); const verified = await credential.verifyAttestation(); - expect(verified) - .toBeTruthy(); + expect(verified).toBeTruthy(); const proved = credential.verifyProofs(); - expect(proved) - .toBeTruthy(); + expect(proved).toBeTruthy(); }); }); @@ -2342,11 +1993,9 @@ describe('Referenced Schemas for Verifiable Credentials', () => { issueCountry, placeOfBirth, dateOfBirth, dateOfExpiry, nationality, evidences], ); - expect(credential) - .toBeDefined(); + expect(credential).toBeDefined(); const filtered = credential.filter(['claim-cvc:Document.dateOfBirth-v1']); - expect(filtered) - .toBeDefined(); + expect(filtered).toBeDefined(); }); test('Validates a schema the contains a reference', async () => { @@ -2357,9 +2006,7 @@ describe('Referenced Schemas for Verifiable Credentials', () => { 'credential-test:IdDocument-v1', '', null, credentialSubject, [type, number], ); - return expect(createCredential) - .rejects - .toThrow('Missing required fields to credential-test:IdDocument-v1'); + return expect(createCredential).rejects.toThrow('Missing required fields to credential-test:IdDocument-v1'); }); }); @@ -2376,28 +2023,27 @@ describe('Verifiable Credential JSON serialization', () => { // serialize the credential to JSON, then back to an object to be tested against const credJSON = JSON.parse(JSON.stringify(cred)); - expect(credJSON) - .toEqual(expect.objectContaining({ - '@context': ['https://www.w3.org/2018/credentials/v1', 'https://www.identity.com/credentials/v3'], - id: cred.id, - issuer: cred.issuer, - issuanceDate: cred.issuanceDate, - type: ['VerifiableCredential', 'IdentityCredential'], - credentialSubject: { - id: credentialSubject, - identity: { - name: { - familyNames: identityName.familyNames, - givenNames: identityName.givenNames, - otherNames: identityName.otherNames, - }, - dateOfBirth: { - day: identityDateOfBirth.day, - month: identityDateOfBirth.month, - year: identityDateOfBirth.year, - }, + expect(credJSON).toEqual(expect.objectContaining({ + '@context': ['https://www.w3.org/2018/credentials/v1', 'https://www.identity.com/credentials/v3'], + id: cred.id, + issuer: cred.issuer, + issuanceDate: cred.issuanceDate, + type: ['VerifiableCredential', 'IdentityCredential'], + credentialSubject: { + id: credentialSubject, + identity: { + name: { + familyNames: identityName.familyNames, + givenNames: identityName.givenNames, + otherNames: identityName.otherNames, + }, + dateOfBirth: { + day: identityDateOfBirth.day, + month: identityDateOfBirth.month, + year: identityDateOfBirth.year, }, }, - })); + }, + })); }); }); diff --git a/src/creds/CvcMerkleProof.js b/src/creds/CvcMerkleProof.js index 614f54d1..b2beb1d5 100644 --- a/src/creds/CvcMerkleProof.js +++ b/src/creds/CvcMerkleProof.js @@ -13,17 +13,17 @@ class CvcMerkleProof { return 16; } - constructor(ucas, signer = null) { + constructor(ucas, credentialSigner = null) { const withRandomUcas = CvcMerkleProof.padTree(ucas); this.type = 'CvcMerkleProof2018'; this.merkleRoot = null; this.anchor = 'TBD (Civic Blockchain Attestation)'; this.leaves = CvcMerkleProof.getAllAttestableValue(withRandomUcas); - this.buildMerkleTree(signer); + this.buildMerkleTree(credentialSigner); this.granted = null; } - buildMerkleTree(signer = null) { + buildMerkleTree(credentialSigner = null) { const merkleTools = new MerkleTools(); const hashes = _.map(this.leaves, n => sha256(n.value)); merkleTools.addLeaves(hashes); @@ -35,8 +35,8 @@ class CvcMerkleProof { this.leaves = _.filter(this.leaves, el => !(el.identifier === 'cvc:Random:node')); this.merkleRoot = merkleTools.getMerkleRoot().toString('hex'); - if (signer) { - this.merkleRootSignature = signer.sign(this); + if (credentialSigner) { + this.merkleRootSignature = credentialSigner.sign(this); } } diff --git a/src/creds/VerifiableCredential.js b/src/creds/VerifiableCredential.js index 46802438..5df0d155 100644 --- a/src/creds/VerifiableCredential.js +++ b/src/creds/VerifiableCredential.js @@ -22,8 +22,7 @@ const { parseIdentifier } = require('../lib/stringUtils'); const signerVerifier = require('../lib/signerVerifier'); // convert a time delta to a timestamp -const convertDeltaToTimestamp = delta => time.applyDeltaToDate(delta) - .getTime() / 1000; +const convertDeltaToTimestamp = delta => time.applyDeltaToDate(delta).getTime() / 1000; function validIdentifiers() { const vi = _.map(definitions, d => d.identifier); @@ -196,8 +195,7 @@ async function nonCryptographicallySecureVerify(credential) { const invalidValues = []; const invalidHashs = []; const invalidProofs = []; - _.forEach(_.keys(claimsWithFlatKeys) - .filter(key => key !== 'id'), (claimKey) => { + _.forEach(_.keys(claimsWithFlatKeys).filter(key => key !== 'id'), (claimKey) => { // check if `claimKey` has a `claimPath` proof const leaveIdx = _.indexOf(leavesClaimPaths, claimKey); // if not found @@ -350,10 +348,7 @@ function verifyRequiredClaims(definition, ucas) { function getCredentialDefinition(identifier, version) { let definition; if (version) { - definition = _.find(definitions, { - identifier, - version: `${version}`, - }); + definition = _.find(definitions, { identifier, version: `${version}` }); } else { definition = _.find(definitions, { identifier }); } @@ -381,8 +376,7 @@ function VerifiableCredentialBaseConstructor(identifier, issuer, expiryIn, subje this.issuanceDate = (new Date()).toISOString(); const issuanceDateUCA = new Claim('cvc:Meta:issuanceDate', this.issuanceDate); this.identifier = identifier; - this.expirationDate = expiryIn ? timestamp.toDate(timestamp.now(expiryIn)) - .toISOString() : null; + this.expirationDate = expiryIn ? timestamp.toDate(timestamp.now(expiryIn)).toISOString() : null; const expiryUCA = new Claim('cvc:Meta:expirationDate', this.expirationDate ? this.expirationDate : 'null'); const proofUCAs = expiryUCA ? _.concat(ucas, issuerUCA, issuanceDateUCA, expiryUCA) @@ -522,34 +516,24 @@ function VerifiableCredentialBaseConstructor(identifier, issuer, expiryIn, subje * @deprecated */ this.verify = async (higherVerifyLevel, options) => { - const { - requestorId, - requestId, - keyName, - } = options || {}; + const { requestorId, requestId, keyName } = options || {}; const hVerifyLevel = !_.isNil(higherVerifyLevel) ? higherVerifyLevel : VERIFY_LEVELS.GRANTED; let verifiedlevel = VERIFY_LEVELS.INVALID; // Test next level if (verifiedlevel === VERIFY_LEVELS.INVALID && hVerifyLevel >= VERIFY_LEVELS.PROOFS - && (await this.verifyProofs())) { - verifiedlevel = VERIFY_LEVELS.PROOFS; - } + && (await this.verifyProofs())) verifiedlevel = VERIFY_LEVELS.PROOFS; // Test next level if (verifiedlevel === VERIFY_LEVELS.PROOFS && hVerifyLevel >= VERIFY_LEVELS.ANCHOR - && this.verifyAttestation()) { - verifiedlevel = VERIFY_LEVELS.ANCHOR; - } + && this.verifyAttestation()) verifiedlevel = VERIFY_LEVELS.ANCHOR; // Test next level if (verifiedlevel === VERIFY_LEVELS.ANCHOR && hVerifyLevel >= VERIFY_LEVELS.GRANTED - && this.verifyGrant(requestorId, requestId, keyName)) { - verifiedlevel = VERIFY_LEVELS.GRANTED; - } + && this.verifyGrant(requestorId, requestId, keyName)) verifiedlevel = VERIFY_LEVELS.GRANTED; return verifiedlevel; }; @@ -645,10 +629,7 @@ function VerifiableCredentialBaseConstructor(identifier, issuer, expiryIn, subje * @param {string} option.keyName - A keyName - if CryptoManager is been used. * @param {string} option.pvtKey - A pvtKey in base58 format (default impl). */ - this.grantUsageFor = (requestorId, requestId, { - keyName, - pvtKey, - }) => { + this.grantUsageFor = (requestorId, requestId, { keyName, pvtKey }) => { if (_.isEmpty(_.get(this.proof, 'anchor.subject.label')) || _.isEmpty(_.get(this.proof, 'anchor.subject.data'))) { throw new Error('Invalid credential attestation/anchor'); } diff --git a/src/creds/VerifiableCredentialProxy.js b/src/creds/VerifiableCredentialProxy.js index 4a8b1128..08418a19 100644 --- a/src/creds/VerifiableCredentialProxy.js +++ b/src/creds/VerifiableCredentialProxy.js @@ -12,10 +12,7 @@ const definitions = schemaLoader.credentialDefinitions; function getCredentialDefinition(identifier, version) { let definition; if (version) { - definition = _.find(definitions, { - identifier, - version: `${version}`, - }); + definition = _.find(definitions, { identifier, version: `${version}` }); } else { definition = _.find(definitions, { identifier }); } From ef27644b669bb0b696e8efc9119fe7b90650f587 Mon Sep 17 00:00:00 2001 From: William Brooks Date: Wed, 12 Jan 2022 12:19:36 +0200 Subject: [PATCH 24/52] IDCOM-1427 Updated to use the did-io CachedResolver for resolving documents --- .babelrc | 28 - __test__/lib/signerVerifier.test.js | 1 + babel.config.js | 31 + package-lock.json | 1579 ++++++++++++++++++++++++--- package.json | 22 +- src/lib/did.js | 13 +- src/lib/signerVerifier.js | 1 + 7 files changed, 1463 insertions(+), 212 deletions(-) delete mode 100644 .babelrc create mode 100644 babel.config.js diff --git a/.babelrc b/.babelrc deleted file mode 100644 index 8a4c2d4b..00000000 --- a/.babelrc +++ /dev/null @@ -1,28 +0,0 @@ -{ - "env": { - "cjs": { - "presets": [ - ["@babel/preset-env", { - "targets": { - "node": "6.10" - }, - "modules": "commonjs" - }] - ] - }, - "browser": { - "presets": [ - [ - "@babel/preset-env", - { - "targets": { - "browsers": ["last 2 versions"] - }, - "shippedProposals": true - } - ] - ], - "plugins": ["@babel/plugin-transform-runtime"] - } - } -} diff --git a/__test__/lib/signerVerifier.test.js b/__test__/lib/signerVerifier.test.js index ff979c32..b12d4700 100644 --- a/__test__/lib/signerVerifier.test.js +++ b/__test__/lib/signerVerifier.test.js @@ -1,4 +1,5 @@ const nacl = require('tweetnacl'); +const { TextEncoder } = require('util'); const signerVerifier = require('../../src/lib/signerVerifier'); const didUtil = require('../../src/lib/did'); const { diff --git a/babel.config.js b/babel.config.js new file mode 100644 index 00000000..1b8a6407 --- /dev/null +++ b/babel.config.js @@ -0,0 +1,31 @@ +module.exports = { + env: { + cjs: { + presets: [ + ['@babel/preset-env', { + targets: { + node: '6.10', + }, + modules: 'commonjs', + }], + ], + }, + browser: { + presets: [ + [ + '@babel/preset-env', + { + targets: { + browsers: ['last 2 versions'], + }, + shippedProposals: true, + }, + ], + ], + plugins: ['@babel/plugin-transform-runtime'], + }, + test: { + plugins: ['@babel/plugin-transform-modules-commonjs'], + }, + }, +}; diff --git a/package-lock.json b/package-lock.json index f07855df..58d3839e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1355,13 +1355,14 @@ "@identity.com/did-io-driver-sol": { "version": "file:../sol-did/drivers/did-io", "requires": { - "@digitalbazaar/lru-memoize": "^2.1.0", - "@identity.com/sol-did-client": "^0.2.1", + "@identity.com/sol-did-client": "^1.0.0-beta", "@solana/web3.js": "^1.31.0" }, "dependencies": { "101": { "version": "1.6.3", + "resolved": "https://registry.npmjs.org/101/-/101-1.6.3.tgz", + "integrity": "sha512-4dmQ45yY0Dx24Qxp+zAsNLlMF6tteCyfVzgbulvSyC7tCyd3V8sW76sS0tHq8NpcbXfWTKasfyfzU1Kd86oKzw==", "requires": { "clone": "^1.0.2", "deep-eql": "^0.1.3", @@ -1370,15 +1371,21 @@ }, "@babel/code-frame": { "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", + "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", "requires": { "@babel/highlight": "^7.12.13" } }, "@babel/compat-data": { - "version": "7.13.15" + "version": "7.13.15", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.13.15.tgz", + "integrity": "sha512-ltnibHKR1VnrU4ymHyQ/CXtNXI6yZC0oJThyW78Hft8XndANwi+9H+UIklBDraIjFEJzw8wmcM427oDd9KS5wA==" }, "@babel/core": { "version": "7.13.15", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.13.15.tgz", + "integrity": "sha512-6GXmNYeNjS2Uz+uls5jalOemgIhnTMeaXo+yBUA72kC2uX/8VW6XyhVIo2L8/q0goKQA3EVKx0KOQpVKSeWadQ==", "requires": { "@babel/code-frame": "^7.12.13", "@babel/generator": "^7.13.9", @@ -1398,12 +1405,16 @@ }, "dependencies": { "source-map": { - "version": "0.5.7" + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" } } }, "@babel/generator": { "version": "7.13.9", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.13.9.tgz", + "integrity": "sha512-mHOOmY0Axl/JCTkxTU6Lf5sWOg/v8nUa+Xkt4zMTftX0wqmb6Sh7J8gvcehBw7q0AhrhAR+FDacKjCZ2X8K+Sw==", "requires": { "@babel/types": "^7.13.0", "jsesc": "^2.5.1", @@ -1411,18 +1422,24 @@ }, "dependencies": { "source-map": { - "version": "0.5.7" + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" } } }, "@babel/helper-annotate-as-pure": { "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.13.tgz", + "integrity": "sha512-7YXfX5wQ5aYM/BOlbSccHDbuXXFPxeoUmfWtz8le2yTkTZc+BxsiEnENFoi2SlmA8ewDkG2LgIMIVzzn2h8kfw==", "requires": { "@babel/types": "^7.12.13" } }, "@babel/helper-builder-binary-assignment-operator-visitor": { "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.12.13.tgz", + "integrity": "sha512-CZOv9tGphhDRlVjVkAgm8Nhklm9RzSmWpX2my+t7Ua/KT616pEzXsQCjinzvkRvHWJ9itO4f296efroX23XCMA==", "requires": { "@babel/helper-explode-assignable-expression": "^7.12.13", "@babel/types": "^7.12.13" @@ -1430,6 +1447,8 @@ }, "@babel/helper-compilation-targets": { "version": "7.13.13", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.13.tgz", + "integrity": "sha512-q1kcdHNZehBwD9jYPh3WyXcsFERi39X4I59I3NadciWtNDyZ6x+GboOxncFK0kXlKIv6BJm5acncehXWUjWQMQ==", "requires": { "@babel/compat-data": "^7.13.12", "@babel/helper-validator-option": "^7.12.17", @@ -1439,6 +1458,8 @@ }, "@babel/helper-create-class-features-plugin": { "version": "7.13.11", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.13.11.tgz", + "integrity": "sha512-ays0I7XYq9xbjCSvT+EvysLgfc3tOkwCULHjrnscGT3A9qD4sk3wXnJ3of0MAWsWGjdinFvajHU2smYuqXKMrw==", "requires": { "@babel/helper-function-name": "^7.12.13", "@babel/helper-member-expression-to-functions": "^7.13.0", @@ -1449,6 +1470,8 @@ }, "@babel/helper-create-regexp-features-plugin": { "version": "7.12.17", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.17.tgz", + "integrity": "sha512-p2VGmBu9oefLZ2nQpgnEnG0ZlRPvL8gAGvPUMQwUdaE8k49rOMuZpOwdQoy5qJf6K8jL3bcAMhVUlHAjIgJHUg==", "requires": { "@babel/helper-annotate-as-pure": "^7.12.13", "regexpu-core": "^4.7.1" @@ -1456,6 +1479,8 @@ }, "@babel/helper-define-polyfill-provider": { "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.0.tgz", + "integrity": "sha512-JT8tHuFjKBo8NnaUbblz7mIu1nnvUDiHVjXXkulZULyidvo/7P6TY7+YqpV37IfF+KUFxmlK04elKtGKXaiVgw==", "requires": { "@babel/helper-compilation-targets": "^7.13.0", "@babel/helper-module-imports": "^7.12.13", @@ -1469,12 +1494,16 @@ }, "@babel/helper-explode-assignable-expression": { "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.13.0.tgz", + "integrity": "sha512-qS0peLTDP8kOisG1blKbaoBg/o9OSa1qoumMjTK5pM+KDTtpxpsiubnCGP34vK8BXGcb2M9eigwgvoJryrzwWA==", "requires": { "@babel/types": "^7.13.0" } }, "@babel/helper-function-name": { "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz", + "integrity": "sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA==", "requires": { "@babel/helper-get-function-arity": "^7.12.13", "@babel/template": "^7.12.13", @@ -1483,12 +1512,16 @@ }, "@babel/helper-get-function-arity": { "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz", + "integrity": "sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg==", "requires": { "@babel/types": "^7.12.13" } }, "@babel/helper-hoist-variables": { "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.13.0.tgz", + "integrity": "sha512-0kBzvXiIKfsCA0y6cFEIJf4OdzfpRuNk4+YTeHZpGGc666SATFKTz6sRncwFnQk7/ugJ4dSrCj6iJuvW4Qwr2g==", "requires": { "@babel/traverse": "^7.13.0", "@babel/types": "^7.13.0" @@ -1496,18 +1529,24 @@ }, "@babel/helper-member-expression-to-functions": { "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.12.tgz", + "integrity": "sha512-48ql1CLL59aKbU94Y88Xgb2VFy7a95ykGRbJJaaVv+LX5U8wFpLfiGXJJGUozsmA1oEh/o5Bp60Voq7ACyA/Sw==", "requires": { "@babel/types": "^7.13.12" } }, "@babel/helper-module-imports": { "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.13.12.tgz", + "integrity": "sha512-4cVvR2/1B693IuOvSI20xqqa/+bl7lqAMR59R4iu39R9aOX8/JoYY1sFaNvUMyMBGnHdwvJgUrzNLoUZxXypxA==", "requires": { "@babel/types": "^7.13.12" } }, "@babel/helper-module-transforms": { "version": "7.13.14", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.13.14.tgz", + "integrity": "sha512-QuU/OJ0iAOSIatyVZmfqB0lbkVP0kDRiKj34xy+QNsnVZi/PA6BoSoreeqnxxa9EHFAIL0R9XOaAR/G9WlIy5g==", "requires": { "@babel/helper-module-imports": "^7.13.12", "@babel/helper-replace-supers": "^7.13.12", @@ -1521,6 +1560,8 @@ }, "@babel/helper-optimise-call-expression": { "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz", + "integrity": "sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA==", "requires": { "@babel/types": "^7.12.13" } @@ -1532,6 +1573,8 @@ }, "@babel/helper-remap-async-to-generator": { "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.13.0.tgz", + "integrity": "sha512-pUQpFBE9JvC9lrQbpX0TmeNIy5s7GnZjna2lhhcHC7DzgBs6fWn722Y5cfwgrtrqc7NAJwMvOa0mKhq6XaE4jg==", "requires": { "@babel/helper-annotate-as-pure": "^7.12.13", "@babel/helper-wrap-function": "^7.13.0", @@ -1540,6 +1583,8 @@ }, "@babel/helper-replace-supers": { "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.13.12.tgz", + "integrity": "sha512-Gz1eiX+4yDO8mT+heB94aLVNCL+rbuT2xy4YfyNqu8F+OI6vMvJK891qGBTqL9Uc8wxEvRW92Id6G7sDen3fFw==", "requires": { "@babel/helper-member-expression-to-functions": "^7.13.12", "@babel/helper-optimise-call-expression": "^7.12.13", @@ -1549,30 +1594,42 @@ }, "@babel/helper-simple-access": { "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.13.12.tgz", + "integrity": "sha512-7FEjbrx5SL9cWvXioDbnlYTppcZGuCY6ow3/D5vMggb2Ywgu4dMrpTJX0JdQAIcRRUElOIxF3yEooa9gUb9ZbA==", "requires": { "@babel/types": "^7.13.12" } }, "@babel/helper-skip-transparent-expression-wrappers": { "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz", + "integrity": "sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==", "requires": { "@babel/types": "^7.12.1" } }, "@babel/helper-split-export-declaration": { "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz", + "integrity": "sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg==", "requires": { "@babel/types": "^7.12.13" } }, "@babel/helper-validator-identifier": { - "version": "7.12.11" + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", + "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==" }, "@babel/helper-validator-option": { - "version": "7.12.17" + "version": "7.12.17", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz", + "integrity": "sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw==" }, "@babel/helper-wrap-function": { "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.13.0.tgz", + "integrity": "sha512-1UX9F7K3BS42fI6qd2A4BjKzgGjToscyZTdp1DjknHLCIvpgne6918io+aL5LXFcER/8QWiwpoY902pVEqgTXA==", "requires": { "@babel/helper-function-name": "^7.12.13", "@babel/template": "^7.12.13", @@ -1582,6 +1639,8 @@ }, "@babel/helpers": { "version": "7.13.10", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.13.10.tgz", + "integrity": "sha512-4VO883+MWPDUVRF3PhiLBUFHoX/bsLTGFpFK/HqvvfBZz2D57u9XzPVNFVBTc0PW/CWR9BXTOKt8NF4DInUHcQ==", "requires": { "@babel/template": "^7.12.13", "@babel/traverse": "^7.13.0", @@ -1590,6 +1649,8 @@ }, "@babel/highlight": { "version": "7.13.10", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.10.tgz", + "integrity": "sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg==", "requires": { "@babel/helper-validator-identifier": "^7.12.11", "chalk": "^2.0.0", @@ -1598,12 +1659,16 @@ "dependencies": { "ansi-styles": { "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "requires": { "color-convert": "^1.9.0" } }, "chalk": { "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -1612,15 +1677,21 @@ }, "color-convert": { "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "requires": { "color-name": "1.1.3" } }, "color-name": { - "version": "1.1.3" + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" }, "supports-color": { "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "requires": { "has-flag": "^3.0.0" } @@ -1634,6 +1705,8 @@ }, "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.13.12.tgz", + "integrity": "sha512-d0u3zWKcoZf379fOeJdr1a5WPDny4aOFZ6hlfKivgK0LY7ZxNfoaHL2fWwdGtHyVvra38FC+HVYkO+byfSA8AQ==", "requires": { "@babel/helper-plugin-utils": "^7.13.0", "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", @@ -1642,6 +1715,8 @@ }, "@babel/plugin-proposal-async-generator-functions": { "version": "7.13.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.13.15.tgz", + "integrity": "sha512-VapibkWzFeoa6ubXy/NgV5U2U4MVnUlvnx6wo1XhlsaTrLYWE0UFpDQsVrmn22q5CzeloqJ8gEMHSKxuee6ZdA==", "requires": { "@babel/helper-plugin-utils": "^7.13.0", "@babel/helper-remap-async-to-generator": "^7.13.0", @@ -1650,6 +1725,8 @@ }, "@babel/plugin-proposal-class-properties": { "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.13.0.tgz", + "integrity": "sha512-KnTDjFNC1g+45ka0myZNvSBFLhNCLN+GeGYLDEA8Oq7MZ6yMgfLoIRh86GRT0FjtJhZw8JyUskP9uvj5pHM9Zg==", "requires": { "@babel/helper-create-class-features-plugin": "^7.13.0", "@babel/helper-plugin-utils": "^7.13.0" @@ -1657,6 +1734,8 @@ }, "@babel/plugin-proposal-dynamic-import": { "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.13.8.tgz", + "integrity": "sha512-ONWKj0H6+wIRCkZi9zSbZtE/r73uOhMVHh256ys0UzfM7I3d4n+spZNWjOnJv2gzopumP2Wxi186vI8N0Y2JyQ==", "requires": { "@babel/helper-plugin-utils": "^7.13.0", "@babel/plugin-syntax-dynamic-import": "^7.8.3" @@ -1664,6 +1743,8 @@ }, "@babel/plugin-proposal-export-namespace-from": { "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.13.tgz", + "integrity": "sha512-INAgtFo4OnLN3Y/j0VwAgw3HDXcDtX+C/erMvWzuV9v71r7urb6iyMXu7eM9IgLr1ElLlOkaHjJ0SbCmdOQ3Iw==", "requires": { "@babel/helper-plugin-utils": "^7.12.13", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" @@ -1671,6 +1752,8 @@ }, "@babel/plugin-proposal-json-strings": { "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.13.8.tgz", + "integrity": "sha512-w4zOPKUFPX1mgvTmL/fcEqy34hrQ1CRcGxdphBc6snDnnqJ47EZDIyop6IwXzAC8G916hsIuXB2ZMBCExC5k7Q==", "requires": { "@babel/helper-plugin-utils": "^7.13.0", "@babel/plugin-syntax-json-strings": "^7.8.3" @@ -1678,6 +1761,8 @@ }, "@babel/plugin-proposal-logical-assignment-operators": { "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.13.8.tgz", + "integrity": "sha512-aul6znYB4N4HGweImqKn59Su9RS8lbUIqxtXTOcAGtNIDczoEFv+l1EhmX8rUBp3G1jMjKJm8m0jXVp63ZpS4A==", "requires": { "@babel/helper-plugin-utils": "^7.13.0", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" @@ -1685,6 +1770,8 @@ }, "@babel/plugin-proposal-nullish-coalescing-operator": { "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.13.8.tgz", + "integrity": "sha512-iePlDPBn//UhxExyS9KyeYU7RM9WScAG+D3Hhno0PLJebAEpDZMocbDe64eqynhNAnwz/vZoL/q/QB2T1OH39A==", "requires": { "@babel/helper-plugin-utils": "^7.13.0", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" @@ -1692,6 +1779,8 @@ }, "@babel/plugin-proposal-numeric-separator": { "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.13.tgz", + "integrity": "sha512-O1jFia9R8BUCl3ZGB7eitaAPu62TXJRHn7rh+ojNERCFyqRwJMTmhz+tJ+k0CwI6CLjX/ee4qW74FSqlq9I35w==", "requires": { "@babel/helper-plugin-utils": "^7.12.13", "@babel/plugin-syntax-numeric-separator": "^7.10.4" @@ -1699,6 +1788,8 @@ }, "@babel/plugin-proposal-object-rest-spread": { "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.13.8.tgz", + "integrity": "sha512-DhB2EuB1Ih7S3/IRX5AFVgZ16k3EzfRbq97CxAVI1KSYcW+lexV8VZb7G7L8zuPVSdQMRn0kiBpf/Yzu9ZKH0g==", "requires": { "@babel/compat-data": "^7.13.8", "@babel/helper-compilation-targets": "^7.13.8", @@ -1709,6 +1800,8 @@ }, "@babel/plugin-proposal-optional-catch-binding": { "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.13.8.tgz", + "integrity": "sha512-0wS/4DUF1CuTmGo+NiaHfHcVSeSLj5S3e6RivPTg/2k3wOv3jO35tZ6/ZWsQhQMvdgI7CwphjQa/ccarLymHVA==", "requires": { "@babel/helper-plugin-utils": "^7.13.0", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" @@ -1716,6 +1809,8 @@ }, "@babel/plugin-proposal-optional-chaining": { "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.13.12.tgz", + "integrity": "sha512-fcEdKOkIB7Tf4IxrgEVeFC4zeJSTr78no9wTdBuZZbqF64kzllU0ybo2zrzm7gUQfxGhBgq4E39oRs8Zx/RMYQ==", "requires": { "@babel/helper-plugin-utils": "^7.13.0", "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", @@ -1724,6 +1819,8 @@ }, "@babel/plugin-proposal-private-methods": { "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.13.0.tgz", + "integrity": "sha512-MXyyKQd9inhx1kDYPkFRVOBXQ20ES8Pto3T7UZ92xj2mY0EVD8oAVzeyYuVfy/mxAdTSIayOvg+aVzcHV2bn6Q==", "requires": { "@babel/helper-create-class-features-plugin": "^7.13.0", "@babel/helper-plugin-utils": "^7.13.0" @@ -1731,6 +1828,8 @@ }, "@babel/plugin-proposal-unicode-property-regex": { "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.13.tgz", + "integrity": "sha512-XyJmZidNfofEkqFV5VC/bLabGmO5QzenPO/YOfGuEbgU+2sSwMmio3YLb4WtBgcmmdwZHyVyv8on77IUjQ5Gvg==", "requires": { "@babel/helper-create-regexp-features-plugin": "^7.12.13", "@babel/helper-plugin-utils": "^7.12.13" @@ -1744,6 +1843,8 @@ }, "@babel/plugin-syntax-bigint": { "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", "requires": { "@babel/helper-plugin-utils": "^7.8.0" } @@ -1768,6 +1869,8 @@ }, "@babel/plugin-syntax-import-meta": { "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", "requires": { "@babel/helper-plugin-utils": "^7.10.4" } @@ -1816,18 +1919,24 @@ }, "@babel/plugin-syntax-top-level-await": { "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.13.tgz", + "integrity": "sha512-A81F9pDwyS7yM//KwbCSDqy3Uj4NMIurtplxphWxoYtNPov7cJsDkAFNNyVlIZ3jwGycVsurZ+LtOA8gZ376iQ==", "requires": { "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-arrow-functions": { "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.13.0.tgz", + "integrity": "sha512-96lgJagobeVmazXFaDrbmCLQxBysKu7U6Do3mLsx27gf5Dk85ezysrs2BZUpXD703U/Su1xTBDxxar2oa4jAGg==", "requires": { "@babel/helper-plugin-utils": "^7.13.0" } }, "@babel/plugin-transform-async-to-generator": { "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.13.0.tgz", + "integrity": "sha512-3j6E004Dx0K3eGmhxVJxwwI89CTJrce7lg3UrtFuDAVQ/2+SJ/h/aSFOeE6/n0WB1GsOffsJp6MnPQNQ8nmwhg==", "requires": { "@babel/helper-module-imports": "^7.12.13", "@babel/helper-plugin-utils": "^7.13.0", @@ -1836,18 +1945,24 @@ }, "@babel/plugin-transform-block-scoped-functions": { "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.13.tgz", + "integrity": "sha512-zNyFqbc3kI/fVpqwfqkg6RvBgFpC4J18aKKMmv7KdQ/1GgREapSJAykLMVNwfRGO3BtHj3YQZl8kxCXPcVMVeg==", "requires": { "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-block-scoping": { "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.13.tgz", + "integrity": "sha512-Pxwe0iqWJX4fOOM2kEZeUuAxHMWb9nK+9oh5d11bsLoB0xMg+mkDpt0eYuDZB7ETrY9bbcVlKUGTOGWy7BHsMQ==", "requires": { "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-classes": { "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.13.0.tgz", + "integrity": "sha512-9BtHCPUARyVH1oXGcSJD3YpsqRLROJx5ZNP6tN5vnk17N0SVf9WCtf8Nuh1CFmgByKKAIMstitKduoCmsaDK5g==", "requires": { "@babel/helper-annotate-as-pure": "^7.12.13", "@babel/helper-function-name": "^7.12.13", @@ -1860,18 +1975,24 @@ }, "@babel/plugin-transform-computed-properties": { "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.13.0.tgz", + "integrity": "sha512-RRqTYTeZkZAz8WbieLTvKUEUxZlUTdmL5KGMyZj7FnMfLNKV4+r5549aORG/mgojRmFlQMJDUupwAMiF2Q7OUg==", "requires": { "@babel/helper-plugin-utils": "^7.13.0" } }, "@babel/plugin-transform-destructuring": { "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.13.0.tgz", + "integrity": "sha512-zym5em7tePoNT9s964c0/KU3JPPnuq7VhIxPRefJ4/s82cD+q1mgKfuGRDMCPL0HTyKz4dISuQlCusfgCJ86HA==", "requires": { "@babel/helper-plugin-utils": "^7.13.0" } }, "@babel/plugin-transform-dotall-regex": { "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.13.tgz", + "integrity": "sha512-foDrozE65ZFdUC2OfgeOCrEPTxdB3yjqxpXh8CH+ipd9CHd4s/iq81kcUpyH8ACGNEPdFqbtzfgzbT/ZGlbDeQ==", "requires": { "@babel/helper-create-regexp-features-plugin": "^7.12.13", "@babel/helper-plugin-utils": "^7.12.13" @@ -1879,12 +2000,16 @@ }, "@babel/plugin-transform-duplicate-keys": { "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.13.tgz", + "integrity": "sha512-NfADJiiHdhLBW3pulJlJI2NB0t4cci4WTZ8FtdIuNc2+8pslXdPtRRAEWqUY+m9kNOk2eRYbTAOipAxlrOcwwQ==", "requires": { "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-exponentiation-operator": { "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.13.tgz", + "integrity": "sha512-fbUelkM1apvqez/yYx1/oICVnGo2KM5s63mhGylrmXUxK/IAXSIf87QIxVfZldWf4QsOafY6vV3bX8aMHSvNrA==", "requires": { "@babel/helper-builder-binary-assignment-operator-visitor": "^7.12.13", "@babel/helper-plugin-utils": "^7.12.13" @@ -1892,12 +2017,16 @@ }, "@babel/plugin-transform-for-of": { "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.13.0.tgz", + "integrity": "sha512-IHKT00mwUVYE0zzbkDgNRP6SRzvfGCYsOxIRz8KsiaaHCcT9BWIkO+H9QRJseHBLOGBZkHUdHiqj6r0POsdytg==", "requires": { "@babel/helper-plugin-utils": "^7.13.0" } }, "@babel/plugin-transform-function-name": { "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.13.tgz", + "integrity": "sha512-6K7gZycG0cmIwwF7uMK/ZqeCikCGVBdyP2J5SKNCXO5EOHcqi+z7Jwf8AmyDNcBgxET8DrEtCt/mPKPyAzXyqQ==", "requires": { "@babel/helper-function-name": "^7.12.13", "@babel/helper-plugin-utils": "^7.12.13" @@ -1905,18 +2034,24 @@ }, "@babel/plugin-transform-literals": { "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.13.tgz", + "integrity": "sha512-FW+WPjSR7hiUxMcKqyNjP05tQ2kmBCdpEpZHY1ARm96tGQCCBvXKnpjILtDplUnJ/eHZ0lALLM+d2lMFSpYJrQ==", "requires": { "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-member-expression-literals": { "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.13.tgz", + "integrity": "sha512-kxLkOsg8yir4YeEPHLuO2tXP9R/gTjpuTOjshqSpELUN3ZAg2jfDnKUvzzJxObun38sw3wm4Uu69sX/zA7iRvg==", "requires": { "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-modules-amd": { "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.13.0.tgz", + "integrity": "sha512-EKy/E2NHhY/6Vw5d1k3rgoobftcNUmp9fGjb9XZwQLtTctsRBOTRO7RHHxfIky1ogMN5BxN7p9uMA3SzPfotMQ==", "requires": { "@babel/helper-module-transforms": "^7.13.0", "@babel/helper-plugin-utils": "^7.13.0", @@ -1925,6 +2060,8 @@ }, "@babel/plugin-transform-modules-commonjs": { "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.13.8.tgz", + "integrity": "sha512-9QiOx4MEGglfYZ4XOnU79OHr6vIWUakIj9b4mioN8eQIoEh+pf5p/zEB36JpDFWA12nNMiRf7bfoRvl9Rn79Bw==", "requires": { "@babel/helper-module-transforms": "^7.13.0", "@babel/helper-plugin-utils": "^7.13.0", @@ -1934,6 +2071,8 @@ }, "@babel/plugin-transform-modules-systemjs": { "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.13.8.tgz", + "integrity": "sha512-hwqctPYjhM6cWvVIlOIe27jCIBgHCsdH2xCJVAYQm7V5yTMoilbVMi9f6wKg0rpQAOn6ZG4AOyvCqFF/hUh6+A==", "requires": { "@babel/helper-hoist-variables": "^7.13.0", "@babel/helper-module-transforms": "^7.13.0", @@ -1944,6 +2083,8 @@ }, "@babel/plugin-transform-modules-umd": { "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.13.0.tgz", + "integrity": "sha512-D/ILzAh6uyvkWjKKyFE/W0FzWwasv6vPTSqPcjxFqn6QpX3u8DjRVliq4F2BamO2Wee/om06Vyy+vPkNrd4wxw==", "requires": { "@babel/helper-module-transforms": "^7.13.0", "@babel/helper-plugin-utils": "^7.13.0" @@ -1951,18 +2092,24 @@ }, "@babel/plugin-transform-named-capturing-groups-regex": { "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.13.tgz", + "integrity": "sha512-Xsm8P2hr5hAxyYblrfACXpQKdQbx4m2df9/ZZSQ8MAhsadw06+jW7s9zsSw6he+mJZXRlVMyEnVktJo4zjk1WA==", "requires": { "@babel/helper-create-regexp-features-plugin": "^7.12.13" } }, "@babel/plugin-transform-new-target": { "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.13.tgz", + "integrity": "sha512-/KY2hbLxrG5GTQ9zzZSc3xWiOy379pIETEhbtzwZcw9rvuaVV4Fqy7BYGYOWZnaoXIQYbbJ0ziXLa/sKcGCYEQ==", "requires": { "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-object-super": { "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.13.tgz", + "integrity": "sha512-JzYIcj3XtYspZDV8j9ulnoMPZZnF/Cj0LUxPOjR89BdBVx+zYJI9MdMIlUZjbXDX+6YVeS6I3e8op+qQ3BYBoQ==", "requires": { "@babel/helper-plugin-utils": "^7.12.13", "@babel/helper-replace-supers": "^7.12.13" @@ -1970,36 +2117,48 @@ }, "@babel/plugin-transform-parameters": { "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.13.0.tgz", + "integrity": "sha512-Jt8k/h/mIwE2JFEOb3lURoY5C85ETcYPnbuAJ96zRBzh1XHtQZfs62ChZ6EP22QlC8c7Xqr9q+e1SU5qttwwjw==", "requires": { "@babel/helper-plugin-utils": "^7.13.0" } }, "@babel/plugin-transform-property-literals": { "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.13.tgz", + "integrity": "sha512-nqVigwVan+lR+g8Fj8Exl0UQX2kymtjcWfMOYM1vTYEKujeyv2SkMgazf2qNcK7l4SDiKyTA/nHCPqL4e2zo1A==", "requires": { "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-regenerator": { "version": "7.13.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.13.15.tgz", + "integrity": "sha512-Bk9cOLSz8DiurcMETZ8E2YtIVJbFCPGW28DJWUakmyVWtQSm6Wsf0p4B4BfEr/eL2Nkhe/CICiUiMOCi1TPhuQ==", "requires": { "regenerator-transform": "^0.14.2" } }, "@babel/plugin-transform-reserved-words": { "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.13.tgz", + "integrity": "sha512-xhUPzDXxZN1QfiOy/I5tyye+TRz6lA7z6xaT4CLOjPRMVg1ldRf0LHw0TDBpYL4vG78556WuHdyO9oi5UmzZBg==", "requires": { "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-shorthand-properties": { "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.13.tgz", + "integrity": "sha512-xpL49pqPnLtf0tVluuqvzWIgLEhuPpZzvs2yabUHSKRNlN7ScYU7aMlmavOeyXJZKgZKQRBlh8rHbKiJDraTSw==", "requires": { "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-spread": { "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.13.0.tgz", + "integrity": "sha512-V6vkiXijjzYeFmQTr3dBxPtZYLPcUfY34DebOU27jIl2M/Y8Egm52Hw82CSjjPqd54GTlJs5x+CR7HeNr24ckg==", "requires": { "@babel/helper-plugin-utils": "^7.13.0", "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1" @@ -2007,30 +2166,40 @@ }, "@babel/plugin-transform-sticky-regex": { "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.13.tgz", + "integrity": "sha512-Jc3JSaaWT8+fr7GRvQP02fKDsYk4K/lYwWq38r/UGfaxo89ajud321NH28KRQ7xy1Ybc0VUE5Pz8psjNNDUglg==", "requires": { "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-template-literals": { "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.13.0.tgz", + "integrity": "sha512-d67umW6nlfmr1iehCcBv69eSUSySk1EsIS8aTDX4Xo9qajAh6mYtcl4kJrBkGXuxZPEgVr7RVfAvNW6YQkd4Mw==", "requires": { "@babel/helper-plugin-utils": "^7.13.0" } }, "@babel/plugin-transform-typeof-symbol": { "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.13.tgz", + "integrity": "sha512-eKv/LmUJpMnu4npgfvs3LiHhJua5fo/CysENxa45YCQXZwKnGCQKAg87bvoqSW1fFT+HA32l03Qxsm8ouTY3ZQ==", "requires": { "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-unicode-escapes": { "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.13.tgz", + "integrity": "sha512-0bHEkdwJ/sN/ikBHfSmOXPypN/beiGqjo+o4/5K+vxEFNPRPdImhviPakMKG4x96l85emoa0Z6cDflsdBusZbw==", "requires": { "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-unicode-regex": { "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.13.tgz", + "integrity": "sha512-mDRzSNY7/zopwisPZ5kM9XKCfhchqIYwAKRERtEnhYscZB79VRekuRSoYbN0+KVe3y8+q1h6A4svXtP7N+UoCA==", "requires": { "@babel/helper-create-regexp-features-plugin": "^7.12.13", "@babel/helper-plugin-utils": "^7.12.13" @@ -2038,6 +2207,8 @@ }, "@babel/preset-env": { "version": "7.13.15", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.13.15.tgz", + "integrity": "sha512-D4JAPMXcxk69PKe81jRJ21/fP/uYdcTZ3hJDF5QX2HSI9bBxxYw/dumdR6dGumhjxlprHPE4XWoPaqzZUVy2MA==", "requires": { "@babel/compat-data": "^7.13.15", "@babel/helper-compilation-targets": "^7.13.13", @@ -2112,6 +2283,8 @@ "dependencies": { "babel-plugin-polyfill-regenerator": { "version": "0.2.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.2.0.tgz", + "integrity": "sha512-J7vKbCuD2Xi/eEHxquHN14bXAW9CXtecwuLrOIDJtcZzTaPzV1VdEfoUf9AzcRBMolKUQKM9/GVojeh0hFiqMg==", "requires": { "@babel/helper-define-polyfill-provider": "^0.2.0" } @@ -2120,6 +2293,8 @@ }, "@babel/preset-modules": { "version": "0.1.4", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.4.tgz", + "integrity": "sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==", "requires": { "@babel/helper-plugin-utils": "^7.0.0", "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", @@ -2130,12 +2305,16 @@ }, "@babel/runtime": { "version": "7.13.10", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.13.10.tgz", + "integrity": "sha512-4QPkjJq6Ns3V/RgpEahRk+AGfL0eO6RHHtTWoNNr5mO49G6B5+X6d6THgWEAvTrznU5xYpbAlVKRYcsCgh/Akw==", "requires": { "regenerator-runtime": "^0.13.4" } }, "@babel/runtime-corejs3": { "version": "7.13.10", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.13.10.tgz", + "integrity": "sha512-x/XYVQ1h684pp1mJwOV4CyvqZXqbc8CMsMGUnAbuc82ZCdv1U63w5RSUzgDSXQHG5Rps/kiksH6g2D5BuaKyXg==", "requires": { "core-js-pure": "^3.0.0", "regenerator-runtime": "^0.13.4" @@ -2143,6 +2322,8 @@ }, "@babel/template": { "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", + "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", "requires": { "@babel/code-frame": "^7.12.13", "@babel/parser": "^7.12.13", @@ -2151,6 +2332,8 @@ }, "@babel/traverse": { "version": "7.13.15", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.13.15.tgz", + "integrity": "sha512-/mpZMNvj6bce59Qzl09fHEs8Bt8NnpEDQYleHUPZQ3wXUMvXi+HJPLars68oAbmp839fGoOkv2pSL2z9ajCIaQ==", "requires": { "@babel/code-frame": "^7.12.13", "@babel/generator": "^7.13.9", @@ -2164,6 +2347,8 @@ }, "@babel/types": { "version": "7.13.14", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.14.tgz", + "integrity": "sha512-A2aa3QTkWoyqsZZFl56MLUsfmh7O0gN41IPvXAE/++8ojpbz12SszD7JEGYVdn4f9Kt4amIei07swF1h4AqmmQ==", "requires": { "@babel/helper-validator-identifier": "^7.12.11", "lodash": "^4.17.19", @@ -2171,7 +2356,9 @@ } }, "@bcoe/v8-coverage": { - "version": "0.2.3" + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==" }, "@cnakazawa/watch": { "version": "1.0.4", @@ -2189,6 +2376,8 @@ }, "@digitalbazaar/did-method-key": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@digitalbazaar/did-method-key/-/did-method-key-2.0.0.tgz", + "integrity": "sha512-540CsZUesyRxku72Dkl7BC/h26iFko/X+NXx1D2KQpi8cSgb6gs1PqvXEAUThszGq1y2p/6ByDKYAJhlaAG8VQ==", "requires": { "@digitalbazaar/did-io": "^1.0.0", "@digitalbazaar/ed25519-verification-key-2020": "^3.0.0", @@ -2199,6 +2388,8 @@ }, "@digitalbazaar/ed25519-verification-key-2020": { "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@digitalbazaar/ed25519-verification-key-2020/-/ed25519-verification-key-2020-3.2.0.tgz", + "integrity": "sha512-A+17sRJ+rRNuN6yG0zZMucbVUpxUkBRLTb503caoJv0GB5853HXSaZbl83kKl9LCh02ExbQWxD6o/aqeR012uA==", "requires": { "@stablelib/ed25519": "^1.0.1", "base58-universal": "^1.0.0", @@ -2226,6 +2417,8 @@ }, "@digitalbazaar/x25519-key-agreement-key-2020": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@digitalbazaar/x25519-key-agreement-key-2020/-/x25519-key-agreement-key-2020-2.0.0.tgz", + "integrity": "sha512-VI39m0nvQlOXi4Q3w+2YFj7XvWN145KNoZMgEWFOaA/PaIjswniKSgbY98sHtMGfN/JCqQlVeYnCMuheP5H0WQ==", "requires": { "base58-universal": "^1.0.0", "crypto-ld": "^5.0.0", @@ -2252,7 +2445,9 @@ } }, "@identity.com/sol-did-client": { - "version": "0.2.1", + "version": "1.0.0-beta", + "resolved": "https://registry.npmjs.org/@identity.com/sol-did-client/-/sol-did-client-1.0.0-beta.tgz", + "integrity": "sha512-uzIo8B5ScUTnr4SAJrxruLb+yu8EtJUvNHaftYBfoJ5RYKZ0e+5kjpVuVlR66yoycOacjNF1o4c/MVzvGMG86g==", "requires": { "@solana/web3.js": "^1.21.0", "bn.js": "^4.12.0", @@ -2262,44 +2457,15 @@ "ramda": "^0.27.1" }, "dependencies": { - "@solana/web3.js": { - "version": "1.21.0", - "requires": { - "@babel/runtime": "^7.12.5", - "@solana/buffer-layout": "^3.0.0", - "bn.js": "^5.0.0", - "borsh": "^0.4.0", - "bs58": "^4.0.1", - "buffer": "6.0.1", - "crypto-hash": "^1.2.2", - "jayson": "^3.4.4", - "js-sha3": "^0.8.0", - "node-fetch": "^2.6.1", - "rpc-websockets": "^7.4.2", - "secp256k1": "^4.0.2", - "superstruct": "^0.14.2", - "tweetnacl": "^1.0.0" - }, - "dependencies": { - "bn.js": { - "version": "5.2.0" - }, - "borsh": { - "version": "0.4.0", - "requires": { - "@types/bn.js": "^4.11.5", - "bn.js": "^5.0.0", - "bs58": "^4.0.0", - "text-encoding-utf-8": "^1.0.2" - } - } - } - }, "bn.js": { - "version": "4.12.0" + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" }, "borsh": { "version": "0.3.1", + "resolved": "https://registry.npmjs.org/borsh/-/borsh-0.3.1.tgz", + "integrity": "sha512-gJoSTnhwLxN/i2+15Y7uprU8h3CKI+Co4YKZKvrGYUy0FwHWM20x5Sx7eU8Xv4HQqV+7rb4r3P7K1cBIQe3q8A==", "requires": { "@types/bn.js": "^4.11.5", "bn.js": "^5.0.0", @@ -2308,7 +2474,9 @@ }, "dependencies": { "bn.js": { - "version": "5.2.0" + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", + "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==" } } } @@ -2316,6 +2484,8 @@ }, "@istanbuljs/load-nyc-config": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", "requires": { "camelcase": "^5.3.1", "find-up": "^4.1.0", @@ -2325,10 +2495,14 @@ } }, "@istanbuljs/schema": { - "version": "0.1.3" + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==" }, "@jest/console": { "version": "25.5.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-25.5.0.tgz", + "integrity": "sha512-T48kZa6MK1Y6k4b89sexwmSF4YLeZS/Udqg3Jj3jG/cHH+N/sLFCEoXEDMOKugJQ9FxPN1osxIknvKkxt6MKyw==", "requires": { "@jest/types": "^25.5.0", "chalk": "^3.0.0", @@ -2448,6 +2622,8 @@ }, "@jest/test-result": { "version": "25.5.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-25.5.0.tgz", + "integrity": "sha512-oV+hPJgXN7IQf/fHWkcS99y0smKLU2czLBJ9WA0jHITLst58HpQMtzSYxzaBvYc6U5U6jfoMthqsUlUlbRXs0A==", "requires": { "@jest/console": "^25.5.0", "@jest/types": "^25.5.0", @@ -2492,6 +2668,8 @@ }, "@jest/types": { "version": "25.5.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-25.5.0.tgz", + "integrity": "sha512-OXD0RgQ86Tu3MazKo8bnrkDRaDXXMGUqd+kTtLtK1Zb7CRzQcaSRPPPV37SvYTdevXEBVxe0HXylEjs8ibkmCw==", "requires": { "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^1.1.1", @@ -2501,6 +2679,8 @@ }, "@rollup/plugin-babel": { "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.0.tgz", + "integrity": "sha512-9uIC8HZOnVLrLHxayq/PTzw+uS25E14KPUBh5ktF+18Mjo5yK0ToMMx6epY0uEgkjwJw0aBW4x2horYXh8juWw==", "requires": { "@babel/helper-module-imports": "^7.10.4", "@rollup/pluginutils": "^3.1.0" @@ -2526,6 +2706,8 @@ }, "@rollup/plugin-node-resolve": { "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-9.0.0.tgz", + "integrity": "sha512-gPz+utFHLRrd41WMP13Jq5mqqzHL3OXrfj3/MkSyB6UBIcuNt9j60GCbarzMzdf1VHFpOxfQh/ez7wyadLMqkg==", "requires": { "@rollup/pluginutils": "^3.1.0", "@types/resolve": "1.17.1", @@ -2557,12 +2739,16 @@ }, "@sinonjs/commons": { "version": "1.8.3", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", + "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==", "requires": { "type-detect": "4.0.8" }, "dependencies": { "type-detect": { - "version": "4.0.8" + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==" } } }, @@ -2640,6 +2826,8 @@ }, "@types/babel__core": { "version": "7.1.14", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.14.tgz", + "integrity": "sha512-zGZJzzBUVDo/eV6KgbE0f0ZI7dInEYvo12Rb70uNQDshC3SkRMb67ja0GgRHZgAX3Za6rhaWlvbDO8rrGyAb1g==", "requires": { "@babel/parser": "^7.1.0", "@babel/types": "^7.0.0", @@ -2650,12 +2838,16 @@ }, "@types/babel__generator": { "version": "7.6.2", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.2.tgz", + "integrity": "sha512-MdSJnBjl+bdwkLskZ3NGFp9YcXGx5ggLpQQPqtgakVhsWK0hTtNYhjpZLlWQTviGTvF8at+Bvli3jV7faPdgeQ==", "requires": { "@babel/types": "^7.0.0" } }, "@types/babel__template": { "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.0.tgz", + "integrity": "sha512-NTPErx4/FiPCGScH7foPyr+/1Dkzkni+rHiYHHoTjvwou7AQzJkNeD60A9CXRy+ZEN2B1bggmkTMCDb+Mv5k+A==", "requires": { "@babel/parser": "^7.1.0", "@babel/types": "^7.0.0" @@ -2663,6 +2855,8 @@ }, "@types/babel__traverse": { "version": "7.11.1", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.11.1.tgz", + "integrity": "sha512-Vs0hm0vPahPMYi9tDjtP66llufgO3ST16WXaSTtDGEl9cewAl3AibmxWw6TINOqHPT9z0uABKAYjT9jNSg4npw==", "requires": { "@babel/types": "^7.3.0" } @@ -2675,6 +2869,8 @@ }, "@types/connect": { "version": "3.4.34", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.34.tgz", + "integrity": "sha512-ePPA/JuI+X0vb+gSWlPKOY0NdNAie/rPUqX2GUPpbZwiKTkSPhjXWuee47E4MtE54QVzGCQMQkAL6JhV2E1+cQ==", "requires": { "@types/node": "*" } @@ -2683,10 +2879,14 @@ "version": "1.0.0" }, "@types/estree": { - "version": "0.0.47" + "version": "0.0.47", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.47.tgz", + "integrity": "sha512-c5ciR06jK8u9BstrmJyO97m+klJrrhCf9u3rLu3DEAJBirxRqSCvDQoYKmxuYwQI5SZChAWu+tq9oVlGRuzPAg==" }, "@types/express-serve-static-core": { "version": "4.17.19", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.19.tgz", + "integrity": "sha512-DJOSHzX7pCiSElWaGR8kCprwibCB/3yW6vcT8VG3P0SJjnv19gnWG/AZMfM60Xj/YJIp/YCaDHyvzsFVeniARA==", "requires": { "@types/node": "*", "@types/qs": "*", @@ -2695,12 +2895,16 @@ }, "@types/graceful-fs": { "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz", + "integrity": "sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==", "requires": { "@types/node": "*" } }, "@types/istanbul-lib-coverage": { - "version": "2.0.3" + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz", + "integrity": "sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw==" }, "@types/istanbul-lib-report": { "version": "3.0.0", @@ -2725,16 +2929,22 @@ } }, "@types/json-schema": { - "version": "7.0.7" + "version": "7.0.7", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.7.tgz", + "integrity": "sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA==" }, "@types/json5": { "version": "0.0.29" }, "@types/lodash": { - "version": "4.14.168" + "version": "4.14.168", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.168.tgz", + "integrity": "sha512-oVfRvqHV/V6D1yifJbVRU3TMp8OT6o6BG+U9MkwuJ3U8/CsDHvalRpsxBqivn71ztOFZBTfJMvETbqHiaNSj7Q==" }, "@types/node": { - "version": "14.14.41" + "version": "14.14.41", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.41.tgz", + "integrity": "sha512-dueRKfaJL4RTtSa7bWeTK1M+VH+Gns73oCgzvYfHZywRCoPSd8EkXBL0mZ9unPTveBn+D9phZBaxuzpwjWkW0g==" }, "@types/normalize-package-data": { "version": "2.4.0", @@ -2750,13 +2960,19 @@ "integrity": "sha512-5qOlnZscTn4xxM5MeGXAMOsIOIKIbh9e85zJWfBRVPlRMEVawzoPhINYbRGkBZCI8LxvBe7tJCdWiarA99OZfQ==" }, "@types/qs": { - "version": "6.9.6" + "version": "6.9.6", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.6.tgz", + "integrity": "sha512-0/HnwIfW4ki2D8L8c9GVcG5I72s9jP5GSLVF0VIXDW00kmIpA6O33G7a8n59Tmh7Nz0WUC3rSb7PTY/sdW2JzA==" }, "@types/range-parser": { - "version": "1.2.3" + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.3.tgz", + "integrity": "sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA==" }, "@types/resolve": { "version": "1.17.1", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", + "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", "requires": { "@types/node": "*" } @@ -2766,12 +2982,16 @@ }, "@types/yargs": { "version": "15.0.13", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz", + "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==", "requires": { "@types/yargs-parser": "*" } }, "@types/yargs-parser": { - "version": "20.2.0" + "version": "20.2.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-20.2.0.tgz", + "integrity": "sha512-37RSHht+gzzgYeobbG+KWryeAW8J33Nhr69cjTqSYymXVZEN9NbRYWoYlRtDhHKPVT1FyNKwaTPC1NynKZpzRA==" }, "@typescript-eslint/eslint-plugin": { "version": "2.34.0", @@ -2783,7 +3003,9 @@ }, "dependencies": { "regexpp": { - "version": "3.1.0" + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", + "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==" } } }, @@ -2863,7 +3085,9 @@ } }, "acorn-jsx": { - "version": "5.3.1" + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", + "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==" }, "acorn-walk": { "version": "6.2.0", @@ -2884,26 +3108,36 @@ }, "ansi-escapes": { "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", "requires": { "type-fest": "^0.21.3" }, "dependencies": { "type-fest": { - "version": "0.21.3" + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==" } } }, "ansi-regex": { - "version": "5.0.1" + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" }, "ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "requires": { "color-convert": "^2.0.1" } }, "anymatch": { "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", "requires": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" @@ -2936,6 +3170,8 @@ }, "array-includes": { "version": "3.1.3", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.3.tgz", + "integrity": "sha512-gcem1KlBU7c9rB+Rq8/3PPKsK2kjqeEBa3bD5kkQo4nYlOHQCJqIJFqBXDEfwaRuYTT4E+FxA9xez7Gf/e3Q7A==", "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", @@ -2949,6 +3185,8 @@ }, "array.prototype.flat": { "version": "1.2.4", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.4.tgz", + "integrity": "sha512-4470Xi3GAPAjZqFcljX2xzckv1qeKPizoNkiS0+O4IoPR2ZNpcjE0pkhdihlDouK+x6QOast26B4Q/O9DJnwSg==", "requires": { "call-bind": "^1.0.0", "define-properties": "^1.1.3", @@ -2957,6 +3195,8 @@ }, "array.prototype.flatmap": { "version": "1.2.4", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.2.4.tgz", + "integrity": "sha512-r9Z0zYoxqHz60vvQbWEdXIEtCwHF0yxaWfno9qzXeNHvfyl3BZqygmGzb84dsubyaXLH4husF+NFgMSdpZhk2Q==", "requires": { "call-bind": "^1.0.0", "define-properties": "^1.1.3", @@ -2974,6 +3214,8 @@ }, "assert-args": { "version": "1.2.1", + "resolved": "https://registry.npmjs.org/assert-args/-/assert-args-1.2.1.tgz", + "integrity": "sha1-QEEDoUUqMv53iYgR5U5ZCoqTc70=", "requires": { "101": "^1.2.0", "compound-subject": "0.0.1", @@ -2985,12 +3227,16 @@ "dependencies": { "debug": { "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "requires": { "ms": "2.0.0" } }, "ms": { - "version": "2.0.0" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" } } }, @@ -3013,7 +3259,9 @@ "version": "3.0.0" }, "at-least-node": { - "version": "1.0.0" + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==" }, "atob": { "version": "2.1.2" @@ -3025,7 +3273,9 @@ "version": "1.11.0" }, "axe-core": { - "version": "4.1.4" + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.1.4.tgz", + "integrity": "sha512-Pdgfv6iP0gNx9ejRGa3zE7Xgkj/iclXqLfe7BnatdZz0QnLZ3jrRHUVH8wNSdN68w05Sk3ShGTb3ydktMTooig==" }, "axobject-query": { "version": "2.2.0" @@ -3060,7 +3310,9 @@ "version": "0.4.0" }, "babel-plugin-dev-expression": { - "version": "0.2.2" + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/babel-plugin-dev-expression/-/babel-plugin-dev-expression-0.2.2.tgz", + "integrity": "sha512-y32lfBif+c2FIh5dwGfcc/IfX5aw/Bru7Du7W2n17sJE/GJGAsmIk5DPW/8JOoeKpXW5evJfJOvRq5xkiS6vng==" }, "babel-plugin-dynamic-import-node": { "version": "2.3.3", @@ -3100,6 +3352,8 @@ }, "babel-plugin-polyfill-corejs2": { "version": "0.2.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.0.tgz", + "integrity": "sha512-9bNwiR0dS881c5SHnzCmmGlMkJLl0OUZvxrxHo9w/iNoRuqaPjqlvBf4HrovXtQs/au5yKkpcdgfT1cC5PAZwg==", "requires": { "@babel/compat-data": "^7.13.11", "@babel/helper-define-polyfill-provider": "^0.2.0", @@ -3108,6 +3362,8 @@ }, "babel-plugin-polyfill-corejs3": { "version": "0.2.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.2.0.tgz", + "integrity": "sha512-zZyi7p3BCUyzNxLx8KV61zTINkkV65zVkDAFNZmrTCRVhjo1jAS+YLvDJ9Jgd/w2tsAviCwFHReYfxO3Iql8Yg==", "requires": { "@babel/helper-define-polyfill-provider": "^0.2.0", "core-js-compat": "^3.9.1" @@ -3115,12 +3371,16 @@ }, "babel-plugin-polyfill-regenerator": { "version": "0.0.4", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.0.4.tgz", + "integrity": "sha512-+/uCzO9JTYVZVGCpZpVAQkgPGt2zkR0VYiZvJ4aVoCe4ccgpKvNQqcjzAgQzSsjK64Jhc5hvrCR3l0087BevkA==", "requires": { "@babel/helper-define-polyfill-provider": "^0.0.3" }, "dependencies": { "@babel/helper-define-polyfill-provider": { "version": "0.0.3", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.0.3.tgz", + "integrity": "sha512-dULDd/APiP4JowYDAMosecKOi/1v+UId99qhBGiO3myM29KtAVKS/R3x3OJJNBR0FeYB1BcYb2dCwkhqvxWXXQ==", "requires": { "@babel/helper-compilation-targets": "^7.10.4", "@babel/helper-module-imports": "^7.10.4", @@ -3189,6 +3449,8 @@ }, "base-x": { "version": "3.0.8", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.8.tgz", + "integrity": "sha512-Rl/1AWP4J/zRrk54hhlxH4drNxPJXYUaKffODVI53/dAsV4t9fBxyxYKAVPU1XBHxYwOWP9h9H0hM2MVw4YfJA==", "requires": { "safe-buffer": "^5.0.1" } @@ -3203,10 +3465,14 @@ "version": "1.5.1" }, "base64url": { - "version": "3.0.1" + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/base64url/-/base64url-3.0.1.tgz", + "integrity": "sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A==" }, "base64url-universal": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/base64url-universal/-/base64url-universal-1.1.0.tgz", + "integrity": "sha512-WyftvZqye29YQ10ZnuiBeEj0lk8SN8xHU9hOznkLc85wS1cLTp6RpzlMrHxMPD9nH7S55gsBqMqgGyz93rqmkA==", "requires": { "base64url": "^3.0.0" } @@ -3227,6 +3493,8 @@ }, "borsh": { "version": "0.4.0", + "resolved": "https://registry.npmjs.org/borsh/-/borsh-0.4.0.tgz", + "integrity": "sha512-aX6qtLya3K0AkT66CmYWCCDr77qsE9arV05OmdFpmat9qu8Pg9J5tBUPDztAW5fNh/d/MyVG/OYziP52Ndzx1g==", "requires": { "@types/bn.js": "^4.11.5", "bn.js": "^5.0.0", @@ -3243,6 +3511,8 @@ }, "braces": { "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", "requires": { "fill-range": "^7.0.1" } @@ -3266,6 +3536,8 @@ }, "browserslist": { "version": "4.16.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.4.tgz", + "integrity": "sha512-d7rCxYV8I9kj41RH8UKYnvDYCRENUlHRgyXy/Rhr/1BaeLGfiCptEdFE8MIrvGfWbBFNjVYx76SQWvNX1j+/cQ==", "requires": { "caniuse-lite": "^1.0.30001208", "colorette": "^1.2.2", @@ -3300,10 +3572,14 @@ } }, "buffer-from": { - "version": "1.1.1" + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" }, "bufferutil": { "version": "4.0.3", + "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.3.tgz", + "integrity": "sha512-yEYTwGndELGvfXsImMBLop58eaGW+YdONi1fNjTINSY98tmMmFijBG6WXgdkfuLNt4imzQNtIE+eBp1PVpMCSw==", "optional": true, "requires": { "node-gyp-build": "^4.2.0" @@ -3340,7 +3616,9 @@ "version": "5.3.1" }, "caniuse-lite": { - "version": "1.0.30001209" + "version": "1.0.30001209", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001209.tgz", + "integrity": "sha512-2Ktt4OeRM7EM/JaOZjuLzPYAIqmbwQMNnYbgooT+icoRGrKOyAxA1xhlnotBD1KArRSPsuJp3TdYcZYrL7qNxA==" }, "capture-exit": { "version": "2.0.0", @@ -3353,6 +3631,8 @@ }, "chalk": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -3378,6 +3658,8 @@ }, "cli-cursor": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", "requires": { "restore-cursor": "^3.1.0" } @@ -3390,6 +3672,8 @@ }, "cliui": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", "requires": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", @@ -3398,6 +3682,8 @@ "dependencies": { "wrap-ansi": { "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", "requires": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -3413,7 +3699,9 @@ "version": "4.6.0" }, "collect-v8-coverage": { - "version": "1.0.1" + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", + "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==" }, "collection-visit": { "version": "1.0.0", @@ -3424,15 +3712,21 @@ }, "color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "requires": { "color-name": "~1.1.4" } }, "color-name": { - "version": "1.1.4" + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "colorette": { - "version": "1.2.2" + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", + "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==" }, "combined-stream": { "version": "1.0.8", @@ -3450,25 +3744,35 @@ "version": "1.3.0" }, "compound-subject": { - "version": "0.0.1" + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/compound-subject/-/compound-subject-0.0.1.tgz", + "integrity": "sha1-JxVUaYoVrmCLHfyv0wt7oeqJLEs=" }, "concat-map": { "version": "0.0.1" }, "confusing-browser-globals": { - "version": "1.0.10" + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.10.tgz", + "integrity": "sha512-gNld/3lySHwuhaVluJUKLePYirM3QNCKzVxqAdhJII9/WXKVX5PURzMVJspS1jTslSqjeuG4KMVTSouit5YPHA==" }, "contains-path": { - "version": "0.1.0" + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", + "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=" }, "convert-source-map": { "version": "1.7.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", + "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", "requires": { "safe-buffer": "~5.1.1" }, "dependencies": { "safe-buffer": { - "version": "5.1.2" + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" } } }, @@ -3477,18 +3781,24 @@ }, "core-js-compat": { "version": "3.10.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.10.1.tgz", + "integrity": "sha512-ZHQTdTPkqvw2CeHiZC970NNJcnwzT6YIueDMASKt+p3WbZsLXOcoD392SkcWhkC0wBBHhlfhqGKKsNCQUozYtg==", "requires": { "browserslist": "^4.16.3", "semver": "7.0.0" }, "dependencies": { "semver": { - "version": "7.0.0" + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==" } } }, "core-js-pure": { - "version": "3.10.1" + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.10.1.tgz", + "integrity": "sha512-PeyJH2SE0KuxY5eCGNWA+W+CeDpB6M1PN3S7Am7jSv/Ttuxz2SnWbIiVQOn/TDaGaGtxo8CRWHkXwJscbUHtVw==" }, "core-util-is": { "version": "1.0.2" @@ -3524,28 +3834,33 @@ } } }, - "crypto-hash": { - "version": "1.3.0" - }, "crypto-ld": { "version": "5.1.0" }, "cssom": { - "version": "0.4.4" + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", + "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==" }, "cssstyle": { "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", "requires": { "cssom": "~0.3.6" }, "dependencies": { "cssom": { - "version": "0.3.8" + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==" } } }, "damerau-levenshtein": { - "version": "1.0.6" + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.6.tgz", + "integrity": "sha512-JVrozIeElnj3QzfUIt8tB8YMluBJom4Vw9qTPpjGYQ9fYlB3D/rb6OordUxf3xeFB35LKWs0xqcO5U6ySvBtug==" }, "dashdash": { "version": "1.14.1", @@ -3565,6 +3880,8 @@ }, "debug": { "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", "requires": { "ms": "2.1.2" } @@ -3577,15 +3894,21 @@ }, "deep-eql": { "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-0.1.3.tgz", + "integrity": "sha1-71WKyrjeJSBs1xOQbXTlaTDrafI=", "requires": { "type-detect": "0.1.1" } }, "deep-is": { - "version": "0.1.3" + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=" }, "deepmerge": { - "version": "4.2.2" + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==" }, "defaults": { "version": "1.0.3", @@ -3664,10 +3987,14 @@ "version": "1.0.0" }, "detect-newline": { - "version": "3.1.0" + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==" }, "did-resolver": { - "version": "3.1.5" + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/did-resolver/-/did-resolver-3.1.5.tgz", + "integrity": "sha512-/4lM1vK5osnWVZ2oN9QhlWV5xOwssuLSL1MvueBc8LQWotbD5kM9XQMe7h4GydYpbh3JaWMFkOWwc9jvSZ+qgg==" }, "diff-sequences": { "version": "25.2.6", @@ -3676,6 +4003,8 @@ }, "doctrine": { "version": "1.5.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", + "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", "requires": { "esutils": "^2.0.2", "isarray": "^1.0.0" @@ -3703,7 +4032,9 @@ } }, "electron-to-chromium": { - "version": "1.3.717" + "version": "1.3.717", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.717.tgz", + "integrity": "sha512-OfzVPIqD1MkJ7fX+yTl2nKyOE4FReeVfMCzzxQS+Kp43hZYwHwThlGP+EGIZRXJsxCM7dqo8Y65NOX/HP12iXQ==" }, "elliptic": { "version": "6.5.4", @@ -3723,7 +4054,9 @@ } }, "emoji-regex": { - "version": "8.0.0" + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, "end-of-stream": { "version": "1.4.4", @@ -3745,6 +4078,8 @@ }, "es-abstract": { "version": "1.18.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0.tgz", + "integrity": "sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw==", "requires": { "call-bind": "^1.0.2", "es-to-primitive": "^1.2.1", @@ -3842,16 +4177,22 @@ }, "dependencies": { "ansi-regex": { - "version": "4.1.0" + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" }, "ansi-styles": { "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "requires": { "color-convert": "^1.9.0" } }, "chalk": { "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -3860,12 +4201,16 @@ }, "color-convert": { "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "requires": { "color-name": "1.1.3" } }, "color-name": { - "version": "1.1.3" + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" }, "doctrine": { "version": "3.0.0", @@ -3881,12 +4226,16 @@ }, "strip-ansi": { "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "requires": { "ansi-regex": "^4.1.0" } }, "supports-color": { "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "requires": { "has-flag": "^3.0.0" } @@ -3907,6 +4256,8 @@ }, "eslint-import-resolver-node": { "version": "0.3.4", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz", + "integrity": "sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA==", "requires": { "debug": "^2.6.9", "resolve": "^1.13.1" @@ -3914,17 +4265,23 @@ "dependencies": { "debug": { "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "requires": { "ms": "2.0.0" } }, "ms": { - "version": "2.0.0" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" } } }, "eslint-module-utils": { "version": "2.6.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz", + "integrity": "sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA==", "requires": { "debug": "^2.6.9", "pkg-dir": "^2.0.0" @@ -3932,46 +4289,64 @@ "dependencies": { "debug": { "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "requires": { "ms": "2.0.0" } }, "find-up": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", "requires": { "locate-path": "^2.0.0" } }, "locate-path": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", "requires": { "p-locate": "^2.0.0", "path-exists": "^3.0.0" } }, "ms": { - "version": "2.0.0" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, "p-limit": { "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", "requires": { "p-try": "^1.0.0" } }, "p-locate": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", "requires": { "p-limit": "^1.1.0" } }, "p-try": { - "version": "1.0.0" + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=" }, "path-exists": { - "version": "3.0.0" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" }, "pkg-dir": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", + "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", "requires": { "find-up": "^2.1.0" } @@ -3986,6 +4361,8 @@ }, "eslint-plugin-import": { "version": "2.22.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.22.1.tgz", + "integrity": "sha512-8K7JjINHOpH64ozkAhpT3sd+FswIZTfMZTjdx052pnWrgRCVfp8op9tbjpAk3DdUeI/Ba4C8OjdC0r90erHEOw==", "requires": { "array-includes": "^3.1.1", "array.prototype.flat": "^1.2.3", @@ -4004,17 +4381,23 @@ "dependencies": { "debug": { "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "requires": { "ms": "2.0.0" } }, "ms": { - "version": "2.0.0" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" } } }, "eslint-plugin-jsx-a11y": { "version": "6.4.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.4.1.tgz", + "integrity": "sha512-0rGPJBbwHoGNPU73/QCLP/vveMlM1b1Z9PponxO87jfr6tuH5ligXbDT6nHSSzBC8ovX2Z+BQu7Bk5D/Xgq9zg==", "requires": { "@babel/runtime": "^7.11.2", "aria-query": "^4.2.2", @@ -4030,18 +4413,24 @@ }, "dependencies": { "emoji-regex": { - "version": "9.2.2" + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" } } }, "eslint-plugin-prettier": { "version": "3.4.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.4.0.tgz", + "integrity": "sha512-UDK6rJT6INSfcOo545jiaOwB701uAIt2/dR7WnFQoGCVl1/EMqdANBmwUaqqQ45aXprsTGzSa39LI1PyuRBxxw==", "requires": { "prettier-linter-helpers": "^1.0.0" } }, "eslint-plugin-react": { "version": "7.23.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.23.2.tgz", + "integrity": "sha512-AfjgFQB+nYszudkxRkTFu0UR1zEQig0ArVMPloKhxwlwkzaw/fBiH0QWcBBhZONlXqQC51+nfqFrkn4EzHcGBw==", "requires": { "array-includes": "^3.1.3", "array.prototype.flatmap": "^1.2.4", @@ -4059,12 +4448,16 @@ "dependencies": { "doctrine": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "requires": { "esutils": "^2.0.2" } }, "resolve": { "version": "2.0.0-next.3", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.3.tgz", + "integrity": "sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q==", "requires": { "is-core-module": "^2.2.0", "path-parse": "^1.0.6" @@ -4112,7 +4505,9 @@ }, "dependencies": { "estraverse": { - "version": "5.2.0" + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==" } } }, @@ -4123,12 +4518,16 @@ }, "dependencies": { "estraverse": { - "version": "5.2.0" + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==" } } }, "estraverse": { - "version": "4.3.0" + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" }, "estree-walker": { "version": "1.0.1" @@ -4144,6 +4543,8 @@ }, "execa": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", + "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", "requires": { "cross-spawn": "^7.0.0", "get-stream": "^5.0.0", @@ -4158,6 +4559,8 @@ "dependencies": { "cross-spawn": { "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "requires": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -4165,19 +4568,27 @@ } }, "path-key": { - "version": "3.1.1" + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" }, "shebang-command": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "requires": { "shebang-regex": "^3.0.0" } }, "shebang-regex": { - "version": "3.0.0" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" }, "which": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "requires": { "isexe": "^2.0.0" } @@ -4301,12 +4712,16 @@ }, "fill-range": { "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "requires": { "to-regex-range": "^5.0.1" } }, "find-cache-dir": { "version": "3.3.1", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz", + "integrity": "sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==", "requires": { "commondir": "^1.0.1", "make-dir": "^3.0.2", @@ -4315,6 +4730,8 @@ }, "find-up": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "requires": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" @@ -4363,6 +4780,8 @@ }, "fs-extra": { "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", "requires": { "at-least-node": "^1.0.0", "graceful-fs": "^4.2.0", @@ -4375,6 +4794,8 @@ }, "fsevents": { "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", "optional": true }, "function-bind": { @@ -4398,16 +4819,22 @@ } }, "get-package-type": { - "version": "0.1.0" + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==" }, "get-prototype-of": { - "version": "0.0.0" + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/get-prototype-of/-/get-prototype-of-0.0.0.tgz", + "integrity": "sha1-mHcr0QcW0W3rSzIlFsRp78oorEQ=" }, "get-stdin": { "version": "6.0.0" }, "get-stream": { "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", "requires": { "pump": "^3.0.0" } @@ -4423,6 +4850,8 @@ }, "glob": { "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -4448,7 +4877,9 @@ "version": "0.1.2" }, "graceful-fs": { - "version": "4.2.6" + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", + "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==" }, "growly": { "version": "1.3.0", @@ -4543,7 +4974,9 @@ "version": "1.1.1" }, "humanize-duration": { - "version": "3.25.1" + "version": "3.25.1", + "resolved": "https://registry.npmjs.org/humanize-duration/-/humanize-duration-3.25.1.tgz", + "integrity": "sha512-P+dRo48gpLgc2R9tMRgiDRNULPKCmqFYgguwqOO2C0fjO35TgdURDQDANSR1Nt92iHlbHGMxOTnsB8H8xnMa2Q==" }, "iconv-lite": { "version": "0.4.24", @@ -4611,6 +5044,8 @@ "dependencies": { "chalk": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -4630,7 +5065,9 @@ "version": "1.4.0" }, "ip-regex": { - "version": "2.1.0" + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", + "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=" }, "is-accessor-descriptor": { "version": "1.0.0", @@ -4649,10 +5086,14 @@ "version": "0.2.1" }, "is-bigint": { - "version": "1.0.1" + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.1.tgz", + "integrity": "sha512-J0ELF4yHFxHy0cmSxZuheDOz2luOdVvqjwmEcj8H/L1JHeuEDSDbeRP+Dk9kFVk5RTFzbucJ2Kb9F7ixY2QaCg==" }, "is-boolean-object": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.0.tgz", + "integrity": "sha512-a7Uprx8UtD+HWdyYwnD1+ExtTgqQtD2k/1yJgtXP6wnMm8byhkoTZRl+95LLThpzNZJ5aEvi46cdH+ayMFRwmA==", "requires": { "call-bind": "^1.0.0" } @@ -4661,10 +5102,14 @@ "version": "1.1.6" }, "is-callable": { - "version": "1.2.3" + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", + "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==" }, "is-capitalized": { - "version": "1.0.0" + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-capitalized/-/is-capitalized-1.0.0.tgz", + "integrity": "sha1-TIRktNkdPk7rRIid0s2PGwrEwTY=" }, "is-ci": { "version": "2.0.0", @@ -4673,10 +5118,14 @@ } }, "is-class": { - "version": "0.0.4" + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/is-class/-/is-class-0.0.4.tgz", + "integrity": "sha1-4FdFFwW7NOOePjNZjJOpg3KWtzY=" }, "is-core-module": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", + "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==", "requires": { "has": "^1.0.3" } @@ -4695,7 +5144,9 @@ } }, "is-date-object": { - "version": "1.0.2" + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", + "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==" }, "is-descriptor": { "version": "1.0.2", @@ -4714,6 +5165,8 @@ }, "is-docker": { "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", "optional": true }, "is-extendable": { @@ -4732,18 +5185,24 @@ }, "is-glob": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", "requires": { "is-extglob": "^2.1.1" } }, "is-interactive": { - "version": "1.0.0" + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==" }, "is-module": { "version": "1.0.0" }, "is-negative-zero": { - "version": "2.0.1" + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", + "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==" }, "is-number": { "version": "3.0.0", @@ -4752,7 +5211,9 @@ } }, "is-number-object": { - "version": "1.0.4" + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.4.tgz", + "integrity": "sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw==" }, "is-plain-object": { "version": "2.0.4", @@ -4768,19 +5229,27 @@ }, "is-regex": { "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz", + "integrity": "sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==", "requires": { "call-bind": "^1.0.2", "has-symbols": "^1.0.1" } }, "is-stream": { - "version": "2.0.0" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==" }, "is-string": { - "version": "1.0.5" + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", + "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==" }, "is-symbol": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", "requires": { "has-symbols": "^1.0.1" } @@ -4793,6 +5262,8 @@ }, "is-wsl": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", "optional": true, "requires": { "is-docker": "^2.0.0" @@ -4828,6 +5299,8 @@ }, "istanbul-lib-report": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", "requires": { "istanbul-lib-coverage": "^3.0.0", "make-dir": "^3.0.0", @@ -4855,6 +5328,8 @@ }, "jayson": { "version": "3.4.4", + "resolved": "https://registry.npmjs.org/jayson/-/jayson-3.4.4.tgz", + "integrity": "sha512-fgQflh+Qnhdv9fjxTnpTsa2WUG/dgyeKQzIh5MJ77Qv2sqFyyAZn7mTUYgPjJMFjsKfb4HNsSBh6ktJeeQiAGQ==", "requires": { "@types/connect": "^3.4.33", "@types/express-serve-static-core": "^4.17.9", @@ -4870,7 +5345,9 @@ }, "dependencies": { "@types/node": { - "version": "12.20.10" + "version": "12.20.10", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.10.tgz", + "integrity": "sha512-TxCmnSSppKBBOzYzPR2BR25YlX5Oay8z2XGwFBInuA/Co0V9xJhLlW4kjbxKtgeNo3NOMbQP1A5Rc03y+XecPw==" } } }, @@ -5134,6 +5611,8 @@ }, "jest-message-util": { "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-25.5.0.tgz", + "integrity": "sha512-ezddz3YCT/LT0SKAmylVyWWIGYoKHOFOFXx3/nA4m794lfVUskMcwhip6vTgdVrOtYdjeQeis2ypzes9mZb4EA==", "requires": { "@babel/code-frame": "^7.0.0", "@jest/types": "^25.5.0", @@ -5157,7 +5636,9 @@ "version": "1.2.2" }, "jest-regex-util": { - "version": "25.2.6" + "version": "25.2.6", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-25.2.6.tgz", + "integrity": "sha512-KQqf7a0NrtCkYmZZzodPftn7fL1cq3GQAFVMn5Hg8uKx/fIenLEobNanUxb7abQ1sjADHBseG/2FGpsv/wr+Qw==" }, "jest-resolve": { "version": "25.5.1", @@ -5313,6 +5794,8 @@ }, "jest-util": { "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-25.5.0.tgz", + "integrity": "sha512-KVlX+WWg1zUTB9ktvhsg2PXZVdkI1NBevOJSkTKYAyXyH4QSvh+Lay/e/v+bmaFfrkfx43xD8QTfgobzlEXdIA==", "requires": { "@jest/types": "^25.5.0", "chalk": "^3.0.0", @@ -5336,6 +5819,8 @@ }, "jest-watch-typeahead": { "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jest-watch-typeahead/-/jest-watch-typeahead-0.5.0.tgz", + "integrity": "sha512-4r36w9vU8+rdg48hj0Z7TvcSqVP6Ao8dk04grlHQNgduyCB0SqrI0xWIl85ZhXrzYvxQ0N5H+rRLAejkQzEHeQ==", "requires": { "ansi-escapes": "^4.2.1", "chalk": "^3.0.0", @@ -5348,6 +5833,8 @@ }, "jest-watcher": { "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-25.5.0.tgz", + "integrity": "sha512-XrSfJnVASEl+5+bb51V0Q7WQx65dTSk7NL4yDdVjPnRNpM0hG+ncFmDYJo9O8jaSRcAitVbuVawyXCRoxGrT5Q==", "requires": { "@jest/test-result": "^25.5.0", "@jest/types": "^25.5.0", @@ -5458,6 +5945,8 @@ }, "jsonfile": { "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", "requires": { "graceful-fs": "^4.1.6", "universalify": "^2.0.0" @@ -5479,6 +5968,8 @@ }, "jsx-ast-utils": { "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.2.0.tgz", + "integrity": "sha512-EIsmt3O3ljsU6sot/J4E1zDRxfBNrhjyf/OKjlydwgEimQuznlM4Wv7U+ueONJMyEn1WRE0K8dhi3dVAXYT24Q==", "requires": { "array-includes": "^3.1.2", "object.assign": "^4.1.2" @@ -5486,6 +5977,8 @@ }, "keypather": { "version": "1.10.2", + "resolved": "https://registry.npmjs.org/keypather/-/keypather-1.10.2.tgz", + "integrity": "sha1-4ESWMtSz5RbyHMAUznxWRP3c5hQ=", "requires": { "101": "^1.0.0" } @@ -5521,10 +6014,14 @@ } }, "lines-and-columns": { - "version": "1.1.6" + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", + "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=" }, "load-json-file": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", "requires": { "graceful-fs": "^4.1.2", "parse-json": "^2.2.0", @@ -5534,6 +6031,8 @@ "dependencies": { "parse-json": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", "requires": { "error-ex": "^1.2.0" } @@ -5542,6 +6041,8 @@ }, "locate-path": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "requires": { "p-locate": "^4.1.0" } @@ -5563,18 +6064,24 @@ }, "log-symbols": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", + "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==", "requires": { "chalk": "^2.4.2" }, "dependencies": { "ansi-styles": { "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "requires": { "color-convert": "^1.9.0" } }, "chalk": { "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -5583,15 +6090,21 @@ }, "color-convert": { "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "requires": { "color-name": "1.1.3" } }, "color-name": { - "version": "1.1.3" + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" }, "supports-color": { "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "requires": { "has-flag": "^3.0.0" } @@ -5607,25 +6120,35 @@ }, "dependencies": { "ansi-escapes": { - "version": "3.2.0" + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==" }, "cli-cursor": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", "requires": { "restore-cursor": "^2.0.0" } }, "mimic-fn": { - "version": "1.2.0" + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==" }, "onetime": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", "requires": { "mimic-fn": "^1.0.0" } }, "restore-cursor": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", "requires": { "onetime": "^2.0.0", "signal-exit": "^3.0.2" @@ -5635,6 +6158,8 @@ }, "lolex": { "version": "5.1.2", + "resolved": "https://registry.npmjs.org/lolex/-/lolex-5.1.2.tgz", + "integrity": "sha512-h4hmjAvHTmd+25JSwrtTIuwbKdwg5NzZVRMLn9saij4SZaepCrTCxPr35H/3bjwfMJtN+t3CX8672UIkglz28A==", "requires": { "@sinonjs/commons": "^1.7.0" } @@ -5647,6 +6172,8 @@ }, "lower-case": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", "requires": { "tslib": "^2.0.3" } @@ -5665,6 +6192,8 @@ }, "make-dir": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", "requires": { "semver": "^6.0.0" } @@ -5694,6 +6223,8 @@ }, "micromatch": { "version": "4.0.4", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", + "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", "requires": { "braces": "^3.0.1", "picomatch": "^2.2.3" @@ -5754,7 +6285,9 @@ } }, "mri": { - "version": "1.1.6" + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/mri/-/mri-1.1.6.tgz", + "integrity": "sha512-oi1b3MfbyGa7FJMP9GmLTttni5JoICpYBRlq+x5V16fZbLsnL9N3wFqqIm/nIG43FjUFkFh9Epzp/kzUGUnJxQ==" }, "ms": { "version": "2.1.2" @@ -5819,6 +6352,8 @@ }, "no-case": { "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", "requires": { "lower-case": "^2.0.2", "tslib": "^2.0.3" @@ -5831,7 +6366,9 @@ "version": "2.6.1" }, "node-gyp-build": { - "version": "4.2.3" + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.2.3.tgz", + "integrity": "sha512-MN6ZpzmfNCRM+3t57PTJHgHyw/h4OWnZ6mR8P5j/uZtqQr46RRuDE/P+g3n0YR/AiYXeWixZZzaip77gdICfRg==" }, "node-int64": { "version": "0.4.0" @@ -5855,7 +6392,9 @@ } }, "node-releases": { - "version": "1.1.71" + "version": "1.1.71", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.71.tgz", + "integrity": "sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg==" }, "normalize-package-data": { "version": "2.5.0", @@ -5872,16 +6411,22 @@ } }, "normalize-path": { - "version": "3.0.0" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" }, "npm-run-path": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", "requires": { "path-key": "^3.0.0" }, "dependencies": { "path-key": { - "version": "3.1.1" + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" } } }, @@ -5903,7 +6448,9 @@ } }, "object-inspect": { - "version": "1.9.0" + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", + "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==" }, "object-keys": { "version": "1.1.1" @@ -5925,6 +6472,8 @@ }, "object.entries": { "version": "1.1.3", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.3.tgz", + "integrity": "sha512-ym7h7OZebNS96hn5IJeyUmaWhaSM4SVtAPPfNLQEI2MYWCO2egsITb9nab2+i/Pwibx+R0mtn+ltKJXRSeTMGg==", "requires": { "call-bind": "^1.0.0", "define-properties": "^1.1.3", @@ -5934,6 +6483,8 @@ }, "object.fromentries": { "version": "2.0.4", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.4.tgz", + "integrity": "sha512-EsFBshs5RUUpQEY1D4q/m59kMfz4YJvxuNCJcv/jWwOJr34EaVnG11ZrZa0UHB3wnzV1wx8m58T4hQL8IuNXlQ==", "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", @@ -5949,6 +6500,8 @@ }, "object.values": { "version": "1.1.3", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.3.tgz", + "integrity": "sha512-nkF6PfDB9alkOUxpf1HNm/QlkeW3SReqL5WXeBLpEJJnlPSvRaDQpW3gQTksTN3fgJX4hL42RzKyOin6ff3tyw==", "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", @@ -5981,6 +6534,8 @@ }, "ora": { "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-4.1.1.tgz", + "integrity": "sha512-sjYP8QyVWBpBZWD6Vr1M/KwknSw6kJOz41tvGMlwWeClHBtYKTbHMki1PsLZnxKpXMPbTKv9b3pjQu3REib96A==", "requires": { "chalk": "^3.0.0", "cli-cursor": "^3.1.0", @@ -5993,7 +6548,9 @@ }, "dependencies": { "cli-spinners": { - "version": "2.6.0" + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.0.tgz", + "integrity": "sha512-t+4/y50K/+4xcCRosKkA7W4gTr1MySvLV0q+PxmG7FJ5g+66ChKurYjxBCjHggHH3HA5Hh9cy+lcUGWDqVH+4Q==" } } }, @@ -6001,7 +6558,9 @@ "version": "1.0.2" }, "p-each-series": { - "version": "2.2.0" + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-2.2.0.tgz", + "integrity": "sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA==" }, "p-finally": { "version": "2.0.1", @@ -6016,6 +6575,8 @@ }, "p-locate": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "requires": { "p-limit": "^2.2.0" } @@ -6045,6 +6606,8 @@ }, "pascal-case": { "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", "requires": { "no-case": "^3.0.4", "tslib": "^2.0.3" @@ -6054,7 +6617,9 @@ "version": "0.1.1" }, "path-exists": { - "version": "4.0.0" + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" }, "path-is-absolute": { "version": "1.0.1" @@ -6063,7 +6628,9 @@ "version": "2.0.1" }, "path-parse": { - "version": "1.0.6" + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" }, "path-type": { "version": "4.0.0" @@ -6072,10 +6639,14 @@ "version": "2.1.0" }, "picomatch": { - "version": "2.2.3" + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.3.tgz", + "integrity": "sha512-KpELjfwcCDUb9PeigTs2mBJzXUPzAuP2oPcA989He8Rte0+YUAjw1JVedDhuTKPkHjSYzMN3npC9luThGYEKdg==" }, "pify": { - "version": "2.3.0" + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" }, "pirates": { "version": "4.0.1", @@ -6087,6 +6658,8 @@ }, "pkg-dir": { "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "requires": { "find-up": "^4.0.0" } @@ -6141,12 +6714,16 @@ "dependencies": { "ansi-styles": { "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "requires": { "color-convert": "^1.9.0" } }, "chalk": { "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -6155,15 +6732,21 @@ }, "color-convert": { "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "requires": { "color-name": "1.1.3" } }, "color-name": { - "version": "1.1.3" + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" }, "supports-color": { "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "requires": { "has-flag": "^3.0.0" } @@ -6181,6 +6764,8 @@ }, "prop-types": { "version": "15.7.2", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", + "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", "requires": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", @@ -6206,7 +6791,9 @@ "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" }, "ramda": { - "version": "0.27.1" + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.27.2.tgz", + "integrity": "sha512-SbiLPU40JuJniHexQSAgad32hfwd+DRUdwF2PlVuI5RZD0/vahUco7R8vD86J/tcEKKF9vZrUVwgtmGCqlCKyA==" }, "randombytes": { "version": "2.1.0", @@ -6219,6 +6806,8 @@ }, "read-pkg": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", "requires": { "load-json-file": "^2.0.0", "normalize-package-data": "^2.3.2", @@ -6227,6 +6816,8 @@ "dependencies": { "path-type": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", "requires": { "pify": "^2.0.0" } @@ -6235,6 +6826,8 @@ }, "read-pkg-up": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", "requires": { "find-up": "^2.0.0", "read-pkg": "^2.0.0" @@ -6242,12 +6835,16 @@ "dependencies": { "find-up": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", "requires": { "locate-path": "^2.0.0" } }, "locate-path": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", "requires": { "p-locate": "^2.0.0", "path-exists": "^3.0.0" @@ -6255,26 +6852,36 @@ }, "p-limit": { "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", "requires": { "p-try": "^1.0.0" } }, "p-locate": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", "requires": { "p-limit": "^1.1.0" } }, "p-try": { - "version": "1.0.0" + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=" }, "path-exists": { - "version": "3.0.0" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" } } }, "realpath-native": { - "version": "2.0.0" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/realpath-native/-/realpath-native-2.0.0.tgz", + "integrity": "sha512-v1SEYUOXXdbBZK8ZuNgO4TBjamPsiSgcFr0aP+tEKpQZK8vooEUqV6nm6Cv502mX4NF2EfsnVqtNAHG+/6Ur1Q==" }, "rechoir": { "version": "0.6.2", @@ -6287,12 +6894,16 @@ }, "regenerate-unicode-properties": { "version": "8.2.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", + "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", "requires": { "regenerate": "^1.4.0" } }, "regenerator-runtime": { - "version": "0.13.7" + "version": "0.13.7", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", + "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==" }, "regenerator-transform": { "version": "0.14.5", @@ -6338,6 +6949,8 @@ }, "regexpu-core": { "version": "4.7.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", + "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", "requires": { "regenerate": "^1.4.0", "regenerate-unicode-properties": "^8.2.0", @@ -6352,12 +6965,16 @@ }, "regjsparser": { "version": "0.6.9", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.9.tgz", + "integrity": "sha512-ZqbNRz1SNjLAiYuwY0zoXW8Ne675IX5q+YHioAGbCw4X96Mjl2+dcX9B2ciaeyYjViDAfvIjFpQjJgLttTEERQ==", "requires": { "jsesc": "~0.5.0" }, "dependencies": { "jsesc": { - "version": "0.5.0" + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=" } } }, @@ -6417,6 +7034,8 @@ }, "resolve": { "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", "requires": { "is-core-module": "^2.2.0", "path-parse": "^1.0.6" @@ -6424,18 +7043,24 @@ }, "resolve-cwd": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", "requires": { "resolve-from": "^5.0.0" } }, "resolve-from": { - "version": "5.0.0" + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==" }, "resolve-url": { "version": "0.2.1" }, "restore-cursor": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", "requires": { "onetime": "^5.1.0", "signal-exit": "^3.0.2" @@ -6446,6 +7071,8 @@ }, "rimraf": { "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "requires": { "glob": "^7.1.3" } @@ -6460,6 +7087,8 @@ }, "rollup-plugin-sourcemaps": { "version": "0.6.3", + "resolved": "https://registry.npmjs.org/rollup-plugin-sourcemaps/-/rollup-plugin-sourcemaps-0.6.3.tgz", + "integrity": "sha512-paFu+nT1xvuO1tPFYXGe+XnQvg4Hjqv/eIhG8i5EspfYYPBKL57X7iVbfv55aNVASg3dzWvES9dmWsL2KhfByw==", "requires": { "@rollup/pluginutils": "^3.0.9", "source-map-resolve": "^0.6.0" @@ -6477,6 +7106,8 @@ "dependencies": { "jest-worker": { "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz", + "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==", "requires": { "merge-stream": "^2.0.0", "supports-color": "^6.1.0" @@ -6484,6 +7115,8 @@ }, "supports-color": { "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", "requires": { "has-flag": "^3.0.0" } @@ -6503,6 +7136,8 @@ }, "rpc-websockets": { "version": "7.4.11", + "resolved": "https://registry.npmjs.org/rpc-websockets/-/rpc-websockets-7.4.11.tgz", + "integrity": "sha512-/6yKCkRrEEb+TlJb6Q/pNBD4WdO/tFxE22rQYBl1YyIgz3SpzQDQ/0qAMWWksjFkDayiq3xVxmkP8e/tL422ZA==", "requires": { "@babel/runtime": "^7.11.2", "assert-args": "^1.2.1", @@ -6515,7 +7150,9 @@ }, "dependencies": { "uuid": { - "version": "8.3.2" + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" } } }, @@ -6538,6 +7175,8 @@ }, "sade": { "version": "1.7.4", + "resolved": "https://registry.npmjs.org/sade/-/sade-1.7.4.tgz", + "integrity": "sha512-y5yauMD93rX840MwUJr7C1ysLFBgMspsdTo4UVrDg3fXDvtwOyIqykhVAAm6fk/3au77773itJStObgK+LKaiA==", "requires": { "mri": "^1.1.0" } @@ -6570,6 +7209,8 @@ "dependencies": { "anymatch": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", "requires": { "micromatch": "^3.1.4", "normalize-path": "^2.1.1" @@ -6577,6 +7218,8 @@ }, "braces": { "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", "requires": { "arr-flatten": "^1.1.0", "array-unique": "^0.3.2", @@ -6592,6 +7235,8 @@ "dependencies": { "extend-shallow": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "requires": { "is-extendable": "^0.1.0" } @@ -6614,6 +7259,8 @@ }, "execa": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", "requires": { "cross-spawn": "^6.0.0", "get-stream": "^4.0.0", @@ -6635,6 +7282,8 @@ }, "fill-range": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", "requires": { "extend-shallow": "^2.0.1", "is-number": "^3.0.0", @@ -6644,6 +7293,8 @@ "dependencies": { "extend-shallow": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "requires": { "is-extendable": "^0.1.0" } @@ -6657,6 +7308,8 @@ }, "get-stream": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", "requires": { "pump": "^3.0.0" } @@ -6670,7 +7323,9 @@ } }, "is-stream": { - "version": "1.1.0" + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" }, "kind-of": { "version": "6.0.3", @@ -6679,6 +7334,8 @@ }, "micromatch": { "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", "requires": { "arr-diff": "^4.0.0", "array-unique": "^0.3.2", @@ -6697,12 +7354,16 @@ }, "normalize-path": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", "requires": { "remove-trailing-separator": "^1.0.1" } }, "npm-run-path": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", "requires": { "path-key": "^2.0.0" } @@ -6714,6 +7375,8 @@ }, "to-regex-range": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", "requires": { "is-number": "^3.0.0", "repeat-string": "^1.6.1" @@ -6731,6 +7394,8 @@ }, "secp256k1": { "version": "4.0.2", + "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.2.tgz", + "integrity": "sha512-UDar4sKvWAksIlfX3xIaQReADn+WFnHvbVujpcbr+9Sf/69odMwy2MUsz5CKLQgX9nsIyrjuxL2imVyoNHa3fg==", "requires": { "elliptic": "^6.5.2", "node-addon-api": "^2.0.0", @@ -6769,6 +7434,8 @@ }, "shelljs": { "version": "0.8.4", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.4.tgz", + "integrity": "sha512-7gk3UZ9kOfPLIAbslLzyWeGiEqx9e3rxwZM0KE6EL8GlGwjym9Mrlx5/p33bWTu9YG6vcS4MBxYZDHYr5lr8BQ==", "requires": { "glob": "^7.0.0", "interpret": "^1.0.0", @@ -6788,13 +7455,17 @@ } }, "signal-exit": { - "version": "3.0.3" + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==" }, "sisteransi": { "version": "1.0.5" }, "slash": { - "version": "3.0.0" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" }, "slice-ansi": { "version": "2.1.0", @@ -6806,18 +7477,24 @@ "dependencies": { "ansi-styles": { "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "requires": { "color-convert": "^1.9.0" } }, "color-convert": { "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "requires": { "color-name": "1.1.3" } }, "color-name": { - "version": "1.1.3" + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" } } }, @@ -6848,6 +7525,8 @@ }, "source-map-resolve": { "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", "requires": { "atob": "^2.1.2", "decode-uri-component": "^0.2.0", @@ -6885,6 +7564,8 @@ }, "source-map-resolve": { "version": "0.6.0", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.6.0.tgz", + "integrity": "sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==", "requires": { "atob": "^2.1.2", "decode-uri-component": "^0.2.0" @@ -6892,6 +7573,8 @@ }, "source-map-support": { "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", "requires": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -6921,7 +7604,9 @@ } }, "spdx-license-ids": { - "version": "3.0.7" + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz", + "integrity": "sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ==" }, "split-string": { "version": "3.1.0", @@ -6997,16 +7682,22 @@ }, "string-length": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-3.1.0.tgz", + "integrity": "sha512-Ttp5YvkGm5v9Ijagtaz1BnN+k9ObpvS0eIBblPMp2YWL8FBmi9qblQ9fexc2k/CXFgrTIteU3jAw3payCnwSTA==", "requires": { "astral-regex": "^1.0.0", "strip-ansi": "^5.2.0" }, "dependencies": { "ansi-regex": { - "version": "4.1.0" + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" }, "strip-ansi": { "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "requires": { "ansi-regex": "^4.1.0" } @@ -7015,6 +7706,8 @@ }, "string-width": { "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", "requires": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -7022,12 +7715,16 @@ }, "dependencies": { "is-fullwidth-code-point": { - "version": "3.0.0" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" } } }, "string.prototype.matchall": { "version": "4.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.4.tgz", + "integrity": "sha512-pknFIWVachNcyqRfaQSeu/FUfpvJTe4uskUSZ9Wc1RijsPuzbZ8TyYT8WCNnntCjUEqQ3vUHMAfVj2+wLAisPQ==", "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", @@ -7054,6 +7751,8 @@ }, "strip-ansi": { "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "requires": { "ansi-regex": "^5.0.1" } @@ -7075,24 +7774,32 @@ }, "supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "requires": { "has-flag": "^4.0.0" }, "dependencies": { "has-flag": { - "version": "4.0.0" + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" } } }, "supports-hyperlinks": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz", + "integrity": "sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==", "requires": { "has-flag": "^4.0.0", "supports-color": "^7.0.0" }, "dependencies": { "has-flag": { - "version": "4.0.0" + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" } } }, @@ -7109,13 +7816,19 @@ }, "dependencies": { "ansi-regex": { - "version": "4.1.0" + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" }, "emoji-regex": { - "version": "7.0.3" + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" }, "string-width": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", "requires": { "emoji-regex": "^7.0.1", "is-fullwidth-code-point": "^2.0.0", @@ -7124,6 +7837,8 @@ }, "strip-ansi": { "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "requires": { "ansi-regex": "^4.1.0" } @@ -7132,6 +7847,8 @@ }, "terminal-link": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", + "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", "requires": { "ansi-escapes": "^4.2.1", "supports-hyperlinks": "^2.0.0" @@ -7147,6 +7864,8 @@ }, "test-exclude": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", "requires": { "@istanbuljs/schema": "^0.1.2", "glob": "^7.1.4", @@ -7160,13 +7879,17 @@ "version": "0.2.0" }, "throat": { - "version": "5.0.0" + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz", + "integrity": "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==" }, "through": { "version": "2.3.8" }, "tiny-glob": { "version": "0.2.8", + "resolved": "https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.8.tgz", + "integrity": "sha512-vkQP7qOslq63XRX9kMswlby99kyO5OvKptw7AMwBVMjXEI7Tb61eoI5DydyEMOseyGS5anDN1VPoVxEvH01q8w==", "requires": { "globalyzer": "0.1.0", "globrex": "^0.1.2" @@ -7184,7 +7907,9 @@ "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=" }, "to-fast-properties": { - "version": "2.0.0" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=" }, "to-object-path": { "version": "0.3.0", @@ -7231,12 +7956,16 @@ }, "to-regex-range": { "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "requires": { "is-number": "^7.0.0" }, "dependencies": { "is-number": { - "version": "7.0.0" + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" } } }, @@ -7338,6 +8067,8 @@ }, "tsconfig-paths": { "version": "3.9.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz", + "integrity": "sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw==", "requires": { "@types/json5": "^0.0.29", "json5": "^1.0.1", @@ -7347,6 +8078,8 @@ "dependencies": { "json5": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", "requires": { "minimist": "^1.2.0" } @@ -7355,6 +8088,8 @@ }, "tsdx": { "version": "0.14.1", + "resolved": "https://registry.npmjs.org/tsdx/-/tsdx-0.14.1.tgz", + "integrity": "sha512-keHmFdCL2kx5nYFlBdbE3639HQ2v9iGedAFAajobrUTH2wfX0nLPdDhbHv+GHLQZqf0c5ur1XteE8ek/+Eyj5w==", "requires": { "@babel/core": "^7.4.4", "@babel/helper-module-imports": "^7.0.0", @@ -7415,10 +8150,14 @@ }, "dependencies": { "camelcase": { - "version": "6.2.0" + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", + "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==" }, "chalk": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -7426,18 +8165,24 @@ }, "jsonfile": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", "requires": { "graceful-fs": "^4.1.6" } }, "resolve": { "version": "1.17.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", + "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", "requires": { "path-parse": "^1.0.6" } }, "rollup-plugin-typescript2": { "version": "0.27.3", + "resolved": "https://registry.npmjs.org/rollup-plugin-typescript2/-/rollup-plugin-typescript2-0.27.3.tgz", + "integrity": "sha512-gmYPIFmALj9D3Ga1ZbTZAKTXq1JKlTQBtj299DXhqYz9cL3g/AQfUvbb2UhH+Nf++cCq941W2Mv7UcrcgLzJJg==", "requires": { "@rollup/pluginutils": "^3.1.0", "find-cache-dir": "^3.3.1", @@ -7448,6 +8193,8 @@ "dependencies": { "fs-extra": { "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", "requires": { "graceful-fs": "^4.2.0", "jsonfile": "^4.0.0", @@ -7455,18 +8202,24 @@ } }, "tslib": { - "version": "2.0.1" + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.1.tgz", + "integrity": "sha512-SgIkNheinmEBgx1IUNirK0TUD4X9yjjBRTqqjggWCU3pUEqIk3/Uwl3yRixYKT6WjQuGiwDv4NomL3wqRCj+CQ==" } } }, "semver": { "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", "requires": { "lru-cache": "^6.0.0" } }, "ts-jest": { "version": "25.5.1", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-25.5.1.tgz", + "integrity": "sha512-kHEUlZMK8fn8vkxDjwbHlxXRB9dHYpyzqKIGDNxbzs+Rz+ssNDSDNusEK8Fk/sDd4xE6iKoQLfFkFVaskmTJyw==", "requires": { "bs-logger": "0.x", "buffer-from": "1.x", @@ -7481,23 +8234,33 @@ }, "dependencies": { "semver": { - "version": "6.3.0" + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" } } }, "tslib": { - "version": "1.14.1" + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, "typescript": { - "version": "3.9.9" + "version": "3.9.9", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.9.tgz", + "integrity": "sha512-kdMjTiekY+z/ubJCATUPlRDl39vXYiMV9iyeMuEuXZh2we6zz80uovNN2WlAxmmdE/Z/YQe+EbOEXB5RHEED3w==" }, "universalify": { - "version": "0.1.2" + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" } } }, "tslib": { - "version": "2.2.0" + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz", + "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==" }, "tsutils": { "version": "3.21.0", @@ -7509,7 +8272,9 @@ "version": "1.14.1" }, "typescript": { - "version": "3.9.9" + "version": "3.9.9", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.9.tgz", + "integrity": "sha512-kdMjTiekY+z/ubJCATUPlRDl39vXYiMV9iyeMuEuXZh2we6zz80uovNN2WlAxmmdE/Z/YQe+EbOEXB5RHEED3w==" } } }, @@ -7529,19 +8294,27 @@ } }, "type-detect": { - "version": "0.1.1" + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-0.1.1.tgz", + "integrity": "sha1-C6XsKohWQORw6k6FBZcZANrFiCI=" }, "type-fest": { - "version": "0.8.1" + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==" }, "typedarray-to-buffer": { "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", "requires": { "is-typedarray": "^1.0.0" } }, "typescript": { - "version": "4.2.4" + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.2.4.tgz", + "integrity": "sha512-V+evlYHZnQkaz8TRBuxTA92yZBPotr5H+WhQ7bD3hZUndx5tGOa1fuCgeSjxAzM1RiN5IzvadIXTVefuuwZCRg==" }, "unbox-primitive": { "version": "1.0.1", @@ -7553,20 +8326,28 @@ } }, "unicode-canonical-property-names-ecmascript": { - "version": "1.0.4" + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", + "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==" }, "unicode-match-property-ecmascript": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", + "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", "requires": { "unicode-canonical-property-names-ecmascript": "^1.0.4", "unicode-property-aliases-ecmascript": "^1.0.4" } }, "unicode-match-property-value-ecmascript": { - "version": "1.2.0" + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", + "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==" }, "unicode-property-aliases-ecmascript": { - "version": "1.1.0" + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", + "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==" }, "union-value": { "version": "1.0.1", @@ -7578,7 +8359,9 @@ } }, "universalify": { - "version": "2.0.0" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==" }, "unset-value": { "version": "1.0.0", @@ -7622,13 +8405,17 @@ }, "utf-8-validate": { "version": "5.0.4", + "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.4.tgz", + "integrity": "sha512-MEF05cPSq3AwJ2C7B7sHAA6i53vONoZbMGX8My5auEVm6W+dJ2Jd/TZPyGJ5CH42V2XtbI5FD28HeHeqlPzZ3Q==", "optional": true, "requires": { "node-gyp-build": "^4.2.0" } }, "uuid": { - "version": "3.4.0" + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" }, "v8-compile-cache": { "version": "2.3.0" @@ -7784,6 +8571,8 @@ }, "write-file-atomic": { "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", "requires": { "imurmurhash": "^0.1.4", "is-typedarray": "^1.0.0", @@ -7800,7 +8589,9 @@ "version": "3.0.0" }, "xmlchars": { - "version": "2.2.0" + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==" }, "y18n": { "version": "4.0.3" @@ -7813,6 +8604,8 @@ }, "yargs": { "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", "requires": { "cliui": "^6.0.0", "decamelize": "^1.2.0", @@ -7829,6 +8622,8 @@ }, "yargs-parser": { "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", "requires": { "camelcase": "^5.0.0", "decamelize": "^1.2.0" @@ -10141,6 +10936,16 @@ "dev": true, "optional": true }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dev": true, + "optional": true, + "requires": { + "file-uri-to-path": "1.0.0" + } + }, "bip66": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/bip66/-/bip66-1.1.5.tgz", @@ -12180,6 +12985,13 @@ "object-assign": "^4.0.1" } }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true, + "optional": true + }, "fill-range": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", @@ -12815,6 +13627,15 @@ "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", "dev": true }, + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dev": true, + "requires": { + "loose-envify": "^1.0.0" + } + }, "ip-regex": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", @@ -14014,6 +14835,411 @@ } } }, + "jest-environment-uint8array": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/jest-environment-uint8array/-/jest-environment-uint8array-1.0.0.tgz", + "integrity": "sha512-PhZFy1N9AyuAs4Mr25/I+oiHEF25t7e74UTL9oTCmasfy8HGAKvPL6Wc43zgF0sV05dLLPS9yplxHfgxMw1E0w==", + "dev": true, + "requires": { + "jest-environment-node": "^24.8.0" + }, + "dependencies": { + "@jest/console": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-24.9.0.tgz", + "integrity": "sha512-Zuj6b8TnKXi3q4ymac8EQfc3ea/uhLeCGThFqXeC8H9/raaH8ARPUTdId+XyGd03Z4In0/VjD2OYFcBF09fNLQ==", + "dev": true, + "requires": { + "@jest/source-map": "^24.9.0", + "chalk": "^2.0.1", + "slash": "^2.0.0" + } + }, + "@jest/environment": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-24.9.0.tgz", + "integrity": "sha512-5A1QluTPhvdIPFYnO3sZC3smkNeXPVELz7ikPbhUj0bQjB07EoE9qtLrem14ZUYWdVayYbsjVwIiL4WBIMV4aQ==", + "dev": true, + "requires": { + "@jest/fake-timers": "^24.9.0", + "@jest/transform": "^24.9.0", + "@jest/types": "^24.9.0", + "jest-mock": "^24.9.0" + } + }, + "@jest/fake-timers": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-24.9.0.tgz", + "integrity": "sha512-eWQcNa2YSwzXWIMC5KufBh3oWRIijrQFROsIqt6v/NS9Io/gknw1jsAC9c+ih/RQX4A3O7SeWAhQeN0goKhT9A==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-mock": "^24.9.0" + } + }, + "@jest/source-map": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-24.9.0.tgz", + "integrity": "sha512-/Xw7xGlsZb4MJzNDgB7PW5crou5JqWiBQaz6xyPd3ArOg2nfn/PunV8+olXbbEZzNl591o5rWKE9BRDaFAuIBg==", + "dev": true, + "requires": { + "callsites": "^3.0.0", + "graceful-fs": "^4.1.15", + "source-map": "^0.6.0" + } + }, + "@jest/test-result": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-24.9.0.tgz", + "integrity": "sha512-XEFrHbBonBJ8dGp2JmF8kP/nQI/ImPpygKHwQ/SY+es59Z3L5PI4Qb9TQQMAEeYsThG1xF0k6tmG0tIKATNiiA==", + "dev": true, + "requires": { + "@jest/console": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/istanbul-lib-coverage": "^2.0.0" + } + }, + "@jest/transform": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-24.9.0.tgz", + "integrity": "sha512-TcQUmyNRxV94S0QpMOnZl0++6RMiqpbH/ZMccFB/amku6Uwvyb1cjYX7xkp5nGNkbX4QPH/FcB6q1HBTHynLmQ==", + "dev": true, + "requires": { + "@babel/core": "^7.1.0", + "@jest/types": "^24.9.0", + "babel-plugin-istanbul": "^5.1.0", + "chalk": "^2.0.1", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.1.15", + "jest-haste-map": "^24.9.0", + "jest-regex-util": "^24.9.0", + "jest-util": "^24.9.0", + "micromatch": "^3.1.10", + "pirates": "^4.0.1", + "realpath-native": "^1.1.0", + "slash": "^2.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "2.4.1" + } + }, + "@jest/types": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz", + "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^13.0.0" + } + }, + "@types/istanbul-reports": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz", + "integrity": "sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*", + "@types/istanbul-lib-report": "*" + } + }, + "@types/yargs": { + "version": "13.0.12", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.12.tgz", + "integrity": "sha512-qCxJE1qgz2y0hA4pIxjBR+PelCH0U5CK1XJXFwCNqfmliatKp47UCXXE9Dyk1OXBDLvsCF57TqQEJaeLfDYEOQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "babel-plugin-istanbul": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-5.2.0.tgz", + "integrity": "sha512-5LphC0USA8t4i1zCtjbbNb6jJj/9+X6P37Qfirc/70EQ34xKlMW+a1RHGwxGI+SwWpNwZ27HqvzAobeqaXwiZw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "find-up": "^3.0.0", + "istanbul-lib-instrument": "^3.3.0", + "test-exclude": "^5.2.3" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "dev": true, + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "istanbul-lib-coverage": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", + "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", + "dev": true + }, + "istanbul-lib-instrument": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz", + "integrity": "sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==", + "dev": true, + "requires": { + "@babel/generator": "^7.4.0", + "@babel/parser": "^7.4.3", + "@babel/template": "^7.4.0", + "@babel/traverse": "^7.4.3", + "@babel/types": "^7.4.0", + "istanbul-lib-coverage": "^2.0.5", + "semver": "^6.0.0" + } + }, + "jest-environment-node": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-24.9.0.tgz", + "integrity": "sha512-6d4V2f4nxzIzwendo27Tr0aFm+IXWa0XEUnaH6nU0FMaozxovt+sfRvh4J47wL1OvF83I3SSTu0XK+i4Bqe7uA==", + "dev": true, + "requires": { + "@jest/environment": "^24.9.0", + "@jest/fake-timers": "^24.9.0", + "@jest/types": "^24.9.0", + "jest-mock": "^24.9.0", + "jest-util": "^24.9.0" + } + }, + "jest-haste-map": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-24.9.0.tgz", + "integrity": "sha512-kfVFmsuWui2Sj1Rp1AJ4D9HqJwE4uwTlS/vO+eRUaMmd54BFpli2XhMQnPC2k4cHFVbB2Q2C+jtI1AGLgEnCjQ==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "anymatch": "^2.0.0", + "fb-watchman": "^2.0.0", + "fsevents": "^1.2.7", + "graceful-fs": "^4.1.15", + "invariant": "^2.2.4", + "jest-serializer": "^24.9.0", + "jest-util": "^24.9.0", + "jest-worker": "^24.9.0", + "micromatch": "^3.1.10", + "sane": "^4.0.3", + "walker": "^1.0.7" + } + }, + "jest-message-util": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-24.9.0.tgz", + "integrity": "sha512-oCj8FiZ3U0hTP4aSui87P4L4jC37BtQwUMqk+zk/b11FR19BJDeZsZAvIHutWnmtw7r85UmR3CEWZ0HWU2mAlw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/stack-utils": "^1.0.1", + "chalk": "^2.0.1", + "micromatch": "^3.1.10", + "slash": "^2.0.0", + "stack-utils": "^1.0.1" + } + }, + "jest-mock": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-24.9.0.tgz", + "integrity": "sha512-3BEYN5WbSq9wd+SyLDES7AHnjH9A/ROBwmz7l2y+ol+NtSFO8DYiEBzoO1CeFc9a8DYy10EO4dDFVv/wN3zl1w==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0" + } + }, + "jest-regex-util": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-24.9.0.tgz", + "integrity": "sha512-05Cmb6CuxaA+Ys6fjr3PhvV3bGQmO+2p2La4hFbU+W5uOc479f7FdLXUWXw4pYMAhhSZIuKHwSXSu6CsSBAXQA==", + "dev": true + }, + "jest-serializer": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-24.9.0.tgz", + "integrity": "sha512-DxYipDr8OvfrKH3Kel6NdED3OXxjvxXZ1uIY2I9OFbGg+vUkkg7AGvi65qbhbWNPvDckXmzMPbK3u3HaDO49bQ==", + "dev": true + }, + "jest-util": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-24.9.0.tgz", + "integrity": "sha512-x+cZU8VRmOJxbA1K5oDBdxQmdq0OIdADarLxk0Mq+3XS4jgvhG/oKGWcIDCtPG0HgjxOYvF+ilPJQsAyXfbNOg==", + "dev": true, + "requires": { + "@jest/console": "^24.9.0", + "@jest/fake-timers": "^24.9.0", + "@jest/source-map": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "callsites": "^3.0.0", + "chalk": "^2.0.1", + "graceful-fs": "^4.1.15", + "is-ci": "^2.0.0", + "mkdirp": "^0.5.1", + "slash": "^2.0.0", + "source-map": "^0.6.0" + } + }, + "jest-worker": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz", + "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==", + "dev": true, + "requires": { + "merge-stream": "^2.0.0", + "supports-color": "^6.1.0" + }, + "dependencies": { + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "read-pkg-up": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-4.0.0.tgz", + "integrity": "sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA==", + "dev": true, + "requires": { + "find-up": "^3.0.0", + "read-pkg": "^3.0.0" + } + }, + "realpath-native": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/realpath-native/-/realpath-native-1.1.0.tgz", + "integrity": "sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA==", + "dev": true, + "requires": { + "util.promisify": "^1.0.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "test-exclude": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-5.2.3.tgz", + "integrity": "sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g==", + "dev": true, + "requires": { + "glob": "^7.1.3", + "minimatch": "^3.0.4", + "read-pkg-up": "^4.0.0", + "require-main-filename": "^2.0.0" + } + }, + "write-file-atomic": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.1.tgz", + "integrity": "sha512-TGHFeZEZMnv+gBFRfjAcxL5bPHrsGKtnb4qsFAws7/vlh+QfwAaySIw4AXP9ZskTTh5GWu3FLuJhsWVdiJPGvg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" + } + } + } + }, "jest-get-type": { "version": "25.2.6", "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-25.2.6.tgz", @@ -15811,6 +17037,13 @@ "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", "dev": true }, + "nan": { + "version": "2.15.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.15.0.tgz", + "integrity": "sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==", + "dev": true, + "optional": true + }, "nanomatch": { "version": "1.2.13", "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", diff --git a/package.json b/package.json index 008e347b..86137ae7 100644 --- a/package.json +++ b/package.json @@ -44,6 +44,8 @@ "audit-ci": "^3.2.0", "babel-jest": "^27.0.6", "babel-minify": "^0.5.1", + "clear": "^0.1.0", + "cross-env": "^7.0.3", "eslint": "^4.19.1", "eslint-config-airbnb": "^17.0.0", "eslint-config-airbnb-base": "^13.0.0", @@ -52,17 +54,16 @@ "eslint-plugin-jsx-a11y": "^6.1.1", "eslint-plugin-no-only-tests": "^2.6.0", "eslint-plugin-react": "^7.23.2", + "figlet": "^1.5.0", "husky": "^1.1.2", + "inquirer": "^7.3.3", "jest": "^25.5.4", + "jest-environment-uint8array": "^1.0.0", "jest-html-reporter": "^2.3.0", "npm": "^6.14.13", "request-debug": "^0.2.0", "rimraf": "^2.6.2", - "cross-env": "^7.0.3", - "shelljs": "^0.8.4", - "figlet": "^1.5.0", - "inquirer": "^7.3.3", - "clear": "^0.1.0" + "shelljs": "^0.8.4" }, "dependencies": { "@digitalbazaar/did-io": "^1.1.0", @@ -118,7 +119,16 @@ "coverageDirectory": "reports/coverage", "collectCoverage": true, "testResultsProcessor": "./node_modules/jest-html-reporter", - "verbose": true + "verbose": true, + "transformIgnorePatterns": [ + "/node_modules/(?!(@digitalbazaar/did-io|@digitalbazaar/lru-memoize|@digitalbazaar/ed25519-verification-key-2018|@digitalbazaar/did-io|base58-universal))" + ], + "moduleNameMapper": { + "@digitalbazaar/did-io": "@digitalbazaar/did-io/lib/main.js", + "@digitalbazaar/lru-memoize": "@digitalbazaar/lru-memoize/lib/main.js", + "@digitalbazaar/ed25519-verification-key-2018": "@digitalbazaar/ed25519-verification-key-2018/src/main.js", + "base58-universal": "base58-universal/main.js" + } }, "jest-html-reporter": { "pageTitle": "Verifiable Credential and Attestation Library Test Suite", diff --git a/src/lib/did.js b/src/lib/did.js index c4bb8418..e5ad0a5a 100644 --- a/src/lib/did.js +++ b/src/lib/did.js @@ -1,10 +1,13 @@ -const { findVerificationMethod } = require('@digitalbazaar/did-io'); -// TODO: Fix the CachedResolver loading issue in jest -const didIo = require('did-io'); +const { + findVerificationMethod, + CachedResolver, +} = require('@digitalbazaar/did-io'); const didSol = require('@identity.com/did-io-driver-sol').default; +const resolver = new CachedResolver(); + // no payer needed as we are only resolving documents -didIo.use('sol', didSol.driver({ payer: null })); +resolver.use(didSol.driver({ payer: null })); module.exports = { /** @@ -41,7 +44,7 @@ module.exports = { * @param did The DID to resolve the document for */ async resolve(did) { - return didIo.get({ did }); + return resolver.get({ did }); }, /** diff --git a/src/lib/signerVerifier.js b/src/lib/signerVerifier.js index 32e04f44..8575d5eb 100644 --- a/src/lib/signerVerifier.js +++ b/src/lib/signerVerifier.js @@ -1,5 +1,6 @@ const nacl = require('tweetnacl'); const bs58 = require('bs58'); +const { TextEncoder } = require('util'); const didUtil = require('./did'); const textEncoder = new TextEncoder(); From 39ee8fc856ec6880c60300a232dcc024f0f1f26b Mon Sep 17 00:00:00 2001 From: William Brooks Date: Wed, 12 Jan 2022 12:22:45 +0200 Subject: [PATCH 25/52] IDCOM-1427 Fixed issue where updated jest plugin no longer allows the use of "this" in tests --- __test__/services/configBranch.test.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/__test__/services/configBranch.test.js b/__test__/services/configBranch.test.js index 43cef7e9..4ffaddfa 100644 --- a/__test__/services/configBranch.test.js +++ b/__test__/services/configBranch.test.js @@ -1,9 +1,10 @@ // do not put these tests on the same file as config.test.js or else jest will fail coverage // (describe.beforeEach scope not working) +const originalPlatform = process.platform; + describe('Test process platform', () => { beforeEach(() => { - this.originalPlatform = process.platform; Object.defineProperty(process, 'platform', { value: 'win32', }); @@ -21,7 +22,7 @@ describe('Test process platform', () => { afterEach(() => { Object.defineProperty(process, 'platform', { - value: this.originalPlatform, + value: originalPlatform, }); }); }); From 971d1b8a265ea126625545fa1127347d8cdd0cbc Mon Sep 17 00:00:00 2001 From: William Brooks Date: Wed, 12 Jan 2022 15:00:16 +0200 Subject: [PATCH 26/52] IDCOM-1427 Fixed looking up verification method --- src/lib/did.js | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/lib/did.js b/src/lib/did.js index e5ad0a5a..2ae75697 100644 --- a/src/lib/did.js +++ b/src/lib/did.js @@ -25,7 +25,7 @@ module.exports = { // if the verificationMethod DID is for the document DID if (verificationMethodDid === did) { - return document.capabilityInvocation.includes(verificationMethod); + return this.findVerificationMethod(document, verificationMethod) !== null; } if (!document.controller.includes(verificationMethodDid)) { @@ -35,7 +35,7 @@ module.exports = { // Check if the verificationMethod exists on the controller DID document const controllerDocument = await this.resolve(verificationMethodDid); - return controllerDocument.capabilityInvocation.includes(verificationMethod); + return this.findVerificationMethod(controllerDocument, verificationMethod) !== null; }, /** @@ -48,12 +48,16 @@ module.exports = { }, /** - * Finds the verificationMethod in a document (if it exists and is part of the capabilityInvocation) + * Finds the verificationMethod in a document (or if the VM is valid on the controller of a document) * * @param document The document to search through * @param verificationMethod The verification method to return */ findVerificationMethod(document, verificationMethod) { + if (document.keyAgreement && document.keyAgreement.length > 0) { + return document.keyAgreement.find(agreement => agreement.id === verificationMethod); + } + if (!document.capabilityInvocation.includes(verificationMethod)) { return null; } From 811f0b276b6b0427d14683bbe770631e3bf15341 Mon Sep 17 00:00:00 2001 From: William Brooks Date: Thu, 13 Jan 2022 09:31:59 +0200 Subject: [PATCH 27/52] IDCOM-1427 Code & comments cleanup --- __test__/lib/did.test.js | 24 +- __test__/lib/signerVerifier.test.js | 12 +- __test__/lib/util/did.js | 5 +- package-lock.json | 6670 +++++++++++++-------------- package.json | 2 +- src/index.js | 3 +- src/lib/signerVerifier.js | 2 +- 7 files changed, 3170 insertions(+), 3548 deletions(-) diff --git a/__test__/lib/did.test.js b/__test__/lib/did.test.js index e213e67e..f0df17dc 100644 --- a/__test__/lib/did.test.js +++ b/__test__/lib/did.test.js @@ -10,6 +10,13 @@ const didUtil = require('../../src/lib/did'); describe('DIDs', () => { beforeAll(mockDids); + it('resolves a did:sol document', async () => { + const document = await didUtil.resolve(DID_SPARSE); + + expect(document).toBeTruthy(); + expect(document.id).toBe(DID_SPARSE); + }); + it('finds a valid verification method on a DID document', async () => { const vm = `${DID_SPARSE}#default`; const document = await didUtil.resolve(DID_SPARSE); @@ -20,7 +27,7 @@ describe('DIDs', () => { expect(verificationMethod.controller).toBe(DID_SPARSE); }); - it('doesn\'t find a verification that is not in the capabilityInvocation', async () => { + it('doesn\'t find a verification that is not valid on the document', async () => { const vm = `${DID_WITH_NO_DEFAULT}#default`; const document = await didUtil.resolve(DID_WITH_NO_DEFAULT); const verificationMethod = didUtil.findVerificationMethod(document, vm); @@ -28,32 +35,25 @@ describe('DIDs', () => { expect(verificationMethod).toBe(null); }); - it('resolves a did:sol document', async () => { - const document = await didUtil.resolve(DID_SPARSE); - - expect(document).toBeTruthy(); - expect(document.id).toBe(DID_SPARSE); - }); - - it('did has authority to use a key', async () => { + it('verificationMethod can sign for a DID', async () => { const hasAuthority = await didUtil.canSign(DID_SPARSE, `${DID_SPARSE}#default`); expect(hasAuthority).toBeTruthy(); }); - it('did doesn\'t have authority to use non-existent key', async () => { + it('verificationMethod can not sign for a DID if the key does not exist', async () => { const hasAuthority = await didUtil.canSign(DID_SPARSE, `${DID_SPARSE}#key2`); expect(hasAuthority).toBeFalsy(); }); - it('did doesn\'t have authority to use a _removed_ default key', async () => { + it('verificationMethod can not sign for a DID where the default key is removed', async () => { const hasAuthority = await didUtil.canSign(DID_WITH_NO_DEFAULT, `${DID_WITH_NO_DEFAULT}#default`); expect(hasAuthority).toBeFalsy(); }); - it('did has authority to use key on controller', async () => { + it('verificationMethod can sign for a DID it is a controller of', async () => { const hasAuthority = await didUtil.canSign(DID_CONTROLLED, `${DID_CONTROLLER}#default`); expect(hasAuthority).toBeTruthy(); diff --git a/__test__/lib/signerVerifier.test.js b/__test__/lib/signerVerifier.test.js index b12d4700..fdb6788e 100644 --- a/__test__/lib/signerVerifier.test.js +++ b/__test__/lib/signerVerifier.test.js @@ -1,7 +1,6 @@ const nacl = require('tweetnacl'); const { TextEncoder } = require('util'); const signerVerifier = require('../../src/lib/signerVerifier'); -const didUtil = require('../../src/lib/did'); const { mockDids, DID_SPARSE, @@ -9,11 +8,6 @@ const { keyPair, } = require('./util/did'); -const originalResolve = didUtil.resolve; -didUtil.resolve = jest.fn() - .mockImplementation(did => originalResolve(did)) - .bind(didUtil); - const textEncoder = new TextEncoder(); const SIGN_DATA = 'dummy_data_to_sign'; @@ -86,12 +80,10 @@ describe('signerVerifier', () => { const signed = signer.sign(SIGN_DATA); - expect(signed) - .toBeTruthy(); + expect(signed).toBeTruthy(); const verified = verify(SIGN_DATA, signed.signature, keypair.publicKey); - expect(verified) - .toBe(true); + expect(verified).toBe(true); }); }); diff --git a/__test__/lib/util/did.js b/__test__/lib/util/did.js index 56260ddd..be7710b4 100644 --- a/__test__/lib/util/did.js +++ b/__test__/lib/util/did.js @@ -47,7 +47,7 @@ const mockDids = () => { }; /** - * Returns a private key for one of the above DIDs + * Returns a keyPair for one of the above DIDs * @param did * @returns {nacl.SignKeyPair} */ @@ -57,6 +57,9 @@ const keyPair = (did) => { return nacl.sign.keyPair.fromSecretKey(bs58.decode(pk)); }; +/** + * Returns the base58 encoded private key for one of the above DIDs + */ const privateKeyBase58 = did => DOCUMENTS[did][1]; module.exports = { diff --git a/package-lock.json b/package-lock.json index 58d3839e..939e9bb6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,12 +5,12 @@ "requires": true, "dependencies": { "@babel/cli": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.14.5.tgz", - "integrity": "sha512-poegjhRvXHWO0EAsnYajwYZuqcz7gyfxwfaecUESxDujrqOivf3zrjFbub8IJkrqEaz3fvJWh001EzxBub54fg==", + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.16.8.tgz", + "integrity": "sha512-FTKBbxyk5TclXOGmwYyqelqP5IF6hMxaeJskd85jbR5jBfYlwqgwAbJwnixi1ZBbTqKfFuAA95mdmUFeSRwyJA==", "dev": true, "requires": { - "@nicolo-ribaudo/chokidar-2": "2.1.8-no-fsevents.2", + "@nicolo-ribaudo/chokidar-2": "2.1.8-no-fsevents.3", "chokidar": "^3.4.0", "commander": "^4.0.1", "convert-source-map": "^1.1.0", @@ -22,35 +22,35 @@ } }, "@babel/code-frame": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", - "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", + "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", "dev": true, "requires": { - "@babel/highlight": "^7.14.5" + "@babel/highlight": "^7.16.7" } }, "@babel/compat-data": { - "version": "7.14.7", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.14.7.tgz", - "integrity": "sha512-nS6dZaISCXJ3+518CWiBfEr//gHyMO02uDxBkXTKZDN5POruCnOZ1N4YBRZDCabwF8nZMWBpRxIicmXtBs+fvw==", + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.8.tgz", + "integrity": "sha512-m7OkX0IdKLKPpBlJtF561YJal5y/jyI5fNfWbPxh2D/nbzzGI4qRyrD8xO2jB24u7l+5I2a43scCG2IrfjC50Q==", "dev": true }, "@babel/core": { - "version": "7.14.6", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.14.6.tgz", - "integrity": "sha512-gJnOEWSqTk96qG5BoIrl5bVtc23DCycmIePPYnamY9RboYdI4nFy5vAQMSl81O5K/W0sLDWfGysnOECC+KUUCA==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.14.5", - "@babel/generator": "^7.14.5", - "@babel/helper-compilation-targets": "^7.14.5", - "@babel/helper-module-transforms": "^7.14.5", - "@babel/helpers": "^7.14.6", - "@babel/parser": "^7.14.6", - "@babel/template": "^7.14.5", - "@babel/traverse": "^7.14.5", - "@babel/types": "^7.14.5", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.7.tgz", + "integrity": "sha512-aeLaqcqThRNZYmbMqtulsetOQZ/5gbR/dWruUCJcpas4Qoyy+QeagfDsPdMrqwsPRDNxJvBlRiZxxX7THO7qtA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.16.7", + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-module-transforms": "^7.16.7", + "@babel/helpers": "^7.16.7", + "@babel/parser": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.16.7", + "@babel/types": "^7.16.7", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -59,21 +59,6 @@ "source-map": "^0.5.0" }, "dependencies": { - "debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", @@ -83,44 +68,44 @@ } }, "@babel/generator": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.5.tgz", - "integrity": "sha512-y3rlP+/G25OIX3mYKKIOlQRcqj7YgrvHxOLbVmyLJ9bPmi5ttvUmpydVjcFjZphOktWuA7ovbx91ECloWTfjIA==", + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.8.tgz", + "integrity": "sha512-1ojZwE9+lOXzcWdWmO6TbUzDfqLD39CmEhN8+2cX9XkDo5yW1OpgfejfliysR2AWLpMamTiOiAp/mtroaymhpw==", "dev": true, "requires": { - "@babel/types": "^7.14.5", + "@babel/types": "^7.16.8", "jsesc": "^2.5.1", "source-map": "^0.5.0" } }, "@babel/helper-annotate-as-pure": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.14.5.tgz", - "integrity": "sha512-EivH9EgBIb+G8ij1B2jAwSH36WnGvkQSEC6CkX/6v6ZFlw5fVOHvsgGF4uiEHO2GzMvunZb6tDLQEQSdrdocrA==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz", + "integrity": "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==", "dev": true, "requires": { - "@babel/types": "^7.14.5" + "@babel/types": "^7.16.7" } }, "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.14.5.tgz", - "integrity": "sha512-YTA/Twn0vBXDVGJuAX6PwW7x5zQei1luDDo2Pl6q1qZ7hVNl0RZrhHCQG/ArGpR29Vl7ETiB8eJyrvpuRp300w==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.7.tgz", + "integrity": "sha512-C6FdbRaxYjwVu/geKW4ZeQ0Q31AftgRcdSnZ5/jsH6BzCJbtvXvhpfkbkThYSuutZA7nCXpPR6AD9zd1dprMkA==", "dev": true, "requires": { - "@babel/helper-explode-assignable-expression": "^7.14.5", - "@babel/types": "^7.14.5" + "@babel/helper-explode-assignable-expression": "^7.16.7", + "@babel/types": "^7.16.7" } }, "@babel/helper-compilation-targets": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.14.5.tgz", - "integrity": "sha512-v+QtZqXEiOnpO6EYvlImB6zCD2Lel06RzOPzmkz/D/XgQiUu3C/Jb1LOqSt/AIA34TYi/Q+KlT8vTQrgdxkbLw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.7.tgz", + "integrity": "sha512-mGojBwIWcwGD6rfqgRXVlVYmPAv7eOpIemUG3dGnDdCY4Pae70ROij3XmfrH6Fa1h1aiDylpglbZyktfzyo/hA==", "dev": true, "requires": { - "@babel/compat-data": "^7.14.5", - "@babel/helper-validator-option": "^7.14.5", - "browserslist": "^4.16.6", + "@babel/compat-data": "^7.16.4", + "@babel/helper-validator-option": "^7.16.7", + "browserslist": "^4.17.5", "semver": "^6.3.0" }, "dependencies": { @@ -133,33 +118,34 @@ } }, "@babel/helper-create-class-features-plugin": { - "version": "7.14.6", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.14.6.tgz", - "integrity": "sha512-Z6gsfGofTxH/+LQXqYEK45kxmcensbzmk/oi8DmaQytlQCgqNZt9XQF8iqlI/SeXWVjaMNxvYvzaYw+kh42mDg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.7.tgz", + "integrity": "sha512-kIFozAvVfK05DM4EVQYKK+zteWvY85BFdGBRQBytRyY3y+6PX0DkDOn/CZ3lEuczCfrCxEzwt0YtP/87YPTWSw==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.14.5", - "@babel/helper-function-name": "^7.14.5", - "@babel/helper-member-expression-to-functions": "^7.14.5", - "@babel/helper-optimise-call-expression": "^7.14.5", - "@babel/helper-replace-supers": "^7.14.5", - "@babel/helper-split-export-declaration": "^7.14.5" + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-member-expression-to-functions": "^7.16.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7" } }, "@babel/helper-create-regexp-features-plugin": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.14.5.tgz", - "integrity": "sha512-TLawwqpOErY2HhWbGJ2nZT5wSkR192QpN+nBg1THfBfftrlvOh+WbhrxXCH4q4xJ9Gl16BGPR/48JA+Ryiho/A==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.16.7.tgz", + "integrity": "sha512-fk5A6ymfp+O5+p2yCkXAu5Kyj6v0xh0RBeNcAkYUMDvvAAoxvSKXn+Jb37t/yWFiQVDFK1ELpUTD8/aLhCPu+g==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.14.5", + "@babel/helper-annotate-as-pure": "^7.16.7", "regexpu-core": "^4.7.1" } }, "@babel/helper-define-polyfill-provider": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.3.tgz", - "integrity": "sha512-RH3QDAfRMzj7+0Nqu5oqgO5q9mFtQEVvCRsi8qCEfzLR9p2BHfn5FzhSB2oj1fF7I2+DcTORkYaQ6aTR9Cofew==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.0.tgz", + "integrity": "sha512-7hfT8lUljl/tM3h+izTX/pO3W3frz2ok6Pk+gzys8iJqDfZrZy2pXjRTZAvG2YmfHun1X4q8/UZRLatMfqc5Tg==", "dev": true, "requires": { "@babel/helper-compilation-targets": "^7.13.0", @@ -172,21 +158,6 @@ "semver": "^6.1.2" }, "dependencies": { - "debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", @@ -195,399 +166,381 @@ } } }, + "@babel/helper-environment-visitor": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz", + "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, "@babel/helper-explode-assignable-expression": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.14.5.tgz", - "integrity": "sha512-Htb24gnGJdIGT4vnRKMdoXiOIlqOLmdiUYpAQ0mYfgVT/GDm8GOYhgi4GL+hMKrkiPRohO4ts34ELFsGAPQLDQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz", + "integrity": "sha512-KyUenhWMC8VrxzkGP0Jizjo4/Zx+1nNZhgocs+gLzyZyB8SHidhoq9KK/8Ato4anhwsivfkBLftky7gvzbZMtQ==", "dev": true, "requires": { - "@babel/types": "^7.14.5" + "@babel/types": "^7.16.7" } }, "@babel/helper-function-name": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.14.5.tgz", - "integrity": "sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz", + "integrity": "sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.14.5", - "@babel/template": "^7.14.5", - "@babel/types": "^7.14.5" + "@babel/helper-get-function-arity": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/types": "^7.16.7" } }, "@babel/helper-get-function-arity": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.14.5.tgz", - "integrity": "sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz", + "integrity": "sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==", "dev": true, "requires": { - "@babel/types": "^7.14.5" + "@babel/types": "^7.16.7" } }, "@babel/helper-hoist-variables": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.14.5.tgz", - "integrity": "sha512-R1PXiz31Uc0Vxy4OEOm07x0oSjKAdPPCh3tPivn/Eo8cvz6gveAeuyUUPB21Hoiif0uoPQSSdhIPS3352nvdyQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", + "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", "dev": true, "requires": { - "@babel/types": "^7.14.5" + "@babel/types": "^7.16.7" } }, "@babel/helper-member-expression-to-functions": { - "version": "7.14.7", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.14.7.tgz", - "integrity": "sha512-TMUt4xKxJn6ccjcOW7c4hlwyJArizskAhoSTOCkA0uZ+KghIaci0Qg9R043kUMWI9mtQfgny+NQ5QATnZ+paaA==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.7.tgz", + "integrity": "sha512-VtJ/65tYiU/6AbMTDwyoXGPKHgTsfRarivm+YbB5uAzKUyuPjgZSgAFeG87FCigc7KNHu2Pegh1XIT3lXjvz3Q==", "dev": true, "requires": { - "@babel/types": "^7.14.5" + "@babel/types": "^7.16.7" } }, "@babel/helper-module-imports": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.14.5.tgz", - "integrity": "sha512-SwrNHu5QWS84XlHwGYPDtCxcA0hrSlL2yhWYLgeOc0w7ccOl2qv4s/nARI0aYZW+bSwAL5CukeXA47B/1NKcnQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", + "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", "dev": true, "requires": { - "@babel/types": "^7.14.5" + "@babel/types": "^7.16.7" } }, "@babel/helper-module-transforms": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.14.5.tgz", - "integrity": "sha512-iXpX4KW8LVODuAieD7MzhNjmM6dzYY5tfRqT+R9HDXWl0jPn/djKmA+G9s/2C2T9zggw5tK1QNqZ70USfedOwA==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.7.tgz", + "integrity": "sha512-gaqtLDxJEFCeQbYp9aLAefjhkKdjKcdh6DB7jniIGU3Pz52WAmP268zK0VgPz9hUNkMSYeH976K2/Y6yPadpng==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.14.5", - "@babel/helper-replace-supers": "^7.14.5", - "@babel/helper-simple-access": "^7.14.5", - "@babel/helper-split-export-declaration": "^7.14.5", - "@babel/helper-validator-identifier": "^7.14.5", - "@babel/template": "^7.14.5", - "@babel/traverse": "^7.14.5", - "@babel/types": "^7.14.5" + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-simple-access": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/helper-validator-identifier": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.16.7", + "@babel/types": "^7.16.7" } }, "@babel/helper-optimise-call-expression": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.14.5.tgz", - "integrity": "sha512-IqiLIrODUOdnPU9/F8ib1Fx2ohlgDhxnIDU7OEVi+kAbEZcyiF7BLU8W6PfvPi9LzztjS7kcbzbmL7oG8kD6VA==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz", + "integrity": "sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==", "dev": true, "requires": { - "@babel/types": "^7.14.5" + "@babel/types": "^7.16.7" } }, "@babel/helper-plugin-utils": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz", - "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", "dev": true }, "@babel/helper-remap-async-to-generator": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.14.5.tgz", - "integrity": "sha512-rLQKdQU+HYlxBwQIj8dk4/0ENOUEhA/Z0l4hN8BexpvmSMN9oA9EagjnhnDpNsRdWCfjwa4mn/HyBXO9yhQP6A==", + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.8.tgz", + "integrity": "sha512-fm0gH7Flb8H51LqJHy3HJ3wnE1+qtYR2A99K06ahwrawLdOFsCEWjZOrYricXJHoPSudNKxrMBUPEIPxiIIvBw==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.14.5", - "@babel/helper-wrap-function": "^7.14.5", - "@babel/types": "^7.14.5" + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-wrap-function": "^7.16.8", + "@babel/types": "^7.16.8" } }, "@babel/helper-replace-supers": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.14.5.tgz", - "integrity": "sha512-3i1Qe9/8x/hCHINujn+iuHy+mMRLoc77b2nI9TB0zjH1hvn9qGlXjWlggdwUcju36PkPCy/lpM7LLUdcTyH4Ow==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz", + "integrity": "sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw==", "dev": true, "requires": { - "@babel/helper-member-expression-to-functions": "^7.14.5", - "@babel/helper-optimise-call-expression": "^7.14.5", - "@babel/traverse": "^7.14.5", - "@babel/types": "^7.14.5" + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-member-expression-to-functions": "^7.16.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/traverse": "^7.16.7", + "@babel/types": "^7.16.7" } }, "@babel/helper-simple-access": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.14.5.tgz", - "integrity": "sha512-nfBN9xvmCt6nrMZjfhkl7i0oTV3yxR4/FztsbOASyTvVcoYd0TRHh7eMLdlEcCqobydC0LAF3LtC92Iwxo0wyw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.7.tgz", + "integrity": "sha512-ZIzHVyoeLMvXMN/vok/a4LWRy8G2v205mNP0XOuf9XRLyX5/u9CnVulUtDgUTama3lT+bf/UqucuZjqiGuTS1g==", "dev": true, "requires": { - "@babel/types": "^7.14.5" + "@babel/types": "^7.16.7" } }, "@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.14.5.tgz", - "integrity": "sha512-dmqZB7mrb94PZSAOYtr+ZN5qt5owZIAgqtoTuqiFbHFtxgEcmQlRJVI+bO++fciBunXtB6MK7HrzrfcAzIz2NQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz", + "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==", "dev": true, "requires": { - "@babel/types": "^7.14.5" + "@babel/types": "^7.16.0" } }, "@babel/helper-split-export-declaration": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.14.5.tgz", - "integrity": "sha512-hprxVPu6e5Kdp2puZUmvOGjaLv9TCe58E/Fl6hRq4YiVQxIcNvuq6uTM2r1mT/oPskuS9CgR+I94sqAYv0NGKA==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", + "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", "dev": true, "requires": { - "@babel/types": "^7.14.5" + "@babel/types": "^7.16.7" } }, "@babel/helper-validator-identifier": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.5.tgz", - "integrity": "sha512-5lsetuxCLilmVGyiLEfoHBRX8UCFD+1m2x3Rj97WrW3V7H3u4RWRXA4evMjImCsin2J2YT0QaVDGf+z8ondbAg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", + "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", "dev": true }, "@babel/helper-validator-option": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", - "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", + "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==", "dev": true }, "@babel/helper-wrap-function": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.14.5.tgz", - "integrity": "sha512-YEdjTCq+LNuNS1WfxsDCNpgXkJaIyqco6DAelTUjT4f2KIWC1nBcaCaSdHTBqQVLnTBexBcVcFhLSU1KnYuePQ==", + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.8.tgz", + "integrity": "sha512-8RpyRVIAW1RcDDGTA+GpPAwV22wXCfKOoM9bet6TLkGIFTkRQSkH1nMQ5Yet4MpoXe1ZwHPVtNasc2w0uZMqnw==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.14.5", - "@babel/template": "^7.14.5", - "@babel/traverse": "^7.14.5", - "@babel/types": "^7.14.5" + "@babel/helper-function-name": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.16.8", + "@babel/types": "^7.16.8" } }, "@babel/helpers": { - "version": "7.14.6", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.14.6.tgz", - "integrity": "sha512-yesp1ENQBiLI+iYHSJdoZKUtRpfTlL1grDIX9NRlAVppljLw/4tTyYupIB7uIYmC3stW/imAv8EqaKaS/ibmeA==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.16.7.tgz", + "integrity": "sha512-9ZDoqtfY7AuEOt3cxchfii6C7GDyyMBffktR5B2jvWv8u2+efwvpnVKXMWzNehqy68tKgAfSwfdw/lWpthS2bw==", "dev": true, "requires": { - "@babel/template": "^7.14.5", - "@babel/traverse": "^7.14.5", - "@babel/types": "^7.14.5" + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.16.7", + "@babel/types": "^7.16.7" } }, "@babel/highlight": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", - "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.7.tgz", + "integrity": "sha512-aKpPMfLvGO3Q97V0qhw/V2SWNWlwfJknuwAunU7wZLSfrM4xTBvg7E5opUVi1kJTBKihE38CPg4nBiqX83PWYw==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.14.5", + "@babel/helper-validator-identifier": "^7.16.7", "chalk": "^2.0.0", "js-tokens": "^4.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } } }, "@babel/parser": { - "version": "7.14.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.7.tgz", - "integrity": "sha512-X67Z5y+VBJuHB/RjwECp8kSl5uYi0BvRbNeWqkaJCVh+LiTPl19WBUfG627psSgp9rSf6ojuXghQM3ha6qHHdA==", + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.8.tgz", + "integrity": "sha512-i7jDUfrVBWc+7OKcBzEe5n7fbv3i2fWtxKzzCvOjnzSxMfWMigAhtfJ7qzZNGFNMsCCd67+uz553dYKWXPvCKw==", "dev": true }, + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.7.tgz", + "integrity": "sha512-anv/DObl7waiGEnC24O9zqL0pSuI9hljihqiDuFHC8d7/bjr/4RLGPWuc8rYOff/QPzbEPSkzG8wGG9aDuhHRg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.14.5.tgz", - "integrity": "sha512-ZoJS2XCKPBfTmL122iP6NM9dOg+d4lc9fFk3zxc8iDjvt8Pk4+TlsHSKhIPf6X+L5ORCdBzqMZDjL/WHj7WknQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.7.tgz", + "integrity": "sha512-di8vUHRdf+4aJ7ltXhaDbPoszdkh59AQtJM5soLsuHpQJdFQZOA4uGj0V2u/CZ8bJ/u8ULDL5yq6FO/bCXnKHw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.14.5", - "@babel/plugin-proposal-optional-chaining": "^7.14.5" + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.16.7" } }, "@babel/plugin-proposal-async-generator-functions": { - "version": "7.14.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.14.7.tgz", - "integrity": "sha512-RK8Wj7lXLY3bqei69/cc25gwS5puEc3dknoFPFbqfy3XxYQBQFvu4ioWpafMBAB+L9NyptQK4nMOa5Xz16og8Q==", + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.8.tgz", + "integrity": "sha512-71YHIvMuiuqWJQkebWJtdhQTfd4Q4mF76q2IX37uZPkG9+olBxsX+rH1vkhFto4UeJZ9dPY2s+mDvhDm1u2BGQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-remap-async-to-generator": "^7.14.5", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-remap-async-to-generator": "^7.16.8", "@babel/plugin-syntax-async-generators": "^7.8.4" } }, "@babel/plugin-proposal-class-properties": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.14.5.tgz", - "integrity": "sha512-q/PLpv5Ko4dVc1LYMpCY7RVAAO4uk55qPwrIuJ5QJ8c6cVuAmhu7I/49JOppXL6gXf7ZHzpRVEUZdYoPLM04Gg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.7.tgz", + "integrity": "sha512-IobU0Xme31ewjYOShSIqd/ZGM/r/cuOz2z0MDbNrhF5FW+ZVgi0f2lyeoj9KFPDOAqsYxmLWZte1WOwlvY9aww==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-create-class-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-proposal-class-static-block": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.14.5.tgz", - "integrity": "sha512-KBAH5ksEnYHCegqseI5N9skTdxgJdmDoAOc0uXa+4QMYKeZD0w5IARh4FMlTNtaHhbB8v+KzMdTgxMMzsIy6Yg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.16.7.tgz", + "integrity": "sha512-dgqJJrcZoG/4CkMopzhPJjGxsIe9A8RlkQLnL/Vhhx8AA9ZuaRwGSlscSh42hazc7WSrya/IK7mTeoF0DP9tEw==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-create-class-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", "@babel/plugin-syntax-class-static-block": "^7.14.5" } }, "@babel/plugin-proposal-dynamic-import": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.14.5.tgz", - "integrity": "sha512-ExjiNYc3HDN5PXJx+bwC50GIx/KKanX2HiggnIUAYedbARdImiCU4RhhHfdf0Kd7JNXGpsBBBCOm+bBVy3Gb0g==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.7.tgz", + "integrity": "sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-plugin-utils": "^7.16.7", "@babel/plugin-syntax-dynamic-import": "^7.8.3" } }, "@babel/plugin-proposal-export-namespace-from": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.14.5.tgz", - "integrity": "sha512-g5POA32bXPMmSBu5Dx/iZGLGnKmKPc5AiY7qfZgurzrCYgIztDlHFbznSNCoQuv57YQLnQfaDi7dxCtLDIdXdA==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.7.tgz", + "integrity": "sha512-ZxdtqDXLRGBL64ocZcs7ovt71L3jhC1RGSyR996svrCi3PYqHNkb3SwPJCs8RIzD86s+WPpt2S73+EHCGO+NUA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-plugin-utils": "^7.16.7", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" } }, "@babel/plugin-proposal-json-strings": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.14.5.tgz", - "integrity": "sha512-NSq2fczJYKVRIsUJyNxrVUMhB27zb7N7pOFGQOhBKJrChbGcgEAqyZrmZswkPk18VMurEeJAaICbfm57vUeTbQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.7.tgz", + "integrity": "sha512-lNZ3EEggsGY78JavgbHsK9u5P3pQaW7k4axlgFLYkMd7UBsiNahCITShLjNQschPyjtO6dADrL24757IdhBrsQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-plugin-utils": "^7.16.7", "@babel/plugin-syntax-json-strings": "^7.8.3" } }, "@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.14.5.tgz", - "integrity": "sha512-YGn2AvZAo9TwyhlLvCCWxD90Xq8xJ4aSgaX3G5D/8DW94L8aaT+dS5cSP+Z06+rCJERGSr9GxMBZ601xoc2taw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.7.tgz", + "integrity": "sha512-K3XzyZJGQCr00+EtYtrDjmwX7o7PLK6U9bi1nCwkQioRFVUv6dJoxbQjtWVtP+bCPy82bONBKG8NPyQ4+i6yjg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-plugin-utils": "^7.16.7", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" } }, "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.14.5.tgz", - "integrity": "sha512-gun/SOnMqjSb98Nkaq2rTKMwervfdAoz6NphdY0vTfuzMfryj+tDGb2n6UkDKwez+Y8PZDhE3D143v6Gepp4Hg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.7.tgz", + "integrity": "sha512-aUOrYU3EVtjf62jQrCj63pYZ7k6vns2h/DQvHPWGmsJRYzWXZ6/AsfgpiRy6XiuIDADhJzP2Q9MwSMKauBQ+UQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-plugin-utils": "^7.16.7", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" } }, "@babel/plugin-proposal-numeric-separator": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.14.5.tgz", - "integrity": "sha512-yiclALKe0vyZRZE0pS6RXgjUOt87GWv6FYa5zqj15PvhOGFO69R5DusPlgK/1K5dVnCtegTiWu9UaBSrLLJJBg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.7.tgz", + "integrity": "sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-plugin-utils": "^7.16.7", "@babel/plugin-syntax-numeric-separator": "^7.10.4" } }, "@babel/plugin-proposal-object-rest-spread": { - "version": "7.14.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.14.7.tgz", - "integrity": "sha512-082hsZz+sVabfmDWo1Oct1u1AgbKbUAyVgmX4otIc7bdsRgHBXwTwb3DpDmD4Eyyx6DNiuz5UAATT655k+kL5g==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.16.7.tgz", + "integrity": "sha512-3O0Y4+dw94HA86qSg9IHfyPktgR7q3gpNVAeiKQd+8jBKFaU5NQS1Yatgo4wY+UFNuLjvxcSmzcsHqrhgTyBUA==", "dev": true, "requires": { - "@babel/compat-data": "^7.14.7", - "@babel/helper-compilation-targets": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5", + "@babel/compat-data": "^7.16.4", + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.14.5" + "@babel/plugin-transform-parameters": "^7.16.7" } }, "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.14.5.tgz", - "integrity": "sha512-3Oyiixm0ur7bzO5ybNcZFlmVsygSIQgdOa7cTfOYCMY+wEPAYhZAJxi3mixKFCTCKUhQXuCTtQ1MzrpL3WT8ZQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.7.tgz", + "integrity": "sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-plugin-utils": "^7.16.7", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" } }, "@babel/plugin-proposal-optional-chaining": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.14.5.tgz", - "integrity": "sha512-ycz+VOzo2UbWNI1rQXxIuMOzrDdHGrI23fRiz/Si2R4kv2XZQ1BK8ccdHwehMKBlcH/joGW/tzrUmo67gbJHlQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.7.tgz", + "integrity": "sha512-eC3xy+ZrUcBtP7x+sq62Q/HYd674pPTb/77XZMb5wbDPGWIdUbSr4Agr052+zaUPSb+gGRnjxXfKFvx5iMJ+DA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.14.5", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", "@babel/plugin-syntax-optional-chaining": "^7.8.3" } }, "@babel/plugin-proposal-private-methods": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.14.5.tgz", - "integrity": "sha512-838DkdUA1u+QTCplatfq4B7+1lnDa/+QMI89x5WZHBcnNv+47N8QEj2k9I2MUU9xIv8XJ4XvPCviM/Dj7Uwt9g==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.7.tgz", + "integrity": "sha512-7twV3pzhrRxSwHeIvFE6coPgvo+exNDOiGUMg39o2LiLo1Y+4aKpfkcLGcg1UHonzorCt7SNXnoMyCnnIOA8Sw==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-create-class-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-proposal-private-property-in-object": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.14.5.tgz", - "integrity": "sha512-62EyfyA3WA0mZiF2e2IV9mc9Ghwxcg8YTu8BS4Wss4Y3PY725OmS9M0qLORbJwLqFtGh+jiE4wAmocK2CTUK2Q==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.7.tgz", + "integrity": "sha512-rMQkjcOFbm+ufe3bTZLyOfsOUOxyvLXZJCTARhJr+8UMSoZmqTe1K1BgkFcrW37rAchWg57yI69ORxiWvUINuQ==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.14.5", - "@babel/helper-create-class-features-plugin": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-create-class-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", "@babel/plugin-syntax-private-property-in-object": "^7.14.5" } }, "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.14.5.tgz", - "integrity": "sha512-6axIeOU5LnY471KenAB9vI8I5j7NQ2d652hIYwVyRfgaZT5UpiqFKCuVXCDMSrU+3VFafnu2c5m3lrWIlr6A5Q==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.7.tgz", + "integrity": "sha512-QRK0YI/40VLhNVGIjRNAAQkEHws0cswSdFFjpFyt943YmJIU1da9uW63Iu6NFV6CxTZW5eTDCrwZUstBWgp/Rg==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-create-regexp-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-syntax-async-generators": { @@ -735,263 +688,265 @@ } }, "@babel/plugin-transform-arrow-functions": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.14.5.tgz", - "integrity": "sha512-KOnO0l4+tD5IfOdi4x8C1XmEIRWUjNRV8wc6K2vz/3e8yAOoZZvsRXRRIF/yo/MAOFb4QjtAw9xSxMXbSMRy8A==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.7.tgz", + "integrity": "sha512-9ffkFFMbvzTvv+7dTp/66xvZAWASuPD5Tl9LK3Z9vhOmANo6j94rik+5YMBt4CwHVMWLWpMsriIc2zsa3WW3xQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-transform-async-to-generator": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.14.5.tgz", - "integrity": "sha512-szkbzQ0mNk0rpu76fzDdqSyPu0MuvpXgC+6rz5rpMb5OIRxdmHfQxrktL8CYolL2d8luMCZTR0DpIMIdL27IjA==", + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.8.tgz", + "integrity": "sha512-MtmUmTJQHCnyJVrScNzNlofQJ3dLFuobYn3mwOTKHnSCMtbNsqvF71GQmJfFjdrXSsAA7iysFmYWw4bXZ20hOg==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-remap-async-to-generator": "^7.14.5" + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-remap-async-to-generator": "^7.16.8" } }, "@babel/plugin-transform-block-scoped-functions": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.14.5.tgz", - "integrity": "sha512-dtqWqdWZ5NqBX3KzsVCWfQI3A53Ft5pWFCT2eCVUftWZgjc5DpDponbIF1+c+7cSGk2wN0YK7HGL/ezfRbpKBQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.7.tgz", + "integrity": "sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-transform-block-scoping": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.14.5.tgz", - "integrity": "sha512-LBYm4ZocNgoCqyxMLoOnwpsmQ18HWTQvql64t3GvMUzLQrNoV1BDG0lNftC8QKYERkZgCCT/7J5xWGObGAyHDw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.7.tgz", + "integrity": "sha512-ObZev2nxVAYA4bhyusELdo9hb3H+A56bxH3FZMbEImZFiEDYVHXQSJ1hQKFlDnlt8G9bBrCZ5ZpURZUrV4G5qQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-transform-classes": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.14.5.tgz", - "integrity": "sha512-J4VxKAMykM06K/64z9rwiL6xnBHgB1+FVspqvlgCdwD1KUbQNfszeKVVOMh59w3sztHYIZDgnhOC4WbdEfHFDA==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.14.5", - "@babel/helper-function-name": "^7.14.5", - "@babel/helper-optimise-call-expression": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-replace-supers": "^7.14.5", - "@babel/helper-split-export-declaration": "^7.14.5", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.7.tgz", + "integrity": "sha512-WY7og38SFAGYRe64BrjKf8OrE6ulEHtr5jEYaZMwox9KebgqPi67Zqz8K53EKk1fFEJgm96r32rkKZ3qA2nCWQ==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", "globals": "^11.1.0" } }, "@babel/plugin-transform-computed-properties": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.14.5.tgz", - "integrity": "sha512-pWM+E4283UxaVzLb8UBXv4EIxMovU4zxT1OPnpHJcmnvyY9QbPPTKZfEj31EUvG3/EQRbYAGaYEUZ4yWOBC2xg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.7.tgz", + "integrity": "sha512-gN72G9bcmenVILj//sv1zLNaPyYcOzUho2lIJBMh/iakJ9ygCo/hEF9cpGb61SCMEDxbbyBoVQxrt+bWKu5KGw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-transform-destructuring": { - "version": "7.14.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.14.7.tgz", - "integrity": "sha512-0mDE99nK+kVh3xlc5vKwB6wnP9ecuSj+zQCa/n0voENtP/zymdT4HH6QEb65wjjcbqr1Jb/7z9Qp7TF5FtwYGw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.16.7.tgz", + "integrity": "sha512-VqAwhTHBnu5xBVDCvrvqJbtLUa++qZaWC0Fgr2mqokBlulZARGyIvZDoqbPlPaKImQ9dKAcCzbv+ul//uqu70A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-transform-dotall-regex": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.14.5.tgz", - "integrity": "sha512-loGlnBdj02MDsFaHhAIJzh7euK89lBrGIdM9EAtHFo6xKygCUGuuWe07o1oZVk287amtW1n0808sQM99aZt3gw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz", + "integrity": "sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-create-regexp-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-transform-duplicate-keys": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.14.5.tgz", - "integrity": "sha512-iJjbI53huKbPDAsJ8EmVmvCKeeq21bAze4fu9GBQtSLqfvzj2oRuHVx4ZkDwEhg1htQ+5OBZh/Ab0XDf5iBZ7A==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.7.tgz", + "integrity": "sha512-03DvpbRfvWIXyK0/6QiR1KMTWeT6OcQ7tbhjrXyFS02kjuX/mu5Bvnh5SDSWHxyawit2g5aWhKwI86EE7GUnTw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-transform-exponentiation-operator": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.14.5.tgz", - "integrity": "sha512-jFazJhMBc9D27o9jDnIE5ZErI0R0m7PbKXVq77FFvqFbzvTMuv8jaAwLZ5PviOLSFttqKIW0/wxNSDbjLk0tYA==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.7.tgz", + "integrity": "sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA==", "dev": true, "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-transform-for-of": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.14.5.tgz", - "integrity": "sha512-CfmqxSUZzBl0rSjpoQSFoR9UEj3HzbGuGNL21/iFTmjb5gFggJp3ph0xR1YBhexmLoKRHzgxuFvty2xdSt6gTA==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.7.tgz", + "integrity": "sha512-/QZm9W92Ptpw7sjI9Nx1mbcsWz33+l8kuMIQnDwgQBG5s3fAfQvkRjQ7NqXhtNcKOnPkdICmUHyCaWW06HCsqg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-transform-function-name": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.14.5.tgz", - "integrity": "sha512-vbO6kv0fIzZ1GpmGQuvbwwm+O4Cbm2NrPzwlup9+/3fdkuzo1YqOZcXw26+YUJB84Ja7j9yURWposEHLYwxUfQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.7.tgz", + "integrity": "sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-transform-literals": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.14.5.tgz", - "integrity": "sha512-ql33+epql2F49bi8aHXxvLURHkxJbSmMKl9J5yHqg4PLtdE6Uc48CH1GS6TQvZ86eoB/ApZXwm7jlA+B3kra7A==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.7.tgz", + "integrity": "sha512-6tH8RTpTWI0s2sV6uq3e/C9wPo4PTqqZps4uF0kzQ9/xPLFQtipynvmT1g/dOfEJ+0EQsHhkQ/zyRId8J2b8zQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-transform-member-expression-literals": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.14.5.tgz", - "integrity": "sha512-WkNXxH1VXVTKarWFqmso83xl+2V3Eo28YY5utIkbsmXoItO8Q3aZxN4BTS2k0hz9dGUloHK26mJMyQEYfkn/+Q==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.7.tgz", + "integrity": "sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-transform-modules-amd": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.14.5.tgz", - "integrity": "sha512-3lpOU8Vxmp3roC4vzFpSdEpGUWSMsHFreTWOMMLzel2gNGfHE5UWIh/LN6ghHs2xurUp4jRFYMUIZhuFbody1g==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.7.tgz", + "integrity": "sha512-KaaEtgBL7FKYwjJ/teH63oAmE3lP34N3kshz8mm4VMAw7U3PxjVwwUmxEFksbgsNUaO3wId9R2AVQYSEGRa2+g==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-module-transforms": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.14.5.tgz", - "integrity": "sha512-en8GfBtgnydoao2PS+87mKyw62k02k7kJ9ltbKe0fXTHrQmG6QZZflYuGI1VVG7sVpx4E1n7KBpNlPb8m78J+A==", + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.8.tgz", + "integrity": "sha512-oflKPvsLT2+uKQopesJt3ApiaIS2HW+hzHFcwRNtyDGieAeC/dIHZX8buJQ2J2X1rxGPy4eRcUijm3qcSPjYcA==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-simple-access": "^7.14.5", + "@babel/helper-module-transforms": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-simple-access": "^7.16.7", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.14.5.tgz", - "integrity": "sha512-mNMQdvBEE5DcMQaL5LbzXFMANrQjd2W7FPzg34Y4yEz7dBgdaC+9B84dSO+/1Wba98zoDbInctCDo4JGxz1VYA==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.7.tgz", + "integrity": "sha512-DuK5E3k+QQmnOqBR9UkusByy5WZWGRxfzV529s9nPra1GE7olmxfqO2FHobEOYSPIjPBTr4p66YDcjQnt8cBmw==", "dev": true, "requires": { - "@babel/helper-hoist-variables": "^7.14.5", - "@babel/helper-module-transforms": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-validator-identifier": "^7.14.5", + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-module-transforms": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-validator-identifier": "^7.16.7", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-umd": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.14.5.tgz", - "integrity": "sha512-RfPGoagSngC06LsGUYyM9QWSXZ8MysEjDJTAea1lqRjNECE3y0qIJF/qbvJxc4oA4s99HumIMdXOrd+TdKaAAA==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.7.tgz", + "integrity": "sha512-EMh7uolsC8O4xhudF2F6wedbSHm1HHZ0C6aJ7K67zcDNidMzVcxWdGr+htW9n21klm+bOn+Rx4CBsAntZd3rEQ==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-module-transforms": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.14.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.14.7.tgz", - "integrity": "sha512-DTNOTaS7TkW97xsDMrp7nycUVh6sn/eq22VaxWfEdzuEbRsiaOU0pqU7DlyUGHVsbQbSghvjKRpEl+nUCKGQSg==", + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.8.tgz", + "integrity": "sha512-j3Jw+n5PvpmhRR+mrgIh04puSANCk/T/UA3m3P1MjJkhlK906+ApHhDIqBQDdOgL/r1UYpz4GNclTXxyZrYGSw==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.14.5" + "@babel/helper-create-regexp-features-plugin": "^7.16.7" } }, "@babel/plugin-transform-new-target": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.14.5.tgz", - "integrity": "sha512-Nx054zovz6IIRWEB49RDRuXGI4Gy0GMgqG0cII9L3MxqgXz/+rgII+RU58qpo4g7tNEx1jG7rRVH4ihZoP4esQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.7.tgz", + "integrity": "sha512-xiLDzWNMfKoGOpc6t3U+etCE2yRnn3SM09BXqWPIZOBpL2gvVrBWUKnsJx0K/ADi5F5YC5f8APFfWrz25TdlGg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-transform-object-super": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.14.5.tgz", - "integrity": "sha512-MKfOBWzK0pZIrav9z/hkRqIk/2bTv9qvxHzPQc12RcVkMOzpIKnFCNYJip00ssKWYkd8Sf5g0Wr7pqJ+cmtuFg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.7.tgz", + "integrity": "sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-replace-supers": "^7.14.5" + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7" } }, "@babel/plugin-transform-parameters": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.14.5.tgz", - "integrity": "sha512-Tl7LWdr6HUxTmzQtzuU14SqbgrSKmaR77M0OKyq4njZLQTPfOvzblNKyNkGwOfEFCEx7KeYHQHDI0P3F02IVkA==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.7.tgz", + "integrity": "sha512-AT3MufQ7zZEhU2hwOA11axBnExW0Lszu4RL/tAlUJBuNoRak+wehQW8h6KcXOcgjY42fHtDxswuMhMjFEuv/aw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-transform-property-literals": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.14.5.tgz", - "integrity": "sha512-r1uilDthkgXW8Z1vJz2dKYLV1tuw2xsbrp3MrZmD99Wh9vsfKoob+JTgri5VUb/JqyKRXotlOtwgu4stIYCmnw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.7.tgz", + "integrity": "sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-transform-regenerator": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.14.5.tgz", - "integrity": "sha512-NVIY1W3ITDP5xQl50NgTKlZ0GrotKtLna08/uGY6ErQt6VEQZXla86x/CTddm5gZdcr+5GSsvMeTmWA5Ii6pkg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.7.tgz", + "integrity": "sha512-mF7jOgGYCkSJagJ6XCujSQg+6xC1M77/03K2oBmVJWoFGNUtnVJO4WHKJk3dnPC8HCcj4xBQP1Egm8DWh3Pb3Q==", "dev": true, "requires": { "regenerator-transform": "^0.14.2" } }, "@babel/plugin-transform-reserved-words": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.14.5.tgz", - "integrity": "sha512-cv4F2rv1nD4qdexOGsRQXJrOcyb5CrgjUH9PKrrtyhSDBNWGxd0UIitjyJiWagS+EbUGjG++22mGH1Pub8D6Vg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.7.tgz", + "integrity": "sha512-KQzzDnZ9hWQBjwi5lpY5v9shmm6IVG0U9pB18zvMu2i4H90xpT4gmqwPYsn8rObiadYe2M0gmgsiOIF5A/2rtg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-transform-runtime": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.14.5.tgz", - "integrity": "sha512-fPMBhh1AV8ZyneiCIA+wYYUH1arzlXR1UMcApjvchDhfKxhy2r2lReJv8uHEyihi4IFIGlr1Pdx7S5fkESDQsg==", + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.16.8.tgz", + "integrity": "sha512-6Kg2XHPFnIarNweZxmzbgYnnWsXxkx9WQUVk2sksBRL80lBC1RAQV3wQagWxdCHiYHqPN+oenwNIuttlYgIbQQ==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5", - "babel-plugin-polyfill-corejs2": "^0.2.2", - "babel-plugin-polyfill-corejs3": "^0.2.2", - "babel-plugin-polyfill-regenerator": "^0.2.2", + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "babel-plugin-polyfill-corejs2": "^0.3.0", + "babel-plugin-polyfill-corejs3": "^0.5.0", + "babel-plugin-polyfill-regenerator": "^0.3.0", "semver": "^6.3.0" }, "dependencies": { @@ -1004,96 +959,97 @@ } }, "@babel/plugin-transform-shorthand-properties": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.14.5.tgz", - "integrity": "sha512-xLucks6T1VmGsTB+GWK5Pl9Jl5+nRXD1uoFdA5TSO6xtiNjtXTjKkmPdFXVLGlK5A2/or/wQMKfmQ2Y0XJfn5g==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz", + "integrity": "sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-transform-spread": { - "version": "7.14.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.14.6.tgz", - "integrity": "sha512-Zr0x0YroFJku7n7+/HH3A2eIrGMjbmAIbJSVv0IZ+t3U2WUQUA64S/oeied2e+MaGSjmt4alzBCsK9E8gh+fag==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.7.tgz", + "integrity": "sha512-+pjJpgAngb53L0iaA5gU/1MLXJIfXcYepLgXB3esVRf4fqmj8f2cxM3/FKaHsZms08hFQJkFccEWuIpm429TXg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.14.5" + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" } }, "@babel/plugin-transform-sticky-regex": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.14.5.tgz", - "integrity": "sha512-Z7F7GyvEMzIIbwnziAZmnSNpdijdr4dWt+FJNBnBLz5mwDFkqIXU9wmBcWWad3QeJF5hMTkRe4dAq2sUZiG+8A==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.7.tgz", + "integrity": "sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-transform-template-literals": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.14.5.tgz", - "integrity": "sha512-22btZeURqiepOfuy/VkFr+zStqlujWaarpMErvay7goJS6BWwdd6BY9zQyDLDa4x2S3VugxFb162IZ4m/S/+Gg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.7.tgz", + "integrity": "sha512-VwbkDDUeenlIjmfNeDX/V0aWrQH2QiVyJtwymVQSzItFDTpxfyJh3EVaQiS0rIN/CqbLGr0VcGmuwyTdZtdIsA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-transform-typeof-symbol": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.14.5.tgz", - "integrity": "sha512-lXzLD30ffCWseTbMQzrvDWqljvZlHkXU+CnseMhkMNqU1sASnCsz3tSzAaH3vCUXb9PHeUb90ZT1BdFTm1xxJw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.7.tgz", + "integrity": "sha512-p2rOixCKRJzpg9JB4gjnG4gjWkWa89ZoYUnl9snJ1cWIcTH/hvxZqfO+WjG6T8DRBpctEol5jw1O5rA8gkCokQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-transform-unicode-escapes": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.14.5.tgz", - "integrity": "sha512-crTo4jATEOjxj7bt9lbYXcBAM3LZaUrbP2uUdxb6WIorLmjNKSpHfIybgY4B8SRpbf8tEVIWH3Vtm7ayCrKocA==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.7.tgz", + "integrity": "sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-transform-unicode-regex": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.14.5.tgz", - "integrity": "sha512-UygduJpC5kHeCiRw/xDVzC+wj8VaYSoKl5JNVmbP7MadpNinAm3SvZCxZ42H37KZBKztz46YC73i9yV34d0Tzw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.7.tgz", + "integrity": "sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-create-regexp-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/preset-env": { - "version": "7.14.7", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.14.7.tgz", - "integrity": "sha512-itOGqCKLsSUl0Y+1nSfhbuuOlTs0MJk2Iv7iSH+XT/mR8U1zRLO7NjWlYXB47yhK4J/7j+HYty/EhFZDYKa/VA==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.14.7", - "@babel/helper-compilation-targets": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-validator-option": "^7.14.5", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.14.5", - "@babel/plugin-proposal-async-generator-functions": "^7.14.7", - "@babel/plugin-proposal-class-properties": "^7.14.5", - "@babel/plugin-proposal-class-static-block": "^7.14.5", - "@babel/plugin-proposal-dynamic-import": "^7.14.5", - "@babel/plugin-proposal-export-namespace-from": "^7.14.5", - "@babel/plugin-proposal-json-strings": "^7.14.5", - "@babel/plugin-proposal-logical-assignment-operators": "^7.14.5", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.14.5", - "@babel/plugin-proposal-numeric-separator": "^7.14.5", - "@babel/plugin-proposal-object-rest-spread": "^7.14.7", - "@babel/plugin-proposal-optional-catch-binding": "^7.14.5", - "@babel/plugin-proposal-optional-chaining": "^7.14.5", - "@babel/plugin-proposal-private-methods": "^7.14.5", - "@babel/plugin-proposal-private-property-in-object": "^7.14.5", - "@babel/plugin-proposal-unicode-property-regex": "^7.14.5", + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.8.tgz", + "integrity": "sha512-9rNKgVCdwHb3z1IlbMyft6yIXIeP3xz6vWvGaLHrJThuEIqWfHb0DNBH9VuTgnDfdbUDhkmkvMZS/YMCtP7Elg==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.16.8", + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-validator-option": "^7.16.7", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.7", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.7", + "@babel/plugin-proposal-async-generator-functions": "^7.16.8", + "@babel/plugin-proposal-class-properties": "^7.16.7", + "@babel/plugin-proposal-class-static-block": "^7.16.7", + "@babel/plugin-proposal-dynamic-import": "^7.16.7", + "@babel/plugin-proposal-export-namespace-from": "^7.16.7", + "@babel/plugin-proposal-json-strings": "^7.16.7", + "@babel/plugin-proposal-logical-assignment-operators": "^7.16.7", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.7", + "@babel/plugin-proposal-numeric-separator": "^7.16.7", + "@babel/plugin-proposal-object-rest-spread": "^7.16.7", + "@babel/plugin-proposal-optional-catch-binding": "^7.16.7", + "@babel/plugin-proposal-optional-chaining": "^7.16.7", + "@babel/plugin-proposal-private-methods": "^7.16.7", + "@babel/plugin-proposal-private-property-in-object": "^7.16.7", + "@babel/plugin-proposal-unicode-property-regex": "^7.16.7", "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-class-properties": "^7.12.13", "@babel/plugin-syntax-class-static-block": "^7.14.5", @@ -1108,44 +1064,44 @@ "@babel/plugin-syntax-optional-chaining": "^7.8.3", "@babel/plugin-syntax-private-property-in-object": "^7.14.5", "@babel/plugin-syntax-top-level-await": "^7.14.5", - "@babel/plugin-transform-arrow-functions": "^7.14.5", - "@babel/plugin-transform-async-to-generator": "^7.14.5", - "@babel/plugin-transform-block-scoped-functions": "^7.14.5", - "@babel/plugin-transform-block-scoping": "^7.14.5", - "@babel/plugin-transform-classes": "^7.14.5", - "@babel/plugin-transform-computed-properties": "^7.14.5", - "@babel/plugin-transform-destructuring": "^7.14.7", - "@babel/plugin-transform-dotall-regex": "^7.14.5", - "@babel/plugin-transform-duplicate-keys": "^7.14.5", - "@babel/plugin-transform-exponentiation-operator": "^7.14.5", - "@babel/plugin-transform-for-of": "^7.14.5", - "@babel/plugin-transform-function-name": "^7.14.5", - "@babel/plugin-transform-literals": "^7.14.5", - "@babel/plugin-transform-member-expression-literals": "^7.14.5", - "@babel/plugin-transform-modules-amd": "^7.14.5", - "@babel/plugin-transform-modules-commonjs": "^7.14.5", - "@babel/plugin-transform-modules-systemjs": "^7.14.5", - "@babel/plugin-transform-modules-umd": "^7.14.5", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.14.7", - "@babel/plugin-transform-new-target": "^7.14.5", - "@babel/plugin-transform-object-super": "^7.14.5", - "@babel/plugin-transform-parameters": "^7.14.5", - "@babel/plugin-transform-property-literals": "^7.14.5", - "@babel/plugin-transform-regenerator": "^7.14.5", - "@babel/plugin-transform-reserved-words": "^7.14.5", - "@babel/plugin-transform-shorthand-properties": "^7.14.5", - "@babel/plugin-transform-spread": "^7.14.6", - "@babel/plugin-transform-sticky-regex": "^7.14.5", - "@babel/plugin-transform-template-literals": "^7.14.5", - "@babel/plugin-transform-typeof-symbol": "^7.14.5", - "@babel/plugin-transform-unicode-escapes": "^7.14.5", - "@babel/plugin-transform-unicode-regex": "^7.14.5", - "@babel/preset-modules": "^0.1.4", - "@babel/types": "^7.14.5", - "babel-plugin-polyfill-corejs2": "^0.2.2", - "babel-plugin-polyfill-corejs3": "^0.2.2", - "babel-plugin-polyfill-regenerator": "^0.2.2", - "core-js-compat": "^3.15.0", + "@babel/plugin-transform-arrow-functions": "^7.16.7", + "@babel/plugin-transform-async-to-generator": "^7.16.8", + "@babel/plugin-transform-block-scoped-functions": "^7.16.7", + "@babel/plugin-transform-block-scoping": "^7.16.7", + "@babel/plugin-transform-classes": "^7.16.7", + "@babel/plugin-transform-computed-properties": "^7.16.7", + "@babel/plugin-transform-destructuring": "^7.16.7", + "@babel/plugin-transform-dotall-regex": "^7.16.7", + "@babel/plugin-transform-duplicate-keys": "^7.16.7", + "@babel/plugin-transform-exponentiation-operator": "^7.16.7", + "@babel/plugin-transform-for-of": "^7.16.7", + "@babel/plugin-transform-function-name": "^7.16.7", + "@babel/plugin-transform-literals": "^7.16.7", + "@babel/plugin-transform-member-expression-literals": "^7.16.7", + "@babel/plugin-transform-modules-amd": "^7.16.7", + "@babel/plugin-transform-modules-commonjs": "^7.16.8", + "@babel/plugin-transform-modules-systemjs": "^7.16.7", + "@babel/plugin-transform-modules-umd": "^7.16.7", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.16.8", + "@babel/plugin-transform-new-target": "^7.16.7", + "@babel/plugin-transform-object-super": "^7.16.7", + "@babel/plugin-transform-parameters": "^7.16.7", + "@babel/plugin-transform-property-literals": "^7.16.7", + "@babel/plugin-transform-regenerator": "^7.16.7", + "@babel/plugin-transform-reserved-words": "^7.16.7", + "@babel/plugin-transform-shorthand-properties": "^7.16.7", + "@babel/plugin-transform-spread": "^7.16.7", + "@babel/plugin-transform-sticky-regex": "^7.16.7", + "@babel/plugin-transform-template-literals": "^7.16.7", + "@babel/plugin-transform-typeof-symbol": "^7.16.7", + "@babel/plugin-transform-unicode-escapes": "^7.16.7", + "@babel/plugin-transform-unicode-regex": "^7.16.7", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.16.8", + "babel-plugin-polyfill-corejs2": "^0.3.0", + "babel-plugin-polyfill-corejs3": "^0.5.0", + "babel-plugin-polyfill-regenerator": "^0.3.0", + "core-js-compat": "^3.20.2", "semver": "^6.3.0" }, "dependencies": { @@ -1158,9 +1114,9 @@ } }, "@babel/preset-modules": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.4.tgz", - "integrity": "sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==", + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", + "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", @@ -1171,92 +1127,76 @@ } }, "@babel/runtime": { - "version": "7.14.6", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.6.tgz", - "integrity": "sha512-/PCB2uJ7oM44tz8YhC4Z/6PeOKXp4K588f+5M3clr1M4zbqztlo0XEfJ2LEzj/FgwfgGcIdl8n7YYjTCI0BYwg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.7.tgz", + "integrity": "sha512-9E9FJowqAsytyOY6LG+1KuueckRL+aQW+mKvXRXnuFGyRAyepJPmEo9vgMfXUA6O9u3IeEdv9MAkppFcaQwogQ==", "dev": true, "requires": { "regenerator-runtime": "^0.13.4" }, "dependencies": { "regenerator-runtime": { - "version": "0.13.7", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", - "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==", + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", "dev": true } } }, "@babel/runtime-corejs3": { - "version": "7.14.7", - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.14.7.tgz", - "integrity": "sha512-Wvzcw4mBYbTagyBVZpAJWI06auSIj033T/yNE0Zn1xcup83MieCddZA7ls3kme17L4NOGBrQ09Q+nKB41RLWBA==", + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.16.8.tgz", + "integrity": "sha512-3fKhuICS1lMz0plI5ktOE/yEtBRMVxplzRkdn6mJQ197XiY0JnrzYV0+Mxozq3JZ8SBV9Ecurmw1XsGbwOf+Sg==", "dev": true, "requires": { - "core-js-pure": "^3.15.0", + "core-js-pure": "^3.20.2", "regenerator-runtime": "^0.13.4" }, "dependencies": { "regenerator-runtime": { - "version": "0.13.7", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", - "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==", + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", "dev": true } } }, "@babel/template": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.14.5.tgz", - "integrity": "sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", + "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", "dev": true, "requires": { - "@babel/code-frame": "^7.14.5", - "@babel/parser": "^7.14.5", - "@babel/types": "^7.14.5" + "@babel/code-frame": "^7.16.7", + "@babel/parser": "^7.16.7", + "@babel/types": "^7.16.7" } }, "@babel/traverse": { - "version": "7.14.7", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.7.tgz", - "integrity": "sha512-9vDr5NzHu27wgwejuKL7kIOm4bwEtaPQ4Z6cpCmjSuaRqpH/7xc4qcGEscwMqlkwgcXl6MvqoAjZkQ24uSdIZQ==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.14.5", - "@babel/generator": "^7.14.5", - "@babel/helper-function-name": "^7.14.5", - "@babel/helper-hoist-variables": "^7.14.5", - "@babel/helper-split-export-declaration": "^7.14.5", - "@babel/parser": "^7.14.7", - "@babel/types": "^7.14.5", + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.8.tgz", + "integrity": "sha512-xe+H7JlvKsDQwXRsBhSnq1/+9c+LlQcCK3Tn/l5sbx02HYns/cn7ibp9+RV1sIUqu7hKg91NWsgHurO9dowITQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.16.8", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/parser": "^7.16.8", + "@babel/types": "^7.16.8", "debug": "^4.1.0", "globals": "^11.1.0" - }, - "dependencies": { - "debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } } }, "@babel/types": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", - "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.8.tgz", + "integrity": "sha512-smN2DQc5s4M7fntyjGtyIPbRJv6wW4rU/94fmYJ7PKQuZkC0qGMHXJbg6sNGt12JmVr4k5YaptI/XtiLJBnmIg==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.14.5", + "@babel/helper-validator-identifier": "^7.16.7", "to-fast-properties": "^2.0.0" } }, @@ -1353,16 +1293,16 @@ } }, "@identity.com/did-io-driver-sol": { - "version": "file:../sol-did/drivers/did-io", + "version": "file:../sol-did-refresh/drivers/did-io", "requires": { + "@digitalbazaar/did-io": "^1.1.0", + "@digitalbazaar/ed25519-verification-key-2018": "^3.1.1", "@identity.com/sol-did-client": "^1.0.0-beta", - "@solana/web3.js": "^1.31.0" + "@solana/web3.js": "^1.21.0" }, "dependencies": { "101": { "version": "1.6.3", - "resolved": "https://registry.npmjs.org/101/-/101-1.6.3.tgz", - "integrity": "sha512-4dmQ45yY0Dx24Qxp+zAsNLlMF6tteCyfVzgbulvSyC7tCyd3V8sW76sS0tHq8NpcbXfWTKasfyfzU1Kd86oKzw==", "requires": { "clone": "^1.0.2", "deep-eql": "^0.1.3", @@ -1371,21 +1311,15 @@ }, "@babel/code-frame": { "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", - "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", "requires": { "@babel/highlight": "^7.12.13" } }, "@babel/compat-data": { - "version": "7.13.15", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.13.15.tgz", - "integrity": "sha512-ltnibHKR1VnrU4ymHyQ/CXtNXI6yZC0oJThyW78Hft8XndANwi+9H+UIklBDraIjFEJzw8wmcM427oDd9KS5wA==" + "version": "7.13.15" }, "@babel/core": { "version": "7.13.15", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.13.15.tgz", - "integrity": "sha512-6GXmNYeNjS2Uz+uls5jalOemgIhnTMeaXo+yBUA72kC2uX/8VW6XyhVIo2L8/q0goKQA3EVKx0KOQpVKSeWadQ==", "requires": { "@babel/code-frame": "^7.12.13", "@babel/generator": "^7.13.9", @@ -1405,16 +1339,12 @@ }, "dependencies": { "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + "version": "0.5.7" } } }, "@babel/generator": { "version": "7.13.9", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.13.9.tgz", - "integrity": "sha512-mHOOmY0Axl/JCTkxTU6Lf5sWOg/v8nUa+Xkt4zMTftX0wqmb6Sh7J8gvcehBw7q0AhrhAR+FDacKjCZ2X8K+Sw==", "requires": { "@babel/types": "^7.13.0", "jsesc": "^2.5.1", @@ -1422,24 +1352,18 @@ }, "dependencies": { "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + "version": "0.5.7" } } }, "@babel/helper-annotate-as-pure": { "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.13.tgz", - "integrity": "sha512-7YXfX5wQ5aYM/BOlbSccHDbuXXFPxeoUmfWtz8le2yTkTZc+BxsiEnENFoi2SlmA8ewDkG2LgIMIVzzn2h8kfw==", "requires": { "@babel/types": "^7.12.13" } }, "@babel/helper-builder-binary-assignment-operator-visitor": { "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.12.13.tgz", - "integrity": "sha512-CZOv9tGphhDRlVjVkAgm8Nhklm9RzSmWpX2my+t7Ua/KT616pEzXsQCjinzvkRvHWJ9itO4f296efroX23XCMA==", "requires": { "@babel/helper-explode-assignable-expression": "^7.12.13", "@babel/types": "^7.12.13" @@ -1447,8 +1371,6 @@ }, "@babel/helper-compilation-targets": { "version": "7.13.13", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.13.tgz", - "integrity": "sha512-q1kcdHNZehBwD9jYPh3WyXcsFERi39X4I59I3NadciWtNDyZ6x+GboOxncFK0kXlKIv6BJm5acncehXWUjWQMQ==", "requires": { "@babel/compat-data": "^7.13.12", "@babel/helper-validator-option": "^7.12.17", @@ -1458,8 +1380,6 @@ }, "@babel/helper-create-class-features-plugin": { "version": "7.13.11", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.13.11.tgz", - "integrity": "sha512-ays0I7XYq9xbjCSvT+EvysLgfc3tOkwCULHjrnscGT3A9qD4sk3wXnJ3of0MAWsWGjdinFvajHU2smYuqXKMrw==", "requires": { "@babel/helper-function-name": "^7.12.13", "@babel/helper-member-expression-to-functions": "^7.13.0", @@ -1470,8 +1390,6 @@ }, "@babel/helper-create-regexp-features-plugin": { "version": "7.12.17", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.17.tgz", - "integrity": "sha512-p2VGmBu9oefLZ2nQpgnEnG0ZlRPvL8gAGvPUMQwUdaE8k49rOMuZpOwdQoy5qJf6K8jL3bcAMhVUlHAjIgJHUg==", "requires": { "@babel/helper-annotate-as-pure": "^7.12.13", "regexpu-core": "^4.7.1" @@ -1479,8 +1397,6 @@ }, "@babel/helper-define-polyfill-provider": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.0.tgz", - "integrity": "sha512-JT8tHuFjKBo8NnaUbblz7mIu1nnvUDiHVjXXkulZULyidvo/7P6TY7+YqpV37IfF+KUFxmlK04elKtGKXaiVgw==", "requires": { "@babel/helper-compilation-targets": "^7.13.0", "@babel/helper-module-imports": "^7.12.13", @@ -1494,16 +1410,12 @@ }, "@babel/helper-explode-assignable-expression": { "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.13.0.tgz", - "integrity": "sha512-qS0peLTDP8kOisG1blKbaoBg/o9OSa1qoumMjTK5pM+KDTtpxpsiubnCGP34vK8BXGcb2M9eigwgvoJryrzwWA==", "requires": { "@babel/types": "^7.13.0" } }, "@babel/helper-function-name": { "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz", - "integrity": "sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA==", "requires": { "@babel/helper-get-function-arity": "^7.12.13", "@babel/template": "^7.12.13", @@ -1512,16 +1424,12 @@ }, "@babel/helper-get-function-arity": { "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz", - "integrity": "sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg==", "requires": { "@babel/types": "^7.12.13" } }, "@babel/helper-hoist-variables": { "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.13.0.tgz", - "integrity": "sha512-0kBzvXiIKfsCA0y6cFEIJf4OdzfpRuNk4+YTeHZpGGc666SATFKTz6sRncwFnQk7/ugJ4dSrCj6iJuvW4Qwr2g==", "requires": { "@babel/traverse": "^7.13.0", "@babel/types": "^7.13.0" @@ -1529,24 +1437,18 @@ }, "@babel/helper-member-expression-to-functions": { "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.12.tgz", - "integrity": "sha512-48ql1CLL59aKbU94Y88Xgb2VFy7a95ykGRbJJaaVv+LX5U8wFpLfiGXJJGUozsmA1oEh/o5Bp60Voq7ACyA/Sw==", "requires": { "@babel/types": "^7.13.12" } }, "@babel/helper-module-imports": { "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.13.12.tgz", - "integrity": "sha512-4cVvR2/1B693IuOvSI20xqqa/+bl7lqAMR59R4iu39R9aOX8/JoYY1sFaNvUMyMBGnHdwvJgUrzNLoUZxXypxA==", "requires": { "@babel/types": "^7.13.12" } }, "@babel/helper-module-transforms": { "version": "7.13.14", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.13.14.tgz", - "integrity": "sha512-QuU/OJ0iAOSIatyVZmfqB0lbkVP0kDRiKj34xy+QNsnVZi/PA6BoSoreeqnxxa9EHFAIL0R9XOaAR/G9WlIy5g==", "requires": { "@babel/helper-module-imports": "^7.13.12", "@babel/helper-replace-supers": "^7.13.12", @@ -1560,21 +1462,15 @@ }, "@babel/helper-optimise-call-expression": { "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz", - "integrity": "sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA==", "requires": { "@babel/types": "^7.12.13" } }, "@babel/helper-plugin-utils": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.13.0.tgz", - "integrity": "sha512-ZPafIPSwzUlAoWT8DKs1W2VyF2gOWthGd5NGFMsBcMMol+ZhK+EQY/e6V96poa6PA/Bh+C9plWN0hXO1uB8AfQ==" + "version": "7.13.0" }, "@babel/helper-remap-async-to-generator": { "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.13.0.tgz", - "integrity": "sha512-pUQpFBE9JvC9lrQbpX0TmeNIy5s7GnZjna2lhhcHC7DzgBs6fWn722Y5cfwgrtrqc7NAJwMvOa0mKhq6XaE4jg==", "requires": { "@babel/helper-annotate-as-pure": "^7.12.13", "@babel/helper-wrap-function": "^7.13.0", @@ -1583,8 +1479,6 @@ }, "@babel/helper-replace-supers": { "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.13.12.tgz", - "integrity": "sha512-Gz1eiX+4yDO8mT+heB94aLVNCL+rbuT2xy4YfyNqu8F+OI6vMvJK891qGBTqL9Uc8wxEvRW92Id6G7sDen3fFw==", "requires": { "@babel/helper-member-expression-to-functions": "^7.13.12", "@babel/helper-optimise-call-expression": "^7.12.13", @@ -1594,42 +1488,30 @@ }, "@babel/helper-simple-access": { "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.13.12.tgz", - "integrity": "sha512-7FEjbrx5SL9cWvXioDbnlYTppcZGuCY6ow3/D5vMggb2Ywgu4dMrpTJX0JdQAIcRRUElOIxF3yEooa9gUb9ZbA==", "requires": { "@babel/types": "^7.13.12" } }, "@babel/helper-skip-transparent-expression-wrappers": { "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz", - "integrity": "sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==", "requires": { "@babel/types": "^7.12.1" } }, "@babel/helper-split-export-declaration": { "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz", - "integrity": "sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg==", "requires": { "@babel/types": "^7.12.13" } }, "@babel/helper-validator-identifier": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", - "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==" + "version": "7.12.11" }, "@babel/helper-validator-option": { - "version": "7.12.17", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz", - "integrity": "sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw==" + "version": "7.12.17" }, "@babel/helper-wrap-function": { "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.13.0.tgz", - "integrity": "sha512-1UX9F7K3BS42fI6qd2A4BjKzgGjToscyZTdp1DjknHLCIvpgne6918io+aL5LXFcER/8QWiwpoY902pVEqgTXA==", "requires": { "@babel/helper-function-name": "^7.12.13", "@babel/template": "^7.12.13", @@ -1639,8 +1521,6 @@ }, "@babel/helpers": { "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.13.10.tgz", - "integrity": "sha512-4VO883+MWPDUVRF3PhiLBUFHoX/bsLTGFpFK/HqvvfBZz2D57u9XzPVNFVBTc0PW/CWR9BXTOKt8NF4DInUHcQ==", "requires": { "@babel/template": "^7.12.13", "@babel/traverse": "^7.13.0", @@ -1649,8 +1529,6 @@ }, "@babel/highlight": { "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.10.tgz", - "integrity": "sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg==", "requires": { "@babel/helper-validator-identifier": "^7.12.11", "chalk": "^2.0.0", @@ -1659,16 +1537,12 @@ "dependencies": { "ansi-styles": { "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "requires": { "color-convert": "^1.9.0" } }, "chalk": { "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -1677,21 +1551,15 @@ }, "color-convert": { "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "requires": { "color-name": "1.1.3" } }, "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + "version": "1.1.3" }, "supports-color": { "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "requires": { "has-flag": "^3.0.0" } @@ -1699,14 +1567,10 @@ } }, "@babel/parser": { - "version": "7.13.15", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.13.15.tgz", - "integrity": "sha512-b9COtcAlVEQljy/9fbcMHpG+UIW9ReF+gpaxDHTlZd0c6/UU9ng8zdySAW9sRTzpvcdCHn6bUcbuYUgGzLAWVQ==" + "version": "7.13.15" }, "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.13.12.tgz", - "integrity": "sha512-d0u3zWKcoZf379fOeJdr1a5WPDny4aOFZ6hlfKivgK0LY7ZxNfoaHL2fWwdGtHyVvra38FC+HVYkO+byfSA8AQ==", "requires": { "@babel/helper-plugin-utils": "^7.13.0", "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", @@ -1715,8 +1579,6 @@ }, "@babel/plugin-proposal-async-generator-functions": { "version": "7.13.15", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.13.15.tgz", - "integrity": "sha512-VapibkWzFeoa6ubXy/NgV5U2U4MVnUlvnx6wo1XhlsaTrLYWE0UFpDQsVrmn22q5CzeloqJ8gEMHSKxuee6ZdA==", "requires": { "@babel/helper-plugin-utils": "^7.13.0", "@babel/helper-remap-async-to-generator": "^7.13.0", @@ -1725,8 +1587,6 @@ }, "@babel/plugin-proposal-class-properties": { "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.13.0.tgz", - "integrity": "sha512-KnTDjFNC1g+45ka0myZNvSBFLhNCLN+GeGYLDEA8Oq7MZ6yMgfLoIRh86GRT0FjtJhZw8JyUskP9uvj5pHM9Zg==", "requires": { "@babel/helper-create-class-features-plugin": "^7.13.0", "@babel/helper-plugin-utils": "^7.13.0" @@ -1734,8 +1594,6 @@ }, "@babel/plugin-proposal-dynamic-import": { "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.13.8.tgz", - "integrity": "sha512-ONWKj0H6+wIRCkZi9zSbZtE/r73uOhMVHh256ys0UzfM7I3d4n+spZNWjOnJv2gzopumP2Wxi186vI8N0Y2JyQ==", "requires": { "@babel/helper-plugin-utils": "^7.13.0", "@babel/plugin-syntax-dynamic-import": "^7.8.3" @@ -1743,8 +1601,6 @@ }, "@babel/plugin-proposal-export-namespace-from": { "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.13.tgz", - "integrity": "sha512-INAgtFo4OnLN3Y/j0VwAgw3HDXcDtX+C/erMvWzuV9v71r7urb6iyMXu7eM9IgLr1ElLlOkaHjJ0SbCmdOQ3Iw==", "requires": { "@babel/helper-plugin-utils": "^7.12.13", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" @@ -1752,8 +1608,6 @@ }, "@babel/plugin-proposal-json-strings": { "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.13.8.tgz", - "integrity": "sha512-w4zOPKUFPX1mgvTmL/fcEqy34hrQ1CRcGxdphBc6snDnnqJ47EZDIyop6IwXzAC8G916hsIuXB2ZMBCExC5k7Q==", "requires": { "@babel/helper-plugin-utils": "^7.13.0", "@babel/plugin-syntax-json-strings": "^7.8.3" @@ -1761,8 +1615,6 @@ }, "@babel/plugin-proposal-logical-assignment-operators": { "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.13.8.tgz", - "integrity": "sha512-aul6znYB4N4HGweImqKn59Su9RS8lbUIqxtXTOcAGtNIDczoEFv+l1EhmX8rUBp3G1jMjKJm8m0jXVp63ZpS4A==", "requires": { "@babel/helper-plugin-utils": "^7.13.0", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" @@ -1770,8 +1622,6 @@ }, "@babel/plugin-proposal-nullish-coalescing-operator": { "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.13.8.tgz", - "integrity": "sha512-iePlDPBn//UhxExyS9KyeYU7RM9WScAG+D3Hhno0PLJebAEpDZMocbDe64eqynhNAnwz/vZoL/q/QB2T1OH39A==", "requires": { "@babel/helper-plugin-utils": "^7.13.0", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" @@ -1779,8 +1629,6 @@ }, "@babel/plugin-proposal-numeric-separator": { "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.13.tgz", - "integrity": "sha512-O1jFia9R8BUCl3ZGB7eitaAPu62TXJRHn7rh+ojNERCFyqRwJMTmhz+tJ+k0CwI6CLjX/ee4qW74FSqlq9I35w==", "requires": { "@babel/helper-plugin-utils": "^7.12.13", "@babel/plugin-syntax-numeric-separator": "^7.10.4" @@ -1788,8 +1636,6 @@ }, "@babel/plugin-proposal-object-rest-spread": { "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.13.8.tgz", - "integrity": "sha512-DhB2EuB1Ih7S3/IRX5AFVgZ16k3EzfRbq97CxAVI1KSYcW+lexV8VZb7G7L8zuPVSdQMRn0kiBpf/Yzu9ZKH0g==", "requires": { "@babel/compat-data": "^7.13.8", "@babel/helper-compilation-targets": "^7.13.8", @@ -1800,8 +1646,6 @@ }, "@babel/plugin-proposal-optional-catch-binding": { "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.13.8.tgz", - "integrity": "sha512-0wS/4DUF1CuTmGo+NiaHfHcVSeSLj5S3e6RivPTg/2k3wOv3jO35tZ6/ZWsQhQMvdgI7CwphjQa/ccarLymHVA==", "requires": { "@babel/helper-plugin-utils": "^7.13.0", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" @@ -1809,8 +1653,6 @@ }, "@babel/plugin-proposal-optional-chaining": { "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.13.12.tgz", - "integrity": "sha512-fcEdKOkIB7Tf4IxrgEVeFC4zeJSTr78no9wTdBuZZbqF64kzllU0ybo2zrzm7gUQfxGhBgq4E39oRs8Zx/RMYQ==", "requires": { "@babel/helper-plugin-utils": "^7.13.0", "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", @@ -1819,8 +1661,6 @@ }, "@babel/plugin-proposal-private-methods": { "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.13.0.tgz", - "integrity": "sha512-MXyyKQd9inhx1kDYPkFRVOBXQ20ES8Pto3T7UZ92xj2mY0EVD8oAVzeyYuVfy/mxAdTSIayOvg+aVzcHV2bn6Q==", "requires": { "@babel/helper-create-class-features-plugin": "^7.13.0", "@babel/helper-plugin-utils": "^7.13.0" @@ -1828,8 +1668,6 @@ }, "@babel/plugin-proposal-unicode-property-regex": { "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.13.tgz", - "integrity": "sha512-XyJmZidNfofEkqFV5VC/bLabGmO5QzenPO/YOfGuEbgU+2sSwMmio3YLb4WtBgcmmdwZHyVyv8on77IUjQ5Gvg==", "requires": { "@babel/helper-create-regexp-features-plugin": "^7.12.13", "@babel/helper-plugin-utils": "^7.12.13" @@ -1843,8 +1681,6 @@ }, "@babel/plugin-syntax-bigint": { "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", - "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", "requires": { "@babel/helper-plugin-utils": "^7.8.0" } @@ -1869,8 +1705,6 @@ }, "@babel/plugin-syntax-import-meta": { "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", "requires": { "@babel/helper-plugin-utils": "^7.10.4" } @@ -1919,24 +1753,18 @@ }, "@babel/plugin-syntax-top-level-await": { "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.13.tgz", - "integrity": "sha512-A81F9pDwyS7yM//KwbCSDqy3Uj4NMIurtplxphWxoYtNPov7cJsDkAFNNyVlIZ3jwGycVsurZ+LtOA8gZ376iQ==", "requires": { "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-arrow-functions": { "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.13.0.tgz", - "integrity": "sha512-96lgJagobeVmazXFaDrbmCLQxBysKu7U6Do3mLsx27gf5Dk85ezysrs2BZUpXD703U/Su1xTBDxxar2oa4jAGg==", "requires": { "@babel/helper-plugin-utils": "^7.13.0" } }, "@babel/plugin-transform-async-to-generator": { "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.13.0.tgz", - "integrity": "sha512-3j6E004Dx0K3eGmhxVJxwwI89CTJrce7lg3UrtFuDAVQ/2+SJ/h/aSFOeE6/n0WB1GsOffsJp6MnPQNQ8nmwhg==", "requires": { "@babel/helper-module-imports": "^7.12.13", "@babel/helper-plugin-utils": "^7.13.0", @@ -1945,24 +1773,18 @@ }, "@babel/plugin-transform-block-scoped-functions": { "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.13.tgz", - "integrity": "sha512-zNyFqbc3kI/fVpqwfqkg6RvBgFpC4J18aKKMmv7KdQ/1GgREapSJAykLMVNwfRGO3BtHj3YQZl8kxCXPcVMVeg==", "requires": { "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-block-scoping": { "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.13.tgz", - "integrity": "sha512-Pxwe0iqWJX4fOOM2kEZeUuAxHMWb9nK+9oh5d11bsLoB0xMg+mkDpt0eYuDZB7ETrY9bbcVlKUGTOGWy7BHsMQ==", "requires": { "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-classes": { "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.13.0.tgz", - "integrity": "sha512-9BtHCPUARyVH1oXGcSJD3YpsqRLROJx5ZNP6tN5vnk17N0SVf9WCtf8Nuh1CFmgByKKAIMstitKduoCmsaDK5g==", "requires": { "@babel/helper-annotate-as-pure": "^7.12.13", "@babel/helper-function-name": "^7.12.13", @@ -1975,24 +1797,18 @@ }, "@babel/plugin-transform-computed-properties": { "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.13.0.tgz", - "integrity": "sha512-RRqTYTeZkZAz8WbieLTvKUEUxZlUTdmL5KGMyZj7FnMfLNKV4+r5549aORG/mgojRmFlQMJDUupwAMiF2Q7OUg==", "requires": { "@babel/helper-plugin-utils": "^7.13.0" } }, "@babel/plugin-transform-destructuring": { "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.13.0.tgz", - "integrity": "sha512-zym5em7tePoNT9s964c0/KU3JPPnuq7VhIxPRefJ4/s82cD+q1mgKfuGRDMCPL0HTyKz4dISuQlCusfgCJ86HA==", "requires": { "@babel/helper-plugin-utils": "^7.13.0" } }, "@babel/plugin-transform-dotall-regex": { "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.13.tgz", - "integrity": "sha512-foDrozE65ZFdUC2OfgeOCrEPTxdB3yjqxpXh8CH+ipd9CHd4s/iq81kcUpyH8ACGNEPdFqbtzfgzbT/ZGlbDeQ==", "requires": { "@babel/helper-create-regexp-features-plugin": "^7.12.13", "@babel/helper-plugin-utils": "^7.12.13" @@ -2000,16 +1816,12 @@ }, "@babel/plugin-transform-duplicate-keys": { "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.13.tgz", - "integrity": "sha512-NfADJiiHdhLBW3pulJlJI2NB0t4cci4WTZ8FtdIuNc2+8pslXdPtRRAEWqUY+m9kNOk2eRYbTAOipAxlrOcwwQ==", "requires": { "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-exponentiation-operator": { "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.13.tgz", - "integrity": "sha512-fbUelkM1apvqez/yYx1/oICVnGo2KM5s63mhGylrmXUxK/IAXSIf87QIxVfZldWf4QsOafY6vV3bX8aMHSvNrA==", "requires": { "@babel/helper-builder-binary-assignment-operator-visitor": "^7.12.13", "@babel/helper-plugin-utils": "^7.12.13" @@ -2017,16 +1829,12 @@ }, "@babel/plugin-transform-for-of": { "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.13.0.tgz", - "integrity": "sha512-IHKT00mwUVYE0zzbkDgNRP6SRzvfGCYsOxIRz8KsiaaHCcT9BWIkO+H9QRJseHBLOGBZkHUdHiqj6r0POsdytg==", "requires": { "@babel/helper-plugin-utils": "^7.13.0" } }, "@babel/plugin-transform-function-name": { "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.13.tgz", - "integrity": "sha512-6K7gZycG0cmIwwF7uMK/ZqeCikCGVBdyP2J5SKNCXO5EOHcqi+z7Jwf8AmyDNcBgxET8DrEtCt/mPKPyAzXyqQ==", "requires": { "@babel/helper-function-name": "^7.12.13", "@babel/helper-plugin-utils": "^7.12.13" @@ -2034,24 +1842,18 @@ }, "@babel/plugin-transform-literals": { "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.13.tgz", - "integrity": "sha512-FW+WPjSR7hiUxMcKqyNjP05tQ2kmBCdpEpZHY1ARm96tGQCCBvXKnpjILtDplUnJ/eHZ0lALLM+d2lMFSpYJrQ==", "requires": { "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-member-expression-literals": { "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.13.tgz", - "integrity": "sha512-kxLkOsg8yir4YeEPHLuO2tXP9R/gTjpuTOjshqSpELUN3ZAg2jfDnKUvzzJxObun38sw3wm4Uu69sX/zA7iRvg==", "requires": { "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-modules-amd": { "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.13.0.tgz", - "integrity": "sha512-EKy/E2NHhY/6Vw5d1k3rgoobftcNUmp9fGjb9XZwQLtTctsRBOTRO7RHHxfIky1ogMN5BxN7p9uMA3SzPfotMQ==", "requires": { "@babel/helper-module-transforms": "^7.13.0", "@babel/helper-plugin-utils": "^7.13.0", @@ -2060,8 +1862,6 @@ }, "@babel/plugin-transform-modules-commonjs": { "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.13.8.tgz", - "integrity": "sha512-9QiOx4MEGglfYZ4XOnU79OHr6vIWUakIj9b4mioN8eQIoEh+pf5p/zEB36JpDFWA12nNMiRf7bfoRvl9Rn79Bw==", "requires": { "@babel/helper-module-transforms": "^7.13.0", "@babel/helper-plugin-utils": "^7.13.0", @@ -2071,8 +1871,6 @@ }, "@babel/plugin-transform-modules-systemjs": { "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.13.8.tgz", - "integrity": "sha512-hwqctPYjhM6cWvVIlOIe27jCIBgHCsdH2xCJVAYQm7V5yTMoilbVMi9f6wKg0rpQAOn6ZG4AOyvCqFF/hUh6+A==", "requires": { "@babel/helper-hoist-variables": "^7.13.0", "@babel/helper-module-transforms": "^7.13.0", @@ -2083,8 +1881,6 @@ }, "@babel/plugin-transform-modules-umd": { "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.13.0.tgz", - "integrity": "sha512-D/ILzAh6uyvkWjKKyFE/W0FzWwasv6vPTSqPcjxFqn6QpX3u8DjRVliq4F2BamO2Wee/om06Vyy+vPkNrd4wxw==", "requires": { "@babel/helper-module-transforms": "^7.13.0", "@babel/helper-plugin-utils": "^7.13.0" @@ -2092,24 +1888,18 @@ }, "@babel/plugin-transform-named-capturing-groups-regex": { "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.13.tgz", - "integrity": "sha512-Xsm8P2hr5hAxyYblrfACXpQKdQbx4m2df9/ZZSQ8MAhsadw06+jW7s9zsSw6he+mJZXRlVMyEnVktJo4zjk1WA==", "requires": { "@babel/helper-create-regexp-features-plugin": "^7.12.13" } }, "@babel/plugin-transform-new-target": { "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.13.tgz", - "integrity": "sha512-/KY2hbLxrG5GTQ9zzZSc3xWiOy379pIETEhbtzwZcw9rvuaVV4Fqy7BYGYOWZnaoXIQYbbJ0ziXLa/sKcGCYEQ==", "requires": { "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-object-super": { "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.13.tgz", - "integrity": "sha512-JzYIcj3XtYspZDV8j9ulnoMPZZnF/Cj0LUxPOjR89BdBVx+zYJI9MdMIlUZjbXDX+6YVeS6I3e8op+qQ3BYBoQ==", "requires": { "@babel/helper-plugin-utils": "^7.12.13", "@babel/helper-replace-supers": "^7.12.13" @@ -2117,48 +1907,36 @@ }, "@babel/plugin-transform-parameters": { "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.13.0.tgz", - "integrity": "sha512-Jt8k/h/mIwE2JFEOb3lURoY5C85ETcYPnbuAJ96zRBzh1XHtQZfs62ChZ6EP22QlC8c7Xqr9q+e1SU5qttwwjw==", "requires": { "@babel/helper-plugin-utils": "^7.13.0" } }, "@babel/plugin-transform-property-literals": { "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.13.tgz", - "integrity": "sha512-nqVigwVan+lR+g8Fj8Exl0UQX2kymtjcWfMOYM1vTYEKujeyv2SkMgazf2qNcK7l4SDiKyTA/nHCPqL4e2zo1A==", "requires": { "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-regenerator": { "version": "7.13.15", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.13.15.tgz", - "integrity": "sha512-Bk9cOLSz8DiurcMETZ8E2YtIVJbFCPGW28DJWUakmyVWtQSm6Wsf0p4B4BfEr/eL2Nkhe/CICiUiMOCi1TPhuQ==", "requires": { "regenerator-transform": "^0.14.2" } }, "@babel/plugin-transform-reserved-words": { "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.13.tgz", - "integrity": "sha512-xhUPzDXxZN1QfiOy/I5tyye+TRz6lA7z6xaT4CLOjPRMVg1ldRf0LHw0TDBpYL4vG78556WuHdyO9oi5UmzZBg==", "requires": { "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-shorthand-properties": { "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.13.tgz", - "integrity": "sha512-xpL49pqPnLtf0tVluuqvzWIgLEhuPpZzvs2yabUHSKRNlN7ScYU7aMlmavOeyXJZKgZKQRBlh8rHbKiJDraTSw==", "requires": { "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-spread": { "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.13.0.tgz", - "integrity": "sha512-V6vkiXijjzYeFmQTr3dBxPtZYLPcUfY34DebOU27jIl2M/Y8Egm52Hw82CSjjPqd54GTlJs5x+CR7HeNr24ckg==", "requires": { "@babel/helper-plugin-utils": "^7.13.0", "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1" @@ -2166,40 +1944,30 @@ }, "@babel/plugin-transform-sticky-regex": { "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.13.tgz", - "integrity": "sha512-Jc3JSaaWT8+fr7GRvQP02fKDsYk4K/lYwWq38r/UGfaxo89ajud321NH28KRQ7xy1Ybc0VUE5Pz8psjNNDUglg==", "requires": { "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-template-literals": { "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.13.0.tgz", - "integrity": "sha512-d67umW6nlfmr1iehCcBv69eSUSySk1EsIS8aTDX4Xo9qajAh6mYtcl4kJrBkGXuxZPEgVr7RVfAvNW6YQkd4Mw==", "requires": { "@babel/helper-plugin-utils": "^7.13.0" } }, "@babel/plugin-transform-typeof-symbol": { "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.13.tgz", - "integrity": "sha512-eKv/LmUJpMnu4npgfvs3LiHhJua5fo/CysENxa45YCQXZwKnGCQKAg87bvoqSW1fFT+HA32l03Qxsm8ouTY3ZQ==", "requires": { "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-unicode-escapes": { "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.13.tgz", - "integrity": "sha512-0bHEkdwJ/sN/ikBHfSmOXPypN/beiGqjo+o4/5K+vxEFNPRPdImhviPakMKG4x96l85emoa0Z6cDflsdBusZbw==", "requires": { "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-unicode-regex": { "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.13.tgz", - "integrity": "sha512-mDRzSNY7/zopwisPZ5kM9XKCfhchqIYwAKRERtEnhYscZB79VRekuRSoYbN0+KVe3y8+q1h6A4svXtP7N+UoCA==", "requires": { "@babel/helper-create-regexp-features-plugin": "^7.12.13", "@babel/helper-plugin-utils": "^7.12.13" @@ -2207,8 +1975,6 @@ }, "@babel/preset-env": { "version": "7.13.15", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.13.15.tgz", - "integrity": "sha512-D4JAPMXcxk69PKe81jRJ21/fP/uYdcTZ3hJDF5QX2HSI9bBxxYw/dumdR6dGumhjxlprHPE4XWoPaqzZUVy2MA==", "requires": { "@babel/compat-data": "^7.13.15", "@babel/helper-compilation-targets": "^7.13.13", @@ -2283,8 +2049,6 @@ "dependencies": { "babel-plugin-polyfill-regenerator": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.2.0.tgz", - "integrity": "sha512-J7vKbCuD2Xi/eEHxquHN14bXAW9CXtecwuLrOIDJtcZzTaPzV1VdEfoUf9AzcRBMolKUQKM9/GVojeh0hFiqMg==", "requires": { "@babel/helper-define-polyfill-provider": "^0.2.0" } @@ -2293,8 +2057,6 @@ }, "@babel/preset-modules": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.4.tgz", - "integrity": "sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==", "requires": { "@babel/helper-plugin-utils": "^7.0.0", "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", @@ -2305,16 +2067,12 @@ }, "@babel/runtime": { "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.13.10.tgz", - "integrity": "sha512-4QPkjJq6Ns3V/RgpEahRk+AGfL0eO6RHHtTWoNNr5mO49G6B5+X6d6THgWEAvTrznU5xYpbAlVKRYcsCgh/Akw==", "requires": { "regenerator-runtime": "^0.13.4" } }, "@babel/runtime-corejs3": { "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.13.10.tgz", - "integrity": "sha512-x/XYVQ1h684pp1mJwOV4CyvqZXqbc8CMsMGUnAbuc82ZCdv1U63w5RSUzgDSXQHG5Rps/kiksH6g2D5BuaKyXg==", "requires": { "core-js-pure": "^3.0.0", "regenerator-runtime": "^0.13.4" @@ -2322,8 +2080,6 @@ }, "@babel/template": { "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", - "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", "requires": { "@babel/code-frame": "^7.12.13", "@babel/parser": "^7.12.13", @@ -2332,8 +2088,6 @@ }, "@babel/traverse": { "version": "7.13.15", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.13.15.tgz", - "integrity": "sha512-/mpZMNvj6bce59Qzl09fHEs8Bt8NnpEDQYleHUPZQ3wXUMvXi+HJPLars68oAbmp839fGoOkv2pSL2z9ajCIaQ==", "requires": { "@babel/code-frame": "^7.12.13", "@babel/generator": "^7.13.9", @@ -2347,8 +2101,6 @@ }, "@babel/types": { "version": "7.13.14", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.14.tgz", - "integrity": "sha512-A2aa3QTkWoyqsZZFl56MLUsfmh7O0gN41IPvXAE/++8ojpbz12SszD7JEGYVdn4f9Kt4amIei07swF1h4AqmmQ==", "requires": { "@babel/helper-validator-identifier": "^7.12.11", "lodash": "^4.17.19", @@ -2356,9 +2108,7 @@ } }, "@bcoe/v8-coverage": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==" + "version": "0.2.3" }, "@cnakazawa/watch": { "version": "1.0.4", @@ -2376,8 +2126,6 @@ }, "@digitalbazaar/did-method-key": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@digitalbazaar/did-method-key/-/did-method-key-2.0.0.tgz", - "integrity": "sha512-540CsZUesyRxku72Dkl7BC/h26iFko/X+NXx1D2KQpi8cSgb6gs1PqvXEAUThszGq1y2p/6ByDKYAJhlaAG8VQ==", "requires": { "@digitalbazaar/did-io": "^1.0.0", "@digitalbazaar/ed25519-verification-key-2020": "^3.0.0", @@ -2386,10 +2134,17 @@ "esm": "^3.2.25" } }, + "@digitalbazaar/ed25519-verification-key-2018": { + "version": "3.1.1", + "requires": { + "@stablelib/ed25519": "^1.0.1", + "base58-universal": "^1.0.0", + "crypto-ld": "^5.0.0", + "esm": "^3.2.25" + } + }, "@digitalbazaar/ed25519-verification-key-2020": { "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@digitalbazaar/ed25519-verification-key-2020/-/ed25519-verification-key-2020-3.2.0.tgz", - "integrity": "sha512-A+17sRJ+rRNuN6yG0zZMucbVUpxUkBRLTb503caoJv0GB5853HXSaZbl83kKl9LCh02ExbQWxD6o/aqeR012uA==", "requires": { "@stablelib/ed25519": "^1.0.1", "base58-universal": "^1.0.0", @@ -2417,8 +2172,6 @@ }, "@digitalbazaar/x25519-key-agreement-key-2020": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@digitalbazaar/x25519-key-agreement-key-2020/-/x25519-key-agreement-key-2020-2.0.0.tgz", - "integrity": "sha512-VI39m0nvQlOXi4Q3w+2YFj7XvWN145KNoZMgEWFOaA/PaIjswniKSgbY98sHtMGfN/JCqQlVeYnCMuheP5H0WQ==", "requires": { "base58-universal": "^1.0.0", "crypto-ld": "^5.0.0", @@ -2427,27 +2180,8 @@ "tweetnacl": "^1.0.3" } }, - "@ethersproject/bytes": { - "version": "5.5.0", - "requires": { - "@ethersproject/logger": "^5.5.0" - } - }, - "@ethersproject/logger": { - "version": "5.5.0" - }, - "@ethersproject/sha2": { - "version": "5.5.0", - "requires": { - "@ethersproject/bytes": "^5.5.0", - "@ethersproject/logger": "^5.5.0", - "hash.js": "1.1.7" - } - }, "@identity.com/sol-did-client": { "version": "1.0.0-beta", - "resolved": "https://registry.npmjs.org/@identity.com/sol-did-client/-/sol-did-client-1.0.0-beta.tgz", - "integrity": "sha512-uzIo8B5ScUTnr4SAJrxruLb+yu8EtJUvNHaftYBfoJ5RYKZ0e+5kjpVuVlR66yoycOacjNF1o4c/MVzvGMG86g==", "requires": { "@solana/web3.js": "^1.21.0", "bn.js": "^4.12.0", @@ -2458,34 +2192,12 @@ }, "dependencies": { "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - }, - "borsh": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/borsh/-/borsh-0.3.1.tgz", - "integrity": "sha512-gJoSTnhwLxN/i2+15Y7uprU8h3CKI+Co4YKZKvrGYUy0FwHWM20x5Sx7eU8Xv4HQqV+7rb4r3P7K1cBIQe3q8A==", - "requires": { - "@types/bn.js": "^4.11.5", - "bn.js": "^5.0.0", - "bs58": "^4.0.0", - "text-encoding-utf-8": "^1.0.2" - }, - "dependencies": { - "bn.js": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", - "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==" - } - } + "version": "4.12.0" } } }, "@istanbuljs/load-nyc-config": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", "requires": { "camelcase": "^5.3.1", "find-up": "^4.1.0", @@ -2495,14 +2207,10 @@ } }, "@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==" + "version": "0.1.3" }, "@jest/console": { "version": "25.5.0", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-25.5.0.tgz", - "integrity": "sha512-T48kZa6MK1Y6k4b89sexwmSF4YLeZS/Udqg3Jj3jG/cHH+N/sLFCEoXEDMOKugJQ9FxPN1osxIknvKkxt6MKyw==", "requires": { "@jest/types": "^25.5.0", "chalk": "^3.0.0", @@ -2513,8 +2221,6 @@ }, "@jest/core": { "version": "25.5.4", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-25.5.4.tgz", - "integrity": "sha512-3uSo7laYxF00Dg/DMgbn4xMJKmDdWvZnf89n8Xj/5/AeQ2dOQmn6b6Hkj/MleyzZWXpwv+WSdYWl4cLsy2JsoA==", "requires": { "@jest/console": "^25.5.0", "@jest/reporters": "^25.5.1", @@ -2548,8 +2254,6 @@ }, "@jest/environment": { "version": "25.5.0", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-25.5.0.tgz", - "integrity": "sha512-U2VXPEqL07E/V7pSZMSQCvV5Ea4lqOlT+0ZFijl/i316cRMHvZ4qC+jBdryd+lmRetjQo0YIQr6cVPNxxK87mA==", "requires": { "@jest/fake-timers": "^25.5.0", "@jest/types": "^25.5.0", @@ -2558,8 +2262,6 @@ }, "@jest/fake-timers": { "version": "25.5.0", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-25.5.0.tgz", - "integrity": "sha512-9y2+uGnESw/oyOI3eww9yaxdZyHq7XvprfP/eeoCsjqKYts2yRlsHS/SgjPDV8FyMfn2nbMy8YzUk6nyvdLOpQ==", "requires": { "@jest/types": "^25.5.0", "jest-message-util": "^25.5.0", @@ -2570,8 +2272,6 @@ }, "@jest/globals": { "version": "25.5.2", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-25.5.2.tgz", - "integrity": "sha512-AgAS/Ny7Q2RCIj5kZ+0MuKM1wbF0WMLxbCVl/GOMoCNbODRdJ541IxJ98xnZdVSZXivKpJlNPIWa3QmY0l4CXA==", "requires": { "@jest/environment": "^25.5.0", "@jest/types": "^25.5.0", @@ -2580,8 +2280,6 @@ }, "@jest/reporters": { "version": "25.5.1", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-25.5.1.tgz", - "integrity": "sha512-3jbd8pPDTuhYJ7vqiHXbSwTJQNavczPs+f1kRprRDxETeE3u6srJ+f0NPuwvOmk+lmunZzPkYWIFZDLHQPkviw==", "requires": { "@bcoe/v8-coverage": "^0.2.3", "@jest/console": "^25.5.0", @@ -2612,8 +2310,6 @@ }, "@jest/source-map": { "version": "25.5.0", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-25.5.0.tgz", - "integrity": "sha512-eIGx0xN12yVpMcPaVpjXPnn3N30QGJCJQSkEDUt9x1fI1Gdvb07Ml6K5iN2hG7NmMP6FDmtPEssE3z6doOYUwQ==", "requires": { "callsites": "^3.0.0", "graceful-fs": "^4.2.4", @@ -2622,8 +2318,6 @@ }, "@jest/test-result": { "version": "25.5.0", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-25.5.0.tgz", - "integrity": "sha512-oV+hPJgXN7IQf/fHWkcS99y0smKLU2czLBJ9WA0jHITLst58HpQMtzSYxzaBvYc6U5U6jfoMthqsUlUlbRXs0A==", "requires": { "@jest/console": "^25.5.0", "@jest/types": "^25.5.0", @@ -2633,8 +2327,6 @@ }, "@jest/test-sequencer": { "version": "25.5.4", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-25.5.4.tgz", - "integrity": "sha512-pTJGEkSeg1EkCO2YWq6hbFvKNXk8ejqlxiOg1jBNLnWrgXOkdY6UmqZpwGFXNnRt9B8nO1uWMzLLZ4eCmhkPNA==", "requires": { "@jest/test-result": "^25.5.0", "graceful-fs": "^4.2.4", @@ -2645,8 +2337,6 @@ }, "@jest/transform": { "version": "25.5.1", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-25.5.1.tgz", - "integrity": "sha512-Y8CEoVwXb4QwA6Y/9uDkn0Xfz0finGkieuV0xkdF9UtZGJeLukD5nLkaVrVsODB1ojRWlaoD0AJZpVHCSnJEvg==", "requires": { "@babel/core": "^7.1.0", "@jest/types": "^25.5.0", @@ -2668,8 +2358,6 @@ }, "@jest/types": { "version": "25.5.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-25.5.0.tgz", - "integrity": "sha512-OXD0RgQ86Tu3MazKo8bnrkDRaDXXMGUqd+kTtLtK1Zb7CRzQcaSRPPPV37SvYTdevXEBVxe0HXylEjs8ibkmCw==", "requires": { "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^1.1.1", @@ -2679,8 +2367,6 @@ }, "@rollup/plugin-babel": { "version": "5.3.0", - "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.0.tgz", - "integrity": "sha512-9uIC8HZOnVLrLHxayq/PTzw+uS25E14KPUBh5ktF+18Mjo5yK0ToMMx6epY0uEgkjwJw0aBW4x2horYXh8juWw==", "requires": { "@babel/helper-module-imports": "^7.10.4", "@rollup/pluginutils": "^3.1.0" @@ -2706,8 +2392,6 @@ }, "@rollup/plugin-node-resolve": { "version": "9.0.0", - "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-9.0.0.tgz", - "integrity": "sha512-gPz+utFHLRrd41WMP13Jq5mqqzHL3OXrfj3/MkSyB6UBIcuNt9j60GCbarzMzdf1VHFpOxfQh/ez7wyadLMqkg==", "requires": { "@rollup/pluginutils": "^3.1.0", "@types/resolve": "1.17.1", @@ -2739,16 +2423,12 @@ }, "@sinonjs/commons": { "version": "1.8.3", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", - "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==", "requires": { "type-detect": "4.0.8" }, "dependencies": { "type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==" + "version": "4.0.8" } } }, @@ -2768,22 +2448,33 @@ } }, "@solana/web3.js": { - "version": "1.31.0", + "version": "1.21.0", "requires": { "@babel/runtime": "^7.12.5", - "@ethersproject/sha2": "^5.5.0", "@solana/buffer-layout": "^3.0.0", "bn.js": "^5.0.0", "borsh": "^0.4.0", "bs58": "^4.0.1", "buffer": "6.0.1", - "cross-fetch": "^3.1.4", + "crypto-hash": "^1.2.2", "jayson": "^3.4.4", "js-sha3": "^0.8.0", + "node-fetch": "^2.6.1", "rpc-websockets": "^7.4.2", "secp256k1": "^4.0.2", "superstruct": "^0.14.2", "tweetnacl": "^1.0.0" + }, + "dependencies": { + "borsh": { + "version": "0.4.0", + "requires": { + "@types/bn.js": "^4.11.5", + "bn.js": "^5.0.0", + "bs58": "^4.0.0", + "text-encoding-utf-8": "^1.0.2" + } + } } }, "@stablelib/binary": { @@ -2826,8 +2517,6 @@ }, "@types/babel__core": { "version": "7.1.14", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.14.tgz", - "integrity": "sha512-zGZJzzBUVDo/eV6KgbE0f0ZI7dInEYvo12Rb70uNQDshC3SkRMb67ja0GgRHZgAX3Za6rhaWlvbDO8rrGyAb1g==", "requires": { "@babel/parser": "^7.1.0", "@babel/types": "^7.0.0", @@ -2838,16 +2527,12 @@ }, "@types/babel__generator": { "version": "7.6.2", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.2.tgz", - "integrity": "sha512-MdSJnBjl+bdwkLskZ3NGFp9YcXGx5ggLpQQPqtgakVhsWK0hTtNYhjpZLlWQTviGTvF8at+Bvli3jV7faPdgeQ==", "requires": { "@babel/types": "^7.0.0" } }, "@types/babel__template": { "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.0.tgz", - "integrity": "sha512-NTPErx4/FiPCGScH7foPyr+/1Dkzkni+rHiYHHoTjvwou7AQzJkNeD60A9CXRy+ZEN2B1bggmkTMCDb+Mv5k+A==", "requires": { "@babel/parser": "^7.1.0", "@babel/types": "^7.0.0" @@ -2855,8 +2540,6 @@ }, "@types/babel__traverse": { "version": "7.11.1", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.11.1.tgz", - "integrity": "sha512-Vs0hm0vPahPMYi9tDjtP66llufgO3ST16WXaSTtDGEl9cewAl3AibmxWw6TINOqHPT9z0uABKAYjT9jNSg4npw==", "requires": { "@babel/types": "^7.3.0" } @@ -2869,8 +2552,6 @@ }, "@types/connect": { "version": "3.4.34", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.34.tgz", - "integrity": "sha512-ePPA/JuI+X0vb+gSWlPKOY0NdNAie/rPUqX2GUPpbZwiKTkSPhjXWuee47E4MtE54QVzGCQMQkAL6JhV2E1+cQ==", "requires": { "@types/node": "*" } @@ -2879,14 +2560,10 @@ "version": "1.0.0" }, "@types/estree": { - "version": "0.0.47", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.47.tgz", - "integrity": "sha512-c5ciR06jK8u9BstrmJyO97m+klJrrhCf9u3rLu3DEAJBirxRqSCvDQoYKmxuYwQI5SZChAWu+tq9oVlGRuzPAg==" + "version": "0.0.47" }, "@types/express-serve-static-core": { "version": "4.17.19", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.19.tgz", - "integrity": "sha512-DJOSHzX7pCiSElWaGR8kCprwibCB/3yW6vcT8VG3P0SJjnv19gnWG/AZMfM60Xj/YJIp/YCaDHyvzsFVeniARA==", "requires": { "@types/node": "*", "@types/qs": "*", @@ -2895,16 +2572,12 @@ }, "@types/graceful-fs": { "version": "4.1.5", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz", - "integrity": "sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==", "requires": { "@types/node": "*" } }, "@types/istanbul-lib-coverage": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz", - "integrity": "sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw==" + "version": "2.0.3" }, "@types/istanbul-lib-report": { "version": "3.0.0", @@ -2921,58 +2594,40 @@ }, "@types/jest": { "version": "25.2.3", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-25.2.3.tgz", - "integrity": "sha512-JXc1nK/tXHiDhV55dvfzqtmP4S3sy3T3ouV2tkViZgxY/zeUkcpQcQPGRlgF4KmWzWW5oiWYSZwtCB+2RsE4Fw==", "requires": { "jest-diff": "^25.2.1", "pretty-format": "^25.2.1" } }, "@types/json-schema": { - "version": "7.0.7", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.7.tgz", - "integrity": "sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA==" + "version": "7.0.7" }, "@types/json5": { "version": "0.0.29" }, "@types/lodash": { - "version": "4.14.168", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.168.tgz", - "integrity": "sha512-oVfRvqHV/V6D1yifJbVRU3TMp8OT6o6BG+U9MkwuJ3U8/CsDHvalRpsxBqivn71ztOFZBTfJMvETbqHiaNSj7Q==" + "version": "4.14.168" }, "@types/node": { - "version": "14.14.41", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.41.tgz", - "integrity": "sha512-dueRKfaJL4RTtSa7bWeTK1M+VH+Gns73oCgzvYfHZywRCoPSd8EkXBL0mZ9unPTveBn+D9phZBaxuzpwjWkW0g==" + "version": "14.14.41" }, "@types/normalize-package-data": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz", - "integrity": "sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==" + "version": "2.4.0" }, "@types/parse-json": { "version": "4.0.0" }, "@types/prettier": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-1.19.1.tgz", - "integrity": "sha512-5qOlnZscTn4xxM5MeGXAMOsIOIKIbh9e85zJWfBRVPlRMEVawzoPhINYbRGkBZCI8LxvBe7tJCdWiarA99OZfQ==" + "version": "1.19.1" }, "@types/qs": { - "version": "6.9.6", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.6.tgz", - "integrity": "sha512-0/HnwIfW4ki2D8L8c9GVcG5I72s9jP5GSLVF0VIXDW00kmIpA6O33G7a8n59Tmh7Nz0WUC3rSb7PTY/sdW2JzA==" + "version": "6.9.6" }, "@types/range-parser": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.3.tgz", - "integrity": "sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA==" + "version": "1.2.3" }, "@types/resolve": { "version": "1.17.1", - "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", - "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", "requires": { "@types/node": "*" } @@ -2982,16 +2637,12 @@ }, "@types/yargs": { "version": "15.0.13", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz", - "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==", "requires": { "@types/yargs-parser": "*" } }, "@types/yargs-parser": { - "version": "20.2.0", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-20.2.0.tgz", - "integrity": "sha512-37RSHht+gzzgYeobbG+KWryeAW8J33Nhr69cjTqSYymXVZEN9NbRYWoYlRtDhHKPVT1FyNKwaTPC1NynKZpzRA==" + "version": "20.2.0" }, "@typescript-eslint/eslint-plugin": { "version": "2.34.0", @@ -3003,9 +2654,7 @@ }, "dependencies": { "regexpp": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", - "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==" + "version": "3.1.0" } } }, @@ -3070,29 +2719,21 @@ }, "acorn-globals": { "version": "4.3.4", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.4.tgz", - "integrity": "sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==", "requires": { "acorn": "^6.0.1", "acorn-walk": "^6.0.1" }, "dependencies": { "acorn": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", - "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==" + "version": "6.4.2" } } }, "acorn-jsx": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", - "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==" + "version": "5.3.1" }, "acorn-walk": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.2.0.tgz", - "integrity": "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==" + "version": "6.2.0" }, "ajv": { "version": "6.12.6", @@ -3108,36 +2749,26 @@ }, "ansi-escapes": { "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", "requires": { "type-fest": "^0.21.3" }, "dependencies": { "type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==" + "version": "0.21.3" } } }, "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + "version": "5.0.0" }, "ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "requires": { "color-convert": "^2.0.1" } }, "anymatch": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", "requires": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" @@ -3170,8 +2801,6 @@ }, "array-includes": { "version": "3.1.3", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.3.tgz", - "integrity": "sha512-gcem1KlBU7c9rB+Rq8/3PPKsK2kjqeEBa3bD5kkQo4nYlOHQCJqIJFqBXDEfwaRuYTT4E+FxA9xez7Gf/e3Q7A==", "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", @@ -3185,8 +2814,6 @@ }, "array.prototype.flat": { "version": "1.2.4", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.4.tgz", - "integrity": "sha512-4470Xi3GAPAjZqFcljX2xzckv1qeKPizoNkiS0+O4IoPR2ZNpcjE0pkhdihlDouK+x6QOast26B4Q/O9DJnwSg==", "requires": { "call-bind": "^1.0.0", "define-properties": "^1.1.3", @@ -3195,8 +2822,6 @@ }, "array.prototype.flatmap": { "version": "1.2.4", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.2.4.tgz", - "integrity": "sha512-r9Z0zYoxqHz60vvQbWEdXIEtCwHF0yxaWfno9qzXeNHvfyl3BZqygmGzb84dsubyaXLH4husF+NFgMSdpZhk2Q==", "requires": { "call-bind": "^1.0.0", "define-properties": "^1.1.3", @@ -3206,16 +2831,12 @@ }, "asn1": { "version": "0.2.4", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", - "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", "requires": { "safer-buffer": "~2.1.0" } }, "assert-args": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/assert-args/-/assert-args-1.2.1.tgz", - "integrity": "sha1-QEEDoUUqMv53iYgR5U5ZCoqTc70=", "requires": { "101": "^1.2.0", "compound-subject": "0.0.1", @@ -3227,16 +2848,12 @@ "dependencies": { "debug": { "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "requires": { "ms": "2.0.0" } }, "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + "version": "2.0.0" } } }, @@ -3259,9 +2876,7 @@ "version": "3.0.0" }, "at-least-node": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", - "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==" + "version": "1.0.0" }, "atob": { "version": "2.1.2" @@ -3273,9 +2888,7 @@ "version": "1.11.0" }, "axe-core": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.1.4.tgz", - "integrity": "sha512-Pdgfv6iP0gNx9ejRGa3zE7Xgkj/iclXqLfe7BnatdZz0QnLZ3jrRHUVH8wNSdN68w05Sk3ShGTb3ydktMTooig==" + "version": "4.1.4" }, "axobject-query": { "version": "2.2.0" @@ -3293,8 +2906,6 @@ }, "babel-jest": { "version": "25.5.1", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-25.5.1.tgz", - "integrity": "sha512-9dA9+GmMjIzgPnYtkhBg73gOo/RHqPmLruP3BaGL4KEX3Dwz6pI8auSN8G8+iuEG90+GSswyKvslN+JYSaacaQ==", "requires": { "@jest/transform": "^25.5.1", "@jest/types": "^25.5.0", @@ -3310,9 +2921,7 @@ "version": "0.4.0" }, "babel-plugin-dev-expression": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/babel-plugin-dev-expression/-/babel-plugin-dev-expression-0.2.2.tgz", - "integrity": "sha512-y32lfBif+c2FIh5dwGfcc/IfX5aw/Bru7Du7W2n17sJE/GJGAsmIk5DPW/8JOoeKpXW5evJfJOvRq5xkiS6vng==" + "version": "0.2.2" }, "babel-plugin-dynamic-import-node": { "version": "2.3.3", @@ -3322,8 +2931,6 @@ }, "babel-plugin-istanbul": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz", - "integrity": "sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ==", "requires": { "@babel/helper-plugin-utils": "^7.0.0", "@istanbuljs/load-nyc-config": "^1.0.0", @@ -3334,8 +2941,6 @@ }, "babel-plugin-jest-hoist": { "version": "25.5.0", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-25.5.0.tgz", - "integrity": "sha512-u+/W+WAjMlvoocYGTwthAiQSxDcJAyHpQ6oWlHdFZaaN+Rlk8Q7iiwDPg2lN/FyJtAYnKjFxbn7xus4HCFkg5g==", "requires": { "@babel/template": "^7.3.3", "@babel/types": "^7.3.3", @@ -3352,8 +2957,6 @@ }, "babel-plugin-polyfill-corejs2": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.0.tgz", - "integrity": "sha512-9bNwiR0dS881c5SHnzCmmGlMkJLl0OUZvxrxHo9w/iNoRuqaPjqlvBf4HrovXtQs/au5yKkpcdgfT1cC5PAZwg==", "requires": { "@babel/compat-data": "^7.13.11", "@babel/helper-define-polyfill-provider": "^0.2.0", @@ -3362,8 +2965,6 @@ }, "babel-plugin-polyfill-corejs3": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.2.0.tgz", - "integrity": "sha512-zZyi7p3BCUyzNxLx8KV61zTINkkV65zVkDAFNZmrTCRVhjo1jAS+YLvDJ9Jgd/w2tsAviCwFHReYfxO3Iql8Yg==", "requires": { "@babel/helper-define-polyfill-provider": "^0.2.0", "core-js-compat": "^3.9.1" @@ -3371,16 +2972,12 @@ }, "babel-plugin-polyfill-regenerator": { "version": "0.0.4", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.0.4.tgz", - "integrity": "sha512-+/uCzO9JTYVZVGCpZpVAQkgPGt2zkR0VYiZvJ4aVoCe4ccgpKvNQqcjzAgQzSsjK64Jhc5hvrCR3l0087BevkA==", "requires": { "@babel/helper-define-polyfill-provider": "^0.0.3" }, "dependencies": { "@babel/helper-define-polyfill-provider": { "version": "0.0.3", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.0.3.tgz", - "integrity": "sha512-dULDd/APiP4JowYDAMosecKOi/1v+UId99qhBGiO3myM29KtAVKS/R3x3OJJNBR0FeYB1BcYb2dCwkhqvxWXXQ==", "requires": { "@babel/helper-compilation-targets": "^7.10.4", "@babel/helper-module-imports": "^7.10.4", @@ -3399,8 +2996,6 @@ }, "babel-preset-current-node-syntax": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-0.1.4.tgz", - "integrity": "sha512-5/INNCYhUGqw7VbVjT/hb3ucjgkVHKXY7lX3ZjlN4gm565VyFmJUrJ/h+h16ECVB38R/9SF6aACydpKMLZ/c9w==", "requires": { "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-bigint": "^7.8.3", @@ -3417,8 +3012,6 @@ }, "babel-preset-jest": { "version": "25.5.0", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-25.5.0.tgz", - "integrity": "sha512-8ZczygctQkBU+63DtSOKGh7tFL0CeCuz+1ieud9lJ1WPQ9O6A1a/r+LGn6Y705PA6whHQ3T1XuB/PmpfNYf8Fw==", "requires": { "babel-plugin-jest-hoist": "^25.5.0", "babel-preset-current-node-syntax": "^0.1.2" @@ -3449,8 +3042,6 @@ }, "base-x": { "version": "3.0.8", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.8.tgz", - "integrity": "sha512-Rl/1AWP4J/zRrk54hhlxH4drNxPJXYUaKffODVI53/dAsV4t9fBxyxYKAVPU1XBHxYwOWP9h9H0hM2MVw4YfJA==", "requires": { "safe-buffer": "^5.0.1" } @@ -3465,14 +3056,10 @@ "version": "1.5.1" }, "base64url": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/base64url/-/base64url-3.0.1.tgz", - "integrity": "sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A==" + "version": "3.0.1" }, "base64url-universal": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/base64url-universal/-/base64url-universal-1.1.0.tgz", - "integrity": "sha512-WyftvZqye29YQ10ZnuiBeEj0lk8SN8xHU9hOznkLc85wS1cLTp6RpzlMrHxMPD9nH7S55gsBqMqgGyz93rqmkA==", "requires": { "base64url": "^3.0.0" } @@ -3492,9 +3079,7 @@ "version": "5.2.0" }, "borsh": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/borsh/-/borsh-0.4.0.tgz", - "integrity": "sha512-aX6qtLya3K0AkT66CmYWCCDr77qsE9arV05OmdFpmat9qu8Pg9J5tBUPDztAW5fNh/d/MyVG/OYziP52Ndzx1g==", + "version": "0.3.1", "requires": { "@types/bn.js": "^4.11.5", "bn.js": "^5.0.0", @@ -3511,8 +3096,6 @@ }, "braces": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", "requires": { "fill-range": "^7.0.1" } @@ -3536,8 +3119,6 @@ }, "browserslist": { "version": "4.16.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.4.tgz", - "integrity": "sha512-d7rCxYV8I9kj41RH8UKYnvDYCRENUlHRgyXy/Rhr/1BaeLGfiCptEdFE8MIrvGfWbBFNjVYx76SQWvNX1j+/cQ==", "requires": { "caniuse-lite": "^1.0.30001208", "colorette": "^1.2.2", @@ -3572,14 +3153,10 @@ } }, "buffer-from": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" + "version": "1.1.1" }, "bufferutil": { "version": "4.0.3", - "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.3.tgz", - "integrity": "sha512-yEYTwGndELGvfXsImMBLop58eaGW+YdONi1fNjTINSY98tmMmFijBG6WXgdkfuLNt4imzQNtIE+eBp1PVpMCSw==", "optional": true, "requires": { "node-gyp-build": "^4.2.0" @@ -3616,9 +3193,7 @@ "version": "5.3.1" }, "caniuse-lite": { - "version": "1.0.30001209", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001209.tgz", - "integrity": "sha512-2Ktt4OeRM7EM/JaOZjuLzPYAIqmbwQMNnYbgooT+icoRGrKOyAxA1xhlnotBD1KArRSPsuJp3TdYcZYrL7qNxA==" + "version": "1.0.30001209" }, "capture-exit": { "version": "2.0.0", @@ -3631,8 +3206,6 @@ }, "chalk": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -3658,8 +3231,6 @@ }, "cli-cursor": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", "requires": { "restore-cursor": "^3.1.0" } @@ -3672,8 +3243,6 @@ }, "cliui": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", "requires": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", @@ -3682,8 +3251,6 @@ "dependencies": { "wrap-ansi": { "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", "requires": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -3699,9 +3266,7 @@ "version": "4.6.0" }, "collect-v8-coverage": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", - "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==" + "version": "1.0.1" }, "collection-visit": { "version": "1.0.0", @@ -3712,21 +3277,15 @@ }, "color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "requires": { "color-name": "~1.1.4" } }, "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "version": "1.1.4" }, "colorette": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", - "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==" + "version": "1.2.2" }, "combined-stream": { "version": "1.0.8", @@ -3744,35 +3303,25 @@ "version": "1.3.0" }, "compound-subject": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/compound-subject/-/compound-subject-0.0.1.tgz", - "integrity": "sha1-JxVUaYoVrmCLHfyv0wt7oeqJLEs=" + "version": "0.0.1" }, "concat-map": { "version": "0.0.1" }, "confusing-browser-globals": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.10.tgz", - "integrity": "sha512-gNld/3lySHwuhaVluJUKLePYirM3QNCKzVxqAdhJII9/WXKVX5PURzMVJspS1jTslSqjeuG4KMVTSouit5YPHA==" + "version": "1.0.10" }, "contains-path": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", - "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=" + "version": "0.1.0" }, "convert-source-map": { "version": "1.7.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", - "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", "requires": { "safe-buffer": "~5.1.1" }, "dependencies": { "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "version": "5.1.2" } } }, @@ -3781,24 +3330,18 @@ }, "core-js-compat": { "version": "3.10.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.10.1.tgz", - "integrity": "sha512-ZHQTdTPkqvw2CeHiZC970NNJcnwzT6YIueDMASKt+p3WbZsLXOcoD392SkcWhkC0wBBHhlfhqGKKsNCQUozYtg==", "requires": { "browserslist": "^4.16.3", "semver": "7.0.0" }, "dependencies": { "semver": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", - "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==" + "version": "7.0.0" } } }, "core-js-pure": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.10.1.tgz", - "integrity": "sha512-PeyJH2SE0KuxY5eCGNWA+W+CeDpB6M1PN3S7Am7jSv/Ttuxz2SnWbIiVQOn/TDaGaGtxo8CRWHkXwJscbUHtVw==" + "version": "3.10.1" }, "core-util-is": { "version": "1.0.2" @@ -3813,12 +3356,6 @@ "yaml": "^1.7.2" } }, - "cross-fetch": { - "version": "3.1.4", - "requires": { - "node-fetch": "2.6.1" - } - }, "cross-spawn": { "version": "6.0.5", "requires": { @@ -3834,33 +3371,28 @@ } } }, + "crypto-hash": { + "version": "1.3.0" + }, "crypto-ld": { "version": "5.1.0" }, "cssom": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", - "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==" + "version": "0.4.4" }, "cssstyle": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", - "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", "requires": { "cssom": "~0.3.6" }, "dependencies": { "cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==" + "version": "0.3.8" } } }, "damerau-levenshtein": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.6.tgz", - "integrity": "sha512-JVrozIeElnj3QzfUIt8tB8YMluBJom4Vw9qTPpjGYQ9fYlB3D/rb6OordUxf3xeFB35LKWs0xqcO5U6ySvBtug==" + "version": "1.0.6" }, "dashdash": { "version": "1.14.1", @@ -3870,8 +3402,6 @@ }, "data-urls": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", - "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", "requires": { "abab": "^2.0.0", "whatwg-mimetype": "^2.2.0", @@ -3880,8 +3410,6 @@ }, "debug": { "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", "requires": { "ms": "2.1.2" } @@ -3894,21 +3422,15 @@ }, "deep-eql": { "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-0.1.3.tgz", - "integrity": "sha1-71WKyrjeJSBs1xOQbXTlaTDrafI=", "requires": { "type-detect": "0.1.1" } }, "deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=" + "version": "0.1.3" }, "deepmerge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==" + "version": "4.2.2" }, "defaults": { "version": "1.0.3", @@ -3924,24 +3446,18 @@ }, "define-property": { "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "requires": { "is-descriptor": "^0.1.0" }, "dependencies": { "is-accessor-descriptor": { "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "requires": { "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "requires": { "is-buffer": "^1.1.5" } @@ -3950,16 +3466,12 @@ }, "is-data-descriptor": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "requires": { "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "requires": { "is-buffer": "^1.1.5" } @@ -3968,8 +3480,6 @@ }, "is-descriptor": { "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "requires": { "is-accessor-descriptor": "^0.1.6", "is-data-descriptor": "^0.1.4", @@ -3977,9 +3487,7 @@ } }, "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + "version": "5.1.0" } } }, @@ -3987,24 +3495,16 @@ "version": "1.0.0" }, "detect-newline": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", - "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==" + "version": "3.1.0" }, "did-resolver": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/did-resolver/-/did-resolver-3.1.5.tgz", - "integrity": "sha512-/4lM1vK5osnWVZ2oN9QhlWV5xOwssuLSL1MvueBc8LQWotbD5kM9XQMe7h4GydYpbh3JaWMFkOWwc9jvSZ+qgg==" + "version": "3.1.0" }, "diff-sequences": { - "version": "25.2.6", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-25.2.6.tgz", - "integrity": "sha512-Hq8o7+6GaZeoFjtpgvRBUknSXNeJiCx7V9Fr94ZMljNiCr9n9L8H8aJqgWOQiDDGdyn29fRNcDdRVJ5fdyihfg==" + "version": "25.2.6" }, "doctrine": { "version": "1.5.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", - "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", "requires": { "esutils": "^2.0.2", "isarray": "^1.0.0" @@ -4012,8 +3512,6 @@ }, "domexception": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", - "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", "requires": { "webidl-conversions": "^4.0.2" } @@ -4032,9 +3530,7 @@ } }, "electron-to-chromium": { - "version": "1.3.717", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.717.tgz", - "integrity": "sha512-OfzVPIqD1MkJ7fX+yTl2nKyOE4FReeVfMCzzxQS+Kp43hZYwHwThlGP+EGIZRXJsxCM7dqo8Y65NOX/HP12iXQ==" + "version": "1.3.717" }, "elliptic": { "version": "6.5.4", @@ -4054,9 +3550,7 @@ } }, "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + "version": "8.0.0" }, "end-of-stream": { "version": "1.4.4", @@ -4078,8 +3572,6 @@ }, "es-abstract": { "version": "1.18.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0.tgz", - "integrity": "sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw==", "requires": { "call-bind": "^1.0.2", "es-to-primitive": "^1.2.1", @@ -4124,8 +3616,6 @@ }, "escodegen": { "version": "1.14.3", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", - "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", "requires": { "esprima": "^4.0.1", "estraverse": "^4.2.0", @@ -4177,22 +3667,16 @@ }, "dependencies": { "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" + "version": "4.1.0" }, "ansi-styles": { "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "requires": { "color-convert": "^1.9.0" } }, "chalk": { "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -4201,16 +3685,12 @@ }, "color-convert": { "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "requires": { "color-name": "1.1.3" } }, "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + "version": "1.1.3" }, "doctrine": { "version": "3.0.0", @@ -4226,16 +3706,12 @@ }, "strip-ansi": { "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "requires": { "ansi-regex": "^4.1.0" } }, "supports-color": { "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "requires": { "has-flag": "^3.0.0" } @@ -4256,8 +3732,6 @@ }, "eslint-import-resolver-node": { "version": "0.3.4", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz", - "integrity": "sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA==", "requires": { "debug": "^2.6.9", "resolve": "^1.13.1" @@ -4265,23 +3739,17 @@ "dependencies": { "debug": { "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "requires": { "ms": "2.0.0" } }, "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + "version": "2.0.0" } } }, "eslint-module-utils": { "version": "2.6.0", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz", - "integrity": "sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA==", "requires": { "debug": "^2.6.9", "pkg-dir": "^2.0.0" @@ -4289,64 +3757,46 @@ "dependencies": { "debug": { "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "requires": { "ms": "2.0.0" } }, "find-up": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", "requires": { "locate-path": "^2.0.0" } }, "locate-path": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", "requires": { "p-locate": "^2.0.0", "path-exists": "^3.0.0" } }, "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + "version": "2.0.0" }, "p-limit": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", "requires": { "p-try": "^1.0.0" } }, "p-locate": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", "requires": { "p-limit": "^1.1.0" } }, "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=" + "version": "1.0.0" }, "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + "version": "3.0.0" }, "pkg-dir": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", - "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", "requires": { "find-up": "^2.1.0" } @@ -4361,8 +3811,6 @@ }, "eslint-plugin-import": { "version": "2.22.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.22.1.tgz", - "integrity": "sha512-8K7JjINHOpH64ozkAhpT3sd+FswIZTfMZTjdx052pnWrgRCVfp8op9tbjpAk3DdUeI/Ba4C8OjdC0r90erHEOw==", "requires": { "array-includes": "^3.1.1", "array.prototype.flat": "^1.2.3", @@ -4381,23 +3829,17 @@ "dependencies": { "debug": { "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "requires": { "ms": "2.0.0" } }, "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + "version": "2.0.0" } } }, "eslint-plugin-jsx-a11y": { "version": "6.4.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.4.1.tgz", - "integrity": "sha512-0rGPJBbwHoGNPU73/QCLP/vveMlM1b1Z9PponxO87jfr6tuH5ligXbDT6nHSSzBC8ovX2Z+BQu7Bk5D/Xgq9zg==", "requires": { "@babel/runtime": "^7.11.2", "aria-query": "^4.2.2", @@ -4413,24 +3855,18 @@ }, "dependencies": { "emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" + "version": "9.2.2" } } }, "eslint-plugin-prettier": { "version": "3.4.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.4.0.tgz", - "integrity": "sha512-UDK6rJT6INSfcOo545jiaOwB701uAIt2/dR7WnFQoGCVl1/EMqdANBmwUaqqQ45aXprsTGzSa39LI1PyuRBxxw==", "requires": { "prettier-linter-helpers": "^1.0.0" } }, "eslint-plugin-react": { "version": "7.23.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.23.2.tgz", - "integrity": "sha512-AfjgFQB+nYszudkxRkTFu0UR1zEQig0ArVMPloKhxwlwkzaw/fBiH0QWcBBhZONlXqQC51+nfqFrkn4EzHcGBw==", "requires": { "array-includes": "^3.1.3", "array.prototype.flatmap": "^1.2.4", @@ -4448,16 +3884,12 @@ "dependencies": { "doctrine": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "requires": { "esutils": "^2.0.2" } }, "resolve": { "version": "2.0.0-next.3", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.3.tgz", - "integrity": "sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q==", "requires": { "is-core-module": "^2.2.0", "path-parse": "^1.0.6" @@ -4505,9 +3937,7 @@ }, "dependencies": { "estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==" + "version": "5.2.0" } } }, @@ -4518,16 +3948,12 @@ }, "dependencies": { "estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==" + "version": "5.2.0" } } }, "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" + "version": "4.3.0" }, "estree-walker": { "version": "1.0.1" @@ -4543,8 +3969,6 @@ }, "execa": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", - "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", "requires": { "cross-spawn": "^7.0.0", "get-stream": "^5.0.0", @@ -4559,8 +3983,6 @@ "dependencies": { "cross-spawn": { "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "requires": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -4568,27 +3990,19 @@ } }, "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" + "version": "3.1.1" }, "shebang-command": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "requires": { "shebang-regex": "^3.0.0" } }, "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" + "version": "3.0.0" }, "which": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "requires": { "isexe": "^2.0.0" } @@ -4623,8 +4037,6 @@ }, "expect": { "version": "25.5.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-25.5.0.tgz", - "integrity": "sha512-w7KAXo0+6qqZZhovCaBVPSIqQp7/UTcx4M9uKt2m6pd2VB1voyC8JizLRqeEqud3AAVP02g+hbErDu5gu64tlA==", "requires": { "@jest/types": "^25.5.0", "ansi-styles": "^4.0.0", @@ -4639,8 +4051,6 @@ }, "extend-shallow": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "requires": { "is-extendable": "^0.1.0" } @@ -4712,16 +4122,12 @@ }, "fill-range": { "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "requires": { "to-regex-range": "^5.0.1" } }, "find-cache-dir": { "version": "3.3.1", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz", - "integrity": "sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==", "requires": { "commondir": "^1.0.1", "make-dir": "^3.0.2", @@ -4730,8 +4136,6 @@ }, "find-up": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "requires": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" @@ -4764,8 +4168,6 @@ }, "form-data": { "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", "requires": { "asynckit": "^0.4.0", "combined-stream": "^1.0.6", @@ -4780,8 +4182,6 @@ }, "fs-extra": { "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", "requires": { "at-least-node": "^1.0.0", "graceful-fs": "^4.2.0", @@ -4794,8 +4194,6 @@ }, "fsevents": { "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", "optional": true }, "function-bind": { @@ -4819,22 +4217,16 @@ } }, "get-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==" + "version": "0.1.0" }, "get-prototype-of": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/get-prototype-of/-/get-prototype-of-0.0.0.tgz", - "integrity": "sha1-mHcr0QcW0W3rSzIlFsRp78oorEQ=" + "version": "0.0.0" }, "get-stdin": { "version": "6.0.0" }, "get-stream": { "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", "requires": { "pump": "^3.0.0" } @@ -4850,8 +4242,6 @@ }, "glob": { "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -4877,9 +4267,7 @@ "version": "0.1.2" }, "graceful-fs": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", - "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==" + "version": "4.2.6" }, "growly": { "version": "1.3.0", @@ -4953,8 +4341,6 @@ }, "html-encoding-sniffer": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", - "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", "requires": { "whatwg-encoding": "^1.0.1" } @@ -4974,9 +4360,7 @@ "version": "1.1.1" }, "humanize-duration": { - "version": "3.25.1", - "resolved": "https://registry.npmjs.org/humanize-duration/-/humanize-duration-3.25.1.tgz", - "integrity": "sha512-P+dRo48gpLgc2R9tMRgiDRNULPKCmqFYgguwqOO2C0fjO35TgdURDQDANSR1Nt92iHlbHGMxOTnsB8H8xnMa2Q==" + "version": "3.25.1" }, "iconv-lite": { "version": "0.4.24", @@ -5004,8 +4388,6 @@ }, "import-local": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.2.tgz", - "integrity": "sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA==", "requires": { "pkg-dir": "^4.2.0", "resolve-cwd": "^3.0.0" @@ -5044,8 +4426,6 @@ "dependencies": { "chalk": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -5065,9 +4445,7 @@ "version": "1.4.0" }, "ip-regex": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", - "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=" + "version": "2.1.0" }, "is-accessor-descriptor": { "version": "1.0.0", @@ -5076,9 +4454,7 @@ }, "dependencies": { "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + "version": "6.0.3" } } }, @@ -5086,14 +4462,10 @@ "version": "0.2.1" }, "is-bigint": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.1.tgz", - "integrity": "sha512-J0ELF4yHFxHy0cmSxZuheDOz2luOdVvqjwmEcj8H/L1JHeuEDSDbeRP+Dk9kFVk5RTFzbucJ2Kb9F7ixY2QaCg==" + "version": "1.0.1" }, "is-boolean-object": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.0.tgz", - "integrity": "sha512-a7Uprx8UtD+HWdyYwnD1+ExtTgqQtD2k/1yJgtXP6wnMm8byhkoTZRl+95LLThpzNZJ5aEvi46cdH+ayMFRwmA==", "requires": { "call-bind": "^1.0.0" } @@ -5102,14 +4474,10 @@ "version": "1.1.6" }, "is-callable": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", - "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==" + "version": "1.2.3" }, "is-capitalized": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-capitalized/-/is-capitalized-1.0.0.tgz", - "integrity": "sha1-TIRktNkdPk7rRIid0s2PGwrEwTY=" + "version": "1.0.0" }, "is-ci": { "version": "2.0.0", @@ -5118,14 +4486,10 @@ } }, "is-class": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/is-class/-/is-class-0.0.4.tgz", - "integrity": "sha1-4FdFFwW7NOOePjNZjJOpg3KWtzY=" + "version": "0.0.4" }, "is-core-module": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", - "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==", "requires": { "has": "^1.0.3" } @@ -5137,16 +4501,12 @@ }, "dependencies": { "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + "version": "6.0.3" } } }, "is-date-object": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", - "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==" + "version": "1.0.2" }, "is-descriptor": { "version": "1.0.2", @@ -5157,22 +4517,16 @@ }, "dependencies": { "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + "version": "6.0.3" } } }, "is-docker": { "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", "optional": true }, "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" + "version": "0.1.1" }, "is-extglob": { "version": "2.1.1" @@ -5185,24 +4539,18 @@ }, "is-glob": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", "requires": { "is-extglob": "^2.1.1" } }, "is-interactive": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", - "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==" + "version": "1.0.0" }, "is-module": { "version": "1.0.0" }, "is-negative-zero": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", - "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==" + "version": "2.0.1" }, "is-number": { "version": "3.0.0", @@ -5211,9 +4559,7 @@ } }, "is-number-object": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.4.tgz", - "integrity": "sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw==" + "version": "1.0.4" }, "is-plain-object": { "version": "2.0.4", @@ -5229,27 +4575,19 @@ }, "is-regex": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz", - "integrity": "sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==", "requires": { "call-bind": "^1.0.2", "has-symbols": "^1.0.1" } }, "is-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", - "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==" + "version": "2.0.0" }, "is-string": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", - "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==" + "version": "1.0.5" }, "is-symbol": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", - "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", "requires": { "has-symbols": "^1.0.1" } @@ -5262,8 +4600,6 @@ }, "is-wsl": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", "optional": true, "requires": { "is-docker": "^2.0.0" @@ -5282,14 +4618,10 @@ "version": "0.1.2" }, "istanbul-lib-coverage": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz", - "integrity": "sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==" + "version": "3.0.0" }, "istanbul-lib-instrument": { "version": "4.0.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", - "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", "requires": { "@babel/core": "^7.7.5", "@istanbuljs/schema": "^0.1.2", @@ -5299,8 +4631,6 @@ }, "istanbul-lib-report": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", "requires": { "istanbul-lib-coverage": "^3.0.0", "make-dir": "^3.0.0", @@ -5309,8 +4639,6 @@ }, "istanbul-lib-source-maps": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz", - "integrity": "sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg==", "requires": { "debug": "^4.1.1", "istanbul-lib-coverage": "^3.0.0", @@ -5319,8 +4647,6 @@ }, "istanbul-reports": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.2.tgz", - "integrity": "sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw==", "requires": { "html-escaper": "^2.0.0", "istanbul-lib-report": "^3.0.0" @@ -5328,8 +4654,6 @@ }, "jayson": { "version": "3.4.4", - "resolved": "https://registry.npmjs.org/jayson/-/jayson-3.4.4.tgz", - "integrity": "sha512-fgQflh+Qnhdv9fjxTnpTsa2WUG/dgyeKQzIh5MJ77Qv2sqFyyAZn7mTUYgPjJMFjsKfb4HNsSBh6ktJeeQiAGQ==", "requires": { "@types/connect": "^3.4.33", "@types/express-serve-static-core": "^4.17.9", @@ -5345,16 +4669,12 @@ }, "dependencies": { "@types/node": { - "version": "12.20.10", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.10.tgz", - "integrity": "sha512-TxCmnSSppKBBOzYzPR2BR25YlX5Oay8z2XGwFBInuA/Co0V9xJhLlW4kjbxKtgeNo3NOMbQP1A5Rc03y+XecPw==" + "version": "12.20.10" } } }, "jest": { "version": "25.5.4", - "resolved": "https://registry.npmjs.org/jest/-/jest-25.5.4.tgz", - "integrity": "sha512-hHFJROBTqZahnO+X+PMtT6G2/ztqAZJveGqz//FnWWHurizkD05PQGzRZOhF3XP6z7SJmL+5tCfW8qV06JypwQ==", "requires": { "@jest/core": "^25.5.4", "import-local": "^3.0.2", @@ -5363,8 +4683,6 @@ }, "jest-changed-files": { "version": "25.5.0", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-25.5.0.tgz", - "integrity": "sha512-EOw9QEqapsDT7mKF162m8HFzRPbmP8qJQny6ldVOdOVBz3ACgPm/1nAn5fPQ/NDaYhX/AHkrGwwkCncpAVSXcw==", "requires": { "@jest/types": "^25.5.0", "execa": "^3.2.0", @@ -5373,8 +4691,6 @@ "dependencies": { "cross-spawn": { "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "requires": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -5383,8 +4699,6 @@ }, "execa": { "version": "3.4.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-3.4.0.tgz", - "integrity": "sha512-r9vdGQk4bmCuK1yKQu1KTwcT2zwfWdbdaXfCtAh+5nU/4fSX+JAb7vZGvI5naJrQlvONrEB20jeruESI69530g==", "requires": { "cross-spawn": "^7.0.0", "get-stream": "^5.0.0", @@ -5399,27 +4713,19 @@ } }, "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" + "version": "3.1.1" }, "shebang-command": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "requires": { "shebang-regex": "^3.0.0" } }, "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" + "version": "3.0.0" }, "which": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "requires": { "isexe": "^2.0.0" } @@ -5428,8 +4734,6 @@ }, "jest-cli": { "version": "25.5.4", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-25.5.4.tgz", - "integrity": "sha512-rG8uJkIiOUpnREh1768/N3n27Cm+xPFkSNFO91tgg+8o2rXeVLStz+vkXkGr4UtzH6t1SNbjwoiswd7p4AhHTw==", "requires": { "@jest/core": "^25.5.4", "@jest/test-result": "^25.5.0", @@ -5449,8 +4753,6 @@ }, "jest-config": { "version": "25.5.4", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-25.5.4.tgz", - "integrity": "sha512-SZwR91SwcdK6bz7Gco8qL7YY2sx8tFJYzvg216DLihTWf+LKY/DoJXpM9nTzYakSyfblbqeU48p/p7Jzy05Atg==", "requires": { "@babel/core": "^7.1.0", "@jest/test-sequencer": "^25.5.4", @@ -5475,8 +4777,6 @@ }, "jest-diff": { "version": "25.5.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-25.5.0.tgz", - "integrity": "sha512-z1kygetuPiREYdNIumRpAHY6RXiGmp70YHptjdaxTWGmA085W3iCnXNx0DhflK3vwrKmrRWyY1wUpkPMVxMK7A==", "requires": { "chalk": "^3.0.0", "diff-sequences": "^25.2.6", @@ -5486,16 +4786,12 @@ }, "jest-docblock": { "version": "25.3.0", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-25.3.0.tgz", - "integrity": "sha512-aktF0kCar8+zxRHxQZwxMy70stc9R1mOmrLsT5VO3pIT0uzGRSDAXxSlz4NqQWpuLjPpuMhPRl7H+5FRsvIQAg==", "requires": { "detect-newline": "^3.0.0" } }, "jest-each": { "version": "25.5.0", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-25.5.0.tgz", - "integrity": "sha512-QBogUxna3D8vtiItvn54xXde7+vuzqRrEeaw8r1s+1TG9eZLVJE5ZkKoSUlqFwRjnlaA4hyKGiu9OlkFIuKnjA==", "requires": { "@jest/types": "^25.5.0", "chalk": "^3.0.0", @@ -5506,8 +4802,6 @@ }, "jest-environment-jsdom": { "version": "25.5.0", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-25.5.0.tgz", - "integrity": "sha512-7Jr02ydaq4jaWMZLY+Skn8wL5nVIYpWvmeatOHL3tOcV3Zw8sjnPpx+ZdeBfc457p8jCR9J6YCc+Lga0oIy62A==", "requires": { "@jest/environment": "^25.5.0", "@jest/fake-timers": "^25.5.0", @@ -5519,8 +4813,6 @@ }, "jest-environment-node": { "version": "25.5.0", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-25.5.0.tgz", - "integrity": "sha512-iuxK6rQR2En9EID+2k+IBs5fCFd919gVVK5BeND82fYeLWPqvRcFNPKu9+gxTwfB5XwBGBvZ0HFQa+cHtIoslA==", "requires": { "@jest/environment": "^25.5.0", "@jest/fake-timers": "^25.5.0", @@ -5531,14 +4823,10 @@ } }, "jest-get-type": { - "version": "25.2.6", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-25.2.6.tgz", - "integrity": "sha512-DxjtyzOHjObRM+sM1knti6or+eOgcGU4xVSb2HNP1TqO4ahsT+rqZg+nyqHWJSvWgKC5cG3QjGFBqxLghiF/Ig==" + "version": "25.2.6" }, "jest-haste-map": { "version": "25.5.1", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-25.5.1.tgz", - "integrity": "sha512-dddgh9UZjV7SCDQUrQ+5t9yy8iEgKc1AKqZR9YDww8xsVOtzPQSMVLDChc21+g29oTRexb9/B0bIlZL+sWmvAQ==", "requires": { "@jest/types": "^25.5.0", "@types/graceful-fs": "^4.1.2", @@ -5557,8 +4845,6 @@ "dependencies": { "which": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "requires": { "isexe": "^2.0.0" } @@ -5567,8 +4853,6 @@ }, "jest-jasmine2": { "version": "25.5.4", - "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-25.5.4.tgz", - "integrity": "sha512-9acbWEfbmS8UpdcfqnDO+uBUgKa/9hcRh983IHdM+pKmJPL77G0sWAAK0V0kr5LK3a8cSBfkFSoncXwQlRZfkQ==", "requires": { "@babel/traverse": "^7.1.0", "@jest/environment": "^25.5.0", @@ -5591,8 +4875,6 @@ }, "jest-leak-detector": { "version": "25.5.0", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-25.5.0.tgz", - "integrity": "sha512-rV7JdLsanS8OkdDpZtgBf61L5xZ4NnYLBq72r6ldxahJWWczZjXawRsoHyXzibM5ed7C2QRjpp6ypgwGdKyoVA==", "requires": { "jest-get-type": "^25.2.6", "pretty-format": "^25.5.0" @@ -5600,8 +4882,6 @@ }, "jest-matcher-utils": { "version": "25.5.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-25.5.0.tgz", - "integrity": "sha512-VWI269+9JS5cpndnpCwm7dy7JtGQT30UHfrnM3mXl22gHGt/b7NkjBqXfbhZ8V4B7ANUsjK18PlSBmG0YH7gjw==", "requires": { "chalk": "^3.0.0", "jest-diff": "^25.5.0", @@ -5611,8 +4891,6 @@ }, "jest-message-util": { "version": "25.5.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-25.5.0.tgz", - "integrity": "sha512-ezddz3YCT/LT0SKAmylVyWWIGYoKHOFOFXx3/nA4m794lfVUskMcwhip6vTgdVrOtYdjeQeis2ypzes9mZb4EA==", "requires": { "@babel/code-frame": "^7.0.0", "@jest/types": "^25.5.0", @@ -5626,8 +4904,6 @@ }, "jest-mock": { "version": "25.5.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-25.5.0.tgz", - "integrity": "sha512-eXWuTV8mKzp/ovHc5+3USJMYsTBhyQ+5A1Mak35dey/RG8GlM4YWVylZuGgVXinaW6tpvk/RSecmF37FKUlpXA==", "requires": { "@jest/types": "^25.5.0" } @@ -5636,14 +4912,10 @@ "version": "1.2.2" }, "jest-regex-util": { - "version": "25.2.6", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-25.2.6.tgz", - "integrity": "sha512-KQqf7a0NrtCkYmZZzodPftn7fL1cq3GQAFVMn5Hg8uKx/fIenLEobNanUxb7abQ1sjADHBseG/2FGpsv/wr+Qw==" + "version": "25.2.6" }, "jest-resolve": { "version": "25.5.1", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-25.5.1.tgz", - "integrity": "sha512-Hc09hYch5aWdtejsUZhA+vSzcotf7fajSlPA6EZPE1RmPBAD39XtJhvHWFStid58iit4IPDLI/Da4cwdDmAHiQ==", "requires": { "@jest/types": "^25.5.0", "browser-resolve": "^1.11.3", @@ -5658,8 +4930,6 @@ "dependencies": { "read-pkg": { "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", "requires": { "@types/normalize-package-data": "^2.4.0", "normalize-package-data": "^2.5.0", @@ -5668,16 +4938,12 @@ }, "dependencies": { "type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==" + "version": "0.6.0" } } }, "read-pkg-up": { "version": "7.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", - "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", "requires": { "find-up": "^4.1.0", "read-pkg": "^5.2.0", @@ -5688,8 +4954,6 @@ }, "jest-resolve-dependencies": { "version": "25.5.4", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-25.5.4.tgz", - "integrity": "sha512-yFmbPd+DAQjJQg88HveObcGBA32nqNZ02fjYmtL16t1xw9bAttSn5UGRRhzMHIQbsep7znWvAvnD4kDqOFM0Uw==", "requires": { "@jest/types": "^25.5.0", "jest-regex-util": "^25.2.6", @@ -5698,8 +4962,6 @@ }, "jest-runner": { "version": "25.5.4", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-25.5.4.tgz", - "integrity": "sha512-V/2R7fKZo6blP8E9BL9vJ8aTU4TH2beuqGNxHbxi6t14XzTb+x90B3FRgdvuHm41GY8ch4xxvf0ATH4hdpjTqg==", "requires": { "@jest/console": "^25.5.0", "@jest/environment": "^25.5.0", @@ -5724,8 +4986,6 @@ }, "jest-runtime": { "version": "25.5.4", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-25.5.4.tgz", - "integrity": "sha512-RWTt8LeWh3GvjYtASH2eezkc8AehVoWKK20udV6n3/gC87wlTbE1kIA+opCvNWyyPeBs6ptYsc6nyHUb1GlUVQ==", "requires": { "@jest/console": "^25.5.0", "@jest/environment": "^25.5.0", @@ -5756,24 +5016,18 @@ }, "dependencies": { "strip-bom": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==" + "version": "4.0.0" } } }, "jest-serializer": { "version": "25.5.0", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-25.5.0.tgz", - "integrity": "sha512-LxD8fY1lByomEPflwur9o4e2a5twSQ7TaVNLlFUuToIdoJuBt8tzHfCsZ42Ok6LkKXWzFWf3AGmheuLAA7LcCA==", "requires": { "graceful-fs": "^4.2.4" } }, "jest-snapshot": { "version": "25.5.1", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-25.5.1.tgz", - "integrity": "sha512-C02JE1TUe64p2v1auUJ2ze5vcuv32tkv9PyhEb318e8XOKF7MOyXdJ7kdjbvrp3ChPLU2usI7Rjxs97Dj5P0uQ==", "requires": { "@babel/types": "^7.0.0", "@jest/types": "^25.5.0", @@ -5794,8 +5048,6 @@ }, "jest-util": { "version": "25.5.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-25.5.0.tgz", - "integrity": "sha512-KVlX+WWg1zUTB9ktvhsg2PXZVdkI1NBevOJSkTKYAyXyH4QSvh+Lay/e/v+bmaFfrkfx43xD8QTfgobzlEXdIA==", "requires": { "@jest/types": "^25.5.0", "chalk": "^3.0.0", @@ -5806,8 +5058,6 @@ }, "jest-validate": { "version": "25.5.0", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-25.5.0.tgz", - "integrity": "sha512-okUFKqhZIpo3jDdtUXUZ2LxGUZJIlfdYBvZb1aczzxrlyMlqdnnws9MOxezoLGhSaFc2XYaHNReNQfj5zPIWyQ==", "requires": { "@jest/types": "^25.5.0", "camelcase": "^5.3.1", @@ -5819,8 +5069,6 @@ }, "jest-watch-typeahead": { "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jest-watch-typeahead/-/jest-watch-typeahead-0.5.0.tgz", - "integrity": "sha512-4r36w9vU8+rdg48hj0Z7TvcSqVP6Ao8dk04grlHQNgduyCB0SqrI0xWIl85ZhXrzYvxQ0N5H+rRLAejkQzEHeQ==", "requires": { "ansi-escapes": "^4.2.1", "chalk": "^3.0.0", @@ -5833,8 +5081,6 @@ }, "jest-watcher": { "version": "25.5.0", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-25.5.0.tgz", - "integrity": "sha512-XrSfJnVASEl+5+bb51V0Q7WQx65dTSk7NL4yDdVjPnRNpM0hG+ncFmDYJo9O8jaSRcAitVbuVawyXCRoxGrT5Q==", "requires": { "@jest/test-result": "^25.5.0", "@jest/types": "^25.5.0", @@ -5846,8 +5092,6 @@ }, "jest-worker": { "version": "25.5.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-25.5.0.tgz", - "integrity": "sha512-/dsSmUkIy5EBGfv/IjjqmFxrNAUpBERfGs1oHROyD7yxjG/w+t0GOJDX8O1k32ySmd7+a5IhnJU2qQFcJ4n1vw==", "requires": { "merge-stream": "^2.0.0", "supports-color": "^7.0.0" @@ -5874,8 +5118,6 @@ }, "jsdom": { "version": "15.2.1", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-15.2.1.tgz", - "integrity": "sha512-fAl1W0/7T2G5vURSyxBzrJ1LSdQn6Tr5UX/xD4PXDx/PDgwygedfW6El/KIj3xJ7FU61TTYnc/l/B7P49Eqt6g==", "requires": { "abab": "^2.0.0", "acorn": "^7.1.0", @@ -5907,8 +5149,6 @@ "dependencies": { "tough-cookie": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-3.0.1.tgz", - "integrity": "sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg==", "requires": { "ip-regex": "^2.1.0", "psl": "^1.1.28", @@ -5924,9 +5164,7 @@ "version": "2.3.1" }, "json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" + "version": "0.2.3" }, "json-schema-traverse": { "version": "0.4.1" @@ -5945,8 +5183,6 @@ }, "jsonfile": { "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", "requires": { "graceful-fs": "^4.1.6", "universalify": "^2.0.0" @@ -5957,8 +5193,6 @@ }, "jsprim": { "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", "requires": { "assert-plus": "1.0.0", "extsprintf": "1.3.0", @@ -5968,8 +5202,6 @@ }, "jsx-ast-utils": { "version": "3.2.0", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.2.0.tgz", - "integrity": "sha512-EIsmt3O3ljsU6sot/J4E1zDRxfBNrhjyf/OKjlydwgEimQuznlM4Wv7U+ueONJMyEn1WRE0K8dhi3dVAXYT24Q==", "requires": { "array-includes": "^3.1.2", "object.assign": "^4.1.2" @@ -5977,16 +5209,12 @@ }, "keypather": { "version": "1.10.2", - "resolved": "https://registry.npmjs.org/keypather/-/keypather-1.10.2.tgz", - "integrity": "sha1-4ESWMtSz5RbyHMAUznxWRP3c5hQ=", "requires": { "101": "^1.0.0" } }, "kind-of": { "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "requires": { "is-buffer": "^1.1.5" } @@ -6014,14 +5242,10 @@ } }, "lines-and-columns": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", - "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=" + "version": "1.1.6" }, "load-json-file": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", - "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", "requires": { "graceful-fs": "^4.1.2", "parse-json": "^2.2.0", @@ -6031,8 +5255,6 @@ "dependencies": { "parse-json": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", "requires": { "error-ex": "^1.2.0" } @@ -6041,8 +5263,6 @@ }, "locate-path": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "requires": { "p-locate": "^4.1.0" } @@ -6064,24 +5284,18 @@ }, "log-symbols": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", - "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==", "requires": { "chalk": "^2.4.2" }, "dependencies": { "ansi-styles": { "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "requires": { "color-convert": "^1.9.0" } }, "chalk": { "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -6090,21 +5304,15 @@ }, "color-convert": { "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "requires": { "color-name": "1.1.3" } }, "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + "version": "1.1.3" }, "supports-color": { "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "requires": { "has-flag": "^3.0.0" } @@ -6120,35 +5328,25 @@ }, "dependencies": { "ansi-escapes": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", - "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==" + "version": "3.2.0" }, "cli-cursor": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", "requires": { "restore-cursor": "^2.0.0" } }, "mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==" + "version": "1.2.0" }, "onetime": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", "requires": { "mimic-fn": "^1.0.0" } }, "restore-cursor": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", "requires": { "onetime": "^2.0.0", "signal-exit": "^3.0.2" @@ -6158,8 +5356,6 @@ }, "lolex": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/lolex/-/lolex-5.1.2.tgz", - "integrity": "sha512-h4hmjAvHTmd+25JSwrtTIuwbKdwg5NzZVRMLn9saij4SZaepCrTCxPr35H/3bjwfMJtN+t3CX8672UIkglz28A==", "requires": { "@sinonjs/commons": "^1.7.0" } @@ -6172,10 +5368,13 @@ }, "lower-case": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", - "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", "requires": { "tslib": "^2.0.3" + }, + "dependencies": { + "tslib": { + "version": "2.2.0" + } } }, "lru-cache": { @@ -6192,8 +5391,6 @@ }, "make-dir": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", "requires": { "semver": "^6.0.0" } @@ -6203,8 +5400,6 @@ }, "makeerror": { "version": "1.0.11", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", - "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", "requires": { "tmpl": "1.0.x" } @@ -6223,22 +5418,16 @@ }, "micromatch": { "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", "requires": { "braces": "^3.0.1", "picomatch": "^2.2.3" } }, "mime-db": { - "version": "1.47.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.47.0.tgz", - "integrity": "sha512-QBmA/G2y+IfeS4oktet3qRZ+P5kPhCKRXxXnQEudYqUaEioAU1/Lq2us3D/t1Jfo4hE9REQPrbB7K5sOczJVIw==" + "version": "1.47.0" }, "mime-types": { "version": "2.1.30", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.30.tgz", - "integrity": "sha512-crmjA4bLtR8m9qLpHvgxSChT+XoSlZi8J4n/aIdn3z92e/U47Z0V/yl+Wh9W046GgFVAmoNR/fmdbZYcSSIUeg==", "requires": { "mime-db": "1.47.0" } @@ -6270,8 +5459,6 @@ "dependencies": { "is-extendable": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "requires": { "is-plain-object": "^2.0.4" } @@ -6285,9 +5472,7 @@ } }, "mri": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/mri/-/mri-1.1.6.tgz", - "integrity": "sha512-oi1b3MfbyGa7FJMP9GmLTttni5JoICpYBRlq+x5V16fZbLsnL9N3wFqqIm/nIG43FjUFkFh9Epzp/kzUGUnJxQ==" + "version": "1.1.6" }, "ms": { "version": "2.1.2" @@ -6313,8 +5498,6 @@ "dependencies": { "define-property": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", "requires": { "is-descriptor": "^1.0.2", "isobject": "^3.0.1" @@ -6322,8 +5505,6 @@ }, "extend-shallow": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", "requires": { "assign-symbols": "^1.0.0", "is-extendable": "^1.0.1" @@ -6331,16 +5512,12 @@ }, "is-extendable": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "requires": { "is-plain-object": "^2.0.4" } }, "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + "version": "6.0.3" } } }, @@ -6352,11 +5529,14 @@ }, "no-case": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", - "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", "requires": { "lower-case": "^2.0.2", "tslib": "^2.0.3" + }, + "dependencies": { + "tslib": { + "version": "2.2.0" + } } }, "node-addon-api": { @@ -6366,22 +5546,16 @@ "version": "2.6.1" }, "node-gyp-build": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.2.3.tgz", - "integrity": "sha512-MN6ZpzmfNCRM+3t57PTJHgHyw/h4OWnZ6mR8P5j/uZtqQr46RRuDE/P+g3n0YR/AiYXeWixZZzaip77gdICfRg==" + "version": "4.2.3" }, "node-int64": { "version": "0.4.0" }, "node-modules-regexp": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz", - "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=" + "version": "1.0.0" }, "node-notifier": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-6.0.0.tgz", - "integrity": "sha512-SVfQ/wMw+DesunOm5cKqr6yDcvUTDl/yc97ybGHMrteNEY6oekXpNpS3lZwgLlwz0FLgHoiW28ZpmBHUDg37cw==", "optional": true, "requires": { "growly": "^1.3.0", @@ -6392,9 +5566,7 @@ } }, "node-releases": { - "version": "1.1.71", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.71.tgz", - "integrity": "sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg==" + "version": "1.1.71" }, "normalize-package-data": { "version": "2.5.0", @@ -6411,22 +5583,16 @@ } }, "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + "version": "3.0.0" }, "npm-run-path": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", "requires": { "path-key": "^3.0.0" }, "dependencies": { "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" + "version": "3.1.1" } } }, @@ -6448,9 +5614,7 @@ } }, "object-inspect": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", - "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==" + "version": "1.9.0" }, "object-keys": { "version": "1.1.1" @@ -6472,8 +5636,6 @@ }, "object.entries": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.3.tgz", - "integrity": "sha512-ym7h7OZebNS96hn5IJeyUmaWhaSM4SVtAPPfNLQEI2MYWCO2egsITb9nab2+i/Pwibx+R0mtn+ltKJXRSeTMGg==", "requires": { "call-bind": "^1.0.0", "define-properties": "^1.1.3", @@ -6483,8 +5645,6 @@ }, "object.fromentries": { "version": "2.0.4", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.4.tgz", - "integrity": "sha512-EsFBshs5RUUpQEY1D4q/m59kMfz4YJvxuNCJcv/jWwOJr34EaVnG11ZrZa0UHB3wnzV1wx8m58T4hQL8IuNXlQ==", "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", @@ -6500,8 +5660,6 @@ }, "object.values": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.3.tgz", - "integrity": "sha512-nkF6PfDB9alkOUxpf1HNm/QlkeW3SReqL5WXeBLpEJJnlPSvRaDQpW3gQTksTN3fgJX4hL42RzKyOin6ff3tyw==", "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", @@ -6534,8 +5692,6 @@ }, "ora": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ora/-/ora-4.1.1.tgz", - "integrity": "sha512-sjYP8QyVWBpBZWD6Vr1M/KwknSw6kJOz41tvGMlwWeClHBtYKTbHMki1PsLZnxKpXMPbTKv9b3pjQu3REib96A==", "requires": { "chalk": "^3.0.0", "cli-cursor": "^3.1.0", @@ -6548,9 +5704,7 @@ }, "dependencies": { "cli-spinners": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.0.tgz", - "integrity": "sha512-t+4/y50K/+4xcCRosKkA7W4gTr1MySvLV0q+PxmG7FJ5g+66ChKurYjxBCjHggHH3HA5Hh9cy+lcUGWDqVH+4Q==" + "version": "2.6.0" } } }, @@ -6558,14 +5712,10 @@ "version": "1.0.2" }, "p-each-series": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-2.2.0.tgz", - "integrity": "sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA==" + "version": "2.2.0" }, "p-finally": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-2.0.1.tgz", - "integrity": "sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw==" + "version": "2.0.1" }, "p-limit": { "version": "2.3.0", @@ -6575,8 +5725,6 @@ }, "p-locate": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "requires": { "p-limit": "^2.2.0" } @@ -6600,26 +5748,25 @@ } }, "parse5": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", - "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==" + "version": "5.1.0" }, "pascal-case": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", - "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", "requires": { "no-case": "^3.0.4", "tslib": "^2.0.3" + }, + "dependencies": { + "tslib": { + "version": "2.2.0" + } } }, "pascalcase": { "version": "0.1.1" }, "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" + "version": "4.0.0" }, "path-is-absolute": { "version": "1.0.1" @@ -6628,9 +5775,7 @@ "version": "2.0.1" }, "path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" + "version": "1.0.6" }, "path-type": { "version": "4.0.0" @@ -6639,27 +5784,19 @@ "version": "2.1.0" }, "picomatch": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.3.tgz", - "integrity": "sha512-KpELjfwcCDUb9PeigTs2mBJzXUPzAuP2oPcA989He8Rte0+YUAjw1JVedDhuTKPkHjSYzMN3npC9luThGYEKdg==" + "version": "2.2.3" }, "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + "version": "2.3.0" }, "pirates": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz", - "integrity": "sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==", "requires": { "node-modules-regexp": "^1.0.0" } }, "pkg-dir": { "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "requires": { "find-up": "^4.0.0" } @@ -6684,20 +5821,11 @@ }, "pretty-format": { "version": "25.5.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-25.5.0.tgz", - "integrity": "sha512-kbo/kq2LQ/A/is0PQwsEHM7Ca6//bGPPvU6UnsdDRSKTWxT/ru/xb88v4BJf6a69H+uTytOEsTusT9ksd/1iWQ==", "requires": { "@jest/types": "^25.5.0", "ansi-regex": "^5.0.0", "ansi-styles": "^4.0.0", "react-is": "^16.12.0" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" - } } }, "progress": { @@ -6714,16 +5842,12 @@ "dependencies": { "ansi-styles": { "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "requires": { "color-convert": "^1.9.0" } }, "chalk": { "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -6732,21 +5856,15 @@ }, "color-convert": { "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "requires": { "color-name": "1.1.3" } }, "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + "version": "1.1.3" }, "supports-color": { "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "requires": { "has-flag": "^3.0.0" } @@ -6755,8 +5873,6 @@ }, "prompts": { "version": "2.4.1", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.1.tgz", - "integrity": "sha512-EQyfIuO2hPDsX1L/blblV+H7I0knhgAd82cVneCwcdND9B8AuCDuRcBH6yIcG4dFzlOUqbazQqwGjx5xmsNLuQ==", "requires": { "kleur": "^3.0.3", "sisteransi": "^1.0.5" @@ -6764,8 +5880,6 @@ }, "prop-types": { "version": "15.7.2", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", - "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", "requires": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", @@ -6786,14 +5900,10 @@ "version": "2.1.1" }, "qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" + "version": "6.5.2" }, "ramda": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.27.2.tgz", - "integrity": "sha512-SbiLPU40JuJniHexQSAgad32hfwd+DRUdwF2PlVuI5RZD0/vahUco7R8vD86J/tcEKKF9vZrUVwgtmGCqlCKyA==" + "version": "0.27.1" }, "randombytes": { "version": "2.1.0", @@ -6806,8 +5916,6 @@ }, "read-pkg": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", - "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", "requires": { "load-json-file": "^2.0.0", "normalize-package-data": "^2.3.2", @@ -6816,8 +5924,6 @@ "dependencies": { "path-type": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", - "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", "requires": { "pify": "^2.0.0" } @@ -6826,8 +5932,6 @@ }, "read-pkg-up": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", - "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", "requires": { "find-up": "^2.0.0", "read-pkg": "^2.0.0" @@ -6835,16 +5939,12 @@ "dependencies": { "find-up": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", "requires": { "locate-path": "^2.0.0" } }, "locate-path": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", "requires": { "p-locate": "^2.0.0", "path-exists": "^3.0.0" @@ -6852,36 +5952,26 @@ }, "p-limit": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", "requires": { "p-try": "^1.0.0" } }, "p-locate": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", "requires": { "p-limit": "^1.1.0" } }, "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=" + "version": "1.0.0" }, "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + "version": "3.0.0" } } }, "realpath-native": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/realpath-native/-/realpath-native-2.0.0.tgz", - "integrity": "sha512-v1SEYUOXXdbBZK8ZuNgO4TBjamPsiSgcFr0aP+tEKpQZK8vooEUqV6nm6Cv502mX4NF2EfsnVqtNAHG+/6Ur1Q==" + "version": "2.0.0" }, "rechoir": { "version": "0.6.2", @@ -6894,16 +5984,12 @@ }, "regenerate-unicode-properties": { "version": "8.2.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", - "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", "requires": { "regenerate": "^1.4.0" } }, "regenerator-runtime": { - "version": "0.13.7", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", - "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==" + "version": "0.13.7" }, "regenerator-transform": { "version": "0.14.5", @@ -6920,8 +6006,6 @@ "dependencies": { "extend-shallow": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", "requires": { "assign-symbols": "^1.0.0", "is-extendable": "^1.0.1" @@ -6929,8 +6013,6 @@ }, "is-extendable": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "requires": { "is-plain-object": "^2.0.4" } @@ -6949,8 +6031,6 @@ }, "regexpu-core": { "version": "4.7.1", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", - "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", "requires": { "regenerate": "^1.4.0", "regenerate-unicode-properties": "^8.2.0", @@ -6965,16 +6045,12 @@ }, "regjsparser": { "version": "0.6.9", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.9.tgz", - "integrity": "sha512-ZqbNRz1SNjLAiYuwY0zoXW8Ne675IX5q+YHioAGbCw4X96Mjl2+dcX9B2ciaeyYjViDAfvIjFpQjJgLttTEERQ==", "requires": { "jsesc": "~0.5.0" }, "dependencies": { "jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=" + "version": "0.5.0" } } }, @@ -7034,8 +6110,6 @@ }, "resolve": { "version": "1.20.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", - "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", "requires": { "is-core-module": "^2.2.0", "path-parse": "^1.0.6" @@ -7043,24 +6117,18 @@ }, "resolve-cwd": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", "requires": { "resolve-from": "^5.0.0" } }, "resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==" + "version": "5.0.0" }, "resolve-url": { "version": "0.2.1" }, "restore-cursor": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", "requires": { "onetime": "^5.1.0", "signal-exit": "^3.0.2" @@ -7071,8 +6139,6 @@ }, "rimraf": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "requires": { "glob": "^7.1.3" } @@ -7087,8 +6153,6 @@ }, "rollup-plugin-sourcemaps": { "version": "0.6.3", - "resolved": "https://registry.npmjs.org/rollup-plugin-sourcemaps/-/rollup-plugin-sourcemaps-0.6.3.tgz", - "integrity": "sha512-paFu+nT1xvuO1tPFYXGe+XnQvg4Hjqv/eIhG8i5EspfYYPBKL57X7iVbfv55aNVASg3dzWvES9dmWsL2KhfByw==", "requires": { "@rollup/pluginutils": "^3.0.9", "source-map-resolve": "^0.6.0" @@ -7106,8 +6170,6 @@ "dependencies": { "jest-worker": { "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz", - "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==", "requires": { "merge-stream": "^2.0.0", "supports-color": "^6.1.0" @@ -7115,8 +6177,6 @@ }, "supports-color": { "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", "requires": { "has-flag": "^3.0.0" } @@ -7136,8 +6196,6 @@ }, "rpc-websockets": { "version": "7.4.11", - "resolved": "https://registry.npmjs.org/rpc-websockets/-/rpc-websockets-7.4.11.tgz", - "integrity": "sha512-/6yKCkRrEEb+TlJb6Q/pNBD4WdO/tFxE22rQYBl1YyIgz3SpzQDQ/0qAMWWksjFkDayiq3xVxmkP8e/tL422ZA==", "requires": { "@babel/runtime": "^7.11.2", "assert-args": "^1.2.1", @@ -7150,9 +6208,7 @@ }, "dependencies": { "uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" + "version": "8.3.2" } } }, @@ -7175,8 +6231,6 @@ }, "sade": { "version": "1.7.4", - "resolved": "https://registry.npmjs.org/sade/-/sade-1.7.4.tgz", - "integrity": "sha512-y5yauMD93rX840MwUJr7C1ysLFBgMspsdTo4UVrDg3fXDvtwOyIqykhVAAm6fk/3au77773itJStObgK+LKaiA==", "requires": { "mri": "^1.1.0" } @@ -7209,8 +6263,6 @@ "dependencies": { "anymatch": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", "requires": { "micromatch": "^3.1.4", "normalize-path": "^2.1.1" @@ -7218,8 +6270,6 @@ }, "braces": { "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", "requires": { "arr-flatten": "^1.1.0", "array-unique": "^0.3.2", @@ -7235,23 +6285,17 @@ "dependencies": { "extend-shallow": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "requires": { "is-extendable": "^0.1.0" } }, "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" + "version": "0.1.1" } } }, "define-property": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", "requires": { "is-descriptor": "^1.0.2", "isobject": "^3.0.1" @@ -7259,8 +6303,6 @@ }, "execa": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", "requires": { "cross-spawn": "^6.0.0", "get-stream": "^4.0.0", @@ -7273,8 +6315,6 @@ }, "extend-shallow": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", "requires": { "assign-symbols": "^1.0.0", "is-extendable": "^1.0.1" @@ -7282,8 +6322,6 @@ }, "fill-range": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", "requires": { "extend-shallow": "^2.0.1", "is-number": "^3.0.0", @@ -7293,49 +6331,35 @@ "dependencies": { "extend-shallow": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "requires": { "is-extendable": "^0.1.0" } }, "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" + "version": "0.1.1" } } }, "get-stream": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", "requires": { "pump": "^3.0.0" } }, "is-extendable": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "requires": { "is-plain-object": "^2.0.4" } }, "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + "version": "1.1.0" }, "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + "version": "6.0.3" }, "micromatch": { "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", "requires": { "arr-diff": "^4.0.0", "array-unique": "^0.3.2", @@ -7354,29 +6378,21 @@ }, "normalize-path": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", "requires": { "remove-trailing-separator": "^1.0.1" } }, "npm-run-path": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", "requires": { "path-key": "^2.0.0" } }, "p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" + "version": "1.0.0" }, "to-regex-range": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", "requires": { "is-number": "^3.0.0", "repeat-string": "^1.6.1" @@ -7386,16 +6402,12 @@ }, "saxes": { "version": "3.1.11", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-3.1.11.tgz", - "integrity": "sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g==", "requires": { "xmlchars": "^2.1.1" } }, "secp256k1": { "version": "4.0.2", - "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.2.tgz", - "integrity": "sha512-UDar4sKvWAksIlfX3xIaQReADn+WFnHvbVujpcbr+9Sf/69odMwy2MUsz5CKLQgX9nsIyrjuxL2imVyoNHa3fg==", "requires": { "elliptic": "^6.5.2", "node-addon-api": "^2.0.0", @@ -7434,8 +6446,6 @@ }, "shelljs": { "version": "0.8.4", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.4.tgz", - "integrity": "sha512-7gk3UZ9kOfPLIAbslLzyWeGiEqx9e3rxwZM0KE6EL8GlGwjym9Mrlx5/p33bWTu9YG6vcS4MBxYZDHYr5lr8BQ==", "requires": { "glob": "^7.0.0", "interpret": "^1.0.0", @@ -7455,17 +6465,13 @@ } }, "signal-exit": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", - "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==" + "version": "3.0.3" }, "sisteransi": { "version": "1.0.5" }, "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" + "version": "3.0.0" }, "slice-ansi": { "version": "2.1.0", @@ -7477,24 +6483,18 @@ "dependencies": { "ansi-styles": { "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "requires": { "color-convert": "^1.9.0" } }, "color-convert": { "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "requires": { "color-name": "1.1.3" } }, "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + "version": "1.1.3" } } }, @@ -7525,8 +6525,6 @@ }, "source-map-resolve": { "version": "0.5.3", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", - "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", "requires": { "atob": "^2.1.2", "decode-uri-component": "^0.2.0", @@ -7564,8 +6562,6 @@ }, "source-map-resolve": { "version": "0.6.0", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.6.0.tgz", - "integrity": "sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==", "requires": { "atob": "^2.1.2", "decode-uri-component": "^0.2.0" @@ -7573,8 +6569,6 @@ }, "source-map-support": { "version": "0.5.19", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", - "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", "requires": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -7604,9 +6598,7 @@ } }, "spdx-license-ids": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz", - "integrity": "sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ==" + "version": "3.0.7" }, "split-string": { "version": "3.1.0", @@ -7616,8 +6608,6 @@ "dependencies": { "extend-shallow": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", "requires": { "assign-symbols": "^1.0.0", "is-extendable": "^1.0.1" @@ -7625,8 +6615,6 @@ }, "is-extendable": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "requires": { "is-plain-object": "^2.0.4" } @@ -7638,8 +6626,6 @@ }, "sshpk": { "version": "1.16.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", - "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", "requires": { "asn1": "~0.2.3", "assert-plus": "^1.0.0", @@ -7653,9 +6639,7 @@ }, "dependencies": { "tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" + "version": "0.14.5" } } }, @@ -7682,22 +6666,16 @@ }, "string-length": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-3.1.0.tgz", - "integrity": "sha512-Ttp5YvkGm5v9Ijagtaz1BnN+k9ObpvS0eIBblPMp2YWL8FBmi9qblQ9fexc2k/CXFgrTIteU3jAw3payCnwSTA==", "requires": { "astral-regex": "^1.0.0", "strip-ansi": "^5.2.0" }, "dependencies": { "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" + "version": "4.1.0" }, "strip-ansi": { "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "requires": { "ansi-regex": "^4.1.0" } @@ -7706,8 +6684,6 @@ }, "string-width": { "version": "4.2.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", - "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", "requires": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -7715,16 +6691,12 @@ }, "dependencies": { "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + "version": "3.0.0" } } }, "string.prototype.matchall": { "version": "4.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.4.tgz", - "integrity": "sha512-pknFIWVachNcyqRfaQSeu/FUfpvJTe4uskUSZ9Wc1RijsPuzbZ8TyYT8WCNnntCjUEqQ3vUHMAfVj2+wLAisPQ==", "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", @@ -7750,11 +6722,9 @@ } }, "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "version": "6.0.0", "requires": { - "ansi-regex": "^5.0.1" + "ansi-regex": "^5.0.0" } }, "strip-bom": { @@ -7774,32 +6744,24 @@ }, "supports-color": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "requires": { "has-flag": "^4.0.0" }, "dependencies": { "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + "version": "4.0.0" } } }, "supports-hyperlinks": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz", - "integrity": "sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==", "requires": { "has-flag": "^4.0.0", "supports-color": "^7.0.0" }, "dependencies": { "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + "version": "4.0.0" } } }, @@ -7816,19 +6778,13 @@ }, "dependencies": { "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" + "version": "4.1.0" }, "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" + "version": "7.0.3" }, "string-width": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", "requires": { "emoji-regex": "^7.0.1", "is-fullwidth-code-point": "^2.0.0", @@ -7837,8 +6793,6 @@ }, "strip-ansi": { "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "requires": { "ansi-regex": "^4.1.0" } @@ -7847,8 +6801,6 @@ }, "terminal-link": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", - "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", "requires": { "ansi-escapes": "^4.2.1", "supports-hyperlinks": "^2.0.0" @@ -7864,8 +6816,6 @@ }, "test-exclude": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", "requires": { "@istanbuljs/schema": "^0.1.2", "glob": "^7.1.4", @@ -7879,17 +6829,13 @@ "version": "0.2.0" }, "throat": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz", - "integrity": "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==" + "version": "5.0.0" }, "through": { "version": "2.3.8" }, "tiny-glob": { "version": "0.2.8", - "resolved": "https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.8.tgz", - "integrity": "sha512-vkQP7qOslq63XRX9kMswlby99kyO5OvKptw7AMwBVMjXEI7Tb61eoI5DydyEMOseyGS5anDN1VPoVxEvH01q8w==", "requires": { "globalyzer": "0.1.0", "globrex": "^0.1.2" @@ -7902,14 +6848,10 @@ } }, "tmpl": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", - "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=" + "version": "1.0.4" }, "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=" + "version": "2.0.0" }, "to-object-path": { "version": "0.3.0", @@ -7928,8 +6870,6 @@ "dependencies": { "define-property": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", "requires": { "is-descriptor": "^1.0.2", "isobject": "^3.0.1" @@ -7937,8 +6877,6 @@ }, "extend-shallow": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", "requires": { "assign-symbols": "^1.0.0", "is-extendable": "^1.0.1" @@ -7946,8 +6884,6 @@ }, "is-extendable": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "requires": { "is-plain-object": "^2.0.4" } @@ -7956,23 +6892,17 @@ }, "to-regex-range": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "requires": { "is-number": "^7.0.0" }, "dependencies": { "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + "version": "7.0.0" } } }, "tough-cookie": { "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", "requires": { "psl": "^1.1.28", "punycode": "^2.1.1" @@ -7980,95 +6910,12 @@ }, "tr46": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", - "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", "requires": { "punycode": "^2.1.0" } }, - "ts-jest": { - "version": "26.5.5", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-26.5.5.tgz", - "integrity": "sha512-7tP4m+silwt1NHqzNRAPjW1BswnAhopTdc2K3HEkRZjF0ZG2F/e/ypVH0xiZIMfItFtD3CX0XFbwPzp9fIEUVg==", - "requires": { - "bs-logger": "0.x", - "buffer-from": "1.x", - "fast-json-stable-stringify": "2.x", - "jest-util": "^26.1.0", - "json5": "2.x", - "lodash": "4.x", - "make-error": "1.x", - "mkdirp": "1.x", - "semver": "7.x", - "yargs-parser": "20.x" - }, - "dependencies": { - "@jest/types": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", - "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^15.0.0", - "chalk": "^4.0.0" - } - }, - "@types/istanbul-reports": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz", - "integrity": "sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA==", - "requires": { - "@types/istanbul-lib-report": "*" - } - }, - "chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "jest-util": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz", - "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==", - "requires": { - "@jest/types": "^26.6.2", - "@types/node": "*", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "is-ci": "^2.0.0", - "micromatch": "^4.0.2" - } - }, - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" - }, - "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "requires": { - "lru-cache": "^6.0.0" - } - }, - "yargs-parser": { - "version": "20.2.7", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.7.tgz", - "integrity": "sha512-FiNkvbeHzB/syOjIUxFDCnhSfzAL8R5vs40MgLFBorXACCOAEaWu0gRZl14vG8MR9AOJIZbmkjhusqBYZ3HTHw==" - } - } - }, "tsconfig-paths": { "version": "3.9.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz", - "integrity": "sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw==", "requires": { "@types/json5": "^0.0.29", "json5": "^1.0.1", @@ -8078,8 +6925,6 @@ "dependencies": { "json5": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", "requires": { "minimist": "^1.2.0" } @@ -8088,8 +6933,6 @@ }, "tsdx": { "version": "0.14.1", - "resolved": "https://registry.npmjs.org/tsdx/-/tsdx-0.14.1.tgz", - "integrity": "sha512-keHmFdCL2kx5nYFlBdbE3639HQ2v9iGedAFAajobrUTH2wfX0nLPdDhbHv+GHLQZqf0c5ur1XteE8ek/+Eyj5w==", "requires": { "@babel/core": "^7.4.4", "@babel/helper-module-imports": "^7.0.0", @@ -8150,14 +6993,10 @@ }, "dependencies": { "camelcase": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", - "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==" + "version": "6.2.0" }, "chalk": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -8165,24 +7004,18 @@ }, "jsonfile": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", "requires": { "graceful-fs": "^4.1.6" } }, "resolve": { "version": "1.17.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", - "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", "requires": { "path-parse": "^1.0.6" } }, "rollup-plugin-typescript2": { "version": "0.27.3", - "resolved": "https://registry.npmjs.org/rollup-plugin-typescript2/-/rollup-plugin-typescript2-0.27.3.tgz", - "integrity": "sha512-gmYPIFmALj9D3Ga1ZbTZAKTXq1JKlTQBtj299DXhqYz9cL3g/AQfUvbb2UhH+Nf++cCq941W2Mv7UcrcgLzJJg==", "requires": { "@rollup/pluginutils": "^3.1.0", "find-cache-dir": "^3.3.1", @@ -8193,8 +7026,6 @@ "dependencies": { "fs-extra": { "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", "requires": { "graceful-fs": "^4.2.0", "jsonfile": "^4.0.0", @@ -8202,24 +7033,18 @@ } }, "tslib": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.1.tgz", - "integrity": "sha512-SgIkNheinmEBgx1IUNirK0TUD4X9yjjBRTqqjggWCU3pUEqIk3/Uwl3yRixYKT6WjQuGiwDv4NomL3wqRCj+CQ==" + "version": "2.0.1" } } }, "semver": { "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", "requires": { "lru-cache": "^6.0.0" } }, "ts-jest": { "version": "25.5.1", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-25.5.1.tgz", - "integrity": "sha512-kHEUlZMK8fn8vkxDjwbHlxXRB9dHYpyzqKIGDNxbzs+Rz+ssNDSDNusEK8Fk/sDd4xE6iKoQLfFkFVaskmTJyw==", "requires": { "bs-logger": "0.x", "buffer-from": "1.x", @@ -8234,33 +7059,23 @@ }, "dependencies": { "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + "version": "6.3.0" } } }, "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + "version": "1.14.1" }, "typescript": { - "version": "3.9.9", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.9.tgz", - "integrity": "sha512-kdMjTiekY+z/ubJCATUPlRDl39vXYiMV9iyeMuEuXZh2we6zz80uovNN2WlAxmmdE/Z/YQe+EbOEXB5RHEED3w==" + "version": "3.9.9" }, "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" + "version": "0.1.2" } } }, "tslib": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz", - "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==" + "version": "2.3.1" }, "tsutils": { "version": "3.21.0", @@ -8272,9 +7087,7 @@ "version": "1.14.1" }, "typescript": { - "version": "3.9.9", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.9.tgz", - "integrity": "sha512-kdMjTiekY+z/ubJCATUPlRDl39vXYiMV9iyeMuEuXZh2we6zz80uovNN2WlAxmmdE/Z/YQe+EbOEXB5RHEED3w==" + "version": "3.9.9" } } }, @@ -8294,27 +7107,19 @@ } }, "type-detect": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-0.1.1.tgz", - "integrity": "sha1-C6XsKohWQORw6k6FBZcZANrFiCI=" + "version": "0.1.1" }, "type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==" + "version": "0.8.1" }, "typedarray-to-buffer": { "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", "requires": { "is-typedarray": "^1.0.0" } }, "typescript": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.2.4.tgz", - "integrity": "sha512-V+evlYHZnQkaz8TRBuxTA92yZBPotr5H+WhQ7bD3hZUndx5tGOa1fuCgeSjxAzM1RiN5IzvadIXTVefuuwZCRg==" + "version": "4.5.4" }, "unbox-primitive": { "version": "1.0.1", @@ -8326,28 +7131,20 @@ } }, "unicode-canonical-property-names-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", - "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==" + "version": "1.0.4" }, "unicode-match-property-ecmascript": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", - "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", "requires": { "unicode-canonical-property-names-ecmascript": "^1.0.4", "unicode-property-aliases-ecmascript": "^1.0.4" } }, "unicode-match-property-value-ecmascript": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", - "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==" + "version": "1.2.0" }, "unicode-property-aliases-ecmascript": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", - "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==" + "version": "1.1.0" }, "union-value": { "version": "1.0.1", @@ -8359,9 +7156,7 @@ } }, "universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==" + "version": "2.0.0" }, "unset-value": { "version": "1.0.0", @@ -8405,25 +7200,19 @@ }, "utf-8-validate": { "version": "5.0.4", - "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.4.tgz", - "integrity": "sha512-MEF05cPSq3AwJ2C7B7sHAA6i53vONoZbMGX8My5auEVm6W+dJ2Jd/TZPyGJ5CH42V2XtbI5FD28HeHeqlPzZ3Q==", "optional": true, "requires": { "node-gyp-build": "^4.2.0" } }, "uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" + "version": "3.4.0" }, "v8-compile-cache": { "version": "2.3.0" }, "v8-to-istanbul": { "version": "4.1.4", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-4.1.4.tgz", - "integrity": "sha512-Rw6vJHj1mbdK8edjR7+zuJrpDtKIgNdAvTSAcpYfgMIw+u2dPDntD3dgN4XQFLU2/fvFQdzj+EeSGfd/jnY5fQ==", "requires": { "@types/istanbul-lib-coverage": "^2.0.1", "convert-source-map": "^1.6.0", @@ -8431,9 +7220,7 @@ }, "dependencies": { "source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==" + "version": "0.7.3" } } }, @@ -8453,9 +7240,7 @@ }, "dependencies": { "extsprintf": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.4.0.tgz", - "integrity": "sha1-4mifjzVvrWLMplo6kcXfX5VRaS8=" + "version": "1.4.0" } } }, @@ -8467,8 +7252,6 @@ }, "w3c-xmlserializer": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz", - "integrity": "sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg==", "requires": { "domexception": "^1.0.1", "webidl-conversions": "^4.0.2", @@ -8477,8 +7260,6 @@ }, "walker": { "version": "1.0.7", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz", - "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=", "requires": { "makeerror": "1.0.x" } @@ -8490,9 +7271,7 @@ } }, "webidl-conversions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", - "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==" + "version": "4.0.2" }, "whatwg-encoding": { "version": "1.0.5", @@ -8505,8 +7284,6 @@ }, "whatwg-url": { "version": "7.1.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", - "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", "requires": { "lodash.sortby": "^4.7.0", "tr46": "^1.0.1", @@ -8571,8 +7348,6 @@ }, "write-file-atomic": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", "requires": { "imurmurhash": "^0.1.4", "is-typedarray": "^1.0.0", @@ -8581,17 +7356,13 @@ } }, "ws": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.4.tgz", - "integrity": "sha512-Qm8k8ojNQIMx7S+Zp8u/uHOx7Qazv3Yv4q68MiWWWOJhiwG5W3x7iqmRtJo8xxrciZUY4vRxUTJCKuRnF28ZZw==" + "version": "7.4.4" }, "xml-name-validator": { "version": "3.0.0" }, "xmlchars": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", - "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==" + "version": "2.2.0" }, "y18n": { "version": "4.0.3" @@ -8604,8 +7375,6 @@ }, "yargs": { "version": "15.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", "requires": { "cliui": "^6.0.0", "decamelize": "^1.2.0", @@ -8622,8 +7391,6 @@ }, "yargs-parser": { "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", "requires": { "camelcase": "^5.0.0", "decamelize": "^1.2.0" @@ -8705,6 +7472,15 @@ "@types/yargs-parser": "*" } }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, "chalk": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", @@ -8715,6 +7491,27 @@ "supports-color": "^7.1.0" } }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, "jest-util": { "version": "25.5.0", "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-25.5.0.tgz", @@ -8748,6 +7545,15 @@ "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } } } }, @@ -8842,23 +7648,22 @@ "@types/yargs-parser": "*" } }, - "anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", "dev": true, "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" + "type-fest": "^0.21.3" } }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { - "fill-range": "^7.0.1" + "color-convert": "^2.0.1" } }, "chalk": { @@ -8871,19 +7676,25 @@ "supports-color": "^7.1.0" } }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "requires": { - "to-regex-range": "^5.0.1" + "color-name": "~1.1.4" } }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, "jest-haste-map": { @@ -8954,16 +7765,6 @@ "semver": "^6.0.0" } }, - "micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", - "dev": true, - "requires": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" - } - }, "rimraf": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", @@ -8991,13 +7792,13 @@ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "requires": { - "is-number": "^7.0.0" + "has-flag": "^4.0.0" } } } @@ -9044,6 +7845,15 @@ "@types/yargs-parser": "*" } }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, "chalk": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", @@ -9053,6 +7863,36 @@ "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } } } }, @@ -9100,6 +7940,15 @@ "@types/yargs-parser": "*" } }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, "chalk": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", @@ -9110,6 +7959,27 @@ "supports-color": "^7.1.0" } }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, "jest-util": { "version": "25.5.0", "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-25.5.0.tgz", @@ -9137,6 +8007,15 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } } } }, @@ -9182,6 +8061,15 @@ "@types/yargs-parser": "*" } }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, "chalk": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", @@ -9191,6 +8079,36 @@ "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } } } }, @@ -9282,23 +8200,13 @@ "@types/yargs-parser": "*" } }, - "anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "dev": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { - "fill-range": "^7.0.1" + "color-convert": "^2.0.1" } }, "chalk": { @@ -9311,19 +8219,25 @@ "supports-color": "^7.1.0" } }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "requires": { - "to-regex-range": "^5.0.1" + "color-name": "~1.1.4" } }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, "istanbul-lib-instrument": { @@ -9406,16 +8320,6 @@ "semver": "^6.0.0" } }, - "micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", - "dev": true, - "requires": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" - } - }, "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", @@ -9434,13 +8338,13 @@ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "requires": { - "is-number": "^7.0.0" + "has-flag": "^4.0.0" } } } @@ -9513,6 +8417,15 @@ "@types/yargs-parser": "*" } }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, "chalk": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", @@ -9522,13 +8435,43 @@ "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } - } - } - }, - "@jest/test-sequencer": { - "version": "25.5.4", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-25.5.4.tgz", - "integrity": "sha512-pTJGEkSeg1EkCO2YWq6hbFvKNXk8ejqlxiOg1jBNLnWrgXOkdY6UmqZpwGFXNnRt9B8nO1uWMzLLZ4eCmhkPNA==", + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@jest/test-sequencer": { + "version": "25.5.4", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-25.5.4.tgz", + "integrity": "sha512-pTJGEkSeg1EkCO2YWq6hbFvKNXk8ejqlxiOg1jBNLnWrgXOkdY6UmqZpwGFXNnRt9B8nO1uWMzLLZ4eCmhkPNA==", "dev": true, "requires": { "@jest/test-result": "^25.5.0", @@ -9569,23 +8512,13 @@ "@types/yargs-parser": "*" } }, - "anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "dev": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { - "fill-range": "^7.0.1" + "color-convert": "^2.0.1" } }, "chalk": { @@ -9598,19 +8531,25 @@ "supports-color": "^7.1.0" } }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "requires": { - "to-regex-range": "^5.0.1" + "color-name": "~1.1.4" } }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, "jest-haste-map": { @@ -9675,29 +8614,19 @@ "semver": "^6.0.0" } }, - "micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", - "dev": true, - "requires": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" - } - }, "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "requires": { - "is-number": "^7.0.0" + "has-flag": "^4.0.0" } } } @@ -9725,40 +8654,46 @@ "write-file-atomic": "^3.0.0" }, "dependencies": { - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { - "fill-range": "^7.0.1" + "color-convert": "^2.0.1" } }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "requires": { - "to-regex-range": "^5.0.1" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" } }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, - "micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "requires": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" + "color-name": "~1.1.4" } }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, "slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", @@ -9771,13 +8706,13 @@ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "requires": { - "is-number": "^7.0.0" + "has-flag": "^4.0.0" } } } @@ -9793,27 +8728,65 @@ "@types/node": "*", "@types/yargs": "^16.0.0", "chalk": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } } }, "@nicolo-ribaudo/chokidar-2": { - "version": "2.1.8-no-fsevents.2", - "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/chokidar-2/-/chokidar-2-2.1.8-no-fsevents.2.tgz", - "integrity": "sha512-Fb8WxUFOBQVl+CX4MWet5o7eCc6Pj04rXIwVKZ6h1NnqTo45eOQW6aWyhG25NIODvWFwTDMwBsYxrQ3imxpetg==", + "version": "2.1.8-no-fsevents.3", + "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/chokidar-2/-/chokidar-2-2.1.8-no-fsevents.3.tgz", + "integrity": "sha512-s88O1aVtXftvp5bCPB7WnmXc5IwOZZ7YPuwNPt+GtOOXpPvad1LfbmjYv+qII7zP6RU2QGnqve27dnLycEnyEQ==", "dev": true, - "optional": true, - "requires": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "glob-parent": "^5.1.2", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" - } + "optional": true }, "@sinonjs/commons": { "version": "1.8.3", @@ -9950,10 +8923,16 @@ "@types/istanbul-lib-report": "*" } }, + "@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=", + "dev": true + }, "@types/node": { - "version": "16.0.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.0.1.tgz", - "integrity": "sha512-hBOx4SUlEPKwRi6PrXuTGw1z6lz0fjsibcWCM378YxsSu/6+C30L6CR49zIBKHiwNWCYIcOLjg4OHKZaFeLAug==", + "version": "17.0.8", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.8.tgz", + "integrity": "sha512-YofkM6fGv4gDJq78g4j0mMuGMkZVxZDgtU0JRdx6FgiJDG+0fY0GKVolOV8WqVmEhLCXkQRjwDdKyPxJp/uucg==", "dev": true }, "@types/normalize-package-data": { @@ -10064,17 +9043,17 @@ } }, "ajv-formats": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.0.tgz", - "integrity": "sha512-USH2jBb+C/hIpwD2iRjp0pe0k+MvzG0mlSn/FIdCgQhUb9ALPRjt2KIQdfZDS9r0ZIeUAg7gOu9KL0PFqGqr5Q==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", "requires": { "ajv": "^8.0.0" }, "dependencies": { "ajv": { - "version": "8.6.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.1.tgz", - "integrity": "sha512-42VLtQUOLefAvKFAQIxIZDaThq6om/PrfP0CYk3/vn+y4BMNkKnbli8ON2QCiHov4KkzOSJ/xSoBJdayiiYvVQ==", + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.8.2.tgz", + "integrity": "sha512-x9VuX+R/jcFj1DHo/fCp99esgGDWiHENrKxaCENuCxpoMCmAt/COCGVDwA7kleEpEzJjDnvh3yGoOuLu0Dtllw==", "requires": { "fast-deep-equal": "^3.1.1", "json-schema-traverse": "^1.0.0", @@ -10091,13 +9070,10 @@ "dev": true }, "ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, - "requires": { - "type-fest": "^0.21.3" - } + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "dev": true }, "ansi-regex": { "version": "5.0.1", @@ -10106,50 +9082,22 @@ "dev": true }, "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { - "color-convert": "^2.0.1" - }, - "dependencies": { - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - } + "color-convert": "^1.9.0" } }, "anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", "dev": true, "requires": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - }, - "dependencies": { - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - } + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" } }, "argparse": { @@ -10196,16 +9144,16 @@ "dev": true }, "array-includes": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.3.tgz", - "integrity": "sha512-gcem1KlBU7c9rB+Rq8/3PPKsK2kjqeEBa3bD5kkQo4nYlOHQCJqIJFqBXDEfwaRuYTT4E+FxA9xez7Gf/e3Q7A==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.4.tgz", + "integrity": "sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw==", "dev": true, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.2", + "es-abstract": "^1.19.1", "get-intrinsic": "^1.1.1", - "is-string": "^1.0.5" + "is-string": "^1.0.7" } }, "array-uniq": { @@ -10220,32 +9168,31 @@ "dev": true }, "array.prototype.flat": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.4.tgz", - "integrity": "sha512-4470Xi3GAPAjZqFcljX2xzckv1qeKPizoNkiS0+O4IoPR2ZNpcjE0pkhdihlDouK+x6QOast26B4Q/O9DJnwSg==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.5.tgz", + "integrity": "sha512-KaYU+S+ndVqyUnignHftkwc58o3uVU1jzczILJ1tN2YaIZpFIKBiP/x/j97E5MVPsaCloPbqWLB/8qCTVvT2qg==", "dev": true, "requires": { - "call-bind": "^1.0.0", + "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.1" + "es-abstract": "^1.19.0" } }, "array.prototype.flatmap": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.2.4.tgz", - "integrity": "sha512-r9Z0zYoxqHz60vvQbWEdXIEtCwHF0yxaWfno9qzXeNHvfyl3BZqygmGzb84dsubyaXLH4husF+NFgMSdpZhk2Q==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.2.5.tgz", + "integrity": "sha512-08u6rVyi1Lj7oqWbS9nUxliETrtIROT4XGTA4D/LWGten6E3ocm7cy9SIrmNHOL5XVbVuckUp3X6Xyg8/zpvHA==", "dev": true, "requires": { "call-bind": "^1.0.0", "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.1", - "function-bind": "^1.1.1" + "es-abstract": "^1.19.0" } }, "asn1": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", - "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", "requires": { "safer-buffer": "~2.1.0" } @@ -10274,16 +9221,9 @@ "dev": true }, "async": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.0.tgz", - "integrity": "sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==" - }, - "async-each": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", - "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", - "dev": true, - "optional": true + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.3.tgz", + "integrity": "sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==" }, "asynckit": { "version": "0.4.0", @@ -10332,9 +9272,9 @@ "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" }, "axe-core": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.2.3.tgz", - "integrity": "sha512-pXnVMfJKSIWU2Ml4JHP7pZEPIrgBO1Fd3WGx+fPBsS+KRGhE4vxooD8XBGWbQOIVSZsVK7pUDBBkCicNu80yzQ==", + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.3.5.tgz", + "integrity": "sha512-WKTW1+xAzhMS5dJsxWkliixlO/PqC4VhmO9T4juNYcaTg9jzWiJsou6m5pxWYGfigWbwzJWeFY6z47a+4neRXA==", "dev": true }, "axobject-query": { @@ -10460,22 +9400,71 @@ "slash": "^3.0.0" }, "dependencies": { - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true - } - } - }, - "babel-minify": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/babel-minify/-/babel-minify-0.5.1.tgz", - "integrity": "sha512-ftEYu5OCDXEqaX/eINIaekPgkCaVPJNwFHzXKKARnRLggK8g4a9dEOflLKDgRNYOwhcLVoicUchZG6FYyOpqSA==", - "dev": true, - "requires": { - "@babel/core": "^7.1.0", - "babel-preset-minify": "^0.5.1", + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "babel-minify": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/babel-minify/-/babel-minify-0.5.1.tgz", + "integrity": "sha512-ftEYu5OCDXEqaX/eINIaekPgkCaVPJNwFHzXKKARnRLggK8g4a9dEOflLKDgRNYOwhcLVoicUchZG6FYyOpqSA==", + "dev": true, + "requires": { + "@babel/core": "^7.1.0", + "babel-preset-minify": "^0.5.1", "fs-readdir-recursive": "^1.1.0", "lodash": "^4.17.11", "mkdirp": "^0.5.1", @@ -10629,13 +9618,13 @@ } }, "babel-plugin-polyfill-corejs2": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.2.tgz", - "integrity": "sha512-kISrENsJ0z5dNPq5eRvcctITNHYXWOA4DUZRFYCz3jYCcvTb/A546LIddmoGNMVYg2U38OyFeNosQwI9ENTqIQ==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.0.tgz", + "integrity": "sha512-wMDoBJ6uG4u4PNFh72Ty6t3EgfA91puCuAwKIazbQlci+ENb/UU9A3xG5lutjUIiXCIn1CY5L15r9LimiJyrSA==", "dev": true, "requires": { "@babel/compat-data": "^7.13.11", - "@babel/helper-define-polyfill-provider": "^0.2.2", + "@babel/helper-define-polyfill-provider": "^0.3.0", "semver": "^6.1.1" }, "dependencies": { @@ -10648,22 +9637,22 @@ } }, "babel-plugin-polyfill-corejs3": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.2.3.tgz", - "integrity": "sha512-rCOFzEIJpJEAU14XCcV/erIf/wZQMmMT5l5vXOpL5uoznyOGfDIjPj6FVytMvtzaKSTSVKouOCTPJ5OMUZH30g==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.0.tgz", + "integrity": "sha512-Hcrgnmkf+4JTj73GbK3bBhlVPiLL47owUAnoJIf69Hakl3q+KfodbDXiZWGMM7iqCZTxCG3Z2VRfPNYES4rXqQ==", "dev": true, "requires": { - "@babel/helper-define-polyfill-provider": "^0.2.2", - "core-js-compat": "^3.14.0" + "@babel/helper-define-polyfill-provider": "^0.3.0", + "core-js-compat": "^3.20.0" } }, "babel-plugin-polyfill-regenerator": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.2.2.tgz", - "integrity": "sha512-Goy5ghsc21HgPDFtzRkSirpZVW35meGoTmTOb2bxqdl60ghub4xOidgNTHaZfQ2FaxQsKmwvXtOAkcIS4SMBWg==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.0.tgz", + "integrity": "sha512-dhAPTDLGoMW5/84wkgwiLRwMnio2i1fUe53EuvtKMv0pn2p3S8OCoV1xAzfJPl0KOX7IB89s2ib85vbYiea3jg==", "dev": true, "requires": { - "@babel/helper-define-polyfill-provider": "^0.2.2" + "@babel/helper-define-polyfill-provider": "^0.3.0" } }, "babel-plugin-transform-inline-consecutive-adds": { @@ -10930,9 +9919,9 @@ "integrity": "sha1-nGZalfiLiwj8Bc/XMfVhhZ1yWCU=" }, "binary-extensions": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", - "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", "dev": true, "optional": true }, @@ -10996,32 +9985,12 @@ } }, "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", "dev": true, "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } + "fill-range": "^7.0.1" } }, "browser-process-hrtime": { @@ -11048,16 +10017,16 @@ } }, "browserslist": { - "version": "4.16.6", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz", - "integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==", + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.19.1.tgz", + "integrity": "sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001219", - "colorette": "^1.2.2", - "electron-to-chromium": "^1.3.723", + "caniuse-lite": "^1.0.30001286", + "electron-to-chromium": "^1.4.17", "escalade": "^3.1.1", - "node-releases": "^1.1.71" + "node-releases": "^2.0.1", + "picocolors": "^1.0.0" } }, "bs58": { @@ -11088,9 +10057,9 @@ } }, "buffer-from": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true }, "cache-base": { @@ -11159,9 +10128,9 @@ "dev": true }, "caniuse-lite": { - "version": "1.0.30001243", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001243.tgz", - "integrity": "sha512-vNxw9mkTBtkmLFnJRv/2rhs1yufpDfCkBZexG3Y0xdOH2Z/eE/85E4Dl5j1YUN34nZVsSp6vVRFQRrez9wJMRA==", + "version": "1.0.30001299", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001299.tgz", + "integrity": "sha512-iujN4+x7QzqA2NCSrS5VUy+4gLmRd4xv6vbBBsmfVqTx8bLAD8097euLqQgKxSVLvxjSDcvF1T/i9ocgnUFexw==", "dev": true }, "capture-exit": { @@ -11179,19 +10148,20 @@ "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" }, "chalk": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", - "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" } }, "chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", + "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=", "dev": true }, "chokidar": { @@ -11209,83 +10179,6 @@ "is-glob": "~4.0.1", "normalize-path": "~3.0.0", "readdirp": "~3.6.0" - }, - "dependencies": { - "anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "dev": true, - "optional": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true, - "optional": true - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "optional": true, - "requires": { - "fill-range": "^7.0.1" - } - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "optional": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "optional": true, - "requires": { - "binary-extensions": "^2.0.0" - } - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "optional": true - }, - "readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "optional": true, - "requires": { - "picomatch": "^2.2.1" - } - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "optional": true, - "requires": { - "is-number": "^7.0.0" - } - } } }, "ci-info": { @@ -11339,18 +10232,18 @@ "dev": true }, "cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", "dev": true, "requires": { - "restore-cursor": "^3.1.0" + "restore-cursor": "^2.0.0" } }, "cli-width": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", - "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", + "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==", "dev": true }, "cliui": { @@ -11387,12 +10280,12 @@ } }, "color": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/color/-/color-3.0.0.tgz", - "integrity": "sha512-jCpd5+s0s0t7p3pHQKpnJ0TpQKKdleP71LWcA0aqiljpiuAkOSUFN/dyH8ZwF0hRmFlrIuRhufds1QyEP9EB+w==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz", + "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==", "requires": { - "color-convert": "^1.9.1", - "color-string": "^1.5.2" + "color-convert": "^1.9.3", + "color-string": "^1.6.0" } }, "color-convert": { @@ -11409,31 +10302,25 @@ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" }, "color-string": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.5.tgz", - "integrity": "sha512-jgIoum0OfQfq9Whcfc2z/VhCNcmQjWbey6qBX0vqt7YICflUmBCh9E9CiQD5GSJ+Uehixm3NUwHVhqUAWRivZg==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.0.tgz", + "integrity": "sha512-9Mrz2AQLefkH1UvASKj6v6hj/7eWgjnT/cVsR8CumieLoT+g900exWeNogqtweI8dxloXN9BDQTYro1oWu/5CQ==", "requires": { "color-name": "^1.0.0", "simple-swizzle": "^0.2.2" } }, - "colorette": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", - "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==", - "dev": true - }, "colors": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==" }, "colorspace": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/colorspace/-/colorspace-1.1.2.tgz", - "integrity": "sha512-vt+OoIP2d76xLhjwbBaucYlNSpPsrJWPlBTtwCpQKIu6/CSMutyzX93O/Do0qzpH3YoHEes8YEFXyZ797rEhzQ==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/colorspace/-/colorspace-1.1.4.tgz", + "integrity": "sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w==", "requires": { - "color": "3.0.x", + "color": "^3.1.3", "text-hex": "1.0.x" } }, @@ -11514,9 +10401,9 @@ } }, "confusing-browser-globals": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.10.tgz", - "integrity": "sha512-gNld/3lySHwuhaVluJUKLePYirM3QNCKzVxqAdhJII9/WXKVX5PURzMVJspS1jTslSqjeuG4KMVTSouit5YPHA==", + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz", + "integrity": "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==", "dev": true }, "convert-source-map": { @@ -11548,12 +10435,12 @@ "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==" }, "core-js-compat": { - "version": "3.15.2", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.15.2.tgz", - "integrity": "sha512-Wp+BJVvwopjI+A1EFqm2dwUmWYXrvucmtIB2LgXn/Rb+gWPKYxtmb4GKHGKG/KGF1eK9jfjzT38DITbTOCX/SQ==", + "version": "3.20.2", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.20.2.tgz", + "integrity": "sha512-qZEzVQ+5Qh6cROaTPFLNS4lkvQ6mBzE3R6A6EEpssj7Zr2egMHgsy4XapdifqJDGC9CBiNv7s+ejI96rLNQFdg==", "dev": true, "requires": { - "browserslist": "^4.16.6", + "browserslist": "^4.19.1", "semver": "7.0.0" }, "dependencies": { @@ -11566,9 +10453,9 @@ } }, "core-js-pure": { - "version": "3.15.2", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.15.2.tgz", - "integrity": "sha512-D42L7RYh1J2grW8ttxoY1+17Y4wXZeKe7uyplAI3FkNQyI5OgBIAjUfFiTPfL1rs0qLpxaabITNbjKl1Sp82tA==", + "version": "3.20.2", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.20.2.tgz", + "integrity": "sha512-CmWHvSKn2vNL6p6StNp1EmMIfVY/pqn3JLAjfZQ8WZGPOlGoO92EkX9/Mk81i6GxvoPXjUqEQnpM3rJ5QxxIOg==", "dev": true }, "core-util-is": { @@ -11662,9 +10549,9 @@ } }, "damerau-levenshtein": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.7.tgz", - "integrity": "sha512-VvdQIPGdWP0SqFXghj79Wf/5LArmreyMsGLa6FG6iC4t3j7j5s71TrwWmT/4akbDQIqjfACkLZmjXhA7g2oUZw==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", + "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", "dev": true }, "dashdash": { @@ -11693,18 +10580,18 @@ "dev": true }, "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", "dev": true, "requires": { - "ms": "2.0.0" + "ms": "2.1.2" }, "dependencies": { "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true } } @@ -11722,9 +10609,9 @@ "dev": true }, "deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true }, "deepmerge": { @@ -11866,9 +10753,9 @@ } }, "electron-to-chromium": { - "version": "1.3.770", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.770.tgz", - "integrity": "sha512-Kyh8DGK1KfEZuYKIHvuOmrKotsKZQ+qBkDIWHciE3QoFkxXB1KzPP+tfLilSHAfxTON0yYMnFCWkQtUOR7g6KQ==", + "version": "1.4.44", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.44.tgz", + "integrity": "sha512-tHGWiUUmY7GABK8+DNcr474cnZDTzD8x1736SlDosVH8+/vRJeqfaIBAEHFtMjddz/0T4rKKYsxEc8BwQRdBpw==", "dev": true }, "emoji-regex": { @@ -11915,22 +10802,26 @@ } }, "es-abstract": { - "version": "1.18.3", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.3.tgz", - "integrity": "sha512-nQIr12dxV7SSxE6r6f1l3DtAeEYdsGpps13dR0TwJg1S8gyp4ZPgy3FZcHBgbiQqnoqSTb+oC+kO4UQ0C/J8vw==", + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz", + "integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==", "dev": true, "requires": { "call-bind": "^1.0.2", "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", "get-intrinsic": "^1.1.1", + "get-symbol-description": "^1.0.0", "has": "^1.0.3", "has-symbols": "^1.0.2", - "is-callable": "^1.2.3", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.4", "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.3", - "is-string": "^1.0.6", - "object-inspect": "^1.10.3", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.1", + "is-string": "^1.0.7", + "is-weakref": "^1.0.1", + "object-inspect": "^1.11.0", "object-keys": "^1.1.1", "object.assign": "^4.1.2", "string.prototype.trimend": "^1.0.4", @@ -12041,59 +10932,12 @@ "json-schema-traverse": "^0.3.0" } }, - "ansi-escapes": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", - "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", - "dev": true - }, "ansi-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "dev": true }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "chardet": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", - "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=", - "dev": true - }, - "cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", - "dev": true, - "requires": { - "restore-cursor": "^2.0.0" - } - }, - "cli-width": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", - "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==", - "dev": true - }, "cross-spawn": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", @@ -12114,38 +10958,12 @@ "ms": "^2.1.1" } }, - "external-editor": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz", - "integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==", - "dev": true, - "requires": { - "chardet": "^0.4.0", - "iconv-lite": "^0.4.17", - "tmp": "^0.0.33" - } - }, "fast-deep-equal": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", "dev": true }, - "figures": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.5" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, "inquirer": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz", @@ -12190,37 +11008,6 @@ "yallist": "^2.1.2" } }, - "mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", - "dev": true - }, - "mute-stream": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", - "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", - "dev": true - }, - "onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", - "dev": true, - "requires": { - "mimic-fn": "^1.0.0" - } - }, - "restore-cursor": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", - "dev": true, - "requires": { - "onetime": "^2.0.0", - "signal-exit": "^3.0.2" - } - }, "shebang-command": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", @@ -12255,15 +11042,6 @@ "ansi-regex": "^3.0.0" } }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - }, "which": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", @@ -12304,17 +11082,28 @@ } }, "eslint-import-resolver-node": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz", - "integrity": "sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA==", + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz", + "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==", "dev": true, "requires": { - "debug": "^2.6.9", - "resolve": "^1.13.1" - } - }, - "eslint-loader": { - "version": "2.2.1", + "debug": "^3.2.7", + "resolve": "^1.20.0" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "eslint-loader": { + "version": "2.2.1", "resolved": "https://registry.npmjs.org/eslint-loader/-/eslint-loader-2.2.1.tgz", "integrity": "sha512-RLgV9hoCVsMLvOxCuNjdqOrUqIj9oJg8hF44vzJaYqsAHuY9G2YAeN3joQ9nxP0p5Th9iFSIpKo+SD8KISxXRg==", "dev": true, @@ -12327,13 +11116,13 @@ } }, "eslint-module-utils": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.1.tgz", - "integrity": "sha512-ZXI9B8cxAJIH4nfkhTwcRTEAnrVfobYqwjWy/QMCZ8rHkZHFjf9yO4BzpiF9kCSfNlMG54eKigISHpX0+AaT4A==", + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.2.tgz", + "integrity": "sha512-zquepFnWCY2ISMFwD/DqzaM++H+7PDzOpUvotJWm/y1BAFt5R4oeULgdrTejKqLkz7MA/tgstsUMNYc7wNdTrg==", "dev": true, "requires": { "debug": "^3.2.7", - "pkg-dir": "^2.0.0" + "find-up": "^2.1.0" }, "dependencies": { "debug": { @@ -12393,109 +11182,65 @@ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", "dev": true - }, - "pkg-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", - "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", - "dev": true, - "requires": { - "find-up": "^2.1.0" - } } } }, "eslint-plugin-import": { - "version": "2.23.4", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.23.4.tgz", - "integrity": "sha512-6/wP8zZRsnQFiR3iaPFgh5ImVRM1WN5NUWfTIRqwOdeiGJlBcSk82o1FEVq8yXmy4lkIzTo7YhHCIxlU/2HyEQ==", + "version": "2.25.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.25.4.tgz", + "integrity": "sha512-/KJBASVFxpu0xg1kIBn9AUa8hQVnszpwgE7Ld0lKAlx7Ie87yzEzCgSkekt+le/YVhiaosO4Y14GDAOc41nfxA==", "dev": true, "requires": { - "array-includes": "^3.1.3", - "array.prototype.flat": "^1.2.4", + "array-includes": "^3.1.4", + "array.prototype.flat": "^1.2.5", "debug": "^2.6.9", "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.4", - "eslint-module-utils": "^2.6.1", - "find-up": "^2.0.0", + "eslint-import-resolver-node": "^0.3.6", + "eslint-module-utils": "^2.7.2", "has": "^1.0.3", - "is-core-module": "^2.4.0", + "is-core-module": "^2.8.0", + "is-glob": "^4.0.3", "minimatch": "^3.0.4", - "object.values": "^1.1.3", - "pkg-up": "^2.0.0", - "read-pkg-up": "^3.0.0", + "object.values": "^1.1.5", "resolve": "^1.20.0", - "tsconfig-paths": "^3.9.0" + "tsconfig-paths": "^3.12.0" }, "dependencies": { - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "requires": { - "locate-path": "^2.0.0" - } - }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dev": true, - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - } - }, - "p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "requires": { - "p-try": "^1.0.0" + "ms": "2.0.0" } }, - "p-locate": { + "ms": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dev": true, - "requires": { - "p-limit": "^1.1.0" - } - }, - "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", - "dev": true - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true } } }, "eslint-plugin-jsx-a11y": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.4.1.tgz", - "integrity": "sha512-0rGPJBbwHoGNPU73/QCLP/vveMlM1b1Z9PponxO87jfr6tuH5ligXbDT6nHSSzBC8ovX2Z+BQu7Bk5D/Xgq9zg==", + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.5.1.tgz", + "integrity": "sha512-sVCFKX9fllURnXT2JwLN5Qgo24Ug5NF6dxhkmxsMEUZhXRcGg+X3e1JbJ84YePQKBl5E0ZjAH5Q4rkdcGY99+g==", "dev": true, "requires": { - "@babel/runtime": "^7.11.2", + "@babel/runtime": "^7.16.3", "aria-query": "^4.2.2", - "array-includes": "^3.1.1", + "array-includes": "^3.1.4", "ast-types-flow": "^0.0.7", - "axe-core": "^4.0.2", + "axe-core": "^4.3.5", "axobject-query": "^2.2.0", - "damerau-levenshtein": "^1.0.6", - "emoji-regex": "^9.0.0", + "damerau-levenshtein": "^1.0.7", + "emoji-regex": "^9.2.2", "has": "^1.0.3", - "jsx-ast-utils": "^3.1.0", - "language-tags": "^1.0.5" + "jsx-ast-utils": "^3.2.1", + "language-tags": "^1.0.5", + "minimatch": "^3.0.4" }, "dependencies": { "emoji-regex": { @@ -12513,25 +11258,33 @@ "dev": true }, "eslint-plugin-react": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.24.0.tgz", - "integrity": "sha512-KJJIx2SYx7PBx3ONe/mEeMz4YE0Lcr7feJTCMyyKb/341NcjuAgim3Acgan89GfPv7nxXK2+0slu0CWXYM4x+Q==", + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.28.0.tgz", + "integrity": "sha512-IOlFIRHzWfEQQKcAD4iyYDndHwTQiCMcJVJjxempf203jnNLUnW34AXLrV33+nEXoifJE2ZEGmcjKPL8957eSw==", "dev": true, "requires": { - "array-includes": "^3.1.3", - "array.prototype.flatmap": "^1.2.4", + "array-includes": "^3.1.4", + "array.prototype.flatmap": "^1.2.5", "doctrine": "^2.1.0", - "has": "^1.0.3", + "estraverse": "^5.3.0", "jsx-ast-utils": "^2.4.1 || ^3.0.0", "minimatch": "^3.0.4", - "object.entries": "^1.1.4", - "object.fromentries": "^2.0.4", - "object.values": "^1.1.4", + "object.entries": "^1.1.5", + "object.fromentries": "^2.0.5", + "object.hasown": "^1.1.0", + "object.values": "^1.1.5", "prop-types": "^15.7.2", "resolve": "^2.0.0-next.3", - "string.prototype.matchall": "^4.0.5" + "semver": "^6.3.0", + "string.prototype.matchall": "^4.0.6" }, "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + }, "resolve": { "version": "2.0.0-next.3", "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.3.tgz", @@ -12541,6 +11294,12 @@ "is-core-module": "^2.2.0", "path-parse": "^1.0.6" } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true } } }, @@ -12591,9 +11350,9 @@ }, "dependencies": { "estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true } } @@ -12608,9 +11367,9 @@ }, "dependencies": { "estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true } } @@ -12735,6 +11494,15 @@ "to-regex": "^3.0.1" }, "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, "define-property": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", @@ -12752,6 +11520,12 @@ "requires": { "is-extendable": "^0.1.0" } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true } } }, @@ -12800,6 +11574,15 @@ "@types/yargs-parser": "*" } }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, "chalk": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", @@ -12810,11 +11593,41 @@ "supports-color": "^7.1.0" } }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, "jest-regex-util": { "version": "25.2.6", "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-25.2.6.tgz", "integrity": "sha512-KQqf7a0NrtCkYmZZzodPftn7fL1cq3GQAFVMn5Hg8uKx/fIenLEobNanUxb7abQ1sjADHBseG/2FGpsv/wr+Qw==", "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } } } }, @@ -12845,13 +11658,13 @@ } }, "external-editor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz", + "integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==", "dev": true, "requires": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", + "chardet": "^0.4.0", + "iconv-lite": "^0.4.17", "tmp": "^0.0.33" } }, @@ -12941,11 +11754,6 @@ "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", "dev": true }, - "fast-safe-stringify": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz", - "integrity": "sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA==" - }, "fb-watchman": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz", @@ -12961,15 +11769,15 @@ "integrity": "sha512-MMMQ0ludy/nBs1/o0zVOiKTpG7qMbonKUzjJgQFEuvq6INZ1OraKPRAWkBq5vlKLOUMpmNYG1JoN3oDPUQ9m3Q==" }, "figlet": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/figlet/-/figlet-1.5.0.tgz", - "integrity": "sha512-ZQJM4aifMpz6H19AW1VqvZ7l4pOE9p7i/3LyxgO2kp+PO/VcDYNqIHEMtkccqIhTXMKci4kjueJr/iCQEaT/Ww==", + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/figlet/-/figlet-1.5.2.tgz", + "integrity": "sha512-WOn21V8AhyE1QqVfPIVxe3tupJacq1xGkPTB4iagT6o+P2cAgEOOwIxMftr4+ZCTI6d551ij9j61DFr0nsP2uQ==", "dev": true }, "figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", "dev": true, "requires": { "escape-string-regexp": "^1.0.5" @@ -12993,26 +11801,12 @@ "optional": true }, "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "dev": true, "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } + "to-regex-range": "^5.0.1" } }, "find-cache-dir": { @@ -13192,6 +11986,16 @@ "pump": "^3.0.0" } }, + "get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + } + }, "get-value": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", @@ -13207,9 +12011,9 @@ } }, "glob": { - "version": "7.1.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", - "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", "dev": true, "requires": { "fs.realpath": "^1.0.0", @@ -13237,9 +12041,9 @@ "dev": true }, "graceful-fs": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", - "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==", + "version": "4.2.9", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", + "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==", "dev": true }, "growly": { @@ -13314,9 +12118,9 @@ "dev": true }, "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true }, "has-symbols": { @@ -13325,6 +12129,15 @@ "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", "dev": true }, + "has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.2" + } + }, "has-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", @@ -13352,6 +12165,26 @@ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", "dev": true }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, "kind-of": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", @@ -13428,12 +12261,6 @@ "slash": "^2.0.0" }, "dependencies": { - "ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", - "dev": true - }, "find-up": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", @@ -13443,15 +12270,6 @@ "locate-path": "^3.0.0" } }, - "is-ci": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", - "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", - "dev": true, - "requires": { - "ci-info": "^2.0.0" - } - }, "locate-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", @@ -13477,12 +12295,6 @@ "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", "dev": true }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - }, "pkg-dir": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", @@ -13491,17 +12303,6 @@ "requires": { "find-up": "^3.0.0" } - }, - "read-pkg": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-4.0.1.tgz", - "integrity": "sha1-ljYlN48+HE1IyFhytabsfV0JMjc=", - "dev": true, - "requires": { - "normalize-package-data": "^2.3.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0" - } } } }, @@ -13608,47 +12409,179 @@ "string-width": "^4.1.0", "strip-ansi": "^6.0.0", "through": "^2.3.6" - } - }, - "internal-slot": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", - "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", - "dev": true, - "requires": { - "get-intrinsic": "^1.1.0", - "has": "^1.0.3", - "side-channel": "^1.0.4" - } - }, - "interpret": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", - "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", - "dev": true - }, - "invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", - "dev": true, - "requires": { - "loose-envify": "^1.0.0" - } - }, - "ip-regex": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", - "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=", - "dev": true - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" + }, + "dependencies": { + "ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "requires": { + "type-fest": "^0.21.3" + } + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "requires": { + "restore-cursor": "^3.1.0" + } + }, + "cli-width": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", + "dev": true + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "requires": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + } + }, + "figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + } + }, + "interpret": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", + "dev": true + }, + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dev": true, + "requires": { + "loose-envify": "^1.0.0" + } + }, + "ip-regex": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", + "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=", + "dev": true + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" }, "dependencies": { "is-buffer": { @@ -13674,28 +12607,32 @@ "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" }, "is-bigint": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.2.tgz", - "integrity": "sha512-0JV5+SOCQkIdzjBK9buARcV804Ddu7A0Qet6sHi3FimE9ne6m4BGQZfRn+NZiXbBk4F4XmHfDZIipLj9pX8dSA==", - "dev": true + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "requires": { + "has-bigints": "^1.0.1" + } }, "is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", "dev": true, "optional": true, "requires": { - "binary-extensions": "^1.0.0" + "binary-extensions": "^2.0.0" } }, "is-boolean-object": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.1.tgz", - "integrity": "sha512-bXdQWkECBUIAcCkeH1unwJLIpZYaa5VvuygSyS/c2lf719mTKZDU5UdDRlpd01UjADgmW8RfqaP+mRaVPdr/Ng==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", "dev": true, "requires": { - "call-bind": "^1.0.2" + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" } }, "is-buffer": { @@ -13704,9 +12641,9 @@ "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==" }, "is-callable": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", - "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", + "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", "dev": true }, "is-ci": { @@ -13727,9 +12664,9 @@ } }, "is-core-module": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.4.0.tgz", - "integrity": "sha512-6A2fkfq1rfeQZjxrZJGerpLCTHRNEBiSgnu0+obeJpEPZRUooHgsizvzv0ZjJwOz3iWIHdJtVWJ/tmPr3D21/A==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz", + "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==", "dev": true, "requires": { "has": "^1.0.3" @@ -13762,10 +12699,13 @@ } }, "is-date-object": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.4.tgz", - "integrity": "sha512-/b4ZVsG7Z5XVtIxs/h9W8nvfLgSAyKYdtGWQLbqy6jA1icmgjf8WCoTKgeS4wy5tYaPePouzFMANbnj94c2Z+A==", - "dev": true + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } }, "is-descriptor": { "version": "0.1.6", @@ -13809,8 +12749,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true, - "optional": true + "dev": true }, "is-fullwidth-code-point": { "version": "3.0.0", @@ -13825,53 +12764,35 @@ "dev": true }, "is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, - "optional": true, "requires": { "is-extglob": "^2.1.1" } }, "is-negative-zero": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", - "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", "dev": true }, "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "is-number-object": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.6.tgz", + "integrity": "sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==", "dev": true, "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } + "has-tostringtag": "^1.0.0" } }, - "is-number-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.5.tgz", - "integrity": "sha512-RU0lI/n95pMoUKu9v1BZP5MBcZuNSVJkMkAG2dJqC4z2GlkGUNeH68SuHuBKBD/XFe+LHZ+f9BKkLET60Niedw==", - "dev": true - }, "is-plain-object": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", @@ -13882,13 +12803,13 @@ } }, "is-regex": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.3.tgz", - "integrity": "sha512-qSVXFz28HM7y+IWX6vLCsexdlvzT1PJNFSBuaQLQ5o0IEw8UDYW6/2+eCMVyIsbM8CNLX2a/QWmSpyxYEHY7CQ==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", "dev": true, "requires": { "call-bind": "^1.0.2", - "has-symbols": "^1.0.2" + "has-tostringtag": "^1.0.0" } }, "is-resolvable": { @@ -13897,16 +12818,25 @@ "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", "dev": true }, + "is-shared-array-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz", + "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==", + "dev": true + }, "is-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", - "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==" + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==" }, "is-string": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.6.tgz", - "integrity": "sha512-2gdzbKUuqtQ3lYNrUTQYoClPhm7oQu4UdpSZMp1/DGgkHBT8E2Z1l0yMdb6D4zNAxwDiMv8MdulKROJGNl0Q0w==", - "dev": true + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } }, "is-symbol": { "version": "1.0.4", @@ -13922,6 +12852,15 @@ "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" }, + "is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2" + } + }, "is-windows": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", @@ -13941,7 +12880,8 @@ "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true }, "isexe": { "version": "2.0.0", @@ -13998,6 +12938,12 @@ "supports-color": "^7.1.0" }, "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, "make-dir": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", @@ -14012,6 +12958,15 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } } } }, @@ -14026,21 +12981,6 @@ "source-map": "^0.6.1" }, "dependencies": { - "debug": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", - "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -14101,6 +13041,15 @@ "@types/yargs-parser": "*" } }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, "chalk": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", @@ -14111,6 +13060,27 @@ "supports-color": "^7.1.0" } }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, "jest-cli": { "version": "25.5.4", "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-25.5.4.tgz", @@ -14160,6 +13130,15 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } } } }, @@ -14205,6 +13184,15 @@ "@types/yargs-parser": "*" } }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, "chalk": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", @@ -14215,6 +13203,21 @@ "supports-color": "^7.1.0" } }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, "execa": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/execa/-/execa-3.4.0.tgz", @@ -14242,6 +13245,18 @@ "pump": "^3.0.0" } }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, "npm-run-path": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", @@ -14251,11 +13266,29 @@ "path-key": "^3.0.0" } }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, "p-finally": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-2.0.1.tgz", "integrity": "sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw==", "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } } } }, @@ -14341,14 +13374,13 @@ "@types/yargs-parser": "*" } }, - "anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" + "color-convert": "^2.0.1" } }, "babel-jest": { @@ -14407,15 +13439,6 @@ "babel-preset-current-node-syntax": "^0.1.2" } }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, "chalk": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", @@ -14426,19 +13449,25 @@ "supports-color": "^7.1.0" } }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "requires": { - "to-regex-range": "^5.0.1" + "color-name": "~1.1.4" } }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, "jest-haste-map": { @@ -14509,16 +13538,6 @@ "semver": "^6.0.0" } }, - "micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", - "dev": true, - "requires": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" - } - }, "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", @@ -14537,13 +13556,13 @@ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "requires": { - "is-number": "^7.0.0" + "has-flag": "^4.0.0" } } } @@ -14560,6 +13579,15 @@ "pretty-format": "^25.5.0" }, "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, "chalk": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", @@ -14569,6 +13597,36 @@ "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } } } }, @@ -14625,6 +13683,15 @@ "@types/yargs-parser": "*" } }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, "chalk": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", @@ -14635,6 +13702,27 @@ "supports-color": "^7.1.0" } }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, "jest-util": { "version": "25.5.0", "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-25.5.0.tgz", @@ -14662,6 +13750,15 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } } } }, @@ -14710,6 +13807,15 @@ "@types/yargs-parser": "*" } }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, "chalk": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", @@ -14720,6 +13826,27 @@ "supports-color": "^7.1.0" } }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, "jest-util": { "version": "25.5.0", "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-25.5.0.tgz", @@ -14747,6 +13874,15 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } } } }, @@ -14795,6 +13931,15 @@ "@types/yargs-parser": "*" } }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, "chalk": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", @@ -14805,6 +13950,27 @@ "supports-color": "^7.1.0" } }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, "jest-util": { "version": "25.5.0", "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-25.5.0.tgz", @@ -14832,6 +13998,15 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } } } }, @@ -14954,13 +14129,14 @@ "@types/yargs-parser": "*" } }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", "dev": true, "requires": { - "color-convert": "^1.9.0" + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" } }, "babel-plugin-istanbul": { @@ -14975,21 +14151,62 @@ "test-exclude": "^5.2.3" } }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, "callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", "dev": true, "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } } }, "find-up": { @@ -15012,12 +14229,32 @@ "nan": "^2.12.1" } }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", "dev": true }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, "istanbul-lib-coverage": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", @@ -15137,17 +14374,6 @@ "requires": { "merge-stream": "^2.0.0", "supports-color": "^6.1.0" - }, - "dependencies": { - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } } }, "locate-path": { @@ -15160,6 +14386,36 @@ "path-exists": "^3.0.0" } }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + }, "p-locate": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", @@ -15175,6 +14431,17 @@ "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", "dev": true }, + "read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", + "dev": true, + "requires": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + } + }, "read-pkg-up": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-4.0.0.tgz", @@ -15207,9 +14474,9 @@ "dev": true }, "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", "dev": true, "requires": { "has-flag": "^3.0.0" @@ -15227,6 +14494,16 @@ "require-main-filename": "^2.0.0" } }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, "write-file-atomic": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.1.tgz", @@ -15265,61 +14542,6 @@ "jest-worker": "^27.4.6", "micromatch": "^4.0.4", "walker": "^1.0.7" - }, - "dependencies": { - "anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "dev": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, - "micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", - "dev": true, - "requires": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" - } - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } - } } }, "jest-html-reporter": { @@ -15416,6 +14638,15 @@ "@types/yargs-parser": "*" } }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, "chalk": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", @@ -15426,6 +14657,27 @@ "supports-color": "^7.1.0" } }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, "jest-util": { "version": "25.5.0", "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-25.5.0.tgz", @@ -15453,6 +14705,15 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } } } }, @@ -15478,6 +14739,15 @@ "pretty-format": "^25.5.0" }, "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, "chalk": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", @@ -15487,6 +14757,36 @@ "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } } } }, @@ -15537,13 +14837,13 @@ "@types/yargs-parser": "*" } }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { - "fill-range": "^7.0.1" + "color-convert": "^2.0.1" } }, "chalk": { @@ -15556,30 +14856,26 @@ "supports-color": "^7.1.0" } }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "requires": { - "to-regex-range": "^5.0.1" + "color-name": "~1.1.4" } }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", - "dev": true, - "requires": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" - } + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true }, "slash": { "version": "3.0.0", @@ -15587,13 +14883,13 @@ "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "requires": { - "is-number": "^7.0.0" + "has-flag": "^4.0.0" } } } @@ -15638,6 +14934,15 @@ "@types/yargs-parser": "*" } }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, "chalk": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", @@ -15647,6 +14952,36 @@ "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } } } }, @@ -15710,6 +15045,15 @@ "@types/yargs-parser": "*" } }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, "chalk": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", @@ -15720,48 +15064,26 @@ "supports-color": "^7.1.0" } }, - "parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" + "color-name": "~1.1.4" } }, - "read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", - "dev": true, - "requires": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" - }, - "dependencies": { - "type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", - "dev": true - } - } + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, - "read-pkg-up": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", - "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", - "dev": true, - "requires": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" - } + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true }, "slash": { "version": "3.0.0", @@ -15769,11 +15091,14 @@ "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true }, - "type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } } } }, @@ -15819,6 +15144,15 @@ "@types/yargs-parser": "*" } }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, "chalk": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", @@ -15829,11 +15163,41 @@ "supports-color": "^7.1.0" } }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, "jest-regex-util": { "version": "25.2.6", "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-25.2.6.tgz", "integrity": "sha512-KQqf7a0NrtCkYmZZzodPftn7fL1cq3GQAFVMn5Hg8uKx/fIenLEobNanUxb7abQ1sjADHBseG/2FGpsv/wr+Qw==", "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } } } }, @@ -15895,23 +15259,13 @@ "@types/yargs-parser": "*" } }, - "anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "dev": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { - "fill-range": "^7.0.1" + "color-convert": "^2.0.1" } }, "chalk": { @@ -15924,19 +15278,25 @@ "supports-color": "^7.1.0" } }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "requires": { - "to-regex-range": "^5.0.1" + "color-name": "~1.1.4" } }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, "jest-haste-map": { @@ -15992,23 +15352,13 @@ "supports-color": "^7.0.0" } }, - "make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "requires": { - "semver": "^6.0.0" - } - }, - "micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", "dev": true, "requires": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" + "semver": "^6.0.0" } }, "semver": { @@ -16017,13 +15367,13 @@ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "requires": { - "is-number": "^7.0.0" + "has-flag": "^4.0.0" } } } @@ -16117,23 +15467,13 @@ "@types/yargs-parser": "*" } }, - "anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "dev": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { - "fill-range": "^7.0.1" + "color-convert": "^2.0.1" } }, "chalk": { @@ -16146,19 +15486,25 @@ "supports-color": "^7.1.0" } }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "requires": { - "to-regex-range": "^5.0.1" + "color-name": "~1.1.4" } }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, "jest-haste-map": { @@ -16229,16 +15575,6 @@ "semver": "^6.0.0" } }, - "micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", - "dev": true, - "requires": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" - } - }, "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", @@ -16263,13 +15599,13 @@ "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", "dev": true }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "requires": { - "is-number": "^7.0.0" + "has-flag": "^4.0.0" } } } @@ -16338,6 +15674,15 @@ "@types/yargs-parser": "*" } }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, "chalk": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", @@ -16348,6 +15693,27 @@ "supports-color": "^7.1.0" } }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, "make-dir": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", @@ -16362,6 +15728,15 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } } } }, @@ -16377,6 +15752,57 @@ "ci-info": "^3.2.0", "graceful-fs": "^4.2.4", "picomatch": "^2.2.3" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } } }, "jest-validate": { @@ -16424,6 +15850,15 @@ "@types/yargs-parser": "*" } }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, "chalk": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", @@ -16433,6 +15868,36 @@ "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } } } }, @@ -16481,6 +15946,24 @@ "@types/yargs-parser": "*" } }, + "ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "requires": { + "type-fest": "^0.21.3" + } + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, "chalk": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", @@ -16491,6 +15974,27 @@ "supports-color": "^7.1.0" } }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, "jest-util": { "version": "25.5.0", "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-25.5.0.tgz", @@ -16518,6 +16022,15 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } } } }, @@ -16532,6 +16045,12 @@ "supports-color": "^8.0.0" }, "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, "supports-color": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", @@ -16641,9 +16160,9 @@ "dev": true }, "json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" }, "json-schema-traverse": { "version": "1.0.0", @@ -16677,23 +16196,23 @@ "dev": true }, "jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", "requires": { "assert-plus": "1.0.0", "extsprintf": "1.3.0", - "json-schema": "0.2.3", + "json-schema": "0.4.0", "verror": "1.10.0" } }, "jsx-ast-utils": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.2.0.tgz", - "integrity": "sha512-EIsmt3O3ljsU6sot/J4E1zDRxfBNrhjyf/OKjlydwgEimQuznlM4Wv7U+ueONJMyEn1WRE0K8dhi3dVAXYT24Q==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.2.1.tgz", + "integrity": "sha512-uP5vu8xfy2F9A6LGC22KO7e2/vGTS1MhP+18f++ZNlf0Ohaxbc9nIEwHAsejlJKyzfZzU5UIhe5ItYkitcZnZA==", "dev": true, "requires": { - "array-includes": "^3.1.2", + "array-includes": "^3.1.3", "object.assign": "^4.1.2" } }, @@ -16830,14 +16349,14 @@ "dev": true }, "logform": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/logform/-/logform-2.2.0.tgz", - "integrity": "sha512-N0qPlqfypFx7UHNn4B3lzS/b0uLqt2hmuoa+PpuXNYgozdJYAyauF5Ky0BWVjrxDlMWiT3qN4zPq3vVAfZy7Yg==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/logform/-/logform-2.3.2.tgz", + "integrity": "sha512-V6JiPThZzTsbVRspNO6TmHkR99oqYTs8fivMBYQkjZj6rxW92KxtDCPE6IkAk1DNBnYKNkjm4jYBm6JDUcyhOA==", "requires": { - "colors": "^1.2.1", - "fast-safe-stringify": "^2.0.4", + "colors": "1.4.0", "fecha": "^4.2.0", "ms": "^2.1.1", + "safe-stable-stringify": "^1.1.0", "triple-beam": "^1.3.0" } }, @@ -16937,43 +16456,32 @@ } }, "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", + "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.2.3" } }, "mime-db": { - "version": "1.48.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.48.0.tgz", - "integrity": "sha512-FM3QwxV+TnZYQ2aRqhlKBMHxk10lTbMt3bBkMAp54ddrNeVSfcQYOOKuGuy3Ddrm38I04If834fOUSq1yzslJQ==" + "version": "1.51.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", + "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==" }, "mime-types": { - "version": "2.1.31", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.31.tgz", - "integrity": "sha512-XGZnNzm3QvgKxa8dpzyhFTHmpP3l5YNusmne07VUOXxou9CqUqYa/HBy124RqtVh/O2pECas/MOcsDgpilPOPg==", + "version": "2.1.34", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", + "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", "requires": { - "mime-db": "1.48.0" + "mime-db": "1.51.0" } }, "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", "dev": true }, "minimatch": { @@ -17032,9 +16540,9 @@ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" }, "mute-stream": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", "dev": true }, "nan": { @@ -17115,9 +16623,9 @@ } }, "node-releases": { - "version": "1.1.73", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.73.tgz", - "integrity": "sha512-uW7fodD6pyW2FZNZnp/Z3hvWKeEW1Y8R1+1CnErE8cXFXzl5blBOoVB41CvMer6P6Q0S5FXDwcHgFd1Wj0U9zg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", + "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==", "dev": true }, "normalize-package-data": { @@ -17139,9 +16647,9 @@ "dev": true }, "npm": { - "version": "6.14.13", - "resolved": "https://registry.npmjs.org/npm/-/npm-6.14.13.tgz", - "integrity": "sha512-SRl4jJi0EBHY2xKuu98FLRMo3VhYQSA6otyLnjSEiHoSG/9shXCFNJy9tivpUJvtkN9s6VDdItHa5Rn+fNBzag==", + "version": "6.14.15", + "resolved": "https://registry.npmjs.org/npm/-/npm-6.14.15.tgz", + "integrity": "sha512-dkcQc4n+DiJAMYG2haNAMyJbmuvevjXz+WC9dCUzodw8EovwTIc6CATSsTEplCY6c0jG4OshxFGFJsrnKJguWA==", "dev": true, "requires": { "JSONStream": "^1.3.5", @@ -17253,7 +16761,7 @@ "sorted-union-stream": "~2.1.3", "ssri": "^6.0.2", "stringify-package": "^1.0.1", - "tar": "^4.4.13", + "tar": "^4.4.19", "text-table": "~0.2.0", "tiny-relative-date": "^1.3.0", "uid-number": "0.0.6", @@ -19549,7 +19057,7 @@ "dev": true }, "path-parse": { - "version": "1.0.6", + "version": "1.0.7", "bundled": true, "dev": true }, @@ -20184,17 +19692,17 @@ } }, "tar": { - "version": "4.4.13", + "version": "4.4.19", "bundled": true, "dev": true, "requires": { - "chownr": "^1.1.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.8.6", - "minizlib": "^1.2.1", - "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.2", - "yallist": "^3.0.3" + "chownr": "^1.1.4", + "fs-minipass": "^1.2.7", + "minipass": "^2.9.0", + "minizlib": "^1.3.3", + "mkdirp": "^0.5.5", + "safe-buffer": "^5.2.1", + "yallist": "^3.1.1" }, "dependencies": { "minipass": { @@ -20205,6 +19713,16 @@ "safe-buffer": "^5.1.2", "yallist": "^3.0.0" } + }, + "safe-buffer": { + "version": "5.2.1", + "bundled": true, + "dev": true + }, + "yallist": { + "version": "3.1.1", + "bundled": true, + "dev": true } } }, @@ -20745,9 +20263,9 @@ "dev": true }, "object-inspect": { - "version": "1.10.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.10.3.tgz", - "integrity": "sha512-e5mCJlSH7poANfC8z8S9s9S2IN5/4Zb3aZ33f5s8YqoazCFzNLloLU8r5VCG+G7WoqLvAAZoVMcy3tp/3X0Plw==", + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz", + "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==", "dev": true }, "object-keys": { @@ -20778,37 +20296,46 @@ } }, "object.entries": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.4.tgz", - "integrity": "sha512-h4LWKWE+wKQGhtMjZEBud7uLGhqyLwj8fpHOarZhD2uY3C9cRtk57VQ89ke3moByLXMedqs3XCHzyb4AmA2DjA==", + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.5.tgz", + "integrity": "sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g==", "dev": true, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.18.2" + "es-abstract": "^1.19.1" } }, "object.fromentries": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.4.tgz", - "integrity": "sha512-EsFBshs5RUUpQEY1D4q/m59kMfz4YJvxuNCJcv/jWwOJr34EaVnG11ZrZa0UHB3wnzV1wx8m58T4hQL8IuNXlQ==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.5.tgz", + "integrity": "sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw==", "dev": true, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.2", - "has": "^1.0.3" + "es-abstract": "^1.19.1" } }, "object.getownpropertydescriptors": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.2.tgz", - "integrity": "sha512-WtxeKSzfBjlzL+F9b7M7hewDzMwy+C8NRssHd1YrNlzHzIDrXcXiNOMrezdAEM4UXixgV+vvnyBeN7Rygl2ttQ==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.3.tgz", + "integrity": "sha512-VdDoCwvJI4QdC6ndjpqFmoL3/+HxffFBbcJzKi5hwLLqqx3mdbedRpfZDdK0SrOSauj8X4GzBvnDZl4vTN7dOw==", "dev": true, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.2" + "es-abstract": "^1.19.1" + } + }, + "object.hasown": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.0.tgz", + "integrity": "sha512-MhjYRfj3GBlhSkDHo6QmvgjRLXQ2zndabdf3nX0yTyZK9rPfxb6uRpAac8HXNLy1GpqWtZ81Qh4v3uOls2sRAg==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" } }, "object.pick": { @@ -20821,14 +20348,14 @@ } }, "object.values": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.4.tgz", - "integrity": "sha512-TnGo7j4XSnKQoK3MfvkzqKCi0nVe/D9I9IjwTNYdb/fxYHpjrluHVOgw0AF6jrRFGMPHdfuidR09tIDiIvnaSg==", + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz", + "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==", "dev": true, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.18.2" + "es-abstract": "^1.19.1" } }, "once": { @@ -20849,12 +20376,12 @@ } }, "onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", "dev": true, "requires": { - "mimic-fn": "^2.1.0" + "mimic-fn": "^1.0.0" } }, "optionator": { @@ -20996,10 +20523,16 @@ "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, "picomatch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true }, "pify": { @@ -21059,66 +20592,6 @@ } } }, - "pkg-up": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-2.0.0.tgz", - "integrity": "sha1-yBmscoBZpGHKscOImivjxJoATX8=", - "dev": true, - "requires": { - "find-up": "^2.1.0" - }, - "dependencies": { - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "requires": { - "locate-path": "^2.0.0" - } - }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dev": true, - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - } - }, - "p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, - "requires": { - "p-try": "^1.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dev": true, - "requires": { - "p-limit": "^1.1.0" - } - }, - "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", - "dev": true - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - } - } - }, "please-upgrade-node": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz", @@ -21195,6 +20668,15 @@ "@types/yargs-parser": "*" } }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, "chalk": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", @@ -21204,13 +20686,44 @@ "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } } } }, "process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true }, "progress": { "version": "2.0.3", @@ -21229,14 +20742,14 @@ } }, "prop-types": { - "version": "15.7.2", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", - "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", "dev": true, "requires": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", - "react-is": "^16.8.1" + "react-is": "^16.13.1" } }, "pseudomap": { @@ -21274,9 +20787,9 @@ } }, "qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==" }, "randexp": { "version": "0.5.3", @@ -21318,73 +20831,71 @@ "dev": true }, "read-pkg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", - "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-4.0.1.tgz", + "integrity": "sha1-ljYlN48+HE1IyFhytabsfV0JMjc=", "dev": true, "requires": { - "load-json-file": "^4.0.0", "normalize-package-data": "^2.3.2", - "path-type": "^3.0.0" + "parse-json": "^4.0.0", + "pify": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } } }, "read-pkg-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", - "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", "dev": true, "requires": { - "find-up": "^2.0.0", - "read-pkg": "^3.0.0" + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" }, "dependencies": { - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "requires": { - "locate-path": "^2.0.0" - } - }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dev": true, - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - } - }, - "p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", "dev": true, "requires": { - "p-try": "^1.0.0" + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" } }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", "dev": true, "requires": { - "p-limit": "^1.1.0" + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "dependencies": { + "type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true + } } }, - "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", - "dev": true - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", "dev": true } } @@ -21400,50 +20911,13 @@ } }, "readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "dev": true, "optional": true, "requires": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" - }, - "dependencies": { - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "optional": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true, - "optional": true - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "optional": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } + "picomatch": "^2.2.1" } }, "readline-transform": { @@ -21474,12 +20948,12 @@ "dev": true }, "regenerate-unicode-properties": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", - "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-9.0.0.tgz", + "integrity": "sha512-3E12UeNSPfjrgwjkR81m5J7Aw/T55Tu7nUyZVQYCKEOs+2dkxEY+DpPtZzO4YruuiPb7NkYLVcyJC4+zCbk5pA==", "dev": true, "requires": { - "regenerate": "^1.4.0" + "regenerate": "^1.4.2" } }, "regenerator-runtime": { @@ -21523,17 +20997,17 @@ "dev": true }, "regexpu-core": { - "version": "4.7.1", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", - "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.8.0.tgz", + "integrity": "sha512-1F6bYsoYiz6is+oz70NWur2Vlh9KWtswuRuzJOfeYUrfPX2o8n74AnUVaOGDbUqVGO9fNHu48/pjJO4sNVwsOg==", "dev": true, "requires": { - "regenerate": "^1.4.0", - "regenerate-unicode-properties": "^8.2.0", - "regjsgen": "^0.5.1", - "regjsparser": "^0.6.4", - "unicode-match-property-ecmascript": "^1.0.4", - "unicode-match-property-value-ecmascript": "^1.2.0" + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^9.0.0", + "regjsgen": "^0.5.2", + "regjsparser": "^0.7.0", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.0.0" } }, "regjsgen": { @@ -21543,9 +21017,9 @@ "dev": true }, "regjsparser": { - "version": "0.6.9", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.9.tgz", - "integrity": "sha512-ZqbNRz1SNjLAiYuwY0zoXW8Ne675IX5q+YHioAGbCw4X96Mjl2+dcX9B2ciaeyYjViDAfvIjFpQjJgLttTEERQ==", + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.7.0.tgz", + "integrity": "sha512-A4pcaORqmNMDVwUjWoTzuhwMGpP+NykpfqAsEgI1FSH/EzC7lrN5TMd+kN8YCovX+jMpu8eaqXgXPCa0g8FQNQ==", "dev": true, "requires": { "jsesc": "~0.5.0" @@ -21667,13 +21141,14 @@ } }, "resolve": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", - "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.21.0.tgz", + "integrity": "sha512-3wCbTpk5WJlyE4mSOtDLhqQmGFi0/TD9VPwmiolnk8U0wRgMEktqCXd3vy5buTO3tljvalNvKrjHEfrd2WpEKA==", "dev": true, "requires": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" + "is-core-module": "^2.8.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" } }, "resolve-cwd": { @@ -21698,12 +21173,12 @@ "dev": true }, "restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", "dev": true, "requires": { - "onetime": "^5.1.0", + "onetime": "^2.0.0", "signal-exit": "^3.0.2" } }, @@ -21794,6 +21269,11 @@ } } }, + "safe-stable-stringify": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-1.1.1.tgz", + "integrity": "sha512-ERq4hUjKDbJfE4+XtZLFPCDi8Vb1JqaxAPTxWFLBx8XcAlf9Bda/ZJdVezs/NAfsMQScyIlUMx+Yeu7P7rx5jw==" + }, "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", @@ -21814,6 +21294,136 @@ "micromatch": "^3.1.4", "minimist": "^1.1.1", "walker": "~1.0.5" + }, + "dependencies": { + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + } } }, "saxes": { @@ -21891,9 +21501,9 @@ "dev": true }, "shelljs": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.4.tgz", - "integrity": "sha512-7gk3UZ9kOfPLIAbslLzyWeGiEqx9e3rxwZM0KE6EL8GlGwjym9Mrlx5/p33bWTu9YG6vcS4MBxYZDHYr5lr8BQ==", + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", + "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", "dev": true, "requires": { "glob": "^7.0.0", @@ -21925,9 +21535,9 @@ "integrity": "sha512-J/d0r/MJlD7vG3j6FZI3/KnN+MxEmPUx2nyKNawysbl2ktisEnAWI5j0AgHM19p4xFA2vDXve4i8TQYYfi9O6Q==" }, "signal-exit": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", - "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.6.tgz", + "integrity": "sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ==", "dev": true }, "simple-swizzle": { @@ -21987,6 +21597,15 @@ "use": "^3.1.0" }, "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, "define-property": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", @@ -22004,6 +21623,12 @@ "requires": { "is-extendable": "^0.1.0" } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true } } }, @@ -22154,9 +21779,9 @@ } }, "spdx-license-ids": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.9.tgz", - "integrity": "sha512-Ki212dKK4ogX+xDo4CtOZBVIwhsKBEfsEEcwmJfLQzirgc2jIWdzg40Unxz/HzEUqM1WFzVlQSMF9kZZ2HboLQ==", + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz", + "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==", "dev": true }, "split": { @@ -22184,9 +21809,9 @@ "dev": true }, "sshpk": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", - "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", + "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", "requires": { "asn1": "~0.2.3", "assert-plus": "^1.0.0", @@ -22292,25 +21917,25 @@ } }, "string-width": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", - "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, "requires": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" + "strip-ansi": "^6.0.1" } }, "string.prototype.matchall": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.5.tgz", - "integrity": "sha512-Z5ZaXO0svs0M2xd/6By3qpeKpLKd9mO4v4q3oMEQrk8Ck4xOD5d5XeBOOjGrmVZZ/AHB1S0CgG4N5r1G9N3E2Q==", + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.6.tgz", + "integrity": "sha512-6WgDX8HmQqvEd7J+G6VtAahhsQIssiZ8zl7zKh1VDMFyL3hRTJP4FTNA3RbIp2TOQ9AYNDcc7e3fH0Qbup+DBg==", "dev": true, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.18.2", + "es-abstract": "^1.19.1", "get-intrinsic": "^1.1.1", "has-symbols": "^1.0.2", "internal-slot": "^1.0.3", @@ -22353,12 +21978,12 @@ "dev": true }, "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "requires": { - "ansi-regex": "^5.0.0" + "ansi-regex": "^5.0.1" } }, "strip-bom": { @@ -22386,12 +22011,12 @@ "dev": true }, "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, "requires": { - "has-flag": "^4.0.0" + "has-flag": "^3.0.0" } }, "supports-hyperlinks": { @@ -22402,8 +22027,31 @@ "requires": { "has-flag": "^4.0.0", "supports-color": "^7.0.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } } }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true + }, "symbol-tree": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", @@ -22442,38 +22090,12 @@ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "dev": true }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, "fast-deep-equal": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", "dev": true }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, "is-fullwidth-code-point": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", @@ -22504,15 +22126,6 @@ "requires": { "ansi-regex": "^3.0.0" } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, @@ -22524,6 +22137,17 @@ "requires": { "ansi-escapes": "^4.2.1", "supports-hyperlinks": "^2.0.0" + }, + "dependencies": { + "ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "requires": { + "type-fest": "^0.21.3" + } + } } }, "test-exclude": { @@ -22620,13 +22244,12 @@ } }, "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" + "is-number": "^7.0.0" } }, "tough-cookie": { @@ -22653,14 +22276,26 @@ "integrity": "sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw==" }, "tsconfig-paths": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.10.1.tgz", - "integrity": "sha512-rETidPDgCpltxF7MjBZlAFPUHv5aHH2MymyPvh+vEyWAED4Eb/WeMbsnD/JDr4OKPOA1TssDHgIcpTN5Kh0p6Q==", + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.12.0.tgz", + "integrity": "sha512-e5adrnOYT6zqVnWqZu7i/BQ3BnhzvGbjEjejFXO20lKIKpwTaupkCPgEfv4GZK1IBciJUEhYs3J3p75FdaTFVg==", "dev": true, "requires": { - "json5": "^2.2.0", + "@types/json5": "^0.0.29", + "json5": "^1.0.1", "minimist": "^1.2.0", "strip-bom": "^3.0.0" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + } } }, "tslib": { @@ -22741,31 +22376,31 @@ } }, "unicode-canonical-property-names-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", - "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", "dev": true }, "unicode-match-property-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", - "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", "dev": true, "requires": { - "unicode-canonical-property-names-ecmascript": "^1.0.4", - "unicode-property-aliases-ecmascript": "^1.0.4" + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" } }, "unicode-match-property-value-ecmascript": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", - "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", + "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", "dev": true }, "unicode-property-aliases-ecmascript": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", - "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", + "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", "dev": true }, "union-value": { @@ -22825,13 +22460,6 @@ } } }, - "upath": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", - "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", - "dev": true, - "optional": true - }, "uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -23025,57 +22653,29 @@ } }, "winston": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/winston/-/winston-3.3.3.tgz", - "integrity": "sha512-oEXTISQnC8VlSAKf1KYSSd7J6IWuRPQqDdo8eoRNaYKLvwSb5+79Z3Yi1lrl6KDpU6/VWaxpakDAtb1oQ4n9aw==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/winston/-/winston-3.4.0.tgz", + "integrity": "sha512-FqilVj+5HKwCfIHQzMxrrd5tBIH10JTS3koFGbLVWBODjiIYq7zir08rFyBT4rrTYG/eaTqDcfSIbcjSM78YSw==", "requires": { "@dabh/diagnostics": "^2.0.2", - "async": "^3.1.0", + "async": "^3.2.3", "is-stream": "^2.0.0", - "logform": "^2.2.0", + "logform": "^2.3.2", "one-time": "^1.0.0", "readable-stream": "^3.4.0", "stack-trace": "0.0.x", "triple-beam": "^1.3.0", - "winston-transport": "^4.4.0" + "winston-transport": "^4.4.2" } }, "winston-transport": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.4.0.tgz", - "integrity": "sha512-Lc7/p3GtqtqPBYYtS6KCN3c77/2QCev51DvcJKbkFPQNoj1sinkGwLGFDxkXY9J6p9+EPnYs+D90uwbnaiURTw==", + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.4.2.tgz", + "integrity": "sha512-9jmhltAr5ygt5usgUTQbEiw/7RYXpyUbEAFRCSicIacpUzPkrnQsQZSPGEI12aLK9Jth4zNcYJx3Cvznwrl8pw==", "requires": { - "readable-stream": "^2.3.7", + "logform": "^2.3.2", + "readable-stream": "^3.4.0", "triple-beam": "^1.2.0" - }, - "dependencies": { - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - } } }, "word-wrap": { @@ -23093,6 +22693,32 @@ "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + } } }, "wrappy": { diff --git a/package.json b/package.json index 86137ae7..2a7eddbb 100644 --- a/package.json +++ b/package.json @@ -68,7 +68,7 @@ "dependencies": { "@digitalbazaar/did-io": "^1.1.0", "@digitalbazaar/did-method-key": "^2.0.0", - "@identity.com/did-io-driver-sol": "file:/Users/william/Work/identity.com/sol-did/drivers/did-io", + "@identity.com/did-io-driver-sol": "file:/Users/william/Work/identity.com/sol-did-refresh/drivers/did-io", "@identity.com/uca": "github:identity-com/uca#v1.0.30", "ajv": "^7.2.4", "ajv-formats": "^2.0.2", diff --git a/src/index.js b/src/index.js index d7d93507..5c074ad2 100644 --- a/src/index.js +++ b/src/index.js @@ -11,7 +11,7 @@ const credentialDefinitions = require('./creds/definitions'); const aggregate = require('./AggregationHandler'); const { schemaLoader } = require('./schemas/jsonSchema'); const CVCSchemaLoader = require('./schemas/jsonSchema/loaders/cvc'); - +const signerVerifier = require('./lib/signerVerifier'); /** * Entry Point for Civic Credential Commons * @returns {CredentialCommons} @@ -32,6 +32,7 @@ function CredentialCommons() { this.schemaLoader = schemaLoader; this.CVCSchemaLoader = CVCSchemaLoader; this.UserCollectableAttribute = UserCollectableAttribute; + this.signerVerifier = signerVerifier; return this; } diff --git a/src/lib/signerVerifier.js b/src/lib/signerVerifier.js index 8575d5eb..7c73ca46 100644 --- a/src/lib/signerVerifier.js +++ b/src/lib/signerVerifier.js @@ -35,7 +35,7 @@ class Ed25519Signer { */ const signer = async (options) => { if (!options.signer && !options.keypair && !options.privateKey) { - throw new Error('Either a signer, keypair or private key is required'); + throw new Error('Either a signer, keypair or privateKey is required'); } const { verificationMethod } = options; From 59804a7d17ed028ac497176682f8bb200759c1b0 Mon Sep 17 00:00:00 2001 From: William Brooks Date: Thu, 13 Jan 2022 09:47:06 +0200 Subject: [PATCH 28/52] IDCOM-1427 Removed unnescessary export of signerVerifier --- src/index.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/index.js b/src/index.js index 5c074ad2..d7d93507 100644 --- a/src/index.js +++ b/src/index.js @@ -11,7 +11,7 @@ const credentialDefinitions = require('./creds/definitions'); const aggregate = require('./AggregationHandler'); const { schemaLoader } = require('./schemas/jsonSchema'); const CVCSchemaLoader = require('./schemas/jsonSchema/loaders/cvc'); -const signerVerifier = require('./lib/signerVerifier'); + /** * Entry Point for Civic Credential Commons * @returns {CredentialCommons} @@ -32,7 +32,6 @@ function CredentialCommons() { this.schemaLoader = schemaLoader; this.CVCSchemaLoader = CVCSchemaLoader; this.UserCollectableAttribute = UserCollectableAttribute; - this.signerVerifier = signerVerifier; return this; } From 3e641e8336e02afff885b80c4bd2c03adba14d14 Mon Sep 17 00:00:00 2001 From: William Brooks Date: Thu, 13 Jan 2022 13:13:53 +0200 Subject: [PATCH 29/52] IDCOM-1428 Initial verifier implementation --- __test__/creds/VerifiableCredential.test.js | 3 +- __test__/lib/signerVerifier.test.js | 4 +- src/creds/VerifiableCredential.js | 10 ++--- src/lib/signerVerifier.js | 42 ++++++++++++++++++++- 4 files changed, 50 insertions(+), 9 deletions(-) diff --git a/__test__/creds/VerifiableCredential.test.js b/__test__/creds/VerifiableCredential.test.js index b487a1c7..b7c5389f 100644 --- a/__test__/creds/VerifiableCredential.test.js +++ b/__test__/creds/VerifiableCredential.test.js @@ -1861,9 +1861,8 @@ describe('Signed Verifiable Credentials', () => { expect(cred).toBeDefined(); expect(cred.proof.merkleRootSignature.signature).toBeDefined(); expect(cred.proof.merkleRootSignature.verificationMethod).toBe(verificationMethod); - // TODO: re-activate this once verify is done - // expect(cred.verifyMerkletreeSignature(pubBase58)).toBeTruthy(); + expect(await cred.verifyMerkletreeSignature()).toBeTruthy(); }); test('Should not be able to sign with a removed key', async () => { diff --git a/__test__/lib/signerVerifier.test.js b/__test__/lib/signerVerifier.test.js index fdb6788e..0193aa13 100644 --- a/__test__/lib/signerVerifier.test.js +++ b/__test__/lib/signerVerifier.test.js @@ -30,7 +30,9 @@ describe('signerVerifier', () => { privateKey: privateKeyBase58(DID_SPARSE), }); - const signed = signer.sign(SIGN_DATA); + const signed = signer.sign({ + merkleRoot: SIGN_DATA, + }); expect(signed).toBeTruthy(); diff --git a/src/creds/VerifiableCredential.js b/src/creds/VerifiableCredential.js index 5df0d155..be4fbb8b 100644 --- a/src/creds/VerifiableCredential.js +++ b/src/creds/VerifiableCredential.js @@ -553,10 +553,10 @@ function VerifiableCredentialBaseConstructor(identifier, issuer, expiryIn, subje * This methods check the stand alone merkletreeSiganture * return true or false for the validation */ - this.verifyMerkletreeSignature = (pubBase58) => { - if (_.isEmpty(pubBase58)) return false; - const verifier = new CredentialSignerVerifier({ pubBase58 }); - return verifier.isSignatureValid(this); + this.verifyMerkletreeSignature = async () => { + const verifier = await signerVerifier.verifier(this.issuer, this.proof.merkleRootSignature.verificationMethod); + + return verifier.verify(this); }; /** @@ -802,7 +802,7 @@ VerifiableCredentialBaseConstructor.create = async (identifier, issuerDid, expir await schemaLoader.loadSchemaFromTitle('cvc:Meta:expirationDate'); await schemaLoader.loadSchemaFromTitle('cvc:Random:node'); - let signer; + let signer, verifier; if (signerOptions) { const canSignForIssuer = await didUtil.canSign(issuerDid, signerOptions.verificationMethod); diff --git a/src/lib/signerVerifier.js b/src/lib/signerVerifier.js index 7c73ca46..b8e13103 100644 --- a/src/lib/signerVerifier.js +++ b/src/lib/signerVerifier.js @@ -12,7 +12,7 @@ class Ed25519Signer { } sign(data) { - const signed = nacl.sign.detached(textEncoder.encode(data), bs58.decode(this.key)); + const signed = nacl.sign.detached(textEncoder.encode(data.merkleRoot), bs58.decode(this.key)); const signature = Buffer.from(signed).toString('hex'); return { @@ -22,6 +22,20 @@ class Ed25519Signer { } } +class Ed25519Verifier { + constructor(key) { + this.key = key; + } + + verify(vc) { + return nacl.sign.detached.verify( + textEncoder.encode(vc.proof.merkleRoot), + Uint8Array.from(Buffer.from(vc.proof.merkleRootSignature.signature, 'hex')), + bs58.decode(this.key), + ); + } +} + /** * Creates a signer from the provided information * @@ -74,6 +88,32 @@ const signer = async (options) => { }; }; +const verifier = async (did, verificationMethod) => { + const canSignFor = await didUtil.canSign(did, verificationMethod); + if (!canSignFor) { + // always return false if the vm cannot sign for the + return { + verify() { + return false; + }, + }; + } + + const [vmDid] = verificationMethod.split('#'); + const document = await didUtil.resolve(vmDid); + const foundMethod = didUtil.findVerificationMethod(document, verificationMethod); + + // Check the type is supported and assign the appropriate verifier + switch (foundMethod.type) { + case 'Ed25519VerificationKey2018': + case 'Ed25519VerificationKey2020': + return new Ed25519Verifier(foundMethod.publicKeyBase58); + default: + throw new Error(`Unsupported type ${foundMethod.type}`); + } +}; + module.exports = { signer, + verifier, }; From 67033a308fb749517a7a2cb4fe2aea72f4627479 Mon Sep 17 00:00:00 2001 From: William Brooks Date: Thu, 13 Jan 2022 13:28:46 +0200 Subject: [PATCH 30/52] IDCOM-1427 Updated to sign the proof object instead of an arb string --- __test__/lib/signerVerifier.test.js | 16 ++++++++-------- src/creds/VerifiableCredential.js | 7 +++---- src/lib/signerVerifier.js | 15 ++++++--------- 3 files changed, 17 insertions(+), 21 deletions(-) diff --git a/__test__/lib/signerVerifier.test.js b/__test__/lib/signerVerifier.test.js index fdb6788e..9c28fb4b 100644 --- a/__test__/lib/signerVerifier.test.js +++ b/__test__/lib/signerVerifier.test.js @@ -25,12 +25,12 @@ describe('signerVerifier', () => { it('creates a signer from a private key', async () => { const keypair = keyPair(DID_SPARSE); - const { signer } = await signerVerifier.signer({ + const signer = await signerVerifier.signer({ verificationMethod: `${DID_SPARSE}#default`, privateKey: privateKeyBase58(DID_SPARSE), }); - const signed = signer.sign(SIGN_DATA); + const signed = signer.sign({ merkleRoot: SIGN_DATA }); expect(signed).toBeTruthy(); @@ -42,12 +42,12 @@ describe('signerVerifier', () => { it('creates a signer from a keypair', async () => { const keypair = keyPair(DID_SPARSE); - const { signer } = await signerVerifier.signer({ + const signer = await signerVerifier.signer({ verificationMethod: `${DID_SPARSE}#default`, keypair, }); - const signed = signer.sign(SIGN_DATA); + const signed = signer.sign({ merkleRoot: SIGN_DATA }); expect(signed).toBeTruthy(); @@ -61,8 +61,8 @@ describe('signerVerifier', () => { const keypair = keyPair(DID_SPARSE); const customSigner = { - sign(data) { - const encodedData = textEncoder.encode(data); + sign(proof) { + const encodedData = textEncoder.encode(proof.merkleRoot); const signature = nacl.sign.detached(encodedData, keypair.secretKey); @@ -73,12 +73,12 @@ describe('signerVerifier', () => { }, }; - const { signer } = await signerVerifier.signer({ + const signer = await signerVerifier.signer({ verificationMethod, signer: customSigner, }); - const signed = signer.sign(SIGN_DATA); + const signed = signer.sign({ merkleRoot: SIGN_DATA }); expect(signed).toBeTruthy(); diff --git a/src/creds/VerifiableCredential.js b/src/creds/VerifiableCredential.js index 5df0d155..e3ef4bff 100644 --- a/src/creds/VerifiableCredential.js +++ b/src/creds/VerifiableCredential.js @@ -802,8 +802,6 @@ VerifiableCredentialBaseConstructor.create = async (identifier, issuerDid, expir await schemaLoader.loadSchemaFromTitle('cvc:Meta:expirationDate'); await schemaLoader.loadSchemaFromTitle('cvc:Random:node'); - let signer; - if (signerOptions) { const canSignForIssuer = await didUtil.canSign(issuerDid, signerOptions.verificationMethod); if (!canSignForIssuer) { @@ -812,11 +810,12 @@ VerifiableCredentialBaseConstructor.create = async (identifier, issuerDid, expir ); } - signer = await signerVerifier.signer(signerOptions); + // eslint-disable-next-line no-param-reassign + signerOptions.signer = await signerVerifier.signer(signerOptions); } const vc = new VerifiableCredentialBaseConstructor( - identifier, issuerDid, expiryIn, subject, ucas, evidence, signer, + identifier, issuerDid, expiryIn, subject, ucas, evidence, signerOptions, ); if (validate) { diff --git a/src/lib/signerVerifier.js b/src/lib/signerVerifier.js index 7c73ca46..39e72c8b 100644 --- a/src/lib/signerVerifier.js +++ b/src/lib/signerVerifier.js @@ -11,8 +11,8 @@ class Ed25519Signer { this.verificationMethod = verificationMethod; } - sign(data) { - const signed = nacl.sign.detached(textEncoder.encode(data), bs58.decode(this.key)); + sign(proof) { + const signed = nacl.sign.detached(textEncoder.encode(proof.merkleRoot), bs58.decode(this.key)); const signature = Buffer.from(signed).toString('hex'); return { @@ -39,10 +39,10 @@ const signer = async (options) => { } const { verificationMethod } = options; - let { signer: providedSigner } = options; + let { signer: signerImpl } = options; // Create a signer from keypair/key - if (!providedSigner) { + if (!signerImpl) { const [did] = verificationMethod.split('#'); const document = await didUtil.resolve(did); @@ -61,17 +61,14 @@ const signer = async (options) => { switch (foundMethod.type) { case 'Ed25519VerificationKey2018': case 'Ed25519VerificationKey2020': - providedSigner = new Ed25519Signer(privateKey, verificationMethod); + signerImpl = new Ed25519Signer(privateKey, verificationMethod); break; default: throw new Error(`Unsupported type ${foundMethod.type}`); } } - return { - verificationMethod, - signer: providedSigner, - }; + return signerImpl; }; module.exports = { From 273ed1dca3565d51f8c8f448cfbe2f94d3b86df0 Mon Sep 17 00:00:00 2001 From: William Brooks Date: Thu, 13 Jan 2022 13:45:54 +0200 Subject: [PATCH 31/52] IDCOM-1428 Updated to correctly verify a credential --- __test__/creds/VerifiableCredential.test.js | 12 +++--- __test__/lib/signerVerifier.test.js | 44 ++++++++++++++------- src/creds/VerifiableCredential.js | 1 - 3 files changed, 36 insertions(+), 21 deletions(-) diff --git a/__test__/creds/VerifiableCredential.test.js b/__test__/creds/VerifiableCredential.test.js index b7c5389f..55a53645 100644 --- a/__test__/creds/VerifiableCredential.test.js +++ b/__test__/creds/VerifiableCredential.test.js @@ -13,6 +13,7 @@ const { } = require('../../src'); const filteredCredentialJson = require('./fixtures/filteredIdDocument-v3.json'); const invalidEmailJson = require('./fixtures/CredentialEmailInvalid.json'); +const signerVerifier = require('../../src/lib/signerVerifier'); const credentialSubject = 'did:sol:J2vss1hB3kgEfQMSSdvvjwRm3JdyFWp7S7dbX5mudS4V'; @@ -1861,7 +1862,7 @@ describe('Signed Verifiable Credentials', () => { expect(cred).toBeDefined(); expect(cred.proof.merkleRootSignature.signature).toBeDefined(); expect(cred.proof.merkleRootSignature.verificationMethod).toBe(verificationMethod); - // TODO: re-activate this once verify is done + expect(await cred.verifyMerkletreeSignature()).toBeTruthy(); }); @@ -1915,8 +1916,7 @@ describe('Signed Verifiable Credentials', () => { expect(cred.proof.merkleRootSignature.verificationMethod).toBe(verificationMethod); }); - // TODO: re-activate this once verify is done - test.skip('Should verify credential(data only) signature', async () => { + test('Should verify credential(data only) signature', async () => { const verificationMethod = `${didTestUtil.DID_SPARSE}#default`; const name = await Claim.create('claim-cvc:Identity.name-v1', identityName); @@ -1938,9 +1938,9 @@ describe('Signed Verifiable Credentials', () => { expect(cred).toBeDefined(); expect(cred.proof.merkleRootSignature).toBeDefined(); - // TODO: re-actiate this once verify is done - // const dataOnlyCredential = JSON.parse(JSON.stringify(cred)); - // expect(signerVerifier.isSignatureValid(dataOnlyCredential)).toBeTruthy(); + const verifier = await signerVerifier.verifier(didTestUtil.DID_SPARSE, verificationMethod); + const dataOnlyCredential = JSON.parse(JSON.stringify(cred)); + expect(verifier.verify(dataOnlyCredential)).toBeTruthy(); }); }); describe('Referenced Schemas for Verifiable Credentials', () => { diff --git a/__test__/lib/signerVerifier.test.js b/__test__/lib/signerVerifier.test.js index 9c28fb4b..580e7a33 100644 --- a/__test__/lib/signerVerifier.test.js +++ b/__test__/lib/signerVerifier.test.js @@ -12,38 +12,40 @@ const textEncoder = new TextEncoder(); const SIGN_DATA = 'dummy_data_to_sign'; -// TODO: Replace verify with new implementation once ready -const verify = (data, signature, publicKey) => nacl.sign.detached.verify( - textEncoder.encode(data), - Uint8Array.from(Buffer.from(signature, 'hex')), - publicKey, -); - describe('signerVerifier', () => { beforeAll(mockDids); it('creates a signer from a private key', async () => { - const keypair = keyPair(DID_SPARSE); + const privateKey = privateKeyBase58(DID_SPARSE); + const verificationMethod = `${DID_SPARSE}#default`; const signer = await signerVerifier.signer({ - verificationMethod: `${DID_SPARSE}#default`, - privateKey: privateKeyBase58(DID_SPARSE), + verificationMethod, + privateKey, }); const signed = signer.sign({ merkleRoot: SIGN_DATA }); expect(signed).toBeTruthy(); - const verified = verify(SIGN_DATA, signed.signature, keypair.publicKey); + const verifier = await signerVerifier.verifier(DID_SPARSE, verificationMethod); + const verified = verifier.verify({ + issuer: DID_SPARSE, + proof: { + merkleRoot: SIGN_DATA, + merkleRootSignature: signed, + }, + }); expect(verified).toBe(true); }); it('creates a signer from a keypair', async () => { const keypair = keyPair(DID_SPARSE); + const verificationMethod = `${DID_SPARSE}#default`; const signer = await signerVerifier.signer({ - verificationMethod: `${DID_SPARSE}#default`, + verificationMethod, keypair, }); @@ -51,7 +53,14 @@ describe('signerVerifier', () => { expect(signed).toBeTruthy(); - const verified = verify(SIGN_DATA, signed.signature, keypair.publicKey); + const verifier = await signerVerifier.verifier(DID_SPARSE, verificationMethod); + const verified = verifier.verify({ + issuer: DID_SPARSE, + proof: { + merkleRoot: SIGN_DATA, + merkleRootSignature: signed, + }, + }); expect(verified).toBe(true); }); @@ -82,7 +91,14 @@ describe('signerVerifier', () => { expect(signed).toBeTruthy(); - const verified = verify(SIGN_DATA, signed.signature, keypair.publicKey); + const verifier = await signerVerifier.verifier(DID_SPARSE, verificationMethod); + const verified = verifier.verify({ + issuer: DID_SPARSE, + proof: { + merkleRoot: SIGN_DATA, + merkleRootSignature: signed, + }, + }); expect(verified).toBe(true); }); diff --git a/src/creds/VerifiableCredential.js b/src/creds/VerifiableCredential.js index f8a5b36a..1052bc06 100644 --- a/src/creds/VerifiableCredential.js +++ b/src/creds/VerifiableCredential.js @@ -16,7 +16,6 @@ const { services } = require('../services'); const time = require('../timeHelper'); const { CvcMerkleProof } = require('./CvcMerkleProof'); const { ClaimModel } = require('./ClaimModel'); -const CredentialSignerVerifier = require('./CredentialSignerVerifier'); const { schemaLoader } = require('../schemas/jsonSchema'); const { parseIdentifier } = require('../lib/stringUtils'); const signerVerifier = require('../lib/signerVerifier'); From 0b0dff10b1a167f688232df1e367d9df6f2d2760 Mon Sep 17 00:00:00 2001 From: William Brooks Date: Thu, 13 Jan 2022 14:28:02 +0200 Subject: [PATCH 32/52] IDCOM-1428 Updated compatibility class to support the old credential verifying --- __test__/creds/VerifiableCredentialProxy.test.js | 2 +- src/creds/VerifiableCredentialProxy.js | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/__test__/creds/VerifiableCredentialProxy.test.js b/__test__/creds/VerifiableCredentialProxy.test.js index e2c06311..d445d4a5 100644 --- a/__test__/creds/VerifiableCredentialProxy.test.js +++ b/__test__/creds/VerifiableCredentialProxy.test.js @@ -1863,7 +1863,7 @@ describe('Signned Verifiable Credentials', () => { new CredentialSignerVerifier({ prvBase58 })); expect(cred).toBeDefined(); expect(cred.proof.merkleRootSignature).toBeDefined(); - expect(cred.verifyMerkletreeSignature(pubBase58)).toBeTruthy(); + expect(cred.verifyMerkletreeSignature(pubBase58)).toBe(true); }); test('Should verify credential(data only) signature', async () => { diff --git a/src/creds/VerifiableCredentialProxy.js b/src/creds/VerifiableCredentialProxy.js index 08418a19..241714a5 100644 --- a/src/creds/VerifiableCredentialProxy.js +++ b/src/creds/VerifiableCredentialProxy.js @@ -1,6 +1,7 @@ const _ = require('lodash'); const VerifiableCredential = require('./VerifiableCredential'); const { schemaLoader } = require('../schemas/jsonSchema'); +const CredentialSignerVerifier = require('./CredentialSignerVerifier'); const definitions = schemaLoader.credentialDefinitions; @@ -77,6 +78,12 @@ class VerifiableCredentialProxy extends VerifiableCredential { return obj; }; + + this.verifyMerkletreeSignature = (pubBase58) => { + if (_.isEmpty(pubBase58)) return false; + const verifier = new CredentialSignerVerifier({ pubBase58 }); + return verifier.isSignatureValid(this); + }; } } From dfa0897857de4eab001602611f87cb7810825fec Mon Sep 17 00:00:00 2001 From: William Brooks Date: Thu, 13 Jan 2022 14:36:20 +0200 Subject: [PATCH 33/52] IDCOM-1428 Added a test to ensure verification fails if the issuer did is changed --- __test__/creds/VerifiableCredential.test.js | 32 ++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/__test__/creds/VerifiableCredential.test.js b/__test__/creds/VerifiableCredential.test.js index 55a53645..922be774 100644 --- a/__test__/creds/VerifiableCredential.test.js +++ b/__test__/creds/VerifiableCredential.test.js @@ -1863,7 +1863,37 @@ describe('Signed Verifiable Credentials', () => { expect(cred.proof.merkleRootSignature.signature).toBeDefined(); expect(cred.proof.merkleRootSignature.verificationMethod).toBe(verificationMethod); - expect(await cred.verifyMerkletreeSignature()).toBeTruthy(); + expect(await cred.verifyMerkletreeSignature()).toBe(true); + }); + + + test('Should fail to verify a signature if the issuer didn\'t sign', async () => { + const verificationMethod = `${didTestUtil.DID_SPARSE}#default`; + const keypair = didTestUtil.keyPair(didTestUtil.DID_SPARSE); + + const name = await Claim.create('claim-cvc:Identity.name-v1', identityName); + const dob = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', identityDateOfBirth); + + const cred = await VC.create( + 'credential-cvc:Identity-v3', + didTestUtil.DID_SPARSE, + null, + credentialSubject, + [name, dob], + null, + { + verificationMethod, + keypair, + }, + ); + + expect(cred).toBeDefined(); + expect(cred.proof.merkleRootSignature.signature).toBeDefined(); + expect(cred.proof.merkleRootSignature.verificationMethod).toBe(verificationMethod); + + cred.issuer = didTestUtil.DID_CONTROLLER; + + expect(await cred.verifyMerkletreeSignature()).toBe(false); }); test('Should not be able to sign with a removed key', async () => { From ca80daeb9edba41f14b82f4966bb4a1f1a232bad Mon Sep 17 00:00:00 2001 From: William Brooks Date: Fri, 14 Jan 2022 08:36:13 +0200 Subject: [PATCH 34/52] IDCOM-1427 Updated did-io sol driver --- package-lock.json | 6739 ++++----------------------------------------- package.json | 2 +- 2 files changed, 523 insertions(+), 6218 deletions(-) diff --git a/package-lock.json b/package-lock.json index 939e9bb6..06552fc1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19,6 +19,14 @@ "make-dir": "^2.1.0", "slash": "^2.0.0", "source-map": "^0.5.0" + }, + "dependencies": { + "commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true + } } }, "@babel/code-frame": { @@ -1130,17 +1138,8 @@ "version": "7.16.7", "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.7.tgz", "integrity": "sha512-9E9FJowqAsytyOY6LG+1KuueckRL+aQW+mKvXRXnuFGyRAyepJPmEo9vgMfXUA6O9u3IeEdv9MAkppFcaQwogQ==", - "dev": true, "requires": { "regenerator-runtime": "^0.13.4" - }, - "dependencies": { - "regenerator-runtime": { - "version": "0.13.9", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", - "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", - "dev": true - } } }, "@babel/runtime-corejs3": { @@ -1151,14 +1150,6 @@ "requires": { "core-js-pure": "^3.20.2", "regenerator-runtime": "^0.13.4" - }, - "dependencies": { - "regenerator-runtime": { - "version": "0.13.9", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", - "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", - "dev": true - } } }, "@babel/template": { @@ -1222,6180 +1213,132 @@ "integrity": "sha512-+A1YivoVDNNVCdfozHSR8v/jyuuLTMXwjWuxPFlFlUapXoGc+Gj9mDlTDDfrwl7rXCl2tNZ0kE8sIBO6YOn96Q==", "requires": { "colorspace": "1.1.x", - "enabled": "2.0.x", - "kuler": "^2.0.0" - } - }, - "@digitalbazaar/did-io": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@digitalbazaar/did-io/-/did-io-1.1.0.tgz", - "integrity": "sha512-XrM0HIukrRY6rtEM2osMbAEzXfXM6SXSKRJ2iZqTkkSdqrI1iiA3Y87CMYfqVwpwyd6WcWdzKR5SpLkbIh1+WQ==", - "requires": { - "@digitalbazaar/lru-memoize": "^2.0.0", - "esm": "^3.2.25" - } - }, - "@digitalbazaar/did-method-key": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@digitalbazaar/did-method-key/-/did-method-key-2.0.0.tgz", - "integrity": "sha512-540CsZUesyRxku72Dkl7BC/h26iFko/X+NXx1D2KQpi8cSgb6gs1PqvXEAUThszGq1y2p/6ByDKYAJhlaAG8VQ==", - "requires": { - "@digitalbazaar/did-io": "^1.0.0", - "@digitalbazaar/ed25519-verification-key-2020": "^3.0.0", - "@digitalbazaar/x25519-key-agreement-key-2019": "^5.1.1", - "@digitalbazaar/x25519-key-agreement-key-2020": "^2.0.0", - "esm": "^3.2.25" - } - }, - "@digitalbazaar/ed25519-verification-key-2020": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@digitalbazaar/ed25519-verification-key-2020/-/ed25519-verification-key-2020-3.2.0.tgz", - "integrity": "sha512-A+17sRJ+rRNuN6yG0zZMucbVUpxUkBRLTb503caoJv0GB5853HXSaZbl83kKl9LCh02ExbQWxD6o/aqeR012uA==", - "requires": { - "@stablelib/ed25519": "^1.0.1", - "base58-universal": "^1.0.0", - "base64url-universal": "^1.1.0", - "crypto-ld": "^5.1.0", - "esm": "^3.2.25" - } - }, - "@digitalbazaar/lru-memoize": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@digitalbazaar/lru-memoize/-/lru-memoize-2.1.0.tgz", - "integrity": "sha512-0M/olrKC+FQzN6ltu+JJD0YbN4oMCTDpiV9A91QYpilU0vxWCBJMx41XT9YteB8yCtFQZWd3Ky33ILVWy2/LFA==", - "requires": { - "esm": "^3.2.25", - "lru-cache": "^6.0.0" - } - }, - "@digitalbazaar/x25519-key-agreement-key-2019": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@digitalbazaar/x25519-key-agreement-key-2019/-/x25519-key-agreement-key-2019-5.1.1.tgz", - "integrity": "sha512-LGsPMbGXV3wqC6yl2fyCaEl5CCW0hGQ9yYXBYqhiExgjNiLdkF1FjNBK+IjW2p5U0ysixI9NuWiPn6SjBEIkjA==", - "requires": { - "base58-universal": "^1.0.0", - "crypto-ld": "^5.0.0", - "ed2curve": "^0.3.0", - "esm": "^3.2.25", - "tweetnacl": "^1.0.3" - } - }, - "@digitalbazaar/x25519-key-agreement-key-2020": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@digitalbazaar/x25519-key-agreement-key-2020/-/x25519-key-agreement-key-2020-2.0.0.tgz", - "integrity": "sha512-VI39m0nvQlOXi4Q3w+2YFj7XvWN145KNoZMgEWFOaA/PaIjswniKSgbY98sHtMGfN/JCqQlVeYnCMuheP5H0WQ==", - "requires": { - "base58-universal": "^1.0.0", - "crypto-ld": "^5.0.0", - "ed2curve": "^0.3.0", - "esm": "^3.2.25", - "tweetnacl": "^1.0.3" - } - }, - "@identity.com/did-io-driver-sol": { - "version": "file:../sol-did-refresh/drivers/did-io", - "requires": { - "@digitalbazaar/did-io": "^1.1.0", - "@digitalbazaar/ed25519-verification-key-2018": "^3.1.1", - "@identity.com/sol-did-client": "^1.0.0-beta", - "@solana/web3.js": "^1.21.0" - }, - "dependencies": { - "101": { - "version": "1.6.3", - "requires": { - "clone": "^1.0.2", - "deep-eql": "^0.1.3", - "keypather": "^1.10.2" - } - }, - "@babel/code-frame": { - "version": "7.12.13", - "requires": { - "@babel/highlight": "^7.12.13" - } - }, - "@babel/compat-data": { - "version": "7.13.15" - }, - "@babel/core": { - "version": "7.13.15", - "requires": { - "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.13.9", - "@babel/helper-compilation-targets": "^7.13.13", - "@babel/helper-module-transforms": "^7.13.14", - "@babel/helpers": "^7.13.10", - "@babel/parser": "^7.13.15", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.15", - "@babel/types": "^7.13.14", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.1.2", - "semver": "^6.3.0", - "source-map": "^0.5.0" - }, - "dependencies": { - "source-map": { - "version": "0.5.7" - } - } - }, - "@babel/generator": { - "version": "7.13.9", - "requires": { - "@babel/types": "^7.13.0", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" - }, - "dependencies": { - "source-map": { - "version": "0.5.7" - } - } - }, - "@babel/helper-annotate-as-pure": { - "version": "7.12.13", - "requires": { - "@babel/types": "^7.12.13" - } - }, - "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.12.13", - "requires": { - "@babel/helper-explode-assignable-expression": "^7.12.13", - "@babel/types": "^7.12.13" - } - }, - "@babel/helper-compilation-targets": { - "version": "7.13.13", - "requires": { - "@babel/compat-data": "^7.13.12", - "@babel/helper-validator-option": "^7.12.17", - "browserslist": "^4.14.5", - "semver": "^6.3.0" - } - }, - "@babel/helper-create-class-features-plugin": { - "version": "7.13.11", - "requires": { - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-member-expression-to-functions": "^7.13.0", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/helper-replace-supers": "^7.13.0", - "@babel/helper-split-export-declaration": "^7.12.13" - } - }, - "@babel/helper-create-regexp-features-plugin": { - "version": "7.12.17", - "requires": { - "@babel/helper-annotate-as-pure": "^7.12.13", - "regexpu-core": "^4.7.1" - } - }, - "@babel/helper-define-polyfill-provider": { - "version": "0.2.0", - "requires": { - "@babel/helper-compilation-targets": "^7.13.0", - "@babel/helper-module-imports": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/traverse": "^7.13.0", - "debug": "^4.1.1", - "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2", - "semver": "^6.1.2" - } - }, - "@babel/helper-explode-assignable-expression": { - "version": "7.13.0", - "requires": { - "@babel/types": "^7.13.0" - } - }, - "@babel/helper-function-name": { - "version": "7.12.13", - "requires": { - "@babel/helper-get-function-arity": "^7.12.13", - "@babel/template": "^7.12.13", - "@babel/types": "^7.12.13" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.12.13", - "requires": { - "@babel/types": "^7.12.13" - } - }, - "@babel/helper-hoist-variables": { - "version": "7.13.0", - "requires": { - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" - } - }, - "@babel/helper-member-expression-to-functions": { - "version": "7.13.12", - "requires": { - "@babel/types": "^7.13.12" - } - }, - "@babel/helper-module-imports": { - "version": "7.13.12", - "requires": { - "@babel/types": "^7.13.12" - } - }, - "@babel/helper-module-transforms": { - "version": "7.13.14", - "requires": { - "@babel/helper-module-imports": "^7.13.12", - "@babel/helper-replace-supers": "^7.13.12", - "@babel/helper-simple-access": "^7.13.12", - "@babel/helper-split-export-declaration": "^7.12.13", - "@babel/helper-validator-identifier": "^7.12.11", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.13", - "@babel/types": "^7.13.14" - } - }, - "@babel/helper-optimise-call-expression": { - "version": "7.12.13", - "requires": { - "@babel/types": "^7.12.13" - } - }, - "@babel/helper-plugin-utils": { - "version": "7.13.0" - }, - "@babel/helper-remap-async-to-generator": { - "version": "7.13.0", - "requires": { - "@babel/helper-annotate-as-pure": "^7.12.13", - "@babel/helper-wrap-function": "^7.13.0", - "@babel/types": "^7.13.0" - } - }, - "@babel/helper-replace-supers": { - "version": "7.13.12", - "requires": { - "@babel/helper-member-expression-to-functions": "^7.13.12", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.12" - } - }, - "@babel/helper-simple-access": { - "version": "7.13.12", - "requires": { - "@babel/types": "^7.13.12" - } - }, - "@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.12.1", - "requires": { - "@babel/types": "^7.12.1" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.12.13", - "requires": { - "@babel/types": "^7.12.13" - } - }, - "@babel/helper-validator-identifier": { - "version": "7.12.11" - }, - "@babel/helper-validator-option": { - "version": "7.12.17" - }, - "@babel/helper-wrap-function": { - "version": "7.13.0", - "requires": { - "@babel/helper-function-name": "^7.12.13", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" - } - }, - "@babel/helpers": { - "version": "7.13.10", - "requires": { - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" - } - }, - "@babel/highlight": { - "version": "7.13.10", - "requires": { - "@babel/helper-validator-identifier": "^7.12.11", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "color-convert": { - "version": "1.9.3", - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3" - }, - "supports-color": { - "version": "5.5.0", - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "@babel/parser": { - "version": "7.13.15" - }, - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.13.12", - "requires": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", - "@babel/plugin-proposal-optional-chaining": "^7.13.12" - } - }, - "@babel/plugin-proposal-async-generator-functions": { - "version": "7.13.15", - "requires": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-remap-async-to-generator": "^7.13.0", - "@babel/plugin-syntax-async-generators": "^7.8.4" - } - }, - "@babel/plugin-proposal-class-properties": { - "version": "7.13.0", - "requires": { - "@babel/helper-create-class-features-plugin": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0" - } - }, - "@babel/plugin-proposal-dynamic-import": { - "version": "7.13.8", - "requires": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/plugin-syntax-dynamic-import": "^7.8.3" - } - }, - "@babel/plugin-proposal-export-namespace-from": { - "version": "7.12.13", - "requires": { - "@babel/helper-plugin-utils": "^7.12.13", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" - } - }, - "@babel/plugin-proposal-json-strings": { - "version": "7.13.8", - "requires": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/plugin-syntax-json-strings": "^7.8.3" - } - }, - "@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.13.8", - "requires": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" - } - }, - "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.13.8", - "requires": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" - } - }, - "@babel/plugin-proposal-numeric-separator": { - "version": "7.12.13", - "requires": { - "@babel/helper-plugin-utils": "^7.12.13", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" - } - }, - "@babel/plugin-proposal-object-rest-spread": { - "version": "7.13.8", - "requires": { - "@babel/compat-data": "^7.13.8", - "@babel/helper-compilation-targets": "^7.13.8", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.13.0" - } - }, - "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.13.8", - "requires": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" - } - }, - "@babel/plugin-proposal-optional-chaining": { - "version": "7.13.12", - "requires": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" - } - }, - "@babel/plugin-proposal-private-methods": { - "version": "7.13.0", - "requires": { - "@babel/helper-create-class-features-plugin": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0" - } - }, - "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.12.13", - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-bigint": { - "version": "7.8.3", - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-syntax-dynamic-import": { - "version": "7.8.3", - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-export-namespace-from": { - "version": "7.8.3", - "requires": { - "@babel/helper-plugin-utils": "^7.8.3" - } - }, - "@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-top-level-await": { - "version": "7.12.13", - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-transform-arrow-functions": { - "version": "7.13.0", - "requires": { - "@babel/helper-plugin-utils": "^7.13.0" - } - }, - "@babel/plugin-transform-async-to-generator": { - "version": "7.13.0", - "requires": { - "@babel/helper-module-imports": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-remap-async-to-generator": "^7.13.0" - } - }, - "@babel/plugin-transform-block-scoped-functions": { - "version": "7.12.13", - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-transform-block-scoping": { - "version": "7.12.13", - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-transform-classes": { - "version": "7.13.0", - "requires": { - "@babel/helper-annotate-as-pure": "^7.12.13", - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-replace-supers": "^7.13.0", - "@babel/helper-split-export-declaration": "^7.12.13", - "globals": "^11.1.0" - } - }, - "@babel/plugin-transform-computed-properties": { - "version": "7.13.0", - "requires": { - "@babel/helper-plugin-utils": "^7.13.0" - } - }, - "@babel/plugin-transform-destructuring": { - "version": "7.13.0", - "requires": { - "@babel/helper-plugin-utils": "^7.13.0" - } - }, - "@babel/plugin-transform-dotall-regex": { - "version": "7.12.13", - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-transform-duplicate-keys": { - "version": "7.12.13", - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-transform-exponentiation-operator": { - "version": "7.12.13", - "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-transform-for-of": { - "version": "7.13.0", - "requires": { - "@babel/helper-plugin-utils": "^7.13.0" - } - }, - "@babel/plugin-transform-function-name": { - "version": "7.12.13", - "requires": { - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-transform-literals": { - "version": "7.12.13", - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-transform-member-expression-literals": { - "version": "7.12.13", - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-transform-modules-amd": { - "version": "7.13.0", - "requires": { - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0", - "babel-plugin-dynamic-import-node": "^2.3.3" - } - }, - "@babel/plugin-transform-modules-commonjs": { - "version": "7.13.8", - "requires": { - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-simple-access": "^7.12.13", - "babel-plugin-dynamic-import-node": "^2.3.3" - } - }, - "@babel/plugin-transform-modules-systemjs": { - "version": "7.13.8", - "requires": { - "@babel/helper-hoist-variables": "^7.13.0", - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-validator-identifier": "^7.12.11", - "babel-plugin-dynamic-import-node": "^2.3.3" - } - }, - "@babel/plugin-transform-modules-umd": { - "version": "7.13.0", - "requires": { - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0" - } - }, - "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.12.13", - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13" - } - }, - "@babel/plugin-transform-new-target": { - "version": "7.12.13", - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-transform-object-super": { - "version": "7.12.13", - "requires": { - "@babel/helper-plugin-utils": "^7.12.13", - "@babel/helper-replace-supers": "^7.12.13" - } - }, - "@babel/plugin-transform-parameters": { - "version": "7.13.0", - "requires": { - "@babel/helper-plugin-utils": "^7.13.0" - } - }, - "@babel/plugin-transform-property-literals": { - "version": "7.12.13", - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-transform-regenerator": { - "version": "7.13.15", - "requires": { - "regenerator-transform": "^0.14.2" - } - }, - "@babel/plugin-transform-reserved-words": { - "version": "7.12.13", - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-transform-shorthand-properties": { - "version": "7.12.13", - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-transform-spread": { - "version": "7.13.0", - "requires": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1" - } - }, - "@babel/plugin-transform-sticky-regex": { - "version": "7.12.13", - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-transform-template-literals": { - "version": "7.13.0", - "requires": { - "@babel/helper-plugin-utils": "^7.13.0" - } - }, - "@babel/plugin-transform-typeof-symbol": { - "version": "7.12.13", - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-transform-unicode-escapes": { - "version": "7.12.13", - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-transform-unicode-regex": { - "version": "7.12.13", - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/preset-env": { - "version": "7.13.15", - "requires": { - "@babel/compat-data": "^7.13.15", - "@babel/helper-compilation-targets": "^7.13.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-validator-option": "^7.12.17", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.13.12", - "@babel/plugin-proposal-async-generator-functions": "^7.13.15", - "@babel/plugin-proposal-class-properties": "^7.13.0", - "@babel/plugin-proposal-dynamic-import": "^7.13.8", - "@babel/plugin-proposal-export-namespace-from": "^7.12.13", - "@babel/plugin-proposal-json-strings": "^7.13.8", - "@babel/plugin-proposal-logical-assignment-operators": "^7.13.8", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.13.8", - "@babel/plugin-proposal-numeric-separator": "^7.12.13", - "@babel/plugin-proposal-object-rest-spread": "^7.13.8", - "@babel/plugin-proposal-optional-catch-binding": "^7.13.8", - "@babel/plugin-proposal-optional-chaining": "^7.13.12", - "@babel/plugin-proposal-private-methods": "^7.13.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.12.13", - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-top-level-await": "^7.12.13", - "@babel/plugin-transform-arrow-functions": "^7.13.0", - "@babel/plugin-transform-async-to-generator": "^7.13.0", - "@babel/plugin-transform-block-scoped-functions": "^7.12.13", - "@babel/plugin-transform-block-scoping": "^7.12.13", - "@babel/plugin-transform-classes": "^7.13.0", - "@babel/plugin-transform-computed-properties": "^7.13.0", - "@babel/plugin-transform-destructuring": "^7.13.0", - "@babel/plugin-transform-dotall-regex": "^7.12.13", - "@babel/plugin-transform-duplicate-keys": "^7.12.13", - "@babel/plugin-transform-exponentiation-operator": "^7.12.13", - "@babel/plugin-transform-for-of": "^7.13.0", - "@babel/plugin-transform-function-name": "^7.12.13", - "@babel/plugin-transform-literals": "^7.12.13", - "@babel/plugin-transform-member-expression-literals": "^7.12.13", - "@babel/plugin-transform-modules-amd": "^7.13.0", - "@babel/plugin-transform-modules-commonjs": "^7.13.8", - "@babel/plugin-transform-modules-systemjs": "^7.13.8", - "@babel/plugin-transform-modules-umd": "^7.13.0", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.12.13", - "@babel/plugin-transform-new-target": "^7.12.13", - "@babel/plugin-transform-object-super": "^7.12.13", - "@babel/plugin-transform-parameters": "^7.13.0", - "@babel/plugin-transform-property-literals": "^7.12.13", - "@babel/plugin-transform-regenerator": "^7.13.15", - "@babel/plugin-transform-reserved-words": "^7.12.13", - "@babel/plugin-transform-shorthand-properties": "^7.12.13", - "@babel/plugin-transform-spread": "^7.13.0", - "@babel/plugin-transform-sticky-regex": "^7.12.13", - "@babel/plugin-transform-template-literals": "^7.13.0", - "@babel/plugin-transform-typeof-symbol": "^7.12.13", - "@babel/plugin-transform-unicode-escapes": "^7.12.13", - "@babel/plugin-transform-unicode-regex": "^7.12.13", - "@babel/preset-modules": "^0.1.4", - "@babel/types": "^7.13.14", - "babel-plugin-polyfill-corejs2": "^0.2.0", - "babel-plugin-polyfill-corejs3": "^0.2.0", - "babel-plugin-polyfill-regenerator": "^0.2.0", - "core-js-compat": "^3.9.0", - "semver": "^6.3.0" - }, - "dependencies": { - "babel-plugin-polyfill-regenerator": { - "version": "0.2.0", - "requires": { - "@babel/helper-define-polyfill-provider": "^0.2.0" - } - } - } - }, - "@babel/preset-modules": { - "version": "0.1.4", - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", - "@babel/plugin-transform-dotall-regex": "^7.4.4", - "@babel/types": "^7.4.4", - "esutils": "^2.0.2" - } - }, - "@babel/runtime": { - "version": "7.13.10", - "requires": { - "regenerator-runtime": "^0.13.4" - } - }, - "@babel/runtime-corejs3": { - "version": "7.13.10", - "requires": { - "core-js-pure": "^3.0.0", - "regenerator-runtime": "^0.13.4" - } - }, - "@babel/template": { - "version": "7.12.13", - "requires": { - "@babel/code-frame": "^7.12.13", - "@babel/parser": "^7.12.13", - "@babel/types": "^7.12.13" - } - }, - "@babel/traverse": { - "version": "7.13.15", - "requires": { - "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.13.9", - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-split-export-declaration": "^7.12.13", - "@babel/parser": "^7.13.15", - "@babel/types": "^7.13.14", - "debug": "^4.1.0", - "globals": "^11.1.0" - } - }, - "@babel/types": { - "version": "7.13.14", - "requires": { - "@babel/helper-validator-identifier": "^7.12.11", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - }, - "@bcoe/v8-coverage": { - "version": "0.2.3" - }, - "@cnakazawa/watch": { - "version": "1.0.4", - "requires": { - "exec-sh": "^0.3.2", - "minimist": "^1.2.0" - } - }, - "@digitalbazaar/did-io": { - "version": "1.1.0", - "requires": { - "@digitalbazaar/lru-memoize": "^2.0.0", - "esm": "^3.2.25" - } - }, - "@digitalbazaar/did-method-key": { - "version": "2.0.0", - "requires": { - "@digitalbazaar/did-io": "^1.0.0", - "@digitalbazaar/ed25519-verification-key-2020": "^3.0.0", - "@digitalbazaar/x25519-key-agreement-key-2019": "^5.1.1", - "@digitalbazaar/x25519-key-agreement-key-2020": "^2.0.0", - "esm": "^3.2.25" - } - }, - "@digitalbazaar/ed25519-verification-key-2018": { - "version": "3.1.1", - "requires": { - "@stablelib/ed25519": "^1.0.1", - "base58-universal": "^1.0.0", - "crypto-ld": "^5.0.0", - "esm": "^3.2.25" - } - }, - "@digitalbazaar/ed25519-verification-key-2020": { - "version": "3.2.0", - "requires": { - "@stablelib/ed25519": "^1.0.1", - "base58-universal": "^1.0.0", - "base64url-universal": "^1.1.0", - "crypto-ld": "^5.1.0", - "esm": "^3.2.25" - } - }, - "@digitalbazaar/lru-memoize": { - "version": "2.1.0", - "requires": { - "esm": "^3.2.25", - "lru-cache": "^6.0.0" - } - }, - "@digitalbazaar/x25519-key-agreement-key-2019": { - "version": "5.1.1", - "requires": { - "base58-universal": "^1.0.0", - "crypto-ld": "^5.0.0", - "ed2curve": "^0.3.0", - "esm": "^3.2.25", - "tweetnacl": "^1.0.3" - } - }, - "@digitalbazaar/x25519-key-agreement-key-2020": { - "version": "2.0.0", - "requires": { - "base58-universal": "^1.0.0", - "crypto-ld": "^5.0.0", - "ed2curve": "^0.3.0", - "esm": "^3.2.25", - "tweetnacl": "^1.0.3" - } - }, - "@identity.com/sol-did-client": { - "version": "1.0.0-beta", - "requires": { - "@solana/web3.js": "^1.21.0", - "bn.js": "^4.12.0", - "borsh": "^0.3.1", - "bs58": "^4.0.1", - "did-resolver": "^3.0.1", - "ramda": "^0.27.1" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0" - } - } - }, - "@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "requires": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" - } - }, - "@istanbuljs/schema": { - "version": "0.1.3" - }, - "@jest/console": { - "version": "25.5.0", - "requires": { - "@jest/types": "^25.5.0", - "chalk": "^3.0.0", - "jest-message-util": "^25.5.0", - "jest-util": "^25.5.0", - "slash": "^3.0.0" - } - }, - "@jest/core": { - "version": "25.5.4", - "requires": { - "@jest/console": "^25.5.0", - "@jest/reporters": "^25.5.1", - "@jest/test-result": "^25.5.0", - "@jest/transform": "^25.5.1", - "@jest/types": "^25.5.0", - "ansi-escapes": "^4.2.1", - "chalk": "^3.0.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.4", - "jest-changed-files": "^25.5.0", - "jest-config": "^25.5.4", - "jest-haste-map": "^25.5.1", - "jest-message-util": "^25.5.0", - "jest-regex-util": "^25.2.6", - "jest-resolve": "^25.5.1", - "jest-resolve-dependencies": "^25.5.4", - "jest-runner": "^25.5.4", - "jest-runtime": "^25.5.4", - "jest-snapshot": "^25.5.1", - "jest-util": "^25.5.0", - "jest-validate": "^25.5.0", - "jest-watcher": "^25.5.0", - "micromatch": "^4.0.2", - "p-each-series": "^2.1.0", - "realpath-native": "^2.0.0", - "rimraf": "^3.0.0", - "slash": "^3.0.0", - "strip-ansi": "^6.0.0" - } - }, - "@jest/environment": { - "version": "25.5.0", - "requires": { - "@jest/fake-timers": "^25.5.0", - "@jest/types": "^25.5.0", - "jest-mock": "^25.5.0" - } - }, - "@jest/fake-timers": { - "version": "25.5.0", - "requires": { - "@jest/types": "^25.5.0", - "jest-message-util": "^25.5.0", - "jest-mock": "^25.5.0", - "jest-util": "^25.5.0", - "lolex": "^5.0.0" - } - }, - "@jest/globals": { - "version": "25.5.2", - "requires": { - "@jest/environment": "^25.5.0", - "@jest/types": "^25.5.0", - "expect": "^25.5.0" - } - }, - "@jest/reporters": { - "version": "25.5.1", - "requires": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^25.5.0", - "@jest/test-result": "^25.5.0", - "@jest/transform": "^25.5.1", - "@jest/types": "^25.5.0", - "chalk": "^3.0.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.2", - "graceful-fs": "^4.2.4", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^4.0.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.0.2", - "jest-haste-map": "^25.5.1", - "jest-resolve": "^25.5.1", - "jest-util": "^25.5.0", - "jest-worker": "^25.5.0", - "node-notifier": "^6.0.0", - "slash": "^3.0.0", - "source-map": "^0.6.0", - "string-length": "^3.1.0", - "terminal-link": "^2.0.0", - "v8-to-istanbul": "^4.1.3" - } - }, - "@jest/source-map": { - "version": "25.5.0", - "requires": { - "callsites": "^3.0.0", - "graceful-fs": "^4.2.4", - "source-map": "^0.6.0" - } - }, - "@jest/test-result": { - "version": "25.5.0", - "requires": { - "@jest/console": "^25.5.0", - "@jest/types": "^25.5.0", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" - } - }, - "@jest/test-sequencer": { - "version": "25.5.4", - "requires": { - "@jest/test-result": "^25.5.0", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^25.5.1", - "jest-runner": "^25.5.4", - "jest-runtime": "^25.5.4" - } - }, - "@jest/transform": { - "version": "25.5.1", - "requires": { - "@babel/core": "^7.1.0", - "@jest/types": "^25.5.0", - "babel-plugin-istanbul": "^6.0.0", - "chalk": "^3.0.0", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^25.5.1", - "jest-regex-util": "^25.2.6", - "jest-util": "^25.5.0", - "micromatch": "^4.0.2", - "pirates": "^4.0.1", - "realpath-native": "^2.0.0", - "slash": "^3.0.0", - "source-map": "^0.6.1", - "write-file-atomic": "^3.0.0" - } - }, - "@jest/types": { - "version": "25.5.0", - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^15.0.0", - "chalk": "^3.0.0" - } - }, - "@rollup/plugin-babel": { - "version": "5.3.0", - "requires": { - "@babel/helper-module-imports": "^7.10.4", - "@rollup/pluginutils": "^3.1.0" - } - }, - "@rollup/plugin-commonjs": { - "version": "11.1.0", - "requires": { - "@rollup/pluginutils": "^3.0.8", - "commondir": "^1.0.1", - "estree-walker": "^1.0.1", - "glob": "^7.1.2", - "is-reference": "^1.1.2", - "magic-string": "^0.25.2", - "resolve": "^1.11.0" - } - }, - "@rollup/plugin-json": { - "version": "4.1.0", - "requires": { - "@rollup/pluginutils": "^3.0.8" - } - }, - "@rollup/plugin-node-resolve": { - "version": "9.0.0", - "requires": { - "@rollup/pluginutils": "^3.1.0", - "@types/resolve": "1.17.1", - "builtin-modules": "^3.1.0", - "deepmerge": "^4.2.2", - "is-module": "^1.0.0", - "resolve": "^1.17.0" - } - }, - "@rollup/plugin-replace": { - "version": "2.4.2", - "requires": { - "@rollup/pluginutils": "^3.1.0", - "magic-string": "^0.25.7" - } - }, - "@rollup/pluginutils": { - "version": "3.1.0", - "requires": { - "@types/estree": "0.0.39", - "estree-walker": "^1.0.1", - "picomatch": "^2.2.2" - }, - "dependencies": { - "@types/estree": { - "version": "0.0.39" - } - } - }, - "@sinonjs/commons": { - "version": "1.8.3", - "requires": { - "type-detect": "4.0.8" - }, - "dependencies": { - "type-detect": { - "version": "4.0.8" - } - } - }, - "@solana/buffer-layout": { - "version": "3.0.0", - "requires": { - "buffer": "~6.0.3" - }, - "dependencies": { - "buffer": { - "version": "6.0.3", - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - } - } - }, - "@solana/web3.js": { - "version": "1.21.0", - "requires": { - "@babel/runtime": "^7.12.5", - "@solana/buffer-layout": "^3.0.0", - "bn.js": "^5.0.0", - "borsh": "^0.4.0", - "bs58": "^4.0.1", - "buffer": "6.0.1", - "crypto-hash": "^1.2.2", - "jayson": "^3.4.4", - "js-sha3": "^0.8.0", - "node-fetch": "^2.6.1", - "rpc-websockets": "^7.4.2", - "secp256k1": "^4.0.2", - "superstruct": "^0.14.2", - "tweetnacl": "^1.0.0" - }, - "dependencies": { - "borsh": { - "version": "0.4.0", - "requires": { - "@types/bn.js": "^4.11.5", - "bn.js": "^5.0.0", - "bs58": "^4.0.0", - "text-encoding-utf-8": "^1.0.2" - } - } - } - }, - "@stablelib/binary": { - "version": "1.0.1", - "requires": { - "@stablelib/int": "^1.0.1" - } - }, - "@stablelib/ed25519": { - "version": "1.0.2", - "requires": { - "@stablelib/random": "^1.0.1", - "@stablelib/sha512": "^1.0.1", - "@stablelib/wipe": "^1.0.1" - } - }, - "@stablelib/hash": { - "version": "1.0.1" - }, - "@stablelib/int": { - "version": "1.0.1" - }, - "@stablelib/random": { - "version": "1.0.1", - "requires": { - "@stablelib/binary": "^1.0.1", - "@stablelib/wipe": "^1.0.1" - } - }, - "@stablelib/sha512": { - "version": "1.0.1", - "requires": { - "@stablelib/binary": "^1.0.1", - "@stablelib/hash": "^1.0.1", - "@stablelib/wipe": "^1.0.1" - } - }, - "@stablelib/wipe": { - "version": "1.0.1" - }, - "@types/babel__core": { - "version": "7.1.14", - "requires": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } - }, - "@types/babel__generator": { - "version": "7.6.2", - "requires": { - "@babel/types": "^7.0.0" - } - }, - "@types/babel__template": { - "version": "7.4.0", - "requires": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "@types/babel__traverse": { - "version": "7.11.1", - "requires": { - "@babel/types": "^7.3.0" - } - }, - "@types/bn.js": { - "version": "4.11.6", - "requires": { - "@types/node": "*" - } - }, - "@types/connect": { - "version": "3.4.34", - "requires": { - "@types/node": "*" - } - }, - "@types/eslint-visitor-keys": { - "version": "1.0.0" - }, - "@types/estree": { - "version": "0.0.47" - }, - "@types/express-serve-static-core": { - "version": "4.17.19", - "requires": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*" - } - }, - "@types/graceful-fs": { - "version": "4.1.5", - "requires": { - "@types/node": "*" - } - }, - "@types/istanbul-lib-coverage": { - "version": "2.0.3" - }, - "@types/istanbul-lib-report": { - "version": "3.0.0", - "requires": { - "@types/istanbul-lib-coverage": "*" - } - }, - "@types/istanbul-reports": { - "version": "1.1.2", - "requires": { - "@types/istanbul-lib-coverage": "*", - "@types/istanbul-lib-report": "*" - } - }, - "@types/jest": { - "version": "25.2.3", - "requires": { - "jest-diff": "^25.2.1", - "pretty-format": "^25.2.1" - } - }, - "@types/json-schema": { - "version": "7.0.7" - }, - "@types/json5": { - "version": "0.0.29" - }, - "@types/lodash": { - "version": "4.14.168" - }, - "@types/node": { - "version": "14.14.41" - }, - "@types/normalize-package-data": { - "version": "2.4.0" - }, - "@types/parse-json": { - "version": "4.0.0" - }, - "@types/prettier": { - "version": "1.19.1" - }, - "@types/qs": { - "version": "6.9.6" - }, - "@types/range-parser": { - "version": "1.2.3" - }, - "@types/resolve": { - "version": "1.17.1", - "requires": { - "@types/node": "*" - } - }, - "@types/stack-utils": { - "version": "1.0.1" - }, - "@types/yargs": { - "version": "15.0.13", - "requires": { - "@types/yargs-parser": "*" - } - }, - "@types/yargs-parser": { - "version": "20.2.0" - }, - "@typescript-eslint/eslint-plugin": { - "version": "2.34.0", - "requires": { - "@typescript-eslint/experimental-utils": "2.34.0", - "functional-red-black-tree": "^1.0.1", - "regexpp": "^3.0.0", - "tsutils": "^3.17.1" - }, - "dependencies": { - "regexpp": { - "version": "3.1.0" - } - } - }, - "@typescript-eslint/experimental-utils": { - "version": "2.34.0", - "requires": { - "@types/json-schema": "^7.0.3", - "@typescript-eslint/typescript-estree": "2.34.0", - "eslint-scope": "^5.0.0", - "eslint-utils": "^2.0.0" - }, - "dependencies": { - "eslint-utils": { - "version": "2.1.0", - "requires": { - "eslint-visitor-keys": "^1.1.0" - } - } - } - }, - "@typescript-eslint/parser": { - "version": "2.34.0", - "requires": { - "@types/eslint-visitor-keys": "^1.0.0", - "@typescript-eslint/experimental-utils": "2.34.0", - "@typescript-eslint/typescript-estree": "2.34.0", - "eslint-visitor-keys": "^1.1.0" - } - }, - "@typescript-eslint/typescript-estree": { - "version": "2.34.0", - "requires": { - "debug": "^4.1.1", - "eslint-visitor-keys": "^1.1.0", - "glob": "^7.1.6", - "is-glob": "^4.0.1", - "lodash": "^4.17.15", - "semver": "^7.3.2", - "tsutils": "^3.17.1" - }, - "dependencies": { - "semver": { - "version": "7.3.5", - "requires": { - "lru-cache": "^6.0.0" - } - } - } - }, - "JSONStream": { - "version": "1.3.5", - "requires": { - "jsonparse": "^1.2.0", - "through": ">=2.2.7 <3" - } - }, - "abab": { - "version": "2.0.5" - }, - "acorn": { - "version": "7.4.1" - }, - "acorn-globals": { - "version": "4.3.4", - "requires": { - "acorn": "^6.0.1", - "acorn-walk": "^6.0.1" - }, - "dependencies": { - "acorn": { - "version": "6.4.2" - } - } - }, - "acorn-jsx": { - "version": "5.3.1" - }, - "acorn-walk": { - "version": "6.2.0" - }, - "ajv": { - "version": "6.12.6", - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ansi-colors": { - "version": "4.1.1" - }, - "ansi-escapes": { - "version": "4.3.2", - "requires": { - "type-fest": "^0.21.3" - }, - "dependencies": { - "type-fest": { - "version": "0.21.3" - } - } - }, - "ansi-regex": { - "version": "5.0.0" - }, - "ansi-styles": { - "version": "4.3.0", - "requires": { - "color-convert": "^2.0.1" - } - }, - "anymatch": { - "version": "3.1.2", - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "argparse": { - "version": "1.0.10", - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "aria-query": { - "version": "4.2.2", - "requires": { - "@babel/runtime": "^7.10.2", - "@babel/runtime-corejs3": "^7.10.2" - } - }, - "arr-diff": { - "version": "4.0.0" - }, - "arr-flatten": { - "version": "1.1.0" - }, - "arr-union": { - "version": "3.1.0" - }, - "array-equal": { - "version": "1.0.0" - }, - "array-includes": { - "version": "3.1.3", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.2", - "get-intrinsic": "^1.1.1", - "is-string": "^1.0.5" - } - }, - "array-unique": { - "version": "0.3.2" - }, - "array.prototype.flat": { - "version": "1.2.4", - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.1" - } - }, - "array.prototype.flatmap": { - "version": "1.2.4", - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.1", - "function-bind": "^1.1.1" - } - }, - "asn1": { - "version": "0.2.4", - "requires": { - "safer-buffer": "~2.1.0" - } - }, - "assert-args": { - "version": "1.2.1", - "requires": { - "101": "^1.2.0", - "compound-subject": "0.0.1", - "debug": "^2.2.0", - "get-prototype-of": "0.0.0", - "is-capitalized": "^1.0.0", - "is-class": "0.0.4" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0" - } - } - }, - "assert-plus": { - "version": "1.0.0" - }, - "assign-symbols": { - "version": "1.0.0" - }, - "ast-types-flow": { - "version": "0.0.7" - }, - "astral-regex": { - "version": "1.0.0" - }, - "asynckit": { - "version": "0.4.0" - }, - "asyncro": { - "version": "3.0.0" - }, - "at-least-node": { - "version": "1.0.0" - }, - "atob": { - "version": "2.1.2" - }, - "aws-sign2": { - "version": "0.7.0" - }, - "aws4": { - "version": "1.11.0" - }, - "axe-core": { - "version": "4.1.4" - }, - "axobject-query": { - "version": "2.2.0" - }, - "babel-eslint": { - "version": "10.1.0", - "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.7.0", - "@babel/traverse": "^7.7.0", - "@babel/types": "^7.7.0", - "eslint-visitor-keys": "^1.0.0", - "resolve": "^1.12.0" - } - }, - "babel-jest": { - "version": "25.5.1", - "requires": { - "@jest/transform": "^25.5.1", - "@jest/types": "^25.5.0", - "@types/babel__core": "^7.1.7", - "babel-plugin-istanbul": "^6.0.0", - "babel-preset-jest": "^25.5.0", - "chalk": "^3.0.0", - "graceful-fs": "^4.2.4", - "slash": "^3.0.0" - } - }, - "babel-plugin-annotate-pure-calls": { - "version": "0.4.0" - }, - "babel-plugin-dev-expression": { - "version": "0.2.2" - }, - "babel-plugin-dynamic-import-node": { - "version": "2.3.3", - "requires": { - "object.assign": "^4.1.0" - } - }, - "babel-plugin-istanbul": { - "version": "6.0.0", - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^4.0.0", - "test-exclude": "^6.0.0" - } - }, - "babel-plugin-jest-hoist": { - "version": "25.5.0", - "requires": { - "@babel/template": "^7.3.3", - "@babel/types": "^7.3.3", - "@types/babel__traverse": "^7.0.6" - } - }, - "babel-plugin-macros": { - "version": "2.8.0", - "requires": { - "@babel/runtime": "^7.7.2", - "cosmiconfig": "^6.0.0", - "resolve": "^1.12.0" - } - }, - "babel-plugin-polyfill-corejs2": { - "version": "0.2.0", - "requires": { - "@babel/compat-data": "^7.13.11", - "@babel/helper-define-polyfill-provider": "^0.2.0", - "semver": "^6.1.1" - } - }, - "babel-plugin-polyfill-corejs3": { - "version": "0.2.0", - "requires": { - "@babel/helper-define-polyfill-provider": "^0.2.0", - "core-js-compat": "^3.9.1" - } - }, - "babel-plugin-polyfill-regenerator": { - "version": "0.0.4", - "requires": { - "@babel/helper-define-polyfill-provider": "^0.0.3" - }, - "dependencies": { - "@babel/helper-define-polyfill-provider": { - "version": "0.0.3", - "requires": { - "@babel/helper-compilation-targets": "^7.10.4", - "@babel/helper-module-imports": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/traverse": "^7.11.5", - "debug": "^4.1.1", - "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2", - "semver": "^6.1.2" - } - } - } - }, - "babel-plugin-transform-rename-import": { - "version": "2.3.0" - }, - "babel-preset-current-node-syntax": { - "version": "0.1.4", - "requires": { - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-bigint": "^7.8.3", - "@babel/plugin-syntax-class-properties": "^7.8.3", - "@babel/plugin-syntax-import-meta": "^7.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.8.3", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" - } - }, - "babel-preset-jest": { - "version": "25.5.0", - "requires": { - "babel-plugin-jest-hoist": "^25.5.0", - "babel-preset-current-node-syntax": "^0.1.2" - } - }, - "balanced-match": { - "version": "1.0.2" - }, - "base": { - "version": "0.11.2", - "requires": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "requires": { - "is-descriptor": "^1.0.0" - } - } - } - }, - "base-x": { - "version": "3.0.8", - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "base58-universal": { - "version": "1.0.0", - "requires": { - "esm": "^3.2.25" - } - }, - "base64-js": { - "version": "1.5.1" - }, - "base64url": { - "version": "3.0.1" - }, - "base64url-universal": { - "version": "1.1.0", - "requires": { - "base64url": "^3.0.0" - } - }, - "bcrypt-pbkdf": { - "version": "1.0.2", - "requires": { - "tweetnacl": "^0.14.3" - }, - "dependencies": { - "tweetnacl": { - "version": "0.14.5" - } - } - }, - "bn.js": { - "version": "5.2.0" - }, - "borsh": { - "version": "0.3.1", - "requires": { - "@types/bn.js": "^4.11.5", - "bn.js": "^5.0.0", - "bs58": "^4.0.0", - "text-encoding-utf-8": "^1.0.2" - } - }, - "brace-expansion": { - "version": "1.1.11", - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "3.0.2", - "requires": { - "fill-range": "^7.0.1" - } - }, - "brorand": { - "version": "1.1.0" - }, - "browser-process-hrtime": { - "version": "1.0.0" - }, - "browser-resolve": { - "version": "1.11.3", - "requires": { - "resolve": "1.1.7" - }, - "dependencies": { - "resolve": { - "version": "1.1.7" - } - } - }, - "browserslist": { - "version": "4.16.4", - "requires": { - "caniuse-lite": "^1.0.30001208", - "colorette": "^1.2.2", - "electron-to-chromium": "^1.3.712", - "escalade": "^3.1.1", - "node-releases": "^1.1.71" - } - }, - "bs-logger": { - "version": "0.2.6", - "requires": { - "fast-json-stable-stringify": "2.x" - } - }, - "bs58": { - "version": "4.0.1", - "requires": { - "base-x": "^3.0.2" - } - }, - "bser": { - "version": "2.1.1", - "requires": { - "node-int64": "^0.4.0" - } - }, - "buffer": { - "version": "6.0.1", - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "buffer-from": { - "version": "1.1.1" - }, - "bufferutil": { - "version": "4.0.3", - "optional": true, - "requires": { - "node-gyp-build": "^4.2.0" - } - }, - "builtin-modules": { - "version": "3.2.0" - }, - "cache-base": { - "version": "1.0.1", - "requires": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - } - }, - "call-bind": { - "version": "1.0.2", - "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - } - }, - "callsites": { - "version": "3.1.0" - }, - "camelcase": { - "version": "5.3.1" - }, - "caniuse-lite": { - "version": "1.0.30001209" - }, - "capture-exit": { - "version": "2.0.0", - "requires": { - "rsvp": "^4.8.4" - } - }, - "caseless": { - "version": "0.12.0" - }, - "chalk": { - "version": "3.0.0", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "chardet": { - "version": "0.7.0" - }, - "ci-info": { - "version": "2.0.0" - }, - "circular-json": { - "version": "0.5.9" - }, - "class-utils": { - "version": "0.3.6", - "requires": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - } - }, - "cli-cursor": { - "version": "3.1.0", - "requires": { - "restore-cursor": "^3.1.0" - } - }, - "cli-spinners": { - "version": "1.3.1" - }, - "cli-width": { - "version": "3.0.0" - }, - "cliui": { - "version": "6.0.0", - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" - }, - "dependencies": { - "wrap-ansi": { - "version": "6.2.0", - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - } - } - }, - "clone": { - "version": "1.0.4" - }, - "co": { - "version": "4.6.0" - }, - "collect-v8-coverage": { - "version": "1.0.1" - }, - "collection-visit": { - "version": "1.0.0", - "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - } - }, - "color-convert": { - "version": "2.0.1", - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4" - }, - "colorette": { - "version": "1.2.2" - }, - "combined-stream": { - "version": "1.0.8", - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "commander": { - "version": "2.20.3" - }, - "commondir": { - "version": "1.0.1" - }, - "component-emitter": { - "version": "1.3.0" - }, - "compound-subject": { - "version": "0.0.1" - }, - "concat-map": { - "version": "0.0.1" - }, - "confusing-browser-globals": { - "version": "1.0.10" - }, - "contains-path": { - "version": "0.1.0" - }, - "convert-source-map": { - "version": "1.7.0", - "requires": { - "safe-buffer": "~5.1.1" - }, - "dependencies": { - "safe-buffer": { - "version": "5.1.2" - } - } - }, - "copy-descriptor": { - "version": "0.1.1" - }, - "core-js-compat": { - "version": "3.10.1", - "requires": { - "browserslist": "^4.16.3", - "semver": "7.0.0" - }, - "dependencies": { - "semver": { - "version": "7.0.0" - } - } - }, - "core-js-pure": { - "version": "3.10.1" - }, - "core-util-is": { - "version": "1.0.2" - }, - "cosmiconfig": { - "version": "6.0.0", - "requires": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.1.0", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.7.2" - } - }, - "cross-spawn": { - "version": "6.0.5", - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - }, - "dependencies": { - "semver": { - "version": "5.7.1" - } - } - }, - "crypto-hash": { - "version": "1.3.0" - }, - "crypto-ld": { - "version": "5.1.0" - }, - "cssom": { - "version": "0.4.4" - }, - "cssstyle": { - "version": "2.3.0", - "requires": { - "cssom": "~0.3.6" - }, - "dependencies": { - "cssom": { - "version": "0.3.8" - } - } - }, - "damerau-levenshtein": { - "version": "1.0.6" - }, - "dashdash": { - "version": "1.14.1", - "requires": { - "assert-plus": "^1.0.0" - } - }, - "data-urls": { - "version": "1.1.0", - "requires": { - "abab": "^2.0.0", - "whatwg-mimetype": "^2.2.0", - "whatwg-url": "^7.0.0" - } - }, - "debug": { - "version": "4.3.1", - "requires": { - "ms": "2.1.2" - } - }, - "decamelize": { - "version": "1.2.0" - }, - "decode-uri-component": { - "version": "0.2.0" - }, - "deep-eql": { - "version": "0.1.3", - "requires": { - "type-detect": "0.1.1" - } - }, - "deep-is": { - "version": "0.1.3" - }, - "deepmerge": { - "version": "4.2.2" - }, - "defaults": { - "version": "1.0.3", - "requires": { - "clone": "^1.0.2" - } - }, - "define-properties": { - "version": "1.1.3", - "requires": { - "object-keys": "^1.0.12" - } - }, - "define-property": { - "version": "0.2.5", - "requires": { - "is-descriptor": "^0.1.0" - }, - "dependencies": { - "is-accessor-descriptor": { - "version": "0.1.6", - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - } - }, - "kind-of": { - "version": "5.1.0" - } - } - }, - "delayed-stream": { - "version": "1.0.0" - }, - "detect-newline": { - "version": "3.1.0" - }, - "did-resolver": { - "version": "3.1.0" - }, - "diff-sequences": { - "version": "25.2.6" - }, - "doctrine": { - "version": "1.5.0", - "requires": { - "esutils": "^2.0.2", - "isarray": "^1.0.0" - } - }, - "domexception": { - "version": "1.0.1", - "requires": { - "webidl-conversions": "^4.0.2" - } - }, - "ecc-jsbn": { - "version": "0.1.2", - "requires": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, - "ed2curve": { - "version": "0.3.0", - "requires": { - "tweetnacl": "1.x.x" - } - }, - "electron-to-chromium": { - "version": "1.3.717" - }, - "elliptic": { - "version": "6.5.4", - "requires": { - "bn.js": "^4.11.9", - "brorand": "^1.1.0", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.1", - "inherits": "^2.0.4", - "minimalistic-assert": "^1.0.1", - "minimalistic-crypto-utils": "^1.0.1" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0" - } - } - }, - "emoji-regex": { - "version": "8.0.0" - }, - "end-of-stream": { - "version": "1.4.4", - "requires": { - "once": "^1.4.0" - } - }, - "enquirer": { - "version": "2.3.6", - "requires": { - "ansi-colors": "^4.1.1" - } - }, - "error-ex": { - "version": "1.3.2", - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "es-abstract": { - "version": "1.18.0", - "requires": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.2", - "is-callable": "^1.2.3", - "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.2", - "is-string": "^1.0.5", - "object-inspect": "^1.9.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "string.prototype.trimend": "^1.0.4", - "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.0" - } - }, - "es-to-primitive": { - "version": "1.2.1", - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "es6-promise": { - "version": "4.2.8" - }, - "es6-promisify": { - "version": "5.0.0", - "requires": { - "es6-promise": "^4.0.3" - } - }, - "escalade": { - "version": "3.1.1" - }, - "escape-string-regexp": { - "version": "1.0.5" - }, - "escodegen": { - "version": "1.14.3", - "requires": { - "esprima": "^4.0.1", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.6.1" - } - }, - "eslint": { - "version": "6.8.0", - "requires": { - "@babel/code-frame": "^7.0.0", - "ajv": "^6.10.0", - "chalk": "^2.1.0", - "cross-spawn": "^6.0.5", - "debug": "^4.0.1", - "doctrine": "^3.0.0", - "eslint-scope": "^5.0.0", - "eslint-utils": "^1.4.3", - "eslint-visitor-keys": "^1.1.0", - "espree": "^6.1.2", - "esquery": "^1.0.1", - "esutils": "^2.0.2", - "file-entry-cache": "^5.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.0.0", - "globals": "^12.1.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "inquirer": "^7.0.0", - "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.3.0", - "lodash": "^4.17.14", - "minimatch": "^3.0.4", - "mkdirp": "^0.5.1", - "natural-compare": "^1.4.0", - "optionator": "^0.8.3", - "progress": "^2.0.0", - "regexpp": "^2.0.1", - "semver": "^6.1.2", - "strip-ansi": "^5.2.0", - "strip-json-comments": "^3.0.1", - "table": "^5.2.3", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0" - }, - "ansi-styles": { - "version": "3.2.1", - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "color-convert": { - "version": "1.9.3", - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3" - }, - "doctrine": { - "version": "3.0.0", - "requires": { - "esutils": "^2.0.2" - } - }, - "globals": { - "version": "12.4.0", - "requires": { - "type-fest": "^0.8.1" - } - }, - "strip-ansi": { - "version": "5.2.0", - "requires": { - "ansi-regex": "^4.1.0" - } - }, - "supports-color": { - "version": "5.5.0", - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "eslint-config-prettier": { - "version": "6.15.0", - "requires": { - "get-stdin": "^6.0.0" - } - }, - "eslint-config-react-app": { - "version": "5.2.1", - "requires": { - "confusing-browser-globals": "^1.0.9" - } - }, - "eslint-import-resolver-node": { - "version": "0.3.4", - "requires": { - "debug": "^2.6.9", - "resolve": "^1.13.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0" - } - } - }, - "eslint-module-utils": { - "version": "2.6.0", - "requires": { - "debug": "^2.6.9", - "pkg-dir": "^2.0.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "requires": { - "ms": "2.0.0" - } - }, - "find-up": { - "version": "2.1.0", - "requires": { - "locate-path": "^2.0.0" - } - }, - "locate-path": { - "version": "2.0.0", - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - } - }, - "ms": { - "version": "2.0.0" - }, - "p-limit": { - "version": "1.3.0", - "requires": { - "p-try": "^1.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "requires": { - "p-limit": "^1.1.0" - } - }, - "p-try": { - "version": "1.0.0" - }, - "path-exists": { - "version": "3.0.0" - }, - "pkg-dir": { - "version": "2.0.0", - "requires": { - "find-up": "^2.1.0" - } - } - } - }, - "eslint-plugin-flowtype": { - "version": "3.13.0", - "requires": { - "lodash": "^4.17.15" - } - }, - "eslint-plugin-import": { - "version": "2.22.1", - "requires": { - "array-includes": "^3.1.1", - "array.prototype.flat": "^1.2.3", - "contains-path": "^0.1.0", - "debug": "^2.6.9", - "doctrine": "1.5.0", - "eslint-import-resolver-node": "^0.3.4", - "eslint-module-utils": "^2.6.0", - "has": "^1.0.3", - "minimatch": "^3.0.4", - "object.values": "^1.1.1", - "read-pkg-up": "^2.0.0", - "resolve": "^1.17.0", - "tsconfig-paths": "^3.9.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0" - } - } - }, - "eslint-plugin-jsx-a11y": { - "version": "6.4.1", - "requires": { - "@babel/runtime": "^7.11.2", - "aria-query": "^4.2.2", - "array-includes": "^3.1.1", - "ast-types-flow": "^0.0.7", - "axe-core": "^4.0.2", - "axobject-query": "^2.2.0", - "damerau-levenshtein": "^1.0.6", - "emoji-regex": "^9.0.0", - "has": "^1.0.3", - "jsx-ast-utils": "^3.1.0", - "language-tags": "^1.0.5" - }, - "dependencies": { - "emoji-regex": { - "version": "9.2.2" - } - } - }, - "eslint-plugin-prettier": { - "version": "3.4.0", - "requires": { - "prettier-linter-helpers": "^1.0.0" - } - }, - "eslint-plugin-react": { - "version": "7.23.2", - "requires": { - "array-includes": "^3.1.3", - "array.prototype.flatmap": "^1.2.4", - "doctrine": "^2.1.0", - "has": "^1.0.3", - "jsx-ast-utils": "^2.4.1 || ^3.0.0", - "minimatch": "^3.0.4", - "object.entries": "^1.1.3", - "object.fromentries": "^2.0.4", - "object.values": "^1.1.3", - "prop-types": "^15.7.2", - "resolve": "^2.0.0-next.3", - "string.prototype.matchall": "^4.0.4" - }, - "dependencies": { - "doctrine": { - "version": "2.1.0", - "requires": { - "esutils": "^2.0.2" - } - }, - "resolve": { - "version": "2.0.0-next.3", - "requires": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" - } - } - } - }, - "eslint-plugin-react-hooks": { - "version": "2.5.1" - }, - "eslint-scope": { - "version": "5.1.1", - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - } - }, - "eslint-utils": { - "version": "1.4.3", - "requires": { - "eslint-visitor-keys": "^1.1.0" - } - }, - "eslint-visitor-keys": { - "version": "1.3.0" - }, - "esm": { - "version": "3.2.25" - }, - "espree": { - "version": "6.2.1", - "requires": { - "acorn": "^7.1.1", - "acorn-jsx": "^5.2.0", - "eslint-visitor-keys": "^1.1.0" - } - }, - "esprima": { - "version": "4.0.1" - }, - "esquery": { - "version": "1.4.0", - "requires": { - "estraverse": "^5.1.0" - }, - "dependencies": { - "estraverse": { - "version": "5.2.0" - } - } - }, - "esrecurse": { - "version": "4.3.0", - "requires": { - "estraverse": "^5.2.0" - }, - "dependencies": { - "estraverse": { - "version": "5.2.0" - } - } - }, - "estraverse": { - "version": "4.3.0" - }, - "estree-walker": { - "version": "1.0.1" - }, - "esutils": { - "version": "2.0.3" - }, - "eventemitter3": { - "version": "4.0.7" - }, - "exec-sh": { - "version": "0.3.6" - }, - "execa": { - "version": "4.1.0", - "requires": { - "cross-spawn": "^7.0.0", - "get-stream": "^5.0.0", - "human-signals": "^1.1.1", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.0", - "onetime": "^5.1.0", - "signal-exit": "^3.0.2", - "strip-final-newline": "^2.0.0" - }, - "dependencies": { - "cross-spawn": { - "version": "7.0.3", - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "path-key": { - "version": "3.1.1" - }, - "shebang-command": { - "version": "2.0.0", - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0" - }, - "which": { - "version": "2.0.2", - "requires": { - "isexe": "^2.0.0" - } - } - } - }, - "exit": { - "version": "0.1.2" - }, - "expand-brackets": { - "version": "2.1.4", - "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0" - } - } - }, - "expect": { - "version": "25.5.0", - "requires": { - "@jest/types": "^25.5.0", - "ansi-styles": "^4.0.0", - "jest-get-type": "^25.2.6", - "jest-matcher-utils": "^25.5.0", - "jest-message-util": "^25.5.0", - "jest-regex-util": "^25.2.6" - } - }, - "extend": { - "version": "3.0.2" - }, - "extend-shallow": { - "version": "2.0.1", - "requires": { - "is-extendable": "^0.1.0" - } - }, - "external-editor": { - "version": "3.1.0", - "requires": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - } - }, - "extglob": { - "version": "2.0.4", - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "requires": { - "is-descriptor": "^1.0.0" - } - } - } - }, - "extsprintf": { - "version": "1.3.0" - }, - "eyes": { - "version": "0.1.8" - }, - "fast-deep-equal": { - "version": "3.1.3" - }, - "fast-diff": { - "version": "1.2.0" - }, - "fast-json-stable-stringify": { - "version": "2.1.0" - }, - "fast-levenshtein": { - "version": "2.0.6" - }, - "fb-watchman": { - "version": "2.0.1", - "requires": { - "bser": "2.1.1" - } - }, - "figures": { - "version": "3.2.0", - "requires": { - "escape-string-regexp": "^1.0.5" - } - }, - "file-entry-cache": { - "version": "5.0.1", - "requires": { - "flat-cache": "^2.0.1" - } - }, - "fill-range": { - "version": "7.0.1", - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "find-cache-dir": { - "version": "3.3.1", - "requires": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - } - }, - "find-up": { - "version": "4.1.0", - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "flat-cache": { - "version": "2.0.1", - "requires": { - "flatted": "^2.0.0", - "rimraf": "2.6.3", - "write": "1.0.3" - }, - "dependencies": { - "rimraf": { - "version": "2.6.3", - "requires": { - "glob": "^7.1.3" - } - } - } - }, - "flatted": { - "version": "2.0.2" - }, - "for-in": { - "version": "1.0.2" - }, - "forever-agent": { - "version": "0.6.1" - }, - "form-data": { - "version": "2.3.3", - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - } - }, - "fragment-cache": { - "version": "0.2.1", - "requires": { - "map-cache": "^0.2.2" - } - }, - "fs-extra": { - "version": "9.1.0", - "requires": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - }, - "fs.realpath": { - "version": "1.0.0" - }, - "fsevents": { - "version": "2.3.2", - "optional": true - }, - "function-bind": { - "version": "1.1.1" - }, - "functional-red-black-tree": { - "version": "1.0.1" - }, - "gensync": { - "version": "1.0.0-beta.2" - }, - "get-caller-file": { - "version": "2.0.5" - }, - "get-intrinsic": { - "version": "1.1.1", - "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" - } - }, - "get-package-type": { - "version": "0.1.0" - }, - "get-prototype-of": { - "version": "0.0.0" - }, - "get-stdin": { - "version": "6.0.0" - }, - "get-stream": { - "version": "5.2.0", - "requires": { - "pump": "^3.0.0" - } - }, - "get-value": { - "version": "2.0.6" - }, - "getpass": { - "version": "0.1.7", - "requires": { - "assert-plus": "^1.0.0" - } - }, - "glob": { - "version": "7.1.6", - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-parent": { - "version": "5.1.2", - "requires": { - "is-glob": "^4.0.1" - } - }, - "globals": { - "version": "11.12.0" - }, - "globalyzer": { - "version": "0.1.0" - }, - "globrex": { - "version": "0.1.2" - }, - "graceful-fs": { - "version": "4.2.6" - }, - "growly": { - "version": "1.3.0", - "optional": true - }, - "har-schema": { - "version": "2.0.0" - }, - "har-validator": { - "version": "5.1.5", - "requires": { - "ajv": "^6.12.3", - "har-schema": "^2.0.0" - } - }, - "has": { - "version": "1.0.3", - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-bigints": { - "version": "1.0.1" - }, - "has-flag": { - "version": "3.0.0" - }, - "has-symbols": { - "version": "1.0.2" - }, - "has-value": { - "version": "1.0.0", - "requires": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - } - }, - "has-values": { - "version": "1.0.0", - "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "dependencies": { - "kind-of": { - "version": "4.0.0", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "hash.js": { - "version": "1.1.7", - "requires": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, - "hmac-drbg": { - "version": "1.0.1", - "requires": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "hosted-git-info": { - "version": "2.8.9" - }, - "html-encoding-sniffer": { - "version": "1.0.2", - "requires": { - "whatwg-encoding": "^1.0.1" - } - }, - "html-escaper": { - "version": "2.0.2" - }, - "http-signature": { - "version": "1.2.0", - "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - } - }, - "human-signals": { - "version": "1.1.1" - }, - "humanize-duration": { - "version": "3.25.1" - }, - "iconv-lite": { - "version": "0.4.24", - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "ieee754": { - "version": "1.2.1" - }, - "ignore": { - "version": "4.0.6" - }, - "import-fresh": { - "version": "3.3.0", - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "dependencies": { - "resolve-from": { - "version": "4.0.0" - } - } - }, - "import-local": { - "version": "3.0.2", - "requires": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - } - }, - "imurmurhash": { - "version": "0.1.4" - }, - "inflight": { - "version": "1.0.6", - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4" - }, - "inquirer": { - "version": "7.3.3", - "requires": { - "ansi-escapes": "^4.2.1", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-width": "^3.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.19", - "mute-stream": "0.0.8", - "run-async": "^2.4.0", - "rxjs": "^6.6.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0", - "through": "^2.3.6" - }, - "dependencies": { - "chalk": { - "version": "4.1.0", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - } - } - }, - "internal-slot": { - "version": "1.0.3", - "requires": { - "get-intrinsic": "^1.1.0", - "has": "^1.0.3", - "side-channel": "^1.0.4" - } - }, - "interpret": { - "version": "1.4.0" - }, - "ip-regex": { - "version": "2.1.0" - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "requires": { - "kind-of": "^6.0.0" - }, - "dependencies": { - "kind-of": { - "version": "6.0.3" - } - } - }, - "is-arrayish": { - "version": "0.2.1" - }, - "is-bigint": { - "version": "1.0.1" - }, - "is-boolean-object": { - "version": "1.1.0", - "requires": { - "call-bind": "^1.0.0" - } - }, - "is-buffer": { - "version": "1.1.6" - }, - "is-callable": { - "version": "1.2.3" - }, - "is-capitalized": { - "version": "1.0.0" - }, - "is-ci": { - "version": "2.0.0", - "requires": { - "ci-info": "^2.0.0" - } - }, - "is-class": { - "version": "0.0.4" - }, - "is-core-module": { - "version": "2.2.0", - "requires": { - "has": "^1.0.3" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "requires": { - "kind-of": "^6.0.0" - }, - "dependencies": { - "kind-of": { - "version": "6.0.3" - } - } - }, - "is-date-object": { - "version": "1.0.2" - }, - "is-descriptor": { - "version": "1.0.2", - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "dependencies": { - "kind-of": { - "version": "6.0.3" - } - } - }, - "is-docker": { - "version": "2.2.1", - "optional": true - }, - "is-extendable": { - "version": "0.1.1" - }, - "is-extglob": { - "version": "2.1.1" - }, - "is-fullwidth-code-point": { - "version": "2.0.0" - }, - "is-generator-fn": { - "version": "2.1.0" - }, - "is-glob": { - "version": "4.0.1", - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-interactive": { - "version": "1.0.0" - }, - "is-module": { - "version": "1.0.0" - }, - "is-negative-zero": { - "version": "2.0.1" - }, - "is-number": { - "version": "3.0.0", - "requires": { - "kind-of": "^3.0.2" - } - }, - "is-number-object": { - "version": "1.0.4" - }, - "is-plain-object": { - "version": "2.0.4", - "requires": { - "isobject": "^3.0.1" - } - }, - "is-reference": { - "version": "1.2.1", - "requires": { - "@types/estree": "*" - } - }, - "is-regex": { - "version": "1.1.2", - "requires": { - "call-bind": "^1.0.2", - "has-symbols": "^1.0.1" - } - }, - "is-stream": { - "version": "2.0.0" - }, - "is-string": { - "version": "1.0.5" - }, - "is-symbol": { - "version": "1.0.3", - "requires": { - "has-symbols": "^1.0.1" - } - }, - "is-typedarray": { - "version": "1.0.0" - }, - "is-windows": { - "version": "1.0.2" - }, - "is-wsl": { - "version": "2.2.0", - "optional": true, - "requires": { - "is-docker": "^2.0.0" - } - }, - "isarray": { - "version": "1.0.0" - }, - "isexe": { - "version": "2.0.0" - }, - "isobject": { - "version": "3.0.1" - }, - "isstream": { - "version": "0.1.2" - }, - "istanbul-lib-coverage": { - "version": "3.0.0" - }, - "istanbul-lib-instrument": { - "version": "4.0.3", - "requires": { - "@babel/core": "^7.7.5", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.0.0", - "semver": "^6.3.0" - } - }, - "istanbul-lib-report": { - "version": "3.0.0", - "requires": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^3.0.0", - "supports-color": "^7.1.0" - } - }, - "istanbul-lib-source-maps": { - "version": "4.0.0", - "requires": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" - } - }, - "istanbul-reports": { - "version": "3.0.2", - "requires": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - } - }, - "jayson": { - "version": "3.4.4", - "requires": { - "@types/connect": "^3.4.33", - "@types/express-serve-static-core": "^4.17.9", - "@types/lodash": "^4.14.159", - "@types/node": "^12.12.54", - "JSONStream": "^1.3.5", - "commander": "^2.20.3", - "es6-promisify": "^5.0.0", - "eyes": "^0.1.8", - "json-stringify-safe": "^5.0.1", - "lodash": "^4.17.20", - "uuid": "^3.4.0" - }, - "dependencies": { - "@types/node": { - "version": "12.20.10" - } - } - }, - "jest": { - "version": "25.5.4", - "requires": { - "@jest/core": "^25.5.4", - "import-local": "^3.0.2", - "jest-cli": "^25.5.4" - } - }, - "jest-changed-files": { - "version": "25.5.0", - "requires": { - "@jest/types": "^25.5.0", - "execa": "^3.2.0", - "throat": "^5.0.0" - }, - "dependencies": { - "cross-spawn": { - "version": "7.0.3", - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "execa": { - "version": "3.4.0", - "requires": { - "cross-spawn": "^7.0.0", - "get-stream": "^5.0.0", - "human-signals": "^1.1.1", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.0", - "onetime": "^5.1.0", - "p-finally": "^2.0.0", - "signal-exit": "^3.0.2", - "strip-final-newline": "^2.0.0" - } - }, - "path-key": { - "version": "3.1.1" - }, - "shebang-command": { - "version": "2.0.0", - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0" - }, - "which": { - "version": "2.0.2", - "requires": { - "isexe": "^2.0.0" - } - } - } - }, - "jest-cli": { - "version": "25.5.4", - "requires": { - "@jest/core": "^25.5.4", - "@jest/test-result": "^25.5.0", - "@jest/types": "^25.5.0", - "chalk": "^3.0.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.4", - "import-local": "^3.0.2", - "is-ci": "^2.0.0", - "jest-config": "^25.5.4", - "jest-util": "^25.5.0", - "jest-validate": "^25.5.0", - "prompts": "^2.0.1", - "realpath-native": "^2.0.0", - "yargs": "^15.3.1" - } - }, - "jest-config": { - "version": "25.5.4", - "requires": { - "@babel/core": "^7.1.0", - "@jest/test-sequencer": "^25.5.4", - "@jest/types": "^25.5.0", - "babel-jest": "^25.5.1", - "chalk": "^3.0.0", - "deepmerge": "^4.2.2", - "glob": "^7.1.1", - "graceful-fs": "^4.2.4", - "jest-environment-jsdom": "^25.5.0", - "jest-environment-node": "^25.5.0", - "jest-get-type": "^25.2.6", - "jest-jasmine2": "^25.5.4", - "jest-regex-util": "^25.2.6", - "jest-resolve": "^25.5.1", - "jest-util": "^25.5.0", - "jest-validate": "^25.5.0", - "micromatch": "^4.0.2", - "pretty-format": "^25.5.0", - "realpath-native": "^2.0.0" - } - }, - "jest-diff": { - "version": "25.5.0", - "requires": { - "chalk": "^3.0.0", - "diff-sequences": "^25.2.6", - "jest-get-type": "^25.2.6", - "pretty-format": "^25.5.0" - } - }, - "jest-docblock": { - "version": "25.3.0", - "requires": { - "detect-newline": "^3.0.0" - } - }, - "jest-each": { - "version": "25.5.0", - "requires": { - "@jest/types": "^25.5.0", - "chalk": "^3.0.0", - "jest-get-type": "^25.2.6", - "jest-util": "^25.5.0", - "pretty-format": "^25.5.0" - } - }, - "jest-environment-jsdom": { - "version": "25.5.0", - "requires": { - "@jest/environment": "^25.5.0", - "@jest/fake-timers": "^25.5.0", - "@jest/types": "^25.5.0", - "jest-mock": "^25.5.0", - "jest-util": "^25.5.0", - "jsdom": "^15.2.1" - } - }, - "jest-environment-node": { - "version": "25.5.0", - "requires": { - "@jest/environment": "^25.5.0", - "@jest/fake-timers": "^25.5.0", - "@jest/types": "^25.5.0", - "jest-mock": "^25.5.0", - "jest-util": "^25.5.0", - "semver": "^6.3.0" - } - }, - "jest-get-type": { - "version": "25.2.6" - }, - "jest-haste-map": { - "version": "25.5.1", - "requires": { - "@jest/types": "^25.5.0", - "@types/graceful-fs": "^4.1.2", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "fsevents": "^2.1.2", - "graceful-fs": "^4.2.4", - "jest-serializer": "^25.5.0", - "jest-util": "^25.5.0", - "jest-worker": "^25.5.0", - "micromatch": "^4.0.2", - "sane": "^4.0.3", - "walker": "^1.0.7", - "which": "^2.0.2" - }, - "dependencies": { - "which": { - "version": "2.0.2", - "requires": { - "isexe": "^2.0.0" - } - } - } - }, - "jest-jasmine2": { - "version": "25.5.4", - "requires": { - "@babel/traverse": "^7.1.0", - "@jest/environment": "^25.5.0", - "@jest/source-map": "^25.5.0", - "@jest/test-result": "^25.5.0", - "@jest/types": "^25.5.0", - "chalk": "^3.0.0", - "co": "^4.6.0", - "expect": "^25.5.0", - "is-generator-fn": "^2.0.0", - "jest-each": "^25.5.0", - "jest-matcher-utils": "^25.5.0", - "jest-message-util": "^25.5.0", - "jest-runtime": "^25.5.4", - "jest-snapshot": "^25.5.1", - "jest-util": "^25.5.0", - "pretty-format": "^25.5.0", - "throat": "^5.0.0" - } - }, - "jest-leak-detector": { - "version": "25.5.0", - "requires": { - "jest-get-type": "^25.2.6", - "pretty-format": "^25.5.0" - } - }, - "jest-matcher-utils": { - "version": "25.5.0", - "requires": { - "chalk": "^3.0.0", - "jest-diff": "^25.5.0", - "jest-get-type": "^25.2.6", - "pretty-format": "^25.5.0" - } - }, - "jest-message-util": { - "version": "25.5.0", - "requires": { - "@babel/code-frame": "^7.0.0", - "@jest/types": "^25.5.0", - "@types/stack-utils": "^1.0.1", - "chalk": "^3.0.0", - "graceful-fs": "^4.2.4", - "micromatch": "^4.0.2", - "slash": "^3.0.0", - "stack-utils": "^1.0.1" - } - }, - "jest-mock": { - "version": "25.5.0", - "requires": { - "@jest/types": "^25.5.0" - } - }, - "jest-pnp-resolver": { - "version": "1.2.2" - }, - "jest-regex-util": { - "version": "25.2.6" - }, - "jest-resolve": { - "version": "25.5.1", - "requires": { - "@jest/types": "^25.5.0", - "browser-resolve": "^1.11.3", - "chalk": "^3.0.0", - "graceful-fs": "^4.2.4", - "jest-pnp-resolver": "^1.2.1", - "read-pkg-up": "^7.0.1", - "realpath-native": "^2.0.0", - "resolve": "^1.17.0", - "slash": "^3.0.0" - }, - "dependencies": { - "read-pkg": { - "version": "5.2.0", - "requires": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" - }, - "dependencies": { - "type-fest": { - "version": "0.6.0" - } - } - }, - "read-pkg-up": { - "version": "7.0.1", - "requires": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" - } - } - } - }, - "jest-resolve-dependencies": { - "version": "25.5.4", - "requires": { - "@jest/types": "^25.5.0", - "jest-regex-util": "^25.2.6", - "jest-snapshot": "^25.5.1" - } - }, - "jest-runner": { - "version": "25.5.4", - "requires": { - "@jest/console": "^25.5.0", - "@jest/environment": "^25.5.0", - "@jest/test-result": "^25.5.0", - "@jest/types": "^25.5.0", - "chalk": "^3.0.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.4", - "jest-config": "^25.5.4", - "jest-docblock": "^25.3.0", - "jest-haste-map": "^25.5.1", - "jest-jasmine2": "^25.5.4", - "jest-leak-detector": "^25.5.0", - "jest-message-util": "^25.5.0", - "jest-resolve": "^25.5.1", - "jest-runtime": "^25.5.4", - "jest-util": "^25.5.0", - "jest-worker": "^25.5.0", - "source-map-support": "^0.5.6", - "throat": "^5.0.0" - } - }, - "jest-runtime": { - "version": "25.5.4", - "requires": { - "@jest/console": "^25.5.0", - "@jest/environment": "^25.5.0", - "@jest/globals": "^25.5.2", - "@jest/source-map": "^25.5.0", - "@jest/test-result": "^25.5.0", - "@jest/transform": "^25.5.1", - "@jest/types": "^25.5.0", - "@types/yargs": "^15.0.0", - "chalk": "^3.0.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.4", - "jest-config": "^25.5.4", - "jest-haste-map": "^25.5.1", - "jest-message-util": "^25.5.0", - "jest-mock": "^25.5.0", - "jest-regex-util": "^25.2.6", - "jest-resolve": "^25.5.1", - "jest-snapshot": "^25.5.1", - "jest-util": "^25.5.0", - "jest-validate": "^25.5.0", - "realpath-native": "^2.0.0", - "slash": "^3.0.0", - "strip-bom": "^4.0.0", - "yargs": "^15.3.1" - }, - "dependencies": { - "strip-bom": { - "version": "4.0.0" - } - } - }, - "jest-serializer": { - "version": "25.5.0", - "requires": { - "graceful-fs": "^4.2.4" - } - }, - "jest-snapshot": { - "version": "25.5.1", - "requires": { - "@babel/types": "^7.0.0", - "@jest/types": "^25.5.0", - "@types/prettier": "^1.19.0", - "chalk": "^3.0.0", - "expect": "^25.5.0", - "graceful-fs": "^4.2.4", - "jest-diff": "^25.5.0", - "jest-get-type": "^25.2.6", - "jest-matcher-utils": "^25.5.0", - "jest-message-util": "^25.5.0", - "jest-resolve": "^25.5.1", - "make-dir": "^3.0.0", - "natural-compare": "^1.4.0", - "pretty-format": "^25.5.0", - "semver": "^6.3.0" - } - }, - "jest-util": { - "version": "25.5.0", - "requires": { - "@jest/types": "^25.5.0", - "chalk": "^3.0.0", - "graceful-fs": "^4.2.4", - "is-ci": "^2.0.0", - "make-dir": "^3.0.0" - } - }, - "jest-validate": { - "version": "25.5.0", - "requires": { - "@jest/types": "^25.5.0", - "camelcase": "^5.3.1", - "chalk": "^3.0.0", - "jest-get-type": "^25.2.6", - "leven": "^3.1.0", - "pretty-format": "^25.5.0" - } - }, - "jest-watch-typeahead": { - "version": "0.5.0", - "requires": { - "ansi-escapes": "^4.2.1", - "chalk": "^3.0.0", - "jest-regex-util": "^25.2.1", - "jest-watcher": "^25.2.4", - "slash": "^3.0.0", - "string-length": "^3.1.0", - "strip-ansi": "^6.0.0" - } - }, - "jest-watcher": { - "version": "25.5.0", - "requires": { - "@jest/test-result": "^25.5.0", - "@jest/types": "^25.5.0", - "ansi-escapes": "^4.2.1", - "chalk": "^3.0.0", - "jest-util": "^25.5.0", - "string-length": "^3.1.0" - } - }, - "jest-worker": { - "version": "25.5.0", - "requires": { - "merge-stream": "^2.0.0", - "supports-color": "^7.0.0" - } - }, - "jpjs": { - "version": "1.2.1" - }, - "js-sha3": { - "version": "0.8.0" - }, - "js-tokens": { - "version": "4.0.0" - }, - "js-yaml": { - "version": "3.14.1", - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "jsbn": { - "version": "0.1.1" - }, - "jsdom": { - "version": "15.2.1", - "requires": { - "abab": "^2.0.0", - "acorn": "^7.1.0", - "acorn-globals": "^4.3.2", - "array-equal": "^1.0.0", - "cssom": "^0.4.1", - "cssstyle": "^2.0.0", - "data-urls": "^1.1.0", - "domexception": "^1.0.1", - "escodegen": "^1.11.1", - "html-encoding-sniffer": "^1.0.2", - "nwsapi": "^2.2.0", - "parse5": "5.1.0", - "pn": "^1.1.0", - "request": "^2.88.0", - "request-promise-native": "^1.0.7", - "saxes": "^3.1.9", - "symbol-tree": "^3.2.2", - "tough-cookie": "^3.0.1", - "w3c-hr-time": "^1.0.1", - "w3c-xmlserializer": "^1.1.2", - "webidl-conversions": "^4.0.2", - "whatwg-encoding": "^1.0.5", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^7.0.0", - "ws": "^7.0.0", - "xml-name-validator": "^3.0.0" - }, - "dependencies": { - "tough-cookie": { - "version": "3.0.1", - "requires": { - "ip-regex": "^2.1.0", - "psl": "^1.1.28", - "punycode": "^2.1.1" - } - } - } - }, - "jsesc": { - "version": "2.5.2" - }, - "json-parse-even-better-errors": { - "version": "2.3.1" - }, - "json-schema": { - "version": "0.2.3" - }, - "json-schema-traverse": { - "version": "0.4.1" - }, - "json-stable-stringify-without-jsonify": { - "version": "1.0.1" - }, - "json-stringify-safe": { - "version": "5.0.1" - }, - "json5": { - "version": "2.2.0", - "requires": { - "minimist": "^1.2.5" - } - }, - "jsonfile": { - "version": "6.1.0", - "requires": { - "graceful-fs": "^4.1.6", - "universalify": "^2.0.0" - } - }, - "jsonparse": { - "version": "1.3.1" - }, - "jsprim": { - "version": "1.4.1", - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.2.3", - "verror": "1.10.0" - } - }, - "jsx-ast-utils": { - "version": "3.2.0", - "requires": { - "array-includes": "^3.1.2", - "object.assign": "^4.1.2" - } - }, - "keypather": { - "version": "1.10.2", - "requires": { - "101": "^1.0.0" - } - }, - "kind-of": { - "version": "3.2.2", - "requires": { - "is-buffer": "^1.1.5" - } - }, - "kleur": { - "version": "3.0.3" - }, - "language-subtag-registry": { - "version": "0.3.21" - }, - "language-tags": { - "version": "1.0.5", - "requires": { - "language-subtag-registry": "~0.3.2" - } - }, - "leven": { - "version": "3.1.0" - }, - "levn": { - "version": "0.3.0", - "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - } - }, - "lines-and-columns": { - "version": "1.1.6" - }, - "load-json-file": { - "version": "2.0.0", - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "strip-bom": "^3.0.0" - }, - "dependencies": { - "parse-json": { - "version": "2.2.0", - "requires": { - "error-ex": "^1.2.0" - } - } - } - }, - "locate-path": { - "version": "5.0.0", - "requires": { - "p-locate": "^4.1.0" - } - }, - "lodash": { - "version": "4.17.21" - }, - "lodash.debounce": { - "version": "4.0.8" - }, - "lodash.memoize": { - "version": "4.1.2" - }, - "lodash.merge": { - "version": "4.6.2" - }, - "lodash.sortby": { - "version": "4.7.0" - }, - "log-symbols": { - "version": "3.0.0", - "requires": { - "chalk": "^2.4.2" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "color-convert": { - "version": "1.9.3", - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3" - }, - "supports-color": { - "version": "5.5.0", - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "log-update": { - "version": "2.3.0", - "requires": { - "ansi-escapes": "^3.0.0", - "cli-cursor": "^2.0.0", - "wrap-ansi": "^3.0.1" - }, - "dependencies": { - "ansi-escapes": { - "version": "3.2.0" - }, - "cli-cursor": { - "version": "2.1.0", - "requires": { - "restore-cursor": "^2.0.0" - } - }, - "mimic-fn": { - "version": "1.2.0" - }, - "onetime": { - "version": "2.0.1", - "requires": { - "mimic-fn": "^1.0.0" - } - }, - "restore-cursor": { - "version": "2.0.0", - "requires": { - "onetime": "^2.0.0", - "signal-exit": "^3.0.2" - } - } - } - }, - "lolex": { - "version": "5.1.2", - "requires": { - "@sinonjs/commons": "^1.7.0" - } - }, - "loose-envify": { - "version": "1.4.0", - "requires": { - "js-tokens": "^3.0.0 || ^4.0.0" - } - }, - "lower-case": { - "version": "2.0.2", - "requires": { - "tslib": "^2.0.3" - }, - "dependencies": { - "tslib": { - "version": "2.2.0" - } - } - }, - "lru-cache": { - "version": "6.0.0", - "requires": { - "yallist": "^4.0.0" - } - }, - "magic-string": { - "version": "0.25.7", - "requires": { - "sourcemap-codec": "^1.4.4" - } - }, - "make-dir": { - "version": "3.1.0", - "requires": { - "semver": "^6.0.0" - } - }, - "make-error": { - "version": "1.3.6" - }, - "makeerror": { - "version": "1.0.11", - "requires": { - "tmpl": "1.0.x" - } - }, - "map-cache": { - "version": "0.2.2" - }, - "map-visit": { - "version": "1.0.0", - "requires": { - "object-visit": "^1.0.0" - } - }, - "merge-stream": { - "version": "2.0.0" - }, - "micromatch": { - "version": "4.0.4", - "requires": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" - } - }, - "mime-db": { - "version": "1.47.0" - }, - "mime-types": { - "version": "2.1.30", - "requires": { - "mime-db": "1.47.0" - } - }, - "mimic-fn": { - "version": "2.1.0" - }, - "minimalistic-assert": { - "version": "1.0.1" - }, - "minimalistic-crypto-utils": { - "version": "1.0.1" - }, - "minimatch": { - "version": "3.0.4", - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.5" - }, - "mixin-deep": { - "version": "1.3.2", - "requires": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "mkdirp": { - "version": "0.5.5", - "requires": { - "minimist": "^1.2.5" - } - }, - "mri": { - "version": "1.1.6" - }, - "ms": { - "version": "2.1.2" - }, - "mute-stream": { - "version": "0.0.8" - }, - "nanomatch": { - "version": "1.2.13", - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "2.0.2", - "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - } - }, - "extend-shallow": { - "version": "3.0.2", - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - } - }, - "is-extendable": { - "version": "1.0.1", - "requires": { - "is-plain-object": "^2.0.4" - } - }, - "kind-of": { - "version": "6.0.3" - } - } - }, - "natural-compare": { - "version": "1.4.0" - }, - "nice-try": { - "version": "1.0.5" - }, - "no-case": { - "version": "3.0.4", - "requires": { - "lower-case": "^2.0.2", - "tslib": "^2.0.3" - }, - "dependencies": { - "tslib": { - "version": "2.2.0" - } - } - }, - "node-addon-api": { - "version": "2.0.2" - }, - "node-fetch": { - "version": "2.6.1" - }, - "node-gyp-build": { - "version": "4.2.3" - }, - "node-int64": { - "version": "0.4.0" - }, - "node-modules-regexp": { - "version": "1.0.0" - }, - "node-notifier": { - "version": "6.0.0", - "optional": true, - "requires": { - "growly": "^1.3.0", - "is-wsl": "^2.1.1", - "semver": "^6.3.0", - "shellwords": "^0.1.1", - "which": "^1.3.1" - } - }, - "node-releases": { - "version": "1.1.71" - }, - "normalize-package-data": { - "version": "2.5.0", - "requires": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - }, - "dependencies": { - "semver": { - "version": "5.7.1" - } - } - }, - "normalize-path": { - "version": "3.0.0" - }, - "npm-run-path": { - "version": "4.0.1", - "requires": { - "path-key": "^3.0.0" - }, - "dependencies": { - "path-key": { - "version": "3.1.1" - } - } - }, - "nwsapi": { - "version": "2.2.0" - }, - "oauth-sign": { - "version": "0.9.0" - }, - "object-assign": { - "version": "4.1.1" - }, - "object-copy": { - "version": "0.1.0", - "requires": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - } - }, - "object-inspect": { - "version": "1.9.0" - }, - "object-keys": { - "version": "1.1.1" - }, - "object-visit": { - "version": "1.0.1", - "requires": { - "isobject": "^3.0.0" - } - }, - "object.assign": { - "version": "4.1.2", - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", - "object-keys": "^1.1.1" - } - }, - "object.entries": { - "version": "1.1.3", - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.1", - "has": "^1.0.3" - } - }, - "object.fromentries": { - "version": "2.0.4", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.2", - "has": "^1.0.3" - } - }, - "object.pick": { - "version": "1.3.0", - "requires": { - "isobject": "^3.0.1" - } - }, - "object.values": { - "version": "1.1.3", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.2", - "has": "^1.0.3" - } - }, - "once": { - "version": "1.4.0", - "requires": { - "wrappy": "1" - } - }, - "onetime": { - "version": "5.1.2", - "requires": { - "mimic-fn": "^2.1.0" - } - }, - "optionator": { - "version": "0.8.3", - "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - } - }, - "ora": { - "version": "4.1.1", - "requires": { - "chalk": "^3.0.0", - "cli-cursor": "^3.1.0", - "cli-spinners": "^2.2.0", - "is-interactive": "^1.0.0", - "log-symbols": "^3.0.0", - "mute-stream": "0.0.8", - "strip-ansi": "^6.0.0", - "wcwidth": "^1.0.1" - }, - "dependencies": { - "cli-spinners": { - "version": "2.6.0" - } - } - }, - "os-tmpdir": { - "version": "1.0.2" - }, - "p-each-series": { - "version": "2.2.0" - }, - "p-finally": { - "version": "2.0.1" - }, - "p-limit": { - "version": "2.3.0", - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "4.1.0", - "requires": { - "p-limit": "^2.2.0" - } - }, - "p-try": { - "version": "2.2.0" - }, - "parent-module": { - "version": "1.0.1", - "requires": { - "callsites": "^3.0.0" - } - }, - "parse-json": { - "version": "5.2.0", - "requires": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - } - }, - "parse5": { - "version": "5.1.0" - }, - "pascal-case": { - "version": "3.1.2", - "requires": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - }, - "dependencies": { - "tslib": { - "version": "2.2.0" - } - } - }, - "pascalcase": { - "version": "0.1.1" - }, - "path-exists": { - "version": "4.0.0" - }, - "path-is-absolute": { - "version": "1.0.1" - }, - "path-key": { - "version": "2.0.1" - }, - "path-parse": { - "version": "1.0.6" - }, - "path-type": { - "version": "4.0.0" - }, - "performance-now": { - "version": "2.1.0" - }, - "picomatch": { - "version": "2.2.3" - }, - "pify": { - "version": "2.3.0" - }, - "pirates": { - "version": "4.0.1", - "requires": { - "node-modules-regexp": "^1.0.0" - } - }, - "pkg-dir": { - "version": "4.2.0", - "requires": { - "find-up": "^4.0.0" - } - }, - "pn": { - "version": "1.1.0" - }, - "posix-character-classes": { - "version": "0.1.1" - }, - "prelude-ls": { - "version": "1.1.2" - }, - "prettier": { - "version": "1.19.1" - }, - "prettier-linter-helpers": { - "version": "1.0.0", - "requires": { - "fast-diff": "^1.1.2" - } - }, - "pretty-format": { - "version": "25.5.0", - "requires": { - "@jest/types": "^25.5.0", - "ansi-regex": "^5.0.0", - "ansi-styles": "^4.0.0", - "react-is": "^16.12.0" - } - }, - "progress": { - "version": "2.0.3" - }, - "progress-estimator": { - "version": "0.2.2", - "requires": { - "chalk": "^2.4.1", - "cli-spinners": "^1.3.1", - "humanize-duration": "^3.15.3", - "log-update": "^2.3.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "color-convert": { - "version": "1.9.3", - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3" - }, - "supports-color": { - "version": "5.5.0", - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "prompts": { - "version": "2.4.1", - "requires": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" - } - }, - "prop-types": { - "version": "15.7.2", - "requires": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.8.1" - } - }, - "psl": { - "version": "1.8.0" - }, - "pump": { - "version": "3.0.0", - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "punycode": { - "version": "2.1.1" - }, - "qs": { - "version": "6.5.2" - }, - "ramda": { - "version": "0.27.1" - }, - "randombytes": { - "version": "2.1.0", - "requires": { - "safe-buffer": "^5.1.0" - } - }, - "react-is": { - "version": "16.13.1" - }, - "read-pkg": { - "version": "2.0.0", - "requires": { - "load-json-file": "^2.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^2.0.0" - }, - "dependencies": { - "path-type": { - "version": "2.0.0", - "requires": { - "pify": "^2.0.0" - } - } - } - }, - "read-pkg-up": { - "version": "2.0.0", - "requires": { - "find-up": "^2.0.0", - "read-pkg": "^2.0.0" - }, - "dependencies": { - "find-up": { - "version": "2.1.0", - "requires": { - "locate-path": "^2.0.0" - } - }, - "locate-path": { - "version": "2.0.0", - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - } - }, - "p-limit": { - "version": "1.3.0", - "requires": { - "p-try": "^1.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "requires": { - "p-limit": "^1.1.0" - } - }, - "p-try": { - "version": "1.0.0" - }, - "path-exists": { - "version": "3.0.0" - } - } - }, - "realpath-native": { - "version": "2.0.0" - }, - "rechoir": { - "version": "0.6.2", - "requires": { - "resolve": "^1.1.6" - } - }, - "regenerate": { - "version": "1.4.2" - }, - "regenerate-unicode-properties": { - "version": "8.2.0", - "requires": { - "regenerate": "^1.4.0" - } - }, - "regenerator-runtime": { - "version": "0.13.7" - }, - "regenerator-transform": { - "version": "0.14.5", - "requires": { - "@babel/runtime": "^7.8.4" - } - }, - "regex-not": { - "version": "1.0.2", - "requires": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "3.0.2", - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - } - }, - "is-extendable": { - "version": "1.0.1", - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "regexp.prototype.flags": { - "version": "1.3.1", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - } - }, - "regexpp": { - "version": "2.0.1" - }, - "regexpu-core": { - "version": "4.7.1", - "requires": { - "regenerate": "^1.4.0", - "regenerate-unicode-properties": "^8.2.0", - "regjsgen": "^0.5.1", - "regjsparser": "^0.6.4", - "unicode-match-property-ecmascript": "^1.0.4", - "unicode-match-property-value-ecmascript": "^1.2.0" - } - }, - "regjsgen": { - "version": "0.5.2" - }, - "regjsparser": { - "version": "0.6.9", - "requires": { - "jsesc": "~0.5.0" - }, - "dependencies": { - "jsesc": { - "version": "0.5.0" - } - } - }, - "remove-trailing-separator": { - "version": "1.1.0" - }, - "repeat-element": { - "version": "1.1.4" - }, - "repeat-string": { - "version": "1.6.1" - }, - "request": { - "version": "2.88.2", - "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - } - }, - "request-promise-core": { - "version": "1.1.4", - "requires": { - "lodash": "^4.17.19" - } - }, - "request-promise-native": { - "version": "1.0.9", - "requires": { - "request-promise-core": "1.1.4", - "stealthy-require": "^1.1.1", - "tough-cookie": "^2.3.3" - } - }, - "require-directory": { - "version": "2.1.1" - }, - "require-main-filename": { - "version": "2.0.0" - }, - "resolve": { - "version": "1.20.0", - "requires": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" - } - }, - "resolve-cwd": { - "version": "3.0.0", - "requires": { - "resolve-from": "^5.0.0" - } - }, - "resolve-from": { - "version": "5.0.0" - }, - "resolve-url": { - "version": "0.2.1" - }, - "restore-cursor": { - "version": "3.1.0", - "requires": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - } - }, - "ret": { - "version": "0.1.15" - }, - "rimraf": { - "version": "3.0.2", - "requires": { - "glob": "^7.1.3" - } - }, - "rollup": { - "version": "1.32.1", - "requires": { - "@types/estree": "*", - "@types/node": "*", - "acorn": "^7.1.0" - } - }, - "rollup-plugin-sourcemaps": { - "version": "0.6.3", - "requires": { - "@rollup/pluginutils": "^3.0.9", - "source-map-resolve": "^0.6.0" - } - }, - "rollup-plugin-terser": { - "version": "5.3.1", - "requires": { - "@babel/code-frame": "^7.5.5", - "jest-worker": "^24.9.0", - "rollup-pluginutils": "^2.8.2", - "serialize-javascript": "^4.0.0", - "terser": "^4.6.2" - }, - "dependencies": { - "jest-worker": { - "version": "24.9.0", - "requires": { - "merge-stream": "^2.0.0", - "supports-color": "^6.1.0" - } - }, - "supports-color": { - "version": "6.1.0", - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "rollup-pluginutils": { - "version": "2.8.2", - "requires": { - "estree-walker": "^0.6.1" - }, - "dependencies": { - "estree-walker": { - "version": "0.6.1" - } - } - }, - "rpc-websockets": { - "version": "7.4.11", - "requires": { - "@babel/runtime": "^7.11.2", - "assert-args": "^1.2.1", - "bufferutil": "^4.0.1", - "circular-json": "^0.5.9", - "eventemitter3": "^4.0.7", - "utf-8-validate": "^5.0.2", - "uuid": "^8.3.0", - "ws": "^7.3.1" - }, - "dependencies": { - "uuid": { - "version": "8.3.2" - } - } - }, - "rsvp": { - "version": "4.8.5" - }, - "run-async": { - "version": "2.4.1" - }, - "rxjs": { - "version": "6.6.7", - "requires": { - "tslib": "^1.9.0" - }, - "dependencies": { - "tslib": { - "version": "1.14.1" - } - } - }, - "sade": { - "version": "1.7.4", - "requires": { - "mri": "^1.1.0" - } - }, - "safe-buffer": { - "version": "5.2.1" - }, - "safe-regex": { - "version": "1.1.0", - "requires": { - "ret": "~0.1.10" - } - }, - "safer-buffer": { - "version": "2.1.2" - }, - "sane": { - "version": "4.1.0", - "requires": { - "@cnakazawa/watch": "^1.0.3", - "anymatch": "^2.0.0", - "capture-exit": "^2.0.0", - "exec-sh": "^0.3.2", - "execa": "^1.0.0", - "fb-watchman": "^2.0.0", - "micromatch": "^3.1.4", - "minimist": "^1.1.1", - "walker": "~1.0.5" - }, - "dependencies": { - "anymatch": { - "version": "2.0.0", - "requires": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - } - }, - "braces": { - "version": "2.3.2", - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-extendable": { - "version": "0.1.1" - } - } - }, - "define-property": { - "version": "2.0.2", - "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - } - }, - "execa": { - "version": "1.0.0", - "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, - "extend-shallow": { - "version": "3.0.2", - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - } - }, - "fill-range": { - "version": "4.0.0", - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-extendable": { - "version": "0.1.1" - } - } - }, - "get-stream": { - "version": "4.1.0", - "requires": { - "pump": "^3.0.0" - } - }, - "is-extendable": { - "version": "1.0.1", - "requires": { - "is-plain-object": "^2.0.4" - } - }, - "is-stream": { - "version": "1.1.0" - }, - "kind-of": { - "version": "6.0.3" - }, - "micromatch": { - "version": "3.1.10", - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - }, - "normalize-path": { - "version": "2.1.1", - "requires": { - "remove-trailing-separator": "^1.0.1" - } - }, - "npm-run-path": { - "version": "2.0.2", - "requires": { - "path-key": "^2.0.0" - } - }, - "p-finally": { - "version": "1.0.0" - }, - "to-regex-range": { - "version": "2.1.1", - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } - } - } - }, - "saxes": { - "version": "3.1.11", - "requires": { - "xmlchars": "^2.1.1" - } - }, - "secp256k1": { - "version": "4.0.2", - "requires": { - "elliptic": "^6.5.2", - "node-addon-api": "^2.0.0", - "node-gyp-build": "^4.2.0" - } - }, - "semver": { - "version": "6.3.0" - }, - "serialize-javascript": { - "version": "4.0.0", - "requires": { - "randombytes": "^2.1.0" - } - }, - "set-blocking": { - "version": "2.0.0" - }, - "set-value": { - "version": "2.0.1", - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - } - }, - "shebang-command": { - "version": "1.2.0", - "requires": { - "shebang-regex": "^1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0" - }, - "shelljs": { - "version": "0.8.4", - "requires": { - "glob": "^7.0.0", - "interpret": "^1.0.0", - "rechoir": "^0.6.2" - } - }, - "shellwords": { - "version": "0.1.1", - "optional": true - }, - "side-channel": { - "version": "1.0.4", - "requires": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - } - }, - "signal-exit": { - "version": "3.0.3" - }, - "sisteransi": { - "version": "1.0.5" - }, - "slash": { - "version": "3.0.0" - }, - "slice-ansi": { - "version": "2.1.0", - "requires": { - "ansi-styles": "^3.2.0", - "astral-regex": "^1.0.0", - "is-fullwidth-code-point": "^2.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "requires": { - "color-convert": "^1.9.0" - } - }, - "color-convert": { - "version": "1.9.3", - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3" - } - } - }, - "snapdragon": { - "version": "0.8.2", - "requires": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0" - }, - "source-map": { - "version": "0.5.7" - }, - "source-map-resolve": { - "version": "0.5.3", - "requires": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - } - } - }, - "snapdragon-node": { - "version": "2.1.1", - "requires": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "requires": { - "is-descriptor": "^1.0.0" - } - } - } - }, - "snapdragon-util": { - "version": "3.0.1", - "requires": { - "kind-of": "^3.2.0" - } - }, - "source-map": { - "version": "0.6.1" - }, - "source-map-resolve": { - "version": "0.6.0", - "requires": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0" - } - }, - "source-map-support": { - "version": "0.5.19", - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "source-map-url": { - "version": "0.4.1" - }, - "sourcemap-codec": { - "version": "1.4.8" - }, - "spdx-correct": { - "version": "3.1.1", - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-exceptions": { - "version": "2.3.0" - }, - "spdx-expression-parse": { - "version": "3.0.1", - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-license-ids": { - "version": "3.0.7" - }, - "split-string": { - "version": "3.1.0", - "requires": { - "extend-shallow": "^3.0.0" - }, - "dependencies": { - "extend-shallow": { - "version": "3.0.2", - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - } - }, - "is-extendable": { - "version": "1.0.1", - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "sprintf-js": { - "version": "1.0.3" - }, - "sshpk": { - "version": "1.16.1", - "requires": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - }, - "dependencies": { - "tweetnacl": { - "version": "0.14.5" - } - } - }, - "stack-utils": { - "version": "1.0.5", - "requires": { - "escape-string-regexp": "^2.0.0" - }, - "dependencies": { - "escape-string-regexp": { - "version": "2.0.0" - } - } - }, - "static-extend": { - "version": "0.1.2", - "requires": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - } - }, - "stealthy-require": { - "version": "1.1.1" - }, - "string-length": { - "version": "3.1.0", - "requires": { - "astral-regex": "^1.0.0", - "strip-ansi": "^5.2.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0" - }, - "strip-ansi": { - "version": "5.2.0", - "requires": { - "ansi-regex": "^4.1.0" - } - } - } - }, - "string-width": { - "version": "4.2.2", - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - }, - "dependencies": { - "is-fullwidth-code-point": { - "version": "3.0.0" - } - } - }, - "string.prototype.matchall": { - "version": "4.0.4", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.2", - "has-symbols": "^1.0.1", - "internal-slot": "^1.0.3", - "regexp.prototype.flags": "^1.3.1", - "side-channel": "^1.0.4" - } - }, - "string.prototype.trimend": { - "version": "1.0.4", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - } - }, - "string.prototype.trimstart": { - "version": "1.0.4", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - } - }, - "strip-ansi": { - "version": "6.0.0", - "requires": { - "ansi-regex": "^5.0.0" - } - }, - "strip-bom": { - "version": "3.0.0" - }, - "strip-eof": { - "version": "1.0.0" - }, - "strip-final-newline": { - "version": "2.0.0" - }, - "strip-json-comments": { - "version": "3.1.1" - }, - "superstruct": { - "version": "0.14.2" - }, - "supports-color": { - "version": "7.2.0", - "requires": { - "has-flag": "^4.0.0" - }, - "dependencies": { - "has-flag": { - "version": "4.0.0" - } - } - }, - "supports-hyperlinks": { - "version": "2.2.0", - "requires": { - "has-flag": "^4.0.0", - "supports-color": "^7.0.0" - }, - "dependencies": { - "has-flag": { - "version": "4.0.0" - } - } - }, - "symbol-tree": { - "version": "3.2.4" - }, - "table": { - "version": "5.4.6", - "requires": { - "ajv": "^6.10.2", - "lodash": "^4.17.14", - "slice-ansi": "^2.1.0", - "string-width": "^3.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0" - }, - "emoji-regex": { - "version": "7.0.3" - }, - "string-width": { - "version": "3.1.0", - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - }, - "strip-ansi": { - "version": "5.2.0", - "requires": { - "ansi-regex": "^4.1.0" - } - } - } - }, - "terminal-link": { - "version": "2.1.1", - "requires": { - "ansi-escapes": "^4.2.1", - "supports-hyperlinks": "^2.0.0" - } - }, - "terser": { - "version": "4.8.0", - "requires": { - "commander": "^2.20.0", - "source-map": "~0.6.1", - "source-map-support": "~0.5.12" - } - }, - "test-exclude": { - "version": "6.0.0", - "requires": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - } - }, - "text-encoding-utf-8": { - "version": "1.0.2" - }, - "text-table": { - "version": "0.2.0" - }, - "throat": { - "version": "5.0.0" - }, - "through": { - "version": "2.3.8" - }, - "tiny-glob": { - "version": "0.2.8", - "requires": { - "globalyzer": "0.1.0", - "globrex": "^0.1.2" - } - }, - "tmp": { - "version": "0.0.33", - "requires": { - "os-tmpdir": "~1.0.2" - } - }, - "tmpl": { - "version": "1.0.4" - }, - "to-fast-properties": { - "version": "2.0.0" - }, - "to-object-path": { - "version": "0.3.0", - "requires": { - "kind-of": "^3.0.2" - } - }, - "to-regex": { - "version": "3.0.2", - "requires": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - }, - "dependencies": { - "define-property": { - "version": "2.0.2", - "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - } - }, - "extend-shallow": { - "version": "3.0.2", - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - } - }, - "is-extendable": { - "version": "1.0.1", - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "to-regex-range": { - "version": "5.0.1", - "requires": { - "is-number": "^7.0.0" - }, - "dependencies": { - "is-number": { - "version": "7.0.0" - } - } - }, - "tough-cookie": { - "version": "2.5.0", - "requires": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - } - }, - "tr46": { - "version": "1.0.1", - "requires": { - "punycode": "^2.1.0" - } - }, - "tsconfig-paths": { - "version": "3.9.0", - "requires": { - "@types/json5": "^0.0.29", - "json5": "^1.0.1", - "minimist": "^1.2.0", - "strip-bom": "^3.0.0" - }, - "dependencies": { - "json5": { - "version": "1.0.1", - "requires": { - "minimist": "^1.2.0" - } - } - } - }, - "tsdx": { - "version": "0.14.1", - "requires": { - "@babel/core": "^7.4.4", - "@babel/helper-module-imports": "^7.0.0", - "@babel/parser": "^7.11.5", - "@babel/plugin-proposal-class-properties": "^7.4.4", - "@babel/preset-env": "^7.11.0", - "@babel/traverse": "^7.11.5", - "@rollup/plugin-babel": "^5.1.0", - "@rollup/plugin-commonjs": "^11.0.0", - "@rollup/plugin-json": "^4.0.0", - "@rollup/plugin-node-resolve": "^9.0.0", - "@rollup/plugin-replace": "^2.2.1", - "@types/jest": "^25.2.1", - "@typescript-eslint/eslint-plugin": "^2.12.0", - "@typescript-eslint/parser": "^2.12.0", - "ansi-escapes": "^4.2.1", - "asyncro": "^3.0.0", - "babel-eslint": "^10.0.3", - "babel-plugin-annotate-pure-calls": "^0.4.0", - "babel-plugin-dev-expression": "^0.2.1", - "babel-plugin-macros": "^2.6.1", - "babel-plugin-polyfill-regenerator": "^0.0.4", - "babel-plugin-transform-rename-import": "^2.3.0", - "camelcase": "^6.0.0", - "chalk": "^4.0.0", - "enquirer": "^2.3.4", - "eslint": "^6.1.0", - "eslint-config-prettier": "^6.0.0", - "eslint-config-react-app": "^5.2.1", - "eslint-plugin-flowtype": "^3.13.0", - "eslint-plugin-import": "^2.18.2", - "eslint-plugin-jsx-a11y": "^6.2.3", - "eslint-plugin-prettier": "^3.1.0", - "eslint-plugin-react": "^7.14.3", - "eslint-plugin-react-hooks": "^2.2.0", - "execa": "^4.0.3", - "fs-extra": "^9.0.0", - "jest": "^25.3.0", - "jest-watch-typeahead": "^0.5.0", - "jpjs": "^1.2.1", - "lodash.merge": "^4.6.2", - "ora": "^4.0.3", - "pascal-case": "^3.1.1", - "prettier": "^1.19.1", - "progress-estimator": "^0.2.2", - "regenerator-runtime": "^0.13.7", - "rollup": "^1.32.1", - "rollup-plugin-sourcemaps": "^0.6.2", - "rollup-plugin-terser": "^5.1.2", - "rollup-plugin-typescript2": "^0.27.3", - "sade": "^1.4.2", - "semver": "^7.1.1", - "shelljs": "^0.8.3", - "tiny-glob": "^0.2.6", - "ts-jest": "^25.3.1", - "tslib": "^1.9.3", - "typescript": "^3.7.3" - }, - "dependencies": { - "camelcase": { - "version": "6.2.0" - }, - "chalk": { - "version": "4.1.0", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "jsonfile": { - "version": "4.0.0", - "requires": { - "graceful-fs": "^4.1.6" - } - }, - "resolve": { - "version": "1.17.0", - "requires": { - "path-parse": "^1.0.6" - } - }, - "rollup-plugin-typescript2": { - "version": "0.27.3", - "requires": { - "@rollup/pluginutils": "^3.1.0", - "find-cache-dir": "^3.3.1", - "fs-extra": "8.1.0", - "resolve": "1.17.0", - "tslib": "2.0.1" - }, - "dependencies": { - "fs-extra": { - "version": "8.1.0", - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, - "tslib": { - "version": "2.0.1" - } - } - }, - "semver": { - "version": "7.3.5", - "requires": { - "lru-cache": "^6.0.0" - } - }, - "ts-jest": { - "version": "25.5.1", - "requires": { - "bs-logger": "0.x", - "buffer-from": "1.x", - "fast-json-stable-stringify": "2.x", - "json5": "2.x", - "lodash.memoize": "4.x", - "make-error": "1.x", - "micromatch": "4.x", - "mkdirp": "0.x", - "semver": "6.x", - "yargs-parser": "18.x" - }, - "dependencies": { - "semver": { - "version": "6.3.0" - } - } - }, - "tslib": { - "version": "1.14.1" - }, - "typescript": { - "version": "3.9.9" - }, - "universalify": { - "version": "0.1.2" - } - } - }, - "tslib": { - "version": "2.3.1" - }, - "tsutils": { - "version": "3.21.0", - "requires": { - "tslib": "^1.8.1" - }, - "dependencies": { - "tslib": { - "version": "1.14.1" - }, - "typescript": { - "version": "3.9.9" - } - } - }, - "tunnel-agent": { - "version": "0.6.0", - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "tweetnacl": { - "version": "1.0.3" - }, - "type-check": { - "version": "0.3.2", - "requires": { - "prelude-ls": "~1.1.2" - } - }, - "type-detect": { - "version": "0.1.1" - }, - "type-fest": { - "version": "0.8.1" - }, - "typedarray-to-buffer": { - "version": "3.1.5", - "requires": { - "is-typedarray": "^1.0.0" - } - }, - "typescript": { - "version": "4.5.4" - }, - "unbox-primitive": { - "version": "1.0.1", - "requires": { - "function-bind": "^1.1.1", - "has-bigints": "^1.0.1", - "has-symbols": "^1.0.2", - "which-boxed-primitive": "^1.0.2" - } - }, - "unicode-canonical-property-names-ecmascript": { - "version": "1.0.4" - }, - "unicode-match-property-ecmascript": { - "version": "1.0.4", - "requires": { - "unicode-canonical-property-names-ecmascript": "^1.0.4", - "unicode-property-aliases-ecmascript": "^1.0.4" - } - }, - "unicode-match-property-value-ecmascript": { - "version": "1.2.0" - }, - "unicode-property-aliases-ecmascript": { - "version": "1.1.0" - }, - "union-value": { - "version": "1.0.1", - "requires": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^2.0.1" - } - }, - "universalify": { - "version": "2.0.0" - }, - "unset-value": { - "version": "1.0.0", - "requires": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "dependencies": { - "has-value": { - "version": "0.3.1", - "requires": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "dependencies": { - "isobject": { - "version": "2.1.0", - "requires": { - "isarray": "1.0.0" - } - } - } - }, - "has-values": { - "version": "0.1.4" - } - } - }, - "uri-js": { - "version": "4.4.1", - "requires": { - "punycode": "^2.1.0" - } - }, - "urix": { - "version": "0.1.0" - }, - "use": { - "version": "3.1.1" - }, - "utf-8-validate": { - "version": "5.0.4", - "optional": true, - "requires": { - "node-gyp-build": "^4.2.0" - } - }, - "uuid": { - "version": "3.4.0" - }, - "v8-compile-cache": { - "version": "2.3.0" - }, - "v8-to-istanbul": { - "version": "4.1.4", - "requires": { - "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^1.6.0", - "source-map": "^0.7.3" - }, - "dependencies": { - "source-map": { - "version": "0.7.3" - } - } - }, - "validate-npm-package-license": { - "version": "3.0.4", - "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "verror": { - "version": "1.10.0", - "requires": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - }, - "dependencies": { - "extsprintf": { - "version": "1.4.0" - } - } - }, - "w3c-hr-time": { - "version": "1.0.2", - "requires": { - "browser-process-hrtime": "^1.0.0" - } - }, - "w3c-xmlserializer": { - "version": "1.1.2", - "requires": { - "domexception": "^1.0.1", - "webidl-conversions": "^4.0.2", - "xml-name-validator": "^3.0.0" - } - }, - "walker": { - "version": "1.0.7", - "requires": { - "makeerror": "1.0.x" - } - }, - "wcwidth": { - "version": "1.0.1", - "requires": { - "defaults": "^1.0.3" - } - }, - "webidl-conversions": { - "version": "4.0.2" - }, - "whatwg-encoding": { - "version": "1.0.5", - "requires": { - "iconv-lite": "0.4.24" - } - }, - "whatwg-mimetype": { - "version": "2.3.0" - }, - "whatwg-url": { - "version": "7.1.0", - "requires": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" - } - }, - "which": { - "version": "1.3.1", - "requires": { - "isexe": "^2.0.0" - } - }, - "which-boxed-primitive": { - "version": "1.0.2", - "requires": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - } - }, - "which-module": { - "version": "2.0.0" - }, - "word-wrap": { - "version": "1.2.3" - }, - "wrap-ansi": { - "version": "3.0.1", - "requires": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0" - }, - "string-width": { - "version": "2.1.1", - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, - "wrappy": { - "version": "1.0.2" - }, - "write": { - "version": "1.0.3", - "requires": { - "mkdirp": "^0.5.1" - } - }, - "write-file-atomic": { - "version": "3.0.3", - "requires": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" - } - }, - "ws": { - "version": "7.4.4" - }, - "xml-name-validator": { - "version": "3.0.0" - }, - "xmlchars": { - "version": "2.2.0" - }, - "y18n": { - "version": "4.0.3" - }, - "yallist": { - "version": "4.0.0" - }, - "yaml": { - "version": "1.10.2" - }, - "yargs": { - "version": "15.4.1", - "requires": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^18.1.2" - } - }, - "yargs-parser": { - "version": "18.1.3", - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - } + "enabled": "2.0.x", + "kuler": "^2.0.0" + } + }, + "@digitalbazaar/did-io": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@digitalbazaar/did-io/-/did-io-1.1.0.tgz", + "integrity": "sha512-XrM0HIukrRY6rtEM2osMbAEzXfXM6SXSKRJ2iZqTkkSdqrI1iiA3Y87CMYfqVwpwyd6WcWdzKR5SpLkbIh1+WQ==", + "requires": { + "@digitalbazaar/lru-memoize": "^2.0.0", + "esm": "^3.2.25" + } + }, + "@digitalbazaar/did-method-key": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@digitalbazaar/did-method-key/-/did-method-key-2.0.0.tgz", + "integrity": "sha512-540CsZUesyRxku72Dkl7BC/h26iFko/X+NXx1D2KQpi8cSgb6gs1PqvXEAUThszGq1y2p/6ByDKYAJhlaAG8VQ==", + "requires": { + "@digitalbazaar/did-io": "^1.0.0", + "@digitalbazaar/ed25519-verification-key-2020": "^3.0.0", + "@digitalbazaar/x25519-key-agreement-key-2019": "^5.1.1", + "@digitalbazaar/x25519-key-agreement-key-2020": "^2.0.0", + "esm": "^3.2.25" + } + }, + "@digitalbazaar/ed25519-verification-key-2018": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@digitalbazaar/ed25519-verification-key-2018/-/ed25519-verification-key-2018-3.1.1.tgz", + "integrity": "sha512-4dtWUNIs30xAv8PZts+Xo5gPM5KEFKg2rw6OpDlo/gy20ViT9CtVqTDcuNG+3hiuKRBs/pTF/NuBeLTtagPvKA==", + "requires": { + "@stablelib/ed25519": "^1.0.1", + "base58-universal": "^1.0.0", + "crypto-ld": "^5.0.0", + "esm": "^3.2.25" + } + }, + "@digitalbazaar/ed25519-verification-key-2020": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@digitalbazaar/ed25519-verification-key-2020/-/ed25519-verification-key-2020-3.2.0.tgz", + "integrity": "sha512-A+17sRJ+rRNuN6yG0zZMucbVUpxUkBRLTb503caoJv0GB5853HXSaZbl83kKl9LCh02ExbQWxD6o/aqeR012uA==", + "requires": { + "@stablelib/ed25519": "^1.0.1", + "base58-universal": "^1.0.0", + "base64url-universal": "^1.1.0", + "crypto-ld": "^5.1.0", + "esm": "^3.2.25" + } + }, + "@digitalbazaar/lru-memoize": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@digitalbazaar/lru-memoize/-/lru-memoize-2.1.0.tgz", + "integrity": "sha512-0M/olrKC+FQzN6ltu+JJD0YbN4oMCTDpiV9A91QYpilU0vxWCBJMx41XT9YteB8yCtFQZWd3Ky33ILVWy2/LFA==", + "requires": { + "esm": "^3.2.25", + "lru-cache": "^6.0.0" + } + }, + "@digitalbazaar/x25519-key-agreement-key-2019": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@digitalbazaar/x25519-key-agreement-key-2019/-/x25519-key-agreement-key-2019-5.1.1.tgz", + "integrity": "sha512-LGsPMbGXV3wqC6yl2fyCaEl5CCW0hGQ9yYXBYqhiExgjNiLdkF1FjNBK+IjW2p5U0ysixI9NuWiPn6SjBEIkjA==", + "requires": { + "base58-universal": "^1.0.0", + "crypto-ld": "^5.0.0", + "ed2curve": "^0.3.0", + "esm": "^3.2.25", + "tweetnacl": "^1.0.3" + } + }, + "@digitalbazaar/x25519-key-agreement-key-2020": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@digitalbazaar/x25519-key-agreement-key-2020/-/x25519-key-agreement-key-2020-2.0.0.tgz", + "integrity": "sha512-VI39m0nvQlOXi4Q3w+2YFj7XvWN145KNoZMgEWFOaA/PaIjswniKSgbY98sHtMGfN/JCqQlVeYnCMuheP5H0WQ==", + "requires": { + "base58-universal": "^1.0.0", + "crypto-ld": "^5.0.0", + "ed2curve": "^0.3.0", + "esm": "^3.2.25", + "tweetnacl": "^1.0.3" + } + }, + "@ethersproject/bytes": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.5.0.tgz", + "integrity": "sha512-ABvc7BHWhZU9PNM/tANm/Qx4ostPGadAuQzWTr3doklZOhDlmcBqclrQe/ZXUIj3K8wC28oYeuRa+A37tX9kog==", + "requires": { + "@ethersproject/logger": "^5.5.0" + } + }, + "@ethersproject/logger": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.5.0.tgz", + "integrity": "sha512-rIY/6WPm7T8n3qS2vuHTUBPdXHl+rGxWxW5okDfo9J4Z0+gRRZT0msvUdIJkE4/HS29GUMziwGaaKO2bWONBrg==" + }, + "@ethersproject/sha2": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.5.0.tgz", + "integrity": "sha512-B5UBoglbCiHamRVPLA110J+2uqsifpZaTmid2/7W5rbtYVz6gus6/hSDieIU/6gaKIDcOj12WnOdiymEUHIAOA==", + "requires": { + "@ethersproject/bytes": "^5.5.0", + "@ethersproject/logger": "^5.5.0", + "hash.js": "1.1.7" + } + }, + "@identity.com/did-io-driver-sol": { + "version": "1.0.0-beta.0", + "resolved": "https://registry.npmjs.org/@identity.com/did-io-driver-sol/-/did-io-driver-sol-1.0.0-beta.0.tgz", + "integrity": "sha512-X3f0wea2iFr9I3c0rnSnYhgdssVMOh6b4VXuTOaNU42vzL0jq0QOniiou4Zg90WHRshJTkDEEWUXJzYlrCTO3A==", + "requires": { + "@digitalbazaar/did-io": "^1.1.0", + "@digitalbazaar/ed25519-verification-key-2018": "^3.1.1", + "@identity.com/sol-did-client": "^1.0.0-beta", + "@solana/web3.js": "^1.21.0" + } + }, + "@identity.com/sol-did-client": { + "version": "1.0.0-beta", + "resolved": "https://registry.npmjs.org/@identity.com/sol-did-client/-/sol-did-client-1.0.0-beta.tgz", + "integrity": "sha512-uzIo8B5ScUTnr4SAJrxruLb+yu8EtJUvNHaftYBfoJ5RYKZ0e+5kjpVuVlR66yoycOacjNF1o4c/MVzvGMG86g==", + "requires": { + "@solana/web3.js": "^1.21.0", + "bn.js": "^4.12.0", + "borsh": "^0.3.1", + "bs58": "^4.0.1", + "did-resolver": "^3.0.1", + "ramda": "^0.27.1" } }, "@identity.com/uca": { @@ -8797,6 +2740,64 @@ "type-detect": "4.0.8" } }, + "@solana/buffer-layout": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@solana/buffer-layout/-/buffer-layout-3.0.0.tgz", + "integrity": "sha512-MVdgAKKL39tEs0l8je0hKaXLQFb7Rdfb0Xg2LjFZd8Lfdazkg6xiS98uAZrEKvaoF3i4M95ei9RydkGIDMeo3w==", + "requires": { + "buffer": "~6.0.3" + }, + "dependencies": { + "buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + } + } + }, + "@solana/web3.js": { + "version": "1.31.0", + "resolved": "https://registry.npmjs.org/@solana/web3.js/-/web3.js-1.31.0.tgz", + "integrity": "sha512-7nHHx1JNFnrt15e9y8m38I/EJCbaB+bFC3KZVM1+QhybCikFxGMtGA5r7PDC3GEL1R2RZA8yKoLkDKo3vzzqnw==", + "requires": { + "@babel/runtime": "^7.12.5", + "@ethersproject/sha2": "^5.5.0", + "@solana/buffer-layout": "^3.0.0", + "bn.js": "^5.0.0", + "borsh": "^0.4.0", + "bs58": "^4.0.1", + "buffer": "6.0.1", + "cross-fetch": "^3.1.4", + "jayson": "^3.4.4", + "js-sha3": "^0.8.0", + "rpc-websockets": "^7.4.2", + "secp256k1": "^4.0.2", + "superstruct": "^0.14.2", + "tweetnacl": "^1.0.0" + }, + "dependencies": { + "bn.js": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", + "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==" + }, + "borsh": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/borsh/-/borsh-0.4.0.tgz", + "integrity": "sha512-aX6qtLya3K0AkT66CmYWCCDr77qsE9arV05OmdFpmat9qu8Pg9J5tBUPDztAW5fNh/d/MyVG/OYziP52Ndzx1g==", + "requires": { + "@types/bn.js": "^4.11.5", + "bn.js": "^5.0.0", + "bs58": "^4.0.0", + "text-encoding-utf-8": "^1.0.2" + } + } + } + }, "@stablelib/binary": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@stablelib/binary/-/binary-1.0.1.tgz", @@ -8890,6 +2891,32 @@ "@babel/types": "^7.3.0" } }, + "@types/bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==", + "requires": { + "@types/node": "*" + } + }, + "@types/connect": { + "version": "3.4.35", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", + "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", + "requires": { + "@types/node": "*" + } + }, + "@types/express-serve-static-core": { + "version": "4.17.28", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.28.tgz", + "integrity": "sha512-P1BJAEAW3E2DJUlkgq4tOL3RyMunoWXqbSCygWo5ZIWTjUgN1YnaXWW4VWl/oc8vs/XoYibEGBKP0uZyF4AHig==", + "requires": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*" + } + }, "@types/graceful-fs": { "version": "4.1.5", "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz", @@ -8929,11 +2956,15 @@ "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=", "dev": true }, + "@types/lodash": { + "version": "4.14.178", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.178.tgz", + "integrity": "sha512-0d5Wd09ItQWH1qFbEyQ7oTQ3GZrMfth5JkbN3EvTKLXcHLRDSXeLnlvlOn0wvxVIwK5o2M8JzP/OWz7T3NRsbw==" + }, "@types/node": { "version": "17.0.8", "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.8.tgz", - "integrity": "sha512-YofkM6fGv4gDJq78g4j0mMuGMkZVxZDgtU0JRdx6FgiJDG+0fY0GKVolOV8WqVmEhLCXkQRjwDdKyPxJp/uucg==", - "dev": true + "integrity": "sha512-YofkM6fGv4gDJq78g4j0mMuGMkZVxZDgtU0JRdx6FgiJDG+0fY0GKVolOV8WqVmEhLCXkQRjwDdKyPxJp/uucg==" }, "@types/normalize-package-data": { "version": "2.4.1", @@ -8947,12 +2978,30 @@ "integrity": "sha512-5qOlnZscTn4xxM5MeGXAMOsIOIKIbh9e85zJWfBRVPlRMEVawzoPhINYbRGkBZCI8LxvBe7tJCdWiarA99OZfQ==", "dev": true }, + "@types/qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==" + }, + "@types/range-parser": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", + "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==" + }, "@types/stack-utils": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-1.0.1.tgz", "integrity": "sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw==", "dev": true }, + "@types/ws": { + "version": "7.4.7", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-7.4.7.tgz", + "integrity": "sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==", + "requires": { + "@types/node": "*" + } + }, "@types/yargs": { "version": "16.0.4", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", @@ -8972,7 +3021,6 @@ "version": "1.3.5", "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", - "dev": true, "requires": { "jsonparse": "^1.2.0", "through": ">=2.2.7 <3" @@ -9795,6 +3843,13 @@ "requires": { "core-js": "^2.4.0", "regenerator-runtime": "^0.11.0" + }, + "dependencies": { + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" + } } }, "balanced-match": { @@ -9874,6 +3929,11 @@ "esm": "^3.2.25" } }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" + }, "base64url": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/base64url/-/base64url-3.0.1.tgz", @@ -9969,6 +4029,29 @@ "wif": "^2.0.1" } }, + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "borsh": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/borsh/-/borsh-0.3.1.tgz", + "integrity": "sha512-gJoSTnhwLxN/i2+15Y7uprU8h3CKI+Co4YKZKvrGYUy0FwHWM20x5Sx7eU8Xv4HQqV+7rb4r3P7K1cBIQe3q8A==", + "requires": { + "@types/bn.js": "^4.11.5", + "bn.js": "^5.0.0", + "bs58": "^4.0.0", + "text-encoding-utf-8": "^1.0.2" + }, + "dependencies": { + "bn.js": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", + "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==" + } + } + }, "bottlejs": { "version": "1.7.2", "resolved": "https://registry.npmjs.org/bottlejs/-/bottlejs-1.7.2.tgz", @@ -9993,6 +4076,11 @@ "fill-range": "^7.0.1" } }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=" + }, "browser-process-hrtime": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", @@ -10056,12 +4144,30 @@ "node-int64": "^0.4.0" } }, + "buffer": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.1.tgz", + "integrity": "sha512-rVAXBwEcEoYtxnHSO5iWyhzV/O1WMtkUYWlfdLS7FjU4PnSJJHEfHXi/uHPI5EwltmOA794gN3bm3/pzuctWjQ==", + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, "buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true }, + "bufferutil": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.6.tgz", + "integrity": "sha512-jduaYOYtnio4aIAyc6UbvPCVcgq7nYpVnucyxr6eCYg/Woad9Hf/oxxBRDnGGjPfjUm6j5O/uBWhIu4iLebFaw==", + "optional": true, + "requires": { + "node-gyp-build": "^4.3.0" + } + }, "cache-base": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", @@ -10197,10 +4303,9 @@ } }, "circular-json": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", - "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", - "dev": true + "version": "0.5.9", + "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.5.9.tgz", + "integrity": "sha512-4ivwqHpIFJZBuhN3g/pEcdbnGUywkBblloGbkglyloVjjR3uT6tieI89MVOfbP2tHX5sgb01FuLgAOzebNlJNQ==" }, "class-utils": { "version": "0.3.6", @@ -10333,10 +4438,9 @@ } }, "commander": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", - "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", - "dev": true + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" }, "commondir": { "version": "1.0.1", @@ -10509,6 +4613,14 @@ "cross-spawn": "^7.0.1" } }, + "cross-fetch": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.4.tgz", + "integrity": "sha512-1eAtFWdIubi6T4XPy6ei9iUFoKpUkIF971QLN8lIvvvwueI65+Nw5haMNKUwfJxabqlIIDODJKGrQ66gxC0PbQ==", + "requires": { + "node-fetch": "2.6.1" + } + }, "cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -10670,6 +4782,11 @@ } } }, + "delay": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/delay/-/delay-5.0.0.tgz", + "integrity": "sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw==" + }, "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -10686,6 +4803,11 @@ "resolved": "https://registry.npmjs.org/did-io/-/did-io-0.8.3.tgz", "integrity": "sha512-M1q+9bZ74bBlt3bpWX0P2rESqpDnVU5ef+WQ1+q27jPTT7xzw54jGrudUin2JJhqWjpAvuSGXWgpqWP1mi/aJQ==" }, + "did-resolver": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/did-resolver/-/did-resolver-3.1.5.tgz", + "integrity": "sha512-/4lM1vK5osnWVZ2oN9QhlWV5xOwssuLSL1MvueBc8LQWotbD5kM9XQMe7h4GydYpbh3JaWMFkOWwc9jvSZ+qgg==" + }, "diff-sequences": { "version": "25.2.6", "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-25.2.6.tgz", @@ -10753,11 +4875,25 @@ } }, "electron-to-chromium": { - "version": "1.4.44", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.44.tgz", - "integrity": "sha512-tHGWiUUmY7GABK8+DNcr474cnZDTzD8x1736SlDosVH8+/vRJeqfaIBAEHFtMjddz/0T4rKKYsxEc8BwQRdBpw==", + "version": "1.4.45", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.45.tgz", + "integrity": "sha512-czF9eYVuOmlY/vxyMQz2rGlNSjZpxNQYBe1gmQv7al171qOIhgyO9k7D5AKlgeTCSPKk+LHhj5ZyIdmEub9oNg==", "dev": true }, + "elliptic": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", + "requires": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + } + }, "emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", @@ -10840,6 +4976,19 @@ "is-symbol": "^1.0.2" } }, + "es6-promise": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==" + }, + "es6-promisify": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", + "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", + "requires": { + "es6-promise": "^4.0.3" + } + }, "escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", @@ -11401,6 +5550,11 @@ "through": "^2.3.8" } }, + "eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" + }, "exec-sh": { "version": "0.3.6", "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.6.tgz", @@ -11738,6 +5892,11 @@ "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" }, + "eyes": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz", + "integrity": "sha1-Ys8SAjTGg3hdkCNIqADvPgzCC8A=" + }, "fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -11850,6 +6009,12 @@ "write": "^0.2.1" }, "dependencies": { + "circular-json": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", + "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", + "dev": true + }, "rimraf": { "version": "2.6.3", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", @@ -12206,6 +6371,25 @@ "safe-buffer": "^5.2.0" } }, + "hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, "hosted-git-info": { "version": "2.8.9", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", @@ -12315,6 +6499,11 @@ "safer-buffer": ">= 2.1.2 < 3" } }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" + }, "ignore": { "version": "3.3.10", "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", @@ -12895,6 +7084,11 @@ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true }, + "isomorphic-ws": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz", + "integrity": "sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==" + }, "isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", @@ -12999,6 +7193,40 @@ "istanbul-lib-report": "^3.0.0" } }, + "jayson": { + "version": "3.6.6", + "resolved": "https://registry.npmjs.org/jayson/-/jayson-3.6.6.tgz", + "integrity": "sha512-f71uvrAWTtrwoww6MKcl9phQTC+56AopLyEenWvKVAIMz+q0oVGj6tenLZ7Z6UiPBkJtKLj4kt0tACllFQruGQ==", + "requires": { + "@types/connect": "^3.4.33", + "@types/express-serve-static-core": "^4.17.9", + "@types/lodash": "^4.14.159", + "@types/node": "^12.12.54", + "@types/ws": "^7.4.4", + "JSONStream": "^1.3.5", + "commander": "^2.20.3", + "delay": "^5.0.0", + "es6-promisify": "^5.0.0", + "eyes": "^0.1.8", + "isomorphic-ws": "^4.0.1", + "json-stringify-safe": "^5.0.1", + "lodash": "^4.17.20", + "uuid": "^8.3.2", + "ws": "^7.4.5" + }, + "dependencies": { + "@types/node": { + "version": "12.20.41", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.41.tgz", + "integrity": "sha512-f6xOqucbDirG7LOzedpvzjP3UTmHttRou3Mosx3vL9wr9AIQGhcPgVnqa8ihpZYnxyM1rxeNCvTyukPKZtq10Q==" + }, + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" + } + } + }, "jest": { "version": "25.5.4", "resolved": "https://registry.npmjs.org/jest/-/jest-25.5.4.tgz", @@ -16192,8 +10420,7 @@ "jsonparse": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", - "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=", - "dev": true + "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=" }, "jsprim": { "version": "1.4.2", @@ -16484,6 +10711,16 @@ "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", "dev": true }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=" + }, "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", @@ -16583,6 +10820,21 @@ "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", "dev": true }, + "node-addon-api": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.2.tgz", + "integrity": "sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==" + }, + "node-fetch": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", + "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==" + }, + "node-gyp-build": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.3.0.tgz", + "integrity": "sha512-iWjXZvmboq0ja1pUGULQBexmxq8CV4xBhX7VDOTbL7ZR4FOowwY/VOtRxBN/yKxmdGoIp4j5ysNT4u3S2pDQ3Q==" + }, "node-int64": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", @@ -20791,6 +15043,11 @@ "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==" }, + "ramda": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.27.2.tgz", + "integrity": "sha512-SbiLPU40JuJniHexQSAgad32hfwd+DRUdwF2PlVuI5RZD0/vahUco7R8vD86J/tcEKKF9vZrUVwgtmGCqlCKyA==" + }, "randexp": { "version": "0.5.3", "resolved": "https://registry.npmjs.org/randexp/-/randexp-0.5.3.tgz", @@ -20957,9 +15214,9 @@ } }, "regenerator-runtime": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" }, "regenerator-transform": { "version": "0.14.5", @@ -20981,9 +15238,9 @@ } }, "regexp.prototype.flags": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz", - "integrity": "sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.0.tgz", + "integrity": "sha512-OE85RadmCYZJzYgIcWd2Qum/wJ20WwY5Z6Bfv5FeBPU46uPD01s3pe2LNoi0etmr83ibsFidC0ZiKXmPY5UpmQ==", "dev": true, "requires": { "call-bind": "^1.0.2", @@ -21205,6 +15462,27 @@ "inherits": "^2.0.1" } }, + "rpc-websockets": { + "version": "7.4.16", + "resolved": "https://registry.npmjs.org/rpc-websockets/-/rpc-websockets-7.4.16.tgz", + "integrity": "sha512-0b7OVhutzwRIaYAtJo5tqtaQTWKfwAsKnaThOSOy+VkhVdleNUgb8eZnWSdWITRZZEigV5uPEIDr5KZe4DBrdQ==", + "requires": { + "@babel/runtime": "^7.11.2", + "bufferutil": "^4.0.1", + "circular-json": "^0.5.9", + "eventemitter3": "^4.0.7", + "utf-8-validate": "^5.0.2", + "uuid": "^8.3.0", + "ws": "^7.4.5" + }, + "dependencies": { + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" + } + } + }, "rsvp": { "version": "4.8.5", "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz", @@ -21435,6 +15713,16 @@ "xmlchars": "^2.1.1" } }, + "secp256k1": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.3.tgz", + "integrity": "sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA==", + "requires": { + "elliptic": "^6.5.4", + "node-addon-api": "^2.0.0", + "node-gyp-build": "^4.2.0" + } + }, "semver": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", @@ -22010,6 +16298,11 @@ "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", "dev": true }, + "superstruct": { + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/superstruct/-/superstruct-0.14.2.tgz", + "integrity": "sha512-nPewA6m9mR3d6k7WkZ8N8zpTWfenFH3q9pA2PkuiZxINr9DKB2+40wEQf0ixn8VaGuJ78AB6iWOtStI+/4FKZQ==" + }, "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", @@ -22161,6 +16454,11 @@ "minimatch": "^3.0.4" } }, + "text-encoding-utf-8": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/text-encoding-utf-8/-/text-encoding-utf-8-1.0.2.tgz", + "integrity": "sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg==" + }, "text-hex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz", @@ -22181,8 +16479,7 @@ "through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", - "dev": true + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" }, "tmp": { "version": "0.0.33", @@ -22480,6 +16777,15 @@ "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", "dev": true }, + "utf-8-validate": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.8.tgz", + "integrity": "sha512-k4dW/Qja1BYDl2qD4tOMB9PFVha/UJtxTc1cXYOe3WwA/2m0Yn4qB7wLMpJyLJ/7DR0XnTut3HsCSzDT4ZvKgA==", + "optional": true, + "requires": { + "node-gyp-build": "^4.3.0" + } + }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -22751,8 +17057,7 @@ "ws": { "version": "7.5.6", "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.6.tgz", - "integrity": "sha512-6GLgCqo2cy2A2rjCNFlxQS6ZljG/coZfZXclldI8FB/1G3CCI36Zd8xy2HrFVACi8tfk5XrgLQEk+P0Tnz9UcA==", - "dev": true + "integrity": "sha512-6GLgCqo2cy2A2rjCNFlxQS6ZljG/coZfZXclldI8FB/1G3CCI36Zd8xy2HrFVACi8tfk5XrgLQEk+P0Tnz9UcA==" }, "xml-name-validator": { "version": "3.0.0", diff --git a/package.json b/package.json index 2a7eddbb..7acc4914 100644 --- a/package.json +++ b/package.json @@ -68,7 +68,7 @@ "dependencies": { "@digitalbazaar/did-io": "^1.1.0", "@digitalbazaar/did-method-key": "^2.0.0", - "@identity.com/did-io-driver-sol": "file:/Users/william/Work/identity.com/sol-did-refresh/drivers/did-io", + "@identity.com/did-io-driver-sol": "^1.0.0-beta.0", "@identity.com/uca": "github:identity-com/uca#v1.0.30", "ajv": "^7.2.4", "ajv-formats": "^2.0.2", From ab73644813a3b5de39b4544c21c3021bd5acd2ff Mon Sep 17 00:00:00 2001 From: William Brooks Date: Fri, 14 Jan 2022 09:06:33 +0200 Subject: [PATCH 35/52] IDCOM-1427 Minor test cleanup --- __test__/lib/did.test.js | 16 ++++++++-------- __test__/lib/signerVerifier.test.js | 14 +++++++------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/__test__/lib/did.test.js b/__test__/lib/did.test.js index f0df17dc..07f1a780 100644 --- a/__test__/lib/did.test.js +++ b/__test__/lib/did.test.js @@ -36,26 +36,26 @@ describe('DIDs', () => { }); it('verificationMethod can sign for a DID', async () => { - const hasAuthority = await didUtil.canSign(DID_SPARSE, `${DID_SPARSE}#default`); + const canSign = await didUtil.canSign(DID_SPARSE, `${DID_SPARSE}#default`); - expect(hasAuthority).toBeTruthy(); + expect(canSign).toBeTruthy(); }); it('verificationMethod can not sign for a DID if the key does not exist', async () => { - const hasAuthority = await didUtil.canSign(DID_SPARSE, `${DID_SPARSE}#key2`); + const canSign = await didUtil.canSign(DID_SPARSE, `${DID_SPARSE}#key2`); - expect(hasAuthority).toBeFalsy(); + expect(canSign).toBeFalsy(); }); it('verificationMethod can not sign for a DID where the default key is removed', async () => { - const hasAuthority = await didUtil.canSign(DID_WITH_NO_DEFAULT, `${DID_WITH_NO_DEFAULT}#default`); + const canSign = await didUtil.canSign(DID_WITH_NO_DEFAULT, `${DID_WITH_NO_DEFAULT}#default`); - expect(hasAuthority).toBeFalsy(); + expect(canSign).toBeFalsy(); }); it('verificationMethod can sign for a DID it is a controller of', async () => { - const hasAuthority = await didUtil.canSign(DID_CONTROLLED, `${DID_CONTROLLER}#default`); + const canSign = await didUtil.canSign(DID_CONTROLLED, `${DID_CONTROLLER}#default`); - expect(hasAuthority).toBeTruthy(); + expect(canSign).toBeTruthy(); }); }); diff --git a/__test__/lib/signerVerifier.test.js b/__test__/lib/signerVerifier.test.js index 9c28fb4b..dd4999e4 100644 --- a/__test__/lib/signerVerifier.test.js +++ b/__test__/lib/signerVerifier.test.js @@ -10,7 +10,7 @@ const { const textEncoder = new TextEncoder(); -const SIGN_DATA = 'dummy_data_to_sign'; +const DUMMY_MERKLE_ROOT = 'aa4149dda8fd2fac435898372f1de399140f6c50dbc3d40585c913701ce902c4'; // TODO: Replace verify with new implementation once ready const verify = (data, signature, publicKey) => nacl.sign.detached.verify( @@ -30,11 +30,11 @@ describe('signerVerifier', () => { privateKey: privateKeyBase58(DID_SPARSE), }); - const signed = signer.sign({ merkleRoot: SIGN_DATA }); + const signed = signer.sign({ merkleRoot: DUMMY_MERKLE_ROOT }); expect(signed).toBeTruthy(); - const verified = verify(SIGN_DATA, signed.signature, keypair.publicKey); + const verified = verify(DUMMY_MERKLE_ROOT, signed.signature, keypair.publicKey); expect(verified).toBe(true); }); @@ -47,11 +47,11 @@ describe('signerVerifier', () => { keypair, }); - const signed = signer.sign({ merkleRoot: SIGN_DATA }); + const signed = signer.sign({ merkleRoot: DUMMY_MERKLE_ROOT }); expect(signed).toBeTruthy(); - const verified = verify(SIGN_DATA, signed.signature, keypair.publicKey); + const verified = verify(DUMMY_MERKLE_ROOT, signed.signature, keypair.publicKey); expect(verified).toBe(true); }); @@ -78,11 +78,11 @@ describe('signerVerifier', () => { signer: customSigner, }); - const signed = signer.sign({ merkleRoot: SIGN_DATA }); + const signed = signer.sign({ merkleRoot: DUMMY_MERKLE_ROOT }); expect(signed).toBeTruthy(); - const verified = verify(SIGN_DATA, signed.signature, keypair.publicKey); + const verified = verify(DUMMY_MERKLE_ROOT, signed.signature, keypair.publicKey); expect(verified).toBe(true); }); From c7e914c67892b04bd4249ef2a13d84c44505a544 Mon Sep 17 00:00:00 2001 From: William Brooks Date: Fri, 14 Jan 2022 09:34:05 +0200 Subject: [PATCH 36/52] IDCOM-1427 Updated tests to run in the "test" environment --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 7acc4914..e3b6c9a6 100644 --- a/package.json +++ b/package.json @@ -19,7 +19,7 @@ "scripts": { "lint": "eslint . --max-warnings=0", "lint:fix": "npm run lint -- --fix", - "test": "cross-env NODE_ENV=false jest", + "test": "cross-env NODE_ENV=test jest", "test:watch": "jest --watch", "check": "npm run lint && npm run test", "generate-civic-config": "cross-env NODE_ENV=test node scripts/configuration.js", From a71ecde1db28a45cbd0602a57cf494a7b2b4cb72 Mon Sep 17 00:00:00 2001 From: William Brooks Date: Fri, 14 Jan 2022 10:14:54 +0200 Subject: [PATCH 37/52] IDCOM-1428 Fixed tests after merge --- __test__/lib/signerVerifier.test.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/__test__/lib/signerVerifier.test.js b/__test__/lib/signerVerifier.test.js index 8036fc9b..7341eaee 100644 --- a/__test__/lib/signerVerifier.test.js +++ b/__test__/lib/signerVerifier.test.js @@ -24,7 +24,7 @@ describe('signerVerifier', () => { privateKey, }); - const signed = signer.sign({ merkleRoot: SIGN_DATA }); + const signed = signer.sign({ merkleRoot: DUMMY_MERKLE_ROOT }); expect(signed).toBeTruthy(); @@ -32,7 +32,7 @@ describe('signerVerifier', () => { const verified = verifier.verify({ issuer: DID_SPARSE, proof: { - merkleRoot: SIGN_DATA, + merkleRoot: DUMMY_MERKLE_ROOT, merkleRootSignature: signed, }, }); @@ -57,7 +57,7 @@ describe('signerVerifier', () => { const verified = verifier.verify({ issuer: DID_SPARSE, proof: { - merkleRoot: SIGN_DATA, + merkleRoot: DUMMY_MERKLE_ROOT, merkleRootSignature: signed, }, }); @@ -95,7 +95,7 @@ describe('signerVerifier', () => { const verified = verifier.verify({ issuer: DID_SPARSE, proof: { - merkleRoot: SIGN_DATA, + merkleRoot: DUMMY_MERKLE_ROOT, merkleRootSignature: signed, }, }); From 9b508c15811fbad28144d893629bfbff107e2fa7 Mon Sep 17 00:00:00 2001 From: William Brooks Date: Wed, 19 Jan 2022 20:30:16 +0200 Subject: [PATCH 38/52] IDCOM-1427 removed unnescessary dependancy and fixed comment block --- package-lock.json | 577 ---------------------------------------------- package.json | 1 - src/lib/did.js | 2 +- 3 files changed, 1 insertion(+), 579 deletions(-) diff --git a/package-lock.json b/package-lock.json index 06552fc1..dfc5d3a1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3985,16 +3985,6 @@ "dev": true, "optional": true }, - "bindings": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", - "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", - "dev": true, - "optional": true, - "requires": { - "file-uri-to-path": "1.0.0" - } - }, "bip66": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/bip66/-/bip66-1.1.5.tgz", @@ -5952,13 +5942,6 @@ "object-assign": "^4.0.1" } }, - "file-uri-to-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", - "dev": true, - "optional": true - }, "fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", @@ -6749,15 +6732,6 @@ "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", "dev": true }, - "invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", - "dev": true, - "requires": { - "loose-envify": "^1.0.0" - } - }, "ip-regex": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", @@ -8238,513 +8212,6 @@ } } }, - "jest-environment-uint8array": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/jest-environment-uint8array/-/jest-environment-uint8array-1.0.0.tgz", - "integrity": "sha512-PhZFy1N9AyuAs4Mr25/I+oiHEF25t7e74UTL9oTCmasfy8HGAKvPL6Wc43zgF0sV05dLLPS9yplxHfgxMw1E0w==", - "dev": true, - "requires": { - "jest-environment-node": "^24.8.0" - }, - "dependencies": { - "@jest/console": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-24.9.0.tgz", - "integrity": "sha512-Zuj6b8TnKXi3q4ymac8EQfc3ea/uhLeCGThFqXeC8H9/raaH8ARPUTdId+XyGd03Z4In0/VjD2OYFcBF09fNLQ==", - "dev": true, - "requires": { - "@jest/source-map": "^24.9.0", - "chalk": "^2.0.1", - "slash": "^2.0.0" - } - }, - "@jest/environment": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-24.9.0.tgz", - "integrity": "sha512-5A1QluTPhvdIPFYnO3sZC3smkNeXPVELz7ikPbhUj0bQjB07EoE9qtLrem14ZUYWdVayYbsjVwIiL4WBIMV4aQ==", - "dev": true, - "requires": { - "@jest/fake-timers": "^24.9.0", - "@jest/transform": "^24.9.0", - "@jest/types": "^24.9.0", - "jest-mock": "^24.9.0" - } - }, - "@jest/fake-timers": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-24.9.0.tgz", - "integrity": "sha512-eWQcNa2YSwzXWIMC5KufBh3oWRIijrQFROsIqt6v/NS9Io/gknw1jsAC9c+ih/RQX4A3O7SeWAhQeN0goKhT9A==", - "dev": true, - "requires": { - "@jest/types": "^24.9.0", - "jest-message-util": "^24.9.0", - "jest-mock": "^24.9.0" - } - }, - "@jest/source-map": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-24.9.0.tgz", - "integrity": "sha512-/Xw7xGlsZb4MJzNDgB7PW5crou5JqWiBQaz6xyPd3ArOg2nfn/PunV8+olXbbEZzNl591o5rWKE9BRDaFAuIBg==", - "dev": true, - "requires": { - "callsites": "^3.0.0", - "graceful-fs": "^4.1.15", - "source-map": "^0.6.0" - } - }, - "@jest/test-result": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-24.9.0.tgz", - "integrity": "sha512-XEFrHbBonBJ8dGp2JmF8kP/nQI/ImPpygKHwQ/SY+es59Z3L5PI4Qb9TQQMAEeYsThG1xF0k6tmG0tIKATNiiA==", - "dev": true, - "requires": { - "@jest/console": "^24.9.0", - "@jest/types": "^24.9.0", - "@types/istanbul-lib-coverage": "^2.0.0" - } - }, - "@jest/transform": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-24.9.0.tgz", - "integrity": "sha512-TcQUmyNRxV94S0QpMOnZl0++6RMiqpbH/ZMccFB/amku6Uwvyb1cjYX7xkp5nGNkbX4QPH/FcB6q1HBTHynLmQ==", - "dev": true, - "requires": { - "@babel/core": "^7.1.0", - "@jest/types": "^24.9.0", - "babel-plugin-istanbul": "^5.1.0", - "chalk": "^2.0.1", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.1.15", - "jest-haste-map": "^24.9.0", - "jest-regex-util": "^24.9.0", - "jest-util": "^24.9.0", - "micromatch": "^3.1.10", - "pirates": "^4.0.1", - "realpath-native": "^1.1.0", - "slash": "^2.0.0", - "source-map": "^0.6.1", - "write-file-atomic": "2.4.1" - } - }, - "@jest/types": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz", - "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^13.0.0" - } - }, - "@types/istanbul-reports": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz", - "integrity": "sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "*", - "@types/istanbul-lib-report": "*" - } - }, - "@types/yargs": { - "version": "13.0.12", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.12.tgz", - "integrity": "sha512-qCxJE1qgz2y0hA4pIxjBR+PelCH0U5CK1XJXFwCNqfmliatKp47UCXXE9Dyk1OXBDLvsCF57TqQEJaeLfDYEOQ==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "dev": true, - "requires": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - } - }, - "babel-plugin-istanbul": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-5.2.0.tgz", - "integrity": "sha512-5LphC0USA8t4i1zCtjbbNb6jJj/9+X6P37Qfirc/70EQ34xKlMW+a1RHGwxGI+SwWpNwZ27HqvzAobeqaXwiZw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "find-up": "^3.0.0", - "istanbul-lib-instrument": "^3.3.0", - "test-exclude": "^5.2.3" - } - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "fsevents": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", - "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", - "dev": true, - "optional": true, - "requires": { - "bindings": "^1.5.0", - "nan": "^2.12.1" - } - }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "istanbul-lib-coverage": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", - "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", - "dev": true - }, - "istanbul-lib-instrument": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz", - "integrity": "sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==", - "dev": true, - "requires": { - "@babel/generator": "^7.4.0", - "@babel/parser": "^7.4.3", - "@babel/template": "^7.4.0", - "@babel/traverse": "^7.4.3", - "@babel/types": "^7.4.0", - "istanbul-lib-coverage": "^2.0.5", - "semver": "^6.0.0" - } - }, - "jest-environment-node": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-24.9.0.tgz", - "integrity": "sha512-6d4V2f4nxzIzwendo27Tr0aFm+IXWa0XEUnaH6nU0FMaozxovt+sfRvh4J47wL1OvF83I3SSTu0XK+i4Bqe7uA==", - "dev": true, - "requires": { - "@jest/environment": "^24.9.0", - "@jest/fake-timers": "^24.9.0", - "@jest/types": "^24.9.0", - "jest-mock": "^24.9.0", - "jest-util": "^24.9.0" - } - }, - "jest-haste-map": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-24.9.0.tgz", - "integrity": "sha512-kfVFmsuWui2Sj1Rp1AJ4D9HqJwE4uwTlS/vO+eRUaMmd54BFpli2XhMQnPC2k4cHFVbB2Q2C+jtI1AGLgEnCjQ==", - "dev": true, - "requires": { - "@jest/types": "^24.9.0", - "anymatch": "^2.0.0", - "fb-watchman": "^2.0.0", - "fsevents": "^1.2.7", - "graceful-fs": "^4.1.15", - "invariant": "^2.2.4", - "jest-serializer": "^24.9.0", - "jest-util": "^24.9.0", - "jest-worker": "^24.9.0", - "micromatch": "^3.1.10", - "sane": "^4.0.3", - "walker": "^1.0.7" - } - }, - "jest-message-util": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-24.9.0.tgz", - "integrity": "sha512-oCj8FiZ3U0hTP4aSui87P4L4jC37BtQwUMqk+zk/b11FR19BJDeZsZAvIHutWnmtw7r85UmR3CEWZ0HWU2mAlw==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "@jest/test-result": "^24.9.0", - "@jest/types": "^24.9.0", - "@types/stack-utils": "^1.0.1", - "chalk": "^2.0.1", - "micromatch": "^3.1.10", - "slash": "^2.0.0", - "stack-utils": "^1.0.1" - } - }, - "jest-mock": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-24.9.0.tgz", - "integrity": "sha512-3BEYN5WbSq9wd+SyLDES7AHnjH9A/ROBwmz7l2y+ol+NtSFO8DYiEBzoO1CeFc9a8DYy10EO4dDFVv/wN3zl1w==", - "dev": true, - "requires": { - "@jest/types": "^24.9.0" - } - }, - "jest-regex-util": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-24.9.0.tgz", - "integrity": "sha512-05Cmb6CuxaA+Ys6fjr3PhvV3bGQmO+2p2La4hFbU+W5uOc479f7FdLXUWXw4pYMAhhSZIuKHwSXSu6CsSBAXQA==", - "dev": true - }, - "jest-serializer": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-24.9.0.tgz", - "integrity": "sha512-DxYipDr8OvfrKH3Kel6NdED3OXxjvxXZ1uIY2I9OFbGg+vUkkg7AGvi65qbhbWNPvDckXmzMPbK3u3HaDO49bQ==", - "dev": true - }, - "jest-util": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-24.9.0.tgz", - "integrity": "sha512-x+cZU8VRmOJxbA1K5oDBdxQmdq0OIdADarLxk0Mq+3XS4jgvhG/oKGWcIDCtPG0HgjxOYvF+ilPJQsAyXfbNOg==", - "dev": true, - "requires": { - "@jest/console": "^24.9.0", - "@jest/fake-timers": "^24.9.0", - "@jest/source-map": "^24.9.0", - "@jest/test-result": "^24.9.0", - "@jest/types": "^24.9.0", - "callsites": "^3.0.0", - "chalk": "^2.0.1", - "graceful-fs": "^4.1.15", - "is-ci": "^2.0.0", - "mkdirp": "^0.5.1", - "slash": "^2.0.0", - "source-map": "^0.6.0" - } - }, - "jest-worker": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz", - "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==", - "dev": true, - "requires": { - "merge-stream": "^2.0.0", - "supports-color": "^6.1.0" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - }, - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - }, - "read-pkg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", - "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", - "dev": true, - "requires": { - "load-json-file": "^4.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^3.0.0" - } - }, - "read-pkg-up": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-4.0.0.tgz", - "integrity": "sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA==", - "dev": true, - "requires": { - "find-up": "^3.0.0", - "read-pkg": "^3.0.0" - } - }, - "realpath-native": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/realpath-native/-/realpath-native-1.1.0.tgz", - "integrity": "sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA==", - "dev": true, - "requires": { - "util.promisify": "^1.0.0" - } - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - }, - "test-exclude": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-5.2.3.tgz", - "integrity": "sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g==", - "dev": true, - "requires": { - "glob": "^7.1.3", - "minimatch": "^3.0.4", - "read-pkg-up": "^4.0.0", - "require-main-filename": "^2.0.0" - } - }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } - }, - "write-file-atomic": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.1.tgz", - "integrity": "sha512-TGHFeZEZMnv+gBFRfjAcxL5bPHrsGKtnb4qsFAws7/vlh+QfwAaySIw4AXP9ZskTTh5GWu3FLuJhsWVdiJPGvg==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.11", - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.2" - } - } - } - }, "jest-get-type": { "version": "25.2.6", "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-25.2.6.tgz", @@ -10497,26 +9964,6 @@ "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", "dev": true }, - "load-json-file": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" - }, - "dependencies": { - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - } - } - }, "loader-fs-cache": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/loader-fs-cache/-/loader-fs-cache-1.0.3.tgz", @@ -10782,13 +10229,6 @@ "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", "dev": true }, - "nan": { - "version": "2.15.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.15.0.tgz", - "integrity": "sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==", - "dev": true, - "optional": true - }, "nanomatch": { "version": "1.2.13", "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", @@ -14744,23 +14184,6 @@ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, - "path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", - "dev": true, - "requires": { - "pify": "^3.0.0" - }, - "dependencies": { - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - } - } - }, "pause-stream": { "version": "0.0.11", "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", diff --git a/package.json b/package.json index e3b6c9a6..ab74204f 100644 --- a/package.json +++ b/package.json @@ -58,7 +58,6 @@ "husky": "^1.1.2", "inquirer": "^7.3.3", "jest": "^25.5.4", - "jest-environment-uint8array": "^1.0.0", "jest-html-reporter": "^2.3.0", "npm": "^6.14.13", "request-debug": "^0.2.0", diff --git a/src/lib/did.js b/src/lib/did.js index 2ae75697..342de0db 100644 --- a/src/lib/did.js +++ b/src/lib/did.js @@ -48,7 +48,7 @@ module.exports = { }, /** - * Finds the verificationMethod in a document (or if the VM is valid on the controller of a document) + * Finds the verificationMethod in a document * * @param document The document to search through * @param verificationMethod The verification method to return From 4f4e596d92ab07c1d37ac6029212e8c902580c2d Mon Sep 17 00:00:00 2001 From: William Brooks Date: Thu, 20 Jan 2022 15:43:44 +0200 Subject: [PATCH 39/52] IDCOM-1427 code cleanup and comment update --- __test__/services/configBranch.test.js | 1 + src/lib/signerVerifier.js | 40 +++++++++++++------------- 2 files changed, 21 insertions(+), 20 deletions(-) diff --git a/__test__/services/configBranch.test.js b/__test__/services/configBranch.test.js index 4ffaddfa..d5aeb283 100644 --- a/__test__/services/configBranch.test.js +++ b/__test__/services/configBranch.test.js @@ -1,6 +1,7 @@ // do not put these tests on the same file as config.test.js or else jest will fail coverage // (describe.beforeEach scope not working) +// the original platform is stored to temporarily stub win32 platform to test failing in the tests temporarily const originalPlatform = process.platform; describe('Test process platform', () => { diff --git a/src/lib/signerVerifier.js b/src/lib/signerVerifier.js index 39e72c8b..d3b5e0f0 100644 --- a/src/lib/signerVerifier.js +++ b/src/lib/signerVerifier.js @@ -42,30 +42,30 @@ const signer = async (options) => { let { signer: signerImpl } = options; // Create a signer from keypair/key - if (!signerImpl) { - const [did] = verificationMethod.split('#'); + if (signerImpl) return signerImpl; - const document = await didUtil.resolve(did); + const [did] = verificationMethod.split('#'); - let { privateKey } = options; - if (!privateKey) { - privateKey = bs58.encode(options.keypair.secretKey); - } + const document = await didUtil.resolve(did); - const foundMethod = didUtil.findVerificationMethod(document, verificationMethod); - if (!foundMethod) { - throw new Error('The provided verificationMethod is not valid on the DID document'); - } + let { privateKey } = options; + if (!privateKey) { + privateKey = bs58.encode(options.keypair.secretKey); + } + + const foundMethod = didUtil.findVerificationMethod(document, verificationMethod); + if (!foundMethod) { + throw new Error('The provided verificationMethod is not valid on the DID document'); + } - // Check the type is supported and assign the appropriate signer - switch (foundMethod.type) { - case 'Ed25519VerificationKey2018': - case 'Ed25519VerificationKey2020': - signerImpl = new Ed25519Signer(privateKey, verificationMethod); - break; - default: - throw new Error(`Unsupported type ${foundMethod.type}`); - } + // Check the type is supported and assign the appropriate signer + switch (foundMethod.type) { + case 'Ed25519VerificationKey2018': + case 'Ed25519VerificationKey2020': + signerImpl = new Ed25519Signer(privateKey, verificationMethod); + break; + default: + throw new Error(`Unsupported type ${foundMethod.type}`); } return signerImpl; From ca9efd9ab8426e23de04d9f6c6d70b2fe9d20b05 Mon Sep 17 00:00:00 2001 From: William Brooks Date: Thu, 20 Jan 2022 15:49:19 +0200 Subject: [PATCH 40/52] IDCOM-1427 noted ticket numbers on todos --- __test__/creds/VerifiableCredential.test.js | 6 +++--- __test__/lib/signerVerifier.test.js | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/__test__/creds/VerifiableCredential.test.js b/__test__/creds/VerifiableCredential.test.js index b487a1c7..6ee65547 100644 --- a/__test__/creds/VerifiableCredential.test.js +++ b/__test__/creds/VerifiableCredential.test.js @@ -1862,7 +1862,7 @@ describe('Signed Verifiable Credentials', () => { expect(cred.proof.merkleRootSignature.signature).toBeDefined(); expect(cred.proof.merkleRootSignature.verificationMethod).toBe(verificationMethod); - // TODO: re-activate this once verify is done + // TODO: re-activate this once verify is done (IDCOM-1428) // expect(cred.verifyMerkletreeSignature(pubBase58)).toBeTruthy(); }); @@ -1916,7 +1916,7 @@ describe('Signed Verifiable Credentials', () => { expect(cred.proof.merkleRootSignature.verificationMethod).toBe(verificationMethod); }); - // TODO: re-activate this once verify is done + // TODO: re-activate this once verify is done (IDCOM-1428) test.skip('Should verify credential(data only) signature', async () => { const verificationMethod = `${didTestUtil.DID_SPARSE}#default`; @@ -1939,7 +1939,7 @@ describe('Signed Verifiable Credentials', () => { expect(cred).toBeDefined(); expect(cred.proof.merkleRootSignature).toBeDefined(); - // TODO: re-actiate this once verify is done + // TODO: re-actiate this once verify is done (IDCOM-1428) // const dataOnlyCredential = JSON.parse(JSON.stringify(cred)); // expect(signerVerifier.isSignatureValid(dataOnlyCredential)).toBeTruthy(); }); diff --git a/__test__/lib/signerVerifier.test.js b/__test__/lib/signerVerifier.test.js index dd4999e4..4afea30b 100644 --- a/__test__/lib/signerVerifier.test.js +++ b/__test__/lib/signerVerifier.test.js @@ -12,7 +12,7 @@ const textEncoder = new TextEncoder(); const DUMMY_MERKLE_ROOT = 'aa4149dda8fd2fac435898372f1de399140f6c50dbc3d40585c913701ce902c4'; -// TODO: Replace verify with new implementation once ready +// TODO: Replace verify with new implementation once ready (IDCOM-1428) const verify = (data, signature, publicKey) => nacl.sign.detached.verify( textEncoder.encode(data), Uint8Array.from(Buffer.from(signature, 'hex')), From f5c493eb5492632847c0e40452c3aba389e259b1 Mon Sep 17 00:00:00 2001 From: William Brooks Date: Fri, 21 Jan 2022 09:30:26 +0200 Subject: [PATCH 41/52] IDCOM-1427 Updated comments --- __test__/creds/VerifiableCredential.test.js | 1 + src/lib/signerVerifier.js | 11 +++++++---- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/__test__/creds/VerifiableCredential.test.js b/__test__/creds/VerifiableCredential.test.js index 922be774..55d5f53a 100644 --- a/__test__/creds/VerifiableCredential.test.js +++ b/__test__/creds/VerifiableCredential.test.js @@ -1891,6 +1891,7 @@ describe('Signed Verifiable Credentials', () => { expect(cred.proof.merkleRootSignature.signature).toBeDefined(); expect(cred.proof.merkleRootSignature.verificationMethod).toBe(verificationMethod); + // change the issuer DID on the VC cred.issuer = didTestUtil.DID_CONTROLLER; expect(await cred.verifyMerkletreeSignature()).toBe(false); diff --git a/src/lib/signerVerifier.js b/src/lib/signerVerifier.js index 8b33270e..be26cf17 100644 --- a/src/lib/signerVerifier.js +++ b/src/lib/signerVerifier.js @@ -85,14 +85,17 @@ const signer = async (options) => { return signerImpl; }; +/** + * Creates a verifier based on the information provided + * @param did The issuer DID + * @param verificationMethod The verification method used to lookup the key + */ const verifier = async (did, verificationMethod) => { const canSignFor = await didUtil.canSign(did, verificationMethod); if (!canSignFor) { - // always return false if the vm cannot sign for the + // always return false return { - verify() { - return false; - }, + verify: () => false, }; } From 43018c3ca96de0e313379786e46d86f39a761e06 Mon Sep 17 00:00:00 2001 From: William Brooks Date: Fri, 21 Jan 2022 09:33:29 +0200 Subject: [PATCH 42/52] IDCOM-1427 Removed unnescessary code change --- __test__/creds/VerifiableCredentialProxy.test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/__test__/creds/VerifiableCredentialProxy.test.js b/__test__/creds/VerifiableCredentialProxy.test.js index d445d4a5..e2c06311 100644 --- a/__test__/creds/VerifiableCredentialProxy.test.js +++ b/__test__/creds/VerifiableCredentialProxy.test.js @@ -1863,7 +1863,7 @@ describe('Signned Verifiable Credentials', () => { new CredentialSignerVerifier({ prvBase58 })); expect(cred).toBeDefined(); expect(cred.proof.merkleRootSignature).toBeDefined(); - expect(cred.verifyMerkletreeSignature(pubBase58)).toBe(true); + expect(cred.verifyMerkletreeSignature(pubBase58)).toBeTruthy(); }); test('Should verify credential(data only) signature', async () => { From 37acb62ea72bbbe7ff223780ab17118fa4f22888 Mon Sep 17 00:00:00 2001 From: William Brooks Date: Fri, 21 Jan 2022 09:36:48 +0200 Subject: [PATCH 43/52] IDCOM-1427 Updated comments for clarity --- src/creds/VerifiableCredentialProxy.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/creds/VerifiableCredentialProxy.js b/src/creds/VerifiableCredentialProxy.js index 241714a5..7d898a23 100644 --- a/src/creds/VerifiableCredentialProxy.js +++ b/src/creds/VerifiableCredentialProxy.js @@ -79,6 +79,7 @@ class VerifiableCredentialProxy extends VerifiableCredential { return obj; }; + // maintains the old verification process for the older VC format this.verifyMerkletreeSignature = (pubBase58) => { if (_.isEmpty(pubBase58)) return false; const verifier = new CredentialSignerVerifier({ pubBase58 }); From a6264a2e0bcff9f3a2a7b50a6e2bfea4554c0761 Mon Sep 17 00:00:00 2001 From: William Brooks Date: Mon, 31 Jan 2022 12:39:20 +0200 Subject: [PATCH 44/52] IDCOM-1428 added test for controller relationship --- __test__/creds/VerifiableCredential.test.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/__test__/creds/VerifiableCredential.test.js b/__test__/creds/VerifiableCredential.test.js index 55d5f53a..9618525b 100644 --- a/__test__/creds/VerifiableCredential.test.js +++ b/__test__/creds/VerifiableCredential.test.js @@ -1945,6 +1945,8 @@ describe('Signed Verifiable Credentials', () => { expect(cred).toBeDefined(); expect(cred.proof.merkleRootSignature.signature).toBeDefined(); expect(cred.proof.merkleRootSignature.verificationMethod).toBe(verificationMethod); + + expect(await cred.verifyMerkletreeSignature()).toBe(true); }); test('Should verify credential(data only) signature', async () => { From c1e33a9cdf198653f6a79ab20008340e92f3215a Mon Sep 17 00:00:00 2001 From: William Brooks Date: Mon, 31 Jan 2022 12:44:24 +0200 Subject: [PATCH 45/52] fix: audit --- audit-ci.json | 3 +-- package-lock.json | 56 +++++++++++++++++++++++++++++++++-------------- 2 files changed, 41 insertions(+), 18 deletions(-) diff --git a/audit-ci.json b/audit-ci.json index dc146a76..5b56516e 100644 --- a/audit-ci.json +++ b/audit-ci.json @@ -2,6 +2,5 @@ "low": true, "package-manager": "auto", "report": true, - "allowlist": [ - 1004946, 1005040, 1005043, 1005046, 1005072, 1005077, 1005081, 1005512, 1005534, 1006724] + "allowlist": [1004946, 1005512, 1005534, 1006724] } diff --git a/package-lock.json b/package-lock.json index dfc5d3a1..7a37a0c1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2760,9 +2760,9 @@ } }, "@solana/web3.js": { - "version": "1.31.0", - "resolved": "https://registry.npmjs.org/@solana/web3.js/-/web3.js-1.31.0.tgz", - "integrity": "sha512-7nHHx1JNFnrt15e9y8m38I/EJCbaB+bFC3KZVM1+QhybCikFxGMtGA5r7PDC3GEL1R2RZA8yKoLkDKo3vzzqnw==", + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/@solana/web3.js/-/web3.js-1.32.0.tgz", + "integrity": "sha512-jquZ/VBvM3zXAaTJvdWd9mlP0WiZaZqjji0vw5UAsb5IKIossrLhHtyUqMfo41Qkdwu1aVwf7YWG748i4XIJnw==", "requires": { "@babel/runtime": "^7.12.5", "@ethersproject/sha2": "^5.5.0", @@ -4604,11 +4604,11 @@ } }, "cross-fetch": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.4.tgz", - "integrity": "sha512-1eAtFWdIubi6T4XPy6ei9iUFoKpUkIF971QLN8lIvvvwueI65+Nw5haMNKUwfJxabqlIIDODJKGrQ66gxC0PbQ==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", + "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", "requires": { - "node-fetch": "2.6.1" + "node-fetch": "2.6.7" } }, "cross-spawn": { @@ -7190,9 +7190,9 @@ }, "dependencies": { "@types/node": { - "version": "12.20.41", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.41.tgz", - "integrity": "sha512-f6xOqucbDirG7LOzedpvzjP3UTmHttRou3Mosx3vL9wr9AIQGhcPgVnqa8ihpZYnxyM1rxeNCvTyukPKZtq10Q==" + "version": "12.20.42", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.42.tgz", + "integrity": "sha512-aI3/oo5DzyiI5R/xAhxxRzfZlWlsbbqdgxfTPkqu/Zt+23GXiJvMCyPJT4+xKSXOnLqoL8jJYMLTwvK2M3a5hw==" }, "uuid": { "version": "8.3.2", @@ -10266,9 +10266,33 @@ "integrity": "sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==" }, "node-fetch": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", - "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==" + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "requires": { + "whatwg-url": "^5.0.0" + }, + "dependencies": { + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=" + }, + "webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" + }, + "whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", + "requires": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + } + } }, "node-gyp-build": { "version": "4.3.0", @@ -14886,9 +14910,9 @@ } }, "rpc-websockets": { - "version": "7.4.16", - "resolved": "https://registry.npmjs.org/rpc-websockets/-/rpc-websockets-7.4.16.tgz", - "integrity": "sha512-0b7OVhutzwRIaYAtJo5tqtaQTWKfwAsKnaThOSOy+VkhVdleNUgb8eZnWSdWITRZZEigV5uPEIDr5KZe4DBrdQ==", + "version": "7.4.17", + "resolved": "https://registry.npmjs.org/rpc-websockets/-/rpc-websockets-7.4.17.tgz", + "integrity": "sha512-eolVi/qlXS13viIUH9aqrde902wzSLAai0IjmOZSRefp5I3CSG/vCnD0c0fDSYCWuEyUoRL1BHQA8K1baEUyow==", "requires": { "@babel/runtime": "^7.11.2", "bufferutil": "^4.0.1", From 73bac2cd4c1366baebfc71591329c295961db4a4 Mon Sep 17 00:00:00 2001 From: William Brooks Date: Wed, 13 Apr 2022 22:07:30 +0200 Subject: [PATCH 46/52] Added support to verify VC from pure JSON object --- __test__/creds/VerifiableCredential.test.js | 17 ++++++++++++----- .../creds/VerifiableCredentialProxy.test.js | 9 +++++---- package-lock.json | 2 +- package.json | 4 ++-- src/creds/VerifiableCredential.js | 9 ++------- src/creds/VerifiableCredentialProxy.js | 13 +++++++------ src/index.js | 6 ++++-- 7 files changed, 33 insertions(+), 27 deletions(-) diff --git a/__test__/creds/VerifiableCredential.test.js b/__test__/creds/VerifiableCredential.test.js index 9618525b..50165bcc 100644 --- a/__test__/creds/VerifiableCredential.test.js +++ b/__test__/creds/VerifiableCredential.test.js @@ -921,7 +921,7 @@ describe('Unit tests for Verifiable Credentials', () => { const receivedCred = await VC.fromJSON(JSON.parse(transmittedCred)); expect(receivedCred.proof.granted).not.toBeNull(); - const verifyGrant = receivedCred.verifyGrant(requestorId, requestId); + const verifyGrant = await receivedCred.verifyGrant(requestorId, requestId); expect(verifyGrant).toEqual(true); done(); @@ -954,7 +954,7 @@ describe('Unit tests for Verifiable Credentials', () => { // eslint-disable-next-line receivedCred.proof.granted = '304502210085f6baceefcddefff535416df0eda6c9b8a01dcba592c599ec2c83cce7171dd802204473f5a15b3904dbf0fc309fe812fbf449948714938fb4871196d338ef38f1d1'; - const verifyGrant = receivedCred.verifyGrant(requestorId, requestId); + const verifyGrant = await receivedCred.verifyGrant(requestorId, requestId); expect(verifyGrant).toEqual(false); done(); @@ -982,7 +982,7 @@ describe('Unit tests for Verifiable Credentials', () => { const credentialObj = JSON.parse(transmittedCred); - const verifyGrant = VC.requesterGrantVerify(credentialObj, requestorId, requestId); + const verifyGrant = await VC.requesterGrantVerify(credentialObj, requestorId, requestId); expect(verifyGrant).toEqual(true); done(); @@ -1014,7 +1014,7 @@ describe('Unit tests for Verifiable Credentials', () => { // eslint-disable-next-line max-len credentialObj.proof.granted = '304502210085f6baceefcddefff535416df0eda6c9b8a01dcba592c599ec2c83cce7171dd802204473f5a15b3904dbf0fc309fe812fbf449948714938fb4871196d338ef38f1d1'; - const verifyGrant = VC.requesterGrantVerify(credentialObj, requestorId, requestId); + const verifyGrant = await VC.requesterGrantVerify(credentialObj, requestorId, requestId); expect(verifyGrant).toEqual(false); done(); @@ -1690,6 +1690,9 @@ describe('Unit tests for Verifiable Credentials', () => { }); it('Should create credential if all claims are provided', async () => { + const verificationMethod = `${didTestUtil.DID_CONTROLLER}#default`; + const keypair = didTestUtil.keyPair(didTestUtil.DID_CONTROLLER); + const type = await Claim.create('claim-cvc:Document.type-v1', 'passport', '1'); const number = await Claim.create('claim-cvc:Document.number-v1', '123', '1'); const name = await Claim.create('claim-cvc:Document.name-v1', { givenNames: 'Maxime' }, '1'); @@ -1723,8 +1726,12 @@ describe('Unit tests for Verifiable Credentials', () => { const ucas = [ type, number, name, gender, issueCountry, placeOfBirth, dateOfBirth, nationality, dateOfExpiry, evidences, ]; - const credential = await VC.create('credential-cvc:IdDocument-v3', '', null, credentialSubject, ucas); + const credential = await VC.create('credential-cvc:IdDocument-v3', didTestUtil.DID_CONTROLLER, null, credentialSubject, ucas, null, { + verificationMethod, + keypair, + }); expect(credential).toBeDefined(); + expect(await cred.verifyMerkletreeSignature()).toBe(true); }); it('Should throw exception on credential creation if required uca is missing', async () => { diff --git a/__test__/creds/VerifiableCredentialProxy.test.js b/__test__/creds/VerifiableCredentialProxy.test.js index e2c06311..510cf931 100644 --- a/__test__/creds/VerifiableCredentialProxy.test.js +++ b/__test__/creds/VerifiableCredentialProxy.test.js @@ -931,7 +931,7 @@ describe('Unit tests for Verifiable Credential Proxy', () => { const receivedCred = await VC.fromJSON(JSON.parse(transmittedCred)); expect(receivedCred.granted).not.toBeNull(); - const verifyGrant = receivedCred.verifyGrant(requestorId, requestId); + const verifyGrant = await receivedCred.verifyGrant(requestorId, requestId); expect(verifyGrant).toEqual(true); done(); @@ -964,7 +964,7 @@ describe('Unit tests for Verifiable Credential Proxy', () => { // eslint-disable-next-line receivedCred.granted = '304502210085f6baceefcddefff535416df0eda6c9b8a01dcba592c599ec2c83cce7171dd802204473f5a15b3904dbf0fc309fe812fbf449948714938fb4871196d338ef38f1d1'; - const verifyGrant = receivedCred.verifyGrant(requestorId, requestId); + const verifyGrant = await receivedCred.verifyGrant(requestorId, requestId); expect(verifyGrant).toEqual(false); done(); @@ -991,8 +991,9 @@ describe('Unit tests for Verifiable Credential Proxy', () => { expect(transmittedCred.granted).not.toBeNull(); const credentialObj = JSON.parse(transmittedCred); + console.log(JSON.stringify(credentialObj, null, 2)); - const verifyGrant = VC.requesterGrantVerify(credentialObj, requestorId, requestId); + const verifyGrant = await VC.requesterGrantVerify(credentialObj, requestorId, requestId); expect(verifyGrant).toEqual(true); done(); @@ -1024,7 +1025,7 @@ describe('Unit tests for Verifiable Credential Proxy', () => { // eslint-disable-next-line max-len credentialObj.proof.granted = '304502210085f6baceefcddefff535416df0eda6c9b8a01dcba592c599ec2c83cce7171dd802204473f5a15b3904dbf0fc309fe812fbf449948714938fb4871196d338ef38f1d1'; - const verifyGrant = VC.requesterGrantVerify(credentialObj, requestorId, requestId); + const verifyGrant = await VC.requesterGrantVerify(credentialObj, requestorId, requestId); expect(verifyGrant).toEqual(false); done(); diff --git a/package-lock.json b/package-lock.json index 7a37a0c1..bff4c1ef 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "@identity.com/credential-commons", - "version": "2.0.2", + "version": "3.0.0-beta.1", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index ab74204f..1ac654c6 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@identity.com/credential-commons", - "version": "2.0.2", + "version": "3.0.0-beta.4", "author": "Identity.com Community", "license": "MIT", "description": "Verifiable Credential and Attestation Library", @@ -72,7 +72,7 @@ "ajv": "^7.2.4", "ajv-formats": "^2.0.2", "babel-runtime": "^6.26.0", - "bitcoinjs-lib": "git+https://github.com/dabura667/bitcoinjs-lib.git#bcash330", + "bitcoinjs-lib": "https://github.com/dabura667/bitcoinjs-lib.git#bcash330", "bottlejs": "^1.7.1", "bs58": "^4.0.1", "did-io": "^0.8.3", diff --git a/src/creds/VerifiableCredential.js b/src/creds/VerifiableCredential.js index 1052bc06..58e33a23 100644 --- a/src/creds/VerifiableCredential.js +++ b/src/creds/VerifiableCredential.js @@ -280,7 +280,7 @@ async function cryptographicallySecureVerify(credential, verifyAttestationFunc, * @param credential - A credential object with expirationDate, claim and proof * @return true if verified, false otherwise. */ -function requesterGrantVerify(credential, requesterId, requestId, keyName) { +async function requesterGrantVerify(credential, requesterId, requestId, keyName) { const label = _.get(credential.proof, 'anchor.subject.label'); const anchorPubKey = _.get(credential.proof, 'anchor.subject.pub'); const anchorData = _.get(credential.proof, 'anchor.subject.data'); @@ -345,12 +345,7 @@ function verifyRequiredClaims(definition, ucas) { * @param {*} [version] - definition version */ function getCredentialDefinition(identifier, version) { - let definition; - if (version) { - definition = _.find(definitions, { identifier, version: `${version}` }); - } else { - definition = _.find(definitions, { identifier }); - } + const definition = _.find(definitions, { identifier }); if (!definition) { throw new Error(`Credential definition for ${identifier} v${version} not found`); } diff --git a/src/creds/VerifiableCredentialProxy.js b/src/creds/VerifiableCredentialProxy.js index 7d898a23..c1dce990 100644 --- a/src/creds/VerifiableCredentialProxy.js +++ b/src/creds/VerifiableCredentialProxy.js @@ -11,12 +11,8 @@ const definitions = schemaLoader.credentialDefinitions; * @param {*} [version] - definition version */ function getCredentialDefinition(identifier, version) { - let definition; - if (version) { - definition = _.find(definitions, { identifier, version: `${version}` }); - } else { - definition = _.find(definitions, { identifier }); - } + const definition = _.find(definitions, { identifier }); + if (!definition) { throw new Error(`Credential definition for ${identifier} v${version} not found`); } @@ -185,4 +181,9 @@ VerifiableCredentialProxy.cryptographicallySecureVerify = async ( return VerifiableCredential.cryptographicallySecureVerify(vc, verifyAttestationFunc, verifySignatureFunc); }; +VerifiableCredentialProxy.requesterGrantVerify = async (credential, requesterId, requestId, keyName) => { + const vc = await VerifiableCredentialProxy.fromJSON(credential); + return VerifiableCredential.requesterGrantVerify(vc, requesterId, requestId, keyName); +}; + module.exports = VerifiableCredentialProxy; diff --git a/src/index.js b/src/index.js index d7d93507..7d9d258f 100644 --- a/src/index.js +++ b/src/index.js @@ -11,7 +11,7 @@ const credentialDefinitions = require('./creds/definitions'); const aggregate = require('./AggregationHandler'); const { schemaLoader } = require('./schemas/jsonSchema'); const CVCSchemaLoader = require('./schemas/jsonSchema/loaders/cvc'); - +const VCCompat = require('./creds/VerifiableCredentialProxy'); /** * Entry Point for Civic Credential Commons * @returns {CredentialCommons} @@ -19,7 +19,7 @@ const CVCSchemaLoader = require('./schemas/jsonSchema/loaders/cvc'); */ function CredentialCommons() { this.Claim = Claim; - this.VC = VC; + this.init = initServices; this.isValidGlobalIdentifier = isValidGlobalIdentifier; this.isClaimRelated = isClaimRelated; @@ -32,6 +32,8 @@ function CredentialCommons() { this.schemaLoader = schemaLoader; this.CVCSchemaLoader = CVCSchemaLoader; this.UserCollectableAttribute = UserCollectableAttribute; + this.VC = VC; + this.VCCompat = VCCompat; return this; } From 21b2c3b88369c48c80f38dc728d9c550db6127eb Mon Sep 17 00:00:00 2001 From: William Brooks Date: Thu, 14 Apr 2022 14:20:23 +0200 Subject: [PATCH 47/52] fix: removed unnescessary dependancies --- package-lock.json | 76 +---------------------------------------------- package.json | 2 -- 2 files changed, 1 insertion(+), 77 deletions(-) diff --git a/package-lock.json b/package-lock.json index bff4c1ef..03b74bfd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "@identity.com/credential-commons", - "version": "3.0.0-beta.1", + "version": "3.0.0-beta.5", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -1226,18 +1226,6 @@ "esm": "^3.2.25" } }, - "@digitalbazaar/did-method-key": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@digitalbazaar/did-method-key/-/did-method-key-2.0.0.tgz", - "integrity": "sha512-540CsZUesyRxku72Dkl7BC/h26iFko/X+NXx1D2KQpi8cSgb6gs1PqvXEAUThszGq1y2p/6ByDKYAJhlaAG8VQ==", - "requires": { - "@digitalbazaar/did-io": "^1.0.0", - "@digitalbazaar/ed25519-verification-key-2020": "^3.0.0", - "@digitalbazaar/x25519-key-agreement-key-2019": "^5.1.1", - "@digitalbazaar/x25519-key-agreement-key-2020": "^2.0.0", - "esm": "^3.2.25" - } - }, "@digitalbazaar/ed25519-verification-key-2018": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/@digitalbazaar/ed25519-verification-key-2018/-/ed25519-verification-key-2018-3.1.1.tgz", @@ -1249,18 +1237,6 @@ "esm": "^3.2.25" } }, - "@digitalbazaar/ed25519-verification-key-2020": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@digitalbazaar/ed25519-verification-key-2020/-/ed25519-verification-key-2020-3.2.0.tgz", - "integrity": "sha512-A+17sRJ+rRNuN6yG0zZMucbVUpxUkBRLTb503caoJv0GB5853HXSaZbl83kKl9LCh02ExbQWxD6o/aqeR012uA==", - "requires": { - "@stablelib/ed25519": "^1.0.1", - "base58-universal": "^1.0.0", - "base64url-universal": "^1.1.0", - "crypto-ld": "^5.1.0", - "esm": "^3.2.25" - } - }, "@digitalbazaar/lru-memoize": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/@digitalbazaar/lru-memoize/-/lru-memoize-2.1.0.tgz", @@ -1270,30 +1246,6 @@ "lru-cache": "^6.0.0" } }, - "@digitalbazaar/x25519-key-agreement-key-2019": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@digitalbazaar/x25519-key-agreement-key-2019/-/x25519-key-agreement-key-2019-5.1.1.tgz", - "integrity": "sha512-LGsPMbGXV3wqC6yl2fyCaEl5CCW0hGQ9yYXBYqhiExgjNiLdkF1FjNBK+IjW2p5U0ysixI9NuWiPn6SjBEIkjA==", - "requires": { - "base58-universal": "^1.0.0", - "crypto-ld": "^5.0.0", - "ed2curve": "^0.3.0", - "esm": "^3.2.25", - "tweetnacl": "^1.0.3" - } - }, - "@digitalbazaar/x25519-key-agreement-key-2020": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@digitalbazaar/x25519-key-agreement-key-2020/-/x25519-key-agreement-key-2020-2.0.0.tgz", - "integrity": "sha512-VI39m0nvQlOXi4Q3w+2YFj7XvWN145KNoZMgEWFOaA/PaIjswniKSgbY98sHtMGfN/JCqQlVeYnCMuheP5H0WQ==", - "requires": { - "base58-universal": "^1.0.0", - "crypto-ld": "^5.0.0", - "ed2curve": "^0.3.0", - "esm": "^3.2.25", - "tweetnacl": "^1.0.3" - } - }, "@ethersproject/bytes": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.5.0.tgz", @@ -3934,19 +3886,6 @@ "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" }, - "base64url": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/base64url/-/base64url-3.0.1.tgz", - "integrity": "sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A==" - }, - "base64url-universal": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/base64url-universal/-/base64url-universal-1.1.0.tgz", - "integrity": "sha512-WyftvZqye29YQ10ZnuiBeEj0lk8SN8xHU9hOznkLc85wS1cLTp6RpzlMrHxMPD9nH7S55gsBqMqgGyz93rqmkA==", - "requires": { - "base64url": "^3.0.0" - } - }, "bcrypt-pbkdf": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", @@ -4788,11 +4727,6 @@ "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", "dev": true }, - "did-io": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/did-io/-/did-io-0.8.3.tgz", - "integrity": "sha512-M1q+9bZ74bBlt3bpWX0P2rESqpDnVU5ef+WQ1+q27jPTT7xzw54jGrudUin2JJhqWjpAvuSGXWgpqWP1mi/aJQ==" - }, "did-resolver": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/did-resolver/-/did-resolver-3.1.5.tgz", @@ -4856,14 +4790,6 @@ "safe-buffer": "^5.0.1" } }, - "ed2curve": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/ed2curve/-/ed2curve-0.3.0.tgz", - "integrity": "sha512-8w2fmmq3hv9rCrcI7g9hms2pMunQr1JINfcjwR9tAyZqhtyaMN991lF/ZfHfr5tzZQ8c7y7aBgZbjfbd0fjFwQ==", - "requires": { - "tweetnacl": "1.x.x" - } - }, "electron-to-chromium": { "version": "1.4.45", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.45.tgz", diff --git a/package.json b/package.json index 1ac654c6..4718c1d0 100644 --- a/package.json +++ b/package.json @@ -66,7 +66,6 @@ }, "dependencies": { "@digitalbazaar/did-io": "^1.1.0", - "@digitalbazaar/did-method-key": "^2.0.0", "@identity.com/did-io-driver-sol": "^1.0.0-beta.0", "@identity.com/uca": "github:identity-com/uca#v1.0.30", "ajv": "^7.2.4", @@ -75,7 +74,6 @@ "bitcoinjs-lib": "https://github.com/dabura667/bitcoinjs-lib.git#bcash330", "bottlejs": "^1.7.1", "bs58": "^4.0.1", - "did-io": "^0.8.3", "dotenv": "^8.6.0", "flat": "^4.1.0", "json-schema-traverse": "^1.0.0", From 69570ef3bfd6b6797e55a5ffaf0b0a74b1960b6a Mon Sep 17 00:00:00 2001 From: William Brooks Date: Wed, 11 May 2022 16:30:12 +0200 Subject: [PATCH 48/52] IDCOM-1424 Fixed issue when loading schemas in parallel --- src/schemas/jsonSchema/index.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/schemas/jsonSchema/index.js b/src/schemas/jsonSchema/index.js index edc9c4ad..3be242d5 100644 --- a/src/schemas/jsonSchema/index.js +++ b/src/schemas/jsonSchema/index.js @@ -371,6 +371,10 @@ class SchemaLoader { }); } + if(schema.title === 'cvc:Meta:expirationDate') { + console.log("?"); + } + if ((await this.shouldAddClaimDefinition(schema))) { this.definitions.push(definition); @@ -484,14 +488,14 @@ class SchemaLoader { await Promise.all(references); + await this.addDefinition(schema); + try { this.ajv.addSchema(schema); } catch (e) { // This could only happen if we have a cyclic dependency, or the same ref multiple times in the schema... } - await this.addDefinition(schema); - return schema; } From 54c1eb0d4b328ab61251a0a08737fce1bd09813f Mon Sep 17 00:00:00 2001 From: William Brooks Date: Fri, 13 May 2022 17:18:53 +0200 Subject: [PATCH 49/52] fix: removed debug code & version bump --- package.json | 2 +- src/schemas/jsonSchema/index.js | 4 ---- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/package.json b/package.json index 4718c1d0..bfc17402 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@identity.com/credential-commons", - "version": "3.0.0-beta.4", + "version": "3.0.0-beta.6", "author": "Identity.com Community", "license": "MIT", "description": "Verifiable Credential and Attestation Library", diff --git a/src/schemas/jsonSchema/index.js b/src/schemas/jsonSchema/index.js index 3be242d5..6f304f49 100644 --- a/src/schemas/jsonSchema/index.js +++ b/src/schemas/jsonSchema/index.js @@ -371,10 +371,6 @@ class SchemaLoader { }); } - if(schema.title === 'cvc:Meta:expirationDate') { - console.log("?"); - } - if ((await this.shouldAddClaimDefinition(schema))) { this.definitions.push(definition); From 2e01420d9c32618370922809b59f8fc56c1bf8a0 Mon Sep 17 00:00:00 2001 From: William Brooks Date: Mon, 16 May 2022 12:51:13 +0200 Subject: [PATCH 50/52] fix: fixed broken test --- __test__/creds/VerifiableCredential.test.js | 18 +++++++++++++----- .../creds/VerifiableCredentialProxy.test.js | 1 - 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/__test__/creds/VerifiableCredential.test.js b/__test__/creds/VerifiableCredential.test.js index 50165bcc..3e53f620 100644 --- a/__test__/creds/VerifiableCredential.test.js +++ b/__test__/creds/VerifiableCredential.test.js @@ -66,6 +66,8 @@ class TestSchemaLoader extends CVCSchemaLoader { describe('Unit tests for Verifiable Credentials', () => { beforeAll(() => { schemaLoader.addLoader(new CVCSchemaLoader()); + + didTestUtil.mockDids(); }); beforeEach(() => { @@ -1726,12 +1728,18 @@ describe('Unit tests for Verifiable Credentials', () => { const ucas = [ type, number, name, gender, issueCountry, placeOfBirth, dateOfBirth, nationality, dateOfExpiry, evidences, ]; - const credential = await VC.create('credential-cvc:IdDocument-v3', didTestUtil.DID_CONTROLLER, null, credentialSubject, ucas, null, { - verificationMethod, - keypair, - }); + const credential = await VC.create('credential-cvc:IdDocument-v3', + didTestUtil.DID_CONTROLLER, + null, + credentialSubject, + ucas, + null, + { + verificationMethod, + keypair, + }); expect(credential).toBeDefined(); - expect(await cred.verifyMerkletreeSignature()).toBe(true); + expect(await credential.verifyMerkletreeSignature()).toBe(true); }); it('Should throw exception on credential creation if required uca is missing', async () => { diff --git a/__test__/creds/VerifiableCredentialProxy.test.js b/__test__/creds/VerifiableCredentialProxy.test.js index 510cf931..706e3c23 100644 --- a/__test__/creds/VerifiableCredentialProxy.test.js +++ b/__test__/creds/VerifiableCredentialProxy.test.js @@ -991,7 +991,6 @@ describe('Unit tests for Verifiable Credential Proxy', () => { expect(transmittedCred.granted).not.toBeNull(); const credentialObj = JSON.parse(transmittedCred); - console.log(JSON.stringify(credentialObj, null, 2)); const verifyGrant = await VC.requesterGrantVerify(credentialObj, requestorId, requestId); expect(verifyGrant).toEqual(true); From 72aafec51ed1cd91b8f489ded5d5dc10f3cb75d7 Mon Sep 17 00:00:00 2001 From: William Brooks Date: Mon, 16 May 2022 14:21:24 +0200 Subject: [PATCH 51/52] fix: audit ci --- audit-ci.json | 2 +- package-lock.json | 964 ++++++++++++++++++++-------------------------- package.json | 4 +- 3 files changed, 417 insertions(+), 553 deletions(-) diff --git a/audit-ci.json b/audit-ci.json index 5b56516e..a3f2204d 100644 --- a/audit-ci.json +++ b/audit-ci.json @@ -2,5 +2,5 @@ "low": true, "package-manager": "auto", "report": true, - "allowlist": [1004946, 1005512, 1005534, 1006724] + "allowlist": [1067342, 1067524, 1068287, 1068310, 1070273, 1070274] } diff --git a/package-lock.json b/package-lock.json index 03b74bfd..134b66f8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "@identity.com/credential-commons", - "version": "3.0.0-beta.5", + "version": "3.0.0-beta.6", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -1246,6 +1246,74 @@ "lru-cache": "^6.0.0" } }, + "@eslint/eslintrc": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", + "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.1.1", + "espree": "^7.3.0", + "globals": "^13.9.0", + "ignore": "^4.0.6", + "import-fresh": "^3.2.1", + "js-yaml": "^3.13.1", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "globals": { + "version": "13.15.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.15.0.tgz", + "integrity": "sha512-bpzcOlgDhMG070Av0Vy5Owklpv1I6+j96GhUI7Rh7IzDCKLzboflLrrfqMu8NquDbiR4EOQk7XzJwqVJxicxog==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true + } + } + }, "@ethersproject/bytes": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.5.0.tgz", @@ -1269,6 +1337,23 @@ "hash.js": "1.1.7" } }, + "@humanwhocodes/config-array": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", + "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", + "dev": true, + "requires": { + "@humanwhocodes/object-schema": "^1.2.0", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + } + }, + "@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, "@identity.com/did-io-driver-sol": { "version": "1.0.0-beta.0", "resolved": "https://registry.npmjs.org/@identity.com/did-io-driver-sol/-/did-io-driver-sol-1.0.0-beta.0.tgz", @@ -2985,9 +3070,9 @@ "dev": true }, "acorn": { - "version": "5.7.4", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz", - "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==", + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", "dev": true }, "acorn-globals": { @@ -3009,21 +3094,10 @@ } }, "acorn-jsx": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", - "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", - "dev": true, - "requires": { - "acorn": "^3.0.4" - }, - "dependencies": { - "acorn": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", - "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", - "dev": true - } - } + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true }, "acorn-walk": { "version": "6.2.0", @@ -3063,16 +3137,10 @@ } } }, - "ajv-keywords": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.1.tgz", - "integrity": "sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I=", - "dev": true - }, - "ansi-escapes": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", - "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "ansi-colors": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.2.tgz", + "integrity": "sha512-cEG18jjLG0O74o/33eEfnmtXYDEY196ZjL0eQEISULF+Imi7vr25l6ntGYmqS5lIrQIEeze+CqUtPVItywE7ZQ==", "dev": true }, "ansi-regex": { @@ -3283,65 +3351,6 @@ "integrity": "sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==", "dev": true }, - "babel-code-frame": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", - "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", - "dev": true, - "requires": { - "chalk": "^1.1.3", - "esutils": "^2.0.2", - "js-tokens": "^3.0.2" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "js-tokens": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", - "dev": true - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, "babel-helper-evaluate-path": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/babel-helper-evaluate-path/-/babel-helper-evaluate-path-0.5.0.tgz", @@ -4141,19 +4150,10 @@ } } }, - "caller-path": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", - "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", - "dev": true, - "requires": { - "callsites": "^0.2.0" - } - }, "callsites": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", - "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true }, "camelcase": { @@ -4193,12 +4193,6 @@ "supports-color": "^5.3.0" } }, - "chardet": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", - "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=", - "dev": true - }, "chokidar": { "version": "3.5.2", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", @@ -4265,21 +4259,6 @@ "integrity": "sha512-qMjRnoL+JDPJHeLePZJuao6+8orzHMGP04A8CdwCNsKhRbOnKRjefxONR7bwILT3MHecxKBjHkKL/tkZ8r4Uzw==", "dev": true }, - "cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", - "dev": true, - "requires": { - "restore-cursor": "^2.0.0" - } - }, - "cli-width": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", - "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==", - "dev": true - }, "cliui": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", @@ -4389,50 +4368,6 @@ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true }, - "concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - }, - "dependencies": { - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, "confusing-browser-globals": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz", @@ -4836,6 +4771,15 @@ "once": "^1.4.0" } }, + "enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, + "requires": { + "ansi-colors": "^4.1.1" + } + }, "error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", @@ -4940,186 +4884,221 @@ } }, "eslint": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.19.1.tgz", - "integrity": "sha512-bT3/1x1EbZB7phzYu7vCr1v3ONuzDtX8WjuM9c0iYxe+cq+pwcKEoQjl7zd3RpC6YOLgnSy3cTN58M2jcoPDIQ==", + "version": "7.32.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", + "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", "dev": true, "requires": { - "ajv": "^5.3.0", - "babel-code-frame": "^6.22.0", - "chalk": "^2.1.0", - "concat-stream": "^1.6.0", - "cross-spawn": "^5.1.0", - "debug": "^3.1.0", - "doctrine": "^2.1.0", - "eslint-scope": "^3.7.1", - "eslint-visitor-keys": "^1.0.0", - "espree": "^3.5.4", - "esquery": "^1.0.0", + "@babel/code-frame": "7.12.11", + "@eslint/eslintrc": "^0.4.3", + "@humanwhocodes/config-array": "^0.5.0", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "enquirer": "^2.3.5", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^2.1.0", + "eslint-visitor-keys": "^2.0.0", + "espree": "^7.3.1", + "esquery": "^1.4.0", "esutils": "^2.0.2", - "file-entry-cache": "^2.0.0", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", "functional-red-black-tree": "^1.0.1", - "glob": "^7.1.2", - "globals": "^11.0.1", - "ignore": "^3.3.3", + "glob-parent": "^5.1.2", + "globals": "^13.6.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", - "inquirer": "^3.0.6", - "is-resolvable": "^1.0.0", - "js-yaml": "^3.9.1", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.3.0", - "lodash": "^4.17.4", - "minimatch": "^3.0.2", - "mkdirp": "^0.5.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.0.4", "natural-compare": "^1.4.0", - "optionator": "^0.8.2", - "path-is-inside": "^1.0.2", - "pluralize": "^7.0.0", + "optionator": "^0.9.1", "progress": "^2.0.0", - "regexpp": "^1.0.1", - "require-uncached": "^1.0.3", - "semver": "^5.3.0", - "strip-ansi": "^4.0.0", - "strip-json-comments": "~2.0.1", - "table": "4.0.2", - "text-table": "~0.2.0" + "regexpp": "^3.1.0", + "semver": "^7.2.1", + "strip-ansi": "^6.0.0", + "strip-json-comments": "^3.1.0", + "table": "^6.0.9", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" }, "dependencies": { + "@babel/code-frame": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", + "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", + "dev": true, + "requires": { + "@babel/highlight": "^7.10.4" + } + }, "ajv": { - "version": "5.5.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", - "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, "requires": { - "co": "^4.6.0", - "fast-deep-equal": "^1.0.0", + "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.3.0" + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" } }, - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } }, - "cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "requires": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" } }, - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "requires": { - "ms": "^2.1.1" + "color-name": "~1.1.4" } }, - "fast-deep-equal": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", - "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "inquirer": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz", - "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==", - "dev": true, - "requires": { - "ansi-escapes": "^3.0.0", - "chalk": "^2.0.0", - "cli-cursor": "^2.1.0", - "cli-width": "^2.0.0", - "external-editor": "^2.0.4", - "figures": "^2.0.0", - "lodash": "^4.3.0", - "mute-stream": "0.0.7", - "run-async": "^2.2.0", - "rx-lite": "^4.0.8", - "rx-lite-aggregates": "^4.0.8", - "string-width": "^2.1.0", - "strip-ansi": "^4.0.0", - "through": "^2.3.6" + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" } }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true }, + "globals": { + "version": "13.15.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.15.0.tgz", + "integrity": "sha512-bpzcOlgDhMG070Av0Vy5Owklpv1I6+j96GhUI7Rh7IzDCKLzboflLrrfqMu8NquDbiR4EOQk7XzJwqVJxicxog==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, "json-schema-traverse": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", - "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true }, - "lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" } }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", "dev": true, "requires": { - "shebang-regex": "^1.0.0" + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" } }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, + "semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" + "lru-cache": "^6.0.0" } }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "requires": { - "ansi-regex": "^3.0.0" + "has-flag": "^4.0.0" } }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, "requires": { - "isexe": "^2.0.0" + "prelude-ls": "^1.2.1" } }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true } } @@ -5369,19 +5348,36 @@ } }, "eslint-scope": { - "version": "3.7.3", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.3.tgz", - "integrity": "sha512-W+B0SvF4gamyCTmUc+uITPY0989iXVfKvhwtmJocTaYoc/3khEHmEmvfY/Gn9HA9VV75jrQECsHizkNw1b68FA==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dev": true, "requires": { - "esrecurse": "^4.1.0", + "esrecurse": "^4.3.0", "estraverse": "^4.1.1" } }, + "eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + } + } + }, "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", "dev": true }, "esm": { @@ -5390,13 +5386,22 @@ "integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==" }, "espree": { - "version": "3.5.4", - "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.4.tgz", - "integrity": "sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A==", + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", + "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", "dev": true, "requires": { - "acorn": "^5.5.0", - "acorn-jsx": "^3.0.0" + "acorn": "^7.4.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^1.3.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + } } }, "esprima": { @@ -5727,17 +5732,6 @@ } } }, - "external-editor": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz", - "integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==", - "dev": true, - "requires": { - "chardet": "^0.4.0", - "iconv-lite": "^0.4.17", - "tmp": "^0.0.33" - } - }, "extglob": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", @@ -5849,23 +5843,13 @@ "integrity": "sha512-WOn21V8AhyE1QqVfPIVxe3tupJacq1xGkPTB4iagT6o+P2cAgEOOwIxMftr4+ZCTI6d551ij9j61DFr0nsP2uQ==", "dev": true }, - "figures": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.5" - } - }, "file-entry-cache": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", - "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, "requires": { - "flat-cache": "^1.2.1", - "object-assign": "^4.0.1" + "flat-cache": "^3.0.4" } }, "fill-range": { @@ -5907,27 +5891,19 @@ } }, "flat-cache": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.4.tgz", - "integrity": "sha512-VwyB3Lkgacfik2vhqR4uv2rvebqmDvFu4jlN/C1RzWoJEo8I7z4Q404oiqYCkq41mni8EzQnm95emU9seckwtg==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", "dev": true, "requires": { - "circular-json": "^0.3.1", - "graceful-fs": "^4.1.2", - "rimraf": "~2.6.2", - "write": "^0.2.1" + "flatted": "^3.1.0", + "rimraf": "^3.0.2" }, "dependencies": { - "circular-json": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", - "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", - "dev": true - }, "rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, "requires": { "glob": "^7.1.3" @@ -5935,6 +5911,12 @@ } } }, + "flatted": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz", + "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==", + "dev": true + }, "fn.name": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz", @@ -6103,7 +6085,6 @@ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, - "optional": true, "requires": { "is-glob": "^4.0.1" } @@ -6168,23 +6149,6 @@ "function-bind": "^1.1.1" } }, - "has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - } - } - }, "has-bigints": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", @@ -6414,9 +6378,9 @@ "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" }, "ignore": { - "version": "3.3.10", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", - "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", "dev": true }, "import-fresh": { @@ -6901,12 +6865,6 @@ "has-tostringtag": "^1.0.0" } }, - "is-resolvable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", - "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", - "dev": true - }, "is-shared-array-buffer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz", @@ -9942,12 +9900,24 @@ "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", "dev": true }, + "lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, "lodash.sortby": { "version": "4.7.0", "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", "dev": true }, + "lodash.truncate": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=", + "dev": true + }, "logform": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/logform/-/logform-2.3.2.tgz", @@ -10078,12 +10048,6 @@ "mime-db": "1.51.0" } }, - "mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", - "dev": true - }, "minimalistic-assert": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", @@ -10104,9 +10068,9 @@ } }, "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", "dev": true }, "mixin-deep": { @@ -10149,12 +10113,6 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" }, - "mute-stream": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", - "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", - "dev": true - }, "nanomatch": { "version": "1.2.13", "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", @@ -14017,15 +13975,6 @@ "fn.name": "1.x.x" } }, - "onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", - "dev": true, - "requires": { - "mimic-fn": "^1.0.0" - } - }, "optionator": { "version": "0.8.3", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", @@ -14082,6 +14031,15 @@ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, "parse-json": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", @@ -14116,12 +14074,6 @@ "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true }, - "path-is-inside": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", - "dev": true - }, "path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", @@ -14226,12 +14178,6 @@ "semver-compare": "^1.0.0" } }, - "pluralize": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz", - "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", - "dev": true - }, "pn": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", @@ -14344,12 +14290,6 @@ } } }, - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true - }, "progress": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", @@ -14377,12 +14317,6 @@ "react-is": "^16.13.1" } }, - "pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", - "dev": true - }, "psl": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", @@ -14621,9 +14555,9 @@ } }, "regexpp": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-1.1.0.tgz", - "integrity": "sha512-LOPw8FpgdQF9etWMaAfG/WRthIdXJGYp4mJ2Jgn/2lpkbod9jPn0t9UqN7AxBOKNfzRbYyVfgc7Vk4t/MpnXgw==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", "dev": true }, "regexpu-core": { @@ -14752,24 +14686,6 @@ "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", "dev": true }, - "require-uncached": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", - "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", - "dev": true, - "requires": { - "caller-path": "^0.1.0", - "resolve-from": "^1.0.0" - }, - "dependencies": { - "resolve-from": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", - "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=", - "dev": true - } - } - }, "resolve": { "version": "1.21.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.21.0.tgz", @@ -14802,16 +14718,6 @@ "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", "dev": true }, - "restore-cursor": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", - "dev": true, - "requires": { - "onetime": "^2.0.0", - "signal-exit": "^3.0.2" - } - }, "ret": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/ret/-/ret-0.2.2.tgz", @@ -14874,21 +14780,6 @@ "integrity": "sha512-kc120TBlQ3mih1LSzdAJXo4xn/GWS2ec0l3S+syHDXP9uRr0JAT8Qd3mdMuyjqCzeZktgP3try92cEgf9Nks8A==", "dev": true }, - "rx-lite": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz", - "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=", - "dev": true - }, - "rx-lite-aggregates": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz", - "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=", - "dev": true, - "requires": { - "rx-lite": "*" - } - }, "rxjs": { "version": "6.6.7", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", @@ -15226,18 +15117,44 @@ "dev": true }, "slice-ansi": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz", - "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", "dev": true, "requires": { - "is-fullwidth-code-point": "^2.0.0" + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" }, "dependencies": { - "is-fullwidth-code-point": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "astral-regex": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true } } @@ -15561,9 +15478,9 @@ }, "dependencies": { "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", "dev": true }, "strip-ansi": { @@ -15666,9 +15583,9 @@ "dev": true }, "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true }, "superstruct": { @@ -15725,72 +15642,28 @@ "dev": true }, "table": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/table/-/table-4.0.2.tgz", - "integrity": "sha512-UUkEAPdSGxtRpiV9ozJ5cMTtYiqz7Ni1OGqLXRCynrvzdtR1p+cfOWe2RJLwvUG8hNanaSRjecIqwOjqeatDsA==", + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/table/-/table-6.8.0.tgz", + "integrity": "sha512-s/fitrbVeEyHKFa7mFdkuQMWlH1Wgw/yEXMt5xACT4ZpzWFluehAxRtUUQKPuWhaLAWhFcVx6w3oC8VKaUfPGA==", "dev": true, "requires": { - "ajv": "^5.2.3", - "ajv-keywords": "^2.1.0", - "chalk": "^2.1.0", - "lodash": "^4.17.4", - "slice-ansi": "1.0.0", - "string-width": "^2.1.1" + "ajv": "^8.0.1", + "lodash.truncate": "^4.4.2", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" }, "dependencies": { "ajv": { - "version": "5.5.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", - "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", - "dev": true, - "requires": { - "co": "^4.6.0", - "fast-deep-equal": "^1.0.0", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.3.0" - } - }, - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "fast-deep-equal": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", - "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "json-schema-traverse": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", - "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", - "dev": true - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", "dev": true, "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" } } } @@ -16013,12 +15886,6 @@ "resolved": "https://registry.npmjs.org/type-of-is/-/type-of-is-3.5.1.tgz", "integrity": "sha1-7sL8ibgo2/mQDrZBbu4w9P4PzTE=" }, - "typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", - "dev": true - }, "typedarray-to-buffer": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", @@ -16182,6 +16049,12 @@ "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" }, + "v8-compile-cache": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", + "dev": true + }, "v8-to-istanbul": { "version": "4.1.4", "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-4.1.4.tgz", @@ -16406,15 +16279,6 @@ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true }, - "write": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", - "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", - "dev": true, - "requires": { - "mkdirp": "^0.5.1" - } - }, "write-file-atomic": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", diff --git a/package.json b/package.json index bfc17402..2ee25718 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@identity.com/credential-commons", - "version": "3.0.0-beta.6", + "version": "3.0.0", "author": "Identity.com Community", "license": "MIT", "description": "Verifiable Credential and Attestation Library", @@ -46,7 +46,7 @@ "babel-minify": "^0.5.1", "clear": "^0.1.0", "cross-env": "^7.0.3", - "eslint": "^4.19.1", + "eslint": "^7.32.0", "eslint-config-airbnb": "^17.0.0", "eslint-config-airbnb-base": "^13.0.0", "eslint-loader": "^2.0.0", From e2f0ad7f8b717fa91df04d6ea43a50a715c50fb9 Mon Sep 17 00:00:00 2001 From: William Brooks Date: Mon, 16 May 2022 14:22:09 +0200 Subject: [PATCH 52/52] fix: audit ci --- src/services/DefaultAnchorServiceImpl.js | 1 + src/services/DummyAnchorServiceImpl.js | 1 + 2 files changed, 2 insertions(+) diff --git a/src/services/DefaultAnchorServiceImpl.js b/src/services/DefaultAnchorServiceImpl.js index 862d10fb..1f1ec315 100644 --- a/src/services/DefaultAnchorServiceImpl.js +++ b/src/services/DefaultAnchorServiceImpl.js @@ -16,6 +16,7 @@ const logger = require('../logger'); function DummyAnchorServiceImpl(config, http) { this.config = config; this.http = http; + // eslint-disable-next-line no-unused-vars const pollService = async (statusUrl) => { try { const attestation = await this.http.request({ diff --git a/src/services/DummyAnchorServiceImpl.js b/src/services/DummyAnchorServiceImpl.js index 45ea4264..f6ea8475 100644 --- a/src/services/DummyAnchorServiceImpl.js +++ b/src/services/DummyAnchorServiceImpl.js @@ -14,6 +14,7 @@ const logger = require('../logger'); function DummyAnchorServiceImpl(config, http) { this.config = config; this.http = http; + // eslint-disable-next-line no-unused-vars const pollService = async (statusUrl) => { try { const attestation = await this.http.request({