From 5a5b325e56accb732d8b51e70084b184a7a89fa5 Mon Sep 17 00:00:00 2001 From: suvidh Date: Sat, 11 Jan 2025 17:06:54 +0530 Subject: [PATCH 1/7] basic setup and images and svg file --- app/index.html | 7 + app/styles/404.css | 21 ++ app/styles/app.css | 3 + app/styles/image-upload.css | 156 +++++++++++++ app/styles/profile.css | 219 +++++++++++++++++++ app/styles/variables.css | 29 +++ package.json | 11 +- public/assets/icons/company.svg | 3 + public/assets/icons/linkedin.svg | 10 + public/assets/icons/mail.svg | 4 + public/assets/icons/twitter.svg | 10 + public/assets/icons/user.svg | 3 + public/assets/icons/website.svg | 3 + public/assets/images/dummyProfilePicture.png | Bin 0 -> 56646 bytes public/assets/images/page-not-found.png | Bin 0 -> 11804 bytes yarn.lock | 162 ++++++++------ 16 files changed, 566 insertions(+), 75 deletions(-) create mode 100644 app/styles/404.css create mode 100644 app/styles/image-upload.css create mode 100644 app/styles/profile.css create mode 100644 public/assets/icons/company.svg create mode 100644 public/assets/icons/linkedin.svg create mode 100644 public/assets/icons/mail.svg create mode 100644 public/assets/icons/twitter.svg create mode 100644 public/assets/icons/user.svg create mode 100644 public/assets/icons/website.svg create mode 100644 public/assets/images/dummyProfilePicture.png create mode 100644 public/assets/images/page-not-found.png diff --git a/app/index.html b/app/index.html index 8fef4d0f..5817b453 100644 --- a/app/index.html +++ b/app/index.html @@ -12,6 +12,13 @@ + {{content-for "head-footer"}} diff --git a/app/styles/404.css b/app/styles/404.css new file mode 100644 index 00000000..8765486c --- /dev/null +++ b/app/styles/404.css @@ -0,0 +1,21 @@ +.not-found { + margin: auto; + text-align: center; +} + +.not-found__img { + width: 35%; +} + +.not-found__text { + font-weight: bold; + font-size: 2em; + text-align: center; + padding-bottom: 20px; +} + +@media only screen and (width <= 644px) { + .not-found__text { + font-size: 20px; + } +} diff --git a/app/styles/app.css b/app/styles/app.css index 48c90b21..a3dbc4a2 100644 --- a/app/styles/app.css +++ b/app/styles/app.css @@ -43,6 +43,9 @@ @import url("unauthenticated.module.css"); @import url("subscribe.module.css"); @import url("phone-input.module.css"); +@import url("profile.css"); +@import url("404.css"); +@import url("image-upload.css"); * { margin: 0; diff --git a/app/styles/image-upload.css b/app/styles/image-upload.css new file mode 100644 index 00000000..c617fcda --- /dev/null +++ b/app/styles/image-upload.css @@ -0,0 +1,156 @@ +.image-upload { + width: 100%; + height: 100%; +} + +.drop-area { + border: 2px dashed var(--drop-area-border); + border-radius: 20px; + width: 480px; + font-family: sans-serif; + margin: auto; + padding: 20px; + transition: 0.3s ease-out; +} + +.drop-area__highlight { + border-color: var(--drop-area-highlight-border); + background-color: var(--drop-area-highlight-bg); + transition: background-color 0.5s ease-in; +} + +.image-form { + margin-bottom: 10px; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; +} + +.image-form__text { + font-size: 1.25rem; + margin: 10px 0; +} + +.btn { + width: 200px; + border: 1px solid black; + align-content: center; + background-color: #1c1282; + color: white; + margin-top: 20px; + border-radius: 5px; +} + +.image-h1 { + font-size: 2em; + text-align: center; + padding-bottom: 20px; +} + +.image-p { + margin-top: 0; + margin-bottom: 1rem; +} + +.button_secondary { + background: transparent; + border: 1px solid var(--button-image-form-bg); + font-size: 1.25rem; + margin: 10px; +} + +.image-form__button { + background: var(--button-image-form-bg); + color: white; + font-size: 1.25rem; + text-align: center; + margin: 10px; + border: 1px solid var(--button-image-form-border); +} + +.image-form__button--disabled { + background: var(--button-image-form-bg-disabled); +} + +.image-form__button:hover { + background: var(--button-image-form-bg-hover); +} + +.image-form__input { + display: none; +} + +.image-preview { + max-height: 500px; + border-radius: 10px; + border: solid var(--image-preview-border); + display: block; + margin: auto; +} + +.upload-button { + display: block; + margin: 10px auto; + font-size: 1.25rem; + padding: 5px; + font-weight: 600; +} + +.upload-button:hover { + cursor: pointer; +} + +.message-text__success { + color: var(--message-success-text); + font-size: 1.25rem; + font-weight: bolder; +} + +.message-text__failure { + color: var(--message-failure-text); + font-size: 1.25rem; + font-weight: bolder; +} + +.image-cropper-container { + margin: 0 auto; + width: 600px; + height: 400px; +} + +@media screen and (width <= 480px) { + .image-cropper-container { + width: 300px; + height: 200px; + } +} + +.image-cropper { + max-height: 100%; + max-width: 100%; +} + +.image-cropper-preview { + overflow: hidden; + width: 400px; + height: 400px; + border: 5px solid var(--image-cropper-preview-border); + margin: 20px auto; +} + +@media only screen and (device-width <= 480px) { + .drop-area { + width: auto; + margin: 1rem; + } + + .image-preview { + width: 90%; + } + + .image-cropper-preview { + width: 300px; + height: 300px; + } +} diff --git a/app/styles/profile.css b/app/styles/profile.css new file mode 100644 index 00000000..8d96816d --- /dev/null +++ b/app/styles/profile.css @@ -0,0 +1,219 @@ +.profile-container { + display: grid; + grid-template-columns: repeat(12, minmax(0, 1fr)); + gap: 2rem; + max-width: min(90%, 1536px); + margin: 3rem auto 0; +} + +.profile-form { + grid-column: 5 / 9; +} + +.profile-form-grid { + display: grid; + grid-template-columns: 1fr; + gap: 1rem; + margin-top: 2rem; +} + +.profile-field { + display: flex; + flex-direction: column; + gap: 0.5rem; + position: relative; + padding-bottom: 2rem; +} + +.profile-field-input-container { + display: grid; + grid-template-columns: auto 1fr auto; + align-items: center; + border-radius: 8px; + border: 1px solid var(--profile-field-input-border-clr); + background-color: var(--profile-field-input-bg-clr); + padding: 1rem; +} + +.profile-field-input-container:focus-within { + border-color: var(--profile-input-outline-clr); +} + +.profile-page-error { + text-align: center; + color: red; +} + +.profile-field-input { + padding: 0 1.25rem; + border: none; + background: none; + outline: none; +} + +.profile-field-input:disabled { + opacity: 0.6; + cursor: not-allowed; + pointer-events: none; +} + +.profile-field-input:active { + border-color: var(--profile-input-outline-clr); +} + +.profile-field-input-delete:nth-of-type(2) { + display: block; +} + +.profile-field-error-message { + color: var(--profile-error-text-clr); + margin: 0; + bottom: 0; + position: absolute; +} + +.field-data { + font-weight: bolder; +} + +.not-avalibale-text { + color: var(--placeholder-text-color); + font-weight: lighter; +} + +.profile-field-label { + font-weight: 500; + font-size: 1rem; +} + +.picture_container { + max-width: 40%; + aspect-ratio: 1; + margin: auto; + text-align: center; + position: relative; +} + +.profile-form .user__pic { + width: 100%; + height: 100%; + object-fit: cover; +} + +.edit-btn { + padding: 0; + margin-top: 0.5rem; + color: var(--profile-edit-btn-clr); + font-weight: 600; + font-size: 1rem; +} + +.profile-edit-button { + padding: 0.5rem; + border-radius: 100%; + position: absolute; + top: 5%; + right: 5%; + font-size: 1rem; + color: var(--profile-edit-btn-clr); + font-weight: 600; +} + +.close-modal { + position: absolute; + top: 20px; + right: 20px; +} + +.model_background { + width: 100vw; + height: 100vh; + background: var(--overlay-bg); + position: fixed; + top: 0; + z-index: 1; +} + +.image-modal__close { + background-color: var(--close-bg); + border: none; + align-self: flex-end; + margin-right: 0.5rem; +} + +@media screen and (width <= 480px) { + .image-modal__close { + margin-right: -0.5rem; + } +} + +.image-upload-modal { + display: flex; + justify-content: center; + flex-direction: column; + align-items: center; + padding: 2rem; + background: var(--body-bg-color); + align-self: center; + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + border-radius: 20px; + min-width: 400px; +} + +.profile-form-submit { + border-radius: 8px; + border: none; + background-color: var(--profile-submit-btn-clr); + color: var(--body-bg-color); + margin: 3rem auto; + display: block; + padding: 1rem 4rem; +} + +.profile-form-submit:disabled { + background-color: var(--profile-disabled-btn-bg-clr); + color: var(--profile-disabled-btn-text-clr); +} + +.profile-field-error .profile-field-input-container { + border-color: var(--profile-error-text-clr); +} + +@media screen and (width <= 480px) { + .image-upload-modal { + min-width: 350px; + } +} + +.image-upload-link { + display: block; + text-align: center; + position: relative; + margin: 40px auto; +} + +@media screen and (width <= 1024px) { + .profile-container { + display: grid; + grid-template-columns: repeat(8, minmax(0, 1fr)); + gap: 2rem; + } + + .profile-form { + grid-column: 3 / 7; + } +} + +@media screen and (width <= 640px) { + .profile-container { + grid-template-columns: repeat(2, minmax(0, 1fr)); + gap: 1rem; + } + + .profile-form { + grid-column: 1 / -1; + } +} diff --git a/app/styles/variables.css b/app/styles/variables.css index 2e7c4cfe..1962cdca 100644 --- a/app/styles/variables.css +++ b/app/styles/variables.css @@ -36,4 +36,33 @@ --skeleton-shine-color: #edeef1; --color-yellow-low-opacity: #ffffe0; --color-grayish-blue-shadow: rgba(136 165 191/ 48%); + --body-bg-color: white; + --input-field-border: #666; + --input-field-border-error: #e74c3c; + --input-field-border-error-border: red; + --input-field-border-focus: rgb(0 81 255); + --image-preview-border: black; + --image-cropper-preview-border: #ccc; + --button-image-form-bg: #1d1283; + --button-image-form-bg-disabled: #ddd; + --button-image-form-bg-hover: #ddd; + --button-image-form-border: #ccc; + --message-success-text: green; + --message-failure-text: red; + --drop-area-border: #ccc; + --drop-area-highlight-border: purple; + --drop-area-highlight-bg: gainsboro; + --profile-field-input-bg-clr: #f9fafb; + --profile-field-input-border-clr: #d1d5db; + --profile-input-outline-clr: #1c64f2; + --profile-submit-btn-clr: #1d1283; + --profile-error-text-clr: red; + --profile-edit-btn-clr: #1e429f; + --profile-disabled-btn-bg-clr: #e5efeb; + --profile-disabled-btn-text-clr: #9ca3af; + --overlay-bg: #000000b3; + --modal-bg: #fff; + --modal-text: #000; + --modal-title-text: #000; + --close-bg: #fff; } diff --git a/package.json b/package.json index 87edafbc..f50bf55c 100644 --- a/package.json +++ b/package.json @@ -23,15 +23,17 @@ "lint:js:fix": "eslint . --fix", "dev": "concurrently \"npm:dev:*\" --names \"dev:\"", "dev:ember": "ember server -p 4200", - "dev:reverse-ssl": "local-ssl-proxy --source 443 --target 4200", + "dev:reverse-ssl": "local-ssl-proxy --source 443 --target 4200 --hostname dev.realdevsquad.com", "start": "ember serve", "test": "concurrently \"npm:lint\" \"npm:test:*\" --names \"lint,test:\"", "test:ember": "ember test" }, "dependencies": { "@100mslive/hms-video-store": "0.10.6", + "cropperjs": "^1.5.12", "d3-cloud": "1.2.7", "dotenv": "16.0.2", + "ember-cli-fastboot": "^4.1.5", "ember-d3": "0.5.1", "ember-phone-input": "^10.0.0", "exists-sync": "0.1.0", @@ -61,9 +63,8 @@ "ember-cli-app-version": "6.0.1", "ember-cli-babel": "8.2.0", "ember-cli-clean-css": "3.0.0", - "ember-cli-clipboard": "1.0.0", + "ember-cli-clipboard": "^1.2.1", "ember-cli-dependency-checker": "3.3.2", - "ember-cli-fastboot": "4.1.1", "ember-cli-htmlbars": "6.3.0", "ember-cli-inject-live-reload": "2.1.0", "ember-cli-sri": "2.1.1", @@ -84,7 +85,7 @@ "ember-sinon-qunit": "^7.5.0", "ember-source": "5.9.0", "ember-template-lint": "5.13.0", - "ember-toastr": "3.0.1", + "ember-toastr": "^3.0.1", "ember-truth-helpers": "3.1.1", "ember-welcome-page": "7.0.2", "eslint": "8.57.0", @@ -99,7 +100,7 @@ "prettier": "3.3.1", "qunit": "2.21.0", "qunit-dom": "2.0.0", - "sinon": "^18.0.0", + "sinon": "^19.0.2", "stylelint": "15.11.0", "stylelint-config-standard": "34.0.0", "stylelint-prettier": "4.1.0", diff --git a/public/assets/icons/company.svg b/public/assets/icons/company.svg new file mode 100644 index 00000000..0679898b --- /dev/null +++ b/public/assets/icons/company.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/assets/icons/linkedin.svg b/public/assets/icons/linkedin.svg new file mode 100644 index 00000000..9768779a --- /dev/null +++ b/public/assets/icons/linkedin.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/public/assets/icons/mail.svg b/public/assets/icons/mail.svg new file mode 100644 index 00000000..5caeeb7b --- /dev/null +++ b/public/assets/icons/mail.svg @@ -0,0 +1,4 @@ + + + + diff --git a/public/assets/icons/twitter.svg b/public/assets/icons/twitter.svg new file mode 100644 index 00000000..0900ae55 --- /dev/null +++ b/public/assets/icons/twitter.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/public/assets/icons/user.svg b/public/assets/icons/user.svg new file mode 100644 index 00000000..2de3e9e8 --- /dev/null +++ b/public/assets/icons/user.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/assets/icons/website.svg b/public/assets/icons/website.svg new file mode 100644 index 00000000..19c07c01 --- /dev/null +++ b/public/assets/icons/website.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/assets/images/dummyProfilePicture.png b/public/assets/images/dummyProfilePicture.png new file mode 100644 index 0000000000000000000000000000000000000000..b6e29f474ee67d178bf781320503150740ac979c GIT binary patch literal 56646 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 literal 0 HcmV?d00001 diff --git a/public/assets/images/page-not-found.png b/public/assets/images/page-not-found.png new file mode 100644 index 0000000000000000000000000000000000000000..e2b95b679df655d74e61f053e042dd4dd1d9cca4 GIT binary patch literal 11804 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 Date: Wed, 15 Jan 2025 11:35:03 +0530 Subject: [PATCH 2/7] reverted sinon package and fixed css --- app/styles/image-upload.css | 2 +- package.json | 4 ++-- yarn.lock | 43 +++++++++++++++++++++---------------- 3 files changed, 28 insertions(+), 21 deletions(-) diff --git a/app/styles/image-upload.css b/app/styles/image-upload.css index c617fcda..37357693 100644 --- a/app/styles/image-upload.css +++ b/app/styles/image-upload.css @@ -69,7 +69,7 @@ border: 1px solid var(--button-image-form-border); } -.image-form__button--disabled { +.image-form__button:disabled { background: var(--button-image-form-bg-disabled); } diff --git a/package.json b/package.json index f50bf55c..afc6287f 100644 --- a/package.json +++ b/package.json @@ -23,7 +23,7 @@ "lint:js:fix": "eslint . --fix", "dev": "concurrently \"npm:dev:*\" --names \"dev:\"", "dev:ember": "ember server -p 4200", - "dev:reverse-ssl": "local-ssl-proxy --source 443 --target 4200 --hostname dev.realdevsquad.com", + "dev:reverse-ssl": "local-ssl-proxy --source 443 --target 4200", "start": "ember serve", "test": "concurrently \"npm:lint\" \"npm:test:*\" --names \"lint,test:\"", "test:ember": "ember test" @@ -100,7 +100,7 @@ "prettier": "3.3.1", "qunit": "2.21.0", "qunit-dom": "2.0.0", - "sinon": "^19.0.2", + "sinon": "^18.0.0", "stylelint": "15.11.0", "stylelint-config-standard": "34.0.0", "stylelint-prettier": "4.1.0", diff --git a/yarn.lock b/yarn.lock index 46786bbc..356cd7a2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4469,21 +4469,28 @@ resolved "https://registry.yarnpkg.com/@simple-dom/void-map/-/void-map-1.4.0.tgz#f15f07568fe1076740407266aa5e6eac249bc78c" integrity sha512-VDhLEyVCbuhOBBgHol9ShzIv9O8UCzdXeH4FoXu2DOcu/nnvTjLTck+BgXsCLv5ynDiUdoqsREEVFnoyPpFKVw== -"@sinonjs/commons@^3.0.1": +"@sinonjs/commons@^3.0.0", "@sinonjs/commons@^3.0.1": version "3.0.1" resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-3.0.1.tgz#1029357e44ca901a615585f6d27738dbc89084cd" integrity sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ== dependencies: type-detect "4.0.8" -"@sinonjs/fake-timers@^13.0.1", "@sinonjs/fake-timers@^13.0.2": +"@sinonjs/fake-timers@11.2.2": + version "11.2.2" + resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-11.2.2.tgz#50063cc3574f4a27bd8453180a04171c85cc9699" + integrity sha512-G2piCSxQ7oWOxwGSAyFHfPIsyeJGXYtc6mFbnFA+kRXkiEnTl8c/8jul2S329iFBnDI9HGoeWWAZvuvOkZccgw== + dependencies: + "@sinonjs/commons" "^3.0.0" + +"@sinonjs/fake-timers@^13.0.1": version "13.0.5" resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-13.0.5.tgz#36b9dbc21ad5546486ea9173d6bea063eb1717d5" integrity sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw== dependencies: "@sinonjs/commons" "^3.0.1" -"@sinonjs/samsam@^8.0.1": +"@sinonjs/samsam@^8.0.0": version "8.0.2" resolved "https://registry.yarnpkg.com/@sinonjs/samsam/-/samsam-8.0.2.tgz#e4386bf668ff36c95949e55a38dc5f5892fc2689" integrity sha512-v46t/fwnhejRSFTGqbpn9u+LQ9xJDse10gNnPgAcxgdoCDMXj/G2asWAC/8Qs+BAZDicX+MNZouXT1A7c83kVw== @@ -8200,10 +8207,10 @@ diff@^5.1.0: resolved "https://registry.yarnpkg.com/diff/-/diff-5.1.0.tgz#bc52d298c5ea8df9194800224445ed43ffc87e40" integrity sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw== -diff@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/diff/-/diff-7.0.0.tgz#3fb34d387cd76d803f6eebea67b921dab0182a9a" - integrity sha512-PJWHUb1RFevKCwaFA9RlG5tCd+FO5iRh9A8HEtkmBH2Li03iJriB6m6JIN4rGz3K3JLawI7/veA1xzRKP6ISBw== +diff@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-5.2.0.tgz#26ded047cd1179b78b9537d5ef725503ce1ae531" + integrity sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A== dir-glob@^3.0.1: version "3.0.1" @@ -12885,7 +12892,7 @@ nice-try@^1.0.4: resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== -nise@^6.1.1: +nise@^6.0.0: version "6.1.1" resolved "https://registry.yarnpkg.com/nise/-/nise-6.1.1.tgz#78ea93cc49be122e44cb7c8fdf597b0e8778b64a" integrity sha512-aMSAzLVY7LyeM60gvBS423nBmIPP+Wy7St7hsb+8/fc1HmeoHJfLO8CKse4u3BtOZvQLJghYPI2i/1WZrEj5/g== @@ -14726,17 +14733,17 @@ simple-html-tokenizer@^0.5.11: resolved "https://registry.yarnpkg.com/simple-html-tokenizer/-/simple-html-tokenizer-0.5.11.tgz#4c5186083c164ba22a7b477b7687ac056ad6b1d9" integrity sha512-C2WEK/Z3HoSFbYq8tI7ni3eOo/NneSPRoPpcM7WdLjFOArFuyXEjAoCdOC3DgMfRyziZQ1hCNR4mrNdWEvD0og== -sinon@^19.0.2: - version "19.0.2" - resolved "https://registry.yarnpkg.com/sinon/-/sinon-19.0.2.tgz#944cf771d22236aa84fc1ab70ce5bffc3a215dad" - integrity sha512-euuToqM+PjO4UgXeLETsfQiuoyPXlqFezr6YZDFwHR3t4qaX0fZUe1MfPMznTL5f8BWrVS89KduLdMUsxFCO6g== +sinon@^18.0.0: + version "18.0.1" + resolved "https://registry.yarnpkg.com/sinon/-/sinon-18.0.1.tgz#464334cdfea2cddc5eda9a4ea7e2e3f0c7a91c5e" + integrity sha512-a2N2TDY1uGviajJ6r4D1CyRAkzE9NNVlYOV1wX5xQDuAk0ONgzgRl0EjCQuRCPxOwp13ghsMwt9Gdldujs39qw== dependencies: "@sinonjs/commons" "^3.0.1" - "@sinonjs/fake-timers" "^13.0.2" - "@sinonjs/samsam" "^8.0.1" - diff "^7.0.0" - nise "^6.1.1" - supports-color "^7.2.0" + "@sinonjs/fake-timers" "11.2.2" + "@sinonjs/samsam" "^8.0.0" + diff "^5.2.0" + nise "^6.0.0" + supports-color "^7" slash@^3.0.0: version "3.0.0" @@ -15271,7 +15278,7 @@ supports-color@^5.3.0: dependencies: has-flag "^3.0.0" -supports-color@^7.0.0, supports-color@^7.1.0, supports-color@^7.2.0: +supports-color@^7, supports-color@^7.0.0, supports-color@^7.1.0: version "7.2.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== From 46533b81346b10646b90a1b845d793c2d815b97a Mon Sep 17 00:00:00 2001 From: suvidh Date: Wed, 15 Jan 2025 12:03:43 +0530 Subject: [PATCH 3/7] removed profile-not-found image --- public/assets/images/page-not-found.png | Bin 11804 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 public/assets/images/page-not-found.png diff --git a/public/assets/images/page-not-found.png b/public/assets/images/page-not-found.png deleted file mode 100644 index e2b95b679df655d74e61f053e042dd4dd1d9cca4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11804 zcmdsdhc{f&*XSK2NYN6}LxKo`kSHNaA|YDzZV)2ssL>6RM2+4%5z$+sj51oH1wquo z=rzh9qYN{cck}(e_5Ogj)?4en@2)lX-Z^)l-Of3CpR@Ol(0ZwS^%CnP006G4ym+Pq z0A%1R89;Rrd>r_U5x@t9$5RzOD)0)RdL0h_r*?f|>;V8Yo&SE2WI-A>u#x5MbECJq zE^pp?zjC($yuH1J?VTMxtY5j>2)nr3X6`&@1pqEU<=GQGpDgUGce9yiHt8=OpY`BD z{d{KTQ@^KFw}Kg{pHn0;y#H+F@>MW$>Em4_)X>Xwb{zhvNgfToEO<#rk3!EW{4Uhw zc1v)^N+BMTU~0QlyHDhPALrNqXx;zK;MNJ#jLiO7V8X9ozC-wcND7d%|B=_HB^Jzu z&hcpu8IypbhgIbx0W2PAE1GdG8Ss3+@gX{AArvud51lQP!7m195^^U!2pR zJ#$5$?|%*O80ytsFRzDMu+szQRqV{bM<+)2 zXPRE-mXtS(reV&EG~O5^-u2`&dAm}OHLOy8-{3@g{)MfYI}A+;>Tn@-M??IH|k_jAlmzi=%`OqX(0#q%ns8k`9P_t)%2>?(jT&7rqqS8#V(& zOuIPZH=>M`mVwcN5XrV>_O4b_}v$6N@msIVoT@Ye5r4uGqgok9TOf*R}H z)%DkrjZCS|7M_h*zaIv5+<=JJ+lPMQtAZ<;9xyanCnGn|-a6h?B9!h<_~HOnGD_wK z%DlYp;l$3b{lk)pw)0Mn-`i#J|ABOZ&tSzqdB^*E~9OK4ynNOESVvxC$mAo(XuYup|Nr_(^d3}+N z5I~Q~qSb4yhBM$3e0>~|O<}V#9=^iK?dIkaLPx`TlA)zfJcn;R2 z`?D4Ke`)h|pL}Z4H|S-6%Q!>RRn5wz?4(iZxLxvm#gM6*9xBQDQ2|fjIRL9e(kJ zskRZaKK=suV1{U{(W-#&~J}LRV^%&^63u^Tw(i|5(s}}k&r6@AOBBtJAQx?h6aFk*A>;Sk7-pmh``r3 zJt@WsFKeNc0MH?-CmZvO4{f(C)aEbL)W< zNbebFN%e}WPiy}H%z*&5DA2wtb;aVvB__H+BCd2G#0#!}9)$WIFxNXO@XkXA0RRNW zZSXZt;h#Zf_~%3v$mqfQ{};eHSTefD-aQDN%%<14=gHmT#Zo0ItD&qIo9_&XBE2j> z`+6By4s2FmU)K4?qmpqt=8?c7pRH4JEC2M15@W_zQtsp@9ccHPDaNj?Opy8&BZK>cJ&JN-F%>YR>Yb2eVHac z>YEn-k2Tn?Hdfa$*&b6k7D`hf;l*DEFVZ{06OO;nRkldJ<{45`(Wn#9aG3br+`H*F zI=m?p;1E7;NK;j&8SO1!)a{>Z=m#yz`krSf4;rY#n9+sLQ=8C$FV$7)Hbq*N@>Xz0 zyDj^mr%FAOmE4sx9A~USUD*x|M3(fnfPA)?yhh#H7!P3X_o2)v~vuZopF4I(kCrk7At58 zD{bk$`3O488PIakTt>2UlTOlp`Aw=iRLd3>1CKZ?l80E%X9Vqsn^d)$4z}maAB8#Y zH7Jgqcj1f27%*tQqgyRVXmn73PPDg3DrQ!G(@TjJFz@w*CevmXVuSn>ymH?DDaMpg z6mC1tME8&R&62yjhiKQ225pkTh^MBFvT<}22vIIzyEmyXV=vou{B6JWyIRAn$uC%o z6NG!1=H)N4!GbjoWhTx(3Rm&6A}1ZBi%lZd)Ie2|gS{5IS;$D(( z4J+v&fD5}?6pNl9`Ba6jsbBdb+sOp6yg~(3y-~H{IB=0SJga6Rht-=|P>ki=HN=OO_DFPTnCMBOmCE)vCE@VRg5_zEZ7E z*hEkYAtlRT-@goaAg-Lvhq3Z-6Gh&3td{T~ZZs*V^`*JL<^s&xDeGO<9kU~44bo)t zJB!l}t;yjcYEoe0TF|jTfegVZ^}(BKZT_YUOhGERCW1J2U-BoG~JzQ@_QOD?I-@X&4s1{9%Xhm!kFQEZsTx%sHoHEgvz4lubL`VlygllJp1zmQxIh` zitQf{*h%{p9?F{Q8|<+B(7P!t(Y;J^LoT><$giq^gKHcKk9?7DZTtE7{W|Lrf|Wo zVT+{ziH-VF^;f>ZI@htAUaqP|c~rR3L`YJO*>53I)wk=;KoH(rzs)@ps}l;F8Hnwj zWf|Bz4d$F-RFQAr0Y$W&xk~$N!q7pj-XV99E#m6NAxFkhZ&|XhTOwA6%#it~!&(=* z*mFYwQ^0OiQl4V*_`0#TxQMg1AI$&t8ARk3&}sH&+yGpOO4GI-(0*<#t2u5B$Xj$x{1N2~3dCd?T!4^1?-^VBe9ksu z{Bg~bQMvv6XTPXKQsH&yL%ZS|6GgDpYE4hg%E;y+g0g|~9G?OZ-WU}^EHqc%P4klJ z*egII9s8JEl2}v+=e?)q8Ocm`EncCLTKdXAp3A1rP3nt#$Z0*I0z^|yTo&g(?e=4? zZ(kIhOhnJ+^OH_>AHl~-13})a?#7hxRYQjW=NgdJICD;{kfc4j^h2?W3_yX9+J_h1 zgN7&GXNM*BGKrr=N*Wx>lF0d!RWts^qWd|RrT0E?FRffst;3saU}i-v3oLk;AY9$e zgL03I)wYTr@!r?FcD^fNGmV@U?r5@de&HeS-+~o0Pnmx0c6V-hnR$4Lk;%H`>M-r| z)-Mk$znjdDS1xJ}m2RXc!&2$l&ie*3PFj4*Lx!BbdT*7DnYmQB@LU54jNBksaMMYw zYb{I1WR3^BkmkHtzUh+s!}L*k7%vu8<4eG5RL{4WaCQ**vpI>BuoSG6yd_oj_{y?K zn})N?#6Ngkf5w?hTQ#)1a_acT^}@QobtKzuB_LeXlp6?1&(gganqezZ{5R&fGN`_y z);aUe+4r6K*b2N^-~@%>+3hJ%xhd6$u-Dx_f@cOOY7$;~!jH4Pb2lUi7?L|_9m(9D z30;t-WCP)BLNDQ@vG?fvhZZm|esA71F8I|agzOJ*`JrH-8+iUTxwR!mjzz7^In-z9 zI~kdRdV%Cy6Pe_y_Au>*?z4kH46k0)#8#@w272ua=7+ixKqouo1(}pF?I0!SrLkxL zuGPN2rd~g>L#nM+I*Jt^bxrgtt0KOTipTC*RDohl3g=s0_oI9W&aCnCl#uwNOk^Fg zK(uejF8Yh0t>udnn9SWZ3xA{V{IsyM}_Cp~#lg5185Cb*6jPt!Npwpd5;nv{f>=Q<8 zcyh4fm*qn)p_a1SXrZNrtFfL=H9%q zkYh_41@);7DXB=SV`>w0Kn+Wv* zZAN^TBI5lFc{_H%p|3z*e{>)=#`mdp2UOFMz-!oxF*godADfrN{r&*m+>LZz=`?yw zVRyG3SnxcuClm#hcgy5*=*kpsm#x;v+7oOm6VU^=o{xV7=oHPBtLhXHmqtIF+;=B< z{4-_x#Fc4<>BKK@F%lZYv2k}4fz0uN-fFc&YV0W+v)5mY|H}3L_=Ds*yIs0ZpN;@m z6!GEyGP?N9bJsBSaXFOssQmu5#1P3SfYr~5y*8fJ562QZ!dsuJ&IOVpqRjnc z3j-D}rsr8Lz$k@k+#|En;I4$6vZc;DjD=CUull5XOOl%PR4caxoY{s`POD9J;i3tx zPQs8YOR~1O=Nd$G=1R!@kMVQAOZY9$ll4B{iMl1NP8O9{TXC&7iuyGzVj_2@s42|w zqSo&@8w2OzV?k%b^`bcj6V4~aaQAF10}obu>f3rYpWQ-IM{=&LwpdWhSk)iQIhr!1 z-{EZEA)16;cF#4+ckewvn@=H{YpthWe!9!oGCW9wSdA*O0?M54m6WLuk?O7&a17E4FW)9_9KF-peL|XkOl!b?Ii^{5g<_{5fd7ZL)&f_Of4y?Ck zqBoX%0;sectW!;#se?*38rV`x)(3iAb?g`yZzx?5&sh)5RJ1BBbUsG_p;mhC74Wj>S<8=#e{>|N9Ze z&649C`jM4n?NwWT=bt#@l$PZ(fHeGrL-T$KqV&;M0;PqX!&b~s0$Y4_OEP;x?f#7J z7!kSLJu^5h(yX!ebIMx8E~&5aRtY<#^~&jQj_2J>uRMz_nX?^xzYnxcj~^4F1dgCb^%~Z zoO9r`;PB1uSlrpJpTG}#Scu4DFHV@32Peg`;3LzzGIWDBGCrr{Cq1y# ziBFz(vZvr$&;{P9TDo8GaXoF0Fr{mQRyMSF@dXhn#zZF7)4oKUH6 zHv$KsbK*4*|D-kIo$4!(agBGsul9qgu=133SLgxAlRGCU+CR}i$hzMHblk|+=<9qE z(I<3VpBM_z7}Nh!BI4U^pfkLJ9=HSCE-4p+teneRA^ric0TgbxS+v{&EH(y^G>|1( zN+O8))jl1U5)k*Sz%h06nLw}$+WV5-))nC6}T)UgNWm&f4?f2{}DxPEd%1x zvRB)Ecq5fS$S9LrLb z5~**!s`LN0pQ4snx=+;6>}0{us>L_EZz+UdBU89CX%f?^#gouC@!ix35+wz?3q-|L z6_DPu>W0lb@{s`Im34g2A-n}kocdyjO7OdRKQX&V9D~2A64UN;Kh<`80cz@ z-Z);ijNs^vQ%CNQJgDfFx@({cBL$LELT@s*5Znd-;`F@q^}NS ze43$upyyEjO^+iq60l4kphpy%a@J3H$Fc63wUQ{A^Jm^~Z2IrtKFqGuYF$^-Wwz>_ zC}q>VTe_OUSAM`zyJng@v%3rLx$AwPjt$tleVFS;p~h+b5yVxu_><=^eEe~}w)hZi ztRZ)%Y=>6FU_K$Awsh6zI!#?UUrpGj#7svv#huZtW9 z@lur@DhKy0Rl(E4hKhDPK1P zOF+w7qM|x)14chW?&LV+nuFn=;9!k}etG3{{atlH1CTW#**As@Ku9FvNe+)9rHm4Kf7pouQmbx7TSr26gOn z9^Y23tin>`j6hCKA1aS@$6F*Kp=3{&ilj~-#`HC>mxGg9C+qiX6vg&)w}5;s16{(> zvvb&TvDCXDCQ~XPWrbGmrx*2P>?nZ9i!bE`zPe;FXZ{#7IBZ>=Y@gnD6nj@E z&agB1qyU4wFt>B;Z=qGm(iBXMwvU$y*|uFw*O~Te|mFx2I8DB zHVQiUkVtY4qzD>A4J3^D;BoDkti8+re7rX@Kd{|Ca@5&uIR4c>-SNjW&?zEd?TPVo z;H%SK-Ts*Wpc^QEZ7c8P@u2SbcSz%`F?KtD?%~tSuvJfr`YmWjq-g<@#6{4#UcJe> z{V{!xSGi=jwu2mYjk{(U&gbAd4ASSh37R}nSTSX?Zb2EwX!FYG7RIg3qoW z&o3=)@Sw@`Zd<}0_k4hG8jTamHrr^ZbWbFw(e1V)%4g@#ywZISW9kswn^qk2rO&_b z23mcHJk}nA9@0G$r^E>JYFA&jb;O_tFT)JGf2jLE7{64lvx8m? z@@Tx&a&+Y2z4fCpS*LQyZeMax*ZF)*Yr1FdYV(d3>7{y~h2THQt2#YjN^ijK=xt7-)KJgtjG_AVwh zY449#R`;-fo|ELve~0G0IYp)BHGC`n-~oGjvT2fWqfKn?x*xuIfieHCU0Tziv_L{2 zK~qlsjPGV?D7cT@=giTWP294}7k(U9Q((}v-O2)uNTuZP*LzzxYIvkm6y=>r|#avbJ1DV!Av$MrJm)mW8{Y{{$~y;;3N z^W3oK{-X~U>Q0Ze1>xRpB+n6N{NH|0mgMenL3zjb?qM2>2VIxi+q5q1jaIrV|I*qC zXF;k>@#zYfUIt`_{1u%vud_W4tjuus{RN&dd+U8(L|G*2crB{iFb&okbi8Yrg-?(v zpyzXi=a*mXtM>3Ha6LPV%xC#gsWiJw>knv;r-YN$08 z(x?E1v?y&-LI|>~SSlpnwyjwQq9ElH2D!Bb@4tQLSu{da$y8W+){8}9oEyX;2*!=) z86+}Ugx42(S<@t^{`&*{MqVphKn0^zQTaf2O`?}80g;pvnsj0ciZ1J)bN$z z(~Ob*0K+=~c=l!MGp~T;*rYHwlD)@nHg(}!f-;WH zSTRH=7XZ+2`u0$>X7te4qSVIG4rlB04qz8;Du623<*%7aCOkH6*^b!OlFF@Z@m*9Y zvlZu@EGrkI^us7%k;rar&gj!~i#f&`R)Mm}l-v7Y_2qtrK1Z&9CRWVKdJoE1y56uC zYg;L?n(>FWA)$8b3SdyHcj26oK2661wgM;EYp!PWT>>py5Fvh3cHIYKW3856z3$Un@@w&D%uus2dC{+WXsGyH@SBR` zxf5i6u~DmaQtkw+Z`(=waN7_)4H-aYz1*-g6aQDX@({tUj3FJi^l|8a4+_;*1qEK! z4-%0dh_AMemv#4Bfv?4UY}E|@01~>=y7ToXk=*1!u znAf4Qo>Rnmigq1~&um^ie##~9KiyVts2c_zb^as>zI4(#YG{l^iFK#Ao9X-jp%(EBDHXCD_M0^xq&w85sD7}W?3K;*p z5i!Z^bG8^ilPdBntGHFN_0B=y=ar(zFcKPHyq{3xEmT)}Lutg#qi!iQwoGs6obt(* z@4je!RP*W$bzM^L6_VjKP;cnJwClxYY;%+?xnARe8#1M97*ZK?evWr;amDHi-UL3-Fh%4wt!JJ*@d60BuKHpJUyWV_zjiA>rrj5mynVmv&!J z2nX%)z(_cMUcRhU@XSA7I`e)rCn5_frIuOQY;VP$Vh^HpcL#!C^HNCW zN2BkeT*0`cEyvzBK>|`)iyk4h)XnifD=+&0YA&~?$|B2a`hs|g-Wf~lE~iUW`V!G0 zy86C~^io=*npoXNN-^=dO=gndW($TO?i`R9RWp<-#p5YQD918b4dCHdudaFOJ67bV z_#^wDtp4>!5hRsoOSVeu%_Oif);s(+9NYHyI#LgJux|bV(mB3s%9+tB&`n~~Gac(c z$z+gB3!JBMl?y8BHazJZ1U|zDzYH{WKe4C*A@`Om+it`qsM07>U2R1Dy?Iu1H$6bN| z3U&eW-eI9Q`A4fsu>qR}xsMXwuB9^#iFTjr=tS3Tf=Tx9fYtpjmu#=;FwJ=Ln-JG? z!;gUpoB$9WvzwZomxmkT>3swezn5^})h`Za@TsmxuG+i!bSTg5HdK-VFYx-r7wTzFQpEw%I*0Q37@_(o8QxEKF7 zCx~8lLKK!k%Ldn6s1-s56iXY+mC=9A?yiTD(Mgd3rGqaq7d~w|-2y&cq6f4*2^=M1 z+5knTloCfM)AdqX2%v8tZHpq)i)`+Qq#g$gmr4(6dn6?&th0N1cuKETIq4OI=^_Oc z>KbI8r#PHOB0$dj<#Y{y+;rQ$!n0YqhR zYxk-2B%#%O_p2yf=zyq_Mb*9@sBtaG~6aG)hEh;n3WPEc*3JAH87PF;WQ8+ z0%xa6@W~%$mGJ&Fuj31nr7p7)w6h7T)r0L9i=+H^TDuSn|saTvYyg;~w{SFbG!*i#f>l%XbXe zIA|W`52?O!{Yw<~2i;xks7sY)wmOxSYHFA(it=D(SKOFwRA6d+V5(bE%3D{J4D$o= z@2RY1KCdltT8B#6f!v;~`HVRSw#wU^l-r>Iuzg3wK18s>wT$#}II-$no*U6(%>Zsp z|BuT};_{(<`D9>uiW|=%Mwkqo#XZcrUI7;H|4eVu?j&{<+5di5dfvlaQS)DmAV%~} zm~~X!53gHbm5X$D+F{Ht8`v43wuhacF_raH@3i)cI$ys zLbHo%5H;XEdzgJSVW-~c8URqGFE`B6%K5BzjFf4THxKH_f>g+I*3WSTq`*hO^~iG( z9_&{gu+)YsSrpfAv#Ta@M(T$w%=wG#;^ELYMfX7ZcZT-QYn`TOr!5FU>*H&VQIA8`w&ub#7ekdt&`-{WJe%00;*2#Aj`WbHt#CDfG1)BIljEQNxcGQ!ca@ z=G-hi1;&5v&j<2QGIWr!t2m7h;Q5vuyjKGl?=S#+=2$^~fOi}vHK*$k16~_C2 zpkeIpKb%ymSR7vgOCLZXQ}y~x8=a=adsK0>2b1tY$Yk{V$VgzGXp@yw0cb<-`{bZg zUZygs3ec|qC7NAq5K&7BSkjqC2SqoC0pB{r6h29R(J2W_5ke6>xqSz}IzyUAGQ?wr zvmdM<3ndue?q%E9hjdcb0|-^yBvoIuFvt-`iSTQ2j?5<+wbOJOR*(>rcyMZ$Lkj@i z-ELU{&}@9GO@HOdo?VXo5jf@pqWQaDFwVpc?kBY@$6wFB^#nc~ zpWZx+-py3w9iVN31K(d!0O69>S$TSWEyAfD@@L1(hBOzaz2c&=JLNUPaufLMeYnNC zY6kNg3qUCb06Jquak4|Eg6V?)w3W%a)^tvfzowLrk|AzuzER~Rt+-Fg&oXB(5~ZKq zyG2nBo{!xuSDFgZZdt39j)B;wbj~^d-PN;2yu Date: Wed, 15 Jan 2025 13:24:49 +0530 Subject: [PATCH 4/7] changed sinon to @19.0.2 --- package.json | 2 +- yarn.lock | 43 ++++++++++++++++++------------------------- 2 files changed, 19 insertions(+), 26 deletions(-) diff --git a/package.json b/package.json index afc6287f..4586ccb4 100644 --- a/package.json +++ b/package.json @@ -100,7 +100,7 @@ "prettier": "3.3.1", "qunit": "2.21.0", "qunit-dom": "2.0.0", - "sinon": "^18.0.0", + "sinon": "^19.0.2", "stylelint": "15.11.0", "stylelint-config-standard": "34.0.0", "stylelint-prettier": "4.1.0", diff --git a/yarn.lock b/yarn.lock index 356cd7a2..46786bbc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4469,28 +4469,21 @@ resolved "https://registry.yarnpkg.com/@simple-dom/void-map/-/void-map-1.4.0.tgz#f15f07568fe1076740407266aa5e6eac249bc78c" integrity sha512-VDhLEyVCbuhOBBgHol9ShzIv9O8UCzdXeH4FoXu2DOcu/nnvTjLTck+BgXsCLv5ynDiUdoqsREEVFnoyPpFKVw== -"@sinonjs/commons@^3.0.0", "@sinonjs/commons@^3.0.1": +"@sinonjs/commons@^3.0.1": version "3.0.1" resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-3.0.1.tgz#1029357e44ca901a615585f6d27738dbc89084cd" integrity sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ== dependencies: type-detect "4.0.8" -"@sinonjs/fake-timers@11.2.2": - version "11.2.2" - resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-11.2.2.tgz#50063cc3574f4a27bd8453180a04171c85cc9699" - integrity sha512-G2piCSxQ7oWOxwGSAyFHfPIsyeJGXYtc6mFbnFA+kRXkiEnTl8c/8jul2S329iFBnDI9HGoeWWAZvuvOkZccgw== - dependencies: - "@sinonjs/commons" "^3.0.0" - -"@sinonjs/fake-timers@^13.0.1": +"@sinonjs/fake-timers@^13.0.1", "@sinonjs/fake-timers@^13.0.2": version "13.0.5" resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-13.0.5.tgz#36b9dbc21ad5546486ea9173d6bea063eb1717d5" integrity sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw== dependencies: "@sinonjs/commons" "^3.0.1" -"@sinonjs/samsam@^8.0.0": +"@sinonjs/samsam@^8.0.1": version "8.0.2" resolved "https://registry.yarnpkg.com/@sinonjs/samsam/-/samsam-8.0.2.tgz#e4386bf668ff36c95949e55a38dc5f5892fc2689" integrity sha512-v46t/fwnhejRSFTGqbpn9u+LQ9xJDse10gNnPgAcxgdoCDMXj/G2asWAC/8Qs+BAZDicX+MNZouXT1A7c83kVw== @@ -8207,10 +8200,10 @@ diff@^5.1.0: resolved "https://registry.yarnpkg.com/diff/-/diff-5.1.0.tgz#bc52d298c5ea8df9194800224445ed43ffc87e40" integrity sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw== -diff@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/diff/-/diff-5.2.0.tgz#26ded047cd1179b78b9537d5ef725503ce1ae531" - integrity sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A== +diff@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-7.0.0.tgz#3fb34d387cd76d803f6eebea67b921dab0182a9a" + integrity sha512-PJWHUb1RFevKCwaFA9RlG5tCd+FO5iRh9A8HEtkmBH2Li03iJriB6m6JIN4rGz3K3JLawI7/veA1xzRKP6ISBw== dir-glob@^3.0.1: version "3.0.1" @@ -12892,7 +12885,7 @@ nice-try@^1.0.4: resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== -nise@^6.0.0: +nise@^6.1.1: version "6.1.1" resolved "https://registry.yarnpkg.com/nise/-/nise-6.1.1.tgz#78ea93cc49be122e44cb7c8fdf597b0e8778b64a" integrity sha512-aMSAzLVY7LyeM60gvBS423nBmIPP+Wy7St7hsb+8/fc1HmeoHJfLO8CKse4u3BtOZvQLJghYPI2i/1WZrEj5/g== @@ -14733,17 +14726,17 @@ simple-html-tokenizer@^0.5.11: resolved "https://registry.yarnpkg.com/simple-html-tokenizer/-/simple-html-tokenizer-0.5.11.tgz#4c5186083c164ba22a7b477b7687ac056ad6b1d9" integrity sha512-C2WEK/Z3HoSFbYq8tI7ni3eOo/NneSPRoPpcM7WdLjFOArFuyXEjAoCdOC3DgMfRyziZQ1hCNR4mrNdWEvD0og== -sinon@^18.0.0: - version "18.0.1" - resolved "https://registry.yarnpkg.com/sinon/-/sinon-18.0.1.tgz#464334cdfea2cddc5eda9a4ea7e2e3f0c7a91c5e" - integrity sha512-a2N2TDY1uGviajJ6r4D1CyRAkzE9NNVlYOV1wX5xQDuAk0ONgzgRl0EjCQuRCPxOwp13ghsMwt9Gdldujs39qw== +sinon@^19.0.2: + version "19.0.2" + resolved "https://registry.yarnpkg.com/sinon/-/sinon-19.0.2.tgz#944cf771d22236aa84fc1ab70ce5bffc3a215dad" + integrity sha512-euuToqM+PjO4UgXeLETsfQiuoyPXlqFezr6YZDFwHR3t4qaX0fZUe1MfPMznTL5f8BWrVS89KduLdMUsxFCO6g== dependencies: "@sinonjs/commons" "^3.0.1" - "@sinonjs/fake-timers" "11.2.2" - "@sinonjs/samsam" "^8.0.0" - diff "^5.2.0" - nise "^6.0.0" - supports-color "^7" + "@sinonjs/fake-timers" "^13.0.2" + "@sinonjs/samsam" "^8.0.1" + diff "^7.0.0" + nise "^6.1.1" + supports-color "^7.2.0" slash@^3.0.0: version "3.0.0" @@ -15278,7 +15271,7 @@ supports-color@^5.3.0: dependencies: has-flag "^3.0.0" -supports-color@^7, supports-color@^7.0.0, supports-color@^7.1.0: +supports-color@^7.0.0, supports-color@^7.1.0, supports-color@^7.2.0: version "7.2.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== From 2ad6c9bf474746867c35d722e7731ddc3d443e6a Mon Sep 17 00:00:00 2001 From: TEJAS <98630752+tejaskh3@users.noreply.github.com> Date: Thu, 16 Jan 2025 01:03:49 +0530 Subject: [PATCH 5/7] [My Site Migration] Test Cases for identity linking page (#968) * resolve merge commits * feat: add get started page * remove: unused auth url * fix: css for get started on identity page * feat: add identity page behind feature flag * feat: setp1 page in identity linking * remove: unused redirect-auth util * Remove .DS_Store files from repository * feat: add varaible css * feat: add varaible css * feat: add step2 on identity linking page * feat: add step2 and step3 page * feat: add reload step * feat: add varaible css * feat: add test cases for getstarted and step1 * feat: add test case for step2 * feat: add test case for step3 * feat: add test case for verified and bloceed stage * WIP * refactor: update identity flow with improved state management and auth handling * refactor: clean up identity route by removing unnecessary comments and maintaining API import * fix: correct import formatting in identity route * remove: comments --- app/components/identity/blocked.hbs | 8 ++ app/components/identity/verified.hbs | 6 ++ app/controllers/identity.js | 17 +++-- app/routes/identity.js | 43 ++++++++++- app/templates/identity.hbs | 8 +- .../components/identity/blocked.js | 26 +++++++ .../components/identity/get-started.js | 52 +++++++++++++ .../integration/components/identity/step1.js | 71 ++++++++++++++++++ .../integration/components/identity/step2.js | 74 +++++++++++++++++++ .../integration/components/identity/step3.js | 41 ++++++++++ .../components/identity/verified.js | 19 +++++ 11 files changed, 355 insertions(+), 10 deletions(-) create mode 100644 app/components/identity/blocked.hbs create mode 100644 app/components/identity/verified.hbs create mode 100644 tests/integration/components/identity/blocked.js create mode 100644 tests/integration/components/identity/get-started.js create mode 100644 tests/integration/components/identity/step1.js create mode 100644 tests/integration/components/identity/step2.js create mode 100644 tests/integration/components/identity/step3.js create mode 100644 tests/integration/components/identity/verified.js diff --git a/app/components/identity/blocked.hbs b/app/components/identity/blocked.hbs new file mode 100644 index 00000000..1a3d68fe --- /dev/null +++ b/app/components/identity/blocked.hbs @@ -0,0 +1,8 @@ +
Status Blocked
+
The system failed to link + your profile service with the Identity service, + Please try again!
+ \ No newline at end of file diff --git a/app/components/identity/verified.hbs b/app/components/identity/verified.hbs new file mode 100644 index 00000000..ebad1442 --- /dev/null +++ b/app/components/identity/verified.hbs @@ -0,0 +1,6 @@ +
Verified
+
Congratulations!!! + You did it, go ahead and tell in the community that you verified your profile + service.
\ No newline at end of file diff --git a/app/controllers/identity.js b/app/controllers/identity.js index 8bf6f2df..f1b42f5a 100644 --- a/app/controllers/identity.js +++ b/app/controllers/identity.js @@ -18,14 +18,17 @@ export default class IdentityController extends Controller { } get initialState() { - if (this.userData?.profileStatus === 'PENDING') { - return 'reload'; - } else if (this.userData?.profileStatus === 'VERIFIED') { - return 'verified'; - } else if (this.userData?.profileStatus === 'BLOCKED') { - return 'blocked'; + const profileStatus = this.model?.profileStatus; + switch (profileStatus) { + case 'PENDING': + return 'reload'; + case 'VERIFIED': + return 'verified'; + case 'BLOCKED': + return 'blocked'; + default: + return 'getStarted'; } - return 'getStarted'; } @action diff --git a/app/routes/identity.js b/app/routes/identity.js index e9fe8671..c6adb2b6 100644 --- a/app/routes/identity.js +++ b/app/routes/identity.js @@ -1,11 +1,52 @@ import Route from '@ember/routing/route'; import { inject as service } from '@ember/service'; +import { APPS } from '../constants/urls'; export default class IdentityRoute extends Route { @service router; + @service login; + @service fastboot; beforeModel(transition) { if (transition?.to?.queryParams?.dev !== 'true') { - this.router.transitionTo('/page-not-found'); + this.router.transitionTo('page-not-found'); + return; + } + } + + async model() { + if (this.fastboot.isFastBoot) { + return null; + } + + try { + const response = await fetch(`${APPS.API_BACKEND}/users?profile=true`, { + credentials: 'include', + headers: { + Accept: 'application/json', + 'Content-Type': 'application/json', + }, + }); + + if (!response.ok) { + if (response.status === 401) { + this.router.transitionTo('index'); + return null; + } + throw new Error(`HTTP error! status: ${response.status}`); + } + + const data = await response.json(); + + if (!data?.roles?.in_discord) { + this.router.transitionTo('index'); + return null; + } + + return data; + } catch (error) { + console.error('Error fetching user data:', error); + this.router.transitionTo('index'); + return null; } } } diff --git a/app/templates/identity.hbs b/app/templates/identity.hbs index a9511781..c80bf5ef 100644 --- a/app/templates/identity.hbs +++ b/app/templates/identity.hbs @@ -12,7 +12,7 @@ {{/if}}
- {{#if (eq this.state "getStarted")}} + {{#if (eq this.initialState "getStarted")}} {{else if (eq this.state 'step1')}} @@ -23,8 +23,12 @@ /> {{else if (eq this.state 'step3')}} - {{else if (eq this.state 'reload')}} + {{else if (eq this.initialState 'reload')}} + {{else if (eq this.initialState 'verified')}} + + {{else if (eq this.initialState 'blocked')}} + {{/if}}
diff --git a/tests/integration/components/identity/blocked.js b/tests/integration/components/identity/blocked.js new file mode 100644 index 00000000..83b9051c --- /dev/null +++ b/tests/integration/components/identity/blocked.js @@ -0,0 +1,26 @@ +import { module, test } from 'qunit'; +import { setupRenderingTest } from 'website-www/tests/helpers'; +import { render, click } from '@ember/test-helpers'; +import { hbs } from 'ember-cli-htmlbars'; + +module('Integration | Component | identity/blocked', function (hooks) { + setupRenderingTest(hooks); + + test('it renders the initial state correctly', async function (assert) { + await render(hbs``); + + assert.dom('[data-test-blocked-heading]').hasText('Status Blocked'); + assert.dom('[data-test-blocked-desc]').exists(); + assert.dom('[data-test-blocked-button]').hasText('Retry'); + }); + + test('it handles retry button click', async function (assert) { + let retryClicked = false; + this.set('setState', () => (retryClicked = true)); + await render(hbs``); + + await click('[data-test-blocked-button]'); + + assert.true(retryClicked, 'Retry button should trigger setState'); + }); +}); diff --git a/tests/integration/components/identity/get-started.js b/tests/integration/components/identity/get-started.js new file mode 100644 index 00000000..05de06db --- /dev/null +++ b/tests/integration/components/identity/get-started.js @@ -0,0 +1,52 @@ +import { module, test } from 'qunit'; +import { setupRenderingTest } from 'website-www/tests/helpers'; +import { render, click } from '@ember/test-helpers'; +import { hbs } from 'ember-cli-htmlbars'; + +module('Integration | Component | identity/get-started', function (hooks) { + setupRenderingTest(hooks); + + test('it renders the get started component correctly', async function (assert) { + this.set('setState', () => {}); + await render(hbs` + + `); + + assert.dom('[data-test-getStarted-heading]').exists(); + assert + .dom('[data-test-getStarted-heading]') + .hasText('Qualification Criteria'); + + assert.dom('[data-test-getStarted-desc]').exists(); + assert + .dom('[data-test-getStarted-desc]') + .containsText('To update your profile details'); + assert + .dom('[data-test-getStarted-desc] a') + .hasAttribute( + 'href', + 'https://github.com/Real-Dev-Squad/sample-profile-service', + ); + + assert.dom('[data-test-getStarted-button]').exists(); + assert.dom('[data-test-getStarted-button]').hasText('Get Started'); + }); + + test('clicking get started button triggers setState action with step1', async function (assert) { + assert.expect(1); + + this.set('setState', (state) => { + assert.strictEqual( + state, + 'step1', + 'setState action is called with step1', + ); + }); + + await render(hbs` + + `); + + await click('[data-test-getStarted-button]'); + }); +}); diff --git a/tests/integration/components/identity/step1.js b/tests/integration/components/identity/step1.js new file mode 100644 index 00000000..197c5b4b --- /dev/null +++ b/tests/integration/components/identity/step1.js @@ -0,0 +1,71 @@ +import { module, test } from 'qunit'; +import { setupRenderingTest } from 'website-www/tests/helpers'; +import { render, click, waitFor } from '@ember/test-helpers'; +import { hbs } from 'ember-cli-htmlbars'; + +module('Integration | Component | identity/step1', function (hooks) { + setupRenderingTest(hooks); + + test('it renders the initial state correctly', async function (assert) { + this.set('setState', () => {}); + await render(hbs``); + + assert + .dom('[data-test-step1-heading]') + .hasText('Step 1: Chaincode Generation'); + assert.dom('[data-test-step1-desc]').exists(); + assert.dom('[data-test-step1-button]').hasText('Generate Chaincode'); + assert.dom('[data-test-step1-next-button]').doesNotExist(); + }); + + test('it handles chaincode generation', async function (assert) { + this.set('setState', () => {}); + await render(hbs``); + + await click('[data-test-step1-button]'); + await waitFor('.identity-chaincode-box'); + + assert.dom('[data-test-step1-chaincode]').hasText('********************'); + assert.dom('[data-test-step1-next-button]').exists(); + assert.dom('[data-test-step1-button]').doesNotExist(); + }); + + test('it toggles chaincode visibility', async function (assert) { + this.set('setState', () => {}); + await render(hbs``); + + await click('[data-test-step1-button]'); + await waitFor('.identity-chaincode-box'); + + const initialText = await document + .querySelector('[data-test-step1-chaincode]') + .textContent.trim(); + await click('[data-test-step1-eye]'); + const visibleText = await document + .querySelector('[data-test-step1-chaincode]') + .textContent.trim(); + + assert.notEqual( + initialText, + visibleText, + 'Chaincode visibility should toggle', + ); + assert.notEqual( + visibleText, + '********************', + 'Chaincode should be visible', + ); + }); + + test('it handles next button click', async function (assert) { + let nextClicked = false; + this.set('setState', () => (nextClicked = true)); + await render(hbs``); + + await click('[data-test-step1-button]'); + await waitFor('[data-test-step1-next-button]'); + await click('[data-test-step1-next-button]'); + + assert.true(nextClicked, 'Next button should trigger setState'); + }); +}); diff --git a/tests/integration/components/identity/step2.js b/tests/integration/components/identity/step2.js new file mode 100644 index 00000000..68b90ad6 --- /dev/null +++ b/tests/integration/components/identity/step2.js @@ -0,0 +1,74 @@ +import { module, test } from 'qunit'; +import { setupRenderingTest } from 'website-www/tests/helpers'; +import { render, click, fillIn } from '@ember/test-helpers'; +import { hbs } from 'ember-cli-htmlbars'; + +module('Integration | Component | identity/step2', function (hooks) { + setupRenderingTest(hooks); + + test('it renders the initial state correctly', async function (assert) { + this.set('setState', () => {}); + this.set('profileURL', ''); + await render( + hbs``, + ); + + assert + .dom('[data-test-step2-heading]') + .hasText('Step 2: Profile Service URL'); + assert.dom('[data-test-step2-desc]').exists(); + assert.dom('[data-test-step2-input]').exists(); + assert.dom('[data-test-step2-next-button]').doesNotExist(); + }); + + test('it shows next button when URL is entered', async function (assert) { + this.set('setState', () => {}); + this.set('profileURL', ''); + await render( + hbs``, + ); + + assert.dom('[data-test-step2-next-button]').doesNotExist(); + + await fillIn('[data-test-step2-input]', 'https://my-profile-service.com'); + + assert.dom('[data-test-step2-next-button]').exists(); + assert.dom('[data-test-step2-next-button]').hasText('Next'); + }); + + test('it handles next button click and shows loader', async function (assert) { + let nextClicked = false; + this.set('setState', () => (nextClicked = true)); + this.set('profileURL', ''); + await render( + hbs``, + ); + + await fillIn('[data-test-step2-input]', 'https://my-profile-service.com'); + await click('[data-test-step2-next-button]'); + + assert.true(nextClicked, 'Next button should trigger setState'); + }); + + test('it shows loader while saving URL', async function (assert) { + this.set('setState', () => {}); + this.set('savingURL', true); + this.set('profileURL', ''); + await render(hbs` + `); + + await fillIn('[data-test-step2-input]', 'https://my-profile-service.com'); + + assert.dom('.loader').exists('Loader should be visible when saving'); + assert + .dom('[data-test-step2-next-button]') + .doesNotContainText( + 'Next', + 'Next text should not be visible while loading', + ); + }); +}); diff --git a/tests/integration/components/identity/step3.js b/tests/integration/components/identity/step3.js new file mode 100644 index 00000000..2357d921 --- /dev/null +++ b/tests/integration/components/identity/step3.js @@ -0,0 +1,41 @@ +import { module, test } from 'qunit'; +import { setupRenderingTest } from 'website-www/tests/helpers'; +import { render, click } from '@ember/test-helpers'; +import { hbs } from 'ember-cli-htmlbars'; + +module('Integration | Component | identity/step3', function (hooks) { + setupRenderingTest(hooks); + + test('it renders the initial state correctly', async function (assert) { + await render(hbs``); + + assert + .dom('[data-test-step3-heading]') + .hasText('Step 3: Link Profile Service'); + assert.dom('[data-test-step3-desc]').exists(); + assert.dom('[data-test-step3-button]').hasText('Link'); + }); + + test('it shows loader while linking', async function (assert) { + this.set('linking', true); + await render(hbs``); + + assert.dom('.loader').exists('Loader should be visible when linking'); + assert + .dom('[data-test-step3-button]') + .doesNotContainText( + 'Link', + 'Link text should not be visible while loading', + ); + }); + + test('it handles link button click', async function (assert) { + let linkClicked = false; + this.set('handleLink', () => (linkClicked = true)); + await render(hbs``); + + await click('[data-test-step3-button]'); + + assert.true(linkClicked, 'Link button should trigger handleLink action'); + }); +}); diff --git a/tests/integration/components/identity/verified.js b/tests/integration/components/identity/verified.js new file mode 100644 index 00000000..da908c34 --- /dev/null +++ b/tests/integration/components/identity/verified.js @@ -0,0 +1,19 @@ +import { module, test } from 'qunit'; +import { setupRenderingTest } from 'website-www/tests/helpers'; +import { render } from '@ember/test-helpers'; +import { hbs } from 'ember-cli-htmlbars'; + +module('Integration | Component | identity/verified', function (hooks) { + setupRenderingTest(hooks); + + test('it renders the success message correctly', async function (assert) { + await render(hbs``); + + assert.dom('[data-test-verified-heading]').hasText('Verified'); + assert.dom('[data-test-verified-desc]').exists(); + assert + .dom('[data-test-verified-desc] span') + .hasClass('identity-box-desc-bold'); + assert.dom('[data-test-verified-desc] span').hasText('Congratulations!!!'); + }); +}); From 839018f11f83ffdd8126c9ffff6f7738d75a1ad5 Mon Sep 17 00:00:00 2001 From: suvidh Date: Fri, 17 Jan 2025 00:37:16 +0530 Subject: [PATCH 6/7] reverted sinon package back to original --- package.json | 2 +- yarn.lock | 43 +++++++++++++++++++++++++------------------ 2 files changed, 26 insertions(+), 19 deletions(-) diff --git a/package.json b/package.json index 4586ccb4..afc6287f 100644 --- a/package.json +++ b/package.json @@ -100,7 +100,7 @@ "prettier": "3.3.1", "qunit": "2.21.0", "qunit-dom": "2.0.0", - "sinon": "^19.0.2", + "sinon": "^18.0.0", "stylelint": "15.11.0", "stylelint-config-standard": "34.0.0", "stylelint-prettier": "4.1.0", diff --git a/yarn.lock b/yarn.lock index 46786bbc..356cd7a2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4469,21 +4469,28 @@ resolved "https://registry.yarnpkg.com/@simple-dom/void-map/-/void-map-1.4.0.tgz#f15f07568fe1076740407266aa5e6eac249bc78c" integrity sha512-VDhLEyVCbuhOBBgHol9ShzIv9O8UCzdXeH4FoXu2DOcu/nnvTjLTck+BgXsCLv5ynDiUdoqsREEVFnoyPpFKVw== -"@sinonjs/commons@^3.0.1": +"@sinonjs/commons@^3.0.0", "@sinonjs/commons@^3.0.1": version "3.0.1" resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-3.0.1.tgz#1029357e44ca901a615585f6d27738dbc89084cd" integrity sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ== dependencies: type-detect "4.0.8" -"@sinonjs/fake-timers@^13.0.1", "@sinonjs/fake-timers@^13.0.2": +"@sinonjs/fake-timers@11.2.2": + version "11.2.2" + resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-11.2.2.tgz#50063cc3574f4a27bd8453180a04171c85cc9699" + integrity sha512-G2piCSxQ7oWOxwGSAyFHfPIsyeJGXYtc6mFbnFA+kRXkiEnTl8c/8jul2S329iFBnDI9HGoeWWAZvuvOkZccgw== + dependencies: + "@sinonjs/commons" "^3.0.0" + +"@sinonjs/fake-timers@^13.0.1": version "13.0.5" resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-13.0.5.tgz#36b9dbc21ad5546486ea9173d6bea063eb1717d5" integrity sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw== dependencies: "@sinonjs/commons" "^3.0.1" -"@sinonjs/samsam@^8.0.1": +"@sinonjs/samsam@^8.0.0": version "8.0.2" resolved "https://registry.yarnpkg.com/@sinonjs/samsam/-/samsam-8.0.2.tgz#e4386bf668ff36c95949e55a38dc5f5892fc2689" integrity sha512-v46t/fwnhejRSFTGqbpn9u+LQ9xJDse10gNnPgAcxgdoCDMXj/G2asWAC/8Qs+BAZDicX+MNZouXT1A7c83kVw== @@ -8200,10 +8207,10 @@ diff@^5.1.0: resolved "https://registry.yarnpkg.com/diff/-/diff-5.1.0.tgz#bc52d298c5ea8df9194800224445ed43ffc87e40" integrity sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw== -diff@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/diff/-/diff-7.0.0.tgz#3fb34d387cd76d803f6eebea67b921dab0182a9a" - integrity sha512-PJWHUb1RFevKCwaFA9RlG5tCd+FO5iRh9A8HEtkmBH2Li03iJriB6m6JIN4rGz3K3JLawI7/veA1xzRKP6ISBw== +diff@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-5.2.0.tgz#26ded047cd1179b78b9537d5ef725503ce1ae531" + integrity sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A== dir-glob@^3.0.1: version "3.0.1" @@ -12885,7 +12892,7 @@ nice-try@^1.0.4: resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== -nise@^6.1.1: +nise@^6.0.0: version "6.1.1" resolved "https://registry.yarnpkg.com/nise/-/nise-6.1.1.tgz#78ea93cc49be122e44cb7c8fdf597b0e8778b64a" integrity sha512-aMSAzLVY7LyeM60gvBS423nBmIPP+Wy7St7hsb+8/fc1HmeoHJfLO8CKse4u3BtOZvQLJghYPI2i/1WZrEj5/g== @@ -14726,17 +14733,17 @@ simple-html-tokenizer@^0.5.11: resolved "https://registry.yarnpkg.com/simple-html-tokenizer/-/simple-html-tokenizer-0.5.11.tgz#4c5186083c164ba22a7b477b7687ac056ad6b1d9" integrity sha512-C2WEK/Z3HoSFbYq8tI7ni3eOo/NneSPRoPpcM7WdLjFOArFuyXEjAoCdOC3DgMfRyziZQ1hCNR4mrNdWEvD0og== -sinon@^19.0.2: - version "19.0.2" - resolved "https://registry.yarnpkg.com/sinon/-/sinon-19.0.2.tgz#944cf771d22236aa84fc1ab70ce5bffc3a215dad" - integrity sha512-euuToqM+PjO4UgXeLETsfQiuoyPXlqFezr6YZDFwHR3t4qaX0fZUe1MfPMznTL5f8BWrVS89KduLdMUsxFCO6g== +sinon@^18.0.0: + version "18.0.1" + resolved "https://registry.yarnpkg.com/sinon/-/sinon-18.0.1.tgz#464334cdfea2cddc5eda9a4ea7e2e3f0c7a91c5e" + integrity sha512-a2N2TDY1uGviajJ6r4D1CyRAkzE9NNVlYOV1wX5xQDuAk0ONgzgRl0EjCQuRCPxOwp13ghsMwt9Gdldujs39qw== dependencies: "@sinonjs/commons" "^3.0.1" - "@sinonjs/fake-timers" "^13.0.2" - "@sinonjs/samsam" "^8.0.1" - diff "^7.0.0" - nise "^6.1.1" - supports-color "^7.2.0" + "@sinonjs/fake-timers" "11.2.2" + "@sinonjs/samsam" "^8.0.0" + diff "^5.2.0" + nise "^6.0.0" + supports-color "^7" slash@^3.0.0: version "3.0.0" @@ -15271,7 +15278,7 @@ supports-color@^5.3.0: dependencies: has-flag "^3.0.0" -supports-color@^7.0.0, supports-color@^7.1.0, supports-color@^7.2.0: +supports-color@^7, supports-color@^7.0.0, supports-color@^7.1.0: version "7.2.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== From 44e8dc3d5e9e17787971ecd6396bc4543bbf2ed6 Mon Sep 17 00:00:00 2001 From: suvidh Date: Mon, 20 Jan 2025 09:26:07 +0530 Subject: [PATCH 7/7] reverted packages --- package.json | 6 ++--- yarn.lock | 70 +++++++++++++++++----------------------------------- 2 files changed, 26 insertions(+), 50 deletions(-) diff --git a/package.json b/package.json index afc6287f..af8b18a0 100644 --- a/package.json +++ b/package.json @@ -33,7 +33,7 @@ "cropperjs": "^1.5.12", "d3-cloud": "1.2.7", "dotenv": "16.0.2", - "ember-cli-fastboot": "^4.1.5", + "ember-cli-fastboot": "4.1.1", "ember-d3": "0.5.1", "ember-phone-input": "^10.0.0", "exists-sync": "0.1.0", @@ -63,7 +63,7 @@ "ember-cli-app-version": "6.0.1", "ember-cli-babel": "8.2.0", "ember-cli-clean-css": "3.0.0", - "ember-cli-clipboard": "^1.2.1", + "ember-cli-clipboard": "1.0.0", "ember-cli-dependency-checker": "3.3.2", "ember-cli-htmlbars": "6.3.0", "ember-cli-inject-live-reload": "2.1.0", @@ -85,7 +85,7 @@ "ember-sinon-qunit": "^7.5.0", "ember-source": "5.9.0", "ember-template-lint": "5.13.0", - "ember-toastr": "^3.0.1", + "ember-toastr": "3.0.1", "ember-truth-helpers": "3.1.1", "ember-welcome-page": "7.0.2", "eslint": "8.57.0", diff --git a/yarn.lock b/yarn.lock index 356cd7a2..daca100f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8589,18 +8589,17 @@ ember-cli-clean-css@3.0.0: clean-css "^5.3.2" json-stable-stringify "^1.0.1" -ember-cli-clipboard@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/ember-cli-clipboard/-/ember-cli-clipboard-1.2.1.tgz#69afcf9e92220660357f35a2d562994686f6c7ac" - integrity sha512-EVMH+Sd8EiegKomx7Uh1Gz8Kl3I9mzHnPygkkcG96NPKgqzKMUBuf/wjfDms+r7EHsPXQb4n5ILPGPo4HmDOLA== +ember-cli-clipboard@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/ember-cli-clipboard/-/ember-cli-clipboard-1.0.0.tgz#8d599610250348186b1cde40d2094e98a4e8a87b" + integrity sha512-PdsSnWK6OkPQJMxkw/J+5TU2uaVm5KCb9gk8fad/bhwkMjkl6TMvPNyFkqtfxVhh7tGfs0Ka4Xjsi6oQzyigeg== dependencies: - "@embroider/macros" "^1.10.0" clipboard "^2.0.11" ember-arg-types "^1.0.0" ember-auto-import "^2.4.2" ember-cli-babel "^7.26.11" ember-cli-htmlbars "^6.1.0" - ember-modifier "^3.2.7 || ^4.1.0" + ember-modifier "^3.2.7" prop-types "^15.8.1" ember-cli-dependency-checker@3.3.2: @@ -8614,10 +8613,10 @@ ember-cli-dependency-checker@3.3.2: resolve "^1.22.0" semver "^5.7.1" -ember-cli-fastboot@^4.1.5: - version "4.1.5" - resolved "https://registry.yarnpkg.com/ember-cli-fastboot/-/ember-cli-fastboot-4.1.5.tgz#31800c2b6c9d94bf050d27bf9f6b399bd7fe8c7c" - integrity sha512-XVigHzn+xXMqvovdrPNQHXRCzVOkU78ij6adU8Qt7PAaF3stR9oPh/35f30aJ2vcL6jwR72glnuCyXpm3EL22A== +ember-cli-fastboot@4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/ember-cli-fastboot/-/ember-cli-fastboot-4.1.1.tgz#a16db66c7dce32c5450d7a4c34e3e96792c3ae31" + integrity sha512-9B/qJUfDVqRmZlXxP23V2AZ3hiez99DKT2cPJ0MWkjwRom/kmVJHvv5X4fxvT7MCokjOVFvzas79D5toV4GLIA== dependencies: broccoli-concat "^4.2.5" broccoli-file-creator "^2.1.1" @@ -8625,12 +8624,12 @@ ember-cli-fastboot@^4.1.5: broccoli-merge-trees "^4.2.0" broccoli-plugin "^4.0.7" chalk "^4.1.2" - ember-cli-babel "^7.26.11" + ember-cli-babel "^7.26.6" ember-cli-lodash-subset "^2.0.1" ember-cli-preprocess-registry "^3.3.0" ember-cli-version-checker "^5.1.2" - fastboot "4.1.5" - fastboot-express-middleware "4.1.2" + fastboot "4.1.1" + fastboot-express-middleware "4.1.1" fastboot-transform "^0.1.3" fs-extra "^10.0.0" json-stable-stringify "^1.0.1" @@ -9184,7 +9183,7 @@ ember-modifier@4.1.0, "ember-modifier@^2.1.2 || ^3.0.0 || ^4.0.0", "ember-modifi ember-cli-normalize-entity-name "^1.0.0" ember-cli-string-utils "^1.1.0" -"ember-modifier@^2.1.2 || ^3.1.0 || ^4.0.0", ember-modifier@^3.2.0: +"ember-modifier@^2.1.2 || ^3.1.0 || ^4.0.0", ember-modifier@^3.2.0, ember-modifier@^3.2.7: version "3.2.7" resolved "https://registry.yarnpkg.com/ember-modifier/-/ember-modifier-3.2.7.tgz#f2d35b7c867cbfc549e1acd8d8903c5ecd02ea4b" integrity sha512-ezcPQhH8jUfcJQbbHji4/ZG/h0yyj1jRDknfYue/ypQS8fM8LrGcCMo0rjDZLzL1Vd11InjNs3BD7BdxFlzGoA== @@ -9195,16 +9194,6 @@ ember-modifier@4.1.0, "ember-modifier@^2.1.2 || ^3.0.0 || ^4.0.0", "ember-modifi ember-cli-typescript "^5.0.0" ember-compatibility-helpers "^1.2.5" -"ember-modifier@^3.2.7 || ^4.1.0": - version "4.2.0" - resolved "https://registry.yarnpkg.com/ember-modifier/-/ember-modifier-4.2.0.tgz#f99cb817b9b85c5188c63f853cd06aa62e8dde57" - integrity sha512-BJ48eTEGxD8J7+lofwVmee7xDgNDgpr5dd6+MSu4gk+I6xb35099RMNorXY5hjjwMJEyi/IRR6Yn3M7iJMz8Zw== - dependencies: - "@embroider/addon-shim" "^1.8.7" - decorator-transforms "^2.0.0" - ember-cli-normalize-entity-name "^1.0.0" - ember-cli-string-utils "^1.1.0" - ember-page-title@8.2.3: version "8.2.3" resolved "https://registry.yarnpkg.com/ember-page-title/-/ember-page-title-8.2.3.tgz#1ed47ff26e2c9ba581e9e7d3ef1b01977843978e" @@ -9388,7 +9377,7 @@ ember-template-recast@^6.1.4: tmp "^0.2.1" workerpool "^6.4.0" -ember-toastr@^3.0.1: +ember-toastr@3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/ember-toastr/-/ember-toastr-3.0.1.tgz#a9ddb421d920e0d81b70cf2bc3aea999d33f55f8" integrity sha512-4H9BuSfWgiBf0nTWbxnWl9zgLp/83RV3FkG4E0ANAEnGYEHs+V/ZiJNolVq5atlUbyl5bSYu+AqSNWu5Q33T5w== @@ -10126,13 +10115,13 @@ fastboot-express-middleware@3.3.2: chalk "^4.1.2" fastboot "3.3.2" -fastboot-express-middleware@4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/fastboot-express-middleware/-/fastboot-express-middleware-4.1.2.tgz#6a383c282fdc07ee3f90039701bb0dab11129179" - integrity sha512-vnzEBV7gZ3lSoGiqG/7+006nHNA3z+ZnU/5u9jPHtKpjH28yEbvZq6PnAeTu24UR98jZVR0pnFbfX0co+O9PeA== +fastboot-express-middleware@4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/fastboot-express-middleware/-/fastboot-express-middleware-4.1.1.tgz#44e7bfd04887f92a9491816ea36b7b3ae2d341bf" + integrity sha512-RzobJdJXtFLOp+QtQlRSEm4RjepprLDITyYxPzd7M8LTH9jo2COhG0NFz2LFcv9Jtqlp8IzKh/0w2+hOt7JZow== dependencies: chalk "^4.1.2" - fastboot "4.1.2" + fastboot "4.1.1" fastboot-transform@^0.1.3: version "0.1.3" @@ -10155,23 +10144,10 @@ fastboot@3.3.2: simple-dom "^1.4.0" source-map-support "^0.5.21" -fastboot@4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/fastboot/-/fastboot-4.1.2.tgz#65627882d03962818f0f5331ca052d2da209ba98" - integrity sha512-VJLmF0xdCNwIIuA7DQtN1KTAKfEGsbZGJ0cfKh64h6DeMh3Fhr2FCCxkPh8zYqGoqzjXFdFbtk60WS3f6HKqBg== - dependencies: - chalk "^4.1.2" - cookie "^0.4.1" - debug "^4.3.3" - jsdom "^19.0.0" - resolve "^1.22.0" - simple-dom "^1.4.0" - source-map-support "^0.5.21" - -fastboot@4.1.5: - version "4.1.5" - resolved "https://registry.yarnpkg.com/fastboot/-/fastboot-4.1.5.tgz#ed24af3ed68a1a4428e8ff1dd0106c7edb2065ab" - integrity sha512-2FkJWrpxgJjy5kLb3KrYp0pKdB4WgT/6qxtQO7ozYtQqMBOAARMnp59xp/Hdosa1cE2jslZgwDAv3v11OlQfAw== +fastboot@4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/fastboot/-/fastboot-4.1.1.tgz#b686dc522ef805557ff76ded23328c486991cbaa" + integrity sha512-XG7YprsAuAGZrUDhmJ0NFuEP0gpWg9LZwGWSS1I5+f0ETHKPWqb4x59sN2rU1nvCEETBK70z68tLsWsl9daomg== dependencies: chalk "^4.1.2" cookie "^0.4.1"