diff --git a/packages/reva-candidate/cypress.config.js b/packages/reva-candidate/cypress.config.js
new file mode 100644
index 000000000..f2bcc14ab
--- /dev/null
+++ b/packages/reva-candidate/cypress.config.js
@@ -0,0 +1,16 @@
+import { defineConfig } from "cypress";
+
+export default defineConfig({
+ experimentalStudio: true,
+ viewportWidth: 490,
+ viewportHeight: 844,
+ e2e: {
+ // We've imported your old cypress plugins here.
+ // You may want to clean this up later by importing these.
+ setupNodeEvents(on, config) {
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
+ return require("./cypress/plugins/index.js")(on, config);
+ },
+ baseUrl: "http://localhost:3004/candidat/",
+ },
+});
diff --git a/packages/reva-candidate/cypress/e2e/certificate-list.cy.js b/packages/reva-candidate/cypress/e2e/certificate-list.cy.js
new file mode 100644
index 000000000..0a8b46d8e
--- /dev/null
+++ b/packages/reva-candidate/cypress/e2e/certificate-list.cy.js
@@ -0,0 +1,41 @@
+import { stubMutation, stubQuery } from "../utils/graphql";
+
+context("Certificate list", () => {
+ beforeEach(() => {
+ cy.intercept("POST", "/api/graphql", (req) => {
+ stubQuery(req, "getDepartments", "departments.json");
+ stubMutation(req, "candidate_login", "candidate1.json");
+ stubQuery(req, "getReferential", "referential.json");
+ stubQuery(req, "Certifications", "certifications.json");
+ stubQuery(req, "activeFeaturesForConnectedUser", "features.json");
+ stubMutation(
+ req,
+ "candidacy_updateCertification",
+ "updated-candidacy1.json",
+ );
+ });
+
+ cy.login();
+ cy.wait("@candidate_login");
+ cy.wait("@getReferential");
+ cy.wait("@activeFeaturesForConnectedUser");
+ });
+
+ it("should show only 2 certifications", function () {
+ cy.get('[data-test="project-home-select-certification"]').click();
+ cy.get("[name='select_department']").select("2");
+ cy.wait("@Certifications");
+
+ cy.get('[data-test="results"]').children("li").should("have.length", 2);
+
+ cy.get('[data-test="results"]')
+ .children("li")
+ .eq(0)
+ .should("have.text", "34691Titre 1");
+
+ cy.get('[data-test="results"]')
+ .children("li")
+ .eq(1)
+ .should("have.text", "34692Titre 2");
+ });
+});
diff --git a/packages/reva-candidate/cypress/e2e/certificates.cy.js b/packages/reva-candidate/cypress/e2e/certificates.cy.js
new file mode 100644
index 000000000..7550ad17d
--- /dev/null
+++ b/packages/reva-candidate/cypress/e2e/certificates.cy.js
@@ -0,0 +1,48 @@
+import { stubMutation, stubQuery } from "../utils/graphql";
+
+context("Certificates", () => {
+ beforeEach(() => {
+ cy.intercept("POST", "/api/graphql", (req) => {
+ stubQuery(req, "getDepartments", "departments.json");
+ stubMutation(req, "candidate_login", "candidate1.json");
+ stubQuery(req, "getReferential", "referential.json");
+ stubQuery(req, "activeFeaturesForConnectedUser", "features.json");
+ stubQuery(req, "Certifications", "certifications.json");
+ stubMutation(
+ req,
+ "candidacy_updateCertification",
+ "updated-candidacy1.json",
+ );
+ });
+
+ cy.login();
+
+ cy.wait("@candidate_login");
+ cy.wait("@getReferential");
+ cy.wait("@activeFeaturesForConnectedUser");
+
+ cy.get('[data-test="project-home-select-certification"]').click();
+ cy.get("[name='select_department']").select("2");
+ cy.wait("@Certifications");
+ });
+
+ it("display information about the selected certificate", function () {
+ cy.get('[data-test="certification-select-c2"]').click();
+ cy.get('[data-test="certification-label"]').should("contain", "Titre 2");
+ cy.get('[data-test="certification-code-rncp"]').should("contain", "34692");
+ cy.get('[data-test="certification-more-info-link"]').should(
+ "have.attr",
+ "href",
+ "https://www.francecompetences.fr/recherche/rncp/34692/",
+ );
+ });
+
+ it("select department and submit certificate via summary", function () {
+ cy.get('[data-test="certification-select-c2"]').click();
+ cy.get('[data-test="submit-certification-button"]').click();
+ cy.wait("@candidacy_updateCertification");
+
+ cy.get('[data-test="project-home-ready"]');
+ cy.get('[data-test="certification-label"]').should("contain", "Titre 2");
+ });
+});
diff --git a/packages/reva-candidate/cypress/e2e/contact.cy.js b/packages/reva-candidate/cypress/e2e/contact.cy.js
new file mode 100644
index 000000000..a8b068bd1
--- /dev/null
+++ b/packages/reva-candidate/cypress/e2e/contact.cy.js
@@ -0,0 +1,59 @@
+import { stubMutation, stubQuery } from "../utils/graphql";
+
+const firstname1 = "John";
+const firstname2 = "John 2";
+
+const lastname1 = "Doe";
+const lastname2 = "Doe 2";
+
+const email1 = "email@example.com";
+const email2 = "email2@example.com";
+
+const phone1 = "06 01 02 03 04";
+const phone2 = "06 01 02 03 05";
+
+context("Candidate account", () => {
+ it("update all account information", function () {
+ cy.intercept("POST", "/api/graphql", (req) => {
+ stubMutation(req, "candidate_login", "candidate1.json");
+ stubQuery(req, "getReferential", "referential.json");
+ stubQuery(req, "getDepartments", "departments.json");
+ stubQuery(req, "activeFeaturesForConnectedUser", "features.json");
+ stubQuery(req, "update_contact", "contact.json");
+ });
+ cy.login();
+ cy.wait("@candidate_login");
+ cy.wait("@getReferential");
+
+ cy.get('[data-test="project-home-update-contact"]').click();
+
+ cy.get("[name=firstname]").should("have.value", firstname1);
+ cy.get("[name=lastname]").should("have.value", lastname1);
+ cy.get("[name=phone]").should("have.value", phone1);
+ cy.get("[name=email]").should("have.value", email1);
+
+ cy.get("[name=firstname]").type(`{selectAll}${firstname2}`);
+ cy.get("[name=lastname]").type(`{selectAll}${lastname2}`);
+ cy.get("[name=phone]").type(`{selectAll}${phone2}`);
+ cy.get("[name=email]").type(`{selectAll}${email2}`);
+
+ cy.get('[data-test="project-contact-save"]').click();
+ cy.get(
+ '[title="Fermer"][aria-controls="project-home-modal-email"]',
+ ).click();
+ cy.wait("@update_contact");
+
+ cy.get('[data-test="project-home-fullname"]').contains(
+ `${firstname2} ${lastname2}`,
+ );
+ cy.get('[data-test="project-home-contact-phone"]').contains(phone2);
+ cy.get('[data-test="project-home-contact-email"]').contains(email2);
+
+ cy.get('[data-test="project-home-update-contact"]').click();
+
+ cy.get("[name=firstname]").should("have.value", firstname2);
+ cy.get("[name=lastname]").should("have.value", lastname2);
+ cy.get("[name=phone]").should("have.value", phone2);
+ cy.get("[name=email]").should("have.value", email2);
+ });
+});
diff --git a/packages/reva-candidate/cypress/e2e/dropped-out.cy.js b/packages/reva-candidate/cypress/e2e/dropped-out.cy.js
new file mode 100644
index 000000000..e38db495b
--- /dev/null
+++ b/packages/reva-candidate/cypress/e2e/dropped-out.cy.js
@@ -0,0 +1,64 @@
+import { stubMutation, stubQuery } from "../utils/graphql";
+
+const firstname = "John";
+const lastname = "Doe";
+const email = "email@example.com";
+const supportEmail = "support@vae.gouv.fr";
+
+context("Dropped out", () => {
+ it("log on a dropped-out project", function () {
+ cy.intercept("POST", "/api/graphql", (req) => {
+ stubQuery(req, "getDepartments", "departments.json");
+ stubMutation(req, "candidate_login", "candidate2-dropped-out.json");
+ stubQuery(req, "getReferential", "referential.json");
+ stubQuery(req, "activeFeaturesForConnectedUser", "features.json");
+ });
+ cy.login();
+
+ cy.wait("@candidate_login");
+ cy.wait("@getReferential");
+ cy.wait("@activeFeaturesForConnectedUser");
+
+ cy.get('[data-test="home-project-dropped-out"]');
+ });
+
+ it("dropped-out project page should display candidate info", function () {
+ cy.intercept("POST", "/api/graphql", (req) => {
+ stubQuery(req, "getDepartments", "departments.json");
+ stubMutation(req, "candidate_login", "candidate2-dropped-out.json");
+ stubQuery(req, "getReferential", "referential.json");
+ stubQuery(req, "activeFeaturesForConnectedUser", "features.json");
+ });
+ cy.login();
+ cy.wait("@candidate_login");
+ cy.wait("@getReferential");
+ cy.wait("@activeFeaturesForConnectedUser");
+
+ cy.get('[data-test="home-dropped-out-name"').should(
+ "have.text",
+ `Bonjour ${firstname} ${lastname},`,
+ );
+ cy.get('[data-test="home-dropped-out-email"').should(
+ "have.text",
+ `Email: ${email}`,
+ );
+ });
+
+ it("dropped-out project page should display support email", function () {
+ cy.intercept("POST", "/api/graphql", (req) => {
+ stubQuery(req, "getDepartments", "departments.json");
+ stubMutation(req, "candidate_login", "candidate2-dropped-out.json");
+ stubQuery(req, "getReferential", "referential.json");
+ stubQuery(req, "activeFeaturesForConnectedUser", "features.json");
+ });
+ cy.login();
+ cy.wait("@candidate_login");
+ cy.wait("@getReferential");
+ cy.wait("@activeFeaturesForConnectedUser");
+
+ cy.get('[data-test="home-dropped-out-support-email"').should(
+ "have.text",
+ `${supportEmail}`,
+ );
+ });
+});
diff --git a/packages/reva-candidate/cypress/e2e/experiences.cy.js b/packages/reva-candidate/cypress/e2e/experiences.cy.js
new file mode 100644
index 000000000..898345dfb
--- /dev/null
+++ b/packages/reva-candidate/cypress/e2e/experiences.cy.js
@@ -0,0 +1,72 @@
+const experienceTitle1 = "Experience 1";
+const experienceTitle2 = "Experience 2";
+
+const experienceDescription1 = "Description 1";
+const experienceDescription2 = "Description 2";
+
+import { stubMutation, stubQuery } from "../utils/graphql";
+
+context("Experiences", () => {
+ it("add and edit an experience", function () {
+ cy.intercept("POST", "/api/graphql", (req) => {
+ stubQuery(req, "getDepartments", "departments.json");
+ stubMutation(
+ req,
+ "candidate_login",
+ "candidate1-certification-and-goals-selected.json",
+ );
+ stubQuery(req, "getReferential", "referential.json");
+ stubQuery(req, "add_experience", "added-experience1.json");
+ stubQuery(req, "update_experience", "updated-experience2.json");
+ stubQuery(req, "activeFeaturesForConnectedUser", "features.json");
+ });
+ cy.login();
+ cy.wait("@candidate_login");
+ cy.wait("@getReferential");
+ cy.wait("@activeFeaturesForConnectedUser");
+
+ cy.get('[data-test="timeline-add-experience"]').click();
+ cy.get("[name='title']").type(experienceTitle1);
+ cy.get("[name='startedAt']").type("2019-01-31");
+ cy.get("[name='duration']").select("betweenOneAndThreeYears");
+ cy.get("textarea[name='description']").type(experienceDescription1);
+
+ cy.get('[data-test="project-experience-add"]').click();
+ cy.wait("@add_experience");
+
+ cy.get('[data-test="timeline-experiences-list"] > li')
+ .eq(0)
+ .within(() => {
+ cy.get('[data-test="timeline-experience-title"]').should(
+ "have.text",
+ experienceTitle1,
+ );
+ cy.get('[data-test="timeline-experience-duration"]').should(
+ "have.text",
+ "Entre 1 et 3 ans",
+ );
+ });
+
+ cy.get('[data-test="timeline-experiences-list"] > li').eq(0).click();
+ cy.get("[name='startedAt']").type("2017-03-31");
+ cy.get("[name='title']").type(`{selectAll}${experienceTitle2}`);
+ cy.get("[name='duration']").select("moreThanFiveYears");
+ cy.get("textarea[name='description']").type(
+ `{selectAll}${experienceDescription2}`,
+ );
+ cy.get('[data-test="project-experience-save"]').click();
+
+ cy.get('[data-test="timeline-experiences-list"] > li')
+ .eq(0)
+ .within(() => {
+ cy.get('[data-test="timeline-experience-title"]').should(
+ "have.text",
+ experienceTitle2,
+ );
+ cy.get('[data-test="timeline-experience-duration"]').should(
+ "have.text",
+ "Plus de 5 ans",
+ );
+ });
+ });
+});
diff --git a/packages/reva-candidate/cypress/e2e/funding-request-sent.cy.js b/packages/reva-candidate/cypress/e2e/funding-request-sent.cy.js
new file mode 100644
index 000000000..d98833445
--- /dev/null
+++ b/packages/reva-candidate/cypress/e2e/funding-request-sent.cy.js
@@ -0,0 +1,24 @@
+import { stubMutation, stubQuery } from "../utils/graphql";
+
+context("Funding Request Sent", () => {
+ describe("Testing correct screen", () => {
+ it("display all fields", () => {
+ cy.intercept("POST", "/api/graphql", (req) => {
+ stubQuery(req, "getDepartments", "departments.json");
+ stubMutation(
+ req,
+ "candidate_login",
+ "candidate2-funding-request-sent.json",
+ );
+ stubQuery(req, "getReferential", "referential.json");
+ stubQuery(req, "activeFeaturesForConnectedUser", "features.json");
+ });
+ cy.login();
+ cy.wait("@candidate_login");
+ cy.wait("@getReferential");
+ cy.wait("@activeFeaturesForConnectedUser");
+
+ cy.get('[data-test="view-training-program-button"]').should("exist");
+ });
+ });
+});
diff --git a/packages/reva-candidate/cypress/e2e/login.cy.js b/packages/reva-candidate/cypress/e2e/login.cy.js
new file mode 100644
index 000000000..cf73e9e0f
--- /dev/null
+++ b/packages/reva-candidate/cypress/e2e/login.cy.js
@@ -0,0 +1,32 @@
+import { stubQuery } from "../utils/graphql";
+
+const email = "email@example.com";
+
+context("Login", () => {
+ it("submit email", function () {
+ cy.intercept("POST", "/api/graphql", (req) => {
+ stubQuery(req, "getDepartments", "departments.json");
+ stubQuery(req, "candidate_askForLogin", "login.json");
+ });
+
+ cy.login();
+
+ cy.get('[data-test="login-home"] #email').type(email);
+
+ cy.get('[data-test="login-home-submit"]').click();
+ cy.wait("@candidate_askForLogin");
+
+ cy.get('[data-test="login-confirmation"]');
+ });
+
+ it("access login page from registration page", function () {
+ cy.intercept("POST", "/api/graphql", (req) => {
+ stubQuery(req, "getDepartments", "departments.json");
+ stubQuery(req, "activeFeaturesForConnectedUser", "features.json");
+ });
+
+ cy.visit("/registration");
+ cy.get('[data-test="navigate-to-login"]').click();
+ cy.get('[data-test="login-home"]');
+ });
+});
diff --git a/packages/reva-candidate/cypress/e2e/organism.cy.js b/packages/reva-candidate/cypress/e2e/organism.cy.js
new file mode 100644
index 000000000..705a06f67
--- /dev/null
+++ b/packages/reva-candidate/cypress/e2e/organism.cy.js
@@ -0,0 +1,120 @@
+import { stubMutation, stubQuery } from "../utils/graphql";
+
+context("Empty candidacy", () => {
+ it("prevent organism selection", function () {
+ cy.intercept("POST", "/api/graphql", (req) => {
+ stubQuery(req, "getDepartments", "departments.json");
+ stubMutation(req, "candidate_login", "candidate1.json");
+ stubQuery(req, "getReferential", "referential.json");
+ stubQuery(req, "activeFeaturesForConnectedUser", "features.json");
+ });
+ cy.login();
+ cy.wait("@candidate_login");
+ cy.wait("@getReferential");
+ cy.wait("@activeFeaturesForConnectedUser");
+
+ cy.get('[data-test="project-home-edit-organism').should("be.disabled");
+ });
+});
+
+context("Candidacy with department certification selected", () => {
+ it("list all available organisms", function () {
+ Cypress.on("uncaught:exception", (err) => {
+ // Suppress the error that started occurring after the DSFR update
+ if (err.message.includes("this.removeEventListener is not a function")) {
+ return false;
+ }
+ });
+
+ cy.intercept("POST", "/api/graphql", (req) => {
+ stubQuery(req, "getDepartments", "departments.json");
+ stubMutation(req, "candidate_login", "candidate3.json");
+ stubQuery(req, "getReferential", "referential.json");
+ stubQuery(req, "getRandomOrganismsForCandidacy", "organism.json");
+ stubQuery(req, "activeFeaturesForConnectedUser", "features.json");
+ });
+ cy.login();
+ cy.wait("@candidate_login");
+ cy.wait("@getReferential");
+ cy.wait("@activeFeaturesForConnectedUser");
+
+ cy.get('[data-test="project-home-edit-organism').click();
+ cy.wait("@getRandomOrganismsForCandidacy");
+
+ cy.get('[data-test="project-organisms-organism-o1"]').within(() => {
+ cy.get('[data-test="project-organisms-organism-label"]').should(
+ "have.text",
+ "Architecte 1",
+ );
+ cy.get('[data-test="project-organisms-organism-email"]').should(
+ "have.text",
+ "email@exemple.com",
+ );
+ cy.get('[data-test="project-organisms-organism-phone"]').should(
+ "have.text",
+ "0111111111",
+ );
+ cy.get('[data-test="project-organisms-onsite-tag"]').should("exist");
+ cy.get('[data-test="project-organisms-remote-tag"]').should("not.exist");
+ });
+
+ cy.get('[data-test="project-organisms-organism-o2"]').within(() => {
+ cy.get('[data-test="project-organisms-organism-label"]').should(
+ "have.text",
+ "Architecte 2",
+ );
+ cy.get('[data-test="project-organisms-organism-email"]').should(
+ "have.text",
+ "email2@exemple.com",
+ );
+ cy.get('[data-test="project-organisms-organism-phone"]').should(
+ "have.text",
+ "0222222222",
+ );
+ cy.get('[data-test="project-organisms-onsite-tag"]').should("not.exist");
+ cy.get('[data-test="project-organisms-remote-tag"]').should("exist");
+ });
+ });
+
+ it("submit first organism", function () {
+ cy.intercept("POST", "/api/graphql", (req) => {
+ stubQuery(req, "getDepartments", "departments.json");
+ stubMutation(req, "candidate_login", "candidate3.json");
+ stubQuery(req, "getReferential", "referential.json");
+ stubQuery(req, "getRandomOrganismsForCandidacy", "organism.json");
+ stubMutation(req, "candidacy_selectOrganism", "selected-organism.json");
+ stubQuery(req, "activeFeaturesForConnectedUser", "features.json");
+ });
+
+ cy.login(
+ { token: "abc" },
+ {
+ onBeforeLoad(win) {
+ cy.stub(win.Math, "random").returns(0);
+ },
+ },
+ );
+
+ cy.wait("@candidate_login");
+ cy.wait("@activeFeaturesForConnectedUser");
+
+ cy.get('[data-test="project-home-edit-organism').click();
+ cy.wait("@getRandomOrganismsForCandidacy");
+
+ cy.get('[data-test="project-organisms-submit-organism-o1').click();
+ cy.wait("@candidacy_selectOrganism");
+
+ cy.get('[data-test="project-home-organism-label"]').should(
+ "have.text",
+ "Architecte 1",
+ );
+ cy.get('[data-test="project-home-organism-email"]').should(
+ "have.text",
+ "email@exemple.com",
+ );
+ cy.get('[data-test="project-home-organism-phone"]').should(
+ "have.text",
+ "0111111111",
+ );
+ });
+});
diff --git a/packages/reva-candidate/cypress/e2e/project.cy.js b/packages/reva-candidate/cypress/e2e/project.cy.js
new file mode 100644
index 000000000..59f48eda6
--- /dev/null
+++ b/packages/reva-candidate/cypress/e2e/project.cy.js
@@ -0,0 +1,40 @@
+import { stubMutation, stubQuery } from "../utils/graphql";
+
+context("Project", () => {
+ it("attempt to validate project", function () {
+ cy.intercept("POST", "/api/graphql", (req) => {
+ stubQuery(req, "getDepartments", "departments.json");
+ stubMutation(req, "candidate_login", "candidate1.json");
+ stubQuery(req, "getReferential", "referential.json");
+ stubQuery(req, "activeFeaturesForConnectedUser", "features.json");
+ });
+ cy.login();
+ cy.wait("@candidate_login");
+ cy.wait("@getReferential");
+ cy.wait("@activeFeaturesForConnectedUser");
+
+ cy.get('[data-test="project-home-validate"]').should("be.disabled");
+ });
+
+ it("confirm registration", function () {
+ cy.intercept("POST", "/api/graphql", (req) => {
+ stubQuery(req, "getDepartments", "departments.json");
+ stubMutation(req, "candidate_login", "candidate2.json");
+ stubQuery(req, "getReferential", "referential.json");
+ stubQuery(req, "submit_candidacy", "submitted-candidacy.json");
+ stubQuery(req, "activeFeaturesForConnectedUser", "features.json");
+ });
+ cy.login();
+ cy.get('[data-test="project-home-loading"]');
+ cy.wait("@candidate_login");
+ cy.wait("@getReferential");
+ cy.wait("@activeFeaturesForConnectedUser");
+
+ cy.wait(500);
+ cy.get('[data-test="project-home-ready"]');
+ cy.get('[data-test="project-home-validate"]').click();
+
+ cy.get('[data-test="project-submit"]').click();
+ cy.wait("@submit_candidacy");
+ });
+});
diff --git a/packages/reva-candidate/cypress/e2e/submission.cy.js b/packages/reva-candidate/cypress/e2e/submission.cy.js
new file mode 100644
index 000000000..2af73cf41
--- /dev/null
+++ b/packages/reva-candidate/cypress/e2e/submission.cy.js
@@ -0,0 +1,33 @@
+import { stubMutation, stubQuery } from "../utils/graphql";
+
+context("Submission", () => {
+ it("log on a submitted project", function () {
+ cy.intercept("POST", "/api/graphql", (req) => {
+ stubQuery(req, "getDepartments", "departments.json");
+ stubMutation(req, "candidate_login", "candidate2-submitted.json");
+ stubQuery(req, "getReferential", "referential.json");
+ stubQuery(req, "activeFeaturesForConnectedUser", "features.json");
+ });
+ cy.login();
+ cy.wait("@candidate_login");
+ cy.wait("@getReferential");
+ cy.wait("@activeFeaturesForConnectedUser");
+
+ cy.get('[data-test="project-submitted-label"');
+ });
+
+ it("log on a project taken over", function () {
+ cy.intercept("POST", "/api/graphql", (req) => {
+ stubQuery(req, "getDepartments", "departments.json");
+ stubMutation(req, "candidate_login", "candidate2-taken-over.json");
+ stubQuery(req, "getReferential", "referential.json");
+ stubQuery(req, "activeFeaturesForConnectedUser", "features.json");
+ });
+ cy.login();
+ cy.wait("@candidate_login");
+ cy.wait("@getReferential");
+ cy.wait("@activeFeaturesForConnectedUser");
+
+ cy.get('[data-test="project-submitted-label"');
+ });
+});
diff --git a/packages/reva-candidate/cypress/e2e/training-program.cy.js b/packages/reva-candidate/cypress/e2e/training-program.cy.js
new file mode 100644
index 000000000..33237a26e
--- /dev/null
+++ b/packages/reva-candidate/cypress/e2e/training-program.cy.js
@@ -0,0 +1,165 @@
+import { stubMutation, stubQuery } from "../utils/graphql";
+
+context("Training Program", () => {
+ describe("Testing descriptions", () => {
+ beforeEach(() => {
+ cy.intercept("POST", "/api/graphql", (req) => {
+ stubQuery(req, "getDepartments", "departments.json");
+ stubMutation(
+ req,
+ "candidate_login",
+ "candidate2-training-confirmed.json",
+ );
+ stubQuery(req, "getReferential", "referential.json");
+ stubQuery(req, "activeFeaturesForConnectedUser", "features.json");
+ });
+ cy.login();
+ cy.wait("@candidate_login");
+ cy.wait("@getReferential");
+ cy.wait("@activeFeaturesForConnectedUser");
+ cy.get('[data-test="view-training-program-button"]').click();
+ });
+
+ it("display all fields", () => {
+ cy.get('[data-test="general-informations"]')
+ .children("li")
+ .should("have.length", 3);
+
+ cy.get('[data-test="mandatory-training-section"]')
+ .children("ul")
+ .children("li")
+ .should("have.length", 3);
+
+ cy.get('[data-test="basic-skills-section"]')
+ .children("ul")
+ .children("li")
+ .should("have.length", 2);
+
+ cy.get('[data-test="certificate-skills-section"]')
+ .children("p")
+ .should("have.text", "Blocs de compétences métier");
+
+ cy.get('[data-test="other-training-section"]')
+ .children("p")
+ .should("have.text", "Autres actions de formations complémentaires");
+ });
+ });
+
+ describe("Testing descriptions with missing fields", () => {
+ beforeEach(() => {
+ cy.intercept("POST", "/api/graphql", (req) => {
+ stubQuery(req, "getDepartments", "departments.json");
+ stubQuery(
+ req,
+ "candidate_login",
+ "candidate2-missing-training-fields.json",
+ );
+ stubQuery(req, "getReferential", "referential.json");
+ stubQuery(req, "activeFeaturesForConnectedUser", "features.json");
+ });
+ cy.login();
+ cy.wait("@candidate_login");
+ cy.wait("@getReferential");
+ cy.wait("@activeFeaturesForConnectedUser");
+ cy.get('[data-test="view-training-program-button"]').click();
+ });
+
+ it("don't display missing fields", () => {
+ cy.get('[data-test="general-informations"]')
+ .children("li")
+ .should("have.length", 3);
+
+ cy.get('[data-test="mandatory-training-section"]').should("not.exist");
+
+ cy.get('[data-test="basic-skills-section"]').should("not.exist");
+
+ cy.get('[data-test="certificate-skills-section"]')
+ .children("p")
+ .should("have.text", "Blocs de compétences métier");
+
+ cy.get('[data-test="other-training-section"]')
+ .children("p")
+ .should("have.text", "Autres actions de formations complémentaires");
+ });
+ });
+
+ describe("Testing Checkbox logic", () => {
+ it("validates checked condition and its mechanics", () => {
+ cy.intercept("POST", "/api/graphql", (req) => {
+ stubQuery(req, "getDepartments", "departments.json");
+ stubMutation(req, "candidate_login", "candidate2-training-sent.json");
+ stubQuery(req, "getReferential", "referential.json");
+ stubQuery(
+ req,
+ "candidacy_confirmTrainingForm",
+ "confirm-training-form.json",
+ );
+ stubQuery(req, "activeFeaturesForConnectedUser", "features.json");
+ });
+ cy.login();
+ cy.wait("@candidate_login");
+ cy.wait("@getReferential");
+ cy.wait("@activeFeaturesForConnectedUser");
+ cy.get('[data-test="validate-training-program-button"]').click();
+
+ cy.get('[data-test="accept-conditions-checkbox-group"]')
+ .find("input")
+ .not("be.checked");
+
+ cy.get('[data-test="submit-training-program-button"]').should(
+ "be.disabled",
+ );
+
+ cy.get('[data-test="accept-conditions-checkbox-group"]')
+ .find("label")
+ .click({ multiple: true });
+
+ cy.get('[data-test="submit-training-program-button"]')
+ .should("be.enabled")
+ .click();
+
+ cy.wait("@candidacy_confirmTrainingForm");
+ });
+ });
+
+ describe("Testing training confirmed but sent again", () => {
+ it("should be able to accept and submit the training again", () => {
+ cy.intercept("POST", "/api/graphql", (req) => {
+ stubQuery(req, "getDepartments", "departments.json");
+ stubMutation(
+ req,
+ "candidate_login",
+ "candidate2-training-confirmed-sent-again.json",
+ );
+ stubQuery(req, "getReferential", "referential.json");
+ stubQuery(
+ req,
+ "candidacy_confirmTrainingForm",
+ "confirm-training-form.json",
+ );
+ stubQuery(req, "activeFeaturesForConnectedUser", "features.json");
+ });
+ cy.login();
+ cy.wait("@candidate_login");
+ cy.wait("@getReferential");
+ cy.wait("@activeFeaturesForConnectedUser");
+ cy.get('[data-test="validate-training-program-button"]').click();
+
+ cy.get('[data-test="accept-conditions-checkbox-group"]')
+ .find("input")
+ .not("be.checked");
+
+ cy.get('[data-test="submit-training-program-button"]').should(
+ "be.disabled",
+ );
+ cy.get('[data-test="accept-conditions-checkbox-group"]')
+ .find("label")
+ .click({ multiple: true });
+
+ cy.get('[data-test="submit-training-program-button"]')
+ .should("be.enabled")
+ .click();
+ cy.wait("@candidacy_confirmTrainingForm");
+ });
+ });
+});
diff --git a/packages/reva-candidate/cypress/fixtures/added-experience1.json b/packages/reva-candidate/cypress/fixtures/added-experience1.json
new file mode 100644
index 000000000..5a887a15b
--- /dev/null
+++ b/packages/reva-candidate/cypress/fixtures/added-experience1.json
@@ -0,0 +1,11 @@
+{
+ "data": {
+ "candidacy_addExperience": {
+ "id": "id1",
+ "title": "Experience 1",
+ "startedAt": 1548892800000,
+ "duration": "betweenOneAndThreeYears",
+ "description": "Description 1"
+ }
+ }
+}
diff --git a/packages/reva-candidate/cypress/fixtures/auth-step1.html b/packages/reva-candidate/cypress/fixtures/auth-step1.html
new file mode 100644
index 000000000..f4bf045a6
--- /dev/null
+++ b/packages/reva-candidate/cypress/fixtures/auth-step1.html
@@ -0,0 +1,12 @@
+
+
+
+
+
+
diff --git a/packages/reva-candidate/cypress/fixtures/candidate1-certification-and-goals-selected.json b/packages/reva-candidate/cypress/fixtures/candidate1-certification-and-goals-selected.json
new file mode 100644
index 000000000..fb28357b1
--- /dev/null
+++ b/packages/reva-candidate/cypress/fixtures/candidate1-certification-and-goals-selected.json
@@ -0,0 +1,50 @@
+{
+ "data": {
+ "candidateLogged": {
+ "tokens": {
+ "accessToken": "abc",
+ "refreshToken": "def",
+ "idToken": "ghi"
+ },
+ "candidate": {
+ "firstname": "John",
+ "lastname": "Doe",
+ "email": "email@example.com",
+ "phone": "06-01-02-03-04",
+ "candidacy": {
+ "id": "c1",
+ "certificationId": null,
+ "organism": null,
+ "createdAt": null,
+ "certification": {
+ "id": "c1",
+ "label": "Titre 1",
+ "summary": "résumé 1",
+ "codeRncp": "34691",
+ "status": "AVAILABLE"
+ },
+ "experiences": [],
+ "goals": [
+ {
+ "id": "goal1"
+ }
+ ],
+ "candidacyStatuses": [
+ {
+ "status": "PROJET",
+ "isActive": true
+ }
+ ],
+ "appointmentCount": 0,
+ "certificateSkills": null,
+ "otherTraining": null,
+ "individualHourCount": null,
+ "collectiveHourCount": null,
+ "additionalHourCount": null,
+ "basicSkills": [],
+ "mandatoryTrainings": []
+ }
+ }
+ }
+ }
+}
diff --git a/packages/reva-candidate/cypress/fixtures/candidate1.json b/packages/reva-candidate/cypress/fixtures/candidate1.json
new file mode 100644
index 000000000..645f64844
--- /dev/null
+++ b/packages/reva-candidate/cypress/fixtures/candidate1.json
@@ -0,0 +1,40 @@
+{
+ "data": {
+ "candidateLogged": {
+ "tokens": {
+ "accessToken": "abc",
+ "refreshToken": "def",
+ "idToken": "ghi"
+ },
+ "candidate": {
+ "firstname": "John",
+ "lastname": "Doe",
+ "email": "email@example.com",
+ "phone": "06 01 02 03 04",
+ "candidacy": {
+ "id": "c1",
+ "certificationId": null,
+ "organism": null,
+ "createdAt": null,
+ "certification": null,
+ "experiences": [],
+ "goals": [],
+ "candidacyStatuses": [
+ {
+ "status": "PROJET",
+ "isActive": true
+ }
+ ],
+ "appointmentCount": 0,
+ "certificateSkills": null,
+ "otherTraining": null,
+ "individualHourCount": null,
+ "collectiveHourCount": null,
+ "additionalHourCount": null,
+ "basicSkills": [],
+ "mandatoryTrainings": []
+ }
+ }
+ }
+ }
+}
diff --git a/packages/reva-candidate/cypress/fixtures/candidate2-dropped-out.json b/packages/reva-candidate/cypress/fixtures/candidate2-dropped-out.json
new file mode 100644
index 000000000..7b18c2e37
--- /dev/null
+++ b/packages/reva-candidate/cypress/fixtures/candidate2-dropped-out.json
@@ -0,0 +1,76 @@
+{
+ "data": {
+ "candidateLogged": {
+ "tokens": {
+ "accessToken": "abc",
+ "refreshToken": "def",
+ "idToken": "ghi"
+ },
+ "candidate": {
+ "firstname": "John",
+ "lastname": "Doe",
+ "email": "email@example.com",
+ "phone": "06-01-02-03-04",
+ "candidacy": {
+ "id": "c2",
+ "organism": {
+ "id": "o1",
+ "label": "Accompagnateur 1",
+ "address": "1 rue de l'exemple",
+ "zip": "75000",
+ "city": "Paris",
+ "contactAdministrativeEmail": "contact@example.com"
+ },
+ "createdAt": 1664376421912,
+ "certification": {
+ "id": "c1",
+ "label": "Titre 1",
+ "summary": "résumé 1",
+ "codeRncp": "34691",
+ "status": "AVAILABLE"
+ },
+
+ "experiences": [
+ {
+ "id": "e1",
+ "title": "Experience 1",
+ "startedAt": 1580428800000,
+ "duration": "unknown",
+ "description": "description 1"
+ }
+ ],
+ "goals": [
+ {
+ "id": "goal1"
+ }
+ ],
+ "candidacyStatuses": [
+ {
+ "status": "PROJET",
+ "isActive": false
+ },
+ {
+ "status": "VALIDATION",
+ "isActive": false
+ },
+ {
+ "status": "PRISE_EN_CHARGE",
+ "isActive": true
+ }
+ ],
+ "candidacyDropOut": {
+ "droppedOutAt": 1580428800000
+ },
+ "appointmentCount": 0,
+ "certificateSkills": "Blocs de compétences métier",
+ "otherTraining": null,
+ "individualHourCount": null,
+ "collectiveHourCount": null,
+ "additionalHourCount": null,
+ "basicSkills": [],
+ "mandatoryTrainings": []
+ }
+ }
+ }
+ }
+}
diff --git a/packages/reva-candidate/cypress/fixtures/candidate2-funding-request-sent.json b/packages/reva-candidate/cypress/fixtures/candidate2-funding-request-sent.json
new file mode 100644
index 000000000..1225510e6
--- /dev/null
+++ b/packages/reva-candidate/cypress/fixtures/candidate2-funding-request-sent.json
@@ -0,0 +1,98 @@
+{
+ "data": {
+ "candidateLogged": {
+ "tokens": {
+ "accessToken": "abc",
+ "refreshToken": "def",
+ "idToken": "ghi"
+ },
+ "candidate": {
+ "firstname": "John",
+ "lastname": "Doe",
+ "email": "email@example.com",
+ "phone": "06-01-02-03-04",
+ "candidacy": {
+ "id": "c2",
+ "organism": {
+ "id": "o1",
+ "label": "Accompagnateur 1",
+ "address": "1 rue de l'exemple",
+ "zip": "75000",
+ "city": "Paris",
+ "contactAdministrativeEmail": "contact@example.com"
+ },
+ "createdAt": 1664376421912,
+ "certification": {
+ "id": "c1",
+ "label": "Titre 1",
+ "summary": "résumé 1",
+ "codeRncp": "34691",
+ "status": "AVAILABLE"
+ },
+
+ "experiences": [
+ {
+ "id": "e1",
+ "title": "Experience 1",
+ "startedAt": 1580428800000,
+ "duration": "unknown",
+ "description": "description 1"
+ }
+ ],
+ "goals": [
+ {
+ "id": "goal1"
+ }
+ ],
+ "candidacyStatuses": [
+ {
+ "status": "PROJET",
+ "isActive": false
+ },
+ {
+ "status": "PRISE_EN_CHARGE",
+ "isActive": false
+ },
+ {
+ "status": "PARCOURS_ENVOYE",
+ "isActive": false
+ },
+ {
+ "status": "PARCOURS_CONFIRME",
+ "isActive": false
+ },
+ {
+ "status": "DEMANDE_FINANCEMENT_ENVOYE",
+ "isActive": true
+ }
+ ],
+ "appointmentCount": 0,
+ "certificateSkills": "Blocs de compétences métier",
+ "otherTraining": "Autres actions de formations complémentaires",
+ "individualHourCount": 1,
+ "collectiveHourCount": 2,
+ "additionalHourCount": 3,
+ "basicSkills": [
+ {
+ "label": "Base 1"
+ },
+ {
+ "label": "Base 2"
+ }
+ ],
+ "mandatoryTrainings": [
+ {
+ "label": "Obligatoire 1"
+ },
+ {
+ "label": "Obligatoire 2"
+ },
+ {
+ "label": "Obligatoire 3"
+ }
+ ]
+ }
+ }
+ }
+ }
+}
diff --git a/packages/reva-candidate/cypress/fixtures/candidate2-missing-training-fields.json b/packages/reva-candidate/cypress/fixtures/candidate2-missing-training-fields.json
new file mode 100644
index 000000000..1ac01ccc2
--- /dev/null
+++ b/packages/reva-candidate/cypress/fixtures/candidate2-missing-training-fields.json
@@ -0,0 +1,76 @@
+{
+ "data": {
+ "candidateLogged": {
+ "tokens": {
+ "accessToken": "abc",
+ "refreshToken": "def",
+ "idToken": "ghi"
+ },
+ "candidate": {
+ "firstname": "John",
+ "lastname": "Doe",
+ "email": "email@example.com",
+ "phone": "06-01-02-03-04",
+ "candidacy": {
+ "id": "c2",
+ "organism": {
+ "id": "o1",
+ "label": "Accompagnateur 1",
+ "address": "1 rue de l'exemple",
+ "zip": "75000",
+ "city": "Paris",
+ "contactAdministrativeEmail": "contact@example.com"
+ },
+ "createdAt": 1664376421912,
+ "certification": {
+ "id": "c1",
+ "label": "Titre 1",
+ "summary": "résumé 1",
+ "codeRncp": "34691",
+ "status": "AVAILABLE"
+ },
+ "experiences": [
+ {
+ "id": "e1",
+ "title": "Experience 1",
+ "startedAt": 1580428800000,
+ "duration": "unknown",
+ "description": "description 1"
+ }
+ ],
+ "goals": [
+ {
+ "id": "goal1"
+ }
+ ],
+ "candidacyStatuses": [
+ {
+ "status": "PROJET",
+ "isActive": false
+ },
+ {
+ "status": "PRISE_EN_CHARGE",
+ "isActive": false
+ },
+ {
+ "status": "PARCOURS_ENVOYE",
+ "isActive": false
+ },
+ {
+ "status": "PARCOURS_CONFIRME",
+ "isActive": true
+ }
+ ],
+ "appointmentCount": 0,
+ "additionalHourCount": null,
+ "mandatoryTrainings": [],
+ "certificateSkills": "Blocs de compétences métier",
+ "otherTraining": "Autres actions de formations complémentaires",
+ "individualHourCount": 1,
+ "collectiveHourCount": null,
+ "basicSkills": null
+ }
+ }
+ }
+ }
+}
diff --git a/packages/reva-candidate/cypress/fixtures/candidate2-submitted.json b/packages/reva-candidate/cypress/fixtures/candidate2-submitted.json
new file mode 100644
index 000000000..66e26613a
--- /dev/null
+++ b/packages/reva-candidate/cypress/fixtures/candidate2-submitted.json
@@ -0,0 +1,69 @@
+{
+ "data": {
+ "candidateLogged": {
+ "tokens": {
+ "accessToken": "abc",
+ "refreshToken": "def",
+ "idToken": "ghi"
+ },
+ "candidate": {
+ "firstname": "John",
+ "lastname": "Doe",
+ "email": "email@example.com",
+ "phone": "06-01-02-03-04",
+ "candidacy": {
+ "id": "c2",
+ "organism": {
+ "id": "o1",
+ "label": "Accompagnateur 1",
+ "address": "1 rue de l'exemple",
+ "zip": "75000",
+ "city": "Paris",
+ "contactAdministrativeEmail": "contact@example.com"
+ },
+ "createdAt": 1664376421912,
+ "certification": {
+ "id": "c1",
+ "label": "Titre 1",
+ "summary": "résumé 1",
+ "codeRncp": "34691",
+ "status": "AVAILABLE"
+ },
+
+ "experiences": [
+ {
+ "id": "e1",
+ "title": "Experience 1",
+ "startedAt": 1580428800000,
+ "duration": "unknown",
+ "description": "description 1"
+ }
+ ],
+ "goals": [
+ {
+ "id": "goal1"
+ }
+ ],
+ "candidacyStatuses": [
+ {
+ "status": "PROJET",
+ "isActive": false
+ },
+ {
+ "status": "VALIDATION",
+ "isActive": true
+ }
+ ],
+ "appointmentCount": 0,
+ "certificateSkills": "Blocs de compétences métier",
+ "otherTraining": null,
+ "individualHourCount": null,
+ "collectiveHourCount": null,
+ "additionalHourCount": null,
+ "basicSkills": [],
+ "mandatoryTrainings": []
+ }
+ }
+ }
+ }
+}
diff --git a/packages/reva-candidate/cypress/fixtures/candidate2-taken-over.json b/packages/reva-candidate/cypress/fixtures/candidate2-taken-over.json
new file mode 100644
index 000000000..4cf7c8e63
--- /dev/null
+++ b/packages/reva-candidate/cypress/fixtures/candidate2-taken-over.json
@@ -0,0 +1,73 @@
+{
+ "data": {
+ "candidateLogged": {
+ "tokens": {
+ "accessToken": "abc",
+ "refreshToken": "def",
+ "idToken": "ghi"
+ },
+ "candidate": {
+ "firstname": "John",
+ "lastname": "Doe",
+ "email": "email@example.com",
+ "phone": "06-01-02-03-04",
+ "candidacy": {
+ "id": "c2",
+ "organism": {
+ "id": "o1",
+ "label": "Accompagnateur 1",
+ "address": "1 rue de l'exemple",
+ "zip": "75000",
+ "city": "Paris",
+ "contactAdministrativeEmail": "contact@example.com"
+ },
+ "createdAt": 1664376421912,
+ "certification": {
+ "id": "c1",
+ "label": "Titre 1",
+ "summary": "résumé 1",
+ "codeRncp": "34691",
+ "status": "AVAILABLE"
+ },
+
+ "experiences": [
+ {
+ "id": "e1",
+ "title": "Experience 1",
+ "startedAt": 1580428800000,
+ "duration": "unknown",
+ "description": "description 1"
+ }
+ ],
+ "goals": [
+ {
+ "id": "goal1"
+ }
+ ],
+ "candidacyStatuses": [
+ {
+ "status": "PROJET",
+ "isActive": false
+ },
+ {
+ "status": "VALIDATION",
+ "isActive": false
+ },
+ {
+ "status": "PRISE_EN_CHARGE",
+ "isActive": true
+ }
+ ],
+ "appointmentCount": 0,
+ "certificateSkills": "Blocs de compétences métier",
+ "otherTraining": null,
+ "individualHourCount": null,
+ "collectiveHourCount": null,
+ "additionalHourCount": null,
+ "basicSkills": [],
+ "mandatoryTrainings": []
+ }
+ }
+ }
+ }
+}
diff --git a/packages/reva-candidate/cypress/fixtures/candidate2-training-confirmed-sent-again.json b/packages/reva-candidate/cypress/fixtures/candidate2-training-confirmed-sent-again.json
new file mode 100644
index 000000000..12dae16b0
--- /dev/null
+++ b/packages/reva-candidate/cypress/fixtures/candidate2-training-confirmed-sent-again.json
@@ -0,0 +1,98 @@
+{
+ "data": {
+ "candidateLogged": {
+ "tokens": {
+ "accessToken": "abc",
+ "refreshToken": "def",
+ "idToken": "ghi"
+ },
+ "candidate": {
+ "firstname": "John",
+ "lastname": "Doe",
+ "email": "email@example.com",
+ "phone": "06-01-02-03-04",
+ "candidacy": {
+ "id": "c2",
+ "organism": {
+ "id": "o1",
+ "label": "Accompagnateur 1",
+ "address": "1 rue de l'exemple",
+ "zip": "75000",
+ "city": "Paris",
+ "contactAdministrativeEmail": "contact@example.com"
+ },
+ "createdAt": 1664376421912,
+ "certification": {
+ "id": "c1",
+ "label": "Titre 1",
+ "summary": "résumé 1",
+ "codeRncp": "34691",
+ "status": "AVAILABLE"
+ },
+
+ "experiences": [
+ {
+ "id": "e1",
+ "title": "Experience 1",
+ "startedAt": 1580428800000,
+ "duration": "unknown",
+ "description": "description 1"
+ }
+ ],
+ "goals": [
+ {
+ "id": "goal1"
+ }
+ ],
+ "candidacyStatuses": [
+ {
+ "status": "PROJET",
+ "isActive": false
+ },
+ {
+ "status": "PRISE_EN_CHARGE",
+ "isActive": false
+ },
+ {
+ "status": "PARCOURS_ENVOYE",
+ "isActive": false
+ },
+ {
+ "status": "PARCOURS_CONFIRME",
+ "isActive": false
+ },
+ {
+ "status": "PARCOURS_ENVOYE",
+ "isActive": true
+ }
+ ],
+ "appointmentCount": 0,
+ "certificateSkills": "Blocs de compétences métier",
+ "otherTraining": "Autres actions de formations complémentaires",
+ "individualHourCount": 1,
+ "collectiveHourCount": 2,
+ "additionalHourCount": 3,
+ "basicSkills": [
+ {
+ "label": "Base 1"
+ },
+ {
+ "label": "Base 2"
+ }
+ ],
+ "mandatoryTrainings": [
+ {
+ "label": "Obligatoire 1"
+ },
+ {
+ "label": "Obligatoire 2"
+ },
+ {
+ "label": "Obligatoire 3"
+ }
+ ]
+ }
+ }
+ }
+ }
+}
diff --git a/packages/reva-candidate/cypress/fixtures/candidate2-training-confirmed.json b/packages/reva-candidate/cypress/fixtures/candidate2-training-confirmed.json
new file mode 100644
index 000000000..77a3f274b
--- /dev/null
+++ b/packages/reva-candidate/cypress/fixtures/candidate2-training-confirmed.json
@@ -0,0 +1,94 @@
+{
+ "data": {
+ "candidateLogged": {
+ "tokens": {
+ "accessToken": "abc",
+ "refreshToken": "def",
+ "idToken": "ghi"
+ },
+ "candidate": {
+ "firstname": "John",
+ "lastname": "Doe",
+ "email": "email@example.com",
+ "phone": "06-01-02-03-04",
+ "candidacy": {
+ "id": "c2",
+ "organism": {
+ "id": "o1",
+ "label": "Accompagnateur 1",
+ "address": "1 rue de l'exemple",
+ "zip": "75000",
+ "city": "Paris",
+ "contactAdministrativeEmail": "contact@example.com"
+ },
+ "createdAt": 1664376421912,
+ "certification": {
+ "id": "c1",
+ "label": "Titre 1",
+ "summary": "résumé 1",
+ "codeRncp": "34691",
+ "status": "AVAILABLE"
+ },
+
+ "experiences": [
+ {
+ "id": "e1",
+ "title": "Experience 1",
+ "startedAt": 1580428800000,
+ "duration": "unknown",
+ "description": "description 1"
+ }
+ ],
+ "goals": [
+ {
+ "id": "goal1"
+ }
+ ],
+ "candidacyStatuses": [
+ {
+ "status": "PROJET",
+ "isActive": false
+ },
+ {
+ "status": "PRISE_EN_CHARGE",
+ "isActive": false
+ },
+ {
+ "status": "PARCOURS_ENVOYE",
+ "isActive": false
+ },
+ {
+ "status": "PARCOURS_CONFIRME",
+ "isActive": true
+ }
+ ],
+ "appointmentCount": 0,
+ "certificateSkills": "Blocs de compétences métier",
+ "otherTraining": "Autres actions de formations complémentaires",
+ "individualHourCount": 1,
+ "collectiveHourCount": 2,
+ "additionalHourCount": 3,
+ "basicSkills": [
+ {
+ "label": "Base 1"
+ },
+ {
+ "label": "Base 2"
+ }
+ ],
+ "mandatoryTrainings": [
+ {
+ "label": "Obligatoire 1"
+ },
+ {
+ "label": "Obligatoire 2"
+ },
+ {
+ "label": "Obligatoire 3"
+ }
+ ]
+ }
+ }
+ }
+ }
+}
diff --git a/packages/reva-candidate/cypress/fixtures/candidate2-training-sent.json b/packages/reva-candidate/cypress/fixtures/candidate2-training-sent.json
new file mode 100644
index 000000000..88684f5fe
--- /dev/null
+++ b/packages/reva-candidate/cypress/fixtures/candidate2-training-sent.json
@@ -0,0 +1,91 @@
+{
+ "data": {
+ "candidateLogged": {
+ "tokens": {
+ "accessToken": "abc",
+ "refreshToken": "def",
+ "idToken": "ghi"
+ },
+ "candidate": {
+ "firstname": "John",
+ "lastname": "Doe",
+ "email": "email@example.com",
+ "phone": "06-01-02-03-04",
+ "candidacy": {
+ "id": "c2",
+ "organism": {
+ "id": "o1",
+ "label": "Accompagnateur 1",
+ "address": "1 rue de l'exemple",
+ "zip": "75000",
+ "city": "Paris",
+ "contactAdministrativeEmail": "contact@example.com"
+ },
+ "createdAt": 1664376421912,
+ "certification": {
+ "id": "c1",
+ "label": "Titre 1",
+ "summary": "résumé 1",
+ "codeRncp": "34691",
+ "status": "AVAILABLE"
+ },
+ "email": null,
+ "phone": "0643202050",
+ "experiences": [
+ {
+ "id": "e1",
+ "title": "Experience 1",
+ "startedAt": 1580428800000,
+ "duration": "unknown",
+ "description": "description 1"
+ }
+ ],
+ "goals": [
+ {
+ "id": "goal1"
+ }
+ ],
+ "candidacyStatuses": [
+ {
+ "status": "PROJET",
+ "isActive": false
+ },
+ {
+ "status": "PRISE_EN_CHARGE",
+ "isActive": false
+ },
+ {
+ "status": "PARCOURS_ENVOYE",
+ "isActive": true
+ }
+ ],
+ "appointmentCount": 0,
+ "certificateSkills": "Blocs de compétences métier",
+ "otherTraining": "Autres actions de formations complémentaires",
+ "individualHourCount": 1,
+ "collectiveHourCount": 2,
+ "additionalHourCount": 3,
+ "basicSkills": [
+ {
+ "label": "Base 1"
+ },
+ {
+ "label": "Base 2"
+ }
+ ],
+ "mandatoryTrainings": [
+ {
+ "label": "Obligatoire 1"
+ },
+ {
+ "label": "Obligatoire 2"
+ },
+ {
+ "label": "Obligatoire 3"
+ }
+ ]
+ }
+ }
+ }
+ }
+}
diff --git a/packages/reva-candidate/cypress/fixtures/candidate2.json b/packages/reva-candidate/cypress/fixtures/candidate2.json
new file mode 100644
index 000000000..6f6df642b
--- /dev/null
+++ b/packages/reva-candidate/cypress/fixtures/candidate2.json
@@ -0,0 +1,64 @@
+{
+ "data": {
+ "candidateLogged": {
+ "tokens": {
+ "accessToken": "abc",
+ "refreshToken": "def",
+ "idToken": "ghi"
+ },
+ "candidate": {
+ "firstname": "John",
+ "lastname": "Doe",
+ "email": "email@example.com",
+ "phone": "06-01-02-03-04",
+ "candidacy": {
+ "id": "c2",
+ "organism": {
+ "id": "o1",
+ "label": "Accompagnateur 1",
+ "address": "1 rue de l'exemple",
+ "zip": "75000",
+ "city": "Paris",
+ "contactAdministrativeEmail": "contact@example.com"
+ },
+ "createdAt": 1664376421912,
+ "certification": {
+ "id": "c1",
+ "label": "Titre 1",
+ "summary": "résumé 1",
+ "codeRncp": "34691",
+ "status": "AVAILABLE"
+ },
+ "experiences": [
+ {
+ "id": "e1",
+ "title": "Experience 1",
+ "startedAt": 1580428800000,
+ "duration": "unknown",
+ "description": "description 1"
+ }
+ ],
+ "goals": [
+ {
+ "id": "goal1"
+ }
+ ],
+ "candidacyStatuses": [
+ {
+ "status": "PROJET",
+ "isActive": true
+ }
+ ],
+ "appointmentCount": 0,
+ "certificateSkills": null,
+ "otherTraining": null,
+ "individualHourCount": null,
+ "collectiveHourCount": null,
+ "additionalHourCount": null,
+ "basicSkills": [],
+ "mandatoryTrainings": []
+ }
+ }
+ }
+ }
+}
diff --git a/packages/reva-candidate/cypress/fixtures/candidate3.json b/packages/reva-candidate/cypress/fixtures/candidate3.json
new file mode 100644
index 000000000..ee6b4429a
--- /dev/null
+++ b/packages/reva-candidate/cypress/fixtures/candidate3.json
@@ -0,0 +1,58 @@
+{
+ "data": {
+ "candidateLogged": {
+ "tokens": {
+ "accessToken": "abc",
+ "refreshToken": "def",
+ "idToken": "ghi"
+ },
+ "candidate": {
+ "firstname": "John",
+ "lastname": "Doe",
+ "email": "email@example.com",
+ "phone": "06-01-02-03-04",
+ "candidacy": {
+ "id": "c3",
+ "organism": null,
+ "createdAt": 1664376421912,
+ "certification": {
+ "id": "c1",
+ "label": "Titre 1",
+ "summary": "résumé 1",
+ "codeRncp": "34691",
+ "status": "AVAILABLE"
+ },
+ "experiences": [
+ {
+ "id": "e1",
+ "title": "Experience 1",
+ "startedAt": 1580428800000,
+ "duration": "unknown",
+ "description": "description 1"
+ }
+ ],
+ "goals": [
+ {
+ "id": "goal1"
+ }
+ ],
+ "candidacyStatuses": [
+ {
+ "status": "PROJET",
+ "isActive": true
+ }
+ ],
+ "appointmentCount": 0,
+ "certificateSkills": null,
+ "otherTraining": null,
+ "individualHourCount": null,
+ "collectiveHourCount": null,
+ "additionalHourCount": null,
+ "basicSkills": [],
+ "mandatoryTrainings": [],
+ "department": { "id": "department1" }
+ }
+ }
+ }
+ }
+}
diff --git a/packages/reva-candidate/cypress/fixtures/certifications.json b/packages/reva-candidate/cypress/fixtures/certifications.json
new file mode 100644
index 000000000..f366ca4b3
--- /dev/null
+++ b/packages/reva-candidate/cypress/fixtures/certifications.json
@@ -0,0 +1,28 @@
+{
+ "data": {
+ "searchCertificationsForCandidate": {
+ "rows": [
+ {
+ "id": "c1",
+ "label": "Titre 1",
+ "summary": "résumé 1",
+ "codeRncp": "34691",
+ "status": "AVAILABLE"
+ },
+ {
+ "id": "c2",
+ "label": "Titre 2",
+ "summary": "résumé 2",
+ "codeRncp": "34692",
+ "status": "AVAILABLE"
+ }
+ ],
+ "info": {
+ "totalRows": 3,
+ "currentPage": 1,
+ "totalPages": 1,
+ "pageLength": 10
+ }
+ }
+ }
+}
diff --git a/packages/reva-candidate/cypress/fixtures/confirm-training-form.json b/packages/reva-candidate/cypress/fixtures/confirm-training-form.json
new file mode 100644
index 000000000..40ec214a8
--- /dev/null
+++ b/packages/reva-candidate/cypress/fixtures/confirm-training-form.json
@@ -0,0 +1,8 @@
+{
+ "data": {
+ "candidacy_confirmTrainingForm": {
+ "createdAt": 1664376421912,
+ "id": "c1"
+ }
+ }
+}
diff --git a/packages/reva-candidate/cypress/fixtures/contact.json b/packages/reva-candidate/cypress/fixtures/contact.json
new file mode 100644
index 000000000..9eefd3a8f
--- /dev/null
+++ b/packages/reva-candidate/cypress/fixtures/contact.json
@@ -0,0 +1,11 @@
+{
+ "data": {
+ "candidacy_updateContact": {
+ "id": "device1",
+ "firstname": "John 2",
+ "lastname": "Doe 2",
+ "email": "email2@example.com",
+ "phone": "06 01 02 03 05"
+ }
+ }
+}
diff --git a/packages/reva-candidate/cypress/fixtures/departments.json b/packages/reva-candidate/cypress/fixtures/departments.json
new file mode 100644
index 000000000..cf4a0ac6b
--- /dev/null
+++ b/packages/reva-candidate/cypress/fixtures/departments.json
@@ -0,0 +1,16 @@
+{
+ "data": {
+ "getDepartments": [
+ {
+ "id": "department1",
+ "code": "1",
+ "label": "Région 1"
+ },
+ {
+ "id": "department2",
+ "code": "2",
+ "label": "Région 2"
+ }
+ ]
+ }
+}
diff --git a/packages/reva-candidate/cypress/fixtures/example.json b/packages/reva-candidate/cypress/fixtures/example.json
new file mode 100644
index 000000000..0967ef424
--- /dev/null
+++ b/packages/reva-candidate/cypress/fixtures/example.json
@@ -0,0 +1 @@
+{}
diff --git a/packages/reva-candidate/cypress/fixtures/features.json b/packages/reva-candidate/cypress/fixtures/features.json
new file mode 100644
index 000000000..4513aea00
--- /dev/null
+++ b/packages/reva-candidate/cypress/fixtures/features.json
@@ -0,0 +1,5 @@
+{
+ "data": {
+ "activeFeaturesForConnectedUser": []
+ }
+}
diff --git a/packages/reva-candidate/cypress/fixtures/login-expired.json b/packages/reva-candidate/cypress/fixtures/login-expired.json
new file mode 100644
index 000000000..17839aa92
--- /dev/null
+++ b/packages/reva-candidate/cypress/fixtures/login-expired.json
@@ -0,0 +1,19 @@
+{
+ "errors": [
+ {
+ "message": "error",
+ "locations": [
+ {
+ "line": 6,
+ "column": 3
+ }
+ ],
+ "path": ["candidate_login"],
+ "extensions": {
+ "code": "CANDIDATE_INVALID_TOKEN",
+ "message": "error"
+ }
+ }
+ ],
+ "data": null
+}
diff --git a/packages/reva-candidate/cypress/fixtures/login-unknown.json b/packages/reva-candidate/cypress/fixtures/login-unknown.json
new file mode 100644
index 000000000..bdf0942d3
--- /dev/null
+++ b/packages/reva-candidate/cypress/fixtures/login-unknown.json
@@ -0,0 +1,14 @@
+{
+ "errors": [
+ {
+ "message": "Candidat non trouvé",
+ "locations": [{ "line": 2, "column": 3 }],
+ "path": ["candidateLogged"],
+ "extensions": {
+ "code": "ACCOUNT_IN_IAM_NOT_FOUND",
+ "message": "Candidat non trouvé",
+ "errors": []
+ }
+ }
+ ]
+}
diff --git a/packages/reva-candidate/cypress/fixtures/login.json b/packages/reva-candidate/cypress/fixtures/login.json
new file mode 100644
index 000000000..ddde01ac8
--- /dev/null
+++ b/packages/reva-candidate/cypress/fixtures/login.json
@@ -0,0 +1,3 @@
+{
+ "data": { "candidate_askForLogin": "result" }
+}
diff --git a/packages/reva-candidate/cypress/fixtures/organism.json b/packages/reva-candidate/cypress/fixtures/organism.json
new file mode 100644
index 000000000..533ec5eb7
--- /dev/null
+++ b/packages/reva-candidate/cypress/fixtures/organism.json
@@ -0,0 +1,37 @@
+{
+ "data": {
+ "getRandomOrganismsForCandidacy": {
+ "rows": [
+ {
+ "id": "o1",
+ "label": "Architecte 1",
+ "address": "1 rue de l'exemple",
+ "zip": "75000",
+ "city": "Paris",
+ "contactAdministrativeEmail": "email@exemple.com",
+ "contactAdministrativePhone": "0111111111",
+ "informationsCommerciales": {
+ "adresseNumeroEtNomDeRue": "1 rue de l'exemple",
+ "adresseCodePostal": "75000",
+ "adresseVille": "Paris",
+ "conformeNormesAccessbilite": "CONFORME"
+ },
+ "isOnSite": true,
+ "isRemote": false
+ },
+ {
+ "id": "o2",
+ "label": "Architecte 2",
+ "address": "2 rue de l'exemple",
+ "zip": "44000",
+ "city": "Nantes",
+ "contactAdministrativeEmail": "email2@exemple.com",
+ "contactAdministrativePhone": "0222222222",
+ "isOnSite": false,
+ "isRemote": true
+ }
+ ],
+ "totalRows": 2
+ }
+ }
+}
diff --git a/packages/reva-candidate/cypress/fixtures/referencial.json b/packages/reva-candidate/cypress/fixtures/referencial.json
new file mode 100644
index 000000000..bbe21400c
--- /dev/null
+++ b/packages/reva-candidate/cypress/fixtures/referencial.json
@@ -0,0 +1,19 @@
+{
+ "data": {
+ "getCandidacy": null,
+ "getReferential": {
+ "goals": [
+ {
+ "id": "goal1",
+ "label": "Goal 1",
+ "order": 1
+ },
+ {
+ "id": "goal2",
+ "label": "Goal 2",
+ "order": 2
+ }
+ ]
+ }
+ }
+}
diff --git a/packages/reva-candidate/cypress/fixtures/referential.json b/packages/reva-candidate/cypress/fixtures/referential.json
new file mode 100644
index 000000000..c1583382b
--- /dev/null
+++ b/packages/reva-candidate/cypress/fixtures/referential.json
@@ -0,0 +1,18 @@
+{
+ "data": {
+ "getReferential": {
+ "goals": [
+ {
+ "id": "goal1",
+ "label": "Goal 1",
+ "order": 1
+ },
+ {
+ "id": "goal2",
+ "label": "Goal 2",
+ "order": 2
+ }
+ ]
+ }
+ }
+}
diff --git a/packages/reva-candidate/cypress/fixtures/registration.json b/packages/reva-candidate/cypress/fixtures/registration.json
new file mode 100644
index 000000000..20c7df31b
--- /dev/null
+++ b/packages/reva-candidate/cypress/fixtures/registration.json
@@ -0,0 +1,3 @@
+{
+ "data": { "candidate_askForRegistration": "result" }
+}
diff --git a/packages/reva-candidate/cypress/fixtures/selected-organism.json b/packages/reva-candidate/cypress/fixtures/selected-organism.json
new file mode 100644
index 000000000..c1d5f7317
--- /dev/null
+++ b/packages/reva-candidate/cypress/fixtures/selected-organism.json
@@ -0,0 +1,10 @@
+{
+ "data": {
+ "candidacy_selectOrganism": {
+ "id": "c1",
+ "organismId": "o1",
+ "departmentId": "department1",
+ "createdAt": 1666101304602
+ }
+ }
+}
diff --git a/packages/reva-candidate/cypress/fixtures/submitted-candidacy.json b/packages/reva-candidate/cypress/fixtures/submitted-candidacy.json
new file mode 100644
index 000000000..1361ad6f5
--- /dev/null
+++ b/packages/reva-candidate/cypress/fixtures/submitted-candidacy.json
@@ -0,0 +1,7 @@
+{
+ "data": {
+ "candidacy_submitCandidacy": {
+ "id": "c1"
+ }
+ }
+}
diff --git a/packages/reva-candidate/cypress/fixtures/updated-candidacy1.json b/packages/reva-candidate/cypress/fixtures/updated-candidacy1.json
new file mode 100644
index 000000000..0450af1ed
--- /dev/null
+++ b/packages/reva-candidate/cypress/fixtures/updated-candidacy1.json
@@ -0,0 +1,7 @@
+{
+ "data": {
+ "candidacy_updateCertification": {
+ "id": "candidacy1"
+ }
+ }
+}
diff --git a/packages/reva-candidate/cypress/fixtures/updated-experience2.json b/packages/reva-candidate/cypress/fixtures/updated-experience2.json
new file mode 100644
index 000000000..232b83414
--- /dev/null
+++ b/packages/reva-candidate/cypress/fixtures/updated-experience2.json
@@ -0,0 +1,11 @@
+{
+ "data": {
+ "candidacy_updateExperience": {
+ "id": "id1",
+ "title": "Experience 2",
+ "startedAt": 1490832000000,
+ "duration": "moreThanFiveYears",
+ "description": "Description 2"
+ }
+ }
+}
diff --git a/packages/reva-candidate/cypress/plugins/index.js b/packages/reva-candidate/cypress/plugins/index.js
new file mode 100644
index 000000000..8229063ad
--- /dev/null
+++ b/packages/reva-candidate/cypress/plugins/index.js
@@ -0,0 +1,22 @@
+///
+// ***********************************************************
+// 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)
+
+/**
+ * @type {Cypress.PluginConfig}
+ */
+// eslint-disable-next-line no-unused-vars
+module.exports = (on, config) => {
+ // `on` is used to hook into various events Cypress emits
+ // `config` is the resolved Cypress config
+};
diff --git a/packages/reva-candidate/cypress/support/commands.js b/packages/reva-candidate/cypress/support/commands.js
new file mode 100644
index 000000000..b1cca4314
--- /dev/null
+++ b/packages/reva-candidate/cypress/support/commands.js
@@ -0,0 +1,3 @@
+Cypress.Commands.add("login", (config = { token: "abc" }, options) => {
+ cy.visit(`/login/?token=${config.token}`, options);
+});
diff --git a/packages/reva-candidate/cypress/support/e2e.js b/packages/reva-candidate/cypress/support/e2e.js
new file mode 100644
index 000000000..d076cec9f
--- /dev/null
+++ b/packages/reva-candidate/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/packages/reva-candidate/cypress/utils/graphql.js b/packages/reva-candidate/cypress/utils/graphql.js
new file mode 100644
index 000000000..3769e707c
--- /dev/null
+++ b/packages/reva-candidate/cypress/utils/graphql.js
@@ -0,0 +1,26 @@
+// Forked from https://docs.cypress.io/guides/end-to-end-testing/working-with-graphql#Alias-multiple-queries-or-mutations
+// Add reply with fixtures
+
+// Utility to match GraphQL mutation based on the operation name
+export const hasOperationName = (req, operationName) => {
+ const { body } = req;
+ return (
+ body.hasOwnProperty("operationName") && body.operationName === operationName
+ );
+};
+
+// Alias query if operationName matches
+export const stubQuery = (req, operationName, fixture, statusCode = 200) => {
+ if (hasOperationName(req, operationName)) {
+ req.alias = operationName;
+ fixture && req.reply({ statusCode, fixture });
+ }
+};
+
+// Alias mutation if operationName matches
+export const stubMutation = (req, operationName, fixture, statusCode = 200) => {
+ if (hasOperationName(req, operationName)) {
+ req.alias = operationName;
+ fixture && req.reply({ statusCode, fixture });
+ }
+};
diff --git a/packages/reva-candidate/package-lock.json b/packages/reva-candidate/package-lock.json
index c92f34158..68b9f14df 100644
--- a/packages/reva-candidate/package-lock.json
+++ b/packages/reva-candidate/package-lock.json
@@ -37,6 +37,7 @@
"@types/uuid": "^10.0.0",
"@typescript-eslint/eslint-plugin": "^7.16.0",
"autoprefixer": "^10.4.19",
+ "cypress": "^13.13.2",
"eslint": "^8",
"eslint-config-next": "14.2.4",
"eslint-config-prettier": "^9.1.0",
@@ -1145,6 +1146,73 @@
"only-include-used-icons": "bin/only-include-used-icons.js"
}
},
+ "node_modules/@colors/colors": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz",
+ "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==",
+ "dev": true,
+ "optional": 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==",
+ "dev": true,
+ "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/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,
+ "bin": {
+ "uuid": "dist/bin/uuid"
+ }
+ },
+ "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==",
+ "dev": true,
+ "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==",
+ "dev": true,
+ "dependencies": {
+ "ms": "^2.1.1"
+ }
+ },
"node_modules/@emnapi/runtime": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.2.0.tgz",
@@ -3439,6 +3507,18 @@
"@types/react": "*"
}
},
+ "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==",
+ "dev": true
+ },
+ "node_modules/@types/sizzle": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.8.tgz",
+ "integrity": "sha512-0vWLNK2D5MT9dg0iOo8GlKguPAU02QjmZitPEsXRuJXU/OGIOt9vT9Fc26wtYuavLxtO45v9PGleoL9Z0k1LHg==",
+ "dev": true
+ },
"node_modules/@types/uuid": {
"version": "10.0.0",
"resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-10.0.0.tgz",
@@ -3454,6 +3534,16 @@
"@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==",
+ "dev": true,
+ "optional": true,
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
"node_modules/@typescript-eslint/eslint-plugin": {
"version": "7.16.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.16.0.tgz",
@@ -4048,6 +4138,15 @@
"url": "https://github.com/sponsors/epoberezkin"
}
},
+ "node_modules/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,
+ "engines": {
+ "node": ">=6"
+ }
+ },
"node_modules/ansi-escapes": {
"version": "4.3.2",
"resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz",
@@ -4118,6 +4217,26 @@
"node": ">= 8"
}
},
+ "node_modules/arch": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz",
+ "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==",
+ "dev": true,
+ "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/arg": {
"version": "5.0.2",
"resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz",
@@ -4316,6 +4435,15 @@
"integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==",
"dev": true
},
+ "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==",
+ "dev": true,
+ "dependencies": {
+ "safer-buffer": "~2.1.0"
+ }
+ },
"node_modules/asn1js": {
"version": "3.0.5",
"resolved": "https://registry.npmjs.org/asn1js/-/asn1js-3.0.5.tgz",
@@ -4330,6 +4458,15 @@
"node": ">=12.0.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==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.8"
+ }
+ },
"node_modules/ast-types-flow": {
"version": "0.0.8",
"resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz",
@@ -4345,6 +4482,27 @@
"node": ">=8"
}
},
+ "node_modules/async": {
+ "version": "3.2.5",
+ "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz",
+ "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==",
+ "dev": true
+ },
+ "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
+ },
+ "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==",
+ "dev": true,
+ "engines": {
+ "node": ">= 4.0.0"
+ }
+ },
"node_modules/auto-bind": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/auto-bind/-/auto-bind-4.0.0.tgz",
@@ -4409,6 +4567,21 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "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==",
+ "dev": true,
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/aws4": {
+ "version": "1.13.0",
+ "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.13.0.tgz",
+ "integrity": "sha512-3AungXC4I8kKsS9PuS4JH2nc+0bVY/mjgrephHTIi8fpEeGsTHBUJeosp0Wc1myYMElmD0B3Oc4XL/HVJ4PV2g==",
+ "dev": true
+ },
"node_modules/axe-core": {
"version": "4.9.1",
"resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.9.1.tgz",
@@ -4496,6 +4669,15 @@
}
]
},
+ "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==",
+ "dev": true,
+ "dependencies": {
+ "tweetnacl": "^0.14.3"
+ }
+ },
"node_modules/binary-extensions": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz",
@@ -4519,6 +4701,18 @@
"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==",
+ "dev": true
+ },
+ "node_modules/bluebird": {
+ "version": "3.7.2",
+ "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz",
+ "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==",
+ "dev": true
+ },
"node_modules/brace-expansion": {
"version": "1.1.11",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
@@ -4605,6 +4799,15 @@
"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==",
+ "dev": true,
+ "engines": {
+ "node": "*"
+ }
+ },
"node_modules/busboy": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz",
@@ -4616,6 +4819,15 @@
"node": ">=10.16.0"
}
},
+ "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==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
"node_modules/call-bind": {
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz",
@@ -4702,6 +4914,12 @@
"upper-case-first": "^2.0.2"
}
},
+ "node_modules/caseless": {
+ "version": "0.12.0",
+ "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
+ "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==",
+ "dev": true
+ },
"node_modules/chalk": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
@@ -4762,6 +4980,15 @@
"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==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
"node_modules/chokidar": {
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz",
@@ -4798,6 +5025,21 @@
"node": ">= 6"
}
},
+ "node_modules/ci-info": {
+ "version": "3.9.0",
+ "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz",
+ "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/sibiraj-s"
+ }
+ ],
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/classnames": {
"version": "2.5.1",
"resolved": "https://registry.npmjs.org/classnames/-/classnames-2.5.1.tgz",
@@ -4836,6 +5078,21 @@
"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==",
+ "dev": true,
+ "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",
@@ -4949,6 +5206,18 @@
"integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==",
"dev": true
},
+ "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"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
"node_modules/commander": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz",
@@ -5006,6 +5275,12 @@
"cookie": "^0.6.0"
}
},
+ "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==",
+ "dev": true
+ },
"node_modules/cosmiconfig": {
"version": "8.3.6",
"resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz",
@@ -5088,12 +5363,170 @@
"resolved": "https://registry.npmjs.org/cuint/-/cuint-0.2.2.tgz",
"integrity": "sha512-d4ZVpCW31eWwCMe1YT3ur7mUDnTXbgwyzaL320DrcRT45rfjYxkt5QWLrmOJ+/UEAI2+fQgKe/fCjR8l4TpRgw=="
},
+ "node_modules/cypress": {
+ "version": "13.13.2",
+ "resolved": "https://registry.npmjs.org/cypress/-/cypress-13.13.2.tgz",
+ "integrity": "sha512-PvJQU33933NvS1StfzEb8/mu2kMy4dABwCF+yd5Bi7Qly1HOVf+Bufrygee/tlmty/6j5lX+KIi8j9Q3JUMbhA==",
+ "dev": true,
+ "hasInstallScript": true,
+ "dependencies": {
+ "@cypress/request": "^3.0.1",
+ "@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.3",
+ "untildify": "^4.0.0",
+ "yauzl": "^2.10.0"
+ },
+ "bin": {
+ "cypress": "bin/cypress"
+ },
+ "engines": {
+ "node": "^16.0.0 || ^18.0.0 || >=20.0.0"
+ }
+ },
+ "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==",
+ "dev": true,
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/cypress/node_modules/listr2": {
+ "version": "3.14.0",
+ "resolved": "https://registry.npmjs.org/listr2/-/listr2-3.14.0.tgz",
+ "integrity": "sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g==",
+ "dev": true,
+ "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/cypress/node_modules/semver": {
+ "version": "7.6.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
+ "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "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==",
+ "dev": true,
+ "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==",
+ "dev": true,
+ "engines": {
+ "node": ">=14.14"
+ }
+ },
+ "node_modules/cypress/node_modules/wrap-ansi": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
"node_modules/damerau-levenshtein": {
"version": "1.0.8",
"resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz",
"integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==",
"dev": true
},
+ "node_modules/dashdash": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
+ "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==",
+ "dev": true,
+ "dependencies": {
+ "assert-plus": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
"node_modules/data-view-buffer": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz",
@@ -5160,6 +5593,12 @@
"url": "https://github.com/sponsors/kossnocorp"
}
},
+ "node_modules/dayjs": {
+ "version": "1.11.12",
+ "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.12.tgz",
+ "integrity": "sha512-Rt2g+nTbLlDWZTwwrIXjy9MeiZmSDI375FvZs72ngxx8PDC6YXOeR3q5LAuPzjZQxhiWdRKac7RKV+YyQYfYIg==",
+ "dev": true
+ },
"node_modules/debounce": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz",
@@ -5276,6 +5715,15 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/delayed-stream": {
+ "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"
+ }
+ },
"node_modules/dependency-graph": {
"version": "0.11.0",
"resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.11.0.tgz",
@@ -5379,6 +5827,16 @@
"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==",
+ "dev": true,
+ "dependencies": {
+ "jsbn": "~0.1.0",
+ "safer-buffer": "^2.1.0"
+ }
+ },
"node_modules/electron-to-chromium": {
"version": "1.4.816",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.816.tgz",
@@ -5391,6 +5849,15 @@
"integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
"dev": true
},
+ "node_modules/end-of-stream": {
+ "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"
+ }
+ },
"node_modules/enhanced-resolve": {
"version": "5.17.0",
"resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.0.tgz",
@@ -5404,10 +5871,23 @@
"node": ">=10.13.0"
}
},
- "node_modules/error-ex": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
- "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
+ "node_modules/enquirer": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz",
+ "integrity": "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==",
+ "dev": true,
+ "dependencies": {
+ "ansi-colors": "^4.1.1",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8.6"
+ }
+ },
+ "node_modules/error-ex": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
+ "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
"dev": true,
"dependencies": {
"is-arrayish": "^0.2.1"
@@ -6045,6 +6525,53 @@
"node": ">=0.10.0"
}
},
+ "node_modules/eventemitter2": {
+ "version": "6.4.7",
+ "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.7.tgz",
+ "integrity": "sha512-tYUSVOGeQPKt/eC1ABfhHy5Xd96N3oIijJvN3O9+TsC28T5V9yX9oEfEK5faP0EFSNVOG97qtAS68GBrQB2hDg==",
+ "dev": true
+ },
+ "node_modules/execa": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz",
+ "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==",
+ "dev": true,
+ "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/executable": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/executable/-/executable-4.1.1.tgz",
+ "integrity": "sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==",
+ "dev": true,
+ "dependencies": {
+ "pify": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/extend": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
+ "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
+ "dev": true
+ },
"node_modules/external-editor": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz",
@@ -6071,6 +6598,35 @@
"url": "https://github.com/sponsors/jaydenseric"
}
},
+ "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==",
+ "dev": true,
+ "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/extsprintf": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
+ "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==",
+ "dev": true,
+ "engines": [
+ "node >=0.6.0"
+ ]
+ },
"node_modules/fast-decode-uri-component": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/fast-decode-uri-component/-/fast-decode-uri-component-1.0.1.tgz",
@@ -6180,6 +6736,15 @@
"integrity": "sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==",
"dev": true
},
+ "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==",
+ "dev": true,
+ "dependencies": {
+ "pend": "~1.2.0"
+ }
+ },
"node_modules/figures": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz",
@@ -6301,6 +6866,29 @@
"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==",
+ "dev": true,
+ "engines": {
+ "node": "*"
+ }
+ },
+ "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==",
+ "dev": true,
+ "dependencies": {
+ "asynckit": "^0.4.0",
+ "combined-stream": "^1.0.6",
+ "mime-types": "^2.1.12"
+ },
+ "engines": {
+ "node": ">= 0.12"
+ }
+ },
"node_modules/fraction.js": {
"version": "4.3.7",
"resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz",
@@ -6314,6 +6902,21 @@
"url": "https://github.com/sponsors/rawify"
}
},
+ "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==",
+ "dev": true,
+ "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/fs.realpath": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
@@ -6407,6 +7010,21 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "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==",
+ "dev": true,
+ "dependencies": {
+ "pump": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/get-symbol-description": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz",
@@ -6436,6 +7054,24 @@
"url": "https://github.com/privatenumber/get-tsconfig?sponsor=1"
}
},
+ "node_modules/getos": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/getos/-/getos-3.2.1.tgz",
+ "integrity": "sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q==",
+ "dev": true,
+ "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==",
+ "dev": true,
+ "dependencies": {
+ "assert-plus": "^1.0.0"
+ }
+ },
"node_modules/glob": {
"version": "7.2.3",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
@@ -6469,6 +7105,21 @@
"node": ">=10.13.0"
}
},
+ "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==",
+ "dev": true,
+ "dependencies": {
+ "ini": "2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/globals": {
"version": "11.12.0",
"resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
@@ -6739,6 +7390,20 @@
"node": ">= 14"
}
},
+ "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==",
+ "dev": true,
+ "dependencies": {
+ "assert-plus": "^1.0.0",
+ "jsprim": "^2.0.2",
+ "sshpk": "^1.14.1"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
"node_modules/https-proxy-agent": {
"version": "7.0.5",
"resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz",
@@ -6752,6 +7417,15 @@
"node": ">= 14"
}
},
+ "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==",
+ "dev": true,
+ "engines": {
+ "node": ">=8.12.0"
+ }
+ },
"node_modules/iconv-lite": {
"version": "0.4.24",
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
@@ -6874,6 +7548,15 @@
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
"dev": true
},
+ "node_modules/ini": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz",
+ "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/inquirer": {
"version": "8.2.6",
"resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.6.tgz",
@@ -7041,6 +7724,18 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "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==",
+ "dev": true,
+ "dependencies": {
+ "ci-info": "^3.2.0"
+ },
+ "bin": {
+ "is-ci": "bin.js"
+ }
+ },
"node_modules/is-core-module": {
"version": "2.14.0",
"resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.14.0.tgz",
@@ -7143,6 +7838,22 @@
"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==",
+ "dev": true,
+ "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",
@@ -7273,6 +7984,18 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/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,
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/is-string": {
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz",
@@ -7318,6 +8041,12 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/is-typedarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
+ "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==",
+ "dev": true
+ },
"node_modules/is-unc-path": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz",
@@ -7421,6 +8150,12 @@
"ws": "*"
}
},
+ "node_modules/isstream": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
+ "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==",
+ "dev": true
+ },
"node_modules/iterator.prototype": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz",
@@ -7492,6 +8227,12 @@
"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==",
+ "dev": true
+ },
"node_modules/jsesc": {
"version": "2.5.2",
"resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
@@ -7516,6 +8257,12 @@
"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==",
+ "dev": true
+ },
"node_modules/json-schema-traverse": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
@@ -7528,6 +8275,12 @@
"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==",
+ "dev": true
+ },
"node_modules/json-to-pretty-yaml": {
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/json-to-pretty-yaml/-/json-to-pretty-yaml-1.2.2.tgz",
@@ -7553,6 +8306,33 @@
"node": ">=6"
}
},
+ "node_modules/jsonfile": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
+ "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
+ "dev": true,
+ "dependencies": {
+ "universalify": "^2.0.0"
+ },
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "node_modules/jsprim": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-2.0.2.tgz",
+ "integrity": "sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ==",
+ "dev": true,
+ "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/jsx-ast-utils": {
"version": "3.3.5",
"resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz",
@@ -7612,6 +8392,15 @@
"node": ">=0.10"
}
},
+ "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==",
+ "dev": true,
+ "engines": {
+ "node": "> 0.8"
+ }
+ },
"node_modules/levn": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
@@ -7711,6 +8500,12 @@
"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==",
+ "dev": true
+ },
"node_modules/lodash.sortby": {
"version": "4.7.0",
"resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz",
@@ -7829,6 +8624,12 @@
"node": ">=0.10.0"
}
},
+ "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
+ },
"node_modules/merge2": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
@@ -7879,6 +8680,27 @@
"node": ">=4.0.0"
}
},
+ "node_modules/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,
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/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,
+ "dependencies": {
+ "mime-db": "1.52.0"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
"node_modules/mimic-fn": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
@@ -8108,6 +8930,18 @@
"node": ">=0.10.0"
}
},
+ "node_modules/npm-run-path": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
+ "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
+ "dev": true,
+ "dependencies": {
+ "path-key": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/nullthrows": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/nullthrows/-/nullthrows-1.1.1.tgz",
@@ -8340,6 +9174,12 @@
"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==",
+ "dev": true
+ },
"node_modules/p-limit": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
@@ -8562,6 +9402,18 @@
"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==",
+ "dev": true
+ },
+ "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==",
+ "dev": true
+ },
"node_modules/picocolors": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz",
@@ -8806,6 +9658,27 @@
"url": "https://github.com/prettier/prettier?sponsor=1"
}
},
+ "node_modules/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,
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "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==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6.0"
+ }
+ },
"node_modules/promise": {
"version": "7.3.1",
"resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz",
@@ -8826,6 +9699,28 @@
"react-is": "^16.13.1"
}
},
+ "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==",
+ "dev": true
+ },
+ "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
+ },
+ "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==",
+ "dev": true,
+ "dependencies": {
+ "end-of-stream": "^1.1.0",
+ "once": "^1.3.1"
+ }
+ },
"node_modules/punycode": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
@@ -8850,6 +9745,27 @@
"node": ">=6.0.0"
}
},
+ "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==",
+ "dev": true,
+ "dependencies": {
+ "side-channel": "^1.0.4"
+ },
+ "engines": {
+ "node": ">=0.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "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
+ },
"node_modules/queue-microtask": {
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
@@ -9026,6 +9942,15 @@
"integrity": "sha512-O3vsMYfWighyFbTd8hk8VaSj9UAGENxAtX+//ugIst2RMk5e03h6RoIS+0ylsFxY1gvmPuAY/PO4It+gPEeySA==",
"dev": true
},
+ "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==",
+ "dev": true,
+ "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",
@@ -9041,6 +9966,12 @@
"integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==",
"dev": true
},
+ "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
+ },
"node_modules/resolve": {
"version": "1.22.8",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz",
@@ -9481,6 +10412,31 @@
"tslib": "^2.0.3"
}
},
+ "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==",
+ "dev": true,
+ "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/stop-iteration-iterator": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz",
@@ -9676,6 +10632,15 @@
"node": ">=4"
}
},
+ "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"
+ }
+ },
"node_modules/strip-json-comments": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
@@ -9903,6 +10868,15 @@
"node": ">=0.8"
}
},
+ "node_modules/throttleit": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.1.tgz",
+ "integrity": "sha512-vDZpf9Chs9mAdfY046mcPt8fg5QSZr37hEH4TXYBnDF+izxgrbRGUAAaBvIk/fJm9aOFCGFd1EsNg5AZCbnQCQ==",
+ "dev": true,
+ "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",
@@ -9951,6 +10925,39 @@
"node": ">=8.0"
}
},
+ "node_modules/tough-cookie": {
+ "version": "4.1.4",
+ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz",
+ "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==",
+ "dev": true,
+ "dependencies": {
+ "psl": "^1.1.33",
+ "punycode": "^2.1.1",
+ "universalify": "^0.2.0",
+ "url-parse": "^1.5.3"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/tough-cookie/node_modules/punycode": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
+ "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/tough-cookie/node_modules/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,
+ "engines": {
+ "node": ">= 4.0.0"
+ }
+ },
"node_modules/tr46": {
"version": "0.0.3",
"resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
@@ -10014,6 +11021,24 @@
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
"integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
},
+ "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==",
+ "dev": true,
+ "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==",
+ "dev": true
+ },
"node_modules/type-check": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
@@ -10165,6 +11190,15 @@
"integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==",
"dev": true
},
+ "node_modules/universalify": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
+ "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 10.0.0"
+ }
+ },
"node_modules/unixify": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/unixify/-/unixify-1.0.0.tgz",
@@ -10189,6 +11223,15 @@
"node": ">=0.10.0"
}
},
+ "node_modules/untildify": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz",
+ "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/update-browserslist-db": {
"version": "1.0.16",
"resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.16.tgz",
@@ -10255,6 +11298,16 @@
"node": ">=6"
}
},
+ "node_modules/url-parse": {
+ "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/urlpattern-polyfill": {
"version": "8.0.2",
"resolved": "https://registry.npmjs.org/urlpattern-polyfill/-/urlpattern-polyfill-8.0.2.tgz",
@@ -10309,6 +11362,20 @@
"node": ">=12"
}
},
+ "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==",
+ "dev": true,
+ "engines": [
+ "node >=0.6.0"
+ ],
+ "dependencies": {
+ "assert-plus": "^1.0.0",
+ "core-util-is": "1.0.2",
+ "extsprintf": "^1.2.0"
+ }
+ },
"node_modules/wcwidth": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz",
@@ -10594,6 +11661,16 @@
"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==",
+ "dev": true,
+ "dependencies": {
+ "buffer-crc32": "~0.2.3",
+ "fd-slicer": "~1.1.0"
+ }
+ },
"node_modules/yocto-queue": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
diff --git a/packages/reva-candidate/package.json b/packages/reva-candidate/package.json
index 502019e3b..b205df2cc 100644
--- a/packages/reva-candidate/package.json
+++ b/packages/reva-candidate/package.json
@@ -10,7 +10,8 @@
"start": "next start",
"lint": "next lint",
"graphql:generate": "graphql-codegen --config codegen.ts",
- "graphql:watch": "graphql-codegen --config codegen.ts --watch"
+ "graphql:watch": "graphql-codegen --config codegen.ts --watch",
+ "cypress:open": "npm run graphql:generate && cypress open --e2e --browser electron"
},
"dependencies": {
"@codegouvfr/react-dsfr": "^1.9.21",
@@ -42,6 +43,7 @@
"@types/uuid": "^10.0.0",
"@typescript-eslint/eslint-plugin": "^7.16.0",
"autoprefixer": "^10.4.19",
+ "cypress": "^13.13.2",
"eslint": "^8",
"eslint-config-next": "14.2.4",
"eslint-config-prettier": "^9.1.0",
diff --git a/packages/reva-candidate/src/app/(auth)/registration/page.tsx b/packages/reva-candidate/src/app/(auth)/registration/page.tsx
index ece50d813..f54ea0c5d 100644
--- a/packages/reva-candidate/src/app/(auth)/registration/page.tsx
+++ b/packages/reva-candidate/src/app/(auth)/registration/page.tsx
@@ -204,7 +204,7 @@ export default function Registration() {