diff --git a/ui/.gitignore b/ui/.gitignore
index 0711527ef..324410beb 100644
--- a/ui/.gitignore
+++ b/ui/.gitignore
@@ -40,3 +40,12 @@ testem.log
# System files
.DS_Store
Thumbs.db
+
+# Cypress
+/cypress/plugins/credentials_qa.json
+/cypress/plugins/token_qa.json
+/cypress/fixtures/credentials.json
+/cypress/fixtures/downloadedAffiliations.csv
+/cypress/fixtures/editAffiliations.csv
+/cypress/videos
+/cypress/screenshots
\ No newline at end of file
diff --git a/ui/cypress.config.ts b/ui/cypress.config.ts
new file mode 100644
index 000000000..1c54937e0
--- /dev/null
+++ b/ui/cypress.config.ts
@@ -0,0 +1,16 @@
+import { defineConfig } from 'cypress';
+
+export default defineConfig({
+ taskTimeout: 300000,
+ defaultCommandTimeout: 10000,
+ video: false,
+ e2e: {
+ // We've imported your old cypress plugins here.
+ // You may want to clean this up later by importing these.
+ setupNodeEvents(on, config) {
+ return require('./cypress/plugins/index.js')(on, config);
+ },
+ // TODO: cy.visit('ui') should be changed to cy.visit('/')
+ baseUrl: 'https://member-portal.qa.orcid.org',
+ },
+});
diff --git a/ui/cypress/e2e/bulk-edit-salesforce-ids.cy.js b/ui/cypress/e2e/bulk-edit-salesforce-ids.cy.js
new file mode 100644
index 000000000..8040afe5d
--- /dev/null
+++ b/ui/cypress/e2e/bulk-edit-salesforce-ids.cy.js
@@ -0,0 +1,123 @@
+///
+import config from '../fixtures/bulk-edit-salesforce-ids-config.json';
+
+describe('Bulk edit invalid salesforce ids', () => {
+ it('Replace all invalid ids with unused valid ones', () => {
+ cy.request({
+ url: config.endpoint,
+ method: 'GET',
+ headers: {
+ Authorization: config.token
+ }
+ }).then(res => {
+ let totalPages = 0;
+ let sfIds = [];
+ let mpIds = [];
+ let data = res.body;
+ data = JSON.parse(data);
+ for (const id in data.records) {
+ if (!sfIds.includes(data.records[id]['Id'])) {
+ sfIds.push(data.records[id]['Id']);
+ }
+ }
+ cy.visit(config.base_url);
+ cy.get('#username')
+ .clear()
+ .type(config.username)
+ .get('#password')
+ .type(config.password)
+ .get('button')
+ .filter('[type="submit"]')
+ .click();
+ cy.get('#admin-menu').click();
+ cy.get('a')
+ .filter('[href="/member"]')
+ .click();
+ cy.wait(1000);
+ cy.get('.pagination')
+ .children()
+ .eq(-3)
+ .then(e => {
+ totalPages = +e[0].textContent.replace('(current)', '').trim();
+ // get list of salesforce ids used in the portal
+ for (let i = 0; i < totalPages; i++) {
+ cy.get('tbody')
+ .children()
+ .each($e => {
+ mpIds.push($e[0].children[0].textContent);
+ });
+ cy.get('.pagination')
+ .children()
+ .eq(-2)
+ .click();
+ cy.wait(200);
+ }
+ })
+ .then(() => {
+ cy.get('tbody')
+ .children()
+ .each($e => {
+ mpIds.push($e[0].children[0].textContent);
+ });
+ // create list of salesforce ids not used in the portal
+ let filteredIds = [];
+ for (var i = 0; i < sfIds.length; i += 1) {
+ if (mpIds.indexOf(sfIds[i]) == -1) {
+ filteredIds.push(sfIds[i]);
+ }
+ }
+ // go back to first page
+ cy.get('.pagination')
+ .children()
+ .eq(0)
+ .click();
+ cy.wait(1000);
+ for (var i = 0; i < totalPages; i++) {
+ cy.get('.pagination > li.active').then(page => {
+ // get current page number
+ const pageNumber = +page[0].textContent.replace('(current)', '').trim();
+ cy.get('tbody')
+ .children()
+ .each($e => {
+ if ($e[0].children[0].textContent !== '001G000001AP83e') {
+ if (!sfIds.includes($e[0].children[0].textContent)) {
+ // click on the edit button
+ cy.get('tbody')
+ .children()
+ .eq($e[0].sectionRowIndex)
+ .children()
+ .eq(6)
+ .children()
+ .eq(0)
+ .click();
+ // change id
+ cy.get('#field_salesforceId')
+ .clear()
+ .type(filteredIds[0]);
+ cy.get('#save-entity').click();
+ filteredIds.shift()
+ // saving the id redirects you to page 1, make sure you return to the relevant page
+ if (pageNumber !== 1) {
+ for (var p = 1; p < pageNumber; p++) {
+ cy.get('.pagination')
+ .children()
+ .eq(-2)
+ .click();
+ }
+ cy.wait(200);
+ }
+ }
+ }
+ });
+ // go to the next page
+ cy.get('.pagination')
+ .children()
+ .eq(-2)
+ .click();
+ cy.wait(250);
+ });
+ }
+ });
+ });
+ });
+});
diff --git a/ui/cypress/e2e/reset-test-data.cy.js b/ui/cypress/e2e/reset-test-data.cy.js
new file mode 100644
index 000000000..19a15a46c
--- /dev/null
+++ b/ui/cypress/e2e/reset-test-data.cy.js
@@ -0,0 +1,57 @@
+///
+import data from '../fixtures/test-data.json';
+import credentials from '../fixtures/credentials.json';
+
+describe('Add new user', () => {
+ it('Reset organization owner', () => {
+ cy.programmaticSignin(credentials.adminEmail, credentials.adminPassword)
+ cy.changeOrgOwner()
+ })
+
+ it('Remove all affiliations from test group', function () {
+ cy.programmaticSignin(data.member.users.owner.email, credentials.password)
+ cy.visit('/assertion')
+ cy.get('.btn-group').each($e => {
+ cy.wrap($e).children().last().click()
+ cy.get('#jhi-confirm-delete-assertion').click()
+ })
+ cy.visit('/user')
+ cy.get('.btn-group').each($e => {
+ cy.wrap($e).children().last().invoke('attr', 'disabled').then((disabled) => {
+ disabled ? cy.log("Skipping user, button is disabled") : cy.removeAffiliation($e)
+ })
+ })
+ cy.programmaticSignout()
+ })
+
+ it('Remove all affiliations from test member', function () {
+ cy.programmaticSignin(data.member.users.owner.email, credentials.password)
+ cy.visit('/user')
+ cy.get('.btn-group').each($e => {
+ cy.wrap($e).children().last().invoke('attr', 'disabled').then((disabled) => {
+ disabled ? cy.log("Skipping user, button is disabled") : cy.removeAffiliation($e)
+ })
+ })
+ cy.programmaticSignout()
+ })
+
+ it('Remove all affiliations from csv test member', function () {
+ cy.programmaticSignin(data.csvMember.users.owner.email, credentials.password)
+ cy.visit('/assertion')
+ cy.get('.btn-group').each($e => {
+ cy.wrap($e).children().last().click()
+ cy.get('#jhi-confirm-delete-assertion').click()
+ })
+ cy.programmaticSignout()
+ })
+
+ it('Remove all affiliations from the notifications member', function() {
+ cy.programmaticSignin(data.notificationsMember.users.owner.email, credentials.password);
+ cy.visit('/assertion')
+ cy.get('.btn-group').each($e => {
+ cy.wrap($e).children().last().click()
+ cy.get('#jhi-confirm-delete-assertion').click()
+ })
+ cy.programmaticSignout()
+ });
+})
diff --git a/ui/cypress/e2e/retention/add-affiliation.cy.js b/ui/cypress/e2e/retention/add-affiliation.cy.js
new file mode 100644
index 000000000..c9d672210
--- /dev/null
+++ b/ui/cypress/e2e/retention/add-affiliation.cy.js
@@ -0,0 +1,165 @@
+///
+import data from '../../fixtures/test-data.json';
+import record from '../../fixtures/orcid-record.json';
+import credentials from '../../fixtures/credentials.json';
+import { recurse } from 'cypress-recurse';
+
+const months = {
+ January: '01',
+ February: '02',
+ March: '03',
+ April: '04',
+ May: '05',
+ June: '06',
+ July: '07',
+ August: '08',
+ September: '09',
+ October: '10',
+ November: '11',
+ December: '12'
+};
+const { country, countryCode, url, invalidUrl, startDate, endDate, type } = record.affiliation;
+const { ringgold, grid, ror } = record.affiliation.org;
+describe('Add and remove affiliation', () => {
+ /* beforeEach(() => {
+ cy.programmaticSignin(data.member.users.owner.email, credentials.password);
+ });
+
+ afterEach(() => {
+ cy.programmaticSignout();
+ });*/
+
+ it('Add affiliation', function () {
+ cy.programmaticSignin(data.member.users.owner.email, credentials.password);
+ cy.visit('/assertion/new');
+
+ cy.get('#field_email').type(record.invalidEmail);
+ cy.get('small.text-danger').should('exist');
+ cy.get('#field_email')
+ .clear()
+ .type(record.email);
+ cy.get('small.text-danger').should('not.exist');
+ cy.get('#field_affiliationSection').select(type);
+ cy.get('#field_orgName').type(data.testString);
+ cy.get('#field_orgCity').type(data.testString);
+ cy.get('#field_orgCountry').select(country);
+ cy.checkOrgId(ringgold.name, ringgold.invalidId, ringgold.id);
+ cy.checkOrgId(grid.name, grid.invalidId, grid.id);
+ cy.checkOrgId(ror.name, ror.invalidId, ror.id);
+ cy.get('#field_departmentName').type(data.testString);
+ cy.get('#field_roleTitle').type(data.testString);
+ cy.get('#field_url').type(invalidUrl);
+ cy.get('#field_startYear').select(startDate.year);
+ cy.get('#field_startMonth').select(startDate.month);
+ cy.get('#field_startDay').select(startDate.invalidDay);
+ cy.get('#field_endYear').select(endDate.year);
+ cy.get('#field_endMonth').select(endDate.month);
+ cy.get('#field_endDay').select(endDate.day);
+ cy.get('small')
+ .filter('[jhitranslate="entity.validation.endDate.string"]')
+ .should('exist');
+ cy.get('#save-entity')
+ .invoke('attr', 'disabled')
+ .should('exist');
+ cy.get('#field_startDay').select(startDate.day);
+ cy.get('small').should('not.exist');
+ cy.get('#save-entity').click();
+ cy.get('.alerts')
+ .children()
+ .should('have.length', 1);
+
+ cy.get('#save-entity').click();
+ cy.get('.alerts')
+ .children()
+ .should('have.length', 2);
+ cy.get('#field_url')
+ .clear()
+ .type(url)
+ .get('#save-entity')
+ .click();
+ cy.get('.alert-success').should('exist');
+ cy.programmaticSignout();
+ });
+
+ it('Grant permission and check ORCID record for added affiliation', () => {
+ cy.programmaticSignin(data.member.users.owner.email, credentials.password);
+ // Get permission link
+ cy.visit('/assertion');
+ cy.get('tbody').children().first().children().eq(0).contains(record.email);
+ cy.get('tbody').children().first().children().eq(1).should('not.contain', record.id);
+ cy.get('tbody').children().first().children().eq(2).contains(record.affiliation.type);
+ cy.get('tbody').children().first().children().eq(4).contains('Pending');
+
+ cy.fetchLinkAndGrantPermission(record.email);
+
+ recurse(
+ () =>
+ cy.request({
+ url: `https://pub.qa.orcid.org/v3.0/${record.id}/services`,
+ headers: { Accept: 'application/json' }
+ }),
+ res => {
+ const service = res.body['affiliation-group'][0]['summaries'][0]['service-summary'];
+ expect(res.body['affiliation-group']).to.have.length(1);
+ expect(service['department-name']).to.eq(data.testString);
+ expect(service['role-title']).to.eq(data.testString);
+ expect(service['organization']['address']['city']).to.eq(data.testString.trim());
+ expect(service['organization']['address']['country']).to.eq(countryCode);
+ expect(service['organization']['name']).to.eq(data.testString.trim());
+ expect(service['url']['value']).to.eq(url);
+ expect(service['start-date']['year']['value']).to.eq(startDate.year);
+ expect(service['start-date']['month']['value']).to.eq(months[startDate.month]);
+ expect(service['start-date']['day']['value']).to.eq(startDate.day);
+ expect(service['end-date']['year']['value']).to.eq(endDate.year);
+ expect(service['end-date']['month']['value']).to.eq(months[endDate.month]);
+ expect(service['end-date']['day']['value']).to.eq(endDate.day);
+ expect(service['organization']['disambiguated-organization']['disambiguated-organization-identifier']).to.eq(ror.id);
+ expect(service['organization']['disambiguated-organization']['disambiguation-source']).to.eq(ror.name);
+ },
+ {
+ log: true,
+ limit: 20, // max number of iterations
+ timeout: 600000, // time limit in ms
+ delay: 30000 // delay before next iteration, ms
+ }
+ );
+ });
+
+ it('Confirm UI changes on the assertion page', () => {
+ cy.programmaticSignin(data.member.users.owner.email, credentials.password);
+ cy.visit('/assertion');
+ cy.get('tbody').children().first().children().eq(1).contains(record.id);
+ cy.get('tbody').children().first().children().eq(4).contains('In ORCID');
+ cy.programmaticSignout();
+ })
+
+ it('Delete affiliation', () => {
+ cy.programmaticSignin(data.member.users.owner.email, credentials.password);
+ cy.visit('/assertion');
+ cy.get('.btn-group').each($e => {
+ cy.wrap($e)
+ .children()
+ .last()
+ .click();
+ cy.get('#jhi-confirm-delete-assertion').click();
+ });
+ recurse(
+ () =>
+ cy.request({
+ url: `https://pub.qa.orcid.org/v3.0/${record.id}/services`,
+ headers: { Accept: 'application/json' }
+ }),
+ res => {
+ console.log(res);
+ expect(res.body['affiliation-group']).to.have.length(0);
+ },
+ {
+ log: true,
+ limit: 20, // max number of iterations
+ timeout: 600000, // time limit in ms
+ delay: 30000 // delay before next iteration, ms
+ }
+ );
+ cy.programmaticSignout();
+ });
+});
diff --git a/ui/cypress/e2e/retention/add-member.cy.js b/ui/cypress/e2e/retention/add-member.cy.js
new file mode 100644
index 000000000..2e4db291d
--- /dev/null
+++ b/ui/cypress/e2e/retention/add-member.cy.js
@@ -0,0 +1,89 @@
+///
+import data from '../../fixtures/test-data.json';
+import credentials from '../../fixtures/credentials.json';
+const { salesforceId, clientName, clientId } = data.member;
+
+describe('Test "Add member" functionality', () => {
+ it('Add member', function() {
+ cy.programmaticSignin(credentials.adminEmail, credentials.adminPassword);
+ cy.visit('/member');
+ cy.get('tbody')
+ .children()
+ // Fetch existing salesforce id
+ .first().children().first().then(existingSfId => {
+ // Check required field flags
+ cy.visit('/member/new')
+ cy.get('#field_salesforceId').should('have.class', 'ng-invalid');
+ cy.get('#field_clientName').should('have.class', 'ng-invalid');
+ // Save button should be disabled
+ cy.get('#save-entity')
+ .invoke('attr', 'disabled')
+ .should('exist');
+ // Check salesforce id warning message when field is clear
+ cy.get('#field_salesforceId')
+ .type(salesforceId)
+ .clear();
+ cy.get('small').should('exist');
+ cy.get('#save-entity')
+ .invoke('attr', 'disabled')
+ .should('exist');
+ // Enter existing salesforce id to generate an error
+ cy.get('#field_salesforceId').type(existingSfId.text());
+ cy.get('#field_parentSalesforceId').type(clientName);
+ // Enter invalid client name to generate an error
+ cy.get('#field_clientName')
+ .type(data.invalidString)
+ .clear();
+ cy.get('small').should('exist');
+ cy.get('#save-entity')
+ .invoke('attr', 'disabled')
+ .should('exist');
+ cy.get('#field_clientName').type(data.populatedMember.clientName);
+ cy.get('#save-entity').click();
+ // Two error messages should appear for existing salesforce id and member name
+ cy.get('.validation-errors')
+ .children()
+ .should('have.length', 2);
+ // Enter invalid client id to generate an error
+ cy.get('#field_clientId').type(data.invalidString);
+ cy.get('small').should('exist');
+ // Check for flag on client id input field
+ cy.get('#field_clientId').should('have.class', 'ng-invalid');
+ cy.get('#save-entity')
+ .invoke('attr', 'disabled')
+ .should('exist');
+ // Check the enable assertions checkbox
+ cy.get('#field_assertionServiceEnabled').check();
+ cy.get('#field_clientId')
+ .clear()
+ .type(clientId);
+ cy.get('#field_clientName')
+ .clear()
+ .type(clientName);
+ // Checkbox should be unchecked after clearing client id field
+ cy.get('#field_assertionServiceEnabled')
+ .should('not.be.checked')
+ .check();
+ // Parent salesforce id for consortium lead members must match salesforce id or be blank
+ cy.get('#field_isConsortiumLead')
+ .should('not.be.checked')
+ .check();
+ cy.get('#save-entity')
+ .invoke('attr', 'disabled')
+ .should('exist');
+ cy.get('#field_parentSalesforceId')
+ .clear()
+ .type(salesforceId);
+ // Save button should still be disabled due to invalid parent SF id
+ cy.get('#save-entity')
+ .invoke('attr', 'disabled')
+ .should('exist');
+ cy.get('#field_parentSalesforceId')
+ .clear()
+ .type(existingSfId.text());
+ cy.get('#save-entity')
+ .invoke('attr', 'disabled')
+ .should('not.exist');
+ });
+ });
+});
diff --git a/ui/cypress/e2e/retention/add-user.cy.js b/ui/cypress/e2e/retention/add-user.cy.js
new file mode 100644
index 000000000..84b6e607c
--- /dev/null
+++ b/ui/cypress/e2e/retention/add-user.cy.js
@@ -0,0 +1,83 @@
+///
+import data from '../../fixtures/test-data.json';
+import credentials from '../../fixtures/credentials.json';
+
+describe('Add new user', () => {
+ it('Add user', function() {
+ // enter email
+ cy.programmaticSignin(data.member.users.owner.email, credentials.password);
+ cy.visit('/user/new');
+ // type in invalid email address
+ cy.get('#field_email').type(data.invalidEmail);
+ // type in name and surname
+ cy.get('#field_firstName').type(data.testString);
+ cy.get('#field_lastName').type(data.testString);
+ // save button should be disabled
+ cy.get('#save-entity2')
+ .invoke('attr', 'disabled')
+ .should('exist');
+ // email input field should have warning label
+ cy.get('#field_email')
+ .should('have.class', 'ng-invalid')
+ // enter existing email address
+ .clear()
+ .type(data.member.users.owner.email);
+ cy.get('#save-entity2').click();
+ cy.get('.validation-errors')
+ .children()
+ .should('have.length', 1);
+ cy.get('#field_email')
+ .clear()
+ .type(data.member.users.newUser.email);
+ // check "Organization owner"
+ cy.get('#field_mainContact').click();
+ // Admin checkbox should not exist
+ cy.get('#field_isAdmin').should('not.exist');
+ // save
+ cy.get('#save-entity').click();
+ cy.get('.alert-success').should('exist');
+
+ // check org owner update email
+ const date = new Date();
+ cy.task('checkInbox', {
+ subject: data.outbox.ownerUpdateSubject,
+ to: data.member.users.newUser.email,
+ });
+
+ // check activation email and follow the provided url
+ cy.task('checkInbox', {
+ subject: data.outbox.activationSubject,
+ to: data.member.users.newUser.email,
+ }).then(email => {
+ cy.visitLinkFromEmail(email);
+ });
+
+ cy.processPasswordForm('#password');
+ // check success message
+ cy.get('.alert-success').within(() => {
+ cy.get('a')
+ .filter('[jhitranslate="global.messages.info.authenticated.link.string"]')
+ .click();
+ });
+ // sign in and confirm the activation was successful
+ });
+
+ it('Change organisation owner back to the original user', function() {
+ cy.programmaticSignin(data.member.users.newUser.email, credentials.password);
+ cy.changeOrgOwner();
+ });
+
+ it('Remove added user', function() {
+ cy.programmaticSignin(data.member.users.owner.email, credentials.password);
+ cy.visit('/user');
+ cy.get('.btn-group').each($e => {
+ cy.wrap($e)
+ .children()
+ .last()
+ .invoke('attr', 'disabled')
+ .then(disabled => {
+ disabled ? cy.log('Skipping user, button is disabled') : cy.removeAffiliation($e);
+ });
+ });
+ });
+});
diff --git a/ui/cypress/e2e/retention/csv-add-affiliations.cy.js b/ui/cypress/e2e/retention/csv-add-affiliations.cy.js
new file mode 100644
index 000000000..0779615c6
--- /dev/null
+++ b/ui/cypress/e2e/retention/csv-add-affiliations.cy.js
@@ -0,0 +1,137 @@
+///
+import data from '../../fixtures/test-data.json';
+import credentials from '../../fixtures/credentials.json';
+import record from '../../fixtures/csv-orcid-record.json';
+import { recurse } from 'cypress-recurse';
+
+describe('Test adding affiliations via CSV', () => {
+ beforeEach(() => {
+ cy.programmaticSignin(data.csvMember.users.owner.email, credentials.password);
+ cy.visit('/assertion');
+ })
+
+ it('Upload CSV and check inbox for the confirmation email', function() {
+ cy.uploadCsv('../fixtures/affiliations.csv');
+ cy.task('checkInbox', {
+ subject: data.outbox.csvUpload,
+ to: data.csvMember.users.owner.email,
+ }).then(email => {
+ const body = email[0].body.html;
+ expect(body).to.have.string('The CSV upload was successfully processed with the following results:');
+ expect(body).to.have.string('7\r\n\t \r\n\t affiliations added');
+ expect(body).to.have.string('0\r\n\t \r\n\t affiliations updated');
+ expect(body).to.have.string('0\r\n\t \r\n\t affiliations deleted');
+ expect(body).to.have.string('2\r\n\t \r\n\t duplicate(s) ignored');
+ });
+ });
+
+ it('Grant permission and confirm that the affiliations were added to the UI and the registry', function() {
+ cy.get('tbody').within(() => {
+ cy.get('tr').each(($e) => {
+ cy.wrap($e).children().eq(0).contains(record.email);
+ cy.wrap($e).children().eq(1).should('not.contain', record.id);
+ cy.wrap($e).children().eq(4).contains('Pending');
+ })
+ })
+ cy.fetchLinkAndGrantPermission(record.email);
+
+ recurse(
+ () =>
+ cy.request({
+ url: `https://pub.qa.orcid.org/v3.0/${record.id}/activities`,
+ headers: { Accept: 'application/json' }
+ }),
+ res => {
+ expect(res.body['distinctions']['affiliation-group']).to.have.length(1);
+ expect(res.body['educations']['affiliation-group']).to.have.length(1);
+ expect(res.body['employments']['affiliation-group']).to.have.length(1);
+ expect(res.body['invited-positions']['affiliation-group']).to.have.length(1);
+ expect(res.body['memberships']['affiliation-group']).to.have.length(1);
+ expect(res.body['qualifications']['affiliation-group']).to.have.length(1);
+ expect(res.body['services']['affiliation-group']).to.have.length(1);
+ },
+ {
+ log: true,
+ limit: 20, // max number of iterations
+ timeout: 600000, // time limit in ms
+ delay: 30000 // delay before next iteration, ms
+ }
+ );
+ });
+
+ it ('Check that the statuses of the affiliations have changed to "In ORCID"', function() {
+ cy.get('tbody').within(() => {
+ cy.get('tr').each(($e) => {
+ cy.wrap($e).children().eq(1).contains(record.id);
+ cy.wrap($e).children().eq(4).contains('In ORCID');
+ })
+ })
+ })
+
+ it('Download the CSV and edit the contents to have the affiliations removed', function() {
+ cy.intercept('https://member-portal.qa.orcid.org/services/assertionservice/api/assertion/csv').as('generateCsv')
+ cy.get('#jh-generate-csv').click();
+ // Occasionally, trying to download the csv results in a 403 code due to an invalid CSRF token, in which case we retry
+ cy.wait('@generateCsv').then((int) => {
+ if (int.response.statusCode !== 200) {
+ cy.get('#jh-generate-csv').click();
+ }
+ })
+ cy.task('checkInbox', {
+ to: data.csvMember.users.owner.email,
+ subject: data.outbox.csvDownload,
+ include_attachments: true,
+ }).then(csv => {
+ const csvContents = Buffer.from(csv[0].attachments[0].data, 'base64')
+ .toString('ascii')
+ .trim();
+ const lines = csvContents.split('\n');
+ console.log(lines);
+ for (var i = 1; i < lines.length; i++) {
+ lines[i] = ',,,,,,,,,,,,,,,' + lines[i].slice(lines[i].lastIndexOf(','));
+ }
+ const data = lines.join('\n');
+ cy.writeFile('./cypress/fixtures/downloadedAffiliations.csv', data);
+ });
+ });
+
+ it('Upload second CSV and check inbox for the confirmation email', function() {
+ cy.uploadCsv('../fixtures/downloadedAffiliations.csv');
+ cy.task('checkInbox', {
+ subject: data.outbox.csvUpload,
+ to: data.csvMember.users.owner.email,
+ }).then(email => {
+ const body = email[0].body.html;
+ expect(body).to.have.string('The CSV upload was successfully processed with the following results:');
+ expect(body).to.have.string('0\r\n\t \r\n\t affiliations added');
+ expect(body).to.have.string('0\r\n\t \r\n\t affiliations updated');
+ expect(body).to.have.string('7\r\n\t \r\n\t affiliations deleted');
+ expect(body).to.have.string('0\r\n\t \r\n\t duplicate(s) ignored');
+ });
+ });
+
+ it ('Confirm that the affiliations have been removed from the UI and the registry', function() {
+ recurse(
+ () =>
+ cy.request({
+ url: `https://pub.qa.orcid.org/v3.0/${record.id}/activities`,
+ headers: { Accept: 'application/json' }
+ }),
+ res => {
+ expect(res.body['distinctions']['affiliation-group']).to.have.length(0);
+ expect(res.body['educations']['affiliation-group']).to.have.length(0);
+ expect(res.body['employments']['affiliation-group']).to.have.length(0);
+ expect(res.body['invited-positions']['affiliation-group']).to.have.length(0);
+ expect(res.body['memberships']['affiliation-group']).to.have.length(0);
+ expect(res.body['qualifications']['affiliation-group']).to.have.length(0);
+ expect(res.body['services']['affiliation-group']).to.have.length(0);
+ },
+ {
+ log: true,
+ limit: 20, // max number of iterations
+ timeout: 600000, // time limit in ms
+ delay: 30000 // delay before next iteration, ms
+ }
+ );
+ })
+});
diff --git a/ui/cypress/e2e/retention/csv-edit-affiliations.cy.js b/ui/cypress/e2e/retention/csv-edit-affiliations.cy.js
new file mode 100644
index 000000000..98d5548e7
--- /dev/null
+++ b/ui/cypress/e2e/retention/csv-edit-affiliations.cy.js
@@ -0,0 +1,91 @@
+///
+import data from '../../fixtures/test-data.json';
+import credentials from '../../fixtures/credentials.json';
+import record from '../../fixtures/csv-populated-orcid-record.json';
+import helpers from '../../helpers/helpers.js';
+import { recurse } from 'cypress-recurse';
+const testString = helpers.newUser.testString;
+
+describe('Test updating affiliations via CSV', () => {
+ beforeEach(() => {
+ cy.programmaticSignin(data.csvPopulatedMember.users.owner.email, credentials.password);
+ cy.visit('/assertion');
+ });
+
+ it('Edit the contents of the existing CSV file', function() {
+ let editSections = ['department-name', 'org-city', 'org-name', 'role-title'];
+ let result = '';
+ cy.readFile('./cypress/fixtures/editAffiliations.csv').then(csv => {
+ console.log(csv);
+ let lines = csv.trim().split('\n');
+ let headers = lines[0].split(',');
+ result = lines[0] + '\n';
+ for (var i = 1; i < lines.length; i++) {
+ let currentline = lines[i].split(',');
+ for (var j = 0; j < headers.length; j++) {
+ if (editSections.includes(headers[j])) currentline[j] = `"${testString}"`;
+ }
+ result += currentline.join(',') + '\n';
+ }
+ console.log(result);
+ cy.writeFile('./cypress/fixtures/editAffiliations.csv', result);
+ })
+
+ });
+
+ it('Upload CSV and check inbox for the confirmation email', function() {
+ cy.uploadCsv('../fixtures/editAffiliations.csv');
+ cy.task('checkInbox', {
+ subject: data.outbox.csvUpload,
+ to: data.csvPopulatedMember.users.owner.email
+ }).then(email => {
+ const body = email[0].body.html;
+ expect(body).to.have.string('The CSV upload was successfully processed with the following results:');
+ expect(body).to.have.string('0\r\n\t \r\n\t affiliations added');
+ expect(body).to.have.string('7\r\n\t \r\n\t affiliations updated');
+ expect(body).to.have.string('0\r\n\t \r\n\t affiliations deleted');
+ expect(body).to.have.string('0\r\n\t \r\n\t duplicate(s) ignored');
+ });
+ });
+
+ it('Confirm the changes in the registry', function() {
+ recurse(
+ () =>
+ cy.request({
+ url: `https://pub.qa.orcid.org/v3.0/${record.id}/activities`,
+ headers: { Accept: 'application/json' }
+ }),
+ res => {
+ const distinction = res.body['distinctions']['affiliation-group'][0]['summaries'][0]['distinction-summary'];
+ const education = res.body['educations']['affiliation-group'][0]['summaries'][0]['education-summary'];
+ const employment = res.body['employments']['affiliation-group'][0]['summaries'][0]['employment-summary'];
+ const invitedPosition = res.body['invited-positions']['affiliation-group'][0]['summaries'][0]['invited-position-summary'];
+ const membership = res.body['memberships']['affiliation-group'][0]['summaries'][0]['membership-summary'];
+ const qualification = res.body['qualifications']['affiliation-group'][0]['summaries'][0]['qualification-summary'];
+ const service = res.body['services']['affiliation-group'][0]['summaries'][0]['service-summary'];
+ const trimmedString = testString.trim();
+ // cy.checkAffiliationChanges will not retry on fail, which is why we make sure all sections got updated before asserting everything
+ expect(distinction['department-name']).to.eq(trimmedString);
+ expect(education['department-name']).to.eq(trimmedString);
+ expect(employment['department-name']).to.eq(trimmedString);
+ expect(invitedPosition['department-name']).to.eq(trimmedString);
+ expect(membership['department-name']).to.eq(trimmedString);
+ expect(qualification['department-name']).to.eq(trimmedString);
+ expect(service['department-name']).to.eq(trimmedString);
+ cy.checkAffiliationChanges(distinction, trimmedString);
+ cy.checkAffiliationChanges(education, trimmedString);
+ cy.checkAffiliationChanges(employment, trimmedString);
+ cy.checkAffiliationChanges(invitedPosition, trimmedString);
+ cy.checkAffiliationChanges(membership, trimmedString);
+ cy.checkAffiliationChanges(qualification, trimmedString);
+ cy.checkAffiliationChanges(service, trimmedString);
+ },
+ {
+ log: true,
+ limit: 20, // max number of iterations
+ timeout: 600000, // time limit in ms
+ delay: 30000 // delay before next iteration, ms
+ }
+ );
+ })
+});
diff --git a/ui/cypress/e2e/retention/csv-invalid-affiliations.cy.js b/ui/cypress/e2e/retention/csv-invalid-affiliations.cy.js
new file mode 100644
index 000000000..de11a9b11
--- /dev/null
+++ b/ui/cypress/e2e/retention/csv-invalid-affiliations.cy.js
@@ -0,0 +1,18 @@
+///
+import data from '../../fixtures/test-data.json';
+import credentials from '../../fixtures/credentials.json';
+
+describe('Test invalid CSV upload', () => {
+ it('Upload CSV and check inbox for the error message', function() {
+ cy.programmaticSignin(data.csvMember.users.owner.email, credentials.password);
+ cy.visit('/assertion');
+ cy.uploadCsv('../fixtures/invalidAffiliations.csv');
+ cy.task('checkInbox', {
+ subject: data.outbox.csvUpload,
+ to: data.csvMember.users.owner.email
+ }).then(email => {
+ const body = email[0].body.html;
+ expect(body).to.have.string('There was a problem with your CSV upload. Pleases fix the errors below and try again.');
+ });
+ });
+});
diff --git a/ui/cypress/e2e/retention/edit-affiliation.cy.js b/ui/cypress/e2e/retention/edit-affiliation.cy.js
new file mode 100644
index 000000000..00276d04c
--- /dev/null
+++ b/ui/cypress/e2e/retention/edit-affiliation.cy.js
@@ -0,0 +1,69 @@
+///
+import data from '../../fixtures/test-data.json';
+import record from '../../fixtures/populated-orcid-record.json';
+import credentials from '../../fixtures/credentials.json';
+import helpers from '../../helpers/helpers.js';
+import { recurse } from 'cypress-recurse';
+const testString = helpers.newUser.testString;
+
+describe('Edit an affiliation', () => {
+ beforeEach(() => {
+ cy.programmaticSignin(data.populatedMember.users.owner.email, credentials.password);
+ })
+ it('Edit affiliation in the member portal', function() {
+ cy.visit('/assertion')
+ cy.visit(`/assertion/${record.affiliation.id}/edit`);
+
+ cy.get('#field_orgName')
+ .clear()
+ .type(testString);
+ cy.get('#field_orgCity')
+ .clear()
+ .type(testString);
+ cy.get('#field_departmentName')
+ .clear()
+ .type(testString);
+ cy.get('#field_roleTitle')
+ .clear()
+ .type(testString);
+ cy.get('#save-entity').click();
+
+ cy.get('tbody')
+ .children()
+ .first()
+ .children()
+ .eq(4)
+ .contains('Pending update in ORCID');
+ });
+
+ it('Confirm the affiliation has been updated in the registry', () => {
+ recurse(
+ () =>
+ cy.request({
+ url: `https://pub.qa.orcid.org/v3.0/${record.id}/educations`,
+ headers: { Accept: 'application/json' }
+ }),
+ res => {
+ const education = res.body['affiliation-group'][0]['summaries'][0]['education-summary'];
+ expect(res.body['affiliation-group']).to.have.length(1);
+ expect(education['department-name']).to.eq(testString);
+ expect(education['role-title']).to.eq(testString);
+ expect(education['organization']['address']['city']).to.eq(testString.trim());
+ expect(education['organization']['name']).to.eq(testString.trim());
+ },
+ {
+ log: true,
+ limit: 20, // max number of iterations
+ timeout: 600000, // time limit in ms
+ delay: 30000 // delay before next iteration, ms
+ }
+ );
+ cy.visit('assertion')
+ cy.get('tbody')
+ .children()
+ .first()
+ .children()
+ .eq(4)
+ .contains('In ORCID');
+ });
+});
diff --git a/ui/cypress/e2e/retention/edit-member.cy.js b/ui/cypress/e2e/retention/edit-member.cy.js
new file mode 100644
index 000000000..a3002fae8
--- /dev/null
+++ b/ui/cypress/e2e/retention/edit-member.cy.js
@@ -0,0 +1,70 @@
+///
+import data from '../../fixtures/test-data.json';
+import credentials from '../../fixtures/credentials.json';
+const { salesforceId, clientName, clientId } = data.member;
+
+describe('Manage members menu', () => {
+ it('Test edit member form', function() {
+ cy.programmaticSignin(credentials.adminEmail, credentials.adminPassword);
+ cy.visit(`/member/${data.member.id}/edit`);
+ cy.get('#field_isConsortiumLead')
+ .should('be.checked')
+ .uncheck();
+ cy.get('#field_salesforceId')
+ .invoke('attr', 'disabled')
+ .should('exist');
+ cy.get('#field_parentSalesforceId')
+ .clear()
+ .type(clientName);
+ // Shouldn't be able to save without a client name
+ cy.get('#field_clientName').clear();
+ cy.get('#save-entity')
+ .invoke('attr', 'disabled')
+ .should('exist');
+ cy.get('small')
+ .filter('[jhitranslate="entity.validation.required.string"]')
+ .should('exist');
+ // Enter existing client name and check for relevant error message
+ cy.get('#field_clientName').type(data.populatedMember.clientName);
+ cy.get('#save-entity').click();
+ cy.get('.validation-errors')
+ .children()
+ .should('have.length', 1);
+ cy.get('#field_clientName')
+ .clear()
+ .type(clientName);
+ // Check client id warning message
+ cy.get('#field_clientId').type(data.invalidString);
+ cy.get('small').should('exist');
+ cy.get('#save-entity')
+ .invoke('attr', 'disabled')
+ .should('exist');
+ cy.get('#field_clientId').clear();
+ cy.get('#field_clientId').type(clientId);
+ // Assertions enabled checkbox should be unchecked after clearing client id field
+ cy.get('#field_assertionServiceEnabled')
+ .should('not.be.checked')
+ .check();
+ // Parent salesforce id for consortium lead members must match salesforce id or be blank
+ cy.get('#field_isConsortiumLead')
+ .should('not.be.checked')
+ .check();
+ cy.get('#save-entity')
+ .invoke('attr', 'disabled')
+ .should('exist');
+ cy.get('#field_parentSalesforceId')
+ .clear()
+ .type(salesforceId);
+ cy.get('#save-entity')
+ .invoke('attr', 'disabled')
+ .should('exist');
+ cy.get('#field_salesforceId')
+ .invoke('val')
+ .then(id => {
+ cy.get('#field_parentSalesforceId')
+ .clear()
+ .type(id);
+ cy.get('#save-entity').click();
+ });
+ });
+});
diff --git a/ui/cypress/e2e/retention/edit-user.cy.js b/ui/cypress/e2e/retention/edit-user.cy.js
new file mode 100644
index 000000000..be041aedd
--- /dev/null
+++ b/ui/cypress/e2e/retention/edit-user.cy.js
@@ -0,0 +1,49 @@
+///
+import data from '../../fixtures/test-data.json';
+import credentials from '../../fixtures/credentials.json';
+
+describe('Test the edit user form', () => {
+ it('Edit user', function() {
+ cy.programmaticSignin(data.populatedMember.users.owner.email, credentials.password);
+ cy.visit(`/user/${data.populatedMember.users.owner.id}/edit`);
+ // Clear first name input field
+ cy.get('#field_firstName').clear();
+ // Shouldn't be possible to save with an empty name field
+ cy.get('#save-entity2')
+ .invoke('attr', 'disabled')
+ .should('exist');
+ // Check for 'required' flag on the input field
+ cy.get('#field_firstName')
+ .should('have.class', 'ng-invalid')
+ .type("Automated")
+ // Clear last name input field
+ cy.get('#field_lastName').clear();
+ // Shouldn't be possible to save with an empty name field
+ cy.get('#save-entity2')
+ .invoke('attr', 'disabled')
+ .should('exist');
+ // Check for 'required' flag on the input field
+ cy.get('#field_lastName')
+ .should('have.class', 'ng-invalid')
+ .type("Test")
+ // Check disabled fields
+ cy.get('#field_email')
+ .invoke('attr', 'disabled')
+ .should('exist');
+ cy.get('#field_mainContact')
+ .invoke('attr', 'disabled')
+ .should('exist');
+ cy.get('#field_salesforceId')
+ .invoke('attr', 'disabled')
+ .should('exist');
+ // Admin checkbox should not exist
+ cy.get('#field_isAdmin').should('not.exist');
+ // 'Activated' checkbox is missing the 'disabled' attr
+ /*cy.get('#field_activated')
+ .invoke('attr', 'disabled')
+ .should('exist');*/
+ // save
+ cy.get('#save-entity2').click();
+ cy.get('.alert-success').should('exist');
+ });
+});
diff --git a/ui/cypress/e2e/retention/notifications.cy.js b/ui/cypress/e2e/retention/notifications.cy.js
new file mode 100644
index 000000000..6e082fe32
--- /dev/null
+++ b/ui/cypress/e2e/retention/notifications.cy.js
@@ -0,0 +1,108 @@
+///
+import data from '../../fixtures/test-data.json';
+import record from '../../fixtures/orcid-record.json';
+import credentials from '../../fixtures/credentials.json';
+
+const { country, type } = record.affiliation;
+const { ror } = record.affiliation.org;
+
+describe('Test notifications', () => {
+ it('Add an affiliation with an email missing from the registry', function() {
+ cy.programmaticSignin(data.notificationsMember.users.owner.email, credentials.password);
+ cy.visit('/assertion/new');
+ cy.get('#field_email').type(record.nonregisteredEmail);
+ cy.get('#field_affiliationSection').select(type);
+ cy.get('#field_orgName').type(data.testString);
+ cy.get('#field_orgCity').type(data.testString);
+ cy.get('#field_orgCountry').select(country);
+ cy.get('#field_disambiguationSource').select(ror.name);
+ cy.get('#field_disambiguatedOrgId').type(ror.id);
+ cy.get('#save-entity').click();
+ cy.get('.alert-success').should('exist');
+ cy.programmaticSignout();
+ });
+
+ it('Add an affiliation with an email present in the registry and generate notifications', function() {
+ cy.programmaticSignin(data.notificationsMember.users.owner.email, credentials.password);
+ cy.visit('/assertion/new');
+ cy.get('#field_email').type(record.email);
+ cy.get('#field_affiliationSection').select(type);
+ cy.get('#field_orgName').type(data.testString + ' 2');
+ cy.get('#field_orgCity').type(data.testString + ' 2');
+ cy.get('#field_orgCountry').select(country);
+ cy.get('#field_disambiguationSource').select(ror.name);
+ cy.get('#field_disambiguatedOrgId').type(ror.id);
+ cy.get('#save-entity').click();
+ cy.get('.alert-success').should('exist');
+ cy.visit('/assertion');
+ cy.get('#jh-send-notifications').click();
+ cy.get('#langKey').should('have.value', data.italianLanguageCode);
+ cy.get('#jhi-confirm-csv-upload').click();
+ cy.get('.alert-success').should('exist');
+ cy.get('tbody')
+ .children()
+ .should('have.length', 2);
+ cy.get('tbody')
+ .children()
+ .eq(0)
+ .children()
+ .eq(4)
+ .contains('Notification requested');
+ cy.get('tbody')
+ .children()
+ .eq(1)
+ .children()
+ .eq(4)
+ .contains('Notification requested');
+ cy.programmaticSignout();
+ });
+
+ it('Check inbox for succesful notfications confirmation', function() {
+ cy.task('checkInbox', {
+ subject: data.outbox.notificationConfirmation,
+ to: data.notificationsMember.users.owner.email
+ }).then(email => {
+ const body = email[0].body.html;
+ expect(body).to.have.string('Thank you for choosing to use the permission notification process.');
+ expect(body).to.have.string('1\r\n \r\n ORCID inbox notifications');
+ expect(body).to.have.string('1\r\n \r\n emails');
+ });
+ });
+
+ it('Check inbox for translated notification for non-registered email', function() {
+ cy.task('checkInbox', {
+ subject: data.outbox.notificationNonRegisteredUserItalian,
+ to: record.nonregisteredEmail
+ }).then(email => {
+ const body = email[0].body.html;
+ cy.log(body);
+ expect(body).to.have.string('Consentendo a NOTIFICATIONS TEST di aggiungere le informazioni di ricerca al tuo record ORCID, puoi dedicare più tempo alla ricerca e meno alla gestione! Prima però avremo bisogno del tuo permesso, quindi clicca sul link di seguito per iniziare. Ti reindirizzeremo su ORCID; dopo aver eseguito l’accesso, clicca su “autorizza accesso” per consentire a NOTIFICATIONS TEST di aggiungere informazioni al tuo record');
+ expect(body).to.have.string('Dopo aver concesso il permesso, al tuo record ORCID verrà aggiunta una voce di affiliazione. Tieni presente che potrebbero volerci fino a 5 minuti per l’aggiornamento del tuo record ORCID.');
+ });
+ });
+
+ it('Check inbox for translated notification for the registered email', function() {
+ cy.task('checkInbox', {
+ subject: data.outbox.notificationRegisteredUser,
+ to: record.email,
+ from: data.outbox.updateEmail
+ }).then(email => {
+ const body = email[0].body.html;
+ expect(body).to.have.string('Le affiliazioni possono essere aggiunte al tuo archivio dalle organizzazioni a te associate. Questo ti fa risparmiare tempo e aumenta il livello di fiducia in archivio.');
+ expect(body).to.have.string('Grant permission \r\n ');
+ expect(body).to.have.string('href="https://qa.orcid.org/inbox/encrypted/');
+ expect(body).to.have.string('ORCID Member Portal - QA\r\n has asked for permission to make changes to your ORCID record');
+ });
+ });
+
+ it('Delete added affiliations', function() {
+ cy.programmaticSignin(data.notificationsMember.users.owner.email, credentials.password);
+ cy.visit('/assertion')
+ cy.get('.btn-group').each($e => {
+ cy.wrap($e).children().last().click()
+ cy.get('#jhi-confirm-delete-assertion').click()
+ })
+ cy.programmaticSignout()
+ });
+
+});
diff --git a/ui/cypress/e2e/retention/reset-password.cy.js b/ui/cypress/e2e/retention/reset-password.cy.js
new file mode 100644
index 000000000..4375d5c3a
--- /dev/null
+++ b/ui/cypress/e2e/retention/reset-password.cy.js
@@ -0,0 +1,58 @@
+///
+import data from '../../fixtures/test-data.json';
+import credentials from '../../fixtures/credentials.json';
+
+describe('Test the password reset functionality', () => {
+ it('Forgot your password?', function() {
+ cy.visit('/reset/request');
+ cy.get('#email').type(data.invalidEmail);
+ cy.get('small')
+ .filter('[jhitranslate="global.messages.validate.email.invalid.string"]')
+ .should('exist');
+ cy.get('button')
+ .filter('[type="submit"]')
+ .invoke('attr', 'disabled')
+ .should('exist');
+ cy.get('#email')
+ .clear()
+ .type(data.member.users.owner.email);
+ cy.get('button')
+ .filter('[type="submit"]')
+ .click();
+
+ cy.task('checkInbox', {
+ to: data.member.users.owner.email,
+ subject: data.outbox.resetPasswordSubject
+ }).then(email => {
+ cy.visitLinkFromEmail(email);
+ });
+
+ cy.processPasswordForm('#password');
+
+ cy.get('.alert-success').within(() => {
+ cy.get('a')
+ .filter('[jhitranslate="global.messages.info.authenticated.link.string"]')
+ .click();
+ });
+ // sign in and confirm the activation was successful
+ cy.programmaticSignin(data.member.users.owner.email, credentials.password);
+ cy.programmaticSignout();
+ });
+
+ it('Change password', function() {
+ cy.programmaticSignin(data.populatedMember.users.owner.email, credentials.password);
+ cy.visit('/password');
+ cy.get('#currentPassword').type(credentials.wrongConfirmationPasssword);
+ cy.processPasswordForm('#newPassword');
+ cy.get('.alert-danger')
+ .filter('[jhitranslate="password.messages.error.string"]')
+ .should('exist');
+ cy.get('#currentPassword')
+ .clear()
+ .type(credentials.password);
+ cy.get('button')
+ .filter('[type="submit"]')
+ .click();
+ cy.get('.alert-success').should('exist');
+ });
+});
diff --git a/ui/cypress/e2e/retention/restricted-access.cy.js b/ui/cypress/e2e/retention/restricted-access.cy.js
new file mode 100644
index 000000000..875b642fd
--- /dev/null
+++ b/ui/cypress/e2e/retention/restricted-access.cy.js
@@ -0,0 +1,49 @@
+///
+import data from '../../fixtures/test-data.json';
+import credentials from '../../fixtures/credentials.json';
+
+describe('Test restricted access', () => {
+ afterEach(() => {
+ cy.programmaticSignout();
+ })
+
+ it('Regular users should not be able to access the Manage Members menu', function() {
+ cy.programmaticSignin(data.populatedMember.users.user.email, credentials.password);
+ cy.visit('/member');
+ cy.get('h1').filter('[jhitranslate="error.title.string"]').contains('Your request cannot be processed')
+ cy.get('div').filter('[jhitranslate="error.http.403.string"]').invoke('attr', 'hidden').should('not.exist')
+ });
+
+ it('Regular users should not be able to access the Manage Users menu', function() {
+ cy.programmaticSignin(data.populatedMember.users.user.email, credentials.password);
+ cy.visit('/user');
+ cy.get('h1').filter('[jhitranslate="error.title.string"]').contains('Your request cannot be processed')
+ cy.get('div').filter('[jhitranslate="error.http.403.string"]').invoke('attr', 'hidden').should('not.exist')
+ });
+
+ it('Org owners should not be able to access the Manage Members menu', function() {
+ cy.programmaticSignin(data.populatedMember.users.owner.email, credentials.password);
+ cy.visit('/member');
+ cy.get('h1').filter('[jhitranslate="error.title.string"]').contains('Your request cannot be processed')
+ cy.get('div').filter('[jhitranslate="error.http.403.string"]').invoke('attr', 'hidden').should('not.exist')
+ });
+
+ it('Cannot access the assertion menu if assertions are not enabled', function() {
+ cy.programmaticSignin(data.homepageTestMembers.consortiumLeadAndMember.email, credentials.password);
+ cy.visit('/assertion');
+ cy.get('h1').filter('[jhitranslate="error.title.string"]').contains('Your request cannot be processed')
+ cy.get('div').filter('[jhitranslate="error.http.403.string"]').invoke('attr', 'hidden').should('not.exist')
+ });
+
+ /* it('Anonymous users cannot access anything', function() {
+ cy.visit('/assertion');
+ cy.get('h1').filter('[jhitranslate="error.title.string"]').contains('Your request cannot be processed')
+ cy.get('div').filter('[jhitranslate="error.http.403.string"]').invoke('attr', 'hidden').should('not.exist')
+ cy.visit('/user');
+ cy.get('h1').filter('[jhitranslate="error.title.string"]').contains('Your request cannot be processed')
+ cy.get('div').filter('[jhitranslate="error.http.403.string"]').invoke('attr', 'hidden').should('not.exist')
+ cy.visit('/member');
+ cy.get('h1').filter('[jhitranslate="error.title.string"]').contains('Your request cannot be processed')
+ cy.get('div').filter('[jhitranslate="error.http.403.string"]').invoke('attr', 'hidden').should('not.exist')
+ }); */
+});
diff --git a/ui/cypress/e2e/retention/ui-authorities.cy.js b/ui/cypress/e2e/retention/ui-authorities.cy.js
new file mode 100644
index 000000000..19886e6c8
--- /dev/null
+++ b/ui/cypress/e2e/retention/ui-authorities.cy.js
@@ -0,0 +1,223 @@
+///
+import data from '../../fixtures/test-data.json';
+import credentials from '../../fixtures/credentials.json';
+
+describe('Test authorities', () => {
+ afterEach(() => {
+ cy.programmaticSignout();
+ });
+
+ /* ************************************************************************************************************************
+ * ************************************************************************************************************************
+ * REGULAR USER
+ * ************************************************************************************************************************
+ * ************************************************************************************************************************
+ */
+
+ it('User', function () {
+ cy.programmaticSignin(data.populatedMember.users.user.email, credentials.password);
+ cy.visit('/');
+ cy.get('#admin-menu').should('not.exist');
+ cy.get('#entity-menu').should('exist');
+ cy.get('a')
+ .filter('[href="/assertion"]')
+ .should('exist');
+ cy.get('a')
+ .filter('[href="/user"]')
+ .should('not.exist');
+ cy.get('a')
+ .filter('[href="/member"]')
+ .should('not.exist');
+
+ cy.getUsersBySfId(data.populatedMember.salesforceId, 401);
+ cy.getUsersBySfId(data.homepageTestMembers.consortiumLeadAndMember.salesforceId, 400, "Salesforce id doesn't match current user's memeber");
+ cy.getAllUsers(403, 'Forbidden');
+ cy.getAllMembers(403, 'Forbidden');
+ cy.addMember(data.populatedMember.salesforceId, false, false, 403, 'Forbidden');
+ cy.updateMember(data.populatedMember.salesforceId, false, false, 403, 'Forbidden');
+ cy.validateMember(data.populatedMember.salesforceId, false, false, 403, 'Forbidden');
+
+ //cy.changeNotificationLanguage(data.homepageTestMembers.consortiumLeadAndMember.salesforceId, data.italianLanguageCode, 401);
+
+ cy.updateContact(data.homepageTestMembers.consortiumLeadAndMember.salesforceId, 401, 'Unauthorized');
+ cy.updateMemberDetails(data.homepageTestMembers.consortiumLeadAndMember.salesforceId, "The Harvest Ascendancy", 401, 'Unauthorized');
+ cy.getMemberDetails(data.homepageTestMembers.consortiumLeadAndMember.salesforceId, 401, 'Unauthorized');
+ cy.getMemberContacts(data.homepageTestMembers.consortiumLeadAndMember.salesforceId, 401, 'Unauthorized');
+ cy.getMemberOrgIds(data.homepageTestMembers.consortiumLeadAndMember.salesforceId, 401, 'Unauthorized');
+
+
+ cy.getMembersList(403, 'Forbidden');
+
+ // TODO: Awaiting endpoint changes
+ cy.getMember(data.homepageTestMembers.consortiumLeadAndMember.salesforceId, 200);
+
+ cy.deleteMember(data.populatedMember.salesforceId, 403, 'Forbidden');
+
+ cy.addConsortiumMember(403, 'Forbidden');
+ cy.removeConsortiumMember(403, 'Forbidden');
+
+ cy.getAssertions(200);
+ });
+
+ /* ************************************************************************************************************************
+ * ************************************************************************************************************************
+ * ORG OWNER
+ * ************************************************************************************************************************
+ * ************************************************************************************************************************
+ */
+
+ it('Org owner', function () {
+ cy.programmaticSignin(data.populatedMember.users.owner.email, credentials.password);
+ cy.visit('/');
+ cy.get('#admin-menu').should('exist');
+ cy.get('#entity-menu').should('exist');
+ cy.get('a')
+ .filter('[href="/user"]')
+ .should('exist');
+ cy.get('a')
+ .filter('[href="/assertion"]')
+ .should('exist');
+ cy.get('a')
+ .filter('[href="/member"]')
+ .should('not.exist');
+
+ cy.getUsersBySfId(data.populatedMember.salesforceId, 200);
+ cy.getUsersBySfId(data.homepageTestMembers.consortiumLeadAndMember.salesforceId, 400, "Salesforce id doesn't match current user's memeber");
+ cy.getAllUsers(403, 'Forbidden');
+ cy.getAllMembers(403, 'Forbidden');
+ cy.addMember(data.populatedMember.salesforceId, false, false, 403, 'Forbidden');
+ cy.updateMember(data.populatedMember.salesforceId, false, false, 403, 'Forbidden');
+ cy.validateMember(data.populatedMember.salesforceId, false, false, 403, 'Forbidden');
+
+ //cy.changeNotificationLanguage(data.homepageTestMembers.consortiumLeadAndMember.salesforceId, data.italianLanguageCode, 401);
+
+ cy.updateContact(data.homepageTestMembers.consortiumLeadAndMember.salesforceId, 401, 'Unauthorized');
+ cy.updateMemberDetails(data.homepageTestMembers.consortiumLeadAndMember.salesforceId, 'The Harvest Ascendancy', 401, 'Unauthorized');
+ cy.getMemberDetails(data.homepageTestMembers.consortiumLeadAndMember.salesforceId, 401, 'Unauthorized');
+ cy.getMemberContacts(data.homepageTestMembers.consortiumLeadAndMember.salesforceId, 401, 'Unauthorized');
+ cy.getMemberOrgIds(data.homepageTestMembers.consortiumLeadAndMember.salesforceId, 401, 'Unauthorized');
+
+
+ cy.getMembersList(403, 'Forbidden');
+
+ // TODO: Awaiting endpoint changes
+ cy.getMember(data.homepageTestMembers.consortiumLeadAndMember.salesforceId, 200);
+
+ cy.addConsortiumMember(403, 'Forbidden');
+ cy.removeConsortiumMember(403, 'Forbidden');
+
+ cy.deleteMember(data.populatedMember.salesforceId, 403, 'Forbidden');
+ cy.getAssertions(200);
+ });
+
+ /* ************************************************************************************************************************
+ * ************************************************************************************************************************
+ * ADMIN
+ * ************************************************************************************************************************
+ * ************************************************************************************************************************
+ */
+
+ it('Admin', function () {
+ cy.programmaticSignin(credentials.adminEmail, credentials.adminPassword);
+ cy.visit('/');
+ cy.get('#admin-menu').should('exist');
+ cy.get('#entity-menu').should('exist');
+ cy.get('a')
+ .filter('[href="/user"]')
+ .should('exist');
+ cy.get('a')
+ .filter('[href="/assertion"]')
+ .should('exist');
+ cy.get('a')
+ .filter('[href="/member"]')
+ .should('exist');
+
+ cy.getUsersBySfId(data.populatedMember.salesforceId, 400, "Salesforce id doesn't match current user's memeber");
+ cy.getAllUsers(200);
+ cy.getAllMembers(200);
+ cy.addMember(data.populatedMember.salesforceId, false, false, 400, 'Member invalid');
+ cy.updateMember(data.invalidString, false, false, 500, 'Internal Server Error');
+ cy.validateMember(data.populatedMember.salesforceId, false, false, 200);
+
+ //cy.changeNotificationLanguage(data.homepageTestMembers.consortiumLeadAndMember.salesforceId, data.italianLanguageCode, 401);
+
+ cy.updateContact(data.homepageTestMembers.consortiumLeadAndMember.salesforceId, 401, 'Unauthorized');
+ cy.updateMemberDetails(data.homepageTestMembers.consortiumLeadAndMember.salesforceId, 'The Harvest Ascendancy', 401, 'Unauthorized');
+ cy.getMemberDetails(data.homepageTestMembers.consortiumLeadAndMember.salesforceId, 401, 'Unauthorized');
+ cy.getMemberContacts(data.homepageTestMembers.consortiumLeadAndMember.salesforceId, 401, 'Unauthorized');
+ cy.getMemberOrgIds(data.homepageTestMembers.consortiumLeadAndMember.salesforceId, 401, 'Unauthorized');
+
+ cy.getMembersList(200);
+
+ // TODO: Awaiting endpoint changes
+ cy.getMember(data.homepageTestMembers.consortiumLeadAndMember.salesforceId, 200);
+
+ cy.addConsortiumMember(403, 'Forbidden');
+ cy.removeConsortiumMember(403, 'Forbidden');
+
+ cy.deleteMember(data.invalidString, 400, 'Invalid id');
+ cy.getAssertions(200);
+ });
+
+ /* ************************************************************************************************************************
+ * ************************************************************************************************************************
+ * CONSORTIUM LEAD / AFFILIATION MANAGER DISABLED
+ * ************************************************************************************************************************
+ * ************************************************************************************************************************
+ */
+
+ it('Consortium lead', function () {
+ cy.programmaticSignin(data.homepageTestMembers.consortiumLeadAndMember.email, credentials.password);
+ cy.visit('/');
+ cy.get('#admin-menu').should('not.exist');
+ cy.get('#entity-menu').should('not.exist');
+ cy.get('a')
+ .filter('[href="/user"]')
+ .should('not.exist');
+ cy.get('a')
+ .filter('[href="/assertion"]')
+ .should('not.exist');
+ cy.get('a')
+ .filter('[href="/member"]')
+ .should('not.exist');
+
+ cy.getUsersBySfId(data.homepageTestMembers.consortiumLeadAndMember.salesforceId, 401);
+ cy.getUsersBySfId(data.populatedMember.salesforceId, 400, "Salesforce id doesn't match current user's memeber");
+ cy.getAllUsers(403, 'Forbidden');
+ cy.getAllMembers(403, 'Forbidden');
+ cy.addMember(data.populatedMember.salesforceId, false, false, 403, 'Forbidden');
+ cy.updateMember(data.populatedMember.salesforceId, false, false, 403, 'Forbidden');
+ cy.validateMember(data.populatedMember.salesforceId, false, false, 403, 'Forbidden');
+
+ //cy.changeNotificationLanguage(data.populatedMember.salesforceId, data.italianLanguageCode, 401);
+
+ cy.updateContact(data.populatedMember.salesforceId, 401, 'Unauthorized');
+ cy.updateMemberDetails(data.populatedMember.salesforceId, "Test", 401, 'Unauthorized');
+ cy.getMemberDetails(data.populatedMember.salesforceId, 401, 'Unauthorized');
+ cy.getMemberContacts(data.populatedMember.salesforceId, 401, 'Unauthorized');
+ cy.getMemberOrgIds(data.populatedMember.salesforceId, 401, 'Unauthorized');
+
+ cy.getMembersList(403, 'Forbidden');
+
+ // TODO: Awaiting endpoint changes
+ cy.getMember(data.homepageTestMembers.consortiumLeadAndMember.salesforceId, 200);
+
+ cy.deleteMember(data.homepageTestMembers.consortiumLeadAndMember.salesforceId, 403, 'Forbidden');
+ cy.addConsortiumMember(200);
+ cy.removeConsortiumMember(200);
+
+ // TODO: Awaiting endpoint changes
+ cy.getAssertions(200);
+ });
+
+ // TODO: enable once the issue with signed out users not being able to visit routes is fixed
+ /* it('Anonymous', function() {
+ cy.programmaticSignin(credentials.adminEmail, credentials.adminPassword);
+ cy.visit('/');
+ cy.get('#admin-menu').should('not.exist');
+ cy.get('#entity-menu').should('not.exist')
+ cy.get('a').filter('[href="/user"]').should('not.exist');
+ cy.get('a').filter('[href="/assertion"]').should('not.exist');
+ cy.get('a').filter('[href="/member"]').should('not.exist');
+ }); */
+});
diff --git a/ui/cypress/e2e/retention/ui-homepage-edit.cy.js b/ui/cypress/e2e/retention/ui-homepage-edit.cy.js
new file mode 100644
index 000000000..fa409843e
--- /dev/null
+++ b/ui/cypress/e2e/retention/ui-homepage-edit.cy.js
@@ -0,0 +1,86 @@
+///
+import data from "../../fixtures/test-data.json";
+import credentials from "../../fixtures/credentials.json";
+
+const { email, name } = data.homepageTestMembers.consortiumMember;
+
+describe("Test editing member details", () => {
+ it("Editing Almonds Forest member details", function () {
+ const date = Date.now();
+ cy.programmaticSignin(email, credentials.password);
+ cy.visit("/");
+ cy.get("app-member-info").contains(date).should("not.exist");
+ cy.visit("/edit");
+ cy.get(".text-danger").should("not.exist");
+ // wait for data to load
+ cy.intercept(
+ `/services/memberservice/api/members/${data.homepageTestMembers.consortiumMember.salesforceId}/member-contacts`,
+ ).as("details");
+ cy.wait("@details");
+ cy.get('[name="orgName"]').clear().blur();
+ cy.get("small").contains("Organization name cannot be empty");
+ cy.get('[name="orgName"]').type(name);
+ cy.get("small")
+ .contains("Organization cannot be empty")
+ .should("not.exist");
+ cy.get('[name="publicName"]').clear().blur();
+ cy.get("small").contains("Public organization name cannot be empty");
+ cy.get('[name="publicName"]').type(name + " " + date);
+ cy.get("small")
+ .contains("Public organization name cannot be empty")
+ .should("not.exist");
+ cy.get('[name="country"]').invoke("attr", "readonly").should("exist");
+ cy.get('[name="state"]').should("not.exist");
+ cy.get('[name="trademarkLicense"][value="Yes"]').click();
+ cy.get('[name="street"]')
+ .clear()
+ .type("Street " + date);
+ cy.get('[name="city"]')
+ .clear()
+ .type("City " + date);
+ cy.get('[name="postcode"]').clear().type(date);
+
+ cy.get(".ql-editor")
+ .clear()
+ .type("Description: " + date);
+
+ cy.get('[name="website"]').clear().type(data.invalidWebsite).blur();
+ cy.get(".text-danger").should("have.length", 3);
+ cy.get('[name="website"]')
+ .clear()
+ .type("https://" + date + ".org")
+ .blur();
+ cy.get(".text-danger").should("not.exist");
+
+ cy.get('[name="email"]').clear().type(data.invalidEmail).blur();
+ cy.get(".text-danger").should("have.length", 3);
+ cy.get('[name="email"]')
+ .clear()
+ .type(date + "@orcid.org")
+ .blur();
+ cy.get(".text-danger").should("not.exist");
+ cy.get('[type="submit"]').click();
+ cy.get("app-member-info", { timeout: 20000 }).contains(`${name} ${date}`);
+ cy.get("app-member-info").contains(date + "@orcid.org");
+ cy.get("app-member-info").contains("https://" + date + ".org");
+ cy.get("app-member-info").contains("Description: " + date);
+ cy.get("app-member-info").contains(
+ "Street " + date + ", City " + date + ", " + date,
+ );
+ cy.get("app-member-info").contains(
+ `YES - ORCID can use trademarked assets`,
+ );
+ cy.visit("/edit");
+ // wait for data to load
+ cy.intercept(
+ `/services/memberservice/api/members/${data.homepageTestMembers.consortiumMember.salesforceId}/member-contacts`,
+ ).as("details");
+ cy.wait("@details");
+ cy.get('[name="trademarkLicense"][value="No"]').click();
+ cy.get('[name="website"]').clear();
+ cy.get('[type="submit"]').click();
+ cy.get("app-member-info").contains(
+ `NO - ORCID cannot use this organization's trademarked name and logos`,
+ );
+ });
+});
diff --git a/ui/cypress/e2e/retention/ui-homepage.cy.js b/ui/cypress/e2e/retention/ui-homepage.cy.js
new file mode 100644
index 000000000..1abc04e97
--- /dev/null
+++ b/ui/cypress/e2e/retention/ui-homepage.cy.js
@@ -0,0 +1,122 @@
+///
+import data from "../../fixtures/test-data.json";
+import credentials from "../../fixtures/credentials.json";
+
+describe("Test homepage", () => {
+ it("Direct member", function () {
+ cy.programmaticSignin(
+ data.homepageTestMembers.directMemberEmail,
+ credentials.password,
+ );
+ cy.visit("ui/en/");
+ cy.get("app-member-info", { timeout: 20000 });
+ cy.get(".side-bar").contains("Public details");
+ cy.get(".side-bar").contains("Website");
+ cy.get(".side-bar").contains("Email");
+ cy.get(".side-bar").contains("https://orcid.org");
+ cy.get(".side-bar").contains("orcid@orcid.org");
+ cy.get(".main-section").first().contains("Membership:");
+ cy.get(".main-section").first().contains("Active");
+ cy.get(".main-section").contains("Fly and Mighty");
+ cy.get(".main-section").contains("Contacts");
+ cy.get(".main-section").contains("Main relationship contact (OFFICIAL)");
+ cy.get(".main-section").contains("h.hanger@testingthisemail.com");
+ });
+
+ it("Consortium lead", function () {
+ cy.programmaticSignin(
+ data.homepageTestMembers.consortiumLeadEmail,
+ credentials.password,
+ );
+ cy.visit("ui/en/");
+ cy.get("app-member-info", { timeout: 20000 });
+ cy.get(".side-bar").contains("Public details");
+ cy.get(".side-bar").contains("Website");
+ cy.get(".side-bar").contains("Email");
+ cy.get(".side-bar").contains("https://www.testtest1.com");
+ cy.get(".side-bar").contains("mambono5@mailinator.com");
+ cy.get(".main-section").contains("Consortium lead");
+ cy.get(".main-section").contains("Mambo no 5");
+ cy.get(".main-section").contains("Consortium Members (2)");
+ cy.get(".main-section").contains("Member name");
+ cy.get(".main-section").contains("A Public Hot Metro");
+ cy.get(".main-section").contains("Contacts");
+ cy.get(".main-section").contains("Main relationship contact (OFFICIAL)");
+ cy.get(".main-section").contains("first.last@orcid.org");
+ });
+
+ it("Consortium member", function () {
+ cy.programmaticSignin(
+ data.homepageTestMembers.consortiumMember.email,
+ credentials.password,
+ );
+ cy.visit("ui/en/");
+ cy.get("app-member-info", { timeout: 20000 });
+ cy.get(".side-bar").contains("Public details");
+ cy.get(".side-bar").contains("Website");
+ cy.get(".side-bar").contains("Email");
+ cy.get(".side-bar").contains("No website added");
+ cy.get(".side-bar").contains("@orcid.org");
+ cy.get(".main-section").contains(
+ "Consortium/Parent organization: Mambo No 5",
+ );
+ cy.get(".main-section").contains("Membership: Active");
+ cy.get(".main-section").contains("Almonds Forest");
+ cy.get(".main-section").contains("Description");
+ cy.get(".main-section").contains("Contacts");
+ cy.get(".main-section").contains("Agreement signatory (OFFICIAL)");
+ cy.get(".main-section").contains("last@orcid.org");
+ });
+
+ it("Consortium member 2", function () {
+ cy.programmaticSignin(
+ data.homepageTestMembers.consortiumMemberEmail2,
+ credentials.password,
+ );
+ cy.visit("ui/en/");
+ cy.get("app-member-info", { timeout: 20000 });
+ cy.get(".side-bar").contains("Public details");
+ cy.get(".side-bar").contains("Website");
+ cy.get(".side-bar").contains("Email");
+ cy.get(".side-bar").contains("canadapost.ca");
+ cy.get(".side-bar").contains("support@orcid.org");
+ cy.get(".main-section").contains(
+ "Consortium/Parent organization: The Concord of Kinship",
+ );
+ cy.get(".main-section").contains("Membership: Active");
+ cy.get(".main-section").contains("Grateful Frogs");
+ });
+
+ it("Consortium member and lead", function () {
+ cy.programmaticSignin(
+ data.homepageTestMembers.consortiumLeadAndMember.email,
+ credentials.password,
+ );
+ cy.visit("ui/en/");
+ cy.get("app-member-info", { timeout: 20000 });
+ cy.get(".side-bar").contains("Public details");
+ cy.get(".side-bar").contains("Website");
+ cy.get(".side-bar").contains("Email");
+ cy.get(".side-bar").contains("www.haevesting.com");
+ cy.get(".side-bar").contains("hhh@hhh.com");
+ cy.get(".main-section").contains("Consortium lead");
+ cy.get(".main-section").contains("Consortium Members (2)");
+ cy.get(".main-section").contains("Member name");
+ cy.get(".main-section").contains("Yellow member");
+ cy.get(".main-section").contains("The Harvest Ascendancy");
+ cy.get(".main-section").contains("Contacts");
+ cy.get(".main-section").contains("Product Contact");
+ cy.get(".main-section").contains("testingagain@orcid.org");
+ });
+
+ it("Inactive member", function () {
+ cy.programmaticSignin(
+ data.homepageTestMembers.inactiveConsortiumMemberEmail,
+ credentials.password,
+ );
+ cy.visit("ui/en/");
+ cy.get("app-member-info", { timeout: 20000 }).contains(
+ "Something has gone wrong...",
+ );
+ });
+});
diff --git a/ui/cypress/e2e/retention/ui-login.cy.js b/ui/cypress/e2e/retention/ui-login.cy.js
new file mode 100644
index 000000000..56175b2ed
--- /dev/null
+++ b/ui/cypress/e2e/retention/ui-login.cy.js
@@ -0,0 +1,13 @@
+///
+import data from "../../fixtures/test-data.json";
+import credentials from "../../fixtures/credentials.json";
+
+describe("Test sign in form", () => {
+ it("Sign in", function () {
+ cy.visit(`ui/en/`);
+ cy.get("#username").clear().type(data.member.users.owner.email);
+ cy.get("#password").type(credentials.password);
+ cy.get("button").filter('[type="submit"]').click();
+ cy.get('[data-cy="signedInMessage"]').should("exist");
+ });
+});
diff --git a/ui/cypress/e2e/retention/ui-pagination.cy.js b/ui/cypress/e2e/retention/ui-pagination.cy.js
new file mode 100644
index 000000000..5a7c73bbe
--- /dev/null
+++ b/ui/cypress/e2e/retention/ui-pagination.cy.js
@@ -0,0 +1,58 @@
+///
+import data from "../../fixtures/test-data.json";
+import credentials from "../../fixtures/credentials.json";
+
+describe("Test pagination", () => {
+ beforeEach(() => {
+ cy.programmaticSignin(
+ data.paginationMember.users.owner.email,
+ credentials.password,
+ );
+ });
+
+ afterEach(() => {
+ cy.programmaticSignout();
+ });
+
+ it('Test the "Manage users" page', function () {
+ cy.visit("ui/en/users");
+ /*
+ cy.get('.container-fluid').within(() => {
+ cy.get('p')
+ .contains('Showing 1 - 20 of 22 items')
+ })*/
+ cy.get("tbody").children().should("have.length", 20);
+ cy.get(".pagination").contains("1");
+ cy.get(".pagination").contains("3").should("not.exist");
+ cy.get(".pagination").contains("2").click();
+ cy.get("tbody").children().should("have.length", 2);
+ cy.get("tbody").within(() => {
+ cy.get("td")
+ .contains(data.paginationMember.assertionEmail1)
+ .should("not.exist");
+ cy.get("td").contains(data.paginationMember.assertionEmail2);
+ cy.get("td").contains(data.paginationMember.assertionEmail3);
+ });
+ });
+
+ it('Test the "Affiliations" page', function () {
+ cy.visit("ui/en/affiliations");
+ /*
+ cy.get('.container-fluid').within(() => {
+ cy.get('p')
+ .contains('Showing 1 - 20 of 22 items')
+ })*/
+ cy.get("tbody").children().should("have.length", 20);
+ cy.get(".pagination").contains("1");
+ cy.get(".pagination").contains("2");
+ cy.get(".pagination").contains("4").should("not.exist");
+ cy.get(".pagination").contains("3").click();
+ cy.get("tbody").children().should("have.length", 2);
+ cy.get("tbody").within(() => {
+ cy.get("td")
+ .contains(data.paginationMember.assertionData1)
+ .should("not.exist");
+ cy.get("td").contains(data.paginationMember.assertionData2);
+ });
+ });
+});
diff --git a/ui/cypress/e2e/retention/ui-reports.cy.js b/ui/cypress/e2e/retention/ui-reports.cy.js
new file mode 100644
index 000000000..015949675
--- /dev/null
+++ b/ui/cypress/e2e/retention/ui-reports.cy.js
@@ -0,0 +1,282 @@
+///
+import data from "../../fixtures/test-data.json";
+import credentials from "../../fixtures/credentials.json";
+
+describe("Test report menus", () => {
+ it("Direct member", function () {
+ cy.programmaticSignin(
+ data.homepageTestMembers.directMemberEmail,
+ credentials.password,
+ );
+ cy.visit("ui/en/");
+ cy.get("app-member-info", { timeout: 20000 });
+ cy.get("#tools-menu").click();
+ cy.get('[routerLink="/report/member"]').should("be.visible");
+ cy.get('[routerLink="/report/integration"]').should("be.visible");
+ cy.get('[routerLink="/report/affiliation"]').should("be.visible");
+ cy.get('[routerLink="/report/consortia"]').should("not.exist");
+ cy.get('[routerLink="/report/consortia-member-affiliations"]').should(
+ "not.exist",
+ );
+ cy.request({
+ url: "/services/memberservice/api/reports/member",
+ failOnStatusCode: false,
+ }).then((resp) => {
+ expect(resp.status).to.eq(200);
+ });
+ cy.request({
+ url: "/services/memberservice/api/reports/integration",
+ failOnStatusCode: false,
+ }).then((resp) => {
+ expect(resp.status).to.eq(200);
+ });
+ cy.request({
+ url: "/services/memberservice/api/reports/affiliation",
+ failOnStatusCode: false,
+ }).then((resp) => {
+ expect(resp.status).to.eq(200);
+ });
+ cy.request({
+ url: "/services/memberservice/api/reports/consortia",
+ failOnStatusCode: false,
+ }).then((resp) => {
+ expect(resp.status).to.eq(400);
+ });
+ cy.request({
+ url: "/services/memberservice/api/reports/consortia-member-affiliations",
+ failOnStatusCode: false,
+ }).then((resp) => {
+ expect(resp.status).to.eq(400);
+ });
+ });
+
+ it("Consortium lead", function () {
+ cy.programmaticSignin(
+ data.homepageTestMembers.consortiumLeadEmail,
+ credentials.password,
+ );
+ cy.visit("ui/en/");
+ cy.get("#tools-menu").click();
+ cy.get('[routerlink="/report/member"]').should("be.visible");
+ cy.get('[routerlink="/report/integration"]').should("be.visible");
+ cy.get('[routerlink="/report/affiliation"]').should("be.visible");
+ cy.get('[routerlink="/report/consortia"]').should("be.visible");
+ cy.get('[routerlink="/report/consortia-member-affiliations"]').should(
+ "be.visible",
+ );
+ cy.request({
+ url: "/services/memberservice/api/reports/member",
+ failOnStatusCode: false,
+ }).then((resp) => {
+ expect(resp.status).to.eq(200);
+ });
+ cy.request({
+ url: "/services/memberservice/api/reports/integration",
+ failOnStatusCode: false,
+ }).then((resp) => {
+ expect(resp.status).to.eq(200);
+ });
+ cy.request({
+ url: "/services/memberservice/api/reports/affiliation",
+ failOnStatusCode: false,
+ }).then((resp) => {
+ expect(resp.status).to.eq(200);
+ });
+ cy.request({
+ url: "/services/memberservice/api/reports/consortia",
+ failOnStatusCode: false,
+ }).then((resp) => {
+ expect(resp.status).to.eq(200);
+ });
+ cy.request({
+ url: "/services/memberservice/api/reports/consortia-member-affiliations",
+ failOnStatusCode: false,
+ }).then((resp) => {
+ expect(resp.status).to.eq(200);
+ });
+ });
+
+ it("Consortium member", function () {
+ cy.programmaticSignin(
+ data.homepageTestMembers.consortiumMember.email,
+ credentials.password,
+ );
+ cy.visit("ui/en/");
+ cy.get("#tools-menu").click();
+ cy.get('[routerlink="/report/member"]').should("be.visible");
+ cy.get('[routerlink="/report/integration"]').should("be.visible");
+ cy.get('[routerlink="/report/affiliation"]').should("be.visible");
+ cy.get('[routerlink="/report/consortia"]').should("not.exist");
+ cy.get('[routerlink="/report/consortia-member-affiliations"]').should(
+ "not.exist",
+ );
+ cy.request({
+ url: "/services/memberservice/api/reports/member",
+ failOnStatusCode: false,
+ }).then((resp) => {
+ expect(resp.status).to.eq(200);
+ });
+ cy.request({
+ url: "/services/memberservice/api/reports/integration",
+ failOnStatusCode: false,
+ }).then((resp) => {
+ expect(resp.status).to.eq(200);
+ });
+ cy.request({
+ url: "/services/memberservice/api/reports/affiliation",
+ failOnStatusCode: false,
+ }).then((resp) => {
+ expect(resp.status).to.eq(200);
+ });
+ cy.request({
+ url: "/services/memberservice/api/reports/consortia",
+ failOnStatusCode: false,
+ }).then((resp) => {
+ expect(resp.status).to.eq(400);
+ });
+ cy.request({
+ url: "/services/memberservice/api/reports/consortia-member-affiliations",
+ failOnStatusCode: false,
+ }).then((resp) => {
+ expect(resp.status).to.eq(400);
+ });
+ });
+
+ it("Consortium member 2", function () {
+ cy.programmaticSignin(
+ data.homepageTestMembers.consortiumMemberEmail2,
+ credentials.password,
+ );
+ cy.visit("ui/en/");
+ cy.get("#tools-menu").click();
+ cy.get('[routerlink="/report/member"]').should("be.visible");
+ cy.get('[routerlink="/report/integration"]').should("be.visible");
+ cy.get('[routerlink="/report/affiliation"]').should("be.visible");
+ cy.get('[routerlink="/report/consortia"]').should("not.exist");
+ cy.get('[routerlink="/report/consortia-member-affiliations"]').should(
+ "not.exist",
+ );
+ cy.request({
+ url: "/services/memberservice/api/reports/member",
+ failOnStatusCode: false,
+ }).then((resp) => {
+ expect(resp.status).to.eq(200);
+ });
+ cy.request({
+ url: "/services/memberservice/api/reports/integration",
+ failOnStatusCode: false,
+ }).then((resp) => {
+ expect(resp.status).to.eq(200);
+ });
+ cy.request({
+ url: "/services/memberservice/api/reports/affiliation",
+ failOnStatusCode: false,
+ }).then((resp) => {
+ expect(resp.status).to.eq(200);
+ });
+ cy.request({
+ url: "/services/memberservice/api/reports/consortia",
+ failOnStatusCode: false,
+ }).then((resp) => {
+ expect(resp.status).to.eq(400);
+ });
+ cy.request({
+ url: "/services/memberservice/api/reports/consortia-member-affiliations",
+ failOnStatusCode: false,
+ }).then((resp) => {
+ expect(resp.status).to.eq(400);
+ });
+ });
+
+ it("Consortium member and lead", function () {
+ cy.programmaticSignin(
+ data.homepageTestMembers.consortiumLeadAndMember.email,
+ credentials.password,
+ );
+ cy.visit("ui/en/");
+ cy.get("#tools-menu").click();
+ cy.get('[routerlink="/report/member"]').should("be.visible");
+ cy.get('[routerlink="/report/integration"]').should("be.visible");
+ cy.get('[routerlink="/report/affiliation"]').should("be.visible");
+ cy.get('[routerlink="/report/consortia"]').should("be.visible");
+ cy.get('[routerlink="/report/consortia-member-affiliations"]').should(
+ "be.visible",
+ );
+ cy.request({
+ url: "/services/memberservice/api/reports/member",
+ failOnStatusCode: false,
+ }).then((resp) => {
+ expect(resp.status).to.eq(200);
+ });
+ cy.request({
+ url: "/services/memberservice/api/reports/integration",
+ failOnStatusCode: false,
+ }).then((resp) => {
+ expect(resp.status).to.eq(200);
+ });
+ cy.request({
+ url: "/services/memberservice/api/reports/affiliation",
+ failOnStatusCode: false,
+ }).then((resp) => {
+ expect(resp.status).to.eq(200);
+ });
+ cy.request({
+ url: "/services/memberservice/api/reports/consortia",
+ failOnStatusCode: false,
+ }).then((resp) => {
+ expect(resp.status).to.eq(200);
+ });
+ cy.request({
+ url: "/services/memberservice/api/reports/consortia-member-affiliations",
+ failOnStatusCode: false,
+ }).then((resp) => {
+ expect(resp.status).to.eq(200);
+ });
+ });
+
+ it("Inactive member", function () {
+ cy.programmaticSignin(
+ data.homepageTestMembers.inactiveConsortiumMemberEmail,
+ credentials.password,
+ );
+ cy.visit("ui/en/");
+ cy.get("#tools-menu").click();
+ cy.get('[routerLink="/report/member"]').should("be.visible");
+ cy.get('[routerLink="/report/integration"]').should("be.visible");
+ cy.get('[routerLink="/report/affiliation"]').should("be.visible");
+ cy.get('[routerLink="/report/consortia"]').should("not.exist");
+ cy.get('[routerLink="/report/consortia-member-affiliations"]').should(
+ "not.exist",
+ );
+ cy.request({
+ url: "/services/memberservice/api/reports/member",
+ failOnStatusCode: false,
+ }).then((resp) => {
+ expect(resp.status).to.eq(200);
+ });
+ cy.request({
+ url: "/services/memberservice/api/reports/integration",
+ failOnStatusCode: false,
+ }).then((resp) => {
+ expect(resp.status).to.eq(200);
+ });
+ cy.request({
+ url: "/services/memberservice/api/reports/affiliation",
+ failOnStatusCode: false,
+ }).then((resp) => {
+ expect(resp.status).to.eq(200);
+ });
+ cy.request({
+ url: "/services/memberservice/api/reports/consortia",
+ failOnStatusCode: false,
+ }).then((resp) => {
+ expect(resp.status).to.eq(400);
+ });
+ cy.request({
+ url: "/services/memberservice/api/reports/consortia-member-affiliations",
+ failOnStatusCode: false,
+ }).then((resp) => {
+ expect(resp.status).to.eq(400);
+ });
+ });
+});
diff --git a/ui/cypress/fixtures/affiliations.csv b/ui/cypress/fixtures/affiliations.csv
new file mode 100644
index 000000000..4ee58e65b
--- /dev/null
+++ b/ui/cypress/fixtures/affiliations.csv
@@ -0,0 +1,10 @@
+email,affiliation-section,department-name,role-title,start-date,end-date,org-name,org-country,org-city,org-region,disambiguated-organization-identifier,disambiguation-source,url
+qa+cy_mp_csv_add_affiliations_test@orcid.org,education,Psychology,Associate Professor,2014-04,,Member Portal University,US,Madison,WI,5228,RINGGOLD,https://member-portal.qa.orcid.org/
+qa+cy_mp_csv_add_affiliations_test@orcid.org,employment,Psychology,Associate Professor,2014-04,,Member Portal University,US,Madison,WI,5228,RINGGOLD,https://member-portal.qa.orcid.org/
+qa+cy_mp_csv_add_affiliations_test@orcid.org,qualification,Psychology,Associate Professor,2014-04,,Member Portal University,US,Madison,WI,5228,RINGGOLD,https://member-portal.qa.orcid.org/
+qa+cy_mp_csv_add_affiliations_test@orcid.org,invited_position,Psychology,Associate Professor,2014-04,,Member Portal University,US,Madison,WI,5228,RINGGOLD,https://member-portal.qa.orcid.org/
+qa+cy_mp_csv_add_affiliations_test@orcid.org,distinction,Psychology,Associate Professor,2014-04,,Member Portal University,US,Madison,WI,5228,RINGGOLD,https://member-portal.qa.orcid.org/
+qa+cy_mp_csv_add_affiliations_test@orcid.org,membership,Psychology,Associate Professor,2014-04,,Member Portal University,US,Madison,WI,5228,RINGGOLD,https://member-portal.qa.orcid.org/
+qa+cy_mp_csv_add_affiliations_test@orcid.org,service,Psychology,Associate Professor,2014-04,,Member Portal University,US,Madison,WI,5228,RINGGOLD,https://member-portal.qa.orcid.org/
+qa+cy_mp_csv_add_affiliations_test@orcid.org,service,Psychology,Associate Professor,2014-04,,Member Portal University,US,Madison,WI,5228,RINGGOLD,https://member-portal.qa.orcid.org/
+qa+cy_mp_csv_add_affiliations_test@orcid.org,service,Psychology,Associate Professor,2014-04,,Member Portal University,US,Madison,WI,5228,RINGGOLD,https://member-portal.qa.orcid.org/
\ No newline at end of file
diff --git a/ui/cypress/fixtures/bulk-edit-salesforce-ids-config.json b/ui/cypress/fixtures/bulk-edit-salesforce-ids-config.json
new file mode 100644
index 000000000..048272d52
--- /dev/null
+++ b/ui/cypress/fixtures/bulk-edit-salesforce-ids-config.json
@@ -0,0 +1,8 @@
+{
+ "endpoint": "",
+ "token": "",
+ "base_url": "",
+ "email": "",
+ "password": ""
+
+}
\ No newline at end of file
diff --git a/ui/cypress/fixtures/csv-orcid-record.json b/ui/cypress/fixtures/csv-orcid-record.json
new file mode 100644
index 000000000..b92ceb4ec
--- /dev/null
+++ b/ui/cypress/fixtures/csv-orcid-record.json
@@ -0,0 +1,4 @@
+{
+ "id": "0000-0003-2720-0566",
+ "email": "qa+cy_mp_csv_add_affiliations_test@orcid.org"
+}
diff --git a/ui/cypress/fixtures/csv-populated-orcid-record.json b/ui/cypress/fixtures/csv-populated-orcid-record.json
new file mode 100644
index 000000000..2bab555e9
--- /dev/null
+++ b/ui/cypress/fixtures/csv-populated-orcid-record.json
@@ -0,0 +1,11 @@
+{
+ "id": "0000-0002-5941-7893",
+ "email": "qa+mp_csv_populated_record@mailinator.com",
+ "invalidEmail": "@test@email.com",
+ "affiliation": {
+ "id": "624acdc830c49e0008fcf505",
+ "type": "SERVICE",
+ "countryCode": "BH",
+ "country": "Bahrain"
+ }
+}
diff --git a/ui/cypress/fixtures/invalidAffiliations.csv b/ui/cypress/fixtures/invalidAffiliations.csv
new file mode 100644
index 000000000..497666348
--- /dev/null
+++ b/ui/cypress/fixtures/invalidAffiliations.csv
@@ -0,0 +1,2 @@
+email,affiliation-section,department-name,role-title,start-date,end-date,org-name,org-country,org-city,org-region,disambiguated-organization-identifier,disambiguation-source,url
+,,,,,,,,,
\ No newline at end of file
diff --git a/ui/cypress/fixtures/orcid-record.json b/ui/cypress/fixtures/orcid-record.json
new file mode 100644
index 000000000..4395577ef
--- /dev/null
+++ b/ui/cypress/fixtures/orcid-record.json
@@ -0,0 +1,42 @@
+{
+ "id": "0000-0002-4386-4349",
+ "email": "qa+cy_mp_test@orcid.org",
+ "nonregisteredEmail": "qa+cy_mp_nonexistent@orcid.org",
+ "invalidEmail": "@test@email.com",
+ "affiliation": {
+ "type": "SERVICE",
+ "countryCode": "BH",
+ "country": "Bahrain",
+ "org": {
+ "ror": {
+ "id": "https://ror.org/04z60tq39",
+ "shortId": "04z60tq39",
+ "invalidId": "test12345678",
+ "name": "ROR"
+ },
+ "grid": {
+ "id": "grid.238252.c",
+ "invalidId": "grd.238252.c",
+ "name": "GRID"
+ },
+ "ringgold": {
+ "id": "5072",
+ "invalidId": "test",
+ "name": "RINGGOLD"
+ }
+ },
+ "startDate": {
+ "year": "2021",
+ "month": "January",
+ "invalidDay": "02",
+ "day": "01"
+ },
+ "endDate": {
+ "year": "2021",
+ "month": "January",
+ "day": "01"
+ },
+ "invalidUrl": "test.test",
+ "url": "http://example.com"
+ }
+}
diff --git a/ui/cypress/fixtures/populated-orcid-record.json b/ui/cypress/fixtures/populated-orcid-record.json
new file mode 100644
index 000000000..08bf67d95
--- /dev/null
+++ b/ui/cypress/fixtures/populated-orcid-record.json
@@ -0,0 +1,11 @@
+{
+ "id": "0000-0001-6964-278X",
+ "email": "qa+mp_populated_record@mailinator.com",
+ "invalidEmail": "@test@email.com",
+ "affiliation": {
+ "id": "624acdc830c49e0008fcf505",
+ "type": "SERVICE",
+ "countryCode": "BH",
+ "country": "Bahrain"
+ }
+}
diff --git a/ui/cypress/fixtures/test-data.json b/ui/cypress/fixtures/test-data.json
new file mode 100644
index 000000000..13c8d3820
--- /dev/null
+++ b/ui/cypress/fixtures/test-data.json
@@ -0,0 +1,112 @@
+{
+ "testString": " !@#$%^&*()-=_ 密漏 2022-04-04t16-20-02 ",
+ "invalidEmail": "@test@email.com",
+ "invalidWebsite": "orcid.org",
+ "invalidString": "a",
+ "italianLanguageCode": "7: it",
+ "outbox": {
+ "email": "info@member-portal.qa.orcid.org",
+ "updateEmail": "update@notify.orcid.org",
+ "activationSubject": "ORCID Member Portal activation",
+ "resetPasswordSubject": "ORCID Member Portal password reset",
+ "ownerUpdateSubject": "ORCID Member Portal organization owner updated",
+ "csvUpload": "Your affiliation CSV upload",
+ "csvDownload": "Your affiliations for edit file",
+ "notificationConfirmation": "ORCID Member Portal Notifications sent",
+ "notificationRegisteredUser": "[ORCID] Cypress Test Record you have new notifications",
+ "notificationNonRegisteredUser": "NOTIFICATIONS TEST would like to add a validated affiliation to your ORCID record",
+ "notificationNonRegisteredUserItalian": "NOTIFICATIONS TEST vorrebbe aggiungere un’affiliazione convalidata al tuo record ORCID"
+ },
+ "member": {
+ "id": "619cc62aa7b11b00085b5bf8",
+ "clientName": "!@#$%^&*()-= проверка test 2",
+ "clientId": "APP-9GN1GYLRUONIPZRE",
+ "salesforceId": "TestSalesforceId",
+ "users": {
+ "owner": {
+ "id": "62264e8badbe1d0008bc0c31",
+ "email": "qa+mp0307220827@orcid.org"
+ },
+ "newUser": {
+ "id": "",
+ "email": "qa+mp_cy_2022-04-04t16-20-02@orcid.org"
+ }
+ }
+ },
+ "populatedMember": {
+ "id": "61b3400030c49e0008ffc6c4",
+ "clientName": "!@#$%^&*()-= проверка test 3",
+ "clientId": "APP-9GN1GYLRUONIPZRE",
+ "salesforceId": "0012i00000jXKkwAAG",
+ "users": {
+ "owner": {
+ "id": "624583472ab79c0008809b89",
+ "email": "qa+mp_cy_test_account@orcid.org"
+ },
+ "user": {
+ "id": "624d5a402ab79c000880a3ce",
+ "email": "qa+mp_cy_test_user@orcid.org"
+ }
+ }
+ },
+ "csvMember": {
+ "id": "6177cf5830c49e00080c3010",
+ "clientName": "CYPRESS CSV TEST",
+ "clientId": "APP-3KN4PG7TU5YV8H0J",
+ "salesforceId": "CYPRESS CSV TEST",
+ "users": {
+ "owner": {
+ "id": "624583472ab79c0008809b89",
+ "email": "qa+mp_cy_csv_member_owner@orcid.org"
+ }
+ }
+ },
+ "csvPopulatedMember": {
+ "id": "626ab042b3cb1f00087f07c3",
+ "clientName": "CYPRESS CSV EDIT TEST",
+ "clientId": "APP-3KN4PG7TU5YV8H0J",
+ "salesforceId": "CYPRESS CSV EDIT TEST",
+ "users": {
+ "owner": {
+ "id": "626ab07a30c49e0008669c9c",
+ "email": "qa+mp_cy_csv_populated_member_owner@orcid.org"
+ }
+ }
+ },
+ "paginationMember": {
+ "id": "628b508030c49e00082f2a25",
+ "clientName": "PAGINATION TEST",
+ "clientId": "APP-3KN4PG7TU5YV8H0J",
+ "salesforceId": "PAGINATION TEST",
+ "users": {
+ "owner": {
+ "id": "628b5552adbe1d0008d89d6e",
+ "email": "qa+mp_cy_pagination1@orcid.org"
+ }
+ },
+ "assertionEmail1": "20@orcid.org",
+ "assertionEmail2": "21@orcid.org",
+ "assertionEmail3": "22@orcid.org",
+ "assertionData1": "Psychology 5",
+ "assertionData2": "Psychology 6"
+ },
+ "notificationsMember": {
+ "id": "636986e7b3cb1f00091c3f31",
+ "clientName": "NOTIFICATIONS TEST",
+ "salesforceId": "0012i00000h6xnUAAQ",
+ "users": {
+ "owner": {
+ "id": "63f50e8ba7b11b000885d6e4",
+ "email": "qa+mp_cy_notifications@orcid.org"
+ }
+ }
+ },
+ "homepageTestMembers": {
+ "directMemberEmail": "qa+cy_mp_flyandmighty@orcid.org",
+ "consortiumLeadEmail": "qa+cy_mp_mambono5@orcid.org",
+ "consortiumMember": {"email": "qa+cy_mp_almondsforest@orcid.org", "name": "Almonds Forest", "salesforceId": "0012i00000aA9dFAAS"},
+ "consortiumMemberEmail2": "qa+cy_mp_gratefulfrogs@orcid.org",
+ "consortiumLeadAndMember": {"email": "qa+cy_mp_theharvestascendancy@orcid.org", "salesforceId": "0012i00000h6xo5AAA"},
+ "inactiveConsortiumMemberEmail": "qa+cy_mp_considineandsons@orcid.org"
+ }
+}
\ No newline at end of file
diff --git a/ui/cypress/helpers/helpers.js b/ui/cypress/helpers/helpers.js
new file mode 100644
index 000000000..db87a2bc6
--- /dev/null
+++ b/ui/cypress/helpers/helpers.js
@@ -0,0 +1,21 @@
+let newUser = () => {
+ let date = new Date().toISOString().substring(0, 19).replace(/:/g, "-").replace(/\./g, "-").toLowerCase()
+ let testString = ' !@#$%^&*()-=_ ' + randomString() + ' ' + date + ' '
+ return {
+ email: 'qa' + '+mp_cy_' + date + '@orcid.org',
+ testString
+ }
+}
+
+let randomString = () => {
+ let text = ''
+ let possible =
+ 'ñáéíóú-北查爾斯頓工廠的安全漏洞已經引起了航空公司和監管機構的密切關注'
+
+ for (var i = 0; i < 2; i++)
+ text += possible.charAt(Math.floor(Math.random() * possible.length))
+
+ return text
+}
+
+module.exports.newUser = newUser()
\ No newline at end of file
diff --git a/ui/cypress/helpers/setup-test-data.js b/ui/cypress/helpers/setup-test-data.js
new file mode 100644
index 000000000..9af233939
--- /dev/null
+++ b/ui/cypress/helpers/setup-test-data.js
@@ -0,0 +1,12 @@
+const fs = require('fs');
+const helpers = require('./helpers.js');
+const fileName = '../fixtures/test-data.json';
+const file = require(fileName);
+
+const newUser = helpers.newUser;
+file.member.users.newUser.email = newUser.email
+file.testString = newUser.testString
+
+fs.writeFile(fileName, JSON.stringify(file, null, 2), function writeJSON(err) {
+ if (err) return console.log(err);
+});
\ No newline at end of file
diff --git a/ui/cypress/plugins/index.js b/ui/cypress/plugins/index.js
new file mode 100644
index 000000000..b2ef5a068
--- /dev/null
+++ b/ui/cypress/plugins/index.js
@@ -0,0 +1,59 @@
+///
+// ***********************************************************
+// This example plugins/index.js can be used to load plugins
+//
+// You can change the location of this file or turn off loading
+// the plugins file with the 'pluginsFile' configuration option.
+//
+// You can read more here:
+// https://on.cypress.io/plugins-guide
+// ***********************************************************
+
+// This function is called when a project is opened or re-opened (e.g. due to
+// the project's config changing)
+const data = require("../fixtures/test-data.json");
+const gmail_tester = require("gmail-tester");
+const path = require("path");
+const tokenFileName = "token_qa.json"; //token file is inside plugins/ directory
+const credentialsFileName = "credentials_qa.json"; //credentials is inside plugins/ directory
+const clipboardy = require("clipboardy");
+/**
+ * @type {Cypress.PluginConfig}
+ */
+// eslint-disable-next-line no-unused-vars
+
+module.exports = (on, config) => {
+ on("task", {
+ checkInbox: async (args) => {
+ const {
+ include_body,
+ include_attachments,
+ subject,
+ after,
+ to,
+ from = data.outbox.email,
+ } = args;
+ const email = await gmail_tester.check_inbox(
+ path.resolve(__dirname, credentialsFileName),
+ path.resolve(__dirname, tokenFileName),
+ {
+ from,
+ wait_time_sec: 15,
+ max_wait_time_sec: 300,
+ include_body: true,
+ include_attachments: true,
+ after: new Date(Date.now() - 1000 * 60),
+ to,
+ subject,
+ },
+ );
+ return email; //this task returns one email (JSON object)
+ },
+ });
+
+ on("task", {
+ getClipboard() {
+ return clipboardy.readSync();
+ },
+ });
+};
diff --git a/ui/cypress/support/commands.js b/ui/cypress/support/commands.js
new file mode 100644
index 000000000..498a2a5dc
--- /dev/null
+++ b/ui/cypress/support/commands.js
@@ -0,0 +1,550 @@
+// ***********************************************
+// This example commands.js shows you how to
+// create various custom commands and overwrite
+// existing commands.
+//
+// For more comprehensive examples of custom
+// commands please read more here:
+// https://on.cypress.io/custom-commands
+// ***********************************************
+//
+//
+// -- This is a parent command --
+// Cypress.Commands.add('login', (email, password) => { ... })
+//
+//
+// -- This is a child command --
+// Cypress.Commands.add('drag', { prevSubject: 'element'}, (subject, options) => { ... })
+//
+//
+// -- This is a dual command --
+// Cypress.Commands.add('dismiss', { prevSubject: 'optional'}, (subject, options) => { ... })
+//
+//
+// -- This will overwrite an existing command --
+// Cypress.Commands.overwrite('visit', (originalFn, url, options) => { ... })
+import "cypress-file-upload";
+import data from "../fixtures/test-data.json";
+import credentials from "../fixtures/credentials.json";
+import record from "../fixtures/orcid-record.json";
+
+Cypress.Commands.add("signin", (email, password) => {
+ cy.visit("./");
+ cy.get("#username")
+ .clear()
+ .type(email)
+ .get("#password")
+ .type(password)
+ .get("button")
+ .filter('[type="submit"]')
+ .click();
+ cy.get('[data-cy="signedInMessage"]').should("exist");
+});
+
+Cypress.Commands.add("checkOrgId", (org, invalidId, id) => {
+ cy.get("#field_disambiguationSource").select(org);
+ cy.get("small.text-danger").should("exist");
+ cy.get("#field_disambiguatedOrgId").clear().type(invalidId);
+ cy.get("small.text-danger").should("exist");
+ cy.get("#field_disambiguatedOrgId").clear().type(id);
+ cy.get("small.text-danger").should("not.exist");
+});
+
+Cypress.Commands.add("programmaticSignin", (username, password) => {
+ cy.getCookie("XSRF-TOKEN").then((csrfCookie) => {
+ if (!csrfCookie) {
+ return cy
+ .visit("/")
+ .getCookie("XSRF-TOKEN")
+ .then(() => cy.programmaticSignin(username, password));
+ } else {
+ cy.log(csrfCookie.value);
+ cy.request({
+ method: "POST",
+ url: "/auth/login",
+ headers: { "X-XSRF-TOKEN": csrfCookie.value },
+ failOnStatusCode: false, // dont fail so we can make assertions
+ body: {
+ username,
+ password,
+ },
+ }).then((r) => {
+ if (r.status != 200) {
+ cy.signin(username, password);
+ }
+ });
+ }
+ });
+});
+
+Cypress.Commands.add("programmaticSignout", () => {
+ cy.getCookie("XSRF-TOKEN").then((csrfCookie) => {
+ cy.log(csrfCookie.value);
+ cy.request({
+ method: "POST",
+ url: "/auth/logout",
+ headers: { "X-XSRF-TOKEN": csrfCookie.value },
+ failOnStatusCode: false, // dont fail so we can make assertions
+ }).then((r) => {
+ cy.log(r);
+ // expect(r.status).to.eq(204);
+ });
+ });
+});
+
+Cypress.Commands.add("processPasswordForm", (newPasswordFieldId) => {
+ cy.get("button")
+ .filter('[type="submit"]')
+ // make sure you can't activate account without providing a password
+ .invoke("attr", "disabled")
+ .should("exist");
+ // type invalid passwords
+ cy.get(newPasswordFieldId).clear().type(credentials.shortPassword);
+ cy.get("#confirmPassword")
+ .clear()
+ .type(credentials.shortConfirmationPassword);
+ // check for min length error messages
+ cy.get("small")
+ .filter(
+ '[jhitranslate="global.messages.validate.newpassword.minlength.string"]',
+ )
+ .should("exist");
+ cy.get("small")
+ .filter(
+ '[jhitranslate="global.messages.validate.confirmpassword.minlength.string"]',
+ )
+ .should("exist");
+ // fix password
+ cy.get(newPasswordFieldId).clear().type(credentials.password);
+ // enter invalid confirmation password
+ cy.get("#confirmPassword")
+ .clear()
+ .type(credentials.wrongConfirmationPasssword);
+ // make sure you can't activate account
+ cy.get("button").filter('[type="submit"]').click();
+ // check for confirmation error message
+ cy.get("div")
+ .filter('[jhitranslate="global.messages.error.dontmatch.string"]')
+ .should("exist");
+ // fix confirmation password
+ cy.get("#confirmPassword").clear().type(credentials.password);
+ // activate account
+ cy.get("button").filter('[type="submit"]').click();
+});
+
+Cypress.Commands.add("visitLinkFromEmail", (email) => {
+ const emailBody = email[0].body.html;
+ assert.isNotNull(emailBody);
+ cy.log(">>>>>>>>>Email body is: " + JSON.stringify(email.body));
+ //convert string to DOM
+ const htmlDom = new DOMParser().parseFromString(emailBody, "text/html");
+ //href points to correct endpoint
+ const href = htmlDom.querySelector(
+ 'a[href*="https://member-portal.qa.orcid.org/reset/finish?key="]',
+ ).href;
+ cy.visit(href);
+});
+
+Cypress.Commands.add("checkInbox", (subject, recipient, date) => {
+ cy.task("checkInbox", {
+ options: {
+ from: data.outbox.email,
+ to: recipient,
+ subject,
+ include_body: true,
+ after: date,
+ },
+ });
+});
+
+Cypress.Commands.add("removeAffiliation", ($e) => {
+ cy.wrap($e).children().last().click();
+ cy.get("#jhi-confirm-delete-msUser").click();
+});
+
+Cypress.Commands.add("changeOrgOwner", () => {
+ cy.visit(`/user/${data.member.users.owner.id}/edit`);
+ cy.get("#field_mainContact").click();
+ cy.get("#save-entity").click();
+ cy.get(".alert-success").should("exist");
+ cy.programmaticSignout();
+});
+
+Cypress.Commands.add("readCsv", (data) => {
+ var lines = data.split("\n");
+ var result = [];
+ var headers = lines[0].split(",");
+ for (var i = 1; i < lines.length; i++) {
+ var obj = {};
+ var currentline = lines[i].split(",");
+
+ for (var j = 0; j < headers.length; j++) {
+ obj[headers[j]] = currentline[j];
+ }
+ result.push(obj);
+ }
+ return result;
+});
+
+Cypress.Commands.add("uploadCsv", (path) => {
+ cy.get("#jh-upload-entities").click();
+ cy.get("#field_filePath").attachFile(path);
+ cy.intercept(
+ "https://member-portal.qa.orcid.org/services/assertionservice/api/assertion/upload",
+ ).as("upload");
+ cy.get("#jhi-confirm-csv-upload").click();
+ // Occasionally, trying to upload the csv results in a 403 code due to an invalid CSRF token, in which case we retry
+ cy.wait("@upload").then((int) => {
+ if (int.response.statusCode !== 200) {
+ cy.get("#jhi-confirm-csv-upload").click();
+ }
+ });
+});
+
+Cypress.Commands.add("fetchLinkAndGrantPermission", (email) => {
+ // get permission link from first affiliation in the list
+ cy.get("tbody")
+ .children()
+ .last()
+ .within(() => {
+ cy.get("a")
+ .filter(
+ '[jhitranslate="gatewayApp.assertionServiceAssertion.details.string"]',
+ )
+ .click();
+ });
+ cy.get(".jh-entity-details").within(() =>
+ cy
+ .get("button")
+ .filter(
+ '[jhitranslate="gatewayApp.assertionServiceAssertion.copyClipboard.string"]',
+ )
+ .click(),
+ );
+ cy.task("getClipboard").then((link) => {
+ cy.visit(link);
+ });
+ // Handle cookies
+ cy.get("#onetrust-reject-all-handler").click();
+ // Grant permission
+ cy.get("#username").clear().type(email);
+ cy.get("#password").type(credentials.password);
+ cy.get("#signin-button").click();
+
+ // *ADD ID
+ cy.get(".mt-5").within(() => {
+ cy.get("h2")
+ .filter('[jhitranslate="landingPage.success.thanks.string"]')
+ .should("exist");
+ });
+});
+
+Cypress.Commands.add("checkAffiliationChanges", (affiliation, value) => {
+ expect(affiliation["department-name"]).to.eq(value);
+ expect(affiliation["role-title"]).to.eq(value);
+ expect(affiliation["organization"]["address"]["city"]).to.eq(value);
+ expect(affiliation["organization"]["name"]).to.eq(value);
+});
+
+/** ******************************************************************************
+ * *******************************************************************************
+ *
+ * SECURITY TESTS
+ *
+ * *******************************************************************************
+ * *******************************************************************************/
+
+/** ****
+ * *****
+ *
+ * USERS
+ *
+ * *****
+ * *****/
+
+Cypress.Commands.add("getUsersBySfId", (salesforceId, code, title) => {
+ cy.log("getUsersBySfId");
+ cy.request({
+ url: `/services/userservice/api/users/salesforce/${salesforceId}`,
+ failOnStatusCode: false,
+ }).then((resp) => {
+ expect(resp.status).to.eq(code);
+ expect(resp.body.title).to.eq(title);
+ });
+});
+
+Cypress.Commands.add("getAllUsers", (code, title) => {
+ cy.log("getAllUsers");
+ cy.request({
+ url: "/services/userservice/api/users/",
+ failOnStatusCode: false,
+ }).then((resp) => {
+ expect(resp.status).to.eq(code);
+ expect(resp.body.title).to.eq(title);
+ });
+});
+
+/** ******
+ * *******
+ *
+ * MEMBERS
+ *
+ * *******
+ * *******/
+
+Cypress.Commands.add("getAllMembers", (code, title) => {
+ cy.log("getAllMembers");
+ cy.request({
+ url: "/services/memberservice/api/members",
+ failOnStatusCode: false,
+ }).then((resp) => {
+ expect(resp.status).to.eq(code);
+ expect(resp.body.title).to.eq(title);
+ });
+});
+
+Cypress.Commands.add(
+ "addMember",
+ (salesforceId, assertionServiceEnabled, isConsortiumLead, code, title) => {
+ cy.log("addMember");
+ cy.getCookie("XSRF-TOKEN").then((csrfCookie) => {
+ cy.request({
+ method: "POST",
+ url: "/services/memberservice/api/members",
+ headers: { "X-XSRF-TOKEN": csrfCookie.value },
+ failOnStatusCode: false,
+ body: {
+ salesforceId,
+ assertionServiceEnabled,
+ isConsortiumLead,
+ },
+ }).then((resp) => {
+ expect(resp.status).to.eq(code);
+ expect(resp.body.title).to.eq(title);
+ });
+ });
+ },
+);
+
+Cypress.Commands.add(
+ "updateMember",
+ (salesforceId, assertionServiceEnabled, isConsortiumLead, code, title) => {
+ cy.log("updateMember");
+ cy.getCookie("XSRF-TOKEN").then((csrfCookie) => {
+ cy.request({
+ method: "PUT",
+ url: "/services/memberservice/api/members",
+ headers: { "X-XSRF-TOKEN": csrfCookie.value },
+ failOnStatusCode: false,
+ body: {
+ salesforceId,
+ assertionServiceEnabled,
+ isConsortiumLead,
+ },
+ }).then((resp) => {
+ expect(resp.status).to.eq(code);
+ expect(resp.body.title).to.eq(title);
+ });
+ });
+ },
+);
+
+Cypress.Commands.add(
+ "validateMember",
+ (salesforceId, assertionServiceEnabled, isConsortiumLead, code, title) => {
+ cy.log("validateMember");
+ cy.getCookie("XSRF-TOKEN").then((csrfCookie) => {
+ cy.request({
+ method: "POST",
+ url: "/services/memberservice/api/members/validate",
+ headers: { "X-XSRF-TOKEN": csrfCookie.value },
+ failOnStatusCode: false,
+ body: {
+ salesforceId,
+ assertionServiceEnabled,
+ isConsortiumLead,
+ },
+ }).then((resp) => {
+ expect(resp.status).to.eq(code);
+ expect(resp.body.title).to.eq(title);
+ });
+ });
+ },
+);
+
+Cypress.Commands.add(
+ "changeNotificationLanguage",
+ (salesforceId, language, code, title) => {
+ cy.log("changeNotificationLanguage");
+ cy.getCookie("XSRF-TOKEN").then((csrfCookie) => {
+ cy.request({
+ method: "POST",
+ url: `/services/memberservice/api/members/${salesforceId}/language/${language}`,
+ headers: { "X-XSRF-TOKEN": csrfCookie.value },
+ failOnStatusCode: false,
+ }).then((resp) => {
+ expect(resp.status).to.eq(code);
+ expect(resp.body.title).to.eq(title);
+ });
+ });
+ },
+);
+
+Cypress.Commands.add("updateContact", (salesforceId, code, title) => {
+ cy.log("updateContact");
+ cy.getCookie("XSRF-TOKEN").then((csrfCookie) => {
+ cy.request({
+ method: "POST",
+ url: `/services/memberservice/api/members/${salesforceId}/contact-update`,
+ headers: { "X-XSRF-TOKEN": csrfCookie.value },
+ failOnStatusCode: false,
+ body: {},
+ }).then((resp) => {
+ expect(resp.status).to.eq(code);
+ expect(resp.statusText).to.eq(title);
+ });
+ });
+});
+
+Cypress.Commands.add(
+ "updateMemberDetails",
+ (salesforceId, publicName, code, title) => {
+ cy.log("updateMemberDetails");
+ cy.getCookie("XSRF-TOKEN").then((csrfCookie) => {
+ cy.request({
+ method: "PUT",
+ url: `/services/memberservice/api/members/${salesforceId}/member-details`,
+ headers: { "X-XSRF-TOKEN": csrfCookie.value },
+ failOnStatusCode: false,
+ body: {
+ publicName,
+ salesforceId,
+ },
+ }).then((resp) => {
+ expect(resp.status).to.eq(code);
+ expect(resp.statusText).to.eq(title);
+ });
+ });
+ },
+);
+
+Cypress.Commands.add("getMemberDetails", (salesforceId, code, title) => {
+ cy.log("getMemberDetails");
+ cy.request({
+ url: `/services/memberservice/api/members/${salesforceId}/member-details`,
+ failOnStatusCode: false,
+ }).then((resp) => {
+ expect(resp.status).to.eq(code);
+ expect(resp.statusText).to.eq(title);
+ });
+});
+
+Cypress.Commands.add("getMemberContacts", (salesforceId, code, title) => {
+ cy.log("getMemberContacts");
+ cy.request({
+ url: `/services/memberservice/api/members/${salesforceId}/member-contacts`,
+ failOnStatusCode: false,
+ }).then((resp) => {
+ expect(resp.status).to.eq(code);
+ expect(resp.statusText).to.eq(title);
+ });
+});
+
+Cypress.Commands.add("getMemberOrgIds", (salesforceId, code, title) => {
+ cy.log("getMemberOrgIds");
+ cy.request({
+ url: `/services/memberservice/api/members/${salesforceId}/member-org-ids`,
+ failOnStatusCode: false,
+ }).then((resp) => {
+ expect(resp.status).to.eq(code);
+ expect(resp.statusText).to.eq(title);
+ });
+});
+
+Cypress.Commands.add("getMembersList", (code, title) => {
+ cy.log("getMemberList");
+ cy.request({
+ url: "/services/memberservice/api/members/list/all",
+ failOnStatusCode: false,
+ }).then((resp) => {
+ expect(resp.status).to.eq(code);
+ expect(resp.body.title).to.eq(title);
+ });
+});
+
+Cypress.Commands.add("getMember", (salesforceId, code, title) => {
+ cy.log("getMember");
+ cy.request({
+ url: `/services/memberservice/api/members/${salesforceId}`,
+ failOnStatusCode: false,
+ }).then((resp) => {
+ expect(resp.status).to.eq(code);
+ expect(resp.body.title).to.eq(title);
+ });
+});
+
+Cypress.Commands.add("deleteMember", (salesforceId, code, title) => {
+ cy.log("deleteMember");
+ cy.getCookie("XSRF-TOKEN").then((csrfCookie) => {
+ cy.request({
+ method: "DELETE",
+ url: `/services/memberservice/api/members/${salesforceId}`,
+ headers: { "X-XSRF-TOKEN": csrfCookie.value },
+ failOnStatusCode: false,
+ }).then((resp) => {
+ expect(resp.status).to.eq(code);
+ expect(resp.body.title).to.eq(title);
+ });
+ });
+});
+
+Cypress.Commands.add("addConsortiumMember", (code, title) => {
+ cy.log("addConsortiumMember");
+ cy.getCookie("XSRF-TOKEN").then((csrfCookie) => {
+ cy.request({
+ method: "POST",
+ url: `/services/memberservice/api/members/add-consortium-member`,
+ headers: { "X-XSRF-TOKEN": csrfCookie.value },
+ failOnStatusCode: false,
+ body: {},
+ }).then((resp) => {
+ expect(resp.status).to.eq(code);
+ expect(resp.body?.title).to.eq(title);
+ });
+ });
+});
+
+Cypress.Commands.add("removeConsortiumMember", (code, title) => {
+ cy.log("removeConsortiumMember");
+ cy.getCookie("XSRF-TOKEN").then((csrfCookie) => {
+ cy.request({
+ method: "POST",
+ url: `/services/memberservice/api/members/remove-consortium-member`,
+ headers: { "X-XSRF-TOKEN": csrfCookie.value },
+ failOnStatusCode: false,
+ body: {},
+ }).then((resp) => {
+ expect(resp.status).to.eq(code);
+ expect(resp.body?.title).to.eq(title);
+ });
+ });
+});
+
+/** *********
+ * **********
+ *
+ * ASSERTIONS
+ *
+ * **********
+ * **********/
+
+Cypress.Commands.add("getAssertions", (code, title) => {
+ cy.log("getAssertions");
+ cy.request({
+ url: "/services/assertionservice/api/assertions",
+ failOnStatusCode: false,
+ }).then((resp) => {
+ expect(resp.status).to.eq(code);
+ expect(resp.body.title).to.eq(title);
+ });
+});
diff --git a/ui/cypress/support/e2e.js b/ui/cypress/support/e2e.js
new file mode 100644
index 000000000..d68db96df
--- /dev/null
+++ b/ui/cypress/support/e2e.js
@@ -0,0 +1,20 @@
+// ***********************************************************
+// This example support/index.js is processed and
+// loaded automatically before your test files.
+//
+// This is a great place to put global configuration and
+// behavior that modifies Cypress.
+//
+// You can change the location of this file or turn off
+// automatically serving support files with the
+// 'supportFile' configuration option.
+//
+// You can read more here:
+// https://on.cypress.io/configuration
+// ***********************************************************
+
+// Import commands.js using ES2015 syntax:
+import './commands'
+
+// Alternatively you can use CommonJS syntax:
+// require('./commands')
diff --git a/ui/package-lock.json b/ui/package-lock.json
index 01cf3ec80..1d91d30d4 100644
--- a/ui/package-lock.json
+++ b/ui/package-lock.json
@@ -22,6 +22,8 @@
"@fortawesome/free-solid-svg-icons": "^6.4.2",
"@ng-bootstrap/ng-bootstrap": "^15.1.1",
"bootstrap": "^5.3.2",
+ "clipboardy": "^2.3.0",
+ "cypress-file-upload": "^5.0.8",
"jsrsasign": "^11.1.0",
"jsrsasign-util": "^1.0.5",
"moment": "^2.29.4",
@@ -47,7 +49,9 @@
"@types/quill": "^1.3.10",
"@typescript-eslint/eslint-plugin": "5.62.0",
"@typescript-eslint/parser": "5.62.0",
+ "cypress": "^13.9.0",
"eslint": "^8.49.0",
+ "gmail-tester": "^1.3.8",
"jasmine-core": "~4.3.0",
"karma": "~6.4.0",
"karma-chrome-launcher": "~3.1.0",
@@ -2618,11 +2622,83 @@
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz",
"integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==",
- "dev": true,
+ "devOptional": true,
"engines": {
"node": ">=0.1.90"
}
},
+ "node_modules/@cypress/request": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/@cypress/request/-/request-3.0.1.tgz",
+ "integrity": "sha512-TWivJlJi8ZDx2wGOw1dbLuHJKUYX7bWySw377nlnGOW3hP9/MUKIsEdXT/YngWxVdgNCHRBmFlBipE+5/2ZZlQ==",
+ "dependencies": {
+ "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",
+ "http-signature": "~1.3.6",
+ "is-typedarray": "~1.0.0",
+ "isstream": "~0.1.2",
+ "json-stringify-safe": "~5.0.1",
+ "mime-types": "~2.1.19",
+ "performance-now": "^2.1.0",
+ "qs": "6.10.4",
+ "safe-buffer": "^5.1.2",
+ "tough-cookie": "^4.1.3",
+ "tunnel-agent": "^0.6.0",
+ "uuid": "^8.3.2"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/@cypress/request/node_modules/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==",
+ "dependencies": {
+ "asynckit": "^0.4.0",
+ "combined-stream": "^1.0.6",
+ "mime-types": "^2.1.12"
+ },
+ "engines": {
+ "node": ">= 0.12"
+ }
+ },
+ "node_modules/@cypress/request/node_modules/qs": {
+ "version": "6.10.4",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.4.tgz",
+ "integrity": "sha512-OQiU+C+Ds5qiH91qh/mg0w+8nwQuLjM4F4M/PbmhDOoYehPh+Fb0bDjtR1sOvy7YKxvj28Y/M0PhP5uVX0kB+g==",
+ "dependencies": {
+ "side-channel": "^1.0.4"
+ },
+ "engines": {
+ "node": ">=0.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/@cypress/xvfb": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/@cypress/xvfb/-/xvfb-1.2.4.tgz",
+ "integrity": "sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q==",
+ "dependencies": {
+ "debug": "^3.1.0",
+ "lodash.once": "^4.1.1"
+ }
+ },
+ "node_modules/@cypress/xvfb/node_modules/debug": {
+ "version": "3.2.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
+ "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+ "dependencies": {
+ "ms": "^2.1.1"
+ }
+ },
"node_modules/@discoveryjs/json-ext": {
"version": "0.5.7",
"resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz",
@@ -4886,7 +4962,7 @@
"version": "18.11.9",
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.9.tgz",
"integrity": "sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg==",
- "dev": true
+ "devOptional": true
},
"node_modules/@types/qs": {
"version": "6.9.8",
@@ -4951,6 +5027,16 @@
"@types/node": "*"
}
},
+ "node_modules/@types/sinonjs__fake-timers": {
+ "version": "8.1.1",
+ "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.1.tgz",
+ "integrity": "sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g=="
+ },
+ "node_modules/@types/sizzle": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.8.tgz",
+ "integrity": "sha512-0vWLNK2D5MT9dg0iOo8GlKguPAU02QjmZitPEsXRuJXU/OGIOt9vT9Fc26wtYuavLxtO45v9PGleoL9Z0k1LHg=="
+ },
"node_modules/@types/sockjs": {
"version": "0.3.34",
"resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.34.tgz",
@@ -4969,6 +5055,15 @@
"@types/node": "*"
}
},
+ "node_modules/@types/yauzl": {
+ "version": "2.10.3",
+ "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz",
+ "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==",
+ "optional": true,
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
"node_modules/@typescript-eslint/eslint-plugin": {
"version": "5.62.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz",
@@ -5633,7 +5728,6 @@
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz",
"integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==",
- "dev": true,
"dependencies": {
"clean-stack": "^2.0.0",
"indent-string": "^4.0.0"
@@ -5691,7 +5785,6 @@
"version": "4.1.3",
"resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz",
"integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==",
- "dev": true,
"engines": {
"node": ">=6"
}
@@ -5700,7 +5793,6 @@
"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,
"dependencies": {
"type-fest": "^0.21.3"
},
@@ -5760,6 +5852,25 @@
"integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==",
"dev": true
},
+ "node_modules/arch": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz",
+ "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ]
+ },
"node_modules/are-we-there-yet": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz",
@@ -5806,17 +5917,56 @@
"node": ">=8"
}
},
+ "node_modules/arrify": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz",
+ "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/asn1": {
+ "version": "0.2.6",
+ "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz",
+ "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==",
+ "dependencies": {
+ "safer-buffer": "~2.1.0"
+ }
+ },
+ "node_modules/assert-plus": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
+ "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==",
+ "engines": {
+ "node": ">=0.8"
+ }
+ },
+ "node_modules/astral-regex": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz",
+ "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/async": {
"version": "3.2.4",
"resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz",
- "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==",
- "dev": true
+ "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ=="
},
"node_modules/asynckit": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
- "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
- "dev": true
+ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
+ },
+ "node_modules/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==",
+ "engines": {
+ "node": ">= 4.0.0"
+ }
},
"node_modules/autoprefixer": {
"version": "10.4.14",
@@ -5851,6 +6001,19 @@
"postcss": "^8.1.0"
}
},
+ "node_modules/aws-sign2": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
+ "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==",
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/aws4": {
+ "version": "1.12.0",
+ "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz",
+ "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg=="
+ },
"node_modules/axios": {
"version": "1.6.3",
"resolved": "https://registry.npmjs.org/axios/-/axios-1.6.3.tgz",
@@ -5976,7 +6139,6 @@
"version": "1.5.1",
"resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
"integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
- "dev": true,
"funding": [
{
"type": "github",
@@ -6007,6 +6169,14 @@
"integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==",
"dev": true
},
+ "node_modules/bcrypt-pbkdf": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
+ "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==",
+ "dependencies": {
+ "tweetnacl": "^0.14.3"
+ }
+ },
"node_modules/big.js": {
"version": "5.2.2",
"resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz",
@@ -6016,6 +6186,15 @@
"node": "*"
}
},
+ "node_modules/bignumber.js": {
+ "version": "9.1.2",
+ "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.2.tgz",
+ "integrity": "sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==",
+ "dev": true,
+ "engines": {
+ "node": "*"
+ }
+ },
"node_modules/binary-extensions": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
@@ -6035,6 +6214,16 @@
"readable-stream": "^3.4.0"
}
},
+ "node_modules/blob-util": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/blob-util/-/blob-util-2.0.2.tgz",
+ "integrity": "sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ=="
+ },
+ "node_modules/bluebird": {
+ "version": "3.7.2",
+ "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz",
+ "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg=="
+ },
"node_modules/body-parser": {
"version": "1.20.2",
"resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz",
@@ -6171,7 +6360,6 @@
"version": "5.7.1",
"resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
"integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
- "dev": true,
"funding": [
{
"type": "github",
@@ -6191,6 +6379,20 @@
"ieee754": "^1.1.13"
}
},
+ "node_modules/buffer-crc32": {
+ "version": "0.2.13",
+ "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
+ "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==",
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/buffer-equal-constant-time": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz",
+ "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==",
+ "dev": true
+ },
"node_modules/buffer-from": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
@@ -6256,6 +6458,14 @@
"node": ">=16 || 14 >=14.17"
}
},
+ "node_modules/cachedir": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-2.4.0.tgz",
+ "integrity": "sha512-9EtFOZR8g22CL7BWjJ9BUx1+A/djkofnyW3aOXZORNW2kxoUpx2h+uN2cOqwPmFhnpVmxg+KW2OjOSgChTEvsQ==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
"node_modules/call-bind": {
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz",
@@ -6311,6 +6521,11 @@
}
]
},
+ "node_modules/caseless": {
+ "version": "0.12.0",
+ "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
+ "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw=="
+ },
"node_modules/chalk": {
"version": "2.4.2",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
@@ -6330,6 +6545,14 @@
"integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==",
"dev": true
},
+ "node_modules/check-more-types": {
+ "version": "2.24.0",
+ "resolved": "https://registry.npmjs.org/check-more-types/-/check-more-types-2.24.0.tgz",
+ "integrity": "sha512-Pj779qHxV2tuapviy1bSZNEL1maXr13bPYpsvSDB68HlYcYuhlDrmGd63i0JHMCLKzc7rUSNIrpdJlhVlNwrxA==",
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
"node_modules/chokidar": {
"version": "3.5.3",
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
@@ -6374,11 +6597,24 @@
"node": ">=6.0"
}
},
+ "node_modules/ci-info": {
+ "version": "3.9.0",
+ "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz",
+ "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/sibiraj-s"
+ }
+ ],
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/clean-stack": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz",
"integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==",
- "dev": true,
"engines": {
"node": ">=6"
}
@@ -6387,7 +6623,6 @@
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz",
"integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==",
- "dev": true,
"dependencies": {
"restore-cursor": "^3.1.0"
},
@@ -6407,6 +6642,35 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/cli-table3": {
+ "version": "0.6.5",
+ "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.5.tgz",
+ "integrity": "sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==",
+ "dependencies": {
+ "string-width": "^4.2.0"
+ },
+ "engines": {
+ "node": "10.* || >= 12.*"
+ },
+ "optionalDependencies": {
+ "@colors/colors": "1.5.0"
+ }
+ },
+ "node_modules/cli-truncate": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz",
+ "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==",
+ "dependencies": {
+ "slice-ansi": "^3.0.0",
+ "string-width": "^4.2.0"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/cli-width": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz",
@@ -6416,6 +6680,116 @@
"node": ">= 10"
}
},
+ "node_modules/clipboardy": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-2.3.0.tgz",
+ "integrity": "sha512-mKhiIL2DrQIsuXMgBgnfEHOZOryC7kY7YO//TN6c63wlEm3NG5tz+YgY5rVi29KCmq/QQjKYvM7a19+MDOTHOQ==",
+ "dependencies": {
+ "arch": "^2.1.1",
+ "execa": "^1.0.0",
+ "is-wsl": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/clipboardy/node_modules/cross-spawn": {
+ "version": "6.0.5",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
+ "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
+ "dependencies": {
+ "nice-try": "^1.0.4",
+ "path-key": "^2.0.1",
+ "semver": "^5.5.0",
+ "shebang-command": "^1.2.0",
+ "which": "^1.2.9"
+ },
+ "engines": {
+ "node": ">=4.8"
+ }
+ },
+ "node_modules/clipboardy/node_modules/execa": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz",
+ "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==",
+ "dependencies": {
+ "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"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/clipboardy/node_modules/get-stream": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
+ "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
+ "dependencies": {
+ "pump": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/clipboardy/node_modules/is-stream": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
+ "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/clipboardy/node_modules/npm-run-path": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
+ "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==",
+ "dependencies": {
+ "path-key": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/clipboardy/node_modules/path-key": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
+ "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/clipboardy/node_modules/semver": {
+ "version": "5.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
+ "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
+ "bin": {
+ "semver": "bin/semver"
+ }
+ },
+ "node_modules/clipboardy/node_modules/shebang-command": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
+ "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==",
+ "dependencies": {
+ "shebang-regex": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/clipboardy/node_modules/shebang-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
+ "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/cliui": {
"version": "7.0.4",
"resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
@@ -6475,14 +6849,12 @@
"node_modules/colorette": {
"version": "2.0.20",
"resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz",
- "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==",
- "dev": true
+ "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w=="
},
"node_modules/combined-stream": {
"version": "1.0.8",
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
"integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
- "dev": true,
"dependencies": {
"delayed-stream": "~1.0.0"
},
@@ -6502,6 +6874,14 @@
"integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==",
"dev": true
},
+ "node_modules/common-tags": {
+ "version": "1.8.2",
+ "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz",
+ "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==",
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
"node_modules/compressible": {
"version": "2.0.18",
"resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz",
@@ -6867,7 +7247,6 @@
"version": "7.0.3",
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
"integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
- "dev": true,
"dependencies": {
"path-key": "^3.1.0",
"shebang-command": "^2.0.0",
@@ -6881,7 +7260,6 @@
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
"integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
- "dev": true,
"dependencies": {
"isexe": "^2.0.0"
},
@@ -6988,31 +7366,290 @@
"integrity": "sha512-GAj5FOq0Hd+RsCGVJxZuKaIDXDf3h6GQoNEjFgbLLI/trgtavwUbSnZ5pVfg27DVCaWjIohryS0JFwIJyT2cMg==",
"dev": true
},
- "node_modules/data-urls": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz",
- "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==",
- "dev": true,
+ "node_modules/cypress": {
+ "version": "13.9.0",
+ "resolved": "https://registry.npmjs.org/cypress/-/cypress-13.9.0.tgz",
+ "integrity": "sha512-atNjmYfHsvTuCaxTxLZr9xGoHz53LLui3266WWxXJHY7+N6OdwJdg/feEa3T+buez9dmUXHT1izCOklqG82uCQ==",
+ "hasInstallScript": true,
"dependencies": {
- "abab": "^2.0.3",
- "whatwg-mimetype": "^2.3.0",
- "whatwg-url": "^8.0.0"
+ "@cypress/request": "^3.0.0",
+ "@cypress/xvfb": "^1.2.4",
+ "@types/sinonjs__fake-timers": "8.1.1",
+ "@types/sizzle": "^2.3.2",
+ "arch": "^2.2.0",
+ "blob-util": "^2.0.2",
+ "bluebird": "^3.7.2",
+ "buffer": "^5.7.1",
+ "cachedir": "^2.3.0",
+ "chalk": "^4.1.0",
+ "check-more-types": "^2.24.0",
+ "cli-cursor": "^3.1.0",
+ "cli-table3": "~0.6.1",
+ "commander": "^6.2.1",
+ "common-tags": "^1.8.0",
+ "dayjs": "^1.10.4",
+ "debug": "^4.3.4",
+ "enquirer": "^2.3.6",
+ "eventemitter2": "6.4.7",
+ "execa": "4.1.0",
+ "executable": "^4.1.1",
+ "extract-zip": "2.0.1",
+ "figures": "^3.2.0",
+ "fs-extra": "^9.1.0",
+ "getos": "^3.2.1",
+ "is-ci": "^3.0.1",
+ "is-installed-globally": "~0.4.0",
+ "lazy-ass": "^1.6.0",
+ "listr2": "^3.8.3",
+ "lodash": "^4.17.21",
+ "log-symbols": "^4.0.0",
+ "minimist": "^1.2.8",
+ "ospath": "^1.2.2",
+ "pretty-bytes": "^5.6.0",
+ "process": "^0.11.10",
+ "proxy-from-env": "1.0.0",
+ "request-progress": "^3.0.0",
+ "semver": "^7.5.3",
+ "supports-color": "^8.1.1",
+ "tmp": "~0.2.1",
+ "untildify": "^4.0.0",
+ "yauzl": "^2.10.0"
+ },
+ "bin": {
+ "cypress": "bin/cypress"
},
"engines": {
- "node": ">=10"
+ "node": "^16.0.0 || ^18.0.0 || >=20.0.0"
}
},
- "node_modules/date-format": {
- "version": "4.0.14",
- "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.14.tgz",
- "integrity": "sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg==",
- "dev": true,
+ "node_modules/cypress-file-upload": {
+ "version": "5.0.8",
+ "resolved": "https://registry.npmjs.org/cypress-file-upload/-/cypress-file-upload-5.0.8.tgz",
+ "integrity": "sha512-+8VzNabRk3zG6x8f8BWArF/xA/W0VK4IZNx3MV0jFWrJS/qKn8eHfa5nU73P9fOQAgwHFJx7zjg4lwOnljMO8g==",
"engines": {
- "node": ">=4.0"
+ "node": ">=8.2.1"
+ },
+ "peerDependencies": {
+ "cypress": ">3.0.0"
}
},
- "node_modules/debug": {
- "version": "4.3.4",
+ "node_modules/cypress/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/cypress/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/cypress/node_modules/chalk/node_modules/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==",
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/cypress/node_modules/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==",
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/cypress/node_modules/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=="
+ },
+ "node_modules/cypress/node_modules/commander": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz",
+ "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==",
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/cypress/node_modules/execa": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz",
+ "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==",
+ "dependencies": {
+ "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"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/execa?sponsor=1"
+ }
+ },
+ "node_modules/cypress/node_modules/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==",
+ "dependencies": {
+ "at-least-node": "^1.0.0",
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/cypress/node_modules/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==",
+ "dependencies": {
+ "pump": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/cypress/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/cypress/node_modules/human-signals": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz",
+ "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==",
+ "engines": {
+ "node": ">=8.12.0"
+ }
+ },
+ "node_modules/cypress/node_modules/jsonfile": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
+ "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
+ "dependencies": {
+ "universalify": "^2.0.0"
+ },
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "node_modules/cypress/node_modules/proxy-from-env": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.0.0.tgz",
+ "integrity": "sha512-F2JHgJQ1iqwnHDcQjVBsq3n/uoaFL+iPW/eAeL7kVxy/2RrWaN4WroKjjvbsoRtv0ftelNyC01bjRhn/bhcf4A=="
+ },
+ "node_modules/cypress/node_modules/supports-color": {
+ "version": "8.1.1",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
+ "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/supports-color?sponsor=1"
+ }
+ },
+ "node_modules/cypress/node_modules/tmp": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.3.tgz",
+ "integrity": "sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==",
+ "engines": {
+ "node": ">=14.14"
+ }
+ },
+ "node_modules/cypress/node_modules/universalify": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
+ "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
+ "engines": {
+ "node": ">= 10.0.0"
+ }
+ },
+ "node_modules/dashdash": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
+ "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==",
+ "dependencies": {
+ "assert-plus": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/data-urls": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz",
+ "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==",
+ "dev": true,
+ "dependencies": {
+ "abab": "^2.0.3",
+ "whatwg-mimetype": "^2.3.0",
+ "whatwg-url": "^8.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/date-format": {
+ "version": "4.0.14",
+ "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.14.tgz",
+ "integrity": "sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg==",
+ "dev": true,
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/dayjs": {
+ "version": "1.11.11",
+ "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.11.tgz",
+ "integrity": "sha512-okzr3f11N6WuqYtZSvm+F776mB41wRZMhKP+hc34YdW+KmtYYK9iqvHSwo2k9FEH3fhGXvOPV6yz2IcSrfRUDg=="
+ },
+ "node_modules/debug": {
+ "version": "4.3.4",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
"integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
"dependencies": {
@@ -7129,7 +7766,6 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
"integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
- "dev": true,
"engines": {
"node": ">=0.4.0"
}
@@ -7331,6 +7967,24 @@
"integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==",
"dev": true
},
+ "node_modules/ecc-jsbn": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
+ "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==",
+ "dependencies": {
+ "jsbn": "~0.1.0",
+ "safer-buffer": "^2.1.0"
+ }
+ },
+ "node_modules/ecdsa-sig-formatter": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz",
+ "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==",
+ "dev": true,
+ "dependencies": {
+ "safe-buffer": "^5.0.1"
+ }
+ },
"node_modules/ee-first": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
@@ -7407,7 +8061,6 @@
"version": "1.4.4",
"resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
"integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
- "dev": true,
"dependencies": {
"once": "^1.4.0"
}
@@ -7459,7 +8112,6 @@
"version": "2.3.6",
"resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz",
"integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==",
- "dev": true,
"dependencies": {
"ansi-colors": "^4.1.1"
},
@@ -8124,6 +8776,11 @@
"integrity": "sha512-39F7TBIV0G7gTelxwbEqnwhp90eqCPON1k0NwNfwhgKn4Co4ybUbj2pECcXT0B3ztRKZ7Pw1JujUUgmQJHcVAQ==",
"dev": true
},
+ "node_modules/eventemitter2": {
+ "version": "6.4.7",
+ "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.7.tgz",
+ "integrity": "sha512-tYUSVOGeQPKt/eC1ABfhHy5Xd96N3oIijJvN3O9+TsC28T5V9yX9oEfEK5faP0EFSNVOG97qtAS68GBrQB2hDg=="
+ },
"node_modules/eventemitter3": {
"version": "4.0.7",
"resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz",
@@ -8162,6 +8819,25 @@
"url": "https://github.com/sindresorhus/execa?sponsor=1"
}
},
+ "node_modules/executable": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/executable/-/executable-4.1.1.tgz",
+ "integrity": "sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==",
+ "dependencies": {
+ "pify": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/executable/node_modules/pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/exponential-backoff": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.1.tgz",
@@ -8286,6 +8962,47 @@
"node": ">=4"
}
},
+ "node_modules/extract-zip": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz",
+ "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==",
+ "dependencies": {
+ "debug": "^4.1.1",
+ "get-stream": "^5.1.0",
+ "yauzl": "^2.10.0"
+ },
+ "bin": {
+ "extract-zip": "cli.js"
+ },
+ "engines": {
+ "node": ">= 10.17.0"
+ },
+ "optionalDependencies": {
+ "@types/yauzl": "^2.9.1"
+ }
+ },
+ "node_modules/extract-zip/node_modules/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==",
+ "dependencies": {
+ "pump": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/extsprintf": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
+ "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==",
+ "engines": [
+ "node >=0.6.0"
+ ]
+ },
"node_modules/fast-deep-equal": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
@@ -8326,6 +9043,12 @@
"integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
"dev": true
},
+ "node_modules/fast-text-encoding": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/fast-text-encoding/-/fast-text-encoding-1.0.6.tgz",
+ "integrity": "sha512-VhXlQgj9ioXCqGstD37E/HBeqEGV/qOD/kmbVG8h5xKBYvM1L3lR1Zn4555cQ8GkYbJa8aJSipLPndE1k6zK2w==",
+ "dev": true
+ },
"node_modules/fastq": {
"version": "1.13.0",
"resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz",
@@ -8346,11 +9069,18 @@
"node": ">=0.8.0"
}
},
+ "node_modules/fd-slicer": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz",
+ "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==",
+ "dependencies": {
+ "pend": "~1.2.0"
+ }
+ },
"node_modules/figures": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz",
"integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==",
- "dev": true,
"dependencies": {
"escape-string-regexp": "^1.0.5"
},
@@ -8556,6 +9286,14 @@
"url": "https://github.com/sponsors/isaacs"
}
},
+ "node_modules/forever-agent": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
+ "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==",
+ "engines": {
+ "node": "*"
+ }
+ },
"node_modules/form-data": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz",
@@ -8703,6 +9441,34 @@
"node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
+ "node_modules/gaxios": {
+ "version": "5.1.3",
+ "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-5.1.3.tgz",
+ "integrity": "sha512-95hVgBRgEIRQQQHIbnxBXeHbW4TqFk4ZDJW7wmVtvYar72FdhRIo1UGOLS2eRAKCPEdPBWu+M7+A33D9CdX9rA==",
+ "dev": true,
+ "dependencies": {
+ "extend": "^3.0.2",
+ "https-proxy-agent": "^5.0.0",
+ "is-stream": "^2.0.0",
+ "node-fetch": "^2.6.9"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/gcp-metadata": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-5.3.0.tgz",
+ "integrity": "sha512-FNTkdNEnBdlqF2oatizolQqNANMrcqJt6AAYt99B3y1aLLC8Hc5IOBb+ZnnzllodEEf6xMBp6wRcBbc16fa65w==",
+ "dev": true,
+ "dependencies": {
+ "gaxios": "^5.0.0",
+ "json-bigint": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
"node_modules/gensync": {
"version": "1.0.0-beta.2",
"resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
@@ -8758,6 +9524,22 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/getos": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/getos/-/getos-3.2.1.tgz",
+ "integrity": "sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q==",
+ "dependencies": {
+ "async": "^3.2.0"
+ }
+ },
+ "node_modules/getpass": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
+ "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==",
+ "dependencies": {
+ "assert-plus": "^1.0.0"
+ }
+ },
"node_modules/glob": {
"version": "10.3.10",
"resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz",
@@ -8797,6 +9579,28 @@
"integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==",
"dev": true
},
+ "node_modules/global-dirs": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz",
+ "integrity": "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==",
+ "dependencies": {
+ "ini": "2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/global-dirs/node_modules/ini": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz",
+ "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==",
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/globals": {
"version": "11.12.0",
"resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
@@ -8824,6 +9628,107 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/gmail-tester": {
+ "version": "1.3.8",
+ "resolved": "https://registry.npmjs.org/gmail-tester/-/gmail-tester-1.3.8.tgz",
+ "integrity": "sha512-7k1zihQ611RXzzHjmfZjCUCdL8p1cv5iQCAJ9ZPKlOa8mWSPB0x1pu50ZlXJN4OfIA3lSA6iFfZ4Ybbxh8K+2w==",
+ "dev": true,
+ "dependencies": {
+ "googleapis": "^109.0.1",
+ "open": "^8.4.0",
+ "server-destroy": "^1.0.1"
+ }
+ },
+ "node_modules/google-auth-library": {
+ "version": "8.9.0",
+ "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-8.9.0.tgz",
+ "integrity": "sha512-f7aQCJODJFmYWN6PeNKzgvy9LI2tYmXnzpNDHEjG5sDNPgGb2FXQyTBnXeSH+PAtpKESFD+LmHw3Ox3mN7e1Fg==",
+ "dev": true,
+ "dependencies": {
+ "arrify": "^2.0.0",
+ "base64-js": "^1.3.0",
+ "ecdsa-sig-formatter": "^1.0.11",
+ "fast-text-encoding": "^1.0.0",
+ "gaxios": "^5.0.0",
+ "gcp-metadata": "^5.3.0",
+ "gtoken": "^6.1.0",
+ "jws": "^4.0.0",
+ "lru-cache": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/google-auth-library/node_modules/lru-cache": {
+ "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,
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/google-p12-pem": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-4.0.1.tgz",
+ "integrity": "sha512-WPkN4yGtz05WZ5EhtlxNDWPhC4JIic6G8ePitwUWy4l+XPVYec+a0j0Ts47PDtW59y3RwAhUd9/h9ZZ63px6RQ==",
+ "dev": true,
+ "dependencies": {
+ "node-forge": "^1.3.1"
+ },
+ "bin": {
+ "gp12-pem": "build/src/bin/gp12-pem.js"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ }
+ },
+ "node_modules/googleapis": {
+ "version": "109.0.1",
+ "resolved": "https://registry.npmjs.org/googleapis/-/googleapis-109.0.1.tgz",
+ "integrity": "sha512-x286OtNu0ngzxfGz2XgRs4aMhrwutRCkCE12dh2M1jIZOpOndB7ELFXEhmtxaJ7z3257flKIbiiCJZeBO+ze/Q==",
+ "dev": true,
+ "dependencies": {
+ "google-auth-library": "^8.0.2",
+ "googleapis-common": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ }
+ },
+ "node_modules/googleapis-common": {
+ "version": "6.0.4",
+ "resolved": "https://registry.npmjs.org/googleapis-common/-/googleapis-common-6.0.4.tgz",
+ "integrity": "sha512-m4ErxGE8unR1z0VajT6AYk3s6a9gIMM6EkDZfkPnES8joeOlEtFEJeF8IyZkb0tjPXkktUfYrE4b3Li1DNyOwA==",
+ "dev": true,
+ "dependencies": {
+ "extend": "^3.0.2",
+ "gaxios": "^5.0.1",
+ "google-auth-library": "^8.0.2",
+ "qs": "^6.7.0",
+ "url-template": "^2.0.8",
+ "uuid": "^9.0.0"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ }
+ },
+ "node_modules/googleapis-common/node_modules/uuid": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz",
+ "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==",
+ "dev": true,
+ "funding": [
+ "https://github.com/sponsors/broofa",
+ "https://github.com/sponsors/ctavan"
+ ],
+ "bin": {
+ "uuid": "dist/bin/uuid"
+ }
+ },
"node_modules/gopd": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
@@ -8838,8 +9743,7 @@
"node_modules/graceful-fs": {
"version": "4.2.10",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz",
- "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==",
- "dev": true
+ "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA=="
},
"node_modules/graphemer": {
"version": "1.4.0",
@@ -8847,6 +9751,20 @@
"integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==",
"dev": true
},
+ "node_modules/gtoken": {
+ "version": "6.1.2",
+ "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-6.1.2.tgz",
+ "integrity": "sha512-4ccGpzz7YAr7lxrT2neugmXQ3hP9ho2gcaityLVkiUecAiwiy60Ii8gRbZeOsXV19fYaRjgBSshs8kXw+NKCPQ==",
+ "dev": true,
+ "dependencies": {
+ "gaxios": "^5.0.1",
+ "google-p12-pem": "^4.0.0",
+ "jws": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ }
+ },
"node_modules/guess-parser": {
"version": "0.4.22",
"resolved": "https://registry.npmjs.org/guess-parser/-/guess-parser-0.4.22.tgz",
@@ -9178,6 +10096,19 @@
}
}
},
+ "node_modules/http-signature": {
+ "version": "1.3.6",
+ "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.3.6.tgz",
+ "integrity": "sha512-3adrsD6zqo4GsTqtO7FyrejHNv+NgiIfAfv68+jVlFmSr9OGy7zrxONceFRLKvnnZA5jbxQBX1u9PpB6Wi32Gw==",
+ "dependencies": {
+ "assert-plus": "^1.0.0",
+ "jsprim": "^2.0.2",
+ "sshpk": "^1.14.1"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
"node_modules/https-proxy-agent": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
@@ -9237,7 +10168,6 @@
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
"integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
- "dev": true,
"funding": [
{
"type": "github",
@@ -9331,7 +10261,6 @@
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz",
"integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==",
- "dev": true,
"engines": {
"node": ">=8"
}
@@ -9505,6 +10434,17 @@
"node": ">=8"
}
},
+ "node_modules/is-ci": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz",
+ "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==",
+ "dependencies": {
+ "ci-info": "^3.2.0"
+ },
+ "bin": {
+ "is-ci": "bin.js"
+ }
+ },
"node_modules/is-core-module": {
"version": "2.13.0",
"resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz",
@@ -9536,7 +10476,6 @@
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz",
"integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==",
- "dev": true,
"bin": {
"is-docker": "cli.js"
},
@@ -9574,6 +10513,21 @@
"node": ">=0.10.0"
}
},
+ "node_modules/is-installed-globally": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz",
+ "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==",
+ "dependencies": {
+ "global-dirs": "^3.0.0",
+ "is-path-inside": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/is-interactive": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz",
@@ -9601,7 +10555,6 @@
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz",
"integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
- "dev": true,
"engines": {
"node": ">=8"
}
@@ -9656,7 +10609,6 @@
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
"integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
- "dev": true,
"engines": {
"node": ">=8"
},
@@ -9664,11 +10616,15 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/is-typedarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
+ "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA=="
+ },
"node_modules/is-unicode-supported": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz",
"integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==",
- "dev": true,
"engines": {
"node": ">=10"
},
@@ -9686,7 +10642,6 @@
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz",
"integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==",
- "dev": true,
"dependencies": {
"is-docker": "^2.0.0"
},
@@ -9715,8 +10670,7 @@
"node_modules/isexe": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
- "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
- "dev": true
+ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="
},
"node_modules/isobject": {
"version": "3.0.1",
@@ -9727,6 +10681,11 @@
"node": ">=0.10.0"
}
},
+ "node_modules/isstream": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
+ "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g=="
+ },
"node_modules/istanbul-lib-coverage": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz",
@@ -10031,6 +10990,11 @@
"js-yaml": "bin/js-yaml.js"
}
},
+ "node_modules/jsbn": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
+ "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg=="
+ },
"node_modules/jsdom": {
"version": "16.7.0",
"resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz",
@@ -10109,6 +11073,15 @@
"node": ">=4"
}
},
+ "node_modules/json-bigint": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-1.0.0.tgz",
+ "integrity": "sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==",
+ "dev": true,
+ "dependencies": {
+ "bignumber.js": "^9.0.0"
+ }
+ },
"node_modules/json-buffer": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
@@ -10121,6 +11094,11 @@
"integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
"dev": true
},
+ "node_modules/json-schema": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz",
+ "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA=="
+ },
"node_modules/json-schema-traverse": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
@@ -10133,6 +11111,11 @@
"integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
"dev": true
},
+ "node_modules/json-stringify-safe": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
+ "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA=="
+ },
"node_modules/json5": {
"version": "2.2.3",
"resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
@@ -10167,6 +11150,20 @@
"node >= 0.2.0"
]
},
+ "node_modules/jsprim": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-2.0.2.tgz",
+ "integrity": "sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ==",
+ "engines": [
+ "node >=0.6.0"
+ ],
+ "dependencies": {
+ "assert-plus": "1.0.0",
+ "extsprintf": "1.3.0",
+ "json-schema": "0.4.0",
+ "verror": "1.10.0"
+ }
+ },
"node_modules/jsrsasign": {
"version": "11.1.0",
"resolved": "https://registry.npmjs.org/jsrsasign/-/jsrsasign-11.1.0.tgz",
@@ -10184,6 +11181,27 @@
"jsrsasign": ">= 4.8.2"
}
},
+ "node_modules/jwa": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz",
+ "integrity": "sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==",
+ "dev": true,
+ "dependencies": {
+ "buffer-equal-constant-time": "1.0.1",
+ "ecdsa-sig-formatter": "1.0.11",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "node_modules/jws": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz",
+ "integrity": "sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==",
+ "dev": true,
+ "dependencies": {
+ "jwa": "^2.0.0",
+ "safe-buffer": "^5.0.1"
+ }
+ },
"node_modules/karma": {
"version": "6.4.1",
"resolved": "https://registry.npmjs.org/karma/-/karma-6.4.1.tgz",
@@ -10444,6 +11462,14 @@
"shell-quote": "^1.8.1"
}
},
+ "node_modules/lazy-ass": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/lazy-ass/-/lazy-ass-1.6.0.tgz",
+ "integrity": "sha512-cc8oEVoctTvsFZ/Oje/kGnHbpWHYBe8IAJe4C0QNc3t8uM/0Y8+erSz/7Y1ALuXTEZTMvxXwO6YbX1ey3ujiZw==",
+ "engines": {
+ "node": "> 0.8"
+ }
+ },
"node_modules/less": {
"version": "4.1.3",
"resolved": "https://registry.npmjs.org/less/-/less-4.1.3.tgz",
@@ -10573,6 +11599,32 @@
"integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
"dev": true
},
+ "node_modules/listr2": {
+ "version": "3.14.0",
+ "resolved": "https://registry.npmjs.org/listr2/-/listr2-3.14.0.tgz",
+ "integrity": "sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g==",
+ "dependencies": {
+ "cli-truncate": "^2.1.0",
+ "colorette": "^2.0.16",
+ "log-update": "^4.0.0",
+ "p-map": "^4.0.0",
+ "rfdc": "^1.3.0",
+ "rxjs": "^7.5.1",
+ "through": "^2.3.8",
+ "wrap-ansi": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=10.0.0"
+ },
+ "peerDependencies": {
+ "enquirer": ">= 2.3.0 < 3"
+ },
+ "peerDependenciesMeta": {
+ "enquirer": {
+ "optional": true
+ }
+ }
+ },
"node_modules/loader-runner": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz",
@@ -10606,8 +11658,7 @@
"node_modules/lodash": {
"version": "4.17.21",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
- "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
- "dev": true
+ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
},
"node_modules/lodash.debounce": {
"version": "4.0.8",
@@ -10621,11 +11672,15 @@
"integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
"dev": true
},
+ "node_modules/lodash.once": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz",
+ "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg=="
+ },
"node_modules/log-symbols": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz",
"integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==",
- "dev": true,
"dependencies": {
"chalk": "^4.1.0",
"is-unicode-supported": "^0.1.0"
@@ -10641,7 +11696,6 @@
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
"dependencies": {
"color-convert": "^2.0.1"
},
@@ -10656,7 +11710,6 @@
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
- "dev": true,
"dependencies": {
"ansi-styles": "^4.1.0",
"supports-color": "^7.1.0"
@@ -10672,7 +11725,6 @@
"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,
"dependencies": {
"color-name": "~1.1.4"
},
@@ -10683,14 +11735,12 @@
"node_modules/log-symbols/node_modules/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
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
},
"node_modules/log-symbols/node_modules/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,
"engines": {
"node": ">=8"
}
@@ -10699,9 +11749,84 @@
"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,
"dependencies": {
- "has-flag": "^4.0.0"
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/log-update": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz",
+ "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==",
+ "dependencies": {
+ "ansi-escapes": "^4.3.0",
+ "cli-cursor": "^3.1.0",
+ "slice-ansi": "^4.0.0",
+ "wrap-ansi": "^6.2.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/log-update/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/log-update/node_modules/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==",
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/log-update/node_modules/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=="
+ },
+ "node_modules/log-update/node_modules/slice-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz",
+ "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==",
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "astral-regex": "^2.0.0",
+ "is-fullwidth-code-point": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/slice-ansi?sponsor=1"
+ }
+ },
+ "node_modules/log-update/node_modules/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==",
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
},
"engines": {
"node": ">=8"
@@ -10866,8 +11991,7 @@
"node_modules/merge-stream": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
- "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
- "dev": true
+ "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w=="
},
"node_modules/merge2": {
"version": "1.4.1",
@@ -10914,7 +12038,6 @@
"version": "1.52.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
"integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
- "dev": true,
"engines": {
"node": ">= 0.6"
}
@@ -10923,7 +12046,6 @@
"version": "2.1.35",
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
"integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
- "dev": true,
"dependencies": {
"mime-db": "1.52.0"
},
@@ -10935,7 +12057,6 @@
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
"integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
- "dev": true,
"engines": {
"node": ">=6"
}
@@ -10981,10 +12102,9 @@
}
},
"node_modules/minimist": {
- "version": "1.2.7",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz",
- "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==",
- "dev": true,
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
+ "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
@@ -11459,12 +12579,59 @@
"node-gyp-build": "^4.2.2"
}
},
+ "node_modules/nice-try": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
+ "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ=="
+ },
"node_modules/node-addon-api": {
"version": "3.2.1",
"resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz",
"integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==",
"dev": true
},
+ "node_modules/node-fetch": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz",
+ "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==",
+ "dev": true,
+ "dependencies": {
+ "whatwg-url": "^5.0.0"
+ },
+ "engines": {
+ "node": "4.x || >=6.0.0"
+ },
+ "peerDependencies": {
+ "encoding": "^0.1.0"
+ },
+ "peerDependenciesMeta": {
+ "encoding": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/node-fetch/node_modules/tr46": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
+ "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==",
+ "dev": true
+ },
+ "node_modules/node-fetch/node_modules/webidl-conversions": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
+ "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==",
+ "dev": true
+ },
+ "node_modules/node-fetch/node_modules/whatwg-url": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
+ "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
+ "dev": true,
+ "dependencies": {
+ "tr46": "~0.0.3",
+ "webidl-conversions": "^3.0.0"
+ }
+ },
"node_modules/node-forge": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz",
@@ -11716,7 +12883,6 @@
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
"integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
- "dev": true,
"dependencies": {
"path-key": "^3.0.0"
},
@@ -12078,7 +13244,6 @@
"version": "1.12.2",
"resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz",
"integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==",
- "dev": true,
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
@@ -12148,7 +13313,6 @@
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
"integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
- "dev": true,
"dependencies": {
"wrappy": "1"
}
@@ -12157,7 +13321,6 @@
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
"integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
- "dev": true,
"dependencies": {
"mimic-fn": "^2.1.0"
},
@@ -12304,6 +13467,19 @@
"node": ">=0.10.0"
}
},
+ "node_modules/ospath": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/ospath/-/ospath-1.2.2.tgz",
+ "integrity": "sha512-o6E5qJV5zkAbIDNhGSIlyOhScKXgQrSRMilfph0clDfM0nEnBOlKlH4sWDmG95BW/CvwNz0vmm7dJVtU2KlMiA=="
+ },
+ "node_modules/p-finally": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
+ "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/p-limit": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
@@ -12335,7 +13511,6 @@
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz",
"integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==",
- "dev": true,
"dependencies": {
"aggregate-error": "^3.0.0"
},
@@ -12546,7 +13721,6 @@
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
"integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
- "dev": true,
"engines": {
"node": ">=8"
}
@@ -12597,6 +13771,16 @@
"node": ">=8"
}
},
+ "node_modules/pend": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
+ "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg=="
+ },
+ "node_modules/performance-now": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
+ "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow=="
+ },
"node_modules/picocolors": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
@@ -12878,7 +14062,6 @@
"version": "5.6.0",
"resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz",
"integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==",
- "dev": true,
"engines": {
"node": ">=6"
},
@@ -12895,6 +14078,14 @@
"node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
+ "node_modules/process": {
+ "version": "0.11.10",
+ "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
+ "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==",
+ "engines": {
+ "node": ">= 0.6.0"
+ }
+ },
"node_modules/process-nextick-args": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
@@ -12958,14 +14149,21 @@
"node_modules/psl": {
"version": "1.9.0",
"resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz",
- "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==",
- "dev": true
+ "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag=="
+ },
+ "node_modules/pump": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
+ "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
+ "dependencies": {
+ "end-of-stream": "^1.1.0",
+ "once": "^1.3.1"
+ }
},
"node_modules/punycode": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
"integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
- "dev": true,
"engines": {
"node": ">=6"
}
@@ -12997,8 +14195,7 @@
"node_modules/querystringify": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz",
- "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==",
- "dev": true
+ "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ=="
},
"node_modules/queue-microtask": {
"version": "1.2.3",
@@ -13266,6 +14463,14 @@
"jsesc": "bin/jsesc"
}
},
+ "node_modules/request-progress": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-3.0.0.tgz",
+ "integrity": "sha512-MnWzEHHaxHO2iWiQuHrUPBi/1WeBf5PkxQqNyNvLl9VAYSdXkP8tQ3pBSeCPD+yw0v0Aq1zosWLz0BdeXpWwZg==",
+ "dependencies": {
+ "throttleit": "^1.0.0"
+ }
+ },
"node_modules/require-directory": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
@@ -13286,8 +14491,7 @@
"node_modules/requires-port": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
- "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==",
- "dev": true
+ "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ=="
},
"node_modules/resolve": {
"version": "1.22.2",
@@ -13358,7 +14562,6 @@
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz",
"integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==",
- "dev": true,
"dependencies": {
"onetime": "^5.1.0",
"signal-exit": "^3.0.2"
@@ -13388,8 +14591,7 @@
"node_modules/rfdc": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz",
- "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==",
- "dev": true
+ "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA=="
},
"node_modules/rimraf": {
"version": "3.0.2",
@@ -13507,7 +14709,6 @@
"version": "5.2.1",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
"integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
- "dev": true,
"funding": [
{
"type": "github",
@@ -13526,8 +14727,7 @@
"node_modules/safer-buffer": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
- "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
- "dev": true
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
},
"node_modules/safevalues": {
"version": "0.3.4",
@@ -13827,6 +15027,12 @@
"node": ">= 0.8.0"
}
},
+ "node_modules/server-destroy": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/server-destroy/-/server-destroy-1.0.1.tgz",
+ "integrity": "sha512-rb+9B5YBIEzYcD6x2VKidaa+cqYBJQKnU4oe4E3ANwRRN56yk/ua1YCJT1n21NTS8w6CcOclAKNP3PhdCXKYtQ==",
+ "dev": true
+ },
"node_modules/set-blocking": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
@@ -13886,7 +15092,6 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
"integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
- "dev": true,
"dependencies": {
"shebang-regex": "^3.0.0"
},
@@ -13898,7 +15103,6 @@
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
"integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
- "dev": true,
"engines": {
"node": ">=8"
}
@@ -13916,7 +15120,6 @@
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
"integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
- "dev": true,
"dependencies": {
"call-bind": "^1.0.0",
"get-intrinsic": "^1.0.2",
@@ -13929,8 +15132,7 @@
"node_modules/signal-exit": {
"version": "3.0.7",
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
- "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
- "dev": true
+ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ=="
},
"node_modules/sigstore": {
"version": "1.9.0",
@@ -13963,6 +15165,49 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/slice-ansi": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz",
+ "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==",
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "astral-regex": "^2.0.0",
+ "is-fullwidth-code-point": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/slice-ansi/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/slice-ansi/node_modules/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==",
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/slice-ansi/node_modules/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=="
+ },
"node_modules/smart-buffer": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz",
@@ -14190,6 +15435,30 @@
"integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==",
"dev": true
},
+ "node_modules/sshpk": {
+ "version": "1.18.0",
+ "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.18.0.tgz",
+ "integrity": "sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==",
+ "dependencies": {
+ "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"
+ },
+ "bin": {
+ "sshpk-conv": "bin/sshpk-conv",
+ "sshpk-sign": "bin/sshpk-sign",
+ "sshpk-verify": "bin/sshpk-verify"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/ssri": {
"version": "10.0.5",
"resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.5.tgz",
@@ -14304,11 +15573,18 @@
"node": ">=4"
}
},
+ "node_modules/strip-eof": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
+ "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/strip-final-newline": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
"integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
- "dev": true,
"engines": {
"node": ">=6"
}
@@ -14609,11 +15885,18 @@
"integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
"dev": true
},
+ "node_modules/throttleit": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.1.tgz",
+ "integrity": "sha512-vDZpf9Chs9mAdfY046mcPt8fg5QSZr37hEH4TXYBnDF+izxgrbRGUAAaBvIk/fJm9aOFCGFd1EsNg5AZCbnQCQ==",
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/through": {
"version": "2.3.8",
"resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
- "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==",
- "dev": true
+ "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg=="
},
"node_modules/thunky": {
"version": "1.1.0",
@@ -14665,7 +15948,6 @@
"version": "4.1.3",
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz",
"integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==",
- "dev": true,
"dependencies": {
"psl": "^1.1.33",
"punycode": "^2.1.1",
@@ -14680,7 +15962,6 @@
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz",
"integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==",
- "dev": true,
"engines": {
"node": ">= 4.0.0"
}
@@ -14760,6 +16041,22 @@
"node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
+ "node_modules/tunnel-agent": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
+ "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==",
+ "dependencies": {
+ "safe-buffer": "^5.0.1"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/tweetnacl": {
+ "version": "0.14.5",
+ "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
+ "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA=="
+ },
"node_modules/type-check": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
@@ -14776,7 +16073,6 @@
"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==",
- "dev": true,
"engines": {
"node": ">=10"
},
@@ -14925,6 +16221,14 @@
"node": ">= 0.8"
}
},
+ "node_modules/untildify": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz",
+ "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/update-browserslist-db": {
"version": "1.0.13",
"resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz",
@@ -14967,12 +16271,17 @@
"version": "1.5.10",
"resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz",
"integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==",
- "dev": true,
"dependencies": {
"querystringify": "^2.1.1",
"requires-port": "^1.0.0"
}
},
+ "node_modules/url-template": {
+ "version": "2.0.8",
+ "resolved": "https://registry.npmjs.org/url-template/-/url-template-2.0.8.tgz",
+ "integrity": "sha512-XdVKMF4SJ0nP/O7XIPB0JwAEuT9lDIYnNsK8yGVe43y0AWoKeJNdv3ZNWh7ksJ6KqQFjOO6ox/VEitLnaVNufw==",
+ "dev": true
+ },
"node_modules/util-deprecate": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
@@ -14992,7 +16301,6 @@
"version": "8.3.2",
"resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
"integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
- "dev": true,
"bin": {
"uuid": "dist/bin/uuid"
}
@@ -15034,6 +16342,24 @@
"node": ">= 0.8"
}
},
+ "node_modules/verror": {
+ "version": "1.10.0",
+ "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
+ "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==",
+ "engines": [
+ "node >=0.6.0"
+ ],
+ "dependencies": {
+ "assert-plus": "^1.0.0",
+ "core-util-is": "1.0.2",
+ "extsprintf": "^1.2.0"
+ }
+ },
+ "node_modules/verror/node_modules/core-util-is": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
+ "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ=="
+ },
"node_modules/vite": {
"version": "4.5.2",
"resolved": "https://registry.npmjs.org/vite/-/vite-4.5.2.tgz",
@@ -15486,7 +16812,6 @@
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
"integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
- "dev": true,
"dependencies": {
"isexe": "^2.0.0"
},
@@ -15609,8 +16934,7 @@
"node_modules/wrappy": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
- "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
- "dev": true
+ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
},
"node_modules/ws": {
"version": "8.11.0",
@@ -15705,6 +17029,15 @@
"node": ">=12"
}
},
+ "node_modules/yauzl": {
+ "version": "2.10.0",
+ "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz",
+ "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==",
+ "dependencies": {
+ "buffer-crc32": "~0.2.3",
+ "fd-slicer": "~1.1.0"
+ }
+ },
"node_modules/yocto-queue": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz",
@@ -17509,7 +18842,71 @@
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz",
"integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==",
- "dev": true
+ "devOptional": true
+ },
+ "@cypress/request": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/@cypress/request/-/request-3.0.1.tgz",
+ "integrity": "sha512-TWivJlJi8ZDx2wGOw1dbLuHJKUYX7bWySw377nlnGOW3hP9/MUKIsEdXT/YngWxVdgNCHRBmFlBipE+5/2ZZlQ==",
+ "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",
+ "http-signature": "~1.3.6",
+ "is-typedarray": "~1.0.0",
+ "isstream": "~0.1.2",
+ "json-stringify-safe": "~5.0.1",
+ "mime-types": "~2.1.19",
+ "performance-now": "^2.1.0",
+ "qs": "6.10.4",
+ "safe-buffer": "^5.1.2",
+ "tough-cookie": "^4.1.3",
+ "tunnel-agent": "^0.6.0",
+ "uuid": "^8.3.2"
+ },
+ "dependencies": {
+ "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"
+ }
+ },
+ "qs": {
+ "version": "6.10.4",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.4.tgz",
+ "integrity": "sha512-OQiU+C+Ds5qiH91qh/mg0w+8nwQuLjM4F4M/PbmhDOoYehPh+Fb0bDjtR1sOvy7YKxvj28Y/M0PhP5uVX0kB+g==",
+ "requires": {
+ "side-channel": "^1.0.4"
+ }
+ }
+ }
+ },
+ "@cypress/xvfb": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/@cypress/xvfb/-/xvfb-1.2.4.tgz",
+ "integrity": "sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q==",
+ "requires": {
+ "debug": "^3.1.0",
+ "lodash.once": "^4.1.1"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "3.2.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
+ "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ }
+ }
},
"@discoveryjs/json-ext": {
"version": "0.5.7",
@@ -19253,7 +20650,7 @@
"version": "18.11.9",
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.9.tgz",
"integrity": "sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg==",
- "dev": true
+ "devOptional": true
},
"@types/qs": {
"version": "6.9.8",
@@ -19318,6 +20715,16 @@
"@types/node": "*"
}
},
+ "@types/sinonjs__fake-timers": {
+ "version": "8.1.1",
+ "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.1.tgz",
+ "integrity": "sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g=="
+ },
+ "@types/sizzle": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.8.tgz",
+ "integrity": "sha512-0vWLNK2D5MT9dg0iOo8GlKguPAU02QjmZitPEsXRuJXU/OGIOt9vT9Fc26wtYuavLxtO45v9PGleoL9Z0k1LHg=="
+ },
"@types/sockjs": {
"version": "0.3.34",
"resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.34.tgz",
@@ -19336,6 +20743,15 @@
"@types/node": "*"
}
},
+ "@types/yauzl": {
+ "version": "2.10.3",
+ "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz",
+ "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==",
+ "optional": true,
+ "requires": {
+ "@types/node": "*"
+ }
+ },
"@typescript-eslint/eslint-plugin": {
"version": "5.62.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz",
@@ -19835,7 +21251,6 @@
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz",
"integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==",
- "dev": true,
"requires": {
"clean-stack": "^2.0.0",
"indent-string": "^4.0.0"
@@ -19874,14 +21289,12 @@
"ansi-colors": {
"version": "4.1.3",
"resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz",
- "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==",
- "dev": true
+ "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw=="
},
"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"
}
@@ -19920,6 +21333,11 @@
"integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==",
"dev": true
},
+ "arch": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz",
+ "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ=="
+ },
"are-we-there-yet": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz",
@@ -19960,17 +21378,44 @@
"integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
"dev": true
},
+ "arrify": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz",
+ "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==",
+ "dev": true
+ },
+ "asn1": {
+ "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"
+ }
+ },
+ "assert-plus": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
+ "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw=="
+ },
+ "astral-regex": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz",
+ "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ=="
+ },
"async": {
"version": "3.2.4",
"resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz",
- "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==",
- "dev": true
+ "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ=="
},
"asynckit": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
- "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
- "dev": true
+ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
+ },
+ "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=="
},
"autoprefixer": {
"version": "10.4.14",
@@ -19986,6 +21431,16 @@
"postcss-value-parser": "^4.2.0"
}
},
+ "aws-sign2": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
+ "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA=="
+ },
+ "aws4": {
+ "version": "1.12.0",
+ "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz",
+ "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg=="
+ },
"axios": {
"version": "1.6.3",
"resolved": "https://registry.npmjs.org/axios/-/axios-1.6.3.tgz",
@@ -20089,8 +21544,7 @@
"base64-js": {
"version": "1.5.1",
"resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
- "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
- "dev": true
+ "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="
},
"base64id": {
"version": "2.0.0",
@@ -20104,12 +21558,26 @@
"integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==",
"dev": true
},
+ "bcrypt-pbkdf": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
+ "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==",
+ "requires": {
+ "tweetnacl": "^0.14.3"
+ }
+ },
"big.js": {
"version": "5.2.2",
"resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz",
"integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==",
"dev": true
},
+ "bignumber.js": {
+ "version": "9.1.2",
+ "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.2.tgz",
+ "integrity": "sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==",
+ "dev": true
+ },
"binary-extensions": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
@@ -20126,6 +21594,16 @@
"readable-stream": "^3.4.0"
}
},
+ "blob-util": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/blob-util/-/blob-util-2.0.2.tgz",
+ "integrity": "sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ=="
+ },
+ "bluebird": {
+ "version": "3.7.2",
+ "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz",
+ "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg=="
+ },
"body-parser": {
"version": "1.20.2",
"resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz",
@@ -20225,12 +21703,22 @@
"version": "5.7.1",
"resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
"integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
- "dev": true,
"requires": {
"base64-js": "^1.3.1",
"ieee754": "^1.1.13"
}
},
+ "buffer-crc32": {
+ "version": "0.2.13",
+ "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
+ "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ=="
+ },
+ "buffer-equal-constant-time": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz",
+ "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==",
+ "dev": true
+ },
"buffer-from": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
@@ -20286,6 +21774,11 @@
}
}
},
+ "cachedir": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-2.4.0.tgz",
+ "integrity": "sha512-9EtFOZR8g22CL7BWjJ9BUx1+A/djkofnyW3aOXZORNW2kxoUpx2h+uN2cOqwPmFhnpVmxg+KW2OjOSgChTEvsQ=="
+ },
"call-bind": {
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz",
@@ -20315,6 +21808,11 @@
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001542.tgz",
"integrity": "sha512-UrtAXVcj1mvPBFQ4sKd38daP8dEcXXr5sQe6QNNinaPd0iA/cxg9/l3VrSdL73jgw5sKyuQ6jNgiKO12W3SsVA=="
},
+ "caseless": {
+ "version": "0.12.0",
+ "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
+ "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw=="
+ },
"chalk": {
"version": "2.4.2",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
@@ -20331,6 +21829,11 @@
"integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==",
"dev": true
},
+ "check-more-types": {
+ "version": "2.24.0",
+ "resolved": "https://registry.npmjs.org/check-more-types/-/check-more-types-2.24.0.tgz",
+ "integrity": "sha512-Pj779qHxV2tuapviy1bSZNEL1maXr13bPYpsvSDB68HlYcYuhlDrmGd63i0JHMCLKzc7rUSNIrpdJlhVlNwrxA=="
+ },
"chokidar": {
"version": "3.5.3",
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
@@ -20358,17 +21861,20 @@
"integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==",
"dev": true
},
+ "ci-info": {
+ "version": "3.9.0",
+ "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz",
+ "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ=="
+ },
"clean-stack": {
"version": "2.2.0",
- "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz",
- "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==",
- "dev": true
+ "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz",
+ "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A=="
},
"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"
}
@@ -20379,12 +21885,112 @@
"integrity": "sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw==",
"dev": true
},
+ "cli-table3": {
+ "version": "0.6.5",
+ "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.5.tgz",
+ "integrity": "sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==",
+ "requires": {
+ "@colors/colors": "1.5.0",
+ "string-width": "^4.2.0"
+ }
+ },
+ "cli-truncate": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz",
+ "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==",
+ "requires": {
+ "slice-ansi": "^3.0.0",
+ "string-width": "^4.2.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
},
+ "clipboardy": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-2.3.0.tgz",
+ "integrity": "sha512-mKhiIL2DrQIsuXMgBgnfEHOZOryC7kY7YO//TN6c63wlEm3NG5tz+YgY5rVi29KCmq/QQjKYvM7a19+MDOTHOQ==",
+ "requires": {
+ "arch": "^2.1.1",
+ "execa": "^1.0.0",
+ "is-wsl": "^2.1.1"
+ },
+ "dependencies": {
+ "cross-spawn": {
+ "version": "6.0.5",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
+ "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
+ "requires": {
+ "nice-try": "^1.0.4",
+ "path-key": "^2.0.1",
+ "semver": "^5.5.0",
+ "shebang-command": "^1.2.0",
+ "which": "^1.2.9"
+ }
+ },
+ "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",
+ "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"
+ }
+ },
+ "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-stream": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
+ "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ=="
+ },
+ "npm-run-path": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
+ "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==",
+ "requires": {
+ "path-key": "^2.0.0"
+ }
+ },
+ "path-key": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
+ "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw=="
+ },
+ "semver": {
+ "version": "5.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
+ "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g=="
+ },
+ "shebang-command": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
+ "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==",
+ "requires": {
+ "shebang-regex": "^1.0.0"
+ }
+ },
+ "shebang-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
+ "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ=="
+ }
+ }
+ },
"cliui": {
"version": "7.0.4",
"resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
@@ -20435,14 +22041,12 @@
"colorette": {
"version": "2.0.20",
"resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz",
- "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==",
- "dev": true
+ "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w=="
},
"combined-stream": {
"version": "1.0.8",
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
"integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
- "dev": true,
"requires": {
"delayed-stream": "~1.0.0"
}
@@ -20459,6 +22063,11 @@
"integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==",
"dev": true
},
+ "common-tags": {
+ "version": "1.8.2",
+ "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz",
+ "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA=="
+ },
"compressible": {
"version": "2.0.18",
"resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz",
@@ -20749,7 +22358,6 @@
"version": "7.0.3",
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
"integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
- "dev": true,
"requires": {
"path-key": "^3.1.0",
"shebang-command": "^2.0.0",
@@ -20760,7 +22368,6 @@
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
"integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
- "dev": true,
"requires": {
"isexe": "^2.0.0"
}
@@ -20837,6 +22444,193 @@
"integrity": "sha512-GAj5FOq0Hd+RsCGVJxZuKaIDXDf3h6GQoNEjFgbLLI/trgtavwUbSnZ5pVfg27DVCaWjIohryS0JFwIJyT2cMg==",
"dev": true
},
+ "cypress": {
+ "version": "13.9.0",
+ "resolved": "https://registry.npmjs.org/cypress/-/cypress-13.9.0.tgz",
+ "integrity": "sha512-atNjmYfHsvTuCaxTxLZr9xGoHz53LLui3266WWxXJHY7+N6OdwJdg/feEa3T+buez9dmUXHT1izCOklqG82uCQ==",
+ "requires": {
+ "@cypress/request": "^3.0.0",
+ "@cypress/xvfb": "^1.2.4",
+ "@types/sinonjs__fake-timers": "8.1.1",
+ "@types/sizzle": "^2.3.2",
+ "arch": "^2.2.0",
+ "blob-util": "^2.0.2",
+ "bluebird": "^3.7.2",
+ "buffer": "^5.7.1",
+ "cachedir": "^2.3.0",
+ "chalk": "^4.1.0",
+ "check-more-types": "^2.24.0",
+ "cli-cursor": "^3.1.0",
+ "cli-table3": "~0.6.1",
+ "commander": "^6.2.1",
+ "common-tags": "^1.8.0",
+ "dayjs": "^1.10.4",
+ "debug": "^4.3.4",
+ "enquirer": "^2.3.6",
+ "eventemitter2": "6.4.7",
+ "execa": "4.1.0",
+ "executable": "^4.1.1",
+ "extract-zip": "2.0.1",
+ "figures": "^3.2.0",
+ "fs-extra": "^9.1.0",
+ "getos": "^3.2.1",
+ "is-ci": "^3.0.1",
+ "is-installed-globally": "~0.4.0",
+ "lazy-ass": "^1.6.0",
+ "listr2": "^3.8.3",
+ "lodash": "^4.17.21",
+ "log-symbols": "^4.0.0",
+ "minimist": "^1.2.8",
+ "ospath": "^1.2.2",
+ "pretty-bytes": "^5.6.0",
+ "process": "^0.11.10",
+ "proxy-from-env": "1.0.0",
+ "request-progress": "^3.0.0",
+ "semver": "^7.5.3",
+ "supports-color": "^8.1.1",
+ "tmp": "~0.2.1",
+ "untildify": "^4.0.0",
+ "yauzl": "^2.10.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==",
+ "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==",
+ "requires": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "dependencies": {
+ "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"
+ }
+ }
+ }
+ },
+ "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=="
+ },
+ "commander": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz",
+ "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA=="
+ },
+ "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",
+ "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"
+ }
+ },
+ "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",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.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"
+ }
+ },
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
+ },
+ "human-signals": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz",
+ "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw=="
+ },
+ "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"
+ }
+ },
+ "proxy-from-env": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.0.0.tgz",
+ "integrity": "sha512-F2JHgJQ1iqwnHDcQjVBsq3n/uoaFL+iPW/eAeL7kVxy/2RrWaN4WroKjjvbsoRtv0ftelNyC01bjRhn/bhcf4A=="
+ },
+ "supports-color": {
+ "version": "8.1.1",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
+ "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
+ "requires": {
+ "has-flag": "^4.0.0"
+ }
+ },
+ "tmp": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.3.tgz",
+ "integrity": "sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w=="
+ },
+ "universalify": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
+ "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw=="
+ }
+ }
+ },
+ "cypress-file-upload": {
+ "version": "5.0.8",
+ "resolved": "https://registry.npmjs.org/cypress-file-upload/-/cypress-file-upload-5.0.8.tgz",
+ "integrity": "sha512-+8VzNabRk3zG6x8f8BWArF/xA/W0VK4IZNx3MV0jFWrJS/qKn8eHfa5nU73P9fOQAgwHFJx7zjg4lwOnljMO8g==",
+ "requires": {}
+ },
+ "dashdash": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
+ "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==",
+ "requires": {
+ "assert-plus": "^1.0.0"
+ }
+ },
"data-urls": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz",
@@ -20854,6 +22648,11 @@
"integrity": "sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg==",
"dev": true
},
+ "dayjs": {
+ "version": "1.11.11",
+ "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.11.tgz",
+ "integrity": "sha512-okzr3f11N6WuqYtZSvm+F776mB41wRZMhKP+hc34YdW+KmtYYK9iqvHSwo2k9FEH3fhGXvOPV6yz2IcSrfRUDg=="
+ },
"debug": {
"version": "4.3.4",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
@@ -20936,8 +22735,7 @@
"delayed-stream": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
- "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
- "dev": true
+ "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ=="
},
"delegates": {
"version": "1.0.0",
@@ -21092,6 +22890,24 @@
"integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==",
"dev": true
},
+ "ecc-jsbn": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
+ "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==",
+ "requires": {
+ "jsbn": "~0.1.0",
+ "safer-buffer": "^2.1.0"
+ }
+ },
+ "ecdsa-sig-formatter": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz",
+ "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "^5.0.1"
+ }
+ },
"ee-first": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
@@ -21155,7 +22971,6 @@
"version": "1.4.4",
"resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
"integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
- "dev": true,
"requires": {
"once": "^1.4.0"
}
@@ -21198,7 +23013,6 @@
"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"
}
@@ -21673,6 +23487,11 @@
"integrity": "sha512-39F7TBIV0G7gTelxwbEqnwhp90eqCPON1k0NwNfwhgKn4Co4ybUbj2pECcXT0B3ztRKZ7Pw1JujUUgmQJHcVAQ==",
"dev": true
},
+ "eventemitter2": {
+ "version": "6.4.7",
+ "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.7.tgz",
+ "integrity": "sha512-tYUSVOGeQPKt/eC1ABfhHy5Xd96N3oIijJvN3O9+TsC28T5V9yX9oEfEK5faP0EFSNVOG97qtAS68GBrQB2hDg=="
+ },
"eventemitter3": {
"version": "4.0.7",
"resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz",
@@ -21702,6 +23521,21 @@
"strip-final-newline": "^2.0.0"
}
},
+ "executable": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/executable/-/executable-4.1.1.tgz",
+ "integrity": "sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==",
+ "requires": {
+ "pify": "^2.2.0"
+ },
+ "dependencies": {
+ "pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog=="
+ }
+ }
+ },
"exponential-backoff": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.1.tgz",
@@ -21813,6 +23647,32 @@
"tmp": "^0.0.33"
}
},
+ "extract-zip": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz",
+ "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==",
+ "requires": {
+ "@types/yauzl": "^2.9.1",
+ "debug": "^4.1.1",
+ "get-stream": "^5.1.0",
+ "yauzl": "^2.10.0"
+ },
+ "dependencies": {
+ "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"
+ }
+ }
+ }
+ },
+ "extsprintf": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
+ "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g=="
+ },
"fast-deep-equal": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
@@ -21850,6 +23710,12 @@
"integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
"dev": true
},
+ "fast-text-encoding": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/fast-text-encoding/-/fast-text-encoding-1.0.6.tgz",
+ "integrity": "sha512-VhXlQgj9ioXCqGstD37E/HBeqEGV/qOD/kmbVG8h5xKBYvM1L3lR1Zn4555cQ8GkYbJa8aJSipLPndE1k6zK2w==",
+ "dev": true
+ },
"fastq": {
"version": "1.13.0",
"resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz",
@@ -21867,11 +23733,18 @@
"websocket-driver": ">=0.5.1"
}
},
+ "fd-slicer": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz",
+ "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==",
+ "requires": {
+ "pend": "~1.2.0"
+ }
+ },
"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"
}
@@ -22021,6 +23894,11 @@
}
}
},
+ "forever-agent": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
+ "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw=="
+ },
"form-data": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz",
@@ -22129,6 +24007,28 @@
"wide-align": "^1.1.5"
}
},
+ "gaxios": {
+ "version": "5.1.3",
+ "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-5.1.3.tgz",
+ "integrity": "sha512-95hVgBRgEIRQQQHIbnxBXeHbW4TqFk4ZDJW7wmVtvYar72FdhRIo1UGOLS2eRAKCPEdPBWu+M7+A33D9CdX9rA==",
+ "dev": true,
+ "requires": {
+ "extend": "^3.0.2",
+ "https-proxy-agent": "^5.0.0",
+ "is-stream": "^2.0.0",
+ "node-fetch": "^2.6.9"
+ }
+ },
+ "gcp-metadata": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-5.3.0.tgz",
+ "integrity": "sha512-FNTkdNEnBdlqF2oatizolQqNANMrcqJt6AAYt99B3y1aLLC8Hc5IOBb+ZnnzllodEEf6xMBp6wRcBbc16fa65w==",
+ "dev": true,
+ "requires": {
+ "gaxios": "^5.0.0",
+ "json-bigint": "^1.0.0"
+ }
+ },
"gensync": {
"version": "1.0.0-beta.2",
"resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
@@ -22163,6 +24063,22 @@
"integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
"dev": true
},
+ "getos": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/getos/-/getos-3.2.1.tgz",
+ "integrity": "sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q==",
+ "requires": {
+ "async": "^3.2.0"
+ }
+ },
+ "getpass": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
+ "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==",
+ "requires": {
+ "assert-plus": "^1.0.0"
+ }
+ },
"glob": {
"version": "10.3.10",
"resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz",
@@ -22190,6 +24106,21 @@
"integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==",
"dev": true
},
+ "global-dirs": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz",
+ "integrity": "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==",
+ "requires": {
+ "ini": "2.0.0"
+ },
+ "dependencies": {
+ "ini": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz",
+ "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA=="
+ }
+ }
+ },
"globals": {
"version": "11.12.0",
"resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
@@ -22208,6 +24139,86 @@
"slash": "^4.0.0"
}
},
+ "gmail-tester": {
+ "version": "1.3.8",
+ "resolved": "https://registry.npmjs.org/gmail-tester/-/gmail-tester-1.3.8.tgz",
+ "integrity": "sha512-7k1zihQ611RXzzHjmfZjCUCdL8p1cv5iQCAJ9ZPKlOa8mWSPB0x1pu50ZlXJN4OfIA3lSA6iFfZ4Ybbxh8K+2w==",
+ "dev": true,
+ "requires": {
+ "googleapis": "^109.0.1",
+ "open": "^8.4.0",
+ "server-destroy": "^1.0.1"
+ }
+ },
+ "google-auth-library": {
+ "version": "8.9.0",
+ "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-8.9.0.tgz",
+ "integrity": "sha512-f7aQCJODJFmYWN6PeNKzgvy9LI2tYmXnzpNDHEjG5sDNPgGb2FXQyTBnXeSH+PAtpKESFD+LmHw3Ox3mN7e1Fg==",
+ "dev": true,
+ "requires": {
+ "arrify": "^2.0.0",
+ "base64-js": "^1.3.0",
+ "ecdsa-sig-formatter": "^1.0.11",
+ "fast-text-encoding": "^1.0.0",
+ "gaxios": "^5.0.0",
+ "gcp-metadata": "^5.3.0",
+ "gtoken": "^6.1.0",
+ "jws": "^4.0.0",
+ "lru-cache": "^6.0.0"
+ },
+ "dependencies": {
+ "lru-cache": {
+ "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"
+ }
+ }
+ }
+ },
+ "google-p12-pem": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-4.0.1.tgz",
+ "integrity": "sha512-WPkN4yGtz05WZ5EhtlxNDWPhC4JIic6G8ePitwUWy4l+XPVYec+a0j0Ts47PDtW59y3RwAhUd9/h9ZZ63px6RQ==",
+ "dev": true,
+ "requires": {
+ "node-forge": "^1.3.1"
+ }
+ },
+ "googleapis": {
+ "version": "109.0.1",
+ "resolved": "https://registry.npmjs.org/googleapis/-/googleapis-109.0.1.tgz",
+ "integrity": "sha512-x286OtNu0ngzxfGz2XgRs4aMhrwutRCkCE12dh2M1jIZOpOndB7ELFXEhmtxaJ7z3257flKIbiiCJZeBO+ze/Q==",
+ "dev": true,
+ "requires": {
+ "google-auth-library": "^8.0.2",
+ "googleapis-common": "^6.0.0"
+ }
+ },
+ "googleapis-common": {
+ "version": "6.0.4",
+ "resolved": "https://registry.npmjs.org/googleapis-common/-/googleapis-common-6.0.4.tgz",
+ "integrity": "sha512-m4ErxGE8unR1z0VajT6AYk3s6a9gIMM6EkDZfkPnES8joeOlEtFEJeF8IyZkb0tjPXkktUfYrE4b3Li1DNyOwA==",
+ "dev": true,
+ "requires": {
+ "extend": "^3.0.2",
+ "gaxios": "^5.0.1",
+ "google-auth-library": "^8.0.2",
+ "qs": "^6.7.0",
+ "url-template": "^2.0.8",
+ "uuid": "^9.0.0"
+ },
+ "dependencies": {
+ "uuid": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz",
+ "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==",
+ "dev": true
+ }
+ }
+ },
"gopd": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
@@ -22219,8 +24230,7 @@
"graceful-fs": {
"version": "4.2.10",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz",
- "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==",
- "dev": true
+ "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA=="
},
"graphemer": {
"version": "1.4.0",
@@ -22228,6 +24238,17 @@
"integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==",
"dev": true
},
+ "gtoken": {
+ "version": "6.1.2",
+ "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-6.1.2.tgz",
+ "integrity": "sha512-4ccGpzz7YAr7lxrT2neugmXQ3hP9ho2gcaityLVkiUecAiwiy60Ii8gRbZeOsXV19fYaRjgBSshs8kXw+NKCPQ==",
+ "dev": true,
+ "requires": {
+ "gaxios": "^5.0.1",
+ "google-p12-pem": "^4.0.0",
+ "jws": "^4.0.0"
+ }
+ },
"guess-parser": {
"version": "0.4.22",
"resolved": "https://registry.npmjs.org/guess-parser/-/guess-parser-0.4.22.tgz",
@@ -22483,6 +24504,16 @@
"micromatch": "^4.0.2"
}
},
+ "http-signature": {
+ "version": "1.3.6",
+ "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.3.6.tgz",
+ "integrity": "sha512-3adrsD6zqo4GsTqtO7FyrejHNv+NgiIfAfv68+jVlFmSr9OGy7zrxONceFRLKvnnZA5jbxQBX1u9PpB6Wi32Gw==",
+ "requires": {
+ "assert-plus": "^1.0.0",
+ "jsprim": "^2.0.2",
+ "sshpk": "^1.14.1"
+ }
+ },
"https-proxy-agent": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
@@ -22527,8 +24558,7 @@
"ieee754": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
- "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
- "dev": true
+ "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA=="
},
"ignore": {
"version": "5.2.4",
@@ -22585,8 +24615,7 @@
"indent-string": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz",
- "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==",
- "dev": true
+ "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg=="
},
"inflight": {
"version": "1.0.6",
@@ -22720,6 +24749,14 @@
"binary-extensions": "^2.0.0"
}
},
+ "is-ci": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz",
+ "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==",
+ "requires": {
+ "ci-info": "^3.2.0"
+ }
+ },
"is-core-module": {
"version": "2.13.0",
"resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz",
@@ -22741,8 +24778,7 @@
"is-docker": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz",
- "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==",
- "dev": true
+ "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ=="
},
"is-extglob": {
"version": "2.1.1",
@@ -22762,6 +24798,15 @@
"is-extglob": "^2.1.1"
}
},
+ "is-installed-globally": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz",
+ "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==",
+ "requires": {
+ "global-dirs": "^3.0.0",
+ "is-path-inside": "^3.0.2"
+ }
+ },
"is-interactive": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz",
@@ -22782,8 +24827,7 @@
"is-path-inside": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz",
- "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
- "dev": true
+ "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ=="
},
"is-plain-obj": {
"version": "3.0.0",
@@ -22819,14 +24863,17 @@
"is-stream": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
- "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
- "dev": true
+ "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg=="
+ },
+ "is-typedarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
+ "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA=="
},
"is-unicode-supported": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz",
- "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==",
- "dev": true
+ "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw=="
},
"is-what": {
"version": "3.14.1",
@@ -22838,7 +24885,6 @@
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz",
"integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==",
- "dev": true,
"requires": {
"is-docker": "^2.0.0"
}
@@ -22858,8 +24904,7 @@
"isexe": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
- "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
- "dev": true
+ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="
},
"isobject": {
"version": "3.0.1",
@@ -22867,6 +24912,11 @@
"integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",
"dev": true
},
+ "isstream": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
+ "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g=="
+ },
"istanbul-lib-coverage": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz",
@@ -23098,6 +25148,11 @@
"esprima": "^4.0.0"
}
},
+ "jsbn": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
+ "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg=="
+ },
"jsdom": {
"version": "16.7.0",
"resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz",
@@ -23147,6 +25202,15 @@
"resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
"integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA=="
},
+ "json-bigint": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-1.0.0.tgz",
+ "integrity": "sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==",
+ "dev": true,
+ "requires": {
+ "bignumber.js": "^9.0.0"
+ }
+ },
"json-buffer": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
@@ -23159,6 +25223,11 @@
"integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
"dev": true
},
+ "json-schema": {
+ "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",
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
@@ -23171,6 +25240,11 @@
"integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
"dev": true
},
+ "json-stringify-safe": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
+ "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA=="
+ },
"json5": {
"version": "2.2.3",
"resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
@@ -23196,6 +25270,17 @@
"integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==",
"dev": true
},
+ "jsprim": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-2.0.2.tgz",
+ "integrity": "sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ==",
+ "requires": {
+ "assert-plus": "1.0.0",
+ "extsprintf": "1.3.0",
+ "json-schema": "0.4.0",
+ "verror": "1.10.0"
+ }
+ },
"jsrsasign": {
"version": "11.1.0",
"resolved": "https://registry.npmjs.org/jsrsasign/-/jsrsasign-11.1.0.tgz",
@@ -23210,6 +25295,27 @@
"jsrsasign": ">= 4.8.2"
}
},
+ "jwa": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz",
+ "integrity": "sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==",
+ "dev": true,
+ "requires": {
+ "buffer-equal-constant-time": "1.0.1",
+ "ecdsa-sig-formatter": "1.0.11",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "jws": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz",
+ "integrity": "sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==",
+ "dev": true,
+ "requires": {
+ "jwa": "^2.0.0",
+ "safe-buffer": "^5.0.1"
+ }
+ },
"karma": {
"version": "6.4.1",
"resolved": "https://registry.npmjs.org/karma/-/karma-6.4.1.tgz",
@@ -23422,6 +25528,11 @@
"shell-quote": "^1.8.1"
}
},
+ "lazy-ass": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/lazy-ass/-/lazy-ass-1.6.0.tgz",
+ "integrity": "sha512-cc8oEVoctTvsFZ/Oje/kGnHbpWHYBe8IAJe4C0QNc3t8uM/0Y8+erSz/7Y1ALuXTEZTMvxXwO6YbX1ey3ujiZw=="
+ },
"less": {
"version": "4.1.3",
"resolved": "https://registry.npmjs.org/less/-/less-4.1.3.tgz",
@@ -23508,6 +25619,21 @@
"integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
"dev": true
},
+ "listr2": {
+ "version": "3.14.0",
+ "resolved": "https://registry.npmjs.org/listr2/-/listr2-3.14.0.tgz",
+ "integrity": "sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g==",
+ "requires": {
+ "cli-truncate": "^2.1.0",
+ "colorette": "^2.0.16",
+ "log-update": "^4.0.0",
+ "p-map": "^4.0.0",
+ "rfdc": "^1.3.0",
+ "rxjs": "^7.5.1",
+ "through": "^2.3.8",
+ "wrap-ansi": "^7.0.0"
+ }
+ },
"loader-runner": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz",
@@ -23532,8 +25658,7 @@
"lodash": {
"version": "4.17.21",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
- "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
- "dev": true
+ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
},
"lodash.debounce": {
"version": "4.0.8",
@@ -23547,11 +25672,15 @@
"integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
"dev": true
},
+ "lodash.once": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz",
+ "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg=="
+ },
"log-symbols": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz",
"integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==",
- "dev": true,
"requires": {
"chalk": "^4.1.0",
"is-unicode-supported": "^0.1.0"
@@ -23561,7 +25690,6 @@
"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"
}
@@ -23570,7 +25698,6 @@
"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"
@@ -23580,7 +25707,6 @@
"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"
}
@@ -23588,26 +25714,77 @@
"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
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
},
"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
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
},
"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"
}
}
}
},
+ "log-update": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz",
+ "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==",
+ "requires": {
+ "ansi-escapes": "^4.3.0",
+ "cli-cursor": "^3.1.0",
+ "slice-ansi": "^4.0.0",
+ "wrap-ansi": "^6.2.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==",
+ "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==",
+ "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=="
+ },
+ "slice-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz",
+ "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==",
+ "requires": {
+ "ansi-styles": "^4.0.0",
+ "astral-regex": "^2.0.0",
+ "is-fullwidth-code-point": "^3.0.0"
+ }
+ },
+ "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",
+ "strip-ansi": "^6.0.0"
+ }
+ }
+ }
+ },
"log4js": {
"version": "6.7.0",
"resolved": "https://registry.npmjs.org/log4js/-/log4js-6.7.0.tgz",
@@ -23742,8 +25919,7 @@
"merge-stream": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
- "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
- "dev": true
+ "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w=="
},
"merge2": {
"version": "1.4.1",
@@ -23774,14 +25950,12 @@
"mime-db": {
"version": "1.52.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
- "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
- "dev": true
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="
},
"mime-types": {
"version": "2.1.35",
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
"integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
- "dev": true,
"requires": {
"mime-db": "1.52.0"
}
@@ -23789,8 +25963,7 @@
"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
+ "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg=="
},
"mini-css-extract-plugin": {
"version": "2.7.6",
@@ -23817,10 +25990,9 @@
}
},
"minimist": {
- "version": "1.2.7",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz",
- "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==",
- "dev": true
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
+ "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA=="
},
"minipass": {
"version": "5.0.0",
@@ -24170,12 +26342,50 @@
"node-gyp-build": "^4.2.2"
}
},
+ "nice-try": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
+ "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ=="
+ },
"node-addon-api": {
"version": "3.2.1",
"resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz",
"integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==",
"dev": true
},
+ "node-fetch": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz",
+ "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==",
+ "dev": true,
+ "requires": {
+ "whatwg-url": "^5.0.0"
+ },
+ "dependencies": {
+ "tr46": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
+ "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==",
+ "dev": true
+ },
+ "webidl-conversions": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
+ "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==",
+ "dev": true
+ },
+ "whatwg-url": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
+ "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
+ "dev": true,
+ "requires": {
+ "tr46": "~0.0.3",
+ "webidl-conversions": "^3.0.0"
+ }
+ }
+ }
+ },
"node-forge": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz",
@@ -24364,7 +26574,6 @@
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
"integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
- "dev": true,
"requires": {
"path-key": "^3.0.0"
}
@@ -24635,8 +26844,7 @@
"object-inspect": {
"version": "1.12.2",
"resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz",
- "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==",
- "dev": true
+ "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ=="
},
"object-is": {
"version": "1.1.6",
@@ -24685,7 +26893,6 @@
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
"integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
- "dev": true,
"requires": {
"wrappy": "1"
}
@@ -24694,7 +26901,6 @@
"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"
}
@@ -24798,6 +27004,16 @@
"integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==",
"dev": true
},
+ "ospath": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/ospath/-/ospath-1.2.2.tgz",
+ "integrity": "sha512-o6E5qJV5zkAbIDNhGSIlyOhScKXgQrSRMilfph0clDfM0nEnBOlKlH4sWDmG95BW/CvwNz0vmm7dJVtU2KlMiA=="
+ },
+ "p-finally": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
+ "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow=="
+ },
"p-limit": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
@@ -24820,7 +27036,6 @@
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz",
"integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==",
- "dev": true,
"requires": {
"aggregate-error": "^3.0.0"
}
@@ -24982,8 +27197,7 @@
"path-key": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
- "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
- "dev": true
+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q=="
},
"path-parse": {
"version": "1.0.7",
@@ -25021,6 +27235,16 @@
"integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
"dev": true
},
+ "pend": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
+ "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg=="
+ },
+ "performance-now": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
+ "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow=="
+ },
"picocolors": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
@@ -25193,8 +27417,7 @@
"pretty-bytes": {
"version": "5.6.0",
"resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz",
- "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==",
- "dev": true
+ "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg=="
},
"proc-log": {
"version": "3.0.0",
@@ -25202,6 +27425,11 @@
"integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==",
"dev": true
},
+ "process": {
+ "version": "0.11.10",
+ "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
+ "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A=="
+ },
"process-nextick-args": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
@@ -25258,14 +27486,21 @@
"psl": {
"version": "1.9.0",
"resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz",
- "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==",
- "dev": true
+ "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag=="
+ },
+ "pump": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
+ "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
+ "requires": {
+ "end-of-stream": "^1.1.0",
+ "once": "^1.3.1"
+ }
},
"punycode": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
- "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
- "dev": true
+ "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A=="
},
"qjobs": {
"version": "1.2.0",
@@ -25285,8 +27520,7 @@
"querystringify": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz",
- "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==",
- "dev": true
+ "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ=="
},
"queue-microtask": {
"version": "1.2.3",
@@ -25500,6 +27734,14 @@
}
}
},
+ "request-progress": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-3.0.0.tgz",
+ "integrity": "sha512-MnWzEHHaxHO2iWiQuHrUPBi/1WeBf5PkxQqNyNvLl9VAYSdXkP8tQ3pBSeCPD+yw0v0Aq1zosWLz0BdeXpWwZg==",
+ "requires": {
+ "throttleit": "^1.0.0"
+ }
+ },
"require-directory": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
@@ -25514,8 +27756,7 @@
"requires-port": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
- "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==",
- "dev": true
+ "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ=="
},
"resolve": {
"version": "1.22.2",
@@ -25570,7 +27811,6 @@
"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"
@@ -25590,8 +27830,7 @@
"rfdc": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz",
- "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==",
- "dev": true
+ "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA=="
},
"rimraf": {
"version": "3.0.2",
@@ -25671,14 +27910,12 @@
"safe-buffer": {
"version": "5.2.1",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
- "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
- "dev": true
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="
},
"safer-buffer": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
- "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
- "dev": true
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
},
"safevalues": {
"version": "0.3.4",
@@ -25906,6 +28143,12 @@
"send": "0.18.0"
}
},
+ "server-destroy": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/server-destroy/-/server-destroy-1.0.1.tgz",
+ "integrity": "sha512-rb+9B5YBIEzYcD6x2VKidaa+cqYBJQKnU4oe4E3ANwRRN56yk/ua1YCJT1n21NTS8w6CcOclAKNP3PhdCXKYtQ==",
+ "dev": true
+ },
"set-blocking": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
@@ -25956,7 +28199,6 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
"integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
- "dev": true,
"requires": {
"shebang-regex": "^3.0.0"
}
@@ -25964,8 +28206,7 @@
"shebang-regex": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
- "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
- "dev": true
+ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A=="
},
"shell-quote": {
"version": "1.8.1",
@@ -25977,7 +28218,6 @@
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
"integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
- "dev": true,
"requires": {
"call-bind": "^1.0.0",
"get-intrinsic": "^1.0.2",
@@ -25987,8 +28227,7 @@
"signal-exit": {
"version": "3.0.7",
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
- "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
- "dev": true
+ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ=="
},
"sigstore": {
"version": "1.9.0",
@@ -26009,6 +28248,39 @@
"integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==",
"dev": true
},
+ "slice-ansi": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz",
+ "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==",
+ "requires": {
+ "ansi-styles": "^4.0.0",
+ "astral-regex": "^2.0.0",
+ "is-fullwidth-code-point": "^3.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==",
+ "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==",
+ "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=="
+ }
+ }
+ },
"smart-buffer": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz",
@@ -26198,6 +28470,22 @@
"integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==",
"dev": true
},
+ "sshpk": {
+ "version": "1.18.0",
+ "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.18.0.tgz",
+ "integrity": "sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==",
+ "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"
+ }
+ },
"ssri": {
"version": "10.0.5",
"resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.5.tgz",
@@ -26285,11 +28573,15 @@
"integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==",
"dev": true
},
+ "strip-eof": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
+ "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q=="
+ },
"strip-final-newline": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
- "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
- "dev": true
+ "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA=="
},
"strip-json-comments": {
"version": "3.1.1",
@@ -26504,11 +28796,15 @@
"integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
"dev": true
},
+ "throttleit": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.1.tgz",
+ "integrity": "sha512-vDZpf9Chs9mAdfY046mcPt8fg5QSZr37hEH4TXYBnDF+izxgrbRGUAAaBvIk/fJm9aOFCGFd1EsNg5AZCbnQCQ=="
+ },
"through": {
"version": "2.3.8",
"resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
- "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==",
- "dev": true
+ "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg=="
},
"thunky": {
"version": "1.1.0",
@@ -26548,7 +28844,6 @@
"version": "4.1.3",
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz",
"integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==",
- "dev": true,
"requires": {
"psl": "^1.1.33",
"punycode": "^2.1.1",
@@ -26559,8 +28854,7 @@
"universalify": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz",
- "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==",
- "dev": true
+ "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg=="
}
}
},
@@ -26623,6 +28917,19 @@
"make-fetch-happen": "^11.1.1"
}
},
+ "tunnel-agent": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
+ "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==",
+ "requires": {
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "tweetnacl": {
+ "version": "0.14.5",
+ "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
+ "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA=="
+ },
"type-check": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
@@ -26635,8 +28942,7 @@
"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==",
- "dev": true
+ "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w=="
},
"type-is": {
"version": "1.6.18",
@@ -26728,6 +29034,11 @@
"integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
"dev": true
},
+ "untildify": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz",
+ "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw=="
+ },
"update-browserslist-db": {
"version": "1.0.13",
"resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz",
@@ -26750,12 +29061,17 @@
"version": "1.5.10",
"resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz",
"integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==",
- "dev": true,
"requires": {
"querystringify": "^2.1.1",
"requires-port": "^1.0.0"
}
},
+ "url-template": {
+ "version": "2.0.8",
+ "resolved": "https://registry.npmjs.org/url-template/-/url-template-2.0.8.tgz",
+ "integrity": "sha512-XdVKMF4SJ0nP/O7XIPB0JwAEuT9lDIYnNsK8yGVe43y0AWoKeJNdv3ZNWh7ksJ6KqQFjOO6ox/VEitLnaVNufw==",
+ "dev": true
+ },
"util-deprecate": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
@@ -26771,8 +29087,7 @@
"uuid": {
"version": "8.3.2",
"resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
- "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
- "dev": true
+ "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg=="
},
"v8-compile-cache": {
"version": "2.3.0",
@@ -26805,6 +29120,23 @@
"integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
"dev": true
},
+ "verror": {
+ "version": "1.10.0",
+ "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
+ "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==",
+ "requires": {
+ "assert-plus": "^1.0.0",
+ "core-util-is": "1.0.2",
+ "extsprintf": "^1.2.0"
+ },
+ "dependencies": {
+ "core-util-is": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
+ "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ=="
+ }
+ }
+ },
"vite": {
"version": "4.5.2",
"resolved": "https://registry.npmjs.org/vite/-/vite-4.5.2.tgz",
@@ -27090,7 +29422,6 @@
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
"integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
- "dev": true,
"requires": {
"isexe": "^2.0.0"
}
@@ -27183,8 +29514,7 @@
"wrappy": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
- "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
- "dev": true
+ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
},
"ws": {
"version": "8.11.0",
@@ -27255,6 +29585,15 @@
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
"integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw=="
},
+ "yauzl": {
+ "version": "2.10.0",
+ "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz",
+ "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==",
+ "requires": {
+ "buffer-crc32": "~0.2.3",
+ "fd-slicer": "~1.1.0"
+ }
+ },
"yocto-queue": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz",
diff --git a/ui/package.json b/ui/package.json
index 4fa77790e..2ccd871a0 100644
--- a/ui/package.json
+++ b/ui/package.json
@@ -28,6 +28,8 @@
"@fortawesome/free-solid-svg-icons": "^6.4.2",
"@ng-bootstrap/ng-bootstrap": "^15.1.1",
"bootstrap": "^5.3.2",
+ "clipboardy": "^2.3.0",
+ "cypress-file-upload": "^5.0.8",
"jsrsasign": "^11.1.0",
"jsrsasign-util": "^1.0.5",
"moment": "^2.29.4",
@@ -53,7 +55,9 @@
"@types/quill": "^1.3.10",
"@typescript-eslint/eslint-plugin": "5.62.0",
"@typescript-eslint/parser": "5.62.0",
+ "cypress": "^13.9.0",
"eslint": "^8.49.0",
+ "gmail-tester": "^1.3.8",
"jasmine-core": "~4.3.0",
"karma": "~6.4.0",
"karma-chrome-launcher": "~3.1.0",
diff --git a/ui/src/app/home/home.component.html b/ui/src/app/home/home.component.html
index 3541e3439..f2ac1d9a3 100644
--- a/ui/src/app/home/home.component.html
+++ b/ui/src/app/home/home.component.html
@@ -1,5 +1,5 @@
-
{{ loggedInMessage }}
+
{{ loggedInMessage }}