From 1fcf2b05e79824a3460f2e31dac8636d2c5e2a4f Mon Sep 17 00:00:00 2001 From: krantheman Date: Mon, 27 Jan 2025 17:11:03 +0530 Subject: [PATCH 01/69] feat: add Domains page --- frontend/src/components/AppSidebar.vue | 9 +++- frontend/src/components/UserDropdown.vue | 53 ++++++++++++------------ frontend/src/pages/dashboard/Domains.vue | 4 ++ frontend/src/router.js | 6 +++ frontend/src/utils/index.js | 7 ++++ 5 files changed, 52 insertions(+), 27 deletions(-) create mode 100644 frontend/src/pages/dashboard/Domains.vue diff --git a/frontend/src/components/AppSidebar.vue b/frontend/src/components/AppSidebar.vue index 8ed7c5ef..88d5e952 100644 --- a/frontend/src/components/AppSidebar.vue +++ b/frontend/src/components/AppSidebar.vue @@ -40,6 +40,7 @@ diff --git a/frontend/src/pages/dashboard/Domains.vue b/frontend/src/pages/dashboard/Domains.vue new file mode 100644 index 00000000..175b5110 --- /dev/null +++ b/frontend/src/pages/dashboard/Domains.vue @@ -0,0 +1,4 @@ + + diff --git a/frontend/src/router.js b/frontend/src/router.js index 58b0d1cf..10ed5511 100644 --- a/frontend/src/router.js +++ b/frontend/src/router.js @@ -49,6 +49,12 @@ const routes = [ name: 'Drafts', component: () => import('@/pages/Drafts.vue'), }, + { + path: '/dashboard/domains', + name: 'Domains', + component: () => import('@/pages/dashboard/Domains.vue'), + meta: { isDashboard: true }, + }, ] const router = createRouter({ diff --git a/frontend/src/utils/index.js b/frontend/src/utils/index.js index ea68d013..46a9fe65 100644 --- a/frontend/src/utils/index.js +++ b/frontend/src/utils/index.js @@ -35,6 +35,13 @@ export function getSidebarLinks() { to: 'Drafts', activeFor: ['Drafts'], }, + { + label: 'Domains', + icon: 'Globe', + to: 'Domains', + activeFor: ['Domains'], + forDashboard: true, + }, ] } From 26428ec5e2f85c200f75339a98c188e371c393f8 Mon Sep 17 00:00:00 2001 From: krantheman Date: Tue, 28 Jan 2025 11:56:44 +0530 Subject: [PATCH 02/69] feat: redirect non admins out of dashboard --- frontend/src/components/UserDropdown.vue | 8 ++------ frontend/src/router.js | 16 ++++++++++++---- mail/api/mail.py | 1 - 3 files changed, 14 insertions(+), 11 deletions(-) diff --git a/frontend/src/components/UserDropdown.vue b/frontend/src/components/UserDropdown.vue index 1438c6e5..202d11bf 100644 --- a/frontend/src/components/UserDropdown.vue +++ b/frontend/src/components/UserDropdown.vue @@ -94,17 +94,13 @@ const userDropdownOptions = [ { icon: Home, label: 'Home', - onClick: () => { - router.push('/') - }, + onClick: () => router.push('/'), condition: () => userResource.data.roles.includes('Mail Admin'), }, { icon: LayoutDashboard, label: 'Admin Dashboard', - onClick: () => { - router.push('/dashboard/domains') - }, + onClick: () => router.push('/dashboard'), condition: () => userResource.data.roles.includes('Mail Admin'), }, { diff --git a/frontend/src/router.js b/frontend/src/router.js index 10ed5511..5e681043 100644 --- a/frontend/src/router.js +++ b/frontend/src/router.js @@ -5,9 +5,7 @@ import { sessionStore } from '@/stores/session' const routes = [ { path: '/', - redirect: { - name: 'Inbox', - }, + redirect: { name: 'Inbox' }, }, { path: '/signup', @@ -49,6 +47,11 @@ const routes = [ name: 'Drafts', component: () => import('@/pages/Drafts.vue'), }, + { + path: '/dashboard', + redirect: { name: 'Domains' }, + meta: { isDashboard: true }, + }, { path: '/dashboard/domains', name: 'Domains', @@ -68,7 +71,12 @@ router.beforeEach(async (to, from, next) => { const { userResource } = userStore() await userResource.promise - if (!userResource.data?.tenant) return next(to.meta.isSetup ? undefined : { name: 'Setup' }) + const isAdmin = userResource.data.name === 'Administrator' + const isMailAdmin = userResource.data?.roles.includes('Mail Admin') + if (!isAdmin && isMailAdmin && !userResource.data?.tenant) + return next(to.meta.isSetup ? undefined : { name: 'Setup' }) + + if (!isMailAdmin && to.meta.isDashboard) return next({ name: 'Inbox' }) next(to.meta.isLogin || to.meta.isSetup ? { name: 'Inbox' } : undefined) }) diff --git a/mail/api/mail.py b/mail/api/mail.py index 9049dcb8..87191368 100644 --- a/mail/api/mail.py +++ b/mail/api/mail.py @@ -42,7 +42,6 @@ def get_user_info() -> dict: as_dict=1, ) user["roles"] = frappe.get_roles(user.name) - user.mail_user = "Mail User" in user.roles user.tenant = frappe.db.get_value("Tenant Member", {"user": frappe.session.user}, "parent") if user.tenant: user.tenant_name = frappe.db.get_value("Mail Tenant", user.tenant, "tenant_name") From 008e7ee1f06550d4c9bad9d848a3cbe7bf82a6aa Mon Sep 17 00:00:00 2001 From: krantheman Date: Tue, 28 Jan 2025 12:41:39 +0530 Subject: [PATCH 03/69] chore: clean up redundant 'computed's --- frontend/src/pages/Drafts.vue | 13 ++----------- frontend/src/pages/Inbox.vue | 13 ++----------- frontend/src/pages/Sent.vue | 13 ++----------- frontend/src/pages/dashboard/Domains.vue | 13 +++++++++++-- 4 files changed, 17 insertions(+), 35 deletions(-) diff --git a/frontend/src/pages/Drafts.vue b/frontend/src/pages/Drafts.vue index 5c08e85c..12d677c3 100644 --- a/frontend/src/pages/Drafts.vue +++ b/frontend/src/pages/Drafts.vue @@ -3,7 +3,7 @@
- + diff --git a/frontend/src/pages/Inbox.vue b/frontend/src/pages/Inbox.vue index 8ad8b553..d01c6dd3 100644 --- a/frontend/src/pages/Inbox.vue +++ b/frontend/src/pages/Inbox.vue @@ -3,7 +3,7 @@
- + diff --git a/frontend/src/pages/Sent.vue b/frontend/src/pages/Sent.vue index 1619c409..2f5ceaa9 100644 --- a/frontend/src/pages/Sent.vue +++ b/frontend/src/pages/Sent.vue @@ -3,7 +3,7 @@
- + diff --git a/frontend/src/pages/dashboard/Domains.vue b/frontend/src/pages/dashboard/Domains.vue index 175b5110..c2479049 100644 --- a/frontend/src/pages/dashboard/Domains.vue +++ b/frontend/src/pages/dashboard/Domains.vue @@ -1,4 +1,13 @@ - + From d97c68f5162ff1d962ea39512ebeff7f64134aa7 Mon Sep 17 00:00:00 2001 From: krantheman Date: Tue, 28 Jan 2025 14:14:17 +0530 Subject: [PATCH 04/69] chore: move admin methods to different file --- frontend/src/components/Modals/Settings.vue | 1 + frontend/src/pages/Setup.vue | 4 +-- frontend/src/pages/SignUp.vue | 2 +- mail/api/account.py | 27 -------------------- mail/api/admin.py | 28 +++++++++++++++++++++ 5 files changed, 32 insertions(+), 30 deletions(-) create mode 100644 mail/api/admin.py diff --git a/frontend/src/components/Modals/Settings.vue b/frontend/src/components/Modals/Settings.vue index 0560f849..662ddc40 100644 --- a/frontend/src/components/Modals/Settings.vue +++ b/frontend/src/components/Modals/Settings.vue @@ -42,6 +42,7 @@ import { Dialog, Button } from 'frappe-ui' import { User, Mailbox } from 'lucide-vue-next' const show = defineModel() + const tabs = [ { label: 'User', diff --git a/frontend/src/pages/Setup.vue b/frontend/src/pages/Setup.vue index 27c89f52..e60de8cc 100644 --- a/frontend/src/pages/Setup.vue +++ b/frontend/src/pages/Setup.vue @@ -1,5 +1,5 @@ diff --git a/frontend/src/utils/index.js b/frontend/src/utils/index.js index 46a9fe65..bdb9e050 100644 --- a/frontend/src/utils/index.js +++ b/frontend/src/utils/index.js @@ -112,7 +112,7 @@ export const raiseToast = (message, type = 'success') => { if (type === 'success') return toast({ title: 'Success', - text: message, + text: __(message), icon: 'check-circle', position: 'bottom-right', iconClasses: 'text-green-500', @@ -125,7 +125,7 @@ export const raiseToast = (message, type = 'success') => { div.textContent || div.innerText || 'Failed to perform action. Please try again later.' toast({ title: 'Error', - text: text, + text: __(text), icon: 'alert-circle', position: 'bottom-right', iconClasses: 'text-red-500', diff --git a/mail/api/admin.py b/mail/api/admin.py index 1c50ea50..58c448fa 100644 --- a/mail/api/admin.py +++ b/mail/api/admin.py @@ -23,6 +23,6 @@ def create_domain_request(domain_name, mail_tenant): @frappe.whitelist() -def verify_domain_key(domain_request): +def verify_dns_record(domain_request): doc = frappe.get_doc("Mail Domain Request", domain_request) return doc.verify_key() From 101f02ce0455af2ecd893b4df25e3b2c23b8de72 Mon Sep 17 00:00:00 2001 From: krantheman Date: Tue, 28 Jan 2025 17:31:03 +0530 Subject: [PATCH 06/69] feat: add domain listview --- frontend/src/components/Controls/Copy.vue | 14 ++-- frontend/src/components/Modals/AddDomain.vue | 3 + frontend/src/pages/dashboard/Domains.vue | 69 ++++++++++++++++++-- 3 files changed, 77 insertions(+), 9 deletions(-) diff --git a/frontend/src/components/Controls/Copy.vue b/frontend/src/components/Controls/Copy.vue index dc2e0df0..ebc2208c 100644 --- a/frontend/src/components/Controls/Copy.vue +++ b/frontend/src/components/Controls/Copy.vue @@ -29,10 +29,14 @@ const props = defineProps({ }) const copyToClipBoard = async (text) => { - await navigator.clipboard.writeText(text) - message.value = 'Copied!' - setTimeout(() => { - message.value = 'Copy' - }, 2000) + try { + await navigator.clipboard.writeText(text) + message.value = 'Copied!' + setTimeout(() => { + message.value = 'Copy' + }, 2000) + } catch (e) { + alert('Failed to copy text. Please copy from here: ' + text) + } } diff --git a/frontend/src/components/Modals/AddDomain.vue b/frontend/src/components/Modals/AddDomain.vue index df44395a..4182d186 100644 --- a/frontend/src/components/Modals/AddDomain.vue +++ b/frontend/src/components/Modals/AddDomain.vue @@ -61,6 +61,8 @@ const user = inject('$user') const domainName = ref('') const verificationError = ref('') +const emit = defineEmits(['reloadDomains']) + const domainRequest = createResource({ url: 'mail.api.admin.create_domain_request', makeParams() { @@ -76,6 +78,7 @@ const verifyDNS = createResource({ onSuccess(data) { if (data) { show.value = false + emit('reloadDomains') raiseToast('Domain added successfully!') } else verificationError.value = __('Failed to verify DNS record.') }, diff --git a/frontend/src/pages/dashboard/Domains.vue b/frontend/src/pages/dashboard/Domains.vue index de0b33a3..be0c7d5e 100644 --- a/frontend/src/pages/dashboard/Domains.vue +++ b/frontend/src/pages/dashboard/Domains.vue @@ -1,18 +1,79 @@ From ab0db9b0779d549b17769da4424bd9295286cf69 Mon Sep 17 00:00:00 2001 From: krantheman Date: Wed, 29 Jan 2025 14:36:41 +0530 Subject: [PATCH 07/69] fix: domain request apis --- mail/api/admin.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/mail/api/admin.py b/mail/api/admin.py index eb627b19..08371180 100644 --- a/mail/api/admin.py +++ b/mail/api/admin.py @@ -1,7 +1,5 @@ import frappe -from mail.utils.dns import verify_dns_record - @frappe.whitelist() def create_tenant(tenant_name: str) -> None: @@ -23,11 +21,11 @@ def create_domain_request(domain_name, mail_tenant) -> str: domain_request.user = frappe.session.user domain_request.insert() - return domain_request.name + return domain_request @frappe.whitelist() -def verify_domain_key(domain_request: str) -> bool: +def verify_dns_record(domain_request: str) -> bool: """Verify the domain request key""" doc = frappe.get_doc("Mail Domain Request", domain_request) From 6ef72937a4be8c65c1bed1112b992376f8b00b57 Mon Sep 17 00:00:00 2001 From: krantheman Date: Wed, 29 Jan 2025 14:37:45 +0530 Subject: [PATCH 08/69] feat: add single domain view --- frontend/src/pages/dashboard/Domain.vue | 27 ++++++++++++++++++++++++ frontend/src/pages/dashboard/Domains.vue | 8 +++---- frontend/src/router.js | 7 ++++++ frontend/src/utils/index.js | 2 +- 4 files changed, 39 insertions(+), 5 deletions(-) create mode 100644 frontend/src/pages/dashboard/Domain.vue diff --git a/frontend/src/pages/dashboard/Domain.vue b/frontend/src/pages/dashboard/Domain.vue new file mode 100644 index 00000000..9e34ce2b --- /dev/null +++ b/frontend/src/pages/dashboard/Domain.vue @@ -0,0 +1,27 @@ + + diff --git a/frontend/src/pages/dashboard/Domains.vue b/frontend/src/pages/dashboard/Domains.vue index be0c7d5e..ec208fa0 100644 --- a/frontend/src/pages/dashboard/Domains.vue +++ b/frontend/src/pages/dashboard/Domains.vue @@ -20,10 +20,12 @@ diff --git a/frontend/src/router.js b/frontend/src/router.js index 5e681043..a5aaea52 100644 --- a/frontend/src/router.js +++ b/frontend/src/router.js @@ -58,6 +58,13 @@ const routes = [ component: () => import('@/pages/dashboard/Domains.vue'), meta: { isDashboard: true }, }, + { + path: '/dashboard/domains/:domainName', + name: 'Domain', + component: () => import('@/pages/dashboard/Domain.vue'), + props: true, + meta: { isDashboard: true }, + }, ] const router = createRouter({ diff --git a/frontend/src/utils/index.js b/frontend/src/utils/index.js index bdb9e050..2ac6955e 100644 --- a/frontend/src/utils/index.js +++ b/frontend/src/utils/index.js @@ -39,7 +39,7 @@ export function getSidebarLinks() { label: 'Domains', icon: 'Globe', to: 'Domains', - activeFor: ['Domains'], + activeFor: ['Domains', 'Domain'], forDashboard: true, }, ] From a86fa830e697fa8bdf5ce5844c79e14ff947594d Mon Sep 17 00:00:00 2001 From: krantheman Date: Wed, 29 Jan 2025 17:14:37 +0530 Subject: [PATCH 09/69] chore: bump frappe-ui to v0.1.108 --- frontend/package.json | 2 +- frontend/yarn.lock | 186 ++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 180 insertions(+), 8 deletions(-) diff --git a/frontend/package.json b/frontend/package.json index 28cde2c1..3d283d6e 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -14,7 +14,7 @@ "@vueuse/core": "^10.4.1", "dayjs": "^1.11.11", "feather-icons": "^4.28.0", - "frappe-ui": "^0.1.60", + "frappe-ui": "^0.1.108", "gemoji": "^8.1.0", "lucide-vue-next": "^0.383.0", "markdown-it": "^14.1.0", diff --git a/frontend/yarn.lock b/frontend/yarn.lock index 5adb91e1..b0ab76dd 100644 --- a/frontend/yarn.lock +++ b/frontend/yarn.lock @@ -795,7 +795,7 @@ ansi-regex@^6.0.1: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a" integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== -ansi-styles@^4.0.0: +ansi-styles@^4.0.0, ansi-styles@^4.1.0: version "4.3.0" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== @@ -854,11 +854,25 @@ balanced-match@^1.0.0: resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== +base64-js@^1.3.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + binary-extensions@^2.0.0: version "2.3.0" resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.3.0.tgz#f6e14a97858d327252200242d4ccfe522c445522" integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw== +bl@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" + integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== + dependencies: + buffer "^5.5.0" + inherits "^2.0.4" + readable-stream "^3.4.0" + brace-expansion@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" @@ -883,6 +897,14 @@ browserslist@^4.23.3: node-releases "^2.0.18" update-browserslist-db "^1.1.0" +buffer@^5.5.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" + integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.1.13" + camelcase-css@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/camelcase-css/-/camelcase-css-2.0.1.tgz#ee978f6947914cc30c6b44741b6ed1df7f043fd5" @@ -893,6 +915,14 @@ caniuse-lite@^1.0.30001646: resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001653.tgz#b8af452f8f33b1c77f122780a4aecebea0caca56" integrity sha512-XGWQVB8wFQ2+9NZwZ10GxTYC5hk0Fa+q8cSkr0tgvMhYhMHP/QC+WTgrePMDBWiWc/pV+1ik82Al20XOK25Gcw== +chalk@^4.1.0: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + chokidar@^3.5.3: version "3.6.0" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b" @@ -913,6 +943,23 @@ classnames@^2.2.5: resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.5.1.tgz#ba774c614be0f016da105c858e7159eae8e7687b" integrity sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow== +cli-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" + integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== + dependencies: + restore-cursor "^3.1.0" + +cli-spinners@^2.5.0: + version "2.9.2" + resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.9.2.tgz#1773a8f4b9c4d6ac31563df53b3fc1d79462fe41" + integrity sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg== + +clone@^1.0.2: + version "1.0.4" + resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" + integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg== + color-convert@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" @@ -964,7 +1011,7 @@ csstype@^3.1.3: resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81" integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== -dayjs@^1.11.11: +dayjs@^1.11.11, dayjs@^1.11.13: version "1.11.13" resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.13.tgz#92430b0139055c3ebb60150aa13e860a4b5a366c" integrity sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg== @@ -976,6 +1023,13 @@ debug@~4.3.1, debug@~4.3.2: dependencies: ms "2.1.2" +defaults@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.4.tgz#b0b02062c1e2aa62ff5d9528f0f98baa90978d7a" + integrity sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A== + dependencies: + clone "^1.0.2" + defu@^6.1.4: version "6.1.4" resolved "https://registry.yarnpkg.com/defu/-/defu-6.1.4.tgz#4e0c9cf9ff68fe5f3d7f2765cc1a012dfdcb0479" @@ -1129,10 +1183,10 @@ fraction.js@^4.3.7: resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.3.7.tgz#06ca0085157e42fda7f9e726e79fefc4068840f7" integrity sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew== -frappe-ui@^0.1.60: - version "0.1.67" - resolved "https://registry.yarnpkg.com/frappe-ui/-/frappe-ui-0.1.67.tgz#f8583a4eb52d75f74f7a2c6395d92da10dd94338" - integrity sha512-9/TSES7eP/AUi042b+znXyVwMRgeSY4RSAXb0hwEl/3PqUFNHVLPjZJFqWJBzjObNraCpUuxQLJKLLUtLnmNYA== +frappe-ui@^0.1.108: + version "0.1.108" + resolved "https://registry.yarnpkg.com/frappe-ui/-/frappe-ui-0.1.108.tgz#00e13fdc3483e3a835ad6d8809545f353de9b56c" + integrity sha512-YikaWJBB6ZcEyAaWMhH9DguRBlouE7p8yhI6VxrrPzb6xcR+tWPDIGM//EkugR8jH8/W42tOBYqEcaouY9VgCQ== dependencies: "@headlessui/vue" "^1.7.14" "@popperjs/core" "^2.11.2" @@ -1156,13 +1210,16 @@ frappe-ui@^0.1.60: "@tiptap/suggestion" "^2.0.3" "@tiptap/vue-3" "^2.0.3" "@vueuse/core" "^10.4.1" + dayjs "^1.11.13" feather-icons "^4.28.0" idb-keyval "^6.2.0" + ora "5.4.1" prettier "^3.3.2" radix-vue "^1.5.3" showdown "^2.1.0" socket.io-client "^4.5.1" tippy.js "^6.3.7" + typescript "^5.0.2" fsevents@~2.3.2, fsevents@~2.3.3: version "2.3.3" @@ -1205,6 +1262,11 @@ glob@^10.3.10: package-json-from-dist "^1.0.0" path-scurry "^1.11.1" +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + hasown@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" @@ -1217,6 +1279,16 @@ idb-keyval@^6.2.0: resolved "https://registry.yarnpkg.com/idb-keyval/-/idb-keyval-6.2.1.tgz#94516d625346d16f56f3b33855da11bfded2db33" integrity sha512-8Sb3veuYCyrZL+VBt9LJfZjLUPWVvqn8tG28VqYNFCo43KHcKuq+b4EiXGeuaLAQWL2YmyDgMp2aSpH9JHsEQg== +ieee754@^1.1.13: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + +inherits@^2.0.3, inherits@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + is-binary-path@~2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" @@ -1248,11 +1320,21 @@ is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: dependencies: is-extglob "^2.1.1" +is-interactive@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" + integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== + is-number@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== +is-unicode-supported@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" + integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== + isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" @@ -1314,6 +1396,14 @@ lodash.merge@^4.6.2: resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== +log-symbols@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" + integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== + dependencies: + chalk "^4.1.0" + is-unicode-supported "^0.1.0" + lru-cache@^10.2.0: version "10.4.3" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.4.3.tgz#410fc8a17b70e598013df257c2446b7f3383f119" @@ -1361,6 +1451,11 @@ micromatch@^4.0.4, micromatch@^4.0.5: braces "^3.0.3" picomatch "^2.3.1" +mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + mini-svg-data-uri@^1.2.3: version "1.4.4" resolved "https://registry.yarnpkg.com/mini-svg-data-uri/-/mini-svg-data-uri-1.4.4.tgz#8ab0aabcdf8c29ad5693ca595af19dd2ead09939" @@ -1432,6 +1527,28 @@ object-hash@^3.0.0: resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-3.0.0.tgz#73f97f753e7baffc0e2cc9d6e079079744ac82e9" integrity sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw== +onetime@^5.1.0: + version "5.1.2" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + dependencies: + mimic-fn "^2.1.0" + +ora@5.4.1: + version "5.4.1" + resolved "https://registry.yarnpkg.com/ora/-/ora-5.4.1.tgz#1b2678426af4ac4a509008e5e4ac9e9959db9e18" + integrity sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ== + dependencies: + bl "^4.1.0" + chalk "^4.1.0" + cli-cursor "^3.1.0" + cli-spinners "^2.5.0" + is-interactive "^1.0.0" + is-unicode-supported "^0.1.0" + log-symbols "^4.1.0" + strip-ansi "^6.0.0" + wcwidth "^1.0.1" + orderedmap@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/orderedmap/-/orderedmap-2.1.1.tgz#61481269c44031c449915497bf5a4ad273c512d2" @@ -1755,6 +1872,15 @@ read-cache@^1.0.0: dependencies: pify "^2.3.0" +readable-stream@^3.4.0: + version "3.6.2" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" + integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + readdirp@~3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" @@ -1771,6 +1897,14 @@ resolve@^1.1.7, resolve@^1.22.2: path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" +restore-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" + integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== + dependencies: + onetime "^5.1.0" + signal-exit "^3.0.2" + reusify@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" @@ -1816,6 +1950,11 @@ run-parallel@^1.1.9: dependencies: queue-microtask "^1.2.2" +safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + shebang-command@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" @@ -1835,6 +1974,11 @@ showdown@^2.1.0: dependencies: commander "^9.0.0" +signal-exit@^3.0.2: + version "3.0.7" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== + signal-exit@^4.0.1: version "4.1.0" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" @@ -1869,6 +2013,7 @@ source-map-js@^1.2.1: integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA== "string-width-cjs@npm:string-width@^4.2.0", string-width@^4.1.0: + name string-width-cjs version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -1886,7 +2031,15 @@ string-width@^5.0.1, string-width@^5.1.2: emoji-regex "^9.2.2" strip-ansi "^7.0.1" +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + "strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: + name strip-ansi-cjs version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== @@ -1913,6 +2066,13 @@ sucrase@^3.32.0: pirates "^4.0.1" ts-interface-checker "^0.1.9" +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== + dependencies: + has-flag "^4.0.0" + supports-preserve-symlinks-flag@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" @@ -1989,6 +2149,11 @@ tslib@^2.0.0, tslib@^2.4.0: resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.7.0.tgz#d9b40c5c40ab59e8738f297df3087bf1a2690c01" integrity sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA== +typescript@^5.0.2: + version "5.7.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.7.3.tgz#919b44a7dbb8583a9b856d162be24a54bf80073e" + integrity sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw== + uc.micro@^2.0.0, uc.micro@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-2.1.0.tgz#f8d3f7d0ec4c3dea35a7e3c8efa4cb8b45c9e7ee" @@ -2002,7 +2167,7 @@ update-browserslist-db@^1.1.0: escalade "^3.1.2" picocolors "^1.0.1" -util-deprecate@^1.0.2: +util-deprecate@^1.0.1, util-deprecate@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== @@ -2046,6 +2211,13 @@ w3c-keyname@^2.2.0: resolved "https://registry.yarnpkg.com/w3c-keyname/-/w3c-keyname-2.2.8.tgz#7b17c8c6883d4e8b86ac8aba79d39e880f8869c5" integrity sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ== +wcwidth@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" + integrity sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg== + dependencies: + defaults "^1.0.3" + which@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" From 933712c86b3d1b01faab7a4244ccc5d974625a94 Mon Sep 17 00:00:00 2001 From: krantheman Date: Wed, 29 Jan 2025 17:22:53 +0530 Subject: [PATCH 10/69] feat(Mail Domain): add tenant name --- frontend/src/components/AppSidebar.vue | 2 +- frontend/src/pages/dashboard/Domains.vue | 2 +- mail/mail/doctype/mail_domain/mail_domain.json | 13 +++++++++++-- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/frontend/src/components/AppSidebar.vue b/frontend/src/components/AppSidebar.vue index 88d5e952..3399ca79 100644 --- a/frontend/src/components/AppSidebar.vue +++ b/frontend/src/components/AppSidebar.vue @@ -1,6 +1,6 @@ From 4147c163ac8cf30130a8d408be6a10e1a7d9aca9 Mon Sep 17 00:00:00 2001 From: krantheman Date: Thu, 30 Jan 2025 12:04:48 +0530 Subject: [PATCH 12/69] fix(Signup): account request value --- frontend/src/pages/SignUp.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/pages/SignUp.vue b/frontend/src/pages/SignUp.vue index 80820744..ceec8558 100644 --- a/frontend/src/pages/SignUp.vue +++ b/frontend/src/pages/SignUp.vue @@ -106,7 +106,7 @@ const signUp = createResource({ }, onSuccess(data) { errorMessage.value = '' - accountRequest.value = data.name + accountRequest.value = data isVerificationStep.value = true raiseToast('A verification code has been sent to your registered email address.') }, From 5fb2947bf2c43a6b968614254c6f82a39edc42f0 Mon Sep 17 00:00:00 2001 From: krantheman Date: Thu, 30 Jan 2025 12:21:30 +0530 Subject: [PATCH 13/69] chore: add frappe-ui.diff --- frappe-ui | 1 + 1 file changed, 1 insertion(+) create mode 160000 frappe-ui diff --git a/frappe-ui b/frappe-ui new file mode 160000 index 00000000..1c97498f --- /dev/null +++ b/frappe-ui @@ -0,0 +1 @@ +Subproject commit 1c97498fb2bf4b64c82a96dac0fdb61ae77e59dc From 1580b817116675fe3f4e6b368a308c4b9e52d59e Mon Sep 17 00:00:00 2001 From: krantheman Date: Thu, 30 Jan 2025 12:35:26 +0530 Subject: [PATCH 14/69] chore: downgrade vite to v5 --- frontend/package.json | 2 +- frontend/yarn.lock | 1357 ++++++++++++++++++++--------------------- 2 files changed, 665 insertions(+), 694 deletions(-) diff --git a/frontend/package.json b/frontend/package.json index 3d283d6e..c86ec9fa 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -27,6 +27,6 @@ "autoprefixer": "^10.4.2", "postcss": "^8.4.5", "tailwindcss": "^3.0.15", - "vite": "^6.0.11" + "vite": "^5" } } diff --git a/frontend/yarn.lock b/frontend/yarn.lock index b0ab76dd..df9b6034 100644 --- a/frontend/yarn.lock +++ b/frontend/yarn.lock @@ -7,204 +7,193 @@ resolved "https://registry.yarnpkg.com/@alloc/quick-lru/-/quick-lru-5.2.0.tgz#7bf68b20c0a350f936915fcae06f58e32007ce30" integrity sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw== -"@babel/helper-string-parser@^7.24.8": - version "7.24.8" - resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz#5b3329c9a58803d5df425e5785865881a81ca48d" - integrity sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ== - -"@babel/helper-validator-identifier@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz#75b889cfaf9e35c2aaf42cf0d72c8e91719251db" - integrity sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w== - -"@babel/parser@^7.24.7": - version "7.25.6" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.25.6.tgz#85660c5ef388cbbf6e3d2a694ee97a38f18afe2f" - integrity sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q== - dependencies: - "@babel/types" "^7.25.6" - -"@babel/types@^7.25.6": - version "7.25.6" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.25.6.tgz#893942ddb858f32ae7a004ec9d3a76b3463ef8e6" - integrity sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw== - dependencies: - "@babel/helper-string-parser" "^7.24.8" - "@babel/helper-validator-identifier" "^7.24.7" - to-fast-properties "^2.0.0" - -"@esbuild/aix-ppc64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.24.2.tgz#38848d3e25afe842a7943643cbcd387cc6e13461" - integrity sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA== - -"@esbuild/android-arm64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.24.2.tgz#f592957ae8b5643129fa889c79e69cd8669bb894" - integrity sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg== - -"@esbuild/android-arm@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.24.2.tgz#72d8a2063aa630308af486a7e5cbcd1e134335b3" - integrity sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q== - -"@esbuild/android-x64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.24.2.tgz#9a7713504d5f04792f33be9c197a882b2d88febb" - integrity sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw== - -"@esbuild/darwin-arm64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.24.2.tgz#02ae04ad8ebffd6e2ea096181b3366816b2b5936" - integrity sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA== - -"@esbuild/darwin-x64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.24.2.tgz#9ec312bc29c60e1b6cecadc82bd504d8adaa19e9" - integrity sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA== - -"@esbuild/freebsd-arm64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.24.2.tgz#5e82f44cb4906d6aebf24497d6a068cfc152fa00" - integrity sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg== - -"@esbuild/freebsd-x64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.24.2.tgz#3fb1ce92f276168b75074b4e51aa0d8141ecce7f" - integrity sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q== - -"@esbuild/linux-arm64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.24.2.tgz#856b632d79eb80aec0864381efd29de8fd0b1f43" - integrity sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg== - -"@esbuild/linux-arm@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.24.2.tgz#c846b4694dc5a75d1444f52257ccc5659021b736" - integrity sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA== - -"@esbuild/linux-ia32@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.24.2.tgz#f8a16615a78826ccbb6566fab9a9606cfd4a37d5" - integrity sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw== - -"@esbuild/linux-loong64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.24.2.tgz#1c451538c765bf14913512c76ed8a351e18b09fc" - integrity sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ== - -"@esbuild/linux-mips64el@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.24.2.tgz#0846edeefbc3d8d50645c51869cc64401d9239cb" - integrity sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw== - -"@esbuild/linux-ppc64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.24.2.tgz#8e3fc54505671d193337a36dfd4c1a23b8a41412" - integrity sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw== - -"@esbuild/linux-riscv64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.24.2.tgz#6a1e92096d5e68f7bb10a0d64bb5b6d1daf9a694" - integrity sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q== - -"@esbuild/linux-s390x@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.24.2.tgz#ab18e56e66f7a3c49cb97d337cd0a6fea28a8577" - integrity sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw== - -"@esbuild/linux-x64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.24.2.tgz#8140c9b40da634d380b0b29c837a0b4267aff38f" - integrity sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q== - -"@esbuild/netbsd-arm64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/netbsd-arm64/-/netbsd-arm64-0.24.2.tgz#65f19161432bafb3981f5f20a7ff45abb2e708e6" - integrity sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw== - -"@esbuild/netbsd-x64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.24.2.tgz#7a3a97d77abfd11765a72f1c6f9b18f5396bcc40" - integrity sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw== - -"@esbuild/openbsd-arm64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.24.2.tgz#58b00238dd8f123bfff68d3acc53a6ee369af89f" - integrity sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A== - -"@esbuild/openbsd-x64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.24.2.tgz#0ac843fda0feb85a93e288842936c21a00a8a205" - integrity sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA== - -"@esbuild/sunos-x64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.24.2.tgz#8b7aa895e07828d36c422a4404cc2ecf27fb15c6" - integrity sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig== - -"@esbuild/win32-arm64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.24.2.tgz#c023afb647cabf0c3ed13f0eddfc4f1d61c66a85" - integrity sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ== - -"@esbuild/win32-ia32@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.24.2.tgz#96c356132d2dda990098c8b8b951209c3cd743c2" - integrity sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA== - -"@esbuild/win32-x64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.24.2.tgz#34aa0b52d0fbb1a654b596acfa595f0c7b77a77b" - integrity sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg== +"@babel/helper-string-parser@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz#1aabb72ee72ed35789b4bbcad3ca2862ce614e8c" + integrity sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA== + +"@babel/helper-validator-identifier@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz#24b64e2c3ec7cd3b3c547729b8d16871f22cbdc7" + integrity sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ== + +"@babel/parser@^7.25.3": + version "7.26.7" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.26.7.tgz#e114cd099e5f7d17b05368678da0fb9f69b3385c" + integrity sha512-kEvgGGgEjRUutvdVvZhbn/BxVt+5VSpwXz1j3WYXQbXDo8KzFOPNG2GQbdAiNq8g6wn1yKk7C/qrke03a84V+w== + dependencies: + "@babel/types" "^7.26.7" + +"@babel/types@^7.26.7": + version "7.26.7" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.26.7.tgz#5e2b89c0768e874d4d061961f3a5a153d71dc17a" + integrity sha512-t8kDRGrKXyp6+tjUh7hw2RLyclsW4TRoRvRHtSyAX9Bb5ldlFh+90YAYY6awRXrlB4G5G2izNeGySpATlFzmOg== + dependencies: + "@babel/helper-string-parser" "^7.25.9" + "@babel/helper-validator-identifier" "^7.25.9" + +"@esbuild/aix-ppc64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz#c7184a326533fcdf1b8ee0733e21c713b975575f" + integrity sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ== + +"@esbuild/android-arm64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz#09d9b4357780da9ea3a7dfb833a1f1ff439b4052" + integrity sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A== + +"@esbuild/android-arm@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.21.5.tgz#9b04384fb771926dfa6d7ad04324ecb2ab9b2e28" + integrity sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg== + +"@esbuild/android-x64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.21.5.tgz#29918ec2db754cedcb6c1b04de8cd6547af6461e" + integrity sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA== + +"@esbuild/darwin-arm64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz#e495b539660e51690f3928af50a76fb0a6ccff2a" + integrity sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ== + +"@esbuild/darwin-x64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz#c13838fa57372839abdddc91d71542ceea2e1e22" + integrity sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw== + +"@esbuild/freebsd-arm64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz#646b989aa20bf89fd071dd5dbfad69a3542e550e" + integrity sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g== + +"@esbuild/freebsd-x64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz#aa615cfc80af954d3458906e38ca22c18cf5c261" + integrity sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ== + +"@esbuild/linux-arm64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz#70ac6fa14f5cb7e1f7f887bcffb680ad09922b5b" + integrity sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q== + +"@esbuild/linux-arm@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz#fc6fd11a8aca56c1f6f3894f2bea0479f8f626b9" + integrity sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA== + +"@esbuild/linux-ia32@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz#3271f53b3f93e3d093d518d1649d6d68d346ede2" + integrity sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg== + +"@esbuild/linux-loong64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz#ed62e04238c57026aea831c5a130b73c0f9f26df" + integrity sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg== + +"@esbuild/linux-mips64el@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz#e79b8eb48bf3b106fadec1ac8240fb97b4e64cbe" + integrity sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg== + +"@esbuild/linux-ppc64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz#5f2203860a143b9919d383ef7573521fb154c3e4" + integrity sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w== + +"@esbuild/linux-riscv64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz#07bcafd99322d5af62f618cb9e6a9b7f4bb825dc" + integrity sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA== + +"@esbuild/linux-s390x@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz#b7ccf686751d6a3e44b8627ababc8be3ef62d8de" + integrity sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A== + +"@esbuild/linux-x64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz#6d8f0c768e070e64309af8004bb94e68ab2bb3b0" + integrity sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ== + +"@esbuild/netbsd-x64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz#bbe430f60d378ecb88decb219c602667387a6047" + integrity sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg== + +"@esbuild/openbsd-x64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz#99d1cf2937279560d2104821f5ccce220cb2af70" + integrity sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow== + +"@esbuild/sunos-x64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz#08741512c10d529566baba837b4fe052c8f3487b" + integrity sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg== + +"@esbuild/win32-arm64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz#675b7385398411240735016144ab2e99a60fc75d" + integrity sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A== + +"@esbuild/win32-ia32@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz#1bfc3ce98aa6ca9a0969e4d2af72144c59c1193b" + integrity sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA== + +"@esbuild/win32-x64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz#acad351d582d157bb145535db2a6ff53dd514b5c" + integrity sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw== "@floating-ui/core@^1.6.0": - version "1.6.7" - resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.6.7.tgz#7602367795a390ff0662efd1c7ae8ca74e75fb12" - integrity sha512-yDzVT/Lm101nQ5TCVeK65LtdN7Tj4Qpr9RTXJ2vPFLqtLxwOrpoxAHAJI8J3yYWUc40J0BDBheaitK5SJmno2g== + version "1.6.9" + resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.6.9.tgz#64d1da251433019dafa091de9b2886ff35ec14e6" + integrity sha512-uMXCuQ3BItDUbAMhIXw7UPXRfAlOAvZzdK9BWpE60MCn+Svt3aLn9jsPTi/WNGlRUu2uI0v5S7JiIUsbsvh3fw== dependencies: - "@floating-ui/utils" "^0.2.7" + "@floating-ui/utils" "^0.2.9" "@floating-ui/dom@^1.0.0", "@floating-ui/dom@^1.6.7": - version "1.6.10" - resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.6.10.tgz#b74c32f34a50336c86dcf1f1c845cf3a39e26d6f" - integrity sha512-fskgCFv8J8OamCmyun8MfjB1Olfn+uZKjOKZ0vhYF3gRmEUXcGOjxWL8bBr7i4kIuPZ2KD2S3EUIOxnjC8kl2A== + version "1.6.13" + resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.6.13.tgz#a8a938532aea27a95121ec16e667a7cbe8c59e34" + integrity sha512-umqzocjDgNRGTuO7Q8CU32dkHkECqI8ZdMZ5Swb6QAM0t5rnlrN3lGo1hdpscRd3WS8T6DKYK4ephgIH9iRh3w== dependencies: "@floating-ui/core" "^1.6.0" - "@floating-ui/utils" "^0.2.7" + "@floating-ui/utils" "^0.2.9" -"@floating-ui/utils@^0.2.7": - version "0.2.7" - resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.2.7.tgz#d0ece53ce99ab5a8e37ebdfe5e32452a2bfc073e" - integrity sha512-X8R8Oj771YRl/w+c1HqAC1szL8zWQRwFvgDwT129k9ACdBoud/+/rX9V0qiMl6LWUdP9voC2nDVZYPMQQsb6eA== +"@floating-ui/utils@^0.2.9": + version "0.2.9" + resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.2.9.tgz#50dea3616bc8191fb8e112283b49eaff03e78429" + integrity sha512-MDWhGtE+eHw5JW7lq4qhc5yRLS11ERl1c7Z6Xd0a58DozHES6EnNNwUWbMiG4J9Cgj053Bhk8zvlhFYKVhULwg== "@floating-ui/vue@^1.1.0": - version "1.1.4" - resolved "https://registry.yarnpkg.com/@floating-ui/vue/-/vue-1.1.4.tgz#1dd6905a58baaa9a84c44c2cf28e281f715957a1" - integrity sha512-ammH7T3vyCx7pmm9OF19Wc42zrGnUw0QvLoidgypWsCLJMtGXEwY7paYIHO+K+oLC3mbWpzIHzeTVienYenlNg== + version "1.1.6" + resolved "https://registry.yarnpkg.com/@floating-ui/vue/-/vue-1.1.6.tgz#1c7e8f257fae5b71a72d10c1746e6b0ba338399c" + integrity sha512-XFlUzGHGv12zbgHNk5FN2mUB7ROul3oG2ENdTpWdE+qMFxyNxWSRmsoyhiEnpmabNm6WnUvR1OvJfUfN4ojC1A== dependencies: "@floating-ui/dom" "^1.0.0" - "@floating-ui/utils" "^0.2.7" + "@floating-ui/utils" "^0.2.9" vue-demi ">=0.13.0" "@headlessui/vue@^1.7.14": - version "1.7.22" - resolved "https://registry.yarnpkg.com/@headlessui/vue/-/vue-1.7.22.tgz#8d55a3a670c3d48beb660b7c47a7a8ff76caacfe" - integrity sha512-Hoffjoolq1rY+LOfJ+B/OvkhuBXXBFgd8oBlN+l1TApma2dB0En0ucFZrwQtb33SmcCqd32EQd0y07oziXWNYg== + version "1.7.23" + resolved "https://registry.yarnpkg.com/@headlessui/vue/-/vue-1.7.23.tgz#7fe19dbeca35de9e6270c82c78c4864e6a6f7391" + integrity sha512-JzdCNqurrtuu0YW6QaDtR2PIYCKPUWq28csDyMvN4zmGccmE7lz40Is6hc3LA4HFeCI7sekZ/PQMTNmn9I/4Wg== dependencies: "@tanstack/vue-virtual" "^3.0.0-beta.60" "@internationalized/date@^3.5.4": - version "3.5.5" - resolved "https://registry.yarnpkg.com/@internationalized/date/-/date-3.5.5.tgz#7d34cb9da35127f98dd669fc926bb37e771e177f" - integrity sha512-H+CfYvOZ0LTJeeLOqm19E3uj/4YjrmOFtBufDHPfvtI80hFAMqtrp7oCACpe4Cil5l8S0Qu/9dYfZc/5lY8WQQ== + version "3.7.0" + resolved "https://registry.yarnpkg.com/@internationalized/date/-/date-3.7.0.tgz#23a4956308ee108e308517a7137c69ab8f5f2ad9" + integrity sha512-VJ5WS3fcVx0bejE/YHfbDKR/yawZgKqn/if+oEeLqNwBtPzVB06olkfcnojTmEMX+gTpH+FlQ69SHNitJ8/erQ== dependencies: "@swc/helpers" "^0.5.0" "@internationalized/number@^3.5.3": - version "3.5.3" - resolved "https://registry.yarnpkg.com/@internationalized/number/-/number-3.5.3.tgz#9fa060c1c4809f23fb3d38dd3f3d1ae4c87e95a8" - integrity sha512-rd1wA3ebzlp0Mehj5YTuTI50AQEx80gWFyHcQu+u91/5NgdwBecO8BH6ipPfE+lmQ9d63vpB3H9SHoIUiupllw== + version "3.6.0" + resolved "https://registry.yarnpkg.com/@internationalized/number/-/number-3.6.0.tgz#dc6ba20c41b25eb605f1d5cac7d8668e9022c224" + integrity sha512-PtrRcJVy7nw++wn4W2OuePQQfTqDzfusSuY1QTtui4wa7r+rGVtR75pO8CyKvHvzyQYi3Q1uO5sY0AsB4e65Bw== dependencies: "@swc/helpers" "^0.5.0" @@ -221,9 +210,9 @@ wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" "@jridgewell/gen-mapping@^0.3.2": - version "0.3.5" - resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz#dcce6aff74bdf6dad1a95802b69b04a2fcb1fb36" - integrity sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg== + version "0.3.8" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz#4f0e06362e01362f823d348f1872b08f666d8142" + integrity sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA== dependencies: "@jridgewell/set-array" "^1.2.1" "@jridgewell/sourcemap-codec" "^1.4.10" @@ -283,10 +272,10 @@ resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.8.tgz#6b79032e760a0899cd4204710beede972a3a185f" integrity sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A== -"@remirror/core-constants@^2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@remirror/core-constants/-/core-constants-2.0.2.tgz#f05eccdc69e3a65e7d524b52548f567904a11a1a" - integrity sha512-dyHY+sMF0ihPus3O27ODd4+agdHMEmuRdyiZJ2CCWjPV5UFmn17ZbElvk6WOGVE4rdCJKZQCrPV2BcikOMLUGQ== +"@remirror/core-constants@3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@remirror/core-constants/-/core-constants-3.0.0.tgz#96fdb89d25c62e7b6a5d08caf0ce5114370e3b8f" + integrity sha512-42aWfPrimMfDKDi4YegyS7x+/0tlzaqwPQCULLanv3DMIlu96KTJR0fM5isWX2UViOqlGnX6YFgqWepcX+XMNg== "@rollup/rollup-android-arm-eabi@4.32.1": version "4.32.1" @@ -389,285 +378,304 @@ integrity sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA== "@swc/helpers@^0.5.0": - version "0.5.12" - resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.5.12.tgz#37aaca95284019eb5d2207101249435659709f4b" - integrity sha512-KMZNXiGibsW9kvZAO1Pam2JPTDBm+KSHMMHWdsyI/1DbIZjT2A6Gy3hblVXUMEDvUAKq+e0vL0X0o54owWji7g== + version "0.5.15" + resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.5.15.tgz#79efab344c5819ecf83a43f3f9f811fc84b516d7" + integrity sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g== dependencies: - tslib "^2.4.0" + tslib "^2.8.0" "@tailwindcss/forms@^0.5.3": - version "0.5.8" - resolved "https://registry.yarnpkg.com/@tailwindcss/forms/-/forms-0.5.8.tgz#1067d82d9562abe3f8de9abfd528965f7fa116a9" - integrity sha512-DJs7B7NPD0JH7BVvdHWNviWmunlFhuEkz7FyFxE4japOWYMLl9b1D6+Z9mivJJPWr6AEbmlPqgiFRyLwFB1SgQ== + version "0.5.10" + resolved "https://registry.yarnpkg.com/@tailwindcss/forms/-/forms-0.5.10.tgz#0a1cd67b6933402f1985a04595bd24f9785aa302" + integrity sha512-utI1ONF6uf/pPNO68kmN1b8rEwNXv3czukalo8VtJH8ksIkZXr3Q3VYudZLkCsDd4Wku120uF02hYK25XGPorw== dependencies: mini-svg-data-uri "^1.2.3" "@tailwindcss/typography@^0.5.0": - version "0.5.15" - resolved "https://registry.yarnpkg.com/@tailwindcss/typography/-/typography-0.5.15.tgz#007ab9870c86082a1c76e5b3feda9392c7c8d648" - integrity sha512-AqhlCXl+8grUz8uqExv5OTtgpjuVIwFTSXTrh8y9/pw6q2ek7fJ+Y8ZEVw7EB2DCcuCOtEjf9w3+J3rzts01uA== + version "0.5.16" + resolved "https://registry.yarnpkg.com/@tailwindcss/typography/-/typography-0.5.16.tgz#a926c8f44d5c439b2915e231cad80058850047c6" + integrity sha512-0wDLwCVF5V3x3b1SGXPCDcdsbDHMBe+lkFzBRaHeLvNi+nrrnZ1lA18u+OTWO8iSWU2GxUOCvlXtDuqftc1oiA== dependencies: lodash.castarray "^4.4.0" lodash.isplainobject "^4.0.6" lodash.merge "^4.6.2" postcss-selector-parser "6.0.10" -"@tanstack/virtual-core@3.10.6": - version "3.10.6" - resolved "https://registry.yarnpkg.com/@tanstack/virtual-core/-/virtual-core-3.10.6.tgz#babe3989b2344a5f12fc64129f9bbed5d3402999" - integrity sha512-1giLc4dzgEKLMx5pgKjL6HlG5fjZMgCjzlKAlpr7yoUtetVPELgER1NtephAI910nMwfPTHNyWKSFmJdHkz2Cw== +"@tanstack/virtual-core@3.11.3": + version "3.11.3" + resolved "https://registry.yarnpkg.com/@tanstack/virtual-core/-/virtual-core-3.11.3.tgz#ab92ff899825e2d71fc9914dda2847a099d43862" + integrity sha512-v2mrNSnMwnPJtcVqNvV0c5roGCBqeogN8jDtgtuHCphdwBasOZ17x8UV8qpHUh+u0MLfX43c0uUHKje0s+Zb0w== "@tanstack/vue-virtual@^3.0.0-beta.60", "@tanstack/vue-virtual@^3.8.1": - version "3.10.6" - resolved "https://registry.yarnpkg.com/@tanstack/vue-virtual/-/vue-virtual-3.10.6.tgz#874dba19d95eccc29f328b0890696c26acf875c7" - integrity sha512-uVyUAV7rugRxgrw/f3J6FX6TGhxWAjXdT0PAbVNcIFNrj1Ftu/NT9bFLxKVQTkd8hnM6y8ijAlJ1xtBDGmo4gQ== + version "3.11.3" + resolved "https://registry.yarnpkg.com/@tanstack/vue-virtual/-/vue-virtual-3.11.3.tgz#e6e52efd71d9e6122fc6c319a897e28e9f663cfd" + integrity sha512-BVZ00i5XBucetRj2doVd32jOPtJthvZSVJvx9GL4gSQsyngliSCtzlP1Op7TFrEtmebRKT8QUQE1tRhOQzWecQ== dependencies: - "@tanstack/virtual-core" "3.10.6" + "@tanstack/virtual-core" "3.11.3" -"@tiptap/core@^2.6.6": - version "2.6.6" - resolved "https://registry.yarnpkg.com/@tiptap/core/-/core-2.6.6.tgz#34edc749dece70e99231b669582b92afae1c3ec8" - integrity sha512-VO5qTsjt6rwworkuo0s5AqYMfDA0ZwiTiH6FHKFSu2G/6sS7HKcc/LjPq+5Legzps4QYdBDl3W28wGsGuS1GdQ== +"@tiptap/core@^2.11.3": + version "2.11.3" + resolved "https://registry.yarnpkg.com/@tiptap/core/-/core-2.11.3.tgz#2fec77ff3d6fdfabbc5ce1a2cab65c5c759a9a01" + integrity sha512-ibfi6U1gMRLo319Re6olv8uAuxtUpK343ygcVoZrJ8O4sqRnU9CEqPAM+n7YAKlOks1+Di0sTheIxZRak7Pj4g== -"@tiptap/extension-blockquote@^2.6.6": - version "2.6.6" - resolved "https://registry.yarnpkg.com/@tiptap/extension-blockquote/-/extension-blockquote-2.6.6.tgz#3b1e0b501588beb992f45c04e4ee34ad36b42f0d" - integrity sha512-hAdsNlMfzzxld154hJqPqtWqO5i4/7HoDfuxmyqBxdMJ+e2UMaIGBGwoLRXG0V9UoRwJusjqlpyD7pIorxNlgA== +"@tiptap/extension-blockquote@^2.11.3": + version "2.11.3" + resolved "https://registry.yarnpkg.com/@tiptap/extension-blockquote/-/extension-blockquote-2.11.3.tgz#adfd485606b886f06ff506be9e2884ed865bb902" + integrity sha512-UmKBmk7USY5Ufd7jcOI1W//nmRwRWdKLEYVLQ/L/nelpa7LXhDI/T3k4Oa4JlNQCEgUqI5Wz8TbVJYaFcyV/jA== -"@tiptap/extension-bold@^2.6.6": - version "2.6.6" - resolved "https://registry.yarnpkg.com/@tiptap/extension-bold/-/extension-bold-2.6.6.tgz#703cde9835c83d964c6284ae6ea7754b06cd2def" - integrity sha512-CD6gBhdQtCoqYSmx8oAV8gvKtVOGZSyyvuNYo7by9eZ56DqLYnd7kbUj0RH7o9Ymf/iJTOUJ6XcvrsWwo4lubg== +"@tiptap/extension-bold@^2.11.3": + version "2.11.3" + resolved "https://registry.yarnpkg.com/@tiptap/extension-bold/-/extension-bold-2.11.3.tgz#c1e0e6ab399b0cc04d2678bf2852559d20112df5" + integrity sha512-YafJ+BavtzQBir81HoM62G0cik1ww7zNcElkg35sQWtVFnT99s+fLEuSurixtmiLdgmSSb/YsPrCmNp/R75zOw== -"@tiptap/extension-bubble-menu@^2.6.6": - version "2.6.6" - resolved "https://registry.yarnpkg.com/@tiptap/extension-bubble-menu/-/extension-bubble-menu-2.6.6.tgz#6e2b745fd10262258ce51562963694bfc8178ef1" - integrity sha512-IkfmlZq67aaegym5sBddBc/xXWCArxn5WJEl1oxKEayjQhybKSaqI7tk0lOx/x7fa5Ml1WlGpCFh+KKXbQTG0g== +"@tiptap/extension-bubble-menu@^2.11.3": + version "2.11.3" + resolved "https://registry.yarnpkg.com/@tiptap/extension-bubble-menu/-/extension-bubble-menu-2.11.3.tgz#c631acf804b6aa1233a4e37b7895d1d4d2b7e5b0" + integrity sha512-KOAy9zCzqssJO7cGIwZNgv2hFyxrZ2AHoWptICPA79nVZrHQQw2ZP1/FDTR8cDEZzLQMbpgGqQhUhjZcAs3/zQ== dependencies: tippy.js "^6.3.7" -"@tiptap/extension-bullet-list@^2.6.6": - version "2.6.6" - resolved "https://registry.yarnpkg.com/@tiptap/extension-bullet-list/-/extension-bullet-list-2.6.6.tgz#b82bded0eb9921f1e7f1f201204f83b9dba81b78" - integrity sha512-WEKxbVSYuvmX2wkHWP8HXk5nzA7stYwtdaubwWH/R17kGI3IGScJuMQ9sEN82uzJU8bfgL9yCbH2bY8Fj/Q4Ow== +"@tiptap/extension-bullet-list@^2.11.3": + version "2.11.3" + resolved "https://registry.yarnpkg.com/@tiptap/extension-bullet-list/-/extension-bullet-list-2.11.3.tgz#c1326a2b101bd9389952e005a6bdade2e62c484b" + integrity sha512-Q6ukkuD+Bt4UcJ5Pt0ZcF3ZzE6akC5l7gaXsTIZ4rqRS6Bmol13h5BshTNhhZhxFqJKwyt6MWHG60j7agtRoHQ== -"@tiptap/extension-code-block@^2.6.6": - version "2.6.6" - resolved "https://registry.yarnpkg.com/@tiptap/extension-code-block/-/extension-code-block-2.6.6.tgz#879df09c9620046381e12f5947748ce5d77e4c7f" - integrity sha512-1YLp/zHMHSkE2xzht8nPR6T4sQJJ3ket798czxWuQEbetFv/l0U/mpiPpYSLObj6oTAoqYZ0kWXZj5eQSpPB8Q== +"@tiptap/extension-code-block@^2.11.3": + version "2.11.3" + resolved "https://registry.yarnpkg.com/@tiptap/extension-code-block/-/extension-code-block-2.11.3.tgz#53b3b72853bbff352f1fa30dac5554738a5b100d" + integrity sha512-7VsufXUJt1Aq0UjQ2gQg6+boYsHdCi3+OBabbSMcf5TUWBmPlZnHAsDaocw2c/ZnOeu8Gmg6yrtBxbwjaiIO6g== -"@tiptap/extension-code@^2.6.6": - version "2.6.6" - resolved "https://registry.yarnpkg.com/@tiptap/extension-code/-/extension-code-2.6.6.tgz#587eb08d09684fecc1c0f4d755e8b37ea65ff461" - integrity sha512-JrEFKsZiLvfvOFhOnnrpA0TzCuJjDeysfbMeuKUZNV4+DhYOL28d39H1++rEtJAX0LcbBU60oC5/PrlU9SpvRQ== +"@tiptap/extension-code@^2.11.3": + version "2.11.3" + resolved "https://registry.yarnpkg.com/@tiptap/extension-code/-/extension-code-2.11.3.tgz#488227e4dee250afb40f05f90c87f4ad9cb0d583" + integrity sha512-w36Pb4DlB/cQZwsIpd5pSDwYuLBBSGh6dwGc9TVUdv+hdh8vIsnkGCjynapXgUrT2RFEJwObRYK+r5Gw84uGSA== "@tiptap/extension-color@^2.0.3": - version "2.6.6" - resolved "https://registry.yarnpkg.com/@tiptap/extension-color/-/extension-color-2.6.6.tgz#d202fa586ff48220216cfc017136660fd11fba29" - integrity sha512-aq2XnbWMak1yJxH2EoVKpCjFONRkZcX9D72LvvgOgtDQ62wG3/axZ75bT1B/NNfqlEp7U78Fpqib7jq/uCLYTg== + version "2.11.3" + resolved "https://registry.yarnpkg.com/@tiptap/extension-color/-/extension-color-2.11.3.tgz#812f20a437959441a0237549024d4c1adf27f2b8" + integrity sha512-REUsyIq4OFsWMS7+pCKcTJ10IqBZLZYFOCD9b+yq/+NBKoEUdh2i7Uie/ZKRvE7skyMKOR2Vw6f5CNuRiotAhw== -"@tiptap/extension-document@^2.6.6": - version "2.6.6" - resolved "https://registry.yarnpkg.com/@tiptap/extension-document/-/extension-document-2.6.6.tgz#d766c645409b3799d0f9fa6ac8a318e34052db15" - integrity sha512-6qlH5VWzLHHRVeeciRC6C4ZHpMsAGPNG16EF53z0GeMSaaFD/zU3B239QlmqXmLsAl8bpf8Bn93N0t2ABUvScw== +"@tiptap/extension-document@^2.11.3": + version "2.11.3" + resolved "https://registry.yarnpkg.com/@tiptap/extension-document/-/extension-document-2.11.3.tgz#336786f5fdcf91ac4fb5a7d286355e7cab6c8aef" + integrity sha512-utY1JZgxRLt0/oFPPUH8OT8Ltu3nmdycM2EwkM85vil83MnM5kuEYHF1l1q2xhnJ52wdU3afx+e7dFgvMDuunA== -"@tiptap/extension-dropcursor@^2.6.6": - version "2.6.6" - resolved "https://registry.yarnpkg.com/@tiptap/extension-dropcursor/-/extension-dropcursor-2.6.6.tgz#5e90f43b570e68c6ae68918c05785d052722b58e" - integrity sha512-O6CeKriA9uyHsg7Ui4z5ZjEWXQxrIL+1zDekffW0wenGC3G4LUsCzAiFS4LSrR9a3u7tnwqGApW10rdkmCGF4w== +"@tiptap/extension-dropcursor@^2.11.3": + version "2.11.3" + resolved "https://registry.yarnpkg.com/@tiptap/extension-dropcursor/-/extension-dropcursor-2.11.3.tgz#2f1fd19dff2504fd32a6e2169f7daaaffda22823" + integrity sha512-Ppw46/1Vt9PlTT6TMloL1KjO2W89QUjRRptk5OtDvAGoOahLWwLji2k7dHyPeeCsG1J2KpHIPxngs922uhOEMw== -"@tiptap/extension-floating-menu@^2.6.6": - version "2.6.6" - resolved "https://registry.yarnpkg.com/@tiptap/extension-floating-menu/-/extension-floating-menu-2.6.6.tgz#37a16b966518b24fce021e2591669b470467c419" - integrity sha512-lPkESOfAUxgmXRiNqUU23WSyja5FUfSWjsW4hqe+BKNjsUt1OuFMEtYJtNc+MCGhhtPfFvM3Jg6g9jd6g5XsLQ== +"@tiptap/extension-floating-menu@^2.11.3": + version "2.11.3" + resolved "https://registry.yarnpkg.com/@tiptap/extension-floating-menu/-/extension-floating-menu-2.11.3.tgz#bbfc743740aeecd4c36ecf072aa0e54ca59016d0" + integrity sha512-Za1x475cvv+URegCsoDr8rZI5GIoC4N6rHg/xqmozY4bA326Ko1cMrUbwpVF6p17nerDGAMCIstZM7SSUQdNSA== dependencies: tippy.js "^6.3.7" -"@tiptap/extension-gapcursor@^2.6.6": - version "2.6.6" - resolved "https://registry.yarnpkg.com/@tiptap/extension-gapcursor/-/extension-gapcursor-2.6.6.tgz#343e0f66bb8961c537289ddc2052afb9b30e587d" - integrity sha512-O2lQ2t0X0Vsbn3yLWxFFHrXY6C2N9Y6ZF/M7LWzpcDTUZeWuhoNkFE/1yOM0h6ZX1DO2A9hNIrKpi5Ny8yx+QA== +"@tiptap/extension-gapcursor@^2.11.3": + version "2.11.3" + resolved "https://registry.yarnpkg.com/@tiptap/extension-gapcursor/-/extension-gapcursor-2.11.3.tgz#c01b6ee8069cc910d827d0b63d267f02cdd0ebfd" + integrity sha512-QNVoMNvsinnpvIBAADCbPXMAxY6nv38dxLY3mmPBF0j51H1ggGRX2MdD8VsSBM+AP5az9vTa1+rO+0wBfDwDWw== -"@tiptap/extension-hard-break@^2.6.6": - version "2.6.6" - resolved "https://registry.yarnpkg.com/@tiptap/extension-hard-break/-/extension-hard-break-2.6.6.tgz#cc31c641e1dbd37ff8fab3c6f66ac2f700d863f1" - integrity sha512-bsUuyYBrMDEiudx1dOQSr9MzKv13m0xHWrOK+DYxuIDYJb5g+c9un5cK7Js+et/HEYYSPOoH/iTW6h+4I5YeUg== +"@tiptap/extension-hard-break@^2.11.3": + version "2.11.3" + resolved "https://registry.yarnpkg.com/@tiptap/extension-hard-break/-/extension-hard-break-2.11.3.tgz#c02749d74166b6acadf6104e3b60e2fa1dad93c7" + integrity sha512-Jsz1qV/h4GFZiBtcrJ2yAF1Euw25IXgx5m4EBr/33TV6gT5+zRUr4e0y6h3jHicyInviZeXd9HXELCcQCEtHRg== -"@tiptap/extension-heading@^2.6.6": - version "2.6.6" - resolved "https://registry.yarnpkg.com/@tiptap/extension-heading/-/extension-heading-2.6.6.tgz#d68964d1b935457fe3168faf7ee690b1e5384e67" - integrity sha512-bgx9vptVFi5yFkIw1OI53J7+xJ71Or3SOe/Q8eSpZv53DlaKpL/TzKw8Z54t1PrI2rJ6H9vrLtkvixJvBZH1Ug== +"@tiptap/extension-heading@^2.11.3": + version "2.11.3" + resolved "https://registry.yarnpkg.com/@tiptap/extension-heading/-/extension-heading-2.11.3.tgz#19b82f95027a5af20d1d32743d2a2b4c37e9b9e1" + integrity sha512-PuScgMuVxD/dUcizLCfQ1G4lI8ie2Wg5UCcixKefN2feFJneZdsIW6gUYYcjyH285VSjj+A76mwHzNdJGlGU2w== "@tiptap/extension-highlight@^2.0.3": - version "2.6.6" - resolved "https://registry.yarnpkg.com/@tiptap/extension-highlight/-/extension-highlight-2.6.6.tgz#0cdc390b13280620160785021ad689491a11ad61" - integrity sha512-Z02AYWm1AJAfhmfT4fGCI3YitijF4uNu+eiuq7OxhCiVf9IYaq8xlH2YMxa09QvMUo70ovklxk97+vQUUHeqfQ== + version "2.11.3" + resolved "https://registry.yarnpkg.com/@tiptap/extension-highlight/-/extension-highlight-2.11.3.tgz#714ad83fcc11cfbcb1936be9b2be6f4b61e35bf9" + integrity sha512-i9X5lH8pibQFxjpyjLtOpwAiRUNi67QsPD4KKvsuGxYsUDFC/EHQZPtC6FAUwca6kuVoOm+NIB20Oo06E+zFGA== -"@tiptap/extension-history@^2.6.6": - version "2.6.6" - resolved "https://registry.yarnpkg.com/@tiptap/extension-history/-/extension-history-2.6.6.tgz#8067d7f50ef529c84179eeb946e6f81af8853b90" - integrity sha512-tPTzAmPGqMX5Bd5H8lzRpmsaMvB9DvI5Dy2za/VQuFtxgXmDiFVgHRkRXIuluSkPTuANu84XBOQ0cBijqY8x4w== +"@tiptap/extension-history@^2.11.3": + version "2.11.3" + resolved "https://registry.yarnpkg.com/@tiptap/extension-history/-/extension-history-2.11.3.tgz#341c9a07b293c5904b195de41997fa48decab31d" + integrity sha512-dxJeuGuLEn9V4iGfsvMOBcTwufcw971NoBdsyW1TOzYvucDkYHgIlOVE4DEWIVuOkfIjKEiCGl8IdZLaHWU8Sg== -"@tiptap/extension-horizontal-rule@^2.6.6": - version "2.6.6" - resolved "https://registry.yarnpkg.com/@tiptap/extension-horizontal-rule/-/extension-horizontal-rule-2.6.6.tgz#3bc88048a9eb22ef8b6a9c4514701f79176eb495" - integrity sha512-cFEfv7euDpuLSe8exY8buwxkreKBAZY9Hn3EetKhPcLQo+ut5Y24chZTxFyf9b+Y0wz3UhOhLTZSz7fTobLqBA== +"@tiptap/extension-horizontal-rule@^2.11.3": + version "2.11.3" + resolved "https://registry.yarnpkg.com/@tiptap/extension-horizontal-rule/-/extension-horizontal-rule-2.11.3.tgz#28bf66d6dd02584239430ef01978b11bea380a0a" + integrity sha512-+O6W6EbD4TLsUF8t0ApgZWLpcwn3tajRZtBU6u0SuwHtvhMTrQYySUTH5j06KfTDbw6JAqKKPCpKhPgH2Z6eFg== "@tiptap/extension-image@^2.0.3": - version "2.6.6" - resolved "https://registry.yarnpkg.com/@tiptap/extension-image/-/extension-image-2.6.6.tgz#d3c2b4c6234dc8d475a5ee534447605c4e1408d5" - integrity sha512-dwJKvoqsr72B4tcTH8hXhfBJzUMs/jXUEE9MnfzYnSXf+CYALLjF8r/IkGYbxce62GP/bMDoj8BgpF8saeHtqA== + version "2.11.3" + resolved "https://registry.yarnpkg.com/@tiptap/extension-image/-/extension-image-2.11.3.tgz#b90bc8ef5c677750fdf93a3ad12f33cb3c28f4fd" + integrity sha512-W6NqRu4wXynBdwSD0pjk2sAtLwu/LK6XAalHGyO4h4axuO5YRKDo8DhseQ/7llbYEd8GR8qjsuEdnVAFQWWGrg== -"@tiptap/extension-italic@^2.6.6": - version "2.6.6" - resolved "https://registry.yarnpkg.com/@tiptap/extension-italic/-/extension-italic-2.6.6.tgz#18f1ec4461efca92ebe1bc6dfd79ec533d6bd68f" - integrity sha512-t7ZPsXqa8nJZZ/6D0rQyZ/KsvzLaSihC6hBTjUQ77CeDGV9PhDWjIcBW4OrvwraJDBd12ETBeQ2CkULJOgH+lQ== +"@tiptap/extension-italic@^2.11.3": + version "2.11.3" + resolved "https://registry.yarnpkg.com/@tiptap/extension-italic/-/extension-italic-2.11.3.tgz#34a4373ca0b99c36e905fe12f9e5545e8a9a680e" + integrity sha512-GpeQh2tMb6ys/ft7xqitoXeWO7uM8z4hvLEhD92ACuk6VpcHUhksUwnv4G4Qc/cZ9i+qk3GYEsRha0JaHp3GVw== "@tiptap/extension-link@^2.0.3": - version "2.6.6" - resolved "https://registry.yarnpkg.com/@tiptap/extension-link/-/extension-link-2.6.6.tgz#292b7e477a5c7abf685647986ca9639b8ce62e1c" - integrity sha512-NJSR5Yf/dI3do0+Mr6e6nkbxRQcqbL7NOPxo5Xw8VaKs2Oe8PX+c7hyqN3GZgn6uEbZdbVi1xjAniUokouwpFg== + version "2.11.3" + resolved "https://registry.yarnpkg.com/@tiptap/extension-link/-/extension-link-2.11.3.tgz#31d4d37084c0261c96a1187c11b45938936a02b9" + integrity sha512-FPLLBPqJQmqVMww7qx+Oznru2OaeoeZ6wTSfwtZZv1jNa1wwtK9O0wRJ3g71qvdFAt1veOesZNiMn3q7MOrw0A== dependencies: - linkifyjs "^4.1.0" + linkifyjs "^4.2.0" -"@tiptap/extension-list-item@^2.6.6": - version "2.6.6" - resolved "https://registry.yarnpkg.com/@tiptap/extension-list-item/-/extension-list-item-2.6.6.tgz#fedb7d5b3293d487eb5b9773abe8eb8a0a395428" - integrity sha512-k+oEzZu2cgVKqPqOP1HzASOKLpTEV9m7mRVPAbuaaX8mSyvIgD6f+JUx9PvgYv//D918wk98LMoRBFX53tDJ4w== +"@tiptap/extension-list-item@^2.11.3": + version "2.11.3" + resolved "https://registry.yarnpkg.com/@tiptap/extension-list-item/-/extension-list-item-2.11.3.tgz#f447b7adcd121a718c518b5fb4a1003a147ebde6" + integrity sha512-wUBuxoIN3XZQfesZqhgktJkJfcUaHUzUSzoCvQsDpaMsShpoFeptqs3DznHny9fRzrACkREds2dg6JV455+hLg== "@tiptap/extension-mention@^2.0.3": - version "2.6.6" - resolved "https://registry.yarnpkg.com/@tiptap/extension-mention/-/extension-mention-2.6.6.tgz#c46878bed263eb0ddb8f57b33530dd4ae7000920" - integrity sha512-fghNe4ZQRiZ7i3+sSrZx87zPZjaCwVtxn56/5UinoBUP/ZpCGwGtI+ErKhCBVyLW1fKyd0MmlihK/IGIeCBw1A== + version "2.11.3" + resolved "https://registry.yarnpkg.com/@tiptap/extension-mention/-/extension-mention-2.11.3.tgz#2bf8a484b326325a7f08c6434b28d7a4e54087e2" + integrity sha512-RcnEWv1wryMOeFlYL3RMw1rSyJsBd9xiyZeibQK8pDENc//7Awu8arFsQvj9pYp752EWQnSS/j0dzZmS/5CHXw== -"@tiptap/extension-ordered-list@^2.6.6": - version "2.6.6" - resolved "https://registry.yarnpkg.com/@tiptap/extension-ordered-list/-/extension-ordered-list-2.6.6.tgz#bd790a0375aa29f3ced63bde0e0c66a798619889" - integrity sha512-AJwyfLXIi7iUGnK5twJbwdVVpQyh7fU6OK75h1AwDztzsOcoPcxtffDlZvUOd4ZtwuyhkzYqVkeI0f+abTWZTw== +"@tiptap/extension-ordered-list@^2.11.3": + version "2.11.3" + resolved "https://registry.yarnpkg.com/@tiptap/extension-ordered-list/-/extension-ordered-list-2.11.3.tgz#30683d019b9bdb0ea6b3fec6a692a43156c80326" + integrity sha512-jRO3O6u0/el3l437pXFKsMv3YJuEfHUaEQHPUg5t1Dj8T+20X1LDg7tBKEbylBVLcgqB07aUbnFBqoQ4unwdsQ== -"@tiptap/extension-paragraph@^2.6.6": - version "2.6.6" - resolved "https://registry.yarnpkg.com/@tiptap/extension-paragraph/-/extension-paragraph-2.6.6.tgz#fb975b58e5055bb52e3df0fb9f996ed2407322e5" - integrity sha512-fD/onCr16UQWx+/xEmuFC2MccZZ7J5u4YaENh8LMnAnBXf78iwU7CAcmuc9rfAEO3qiLoYGXgLKiHlh2ZfD4wA== +"@tiptap/extension-paragraph@^2.11.3": + version "2.11.3" + resolved "https://registry.yarnpkg.com/@tiptap/extension-paragraph/-/extension-paragraph-2.11.3.tgz#9e050b6de59069d5c9ec0509679d3947ac143288" + integrity sha512-snH9aIRJGpHCLm0zzuBwhXpRYMyZvyNBlF5MulJKxkwremFhD9fVP26UtQEneL/CnwpNs3q1QOQGTRlqFP2hbg== "@tiptap/extension-placeholder@^2.0.3": - version "2.6.6" - resolved "https://registry.yarnpkg.com/@tiptap/extension-placeholder/-/extension-placeholder-2.6.6.tgz#a4e7a0150f3ab1c685cca75b2ee8f6fb73fbda1a" - integrity sha512-J0ZMvF93NsRrt+R7IQ3GhxNq32vq+88g25oV/YFJiwvC48HMu1tQB6kG1I3LJpu5b8lN+LnfANNqDOEhiBfjaA== + version "2.11.3" + resolved "https://registry.yarnpkg.com/@tiptap/extension-placeholder/-/extension-placeholder-2.11.3.tgz#12cc74df63f32465d96f234c9b39229e3f6c6017" + integrity sha512-wXNcqsxkc+85NPrNpA/iuLa86RL2oOiOGWheJoIjtW2m9BEJSDsyHdUa9Nxwm28+PgonzG1uUfEv4JEzT5m4xg== -"@tiptap/extension-strike@^2.6.6": - version "2.6.6" - resolved "https://registry.yarnpkg.com/@tiptap/extension-strike/-/extension-strike-2.6.6.tgz#a5de296ed110ad64117979e2b339247a28e362e6" - integrity sha512-Ze8KhGk+wzSJSJRl5fbhTI6AvPu2LmcHYeO3pMEH8u4gV5WTXfmKJVStEIAzkoqvwEQVWzXvy8nDgsFQHiojPg== +"@tiptap/extension-strike@^2.11.3": + version "2.11.3" + resolved "https://registry.yarnpkg.com/@tiptap/extension-strike/-/extension-strike-2.11.3.tgz#2c8f16b4900c5bc7468e5318d72b4c2489695170" + integrity sha512-Ei4rGEqytwXSj4Th1CN8EZFHnYmM5lAp8YUj1V3wWGX7EtRtnq1YG3+b7q68NKmdPSMFOjEz6pHtBzO+p+0aWw== "@tiptap/extension-table-cell@^2.0.3": - version "2.6.6" - resolved "https://registry.yarnpkg.com/@tiptap/extension-table-cell/-/extension-table-cell-2.6.6.tgz#8c4ea520caff6a5776a9deeaf4b8f1c091a26e4f" - integrity sha512-XakU9qnlYAf/ux4q7zgiJs2pvkjOl9mVzQw5j55aQHYLiw0gXomEgUbrkn7jhA7N6WP9PlngS3quwIDfyoqLvw== + version "2.11.3" + resolved "https://registry.yarnpkg.com/@tiptap/extension-table-cell/-/extension-table-cell-2.11.3.tgz#322b0eb6eeb8f655442b86543a446815c490f6eb" + integrity sha512-evdzllWjBey8bzSR7sUxTdrHKjN6M3XOv+1XfaoQpqMr8ryRWDb6yPSEIssAjc8bIa7yvCl7jaXMreeXE7oBSQ== "@tiptap/extension-table-header@^2.0.3": - version "2.6.6" - resolved "https://registry.yarnpkg.com/@tiptap/extension-table-header/-/extension-table-header-2.6.6.tgz#7c44c117c3026b9523eba9dc61b956b536dde441" - integrity sha512-BX2cVTrOZzIQAAWrNjD2Dzk/RpCJWUqgdW2bh27x0nJwKfMWfqLPoplTTuCZ+J9yK7rlNj3jEhKewe/yR1Tudw== + version "2.11.3" + resolved "https://registry.yarnpkg.com/@tiptap/extension-table-header/-/extension-table-header-2.11.3.tgz#f849687a05fb9668398d84864ba6623b5a890f7e" + integrity sha512-Dcs7R0r5VDhuRvEfLhUKFvK9Yj2xPP8aTQ2UvLVCUJMlvo5Qv/xaJWDbXxH/AQ3wL4LvZomHTOWvdNad7WEkgg== "@tiptap/extension-table-row@^2.0.3": - version "2.6.6" - resolved "https://registry.yarnpkg.com/@tiptap/extension-table-row/-/extension-table-row-2.6.6.tgz#d21eba20ead7afe4eb035253106cfa2ccdc04270" - integrity sha512-VN8MwrEbq2hs/BE3cizbasFMLfh0F9I9MF7cmU8V1j1Zju0ONUIEXOscO4TNFfCB8lf5tTwIp1sr+fxYUUprhg== + version "2.11.3" + resolved "https://registry.yarnpkg.com/@tiptap/extension-table-row/-/extension-table-row-2.11.3.tgz#e09547959a50a7992ad192cf34aca4e5ed635961" + integrity sha512-ExCsW/7SFJ9geXhEBKb3eyLCvUOvfLC6pn69aua/AvXPJE4cv//5D42e6o5Iyu/xwLLPH1oAINa0HYmsFDp75w== "@tiptap/extension-table@^2.0.3": - version "2.6.6" - resolved "https://registry.yarnpkg.com/@tiptap/extension-table/-/extension-table-2.6.6.tgz#4b67932029f5b6b230f1a29e6da0a799b10b27eb" - integrity sha512-Ay/IClmB9R8MjnLobGnA9tI0+7ev4GUwvNf/JA2razI8CeaMCJ7CcAzG6pnIp4d7I6ELWYmAt3vwxoRlsAZcEw== + version "2.11.3" + resolved "https://registry.yarnpkg.com/@tiptap/extension-table/-/extension-table-2.11.3.tgz#64019677c6f85c018f78ab747bd473d1e881335e" + integrity sha512-yxtEXhWB3804Uzr1YEpA4eynBD2syJr0UXfaJmPiz2dVxDF0FtB4K/1OWzTWF1CUBdbQmGKmAQYXDzHOyecfDw== "@tiptap/extension-text-align@^2.0.3": - version "2.6.6" - resolved "https://registry.yarnpkg.com/@tiptap/extension-text-align/-/extension-text-align-2.6.6.tgz#fadb8f77d8927eee668667e1244ee17de1f0f828" - integrity sha512-WdyxULEEHfI3hRDHAFOUoeP84h9myabadfjtZrub7/zO2PKKPAZLBN2vWat5PowH8E8GYX8vqKr9vaX+slfh5g== + version "2.11.3" + resolved "https://registry.yarnpkg.com/@tiptap/extension-text-align/-/extension-text-align-2.11.3.tgz#5490fc2559885ea58c1eb6c9853e79d86163a5ab" + integrity sha512-q3kTy3WBuqx2bo6BH+odKH2Xhj9POj6kR2uPH/dHOQZCCJ8ZRRqunUuJU8yOd0V2bLh7umQ6ORkV4YhfYDyjTQ== -"@tiptap/extension-text-style@^2.0.3": - version "2.6.6" - resolved "https://registry.yarnpkg.com/@tiptap/extension-text-style/-/extension-text-style-2.6.6.tgz#d81d88e988a5a127d267086d08918f75916813dc" - integrity sha512-8fO8m0/QI+rFKgZLP28GG2Nz0zhYsYd76O2Y+HsDTmMypJl/cdiNcVOWWffAwXAfMN43BNX7b1VI1XwGAMgYlg== +"@tiptap/extension-text-style@^2.0.3", "@tiptap/extension-text-style@^2.11.3": + version "2.11.3" + resolved "https://registry.yarnpkg.com/@tiptap/extension-text-style/-/extension-text-style-2.11.3.tgz#0738851245535cf24c2a7e399602a193b66c64b6" + integrity sha512-kF4pxThvsN7KAb4Ry+ifMGm/To97PeCtosOyjSIvlAnXdc+XvTf6+dkyCsq6smnOhqLw2NErn1gQ4eFbji8YQQ== -"@tiptap/extension-text@^2.6.6": - version "2.6.6" - resolved "https://registry.yarnpkg.com/@tiptap/extension-text/-/extension-text-2.6.6.tgz#8851aa57e4fcd2194968dc64f5f5599ad858dbfa" - integrity sha512-e84uILnRzNzcwK1DVQNpXVmBG1Cq3BJipTOIDl1LHifOok7MBjhI/X+/NR0bd3N2t6gmDTWi63+4GuJ5EeDmsg== +"@tiptap/extension-text@^2.11.3": + version "2.11.3" + resolved "https://registry.yarnpkg.com/@tiptap/extension-text/-/extension-text-2.11.3.tgz#5c5b660ed894d2d7455781abc2683d48afceb972" + integrity sha512-DhrwR9tmDU2U4yjqdaX6odrnOYaE/Ai2ERs2bU4Sgm0ZF5QCyO31Cflg1OQ4erTi0IiqD5ilDPRXqFuu6FGzOQ== "@tiptap/extension-typography@^2.0.3": - version "2.6.6" - resolved "https://registry.yarnpkg.com/@tiptap/extension-typography/-/extension-typography-2.6.6.tgz#70516a6c7f600f5448c0f86a16f3cf9c79b2b216" - integrity sha512-0niSddtPOY7CjKGmxOBQ34VqLGxTeOfN+zICL5CLmS8B815qb1G1csXhUyHJ1wT7q8xMCAhXnGCt8b8ilmj/sg== + version "2.11.3" + resolved "https://registry.yarnpkg.com/@tiptap/extension-typography/-/extension-typography-2.11.3.tgz#805ecc217e58148a22ed1ec5eafa55b8ee882ce6" + integrity sha512-wMIvPhCebhcozKs1JbdZImYDaBg998Ua/uyIJTfL6J1KT/6fbXcwL6F9gSu3+13EX/or+rkcNn8Vx5KyUCd10w== -"@tiptap/pm@^2.0.3", "@tiptap/pm@^2.6.6": - version "2.6.6" - resolved "https://registry.yarnpkg.com/@tiptap/pm/-/pm-2.6.6.tgz#8ce1956f7fb0e222cc9399bffc81349c6b23bbc0" - integrity sha512-56FGLPn3fwwUlIbLs+BO21bYfyqP9fKyZQbQyY0zWwA/AG2kOwoXaRn7FOVbjP6CylyWpFJnpRRmgn694QKHEg== +"@tiptap/pm@^2.0.3", "@tiptap/pm@^2.11.3": + version "2.11.3" + resolved "https://registry.yarnpkg.com/@tiptap/pm/-/pm-2.11.3.tgz#90a5ad7e2d49c60348b3c7bae0a24a9cbf463edb" + integrity sha512-AEpiWvYmXdELpuGGhX6lS2aU155ANwS7WbQ/+/SFqH3YIYHjgUzP8UnY6KSiEBI7a7kX4TWhG84mWrzPA3dPaw== dependencies: prosemirror-changeset "^2.2.1" prosemirror-collab "^1.3.1" - prosemirror-commands "^1.5.2" + prosemirror-commands "^1.6.2" prosemirror-dropcursor "^1.8.1" prosemirror-gapcursor "^1.3.2" prosemirror-history "^1.4.1" prosemirror-inputrules "^1.4.0" prosemirror-keymap "^1.2.2" - prosemirror-markdown "^1.13.0" + prosemirror-markdown "^1.13.1" prosemirror-menu "^1.2.4" - prosemirror-model "^1.22.2" + prosemirror-model "^1.23.0" prosemirror-schema-basic "^1.2.3" prosemirror-schema-list "^1.4.1" prosemirror-state "^1.4.3" - prosemirror-tables "^1.4.0" - prosemirror-trailing-node "^2.0.9" - prosemirror-transform "^1.9.0" - prosemirror-view "^1.33.9" + prosemirror-tables "^1.6.1" + prosemirror-trailing-node "^3.0.0" + prosemirror-transform "^1.10.2" + prosemirror-view "^1.37.0" "@tiptap/starter-kit@^2.0.3": - version "2.6.6" - resolved "https://registry.yarnpkg.com/@tiptap/starter-kit/-/starter-kit-2.6.6.tgz#a206e67b7a87fa6a10ff190a84f5d8989b85fe62" - integrity sha512-zb9xIg3WjG9AsJoyWrfqx5SL9WH7/HTdkB79jFpWtOF/Kaigo7fHFmhs2FsXtJMJlcdMTO2xeRuCYHt5ozXlhg== - dependencies: - "@tiptap/core" "^2.6.6" - "@tiptap/extension-blockquote" "^2.6.6" - "@tiptap/extension-bold" "^2.6.6" - "@tiptap/extension-bullet-list" "^2.6.6" - "@tiptap/extension-code" "^2.6.6" - "@tiptap/extension-code-block" "^2.6.6" - "@tiptap/extension-document" "^2.6.6" - "@tiptap/extension-dropcursor" "^2.6.6" - "@tiptap/extension-gapcursor" "^2.6.6" - "@tiptap/extension-hard-break" "^2.6.6" - "@tiptap/extension-heading" "^2.6.6" - "@tiptap/extension-history" "^2.6.6" - "@tiptap/extension-horizontal-rule" "^2.6.6" - "@tiptap/extension-italic" "^2.6.6" - "@tiptap/extension-list-item" "^2.6.6" - "@tiptap/extension-ordered-list" "^2.6.6" - "@tiptap/extension-paragraph" "^2.6.6" - "@tiptap/extension-strike" "^2.6.6" - "@tiptap/extension-text" "^2.6.6" - "@tiptap/pm" "^2.6.6" + version "2.11.3" + resolved "https://registry.yarnpkg.com/@tiptap/starter-kit/-/starter-kit-2.11.3.tgz#f893af2b54b42ea6bb158d2329aca1b286090808" + integrity sha512-UGKS6+TA/7yMGqHBK5S/Kxis6iy3Tw0gvVg1EkYHUmkApLJypE87wUMkIeLeD9dd5+2WkxWcYMhC9R3ByjulBg== + dependencies: + "@tiptap/core" "^2.11.3" + "@tiptap/extension-blockquote" "^2.11.3" + "@tiptap/extension-bold" "^2.11.3" + "@tiptap/extension-bullet-list" "^2.11.3" + "@tiptap/extension-code" "^2.11.3" + "@tiptap/extension-code-block" "^2.11.3" + "@tiptap/extension-document" "^2.11.3" + "@tiptap/extension-dropcursor" "^2.11.3" + "@tiptap/extension-gapcursor" "^2.11.3" + "@tiptap/extension-hard-break" "^2.11.3" + "@tiptap/extension-heading" "^2.11.3" + "@tiptap/extension-history" "^2.11.3" + "@tiptap/extension-horizontal-rule" "^2.11.3" + "@tiptap/extension-italic" "^2.11.3" + "@tiptap/extension-list-item" "^2.11.3" + "@tiptap/extension-ordered-list" "^2.11.3" + "@tiptap/extension-paragraph" "^2.11.3" + "@tiptap/extension-strike" "^2.11.3" + "@tiptap/extension-text" "^2.11.3" + "@tiptap/extension-text-style" "^2.11.3" + "@tiptap/pm" "^2.11.3" "@tiptap/suggestion@^2.0.3": - version "2.6.6" - resolved "https://registry.yarnpkg.com/@tiptap/suggestion/-/suggestion-2.6.6.tgz#acb07c410db862b58d9118199ef5ff53d3608fd6" - integrity sha512-jogG0QgGit9UtTznVnhQfNImZfQM89NR0is20yRQzC0HmD8B8f3jmGrotG63Why2oKbeoe3CpM5/5eDE/paqCA== + version "2.11.3" + resolved "https://registry.yarnpkg.com/@tiptap/suggestion/-/suggestion-2.11.3.tgz#ac22180cabf678905fa53294bcd362cede20b289" + integrity sha512-w3zTPAYGbUxrgA1kUjhCZ4H6Js5RhbAjHqvNV9zJzREC8A/aiAYfQXCwhA5pYwRNedmQx6l4AVwtHxiCHfwtwA== "@tiptap/vue-3@^2.0.3": - version "2.6.6" - resolved "https://registry.yarnpkg.com/@tiptap/vue-3/-/vue-3-2.6.6.tgz#5485a3cabeb4c1db5653ebafe77cf0a911d4bf85" - integrity sha512-oTrFF2TznkduLIUKvncOpUnm/Fp8pOQw2xmR4YOVNFWDdzO9O3b+yaiwO1ze3CAHJpZrFT82Sum8UpZn8nCH+Q== + version "2.11.3" + resolved "https://registry.yarnpkg.com/@tiptap/vue-3/-/vue-3-2.11.3.tgz#df7498117ccdb34b0ea04c9fde65c2c034ccc623" + integrity sha512-vNU9b2reXBVyVRl082TgKCra+DMtUQhaYYDXrD2YxlhNCsuGuwyIjR1pgWbHD4AeiE3X73ltmFFAlu+GsqYn3w== dependencies: - "@tiptap/extension-bubble-menu" "^2.6.6" - "@tiptap/extension-floating-menu" "^2.6.6" + "@tiptap/extension-bubble-menu" "^2.11.3" + "@tiptap/extension-floating-menu" "^2.11.3" "@types/estree@1.0.6": version "1.0.6" resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.6.tgz#628effeeae2064a1b4e79f78e81d87b7e5fc7b50" integrity sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw== +"@types/linkify-it@^5": + version "5.0.0" + resolved "https://registry.yarnpkg.com/@types/linkify-it/-/linkify-it-5.0.0.tgz#21413001973106cda1c3a9b91eedd4ccd5469d76" + integrity sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q== + +"@types/markdown-it@^14.0.0": + version "14.1.2" + resolved "https://registry.yarnpkg.com/@types/markdown-it/-/markdown-it-14.1.2.tgz#57f2532a0800067d9b934f3521429a2e8bfb4c61" + integrity sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog== + dependencies: + "@types/linkify-it" "^5" + "@types/mdurl" "^2" + +"@types/mdurl@^2": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@types/mdurl/-/mdurl-2.0.0.tgz#d43878b5b20222682163ae6f897b20447233bdfd" + integrity sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg== + "@types/web-bluetooth@^0.0.20": version "0.0.20" resolved "https://registry.yarnpkg.com/@types/web-bluetooth/-/web-bluetooth-0.0.20.tgz#f066abfcd1cbe66267cdbbf0de010d8a41b41597" @@ -678,90 +686,90 @@ resolved "https://registry.yarnpkg.com/@vitejs/plugin-vue/-/plugin-vue-2.3.4.tgz#966a6279060eb2d9d1a02ea1a331af071afdcf9e" integrity sha512-IfFNbtkbIm36O9KB8QodlwwYvTEsJb4Lll4c2IwB3VHc2gie2mSPtSzL0eYay7X2jd/2WX02FjSGTWR6OPr/zg== -"@vue/compiler-core@3.4.38": - version "3.4.38" - resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.4.38.tgz#326dfe3c92fa2b0f1dc9b39a948a231980253496" - integrity sha512-8IQOTCWnLFqfHzOGm9+P8OPSEDukgg3Huc92qSG49if/xI2SAwLHQO2qaPQbjCWPBcQoO1WYfXfTACUrWV3c5A== +"@vue/compiler-core@3.5.13": + version "3.5.13" + resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.5.13.tgz#b0ae6c4347f60c03e849a05d34e5bf747c9bda05" + integrity sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q== dependencies: - "@babel/parser" "^7.24.7" - "@vue/shared" "3.4.38" + "@babel/parser" "^7.25.3" + "@vue/shared" "3.5.13" entities "^4.5.0" estree-walker "^2.0.2" source-map-js "^1.2.0" -"@vue/compiler-dom@3.4.38": - version "3.4.38" - resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.4.38.tgz#90348fac1130e0bbd408b650635cb626b3b9df06" - integrity sha512-Osc/c7ABsHXTsETLgykcOwIxFktHfGSUDkb05V61rocEfsFDcjDLH/IHJSNJP+/Sv9KeN2Lx1V6McZzlSb9EhQ== +"@vue/compiler-dom@3.5.13": + version "3.5.13" + resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.5.13.tgz#bb1b8758dbc542b3658dda973b98a1c9311a8a58" + integrity sha512-ZOJ46sMOKUjO3e94wPdCzQ6P1Lx/vhp2RSvfaab88Ajexs0AHeV0uasYhi99WPaogmBlRHNRuly8xV75cNTMDA== dependencies: - "@vue/compiler-core" "3.4.38" - "@vue/shared" "3.4.38" + "@vue/compiler-core" "3.5.13" + "@vue/shared" "3.5.13" -"@vue/compiler-sfc@3.4.38": - version "3.4.38" - resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.4.38.tgz#954c3f6777bbbcca28771ba59b795f12f76ef188" - integrity sha512-s5QfZ+9PzPh3T5H4hsQDJtI8x7zdJaew/dCGgqZ2630XdzaZ3AD8xGZfBqpT8oaD/p2eedd+pL8tD5vvt5ZYJQ== +"@vue/compiler-sfc@3.5.13": + version "3.5.13" + resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.5.13.tgz#461f8bd343b5c06fac4189c4fef8af32dea82b46" + integrity sha512-6VdaljMpD82w6c2749Zhf5T9u5uLBWKnVue6XWxprDobftnletJ8+oel7sexFfM3qIxNmVE7LSFGTpv6obNyaQ== dependencies: - "@babel/parser" "^7.24.7" - "@vue/compiler-core" "3.4.38" - "@vue/compiler-dom" "3.4.38" - "@vue/compiler-ssr" "3.4.38" - "@vue/shared" "3.4.38" + "@babel/parser" "^7.25.3" + "@vue/compiler-core" "3.5.13" + "@vue/compiler-dom" "3.5.13" + "@vue/compiler-ssr" "3.5.13" + "@vue/shared" "3.5.13" estree-walker "^2.0.2" - magic-string "^0.30.10" - postcss "^8.4.40" + magic-string "^0.30.11" + postcss "^8.4.48" source-map-js "^1.2.0" -"@vue/compiler-ssr@3.4.38": - version "3.4.38" - resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.4.38.tgz#9ded18f6d9c8b2440039a58492cfff36fa1a7774" - integrity sha512-YXznKFQ8dxYpAz9zLuVvfcXhc31FSPFDcqr0kyujbOwNhlmaNvL2QfIy+RZeJgSn5Fk54CWoEUeW+NVBAogGaw== +"@vue/compiler-ssr@3.5.13": + version "3.5.13" + resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.5.13.tgz#e771adcca6d3d000f91a4277c972a996d07f43ba" + integrity sha512-wMH6vrYHxQl/IybKJagqbquvxpWCuVYpoUJfCqFZwa/JY1GdATAQ+TgVtgrwwMZ0D07QhA99rs/EAAWfvG6KpA== dependencies: - "@vue/compiler-dom" "3.4.38" - "@vue/shared" "3.4.38" + "@vue/compiler-dom" "3.5.13" + "@vue/shared" "3.5.13" -"@vue/devtools-api@^6.6.3": - version "6.6.3" - resolved "https://registry.yarnpkg.com/@vue/devtools-api/-/devtools-api-6.6.3.tgz#b23a588154cba8986bba82b6e1d0248bde3fd1a0" - integrity sha512-0MiMsFma/HqA6g3KLKn+AGpL1kgKhFWszC9U29NfpWK5LE7bjeXxySWJrOJ77hBz+TBrBQ7o4QJqbPbqbs8rJw== +"@vue/devtools-api@^6.6.3", "@vue/devtools-api@^6.6.4": + version "6.6.4" + resolved "https://registry.yarnpkg.com/@vue/devtools-api/-/devtools-api-6.6.4.tgz#cbe97fe0162b365edc1dba80e173f90492535343" + integrity sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g== -"@vue/reactivity@3.4.38": - version "3.4.38" - resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.4.38.tgz#ec2d549f4b831cd03d0baabf7d77e840b8536000" - integrity sha512-4vl4wMMVniLsSYYeldAKzbk72+D3hUnkw9z8lDeJacTxAkXeDAP1uE9xr2+aKIN0ipOL8EG2GPouVTH6yF7Gnw== +"@vue/reactivity@3.5.13": + version "3.5.13" + resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.5.13.tgz#b41ff2bb865e093899a22219f5b25f97b6fe155f" + integrity sha512-NaCwtw8o48B9I6L1zl2p41OHo/2Z4wqYGGIK1Khu5T7yxrn+ATOixn/Udn2m+6kZKB/J7cuT9DbWWhRxqixACg== dependencies: - "@vue/shared" "3.4.38" + "@vue/shared" "3.5.13" -"@vue/runtime-core@3.4.38": - version "3.4.38" - resolved "https://registry.yarnpkg.com/@vue/runtime-core/-/runtime-core-3.4.38.tgz#bead9085e9a1c5a446e27d74ffb450f9261cf097" - integrity sha512-21z3wA99EABtuf+O3IhdxP0iHgkBs1vuoCAsCKLVJPEjpVqvblwBnTj42vzHRlWDCyxu9ptDm7sI2ZMcWrQqlA== +"@vue/runtime-core@3.5.13": + version "3.5.13" + resolved "https://registry.yarnpkg.com/@vue/runtime-core/-/runtime-core-3.5.13.tgz#1fafa4bf0b97af0ebdd9dbfe98cd630da363a455" + integrity sha512-Fj4YRQ3Az0WTZw1sFe+QDb0aXCerigEpw418pw1HBUKFtnQHWzwojaukAs2X/c9DQz4MQ4bsXTGlcpGxU/RCIw== dependencies: - "@vue/reactivity" "3.4.38" - "@vue/shared" "3.4.38" + "@vue/reactivity" "3.5.13" + "@vue/shared" "3.5.13" -"@vue/runtime-dom@3.4.38": - version "3.4.38" - resolved "https://registry.yarnpkg.com/@vue/runtime-dom/-/runtime-dom-3.4.38.tgz#52678ba0b85f94400a0a9c8dd23ddef4dd65657d" - integrity sha512-afZzmUreU7vKwKsV17H1NDThEEmdYI+GCAK/KY1U957Ig2NATPVjCROv61R19fjZNzMmiU03n79OMnXyJVN0UA== +"@vue/runtime-dom@3.5.13": + version "3.5.13" + resolved "https://registry.yarnpkg.com/@vue/runtime-dom/-/runtime-dom-3.5.13.tgz#610fc795de9246300e8ae8865930d534e1246215" + integrity sha512-dLaj94s93NYLqjLiyFzVs9X6dWhTdAlEAciC3Moq7gzAc13VJUdCnjjRurNM6uTLFATRHexHCTu/Xp3eW6yoog== dependencies: - "@vue/reactivity" "3.4.38" - "@vue/runtime-core" "3.4.38" - "@vue/shared" "3.4.38" + "@vue/reactivity" "3.5.13" + "@vue/runtime-core" "3.5.13" + "@vue/shared" "3.5.13" csstype "^3.1.3" -"@vue/server-renderer@3.4.38": - version "3.4.38" - resolved "https://registry.yarnpkg.com/@vue/server-renderer/-/server-renderer-3.4.38.tgz#457401ef2b0f969156702061e56915acecc9fe2c" - integrity sha512-NggOTr82FbPEkkUvBm4fTGcwUY8UuTsnWC/L2YZBmvaQ4C4Jl/Ao4HHTB+l7WnFCt5M/dN3l0XLuyjzswGYVCA== +"@vue/server-renderer@3.5.13": + version "3.5.13" + resolved "https://registry.yarnpkg.com/@vue/server-renderer/-/server-renderer-3.5.13.tgz#429ead62ee51de789646c22efe908e489aad46f7" + integrity sha512-wAi4IRJV/2SAW3htkTlB+dHeRmpTiVIK1OGLWV1yeStVSebSQQOwGwIq0D3ZIoBj2C2qpgz5+vX9iEBkTdk5YA== dependencies: - "@vue/compiler-ssr" "3.4.38" - "@vue/shared" "3.4.38" + "@vue/compiler-ssr" "3.5.13" + "@vue/shared" "3.5.13" -"@vue/shared@3.4.38": - version "3.4.38" - resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.4.38.tgz#552a6770098bfd556fa3e2c686c9d3b4f4cd94c2" - integrity sha512-q0xCiLkuWWQLzVrecPb0RMsNWyxICOjPrcrwxTUEHb1fsnvni4dcuyG7RT/Ie7VPTvnjzIaWzRMUBsrqNj/hhw== +"@vue/shared@3.5.13": + version "3.5.13" + resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.5.13.tgz#87b309a6379c22b926e696893237826f64339b6f" + integrity sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ== "@vueuse/core@^10.11.0", "@vueuse/core@^10.4.1": version "10.11.1" @@ -791,9 +799,9 @@ ansi-regex@^5.0.1: integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== ansi-regex@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a" - integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== + version "6.1.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.1.0.tgz#95ec409c69619d6cb1b8b34f14b660ef28ebd654" + integrity sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA== ansi-styles@^4.0.0, ansi-styles@^4.1.0: version "4.3.0" @@ -888,14 +896,14 @@ braces@^3.0.3, braces@~3.0.2: fill-range "^7.1.1" browserslist@^4.23.3: - version "4.23.3" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.3.tgz#debb029d3c93ebc97ffbc8d9cbb03403e227c800" - integrity sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA== + version "4.24.4" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.24.4.tgz#c6b2865a3f08bcb860a0e827389003b9fe686e4b" + integrity sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A== dependencies: - caniuse-lite "^1.0.30001646" - electron-to-chromium "^1.5.4" - node-releases "^2.0.18" - update-browserslist-db "^1.1.0" + caniuse-lite "^1.0.30001688" + electron-to-chromium "^1.5.73" + node-releases "^2.0.19" + update-browserslist-db "^1.1.1" buffer@^5.5.0: version "5.7.1" @@ -910,10 +918,10 @@ camelcase-css@^2.0.1: resolved "https://registry.yarnpkg.com/camelcase-css/-/camelcase-css-2.0.1.tgz#ee978f6947914cc30c6b44741b6ed1df7f043fd5" integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA== -caniuse-lite@^1.0.30001646: - version "1.0.30001653" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001653.tgz#b8af452f8f33b1c77f122780a4aecebea0caca56" - integrity sha512-XGWQVB8wFQ2+9NZwZ10GxTYC5hk0Fa+q8cSkr0tgvMhYhMHP/QC+WTgrePMDBWiWc/pV+1ik82Al20XOK25Gcw== +caniuse-lite@^1.0.30001646, caniuse-lite@^1.0.30001688: + version "1.0.30001696" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001696.tgz#00c30a2fc11e3c98c25e5125418752af3ae2f49f" + integrity sha512-pDCPkvzfa39ehJtJ+OwGT/2yvT2SbjfHhiIW2LWOAcMQ7BzwxT/XuyUp4OTOd0XFWA6BKw0JalnBHgSi5DGJBQ== chalk@^4.1.0: version "4.1.2" @@ -923,7 +931,7 @@ chalk@^4.1.0: ansi-styles "^4.1.0" supports-color "^7.1.0" -chokidar@^3.5.3: +chokidar@^3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b" integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== @@ -983,9 +991,9 @@ commander@^9.0.0: integrity sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ== core-js@^3.1.3: - version "3.38.1" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.38.1.tgz#aa375b79a286a670388a1a363363d53677c0383e" - integrity sha512-OP35aUorbU3Zvlx7pjsFdu1rGNnD4pgw/CWoYzRY3t2EzoVT7shKHY1dlAy3f41cGIO7ZDPQimhGFTlEYkG/Hw== + version "3.40.0" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.40.0.tgz#2773f6b06877d8eda102fc42f828176437062476" + integrity sha512-7vsMc/Lty6AGnn7uFpYT56QesI5D2Y/UkgKounk87OP9Z2H9Z8kj6jzcSGAxFmUtDOS0ntK6lbQz+Nsa0Jj6mQ== crelt@^1.0.0: version "1.0.6" @@ -993,9 +1001,9 @@ crelt@^1.0.0: integrity sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g== cross-spawn@^7.0.0: - version "7.0.3" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" - integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + version "7.0.6" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f" + integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA== dependencies: path-key "^3.1.0" shebang-command "^2.0.0" @@ -1017,11 +1025,11 @@ dayjs@^1.11.11, dayjs@^1.11.13: integrity sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg== debug@~4.3.1, debug@~4.3.2: - version "4.3.6" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.6.tgz#2ab2c38fbaffebf8aa95fdfe6d88438c7a13c52b" - integrity sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg== + version "4.3.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.7.tgz#87945b4151a011d76d95a198d7111c865c360a52" + integrity sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ== dependencies: - ms "2.1.2" + ms "^2.1.3" defaults@^1.0.3: version "1.0.4" @@ -1050,10 +1058,10 @@ eastasianwidth@^0.2.0: resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== -electron-to-chromium@^1.5.4: - version "1.5.13" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.13.tgz#1abf0410c5344b2b829b7247e031f02810d442e6" - integrity sha512-lbBcvtIJ4J6sS4tb5TLp1b4LyfCdMkwStzXPyAgVgTRAsep4bvrAGaBOP7ZJtQMNJpSQ9SqG4brWOroNaQtm7Q== +electron-to-chromium@^1.5.73: + version "1.5.90" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.90.tgz#4717e5a5413f95bbb12d0af14c35057e9c65e0b6" + integrity sha512-C3PN4aydfW91Natdyd449Kw+BzhLmof6tzy5W1pFC5SpQxVXT+oyiyOG9AgYYSN9OdA/ik3YkCrpwqI8ug5Tug== emoji-regex@^8.0.0: version "8.0.0" @@ -1065,16 +1073,16 @@ emoji-regex@^9.2.2: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== -engine.io-client@~6.5.2: - version "6.5.4" - resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-6.5.4.tgz#b8bc71ed3f25d0d51d587729262486b4b33bd0d0" - integrity sha512-GeZeeRjpD2qf49cZQ0Wvh/8NJNfeXkXXcoGh+F77oEAgo9gUHwT1fCRxSNU+YEEaysOJTnsFHmM5oAcPy4ntvQ== +engine.io-client@~6.6.1: + version "6.6.3" + resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-6.6.3.tgz#815393fa24f30b8e6afa8f77ccca2f28146be6de" + integrity sha512-T0iLjnyNWahNyv/lcjS2y4oE358tVS/SYQNxYXGAJ9/GLgH4VCvOQ/mhTjqU88mLZCQgiG8RIegFHYCdVC+j5w== dependencies: "@socket.io/component-emitter" "~3.1.0" debug "~4.3.1" engine.io-parser "~5.2.1" ws "~8.17.1" - xmlhttprequest-ssl "~2.0.0" + xmlhttprequest-ssl "~2.1.1" engine.io-parser@~5.2.1: version "5.2.3" @@ -1086,41 +1094,39 @@ entities@^4.4.0, entities@^4.5.0: resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48" integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== -esbuild@^0.24.2: - version "0.24.2" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.24.2.tgz#b5b55bee7de017bff5fb8a4e3e44f2ebe2c3567d" - integrity sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA== +esbuild@^0.21.3: + version "0.21.5" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.21.5.tgz#9ca301b120922959b766360d8ac830da0d02997d" + integrity sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw== optionalDependencies: - "@esbuild/aix-ppc64" "0.24.2" - "@esbuild/android-arm" "0.24.2" - "@esbuild/android-arm64" "0.24.2" - "@esbuild/android-x64" "0.24.2" - "@esbuild/darwin-arm64" "0.24.2" - "@esbuild/darwin-x64" "0.24.2" - "@esbuild/freebsd-arm64" "0.24.2" - "@esbuild/freebsd-x64" "0.24.2" - "@esbuild/linux-arm" "0.24.2" - "@esbuild/linux-arm64" "0.24.2" - "@esbuild/linux-ia32" "0.24.2" - "@esbuild/linux-loong64" "0.24.2" - "@esbuild/linux-mips64el" "0.24.2" - "@esbuild/linux-ppc64" "0.24.2" - "@esbuild/linux-riscv64" "0.24.2" - "@esbuild/linux-s390x" "0.24.2" - "@esbuild/linux-x64" "0.24.2" - "@esbuild/netbsd-arm64" "0.24.2" - "@esbuild/netbsd-x64" "0.24.2" - "@esbuild/openbsd-arm64" "0.24.2" - "@esbuild/openbsd-x64" "0.24.2" - "@esbuild/sunos-x64" "0.24.2" - "@esbuild/win32-arm64" "0.24.2" - "@esbuild/win32-ia32" "0.24.2" - "@esbuild/win32-x64" "0.24.2" - -escalade@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.2.tgz#54076e9ab29ea5bf3d8f1ed62acffbb88272df27" - integrity sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA== + "@esbuild/aix-ppc64" "0.21.5" + "@esbuild/android-arm" "0.21.5" + "@esbuild/android-arm64" "0.21.5" + "@esbuild/android-x64" "0.21.5" + "@esbuild/darwin-arm64" "0.21.5" + "@esbuild/darwin-x64" "0.21.5" + "@esbuild/freebsd-arm64" "0.21.5" + "@esbuild/freebsd-x64" "0.21.5" + "@esbuild/linux-arm" "0.21.5" + "@esbuild/linux-arm64" "0.21.5" + "@esbuild/linux-ia32" "0.21.5" + "@esbuild/linux-loong64" "0.21.5" + "@esbuild/linux-mips64el" "0.21.5" + "@esbuild/linux-ppc64" "0.21.5" + "@esbuild/linux-riscv64" "0.21.5" + "@esbuild/linux-s390x" "0.21.5" + "@esbuild/linux-x64" "0.21.5" + "@esbuild/netbsd-x64" "0.21.5" + "@esbuild/openbsd-x64" "0.21.5" + "@esbuild/sunos-x64" "0.21.5" + "@esbuild/win32-arm64" "0.21.5" + "@esbuild/win32-ia32" "0.21.5" + "@esbuild/win32-x64" "0.21.5" + +escalade@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5" + integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== escape-string-regexp@^4.0.0: version "4.0.0" @@ -1137,21 +1143,21 @@ fast-deep-equal@^3.1.3: resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== -fast-glob@^3.3.0: - version "3.3.2" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" - integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== +fast-glob@^3.3.2: + version "3.3.3" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.3.tgz#d06d585ce8dba90a16b0505c543c3ccfb3aeb818" + integrity sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg== dependencies: "@nodelib/fs.stat" "^2.0.2" "@nodelib/fs.walk" "^1.2.3" glob-parent "^5.1.2" merge2 "^1.3.0" - micromatch "^4.0.4" + micromatch "^4.0.8" fastq@^1.6.0: - version "1.17.1" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.17.1.tgz#2a523f07a4e7b1e81a42b91b8bf2254107753b47" - integrity sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w== + version "1.18.0" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.18.0.tgz#d631d7e25faffea81887fe5ea8c9010e1b36fee0" + integrity sha512-QKHXPW0hD8g4UET03SdOdunzSouc9N4AuHdsX8XNcTsuz+yYFILVNIX4l9yHABMhiEI9Db0JTTIpu0wB+Y1QQw== dependencies: reusify "^1.0.4" @@ -1296,10 +1302,10 @@ is-binary-path@~2.1.0: dependencies: binary-extensions "^2.0.0" -is-core-module@^2.13.0: - version "2.15.1" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.15.1.tgz#a7363a25bee942fefab0de13bf6aa372c82dcc37" - integrity sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ== +is-core-module@^2.16.0: + version "2.16.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.16.1.tgz#2a98801a849f43e2add644fbb6bc6229b19a4ef4" + integrity sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w== dependencies: hasown "^2.0.2" @@ -1349,20 +1355,15 @@ jackspeak@^3.1.2: optionalDependencies: "@pkgjs/parseargs" "^0.11.0" -jiti@^1.21.0: - version "1.21.6" - resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.21.6.tgz#6c7f7398dd4b3142767f9a168af2f317a428d268" - integrity sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w== +jiti@^1.21.6: + version "1.21.7" + resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.21.7.tgz#9dd81043424a3d28458b193d965f0d18a2300ba9" + integrity sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A== -lilconfig@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.1.0.tgz#78e23ac89ebb7e1bfbf25b18043de756548e7f52" - integrity sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ== - -lilconfig@^3.0.0: - version "3.1.2" - resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-3.1.2.tgz#e4a7c3cb549e3a606c8dcc32e5ae1005e62c05cb" - integrity sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow== +lilconfig@^3.0.0, lilconfig@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-3.1.3.tgz#a1bcfd6257f9585bf5ae14ceeebb7b559025e4c4" + integrity sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw== lines-and-columns@^1.1.6: version "1.2.4" @@ -1376,10 +1377,10 @@ linkify-it@^5.0.0: dependencies: uc.micro "^2.0.0" -linkifyjs@^4.1.0: - version "4.1.3" - resolved "https://registry.yarnpkg.com/linkifyjs/-/linkifyjs-4.1.3.tgz#0edbc346428a7390a23ea2e5939f76112c9ae07f" - integrity sha512-auMesunaJ8yfkHvK4gfg1K0SaKX/6Wn9g2Aac/NwX+l5VdmFZzo/hdPGxEOETj+ryRa4/fiOPjeeKURSAJx1sg== +linkifyjs@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/linkifyjs/-/linkifyjs-4.2.0.tgz#9dd30222b9cbabec9c950e725ec00031c7fa3f08" + integrity sha512-pCj3PrQyATaoTYKHrgWRF3SJwsm61udVh+vuls/Rl6SptiDhgE7ziUIudAedRY9QEfynmM7/RmLEfPUyw1HPCw== lodash.castarray@^4.4.0: version "4.4.0" @@ -1414,10 +1415,10 @@ lucide-vue-next@^0.383.0: resolved "https://registry.yarnpkg.com/lucide-vue-next/-/lucide-vue-next-0.383.0.tgz#7222eea85c185634ceb6d494d5153a6868805a07" integrity sha512-paQmd2cHAye7Zl/lA0avZN2efZxFkMehfoori1BiHKX//KQG4DVuy00yl4YHVQ6h1B4EsR+QDRCpVUtwvKUBRw== -magic-string@^0.30.10: - version "0.30.11" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.11.tgz#301a6f93b3e8c2cb13ac1a7a673492c0dfd12954" - integrity sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A== +magic-string@^0.30.11: + version "0.30.17" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.17.tgz#450a449673d2460e5bbcfba9a61916a1714c7453" + integrity sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA== dependencies: "@jridgewell/sourcemap-codec" "^1.5.0" @@ -1443,7 +1444,7 @@ merge2@^1.3.0: resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== -micromatch@^4.0.4, micromatch@^4.0.5: +micromatch@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202" integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== @@ -1473,10 +1474,10 @@ minimatch@^9.0.4: resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707" integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== -ms@2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== +ms@^2.1.3: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== mz@^2.7.0: version "2.7.0" @@ -1487,25 +1488,20 @@ mz@^2.7.0: object-assign "^4.0.1" thenify-all "^1.0.0" -nanoid@^3.3.7: - version "3.3.7" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8" - integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== - nanoid@^3.3.8: version "3.3.8" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.8.tgz#b1be3030bee36aaff18bacb375e5cce521684baf" integrity sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w== nanoid@^5.0.7: - version "5.0.7" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-5.0.7.tgz#6452e8c5a816861fd9d2b898399f7e5fd6944cc6" - integrity sha512-oLxFY2gd2IqnjcYyOXD8XGCftpGtZP2AbHbOkthDkvRywH5ayNtPVy9YlOPcHckXzbLTCHpkb7FB+yuxKV13pQ== + version "5.0.9" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-5.0.9.tgz#977dcbaac055430ce7b1e19cf0130cea91a20e50" + integrity sha512-Aooyr6MXU6HpvvWXKoVoXwKMs/KyVakWwg7xQfv5/S/RIgJMy0Ifa45H9qqYy7pTCszrHzP21Uk4PZq2HpEM8Q== -node-releases@^2.0.18: - version "2.0.18" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.18.tgz#f010e8d35e2fe8d6b2944f03f70213ecedc4ca3f" - integrity sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g== +node-releases@^2.0.19: + version "2.0.19" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.19.tgz#9e445a52950951ec4d177d843af370b411caf314" + integrity sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw== normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" @@ -1555,9 +1551,9 @@ orderedmap@^2.0.0: integrity sha512-TvAWxi0nDe1j/rtMcWcIj94+Ffe6n7zhow33h40SKxmsmozs6dz/e+EajymfoFcHd7sxNn8yHM8839uixMOV6g== package-json-from-dist@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz#e501cd3094b278495eb4258d4c9f6d5ac3019f00" - integrity sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw== + version "1.0.1" + resolved "https://registry.yarnpkg.com/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz#4f1471a010827a86f94cfd9b0727e36d267de505" + integrity sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw== path-key@^3.1.0: version "3.1.1" @@ -1577,12 +1573,7 @@ path-scurry@^1.11.1: lru-cache "^10.2.0" minipass "^5.0.0 || ^6.0.2 || ^7.0.0" -picocolors@^1.0.0, picocolors@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.1.tgz#a8ad579b571952f0e5d25892de5445bcfe25aaa1" - integrity sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew== - -picocolors@^1.1.1: +picocolors@^1.0.1, picocolors@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== @@ -1598,9 +1589,9 @@ pify@^2.3.0: integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== pinia@^2.1.7: - version "2.2.2" - resolved "https://registry.yarnpkg.com/pinia/-/pinia-2.2.2.tgz#dcf576c9a778187d1542c5e6a9f8b8cd5b6aea14" - integrity sha512-ja2XqFWZC36mupU4z1ZzxeTApV7DOw44cV4dhQ9sGwun+N89v/XP7+j7q6TanS1u1tdbK4r+1BUx7heMaIdagA== + version "2.3.1" + resolved "https://registry.yarnpkg.com/pinia/-/pinia-2.3.1.tgz#54c476675b72f5abcfafa24a7582531ea8c23d94" + integrity sha512-khUlZSwt9xXCaTbbxFYBKDc/bWAGWJjOgvxETwkTN7KRm66EeT1ZdZj6i2ceh9sP2Pzqsbc704r2yngBrxBVug== dependencies: "@vue/devtools-api" "^6.6.3" vue-demi "^0.14.10" @@ -1626,7 +1617,7 @@ postcss-js@^4.0.1: dependencies: camelcase-css "^2.0.1" -postcss-load-config@^4.0.1: +postcss-load-config@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-4.0.2.tgz#7159dcf626118d33e299f485d6afe4aff7c4a3e3" integrity sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ== @@ -1634,7 +1625,7 @@ postcss-load-config@^4.0.1: lilconfig "^3.0.0" yaml "^2.3.4" -postcss-nested@^6.0.1: +postcss-nested@^6.2.0: version "6.2.0" resolved "https://registry.yarnpkg.com/postcss-nested/-/postcss-nested-6.2.0.tgz#4c2d22ab5f20b9cb61e2c5c5915950784d068131" integrity sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ== @@ -1649,7 +1640,7 @@ postcss-selector-parser@6.0.10: cssesc "^3.0.0" util-deprecate "^1.0.2" -postcss-selector-parser@^6.0.11, postcss-selector-parser@^6.1.1: +postcss-selector-parser@^6.1.1, postcss-selector-parser@^6.1.2: version "6.1.2" resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz#27ecb41fb0e3b6ba7a1ec84fff347f734c7929de" integrity sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg== @@ -1662,16 +1653,7 @@ postcss-value-parser@^4.0.0, postcss-value-parser@^4.2.0: resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== -postcss@^8.4.23, postcss@^8.4.40, postcss@^8.4.5: - version "8.4.41" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.41.tgz#d6104d3ba272d882fe18fc07d15dc2da62fa2681" - integrity sha512-TesUflQ0WKZqAvg52PWL6kHgLKP6xB6heTOdoYM0Wt2UHyxNa4K25EZZMgKns3BH1RLVbZCREPpLY0rhnNoHVQ== - dependencies: - nanoid "^3.3.7" - picocolors "^1.0.1" - source-map-js "^1.2.0" - -postcss@^8.4.49: +postcss@^8.4.43, postcss@^8.4.47, postcss@^8.4.48, postcss@^8.4.5: version "8.5.1" resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.1.tgz#e2272a1f8a807fafa413218245630b5db10a3214" integrity sha512-6oz2beyjc5VMn/KV1pPw8fliQkhBXrVn1Z3TVyqZxU8kZpzEKhBdmCFqI6ZbmGtamQvQGuU1sgPTk8ZrXDD7jQ== @@ -1681,9 +1663,9 @@ postcss@^8.4.49: source-map-js "^1.2.1" prettier@^3.3.2: - version "3.3.3" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.3.3.tgz#30c54fe0be0d8d12e6ae61dbb10109ea00d53105" - integrity sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew== + version "3.4.2" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.4.2.tgz#a5ce1fb522a588bf2b78ca44c6e6fe5aa5a2b13f" + integrity sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ== prosemirror-changeset@^2.2.1: version "2.2.1" @@ -1699,14 +1681,14 @@ prosemirror-collab@^1.3.1: dependencies: prosemirror-state "^1.0.0" -prosemirror-commands@^1.0.0, prosemirror-commands@^1.5.2: - version "1.6.0" - resolved "https://registry.yarnpkg.com/prosemirror-commands/-/prosemirror-commands-1.6.0.tgz#b79f034ed371576e7bf83ddd4ede689c8ccbd9ab" - integrity sha512-xn1U/g36OqXn2tn5nGmvnnimAj/g1pUx2ypJJIe8WkVX83WyJVC5LTARaxZa2AtQRwntu9Jc5zXs9gL9svp/mg== +prosemirror-commands@^1.0.0, prosemirror-commands@^1.6.2: + version "1.6.2" + resolved "https://registry.yarnpkg.com/prosemirror-commands/-/prosemirror-commands-1.6.2.tgz#d9cf6654912442cff47daa1677eb43ebd0b1f117" + integrity sha512-0nDHH++qcf/BuPLYvmqZTUUsPJUCPBUXt0J1ErTcDIS369CTp773itzLGIgIXG4LJXOlwYCr44+Mh4ii6MP1QA== dependencies: prosemirror-model "^1.0.0" prosemirror-state "^1.0.0" - prosemirror-transform "^1.0.0" + prosemirror-transform "^1.10.2" prosemirror-dropcursor@^1.8.1: version "1.8.1" @@ -1745,7 +1727,7 @@ prosemirror-inputrules@^1.4.0: prosemirror-state "^1.0.0" prosemirror-transform "^1.0.0" -prosemirror-keymap@^1.0.0, prosemirror-keymap@^1.1.2, prosemirror-keymap@^1.2.2: +prosemirror-keymap@^1.0.0, prosemirror-keymap@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/prosemirror-keymap/-/prosemirror-keymap-1.2.2.tgz#14a54763a29c7b2704f561088ccf3384d14eb77e" integrity sha512-EAlXoksqC6Vbocqc0GtzCruZEzYgrn+iiGnNjsJsH4mrnIGex4qbLdWWNza3AW5W36ZRrlBID0eM6bdKH4OStQ== @@ -1753,11 +1735,12 @@ prosemirror-keymap@^1.0.0, prosemirror-keymap@^1.1.2, prosemirror-keymap@^1.2.2: prosemirror-state "^1.0.0" w3c-keyname "^2.2.0" -prosemirror-markdown@^1.13.0: - version "1.13.0" - resolved "https://registry.yarnpkg.com/prosemirror-markdown/-/prosemirror-markdown-1.13.0.tgz#67ebfa40af48a22d1e4ed6cad2e29851eb61e649" - integrity sha512-UziddX3ZYSYibgx8042hfGKmukq5Aljp2qoBiJRejD/8MH70siQNz5RB1TrdTPheqLMy4aCe4GYNF10/3lQS5g== +prosemirror-markdown@^1.13.1: + version "1.13.1" + resolved "https://registry.yarnpkg.com/prosemirror-markdown/-/prosemirror-markdown-1.13.1.tgz#23feb6652dacb3dd78ffd8f131da37c20e4e4cf8" + integrity sha512-Sl+oMfMtAjWtlcZoj/5L/Q39MpEnVZ840Xo330WJWUvgyhNmLBLN7MsHn07s53nG/KImevWHSE6fEj4q/GihHw== dependencies: + "@types/markdown-it" "^14.0.0" markdown-it "^14.0.0" prosemirror-model "^1.20.0" @@ -1771,10 +1754,10 @@ prosemirror-menu@^1.2.4: prosemirror-history "^1.0.0" prosemirror-state "^1.0.0" -prosemirror-model@^1.0.0, prosemirror-model@^1.19.0, prosemirror-model@^1.20.0, prosemirror-model@^1.21.0, prosemirror-model@^1.22.2, prosemirror-model@^1.8.1: - version "1.22.3" - resolved "https://registry.yarnpkg.com/prosemirror-model/-/prosemirror-model-1.22.3.tgz#52fdf5897f348b0f07f64bea89156d90afdf645a" - integrity sha512-V4XCysitErI+i0rKFILGt/xClnFJaohe/wrrlT2NSZ+zk8ggQfDH4x2wNK7Gm0Hp4CIoWizvXFP7L9KMaCuI0Q== +prosemirror-model@^1.0.0, prosemirror-model@^1.19.0, prosemirror-model@^1.20.0, prosemirror-model@^1.21.0, prosemirror-model@^1.23.0, prosemirror-model@^1.24.1: + version "1.24.1" + resolved "https://registry.yarnpkg.com/prosemirror-model/-/prosemirror-model-1.24.1.tgz#b445e4f9b9cfc8c1a699215057b506842ebff1a9" + integrity sha512-YM053N+vTThzlWJ/AtPtF1j0ebO36nvbmDy4U7qA2XQB8JVaQp1FmB9Jhrps8s+z+uxhhVTny4m20ptUvhk0Mg== dependencies: orderedmap "^2.0.0" @@ -1786,15 +1769,15 @@ prosemirror-schema-basic@^1.2.3: prosemirror-model "^1.19.0" prosemirror-schema-list@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/prosemirror-schema-list/-/prosemirror-schema-list-1.4.1.tgz#78b8d25531db48ca9688836dbde50e13ac19a4a1" - integrity sha512-jbDyaP/6AFfDfu70VzySsD75Om2t3sXTOdl5+31Wlxlg62td1haUpty/ybajSfJ1pkGadlOfwQq9kgW5IMo1Rg== + version "1.5.0" + resolved "https://registry.yarnpkg.com/prosemirror-schema-list/-/prosemirror-schema-list-1.5.0.tgz#f05ddbe2e71efc9157a0dbedf80761c08bda5192" + integrity sha512-gg1tAfH1sqpECdhIHOA/aLg2VH3ROKBWQ4m8Qp9mBKrOxQRW61zc+gMCI8nh22gnBzd1t2u1/NPLmO3nAa3ssg== dependencies: prosemirror-model "^1.0.0" prosemirror-state "^1.0.0" prosemirror-transform "^1.7.3" -prosemirror-state@^1.0.0, prosemirror-state@^1.2.2, prosemirror-state@^1.3.1, prosemirror-state@^1.4.3: +prosemirror-state@^1.0.0, prosemirror-state@^1.2.2, prosemirror-state@^1.4.3: version "1.4.3" resolved "https://registry.yarnpkg.com/prosemirror-state/-/prosemirror-state-1.4.3.tgz#94aecf3ffd54ec37e87aa7179d13508da181a080" integrity sha512-goFKORVbvPuAQaXhpbemJFRKJ2aixr+AZMGiquiqKxaucC6hlpHNZHWgz5R7dS4roHiwq9vDctE//CZ++o0W1Q== @@ -1803,36 +1786,36 @@ prosemirror-state@^1.0.0, prosemirror-state@^1.2.2, prosemirror-state@^1.3.1, pr prosemirror-transform "^1.0.0" prosemirror-view "^1.27.0" -prosemirror-tables@^1.4.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/prosemirror-tables/-/prosemirror-tables-1.5.0.tgz#3ba1ea3d53852505cc0d2037ce386973bb639a7d" - integrity sha512-VMx4zlYWm7aBlZ5xtfJHpqa3Xgu3b7srV54fXYnXgsAcIGRqKSrhiK3f89omzzgaAgAtDOV4ImXnLKhVfheVNQ== +prosemirror-tables@^1.6.1: + version "1.6.2" + resolved "https://registry.yarnpkg.com/prosemirror-tables/-/prosemirror-tables-1.6.2.tgz#cec9e9ac6ecf81d67147c19ab39125d56c8351ae" + integrity sha512-97dKocVLrEVTQjZ4GBLdrrMw7Gv3no8H8yMwf5IRM9OoHrzbWpcH5jJxYgNQIRCtdIqwDctT1HdMHrGTiwp1dQ== dependencies: - prosemirror-keymap "^1.1.2" - prosemirror-model "^1.8.1" - prosemirror-state "^1.3.1" - prosemirror-transform "^1.2.1" - prosemirror-view "^1.13.3" + prosemirror-keymap "^1.2.2" + prosemirror-model "^1.24.1" + prosemirror-state "^1.4.3" + prosemirror-transform "^1.10.2" + prosemirror-view "^1.37.1" -prosemirror-trailing-node@^2.0.9: - version "2.0.9" - resolved "https://registry.yarnpkg.com/prosemirror-trailing-node/-/prosemirror-trailing-node-2.0.9.tgz#a087e6d1372e888cd3e57c977507b6b85dc658e4" - integrity sha512-YvyIn3/UaLFlFKrlJB6cObvUhmwFNZVhy1Q8OpW/avoTbD/Y7H5EcjK4AZFKhmuS6/N6WkGgt7gWtBWDnmFvHg== +prosemirror-trailing-node@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/prosemirror-trailing-node/-/prosemirror-trailing-node-3.0.0.tgz#5bc223d4fc1e8d9145e4079ec77a932b54e19e04" + integrity sha512-xiun5/3q0w5eRnGYfNlW1uU9W6x5MoFKWwq/0TIRgt09lv7Hcser2QYV8t4muXbEr+Fwo0geYn79Xs4GKywrRQ== dependencies: - "@remirror/core-constants" "^2.0.2" + "@remirror/core-constants" "3.0.0" escape-string-regexp "^4.0.0" -prosemirror-transform@^1.0.0, prosemirror-transform@^1.1.0, prosemirror-transform@^1.2.1, prosemirror-transform@^1.7.3, prosemirror-transform@^1.9.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/prosemirror-transform/-/prosemirror-transform-1.10.0.tgz#2211ddcb13f12e4e530de97c077f82ab46177b0c" - integrity sha512-9UOgFSgN6Gj2ekQH5CTDJ8Rp/fnKR2IkYfGdzzp5zQMFsS4zDllLVx/+jGcX86YlACpG7UR5fwAXiWzxqWtBTg== +prosemirror-transform@^1.0.0, prosemirror-transform@^1.1.0, prosemirror-transform@^1.10.2, prosemirror-transform@^1.7.3: + version "1.10.2" + resolved "https://registry.yarnpkg.com/prosemirror-transform/-/prosemirror-transform-1.10.2.tgz#8ebac4e305b586cd96595aa028118c9191bbf052" + integrity sha512-2iUq0wv2iRoJO/zj5mv8uDUriOHWzXRnOTVgCzSXnktS/2iQRa3UUQwVlkBlYZFtygw6Nh1+X4mGqoYBINn5KQ== dependencies: prosemirror-model "^1.21.0" -prosemirror-view@^1.0.0, prosemirror-view@^1.1.0, prosemirror-view@^1.13.3, prosemirror-view@^1.27.0, prosemirror-view@^1.31.0, prosemirror-view@^1.33.9: - version "1.34.1" - resolved "https://registry.yarnpkg.com/prosemirror-view/-/prosemirror-view-1.34.1.tgz#5136cf7a4aed8ab8b7d4785a070bb58fd0751239" - integrity sha512-KS2xmqrAM09h3SLu1S2pNO/ZoIP38qkTJ6KFd7+BeSfmX/ek0n5yOfGuiTZjFNTC8GOsEIUa1tHxt+2FMu3yWQ== +prosemirror-view@^1.0.0, prosemirror-view@^1.1.0, prosemirror-view@^1.27.0, prosemirror-view@^1.31.0, prosemirror-view@^1.37.0, prosemirror-view@^1.37.1: + version "1.37.2" + resolved "https://registry.yarnpkg.com/prosemirror-view/-/prosemirror-view-1.37.2.tgz#e16b92611c6d0f30695606724dc4a9575ce7ca6b" + integrity sha512-ApcyrfV/cRcaL65on7TQcfWElwLyOgIjnIynfAuV+fIdlpbSvSWRwfuPaH7T5mo4AbO/FID29qOtjiDIKGWyog== dependencies: prosemirror-model "^1.20.0" prosemirror-state "^1.0.0" @@ -1849,9 +1832,9 @@ queue-microtask@^1.2.2: integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== radix-vue@^1.5.3: - version "1.9.5" - resolved "https://registry.yarnpkg.com/radix-vue/-/radix-vue-1.9.5.tgz#aca978188277b7fe084fbb69b90fb13a565aea93" - integrity sha512-vtCq+WDAZj5BQtJiChGf/oC7w3y7jaod3agcntgph7fD6aqdcghLZYcUWdgT/XNJs2bEsk+3cjK3ONPRNeFcuQ== + version "1.9.13" + resolved "https://registry.yarnpkg.com/radix-vue/-/radix-vue-1.9.13.tgz#8f79ce2fd70cada8869716cf1a0de8b12b156b07" + integrity sha512-wk0G69vRDU5TDmhYHZv5Y4j905CLfnvcsFB+CXAbXRuQIl5fUCmOWSOukKhj0MT9YRsW5ujZUjtDF0Ou/hg+8Q== dependencies: "@floating-ui/dom" "^1.6.7" "@floating-ui/vue" "^1.1.0" @@ -1888,12 +1871,12 @@ readdirp@~3.6.0: dependencies: picomatch "^2.2.1" -resolve@^1.1.7, resolve@^1.22.2: - version "1.22.8" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" - integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== +resolve@^1.1.7, resolve@^1.22.8: + version "1.22.10" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.10.tgz#b663e83ffb09bbf2386944736baae803029b8b39" + integrity sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w== dependencies: - is-core-module "^2.13.0" + is-core-module "^2.16.0" path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" @@ -1910,7 +1893,7 @@ reusify@^1.0.4: resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== -rollup@^4.23.0: +rollup@^4.20.0: version "4.32.1" resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.32.1.tgz#95309604d92c3d21cbf06c3ee46a098209ce13a4" integrity sha512-z+aeEsOeEa3mEbS1Tjl6sAZ8NE3+AalQz1RJGj81M+fizusbdDMoEJwdJNHfaB40Scr4qNu+welOfes7maKonA== @@ -1985,13 +1968,13 @@ signal-exit@^4.0.1: integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== socket.io-client@^4.5.1: - version "4.7.5" - resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-4.7.5.tgz#919be76916989758bdc20eec63f7ee0ae45c05b7" - integrity sha512-sJ/tqHOCe7Z50JCBCXrsY3I2k03iOiUe+tj1OmKeD2lXPiGH/RUCdTZFoqVyN7l1MnpIzPrGtLcijffmeouNlQ== + version "4.8.1" + resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-4.8.1.tgz#1941eca135a5490b94281d0323fe2a35f6f291cb" + integrity sha512-hJVXfu3E28NmzGk8o1sHhN3om52tRvwYeidbj7xKy2eIIse5IoKX3USlS6Tqt3BHAtflLIkCQBkzVrEEfWUyYQ== dependencies: "@socket.io/component-emitter" "~3.1.0" debug "~4.3.2" - engine.io-client "~6.5.2" + engine.io-client "~6.6.1" socket.io-parser "~4.2.4" socket.io-parser@~4.2.4: @@ -2002,18 +1985,12 @@ socket.io-parser@~4.2.4: "@socket.io/component-emitter" "~3.1.0" debug "~4.3.1" -source-map-js@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.0.tgz#16b809c162517b5b8c3e7dcd315a2a5c2612b2af" - integrity sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg== - -source-map-js@^1.2.1: +source-map-js@^1.2.0, source-map-js@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46" integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA== "string-width-cjs@npm:string-width@^4.2.0", string-width@^4.1.0: - name string-width-cjs version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -2039,7 +2016,6 @@ string_decoder@^1.1.1: safe-buffer "~5.2.0" "strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: - name strip-ansi-cjs version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== @@ -2053,7 +2029,7 @@ strip-ansi@^7.0.1: dependencies: ansi-regex "^6.0.1" -sucrase@^3.32.0: +sucrase@^3.35.0: version "3.35.0" resolved "https://registry.yarnpkg.com/sucrase/-/sucrase-3.35.0.tgz#57f17a3d7e19b36d8995f06679d121be914ae263" integrity sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA== @@ -2079,32 +2055,32 @@ supports-preserve-symlinks-flag@^1.0.0: integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== tailwindcss@^3.0.15: - version "3.4.10" - resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.4.10.tgz#70442d9aeb78758d1f911af29af8255ecdb8ffef" - integrity sha512-KWZkVPm7yJRhdu4SRSl9d4AK2wM3a50UsvgHZO7xY77NQr2V+fIrEuoDGQcbvswWvFGbS2f6e+jC/6WJm1Dl0w== + version "3.4.17" + resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.4.17.tgz#ae8406c0f96696a631c790768ff319d46d5e5a63" + integrity sha512-w33E2aCvSDP0tW9RZuNXadXlkHXqFzSkQew/aIa2i/Sj8fThxwovwlXHSPXTbAHwEIhBFXAedUhP2tueAKP8Og== dependencies: "@alloc/quick-lru" "^5.2.0" arg "^5.0.2" - chokidar "^3.5.3" + chokidar "^3.6.0" didyoumean "^1.2.2" dlv "^1.1.3" - fast-glob "^3.3.0" + fast-glob "^3.3.2" glob-parent "^6.0.2" is-glob "^4.0.3" - jiti "^1.21.0" - lilconfig "^2.1.0" - micromatch "^4.0.5" + jiti "^1.21.6" + lilconfig "^3.1.3" + micromatch "^4.0.8" normalize-path "^3.0.0" object-hash "^3.0.0" - picocolors "^1.0.0" - postcss "^8.4.23" + picocolors "^1.1.1" + postcss "^8.4.47" postcss-import "^15.1.0" postcss-js "^4.0.1" - postcss-load-config "^4.0.1" - postcss-nested "^6.0.1" - postcss-selector-parser "^6.0.11" - resolve "^1.22.2" - sucrase "^3.32.0" + postcss-load-config "^4.0.2" + postcss-nested "^6.2.0" + postcss-selector-parser "^6.1.2" + resolve "^1.22.8" + sucrase "^3.35.0" thenify-all@^1.0.0: version "1.6.0" @@ -2127,11 +2103,6 @@ tippy.js@^6.3.7: dependencies: "@popperjs/core" "^2.9.0" -to-fast-properties@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" - integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== - to-regex-range@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" @@ -2144,10 +2115,10 @@ ts-interface-checker@^0.1.9: resolved "https://registry.yarnpkg.com/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz#784fd3d679722bc103b1b4b8030bcddb5db2a699" integrity sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA== -tslib@^2.0.0, tslib@^2.4.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.7.0.tgz#d9b40c5c40ab59e8738f297df3087bf1a2690c01" - integrity sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA== +tslib@^2.0.0, tslib@^2.8.0: + version "2.8.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f" + integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== typescript@^5.0.2: version "5.7.3" @@ -2159,27 +2130,27 @@ uc.micro@^2.0.0, uc.micro@^2.1.0: resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-2.1.0.tgz#f8d3f7d0ec4c3dea35a7e3c8efa4cb8b45c9e7ee" integrity sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A== -update-browserslist-db@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz#7ca61c0d8650766090728046e416a8cde682859e" - integrity sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ== +update-browserslist-db@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.2.tgz#97e9c96ab0ae7bcac08e9ae5151d26e6bc6b5580" + integrity sha512-PPypAm5qvlD7XMZC3BujecnaOxwhrtoFR+Dqkk5Aa/6DssiH0ibKoketaj9w8LP7Bont1rYeoV5plxD7RTEPRg== dependencies: - escalade "^3.1.2" - picocolors "^1.0.1" + escalade "^3.2.0" + picocolors "^1.1.1" util-deprecate@^1.0.1, util-deprecate@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== -vite@^6.0.11: - version "6.0.11" - resolved "https://registry.yarnpkg.com/vite/-/vite-6.0.11.tgz#224497e93e940b34c3357c9ebf2ec20803091ed8" - integrity sha512-4VL9mQPKoHy4+FE0NnRE/kbY51TOfaknxAjt3fJbGJxhIpBZiqVzlZDEesWWsuREXHwNdAoOFZ9MkPEVXczHwg== +vite@^5: + version "5.4.14" + resolved "https://registry.yarnpkg.com/vite/-/vite-5.4.14.tgz#ff8255edb02134df180dcfca1916c37a6abe8408" + integrity sha512-EK5cY7Q1D8JNhSaPKVK4pwBFvaTmZxEnoKXLG/U9gmdDcihQGNzFlgIvaxezFR4glP1LsuiedwMBqCXH3wZccA== dependencies: - esbuild "^0.24.2" - postcss "^8.4.49" - rollup "^4.23.0" + esbuild "^0.21.3" + postcss "^8.4.43" + rollup "^4.20.0" optionalDependencies: fsevents "~2.3.3" @@ -2189,22 +2160,22 @@ vue-demi@>=0.13.0, vue-demi@>=0.14.8, vue-demi@^0.14.10: integrity sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg== vue-router@^4.0.12: - version "4.4.3" - resolved "https://registry.yarnpkg.com/vue-router/-/vue-router-4.4.3.tgz#58a39dc804632bfb6d26f052aa8f6718bd130299" - integrity sha512-sv6wmNKx2j3aqJQDMxLFzs/u/mjA9Z5LCgy6BE0f7yFWMjrPLnS/sPNn8ARY/FXw6byV18EFutn5lTO6+UsV5A== + version "4.5.0" + resolved "https://registry.yarnpkg.com/vue-router/-/vue-router-4.5.0.tgz#58fc5fe374e10b6018f910328f756c3dae081f14" + integrity sha512-HDuk+PuH5monfNuY+ct49mNmkCRK4xJAV9Ts4z9UFc4rzdDnxQLyCMGGc8pKhZhHTVzfanpNwB/lwqevcBwI4w== dependencies: - "@vue/devtools-api" "^6.6.3" + "@vue/devtools-api" "^6.6.4" vue@^3.2.25: - version "3.4.38" - resolved "https://registry.yarnpkg.com/vue/-/vue-3.4.38.tgz#0ccbb64ed03ef3c4ab73e540793290b18e7c4236" - integrity sha512-f0ZgN+mZ5KFgVv9wz0f4OgVKukoXtS3nwET4c2vLBGQR50aI8G0cqbFtLlX9Yiyg3LFGBitruPHt2PxwTduJEw== + version "3.5.13" + resolved "https://registry.yarnpkg.com/vue/-/vue-3.5.13.tgz#9f760a1a982b09c0c04a867903fc339c9f29ec0a" + integrity sha512-wmeiSMxkZCSc+PM2w2VRsOYAZC8GdipNFRTsLSfodVqI9mbejKeXEGr8SckuLnrQPGe3oJN5c3K0vpoU9q/wCQ== dependencies: - "@vue/compiler-dom" "3.4.38" - "@vue/compiler-sfc" "3.4.38" - "@vue/runtime-dom" "3.4.38" - "@vue/server-renderer" "3.4.38" - "@vue/shared" "3.4.38" + "@vue/compiler-dom" "3.5.13" + "@vue/compiler-sfc" "3.5.13" + "@vue/runtime-dom" "3.5.13" + "@vue/server-renderer" "3.5.13" + "@vue/shared" "3.5.13" w3c-keyname@^2.2.0: version "2.2.8" @@ -2248,12 +2219,12 @@ ws@~8.17.1: resolved "https://registry.yarnpkg.com/ws/-/ws-8.17.1.tgz#9293da530bb548febc95371d90f9c878727d919b" integrity sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ== -xmlhttprequest-ssl@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.0.0.tgz#91360c86b914e67f44dce769180027c0da618c67" - integrity sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A== +xmlhttprequest-ssl@~2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.1.2.tgz#e9e8023b3f29ef34b97a859f584c5e6c61418e23" + integrity sha512-TEU+nJVUUnA4CYJFLvK5X9AOeH4KvDvhIfm0vV1GaQRtchnG0hgK5p8hw/xjv8cunWYCsiPCSDzObPyhEwq3KQ== yaml@^2.3.4: - version "2.5.0" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.5.0.tgz#c6165a721cf8000e91c36490a41d7be25176cf5d" - integrity sha512-2wWLbGbYDiSqqIKoPjar3MPgB94ErzCtrNE1FdqGuaO0pi2JGjmE8aW8TDZwzU7vuxcGRdL/4gPQwQ7hD5AMSw== + version "2.7.0" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.7.0.tgz#aef9bb617a64c937a9a748803786ad8d3ffe1e98" + integrity sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA== From a47f5051461ed69679eafd613747514a109f84ed Mon Sep 17 00:00:00 2001 From: krantheman Date: Thu, 30 Jan 2025 13:20:58 +0530 Subject: [PATCH 15/69] feat(Domains): add styling to listview --- frontend/src/pages/dashboard/Domains.vue | 45 ++++++++++++++++++++++-- 1 file changed, 43 insertions(+), 2 deletions(-) diff --git a/frontend/src/pages/dashboard/Domains.vue b/frontend/src/pages/dashboard/Domains.vue index 897f76d9..bb9125a0 100644 --- a/frontend/src/pages/dashboard/Domains.vue +++ b/frontend/src/pages/dashboard/Domains.vue @@ -13,7 +13,36 @@ :rows="domains?.data || []" :options="LIST_OPTIONS" row-key="name" - /> + > + + + + + + + + + + + + @@ -21,7 +50,19 @@ diff --git a/frontend/src/pages/dashboard/Domain.vue b/frontend/src/pages/dashboard/Domain.vue index 760b4675..37c5ce72 100644 --- a/frontend/src/pages/dashboard/Domain.vue +++ b/frontend/src/pages/dashboard/Domain.vue @@ -32,34 +32,41 @@ :disabled="true" /> -
-
+
- - - + + + + + + + + +
@@ -86,6 +93,7 @@ import { createDocumentResource, } from 'frappe-ui' import { raiseToast } from '@/utils' +import HorizontalFormControl from '@/components/Controls/HorizontalFormControl.vue' const router = useRouter() From d383bf49223415602b8543a6974205308837a286 Mon Sep 17 00:00:00 2001 From: krantheman Date: Thu, 30 Jan 2025 15:57:53 +0530 Subject: [PATCH 18/69] refactor(Domain): save doc using button --- frontend/src/pages/dashboard/Domain.vue | 36 ++++++++++++------------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/frontend/src/pages/dashboard/Domain.vue b/frontend/src/pages/dashboard/Domain.vue index 37c5ce72..c6db751f 100644 --- a/frontend/src/pages/dashboard/Domain.vue +++ b/frontend/src/pages/dashboard/Domain.vue @@ -4,18 +4,21 @@ class="sticky top-0 z-10 flex items-center justify-between border-b bg-white px-3 py-2.5 sm:px-5" > - +
+ +
- + @@ -59,11 +57,8 @@ max="7" v-model="domain.doc.newsletter_retention" @update:modelValue=" - domain.setValueDebounced.submit({ - newsletter_retention: Number( - domain.doc.newsletter_retention - ), - }) + domain.doc.newsletter_retention = + +domain.doc.newsletter_retention " /> @@ -85,6 +80,7 @@ diff --git a/mail/mail/doctype/mail_domain/mail_domain.py b/mail/mail/doctype/mail_domain/mail_domain.py index d2e4a5f7..c149de69 100644 --- a/mail/mail/doctype/mail_domain/mail_domain.py +++ b/mail/mail/doctype/mail_domain/mail_domain.py @@ -126,7 +126,7 @@ def refresh_dns_records(self, do_not_save: bool = False) -> None: frappe.msgprint(_("DNS Records refreshed successfully."), indicator="green", alert=True) @frappe.whitelist() - def verify_dns_records(self, do_not_save: bool = False) -> None: + def verify_dns_records(self, do_not_save: bool = False) -> 1 | 0: """Verifies the DNS Records.""" if not has_permission(self, "write"): @@ -151,6 +151,8 @@ def verify_dns_records(self, do_not_save: bool = False) -> None: if not do_not_save: self.save(ignore_permissions=True) + return self.is_verified + @frappe.whitelist() def rotate_dkim_keys(self) -> None: """Rotates the DKIM Keys.""" From 34433a6574df456bd5cfd59d812cad7794092d68 Mon Sep 17 00:00:00 2001 From: krantheman Date: Thu, 30 Jan 2025 17:31:18 +0530 Subject: [PATCH 20/69] feat(Domain): add confirmation dialog --- .../Controls/HorizontalFormControl.vue | 2 +- frontend/src/pages/dashboard/Domain.vue | 46 +++++++++++++++++-- 2 files changed, 43 insertions(+), 5 deletions(-) diff --git a/frontend/src/components/Controls/HorizontalFormControl.vue b/frontend/src/components/Controls/HorizontalFormControl.vue index 23558105..f654d8f6 100644 --- a/frontend/src/components/Controls/HorizontalFormControl.vue +++ b/frontend/src/components/Controls/HorizontalFormControl.vue @@ -1,5 +1,5 @@ diff --git a/frontend/src/pages/dashboard/Domains.vue b/frontend/src/pages/dashboard/Domains.vue index fe75697e..e60c4dda 100644 --- a/frontend/src/pages/dashboard/Domains.vue +++ b/frontend/src/pages/dashboard/Domains.vue @@ -43,7 +43,6 @@ diff --git a/frontend/src/router.js b/frontend/src/router.js index a5aaea52..84c09b41 100644 --- a/frontend/src/router.js +++ b/frontend/src/router.js @@ -65,6 +65,12 @@ const routes = [ props: true, meta: { isDashboard: true }, }, + { + path: '/dashboard/members', + name: 'Members', + component: () => import('@/pages/dashboard/Members.vue'), + meta: { isDashboard: true }, + }, ] const router = createRouter({ diff --git a/frontend/src/utils/index.js b/frontend/src/utils/index.js index 2ac6955e..61f0e7e5 100644 --- a/frontend/src/utils/index.js +++ b/frontend/src/utils/index.js @@ -42,6 +42,13 @@ export function getSidebarLinks() { activeFor: ['Domains', 'Domain'], forDashboard: true, }, + { + label: 'Members', + icon: 'Users', + to: 'Members', + activeFor: ['Members'], + forDashboard: true, + }, ] } From f0b3cd5486d41b0397f19cb85e7259b12dbb09c3 Mon Sep 17 00:00:00 2001 From: Akash Tom Date: Fri, 31 Jan 2025 16:42:28 +0530 Subject: [PATCH 27/69] chore(Mail Domain): set_only_once as 1 Co-authored-by: s-aga-r --- mail/mail/doctype/mail_domain/mail_domain.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mail/mail/doctype/mail_domain/mail_domain.json b/mail/mail/doctype/mail_domain/mail_domain.json index 497ba2ab..281336c3 100644 --- a/mail/mail/doctype/mail_domain/mail_domain.json +++ b/mail/mail/doctype/mail_domain/mail_domain.json @@ -166,7 +166,8 @@ "options": "Mail Tenant", "permlevel": 1, "reqd": 1, - "search_index": 1 + "search_index": 1, + "set_only_once": 1 }, { "fetch_from": "tenant.tenant_name", From bf44c7bc07d35df5fa83dc1d360d2b7523c542c3 Mon Sep 17 00:00:00 2001 From: krantheman Date: Fri, 31 Jan 2025 18:39:02 +0530 Subject: [PATCH 28/69] feat: add Invite User --- frontend/src/components/Modals/InviteUser.vue | 92 +++++++++++++++++++ frontend/src/pages/SignUp.vue | 2 +- frontend/src/pages/dashboard/Members.vue | 8 +- mail/api/account.py | 2 +- 4 files changed, 98 insertions(+), 6 deletions(-) create mode 100644 frontend/src/components/Modals/InviteUser.vue diff --git a/frontend/src/components/Modals/InviteUser.vue b/frontend/src/components/Modals/InviteUser.vue new file mode 100644 index 00000000..9319f783 --- /dev/null +++ b/frontend/src/components/Modals/InviteUser.vue @@ -0,0 +1,92 @@ + + + diff --git a/frontend/src/pages/SignUp.vue b/frontend/src/pages/SignUp.vue index ceec8558..3774f52f 100644 --- a/frontend/src/pages/SignUp.vue +++ b/frontend/src/pages/SignUp.vue @@ -100,7 +100,7 @@ const buttonLabel = computed(() => { }) const signUp = createResource({ - url: 'mail.api.account.signup', + url: 'mail.api.account.create_account_request', makeParams() { return { email: email.value } }, diff --git a/frontend/src/pages/dashboard/Members.vue b/frontend/src/pages/dashboard/Members.vue index 11cdd0ad..463f7dc9 100644 --- a/frontend/src/pages/dashboard/Members.vue +++ b/frontend/src/pages/dashboard/Members.vue @@ -33,7 +33,7 @@
- + diff --git a/mail/api/admin.py b/mail/api/admin.py index 89afb1ae..323ef83e 100644 --- a/mail/api/admin.py +++ b/mail/api/admin.py @@ -17,7 +17,7 @@ def create_tenant(tenant_name: str) -> None: @frappe.whitelist() -def create_domain_request(domain_name, mail_tenant) -> "MailDomainRequest": +def create_domain_request(domain_name: str, mail_tenant: str) -> "MailDomainRequest": """Create a new Mail Domain Request""" domain_request = frappe.new_doc("Mail Domain Request") @@ -35,3 +35,19 @@ def verify_dns_record(domain_request: str) -> bool: doc = frappe.get_doc("Mail Domain Request", domain_request) return doc.verify_and_create_domain(save=True) + + +@frappe.whitelist() +def get_tenant_members(tenant: str) -> list[dict[str, str]]: + """Returns list of members for the given tenant""" + + MTM = frappe.qb.DocType("Mail Tenant Member") + User = frappe.qb.DocType("User") + + return ( + frappe.qb.from_(MTM) + .left_join(User) + .on(MTM.user == User.name) + .select(User.name, User.full_name, User.user_image, MTM.is_admin) + .where(MTM.tenant == tenant) + ).run(as_dict=True) From 3cd86e2933003d7f332c065bac2cbef006033968 Mon Sep 17 00:00:00 2001 From: krantheman Date: Mon, 3 Feb 2025 16:21:35 +0530 Subject: [PATCH 31/69] chore: rename Invite User as Add Member --- .../Modals/{InviteUser.vue => AddMember.vue} | 12 ++++++------ frontend/src/pages/dashboard/Members.vue | 12 ++++-------- 2 files changed, 10 insertions(+), 14 deletions(-) rename frontend/src/components/Modals/{InviteUser.vue => AddMember.vue} (89%) diff --git a/frontend/src/components/Modals/InviteUser.vue b/frontend/src/components/Modals/AddMember.vue similarity index 89% rename from frontend/src/components/Modals/InviteUser.vue rename to frontend/src/components/Modals/AddMember.vue index 155a7213..8e2b145d 100644 --- a/frontend/src/components/Modals/InviteUser.vue +++ b/frontend/src/components/Modals/AddMember.vue @@ -2,12 +2,12 @@ - +
@@ -74,7 +74,7 @@ const emptyAccountRequest = { const accountRequest = reactive({ ...emptyAccountRequest }) -const inviteUser = createResource({ +const addMember = createResource({ url: 'mail.api.account.create_account_request', makeParams() { return { diff --git a/frontend/src/pages/dashboard/Members.vue b/frontend/src/pages/dashboard/Members.vue index 03424c40..b8d167f1 100644 --- a/frontend/src/pages/dashboard/Members.vue +++ b/frontend/src/pages/dashboard/Members.vue @@ -4,11 +4,7 @@ class="sticky top-0 z-10 flex items-center justify-between border-b bg-white px-3 py-2.5 sm:px-5" > -
- + From 426357da2a08feea3125b5b0f1d463b99303a212 Mon Sep 17 00:00:00 2001 From: krantheman Date: Tue, 4 Feb 2025 13:38:13 +0530 Subject: [PATCH 33/69] feat(Members): add actions --- frontend/src/components/Modals/AddDomain.vue | 2 +- frontend/src/pages/dashboard/Domain.vue | 10 +++- frontend/src/pages/dashboard/Members.vue | 62 ++++++++++++++++++-- mail/api/admin.py | 1 + 4 files changed, 67 insertions(+), 8 deletions(-) diff --git a/frontend/src/components/Modals/AddDomain.vue b/frontend/src/components/Modals/AddDomain.vue index 4182d186..5fd27f8e 100644 --- a/frontend/src/components/Modals/AddDomain.vue +++ b/frontend/src/components/Modals/AddDomain.vue @@ -50,7 +50,7 @@ diff --git a/mail/api/admin.py b/mail/api/admin.py index 323ef83e..036c3a97 100644 --- a/mail/api/admin.py +++ b/mail/api/admin.py @@ -50,4 +50,5 @@ def get_tenant_members(tenant: str) -> list[dict[str, str]]: .on(MTM.user == User.name) .select(User.name, User.full_name, User.user_image, MTM.is_admin) .where(MTM.tenant == tenant) + .orderby(MTM.creation) ).run(as_dict=True) From bfb5ca29ad79eb3beae012db07434fbb5663addc Mon Sep 17 00:00:00 2001 From: krantheman Date: Tue, 4 Feb 2025 15:41:37 +0530 Subject: [PATCH 34/69] feat(Members): add non invite based account creation --- frontend/src/components/Modals/AddMember.vue | 59 ++++++++++++++--- frontend/src/pages/SignUp.vue | 4 +- frontend/src/pages/dashboard/Members.vue | 2 +- mail/api/account.py | 64 ++++++++++++------- .../mail_account_request.json | 4 +- 5 files changed, 94 insertions(+), 39 deletions(-) diff --git a/frontend/src/components/Modals/AddMember.vue b/frontend/src/components/Modals/AddMember.vue index 8e2b145d..8cbb1249 100644 --- a/frontend/src/components/Modals/AddMember.vue +++ b/frontend/src/components/Modals/AddMember.vue @@ -5,7 +5,7 @@ title: __('Add Member'), actions: [ { - label: __('Add Member'), + label: __(accountRequest.send_invite ? 'Invite Member' : 'Add Member'), variant: 'solid', onClick: addMember.submit, }, @@ -44,12 +44,39 @@ ]" v-model="accountRequest.role" /> +
+ +
+ + + +
@@ -65,28 +92,40 @@ import { raiseToast } from '@/utils' const show = defineModel() const user = inject('$user') -const emptyAccountRequest = { +const defaultAccountRequest = { username: '', domain: '', role: 'Mail User', - invite_on_email: '', + send_invite: true, + email: '', + first_name: '', + last_name: '', + password: '', } -const accountRequest = reactive({ ...emptyAccountRequest }) +const accountRequest = reactive({ ...defaultAccountRequest }) + +const emit = defineEmits(['reloadMembers']) const addMember = createResource({ - url: 'mail.api.account.create_account_request', + url: 'mail.api.account.add_member', makeParams() { return { tenant: user.data.tenant, - is_invite: 1, ...accountRequest, } }, onSuccess() { show.value = false - Object.assign(accountRequest, emptyAccountRequest) - raiseToast('User invited successfully!') + raiseToast( + __( + accountRequest.send_invite + ? 'Member invited successfully' + : 'Member added successfully' + ) + ) + if (!accountRequest.send_invite) emit('reloadMembers') + Object.assign(accountRequest, defaultAccountRequest) }, }) diff --git a/frontend/src/pages/SignUp.vue b/frontend/src/pages/SignUp.vue index bb7f0485..7d15203f 100644 --- a/frontend/src/pages/SignUp.vue +++ b/frontend/src/pages/SignUp.vue @@ -100,9 +100,9 @@ const buttonLabel = computed(() => { }) const signUp = createResource({ - url: 'mail.api.account.create_account_request', + url: 'mail.api.account.self_signup', makeParams() { - return { invite_on_email: email.value } + return { email: email.value } }, onSuccess(data) { errorMessage.value = '' diff --git a/frontend/src/pages/dashboard/Members.vue b/frontend/src/pages/dashboard/Members.vue index 5a2170b2..883a7099 100644 --- a/frontend/src/pages/dashboard/Members.vue +++ b/frontend/src/pages/dashboard/Members.vue @@ -44,7 +44,7 @@ - + From 7b755b1adbdf03fafd15d95a8566d79eb6f18720 Mon Sep 17 00:00:00 2001 From: krantheman Date: Tue, 4 Feb 2025 16:16:25 +0530 Subject: [PATCH 36/69] refactor: multiple - move add_member to admin.py - fix signup link - show account as email while signing up --- frontend/src/components/Modals/AddMember.vue | 2 +- frontend/src/pages/SignUp.vue | 3 +- frontend/src/pages/dashboard/Members.vue | 1 - mail/api/account.py | 36 +------------------ mail/api/admin.py | 35 ++++++++++++++++++ .../mail_account_request.py | 2 +- 6 files changed, 40 insertions(+), 39 deletions(-) diff --git a/frontend/src/components/Modals/AddMember.vue b/frontend/src/components/Modals/AddMember.vue index 17e4f74b..0a05cc20 100644 --- a/frontend/src/components/Modals/AddMember.vue +++ b/frontend/src/components/Modals/AddMember.vue @@ -112,7 +112,7 @@ watch(show, () => { }) const addMember = createResource({ - url: 'mail.api.account.add_member', + url: 'mail.api.admin.add_member', makeParams() { return { tenant: user.data.tenant, diff --git a/frontend/src/pages/SignUp.vue b/frontend/src/pages/SignUp.vue index 7d15203f..4dafbfdf 100644 --- a/frontend/src/pages/SignUp.vue +++ b/frontend/src/pages/SignUp.vue @@ -151,7 +151,8 @@ const getAccountRequest = createResource({ return { request_key: props.requestKey } }, onSuccess(data) { - if (data?.email && !data?.is_verified && !data?.is_expired) email.value = data.email + if ((data?.email || data?.account) && !data?.is_verified && !data?.is_expired) + email.value = data.account ? data.account : data.email else router.replace({ name: 'SignUp' }) }, }) diff --git a/frontend/src/pages/dashboard/Members.vue b/frontend/src/pages/dashboard/Members.vue index 883a7099..00916de5 100644 --- a/frontend/src/pages/dashboard/Members.vue +++ b/frontend/src/pages/dashboard/Members.vue @@ -128,7 +128,6 @@ const dropdownOptions = (name, isAdmin) => { const removeMemberOptions = computed(() => ({ title: __('Remove Member'), message: __(`Are you sure you want to remove member ${memberToBeRemoved.value}?`), - size: 'xl', icon: { name: 'alert-triangle', appearance: 'warning', diff --git a/mail/api/account.py b/mail/api/account.py index 2d582110..3bcefe2f 100644 --- a/mail/api/account.py +++ b/mail/api/account.py @@ -19,40 +19,6 @@ def self_signup(email: str) -> str: return account_request.name -@frappe.whitelist() -def add_member( - tenant: str, - username: str, - domain: str, - role: str, - send_invite: bool, - email: str | None = None, - first_name: str | None = None, - last_name: str | None = None, - password: str | None = None, -) -> None: - """Create a new Mail Account Request for adding a member""" - - account_request = frappe.new_doc("Mail Account Request") - account_request.is_invite = 1 - account_request.tenant = tenant - account_request.domain_name = domain - account_request.account = f"{username}@{domain}" - account_request.role = role - account_request.invited_by = frappe.session.user - - if send_invite: - email = email.strip().lower() - validate_email_address(email, True) - account_request.email = email - account_request.send_email = True - - account_request.insert() - - if not send_invite: - account_request.force_verify_and_create_account(first_name, last_name, password) - - @frappe.whitelist(allow_guest=True) def resend_otp(account_request: str) -> None: """Resend OTP to the user""" @@ -83,7 +49,7 @@ def get_account_request(request_key: str) -> dict: return frappe.db.get_value( "Mail Account Request", {"request_key": request_key}, - ["email", "is_verified", "is_expired"], + ["email", "is_verified", "is_expired", "account"], as_dict=True, ) diff --git a/mail/api/admin.py b/mail/api/admin.py index 036c3a97..7b21158c 100644 --- a/mail/api/admin.py +++ b/mail/api/admin.py @@ -1,6 +1,7 @@ from typing import TYPE_CHECKING import frappe +from frappe.utils import validate_email_address if TYPE_CHECKING: from mail.mail.doctype.mail_domain_request.mail_domain_request import MailDomainRequest @@ -52,3 +53,37 @@ def get_tenant_members(tenant: str) -> list[dict[str, str]]: .where(MTM.tenant == tenant) .orderby(MTM.creation) ).run(as_dict=True) + + +@frappe.whitelist() +def add_member( + tenant: str, + username: str, + domain: str, + role: str, + send_invite: bool, + email: str | None = None, + first_name: str | None = None, + last_name: str | None = None, + password: str | None = None, +) -> None: + """Create a new Mail Account Request for adding a member""" + + account_request = frappe.new_doc("Mail Account Request") + account_request.is_invite = 1 + account_request.tenant = tenant + account_request.domain_name = domain + account_request.account = f"{username}@{domain}" + account_request.role = role + account_request.invited_by = frappe.session.user + + if send_invite: + email = email.strip().lower() + validate_email_address(email, True) + account_request.email = email + account_request.send_email = True + + account_request.insert() + + if not send_invite: + account_request.force_verify_and_create_account(first_name, last_name, password) diff --git a/mail/mail/doctype/mail_account_request/mail_account_request.py b/mail/mail/doctype/mail_account_request/mail_account_request.py index 1627b27a..a4c24bd1 100644 --- a/mail/mail/doctype/mail_account_request/mail_account_request.py +++ b/mail/mail/doctype/mail_account_request/mail_account_request.py @@ -113,7 +113,7 @@ def set_otp(self) -> None: def send_verification_email(self) -> None: """Send verification email to the user.""" - link = get_url() + "/signup/" + self.request_key + link = get_url() + "/mail/signup/" + self.request_key args = { "link": link, "otp": self.otp, From d310be5d9be1a41dd730fc9807bba1484982fe7d Mon Sep 17 00:00:00 2001 From: krantheman Date: Tue, 4 Feb 2025 16:45:23 +0530 Subject: [PATCH 37/69] fix: multiple - listview empty state - email of user created --- frontend/src/components/Modals/AddMember.vue | 4 +- frontend/src/pages/dashboard/Domains.vue | 42 +++++++++++--------- mail/api/account.py | 16 +++++--- 3 files changed, 35 insertions(+), 27 deletions(-) diff --git a/frontend/src/components/Modals/AddMember.vue b/frontend/src/components/Modals/AddMember.vue index 0a05cc20..f029a5fa 100644 --- a/frontend/src/components/Modals/AddMember.vue +++ b/frontend/src/components/Modals/AddMember.vue @@ -57,7 +57,7 @@ placeholder="johndoe@personal.com" v-model="accountRequest.email" /> -
+
diff --git a/frontend/src/pages/dashboard/Domains.vue b/frontend/src/pages/dashboard/Domains.vue index a741cb4a..ade08db9 100644 --- a/frontend/src/pages/dashboard/Domains.vue +++ b/frontend/src/pages/dashboard/Domains.vue @@ -17,25 +17,28 @@ > - - - - - - + + @@ -48,6 +51,7 @@ import { Button, Breadcrumbs, ListView, + ListEmptyState, ListHeader, ListRows, ListRow, diff --git a/mail/api/account.py b/mail/api/account.py index 3bcefe2f..ca7d75a0 100644 --- a/mail/api/account.py +++ b/mail/api/account.py @@ -58,17 +58,21 @@ def get_account_request(request_key: str) -> dict: def create_account(request_key: str, first_name: str, last_name: str, password: str) -> None: """Create a new user account""" - account_request, email, tenant, role = frappe.db.get_value( - "Mail Account Request", {"request_key": request_key}, ["name", "email", "tenant", "role"] + account_request, email, tenant, role, account = frappe.db.get_value( + "Mail Account Request", {"request_key": request_key}, ["name", "email", "tenant", "role", "account"] ) + user_email = account if account else email + user = frappe.new_doc("User") user.first_name = first_name user.last_name = last_name - user.email = email - user.owner = email + user.email = user_email + user.owner = user_email user.new_password = password - user.append_roles(role) + user.append_roles("Mail User") + if role == "Mail Admin": + user.append_roles("Mail Admin") user.flags.no_welcome_mail = True user.insert(ignore_permissions=True) @@ -76,4 +80,4 @@ def create_account(request_key: str, first_name: str, last_name: str, password: if tenant: mail_tenant = frappe.get_cached_doc("Mail Tenant", tenant) - mail_tenant.add_member(email) + mail_tenant.add_member(user_email) From 2e55cbeb6ab6befaafbec6bdf536cf31bd74356b Mon Sep 17 00:00:00 2001 From: krantheman Date: Tue, 4 Feb 2025 17:47:13 +0530 Subject: [PATCH 38/69] refactor: add validation for email address when needed --- frontend/src/components/Modals/AddDomain.vue | 1 + frontend/src/components/Modals/AddMember.vue | 5 ++++- mail/api/account.py | 4 ---- mail/api/admin.py | 9 ++------- .../mail_account_request.py | 20 ++++++++++++++++++- 5 files changed, 26 insertions(+), 13 deletions(-) diff --git a/frontend/src/components/Modals/AddDomain.vue b/frontend/src/components/Modals/AddDomain.vue index d4bd0688..c85de51b 100644 --- a/frontend/src/components/Modals/AddDomain.vue +++ b/frontend/src/components/Modals/AddDomain.vue @@ -68,6 +68,7 @@ watch(show, () => { domainName.value = '' verificationError.value = '' domainRequest.reset() + verifyDNS.reset() } }) diff --git a/frontend/src/components/Modals/AddMember.vue b/frontend/src/components/Modals/AddMember.vue index f029a5fa..e6e05300 100644 --- a/frontend/src/components/Modals/AddMember.vue +++ b/frontend/src/components/Modals/AddMember.vue @@ -108,7 +108,10 @@ const accountRequest = reactive({ ...defaultAccountRequest }) const emit = defineEmits(['reloadMembers']) watch(show, () => { - if (show.value) Object.assign(accountRequest, defaultAccountRequest) + if (show.value) { + Object.assign(accountRequest, defaultAccountRequest) + addMember.reset() + } }) const addMember = createResource({ diff --git a/mail/api/account.py b/mail/api/account.py index ca7d75a0..a84da12e 100644 --- a/mail/api/account.py +++ b/mail/api/account.py @@ -1,15 +1,11 @@ import frappe from frappe import _ -from frappe.utils import validate_email_address @frappe.whitelist(allow_guest=True) def self_signup(email: str) -> str: """Create a new Mail Account Request for self signup""" - email = email.strip().lower() - validate_email_address(email, True) - account_request = frappe.new_doc("Mail Account Request") account_request.email = email account_request.role = "Mail Admin" diff --git a/mail/api/admin.py b/mail/api/admin.py index 7b21158c..44e142f0 100644 --- a/mail/api/admin.py +++ b/mail/api/admin.py @@ -76,13 +76,8 @@ def add_member( account_request.account = f"{username}@{domain}" account_request.role = role account_request.invited_by = frappe.session.user - - if send_invite: - email = email.strip().lower() - validate_email_address(email, True) - account_request.email = email - account_request.send_email = True - + account_request.email = email + account_request.send_email = send_invite account_request.insert() if not send_invite: diff --git a/mail/mail/doctype/mail_account_request/mail_account_request.py b/mail/mail/doctype/mail_account_request/mail_account_request.py index a4c24bd1..ad842081 100644 --- a/mail/mail/doctype/mail_account_request/mail_account_request.py +++ b/mail/mail/doctype/mail_account_request/mail_account_request.py @@ -6,7 +6,7 @@ import frappe from frappe import _ from frappe.model.document import Document -from frappe.utils import add_days, get_url, nowdate, random_string +from frappe.utils import add_days, get_url, nowdate, random_string, validate_email_address from mail.mail.doctype.mail_account.mail_account import create_mail_account from mail.utils.cache import get_tenant_for_user @@ -17,10 +17,19 @@ validate_domain_owned_by_tenant, ) +# todo: +# clean up form +# clean up create_account +# make role => is_admin +# fix email styles +# fix email frappe logo +# create mail account after sign up + class MailAccountRequest(Document): def validate(self) -> None: self.validate_role() + self.validate_email() if self.is_new(): if self.is_invite: @@ -48,6 +57,15 @@ def validate_role(self) -> None: if self.role not in ["Mail User", "Mail Admin"]: frappe.throw(_("Invalid role. Please select a valid role.")) + def validate_email(self) -> None: + """Validates email if needed.""" + + if self.send_email and not self.email: + frappe.throw(_("Email is required to send invite")) + + self.email = self.email.strip().lower() + validate_email_address(self.email, True) + def validate_non_invite(self) -> None: """Validates self sign up.""" From b2dc1a3c511ea4e375ffe8945da8c3d1ce6db6c1 Mon Sep 17 00:00:00 2001 From: krantheman Date: Wed, 5 Feb 2025 13:31:12 +0530 Subject: [PATCH 39/69] refactor: create mail account --- mail/api/account.py | 32 ++++++------------- .../mail/doctype/mail_account/mail_account.py | 15 ++++++++- .../mail_account_request.py | 3 +- 3 files changed, 26 insertions(+), 24 deletions(-) diff --git a/mail/api/account.py b/mail/api/account.py index a84da12e..2acdcb29 100644 --- a/mail/api/account.py +++ b/mail/api/account.py @@ -1,6 +1,8 @@ import frappe from frappe import _ +from mail.mail.doctype.mail_account.mail_account import create_user + @frappe.whitelist(allow_guest=True) def self_signup(email: str) -> str: @@ -54,26 +56,12 @@ def get_account_request(request_key: str) -> dict: def create_account(request_key: str, first_name: str, last_name: str, password: str) -> None: """Create a new user account""" - account_request, email, tenant, role, account = frappe.db.get_value( - "Mail Account Request", {"request_key": request_key}, ["name", "email", "tenant", "role", "account"] - ) + account_request = frappe.get_last_doc("Mail Account Request", {"request_key": request_key}) + account_request.is_verified = 1 + account_request.save(ignore_permissions=True) + + if account_request.account: + account_request.create_account(first_name, last_name, password) - user_email = account if account else email - - user = frappe.new_doc("User") - user.first_name = first_name - user.last_name = last_name - user.email = user_email - user.owner = user_email - user.new_password = password - user.append_roles("Mail User") - if role == "Mail Admin": - user.append_roles("Mail Admin") - user.flags.no_welcome_mail = True - user.insert(ignore_permissions=True) - - frappe.db.set_value("Mail Account Request", account_request, "is_verified", 1) - - if tenant: - mail_tenant = frappe.get_cached_doc("Mail Tenant", tenant) - mail_tenant.add_member(user_email) + else: + create_user(account_request.email, first_name, last_name, password, ["Mail Admin"]) diff --git a/mail/mail/doctype/mail_account/mail_account.py b/mail/mail/doctype/mail_account/mail_account.py index c2ce0c83..4686501e 100644 --- a/mail/mail/doctype/mail_account/mail_account.py +++ b/mail/mail/doctype/mail_account/mail_account.py @@ -191,6 +191,18 @@ def _create_user_for_mail_account( if role == "Mail Admin": roles.append("Mail Admin") + return create_user(email, first_name, last_name, password, roles) + + +def create_user( + email: str, + first_name: str, + last_name: str | None = None, + password: str | None = None, + roles: list[str] | None = None, +) -> str: + """Creates a User document""" + user = frappe.new_doc("User") user.first_name = first_name user.last_name = last_name @@ -198,7 +210,8 @@ def _create_user_for_mail_account( user.email = email user.owner = email user.send_welcome_email = 0 - user.append_roles(*roles) + if roles: + user.append_roles(*roles) if password: user.new_password = password user.insert(ignore_permissions=True) diff --git a/mail/mail/doctype/mail_account_request/mail_account_request.py b/mail/mail/doctype/mail_account_request/mail_account_request.py index ad842081..ae22dd32 100644 --- a/mail/mail/doctype/mail_account_request/mail_account_request.py +++ b/mail/mail/doctype/mail_account_request/mail_account_request.py @@ -24,6 +24,7 @@ # fix email styles # fix email frappe logo # create mail account after sign up +# mail domain: tenant_name class MailAccountRequest(Document): @@ -69,7 +70,7 @@ def validate_email(self) -> None: def validate_non_invite(self) -> None: """Validates self sign up.""" - if frappe.db.exists("User", self.email): + if frappe.db.exists("User", {"email": self.email}): frappe.throw(_("User {0} is already registered.").format(self.email)) self.role = "Mail Admin" From 43cf7a8d26c74817bab851ab65b430be234f917b Mon Sep 17 00:00:00 2001 From: krantheman Date: Wed, 5 Feb 2025 15:11:58 +0530 Subject: [PATCH 40/69] fix: email css build --- frontend/package.json | 6 +- .../mail_account_request.py | 16 +- mail/public/images/frappe-log.png | Bin 0 -> 1105 bytes mail/templates/emails/base.html | 8 +- mail/templates/emails/self_signup.html | 1 - package.json | 9 +- yarn.lock | 711 ++++++++++++++++++ 7 files changed, 730 insertions(+), 21 deletions(-) create mode 100644 mail/public/images/frappe-log.png diff --git a/frontend/package.json b/frontend/package.json index c86ec9fa..07ace89c 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -5,10 +5,8 @@ "scripts": { "dev": "vite", "serve": "vite preview", - "build": "yarn build-app && yarn build-email-css", - "build-app": "vite build --base=/assets/mail/frontend/ && yarn copy-html-entry", - "copy-html-entry": "cp ../mail/public/frontend/index.html ../mail/www/mail.html", - "build-email-css": "npx tailwindcss -i ../mail/public/email/style.css -o ../mail/public/css/email.css --config ../mail/public/email/tailwind.config.js" + "build": "vite build --base=/assets/mail/frontend/ && yarn copy-html-entry", + "copy-html-entry": "cp ../mail/public/frontend/index.html ../mail/www/mail.html" }, "dependencies": { "@vueuse/core": "^10.4.1", diff --git a/mail/mail/doctype/mail_account_request/mail_account_request.py b/mail/mail/doctype/mail_account_request/mail_account_request.py index ae22dd32..7ed45645 100644 --- a/mail/mail/doctype/mail_account_request/mail_account_request.py +++ b/mail/mail/doctype/mail_account_request/mail_account_request.py @@ -19,12 +19,10 @@ # todo: # clean up form -# clean up create_account # make role => is_admin -# fix email styles -# fix email frappe logo -# create mail account after sign up # mail domain: tenant_name +# validate is_expired +# validate mail invite duplicate user class MailAccountRequest(Document): @@ -133,11 +131,7 @@ def send_verification_email(self) -> None: """Send verification email to the user.""" link = get_url() + "/mail/signup/" + self.request_key - args = { - "link": link, - "otp": self.otp, - "image_path": "https://frappe.io/files/Frappe-black.png", - } + args = {"link": link, "otp": self.otp} if self.is_invite and self.invited_by: subject = _("You have been invited by {0} to join Frappe Mail").format(self.invited_by) @@ -191,11 +185,11 @@ def create_account(self, first_name: str, last_name: str, password: str) -> None def expire_mail_account_requests() -> None: - """Called by scheduler to expire mail account requests older than 7 days.""" + """Called by scheduler to expire mail account requests older than 2 days.""" frappe.db.set_value( "Mail Account Request", - {"is_expired": 0, "creation": ["<", add_days(nowdate(), -7)]}, + {"is_expired": 0, "creation": ["<", add_days(nowdate(), -2)]}, "is_expired", 1, ) diff --git a/mail/public/images/frappe-log.png b/mail/public/images/frappe-log.png new file mode 100644 index 0000000000000000000000000000000000000000..3d5b11f5eea38daa8a9aa2add1dfa9093a847a00 GIT binary patch literal 1105 zcmV-X1g`suP) z;xG*UxYq%48|Ws04K6o9xd})opc}wVP;LU~1nmZ-6I?q%auYx&=tYfFj3YTt_$lvR zzW4M3vMkG%6-x#Hcsqa+^f)TMpvOg_cgTgIcgTg|s-SP^jxBl|6$2axiSs=#C^ets zg2v|aqs6zuGQ)ztTD)gNIb@6qiX2{Qo{<@o%=fIICy%b!`Mxz{SGp#aZOnf}JH*(Z zU(?(UhMRpYQBGv-@aImy1m$A+GC9^o!kBKq%<$uaHj1u0K@TZoGNy_i9&3VTOg*+R zts&3tU`P{M3H-U$XNK_fnipW?j43&U0(AYseq@nie~5iE$dEQ;7d@RJd0rZLZsZe$ z8|y|uh0JN+pgG#4NTC+?OBADyRg3-=jd4UY?Z^i+$*GagP+!bBcHtXCUfgSIOl|R5 z*8-)}7aqAPN~pp1snNAkWY*Y60(mn{%~&I2mn0JnP=Bw7f)BRp;CmC=^MYefn;P8GIbZb6msK0;nf_`BCuw*hY(FWw)`D!cNk%Pfl5{Pv za2jyh*fup}5Xy-8j&Ap4PYQp9dWJQEjud)I%8?v9yrFrdS&@AM}1Npk(@!L7LU;0Axv7N zkigR%BFXyNUd=NX+Bj1Sd4<2@Gj4l_&i5Rp(W%2Hv`5l{?^~o8dL)cJx}FtX!T1b^ zxD$O*kRq^GHHxp#FjI4sxhtEDKjZMvy9kLZ{(wxhMXJ(%K8h?KyNEKsSXgR(F zw|?NtnjD!4b30@K z{R(0U|9w=GLwtQTJtVYm0`*9RUj+ZPj;1>^ww&D|gs=%qj$2xKq)Cqh^nOg-vPT+c z6=9a4YB+@qK6BF7d|#^Ig53b0WFAPU<+L(}Ik_J37O9QhpjB_3m7o@Dw~dS9XcT1lvH!WDM4Sd23AhS=3e z_Xz*_nouSvF?NT0j$N&l;y-~FA#FkMN8(x0|Lf$!&^zS9&^zS9&^zS9&^x3@4
- {% if image_path %} - Logo - {% endif %} + Frappe Logo
diff --git a/mail/templates/emails/self_signup.html b/mail/templates/emails/self_signup.html index d4026e71..3ded0bd3 100644 --- a/mail/templates/emails/self_signup.html +++ b/mail/templates/emails/self_signup.html @@ -1,6 +1,5 @@ {% import "templates/emails/macros.html" as utils %} {% extends "templates/emails/base.html" %} -{% set image_path = image_path %} {% set otp = otp %} {% block content %} diff --git a/package.json b/package.json index cb9cf6d6..320023e9 100644 --- a/package.json +++ b/package.json @@ -5,9 +5,14 @@ "test-local": "cypress open --e2e --browser chrome", "postinstall": "cd frontend && yarn install --check-files", "dev": "cd frontend && yarn dev", - "build": "cd frontend && yarn build" + "build": "yarn build-app && yarn build-email-css", + "build-email-css": "npx tailwindcss -i ./mail/public/email/style.css -o ./mail/public/css/email.css --config ./mail/public/email/tailwind.config.js", + "build-app": "cd frontend && yarn build" }, "repository": "https://github.com/frappe/mail", "author": "Frappe", - "license": "AGPL-3.0-or-later" + "license": "AGPL-3.0-or-later", + "devDependencies": { + "tailwindcss": "^3" + } } diff --git a/yarn.lock b/yarn.lock index fb57ccd1..2a8e878a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,3 +2,714 @@ # yarn lockfile v1 +"@alloc/quick-lru@^5.2.0": + version "5.2.0" + resolved "https://registry.yarnpkg.com/@alloc/quick-lru/-/quick-lru-5.2.0.tgz#7bf68b20c0a350f936915fcae06f58e32007ce30" + integrity sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw== + +"@isaacs/cliui@^8.0.2": + version "8.0.2" + resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" + integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== + dependencies: + string-width "^5.1.2" + string-width-cjs "npm:string-width@^4.2.0" + strip-ansi "^7.0.1" + strip-ansi-cjs "npm:strip-ansi@^6.0.1" + wrap-ansi "^8.1.0" + wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" + +"@jridgewell/gen-mapping@^0.3.2": + version "0.3.8" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz#4f0e06362e01362f823d348f1872b08f666d8142" + integrity sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA== + dependencies: + "@jridgewell/set-array" "^1.2.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.24" + +"@jridgewell/resolve-uri@^3.1.0": + version "3.1.2" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6" + integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== + +"@jridgewell/set-array@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.2.1.tgz#558fb6472ed16a4c850b889530e6b36438c49280" + integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A== + +"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz#3188bcb273a414b0d215fd22a58540b989b9409a" + integrity sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ== + +"@jridgewell/trace-mapping@^0.3.24": + version "0.3.25" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0" + integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ== + dependencies: + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" + +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + +"@nodelib/fs.walk@^1.2.3": + version "1.2.8" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + dependencies: + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" + +"@pkgjs/parseargs@^0.11.0": + version "0.11.0" + resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" + integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-regex@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.1.0.tgz#95ec409c69619d6cb1b8b34f14b660ef28ebd654" + integrity sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA== + +ansi-styles@^4.0.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +ansi-styles@^6.1.0: + version "6.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" + integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== + +any-promise@^1.0.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" + integrity sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A== + +anymatch@~3.1.2: + version "3.1.3" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +arg@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/arg/-/arg-5.0.2.tgz#c81433cc427c92c4dcf4865142dbca6f15acd59c" + integrity sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg== + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +binary-extensions@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.3.0.tgz#f6e14a97858d327252200242d4ccfe522c445522" + integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw== + +brace-expansion@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" + integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== + dependencies: + balanced-match "^1.0.0" + +braces@^3.0.3, braces@~3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" + integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== + dependencies: + fill-range "^7.1.1" + +camelcase-css@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/camelcase-css/-/camelcase-css-2.0.1.tgz#ee978f6947914cc30c6b44741b6ed1df7f043fd5" + integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA== + +chokidar@^3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b" + integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +commander@^4.0.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" + integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== + +cross-spawn@^7.0.0: + version "7.0.6" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f" + integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +cssesc@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" + integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== + +didyoumean@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/didyoumean/-/didyoumean-1.2.2.tgz#989346ffe9e839b4555ecf5666edea0d3e8ad037" + integrity sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw== + +dlv@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/dlv/-/dlv-1.1.3.tgz#5c198a8a11453596e751494d49874bc7732f2e79" + integrity sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA== + +eastasianwidth@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" + integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +emoji-regex@^9.2.2: + version "9.2.2" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" + integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== + +fast-glob@^3.3.2: + version "3.3.3" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.3.tgz#d06d585ce8dba90a16b0505c543c3ccfb3aeb818" + integrity sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.8" + +fastq@^1.6.0: + version "1.19.0" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.19.0.tgz#a82c6b7c2bb4e44766d865f07997785fecfdcb89" + integrity sha512-7SFSRCNjBQIZH/xZR3iy5iQYR8aGBE0h3VG6/cwlbrpdciNYBMotQav8c1XI3HjHH+NikUpP53nPdlZSdWmFzA== + dependencies: + reusify "^1.0.4" + +fill-range@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" + integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== + dependencies: + to-regex-range "^5.0.1" + +foreground-child@^3.1.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.3.0.tgz#0ac8644c06e431439f8561db8ecf29a7b5519c77" + integrity sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg== + dependencies: + cross-spawn "^7.0.0" + signal-exit "^4.0.1" + +fsevents@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== + +function-bind@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== + +glob-parent@^5.1.2, glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob-parent@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" + integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== + dependencies: + is-glob "^4.0.3" + +glob@^10.3.10: + version "10.4.5" + resolved "https://registry.yarnpkg.com/glob/-/glob-10.4.5.tgz#f4d9f0b90ffdbab09c9d77f5f29b4262517b0956" + integrity sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg== + dependencies: + foreground-child "^3.1.0" + jackspeak "^3.1.2" + minimatch "^9.0.4" + minipass "^7.1.2" + package-json-from-dist "^1.0.0" + path-scurry "^1.11.1" + +hasown@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" + integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== + dependencies: + function-bind "^1.1.2" + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-core-module@^2.16.0: + version "2.16.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.16.1.tgz#2a98801a849f43e2add644fbb6bc6229b19a4ef4" + integrity sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w== + dependencies: + hasown "^2.0.2" + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +jackspeak@^3.1.2: + version "3.4.3" + resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-3.4.3.tgz#8833a9d89ab4acde6188942bd1c53b6390ed5a8a" + integrity sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw== + dependencies: + "@isaacs/cliui" "^8.0.2" + optionalDependencies: + "@pkgjs/parseargs" "^0.11.0" + +jiti@^1.21.6: + version "1.21.7" + resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.21.7.tgz#9dd81043424a3d28458b193d965f0d18a2300ba9" + integrity sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A== + +lilconfig@^3.0.0, lilconfig@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-3.1.3.tgz#a1bcfd6257f9585bf5ae14ceeebb7b559025e4c4" + integrity sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw== + +lines-and-columns@^1.1.6: + version "1.2.4" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" + integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== + +lru-cache@^10.2.0: + version "10.4.3" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.4.3.tgz#410fc8a17b70e598013df257c2446b7f3383f119" + integrity sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ== + +merge2@^1.3.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +micromatch@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202" + integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== + dependencies: + braces "^3.0.3" + picomatch "^2.3.1" + +minimatch@^9.0.4: + version "9.0.5" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5" + integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== + dependencies: + brace-expansion "^2.0.1" + +"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.1.2: + version "7.1.2" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707" + integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== + +mz@^2.7.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32" + integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q== + dependencies: + any-promise "^1.0.0" + object-assign "^4.0.1" + thenify-all "^1.0.0" + +nanoid@^3.3.8: + version "3.3.8" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.8.tgz#b1be3030bee36aaff18bacb375e5cce521684baf" + integrity sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w== + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +object-assign@^4.0.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== + +object-hash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-3.0.0.tgz#73f97f753e7baffc0e2cc9d6e079079744ac82e9" + integrity sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw== + +package-json-from-dist@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz#4f1471a010827a86f94cfd9b0727e36d267de505" + integrity sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw== + +path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +path-scurry@^1.11.1: + version "1.11.1" + resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.11.1.tgz#7960a668888594a0720b12a911d1a742ab9f11d2" + integrity sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA== + dependencies: + lru-cache "^10.2.0" + minipass "^5.0.0 || ^6.0.2 || ^7.0.0" + +picocolors@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" + integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== + +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +pify@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== + +pirates@^4.0.1: + version "4.0.6" + resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.6.tgz#3018ae32ecfcff6c29ba2267cbf21166ac1f36b9" + integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg== + +postcss-import@^15.1.0: + version "15.1.0" + resolved "https://registry.yarnpkg.com/postcss-import/-/postcss-import-15.1.0.tgz#41c64ed8cc0e23735a9698b3249ffdbf704adc70" + integrity sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew== + dependencies: + postcss-value-parser "^4.0.0" + read-cache "^1.0.0" + resolve "^1.1.7" + +postcss-js@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-js/-/postcss-js-4.0.1.tgz#61598186f3703bab052f1c4f7d805f3991bee9d2" + integrity sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw== + dependencies: + camelcase-css "^2.0.1" + +postcss-load-config@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-4.0.2.tgz#7159dcf626118d33e299f485d6afe4aff7c4a3e3" + integrity sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ== + dependencies: + lilconfig "^3.0.0" + yaml "^2.3.4" + +postcss-nested@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/postcss-nested/-/postcss-nested-6.2.0.tgz#4c2d22ab5f20b9cb61e2c5c5915950784d068131" + integrity sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ== + dependencies: + postcss-selector-parser "^6.1.1" + +postcss-selector-parser@^6.1.1, postcss-selector-parser@^6.1.2: + version "6.1.2" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz#27ecb41fb0e3b6ba7a1ec84fff347f734c7929de" + integrity sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg== + dependencies: + cssesc "^3.0.0" + util-deprecate "^1.0.2" + +postcss-value-parser@^4.0.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" + integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== + +postcss@^8.4.47: + version "8.5.1" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.1.tgz#e2272a1f8a807fafa413218245630b5db10a3214" + integrity sha512-6oz2beyjc5VMn/KV1pPw8fliQkhBXrVn1Z3TVyqZxU8kZpzEKhBdmCFqI6ZbmGtamQvQGuU1sgPTk8ZrXDD7jQ== + dependencies: + nanoid "^3.3.8" + picocolors "^1.1.1" + source-map-js "^1.2.1" + +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + +read-cache@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/read-cache/-/read-cache-1.0.0.tgz#e664ef31161166c9751cdbe8dbcf86b5fb58f774" + integrity sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA== + dependencies: + pify "^2.3.0" + +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + +resolve@^1.1.7, resolve@^1.22.8: + version "1.22.10" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.10.tgz#b663e83ffb09bbf2386944736baae803029b8b39" + integrity sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w== + dependencies: + is-core-module "^2.16.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +signal-exit@^4.0.1: + version "4.1.0" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" + integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== + +source-map-js@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46" + integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA== + +"string-width-cjs@npm:string-width@^4.2.0", string-width@^4.1.0: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string-width@^5.0.1, string-width@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" + integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== + dependencies: + eastasianwidth "^0.2.0" + emoji-regex "^9.2.2" + strip-ansi "^7.0.1" + +"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-ansi@^7.0.1: + version "7.1.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" + integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== + dependencies: + ansi-regex "^6.0.1" + +sucrase@^3.35.0: + version "3.35.0" + resolved "https://registry.yarnpkg.com/sucrase/-/sucrase-3.35.0.tgz#57f17a3d7e19b36d8995f06679d121be914ae263" + integrity sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA== + dependencies: + "@jridgewell/gen-mapping" "^0.3.2" + commander "^4.0.0" + glob "^10.3.10" + lines-and-columns "^1.1.6" + mz "^2.7.0" + pirates "^4.0.1" + ts-interface-checker "^0.1.9" + +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + +tailwindcss@^3: + version "3.4.17" + resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.4.17.tgz#ae8406c0f96696a631c790768ff319d46d5e5a63" + integrity sha512-w33E2aCvSDP0tW9RZuNXadXlkHXqFzSkQew/aIa2i/Sj8fThxwovwlXHSPXTbAHwEIhBFXAedUhP2tueAKP8Og== + dependencies: + "@alloc/quick-lru" "^5.2.0" + arg "^5.0.2" + chokidar "^3.6.0" + didyoumean "^1.2.2" + dlv "^1.1.3" + fast-glob "^3.3.2" + glob-parent "^6.0.2" + is-glob "^4.0.3" + jiti "^1.21.6" + lilconfig "^3.1.3" + micromatch "^4.0.8" + normalize-path "^3.0.0" + object-hash "^3.0.0" + picocolors "^1.1.1" + postcss "^8.4.47" + postcss-import "^15.1.0" + postcss-js "^4.0.1" + postcss-load-config "^4.0.2" + postcss-nested "^6.2.0" + postcss-selector-parser "^6.1.2" + resolve "^1.22.8" + sucrase "^3.35.0" + +thenify-all@^1.0.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726" + integrity sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA== + dependencies: + thenify ">= 3.1.0 < 4" + +"thenify@>= 3.1.0 < 4": + version "3.3.1" + resolved "https://registry.yarnpkg.com/thenify/-/thenify-3.3.1.tgz#8932e686a4066038a016dd9e2ca46add9838a95f" + integrity sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw== + dependencies: + any-promise "^1.0.0" + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +ts-interface-checker@^0.1.9: + version "0.1.13" + resolved "https://registry.yarnpkg.com/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz#784fd3d679722bc103b1b4b8030bcddb5db2a699" + integrity sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA== + +util-deprecate@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrap-ansi@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" + integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== + dependencies: + ansi-styles "^6.1.0" + string-width "^5.0.1" + strip-ansi "^7.0.1" + +yaml@^2.3.4: + version "2.7.0" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.7.0.tgz#aef9bb617a64c937a9a748803786ad8d3ffe1e98" + integrity sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA== From fd3bcec667100437b3bd489d7b6812de42aba082 Mon Sep 17 00:00:00 2001 From: krantheman Date: Wed, 5 Feb 2025 15:49:39 +0530 Subject: [PATCH 41/69] feat(Mail Account Request): validate expired --- mail/api/account.py | 1 + .../mail_account_request/mail_account_request.py | 15 +++++++++++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/mail/api/account.py b/mail/api/account.py index 2acdcb29..f6ad00ed 100644 --- a/mail/api/account.py +++ b/mail/api/account.py @@ -57,6 +57,7 @@ def create_account(request_key: str, first_name: str, last_name: str, password: """Create a new user account""" account_request = frappe.get_last_doc("Mail Account Request", {"request_key": request_key}) + account_request.validate_expired() account_request.is_verified = 1 account_request.save(ignore_permissions=True) diff --git a/mail/mail/doctype/mail_account_request/mail_account_request.py b/mail/mail/doctype/mail_account_request/mail_account_request.py index 7ed45645..47bce12a 100644 --- a/mail/mail/doctype/mail_account_request/mail_account_request.py +++ b/mail/mail/doctype/mail_account_request/mail_account_request.py @@ -21,8 +21,6 @@ # clean up form # make role => is_admin # mail domain: tenant_name -# validate is_expired -# validate mail invite duplicate user class MailAccountRequest(Document): @@ -116,6 +114,15 @@ def validate_account(self) -> None: ) ) + if frappe.db.exists("User", {"email": self.account}): + frappe.throw(_("User {0} is already registered.").format(self.account)) + + def validate_expired(self) -> None: + """Forbids action if the request has expired.""" + + if self.is_expired: + frappe.throw(_("This request has expired. Please create a new request.")) + def set_request_key(self) -> None: """Sets a random key for the request.""" @@ -130,6 +137,8 @@ def set_otp(self) -> None: def send_verification_email(self) -> None: """Send verification email to the user.""" + self.validate_expired() + link = get_url() + "/mail/signup/" + self.request_key args = {"link": link, "otp": self.otp} @@ -155,6 +164,8 @@ def send_verification_email(self) -> None: def force_verify_and_create_account(self, first_name: str, last_name: str, password: str) -> None: """Force verify and create account for invited user.""" + self.validate_expired() + if not self.is_invite: frappe.throw(_("This method can only be called for invited users.")) From 1c23ae609608e88650f3734791a06bd761cafa45 Mon Sep 17 00:00:00 2001 From: krantheman Date: Wed, 5 Feb 2025 15:57:30 +0530 Subject: [PATCH 42/69] fix: validate email only when there is one --- .../mail_account_request/mail_account_request.py | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/mail/mail/doctype/mail_account_request/mail_account_request.py b/mail/mail/doctype/mail_account_request/mail_account_request.py index 47bce12a..69e69591 100644 --- a/mail/mail/doctype/mail_account_request/mail_account_request.py +++ b/mail/mail/doctype/mail_account_request/mail_account_request.py @@ -6,7 +6,7 @@ import frappe from frappe import _ from frappe.model.document import Document -from frappe.utils import add_days, get_url, nowdate, random_string, validate_email_address +from frappe.utils import add_days, get_url, nowdate, random_string from mail.mail.doctype.mail_account.mail_account import create_mail_account from mail.utils.cache import get_tenant_for_user @@ -15,12 +15,14 @@ is_valid_email_for_domain, validate_domain_is_enabled_and_verified, validate_domain_owned_by_tenant, + validate_email_address, ) # todo: # clean up form # make role => is_admin # mail domain: tenant_name +# fix invite mail frappe logo class MailAccountRequest(Document): @@ -57,11 +59,12 @@ def validate_role(self) -> None: def validate_email(self) -> None: """Validates email if needed.""" - if self.send_email and not self.email: - frappe.throw(_("Email is required to send invite")) + if self.email: + self.email = self.email.strip().lower() + validate_email_address(self.email, True) - self.email = self.email.strip().lower() - validate_email_address(self.email, True) + elif self.send_email: + frappe.throw(_("Email is required to send invite")) def validate_non_invite(self) -> None: """Validates self sign up.""" From f97c47035ac93d7fee9e2f79ffce28761ff0f170 Mon Sep 17 00:00:00 2001 From: krantheman Date: Wed, 5 Feb 2025 16:43:27 +0530 Subject: [PATCH 43/69] refactor(Mail Domain): remove tenant_name field --- frontend/src/pages/dashboard/Domain.vue | 27 +++++++++---------- .../mail/doctype/mail_domain/mail_domain.json | 13 ++------- 2 files changed, 14 insertions(+), 26 deletions(-) diff --git a/frontend/src/pages/dashboard/Domain.vue b/frontend/src/pages/dashboard/Domain.vue index c07d2a4f..31efc274 100644 --- a/frontend/src/pages/dashboard/Domain.vue +++ b/frontend/src/pages/dashboard/Domain.vue @@ -38,7 +38,7 @@
- + + + From 7ffb3281586072fb2740931a5b87e6b39659ee7a Mon Sep 17 00:00:00 2001 From: krantheman Date: Fri, 7 Feb 2025 11:59:23 +0530 Subject: [PATCH 64/69] fix(Members): don't show remove admin/remove member for owner --- frontend/src/pages/dashboard/Members.vue | 1 + 1 file changed, 1 insertion(+) diff --git a/frontend/src/pages/dashboard/Members.vue b/frontend/src/pages/dashboard/Members.vue index 423e2dd5..0595675e 100644 --- a/frontend/src/pages/dashboard/Members.vue +++ b/frontend/src/pages/dashboard/Members.vue @@ -35,6 +35,7 @@
From dce7bcae0ddf400677d4d265a2cb44c4fc3ffdcf Mon Sep 17 00:00:00 2001 From: krantheman Date: Fri, 7 Feb 2025 12:10:13 +0530 Subject: [PATCH 65/69] chore: change is_admin type annotation from literal to bool --- mail/mail/doctype/mail_account/mail_account.py | 8 +++----- .../mail_account_request/mail_account_request.json | 3 +-- mail/mail/doctype/mail_tenant/mail_tenant.py | 7 +++---- 3 files changed, 7 insertions(+), 11 deletions(-) diff --git a/mail/mail/doctype/mail_account/mail_account.py b/mail/mail/doctype/mail_account/mail_account.py index bd41fef6..1ca418cd 100644 --- a/mail/mail/doctype/mail_account/mail_account.py +++ b/mail/mail/doctype/mail_account/mail_account.py @@ -1,8 +1,6 @@ # Copyright (c) 2025, Frappe Technologies Pvt. Ltd. and contributors # For license information, please see license.txt -from typing import Literal - import bcrypt import frappe from frappe import _ @@ -177,7 +175,7 @@ def _create_user_for_mail_account( first_name: str, last_name: str | None = None, password: str | None = None, - is_admin: Literal[0, 1] = 0, + is_admin: bool = False, ) -> str: """Creates a User for Mail Account""" @@ -216,7 +214,7 @@ def create_user( return user.name -def _add_user_to_tenant(tenant: str, user: str, is_admin: Literal[0, 1]) -> None: +def _add_user_to_tenant(tenant: str, user: str, is_admin: bool) -> None: """Adds a User to a Tenant""" tenant = frappe.get_doc("Mail Tenant", tenant) @@ -229,7 +227,7 @@ def create_mail_account( first_name: str, last_name: str | None = None, password: str | None = None, - is_admin: Literal[0, 1] = 0, + is_admin: bool = False, ) -> "MailAccount": """Creates a Mail Account""" diff --git a/mail/mail/doctype/mail_account_request/mail_account_request.json b/mail/mail/doctype/mail_account_request/mail_account_request.json index 52c2a01c..3a32f623 100644 --- a/mail/mail/doctype/mail_account_request/mail_account_request.json +++ b/mail/mail/doctype/mail_account_request/mail_account_request.json @@ -159,7 +159,6 @@ "in_list_view": 1, "in_standard_filter": 1, "label": "Is Admin", - "reqd": 1, "set_only_once": 1 } ], @@ -201,4 +200,4 @@ "states": [], "title_field": "email", "track_changes": 1 -} \ No newline at end of file +} diff --git a/mail/mail/doctype/mail_tenant/mail_tenant.py b/mail/mail/doctype/mail_tenant/mail_tenant.py index 2bc1d99b..d122aca3 100644 --- a/mail/mail/doctype/mail_tenant/mail_tenant.py +++ b/mail/mail/doctype/mail_tenant/mail_tenant.py @@ -1,11 +1,10 @@ # Copyright (c) 2025, Frappe Technologies Pvt. Ltd. and contributors # For license information, please see license.txt -from typing import Literal - import frappe from frappe import _ from frappe.model.document import Document +from frappe.utils import cint from mail.utils.cache import get_tenant_for_user from mail.utils.user import has_role, is_system_manager, is_tenant_admin @@ -26,13 +25,13 @@ def after_insert(self) -> None: self.add_member(self.user) - def add_member(self, user: str, is_admin: Literal[0, 1] = 0) -> str: + def add_member(self, user: str, is_admin: bool = False) -> str: """Add a member to the tenant.""" member = frappe.new_doc("Mail Tenant Member") member.tenant = self.name member.user = user - member.is_admin = is_admin + member.is_admin = cint(is_admin) member.insert(ignore_permissions=True) return member.name From d6b7eef368d9e79d4bd61e35409572066dd4db4a Mon Sep 17 00:00:00 2001 From: krantheman Date: Fri, 7 Feb 2025 13:36:03 +0530 Subject: [PATCH 66/69] refactor(Mail Account Request): clean up form flow --- mail/api/account.py | 2 +- mail/api/admin.py | 2 +- .../mail_account_request.js | 23 +++++++++ .../mail_account_request.json | 47 +++++++++++-------- .../mail_account_request.py | 9 ++-- mail/utils/validation.py | 4 ++ 6 files changed, 60 insertions(+), 27 deletions(-) diff --git a/mail/api/account.py b/mail/api/account.py index f1b45fde..ab6c16ca 100644 --- a/mail/api/account.py +++ b/mail/api/account.py @@ -11,7 +11,7 @@ def self_signup(email: str) -> str: account_request = frappe.new_doc("Mail Account Request") account_request.email = email account_request.is_admin = 1 - account_request.send_email = True + account_request.send_invite = 1 account_request.insert(ignore_permissions=True) return account_request.name diff --git a/mail/api/admin.py b/mail/api/admin.py index 754da9c4..6ea5fe9a 100644 --- a/mail/api/admin.py +++ b/mail/api/admin.py @@ -90,7 +90,7 @@ def add_member( account_request.is_admin = cint(role == "Mail Admin") account_request.invited_by = frappe.session.user account_request.email = email - account_request.send_email = send_invite + account_request.send_invite = send_invite account_request.insert() if not send_invite: diff --git a/mail/mail/doctype/mail_account_request/mail_account_request.js b/mail/mail/doctype/mail_account_request/mail_account_request.js index 72e919b0..cfa05b81 100644 --- a/mail/mail/doctype/mail_account_request/mail_account_request.js +++ b/mail/mail/doctype/mail_account_request/mail_account_request.js @@ -10,6 +10,14 @@ frappe.ui.form.on("Mail Account Request", { frm.trigger("make_fields_read_only"); }, + is_invite(frm) { + frm.trigger("set_is_admin"); + }, + + tenant(frm) { + frm.trigger("set_domain_query"); + }, + add_actions(frm) { if (frm.doc.__islocal || frm.doc.is_verified) return; @@ -32,6 +40,12 @@ frappe.ui.form.on("Mail Account Request", { ); }, + set_is_admin(frm) { + if (!frm.doc.is_invite) { + frm.set_value("is_admin", 1); + } + }, + set_is_invite(frm) { if (frm.doc.__islocal && !frm.doc.is_invite) { frm.set_value("is_invite", 1); @@ -57,6 +71,15 @@ frappe.ui.form.on("Mail Account Request", { } }, + set_domain_query(frm) { + frm.set_query("domain_name", () => ({ + filters: { + tenant: frm.doc.tenant, + is_verified: 1, + }, + })); + }, + make_fields_read_only(frm) { if (frappe.user_roles.includes("System Manager")) return; diff --git a/mail/mail/doctype/mail_account_request/mail_account_request.json b/mail/mail/doctype/mail_account_request/mail_account_request.json index 3a32f623..e4771d83 100644 --- a/mail/mail/doctype/mail_account_request/mail_account_request.json +++ b/mail/mail/doctype/mail_account_request/mail_account_request.json @@ -7,7 +7,7 @@ "field_order": [ "section_break_ikiq", "is_invite", - "section_break_lwpm", + "user_details_section", "email", "is_admin", "column_break_hswp", @@ -15,10 +15,10 @@ "tenant", "domain_name", "account", - "email_verification_section", + "verification_details_section", + "send_invite", "is_verified", "is_expired", - "send_email", "column_break_vcxy", "request_key", "otp" @@ -49,6 +49,7 @@ "set_only_once": 1 }, { + "depends_on": "eval: doc.is_invite", "fieldname": "tenant", "fieldtype": "Link", "in_list_view": 1, @@ -60,12 +61,6 @@ "search_index": 1, "set_only_once": 1 }, - { - "default": "1", - "fieldname": "send_email", - "fieldtype": "Check", - "label": "Send Email" - }, { "fieldname": "otp", "fieldtype": "Data", @@ -74,6 +69,7 @@ "read_only": 1 }, { + "depends_on": "eval: doc.is_invite", "fieldname": "invited_by", "fieldtype": "Link", "in_list_view": 1, @@ -86,11 +82,6 @@ "search_index": 1, "set_only_once": 1 }, - { - "fieldname": "email_verification_section", - "fieldtype": "Section Break", - "label": "Email Verification" - }, { "default": "0", "depends_on": "eval: !doc.__islocal", @@ -128,10 +119,7 @@ "fieldtype": "Section Break" }, { - "fieldname": "section_break_lwpm", - "fieldtype": "Section Break" - }, - { + "depends_on": "eval: doc.is_invite", "fieldname": "account", "fieldtype": "Data", "in_list_view": 1, @@ -143,6 +131,7 @@ "set_only_once": 1 }, { + "depends_on": "eval: doc.is_invite", "fieldname": "domain_name", "fieldtype": "Link", "in_standard_filter": 1, @@ -159,12 +148,30 @@ "in_list_view": 1, "in_standard_filter": 1, "label": "Is Admin", + "read_only_depends_on": "eval: !doc.is_invite", + "set_only_once": 1 + }, + { + "fieldname": "user_details_section", + "fieldtype": "Section Break", + "label": "User Details" + }, + { + "fieldname": "verification_details_section", + "fieldtype": "Section Break", + "label": "Verification Details" + }, + { + "default": "1", + "fieldname": "send_invite", + "fieldtype": "Check", + "label": "Send Invite", "set_only_once": 1 } ], "index_web_pages_for_search": 1, "links": [], - "modified": "2025-02-07 10:52:32.187012", + "modified": "2025-02-07 13:31:25.419160", "modified_by": "Administrator", "module": "Mail", "name": "Mail Account Request", @@ -200,4 +207,4 @@ "states": [], "title_field": "email", "track_changes": 1 -} +} \ No newline at end of file diff --git a/mail/mail/doctype/mail_account_request/mail_account_request.py b/mail/mail/doctype/mail_account_request/mail_account_request.py index 1ddf8237..b6cf4fe1 100644 --- a/mail/mail/doctype/mail_account_request/mail_account_request.py +++ b/mail/mail/doctype/mail_account_request/mail_account_request.py @@ -17,8 +17,6 @@ validate_domain_owned_by_tenant, ) -# todo: clean up form - class MailAccountRequest(Document): def validate(self) -> None: @@ -35,10 +33,11 @@ def validate(self) -> None: def before_insert(self) -> None: self.set_request_key() - self.set_otp() + if not self.is_invite: + self.set_otp() def after_insert(self) -> None: - if self.send_email: + if self.send_invite: self.send_verification_email() def validate_email(self) -> None: @@ -108,7 +107,7 @@ def validate_expired(self) -> None: """Forbids action if the request has expired.""" if self.is_expired: - frappe.throw(_("This request has expired. Please create a new request.")) + frappe.throw(_("This request has expired. Please create a new one.")) def set_request_key(self) -> None: """Sets a random key for the request.""" diff --git a/mail/utils/validation.py b/mail/utils/validation.py index a130919a..552b35ed 100644 --- a/mail/utils/validation.py +++ b/mail/utils/validation.py @@ -4,6 +4,7 @@ import frappe from frappe import _ +from frappe.utils import validate_email_address as _validate_email_address from frappe.utils.caching import request_cache from validate_email_address import validate_email @@ -67,6 +68,9 @@ def is_email_assigned(email: str, ignore_doctype: str | None = None, raise_excep def is_valid_email_for_domain(email: str, domain_name: str, raise_exception: bool = False) -> bool: """Returns True if the email domain matches with the given domain else False.""" + if not _validate_email_address(email): + frappe.throw(_("Invalid email: {0}").format(frappe.bold(email))) + email_domain = email.split("@")[1] if email_domain != domain_name: From 10986ea348fef46ad1a10ae11241b00f495ce5b4 Mon Sep 17 00:00:00 2001 From: krantheman Date: Fri, 7 Feb 2025 14:16:14 +0530 Subject: [PATCH 67/69] fix: type for checkbox field --- frontend/src/stores/session.js | 4 ++-- mail/api/admin.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/frontend/src/stores/session.js b/frontend/src/stores/session.js index d44a485d..ca65f685 100644 --- a/frontend/src/stores/session.js +++ b/frontend/src/stores/session.js @@ -24,9 +24,9 @@ export const sessionStore = defineStore('mail-session', () => { onError: () => { throw new Error('Invalid email or password') }, - onSuccess: async () => { + onSuccess: () => { userResource.reload() - await userResource.promise + userResource.promise user.value = sessionUser() login.reset() diff --git a/mail/api/admin.py b/mail/api/admin.py index 6ea5fe9a..2fba469c 100644 --- a/mail/api/admin.py +++ b/mail/api/admin.py @@ -90,7 +90,7 @@ def add_member( account_request.is_admin = cint(role == "Mail Admin") account_request.invited_by = frappe.session.user account_request.email = email - account_request.send_invite = send_invite + account_request.send_invite = cint(send_invite) account_request.insert() if not send_invite: From 936a83618c8923e6b2de66e5465cc52786c1c928 Mon Sep 17 00:00:00 2001 From: s-aga-r Date: Fri, 7 Feb 2025 14:28:36 +0530 Subject: [PATCH 68/69] fix: do not explicit validate email --- mail/utils/validation.py | 4 ---- 1 file changed, 4 deletions(-) diff --git a/mail/utils/validation.py b/mail/utils/validation.py index 552b35ed..a130919a 100644 --- a/mail/utils/validation.py +++ b/mail/utils/validation.py @@ -4,7 +4,6 @@ import frappe from frappe import _ -from frappe.utils import validate_email_address as _validate_email_address from frappe.utils.caching import request_cache from validate_email_address import validate_email @@ -68,9 +67,6 @@ def is_email_assigned(email: str, ignore_doctype: str | None = None, raise_excep def is_valid_email_for_domain(email: str, domain_name: str, raise_exception: bool = False) -> bool: """Returns True if the email domain matches with the given domain else False.""" - if not _validate_email_address(email): - frappe.throw(_("Invalid email: {0}").format(frappe.bold(email))) - email_domain = email.split("@")[1] if email_domain != domain_name: From d0a39e476f77707805616115e2c0fb41aa86c644 Mon Sep 17 00:00:00 2001 From: s-aga-r Date: Fri, 7 Feb 2025 14:37:13 +0530 Subject: [PATCH 69/69] fix: validate account email --- mail/mail/doctype/mail_account_request/mail_account_request.py | 1 + 1 file changed, 1 insertion(+) diff --git a/mail/mail/doctype/mail_account_request/mail_account_request.py b/mail/mail/doctype/mail_account_request/mail_account_request.py index b6cf4fe1..5c5823f6 100644 --- a/mail/mail/doctype/mail_account_request/mail_account_request.py +++ b/mail/mail/doctype/mail_account_request/mail_account_request.py @@ -92,6 +92,7 @@ def validate_account(self) -> None: """Validates the account.""" self.account = self.account.strip().lower() + validate_email_address(self.account, True) if not is_valid_email_for_domain(self.account, self.domain_name): frappe.throw(