diff --git a/cypress/e2e/patient_spec/PatientConsultationDischarge.cy.ts b/cypress/e2e/patient_spec/PatientConsultationDischarge.cy.ts
index 846b937998b..a3b4906e0ca 100644
--- a/cypress/e2e/patient_spec/PatientConsultationDischarge.cy.ts
+++ b/cypress/e2e/patient_spec/PatientConsultationDischarge.cy.ts
@@ -117,14 +117,8 @@ describe("Patient Discharge based on multiple reason", () => {
patientDischarge.interceptDischargePatient();
cy.clickSubmitButton("Acknowledge & Submit");
patientDischarge.verifyDischargePatient();
+ cy.verifyNotification("Patient Discharged Successfully");
// Verify the consultation dashboard reflection
- cy.verifyContentPresence("#consultation-buttons", ["Recovered"]);
- // Verify the dashboard and discharge information
- cy.verifyContentPresence("#discharge-information", [
- patientDischargeReason1,
- patientDischargeAdvice,
- patientMedicine,
- ]);
});
afterEach(() => {
diff --git a/cypress/e2e/users_spec/UsersCreation.cy.ts b/cypress/e2e/users_spec/UsersCreation.cy.ts
index 38ad0c907c4..80520b73919 100644
--- a/cypress/e2e/users_spec/UsersCreation.cy.ts
+++ b/cypress/e2e/users_spec/UsersCreation.cy.ts
@@ -1,27 +1,21 @@
import FacilityHome from "pageobject/Facility/FacilityHome";
-import ManageUserPage from "pageobject/Users/ManageUserPage";
-import UserProfilePage from "pageobject/Users/UserProfilePage";
import { advanceFilters } from "pageobject/utils/advanceFilterHelpers";
import FacilityPage from "../../pageobject/Facility/FacilityCreation";
import LoginPage from "../../pageobject/Login/LoginPage";
+import { ManageUserPage } from "../../pageobject/Users/ManageUserPage";
import { UserCreationPage } from "../../pageobject/Users/UserCreation";
import { UserPage } from "../../pageobject/Users/UserSearch";
-import {
- generateEmergencyPhoneNumber,
- generatePhoneNumber,
-} from "../../pageobject/utils/constants";
+import { generatePhoneNumber } from "../../pageobject/utils/constants";
describe("User Creation", () => {
const userPage = new UserPage();
const loginPage = new LoginPage();
- const userProfilePage = new UserProfilePage();
- const manageUserPage = new ManageUserPage();
const userCreationPage = new UserCreationPage();
+ const manageUserPage = new ManageUserPage();
const facilityPage = new FacilityPage();
const facilityHome = new FacilityHome();
const phoneNumber = generatePhoneNumber();
- const emergencyPhoneNumber = generateEmergencyPhoneNumber();
const fillFacilityName = "Dummy Facility 40";
const makeId = (length: number) => {
let result = "";
@@ -54,14 +48,6 @@ describe("User Creation", () => {
"Please select the local body",
];
- const EXPECTED_PROFILE_ERROR_MESSAGES = [
- "This field is required",
- "This field is required",
- "Please enter valid phone number",
- ];
- const userName = "devdistrictadmin";
- const firstName = "District Editted";
- const lastName = "Cypress";
const gender = "Male";
const email = "test@test.com";
const password = "Test@123";
@@ -74,9 +60,6 @@ describe("User Creation", () => {
const district = "Ernakulam";
const role = "Doctor";
const homeFacility = "Dummy Shifting Center";
- const weeklyWorkingHrs = "14";
- const dob = "01011998";
- const formattedDob = "01/01/1998";
const newUserDob = "25081999";
before(() => {
@@ -90,55 +73,6 @@ describe("User Creation", () => {
cy.awaitUrl("/users");
});
- it("Update the existing user profile and verify its reflection", () => {
- manageUserPage.navigateToProfile();
- cy.verifyContentPresence("#username-profile-details", [userName]);
- userProfilePage.clickEditProfileButton();
- userCreationPage.clearFirstName();
- userCreationPage.typeFirstName(firstName);
- userCreationPage.clearLastName();
- userCreationPage.typeLastName(lastName);
- userProfilePage.selectGender(gender);
- userProfilePage.clearPhoneNumber();
- userProfilePage.typePhoneNumber(phoneNumber);
- userProfilePage.clearAltPhoneNumber();
- userProfilePage.typeWhatsappNumber(emergencyPhoneNumber);
- userProfilePage.clearEmail();
- userProfilePage.typeEmail(email);
- userProfilePage.clearWorkingHours();
- userProfilePage.typeWorkingHours(weeklyWorkingHrs);
- userProfilePage.typeDateOfBirth(dob);
- userProfilePage.interceptUpdateUsers();
- userProfilePage.clickUpdateButton();
- userProfilePage.verifyUpdateUsersResponse();
- cy.verifyContentPresence("#contactno-profile-details", [
- "+91" + phoneNumber,
- ]);
- cy.verifyContentPresence("#whatsapp-profile-details", [
- "+91" + emergencyPhoneNumber,
- ]);
- cy.verifyContentPresence("#firstname-profile-details", [firstName]);
- cy.verifyContentPresence("#lastname-profile-details", [lastName]);
- cy.verifyContentPresence("#date_of_birth-profile-details", [formattedDob]);
- cy.verifyContentPresence("#emailid-profile-details", [email]);
- cy.verifyContentPresence("#gender-profile-details", [gender]);
- cy.verifyContentPresence("#averageworkinghour-profile-details", [
- weeklyWorkingHrs,
- ]);
- });
-
- it("Update the existing user profile Form Mandatory File Error", () => {
- manageUserPage.navigateToProfile();
- userProfilePage.clickEditProfileButton();
- userCreationPage.clearFirstName();
- userCreationPage.clearLastName();
- userProfilePage.clearPhoneNumber();
- userProfilePage.clearAltPhoneNumber();
- userProfilePage.clearWorkingHours();
- userProfilePage.clickUpdateButton();
- cy.verifyErrorMessages(EXPECTED_PROFILE_ERROR_MESSAGES);
- });
-
it("create new user and verify reflection", () => {
userCreationPage.clickAddUserButton();
userCreationPage.selectFacility(homeFacility);
@@ -147,14 +81,14 @@ describe("User Creation", () => {
userCreationPage.typeConfirmPassword(password);
userCreationPage.selectHomeFacility(homeFacility);
userPage.typeInPhoneNumber(phoneNumber);
- userProfilePage.typeDateOfBirth(newUserDob);
+ manageUserPage.editDateOfBirth(newUserDob);
userCreationPage.selectUserType(role);
- userProfilePage.typeQualification(qualification);
- userProfilePage.typeDoctorYoE(experience);
- userProfilePage.typeMedicalCouncilRegistration(regNo);
+ manageUserPage.editQualification(qualification, false);
+ manageUserPage.editDoctorYoE(experience, false);
+ manageUserPage.editMedicalCouncilRegistration(regNo, false);
userPage.typeInFirstName(newUserFirstName);
userPage.typeInLastName(newUserLastName);
- userProfilePage.typeEmail(email);
+ manageUserPage.editEmail(email, false);
userCreationPage.selectGender(gender);
userCreationPage.selectState(state);
userCreationPage.selectDistrict(district);
@@ -178,6 +112,7 @@ describe("User Creation", () => {
});
it("view user redirection from facility page", () => {
+ loginPage.ensureLoggedIn();
facilityHome.navigateToFacilityHomepage();
facilityHome.typeFacilitySearch(fillFacilityName);
advanceFilters.verifyFilterBadgePresence(
diff --git a/cypress/e2e/users_spec/UsersManage.cy.ts b/cypress/e2e/users_spec/UsersManage.cy.ts
index b1968ed2b4c..0d670d8c230 100644
--- a/cypress/e2e/users_spec/UsersManage.cy.ts
+++ b/cypress/e2e/users_spec/UsersManage.cy.ts
@@ -1,6 +1,7 @@
import * as dayjs from "dayjs";
import FacilityHome from "pageobject/Facility/FacilityHome";
import { advanceFilters } from "pageobject/utils/advanceFilterHelpers";
+import { generatePhoneNumber } from "pageobject/utils/constants";
import LoginPage from "../../pageobject/Login/LoginPage";
import ManageUserPage from "../../pageobject/Users/ManageUserPage";
@@ -50,28 +51,48 @@ describe("Manage User", () => {
}); */
it("edit a nurse user's basic information and verify its reflection", () => {
+ const basicInfoErrorMessages = [
+ "First Name is required",
+ "Last Name is required",
+ ];
+ const modifiedFirstName = "Devo";
+ const modifiedLastName = "Districto";
+ const modifiedRawDOB = "11081999";
+ const modifiedGender = "Female";
+ const modifiedFormattedDOB = "11/08/1999";
userPage.typeInSearchInput(nurseUsername);
userPage.checkUsernameText(nurseUsername);
manageUserPage.clickMoreDetailsButton(nurseUsername);
manageUserPage.verifyMoreDetailsPage();
- manageUserPage.clickBasicInfoViewButton();
+ manageUserPage.clickBaicInfoViewButton();
manageUserPage.clickBasicInfoEditButton();
manageUserPage.clearUserBasicInfo();
- manageUserPage.clickSubmit();
- manageUserPage.verifyErrorText("First Name is required");
- manageUserPage.verifyErrorText("Last Name is required");
- manageUserPage.editUserBasicInfo("Devo", "Districto", "11081999", "Female");
- manageUserPage.clickSubmit();
- manageUserPage.clickBasicInfoViewButton();
+ manageUserPage.clickUserInfoSubmitButton();
+ cy.verifyErrorMessages(basicInfoErrorMessages);
+ manageUserPage.editUserBasicInfo(
+ modifiedFirstName,
+ modifiedLastName,
+ modifiedRawDOB,
+ modifiedGender,
+ );
+ manageUserPage.clickUserInfoSubmitButton();
+ manageUserPage.userInfoUpdateSuccessNotification();
+ manageUserPage.clickBaicInfoViewButton();
manageUserPage.verifyEditUserDetails(
- "Devo",
- "Districto",
- "11/08/1999",
- "Female",
+ modifiedFirstName,
+ modifiedLastName,
+ modifiedFormattedDOB,
+ modifiedGender,
);
});
it("edit a nurse user's contact information and verify its reflection", () => {
+ const contactInfoErrorMessages = [
+ "Please enter a valid email address",
+ "Please enter valid phone number",
+ ];
+ const modifiedEmail = "dev@gmail.com";
+ const modifiedPhone = generatePhoneNumber();
userPage.typeInSearchInput(nurseUsername);
userPage.checkUsernameText(nurseUsername);
manageUserPage.clickMoreDetailsButton(nurseUsername);
@@ -79,16 +100,18 @@ describe("Manage User", () => {
manageUserPage.clickContactInfoViewButton();
manageUserPage.clickContactInfoEditButton();
manageUserPage.clearUserContactInfo();
- manageUserPage.clickSubmit();
- manageUserPage.verifyErrorText("Please enter a valid email address");
- manageUserPage.verifyErrorText("Please enter valid phone number");
- manageUserPage.editUserContactInfo("dev@gmail.com", "6234343435");
- manageUserPage.clickSubmit();
+ manageUserPage.clickUserInfoSubmitButton();
+ cy.verifyErrorMessages(contactInfoErrorMessages);
+ manageUserPage.editUserContactInfo(modifiedEmail, modifiedPhone);
+ manageUserPage.clickUserInfoSubmitButton();
+ manageUserPage.userInfoUpdateSuccessNotification();
manageUserPage.clickContactInfoViewButton();
- manageUserPage.verifyEditUserContactInfo("dev@gmail.com", "6234343435");
+ manageUserPage.verifyEditUserContactInfo(modifiedEmail, modifiedPhone);
});
it("edit a nurse user's professional information and verify its reflection", () => {
+ const qualificationErrorMessages = ["Qualification is required"];
+ const qualification = "Msc";
userPage.typeInSearchInput(nurseUsername);
userPage.checkUsernameText(nurseUsername);
manageUserPage.clickMoreDetailsButton(nurseUsername);
@@ -100,16 +123,28 @@ describe("Manage User", () => {
manageUserPage.verifyYoeAndCouncilRegistrationDoesntExist();
manageUserPage.clickProfessionalInfoEditButton();
manageUserPage.clearDoctorOrNurseProfessionalInfo(false);
- manageUserPage.clickSubmit();
- manageUserPage.verifyErrorText("Qualification is required");
- manageUserPage.editUserProfessionalInfo("Msc");
- manageUserPage.clickSubmit();
+ manageUserPage.clickUserInfoSubmitButton();
+ cy.verifyErrorMessages(qualificationErrorMessages);
+ manageUserPage.editUserProfessionalInfo(qualification);
+ manageUserPage.clickUserInfoSubmitButton();
+ manageUserPage.userInfoUpdateSuccessNotification();
manageUserPage.clickProfessionalInfoViewButton();
- manageUserPage.verifyEditUserProfessionalInfo("Msc");
+ manageUserPage.verifyEditUserProfessionalInfo(qualification);
});
it("edit a doctor user's professional information and verify its reflection", () => {
// Should have qualification, years of experience and medical council registration
+ const qualificationErrorMessages = [
+ "Qualification is required",
+ "Years of experience is required",
+ "Medical Council Registration is required",
+ ];
+ const qualification = "Msc";
+ const yoe = "120";
+ const modifiedYoe = "10";
+ const medicalRegistrationNumber = "1234567890";
+ const experienceCommencedOn = dayjs().subtract(10, "year");
+ const formattedDate = dayjs(experienceCommencedOn).format("YYYY-MM-DD");
userPage.typeInSearchInput(usernameToLinkFacilitydoc1);
userPage.checkUsernameText(usernameToLinkFacilitydoc1);
manageUserPage.clickMoreDetailsButton(usernameToLinkFacilitydoc1);
@@ -119,25 +154,28 @@ describe("Manage User", () => {
manageUserPage.verifyYoeAndCouncilRegistrationExist();
manageUserPage.clickProfessionalInfoEditButton();
manageUserPage.clearDoctorOrNurseProfessionalInfo(true);
- manageUserPage.clickSubmit();
- manageUserPage.verifyErrorText("Qualification is required");
- manageUserPage.verifyErrorText("Years of experience is required");
- manageUserPage.verifyErrorText("Medical Council Registration is required");
- manageUserPage.editUserProfessionalInfo("Msc", "120", "1234567890");
- manageUserPage.clickSubmit();
- manageUserPage.verifyErrorText(
- "Please enter a valid number between 0 and 100.",
+ manageUserPage.clickUserInfoSubmitButton();
+ cy.verifyErrorMessages(qualificationErrorMessages);
+ manageUserPage.editUserProfessionalInfo(
+ qualification,
+ yoe,
+ medicalRegistrationNumber,
);
+ manageUserPage.clickUserInfoSubmitButton();
+ cy.verifyErrorMessages(["Please enter a valid number between 0 and 100."]);
manageUserPage.clearDoctorOrNurseProfessionalInfo(true);
- manageUserPage.editUserProfessionalInfo("Msc", "10", "1234567890");
- manageUserPage.clickSubmit();
+ manageUserPage.editUserProfessionalInfo(
+ qualification,
+ modifiedYoe,
+ medicalRegistrationNumber,
+ );
+ manageUserPage.clickUserInfoSubmitButton();
+ manageUserPage.userInfoUpdateSuccessNotification();
manageUserPage.clickProfessionalInfoViewButton();
- const experienceCommencedOn = dayjs().subtract(10, "year");
- const formattedDate = dayjs(experienceCommencedOn).format("YYYY-MM-DD");
manageUserPage.verifyEditUserProfessionalInfo(
- "Msc",
+ qualification,
formattedDate,
- "1234567890",
+ medicalRegistrationNumber,
);
});
@@ -151,7 +189,7 @@ describe("Manage User", () => {
userPage.checkUsernameText(doctorUsername);
manageUserPage.clickMoreDetailsButton(doctorUsername);
manageUserPage.verifyMoreDetailsPage(false);
- manageUserPage.verifyUsername(doctorUsername);
+ cy.verifyContentPresence("#view-username", [doctorUsername]);
manageUserPage.verifyBasicInfoEditButtonNotExist();
manageUserPage.verifyContactInfoEditButtonNotExist();
manageUserPage.verifyProfessionalInfoEditButtonNotExist();
@@ -189,9 +227,11 @@ describe("Manage User", () => {
userPage.checkUsernameText(nurseUsername);
manageUserPage.clickMoreDetailsButton(nurseUsername);
manageUserPage.verifyMoreDetailsPage();
- manageUserPage.clickPasswordEditButton();
+ cy.verifyAndClickElement("#change-edit-password-button", "Change Password");
manageUserPage.changePassword("Coronasafe@123", "Coronasafe@1233");
- manageUserPage.clickSubmit();
+ cy.clickSubmitButton();
+ cy.verifyNotification("Password updated successfully");
+ cy.closeNotification();
loginPage.ensureLoggedIn();
loginPage.clickSignOutBtn();
loginPage.loginManuallyAsNurse("Coronasafe@1233");
@@ -201,9 +241,11 @@ describe("Manage User", () => {
userPage.checkUsernameText(nurseUsername);
manageUserPage.clickMoreDetailsButton(nurseUsername);
manageUserPage.verifyMoreDetailsPage();
- manageUserPage.clickPasswordEditButton();
+ cy.verifyAndClickElement("#change-edit-password-button", "Change Password");
manageUserPage.changePassword("Coronasafe@1233", "Coronasafe@123");
- manageUserPage.clickSubmit();
+ cy.clickSubmitButton();
+ cy.verifyNotification("Password updated successfully");
+ cy.closeNotification();
loginPage.ensureLoggedIn();
loginPage.clickSignOutBtn();
loginPage.loginManuallyAsDistrictAdmin();
@@ -217,7 +259,7 @@ describe("Manage User", () => {
manageUserPage.verifyMoreDetailsPage();
manageUserPage.verifyDeleteButtonVisible();
manageUserPage.clickDeleteButton();
- manageUserPage.clickSubmit();
+ cy.clickSubmitButton("Delete");
cy.verifyNotification("User Deleted Successfully");
cy.closeNotification();
userPage.typeInSearchInput(doctorToDelete);
@@ -239,19 +281,6 @@ describe("Manage User", () => {
manageUserPage.clickAddSkillButton(usernameforworkinghour);
manageUserPage.verifyAddSkillResponse();
manageUserPage.assertSkillInAddedUserSkills(linkedskill);
- manageUserPage.navigateToProfile();
- cy.verifyContentPresence("#username-profile-details", [
- usernameforworkinghour,
- ]);
- manageUserPage.assertSkillInAlreadyLinkedSkills(linkedskill);
- // unlink the skill
- manageUserPage.navigateToManageUser();
- userPage.typeInSearchInput(usernameforworkinghour);
- userPage.checkUsernameText(usernameforworkinghour);
- manageUserPage.clickMoreDetailsButton(usernameforworkinghour);
- manageUserPage.verifyMoreDetailsPage();
- manageUserPage.clickLinkedSkillTab();
- manageUserPage.assertSkillInAddedUserSkills(linkedskill);
manageUserPage.clickUnlinkSkill();
manageUserPage.verifyUnlinkSkillModal();
manageUserPage.clickConfirmUnlinkSkill();
@@ -283,7 +312,7 @@ describe("Manage User", () => {
manageUserPage.assertSkillIndoctorconnect(linkedskill);
});
- it("add working hour for a user and verify its reflection in card and user profile", () => {
+ it("add working hour and video connect link for a user and verify its reflection in card and user profile", () => {
// verify qualification and yoe and council registration fields are not present
// verify field error and add working hour
userPage.typeInSearchInput(usernameforworkinghour);
@@ -291,23 +320,28 @@ describe("Manage User", () => {
manageUserPage.clickMoreDetailsButton(usernameforworkinghour);
manageUserPage.verifyMoreDetailsPage();
manageUserPage.verifyProfileTabPage();
- manageUserPage.clickProfessionalInfoViewButton();
+ cy.verifyAndClickElement("#professional-info-view-button", "View");
manageUserPage.verifyQualificationDoesntExist();
manageUserPage.verifyYoeAndCouncilRegistrationDoesntExist();
- manageUserPage.clickProfessionalInfoEditButton();
+ cy.verifyAndClickElement("#professional-info-edit-button", "Edit");
manageUserPage.clearProfessionalInfo();
- manageUserPage.typeInWeeklyWorkingHours("200");
- manageUserPage.clickSubmit();
- manageUserPage.verifyErrorText(
+ manageUserPage.editWeeklyWorkingHours("200");
+ cy.clickSubmitButton();
+ cy.verifyErrorMessages([
"Average weekly working hours must be a number between 0 and 168",
- );
+ ]);
manageUserPage.clearProfessionalInfo();
- manageUserPage.typeInWeeklyWorkingHours(workinghour);
- manageUserPage.clickSubmit();
- // verify the data is reflected in the page
- manageUserPage.verifyWorkingHours(workinghour);
- manageUserPage.navigateToProfile();
- manageUserPage.verifyProfileWorkingHours(workinghour);
+ manageUserPage.editHoursAndVideoConnectLink(
+ workinghour,
+ "https://www.example.com",
+ );
+ cy.clickSubmitButton();
+ cy.verifyNotification("User details updated successfully");
+ cy.closeNotification();
+ manageUserPage.verifyHoursAndVideoConnectLink(
+ workinghour,
+ "https://www.example.com",
+ );
});
it("linking and unlinking facility for multiple users, and confirm reflection in user cards and doctor connect", () => {
@@ -357,7 +391,7 @@ describe("Manage User", () => {
manageUserPage.clickLinkFacility();
manageUserPage.clickLinkedFacilitySettings();
manageUserPage.clickUnlinkFacilityButton();
- manageUserPage.clickSubmit();
+ cy.clickSubmitButton("Unlink");
manageUserPage.linkedfacilitylistnotvisible();
// Go to particular facility doctor connect and all user-id are reflected based on there access
// Path will be facility page to patient page then doctor connect button
diff --git a/cypress/e2e/users_spec/UsersProfile.cy.ts b/cypress/e2e/users_spec/UsersProfile.cy.ts
deleted file mode 100644
index 551fba4c0f1..00000000000
--- a/cypress/e2e/users_spec/UsersProfile.cy.ts
+++ /dev/null
@@ -1,82 +0,0 @@
-import FacilityHome from "pageobject/Facility/FacilityHome";
-
-import LoginPage from "../../pageobject/Login/LoginPage";
-import ManageUserPage from "../../pageobject/Users/ManageUserPage";
-import UserProfilePage from "../../pageobject/Users/UserProfilePage";
-
-describe("Manage User Profile", () => {
- const loginPage = new LoginPage();
- const userProfilePage = new UserProfilePage();
- const manageUserPage = new ManageUserPage();
- const facilityHome = new FacilityHome();
-
- const date_of_birth = "01011999";
- const gender = "Male";
- const email = "test@example.com";
- const phone = "8899887788";
- const workinghours = "8";
- const qualification = "MBBS";
- const doctorYoE = "10";
- const medicalCouncilRegistration = "1234567890";
-
- const facilitySearch = "Dummy Facility 40";
-
- before(() => {
- loginPage.loginByRole("devDoctor");
- cy.saveLocalStorage();
- });
-
- beforeEach(() => {
- cy.restoreLocalStorage();
- cy.clearLocalStorage(/filters--.+/);
- cy.awaitUrl("/user/profile");
- });
-
- it("Set Dob, Gender, Email, Phone and Working Hours for a user and verify its reflection in user profile", () => {
- userProfilePage.clickEditProfileButton();
-
- userProfilePage.typeDateOfBirth(date_of_birth);
- userProfilePage.selectGender(gender);
- userProfilePage.typeEmail(email);
- userProfilePage.typePhoneNumber(phone);
- userProfilePage.typeWhatsappNumber(phone);
- userProfilePage.typeWorkingHours(workinghours);
- userProfilePage.typeQualification(qualification);
- userProfilePage.typeDoctorYoE(doctorYoE);
- userProfilePage.typeMedicalCouncilRegistration(medicalCouncilRegistration);
- userProfilePage.clickUpdateButton();
- cy.verifyNotification("Details updated successfully");
- userProfilePage.assertDateOfBirth("01/01/1999");
- userProfilePage.assertGender(gender);
- userProfilePage.assertEmail(email);
- userProfilePage.assertPhoneNumber(phone);
- userProfilePage.assertAltPhoneNumber(phone);
- userProfilePage.assertWorkingHours(workinghours);
- });
-
- it("Adding video connect link for a user and verify its reflection in user profile and doctor connect", () => {
- // verify the user doesn't have any video connect link
- userProfilePage.assertVideoConnectLink("-");
- // Link a new video connect link and ensure it is under video connect link
- userProfilePage.clickEditProfileButton();
- userProfilePage.typeVideoConnectLink("https://www.example.com");
- userProfilePage.clickUpdateButton();
- userProfilePage.assertVideoConnectLink("https://www.example.com");
- // Edit the video connect link and ensure it is updated
- userProfilePage.clickEditProfileButton();
- userProfilePage.typeVideoConnectLink("https://www.test.com");
- userProfilePage.clickUpdateButton();
- userProfilePage.assertVideoConnectLink("https://www.test.com");
- // Go to particular facility doctor connect and verify the video connect link is present
- facilityHome.navigateToFacilityHomepage();
- facilityHome.typeFacilitySearch(facilitySearch);
- facilityHome.assertFacilityInCard(facilitySearch);
- manageUserPage.clickFacilityPatients();
- manageUserPage.clickDoctorConnectButton();
- manageUserPage.assertVideoConnectLink("Dev Doctor", "https://www.test.com");
- });
-
- afterEach(() => {
- cy.saveLocalStorage();
- });
-});
diff --git a/cypress/pageobject/Users/ManageUserPage.ts b/cypress/pageobject/Users/ManageUserPage.ts
index 027357a0321..a4821466861 100644
--- a/cypress/pageobject/Users/ManageUserPage.ts
+++ b/cypress/pageobject/Users/ManageUserPage.ts
@@ -54,22 +54,6 @@ export class ManageUserPage {
cy.get("#link-facility").click();
}
- clickSubmit() {
- cy.get("#submit").click();
- }
-
- verifyErrorText(expectedError: string) {
- cy.get(".error-text").first().scrollIntoView();
- cy.get(".error-text")
- .should("be.visible")
- .then(($elements) => {
- const errorTextArray = Array.from($elements).map(
- (el) => el.textContent,
- );
- expect(errorTextArray).to.include(expectedError);
- });
- }
-
clearUserBasicInfo() {
cy.get("input[name='first_name']").click().clear();
cy.get("input[name='last_name']").click().clear();
@@ -81,11 +65,35 @@ export class ManageUserPage {
dateOfBirth: string,
gender: string,
) {
- cy.get("input[name='first_name']").click().type(fName);
- cy.get("input[name='last_name']").click().type(lName);
+ this.editFirstName(fName);
+ this.editLastName(lName);
+ this.editDateOfBirth(dateOfBirth);
+ this.editGender(gender);
+ }
+
+ clickUserInfoSubmitButton() {
+ cy.clickSubmitButton("Submit");
+ }
+
+ userInfoUpdateSuccessNotification() {
+ cy.verifyNotification("User details updated successfully");
+ cy.closeNotification();
+ }
+
+ editFirstName(fName: string, clearBeforeTyping = true) {
+ cy.typeIntoField("#first_name", fName, { clearBeforeTyping });
+ }
+
+ editLastName(lName: string, clearBeforeTyping = true) {
+ cy.typeIntoField("#last_name", lName, { clearBeforeTyping });
+ }
+
+ editDateOfBirth(dateOfBirth: string) {
cy.clickAndTypeDate("#date_of_birth", dateOfBirth);
- cy.get("#gender").click();
- cy.get("[role='option']").contains(gender).click();
+ }
+
+ editGender(gender: string) {
+ cy.clickAndSelectOption("#gender", gender);
}
verifyEditUserDetails(
@@ -94,10 +102,10 @@ export class ManageUserPage {
dateOfBirth: string,
gender: string,
) {
- cy.get("#view-first_name").should("contain.text", fName);
- cy.get("#view-last_name").should("contain.text", lName);
- cy.get("#view-date_of_birth").should("contain.text", dateOfBirth);
- cy.get("#view-gender").should("contain.text", gender);
+ cy.verifyContentPresence("#view-first_name", [fName]);
+ cy.verifyContentPresence("#view-last_name", [lName]);
+ cy.verifyContentPresence("#view-date_of_birth", [dateOfBirth]);
+ cy.verifyContentPresence("#view-gender", [gender]);
}
clearUserContactInfo() {
@@ -107,15 +115,30 @@ export class ManageUserPage {
}
editUserContactInfo(email: string, phoneNumber: string) {
- cy.get("input[name='email']").click().type(email);
- cy.get("input[name='phone_number']").click().type(phoneNumber);
+ this.editEmail(email);
+ this.editPhoneNumber(phoneNumber);
+ }
+
+ editEmail(email: string, clearBeforeTyping = true) {
+ cy.typeIntoField("input[name='email']", email, { clearBeforeTyping });
+ }
+
+ editPhoneNumber(
+ phoneNumber: string,
+ clearBeforeTyping = true,
+ skipVerification = true,
+ ) {
+ cy.typeIntoField("input[name='phone_number']", phoneNumber, {
+ clearBeforeTyping,
+ skipVerification,
+ });
cy.get("input[name='phone_number_is_whatsapp']").should("be.checked");
}
verifyEditUserContactInfo(email: string, phoneNumber: string) {
- cy.get("#view-email").should("contain.text", email);
- cy.get("#view-phone_number").should("contain.text", phoneNumber);
- cy.get("#view-whatsapp_number").should("contain.text", phoneNumber);
+ cy.verifyContentPresence("#view-email", [email]);
+ cy.verifyContentPresence("#view-phone_number", [phoneNumber]);
+ cy.verifyContentPresence("#view-whatsapp_number", [phoneNumber]);
}
clearDoctorOrNurseProfessionalInfo(yoeAndCouncilRegistration: boolean) {
@@ -128,82 +151,119 @@ export class ManageUserPage {
}
}
+ editQualification(qualification: string, clearBeforeTyping = true) {
+ cy.typeIntoField("input[name='qualification']", qualification, {
+ clearBeforeTyping,
+ });
+ }
+
+ editDoctorYoE(doctorYoE: string, clearBeforeTyping = true) {
+ cy.typeIntoField(
+ "input[name='doctor_experience_commenced_on']",
+ doctorYoE,
+ {
+ clearBeforeTyping,
+ },
+ );
+ }
+
+ editMedicalCouncilRegistration(
+ medicalCouncilRegistration: string,
+ clearBeforeTyping = true,
+ ) {
+ cy.typeIntoField(
+ "input[name='doctor_medical_council_registration']",
+ medicalCouncilRegistration,
+ {
+ clearBeforeTyping,
+ },
+ );
+ }
+
clearProfessionalInfo() {
cy.get("input[name='weekly_working_hours']").scrollIntoView();
cy.get("input[name='weekly_working_hours']").click().clear();
cy.get("input[name='video_connect_link']").click().clear();
}
+ editWeeklyWorkingHours(weeklyWorkingHours: string, clearBeforeTyping = true) {
+ cy.get("input[name='weekly_working_hours']").scrollIntoView();
+ cy.typeIntoField("input[name='weekly_working_hours']", weeklyWorkingHours, {
+ clearBeforeTyping,
+ });
+ }
+
+ editVideoConnectLink(videoConnectLink: string, clearBeforeTyping = true) {
+ cy.typeIntoField("input[name='video_connect_link']", videoConnectLink, {
+ clearBeforeTyping,
+ });
+ }
+
editUserProfessionalInfo(
qualification: string,
yearsOfExperience?: string,
medicalCouncilRegistration?: string,
) {
- cy.get("input[name='qualification']").click().type(qualification);
+ this.editQualification(qualification);
if (yearsOfExperience) {
- cy.get("input[name='doctor_experience_commenced_on']")
- .click()
- .type(yearsOfExperience);
+ this.editDoctorYoE(yearsOfExperience);
}
if (medicalCouncilRegistration) {
- cy.get("input[name='doctor_medical_council_registration']")
- .click()
- .type(medicalCouncilRegistration);
+ this.editMedicalCouncilRegistration(medicalCouncilRegistration);
}
}
+ editHoursAndVideoConnectLink(
+ weeklyWorkingHours: string,
+ videoConnectLink: string,
+ ) {
+ this.editWeeklyWorkingHours(weeklyWorkingHours);
+ this.editVideoConnectLink(videoConnectLink);
+ }
+
verifyEditUserProfessionalInfo(
qualification: string,
yearsOfExperience?: string,
medicalCouncilRegistration?: string,
) {
- cy.get("#view-qualification").should("contain.text", qualification);
+ cy.verifyContentPresence("#view-qualification", [qualification]);
if (yearsOfExperience) {
- cy.get("#view-years_of_experience").should(
- "contain.text",
+ cy.verifyContentPresence("#view-years_of_experience", [
yearsOfExperience,
- );
+ ]);
}
if (medicalCouncilRegistration) {
- cy.get("#view-doctor_medical_council_registration").should(
- "contain.text",
+ cy.verifyContentPresence("#view-doctor_medical_council_registration", [
medicalCouncilRegistration,
- );
+ ]);
}
}
+ verifyHoursAndVideoConnectLink(
+ weeklyWorkingHours: string,
+ videoConnectLink: string,
+ ) {
+ cy.get("#view-average_weekly_working_hours").scrollIntoView();
+ cy.verifyContentPresence("#view-average_weekly_working_hours", [
+ weeklyWorkingHours,
+ ]);
+ cy.verifyContentPresence("#view-video_conference_link", [videoConnectLink]);
+ }
+
verifyPasswordEditButtonNotExist() {
cy.get("#change-edit-password-button").should("not.exist");
}
changePassword(oldPassword: string, newPassword: string) {
- cy.get("input[name='old_password']").click().type(oldPassword);
- cy.get("input[name='new_password_1']").click().type(newPassword);
- cy.get("input[name='new_password_2']").click().type(newPassword);
- }
-
- typeInWeeklyWorkingHours(hours: string) {
- cy.get("input[name='weekly_working_hours']").scrollIntoView();
- cy.get("input[name='weekly_working_hours']").click().type(hours);
- }
-
- navigateToProfile() {
- cy.intercept("GET", "**/api/v1/users/**").as("getUsers");
- cy.get("#user-profile-name").click();
- cy.get("#profile-button").click();
- cy.wait("@getUsers").its("response.statusCode").should("eq", 200);
- }
-
- verifyWorkingHours(expectedHours: string) {
- cy.verifyContentPresence("#view-average_weekly_working_hours", [
- expectedHours,
- ] as string[]);
- }
-
- verifyProfileWorkingHours(expectedHours: string) {
- cy.verifyContentPresence("#averageworkinghour-profile-details", [
- expectedHours,
- ] as string[]);
+ cy.typeIntoField("input[name='old_password']", oldPassword, {
+ clearBeforeTyping: true,
+ });
+ cy.typeIntoField("input[name='new_password_1']", newPassword, {
+ clearBeforeTyping: true,
+ });
+ cy.typeIntoField("input[name='new_password_2']", newPassword, {
+ clearBeforeTyping: true,
+ });
}
navigateToManageUser() {
@@ -237,71 +297,45 @@ export class ManageUserPage {
cy.wait("@getUserDetails");
}
- verifyMoreDetailsPage(hasPermissions = true) {
- cy.get("#username").should("be.visible");
- cy.get("#role").should("be.visible");
- cy.get("#usermanagement_tab_nav").should("be.visible");
- cy.get("#profile").should("be.visible");
- if (hasPermissions) {
- cy.get("#facilities").should("be.visible");
- cy.get("#skills").should("be.visible");
- }
- cy.get("#view-username").scrollIntoView();
- cy.get("#view-username").should("be.visible");
- }
-
- verifyChangeAvatarButtonVisible() {
- cy.get("#change-avatar").should("be.visible");
- }
-
- clickChangeAvatarButton() {
- cy.get("#change-avatar").click();
+ clickBasicInfoEditButton() {
+ cy.verifyAndClickElement("#basic-info-edit-button", "Edit");
}
- clickBasicInfoViewButton() {
- cy.get("#basic-info-view-button").scrollIntoView();
- cy.get("#basic-info-view-button").should("be.visible");
- cy.get("#basic-info-view-button").click();
+ clickBaicInfoViewButton() {
+ cy.verifyAndClickElement("#basic-info-view-button", "View");
}
- clickBasicInfoEditButton() {
- cy.get("#basic-info-edit-button").scrollIntoView();
- cy.get("#basic-info-edit-button").should("be.visible");
- cy.get("#basic-info-edit-button").click();
+ clickContactInfoEditButton() {
+ cy.verifyAndClickElement("#contact-info-edit-button", "Edit");
}
clickContactInfoViewButton() {
- cy.get("#contact-info-view-button").scrollIntoView();
- cy.get("#contact-info-view-button").should("be.visible");
- cy.get("#contact-info-view-button").click();
- }
-
- clickContactInfoEditButton() {
- cy.get("#contact-info-edit-button").scrollIntoView();
- cy.get("#contact-info-edit-button").should("be.visible");
- cy.get("#contact-info-edit-button").click();
+ cy.verifyAndClickElement("#contact-info-view-button", "View");
}
clickProfessionalInfoViewButton() {
- cy.get("#professional-info-view-button").scrollIntoView();
- cy.get("#professional-info-view-button").should("be.visible");
- cy.get("#professional-info-view-button").click();
+ cy.verifyAndClickElement("#professional-info-view-button", "View");
}
clickProfessionalInfoEditButton() {
- cy.get("#professional-info-edit-button").scrollIntoView();
- cy.get("#professional-info-edit-button").should("be.visible");
- cy.get("#professional-info-edit-button").click();
+ cy.verifyAndClickElement("#professional-info-edit-button", "Edit");
}
- clickPasswordEditButton() {
- cy.get("#change-edit-password-button").scrollIntoView();
- cy.get("#change-edit-password-button").should("be.visible");
- cy.get("#change-edit-password-button").click();
+ verifyMoreDetailsPage(hasPermissions = true) {
+ cy.get("#username").should("be.visible");
+ cy.get("#role").should("be.visible");
+ cy.get("#usermanagement_tab_nav").should("be.visible");
+ cy.get("#profile").should("be.visible");
+ if (hasPermissions) {
+ cy.get("#facilities").should("be.visible");
+ cy.get("#skills").should("be.visible");
+ }
+ cy.get("#view-username").scrollIntoView();
+ cy.get("#view-username").should("be.visible");
}
verifyQualificationDoesntExist() {
- cy.get("input[name='qualification']").should("not.exist");
+ cy.get("#view-qualification").should("not.exist");
}
verifyQualificationExist() {
@@ -318,10 +352,6 @@ export class ManageUserPage {
cy.get("#view-doctor_medical_council_registration").should("be.visible");
}
- verifyUsername(username: string) {
- cy.get("#view-username").should("contain", username);
- }
-
verifyBasicInfoEditButtonNotExist() {
cy.get("#basic-info-edit-button").should("not.exist");
}
@@ -338,14 +368,6 @@ export class ManageUserPage {
cy.get("#user-edit-form").should("be.visible");
}
- verifyDoctorQualification() {
- cy.get("#view-qualification").should("be.visible");
- }
-
- verifyDoctorQualificationDoesNotExist() {
- cy.get("#view-qualification").should("not.exist");
- }
-
verifyLinkedSkillsTabPage() {
cy.get("#select-skill").scrollIntoView();
cy.get("#select-skill").should("be.visible");
@@ -380,11 +402,6 @@ export class ManageUserPage {
verifyAddSkillResponse() {
cy.wait("@getUserSkills").its("response.statusCode").should("eq", 200);
}
- assertSkillInAlreadyLinkedSkills(skillName: string) {
- cy.get("#already-linked-skills")
- .contains(skillName)
- .should("have.length", 1);
- }
assertSkillIndoctorconnect(skillName: string) {
cy.get("#doctor-connect-home-doctor")
@@ -409,10 +426,6 @@ export class ManageUserPage {
cy.get("#added-user-skills").should("contain", skillName);
}
- assertSkillNotInAddedUserSkills(skillName: string) {
- cy.get("#added-user-skills").should("not.contain", skillName);
- }
-
assertDoctorConnectVisibility(realName: string) {
cy.get('*[id="doctor-connect-home-doctor"]').should(
"contain.text",
@@ -423,18 +436,6 @@ export class ManageUserPage {
realName,
);
}
-
- assertVideoConnectLink(docName: string, link: string) {
- cy.get("ul#options")
- .find("li")
- .contains(docName)
- .within(() => {
- cy.get("a").should(($a) => {
- const hrefs = $a.map((i, el) => Cypress.$(el).attr("href")).get();
- expect(hrefs).to.include(link);
- });
- });
- }
}
export default ManageUserPage;
diff --git a/cypress/pageobject/Users/UserProfilePage.ts b/cypress/pageobject/Users/UserProfilePage.ts
deleted file mode 100644
index 50959bb7cf7..00000000000
--- a/cypress/pageobject/Users/UserProfilePage.ts
+++ /dev/null
@@ -1,105 +0,0 @@
-export default class UserProfilePage {
- assertVideoConnectLink(link: string) {
- cy.get("#videoconnectlink-profile-details").should("contain.text", link);
- }
-
- clickEditProfileButton() {
- cy.get("#edit-cancel-profile-button").click();
- }
-
- typeVideoConnectLink(link: string) {
- cy.get("#video_connect_link").click().clear().type(link);
- }
-
- interceptUpdateUsers() {
- cy.intercept("PATCH", "/api/v1/users/*").as("updateUser");
- }
-
- verifyUpdateUsersResponse() {
- cy.wait("@updateUser").its("response.statusCode").should("eq", 200);
- }
-
- clickUpdateButton() {
- cy.clickSubmitButton("Update");
- }
-
- typeDateOfBirth(dob: string) {
- cy.clickAndTypeDate("#date_of_birth", dob);
- }
-
- clearPhoneNumber() {
- cy.get("#phoneNumber").click().clear();
- }
- clearAltPhoneNumber() {
- cy.get("#altPhoneNumber").click().clear();
- }
- clearWorkingHours() {
- cy.get("#weekly_working_hours").click().clear();
- }
- clearEmail() {
- cy.get("#email").click().clear();
- }
-
- selectGender(gender: string) {
- cy.get("#gender").click();
- cy.get("#gender-option-" + gender).click();
- }
-
- typeEmail(email: string) {
- cy.get("#email").click().clear().type(email);
- }
-
- typePhoneNumber(phone: string) {
- cy.get("#phoneNumber").click().clear().type(phone);
- }
-
- typeWhatsappNumber(phone: string) {
- cy.get("#altPhoneNumber").click().clear().type(phone);
- }
-
- typeWorkingHours(workingHours: string) {
- cy.get("#weekly_working_hours").click().clear().type(workingHours);
- }
-
- typeQualification = (qualification: string) => {
- cy.get("#qualification").click().clear().type(qualification);
- };
-
- typeDoctorYoE = (doctorYoE: string) => {
- cy.get("#doctor_experience_commenced_on").click().clear().type(doctorYoE);
- };
-
- typeMedicalCouncilRegistration = (medicalCouncilRegistration: string) => {
- cy.get("#doctor_medical_council_registration")
- .click()
- .clear()
- .type(medicalCouncilRegistration);
- };
-
- assertDateOfBirth(dob: string) {
- cy.get("#date_of_birth-profile-details").should("contain.text", dob);
- }
-
- assertGender(gender: string) {
- cy.get("#gender-profile-details").should("contain.text", gender);
- }
-
- assertEmail(email: string) {
- cy.get("#emailid-profile-details").should("contain.text", email);
- }
-
- assertPhoneNumber(phone: string) {
- cy.get("#contactno-profile-details").should("contain.text", phone);
- }
-
- assertAltPhoneNumber(phone: string) {
- cy.get("#whatsapp-profile-details").should("contain.text", phone);
- }
-
- assertWorkingHours(workingHours: string) {
- cy.get("#averageworkinghour-profile-details").should(
- "contain.text",
- workingHours,
- );
- }
-}
diff --git a/package-lock.json b/package-lock.json
index dc7abe4ad16..0c68d4ed99d 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -29,7 +29,7 @@
"@radix-ui/react-toast": "^1.2.2",
"@radix-ui/react-tooltip": "^1.1.6",
"@sentry/browser": "^8.45.1",
- "@tanstack/react-query": "^5.62.3",
+ "@tanstack/react-query": "^5.62.8",
"@tanstack/react-query-devtools": "^5.62.7",
"@yudiel/react-qr-scanner": "^2.0.8",
"bowser": "^2.11.0",
@@ -58,7 +58,7 @@
"react-google-recaptcha": "^3.1.0",
"react-i18next": "^15.1.3",
"react-infinite-scroll-component": "^6.1.0",
- "react-pdf": "^9.1.1",
+ "react-pdf": "^9.2.1",
"react-webcam": "^7.2.0",
"tailwind-merge": "^2.5.5",
"tailwindcss-animate": "^1.0.7",
@@ -2865,8 +2865,10 @@
"version": "1.0.11",
"resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz",
"integrity": "sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==",
+ "dev": true,
"license": "BSD-3-Clause",
"optional": true,
+ "peer": true,
"dependencies": {
"detect-libc": "^2.0.0",
"https-proxy-agent": "^5.0.0",
@@ -5805,9 +5807,9 @@
}
},
"node_modules/@tanstack/query-core": {
- "version": "5.62.7",
- "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.62.7.tgz",
- "integrity": "sha512-fgpfmwatsrUal6V+8EC2cxZIQVl9xvL7qYa03gsdsCy985UTUlS4N+/3hCzwR0PclYDqisca2AqR1BVgJGpUDA==",
+ "version": "5.62.8",
+ "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.62.8.tgz",
+ "integrity": "sha512-4fV31vDsUyvNGrKIOUNPrZztoyL187bThnoQOvAXEVlZbSiuPONpfx53634MKKdvsDir5NyOGm80ShFaoHS/mw==",
"license": "MIT",
"funding": {
"type": "github",
@@ -5825,12 +5827,12 @@
}
},
"node_modules/@tanstack/react-query": {
- "version": "5.62.7",
- "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.62.7.tgz",
- "integrity": "sha512-+xCtP4UAFDTlRTYyEjLx0sRtWyr5GIk7TZjZwBu4YaNahi3Rt2oMyRqfpfVrtwsqY2sayP4iXVCwmC+ZqqFmuw==",
+ "version": "5.62.8",
+ "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.62.8.tgz",
+ "integrity": "sha512-8TUstKxF/fysHonZsWg/hnlDVgasTdHx6Q+f1/s/oPKJBJbKUWPZEHwLTMOZgrZuroLMiqYKJ9w69Abm8mWP0Q==",
"license": "MIT",
"dependencies": {
- "@tanstack/query-core": "5.62.7"
+ "@tanstack/query-core": "5.62.8"
},
"funding": {
"type": "github",
@@ -6793,8 +6795,10 @@
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
"integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
+ "dev": true,
"license": "ISC",
- "optional": true
+ "optional": true,
+ "peer": true
},
"node_modules/acorn": {
"version": "8.13.0",
@@ -6847,8 +6851,10 @@
"version": "6.0.2",
"resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
"integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
+ "dev": true,
"license": "MIT",
"optional": true,
+ "peer": true,
"dependencies": {
"debug": "4"
},
@@ -6987,8 +6993,10 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz",
"integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==",
+ "dev": true,
"license": "ISC",
- "optional": true
+ "optional": true,
+ "peer": true
},
"node_modules/arch": {
"version": "2.2.0",
@@ -7015,8 +7023,10 @@
"resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz",
"integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==",
"deprecated": "This package is no longer supported.",
+ "dev": true,
"license": "ISC",
"optional": true,
+ "peer": true,
"dependencies": {
"delegates": "^1.0.0",
"readable-stream": "^3.6.0"
@@ -7452,6 +7462,18 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/bl": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz",
+ "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==",
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "buffer": "^5.5.0",
+ "inherits": "^2.0.4",
+ "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",
@@ -7676,9 +7698,11 @@
"version": "2.11.2",
"resolved": "https://registry.npmjs.org/canvas/-/canvas-2.11.2.tgz",
"integrity": "sha512-ItanGBMrmRV7Py2Z+Xhs7cT+FNt5K0vPL4p9EZ/UX/Mu7hFbkxSjKF2KVtPwX7UYWp7dRKnrTvReflgrItJbdw==",
+ "dev": true,
"hasInstallScript": true,
"license": "MIT",
"optional": true,
+ "peer": true,
"dependencies": {
"@mapbox/node-pre-gyp": "^1.0.0",
"nan": "^2.17.0",
@@ -7826,8 +7850,10 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz",
"integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==",
+ "dev": true,
"license": "ISC",
"optional": true,
+ "peer": true,
"engines": {
"node": ">=10"
}
@@ -7992,8 +8018,10 @@
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz",
"integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==",
+ "dev": true,
"license": "ISC",
"optional": true,
+ "peer": true,
"bin": {
"color-support": "bin.js"
}
@@ -8038,7 +8066,7 @@
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
"integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
- "devOptional": true,
+ "dev": true,
"license": "MIT"
},
"node_modules/concat-stream": {
@@ -8061,8 +8089,10 @@
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
"integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==",
+ "dev": true,
"license": "ISC",
- "optional": true
+ "optional": true,
+ "peer": true
},
"node_modules/console.table": {
"version": "0.10.0",
@@ -8551,6 +8581,16 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/deep-extend": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
+ "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==",
+ "license": "MIT",
+ "optional": true,
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
"node_modules/deep-is": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
@@ -8636,8 +8676,10 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
"integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==",
+ "dev": true,
"license": "MIT",
- "optional": true
+ "optional": true,
+ "peer": true
},
"node_modules/dependency-tree": {
"version": "11.0.1",
@@ -9885,6 +9927,16 @@
"node": ">=4"
}
},
+ "node_modules/expand-template": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz",
+ "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==",
+ "license": "(MIT OR WTFPL)",
+ "optional": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
"node_modules/extend": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
@@ -10321,6 +10373,13 @@
"url": "https://github.com/sponsors/rawify"
}
},
+ "node_modules/fs-constants": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz",
+ "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==",
+ "license": "MIT",
+ "optional": true
+ },
"node_modules/fs-extra": {
"version": "9.1.0",
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
@@ -10340,8 +10399,10 @@
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz",
"integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==",
+ "dev": true,
"license": "ISC",
"optional": true,
+ "peer": true,
"dependencies": {
"minipass": "^3.0.0"
},
@@ -10353,8 +10414,10 @@
"version": "3.3.6",
"resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
"integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
+ "dev": true,
"license": "ISC",
"optional": true,
+ "peer": true,
"dependencies": {
"yallist": "^4.0.0"
},
@@ -10366,14 +10429,16 @@
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "dev": true,
"license": "ISC",
- "optional": true
+ "optional": true,
+ "peer": true
},
"node_modules/fs.realpath": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
"integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
- "devOptional": true,
+ "dev": true,
"license": "ISC"
},
"node_modules/fsevents": {
@@ -10433,8 +10498,10 @@
"resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz",
"integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==",
"deprecated": "This package is no longer supported.",
+ "dev": true,
"license": "ISC",
"optional": true,
+ "peer": true,
"dependencies": {
"aproba": "^1.0.3 || ^2.0.0",
"color-support": "^1.1.2",
@@ -10586,6 +10653,13 @@
"assert-plus": "^1.0.0"
}
},
+ "node_modules/github-from-package": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz",
+ "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==",
+ "license": "MIT",
+ "optional": true
+ },
"node_modules/glob": {
"version": "11.0.0",
"resolved": "https://registry.npmjs.org/glob/-/glob-11.0.0.tgz",
@@ -10849,8 +10923,10 @@
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
"integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==",
+ "dev": true,
"license": "ISC",
- "optional": true
+ "optional": true,
+ "peer": true
},
"node_modules/hasown": {
"version": "2.0.2",
@@ -10970,8 +11046,10 @@
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
"integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
+ "dev": true,
"license": "MIT",
"optional": true,
+ "peer": true,
"dependencies": {
"agent-base": "6",
"debug": "4"
@@ -11161,7 +11239,7 @@
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
"integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
"deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.",
- "devOptional": true,
+ "dev": true,
"license": "ISC",
"dependencies": {
"once": "^1.3.0",
@@ -13025,8 +13103,10 @@
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
"integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
+ "dev": true,
"license": "MIT",
"optional": true,
+ "peer": true,
"dependencies": {
"semver": "^6.0.0"
},
@@ -13041,8 +13121,10 @@
"version": "6.3.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
"integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "dev": true,
"license": "ISC",
"optional": true,
+ "peer": true,
"bin": {
"semver": "bin/semver.js"
}
@@ -14679,8 +14761,10 @@
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz",
"integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==",
+ "dev": true,
"license": "MIT",
"optional": true,
+ "peer": true,
"dependencies": {
"minipass": "^3.0.0",
"yallist": "^4.0.0"
@@ -14693,8 +14777,10 @@
"version": "3.3.6",
"resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
"integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
+ "dev": true,
"license": "ISC",
"optional": true,
+ "peer": true,
"dependencies": {
"yallist": "^4.0.0"
},
@@ -14706,15 +14792,19 @@
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "dev": true,
"license": "ISC",
- "optional": true
+ "optional": true,
+ "peer": true
},
"node_modules/mkdirp": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
"integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
+ "dev": true,
"license": "MIT",
"optional": true,
+ "peer": true,
"bin": {
"mkdirp": "bin/cmd.js"
},
@@ -14722,6 +14812,13 @@
"node": ">=10"
}
},
+ "node_modules/mkdirp-classic": {
+ "version": "0.5.3",
+ "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz",
+ "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==",
+ "license": "MIT",
+ "optional": true
+ },
"node_modules/module-definition": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/module-definition/-/module-definition-6.0.0.tgz",
@@ -14845,8 +14942,10 @@
"version": "2.22.0",
"resolved": "https://registry.npmjs.org/nan/-/nan-2.22.0.tgz",
"integrity": "sha512-nbajikzWTMwsW+eSsNm3QwlOs7het9gGJU5dDZzRTQGk03vyBOauxgI4VakDzE0PtsGTmXPsXTbbjVhRwR5mpw==",
+ "dev": true,
"license": "MIT",
- "optional": true
+ "optional": true,
+ "peer": true
},
"node_modules/nanoid": {
"version": "3.3.8",
@@ -14866,6 +14965,13 @@
"node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
}
},
+ "node_modules/napi-build-utils": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz",
+ "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==",
+ "license": "MIT",
+ "optional": true
+ },
"node_modules/natural-compare": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
@@ -14881,6 +14987,26 @@
"optional": true,
"peer": true
},
+ "node_modules/node-abi": {
+ "version": "3.71.0",
+ "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.71.0.tgz",
+ "integrity": "sha512-SZ40vRiy/+wRTf21hxkkEjPJZpARzUMVcJoQse2EF8qkUWbbO2z7vd5oA/H6bVH6SZQ5STGcu0KRDS7biNRfxw==",
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "semver": "^7.3.5"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/node-addon-api": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz",
+ "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==",
+ "license": "MIT",
+ "optional": true
+ },
"node_modules/node-fetch": {
"version": "2.7.0",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz",
@@ -14924,8 +15050,10 @@
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz",
"integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==",
+ "dev": true,
"license": "ISC",
"optional": true,
+ "peer": true,
"dependencies": {
"abbrev": "1"
},
@@ -15042,8 +15170,10 @@
"resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz",
"integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==",
"deprecated": "This package is no longer supported.",
+ "dev": true,
"license": "ISC",
"optional": true,
+ "peer": true,
"dependencies": {
"are-we-there-yet": "^2.0.0",
"console-control-strings": "^1.1.0",
@@ -15363,7 +15493,7 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
"integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
- "devOptional": true,
+ "dev": true,
"license": "MIT",
"engines": {
"node": ">=0.10.0"
@@ -15422,9 +15552,9 @@
}
},
"node_modules/path2d": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/path2d/-/path2d-0.2.1.tgz",
- "integrity": "sha512-Fl2z/BHvkTNvkuBzYTpTuirHZg6wW9z8+4SND/3mDTEcYbbNKWAy21dz9D3ePNNwrrK8pqZO5vLPZ1hLF6T7XA==",
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/path2d/-/path2d-0.2.2.tgz",
+ "integrity": "sha512-+vnG6S4dYcYxZd+CZxzXCNKdELYZSKfohrk98yajCo1PtRoDgCTrrwOvK1GT0UoAdVszagDVllQc0U1vaX4NUQ==",
"license": "MIT",
"optional": true,
"engines": {
@@ -15443,16 +15573,32 @@
}
},
"node_modules/pdfjs-dist": {
- "version": "4.4.168",
- "resolved": "https://registry.npmjs.org/pdfjs-dist/-/pdfjs-dist-4.4.168.tgz",
- "integrity": "sha512-MbkAjpwka/dMHaCfQ75RY1FXX3IewBVu6NGZOcxerRFlaBiIkZmUoR0jotX5VUzYZEXAGzSFtknWs5xRKliXPA==",
+ "version": "4.8.69",
+ "resolved": "https://registry.npmjs.org/pdfjs-dist/-/pdfjs-dist-4.8.69.tgz",
+ "integrity": "sha512-IHZsA4T7YElCKNNXtiLgqScw4zPd3pG9do8UrznC757gMd7UPeHSL2qwNNMJo4r79fl8oj1Xx+1nh2YkzdMpLQ==",
"license": "Apache-2.0",
"engines": {
"node": ">=18"
},
"optionalDependencies": {
- "canvas": "^2.11.2",
- "path2d": "^0.2.0"
+ "canvas": "^3.0.0-rc2",
+ "path2d": "^0.2.1"
+ }
+ },
+ "node_modules/pdfjs-dist/node_modules/canvas": {
+ "version": "3.0.0-rc3",
+ "resolved": "https://registry.npmjs.org/canvas/-/canvas-3.0.0-rc3.tgz",
+ "integrity": "sha512-LJVkMp4AH7/IRoLvhLS6R09uBt9O3O0mhCYL34AQV/+OC39jmTv22pJTF5Mgfa3V2JnzGl21MVrhEKmtmPtfQA==",
+ "hasInstallScript": true,
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "node-addon-api": "^7.0.0",
+ "prebuild-install": "^7.1.1",
+ "simple-get": "^3.0.3"
+ },
+ "engines": {
+ "node": "^18.12.0 || >= 20.9.0"
}
},
"node_modules/pend": {
@@ -15783,6 +15929,88 @@
"postcss": "^8.2.9"
}
},
+ "node_modules/prebuild-install": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.2.tgz",
+ "integrity": "sha512-UnNke3IQb6sgarcZIDU3gbMeTp/9SSU1DAIkil7PrqG1vZlBtY5msYccSKSHDqa3hNg436IXK+SNImReuA1wEQ==",
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "detect-libc": "^2.0.0",
+ "expand-template": "^2.0.3",
+ "github-from-package": "0.0.0",
+ "minimist": "^1.2.3",
+ "mkdirp-classic": "^0.5.3",
+ "napi-build-utils": "^1.0.1",
+ "node-abi": "^3.3.0",
+ "pump": "^3.0.0",
+ "rc": "^1.2.7",
+ "simple-get": "^4.0.0",
+ "tar-fs": "^2.0.0",
+ "tunnel-agent": "^0.6.0"
+ },
+ "bin": {
+ "prebuild-install": "bin.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/prebuild-install/node_modules/decompress-response": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz",
+ "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==",
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "mimic-response": "^3.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/prebuild-install/node_modules/mimic-response": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz",
+ "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==",
+ "license": "MIT",
+ "optional": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/prebuild-install/node_modules/simple-get": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz",
+ "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "decompress-response": "^6.0.0",
+ "once": "^1.3.1",
+ "simple-concat": "^1.0.0"
+ }
+ },
"node_modules/precinct": {
"version": "12.1.2",
"resolved": "https://registry.npmjs.org/precinct/-/precinct-12.1.2.tgz",
@@ -16130,6 +16358,39 @@
"react": "^16.8.0 || ^17.0.0 || ^18.0.0"
}
},
+ "node_modules/rc": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
+ "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
+ "license": "(BSD-2-Clause OR MIT OR Apache-2.0)",
+ "optional": true,
+ "dependencies": {
+ "deep-extend": "^0.6.0",
+ "ini": "~1.3.0",
+ "minimist": "^1.2.0",
+ "strip-json-comments": "~2.0.1"
+ },
+ "bin": {
+ "rc": "cli.js"
+ }
+ },
+ "node_modules/rc/node_modules/ini": {
+ "version": "1.3.8",
+ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
+ "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
+ "license": "ISC",
+ "optional": true
+ },
+ "node_modules/rc/node_modules/strip-json-comments": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
+ "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==",
+ "license": "MIT",
+ "optional": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/react": {
"version": "18.3.1",
"resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz",
@@ -16244,9 +16505,9 @@
"license": "MIT"
},
"node_modules/react-pdf": {
- "version": "9.1.1",
- "resolved": "https://registry.npmjs.org/react-pdf/-/react-pdf-9.1.1.tgz",
- "integrity": "sha512-Cn3RTJZMqVOOCgLMRXDamLk4LPGfyB2Np3OwQAUjmHIh47EpuGW1OpAA1Z1GVDLoHx4d5duEDo/YbUkDbr4QFQ==",
+ "version": "9.2.1",
+ "resolved": "https://registry.npmjs.org/react-pdf/-/react-pdf-9.2.1.tgz",
+ "integrity": "sha512-AJt0lAIkItWEZRA5d/mO+Om4nPCuTiQ0saA+qItO967DTjmGjnhmF+Bi2tL286mOTfBlF5CyLzJ35KTMaDoH+A==",
"license": "MIT",
"dependencies": {
"clsx": "^2.0.0",
@@ -16254,7 +16515,7 @@
"make-cancellable-promise": "^1.3.1",
"make-event-props": "^1.6.0",
"merge-refs": "^1.3.0",
- "pdfjs-dist": "4.4.168",
+ "pdfjs-dist": "4.8.69",
"tiny-invariant": "^1.0.0",
"warning": "^4.0.0"
},
@@ -16976,7 +17237,7 @@
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
"integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
"deprecated": "Rimraf versions prior to v4 are no longer supported",
- "devOptional": true,
+ "dev": true,
"license": "ISC",
"dependencies": {
"glob": "^7.1.3"
@@ -16992,7 +17253,7 @@
"version": "1.1.11",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
- "devOptional": true,
+ "dev": true,
"license": "MIT",
"dependencies": {
"balanced-match": "^1.0.0",
@@ -17004,7 +17265,7 @@
"resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
"integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
"deprecated": "Glob versions prior to v9 are no longer supported",
- "devOptional": true,
+ "dev": true,
"license": "ISC",
"dependencies": {
"fs.realpath": "^1.0.0",
@@ -17025,7 +17286,7 @@
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
"integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
- "devOptional": true,
+ "dev": true,
"license": "ISC",
"dependencies": {
"brace-expansion": "^1.1.7"
@@ -17339,8 +17600,10 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
"integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==",
+ "dev": true,
"license": "ISC",
- "optional": true
+ "optional": true,
+ "peer": true
},
"node_modules/set-function-length": {
"version": "1.2.2",
@@ -18247,8 +18510,10 @@
"version": "6.2.1",
"resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz",
"integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==",
+ "dev": true,
"license": "ISC",
"optional": true,
+ "peer": true,
"dependencies": {
"chownr": "^2.0.0",
"fs-minipass": "^2.0.0",
@@ -18261,12 +18526,51 @@
"node": ">=10"
}
},
+ "node_modules/tar-fs": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz",
+ "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==",
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "chownr": "^1.1.1",
+ "mkdirp-classic": "^0.5.2",
+ "pump": "^3.0.0",
+ "tar-stream": "^2.1.4"
+ }
+ },
+ "node_modules/tar-fs/node_modules/chownr": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz",
+ "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==",
+ "license": "ISC",
+ "optional": true
+ },
+ "node_modules/tar-stream": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz",
+ "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==",
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "bl": "^4.0.3",
+ "end-of-stream": "^1.4.1",
+ "fs-constants": "^1.0.0",
+ "inherits": "^2.0.3",
+ "readable-stream": "^3.1.1"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
"node_modules/tar/node_modules/minipass": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz",
"integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==",
+ "dev": true,
"license": "ISC",
"optional": true,
+ "peer": true,
"engines": {
"node": ">=8"
}
@@ -18275,8 +18579,10 @@
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "dev": true,
"license": "ISC",
- "optional": true
+ "optional": true,
+ "peer": true
},
"node_modules/temp-dir": {
"version": "2.0.0",
@@ -20655,8 +20961,10 @@
"version": "1.1.5",
"resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz",
"integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==",
+ "dev": true,
"license": "ISC",
"optional": true,
+ "peer": true,
"dependencies": {
"string-width": "^1.0.2 || 2 || 3 || 4"
}
diff --git a/package.json b/package.json
index a32904af6b7..3bc1009db80 100644
--- a/package.json
+++ b/package.json
@@ -68,7 +68,7 @@
"@radix-ui/react-toast": "^1.2.2",
"@radix-ui/react-tooltip": "^1.1.6",
"@sentry/browser": "^8.45.1",
- "@tanstack/react-query": "^5.62.3",
+ "@tanstack/react-query": "^5.62.8",
"@tanstack/react-query-devtools": "^5.62.7",
"@yudiel/react-qr-scanner": "^2.0.8",
"bowser": "^2.11.0",
@@ -97,7 +97,7 @@
"react-google-recaptcha": "^3.1.0",
"react-i18next": "^15.1.3",
"react-infinite-scroll-component": "^6.1.0",
- "react-pdf": "^9.1.1",
+ "react-pdf": "^9.2.1",
"react-webcam": "^7.2.0",
"tailwind-merge": "^2.5.5",
"tailwindcss-animate": "^1.0.7",
diff --git a/public/locale/en.json b/public/locale/en.json
index b9d5c60539c..758ef1965db 100644
--- a/public/locale/en.json
+++ b/public/locale/en.json
@@ -1046,6 +1046,7 @@
"notification_cancelled": "Notification cancelled",
"notification_permission_denied": "Notification permission denied",
"notification_permission_granted": "Notification permission granted",
+ "notify": "Notify",
"number_of_aged_dependents": "Number of Aged Dependents (Above 60)",
"number_of_beds": "Number of beds",
"number_of_beds_out_of_range_error": "Number of beds cannot be greater than 100",
@@ -1539,9 +1540,10 @@
"view_all_details": "View All Details",
"view_asset": "View Assets",
"view_cns": "View CNS",
+ "view_consultation": "View Latest Encounter",
"view_consultation_and_log_updates": "View Consultation / Log Updates",
"view_details": "View Details",
- "view_faciliy": "View Facility",
+ "view_facility": "View Facility",
"view_files": "View Files",
"view_patients": "View Patients",
"view_update_patient_files": "View/Update patient files",
diff --git a/public/locale/hi.json b/public/locale/hi.json
index 568ce0499f6..8816f1f2336 100644
--- a/public/locale/hi.json
+++ b/public/locale/hi.json
@@ -795,7 +795,7 @@
"view_abdm_records": "ABDM रिकॉर्ड देखें",
"view_asset": "संपत्तियां देखें",
"view_details": "विवरण देखें",
- "view_faciliy": "सुविधा देखें",
+ "view_facility": "सुविधा देखें",
"view_patients": "मरीज़ देखें",
"view_users": "उपयोगकर्ता देखें",
"virtual_nursing_assistant": "वर्चुअल नर्सिंग सहायक",
diff --git a/public/locale/kn.json b/public/locale/kn.json
index 4907cdd2d8c..65ced04bd3f 100644
--- a/public/locale/kn.json
+++ b/public/locale/kn.json
@@ -796,7 +796,7 @@
"view_abdm_records": "ABDM ದಾಖಲೆಗಳನ್ನು ವೀಕ್ಷಿಸಿ",
"view_asset": "ಸ್ವತ್ತುಗಳನ್ನು ವೀಕ್ಷಿಸಿ",
"view_details": "ವಿವರಗಳನ್ನು ವೀಕ್ಷಿಸಿ",
- "view_faciliy": "ವೀಕ್ಷಣೆ ಸೌಲಭ್ಯ",
+ "view_facility": "ವೀಕ್ಷಣೆ ಸೌಲಭ್ಯ",
"view_patients": "ರೋಗಿಗಳನ್ನು ವೀಕ್ಷಿಸಿ",
"view_users": "ಬಳಕೆದಾರರನ್ನು ವೀಕ್ಷಿಸಿ",
"virtual_nursing_assistant": "ವರ್ಚುವಲ್ ನರ್ಸಿಂಗ್ ಸಹಾಯಕ",
diff --git a/public/locale/ml.json b/public/locale/ml.json
index b875a64dd02..c69f4940657 100644
--- a/public/locale/ml.json
+++ b/public/locale/ml.json
@@ -796,7 +796,7 @@
"view_abdm_records": "ABDM റെക്കോർഡുകൾ കാണുക",
"view_asset": "അസറ്റുകൾ കാണുക",
"view_details": "വിശദാംശങ്ങൾ കാണുക",
- "view_faciliy": "സൗകര്യം കാണുക",
+ "view_facility": "സൗകര്യം കാണുക",
"view_patients": "രോഗികളെ കാണുക",
"view_users": "ഉപയോക്താക്കളെ കാണുക",
"virtual_nursing_assistant": "വെർച്വൽ നഴ്സിംഗ് അസിസ്റ്റൻ്റ്",
diff --git a/public/locale/ta.json b/public/locale/ta.json
index cfe12b5fa6a..8c84339177e 100644
--- a/public/locale/ta.json
+++ b/public/locale/ta.json
@@ -795,7 +795,7 @@
"view_abdm_records": "ABDM பதிவுகளைப் பார்க்கவும்",
"view_asset": "சொத்துக்களைப் பார்க்கவும்",
"view_details": "விவரங்களைக் காண்க",
- "view_faciliy": "பார்வை வசதி",
+ "view_facility": "பார்வை வசதி",
"view_patients": "நோயாளிகளைப் பார்க்கவும்",
"view_users": "பயனர்களைக் காண்க",
"virtual_nursing_assistant": "மெய்நிகர் நர்சிங் உதவியாளர்",
diff --git a/src/Routers/routes/UserRoutes.tsx b/src/Routers/routes/UserRoutes.tsx
index cc668e2fee6..826007c3b14 100644
--- a/src/Routers/routes/UserRoutes.tsx
+++ b/src/Routers/routes/UserRoutes.tsx
@@ -1,7 +1,6 @@
import ManageUsers from "@/components/Users/ManageUsers";
import UserAdd from "@/components/Users/UserAdd";
import UserHome from "@/components/Users/UserHome";
-import UserProfile from "@/components/Users/UserProfile";
import { AppRoutes } from "@/Routers/AppRouter";
@@ -14,7 +13,7 @@ const UserRoutes: AppRoutes = {
"/users/:username/:tab": ({ username, tab }) => (
- {t("no_linked_facilities")} -
-- {t("local_body")}, {t("district")}, {t("state")}{" "} - {t("are_non_editable_fields")}. -
-- @{authUser.username} -
-- {skill.skill_object.name} -
- - ); - }) - : "-"} -- {t("set_your_local_language")} -
-- {t("check_for_available_update")} -
-