From b1d8d1660facbce56f2a9289faed9cf67cfb86a0 Mon Sep 17 00:00:00 2001 From: Mohammad Hosein Balkhani Date: Wed, 20 Aug 2025 12:59:44 +0330 Subject: [PATCH 01/76] ci: fix vars --- .github/workflows/release-ios.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release-ios.yml b/.github/workflows/release-ios.yml index a8cad25c2..91866b07b 100644 --- a/.github/workflows/release-ios.yml +++ b/.github/workflows/release-ios.yml @@ -97,6 +97,8 @@ jobs: VITE_ACCOUNT_CENTER_URL: ${{ vars.ACCOUNT_CENTER_URL }} VITE_FUND_URL: ${{ vars.FUND_URL }} VITE_VERIFY_URL: ${{ vars.VERIFY_URL }} + VITE_BLOCKFROST_PROJECT_ID: ${{ vars.BLOCKFROST_PROJECT_ID }} + VITE_CARDANO_PAYOUT_ADERESS: ${{ vars.CARDANO_PAYOUT_ADERESS }} - name: Extracting Google Service plist run: | @@ -108,7 +110,7 @@ jobs: - name: Extracting provisioning profile (Distribution) run: | - mkdir -p ~/Library/MobileDevice/Provisioning\ Profiles + mkdir -p ${{env.MOBILE_PROVISIONING_PATH}} echo ${{ env.IOS_PROVISIONING_PROFILE_BASE64 }} | base64 --decode > ${{env.MOBILE_PROVISIONING_PATH}}/socious-provisioing-profile-distribution-appstore.mobileprovision - name: Extracting auth key file (Apple API) @@ -122,7 +124,7 @@ jobs: - name: Extracting signing certificate run: | - echo ${{ env.IOS_DISTRIBUTION_CERT_BASE64 }} | base64 --decode > $SIGNING_CERTIFICATE_PATH + echo ${{ env.IOS_DISTRIBUTION_CERT_BASE64 }} | base64 --decode > ${{ env.SIGNING_CERTIFICATE_PATH }} - name: Extracting and Installing signing certificate (.p12) env: From 579c0147b1d343a46bc5df326665ea3228fb54f4 Mon Sep 17 00:00:00 2001 From: Iman rb Date: Thu, 2 Oct 2025 00:11:22 -0400 Subject: [PATCH 02/76] add tags to profile --- src/core/adaptors/users/index.adaptors.tsx | 13 ++++++++++ src/core/api/users/users.api.ts | 11 +++++++++ src/core/api/users/users.types.ts | 24 +++++++++++++++++++ src/core/router/router.blueprint.tsx | 4 +++- src/core/translation/locales/en/profile.json | 4 +++- src/core/translation/locales/es/profile.json | 4 +++- src/core/translation/locales/jp/profile.json | 4 +++- src/core/translation/locales/kr/profile.json | 4 +++- .../profileHeader/desktopHeader.tsx | 20 ++++++++++------ .../components/profileHeader/index.tsx | 8 ++++++- .../components/profileHeader/mobileHeader.tsx | 15 ++++++++++-- src/pages/userProfile/index.tsx | 4 ++-- src/pages/userProfile/useUserProfile.tsx | 5 ++-- 13 files changed, 101 insertions(+), 19 deletions(-) diff --git a/src/core/adaptors/users/index.adaptors.tsx b/src/core/adaptors/users/index.adaptors.tsx index dceca2286..60b052c32 100644 --- a/src/core/adaptors/users/index.adaptors.tsx +++ b/src/core/adaptors/users/index.adaptors.tsx @@ -5,10 +5,12 @@ import { addLanguage, Education, Experience, + getUserDetails, importLinkedin, LanguageCode, ProjectType, reviews, + UserDetails, } from 'src/core/api'; import { getIdentityMeta } from 'src/core/utils'; import { v4 as uuidv4 } from 'uuid'; @@ -130,3 +132,14 @@ export const getReviewsAdaptor = async (page = 1, limit = 10): Promise> => { + try { + const data = await getUserDetails(username); + return { data, error: null }; + } catch (error) { + console.error('Error in getting user details: ', error); + return { data: null, error: 'Error in getting user details' }; + } +}; diff --git a/src/core/api/users/users.api.ts b/src/core/api/users/users.api.ts index 26a463030..eb61dd4c9 100644 --- a/src/core/api/users/users.api.ts +++ b/src/core/api/users/users.api.ts @@ -1,3 +1,4 @@ +import { config } from 'src/config'; import { post, get } from 'src/core/api/http'; import { ApplicantsRes, JobsRes, MissionsRes, OffersRes } from 'src/core/api/jobs/jobs.types'; import { FilterReq, PaginateReq, SuccessRes } from 'src/core/api/types'; @@ -23,8 +24,14 @@ import { ReferReq, ImportRes, Reviews, + UserDetails, } from './users.types'; +const overwrittenConfigV3 = { + baseURL: config.baseURLV3, + withCredentials: false, +}; + export async function profile(): Promise { return (await get('user/profile')).data; } @@ -159,3 +166,7 @@ export async function importLinkedin(file: File): Promise { export async function reviews(params: PaginateReq, filters?: FilterReq): Promise { return (await get('user/reviews', { params }, filters)).data; } + +export async function getUserDetails(username: string): Promise { + return (await get(`users/by-username/${username}`, { ...overwrittenConfigV3 })).data; +} diff --git a/src/core/api/users/users.types.ts b/src/core/api/users/users.types.ts index 7a7186b12..52e11eaca 100644 --- a/src/core/api/users/users.types.ts +++ b/src/core/api/users/users.types.ts @@ -268,3 +268,27 @@ export interface Review { export interface Reviews extends PaginateRes { items: Review[]; } + +//FIXME Use this type after migrating to v3 +export interface UserDetails { + id: string; + first_name: string; + last_name: string; + username: string; + mission: string | null; + impact_points: number; + social_causes: string[]; + followers: number; + followings: number; + skills: string[]; + open_to_work: boolean; + open_to_volunteer: boolean; + identity_verified: boolean; + events: string[]; + tags: string[]; + avatar_id: string | null; + avatar: Media | null; + cover_id: string | null; + cover: Media | null; + created_at: string; +} diff --git a/src/core/router/router.blueprint.tsx b/src/core/router/router.blueprint.tsx index 4ca87c0ad..3b335ff8c 100644 --- a/src/core/router/router.blueprint.tsx +++ b/src/core/router/router.blueprint.tsx @@ -40,7 +40,7 @@ import { Layout as NowruzLayout } from 'src/modules/layout'; import FallBack from 'src/pages/fallback/fallback'; import { RootState } from 'src/store'; -import { getReviewsAdaptor } from '../adaptors/users/index.adaptors'; +import { getReviewsAdaptor, getUserDetailsAdaptor } from '../adaptors/users/index.adaptors'; import { DeepLinks } from '../deepLinks'; import { checkSearchFilters } from '../utils'; @@ -84,12 +84,14 @@ export const blueprint: RouteObject[] = [ kind: 'SERVICE', }); const reviews = await getReviewsAdaptor(1, 5); + const userDetails = await getUserDetailsAdaptor(params.id); // Keep this, it might be needed in the future // const [userBadges, missions] = await Promise.all([badges(user.id), userMissions(user.id)]); return { user, services: services.data, reviews: reviews.data, + userTags: userDetails.data?.tags || [], // badges: userBadges, // missions, }; diff --git a/src/core/translation/locales/en/profile.json b/src/core/translation/locales/en/profile.json index 7b2bcefae..73e2af763 100644 --- a/src/core/translation/locales/en/profile.json +++ b/src/core/translation/locales/en/profile.json @@ -16,7 +16,9 @@ "request-sent": "Request sent", "connect": "Connect", "message": "Message" - } + }, + "available-for-work": "Available for work", + "hiring": "Hiring" }, "main-info": { "connections": "connections", diff --git a/src/core/translation/locales/es/profile.json b/src/core/translation/locales/es/profile.json index ef9a47319..01de7fc1c 100644 --- a/src/core/translation/locales/es/profile.json +++ b/src/core/translation/locales/es/profile.json @@ -16,7 +16,9 @@ "request-sent": "Solicitud enviada", "connect": "Conectar", "message": "Mensaje" - } + }, + "available-for-work": "Disponible para trabajar", + "hiring": "Contratando" }, "main-info": { "connections": "conexiones", diff --git a/src/core/translation/locales/jp/profile.json b/src/core/translation/locales/jp/profile.json index a3b3f30f5..63e2ce2f5 100644 --- a/src/core/translation/locales/jp/profile.json +++ b/src/core/translation/locales/jp/profile.json @@ -16,7 +16,9 @@ "request-sent": "リクエスト送信済み", "connect": "接続", "message": "メッセージ" - } + }, + "available-for-work": "仕事を探しています", + "hiring": "採用中" }, "main-info": { "connections": "つながり", diff --git a/src/core/translation/locales/kr/profile.json b/src/core/translation/locales/kr/profile.json index 19f027dd6..0c3f75d4f 100644 --- a/src/core/translation/locales/kr/profile.json +++ b/src/core/translation/locales/kr/profile.json @@ -16,7 +16,9 @@ "request-sent": "요청 전송됨", "connect": "연결", "message": "메시지" - } + }, + "available-for-work": "구직 중", + "hiring": "채용 중" }, "main-info": { "connections": "연결", diff --git a/src/modules/userProfile/components/profileHeader/desktopHeader.tsx b/src/modules/userProfile/components/profileHeader/desktopHeader.tsx index 039117344..0ab47fdc9 100644 --- a/src/modules/userProfile/components/profileHeader/desktopHeader.tsx +++ b/src/modules/userProfile/components/profileHeader/desktopHeader.tsx @@ -1,6 +1,6 @@ import React from 'react'; import { ConnectStatus, Organization, User } from 'src/core/api'; -import { getIdentityMeta } from 'src/core/utils'; +import { getIdentityMeta, translate } from 'src/core/utils'; import { ThreeDotsButton } from 'src/modules/connections/threeDotsButton'; import { AvatarProfile } from 'src/modules/general/components/avatarProfile'; import { Button } from 'src/modules/general/components/Button'; @@ -26,11 +26,11 @@ interface DesktopHeaderProps { displayConnectButton: () => boolean; displayMessageButton: () => boolean; displayThreeDotsButton: () => boolean; + userTags: string[]; } export const DesktopHeader: React.FC = ({ identity, myProfile, - isLoggedIn, connectStatus, handleOpenEditInfoModal, handleOpenQRCodeModal, @@ -41,6 +41,7 @@ export const DesktopHeader: React.FC = ({ displayConnectButton, displayMessageButton, displayThreeDotsButton, + userTags, }) => { const { username, name, profileImage } = getIdentityMeta(identity); @@ -59,7 +60,7 @@ export const DesktopHeader: React.FC = ({
{name}
{type === 'users' && (identity as User).open_to_work && ( } @@ -69,13 +70,16 @@ export const DesktopHeader: React.FC = ({ {type === 'organizations' && (identity as Organization).hiring && ( } shape="sharp" /> )} + + {type === 'users' && + userTags.map(tag => )}
{username}
@@ -88,7 +92,7 @@ export const DesktopHeader: React.FC = ({ onClick={handleOpenQRCodeModal} > - Share + {translate('profile-header.actions.share')} {displayMessageButton() && ( )} {displayConnectButton() && ( @@ -108,7 +112,9 @@ export const DesktopHeader: React.FC = ({ style={{ height: '40px', fontSize: '14px' }} onClick={() => setOpenConnectRequest(true)} > - {connectStatus === 'PENDING' ? 'Request sent' : 'Connect'} + {connectStatus === 'PENDING' + ? translate('profile-header.actions.request-sent') + : translate('profile-header.actions.connect')} )} {displayThreeDotsButton() && } diff --git a/src/modules/userProfile/components/profileHeader/index.tsx b/src/modules/userProfile/components/profileHeader/index.tsx index fe99f6611..32c2162e5 100644 --- a/src/modules/userProfile/components/profileHeader/index.tsx +++ b/src/modules/userProfile/components/profileHeader/index.tsx @@ -16,7 +16,11 @@ import { EditImageModal } from '../../containers/editImage'; import { EditInfoOrgModal } from '../../containers/editInfoOrg'; import { ShareProfile } from '../../containers/shareProfile'; -export const ProfileHeader = () => { +interface ProfileHeaderProps { + userTags?: string[]; +} + +export const ProfileHeader = ({ userTags = [] }: ProfileHeaderProps) => { const { identity, identityType, @@ -100,6 +104,7 @@ export const ProfileHeader = () => { displayConnectButton={displayConnectButton} displayMessageButton={displayMessageButton} displayThreeDotsButton={displayThreeDotsButton} + userTags={userTags} /> { myProfile={myProfile} handleOpenEditInfoModal={handleOpenEditInfoModal} handleOpenEditAvatar={handleOpenEditAvatar} + userTags={userTags} />
diff --git a/src/modules/userProfile/components/profileHeader/mobileHeader.tsx b/src/modules/userProfile/components/profileHeader/mobileHeader.tsx index a3e4aae69..adfdffc7c 100644 --- a/src/modules/userProfile/components/profileHeader/mobileHeader.tsx +++ b/src/modules/userProfile/components/profileHeader/mobileHeader.tsx @@ -1,7 +1,8 @@ import React from 'react'; import { Organization, User } from 'src/core/api'; -import { getIdentityMeta } from 'src/core/utils'; +import { getIdentityMeta, translate } from 'src/core/utils'; import { AvatarProfile } from 'src/modules/general/components/avatarProfile'; +import { Chip } from 'src/modules/general/components/Chip'; import { Dot } from 'src/modules/general/components/dot'; import { IconButton } from 'src/modules/general/components/iconButton'; import variables from 'src/styles/constants/_exports.module.scss'; @@ -14,6 +15,7 @@ interface MobileHeaderProps { handleOpenEditInfoModal: () => void; handleOpenEditAvatar: () => void; type: 'users' | 'organizations'; + userTags: string[]; } export const MobileHeader: React.FC = ({ identity, @@ -21,6 +23,7 @@ export const MobileHeader: React.FC = ({ handleOpenEditInfoModal, handleOpenEditAvatar, type, + userTags, }) => { const { profileImage, name, username } = getIdentityMeta(identity); return ( @@ -48,7 +51,15 @@ export const MobileHeader: React.FC = ({ {type === 'users' && (identity as User).open_to_work && (
- Available for work + {translate('profile-header.available-for-work')} +
+ )} + + {type === 'users' && !!userTags.length && ( +
+ {userTags.map(tag => ( + + ))}
)} diff --git a/src/pages/userProfile/index.tsx b/src/pages/userProfile/index.tsx index 4c4bb3d22..00e51acee 100644 --- a/src/pages/userProfile/index.tsx +++ b/src/pages/userProfile/index.tsx @@ -6,11 +6,11 @@ import css from './userProfile.module.scss'; import { useUserProfile } from './useUserProfile'; export const UserProfile = () => { - const { tabs, activeTabIndex } = useUserProfile(); + const { tabs, activeTabIndex, userTags } = useUserProfile(); return (
- +
- setOpenEmailModal(false)} handleSend={sendInviteEmail} emails={emails} setEmails={setEmails} - /> + /> */} setOpenSentModal(false)} - title={translate('referral-sent')} - message={translate('referral-tell-contacts')} + title={translate('refer-sent')} + message={translate('refer-tell-contacts')} closeButtn={true} - closeButtonLabel={translate('referral-close')} + closeButtonLabel={translate('refer-close')} /> ); diff --git a/src/modules/refer/referCard/referCard.module.scss b/src/modules/refer/referCard/referCard.module.scss deleted file mode 100644 index 62d2439df..000000000 --- a/src/modules/refer/referCard/referCard.module.scss +++ /dev/null @@ -1,14 +0,0 @@ -@import 'src/styles/constants/_primitives.scss'; - -.copyBtn { - width: fit-content; - height: 100%; - border: none; - display: flex; - gap: 0.5rem; - align-items: center; - justify-content: center; - color: $color-grey-700; - cursor: pointer; - background-color: $color-white; -} diff --git a/src/modules/refer/referCard/useReferCard.tsx b/src/modules/refer/referCard/useReferCard.tsx index be8d12c7b..836d280d8 100644 --- a/src/modules/refer/referCard/useReferCard.tsx +++ b/src/modules/refer/referCard/useReferCard.tsx @@ -1,51 +1,48 @@ import { useState } from 'react'; import { useSelector } from 'react-redux'; import { config } from 'src/config'; -import { CurrentIdentity, sendRefers, UserMeta, OrgMeta } from 'src/core/api'; +import { CurrentIdentity, UserMeta, OrgMeta } from 'src/core/api'; import { translate } from 'src/core/utils'; import { RootState } from 'src/store'; export const useReferCard = (referType: 'organization' | 'talent') => { - const account = useSelector(state => + const currentIdentity = useSelector(state => state.identity.entities.find(identity => identity.current), - )?.meta as UserMeta | OrgMeta; - const [openEmailModal, setOpenEmailModal] = useState(false); + ); + const userAccount = currentIdentity?.meta as UserMeta; + const orgAccount = currentIdentity?.meta as OrgMeta; + const currentIdentityType = currentIdentity?.type; + const currentIdentityUsername = + currentIdentityType === 'organizations' ? orgAccount?.shortname : userAccount?.username; + // const [openEmailModal, setOpenEmailModal] = useState(false); const [openSentModal, setOpenSentModal] = useState(false); - const [emails, setEmails] = useState([]); + // const [emails, setEmails] = useState([]); - const title = referType === 'organization' ? translate('referral-refer-org') : translate('referral-refer-talent'); - const url = - referType === 'organization' - ? `${config.appBaseURL}referral/${(account as OrgMeta)?.shortname || (account as UserMeta)?.username}/org` - : `${config.appBaseURL}referral/${(account as OrgMeta)?.shortname || (account as UserMeta)?.username}/talent`; - const subtitle = referType === 'organization' ? translate('referral-org-link') : translate('referral-talent-link'); + const title = referType === 'organization' ? translate('refer-refer-org') : translate('refer-refer-talent'); + const subtitle = referType === 'organization' ? translate('refer-org-link') : translate('refer-talent-link'); + const url = config.appBaseURL + `referral?referred_by=${currentIdentityUsername}`; const handleCopy = () => { navigator.clipboard.writeText(url); }; - const sendInviteEmail = async () => { - try { - await sendRefers({ emails }); - setEmails([]); - setOpenEmailModal(false); - setOpenSentModal(true); - } catch (e) { - console.log('Error in sending refers:', e); - } - }; + // const sendInviteEmail = async () => { + // try { + // await sendRefers({ emails }); + // setEmails([]); + // setOpenEmailModal(false); + // setOpenSentModal(true); + // } catch (e) { + // console.log('Error in sending refers:', e); + // } + // }; return { - openEmailModal, - setOpenEmailModal, handleCopy, title, subtitle, - verified: (account as UserMeta).identity_verified || (account as OrgMeta).verified, - sendInviteEmail, + verified: userAccount?.identity_verified || orgAccount?.verified, url, - emails, - setEmails, openSentModal, setOpenSentModal, }; diff --git a/src/pages/refer/index.tsx b/src/pages/refer/index.tsx index bbb8bc564..4a65d4583 100644 --- a/src/pages/refer/index.tsx +++ b/src/pages/refer/index.tsx @@ -20,15 +20,15 @@ export const Refer = () => { verificationStatus === 'PENDING' && type === 'organizations' ? ( ) : ( ) @@ -36,15 +36,15 @@ export const Refer = () => { !hideVerifyBanner && ( ) @@ -52,19 +52,19 @@ export const Refer = () => {
- {translate('referral-header')} + {translate('refer-header')} - {translate('referral-title')} + {translate('refer-title')}
- {translate('referral-subtitle')} + {translate('refer-subtitle')} { + const navigate = useNavigate(); + const [searchParams] = useSearchParams(); + const code = searchParams.get('code'); + const referredBy = searchParams.get('referred_by') || ''; + const identityId = searchParams.get('identity_id'); + + const fetchAuthURL = async () => { + const { error, data } = await getAuthUrlAdaptor(config.appBaseURL + '/oauth/socious'); + if (error) return; + else if (data) return data.url; + }; + + async function onLoginSucceed(loginRes: AuthRes) { + await setAuthParams(loginRes, true); + if (typeof identityId === 'string') switchAccount(identityId); + navigate('/'); + return loginRes; + } + + useEffect(() => { + const handleSociousOauth = async (authCode: string) => { + const { error, data } = await sociousOauthAdaptor(authCode); + if (error) navigate('/intro'); + else if (data) onLoginSucceed(data); + }; + + const redirectToAuthURL = async () => { + const authURL = await fetchAuthURL(); + if (authURL) { + const url = new URL(authURL); + url.searchParams.set('auth_mode', 'register'); + url.searchParams.set('referred_by', referredBy); + window.location.href = url.toString(); + } + }; + + if (!code) { + redirectToAuthURL(); + return; + } + + handleSociousOauth(code); + }, [code]); + + return ( +
+
+ Socious Work Logo +

{translate('refer-invited')}

+

+ @{referredBy} +
+ {translate('refer-who-invited')} +
+ {translate('refer-register')} +

+
+ + {translate('refer-redirect')} +
+
+
+ ); +}; From 08a8accd85e9b7cbab05ab407e9948224ddede9d Mon Sep 17 00:00:00 2001 From: Sanaz Mahmoudi Date: Mon, 28 Jul 2025 18:17:43 +0330 Subject: [PATCH 26/76] fix: env temp for socious verify url --- .env.tmp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.env.tmp b/.env.tmp index 116ab48cf..3ca258d58 100644 --- a/.env.tmp +++ b/.env.tmp @@ -8,7 +8,7 @@ VITE_STRIPE_PUBLIC_KEY='' VITE_APP_URL=https://app.socious.io/ VITE_ACCOUNT_CENTER_URL=https://dev-id.socious.io/ VITE_FUND_URL=https://devfund.socious.org/ -VITE_VERIFY_URL=https://wallet.socious.io/ +VITE_VERIFY_URL=https://devapp.shinid.com/ VITE_CLIENT_SECRET_TOKEN_CLIENT_ID='' VITE_CLIENT_SECRET_TOKEN_REDIRECT_URL=https://app.socious.io/jobIndexing STORYBOOK_FIGMA_ACCESS_TOKEN='' From 0708ea29e2e7ab9352aade414a4b8b57f4de57a2 Mon Sep 17 00:00:00 2001 From: Sanaz Mahmoudi Date: Tue, 12 Aug 2025 19:22:37 +0330 Subject: [PATCH 27/76] fix: separate sent and received requests tabs --- src/core/router/router.blueprint.tsx | 4 +- .../translation/locales/en/connections.json | 3 +- .../translation/locales/es/connections.json | 3 +- .../translation/locales/jp/connections.json | 3 +- .../translation/locales/kr/connections.json | 3 +- src/modules/connections/requestTab/index.tsx | 60 +++++++++++-------- .../connections/requestTab/index.types.ts | 3 + .../{useRequetTab.tsx => useRequestTab.tsx} | 30 ++++++---- src/pages/connections/index.tsx | 2 +- src/pages/connections/useConnections.tsx | 3 +- 10 files changed, 70 insertions(+), 44 deletions(-) create mode 100644 src/modules/connections/requestTab/index.types.ts rename src/modules/connections/requestTab/{useRequetTab.tsx => useRequestTab.tsx} (68%) diff --git a/src/core/router/router.blueprint.tsx b/src/core/router/router.blueprint.tsx index d7355d9ac..2c4bd0cd9 100644 --- a/src/core/router/router.blueprint.tsx +++ b/src/core/router/router.blueprint.tsx @@ -609,9 +609,9 @@ export const blueprint: RouteObject[] = [ return { connections }; }, async lazy() { - const { Connctions } = await import('src/pages/connections'); + const { Connections } = await import('src/pages/connections'); return { - Component: Protect(Connctions, 'both'), + Component: Protect(Connections, 'both'), }; }, }, diff --git a/src/core/translation/locales/en/connections.json b/src/core/translation/locales/en/connections.json index 8c16760e6..06b284bfa 100644 --- a/src/core/translation/locales/en/connections.json +++ b/src/core/translation/locales/en/connections.json @@ -14,7 +14,8 @@ "connect-unfollow-alert": "Are you sure you want to unfollow {{name}}?", "connect-followers": "Followers", "connect-following": "Following", - "connect-requests": "Requests", + "connect-received-requests": "Received", + "connect-sent-requests": "Sent", "connect-accept": "Accept", "connect-decline": "Decline", "connect-view": "View", diff --git a/src/core/translation/locales/es/connections.json b/src/core/translation/locales/es/connections.json index 3bbfb4eb3..70de32517 100644 --- a/src/core/translation/locales/es/connections.json +++ b/src/core/translation/locales/es/connections.json @@ -14,7 +14,8 @@ "connect-unfollow-alert": "¿Estás seguro de que deseas dejar de seguir a {{name}}?", "connect-followers": "Seguidores", "connect-following": "Siguiendo", - "connect-requests": "Solicitudes", + "connect-received-requests": "Recibidas", + "connect-sent-requests": "Enviadas", "connect-accept": "Aceptar", "connect-decline": "Rechazar", "connect-view": "Ver", diff --git a/src/core/translation/locales/jp/connections.json b/src/core/translation/locales/jp/connections.json index 712df499b..58285fdec 100644 --- a/src/core/translation/locales/jp/connections.json +++ b/src/core/translation/locales/jp/connections.json @@ -14,7 +14,8 @@ "connect-unfollow-alert": "{{name}} のフォローを解除してもよろしいですか?", "connect-followers": "フォロワー", "connect-following": "フォロー中", - "connect-requests": "リクエスト", + "connect-received-requests": "受信", + "connect-sent-requests": "送信", "connect-accept": "承認", "connect-decline": "拒否", "connect-view": "表示", diff --git a/src/core/translation/locales/kr/connections.json b/src/core/translation/locales/kr/connections.json index 45e1b5eb3..9e55fc0cc 100644 --- a/src/core/translation/locales/kr/connections.json +++ b/src/core/translation/locales/kr/connections.json @@ -14,7 +14,8 @@ "connect-unfollow-alert": "{{name}} 님을 언팔로우하시겠습니까?", "connect-followers": "팔로워", "connect-following": "팔로잉", - "connect-requests": "요청", + "connect-received-requests": "받음", + "connect-sent-requests": "보냄", "connect-accept": "수락", "connect-decline": "거절", "connect-view": "보기", diff --git a/src/modules/connections/requestTab/index.tsx b/src/modules/connections/requestTab/index.tsx index 739e971d6..9c6e508d7 100644 --- a/src/modules/connections/requestTab/index.tsx +++ b/src/modules/connections/requestTab/index.tsx @@ -6,10 +6,11 @@ import { Modal } from 'src/modules/general/components/modal'; import { Pagination } from 'src/modules/general/components/Pagination'; import { PaginationMobile } from 'src/modules/general/components/paginationMobile'; +import { RequestTabProps } from './index.types'; import css from './requestTab.module.scss'; -import { useRequestTab } from './useRequetTab'; +import { useRequestTab } from './useRequestTab'; -export const RequestTab = () => { +export const RequestTab: React.FC = ({ requestType }) => { const { connectRequests, page, @@ -22,10 +23,15 @@ export const RequestTab = () => { setOpenAcceptModal, handleOpenAcceptModal, selectedRequest, - } = useRequestTab(); - - const requester = selectedRequest?.requester; - const { profileImage, username } = getIdentityMeta(requester); + isRequestedType, + getAccount, + } = useRequestTab(requestType); + const { + profileImage: img = '', + type = 'users', + name = '', + username = '', + } = getIdentityMeta(selectedRequest?.requester); const footerJsx = (
@@ -41,14 +47,14 @@ export const RequestTab = () => { return (
{connectRequests.map(item => { - const account = item.requester; - const { username, profileImage, type, name } = getIdentityMeta(account); + const account = getAccount(item); + const { profileImage: img = '', type = 'users', name = '', username = '' } = getIdentityMeta(account); const accountItem = { id: account?.id || '', - img: profileImage || '', - type: type || 'users', - name: name || '', - username: (username || '').replace('@', ''), + img, + type, + name, + username: username.replace('@', ''), }; return ( @@ -63,14 +69,16 @@ export const RequestTab = () => { > {translate('connect-decline')} - + {isRequestedType && ( + + )}
); @@ -101,17 +109,17 @@ export const RequestTab = () => {
- {translate('connect-accept-alert', { name: selectedRequest?.requester.meta.name })} + {translate('connect-accept-alert', { name })}
{selectedRequest?.text}
diff --git a/src/modules/connections/requestTab/index.types.ts b/src/modules/connections/requestTab/index.types.ts new file mode 100644 index 000000000..d4de35e97 --- /dev/null +++ b/src/modules/connections/requestTab/index.types.ts @@ -0,0 +1,3 @@ +export interface RequestTabProps { + requestType: 'REQUESTED' | 'REQUESTER'; +} diff --git a/src/modules/connections/requestTab/useRequetTab.tsx b/src/modules/connections/requestTab/useRequestTab.tsx similarity index 68% rename from src/modules/connections/requestTab/useRequetTab.tsx rename to src/modules/connections/requestTab/useRequestTab.tsx index e7d42dc61..dc1ee7733 100644 --- a/src/modules/connections/requestTab/useRequetTab.tsx +++ b/src/modules/connections/requestTab/useRequestTab.tsx @@ -3,7 +3,11 @@ import { useSelector } from 'react-redux'; import { Connection, CurrentIdentity, connectRequestAccept, connectRequestReject, connections } from 'src/core/api'; import { RootState } from 'src/store'; -export const useRequestTab = () => { +import { RequestTabProps } from './index.types'; + +export const useRequestTab = (requestType: RequestTabProps['requestType']) => { + const PER_PAGE = 10; + const isRequestedType = requestType === 'REQUESTED'; const currentIdentity = useSelector(state => state.identity.entities.find(item => item.current), ); @@ -11,16 +15,15 @@ export const useRequestTab = () => { const [page, setPage] = useState(1); const [totalCount, setTotalCount] = useState(0); const [openAcceptModal, setOpenAcceptModal] = useState(false); - const [requestedId, setRequestedId] = useState(''); - const [selectedRequest, setselectedRequest] = useState(); - const PER_PAGE = 10; + const [selectedRequest, setSelectedRequest] = useState(); + const selectedId = selectedRequest?.id || ''; const fetchData = async () => { const requestRes = await connections({ page, limit: PER_PAGE, 'filter.status': 'PENDING', - 'filter.requested_id': currentIdentity?.id, + [isRequestedType ? 'filter.requested_id' : 'filter.requester_id']: currentIdentity?.id, }); setConnectRequests(requestRes.items); @@ -29,11 +32,12 @@ export const useRequestTab = () => { useEffect(() => { fetchData(); - }, [page]); + }, [page, isRequestedType]); const handleAccept = async () => { + if (!selectedId) return; try { - await connectRequestAccept(requestedId); + await connectRequestAccept(selectedId); await fetchData(); } catch (e) { console.log(e); @@ -42,8 +46,9 @@ export const useRequestTab = () => { }; const handleReject = async (id?: string) => { + const connectionId = id || selectedId; + if (!connectionId) return; try { - const connectionId = id || requestedId; await connectRequestReject(connectionId); await fetchData(); } catch (e) { @@ -53,12 +58,15 @@ export const useRequestTab = () => { }; const handleOpenAcceptModal = (id: string) => { - setRequestedId(id); const req = connectRequests.find(item => item.id === id); - setselectedRequest(req); + setSelectedRequest(req); setOpenAcceptModal(true); }; + const getAccount = (request: Connection | undefined) => { + return isRequestedType ? request?.requester : request?.requested; + }; + return { page, setPage, @@ -71,5 +79,7 @@ export const useRequestTab = () => { setOpenAcceptModal, handleOpenAcceptModal, selectedRequest, + isRequestedType, + getAccount, }; }; diff --git a/src/pages/connections/index.tsx b/src/pages/connections/index.tsx index 0de286998..91b5e5073 100644 --- a/src/pages/connections/index.tsx +++ b/src/pages/connections/index.tsx @@ -4,7 +4,7 @@ import { HorizontalTabs } from 'src/modules/general/components/horizontalTabs'; import css from './connections.module.scss'; import { useConnections } from './useConnections'; -export const Connctions = () => { +export const Connections = () => { const { tabs, activeIndex } = useConnections(); return (
diff --git a/src/pages/connections/useConnections.tsx b/src/pages/connections/useConnections.tsx index 0ebd895ac..56b00271e 100644 --- a/src/pages/connections/useConnections.tsx +++ b/src/pages/connections/useConnections.tsx @@ -13,7 +13,8 @@ export const useConnections = () => { { label: translate('connect-title'), content: }, { label: translate('connect-followings'), content: }, { label: translate('connect-followers'), content: }, - { label: translate('connect-requests'), content: }, + { label: translate('connect-received-requests'), content: }, + { label: translate('connect-sent-requests'), content: }, { label: translate('connect-blocked'), content: }, ]; From 377df8284c87f6bc29c82f820053f86f8a3858f0 Mon Sep 17 00:00:00 2001 From: satanmourner Date: Thu, 14 Aug 2025 22:44:27 +0330 Subject: [PATCH 28/76] feat: notFound and fallback error pages --- src/core/router/router.blueprint.tsx | 6 +-- src/core/translation/locales/en/general.json | 13 ++++++- src/core/translation/locales/es/general.json | 13 ++++++- src/core/translation/locales/jp/general.json | 13 ++++++- src/core/translation/locales/kr/general.json | 13 ++++++- src/main.tsx | 8 ++-- src/pages/error/fallback/fallback.module.scss | 34 ++++++++++++++++ .../{ => error}/fallback/fallback.services.ts | 0 src/pages/error/fallback/fallback.tsx | 30 ++++++++++++++ src/pages/error/notFound/index.module.scss | 30 ++++++++++++++ src/pages/error/notFound/index.tsx | 22 +++++++++++ src/pages/fallback/fallback.module.scss | 39 ------------------- src/pages/fallback/fallback.tsx | 31 --------------- 13 files changed, 166 insertions(+), 86 deletions(-) create mode 100644 src/pages/error/fallback/fallback.module.scss rename src/pages/{ => error}/fallback/fallback.services.ts (100%) create mode 100644 src/pages/error/fallback/fallback.tsx create mode 100644 src/pages/error/notFound/index.module.scss create mode 100644 src/pages/error/notFound/index.tsx delete mode 100644 src/pages/fallback/fallback.module.scss delete mode 100644 src/pages/fallback/fallback.tsx diff --git a/src/core/router/router.blueprint.tsx b/src/core/router/router.blueprint.tsx index 2c4bd0cd9..cfafa7363 100644 --- a/src/core/router/router.blueprint.tsx +++ b/src/core/router/router.blueprint.tsx @@ -35,9 +35,9 @@ import { cards, } from 'src/core/api'; import { search as searchReq } from 'src/core/api/site/site.api'; -import { translate } from 'src/core/utils'; import { Layout as NowruzLayout } from 'src/modules/layout'; -import FallBack from 'src/pages/fallback/fallback'; +import FallBack from 'src/pages/error/fallback/fallback'; +import { NotFound } from 'src/pages/error/notFound'; import { RootState } from 'src/store'; import { getReviewsAdaptor, getUserDetailsAdaptor } from '../adaptors/users/index.adaptors'; @@ -812,7 +812,7 @@ export const blueprint: RouteObject[] = [ }, { path: '*', - element:
{translate('router-not-found')}
, + element: , }, ]; diff --git a/src/core/translation/locales/en/general.json b/src/core/translation/locales/en/general.json index d74c6ec82..b098f63f5 100644 --- a/src/core/translation/locales/en/general.json +++ b/src/core/translation/locales/en/general.json @@ -23,6 +23,15 @@ "expiry": "Expiry", "ending": "ending in" }, - "router-not-found": "Page not found :(", - "general-success-continue": "Continue" + "general-success-continue": "Continue", + "general-error-not-found": { + "header": "404 - Page Not Found", + "subheader": "Oops! The page you're looking for doesn't exist on", + "go-to-home-btn": "Go to Home" + }, + "general-error-internal": { + "header": "Internal Server Error", + "subheader": "We apologize for the inconvenience. Please try again later", + "home-btn": " Home Page" + } } diff --git a/src/core/translation/locales/es/general.json b/src/core/translation/locales/es/general.json index f40038944..f90620d81 100644 --- a/src/core/translation/locales/es/general.json +++ b/src/core/translation/locales/es/general.json @@ -23,6 +23,15 @@ "expiry": "Vencimiento", "ending": "termina en" }, - "router-not-found": "Página no encontrada :(", - "general-success-continue": "Continuar" + "general-success-continue": "Continuar", + "general-error-not-found": { + "header": "404 - Página no encontrada", + "subheader": "¡Vaya! La página que buscas no existe en", + "go-to-home-btn": "Ir a Inicio" + }, + "geneal-error-internal": { + "header": "Error Interno del Servidor", + "subheader": "Nos disculpamos por las molestias. Por favor, inténtelo de nuevo más tarde", + "home-btn": "Página Principal" + } } diff --git a/src/core/translation/locales/jp/general.json b/src/core/translation/locales/jp/general.json index 716cd0a07..018be89f5 100644 --- a/src/core/translation/locales/jp/general.json +++ b/src/core/translation/locales/jp/general.json @@ -23,6 +23,15 @@ "expiry": "有効期限", "ending": "下4桁" }, - "router-not-found": "ページが見つかりません :(", - "general-success-continue": "続行" + "general-success-continue": "続行", + "general-error-not-found": { + "header": "404 - ページが見つかりません", + "subheader": "お探しのページは存在しません", + "go-to-home-btn": "ホームに戻る" + }, + "general-error-internal": { + "header": "内部サーバーエラー", + "subheader": "ご不便をおかけして申し訳ありません。後でもう一度お試しください", + "home-btn": "ホームページ" + } } diff --git a/src/core/translation/locales/kr/general.json b/src/core/translation/locales/kr/general.json index 9cb0a50a7..5271a6f0c 100644 --- a/src/core/translation/locales/kr/general.json +++ b/src/core/translation/locales/kr/general.json @@ -23,6 +23,15 @@ "expiry": "유효기간", "ending": "끝자리" }, - "router-not-found": "페이지를 찾을 수 없습니다 :(", - "general-success-continue": "계속" + "general-success-continue": "계속", + "general-error-not-found": { + "header": "404 - 페이지를 찾을 수 없습니다", + "subheader": "죄송합니다. 요청하신 페이지를 찾을 수 없습니다", + "go-to-home-btn": "홈으로 이동" + }, + "general-error-internal": { + "header": "내부 서버 오류", + "subheader": "불편을 끼쳐드려 죄송합니다. 나중에 다시 시도해 주세요", + "home-btn": "홈 페이지" + } } diff --git a/src/main.tsx b/src/main.tsx index 4aef5b49b..371f6775e 100644 --- a/src/main.tsx +++ b/src/main.tsx @@ -6,25 +6,23 @@ import { init } from 'src/core/datadog'; import App from './App'; import './index.scss'; -import FallBack from './pages/fallback/fallback'; -import { logError } from './pages/fallback/fallback.services'; +import FallBack from './pages/error/fallback/fallback'; +import { logError } from './pages/error/fallback/fallback.services'; const VERSION = '7.0.0'; init(VERSION); ReactDOM.createRoot(document.getElementById('root') as HTMLElement).render( - // <> - Socious + {'Socious'} } onError={logError}> , - // ); defineCustomElements(window); diff --git a/src/pages/error/fallback/fallback.module.scss b/src/pages/error/fallback/fallback.module.scss new file mode 100644 index 000000000..1f8d27c38 --- /dev/null +++ b/src/pages/error/fallback/fallback.module.scss @@ -0,0 +1,34 @@ +@import 'src/styles/constants/_primitives.scss'; + +.container { + position: fixed; + width: 100vw; + height: 100vh; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + gap: 1.5rem; + padding: 3rem 1.5rem; + text-align: center; + + .error { + &__code { + font-size: 80px; + font-weight: 800; + color: $color-error-600; + } + + &__msg { + font-size: 48px; + font-weight: 600; + color: $color-grey-900; + } + + &__details { + font-size: 24px; + color: $color-grey-700; + margin-bottom: 1rem; + } + } +} diff --git a/src/pages/fallback/fallback.services.ts b/src/pages/error/fallback/fallback.services.ts similarity index 100% rename from src/pages/fallback/fallback.services.ts rename to src/pages/error/fallback/fallback.services.ts diff --git a/src/pages/error/fallback/fallback.tsx b/src/pages/error/fallback/fallback.tsx new file mode 100644 index 000000000..8ac6f49c4 --- /dev/null +++ b/src/pages/error/fallback/fallback.tsx @@ -0,0 +1,30 @@ +import { useNavigate } from 'react-router-dom'; +import { translate } from 'src/core/utils'; +import { Button } from 'src/modules/general/components/Button'; + +import styles from './fallback.module.scss'; + +const FallBack = () => { + const navigate = useNavigate(); + const flag = 'refreshed'; + const refreshed = sessionStorage.getItem(flag); + + if (!refreshed) { + sessionStorage.setItem(flag, `${new Date().getTime()}`); + window.location.reload(); + return <>; + } + + return ( +
+
500
+
{translate('general-error-internal.header')}
+
{translate('general-error-internal.subheader')}
+ +
+ ); +}; + +export default FallBack; diff --git a/src/pages/error/notFound/index.module.scss b/src/pages/error/notFound/index.module.scss new file mode 100644 index 000000000..34f287a90 --- /dev/null +++ b/src/pages/error/notFound/index.module.scss @@ -0,0 +1,30 @@ +@import 'src/styles/constants/_primitives.scss'; + +.container { + height: 100vh; + width: 100vw; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + gap: 1.5rem; + padding: 3rem 1.5rem; + text-align: center; + + .header { + font-size: 3rem; + font-weight: 800; + color: $color-primary-700; + } + + .subheader { + font-size: 1rem; + color: $color-grey-700; + margin-bottom: 1rem; + } + + .brand { + font-weight: 600; + color: $color-grey-900; + } +} diff --git a/src/pages/error/notFound/index.tsx b/src/pages/error/notFound/index.tsx new file mode 100644 index 000000000..e000882a0 --- /dev/null +++ b/src/pages/error/notFound/index.tsx @@ -0,0 +1,22 @@ +import { useNavigate } from 'react-router-dom'; +import { translate } from 'src/core/utils'; +import { Button } from 'src/modules/general/components/Button'; + +import styles from './index.module.scss'; + +export const NotFound = () => { + const navigate = useNavigate(); + + return ( +
+

{translate('general-error-not-found.header')}

+

+ {translate('general-error-not-found.subheader')} + {'Socious'}. +

+ +
+ ); +}; diff --git a/src/pages/fallback/fallback.module.scss b/src/pages/fallback/fallback.module.scss deleted file mode 100644 index e78212092..000000000 --- a/src/pages/fallback/fallback.module.scss +++ /dev/null @@ -1,39 +0,0 @@ -.container { - position: fixed; - width: 100vw; - height: 100vh; - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; -} -.errorCode { - font-size: 5rem; - font-weight: 800; - color: var(--color-error-01); -} -.errorMsg { - text-align: center; - font-size: var(--font-size-xl); - color: var(--color-black-01); -} -.errorDetails { - text-align: center; - font-size: var(--font-size-l); - color: var(--color-black-01); - margin-top: 1rem; -} -.buttonContainer { - width: 100%; - display: flex; - align-items: center; - justify-content: center; - margin-top: 1rem; -} -.button { - width: 100%; - margin: auto; -} -.link { - color: var(--color-white); -} diff --git a/src/pages/fallback/fallback.tsx b/src/pages/fallback/fallback.tsx deleted file mode 100644 index 7cb108779..000000000 --- a/src/pages/fallback/fallback.tsx +++ /dev/null @@ -1,31 +0,0 @@ -import { Button } from 'src/modules/general/components/Button'; - -import css from './fallback.module.scss'; - -const FallBack = () => { - const flag = 'refreshed'; - const refreshed = sessionStorage.getItem(flag); - - if (!refreshed) { - sessionStorage.setItem(flag, `${new Date().getTime()}`); - window.location.reload(); - return <>; - } - - return ( -
-
500
-
Internal Server Error
-
We apologize for the inconvenience. Please try again later
- -
- ); -}; - -export default FallBack; From 2ffea77dd73bf4c3cd880ebd91c5f7b0945e6733 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 18 Aug 2025 02:12:56 +0000 Subject: [PATCH 29/76] chore(deps-dev): bump cypress from 14.5.3 to 14.5.4 Bumps [cypress](https://github.com/cypress-io/cypress) from 14.5.3 to 14.5.4. - [Release notes](https://github.com/cypress-io/cypress/releases) - [Changelog](https://github.com/cypress-io/cypress/blob/develop/CHANGELOG.md) - [Commits](https://github.com/cypress-io/cypress/compare/v14.5.3...v14.5.4) --- updated-dependencies: - dependency-name: cypress dependency-version: 14.5.4 dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- package-lock.json | 8 ++++---- package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6600d27bf..eafebc312 100644 --- a/package-lock.json +++ b/package-lock.json @@ -116,7 +116,7 @@ "@vitejs/plugin-react-swc": "^3.11.0", "autoprefixer": "^10.4.21", "babel-loader": "^10.0.0", - "cypress": "^14.5.3", + "cypress": "^14.5.4", "cypress-file-upload": "^5.0.8", "eslint": "^9.31.0", "eslint-config-prettier": "^10.1.8", @@ -20242,9 +20242,9 @@ "license": "MIT" }, "node_modules/cypress": { - "version": "14.5.3", - "resolved": "https://registry.npmjs.org/cypress/-/cypress-14.5.3.tgz", - "integrity": "sha512-syLwKjDeMg77FRRx68bytLdlqHXDT4yBVh0/PPkcgesChYDjUZbwxLqMXuryYKzAyJsPsQHUDW1YU74/IYEUIA==", + "version": "14.5.4", + "resolved": "https://registry.npmjs.org/cypress/-/cypress-14.5.4.tgz", + "integrity": "sha512-0Dhm4qc9VatOcI1GiFGVt8osgpPdqJLHzRwcAB5MSD/CAAts3oybvPUPawHyvJZUd8osADqZe/xzMsZ8sDTjXw==", "dev": true, "hasInstallScript": true, "license": "MIT", diff --git a/package.json b/package.json index 09aa6c83c..4e00b5d6c 100644 --- a/package.json +++ b/package.json @@ -135,7 +135,7 @@ "@vitejs/plugin-react-swc": "^3.11.0", "autoprefixer": "^10.4.21", "babel-loader": "^10.0.0", - "cypress": "^14.5.3", + "cypress": "^14.5.4", "cypress-file-upload": "^5.0.8", "eslint": "^9.31.0", "eslint-config-prettier": "^10.1.8", From 7fbcf0663ec4fa6240162bf7b5e04ba727663f27 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 18 Aug 2025 02:12:59 +0000 Subject: [PATCH 30/76] chore(deps-dev): bump ts-jest from 29.3.4 to 29.4.1 Bumps [ts-jest](https://github.com/kulshekhar/ts-jest) from 29.3.4 to 29.4.1. - [Release notes](https://github.com/kulshekhar/ts-jest/releases) - [Changelog](https://github.com/kulshekhar/ts-jest/blob/main/CHANGELOG.md) - [Commits](https://github.com/kulshekhar/ts-jest/compare/v29.3.4...v29.4.1) --- updated-dependencies: - dependency-name: ts-jest dependency-version: 29.4.1 dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- package-lock.json | 91 +++++++---------------------------------------- package.json | 2 +- 2 files changed, 14 insertions(+), 79 deletions(-) diff --git a/package-lock.json b/package-lock.json index eafebc312..a609fba69 100644 --- a/package-lock.json +++ b/package-lock.json @@ -140,7 +140,7 @@ "sass": "^1.87.0", "storybook": "^8.6.14", "tailwindcss": "^3.4.17", - "ts-jest": "^29.3.4", + "ts-jest": "^29.4.1", "tsc-files": "^1.1.4", "typescript": "^5.8.3", "vite": "^6.3.5", @@ -21428,22 +21428,6 @@ "node": ">=8.0.0" } }, - "node_modules/ejs": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", - "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "jake": "^10.8.5" - }, - "bin": { - "ejs": "bin/cli.js" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/electron-to-chromium": { "version": "1.5.159", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.159.tgz", @@ -23226,39 +23210,6 @@ "license": "MIT", "optional": true }, - "node_modules/filelist": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", - "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "minimatch": "^5.0.1" - } - }, - "node_modules/filelist/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/filelist/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/filename-reserved-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-3.0.0.tgz", @@ -25770,25 +25721,6 @@ "@pkgjs/parseargs": "^0.11.0" } }, - "node_modules/jake": { - "version": "10.9.2", - "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.2.tgz", - "integrity": "sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "async": "^3.2.3", - "chalk": "^4.0.2", - "filelist": "^1.0.4", - "minimatch": "^3.1.2" - }, - "bin": { - "jake": "bin/cli.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/jest": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", @@ -37823,16 +37755,15 @@ "license": "Apache-2.0" }, "node_modules/ts-jest": { - "version": "29.3.4", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.3.4.tgz", - "integrity": "sha512-Iqbrm8IXOmV+ggWHOTEbjwyCf2xZlUMv5npExksXohL+tk8va4Fjhb+X2+Rt9NBmgO7bJ8WpnMLOwih/DnMlFA==", + "version": "29.4.1", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.4.1.tgz", + "integrity": "sha512-SaeUtjfpg9Uqu8IbeDKtdaS0g8lS6FT6OzM3ezrDfErPJPHNDo/Ey+VFGP1bQIDfagYDLyRpd7O15XpG1Es2Uw==", "dev": true, "license": "MIT", "dependencies": { "bs-logger": "^0.2.6", - "ejs": "^3.1.10", "fast-json-stable-stringify": "^2.1.0", - "jest-util": "^29.0.0", + "handlebars": "^4.7.8", "json5": "^2.2.3", "lodash.memoize": "^4.1.2", "make-error": "^1.3.6", @@ -37848,10 +37779,11 @@ }, "peerDependencies": { "@babel/core": ">=7.0.0-beta.0 <8", - "@jest/transform": "^29.0.0", - "@jest/types": "^29.0.0", - "babel-jest": "^29.0.0", - "jest": "^29.0.0", + "@jest/transform": "^29.0.0 || ^30.0.0", + "@jest/types": "^29.0.0 || ^30.0.0", + "babel-jest": "^29.0.0 || ^30.0.0", + "jest": "^29.0.0 || ^30.0.0", + "jest-util": "^29.0.0 || ^30.0.0", "typescript": ">=4.3 <6" }, "peerDependenciesMeta": { @@ -37869,6 +37801,9 @@ }, "esbuild": { "optional": true + }, + "jest-util": { + "optional": true } } }, diff --git a/package.json b/package.json index 4e00b5d6c..08bdc0427 100644 --- a/package.json +++ b/package.json @@ -159,7 +159,7 @@ "sass": "^1.87.0", "storybook": "^8.6.14", "tailwindcss": "^3.4.17", - "ts-jest": "^29.3.4", + "ts-jest": "^29.4.1", "tsc-files": "^1.1.4", "typescript": "^5.8.3", "vite": "^6.3.5", From bf58854ac0ab6b342cfabac875c452c481354bd4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 18 Aug 2025 02:13:06 +0000 Subject: [PATCH 31/76] chore(deps): bump @capacitor/core from 7.4.1 to 7.4.2 Bumps [@capacitor/core](https://github.com/ionic-team/capacitor) from 7.4.1 to 7.4.2. - [Release notes](https://github.com/ionic-team/capacitor/releases) - [Changelog](https://github.com/ionic-team/capacitor/blob/main/CHANGELOG.md) - [Commits](https://github.com/ionic-team/capacitor/compare/7.4.1...7.4.2) --- updated-dependencies: - dependency-name: "@capacitor/core" dependency-version: 7.4.2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- package-lock.json | 9 +++++---- package.json | 2 +- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index a609fba69..94a0a71b9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,7 +13,7 @@ "@capacitor/android": "^7.4.2", "@capacitor/app": "^7.0.1", "@capacitor/camera": "^7.0.2", - "@capacitor/core": "^7.4.1", + "@capacitor/core": "^7.4.2", "@capacitor/dialog": "^7.0.1", "@capacitor/haptics": "^7.0.1", "@capacitor/ios": "^7.2.0", @@ -1388,9 +1388,10 @@ "license": "0BSD" }, "node_modules/@capacitor/core": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/@capacitor/core/-/core-7.4.1.tgz", - "integrity": "sha512-0ap4FzPJItaeg3QiiS1WguPNHY2aD67fQ9wr7DojCRzTFuNXQPvFB6lBkqlrVeQyJ9jCw0KV/LXv25oXjDcsyA==", + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@capacitor/core/-/core-7.4.2.tgz", + "integrity": "sha512-akCf9A1FUR8AWTtmgGjHEq6LmGsjA2U7igaJ9PxiCBfyxKqlDbuGHrlNdpvHEjV5tUPH3KYtkze6gtFcNKPU9A==", + "license": "MIT", "dependencies": { "tslib": "^2.1.0" } diff --git a/package.json b/package.json index 08bdc0427..291d17080 100644 --- a/package.json +++ b/package.json @@ -32,7 +32,7 @@ "@capacitor/android": "^7.4.2", "@capacitor/app": "^7.0.1", "@capacitor/camera": "^7.0.2", - "@capacitor/core": "^7.4.1", + "@capacitor/core": "^7.4.2", "@capacitor/dialog": "^7.0.1", "@capacitor/haptics": "^7.0.1", "@capacitor/ios": "^7.2.0", From eb74e769d334e1c7201be1e39b9e58b02c30125a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 18 Aug 2025 02:14:41 +0000 Subject: [PATCH 32/76] chore(deps): bump @reown/appkit from 1.7.17 to 1.7.19 Bumps [@reown/appkit](https://github.com/reown-com/appkit) from 1.7.17 to 1.7.19. - [Release notes](https://github.com/reown-com/appkit/releases) - [Commits](https://github.com/reown-com/appkit/compare/@reown/appkit@1.7.17...@reown/appkit@1.7.19) --- updated-dependencies: - dependency-name: "@reown/appkit" dependency-version: 1.7.19 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- package-lock.json | 1818 ++++++++++++++++++++++++++++++++++++++++++--- package.json | 2 +- 2 files changed, 1727 insertions(+), 93 deletions(-) diff --git a/package-lock.json b/package-lock.json index 94a0a71b9..a5647a463 100644 --- a/package-lock.json +++ b/package-lock.json @@ -31,7 +31,7 @@ "@mui/x-date-pickers": "^8.2.0", "@rainbow-me/rainbowkit": "^2.2.4", "@reduxjs/toolkit": "^2.8.1", - "@reown/appkit": "^1.7.16", + "@reown/appkit": "^1.7.19", "@reown/appkit-adapter-wagmi": "^1.7.17", "@storybook/addon-designs": "^8.2.1", "@stripe/stripe-js": "^7.4.0", @@ -7148,20 +7148,20 @@ } }, "node_modules/@reown/appkit": { - "version": "1.7.17", - "resolved": "https://registry.npmjs.org/@reown/appkit/-/appkit-1.7.17.tgz", - "integrity": "sha512-gME4Ery7HGTNEGzLckWP7qfD2ec/1UEuUkcGskGeisUnGcAsPH9z2deFFX1szialsgzTNU4/H5ZGdWqZQA8p2w==", + "version": "1.7.19", + "resolved": "https://registry.npmjs.org/@reown/appkit/-/appkit-1.7.19.tgz", + "integrity": "sha512-7nPCDpybFAFbzuBgPh0VCRqrTvm8jPbh6B2SC5poaPG69f12lwOK1vqUZd4Dw9zbaRQUJ0F2gfQyeFCFHE5h/Q==", "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { - "@reown/appkit-common": "1.7.17", - "@reown/appkit-controllers": "1.7.17", - "@reown/appkit-pay": "1.7.17", - "@reown/appkit-polyfills": "1.7.17", - "@reown/appkit-scaffold-ui": "1.7.17", - "@reown/appkit-ui": "1.7.17", - "@reown/appkit-utils": "1.7.17", - "@reown/appkit-wallet": "1.7.17", + "@reown/appkit-common": "1.7.19", + "@reown/appkit-controllers": "1.7.19", + "@reown/appkit-pay": "1.7.19", + "@reown/appkit-polyfills": "1.7.19", + "@reown/appkit-scaffold-ui": "1.7.19", + "@reown/appkit-ui": "1.7.19", + "@reown/appkit-utils": "1.7.19", + "@reown/appkit-wallet": "1.7.19", "@walletconnect/universal-provider": "2.21.5", "bs58": "6.0.0", "semver": "7.7.2", @@ -7170,7 +7170,7 @@ }, "optionalDependencies": { "@lit/react": "1.0.8", - "@reown/appkit-siwx": "1.7.17" + "@reown/appkit-siwx": "1.7.19" } }, "node_modules/@reown/appkit-adapter-wagmi": { @@ -7198,6 +7198,12 @@ "wagmi": ">=2.15.7" } }, + "node_modules/@reown/appkit-adapter-wagmi/node_modules/@adraffy/ens-normalize": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@adraffy/ens-normalize/-/ens-normalize-1.11.0.tgz", + "integrity": "sha512-/3DDPKHqqIqxUULp8yP4zODUY1i+2xvVWsv8A79xGWdCAG+8sb0hRh0Rk2QyOJUnnbyPUAZYcpBuRe3nS2OIUg==", + "license": "MIT" + }, "node_modules/@reown/appkit-adapter-wagmi/node_modules/@noble/ciphers": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/@noble/ciphers/-/ciphers-1.3.0.tgz", @@ -7225,6 +7231,129 @@ "url": "https://paulmillr.com/funding/" } }, + "node_modules/@reown/appkit-adapter-wagmi/node_modules/@reown/appkit": { + "version": "1.7.17", + "resolved": "https://registry.npmjs.org/@reown/appkit/-/appkit-1.7.17.tgz", + "integrity": "sha512-gME4Ery7HGTNEGzLckWP7qfD2ec/1UEuUkcGskGeisUnGcAsPH9z2deFFX1szialsgzTNU4/H5ZGdWqZQA8p2w==", + "hasInstallScript": true, + "license": "Apache-2.0", + "dependencies": { + "@reown/appkit-common": "1.7.17", + "@reown/appkit-controllers": "1.7.17", + "@reown/appkit-pay": "1.7.17", + "@reown/appkit-polyfills": "1.7.17", + "@reown/appkit-scaffold-ui": "1.7.17", + "@reown/appkit-ui": "1.7.17", + "@reown/appkit-utils": "1.7.17", + "@reown/appkit-wallet": "1.7.17", + "@walletconnect/universal-provider": "2.21.5", + "bs58": "6.0.0", + "semver": "7.7.2", + "valtio": "2.1.5", + "viem": ">=2.32.0" + }, + "optionalDependencies": { + "@lit/react": "1.0.8", + "@reown/appkit-siwx": "1.7.17" + } + }, + "node_modules/@reown/appkit-adapter-wagmi/node_modules/@reown/appkit-pay": { + "version": "1.7.17", + "resolved": "https://registry.npmjs.org/@reown/appkit-pay/-/appkit-pay-1.7.17.tgz", + "integrity": "sha512-RukQ5oZ+zGzWy9gu4butVcscZ9GB9/h6zmQFXDo9qkAbOicwZKaLR5XMKrjLQIYisu+ODV/ff6NuxnUYs+/r9Q==", + "license": "Apache-2.0", + "dependencies": { + "@reown/appkit-common": "1.7.17", + "@reown/appkit-controllers": "1.7.17", + "@reown/appkit-ui": "1.7.17", + "@reown/appkit-utils": "1.7.17", + "lit": "3.3.0", + "valtio": "2.1.5" + } + }, + "node_modules/@reown/appkit-adapter-wagmi/node_modules/@reown/appkit-siwx": { + "version": "1.7.17", + "resolved": "https://registry.npmjs.org/@reown/appkit-siwx/-/appkit-siwx-1.7.17.tgz", + "integrity": "sha512-frTTDnj5111+ZNNyHmEWeXiX0IWFlRhP240kmxKTamLElc2PdLUfQq/1yX8Y3bUBHryISjcQYzEtWSEI2oRYKA==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@reown/appkit-common": "1.7.17", + "@reown/appkit-controllers": "1.7.17", + "@reown/appkit-scaffold-ui": "1.7.17", + "@reown/appkit-ui": "1.7.17", + "@reown/appkit-utils": "1.7.17", + "bip322-js": "2.0.0", + "bs58": "6.0.0", + "tweetnacl": "1.0.3", + "viem": "2.32.0" + }, + "peerDependencies": { + "lit": "3.3.0" + } + }, + "node_modules/@reown/appkit-adapter-wagmi/node_modules/@reown/appkit-siwx/node_modules/ox": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/ox/-/ox-0.8.1.tgz", + "integrity": "sha512-e+z5epnzV+Zuz91YYujecW8cF01mzmrUtWotJ0oEPym/G82uccs7q0WDHTYL3eiONbTUEvcZrptAKLgTBD3u2A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/wevm" + } + ], + "license": "MIT", + "optional": true, + "dependencies": { + "@adraffy/ens-normalize": "^1.11.0", + "@noble/ciphers": "^1.3.0", + "@noble/curves": "^1.9.1", + "@noble/hashes": "^1.8.0", + "@scure/bip32": "^1.7.0", + "@scure/bip39": "^1.6.0", + "abitype": "^1.0.8", + "eventemitter3": "5.0.1" + }, + "peerDependencies": { + "typescript": ">=5.4.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@reown/appkit-adapter-wagmi/node_modules/@reown/appkit-siwx/node_modules/viem": { + "version": "2.32.0", + "resolved": "https://registry.npmjs.org/viem/-/viem-2.32.0.tgz", + "integrity": "sha512-pHwKXQSyEWX+8ttOQJdU5dSBfYd6L9JxARY/Sx0MBj3uF/Zaiqt6o1SbzjFjQXkNzWSgtxK7H89ZI1SMIA2iLQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/wevm" + } + ], + "license": "MIT", + "optional": true, + "dependencies": { + "@noble/curves": "1.9.2", + "@noble/hashes": "1.8.0", + "@scure/bip32": "1.7.0", + "@scure/bip39": "1.6.0", + "abitype": "1.0.8", + "isows": "1.0.7", + "ox": "0.8.1", + "ws": "8.18.2" + }, + "peerDependencies": { + "typescript": ">=5.0.4" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, "node_modules/@reown/appkit-adapter-wagmi/node_modules/@scure/bip32": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.7.0.tgz", @@ -7475,6 +7604,18 @@ "integrity": "sha512-V9plBAt3qjMlS1+nC8771KNf6oJ12gExvaxnNzN/9yVRLdTv/lc+oJlnSzrdYDAvBfTStPCoiaCOTmTs0adv7Q==", "license": "MIT" }, + "node_modules/@reown/appkit-adapter-wagmi/node_modules/semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/@reown/appkit-adapter-wagmi/node_modules/uint8arrays": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.1.1.tgz", @@ -8069,99 +8210,1069 @@ } }, "node_modules/@reown/appkit-pay": { - "version": "1.7.17", - "resolved": "https://registry.npmjs.org/@reown/appkit-pay/-/appkit-pay-1.7.17.tgz", - "integrity": "sha512-RukQ5oZ+zGzWy9gu4butVcscZ9GB9/h6zmQFXDo9qkAbOicwZKaLR5XMKrjLQIYisu+ODV/ff6NuxnUYs+/r9Q==", + "version": "1.7.19", + "resolved": "https://registry.npmjs.org/@reown/appkit-pay/-/appkit-pay-1.7.19.tgz", + "integrity": "sha512-fP1/GWAuNvbvBH2yuG2y0FXlonWXhFnh2FG5BlPubVQyiKZL3KVeAo8vJ41clbq61VSNsWCMxRygZKhy+YtZ7w==", "license": "Apache-2.0", "dependencies": { - "@reown/appkit-common": "1.7.17", - "@reown/appkit-controllers": "1.7.17", - "@reown/appkit-ui": "1.7.17", - "@reown/appkit-utils": "1.7.17", + "@reown/appkit-common": "1.7.19", + "@reown/appkit-controllers": "1.7.19", + "@reown/appkit-ui": "1.7.19", + "@reown/appkit-utils": "1.7.19", "lit": "3.3.0", "valtio": "2.1.5" } }, - "node_modules/@reown/appkit-pay/node_modules/proxy-compare": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/proxy-compare/-/proxy-compare-3.0.1.tgz", - "integrity": "sha512-V9plBAt3qjMlS1+nC8771KNf6oJ12gExvaxnNzN/9yVRLdTv/lc+oJlnSzrdYDAvBfTStPCoiaCOTmTs0adv7Q==", - "license": "MIT" + "node_modules/@reown/appkit-pay/node_modules/@noble/ciphers": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@noble/ciphers/-/ciphers-1.3.0.tgz", + "integrity": "sha512-2I0gnIVPtfnMw9ee9h1dJG7tp81+8Ob3OJb3Mv37rx5L40/b0i7djjCVvGOVqc9AEIQyvyu1i6ypKdFw8R8gQw==", + "license": "MIT", + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } }, - "node_modules/@reown/appkit-pay/node_modules/valtio": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/valtio/-/valtio-2.1.5.tgz", - "integrity": "sha512-vsh1Ixu5mT0pJFZm+Jspvhga5GzHUTYv0/+Th203pLfh3/wbHwxhu/Z2OkZDXIgHfjnjBns7SN9HNcbDvPmaGw==", + "node_modules/@reown/appkit-pay/node_modules/@noble/curves": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.9.2.tgz", + "integrity": "sha512-HxngEd2XUcg9xi20JkwlLCtYwfoFw4JGkuZpT+WlsPD4gB/cxkvTD8fSsoAnphGZhFdZYKeQIPCuFlWPm1uE0g==", "license": "MIT", "dependencies": { - "proxy-compare": "^3.0.1" + "@noble/hashes": "1.8.0" }, "engines": { - "node": ">=12.20.0" - }, - "peerDependencies": { - "@types/react": ">=18.0.0", - "react": ">=18.0.0" + "node": "^14.21.3 || >=16" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "react": { - "optional": true - } + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@reown/appkit-polyfills": { - "version": "1.7.17", - "resolved": "https://registry.npmjs.org/@reown/appkit-polyfills/-/appkit-polyfills-1.7.17.tgz", - "integrity": "sha512-vWRIYS+wc2ByWKn76KMV7zxqTvQ+512KwXAKQcRulu13AdKvnBbr0eYx+ctvSKL+kZoAp9zj4R3RulX3eXnJ8Q==", + "node_modules/@reown/appkit-pay/node_modules/@reown/appkit-common": { + "version": "1.7.19", + "resolved": "https://registry.npmjs.org/@reown/appkit-common/-/appkit-common-1.7.19.tgz", + "integrity": "sha512-kP/NeQi44c1bwvizIxcNbSHg9mUbA03llWOiVFKiDmL2SQnBWgLoUiuRCDUEvb/Lx9Hjn6GJdMvdGkq2tmJ1rQ==", + "license": "Apache-2.0", + "dependencies": { + "big.js": "6.2.2", + "dayjs": "1.11.13", + "viem": ">=2.32.0" + } + }, + "node_modules/@reown/appkit-pay/node_modules/@reown/appkit-controllers": { + "version": "1.7.19", + "resolved": "https://registry.npmjs.org/@reown/appkit-controllers/-/appkit-controllers-1.7.19.tgz", + "integrity": "sha512-U7LKxlrIbQMnH2GhOC5b/W2+nCjmUI0RhR9uFH2clg36y/nucZozV1E3NQQqz4kki+ZiiQb6PyxQW8wp/yhgCA==", + "license": "Apache-2.0", + "dependencies": { + "@reown/appkit-common": "1.7.19", + "@reown/appkit-wallet": "1.7.19", + "@walletconnect/universal-provider": "2.21.5", + "valtio": "2.1.5", + "viem": ">=2.32.0" + } + }, + "node_modules/@reown/appkit-pay/node_modules/@reown/appkit-polyfills": { + "version": "1.7.19", + "resolved": "https://registry.npmjs.org/@reown/appkit-polyfills/-/appkit-polyfills-1.7.19.tgz", + "integrity": "sha512-TfjkZPaQ2l0LG1DaqlQSXr2nJAwW6TlT65OtlDO4KpJ7MbqGpeVp3ChLsijowKzoet/hire4k2wyL68QdOvYdA==", "license": "Apache-2.0", "dependencies": { "buffer": "6.0.3" } }, - "node_modules/@reown/appkit-scaffold-ui": { - "version": "1.7.17", - "resolved": "https://registry.npmjs.org/@reown/appkit-scaffold-ui/-/appkit-scaffold-ui-1.7.17.tgz", - "integrity": "sha512-7nk8DEHQf9/7Ij8Eo85Uj1D/3M9Ybq/LjXyePyaGusZ9E8gf4u/UjKpQK7cTfMNsNl4nrB2mBI9Tk/rwNECdCg==", + "node_modules/@reown/appkit-pay/node_modules/@reown/appkit-ui": { + "version": "1.7.19", + "resolved": "https://registry.npmjs.org/@reown/appkit-ui/-/appkit-ui-1.7.19.tgz", + "integrity": "sha512-hnFtiky1KMaejzO0HTCw0kdjis0j/+OswOcQ4XrWD9CzJmmgjU6/u3vx7dEnv0iLKSRothNz1QbSHhZtDmKVRQ==", "license": "Apache-2.0", "dependencies": { - "@reown/appkit-common": "1.7.17", - "@reown/appkit-controllers": "1.7.17", - "@reown/appkit-ui": "1.7.17", - "@reown/appkit-utils": "1.7.17", - "@reown/appkit-wallet": "1.7.17", - "lit": "3.3.0" + "@reown/appkit-common": "1.7.19", + "@reown/appkit-controllers": "1.7.19", + "@reown/appkit-wallet": "1.7.19", + "lit": "3.3.0", + "qrcode": "1.5.3" } }, - "node_modules/@reown/appkit-siwx": { - "version": "1.7.17", - "resolved": "https://registry.npmjs.org/@reown/appkit-siwx/-/appkit-siwx-1.7.17.tgz", - "integrity": "sha512-frTTDnj5111+ZNNyHmEWeXiX0IWFlRhP240kmxKTamLElc2PdLUfQq/1yX8Y3bUBHryISjcQYzEtWSEI2oRYKA==", + "node_modules/@reown/appkit-pay/node_modules/@reown/appkit-utils": { + "version": "1.7.19", + "resolved": "https://registry.npmjs.org/@reown/appkit-utils/-/appkit-utils-1.7.19.tgz", + "integrity": "sha512-Tac/jptivMfugZb5HtQzT6Jkrbv/9ljbYUI8Tgel+xN4GlhDpc7iTJmDfd9lWi+HUkFB8p6iqOVnghkfrfWtvg==", "license": "Apache-2.0", - "optional": true, "dependencies": { - "@reown/appkit-common": "1.7.17", - "@reown/appkit-controllers": "1.7.17", - "@reown/appkit-scaffold-ui": "1.7.17", - "@reown/appkit-ui": "1.7.17", - "@reown/appkit-utils": "1.7.17", - "bip322-js": "2.0.0", - "bs58": "6.0.0", - "tweetnacl": "1.0.3", - "viem": "2.32.0" + "@reown/appkit-common": "1.7.19", + "@reown/appkit-controllers": "1.7.19", + "@reown/appkit-polyfills": "1.7.19", + "@reown/appkit-wallet": "1.7.19", + "@wallet-standard/wallet": "1.1.0", + "@walletconnect/logger": "2.1.2", + "@walletconnect/universal-provider": "2.21.5", + "valtio": "2.1.5", + "viem": ">=2.32.0" }, "peerDependencies": { - "lit": "3.3.0" + "valtio": "2.1.5" } }, - "node_modules/@reown/appkit-siwx/node_modules/@noble/curves": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.9.2.tgz", - "integrity": "sha512-HxngEd2XUcg9xi20JkwlLCtYwfoFw4JGkuZpT+WlsPD4gB/cxkvTD8fSsoAnphGZhFdZYKeQIPCuFlWPm1uE0g==", + "node_modules/@reown/appkit-pay/node_modules/@reown/appkit-wallet": { + "version": "1.7.19", + "resolved": "https://registry.npmjs.org/@reown/appkit-wallet/-/appkit-wallet-1.7.19.tgz", + "integrity": "sha512-gmwfFXDKX63HHMKZQU6Rxqgz9oaiXtOMrhhyaNIdyB1IKrtr/Bf/F8ytoG/+pNG0eRkXP03Cr1q15OuWISEzMw==", + "license": "Apache-2.0", + "dependencies": { + "@reown/appkit-common": "1.7.19", + "@reown/appkit-polyfills": "1.7.19", + "@walletconnect/logger": "2.1.2", + "zod": "3.22.4" + } + }, + "node_modules/@reown/appkit-pay/node_modules/@scure/bip32": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.7.0.tgz", + "integrity": "sha512-E4FFX/N3f4B80AKWp5dP6ow+flD1LQZo/w8UnLGYZO674jS6YnYeepycOOksv+vLPSpgN35wgKgy+ybfTb2SMw==", "license": "MIT", - "optional": true, + "dependencies": { + "@noble/curves": "~1.9.0", + "@noble/hashes": "~1.8.0", + "@scure/base": "~1.2.5" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@reown/appkit-pay/node_modules/@scure/bip39": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.6.0.tgz", + "integrity": "sha512-+lF0BbLiJNwVlev4eKelw1WWLaiKXw7sSl8T6FvBlWkdX+94aGJ4o8XjUdlyhTCjd8c+B3KT3JfS8P0bLRNU6A==", + "license": "MIT", + "dependencies": { + "@noble/hashes": "~1.8.0", + "@scure/base": "~1.2.5" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@reown/appkit-pay/node_modules/@walletconnect/core": { + "version": "2.21.5", + "resolved": "https://registry.npmjs.org/@walletconnect/core/-/core-2.21.5.tgz", + "integrity": "sha512-CxGbio1TdCkou/TYn8X6Ih1mUX3UtFTk+t618/cIrT3VX5IjQW09n9I/pVafr7bQbBtm9/ATr7ugUEMrLu5snA==", + "license": "Apache-2.0", + "dependencies": { + "@walletconnect/heartbeat": "1.2.2", + "@walletconnect/jsonrpc-provider": "1.0.14", + "@walletconnect/jsonrpc-types": "1.0.4", + "@walletconnect/jsonrpc-utils": "1.0.8", + "@walletconnect/jsonrpc-ws-connection": "1.0.16", + "@walletconnect/keyvaluestorage": "1.1.1", + "@walletconnect/logger": "2.1.2", + "@walletconnect/relay-api": "1.0.11", + "@walletconnect/relay-auth": "1.1.0", + "@walletconnect/safe-json": "1.0.2", + "@walletconnect/time": "1.0.2", + "@walletconnect/types": "2.21.5", + "@walletconnect/utils": "2.21.5", + "@walletconnect/window-getters": "1.0.1", + "es-toolkit": "1.39.3", + "events": "3.3.0", + "uint8arrays": "3.1.1" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@reown/appkit-pay/node_modules/@walletconnect/keyvaluestorage": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@walletconnect/keyvaluestorage/-/keyvaluestorage-1.1.1.tgz", + "integrity": "sha512-V7ZQq2+mSxAq7MrRqDxanTzu2RcElfK1PfNYiaVnJgJ7Q7G7hTVwF8voIBx92qsRyGHZihrwNPHuZd1aKkd0rA==", + "license": "MIT", + "dependencies": { + "@walletconnect/safe-json": "^1.0.1", + "idb-keyval": "^6.2.1", + "unstorage": "^1.9.0" + }, + "peerDependencies": { + "@react-native-async-storage/async-storage": "1.x" + }, + "peerDependenciesMeta": { + "@react-native-async-storage/async-storage": { + "optional": true + } + } + }, + "node_modules/@reown/appkit-pay/node_modules/@walletconnect/sign-client": { + "version": "2.21.5", + "resolved": "https://registry.npmjs.org/@walletconnect/sign-client/-/sign-client-2.21.5.tgz", + "integrity": "sha512-IAs/IqmE1HVL9EsvqkNRU4NeAYe//h9NwqKi7ToKYZv4jhcC3BBemUD1r8iQJSTHMhO41EKn1G9/DiBln3ZiwQ==", + "license": "Apache-2.0", + "dependencies": { + "@walletconnect/core": "2.21.5", + "@walletconnect/events": "1.0.1", + "@walletconnect/heartbeat": "1.2.2", + "@walletconnect/jsonrpc-utils": "1.0.8", + "@walletconnect/logger": "2.1.2", + "@walletconnect/time": "1.0.2", + "@walletconnect/types": "2.21.5", + "@walletconnect/utils": "2.21.5", + "events": "3.3.0" + } + }, + "node_modules/@reown/appkit-pay/node_modules/@walletconnect/types": { + "version": "2.21.5", + "resolved": "https://registry.npmjs.org/@walletconnect/types/-/types-2.21.5.tgz", + "integrity": "sha512-kpTXbenKeMdaz6mgMN/jKaHHbu6mdY3kyyrddzE/mthOd2KLACVrZr7hrTf+Fg2coPVen5d1KKyQjyECEdzOCw==", + "license": "Apache-2.0", + "dependencies": { + "@walletconnect/events": "1.0.1", + "@walletconnect/heartbeat": "1.2.2", + "@walletconnect/jsonrpc-types": "1.0.4", + "@walletconnect/keyvaluestorage": "1.1.1", + "@walletconnect/logger": "2.1.2", + "events": "3.3.0" + } + }, + "node_modules/@reown/appkit-pay/node_modules/@walletconnect/universal-provider": { + "version": "2.21.5", + "resolved": "https://registry.npmjs.org/@walletconnect/universal-provider/-/universal-provider-2.21.5.tgz", + "integrity": "sha512-SMXGGXyj78c8Ru2f665ZFZU24phn0yZyCP5Ej7goxVQxABwqWKM/odj3j/IxZv+hxA8yU13yxaubgVefnereqw==", + "license": "Apache-2.0", + "dependencies": { + "@walletconnect/events": "1.0.1", + "@walletconnect/jsonrpc-http-connection": "1.0.8", + "@walletconnect/jsonrpc-provider": "1.0.14", + "@walletconnect/jsonrpc-types": "1.0.4", + "@walletconnect/jsonrpc-utils": "1.0.8", + "@walletconnect/keyvaluestorage": "1.1.1", + "@walletconnect/logger": "2.1.2", + "@walletconnect/sign-client": "2.21.5", + "@walletconnect/types": "2.21.5", + "@walletconnect/utils": "2.21.5", + "es-toolkit": "1.39.3", + "events": "3.3.0" + } + }, + "node_modules/@reown/appkit-pay/node_modules/@walletconnect/utils": { + "version": "2.21.5", + "resolved": "https://registry.npmjs.org/@walletconnect/utils/-/utils-2.21.5.tgz", + "integrity": "sha512-RSPSxPvGMuvfGhd5au1cf9cmHB/KVVLFotJR9ltisjFABGtH2215U5oaVp+a7W18QX37aemejRkvacqOELVySA==", + "license": "Apache-2.0", + "dependencies": { + "@msgpack/msgpack": "3.1.2", + "@noble/ciphers": "1.3.0", + "@noble/curves": "1.9.2", + "@noble/hashes": "1.8.0", + "@scure/base": "1.2.6", + "@walletconnect/jsonrpc-utils": "1.0.8", + "@walletconnect/keyvaluestorage": "1.1.1", + "@walletconnect/relay-api": "1.0.11", + "@walletconnect/relay-auth": "1.1.0", + "@walletconnect/safe-json": "1.0.2", + "@walletconnect/time": "1.0.2", + "@walletconnect/types": "2.21.5", + "@walletconnect/window-getters": "1.0.1", + "@walletconnect/window-metadata": "1.0.1", + "blakejs": "1.2.1", + "bs58": "6.0.0", + "detect-browser": "5.3.0", + "query-string": "7.1.3", + "uint8arrays": "3.1.1", + "viem": "2.31.0" + } + }, + "node_modules/@reown/appkit-pay/node_modules/@walletconnect/utils/node_modules/viem": { + "version": "2.31.0", + "resolved": "https://registry.npmjs.org/viem/-/viem-2.31.0.tgz", + "integrity": "sha512-U7OMQ6yqK+bRbEIarf2vqxL7unSEQvNxvML/1zG7suAmKuJmipqdVTVJGKBCJiYsm/EremyO2FS4dHIPpGv+eA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/wevm" + } + ], + "license": "MIT", + "dependencies": { + "@noble/curves": "1.9.1", + "@noble/hashes": "1.8.0", + "@scure/bip32": "1.7.0", + "@scure/bip39": "1.6.0", + "abitype": "1.0.8", + "isows": "1.0.7", + "ox": "0.7.1", + "ws": "8.18.2" + }, + "peerDependencies": { + "typescript": ">=5.0.4" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@reown/appkit-pay/node_modules/@walletconnect/utils/node_modules/viem/node_modules/@noble/curves": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.9.1.tgz", + "integrity": "sha512-k11yZxZg+t+gWvBbIswW0yoJlu8cHOC7dhunwOzoWH/mXGBiYyR4YY6hAEK/3EUs4UpB8la1RfdRpeGsFHkWsA==", + "license": "MIT", + "dependencies": { + "@noble/hashes": "1.8.0" + }, + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@reown/appkit-pay/node_modules/cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "node_modules/@reown/appkit-pay/node_modules/es-toolkit": { + "version": "1.39.3", + "resolved": "https://registry.npmjs.org/es-toolkit/-/es-toolkit-1.39.3.tgz", + "integrity": "sha512-Qb/TCFCldgOy8lZ5uC7nLGdqJwSabkQiYQShmw4jyiPk1pZzaYWTwaYKYP7EgLccWYgZocMrtItrwh683voaww==", + "license": "MIT", + "workspaces": [ + "docs", + "benchmarks" + ] + }, + "node_modules/@reown/appkit-pay/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@reown/appkit-pay/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@reown/appkit-pay/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "license": "ISC" + }, + "node_modules/@reown/appkit-pay/node_modules/ox": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ox/-/ox-0.7.1.tgz", + "integrity": "sha512-+k9fY9PRNuAMHRFIUbiK9Nt5seYHHzSQs9Bj+iMETcGtlpS7SmBzcGSVUQO3+nqGLEiNK4598pHNFlVRaZbRsg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/wevm" + } + ], + "license": "MIT", + "dependencies": { + "@adraffy/ens-normalize": "^1.10.1", + "@noble/ciphers": "^1.3.0", + "@noble/curves": "^1.6.0", + "@noble/hashes": "^1.5.0", + "@scure/bip32": "^1.5.0", + "@scure/bip39": "^1.4.0", + "abitype": "^1.0.6", + "eventemitter3": "5.0.1" + }, + "peerDependencies": { + "typescript": ">=5.4.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@reown/appkit-pay/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@reown/appkit-pay/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@reown/appkit-pay/node_modules/proxy-compare": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/proxy-compare/-/proxy-compare-3.0.1.tgz", + "integrity": "sha512-V9plBAt3qjMlS1+nC8771KNf6oJ12gExvaxnNzN/9yVRLdTv/lc+oJlnSzrdYDAvBfTStPCoiaCOTmTs0adv7Q==", + "license": "MIT" + }, + "node_modules/@reown/appkit-pay/node_modules/qrcode": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.5.3.tgz", + "integrity": "sha512-puyri6ApkEHYiVl4CFzo1tDkAZ+ATcnbJrJ6RiBM1Fhctdn/ix9MTE3hRph33omisEbC/2fcfemsseiKgBPKZg==", + "license": "MIT", + "dependencies": { + "dijkstrajs": "^1.0.1", + "encode-utf8": "^1.0.3", + "pngjs": "^5.0.0", + "yargs": "^15.3.1" + }, + "bin": { + "qrcode": "bin/qrcode" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/@reown/appkit-pay/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@reown/appkit-pay/node_modules/uint8arrays": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.1.1.tgz", + "integrity": "sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg==", + "license": "MIT", + "dependencies": { + "multiformats": "^9.4.2" + } + }, + "node_modules/@reown/appkit-pay/node_modules/unstorage": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.16.1.tgz", + "integrity": "sha512-gdpZ3guLDhz+zWIlYP1UwQ259tG5T5vYRzDaHMkQ1bBY1SQPutvZnrRjTFaWUUpseErJIgAZS51h6NOcZVZiqQ==", + "license": "MIT", + "dependencies": { + "anymatch": "^3.1.3", + "chokidar": "^4.0.3", + "destr": "^2.0.5", + "h3": "^1.15.3", + "lru-cache": "^10.4.3", + "node-fetch-native": "^1.6.6", + "ofetch": "^1.4.1", + "ufo": "^1.6.1" + }, + "peerDependencies": { + "@azure/app-configuration": "^1.8.0", + "@azure/cosmos": "^4.2.0", + "@azure/data-tables": "^13.3.0", + "@azure/identity": "^4.6.0", + "@azure/keyvault-secrets": "^4.9.0", + "@azure/storage-blob": "^12.26.0", + "@capacitor/preferences": "^6.0.3 || ^7.0.0", + "@deno/kv": ">=0.9.0", + "@netlify/blobs": "^6.5.0 || ^7.0.0 || ^8.1.0 || ^9.0.0 || ^10.0.0", + "@planetscale/database": "^1.19.0", + "@upstash/redis": "^1.34.3", + "@vercel/blob": ">=0.27.1", + "@vercel/kv": "^1.0.1", + "aws4fetch": "^1.0.20", + "db0": ">=0.2.1", + "idb-keyval": "^6.2.1", + "ioredis": "^5.4.2", + "uploadthing": "^7.4.4" + }, + "peerDependenciesMeta": { + "@azure/app-configuration": { + "optional": true + }, + "@azure/cosmos": { + "optional": true + }, + "@azure/data-tables": { + "optional": true + }, + "@azure/identity": { + "optional": true + }, + "@azure/keyvault-secrets": { + "optional": true + }, + "@azure/storage-blob": { + "optional": true + }, + "@capacitor/preferences": { + "optional": true + }, + "@deno/kv": { + "optional": true + }, + "@netlify/blobs": { + "optional": true + }, + "@planetscale/database": { + "optional": true + }, + "@upstash/redis": { + "optional": true + }, + "@vercel/blob": { + "optional": true + }, + "@vercel/kv": { + "optional": true + }, + "aws4fetch": { + "optional": true + }, + "db0": { + "optional": true + }, + "idb-keyval": { + "optional": true + }, + "ioredis": { + "optional": true + }, + "uploadthing": { + "optional": true + } + } + }, + "node_modules/@reown/appkit-pay/node_modules/valtio": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/valtio/-/valtio-2.1.5.tgz", + "integrity": "sha512-vsh1Ixu5mT0pJFZm+Jspvhga5GzHUTYv0/+Th203pLfh3/wbHwxhu/Z2OkZDXIgHfjnjBns7SN9HNcbDvPmaGw==", + "license": "MIT", + "dependencies": { + "proxy-compare": "^3.0.1" + }, + "engines": { + "node": ">=12.20.0" + }, + "peerDependencies": { + "@types/react": ">=18.0.0", + "react": ">=18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "react": { + "optional": true + } + } + }, + "node_modules/@reown/appkit-pay/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@reown/appkit-pay/node_modules/ws": { + "version": "8.18.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.2.tgz", + "integrity": "sha512-DMricUmwGZUVr++AEAe2uiVM7UoO9MAVZMDu05UQOaUII0lp+zOzLLU4Xqh/JvTqklB1T4uELaaPBKyjE1r4fQ==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/@reown/appkit-pay/node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "license": "ISC" + }, + "node_modules/@reown/appkit-pay/node_modules/yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "license": "MIT", + "dependencies": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@reown/appkit-pay/node_modules/yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "license": "ISC", + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@reown/appkit-polyfills": { + "version": "1.7.17", + "resolved": "https://registry.npmjs.org/@reown/appkit-polyfills/-/appkit-polyfills-1.7.17.tgz", + "integrity": "sha512-vWRIYS+wc2ByWKn76KMV7zxqTvQ+512KwXAKQcRulu13AdKvnBbr0eYx+ctvSKL+kZoAp9zj4R3RulX3eXnJ8Q==", + "license": "Apache-2.0", + "dependencies": { + "buffer": "6.0.3" + } + }, + "node_modules/@reown/appkit-scaffold-ui": { + "version": "1.7.17", + "resolved": "https://registry.npmjs.org/@reown/appkit-scaffold-ui/-/appkit-scaffold-ui-1.7.17.tgz", + "integrity": "sha512-7nk8DEHQf9/7Ij8Eo85Uj1D/3M9Ybq/LjXyePyaGusZ9E8gf4u/UjKpQK7cTfMNsNl4nrB2mBI9Tk/rwNECdCg==", + "license": "Apache-2.0", + "dependencies": { + "@reown/appkit-common": "1.7.17", + "@reown/appkit-controllers": "1.7.17", + "@reown/appkit-ui": "1.7.17", + "@reown/appkit-utils": "1.7.17", + "@reown/appkit-wallet": "1.7.17", + "lit": "3.3.0" + } + }, + "node_modules/@reown/appkit-siwx": { + "version": "1.7.19", + "resolved": "https://registry.npmjs.org/@reown/appkit-siwx/-/appkit-siwx-1.7.19.tgz", + "integrity": "sha512-6ByfoM86yZgPoWaRbYh6mwiUDR9BHKun7neeANfPQw7oY32+f4I3YUTc4MF1VQcx5EJOaDV6HHNl2VSkXX54pg==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@reown/appkit-common": "1.7.19", + "@reown/appkit-controllers": "1.7.19", + "@reown/appkit-scaffold-ui": "1.7.19", + "@reown/appkit-ui": "1.7.19", + "@reown/appkit-utils": "1.7.19", + "bip322-js": "2.0.0", + "bs58": "6.0.0", + "tweetnacl": "1.0.3", + "viem": "2.32.0" + }, + "peerDependencies": { + "lit": "3.3.0" + } + }, + "node_modules/@reown/appkit-siwx/node_modules/@noble/ciphers": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@noble/ciphers/-/ciphers-1.3.0.tgz", + "integrity": "sha512-2I0gnIVPtfnMw9ee9h1dJG7tp81+8Ob3OJb3Mv37rx5L40/b0i7djjCVvGOVqc9AEIQyvyu1i6ypKdFw8R8gQw==", + "license": "MIT", + "optional": true, + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@reown/appkit-siwx/node_modules/@noble/curves": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.9.2.tgz", + "integrity": "sha512-HxngEd2XUcg9xi20JkwlLCtYwfoFw4JGkuZpT+WlsPD4gB/cxkvTD8fSsoAnphGZhFdZYKeQIPCuFlWPm1uE0g==", + "license": "MIT", + "optional": true, + "dependencies": { + "@noble/hashes": "1.8.0" + }, + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@reown/appkit-siwx/node_modules/@reown/appkit-common": { + "version": "1.7.19", + "resolved": "https://registry.npmjs.org/@reown/appkit-common/-/appkit-common-1.7.19.tgz", + "integrity": "sha512-kP/NeQi44c1bwvizIxcNbSHg9mUbA03llWOiVFKiDmL2SQnBWgLoUiuRCDUEvb/Lx9Hjn6GJdMvdGkq2tmJ1rQ==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "big.js": "6.2.2", + "dayjs": "1.11.13", + "viem": ">=2.32.0" + } + }, + "node_modules/@reown/appkit-siwx/node_modules/@reown/appkit-controllers": { + "version": "1.7.19", + "resolved": "https://registry.npmjs.org/@reown/appkit-controllers/-/appkit-controllers-1.7.19.tgz", + "integrity": "sha512-U7LKxlrIbQMnH2GhOC5b/W2+nCjmUI0RhR9uFH2clg36y/nucZozV1E3NQQqz4kki+ZiiQb6PyxQW8wp/yhgCA==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@reown/appkit-common": "1.7.19", + "@reown/appkit-wallet": "1.7.19", + "@walletconnect/universal-provider": "2.21.5", + "valtio": "2.1.5", + "viem": ">=2.32.0" + } + }, + "node_modules/@reown/appkit-siwx/node_modules/@reown/appkit-polyfills": { + "version": "1.7.19", + "resolved": "https://registry.npmjs.org/@reown/appkit-polyfills/-/appkit-polyfills-1.7.19.tgz", + "integrity": "sha512-TfjkZPaQ2l0LG1DaqlQSXr2nJAwW6TlT65OtlDO4KpJ7MbqGpeVp3ChLsijowKzoet/hire4k2wyL68QdOvYdA==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "buffer": "6.0.3" + } + }, + "node_modules/@reown/appkit-siwx/node_modules/@reown/appkit-scaffold-ui": { + "version": "1.7.19", + "resolved": "https://registry.npmjs.org/@reown/appkit-scaffold-ui/-/appkit-scaffold-ui-1.7.19.tgz", + "integrity": "sha512-X6Op8kPvkqFMzOzP7ocFHwHUKDcElVG8CnVt3BFUNVFqWWpQvxMb1+65OTaF9zFcLtRBuuSVz4EWON3i/DaBxQ==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@reown/appkit-common": "1.7.19", + "@reown/appkit-controllers": "1.7.19", + "@reown/appkit-ui": "1.7.19", + "@reown/appkit-utils": "1.7.19", + "@reown/appkit-wallet": "1.7.19", + "lit": "3.3.0" + } + }, + "node_modules/@reown/appkit-siwx/node_modules/@reown/appkit-ui": { + "version": "1.7.19", + "resolved": "https://registry.npmjs.org/@reown/appkit-ui/-/appkit-ui-1.7.19.tgz", + "integrity": "sha512-hnFtiky1KMaejzO0HTCw0kdjis0j/+OswOcQ4XrWD9CzJmmgjU6/u3vx7dEnv0iLKSRothNz1QbSHhZtDmKVRQ==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@reown/appkit-common": "1.7.19", + "@reown/appkit-controllers": "1.7.19", + "@reown/appkit-wallet": "1.7.19", + "lit": "3.3.0", + "qrcode": "1.5.3" + } + }, + "node_modules/@reown/appkit-siwx/node_modules/@reown/appkit-utils": { + "version": "1.7.19", + "resolved": "https://registry.npmjs.org/@reown/appkit-utils/-/appkit-utils-1.7.19.tgz", + "integrity": "sha512-Tac/jptivMfugZb5HtQzT6Jkrbv/9ljbYUI8Tgel+xN4GlhDpc7iTJmDfd9lWi+HUkFB8p6iqOVnghkfrfWtvg==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@reown/appkit-common": "1.7.19", + "@reown/appkit-controllers": "1.7.19", + "@reown/appkit-polyfills": "1.7.19", + "@reown/appkit-wallet": "1.7.19", + "@wallet-standard/wallet": "1.1.0", + "@walletconnect/logger": "2.1.2", + "@walletconnect/universal-provider": "2.21.5", + "valtio": "2.1.5", + "viem": ">=2.32.0" + }, + "peerDependencies": { + "valtio": "2.1.5" + } + }, + "node_modules/@reown/appkit-siwx/node_modules/@reown/appkit-wallet": { + "version": "1.7.19", + "resolved": "https://registry.npmjs.org/@reown/appkit-wallet/-/appkit-wallet-1.7.19.tgz", + "integrity": "sha512-gmwfFXDKX63HHMKZQU6Rxqgz9oaiXtOMrhhyaNIdyB1IKrtr/Bf/F8ytoG/+pNG0eRkXP03Cr1q15OuWISEzMw==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@reown/appkit-common": "1.7.19", + "@reown/appkit-polyfills": "1.7.19", + "@walletconnect/logger": "2.1.2", + "zod": "3.22.4" + } + }, + "node_modules/@reown/appkit-siwx/node_modules/@scure/bip32": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.7.0.tgz", + "integrity": "sha512-E4FFX/N3f4B80AKWp5dP6ow+flD1LQZo/w8UnLGYZO674jS6YnYeepycOOksv+vLPSpgN35wgKgy+ybfTb2SMw==", + "license": "MIT", + "optional": true, + "dependencies": { + "@noble/curves": "~1.9.0", + "@noble/hashes": "~1.8.0", + "@scure/base": "~1.2.5" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@reown/appkit-siwx/node_modules/@scure/bip39": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.6.0.tgz", + "integrity": "sha512-+lF0BbLiJNwVlev4eKelw1WWLaiKXw7sSl8T6FvBlWkdX+94aGJ4o8XjUdlyhTCjd8c+B3KT3JfS8P0bLRNU6A==", + "license": "MIT", + "optional": true, + "dependencies": { + "@noble/hashes": "~1.8.0", + "@scure/base": "~1.2.5" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@reown/appkit-siwx/node_modules/@walletconnect/core": { + "version": "2.21.5", + "resolved": "https://registry.npmjs.org/@walletconnect/core/-/core-2.21.5.tgz", + "integrity": "sha512-CxGbio1TdCkou/TYn8X6Ih1mUX3UtFTk+t618/cIrT3VX5IjQW09n9I/pVafr7bQbBtm9/ATr7ugUEMrLu5snA==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@walletconnect/heartbeat": "1.2.2", + "@walletconnect/jsonrpc-provider": "1.0.14", + "@walletconnect/jsonrpc-types": "1.0.4", + "@walletconnect/jsonrpc-utils": "1.0.8", + "@walletconnect/jsonrpc-ws-connection": "1.0.16", + "@walletconnect/keyvaluestorage": "1.1.1", + "@walletconnect/logger": "2.1.2", + "@walletconnect/relay-api": "1.0.11", + "@walletconnect/relay-auth": "1.1.0", + "@walletconnect/safe-json": "1.0.2", + "@walletconnect/time": "1.0.2", + "@walletconnect/types": "2.21.5", + "@walletconnect/utils": "2.21.5", + "@walletconnect/window-getters": "1.0.1", + "es-toolkit": "1.39.3", + "events": "3.3.0", + "uint8arrays": "3.1.1" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@reown/appkit-siwx/node_modules/@walletconnect/keyvaluestorage": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@walletconnect/keyvaluestorage/-/keyvaluestorage-1.1.1.tgz", + "integrity": "sha512-V7ZQq2+mSxAq7MrRqDxanTzu2RcElfK1PfNYiaVnJgJ7Q7G7hTVwF8voIBx92qsRyGHZihrwNPHuZd1aKkd0rA==", + "license": "MIT", + "optional": true, + "dependencies": { + "@walletconnect/safe-json": "^1.0.1", + "idb-keyval": "^6.2.1", + "unstorage": "^1.9.0" + }, + "peerDependencies": { + "@react-native-async-storage/async-storage": "1.x" + }, + "peerDependenciesMeta": { + "@react-native-async-storage/async-storage": { + "optional": true + } + } + }, + "node_modules/@reown/appkit-siwx/node_modules/@walletconnect/sign-client": { + "version": "2.21.5", + "resolved": "https://registry.npmjs.org/@walletconnect/sign-client/-/sign-client-2.21.5.tgz", + "integrity": "sha512-IAs/IqmE1HVL9EsvqkNRU4NeAYe//h9NwqKi7ToKYZv4jhcC3BBemUD1r8iQJSTHMhO41EKn1G9/DiBln3ZiwQ==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@walletconnect/core": "2.21.5", + "@walletconnect/events": "1.0.1", + "@walletconnect/heartbeat": "1.2.2", + "@walletconnect/jsonrpc-utils": "1.0.8", + "@walletconnect/logger": "2.1.2", + "@walletconnect/time": "1.0.2", + "@walletconnect/types": "2.21.5", + "@walletconnect/utils": "2.21.5", + "events": "3.3.0" + } + }, + "node_modules/@reown/appkit-siwx/node_modules/@walletconnect/types": { + "version": "2.21.5", + "resolved": "https://registry.npmjs.org/@walletconnect/types/-/types-2.21.5.tgz", + "integrity": "sha512-kpTXbenKeMdaz6mgMN/jKaHHbu6mdY3kyyrddzE/mthOd2KLACVrZr7hrTf+Fg2coPVen5d1KKyQjyECEdzOCw==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@walletconnect/events": "1.0.1", + "@walletconnect/heartbeat": "1.2.2", + "@walletconnect/jsonrpc-types": "1.0.4", + "@walletconnect/keyvaluestorage": "1.1.1", + "@walletconnect/logger": "2.1.2", + "events": "3.3.0" + } + }, + "node_modules/@reown/appkit-siwx/node_modules/@walletconnect/universal-provider": { + "version": "2.21.5", + "resolved": "https://registry.npmjs.org/@walletconnect/universal-provider/-/universal-provider-2.21.5.tgz", + "integrity": "sha512-SMXGGXyj78c8Ru2f665ZFZU24phn0yZyCP5Ej7goxVQxABwqWKM/odj3j/IxZv+hxA8yU13yxaubgVefnereqw==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@walletconnect/events": "1.0.1", + "@walletconnect/jsonrpc-http-connection": "1.0.8", + "@walletconnect/jsonrpc-provider": "1.0.14", + "@walletconnect/jsonrpc-types": "1.0.4", + "@walletconnect/jsonrpc-utils": "1.0.8", + "@walletconnect/keyvaluestorage": "1.1.1", + "@walletconnect/logger": "2.1.2", + "@walletconnect/sign-client": "2.21.5", + "@walletconnect/types": "2.21.5", + "@walletconnect/utils": "2.21.5", + "es-toolkit": "1.39.3", + "events": "3.3.0" + } + }, + "node_modules/@reown/appkit-siwx/node_modules/@walletconnect/utils": { + "version": "2.21.5", + "resolved": "https://registry.npmjs.org/@walletconnect/utils/-/utils-2.21.5.tgz", + "integrity": "sha512-RSPSxPvGMuvfGhd5au1cf9cmHB/KVVLFotJR9ltisjFABGtH2215U5oaVp+a7W18QX37aemejRkvacqOELVySA==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@msgpack/msgpack": "3.1.2", + "@noble/ciphers": "1.3.0", + "@noble/curves": "1.9.2", + "@noble/hashes": "1.8.0", + "@scure/base": "1.2.6", + "@walletconnect/jsonrpc-utils": "1.0.8", + "@walletconnect/keyvaluestorage": "1.1.1", + "@walletconnect/relay-api": "1.0.11", + "@walletconnect/relay-auth": "1.1.0", + "@walletconnect/safe-json": "1.0.2", + "@walletconnect/time": "1.0.2", + "@walletconnect/types": "2.21.5", + "@walletconnect/window-getters": "1.0.1", + "@walletconnect/window-metadata": "1.0.1", + "blakejs": "1.2.1", + "bs58": "6.0.0", + "detect-browser": "5.3.0", + "query-string": "7.1.3", + "uint8arrays": "3.1.1", + "viem": "2.31.0" + } + }, + "node_modules/@reown/appkit-siwx/node_modules/@walletconnect/utils/node_modules/ox": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ox/-/ox-0.7.1.tgz", + "integrity": "sha512-+k9fY9PRNuAMHRFIUbiK9Nt5seYHHzSQs9Bj+iMETcGtlpS7SmBzcGSVUQO3+nqGLEiNK4598pHNFlVRaZbRsg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/wevm" + } + ], + "license": "MIT", + "optional": true, + "dependencies": { + "@adraffy/ens-normalize": "^1.10.1", + "@noble/ciphers": "^1.3.0", + "@noble/curves": "^1.6.0", + "@noble/hashes": "^1.5.0", + "@scure/bip32": "^1.5.0", + "@scure/bip39": "^1.4.0", + "abitype": "^1.0.6", + "eventemitter3": "5.0.1" + }, + "peerDependencies": { + "typescript": ">=5.4.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@reown/appkit-siwx/node_modules/@walletconnect/utils/node_modules/viem": { + "version": "2.31.0", + "resolved": "https://registry.npmjs.org/viem/-/viem-2.31.0.tgz", + "integrity": "sha512-U7OMQ6yqK+bRbEIarf2vqxL7unSEQvNxvML/1zG7suAmKuJmipqdVTVJGKBCJiYsm/EremyO2FS4dHIPpGv+eA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/wevm" + } + ], + "license": "MIT", + "optional": true, + "dependencies": { + "@noble/curves": "1.9.1", + "@noble/hashes": "1.8.0", + "@scure/bip32": "1.7.0", + "@scure/bip39": "1.6.0", + "abitype": "1.0.8", + "isows": "1.0.7", + "ox": "0.7.1", + "ws": "8.18.2" + }, + "peerDependencies": { + "typescript": ">=5.0.4" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@reown/appkit-siwx/node_modules/@walletconnect/utils/node_modules/viem/node_modules/@noble/curves": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.9.1.tgz", + "integrity": "sha512-k11yZxZg+t+gWvBbIswW0yoJlu8cHOC7dhunwOzoWH/mXGBiYyR4YY6hAEK/3EUs4UpB8la1RfdRpeGsFHkWsA==", + "license": "MIT", + "optional": true, "dependencies": { "@noble/hashes": "1.8.0" }, @@ -8172,33 +9283,257 @@ "url": "https://paulmillr.com/funding/" } }, - "node_modules/@reown/appkit-siwx/node_modules/@scure/bip32": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.7.0.tgz", - "integrity": "sha512-E4FFX/N3f4B80AKWp5dP6ow+flD1LQZo/w8UnLGYZO674jS6YnYeepycOOksv+vLPSpgN35wgKgy+ybfTb2SMw==", + "node_modules/@reown/appkit-siwx/node_modules/cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "license": "ISC", + "optional": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "node_modules/@reown/appkit-siwx/node_modules/es-toolkit": { + "version": "1.39.3", + "resolved": "https://registry.npmjs.org/es-toolkit/-/es-toolkit-1.39.3.tgz", + "integrity": "sha512-Qb/TCFCldgOy8lZ5uC7nLGdqJwSabkQiYQShmw4jyiPk1pZzaYWTwaYKYP7EgLccWYgZocMrtItrwh683voaww==", + "license": "MIT", + "optional": true, + "workspaces": [ + "docs", + "benchmarks" + ] + }, + "node_modules/@reown/appkit-siwx/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "license": "MIT", "optional": true, "dependencies": { - "@noble/curves": "~1.9.0", - "@noble/hashes": "~1.8.0", - "@scure/base": "~1.2.5" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@reown/appkit-siwx/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "license": "MIT", + "optional": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@reown/appkit-siwx/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "license": "ISC", + "optional": true + }, + "node_modules/@reown/appkit-siwx/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "license": "MIT", + "optional": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" }, "funding": { - "url": "https://paulmillr.com/funding/" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@reown/appkit-siwx/node_modules/@scure/bip39": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.6.0.tgz", - "integrity": "sha512-+lF0BbLiJNwVlev4eKelw1WWLaiKXw7sSl8T6FvBlWkdX+94aGJ4o8XjUdlyhTCjd8c+B3KT3JfS8P0bLRNU6A==", + "node_modules/@reown/appkit-siwx/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "license": "MIT", "optional": true, "dependencies": { - "@noble/hashes": "~1.8.0", - "@scure/base": "~1.2.5" + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@reown/appkit-siwx/node_modules/proxy-compare": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/proxy-compare/-/proxy-compare-3.0.1.tgz", + "integrity": "sha512-V9plBAt3qjMlS1+nC8771KNf6oJ12gExvaxnNzN/9yVRLdTv/lc+oJlnSzrdYDAvBfTStPCoiaCOTmTs0adv7Q==", + "license": "MIT", + "optional": true + }, + "node_modules/@reown/appkit-siwx/node_modules/qrcode": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.5.3.tgz", + "integrity": "sha512-puyri6ApkEHYiVl4CFzo1tDkAZ+ATcnbJrJ6RiBM1Fhctdn/ix9MTE3hRph33omisEbC/2fcfemsseiKgBPKZg==", + "license": "MIT", + "optional": true, + "dependencies": { + "dijkstrajs": "^1.0.1", + "encode-utf8": "^1.0.3", + "pngjs": "^5.0.0", + "yargs": "^15.3.1" + }, + "bin": { + "qrcode": "bin/qrcode" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/@reown/appkit-siwx/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "optional": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@reown/appkit-siwx/node_modules/uint8arrays": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.1.1.tgz", + "integrity": "sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg==", + "license": "MIT", + "optional": true, + "dependencies": { + "multiformats": "^9.4.2" + } + }, + "node_modules/@reown/appkit-siwx/node_modules/unstorage": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.16.1.tgz", + "integrity": "sha512-gdpZ3guLDhz+zWIlYP1UwQ259tG5T5vYRzDaHMkQ1bBY1SQPutvZnrRjTFaWUUpseErJIgAZS51h6NOcZVZiqQ==", + "license": "MIT", + "optional": true, + "dependencies": { + "anymatch": "^3.1.3", + "chokidar": "^4.0.3", + "destr": "^2.0.5", + "h3": "^1.15.3", + "lru-cache": "^10.4.3", + "node-fetch-native": "^1.6.6", + "ofetch": "^1.4.1", + "ufo": "^1.6.1" + }, + "peerDependencies": { + "@azure/app-configuration": "^1.8.0", + "@azure/cosmos": "^4.2.0", + "@azure/data-tables": "^13.3.0", + "@azure/identity": "^4.6.0", + "@azure/keyvault-secrets": "^4.9.0", + "@azure/storage-blob": "^12.26.0", + "@capacitor/preferences": "^6.0.3 || ^7.0.0", + "@deno/kv": ">=0.9.0", + "@netlify/blobs": "^6.5.0 || ^7.0.0 || ^8.1.0 || ^9.0.0 || ^10.0.0", + "@planetscale/database": "^1.19.0", + "@upstash/redis": "^1.34.3", + "@vercel/blob": ">=0.27.1", + "@vercel/kv": "^1.0.1", + "aws4fetch": "^1.0.20", + "db0": ">=0.2.1", + "idb-keyval": "^6.2.1", + "ioredis": "^5.4.2", + "uploadthing": "^7.4.4" + }, + "peerDependenciesMeta": { + "@azure/app-configuration": { + "optional": true + }, + "@azure/cosmos": { + "optional": true + }, + "@azure/data-tables": { + "optional": true + }, + "@azure/identity": { + "optional": true + }, + "@azure/keyvault-secrets": { + "optional": true + }, + "@azure/storage-blob": { + "optional": true + }, + "@capacitor/preferences": { + "optional": true + }, + "@deno/kv": { + "optional": true + }, + "@netlify/blobs": { + "optional": true + }, + "@planetscale/database": { + "optional": true + }, + "@upstash/redis": { + "optional": true + }, + "@vercel/blob": { + "optional": true + }, + "@vercel/kv": { + "optional": true + }, + "aws4fetch": { + "optional": true + }, + "db0": { + "optional": true + }, + "idb-keyval": { + "optional": true + }, + "ioredis": { + "optional": true + }, + "uploadthing": { + "optional": true + } + } + }, + "node_modules/@reown/appkit-siwx/node_modules/valtio": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/valtio/-/valtio-2.1.5.tgz", + "integrity": "sha512-vsh1Ixu5mT0pJFZm+Jspvhga5GzHUTYv0/+Th203pLfh3/wbHwxhu/Z2OkZDXIgHfjnjBns7SN9HNcbDvPmaGw==", + "license": "MIT", + "optional": true, + "dependencies": { + "proxy-compare": "^3.0.1" }, - "funding": { - "url": "https://paulmillr.com/funding/" + "engines": { + "node": ">=12.20.0" + }, + "peerDependencies": { + "@types/react": ">=18.0.0", + "react": ">=18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "react": { + "optional": true + } } }, "node_modules/@reown/appkit-siwx/node_modules/viem": { @@ -8232,6 +9567,21 @@ } } }, + "node_modules/@reown/appkit-siwx/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "license": "MIT", + "optional": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/@reown/appkit-siwx/node_modules/ws": { "version": "8.18.2", "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.2.tgz", @@ -8254,6 +9604,50 @@ } } }, + "node_modules/@reown/appkit-siwx/node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "license": "ISC", + "optional": true + }, + "node_modules/@reown/appkit-siwx/node_modules/yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "license": "MIT", + "optional": true, + "dependencies": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@reown/appkit-siwx/node_modules/yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "license": "ISC", + "optional": true, + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/@reown/appkit-ui": { "version": "1.7.17", "resolved": "https://registry.npmjs.org/@reown/appkit-ui/-/appkit-ui-1.7.17.tgz", @@ -8897,6 +10291,98 @@ "url": "https://paulmillr.com/funding/" } }, + "node_modules/@reown/appkit/node_modules/@reown/appkit-common": { + "version": "1.7.19", + "resolved": "https://registry.npmjs.org/@reown/appkit-common/-/appkit-common-1.7.19.tgz", + "integrity": "sha512-kP/NeQi44c1bwvizIxcNbSHg9mUbA03llWOiVFKiDmL2SQnBWgLoUiuRCDUEvb/Lx9Hjn6GJdMvdGkq2tmJ1rQ==", + "license": "Apache-2.0", + "dependencies": { + "big.js": "6.2.2", + "dayjs": "1.11.13", + "viem": ">=2.32.0" + } + }, + "node_modules/@reown/appkit/node_modules/@reown/appkit-controllers": { + "version": "1.7.19", + "resolved": "https://registry.npmjs.org/@reown/appkit-controllers/-/appkit-controllers-1.7.19.tgz", + "integrity": "sha512-U7LKxlrIbQMnH2GhOC5b/W2+nCjmUI0RhR9uFH2clg36y/nucZozV1E3NQQqz4kki+ZiiQb6PyxQW8wp/yhgCA==", + "license": "Apache-2.0", + "dependencies": { + "@reown/appkit-common": "1.7.19", + "@reown/appkit-wallet": "1.7.19", + "@walletconnect/universal-provider": "2.21.5", + "valtio": "2.1.5", + "viem": ">=2.32.0" + } + }, + "node_modules/@reown/appkit/node_modules/@reown/appkit-polyfills": { + "version": "1.7.19", + "resolved": "https://registry.npmjs.org/@reown/appkit-polyfills/-/appkit-polyfills-1.7.19.tgz", + "integrity": "sha512-TfjkZPaQ2l0LG1DaqlQSXr2nJAwW6TlT65OtlDO4KpJ7MbqGpeVp3ChLsijowKzoet/hire4k2wyL68QdOvYdA==", + "license": "Apache-2.0", + "dependencies": { + "buffer": "6.0.3" + } + }, + "node_modules/@reown/appkit/node_modules/@reown/appkit-scaffold-ui": { + "version": "1.7.19", + "resolved": "https://registry.npmjs.org/@reown/appkit-scaffold-ui/-/appkit-scaffold-ui-1.7.19.tgz", + "integrity": "sha512-X6Op8kPvkqFMzOzP7ocFHwHUKDcElVG8CnVt3BFUNVFqWWpQvxMb1+65OTaF9zFcLtRBuuSVz4EWON3i/DaBxQ==", + "license": "Apache-2.0", + "dependencies": { + "@reown/appkit-common": "1.7.19", + "@reown/appkit-controllers": "1.7.19", + "@reown/appkit-ui": "1.7.19", + "@reown/appkit-utils": "1.7.19", + "@reown/appkit-wallet": "1.7.19", + "lit": "3.3.0" + } + }, + "node_modules/@reown/appkit/node_modules/@reown/appkit-ui": { + "version": "1.7.19", + "resolved": "https://registry.npmjs.org/@reown/appkit-ui/-/appkit-ui-1.7.19.tgz", + "integrity": "sha512-hnFtiky1KMaejzO0HTCw0kdjis0j/+OswOcQ4XrWD9CzJmmgjU6/u3vx7dEnv0iLKSRothNz1QbSHhZtDmKVRQ==", + "license": "Apache-2.0", + "dependencies": { + "@reown/appkit-common": "1.7.19", + "@reown/appkit-controllers": "1.7.19", + "@reown/appkit-wallet": "1.7.19", + "lit": "3.3.0", + "qrcode": "1.5.3" + } + }, + "node_modules/@reown/appkit/node_modules/@reown/appkit-utils": { + "version": "1.7.19", + "resolved": "https://registry.npmjs.org/@reown/appkit-utils/-/appkit-utils-1.7.19.tgz", + "integrity": "sha512-Tac/jptivMfugZb5HtQzT6Jkrbv/9ljbYUI8Tgel+xN4GlhDpc7iTJmDfd9lWi+HUkFB8p6iqOVnghkfrfWtvg==", + "license": "Apache-2.0", + "dependencies": { + "@reown/appkit-common": "1.7.19", + "@reown/appkit-controllers": "1.7.19", + "@reown/appkit-polyfills": "1.7.19", + "@reown/appkit-wallet": "1.7.19", + "@wallet-standard/wallet": "1.1.0", + "@walletconnect/logger": "2.1.2", + "@walletconnect/universal-provider": "2.21.5", + "valtio": "2.1.5", + "viem": ">=2.32.0" + }, + "peerDependencies": { + "valtio": "2.1.5" + } + }, + "node_modules/@reown/appkit/node_modules/@reown/appkit-wallet": { + "version": "1.7.19", + "resolved": "https://registry.npmjs.org/@reown/appkit-wallet/-/appkit-wallet-1.7.19.tgz", + "integrity": "sha512-gmwfFXDKX63HHMKZQU6Rxqgz9oaiXtOMrhhyaNIdyB1IKrtr/Bf/F8ytoG/+pNG0eRkXP03Cr1q15OuWISEzMw==", + "license": "Apache-2.0", + "dependencies": { + "@reown/appkit-common": "1.7.19", + "@reown/appkit-polyfills": "1.7.19", + "@walletconnect/logger": "2.1.2", + "zod": "3.22.4" + } + }, "node_modules/@reown/appkit/node_modules/@scure/bip32": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.7.0.tgz", @@ -9095,6 +10581,17 @@ "url": "https://paulmillr.com/funding/" } }, + "node_modules/@reown/appkit/node_modules/cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, "node_modules/@reown/appkit/node_modules/es-toolkit": { "version": "1.39.3", "resolved": "https://registry.npmjs.org/es-toolkit/-/es-toolkit-1.39.3.tgz", @@ -9105,6 +10602,31 @@ "benchmarks" ] }, + "node_modules/@reown/appkit/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@reown/appkit/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/@reown/appkit/node_modules/lru-cache": { "version": "10.4.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", @@ -9141,12 +10663,57 @@ } } }, + "node_modules/@reown/appkit/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@reown/appkit/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/@reown/appkit/node_modules/proxy-compare": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/proxy-compare/-/proxy-compare-3.0.1.tgz", "integrity": "sha512-V9plBAt3qjMlS1+nC8771KNf6oJ12gExvaxnNzN/9yVRLdTv/lc+oJlnSzrdYDAvBfTStPCoiaCOTmTs0adv7Q==", "license": "MIT" }, + "node_modules/@reown/appkit/node_modules/qrcode": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.5.3.tgz", + "integrity": "sha512-puyri6ApkEHYiVl4CFzo1tDkAZ+ATcnbJrJ6RiBM1Fhctdn/ix9MTE3hRph33omisEbC/2fcfemsseiKgBPKZg==", + "license": "MIT", + "dependencies": { + "dijkstrajs": "^1.0.1", + "encode-utf8": "^1.0.3", + "pngjs": "^5.0.0", + "yargs": "^15.3.1" + }, + "bin": { + "qrcode": "bin/qrcode" + }, + "engines": { + "node": ">=10.13.0" + } + }, "node_modules/@reown/appkit/node_modules/semver": { "version": "7.7.2", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", @@ -9158,6 +10725,18 @@ "node": ">=10" } }, + "node_modules/@reown/appkit/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/@reown/appkit/node_modules/uint8arrays": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.1.1.tgz", @@ -9283,6 +10862,20 @@ } } }, + "node_modules/@reown/appkit/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/@reown/appkit/node_modules/ws": { "version": "8.18.2", "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.2.tgz", @@ -9304,6 +10897,47 @@ } } }, + "node_modules/@reown/appkit/node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "license": "ISC" + }, + "node_modules/@reown/appkit/node_modules/yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "license": "MIT", + "dependencies": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@reown/appkit/node_modules/yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "license": "ISC", + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/@rolldown/pluginutils": { "version": "1.0.0-beta.27", "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.27.tgz", diff --git a/package.json b/package.json index 291d17080..93ab2dc63 100644 --- a/package.json +++ b/package.json @@ -50,7 +50,7 @@ "@mui/x-date-pickers": "^8.2.0", "@rainbow-me/rainbowkit": "^2.2.4", "@reduxjs/toolkit": "^2.8.1", - "@reown/appkit": "^1.7.16", + "@reown/appkit": "^1.7.19", "@reown/appkit-adapter-wagmi": "^1.7.17", "@storybook/addon-designs": "^8.2.1", "@stripe/stripe-js": "^7.4.0", From adf0d203a6f89414cad78c95356bdb766e97d544 Mon Sep 17 00:00:00 2001 From: Mohammad Hosein Balkhani Date: Tue, 19 Aug 2025 21:09:05 +0330 Subject: [PATCH 33/76] chore: add env variables --- .github/workflows/release-android.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/release-android.yml b/.github/workflows/release-android.yml index 47e81dd7f..21b43b57f 100644 --- a/.github/workflows/release-android.yml +++ b/.github/workflows/release-android.yml @@ -65,6 +65,8 @@ jobs: VITE_ACCOUNT_CENTER_URL: ${{ vars.ACCOUNT_CENTER_URL }} VITE_FUND_URL: ${{ vars.FUND_URL }} VITE_VERIFY_URL: ${{ vars.VERIFY_URL }} + VITE_BLOCKFROST_PROJECT_ID: ${{ vars.BLOCKFROST_PROJECT_ID }} + VITE_CARDANO_PAYOUT_ADERESS: ${{ vars.CARDANO_PAYOUT_ADERESS }} - name: Get the latest version code using uses: Vacxe/google-play-cli-kt@0.4.8 From 73da36470701d92470f9f6420a1ebb9db891d105 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 25 Aug 2025 02:41:06 +0000 Subject: [PATCH 34/76] chore(deps): bump react-select from 5.10.1 to 5.10.2 Bumps [react-select](https://github.com/JedWatson/react-select) from 5.10.1 to 5.10.2. - [Release notes](https://github.com/JedWatson/react-select/releases) - [Changelog](https://github.com/JedWatson/react-select/blob/master/docs/CHANGELOG.md) - [Commits](https://github.com/JedWatson/react-select/compare/react-select@5.10.1...react-select@5.10.2) --- updated-dependencies: - dependency-name: react-select dependency-version: 5.10.2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- package-lock.json | 8 ++++---- package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index a5647a463..fd8566284 100644 --- a/package-lock.json +++ b/package-lock.json @@ -68,7 +68,7 @@ "react-qr-code": "^2.0.18", "react-redux": "^9.2.0", "react-router-dom": "^7.5.3", - "react-select": "^5.10.1", + "react-select": "^5.10.2", "socket.io-client": "^4.8.1", "ssi-auth-lib": "^0.0.12", "uuid": "^11.1.0", @@ -36054,9 +36054,9 @@ } }, "node_modules/react-select": { - "version": "5.10.1", - "resolved": "https://registry.npmjs.org/react-select/-/react-select-5.10.1.tgz", - "integrity": "sha512-roPEZUL4aRZDx6DcsD+ZNreVl+fM8VsKn0Wtex1v4IazH60ILp5xhdlp464IsEAlJdXeD+BhDAFsBVMfvLQueA==", + "version": "5.10.2", + "resolved": "https://registry.npmjs.org/react-select/-/react-select-5.10.2.tgz", + "integrity": "sha512-Z33nHdEFWq9tfnfVXaiM12rbJmk+QjFEztWLtmXqQhz6Al4UZZ9xc0wiatmGtUOCCnHN0WizL3tCMYRENX4rVQ==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.12.0", diff --git a/package.json b/package.json index 93ab2dc63..9aed5838a 100644 --- a/package.json +++ b/package.json @@ -87,7 +87,7 @@ "react-qr-code": "^2.0.18", "react-redux": "^9.2.0", "react-router-dom": "^7.5.3", - "react-select": "^5.10.1", + "react-select": "^5.10.2", "socket.io-client": "^4.8.1", "ssi-auth-lib": "^0.0.12", "uuid": "^11.1.0", From 48b1630647a40151964764e390a6180d96a732af Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 25 Aug 2025 02:39:32 +0000 Subject: [PATCH 35/76] chore(deps-dev): bump jest-environment-jsdom from 29.7.0 to 30.0.5 Bumps [jest-environment-jsdom](https://github.com/jestjs/jest/tree/HEAD/packages/jest-environment-jsdom) from 29.7.0 to 30.0.5. - [Release notes](https://github.com/jestjs/jest/releases) - [Changelog](https://github.com/jestjs/jest/blob/main/CHANGELOG.md) - [Commits](https://github.com/jestjs/jest/commits/v30.0.5/packages/jest-environment-jsdom) --- updated-dependencies: - dependency-name: jest-environment-jsdom dependency-version: 30.0.5 dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- package-lock.json | 916 ++++++++++++++++++++++++++++++++-------------- package.json | 2 +- 2 files changed, 645 insertions(+), 273 deletions(-) diff --git a/package-lock.json b/package-lock.json index fd8566284..2c67d75ac 100644 --- a/package-lock.json +++ b/package-lock.json @@ -133,7 +133,7 @@ "husky": "^9.1.7", "identity-obj-proxy": "^3.0.0", "jest": "^29.7.0", - "jest-environment-jsdom": "^29.7.0", + "jest-environment-jsdom": "^30.0.5", "lint-staged": "^16.0.0", "postcss": "^8.5.4", "prettier": "^3.6.2", @@ -185,6 +185,27 @@ "node": ">=6.0.0" } }, + "node_modules/@asamuzakjp/css-color": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@asamuzakjp/css-color/-/css-color-3.2.0.tgz", + "integrity": "sha512-K1A6z8tS3XsmCMM86xoWdn7Fkdn9m6RSVtocUrJYIwZnFVkng/PvkEoWtOWmP+Scc6saYWHWZYbndEEXxl24jw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@csstools/css-calc": "^2.1.3", + "@csstools/css-color-parser": "^3.0.9", + "@csstools/css-parser-algorithms": "^3.0.4", + "@csstools/css-tokenizer": "^3.0.3", + "lru-cache": "^10.4.3" + } + }, + "node_modules/@asamuzakjp/css-color/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC" + }, "node_modules/@babel/code-frame": { "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", @@ -2214,6 +2235,121 @@ "@jridgewell/sourcemap-codec": "^1.4.10" } }, + "node_modules/@csstools/color-helpers": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-5.1.0.tgz", + "integrity": "sha512-S11EXWJyy0Mz5SYvRmY8nJYTFFd1LCNV+7cXyAgQtOOuzb4EsgfqDufL+9esx72/eLhsRdGZwaldu/h+E4t4BA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + } + }, + "node_modules/@csstools/css-calc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-2.1.4.tgz", + "integrity": "sha512-3N8oaj+0juUw/1H3YwmDDJXCgTB1gKU6Hc/bB502u9zR0q2vd786XJH9QfrKIEgFlZmhZiq6epXl4rHqhzsIgQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" + } + }, + "node_modules/@csstools/css-color-parser": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-3.1.0.tgz", + "integrity": "sha512-nbtKwh3a6xNVIp/VRuXV64yTKnb1IjTAEEh3irzS+HkKjAOYLTGNb9pmVNntZ8iVBHcWDA2Dof0QtPgFI1BaTA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "dependencies": { + "@csstools/color-helpers": "^5.1.0", + "@csstools/css-calc": "^2.1.4" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" + } + }, + "node_modules/@csstools/css-parser-algorithms": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.5.tgz", + "integrity": "sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-tokenizer": "^3.0.4" + } + }, + "node_modules/@csstools/css-tokenizer": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.4.tgz", + "integrity": "sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" + } + }, "node_modules/@cypress/request": { "version": "3.0.9", "resolved": "https://registry.npmjs.org/@cypress/request/-/request-3.0.9.tgz", @@ -4568,6 +4704,206 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/@jest/environment-jsdom-abstract": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/@jest/environment-jsdom-abstract/-/environment-jsdom-abstract-30.0.5.tgz", + "integrity": "sha512-gpWwiVxZunkoglP8DCnT3As9x5O8H6gveAOpvaJd2ATAoSh7ZSSCWbr9LQtUMvr8WD3VjG9YnDhsmkCK5WN1rQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/environment": "30.0.5", + "@jest/fake-timers": "30.0.5", + "@jest/types": "30.0.5", + "@types/jsdom": "^21.1.7", + "@types/node": "*", + "jest-mock": "30.0.5", + "jest-util": "30.0.5" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "peerDependencies": { + "canvas": "^3.0.0", + "jsdom": "*" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, + "node_modules/@jest/environment-jsdom-abstract/node_modules/@jest/environment": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-30.0.5.tgz", + "integrity": "sha512-aRX7WoaWx1oaOkDQvCWImVQ8XNtdv5sEWgk4gxR6NXb7WBUnL5sRak4WRzIQRZ1VTWPvV4VI4mgGjNL9TeKMYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/fake-timers": "30.0.5", + "@jest/types": "30.0.5", + "@types/node": "*", + "jest-mock": "30.0.5" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/environment-jsdom-abstract/node_modules/@jest/fake-timers": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-30.0.5.tgz", + "integrity": "sha512-ZO5DHfNV+kgEAeP3gK3XlpJLL4U3Sz6ebl/n68Uwt64qFFs5bv4bfEEjyRGK5uM0C90ewooNgFuKMdkbEoMEXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.0.5", + "@sinonjs/fake-timers": "^13.0.0", + "@types/node": "*", + "jest-message-util": "30.0.5", + "jest-mock": "30.0.5", + "jest-util": "30.0.5" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/environment-jsdom-abstract/node_modules/@jest/schemas": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", + "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sinclair/typebox": "^0.34.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/environment-jsdom-abstract/node_modules/@jest/types": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.0.5.tgz", + "integrity": "sha512-aREYa3aku9SSnea4aX6bhKn4bgv3AXkgijoQgbYV3yvbiGt6z+MQ85+6mIhx9DsKW2BuB/cLR/A+tcMThx+KLQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/pattern": "30.0.1", + "@jest/schemas": "30.0.5", + "@types/istanbul-lib-coverage": "^2.0.6", + "@types/istanbul-reports": "^3.0.4", + "@types/node": "*", + "@types/yargs": "^17.0.33", + "chalk": "^4.1.2" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/environment-jsdom-abstract/node_modules/@sinclair/typebox": { + "version": "0.34.40", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.40.tgz", + "integrity": "sha512-gwBNIP8ZAYev/ORDWW0QvxdwPXwxBtLsdsJgSc7eDIRt8ubP+rxUBzPsrwnu16fgEF8Bx4lh/+mvQvJzcTM6Kw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jest/environment-jsdom-abstract/node_modules/@sinonjs/fake-timers": { + "version": "13.0.5", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-13.0.5.tgz", + "integrity": "sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@sinonjs/commons": "^3.0.1" + } + }, + "node_modules/@jest/environment-jsdom-abstract/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/environment-jsdom-abstract/node_modules/jest-message-util": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.0.5.tgz", + "integrity": "sha512-NAiDOhsK3V7RU0Aa/HnrQo+E4JlbarbmI3q6Pi4KcxicdtjV82gcIUrejOtczChtVQR4kddu1E1EJlW6EN9IyA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@jest/types": "30.0.5", + "@types/stack-utils": "^2.0.3", + "chalk": "^4.1.2", + "graceful-fs": "^4.2.11", + "micromatch": "^4.0.8", + "pretty-format": "30.0.5", + "slash": "^3.0.0", + "stack-utils": "^2.0.6" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/environment-jsdom-abstract/node_modules/jest-mock": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.0.5.tgz", + "integrity": "sha512-Od7TyasAAQX/6S+QCbN6vZoWOMwlTtzzGuxJku1GhGanAjz9y+QsQkpScDmETvdc9aSXyJ/Op4rhpMYBWW91wQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.0.5", + "@types/node": "*", + "jest-util": "30.0.5" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/environment-jsdom-abstract/node_modules/jest-util": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.0.5.tgz", + "integrity": "sha512-pvyPWssDZR0FlfMxCBoc0tvM8iUEskaRFALUtGQYzVEAqisAztmy+R8LnU14KT4XA0H/a5HMVTXat1jLne010g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.0.5", + "@types/node": "*", + "chalk": "^4.1.2", + "ci-info": "^4.2.0", + "graceful-fs": "^4.2.11", + "picomatch": "^4.0.2" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/environment-jsdom-abstract/node_modules/pretty-format": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.0.5.tgz", + "integrity": "sha512-D1tKtYvByrBkFLe2wHJl2bwMJIiT8rW+XA+TiataH79/FszLQMrpGEvzUVkzPau7OCO0Qnrhpe87PqtOAIB8Yw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/schemas": "30.0.5", + "ansi-styles": "^5.2.0", + "react-is": "^18.3.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/environment-jsdom-abstract/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true, + "license": "MIT" + }, "node_modules/@jest/expect": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", @@ -4629,6 +4965,30 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/@jest/pattern": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/@jest/pattern/-/pattern-30.0.1.tgz", + "integrity": "sha512-gWp7NfQW27LaBQz3TITS8L7ZCQ0TLvtmI//4OwlQRx4rnWxcPNIYjxZpDcN4+UlGxgm3jS5QPz8IPTCkb59wZA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "jest-regex-util": "30.0.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/pattern/node_modules/jest-regex-util": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz", + "integrity": "sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, "node_modules/@jest/reporters": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", @@ -12938,16 +13298,6 @@ "node": ">=0.2.6" } }, - "node_modules/@tootallnate/once": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", - "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 10" - } - }, "node_modules/@trapezedev/configure": { "version": "7.1.3", "resolved": "https://registry.npmjs.org/@trapezedev/configure/-/configure-7.1.3.tgz", @@ -13613,9 +13963,9 @@ "license": "MIT" }, "node_modules/@types/jsdom": { - "version": "20.0.1", - "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-20.0.1.tgz", - "integrity": "sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==", + "version": "21.1.7", + "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-21.1.7.tgz", + "integrity": "sha512-yOriVnggzrnQ3a9OKOCxaVuSug3w3/SbOj5i7VwXWZEyUNl3bLF9V3MfxGbZKuwqJOQyRfqXyROBB1CoZLFWzA==", "dev": true, "license": "MIT", "dependencies": { @@ -18352,14 +18702,6 @@ "license": "(Unlicense OR Apache-2.0)", "optional": true }, - "node_modules/abab": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", - "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", - "deprecated": "Use your platform's native atob() and btoa() methods instead", - "dev": true, - "license": "BSD-3-Clause" - }, "node_modules/abitype": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/abitype/-/abitype-1.0.8.tgz", @@ -18406,17 +18748,6 @@ "node": ">=0.4.0" } }, - "node_modules/acorn-globals": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-7.0.1.tgz", - "integrity": "sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "acorn": "^8.1.0", - "acorn-walk": "^8.0.2" - } - }, "node_modules/acorn-jsx": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", @@ -18463,16 +18794,13 @@ "license": "MIT" }, "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", + "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", "dev": true, "license": "MIT", - "dependencies": { - "debug": "4" - }, "engines": { - "node": ">= 6.0.0" + "node": ">= 14" } }, "node_modules/aggregate-error": { @@ -21843,33 +22171,20 @@ "node": ">=4" } }, - "node_modules/cssom": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz", - "integrity": "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==", - "dev": true, - "license": "MIT" - }, "node_modules/cssstyle": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", - "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.6.0.tgz", + "integrity": "sha512-2z+rWdzbbSZv6/rhtvzvqeZQHrBaqgogqt85sqFNbabZOuFbCVFb8kPeEtZjiKkbrm395irpNKiYeFeLiQnFPg==", "dev": true, "license": "MIT", "dependencies": { - "cssom": "~0.3.6" + "@asamuzakjp/css-color": "^3.2.0", + "rrweb-cssom": "^0.8.0" }, "engines": { - "node": ">=8" + "node": ">=18" } }, - "node_modules/cssstyle/node_modules/cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", - "dev": true, - "license": "MIT" - }, "node_modules/csstype": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", @@ -22083,18 +22398,17 @@ } }, "node_modules/data-urls": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz", - "integrity": "sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-5.0.0.tgz", + "integrity": "sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==", "dev": true, "license": "MIT", "dependencies": { - "abab": "^2.0.6", - "whatwg-mimetype": "^3.0.0", - "whatwg-url": "^11.0.0" + "whatwg-mimetype": "^4.0.0", + "whatwg-url": "^14.0.0" }, "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/data-view-buffer": { @@ -22237,9 +22551,9 @@ } }, "node_modules/decimal.js": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.5.0.tgz", - "integrity": "sha512-8vDa8Qxvr/+d94hSh5P3IJwI5t8/c0KsMp+g8bNw9cY2icONa5aPfvKeieW1WlG0WQYwwhJ7mjui2xtiePQSXw==", + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.6.0.tgz", + "integrity": "sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==", "dev": true, "license": "MIT" }, @@ -22869,20 +23183,6 @@ ], "license": "BSD-2-Clause" }, - "node_modules/domexception": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz", - "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==", - "deprecated": "Use your platform's native DOMException instead", - "dev": true, - "license": "MIT", - "dependencies": { - "webidl-conversions": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/domhandler": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", @@ -23580,39 +23880,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/escodegen": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", - "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "esprima": "^4.0.1", - "estraverse": "^5.2.0", - "esutils": "^2.0.2" - }, - "bin": { - "escodegen": "bin/escodegen.js", - "esgenerate": "bin/esgenerate.js" - }, - "engines": { - "node": ">=6.0" - }, - "optionalDependencies": { - "source-map": "~0.6.1" - } - }, - "node_modules/escodegen/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "license": "BSD-3-Clause", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/eslint": { "version": "9.31.0", "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.31.0.tgz", @@ -26168,16 +26435,16 @@ "license": "ISC" }, "node_modules/html-encoding-sniffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", - "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-4.0.0.tgz", + "integrity": "sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==", "dev": true, "license": "MIT", "dependencies": { - "whatwg-encoding": "^2.0.0" + "whatwg-encoding": "^3.1.1" }, "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/html-escaper": { @@ -26202,18 +26469,17 @@ "integrity": "sha512-Pysuw9XpUq5dVc/2SMHpuTY01RFl8fttgcyunjL7eEMhGM3cI4eOmiCycJDVCo/7O7ClfQD3SaI6ftDzqOXYMA==" }, "node_modules/http-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", - "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", "dev": true, "license": "MIT", "dependencies": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" + "agent-base": "^7.1.0", + "debug": "^4.3.4" }, "engines": { - "node": ">= 6" + "node": ">= 14" } }, "node_modules/http-signature": { @@ -26238,17 +26504,17 @@ "license": "MIT" }, "node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", "dev": true, "license": "MIT", "dependencies": { - "agent-base": "6", + "agent-base": "^7.1.2", "debug": "4" }, "engines": { - "node": ">= 6" + "node": ">= 14" } }, "node_modules/human-signals": { @@ -27782,26 +28048,23 @@ "license": "MIT" }, "node_modules/jest-environment-jsdom": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-29.7.0.tgz", - "integrity": "sha512-k9iQbsf9OyOfdzWH8HDmrRT0gSIcX+FLNW7IQq94tFX0gynPwqDTW0Ho6iMVNjGz/nb+l/vW3dWM2bbLLpkbXA==", + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-30.0.5.tgz", + "integrity": "sha512-BmnDEoAH+jEjkPrvE9DTKS2r3jYSJWlN/r46h0/DBUxKrkgt2jAZ5Nj4wXLAcV1KWkRpcFqA5zri9SWzJZ1cCg==", "dev": true, "license": "MIT", "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/fake-timers": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/jsdom": "^20.0.0", + "@jest/environment": "30.0.5", + "@jest/environment-jsdom-abstract": "30.0.5", + "@types/jsdom": "^21.1.7", "@types/node": "*", - "jest-mock": "^29.7.0", - "jest-util": "^29.7.0", - "jsdom": "^20.0.0" + "jsdom": "^26.1.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" }, "peerDependencies": { - "canvas": "^2.5.0" + "canvas": "^3.0.0" }, "peerDependenciesMeta": { "canvas": { @@ -27809,6 +28072,178 @@ } } }, + "node_modules/jest-environment-jsdom/node_modules/@jest/environment": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-30.0.5.tgz", + "integrity": "sha512-aRX7WoaWx1oaOkDQvCWImVQ8XNtdv5sEWgk4gxR6NXb7WBUnL5sRak4WRzIQRZ1VTWPvV4VI4mgGjNL9TeKMYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/fake-timers": "30.0.5", + "@jest/types": "30.0.5", + "@types/node": "*", + "jest-mock": "30.0.5" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-environment-jsdom/node_modules/@jest/fake-timers": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-30.0.5.tgz", + "integrity": "sha512-ZO5DHfNV+kgEAeP3gK3XlpJLL4U3Sz6ebl/n68Uwt64qFFs5bv4bfEEjyRGK5uM0C90ewooNgFuKMdkbEoMEXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.0.5", + "@sinonjs/fake-timers": "^13.0.0", + "@types/node": "*", + "jest-message-util": "30.0.5", + "jest-mock": "30.0.5", + "jest-util": "30.0.5" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-environment-jsdom/node_modules/@jest/schemas": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", + "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sinclair/typebox": "^0.34.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-environment-jsdom/node_modules/@jest/types": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.0.5.tgz", + "integrity": "sha512-aREYa3aku9SSnea4aX6bhKn4bgv3AXkgijoQgbYV3yvbiGt6z+MQ85+6mIhx9DsKW2BuB/cLR/A+tcMThx+KLQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/pattern": "30.0.1", + "@jest/schemas": "30.0.5", + "@types/istanbul-lib-coverage": "^2.0.6", + "@types/istanbul-reports": "^3.0.4", + "@types/node": "*", + "@types/yargs": "^17.0.33", + "chalk": "^4.1.2" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-environment-jsdom/node_modules/@sinclair/typebox": { + "version": "0.34.40", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.40.tgz", + "integrity": "sha512-gwBNIP8ZAYev/ORDWW0QvxdwPXwxBtLsdsJgSc7eDIRt8ubP+rxUBzPsrwnu16fgEF8Bx4lh/+mvQvJzcTM6Kw==", + "dev": true, + "license": "MIT" + }, + "node_modules/jest-environment-jsdom/node_modules/@sinonjs/fake-timers": { + "version": "13.0.5", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-13.0.5.tgz", + "integrity": "sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@sinonjs/commons": "^3.0.1" + } + }, + "node_modules/jest-environment-jsdom/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-environment-jsdom/node_modules/jest-message-util": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.0.5.tgz", + "integrity": "sha512-NAiDOhsK3V7RU0Aa/HnrQo+E4JlbarbmI3q6Pi4KcxicdtjV82gcIUrejOtczChtVQR4kddu1E1EJlW6EN9IyA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@jest/types": "30.0.5", + "@types/stack-utils": "^2.0.3", + "chalk": "^4.1.2", + "graceful-fs": "^4.2.11", + "micromatch": "^4.0.8", + "pretty-format": "30.0.5", + "slash": "^3.0.0", + "stack-utils": "^2.0.6" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-environment-jsdom/node_modules/jest-mock": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.0.5.tgz", + "integrity": "sha512-Od7TyasAAQX/6S+QCbN6vZoWOMwlTtzzGuxJku1GhGanAjz9y+QsQkpScDmETvdc9aSXyJ/Op4rhpMYBWW91wQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.0.5", + "@types/node": "*", + "jest-util": "30.0.5" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-environment-jsdom/node_modules/jest-util": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.0.5.tgz", + "integrity": "sha512-pvyPWssDZR0FlfMxCBoc0tvM8iUEskaRFALUtGQYzVEAqisAztmy+R8LnU14KT4XA0H/a5HMVTXat1jLne010g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.0.5", + "@types/node": "*", + "chalk": "^4.1.2", + "ci-info": "^4.2.0", + "graceful-fs": "^4.2.11", + "picomatch": "^4.0.2" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-environment-jsdom/node_modules/pretty-format": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.0.5.tgz", + "integrity": "sha512-D1tKtYvByrBkFLe2wHJl2bwMJIiT8rW+XA+TiataH79/FszLQMrpGEvzUVkzPau7OCO0Qnrhpe87PqtOAIB8Yw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/schemas": "30.0.5", + "ansi-styles": "^5.2.0", + "react-is": "^18.3.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-environment-jsdom/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true, + "license": "MIT" + }, "node_modules/jest-environment-node": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", @@ -28497,44 +28932,38 @@ } }, "node_modules/jsdom": { - "version": "20.0.3", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-20.0.3.tgz", - "integrity": "sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==", + "version": "26.1.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-26.1.0.tgz", + "integrity": "sha512-Cvc9WUhxSMEo4McES3P7oK3QaXldCfNWp7pl2NNeiIFlCoLr3kfq9kb1fxftiwk1FLV7CvpvDfonxtzUDeSOPg==", "dev": true, "license": "MIT", "dependencies": { - "abab": "^2.0.6", - "acorn": "^8.8.1", - "acorn-globals": "^7.0.0", - "cssom": "^0.5.0", - "cssstyle": "^2.3.0", - "data-urls": "^3.0.2", - "decimal.js": "^10.4.2", - "domexception": "^4.0.0", - "escodegen": "^2.0.0", - "form-data": "^4.0.0", - "html-encoding-sniffer": "^3.0.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.1", + "cssstyle": "^4.2.1", + "data-urls": "^5.0.0", + "decimal.js": "^10.5.0", + "html-encoding-sniffer": "^4.0.0", + "http-proxy-agent": "^7.0.2", + "https-proxy-agent": "^7.0.6", "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.2", - "parse5": "^7.1.1", + "nwsapi": "^2.2.16", + "parse5": "^7.2.1", + "rrweb-cssom": "^0.8.0", "saxes": "^6.0.0", "symbol-tree": "^3.2.4", - "tough-cookie": "^4.1.2", - "w3c-xmlserializer": "^4.0.0", + "tough-cookie": "^5.1.1", + "w3c-xmlserializer": "^5.0.0", "webidl-conversions": "^7.0.0", - "whatwg-encoding": "^2.0.0", - "whatwg-mimetype": "^3.0.0", - "whatwg-url": "^11.0.0", - "ws": "^8.11.0", - "xml-name-validator": "^4.0.0" + "whatwg-encoding": "^3.1.1", + "whatwg-mimetype": "^4.0.0", + "whatwg-url": "^14.1.1", + "ws": "^8.18.0", + "xml-name-validator": "^5.0.0" }, "engines": { - "node": ">=14" + "node": ">=18" }, "peerDependencies": { - "canvas": "^2.5.0" + "canvas": "^3.0.0" }, "peerDependenciesMeta": { "canvas": { @@ -28542,36 +28971,10 @@ } } }, - "node_modules/jsdom/node_modules/tough-cookie": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", - "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.2.0", - "url-parse": "^1.5.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/jsdom/node_modules/universalify": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", - "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4.0.0" - } - }, "node_modules/jsdom/node_modules/ws": { - "version": "8.18.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.2.tgz", - "integrity": "sha512-DMricUmwGZUVr++AEAe2uiVM7UoO9MAVZMDu05UQOaUII0lp+zOzLLU4Xqh/JvTqklB1T4uELaaPBKyjE1r4fQ==", + "version": "8.18.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz", + "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==", "dev": true, "license": "MIT", "engines": { @@ -33844,9 +34247,9 @@ } }, "node_modules/nwsapi": { - "version": "2.2.20", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.20.tgz", - "integrity": "sha512-/ieB+mDe4MrrKMT8z+mQL8klXydZWGR5Dowt4RAGKbJ3kIGEx3X4ljUo+6V73IXtUPWgfOlU5B9MlGxFO5T+cA==", + "version": "2.2.21", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.21.tgz", + "integrity": "sha512-o6nIY3qwiSXl7/LuOU0Dmuctd34Yay0yeuZRLFmDPrrdHpXKFndPj3hM+YEPVHYC5fx2otBx4Ilc/gyYSAUaIA==", "dev": true, "license": "MIT" }, @@ -34454,9 +34857,9 @@ } }, "node_modules/parse5/node_modules/entities": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.0.tgz", - "integrity": "sha512-aKstq2TDOndCn4diEyp9Uq/Flu2i1GlLkc6XIDQSDMuaFE3OPW5OphLCyQ5SpSJZTb4reN+kTcYru5yIfXoRPw==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", + "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", "dev": true, "license": "BSD-2-Clause", "engines": { @@ -35197,19 +35600,6 @@ "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", "license": "MIT" }, - "node_modules/psl": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.15.0.tgz", - "integrity": "sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==", - "dev": true, - "license": "MIT", - "dependencies": { - "punycode": "^2.3.1" - }, - "funding": { - "url": "https://github.com/sponsors/lupomontero" - } - }, "node_modules/public-encrypt": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", @@ -35497,13 +35887,6 @@ "node": ">=0.4.x" } }, - "node_modules/querystringify": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", - "dev": true, - "license": "MIT" - }, "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -36795,13 +37178,6 @@ "node": ">=0.10.5" } }, - "node_modules/requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", - "dev": true, - "license": "MIT" - }, "node_modules/reselect": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/reselect/-/reselect-5.1.1.tgz", @@ -37072,6 +37448,13 @@ "fsevents": "~2.3.2" } }, + "node_modules/rrweb-cssom": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.8.0.tgz", + "integrity": "sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==", + "dev": true, + "license": "MIT" + }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -39319,16 +39702,16 @@ } }, "node_modules/tr46": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", - "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.1.1.tgz", + "integrity": "sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw==", "dev": true, "license": "MIT", "dependencies": { - "punycode": "^2.1.1" + "punycode": "^2.3.1" }, "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/tree-kill": { @@ -40079,17 +40462,6 @@ "node": ">= 0.4" } }, - "node_modules/url-parse": { - "version": "1.5.10", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", - "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" - } - }, "node_modules/url/node_modules/punycode": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", @@ -40615,16 +40987,16 @@ } }, "node_modules/w3c-xmlserializer": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz", - "integrity": "sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz", + "integrity": "sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==", "dev": true, "license": "MIT", "dependencies": { - "xml-name-validator": "^4.0.0" + "xml-name-validator": "^5.0.0" }, "engines": { - "node": ">=14" + "node": ">=18" } }, "node_modules/wagmi": { @@ -43225,40 +43597,40 @@ } }, "node_modules/whatwg-encoding": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", - "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", + "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==", "dev": true, "license": "MIT", "dependencies": { "iconv-lite": "0.6.3" }, "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/whatwg-mimetype": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", - "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", + "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", "dev": true, "license": "MIT", "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/whatwg-url": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", - "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", + "version": "14.2.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.2.0.tgz", + "integrity": "sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==", "dev": true, "license": "MIT", "dependencies": { - "tr46": "^3.0.0", + "tr46": "^5.1.0", "webidl-conversions": "^7.0.0" }, "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/which": { @@ -43581,13 +43953,13 @@ "license": "ISC" }, "node_modules/xml-name-validator": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", - "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-5.0.0.tgz", + "integrity": "sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==", "dev": true, "license": "Apache-2.0", "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/xml2js": { diff --git a/package.json b/package.json index 9aed5838a..44d67c679 100644 --- a/package.json +++ b/package.json @@ -152,7 +152,7 @@ "husky": "^9.1.7", "identity-obj-proxy": "^3.0.0", "jest": "^29.7.0", - "jest-environment-jsdom": "^29.7.0", + "jest-environment-jsdom": "^30.0.5", "lint-staged": "^16.0.0", "postcss": "^8.5.4", "prettier": "^3.6.2", From 15509add8322773699ad79136922916863dfa768 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 27 Aug 2025 16:12:33 +0000 Subject: [PATCH 36/76] chore(deps-dev): bump eslint from 9.31.0 to 9.34.0 Bumps [eslint](https://github.com/eslint/eslint) from 9.31.0 to 9.34.0. - [Release notes](https://github.com/eslint/eslint/releases) - [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md) - [Commits](https://github.com/eslint/eslint/compare/v9.31.0...v9.34.0) --- updated-dependencies: - dependency-name: eslint dependency-version: 9.34.0 dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- package-lock.json | 55 ++++++++++++++++++----------------------------- package.json | 2 +- 2 files changed, 22 insertions(+), 35 deletions(-) diff --git a/package-lock.json b/package-lock.json index 2c67d75ac..904c90948 100644 --- a/package-lock.json +++ b/package-lock.json @@ -118,7 +118,7 @@ "babel-loader": "^10.0.0", "cypress": "^14.5.4", "cypress-file-upload": "^5.0.8", - "eslint": "^9.31.0", + "eslint": "^9.34.0", "eslint-config-prettier": "^10.1.8", "eslint-plugin-cypress": "^4.3.0", "eslint-plugin-i18next": "^6.1.3", @@ -3105,9 +3105,9 @@ } }, "node_modules/@eslint/config-helpers": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.3.0.tgz", - "integrity": "sha512-ViuymvFmcJi04qdZeDc2whTHryouGcDlaxPqarTD0ZE10ISpxGUVZGZDx4w01upyIynL3iu6IXH2bS1NhclQMw==", + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.3.1.tgz", + "integrity": "sha512-xR93k9WhrDYpXHORXpxVL5oHj3Era7wo6k/Wd8/IsQNnZUTzkGS29lyn3nAT05v6ltUuTFVCCYDEGfy2Or/sPA==", "dev": true, "license": "Apache-2.0", "engines": { @@ -3115,9 +3115,9 @@ } }, "node_modules/@eslint/core": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.14.0.tgz", - "integrity": "sha512-qIbV0/JZr7iSDjqAc60IqbLdsj9GDt16xQtWD+B78d/HAlvysGdZZ6rpJHGAc2T0FQx1X6thsSPdnoiGKdNtdg==", + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.15.2.tgz", + "integrity": "sha512-78Md3/Rrxh83gCxoUc0EiciuOHsIITzLy53m3d9UyiW8y9Dj2D29FeETqyKA+BRK76tnTp6RXWb3pCay8Oyomg==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -3165,9 +3165,9 @@ } }, "node_modules/@eslint/js": { - "version": "9.31.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.31.0.tgz", - "integrity": "sha512-LOm5OVt7D4qiKCqoiPbA7LWmI+tbw1VbTUowBcUMgQSuM6poJufkFkYDcQpo5KfgD39TnNySV26QjOh7VFpSyw==", + "version": "9.34.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.34.0.tgz", + "integrity": "sha512-EoyvqQnBNsV1CWaEJ559rxXL4c8V92gxirbawSmVUOWXlsRxxQXl6LmCpdUblgxgSkDIqKnhzba2SjRTI/A5Rw==", "dev": true, "license": "MIT", "engines": { @@ -3188,13 +3188,13 @@ } }, "node_modules/@eslint/plugin-kit": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.3.1.tgz", - "integrity": "sha512-0J+zgWxHN+xXONWIyPWKFMgVuJoZuGiIFu8yxk7RJjxkzpGmyja5wRFqZIVtjDVOQpV+Rw0iOAjYPE2eQyjr0w==", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.3.5.tgz", + "integrity": "sha512-Z5kJ+wU3oA7MMIqVR9tyZRtjYPr4OC004Q4Rw7pgOKUOKkJfZ3O24nz3WYfGRpMDNmcOi3TwQOmgm7B7Tpii0w==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@eslint/core": "^0.14.0", + "@eslint/core": "^0.15.2", "levn": "^0.4.1" }, "engines": { @@ -23881,20 +23881,20 @@ } }, "node_modules/eslint": { - "version": "9.31.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.31.0.tgz", - "integrity": "sha512-QldCVh/ztyKJJZLr4jXNUByx3gR+TDYZCRXEktiZoUR3PGy4qCmSbkxcIle8GEwGpb5JBZazlaJ/CxLidXdEbQ==", + "version": "9.34.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.34.0.tgz", + "integrity": "sha512-RNCHRX5EwdrESy3Jc9o8ie8Bog+PeYvvSR8sDGoZxNFTvZ4dlxUB3WzQ3bQMztFrSRODGrLLj8g6OFuGY/aiQg==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.12.1", "@eslint/config-array": "^0.21.0", - "@eslint/config-helpers": "^0.3.0", - "@eslint/core": "^0.15.0", + "@eslint/config-helpers": "^0.3.1", + "@eslint/core": "^0.15.2", "@eslint/eslintrc": "^3.3.1", - "@eslint/js": "9.31.0", - "@eslint/plugin-kit": "^0.3.1", + "@eslint/js": "9.34.0", + "@eslint/plugin-kit": "^0.3.5", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.4.2", @@ -24347,19 +24347,6 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint/node_modules/@eslint/core": { - "version": "0.15.1", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.15.1.tgz", - "integrity": "sha512-bkOp+iumZCCbt1K1CmWf0R9pM5yKpDv+ZXtvSyQpudrI9kuFLp+bM2WOPXImuD/ceQuaa8f5pj93Y7zyECIGNA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@types/json-schema": "^7.0.15" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, "node_modules/eslint/node_modules/eslint-visitor-keys": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", diff --git a/package.json b/package.json index 44d67c679..2f096601a 100644 --- a/package.json +++ b/package.json @@ -137,7 +137,7 @@ "babel-loader": "^10.0.0", "cypress": "^14.5.4", "cypress-file-upload": "^5.0.8", - "eslint": "^9.31.0", + "eslint": "^9.34.0", "eslint-config-prettier": "^10.1.8", "eslint-plugin-cypress": "^4.3.0", "eslint-plugin-i18next": "^6.1.3", From ec58dd5b8a1a3d987fca72e171032d992cdcd81d Mon Sep 17 00:00:00 2001 From: Sanaz Mahmoudi Date: Sun, 24 Aug 2025 22:38:05 +0330 Subject: [PATCH 37/76] fix: cypress environments issue --- cypress.config.ts | 6 ------ cypress.env.json | 2 +- 2 files changed, 1 insertion(+), 7 deletions(-) diff --git a/cypress.config.ts b/cypress.config.ts index 773a7d712..d2353864a 100644 --- a/cypress.config.ts +++ b/cypress.config.ts @@ -1,14 +1,8 @@ import { defineConfig } from 'cypress'; -import dotenv from 'dotenv'; - -dotenv.config(); export default defineConfig({ e2e: { setupNodeEvents(on, config) { - config.env.api_server = process.env.VITE_BASE_URL; - config.env.app_url = process.env.VITE_APP_URL; - return config; }, }, diff --git a/cypress.env.json b/cypress.env.json index c7bbb0cc1..ba22d27da 100644 --- a/cypress.env.json +++ b/cypress.env.json @@ -1,6 +1,6 @@ { "api_server": "https://dev.socious.io/api/v2", "api_server_v3": "https://dev.socious.io/api/v3", - "app_url": "http://localhost:3000", + "app_url": "http://localhost:3000/", "account_center_url": "https://dev-id.socious.io" } \ No newline at end of file From 3b278ac71e484c97f1b57733ec8b731652409549 Mon Sep 17 00:00:00 2001 From: Sanaz Mahmoudi Date: Sun, 24 Aug 2025 22:38:39 +0330 Subject: [PATCH 38/76] fix: added env variables to docker.yml --- .github/workflows/docker.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 3274e2aa7..0fc7cc4d3 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -29,11 +29,14 @@ jobs: PORT: 3000 VITE_ENV: development VITE_BASE_URL: https://dev.socious.io/api/v2 + VITE_BASE_URL_V3: https://dev.socious.io/api/v3 VITE_APP_URL: https://webapp2.socious.io/ VITE_JP_STRIPE_PUBLIC_KEY: pk_test VITE_DAPP_ENV: testnet VITE_GOOGLE_OAUTH_CLIENT_ID: id VITE_GOOGLE_RECAPTCHA_SITE_KEY: secret + VITE_BLOCKFROST_PROJECT_ID: id + VITE_CARDANO_PAYOUT_ADERESS: address - name: Check Status if: failure() From 06bcb2a6ccab3e791aaf46cc8595c416bb18253a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 1 Sep 2025 02:20:25 +0000 Subject: [PATCH 39/76] chore(deps): bump dotenv from 16.5.0 to 17.2.1 Bumps [dotenv](https://github.com/motdotla/dotenv) from 16.5.0 to 17.2.1. - [Changelog](https://github.com/motdotla/dotenv/blob/master/CHANGELOG.md) - [Commits](https://github.com/motdotla/dotenv/compare/v16.5.0...v17.2.1) --- updated-dependencies: - dependency-name: dotenv dependency-version: 17.2.1 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- package-lock.json | 20 ++++++++++++++++---- package.json | 2 +- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 904c90948..7a66c9104 100644 --- a/package-lock.json +++ b/package-lock.json @@ -41,7 +41,7 @@ "axios": "^1.10.0", "cardano-bridge": "github:socious-io/cardano-bridge#v0.0.6", "country-flag-icons": "^1.5.19", - "dotenv": "^16.5.0", + "dotenv": "^17.2.1", "ethers": "^6.15.0", "firebase": "^11.10.0", "i18next-browser-languagedetector": "^8.1.0", @@ -20952,6 +20952,18 @@ "tsx": "^4.19.2" } }, + "node_modules/cardano-bridge/node_modules/dotenv": { + "version": "16.6.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.6.1.tgz", + "integrity": "sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, "node_modules/caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", @@ -23228,9 +23240,9 @@ } }, "node_modules/dotenv": { - "version": "16.5.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.5.0.tgz", - "integrity": "sha512-m/C+AwOAr9/W1UOIZUo232ejMNnJAJtYQjUbHoNTBNTJSvqzzDh7vnrei3o3r3m9blf6ZoDkvcw0VmozNRFJxg==", + "version": "17.2.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.2.1.tgz", + "integrity": "sha512-kQhDYKZecqnM0fCnzI5eIv5L4cAe/iRI+HqMbO/hbRdTAeXDG+M9FjipUxNfbARuEg4iHIbhnhs78BCHNbSxEQ==", "license": "BSD-2-Clause", "engines": { "node": ">=12" diff --git a/package.json b/package.json index 2f096601a..e46a643b0 100644 --- a/package.json +++ b/package.json @@ -60,7 +60,7 @@ "axios": "^1.10.0", "cardano-bridge": "github:socious-io/cardano-bridge#v0.0.6", "country-flag-icons": "^1.5.19", - "dotenv": "^16.5.0", + "dotenv": "^17.2.1", "ethers": "^6.15.0", "firebase": "^11.10.0", "i18next-browser-languagedetector": "^8.1.0", From 543fb83b5af868c6325aabf7bfabef3f79458348 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 1 Sep 2025 02:18:49 +0000 Subject: [PATCH 40/76] chore(deps-dev): bump eslint-plugin-prettier from 5.5.3 to 5.5.4 Bumps [eslint-plugin-prettier](https://github.com/prettier/eslint-plugin-prettier) from 5.5.3 to 5.5.4. - [Release notes](https://github.com/prettier/eslint-plugin-prettier/releases) - [Changelog](https://github.com/prettier/eslint-plugin-prettier/blob/main/CHANGELOG.md) - [Commits](https://github.com/prettier/eslint-plugin-prettier/compare/v5.5.3...v5.5.4) --- updated-dependencies: - dependency-name: eslint-plugin-prettier dependency-version: 5.5.4 dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- package-lock.json | 8 ++++---- package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7a66c9104..e810d7668 100644 --- a/package-lock.json +++ b/package-lock.json @@ -125,7 +125,7 @@ "eslint-plugin-import": "^2.31.0", "eslint-plugin-jsdoc": "^51.0.1", "eslint-plugin-jsx-a11y": "^6.10.2", - "eslint-plugin-prettier": "^5.5.3", + "eslint-plugin-prettier": "^5.5.4", "eslint-plugin-react": "^7.37.5", "eslint-plugin-react-hooks": "^5.2.0", "eslint-plugin-storybook": "^9.0.7", @@ -24218,9 +24218,9 @@ } }, "node_modules/eslint-plugin-prettier": { - "version": "5.5.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.5.3.tgz", - "integrity": "sha512-NAdMYww51ehKfDyDhv59/eIItUVzU0Io9H2E8nHNGKEeeqlnci+1gCvrHib6EmZdf6GxF+LCV5K7UC65Ezvw7w==", + "version": "5.5.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.5.4.tgz", + "integrity": "sha512-swNtI95SToIz05YINMA6Ox5R057IMAmWZ26GqPxusAp1TZzj+IdY9tXNWWD3vkF/wEqydCONcwjTFpxybBqZsg==", "dev": true, "license": "MIT", "dependencies": { diff --git a/package.json b/package.json index e46a643b0..9797bfb1e 100644 --- a/package.json +++ b/package.json @@ -144,7 +144,7 @@ "eslint-plugin-import": "^2.31.0", "eslint-plugin-jsdoc": "^51.0.1", "eslint-plugin-jsx-a11y": "^6.10.2", - "eslint-plugin-prettier": "^5.5.3", + "eslint-plugin-prettier": "^5.5.4", "eslint-plugin-react": "^7.37.5", "eslint-plugin-react-hooks": "^5.2.0", "eslint-plugin-storybook": "^9.0.7", From 4dc3dcfd056f34ef512e8607edd38d5b20371c82 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 1 Sep 2025 02:17:30 +0000 Subject: [PATCH 41/76] chore(deps): bump yup from 1.6.1 to 1.7.0 Bumps [yup](https://github.com/jquense/yup) from 1.6.1 to 1.7.0. - [Release notes](https://github.com/jquense/yup/releases) - [Changelog](https://github.com/jquense/yup/blob/master/CHANGELOG.md) - [Commits](https://github.com/jquense/yup/compare/v1.6.1...v1.7.0) --- updated-dependencies: - dependency-name: yup dependency-version: 1.7.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- package-lock.json | 8 ++++---- package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index e810d7668..0e5f78256 100644 --- a/package-lock.json +++ b/package-lock.json @@ -76,7 +76,7 @@ "vite-plugin-node-polyfills": "^0.24.0", "vite-tsconfig-paths": "^5.1.4", "wagmi": "^2.15.6", - "yup": "^1.6.1" + "yup": "^1.7.0" }, "devDependencies": { "@babel/core": "^7.28.0", @@ -44125,9 +44125,9 @@ } }, "node_modules/yup": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/yup/-/yup-1.6.1.tgz", - "integrity": "sha512-JED8pB50qbA4FOkDol0bYF/p60qSEDQqBD0/qeIrUCG1KbPBIQ776fCUNb9ldbPcSTxA69g/47XTo4TqWiuXOA==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/yup/-/yup-1.7.0.tgz", + "integrity": "sha512-VJce62dBd+JQvoc+fCVq+KZfPHr+hXaxCcVgotfwWvlR0Ja3ffYKaJBT8rptPOSKOGJDCUnW2C2JWpud7aRP6Q==", "license": "MIT", "dependencies": { "property-expr": "^2.0.5", diff --git a/package.json b/package.json index 9797bfb1e..8b0705143 100644 --- a/package.json +++ b/package.json @@ -95,7 +95,7 @@ "vite-plugin-node-polyfills": "^0.24.0", "vite-tsconfig-paths": "^5.1.4", "wagmi": "^2.15.6", - "yup": "^1.6.1" + "yup": "^1.7.0" }, "devDependencies": { "@babel/core": "^7.28.0", From 803dac0baab33fb5fde474e371fc90b58276e218 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 1 Sep 2025 02:16:26 +0000 Subject: [PATCH 42/76] chore(deps): bump react-i18next from 15.5.2 to 15.7.3 Bumps [react-i18next](https://github.com/i18next/react-i18next) from 15.5.2 to 15.7.3. - [Changelog](https://github.com/i18next/react-i18next/blob/master/CHANGELOG.md) - [Commits](https://github.com/i18next/react-i18next/compare/v15.5.2...v15.7.3) --- updated-dependencies: - dependency-name: react-i18next dependency-version: 15.7.3 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- package-lock.json | 26 +++++++++++++------------- package.json | 2 +- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0e5f78256..435d832e2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -61,7 +61,7 @@ "react-google-recaptcha": "^3.1.0", "react-helmet": "^6.1.0", "react-hook-form": "^7.58.0", - "react-i18next": "^15.5.1", + "react-i18next": "^15.7.3", "react-infinite-scroller": "^1.2.6", "react-intersection-observer": "^9.16.0", "react-otp-input": "^3.1.1", @@ -646,9 +646,9 @@ } }, "node_modules/@babel/runtime": { - "version": "7.27.3", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.27.3.tgz", - "integrity": "sha512-7EYtGezsdiDMyY80+65EzwiGmcJqpmcZCojSXaRgdrBaGtWTgDZKq69cPIVped6MkIM78cTQ2GOiEYjwOlG4xw==", + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.3.tgz", + "integrity": "sha512-9uIQ10o0WGdpP6GDhXcdOJPJuDgFtIDtN/9+ArJQ2NAfAmiuhTQdzkaTGR33v43GYS2UrSA0eX2pPPHoFVvpxA==", "license": "MIT", "engines": { "node": ">=6.9.0" @@ -26551,9 +26551,9 @@ } }, "node_modules/i18next": { - "version": "25.2.1", - "resolved": "https://registry.npmjs.org/i18next/-/i18next-25.2.1.tgz", - "integrity": "sha512-+UoXK5wh+VlE1Zy5p6MjcvctHXAhRwQKCxiJD8noKZzIXmnAX8gdHX5fLPA3MEVxEN4vbZkQFy8N0LyD9tUqPw==", + "version": "25.4.2", + "resolved": "https://registry.npmjs.org/i18next/-/i18next-25.4.2.tgz", + "integrity": "sha512-gD4T25a6ovNXsfXY1TwHXXXLnD/K2t99jyYMCSimSCBnBRJVQr5j+VAaU83RJCPzrTGhVQ6dqIga66xO2rtd5g==", "funding": [ { "type": "individual", @@ -26571,7 +26571,7 @@ "license": "MIT", "peer": true, "dependencies": { - "@babel/runtime": "^7.27.1" + "@babel/runtime": "^7.27.6" }, "peerDependencies": { "typescript": "^5" @@ -36247,16 +36247,16 @@ } }, "node_modules/react-i18next": { - "version": "15.5.2", - "resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-15.5.2.tgz", - "integrity": "sha512-ePODyXgmZQAOYTbZXQn5rRsSBu3Gszo69jxW6aKmlSgxKAI1fOhDwSu6bT4EKHciWPKQ7v7lPrjeiadR6Gi+1A==", + "version": "15.7.3", + "resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-15.7.3.tgz", + "integrity": "sha512-AANws4tOE+QSq/IeMF/ncoHlMNZaVLxpa5uUGW1wjike68elVYr0018L9xYoqBr1OFO7G7boDPrbn0HpMCJxTw==", "license": "MIT", "dependencies": { - "@babel/runtime": "^7.25.0", + "@babel/runtime": "^7.27.6", "html-parse-stringify": "^3.0.1" }, "peerDependencies": { - "i18next": ">= 23.2.3", + "i18next": ">= 25.4.1", "react": ">= 16.8.0", "typescript": "^5" }, diff --git a/package.json b/package.json index 8b0705143..2200ed111 100644 --- a/package.json +++ b/package.json @@ -80,7 +80,7 @@ "react-google-recaptcha": "^3.1.0", "react-helmet": "^6.1.0", "react-hook-form": "^7.58.0", - "react-i18next": "^15.5.1", + "react-i18next": "^15.7.3", "react-infinite-scroller": "^1.2.6", "react-intersection-observer": "^9.16.0", "react-otp-input": "^3.1.1", From 82d1dad4c6b8ffd764c8211726031642288fc5a7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 1 Sep 2025 02:13:01 +0000 Subject: [PATCH 43/76] chore(deps-dev): bump @eslint/compat from 1.2.9 to 1.3.2 Bumps [@eslint/compat](https://github.com/eslint/rewrite/tree/HEAD/packages/compat) from 1.2.9 to 1.3.2. - [Release notes](https://github.com/eslint/rewrite/releases) - [Changelog](https://github.com/eslint/rewrite/blob/main/packages/compat/CHANGELOG.md) - [Commits](https://github.com/eslint/rewrite/commits/compat-v1.3.2/packages/compat) --- updated-dependencies: - dependency-name: "@eslint/compat" dependency-version: 1.3.2 dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- package-lock.json | 10 +++++----- package.json | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 435d832e2..38485e3f5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -83,7 +83,7 @@ "@capacitor/assets": "^3.0.5", "@capacitor/cli": "^7.4.2", "@chromatic-com/storybook": "^3.2.6", - "@eslint/compat": "^1.2.9", + "@eslint/compat": "^1.3.2", "@eslint/eslintrc": "^3.3.1", "@eslint/js": "^9.28.0", "@storybook/addon-a11y": "^8.6.12", @@ -3072,16 +3072,16 @@ } }, "node_modules/@eslint/compat": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/@eslint/compat/-/compat-1.2.9.tgz", - "integrity": "sha512-gCdSY54n7k+driCadyMNv8JSPzYLeDVM/ikZRtvtROBpRdFSkS8W9A82MqsaY7lZuwL0wiapgD0NT1xT0hyJsA==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@eslint/compat/-/compat-1.3.2.tgz", + "integrity": "sha512-jRNwzTbd6p2Rw4sZ1CgWRS8YMtqG15YyZf7zvb6gY2rB2u6n+2Z+ELW0GtL0fQgyl0pr4Y/BzBfng/BdsereRA==", "dev": true, "license": "Apache-2.0", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "peerDependencies": { - "eslint": "^9.10.0" + "eslint": "^8.40 || 9" }, "peerDependenciesMeta": { "eslint": { diff --git a/package.json b/package.json index 2200ed111..7d6e20d09 100644 --- a/package.json +++ b/package.json @@ -102,7 +102,7 @@ "@capacitor/assets": "^3.0.5", "@capacitor/cli": "^7.4.2", "@chromatic-com/storybook": "^3.2.6", - "@eslint/compat": "^1.2.9", + "@eslint/compat": "^1.3.2", "@eslint/eslintrc": "^3.3.1", "@eslint/js": "^9.28.0", "@storybook/addon-a11y": "^8.6.12", From 63e32024f0b67f972ec56e7a1b3775b27ad1b474 Mon Sep 17 00:00:00 2001 From: Shant Isaghoolian Date: Mon, 11 Aug 2025 15:50:11 -0700 Subject: [PATCH 44/76] messaging tests --- cypress/e2e/messaging/messaging.cy.ts | 79 + cypress/e2e/messaging/mocks.ts | 1280 +++++++++++++++++ .../chats/components/summaryCard/index.tsx | 2 +- .../components/SearchDropdown/index.tsx | 2 +- src/pages/chats/index.tsx | 1 + 5 files changed, 1362 insertions(+), 2 deletions(-) create mode 100644 cypress/e2e/messaging/messaging.cy.ts create mode 100644 cypress/e2e/messaging/mocks.ts diff --git a/cypress/e2e/messaging/messaging.cy.ts b/cypress/e2e/messaging/messaging.cy.ts new file mode 100644 index 000000000..7826d36c4 --- /dev/null +++ b/cypress/e2e/messaging/messaging.cy.ts @@ -0,0 +1,79 @@ +import { MESSAGES, SEARCH_FOLLOWINGS, SENT_MESSAGE, SUMMARY, USER_IDENTTITY, NOTIFICATIONS } from './mocks'; +import { API_SERVER, APP_URL, FIRSTNAME, LASTNAME, USERNAME } from '../authentication/constants'; +import { User, generateRandomEmail } from '../authentication/utilities'; + +const SIGNINGUP_EMAIL = generateRandomEmail(); +const user = new User(FIRSTNAME, LASTNAME, SIGNINGUP_EMAIL, USERNAME); + +describe('Messagung feature', () => { + beforeEach(() => { + cy.intercept('GET', `${API_SERVER}/chats/summary*t=*&page=*`, req => { + req.reply(200, SUMMARY); + }).as('getSummary'); + cy.intercept('GET', `${API_SERVER}/identities*`, req => { + req.reply(user.getIdentity()); + }).as('getIdentities'); + cy.intercept('GET', `${API_SERVER}/notifications*t=*`, req => { + req.reply(200, NOTIFICATIONS); + }).as('getNotifications'); + cy.intercept('GET', `${API_SERVER}/chats/unreads/counts*t=*`, req => { + req.reply(200, { count: 1 }); + }).as('getUnreadCounts'); + cy.intercept('GET', `${API_SERVER}/socket.io/*`, req => { + req.reply(200); + }).as('socket'); + cy.intercept('GET', `${API_SERVER}/follows/followings*t=*&name=*`, req => { + req.reply(200, SEARCH_FOLLOWINGS); + }).as('searchFollowings'); + cy.intercept('GET', `${API_SERVER}/chats/*/messages*t=*&page=*`, req => { + req.reply(200, MESSAGES); + }).as('getMessages'); + + cy.intercept( + 'GET', + 'https://explorer-api.walletconnect.com/w3m/v1/getDesktopListings*projectId=*&sdkType=*&sdkVersion=*&page=*&entries=*&version=*', + req => { + req.reply(200); + }, + ).as('getDesktopListenings'); + + cy.intercept('POST', `${API_SERVER}/chats/*/messages`, req => { + req.reply(200, SENT_MESSAGE); + }).as('postMessage'); + + cy.intercept('GET', `${API_SERVER}/notifications*t=*`, req => { + req.reply(200, NOTIFICATIONS); + }).as('getNotifications'); + + cy.intercept('POST', `https://pulse.walletconnect.org/batch?projectId=*&st=*&sv=*`, req => { + req.reply(200); + }).as('postWallet'); + }); + it('navigating to messaging and selecting the first option on the list', () => { + cy.visit(`${APP_URL}chats`); + cy.wait('@getSummary'); + + cy.get('[data-testid="select-chat"]').first().click(); + cy.wait('@getMessages'); + + cy.get('textarea[placeholder="Send a message"]').first().type('Hello, this is a test message!'); + cy.contains('button', 'Send').click(); + cy.wait('@postMessage').its('response.statusCode').should('eq', 200); + + cy.contains('Hello, this is a test message!'); + }); + it('should open a new chat and search for the organizaiton and message to it', () => { + cy.visit(`${APP_URL}chats`); + cy.wait('@getSummary'); + + cy.get('[data-testid="message-to-icon"]').should('exist').click(); + cy.get('#contact').type('organization'); + cy.get('[data-testid="dropdown-open"]').should('be.visible'); + cy.contains('OrganizationTest').should('be.visible'); + cy.contains('OrganizationTest').click(); + + cy.get('textarea[placeholder="Send a message"]').first().type('Hello, this is a test message!'); + cy.contains('button', 'Send').click(); + cy.wait('@postMessage').its('response.statusCode').should('eq', 200); + }); +}); diff --git a/cypress/e2e/messaging/mocks.ts b/cypress/e2e/messaging/mocks.ts new file mode 100644 index 000000000..a149b8546 --- /dev/null +++ b/cypress/e2e/messaging/mocks.ts @@ -0,0 +1,1280 @@ +export const SUMMARY = { + page: 1, + limit: 10, + total_count: 1, + items: [ + { + id: '47909b77-87b4-461d-b242-eb63bd498fab', + name: 'nameless', + description: null, + type: 'CHAT', + created_by: '1396c403-1ade-4c40-b0d1-4680059a46c5', + updated_at: '2025-03-05T16:45:26.175Z', + created_at: '2025-02-28T10:27:08.825Z', + deleted_at: null, + participants: [ + { + type: 'ADMIN', + all_read: true, + last_read_id: '374fa3f9-1d1b-40d0-9d06-68f814df1a1b', + last_read_at: '2025-03-05T16:42:23.356Z', + identity_type: 'organizations', + identity_meta: { + id: '1396c403-1ade-4c40-b0d1-4680059a46c5', + city: 'Tehran', + name: 'OrganizationTest', + email: 'imshantik@gmal.com', + image: null, + hiring: false, + status: 'ACTIVE', + address: null, + country: 'IR', + mission: null, + verified: false, + shortname: 'organizationtest', + description: null, + wallet_address: null, + verified_impact: false, + }, + }, + ], + old_id: null, + blocked: false, + participation: { + type: 'MEMBER', + muted_until: null, + last_read_at: '2025-03-05T16:45:26.175Z', + last_read_id: 'eb19f03b-b08a-4177-a9d8-2d8059899060', + all_read: true, + }, + last_message: { + id: 'eb19f03b-b08a-4177-a9d8-2d8059899060', + reply_id: null, + chat_id: '47909b77-87b4-461d-b242-eb63bd498fab', + identity_id: '1396c403-1ade-4c40-b0d1-4680059a46c5', + text: 'test test', + replied: false, + updated_at: '2025-03-05T16:45:26.175Z', + created_at: '2025-03-05T16:45:26.175Z', + deleted_at: null, + media: null, + }, + message_count: '8', + unread_count: '0', + }, + ], +}; + +export const SEARCH_FOLLOWINGS = { + page: 1, + limit: 10, + total_count: 1, + items: [ + { + id: '3abefeb9-dbd7-4e7c-8832-d41220122d9f', + identity_id: '1396c403-1ade-4c40-b0d1-4680059a46c5', + identity_type: 'organizations', + identity_meta: { + id: '1396c403-1ade-4c40-b0d1-4680059a46c5', + city: 'Tehran', + name: 'OrganizationTest', + email: 'imshantik@gmal.com', + image: null, + hiring: false, + status: 'ACTIVE', + address: null, + country: 'IR', + mission: null, + verified: false, + shortname: 'organizationtest', + description: null, + wallet_address: null, + verified_impact: false, + }, + mutual: true, + following: true, + created_at: '2025-02-27T13:16:43.884Z', + }, + ], +}; + +export const MESSAGES = { + page: 1, + limit: 10, + total_count: 8, + items: [ + { + id: 'eb19f03b-b08a-4177-a9d8-2d8059899060', + reply_id: null, + chat_id: '47909b77-87b4-461d-b242-eb63bd498fab', + identity_id: '1396c403-1ade-4c40-b0d1-4680059a46c5', + text: 'test test', + replied: false, + updated_at: '2025-03-05T16:45:26.175Z', + created_at: '2025-03-05T16:45:26.175Z', + deleted_at: null, + media: null, + media_url: null, + }, + { + id: '7894ed98-c9d5-4a63-84b8-f26681b77db4', + reply_id: null, + chat_id: '47909b77-87b4-461d-b242-eb63bd498fab', + identity_id: '1396c403-1ade-4c40-b0d1-4680059a46c5', + text: 'hello shant', + replied: false, + updated_at: '2025-03-05T16:44:08.859Z', + created_at: '2025-03-05T16:44:08.859Z', + deleted_at: null, + media: null, + media_url: null, + }, + { + id: 'bc3957da-2306-436f-bfde-00d3977ce668', + reply_id: null, + chat_id: '47909b77-87b4-461d-b242-eb63bd498fab', + identity_id: '1396c403-1ade-4c40-b0d1-4680059a46c5', + text: 'hi', + replied: false, + updated_at: '2025-03-05T16:43:21.085Z', + created_at: '2025-03-05T16:43:21.085Z', + deleted_at: null, + media: null, + media_url: null, + }, + { + id: '374fa3f9-1d1b-40d0-9d06-68f814df1a1b', + reply_id: null, + chat_id: '47909b77-87b4-461d-b242-eb63bd498fab', + identity_id: '035f724e-5824-4129-8ed6-96c6dda81a3a', + text: 'hello organization', + replied: false, + updated_at: '2025-03-05T16:42:23.356Z', + created_at: '2025-03-05T16:42:23.356Z', + deleted_at: null, + media: null, + media_url: null, + }, + { + id: '521a71af-d4f3-4434-9fd4-095965bff6c1', + reply_id: null, + chat_id: '47909b77-87b4-461d-b242-eb63bd498fab', + identity_id: '1396c403-1ade-4c40-b0d1-4680059a46c5', + text: 'things are nice here', + replied: false, + updated_at: '2025-02-28T10:45:03.832Z', + created_at: '2025-02-28T10:45:03.832Z', + deleted_at: null, + media: null, + media_url: null, + }, + { + id: '1c59246b-8632-45db-ae9a-5e575cf9574d', + reply_id: null, + chat_id: '47909b77-87b4-461d-b242-eb63bd498fab', + identity_id: '035f724e-5824-4129-8ed6-96c6dda81a3a', + text: 'whats good?', + replied: false, + updated_at: '2025-02-28T10:38:39.353Z', + created_at: '2025-02-28T10:38:39.353Z', + deleted_at: null, + media: null, + media_url: null, + }, + { + id: '9fb4d3f5-1e6a-44f6-a1b6-67fc6506c7f1', + reply_id: null, + chat_id: '47909b77-87b4-461d-b242-eb63bd498fab', + identity_id: '035f724e-5824-4129-8ed6-96c6dda81a3a', + text: 'hi', + replied: false, + updated_at: '2025-02-28T10:36:55.040Z', + created_at: '2025-02-28T10:36:55.040Z', + deleted_at: null, + media: null, + media_url: null, + }, + { + id: '09a33391-d6fe-47f1-aeff-f5fb307a0605', + reply_id: null, + chat_id: '47909b77-87b4-461d-b242-eb63bd498fab', + identity_id: '1396c403-1ade-4c40-b0d1-4680059a46c5', + text: 'hello', + replied: false, + updated_at: '2025-02-28T10:36:25.925Z', + created_at: '2025-02-28T10:36:25.925Z', + deleted_at: null, + media: null, + media_url: null, + }, + ], +}; + +export const SENT_MESSAGE = { + id: 'a5f29b60-7d82-4789-8b66-41c2f7f5b2dd', + reply_id: null, + chat_id: '47909b77-87b4-461d-b242-eb63bd498fab', + identity_id: '035f724e-5824-4129-8ed6-96c6dda81a3a', + text: 'Hello, this is a test message!', + replied: false, + updated_at: '2025-03-15T09:30:33.594Z', + created_at: '2025-03-15T09:30:33.594Z', + deleted_at: null, + media: null, +}; + +export const USER_IDENTTITY = [ + { + id: '1396c403-1ade-4c40-b0d1-4680059a46c5', + type: 'organizations', + meta: { + id: '1396c403-1ade-4c40-b0d1-4680059a46c5', + city: 'Tehran', + name: 'OrganizationTest', + email: 'imshantik@gmal.com', + image: null, + hiring: false, + status: 'ACTIVE', + address: null, + country: 'IR', + mission: null, + verified: false, + shortname: 'organizationtest', + description: null, + wallet_address: null, + verified_impact: false, + }, + created_at: '2025-02-27T13:16:43.884Z', + primary: false, + current: false, + verification_status: null, + }, + { + id: '3a4aa78b-9bf1-41bc-ab9c-1ae4fd6ebc7d', + type: 'organizations', + meta: { + id: '3a4aa78b-9bf1-41bc-ab9c-1ae4fd6ebc7d', + city: 'Tehran', + name: 'shant company', + email: 'mockMail@gmail.com', + image: null, + hiring: false, + status: 'ACTIVE', + address: null, + country: 'IR', + mission: null, + verified: false, + shortname: 'shantik', + description: null, + wallet_address: null, + verified_impact: false, + }, + created_at: '2025-02-28T08:24:45.311Z', + primary: false, + current: false, + verification_status: null, + }, + { + current: true, + primary: true, + id: '035f724e-5824-4129-8ed6-96c6dda81a3a', + type: 'users', + meta: { + id: '035f724e-5824-4129-8ed6-96c6dda81a3a', + city: null, + name: null, + email: 'imshantik@gmail.com', + avatar: null, + status: 'ACTIVE', + address: null, + country: null, + username: 'imshantik5140', + open_to_work: true, + is_contributor: null, + wallet_address: null, + identity_verified: false, + open_to_volunteer: false, + }, + created_at: '2025-02-27T10:59:24.278Z', + verification_status: null, + }, +]; + +export const NOTIFICATIONS = { + page: 1, + limit: 50, + total_count: 12, + items: [ + { + id: '723022ee-83ed-4f7c-b119-13f006d4cbd9', + type: 'CHAT', + ref_id: 'eb19f03b-b08a-4177-a9d8-2d8059899060', + user_id: '035f724e-5824-4129-8ed6-96c6dda81a3a', + data: { + id: 'eb19f03b-b08a-4177-a9d8-2d8059899060', + body: { + body: 'OrganizationTest sent you a new message', + title: 'New Message', + }, + text: 'test test', + type: 'CHAT', + media: null, + muted: false, + orgin: { + id: '035f724e-5824-4129-8ed6-96c6dda81a3a', + meta: { + id: '035f724e-5824-4129-8ed6-96c6dda81a3a', + city: null, + name: null, + email: 'imshantik@gmail.com', + avatar: null, + status: 'ACTIVE', + address: null, + country: null, + username: 'imshantik5140', + open_to_work: true, + is_contributor: null, + wallet_address: null, + identity_verified: false, + open_to_volunteer: false, + }, + type: 'users', + created_at: '2025-02-27T10:59:24.278Z', + }, + refId: 'eb19f03b-b08a-4177-a9d8-2d8059899060', + chat_id: '47909b77-87b4-461d-b242-eb63bd498fab', + replied: false, + identity: { + id: '1396c403-1ade-4c40-b0d1-4680059a46c5', + meta: { + id: '1396c403-1ade-4c40-b0d1-4680059a46c5', + city: 'Tehran', + name: 'OrganizationTest', + email: 'imshantik@gmal.com', + image: null, + hiring: false, + status: 'ACTIVE', + address: null, + country: 'IR', + mission: null, + verified: false, + shortname: 'organizationtest', + description: null, + wallet_address: null, + verified_impact: false, + }, + type: 'organizations', + follower: false, + following: false, + created_at: '2025-02-27T13:16:43.884Z', + connection_status: null, + verification_status: null, + }, + parentId: '47909b77-87b4-461d-b242-eb63bd498fab', + reply_id: null, + created_at: '2025-03-05T16:45:26.175Z', + deleted_at: null, + updated_at: '2025-03-05T16:45:26.175Z', + identity_id: '1396c403-1ade-4c40-b0d1-4680059a46c5', + consolidate_number: 0, + }, + view_at: '2025-03-05T16:45:33.770Z', + read_at: '2025-03-05T16:45:40.341Z', + updated_at: '2025-03-05T16:45:40.341Z', + created_at: '2025-03-05T16:45:26.228Z', + silent: false, + }, + { + id: 'bd5c75ef-9dc0-4516-823c-1dda043060b2', + type: 'CHAT', + ref_id: '7894ed98-c9d5-4a63-84b8-f26681b77db4', + user_id: '035f724e-5824-4129-8ed6-96c6dda81a3a', + data: { + id: '7894ed98-c9d5-4a63-84b8-f26681b77db4', + body: { + body: 'OrganizationTest sent you a new message', + title: 'New Message', + }, + text: 'hello shant', + type: 'CHAT', + media: null, + muted: false, + orgin: { + id: '035f724e-5824-4129-8ed6-96c6dda81a3a', + meta: { + id: '035f724e-5824-4129-8ed6-96c6dda81a3a', + city: null, + name: null, + email: 'imshantik@gmail.com', + avatar: null, + status: 'ACTIVE', + address: null, + country: null, + username: 'imshantik5140', + open_to_work: true, + is_contributor: null, + wallet_address: null, + identity_verified: false, + open_to_volunteer: false, + }, + type: 'users', + created_at: '2025-02-27T10:59:24.278Z', + }, + refId: '7894ed98-c9d5-4a63-84b8-f26681b77db4', + chat_id: '47909b77-87b4-461d-b242-eb63bd498fab', + replied: false, + identity: { + id: '1396c403-1ade-4c40-b0d1-4680059a46c5', + meta: { + id: '1396c403-1ade-4c40-b0d1-4680059a46c5', + city: 'Tehran', + name: 'OrganizationTest', + email: 'imshantik@gmal.com', + image: null, + hiring: false, + status: 'ACTIVE', + address: null, + country: 'IR', + mission: null, + verified: false, + shortname: 'organizationtest', + description: null, + wallet_address: null, + verified_impact: false, + }, + type: 'organizations', + follower: false, + following: false, + created_at: '2025-02-27T13:16:43.884Z', + connection_status: null, + verification_status: null, + }, + parentId: '47909b77-87b4-461d-b242-eb63bd498fab', + reply_id: null, + created_at: '2025-03-05T16:44:08.859Z', + deleted_at: null, + updated_at: '2025-03-05T16:44:08.859Z', + identity_id: '1396c403-1ade-4c40-b0d1-4680059a46c5', + consolidate_number: 0, + }, + view_at: '2025-03-05T16:44:44.101Z', + read_at: '2025-03-05T16:44:46.662Z', + updated_at: '2025-03-05T16:44:46.662Z', + created_at: '2025-03-05T16:44:08.912Z', + silent: false, + }, + { + id: 'bb12271f-7f3a-4e29-9109-2216f9bcdab7', + type: 'CHAT', + ref_id: 'bc3957da-2306-436f-bfde-00d3977ce668', + user_id: '035f724e-5824-4129-8ed6-96c6dda81a3a', + data: { + id: 'bc3957da-2306-436f-bfde-00d3977ce668', + body: { + body: 'OrganizationTest sent you a new message', + title: 'New Message', + }, + text: 'hi', + type: 'CHAT', + media: null, + muted: false, + orgin: { + id: '035f724e-5824-4129-8ed6-96c6dda81a3a', + meta: { + id: '035f724e-5824-4129-8ed6-96c6dda81a3a', + city: null, + name: null, + email: 'imshantik@gmail.com', + avatar: null, + status: 'ACTIVE', + address: null, + country: null, + username: 'imshantik5140', + open_to_work: true, + is_contributor: null, + wallet_address: null, + identity_verified: false, + open_to_volunteer: false, + }, + type: 'users', + created_at: '2025-02-27T10:59:24.278Z', + }, + refId: 'bc3957da-2306-436f-bfde-00d3977ce668', + chat_id: '47909b77-87b4-461d-b242-eb63bd498fab', + replied: false, + identity: { + id: '1396c403-1ade-4c40-b0d1-4680059a46c5', + meta: { + id: '1396c403-1ade-4c40-b0d1-4680059a46c5', + city: 'Tehran', + name: 'OrganizationTest', + email: 'imshantik@gmal.com', + image: null, + hiring: false, + status: 'ACTIVE', + address: null, + country: 'IR', + mission: null, + verified: false, + shortname: 'organizationtest', + description: null, + wallet_address: null, + verified_impact: false, + }, + type: 'organizations', + follower: false, + following: false, + created_at: '2025-02-27T13:16:43.884Z', + connection_status: null, + verification_status: null, + }, + parentId: '47909b77-87b4-461d-b242-eb63bd498fab', + reply_id: null, + created_at: '2025-03-05T16:43:21.085Z', + deleted_at: null, + updated_at: '2025-03-05T16:43:21.085Z', + identity_id: '1396c403-1ade-4c40-b0d1-4680059a46c5', + consolidate_number: 0, + }, + view_at: '2025-03-05T16:43:35.235Z', + read_at: '2025-03-05T16:43:49.440Z', + updated_at: '2025-03-05T16:43:49.440Z', + created_at: '2025-03-05T16:43:21.141Z', + silent: false, + }, + { + id: '42c5f1f4-c775-44fa-b2d3-eff308091d7f', + type: 'CHAT', + ref_id: '374fa3f9-1d1b-40d0-9d06-68f814df1a1b', + user_id: '035f724e-5824-4129-8ed6-96c6dda81a3a', + data: { + id: '374fa3f9-1d1b-40d0-9d06-68f814df1a1b', + body: { + body: 'imshantik@gmail.com sent you a new message', + title: 'New Message', + }, + text: 'hello organization', + type: 'CHAT', + media: null, + muted: false, + orgin: { + id: '1396c403-1ade-4c40-b0d1-4680059a46c5', + meta: { + id: '1396c403-1ade-4c40-b0d1-4680059a46c5', + city: 'Tehran', + name: 'OrganizationTest', + email: 'imshantik@gmal.com', + image: null, + hiring: false, + status: 'ACTIVE', + address: null, + country: 'IR', + mission: null, + verified: false, + shortname: 'organizationtest', + description: null, + wallet_address: null, + verified_impact: false, + }, + type: 'organizations', + created_at: '2025-02-27T13:16:43.884Z', + }, + refId: '374fa3f9-1d1b-40d0-9d06-68f814df1a1b', + chat_id: '47909b77-87b4-461d-b242-eb63bd498fab', + replied: false, + identity: { + id: '035f724e-5824-4129-8ed6-96c6dda81a3a', + meta: { + id: '035f724e-5824-4129-8ed6-96c6dda81a3a', + city: null, + name: null, + email: 'imshantik@gmail.com', + avatar: null, + status: 'ACTIVE', + address: null, + country: null, + username: 'imshantik5140', + open_to_work: true, + is_contributor: null, + wallet_address: null, + identity_verified: false, + open_to_volunteer: false, + }, + type: 'users', + follower: false, + following: false, + created_at: '2025-02-27T10:59:24.278Z', + connection_status: null, + verification_status: null, + }, + parentId: '47909b77-87b4-461d-b242-eb63bd498fab', + reply_id: null, + created_at: '2025-03-05T16:42:23.356Z', + deleted_at: null, + updated_at: '2025-03-05T16:42:23.356Z', + identity_id: '035f724e-5824-4129-8ed6-96c6dda81a3a', + consolidate_number: 0, + }, + view_at: '2025-03-05T16:42:40.223Z', + read_at: '2025-03-05T16:42:50.706Z', + updated_at: '2025-03-05T16:42:50.706Z', + created_at: '2025-03-05T16:42:23.421Z', + silent: false, + }, + { + id: '36344c02-2f83-4060-ac86-4fd8353eb493', + type: 'OFFER', + ref_id: '592f9af4-22dd-4ae9-b7a1-8d491251e506', + user_id: '035f724e-5824-4129-8ed6-96c6dda81a3a', + data: { + body: { + body: 'OrganizationTest sent you an offer', + title: 'Have an offer', + }, + type: 'OFFER', + orgin: { + id: '035f724e-5824-4129-8ed6-96c6dda81a3a', + meta: { + id: '035f724e-5824-4129-8ed6-96c6dda81a3a', + city: null, + name: null, + email: 'imshantik@gmail.com', + avatar: null, + status: 'ACTIVE', + address: null, + country: null, + username: 'imshantik5140', + open_to_work: true, + is_contributor: null, + wallet_address: null, + identity_verified: false, + open_to_volunteer: false, + }, + type: 'users', + created_at: '2025-02-27T10:59:24.278Z', + }, + refId: '592f9af4-22dd-4ae9-b7a1-8d491251e506', + identity: { + id: '1396c403-1ade-4c40-b0d1-4680059a46c5', + meta: { + id: '1396c403-1ade-4c40-b0d1-4680059a46c5', + city: 'Tehran', + name: 'OrganizationTest', + email: 'imshantik@gmal.com', + image: null, + hiring: false, + status: 'ACTIVE', + address: null, + country: 'IR', + mission: null, + verified: false, + shortname: 'organizationtest', + description: null, + wallet_address: null, + verified_impact: false, + }, + type: 'organizations', + follower: false, + following: false, + created_at: '2025-02-27T13:16:43.884Z', + connection_status: null, + verification_status: null, + }, + parentId: '25e61193-9857-4af0-a146-6e7943894ccd', + consolidate_number: 0, + }, + view_at: '2025-03-05T12:30:58.257Z', + read_at: '2025-03-05T12:31:06.545Z', + updated_at: '2025-03-05T12:31:06.545Z', + created_at: '2025-03-05T12:30:49.217Z', + silent: false, + }, + { + id: 'ea8244c4-0253-47e2-a1ca-1a3f33af66bb', + type: 'APPLICATION', + ref_id: '8843fce6-042e-46dc-b1ae-50bb7ddd5ced', + user_id: '035f724e-5824-4129-8ed6-96c6dda81a3a', + data: { + body: { + body: 'imshantik@gmail.com applied to your job', + title: 'Job applied', + }, + type: 'APPLICATION', + orgin: { + id: '1396c403-1ade-4c40-b0d1-4680059a46c5', + meta: { + id: '1396c403-1ade-4c40-b0d1-4680059a46c5', + city: 'Tehran', + name: 'OrganizationTest', + email: 'imshantik@gmal.com', + image: null, + hiring: false, + status: 'ACTIVE', + address: null, + country: 'IR', + mission: null, + verified: false, + shortname: 'organizationtest', + description: null, + wallet_address: null, + verified_impact: false, + }, + type: 'organizations', + created_at: '2025-02-27T13:16:43.884Z', + }, + refId: '8843fce6-042e-46dc-b1ae-50bb7ddd5ced', + identity: { + id: '035f724e-5824-4129-8ed6-96c6dda81a3a', + meta: { + id: '035f724e-5824-4129-8ed6-96c6dda81a3a', + city: null, + name: null, + email: 'imshantik@gmail.com', + avatar: null, + status: 'ACTIVE', + address: null, + country: null, + username: 'imshantik5140', + open_to_work: true, + is_contributor: null, + wallet_address: null, + identity_verified: false, + open_to_volunteer: false, + }, + type: 'users', + follower: false, + following: false, + created_at: '2025-02-27T10:59:24.278Z', + connection_status: null, + verification_status: null, + }, + parentId: '25e61193-9857-4af0-a146-6e7943894ccd', + consolidate_number: 0, + }, + view_at: '2025-03-05T12:12:49.063Z', + read_at: '2025-03-05T12:13:57.978Z', + updated_at: '2025-03-05T12:13:57.978Z', + created_at: '2025-03-05T12:10:48.703Z', + silent: false, + }, + { + id: '5a45fbc4-04d7-4141-857f-c9ec4f83aa58', + type: 'OFFER', + ref_id: '2da2348c-f5ae-4440-b9df-cd4629f0ecc6', + user_id: '035f724e-5824-4129-8ed6-96c6dda81a3a', + data: { + body: { + body: 'OrganizationTest sent you an offer', + title: 'Have an offer', + }, + type: 'OFFER', + orgin: { + id: '035f724e-5824-4129-8ed6-96c6dda81a3a', + meta: { + id: '035f724e-5824-4129-8ed6-96c6dda81a3a', + city: null, + name: null, + email: 'imshantik@gmail.com', + avatar: null, + status: 'ACTIVE', + address: null, + country: null, + username: 'imshantik5140', + open_to_work: true, + is_contributor: null, + wallet_address: null, + identity_verified: false, + open_to_volunteer: false, + }, + type: 'users', + created_at: '2025-02-27T10:59:24.278Z', + }, + refId: '2da2348c-f5ae-4440-b9df-cd4629f0ecc6', + identity: { + id: '1396c403-1ade-4c40-b0d1-4680059a46c5', + meta: { + id: '1396c403-1ade-4c40-b0d1-4680059a46c5', + city: 'Tehran', + name: 'OrganizationTest', + email: 'imshantik@gmal.com', + image: null, + hiring: false, + status: 'ACTIVE', + address: null, + country: 'IR', + mission: null, + verified: false, + shortname: 'organizationtest', + description: null, + wallet_address: null, + verified_impact: false, + }, + type: 'organizations', + follower: false, + following: false, + created_at: '2025-02-27T13:16:43.884Z', + connection_status: null, + verification_status: null, + }, + parentId: 'ecce2dec-35a2-4a6a-a0d8-155cd898f6b9', + consolidate_number: 0, + }, + view_at: '2025-03-04T09:36:55.895Z', + read_at: '2025-03-04T09:37:08.918Z', + updated_at: '2025-03-04T09:37:08.918Z', + created_at: '2025-03-04T09:36:26.354Z', + silent: false, + }, + { + id: '0655a77e-e65d-4641-8ecf-5460aa651266', + type: 'CHAT', + ref_id: '521a71af-d4f3-4434-9fd4-095965bff6c1', + user_id: '035f724e-5824-4129-8ed6-96c6dda81a3a', + data: { + id: '521a71af-d4f3-4434-9fd4-095965bff6c1', + body: { + body: 'OrganizationTest sent you a new message', + title: 'New Message', + }, + text: 'things are nice here', + type: 'CHAT', + media: null, + muted: false, + orgin: { + id: '035f724e-5824-4129-8ed6-96c6dda81a3a', + meta: { + id: '035f724e-5824-4129-8ed6-96c6dda81a3a', + city: null, + name: null, + email: 'imshantik@gmail.com', + avatar: null, + status: 'ACTIVE', + address: null, + country: null, + username: 'imshantik5140', + open_to_work: true, + is_contributor: null, + wallet_address: null, + identity_verified: false, + open_to_volunteer: false, + }, + type: 'users', + created_at: '2025-02-27T10:59:24.278Z', + }, + refId: '521a71af-d4f3-4434-9fd4-095965bff6c1', + chat_id: '47909b77-87b4-461d-b242-eb63bd498fab', + replied: false, + identity: { + id: '1396c403-1ade-4c40-b0d1-4680059a46c5', + meta: { + id: '1396c403-1ade-4c40-b0d1-4680059a46c5', + city: 'Tehran', + name: 'OrganizationTest', + email: 'imshantik@gmal.com', + image: null, + hiring: false, + status: 'ACTIVE', + address: null, + country: 'IR', + mission: null, + verified: false, + shortname: 'organizationtest', + description: null, + wallet_address: null, + verified_impact: false, + }, + type: 'organizations', + follower: false, + following: false, + created_at: '2025-02-27T13:16:43.884Z', + connection_status: null, + verification_status: null, + }, + parentId: '47909b77-87b4-461d-b242-eb63bd498fab', + reply_id: null, + created_at: '2025-02-28T10:45:03.832Z', + deleted_at: null, + updated_at: '2025-02-28T10:45:03.832Z', + identity_id: '1396c403-1ade-4c40-b0d1-4680059a46c5', + consolidate_number: 0, + }, + view_at: '2025-02-28T10:45:14.280Z', + read_at: '2025-02-28T10:58:47.888Z', + updated_at: '2025-02-28T10:58:47.888Z', + created_at: '2025-02-28T10:45:04.137Z', + silent: false, + }, + { + id: 'b7363a62-b77f-435d-8c1d-5499ede4830a', + type: 'CHAT', + ref_id: '1c59246b-8632-45db-ae9a-5e575cf9574d', + user_id: '035f724e-5824-4129-8ed6-96c6dda81a3a', + data: { + id: '1c59246b-8632-45db-ae9a-5e575cf9574d', + body: { + body: 'imshantik@gmail.com sent you a new message', + title: 'New Message', + }, + text: 'whats good?', + type: 'CHAT', + media: null, + muted: false, + orgin: { + id: '1396c403-1ade-4c40-b0d1-4680059a46c5', + meta: { + id: '1396c403-1ade-4c40-b0d1-4680059a46c5', + city: 'Tehran', + name: 'OrganizationTest', + email: 'imshantik@gmal.com', + image: null, + hiring: false, + status: 'ACTIVE', + address: null, + country: 'IR', + mission: null, + verified: false, + shortname: 'organizationtest', + description: null, + wallet_address: null, + verified_impact: false, + }, + type: 'organizations', + created_at: '2025-02-27T13:16:43.884Z', + }, + refId: '1c59246b-8632-45db-ae9a-5e575cf9574d', + chat_id: '47909b77-87b4-461d-b242-eb63bd498fab', + replied: false, + identity: { + id: '035f724e-5824-4129-8ed6-96c6dda81a3a', + meta: { + id: '035f724e-5824-4129-8ed6-96c6dda81a3a', + city: null, + name: null, + email: 'imshantik@gmail.com', + avatar: null, + status: 'ACTIVE', + address: null, + country: null, + username: 'imshantik5140', + open_to_work: true, + is_contributor: null, + wallet_address: null, + identity_verified: false, + open_to_volunteer: false, + }, + type: 'users', + follower: false, + following: false, + created_at: '2025-02-27T10:59:24.278Z', + connection_status: null, + verification_status: null, + }, + parentId: '47909b77-87b4-461d-b242-eb63bd498fab', + reply_id: null, + created_at: '2025-02-28T10:38:39.353Z', + deleted_at: null, + updated_at: '2025-02-28T10:38:39.353Z', + identity_id: '035f724e-5824-4129-8ed6-96c6dda81a3a', + consolidate_number: 0, + }, + view_at: '2025-02-28T10:38:47.753Z', + read_at: '2025-02-28T10:58:47.888Z', + updated_at: '2025-02-28T10:58:47.888Z', + created_at: '2025-02-28T10:38:39.404Z', + silent: false, + }, + { + id: 'ec72432e-098c-43ae-85a7-fbe31cb35bcf', + type: 'CHAT', + ref_id: '9fb4d3f5-1e6a-44f6-a1b6-67fc6506c7f1', + user_id: '035f724e-5824-4129-8ed6-96c6dda81a3a', + data: { + id: '9fb4d3f5-1e6a-44f6-a1b6-67fc6506c7f1', + body: { + body: 'imshantik@gmail.com sent you a new message', + title: 'New Message', + }, + text: 'hi', + type: 'CHAT', + media: null, + muted: false, + orgin: { + id: '1396c403-1ade-4c40-b0d1-4680059a46c5', + meta: { + id: '1396c403-1ade-4c40-b0d1-4680059a46c5', + city: 'Tehran', + name: 'OrganizationTest', + email: 'imshantik@gmal.com', + image: null, + hiring: false, + status: 'ACTIVE', + address: null, + country: 'IR', + mission: null, + verified: false, + shortname: 'organizationtest', + description: null, + wallet_address: null, + verified_impact: false, + }, + type: 'organizations', + created_at: '2025-02-27T13:16:43.884Z', + }, + refId: '9fb4d3f5-1e6a-44f6-a1b6-67fc6506c7f1', + chat_id: '47909b77-87b4-461d-b242-eb63bd498fab', + replied: false, + identity: { + id: '035f724e-5824-4129-8ed6-96c6dda81a3a', + meta: { + id: '035f724e-5824-4129-8ed6-96c6dda81a3a', + city: null, + name: null, + email: 'imshantik@gmail.com', + avatar: null, + status: 'ACTIVE', + address: null, + country: null, + username: 'imshantik5140', + open_to_work: true, + is_contributor: null, + wallet_address: null, + identity_verified: false, + open_to_volunteer: false, + }, + type: 'users', + follower: false, + following: false, + created_at: '2025-02-27T10:59:24.278Z', + connection_status: null, + verification_status: null, + }, + parentId: '47909b77-87b4-461d-b242-eb63bd498fab', + reply_id: null, + created_at: '2025-02-28T10:36:55.040Z', + deleted_at: null, + updated_at: '2025-02-28T10:36:55.040Z', + identity_id: '035f724e-5824-4129-8ed6-96c6dda81a3a', + consolidate_number: 0, + }, + view_at: '2025-02-28T10:37:06.632Z', + read_at: '2025-02-28T10:58:47.888Z', + updated_at: '2025-02-28T10:58:47.888Z', + created_at: '2025-02-28T10:36:55.090Z', + silent: false, + }, + { + id: '07894516-ba0c-4aab-a6eb-e6184bdaab1f', + type: 'CHAT', + ref_id: '09a33391-d6fe-47f1-aeff-f5fb307a0605', + user_id: '035f724e-5824-4129-8ed6-96c6dda81a3a', + data: { + id: '09a33391-d6fe-47f1-aeff-f5fb307a0605', + body: { + body: 'OrganizationTest sent you a new message', + title: 'New Message', + }, + text: 'hello', + type: 'CHAT', + media: null, + muted: false, + orgin: { + id: '035f724e-5824-4129-8ed6-96c6dda81a3a', + meta: { + id: '035f724e-5824-4129-8ed6-96c6dda81a3a', + city: null, + name: null, + email: 'imshantik@gmail.com', + avatar: null, + status: 'ACTIVE', + address: null, + country: null, + username: 'imshantik5140', + open_to_work: true, + is_contributor: null, + wallet_address: null, + identity_verified: false, + open_to_volunteer: false, + }, + type: 'users', + created_at: '2025-02-27T10:59:24.278Z', + }, + refId: '09a33391-d6fe-47f1-aeff-f5fb307a0605', + chat_id: '47909b77-87b4-461d-b242-eb63bd498fab', + replied: false, + identity: { + id: '1396c403-1ade-4c40-b0d1-4680059a46c5', + meta: { + id: '1396c403-1ade-4c40-b0d1-4680059a46c5', + city: 'Tehran', + name: 'OrganizationTest', + email: 'imshantik@gmal.com', + image: null, + hiring: false, + status: 'ACTIVE', + address: null, + country: 'IR', + mission: null, + verified: false, + shortname: 'organizationtest', + description: null, + wallet_address: null, + verified_impact: false, + }, + type: 'organizations', + follower: false, + following: false, + created_at: '2025-02-27T13:16:43.884Z', + connection_status: null, + verification_status: null, + }, + parentId: '47909b77-87b4-461d-b242-eb63bd498fab', + reply_id: null, + created_at: '2025-02-28T10:36:25.925Z', + deleted_at: null, + updated_at: '2025-02-28T10:36:25.925Z', + identity_id: '1396c403-1ade-4c40-b0d1-4680059a46c5', + consolidate_number: 0, + }, + view_at: '2025-02-28T10:36:32.705Z', + read_at: '2025-02-28T10:58:47.888Z', + updated_at: '2025-02-28T10:58:47.888Z', + created_at: '2025-02-28T10:36:25.987Z', + silent: false, + }, + { + id: 'e3a5cfa7-2504-43fd-b5e4-869e6932edef', + type: 'APPLICATION', + ref_id: 'cfb626d1-2bf5-474a-bd78-3ddf41b81669', + user_id: '035f724e-5824-4129-8ed6-96c6dda81a3a', + data: { + body: { + body: 'imshantik@gmail.com applied to your job', + title: 'Job applied', + }, + type: 'APPLICATION', + orgin: { + id: '1396c403-1ade-4c40-b0d1-4680059a46c5', + meta: { + id: '1396c403-1ade-4c40-b0d1-4680059a46c5', + city: 'Tehran', + name: 'OrganizationTest', + email: 'imshantik@gmal.com', + image: null, + hiring: false, + status: 'ACTIVE', + address: null, + country: 'IR', + mission: null, + verified: false, + shortname: 'organizationtest', + description: null, + wallet_address: null, + verified_impact: false, + }, + type: 'organizations', + created_at: '2025-02-27T13:16:43.884Z', + }, + refId: 'cfb626d1-2bf5-474a-bd78-3ddf41b81669', + identity: { + id: '035f724e-5824-4129-8ed6-96c6dda81a3a', + meta: { + id: '035f724e-5824-4129-8ed6-96c6dda81a3a', + city: null, + name: null, + email: 'imshantik@gmail.com', + avatar: null, + status: 'ACTIVE', + address: null, + country: null, + username: 'imshantik5140', + open_to_work: true, + is_contributor: null, + wallet_address: null, + identity_verified: false, + open_to_volunteer: false, + }, + type: 'users', + follower: false, + following: false, + created_at: '2025-02-27T10:59:24.278Z', + connection_status: null, + verification_status: null, + }, + parentId: 'ecce2dec-35a2-4a6a-a0d8-155cd898f6b9', + consolidate_number: 0, + }, + view_at: '2025-02-28T10:24:00.022Z', + read_at: '2025-02-28T10:58:47.888Z', + updated_at: '2025-02-28T10:58:47.888Z', + created_at: '2025-02-28T10:23:52.952Z', + silent: false, + }, + ], +}; + +export const ONE_NOTIFICATION = { + page: 1, + limit: 10, + total_count: 1, + items: [ + { + id: '47909b77-87b4-461d-b242-eb63bd498fab', + name: 'nameless', + description: null, + type: 'CHAT', + created_by: '1396c403-1ade-4c40-b0d1-4680059a46c5', + updated_at: '2025-03-05T16:45:26.175Z', + created_at: '2025-02-28T10:27:08.825Z', + deleted_at: null, + participants: [ + { + type: 'ADMIN', + all_read: true, + last_read_id: '374fa3f9-1d1b-40d0-9d06-68f814df1a1b', + last_read_at: '2025-03-05T16:42:23.356Z', + identity_type: 'organizations', + identity_meta: { + id: '1396c403-1ade-4c40-b0d1-4680059a46c5', + city: 'Tehran', + name: 'OrganizationTest', + email: 'imshantik@gmal.com', + image: null, + hiring: false, + status: 'ACTIVE', + address: null, + country: 'IR', + mission: null, + verified: false, + shortname: 'organizationtest', + description: null, + wallet_address: null, + verified_impact: false, + }, + }, + ], + old_id: null, + blocked: false, + participation: { + type: 'MEMBER', + muted_until: null, + last_read_at: '2025-03-05T16:45:26.175Z', + last_read_id: 'eb19f03b-b08a-4177-a9d8-2d8059899060', + all_read: true, + }, + last_message: { + id: 'eb19f03b-b08a-4177-a9d8-2d8059899060', + reply_id: null, + chat_id: '47909b77-87b4-461d-b242-eb63bd498fab', + identity_id: '1396c403-1ade-4c40-b0d1-4680059a46c5', + text: 'test test', + replied: false, + updated_at: '2025-03-05T16:45:26.175Z', + created_at: '2025-03-05T16:45:26.175Z', + deleted_at: null, + media: null, + }, + message_count: '8', + unread_count: '0', + }, + ], +}; diff --git a/src/modules/chats/components/summaryCard/index.tsx b/src/modules/chats/components/summaryCard/index.tsx index 4b2faa282..786e306c4 100644 --- a/src/modules/chats/components/summaryCard/index.tsx +++ b/src/modules/chats/components/summaryCard/index.tsx @@ -43,7 +43,7 @@ export const SummaryCard: React.FC = ({ chat, handleSelect, is onClick={() => handleSelect(chat.id)} >
-
+
= ({ } }; return ( -
+
{label && (
*/}
Date: Mon, 11 Aug 2025 15:51:00 -0700 Subject: [PATCH 45/76] messaging tests mock edit --- cypress/e2e/messaging/messaging.cy.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cypress/e2e/messaging/messaging.cy.ts b/cypress/e2e/messaging/messaging.cy.ts index 7826d36c4..ce3ba5909 100644 --- a/cypress/e2e/messaging/messaging.cy.ts +++ b/cypress/e2e/messaging/messaging.cy.ts @@ -1,4 +1,4 @@ -import { MESSAGES, SEARCH_FOLLOWINGS, SENT_MESSAGE, SUMMARY, USER_IDENTTITY, NOTIFICATIONS } from './mocks'; +import { MESSAGES, SEARCH_FOLLOWINGS, SENT_MESSAGE, SUMMARY, NOTIFICATIONS } from './mocks'; import { API_SERVER, APP_URL, FIRSTNAME, LASTNAME, USERNAME } from '../authentication/constants'; import { User, generateRandomEmail } from '../authentication/utilities'; From ab98b71cd064379b9c4b29327d2f7384321c90d5 Mon Sep 17 00:00:00 2001 From: Shant Isaghoolian Date: Tue, 12 Aug 2025 00:30:50 -0700 Subject: [PATCH 46/76] fixed the typo in describe --- cypress/e2e/messaging/messaging.cy.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/cypress/e2e/messaging/messaging.cy.ts b/cypress/e2e/messaging/messaging.cy.ts index ce3ba5909..de81d7733 100644 --- a/cypress/e2e/messaging/messaging.cy.ts +++ b/cypress/e2e/messaging/messaging.cy.ts @@ -5,14 +5,14 @@ import { User, generateRandomEmail } from '../authentication/utilities'; const SIGNINGUP_EMAIL = generateRandomEmail(); const user = new User(FIRSTNAME, LASTNAME, SIGNINGUP_EMAIL, USERNAME); -describe('Messagung feature', () => { +describe('Messaging feature', () => { beforeEach(() => { cy.intercept('GET', `${API_SERVER}/chats/summary*t=*&page=*`, req => { req.reply(200, SUMMARY); }).as('getSummary'); - cy.intercept('GET', `${API_SERVER}/identities*`, req => { - req.reply(user.getIdentity()); - }).as('getIdentities'); + cy.intercept('GET', `${API_SERVER}/identities*`, req => { + req.reply(user.getIdentity()); + }).as('getIdentities'); cy.intercept('GET', `${API_SERVER}/notifications*t=*`, req => { req.reply(200, NOTIFICATIONS); }).as('getNotifications'); From 3054cc7c6b01ae93a3a80b241b225ff72c5abe93 Mon Sep 17 00:00:00 2001 From: Shant Isaghoolian Date: Tue, 12 Aug 2025 15:41:22 -0700 Subject: [PATCH 47/76] test automation for job search --- cypress/e2e/search/mocks.ts | 3991 +++++++++++++++++ cypress/e2e/search/search-job.cy.ts | 127 + .../Search/components/ResultList/index.tsx | 2 +- 3 files changed, 4119 insertions(+), 1 deletion(-) create mode 100644 cypress/e2e/search/mocks.ts create mode 100644 cypress/e2e/search/search-job.cy.ts diff --git a/cypress/e2e/search/mocks.ts b/cypress/e2e/search/mocks.ts new file mode 100644 index 000000000..f71e34189 --- /dev/null +++ b/cypress/e2e/search/mocks.ts @@ -0,0 +1,3991 @@ +export const SEARCHED_JOBS = { + page: 1, + limit: 20, + total_count: 16, + items: [ + { + id: '873a6f9c-6c8c-4bd9-962b-1b49cd4b49b9', + identity_id: '2bd26aa5-f745-4f12-bca7-17916161ae8b', + description: 'decline on offer recevied', + project_type: 'ONE_OFF', + project_length: 'LESS_THAN_A_DAY', + payment_currency: 'USD', + payment_range_lower: null, + payment_range_higher: null, + experience_level: 1, + created_at: '2025-01-13T21:08:32.151Z', + updated_at: '2025-01-13T21:08:32.151Z', + deleted_at: null, + status: 'ACTIVE', + payment_type: 'VOLUNTEER', + payment_scheme: 'HOURLY', + title: 'front end developer 5', + expires_at: null, + country: null, + skills: ['REACT.JS'], + causes_tags: ['SOCIAL'], + old_id: null, + other_party_id: null, + other_party_title: null, + other_party_url: null, + remote_preference: 'ONSITE', + search_tsv: "'5':4 'decline':5 'developer':3 'end':2 'front':1 'offer':7 'on':6 'recevied':8", + city: null, + weekly_hours_lower: null, + weekly_hours_higher: null, + commitment_hours_lower: '12', + commitment_hours_higher: '15', + geoname_id: null, + job_category_id: 'fbacde54-88e6-4d17-8aa9-286a716ba12f', + impact_job: true, + promoted: false, + kind: 'JOB', + payment_mode: null, + identity_type: 'organizations', + identity_meta: { + id: '2bd26aa5-f745-4f12-bca7-17916161ae8b', + city: 'Tokyo, Tokyo Prefecture', + name: 'Socious', + email: 'info@socious.io', + image: 'https://storage.googleapis.com/socious-gcs/ad4ae46f5dc138d8bc63928890bc64e0.png', + hiring: true, + status: 'ACTIVE', + address: 'Nihonbashi 3-2-14-1F, Chuo Ward, Tokyo, Japan 103-0027', + country: 'JP', + mission: + 'Our mission is to give everyone the chance to make a difference.\r\n\r\nWe are a talent platform that makes impact work accessible and transparent; we build connections between purpose-driven individuals and organizations. By leveraging blockchain technology, we make social/environmental impact work traceable and reward contributions with crypto tokens.', + verified: true, + shortname: 'socious', + description: null, + wallet_address: null, + verified_impact: true, + }, + job_category: { + id: 'fbacde54-88e6-4d17-8aa9-286a716ba12f', + name: 'Frontend development', + hourly_wage_dollars: 25, + created_at: '2022-12-14T13:19:18.541708+00:00', + updated_at: '2022-12-14T13:19:18.541708+00:00', + }, + work_samples: [], + applicants: 2, + missions: 0, + saved: false, + not_interested: false, + }, + { + id: '15271b4b-3604-4712-a357-04e19fef06b4', + identity_id: '2bd26aa5-f745-4f12-bca7-17916161ae8b', + description: 'withdraw on sent offer', + project_type: 'ONE_OFF', + project_length: 'LESS_THAN_A_DAY', + payment_currency: 'USD', + payment_range_lower: '12', + payment_range_higher: '15', + experience_level: null, + created_at: '2025-01-13T21:07:43.810Z', + updated_at: '2025-01-13T21:07:43.810Z', + deleted_at: null, + status: 'ACTIVE', + payment_type: 'PAID', + payment_scheme: 'HOURLY', + title: 'front end developer 4', + expires_at: null, + country: null, + skills: ['REACT.JS'], + causes_tags: ['SOCIAL'], + old_id: null, + other_party_id: null, + other_party_title: null, + other_party_url: null, + remote_preference: 'ONSITE', + search_tsv: "'4':4 'developer':3 'end':2 'front':1 'offer':8 'on':6 'sent':7 'withdraw':5", + city: null, + weekly_hours_lower: null, + weekly_hours_higher: null, + commitment_hours_lower: null, + commitment_hours_higher: null, + geoname_id: null, + job_category_id: 'fbacde54-88e6-4d17-8aa9-286a716ba12f', + impact_job: true, + promoted: false, + kind: 'JOB', + payment_mode: null, + identity_type: 'organizations', + identity_meta: { + id: '2bd26aa5-f745-4f12-bca7-17916161ae8b', + city: 'Tokyo, Tokyo Prefecture', + name: 'Socious', + email: 'info@socious.io', + image: 'https://storage.googleapis.com/socious-gcs/ad4ae46f5dc138d8bc63928890bc64e0.png', + hiring: true, + status: 'ACTIVE', + address: 'Nihonbashi 3-2-14-1F, Chuo Ward, Tokyo, Japan 103-0027', + country: 'JP', + mission: + 'Our mission is to give everyone the chance to make a difference.\r\n\r\nWe are a talent platform that makes impact work accessible and transparent; we build connections between purpose-driven individuals and organizations. By leveraging blockchain technology, we make social/environmental impact work traceable and reward contributions with crypto tokens.', + verified: true, + shortname: 'socious', + description: null, + wallet_address: null, + verified_impact: true, + }, + job_category: { + id: 'fbacde54-88e6-4d17-8aa9-286a716ba12f', + name: 'Frontend development', + hourly_wage_dollars: 25, + created_at: '2022-12-14T13:19:18.541708+00:00', + updated_at: '2022-12-14T13:19:18.541708+00:00', + }, + work_samples: [], + applicants: 1, + missions: 0, + saved: false, + not_interested: false, + }, + { + id: '65175211-2119-48ec-a222-3a75e94f5aad', + identity_id: '2bd26aa5-f745-4f12-bca7-17916161ae8b', + description: 'tets the job flow - volunteer - approve', + project_type: 'ONE_OFF', + project_length: 'LESS_THAN_A_DAY', + payment_currency: 'USD', + payment_range_lower: null, + payment_range_higher: null, + experience_level: 1, + created_at: '2025-01-13T21:06:57.023Z', + updated_at: '2025-01-13T21:06:57.023Z', + deleted_at: null, + status: 'ACTIVE', + payment_type: 'VOLUNTEER', + payment_scheme: 'FIXED', + title: 'front end developer 3', + expires_at: null, + country: null, + skills: ['REACT.JS'], + causes_tags: ['SOCIAL'], + old_id: null, + other_party_id: null, + other_party_title: null, + other_party_url: null, + remote_preference: 'ONSITE', + search_tsv: "'3':4 'approve':10 'developer':3 'end':2 'flow':8 'front':1 'job':7 'tets':5 'the':6 'volunteer':9", + city: null, + weekly_hours_lower: null, + weekly_hours_higher: null, + commitment_hours_lower: '12', + commitment_hours_higher: '15', + geoname_id: null, + job_category_id: 'fbacde54-88e6-4d17-8aa9-286a716ba12f', + impact_job: true, + promoted: false, + kind: 'JOB', + payment_mode: null, + identity_type: 'organizations', + identity_meta: { + id: '2bd26aa5-f745-4f12-bca7-17916161ae8b', + city: 'Tokyo, Tokyo Prefecture', + name: 'Socious', + email: 'info@socious.io', + image: 'https://storage.googleapis.com/socious-gcs/ad4ae46f5dc138d8bc63928890bc64e0.png', + hiring: true, + status: 'ACTIVE', + address: 'Nihonbashi 3-2-14-1F, Chuo Ward, Tokyo, Japan 103-0027', + country: 'JP', + mission: + 'Our mission is to give everyone the chance to make a difference.\r\n\r\nWe are a talent platform that makes impact work accessible and transparent; we build connections between purpose-driven individuals and organizations. By leveraging blockchain technology, we make social/environmental impact work traceable and reward contributions with crypto tokens.', + verified: true, + shortname: 'socious', + description: null, + wallet_address: null, + verified_impact: true, + }, + job_category: { + id: 'fbacde54-88e6-4d17-8aa9-286a716ba12f', + name: 'Frontend development', + hourly_wage_dollars: 25, + created_at: '2022-12-14T13:19:18.541708+00:00', + updated_at: '2022-12-14T13:19:18.541708+00:00', + }, + work_samples: [], + applicants: 1, + missions: 1, + saved: false, + not_interested: false, + }, + { + id: '877839f5-bcea-45c0-95dd-48048ce69e7c', + identity_id: '2bd26aa5-f745-4f12-bca7-17916161ae8b', + description: 'test the job flow - crypto - approve', + project_type: 'ONE_OFF', + project_length: 'LESS_THAN_A_DAY', + payment_currency: 'USD', + payment_range_lower: '1', + payment_range_higher: '2', + experience_level: 1, + created_at: '2025-01-13T21:05:58.923Z', + updated_at: '2025-01-13T21:05:58.923Z', + deleted_at: null, + status: 'ACTIVE', + payment_type: 'PAID', + payment_scheme: 'FIXED', + title: 'Front end Developer 2', + expires_at: null, + country: null, + skills: ['REACT.JS'], + causes_tags: ['SOCIAL'], + old_id: null, + other_party_id: null, + other_party_title: null, + other_party_url: null, + remote_preference: 'ONSITE', + search_tsv: "'2':4 'approve':10 'crypto':9 'developer':3 'end':2 'flow':8 'front':1 'job':7 'test':5 'the':6", + city: null, + weekly_hours_lower: null, + weekly_hours_higher: null, + commitment_hours_lower: null, + commitment_hours_higher: null, + geoname_id: null, + job_category_id: 'fbacde54-88e6-4d17-8aa9-286a716ba12f', + impact_job: true, + promoted: false, + kind: 'JOB', + payment_mode: null, + identity_type: 'organizations', + identity_meta: { + id: '2bd26aa5-f745-4f12-bca7-17916161ae8b', + city: 'Tokyo, Tokyo Prefecture', + name: 'Socious', + email: 'info@socious.io', + image: 'https://storage.googleapis.com/socious-gcs/ad4ae46f5dc138d8bc63928890bc64e0.png', + hiring: true, + status: 'ACTIVE', + address: 'Nihonbashi 3-2-14-1F, Chuo Ward, Tokyo, Japan 103-0027', + country: 'JP', + mission: + 'Our mission is to give everyone the chance to make a difference.\r\n\r\nWe are a talent platform that makes impact work accessible and transparent; we build connections between purpose-driven individuals and organizations. By leveraging blockchain technology, we make social/environmental impact work traceable and reward contributions with crypto tokens.', + verified: true, + shortname: 'socious', + description: null, + wallet_address: null, + verified_impact: true, + }, + job_category: { + id: 'fbacde54-88e6-4d17-8aa9-286a716ba12f', + name: 'Frontend development', + hourly_wage_dollars: 25, + created_at: '2022-12-14T13:19:18.541708+00:00', + updated_at: '2022-12-14T13:19:18.541708+00:00', + }, + work_samples: [], + applicants: 1, + missions: 0, + saved: false, + not_interested: false, + }, + { + id: 'fd9578af-ccbd-44bf-ae73-a00ed71b5a0a', + identity_id: '2bd26aa5-f745-4f12-bca7-17916161ae8b', + description: 'test the job flow - fiat - approve', + project_type: 'ONE_OFF', + project_length: 'LESS_THAN_A_DAY', + payment_currency: 'USD', + payment_range_lower: '1', + payment_range_higher: '2', + experience_level: 1, + created_at: '2025-01-13T20:58:23.649Z', + updated_at: '2025-01-13T20:58:23.649Z', + deleted_at: null, + status: 'ACTIVE', + payment_type: 'PAID', + payment_scheme: 'FIXED', + title: 'Front End Developer', + expires_at: null, + country: null, + skills: ['REACT.JS'], + causes_tags: ['SOCIAL'], + old_id: null, + other_party_id: null, + other_party_title: null, + other_party_url: null, + remote_preference: 'ONSITE', + search_tsv: "'approve':9 'developer':3 'end':2 'fiat':8 'flow':7 'front':1 'job':6 'test':4 'the':5", + city: null, + weekly_hours_lower: null, + weekly_hours_higher: null, + commitment_hours_lower: null, + commitment_hours_higher: null, + geoname_id: null, + job_category_id: 'fbacde54-88e6-4d17-8aa9-286a716ba12f', + impact_job: true, + promoted: false, + kind: 'JOB', + payment_mode: null, + identity_type: 'organizations', + identity_meta: { + id: '2bd26aa5-f745-4f12-bca7-17916161ae8b', + city: 'Tokyo, Tokyo Prefecture', + name: 'Socious', + email: 'info@socious.io', + image: 'https://storage.googleapis.com/socious-gcs/ad4ae46f5dc138d8bc63928890bc64e0.png', + hiring: true, + status: 'ACTIVE', + address: 'Nihonbashi 3-2-14-1F, Chuo Ward, Tokyo, Japan 103-0027', + country: 'JP', + mission: + 'Our mission is to give everyone the chance to make a difference.\r\n\r\nWe are a talent platform that makes impact work accessible and transparent; we build connections between purpose-driven individuals and organizations. By leveraging blockchain technology, we make social/environmental impact work traceable and reward contributions with crypto tokens.', + verified: true, + shortname: 'socious', + description: null, + wallet_address: null, + verified_impact: true, + }, + job_category: { + id: 'fbacde54-88e6-4d17-8aa9-286a716ba12f', + name: 'Frontend development', + hourly_wage_dollars: 25, + created_at: '2022-12-14T13:19:18.541708+00:00', + updated_at: '2022-12-14T13:19:18.541708+00:00', + }, + work_samples: [], + applicants: 1, + missions: 0, + saved: false, + not_interested: false, + }, + { + id: '8304d572-c822-4c26-8947-0ac2960b7bf7', + identity_id: '741e2a95-f82a-4b11-a02b-22b13543570d', + description: 'BE tasks', + project_type: 'PART_TIME', + project_length: 'LESS_THAN_A_MONTH', + payment_currency: 'USD', + payment_range_lower: null, + payment_range_higher: null, + experience_level: 2, + created_at: '2024-07-08T12:34:17.814Z', + updated_at: '2024-07-08T12:34:17.814Z', + deleted_at: null, + status: 'ACTIVE', + payment_type: 'VOLUNTEER', + payment_scheme: 'FIXED', + title: 'BE developer', + expires_at: null, + country: null, + skills: ['JAVASCRIPT', 'JAVA'], + causes_tags: ['BIODIVERSITY'], + old_id: null, + other_party_id: null, + other_party_title: null, + other_party_url: null, + remote_preference: 'REMOTE', + search_tsv: "'be':1,3 'developer':2 'tasks':4", + city: null, + weekly_hours_lower: null, + weekly_hours_higher: null, + commitment_hours_lower: '1', + commitment_hours_higher: '100', + geoname_id: null, + job_category_id: '95dedd87-f0d5-46f9-8756-8946308fca77', + impact_job: true, + promoted: false, + kind: 'JOB', + payment_mode: null, + identity_type: 'organizations', + identity_meta: { + id: '741e2a95-f82a-4b11-a02b-22b13543570d', + city: 'Berlin', + name: 'OceanProtection', + email: 'info@oceanprotection.com', + image: null, + hiring: false, + status: 'ACTIVE', + address: null, + country: 'DE', + mission: null, + verified: false, + shortname: 'oceanprotection7969', + description: null, + wallet_address: null, + verified_impact: false, + }, + job_category: { + id: '95dedd87-f0d5-46f9-8756-8946308fca77', + name: 'Backend development', + hourly_wage_dollars: 25, + created_at: '2022-12-14T13:19:18.541708+00:00', + updated_at: '2022-12-14T13:19:18.541708+00:00', + }, + work_samples: [], + applicants: 1, + missions: 1, + saved: false, + not_interested: false, + }, + { + id: '91896555-4325-4ebb-80a7-a80602f9abbe', + identity_id: '2bd26aa5-f745-4f12-bca7-17916161ae8b', + description: + '**Responsibilities**\n\n- Design client-side and server-side architecture\n- Build the front-end of applications through appealing visual design\n- Develop and manage well-functioning databases and applications\n- Write effective APIs\n- Test software to ensure responsiveness and efficiency\n- Troubleshoot, debug and upgrade software\n- Create security and data protection settings\n- Build features and applications with a mobile responsive design\n- Write technical documentation\n- Work with data scientists and analysts to improve software\n\n**Skills & Experience**\n\n- Minimum 2 years of experience (or equivalent skills) in software development, especially with Typescript, Node.js, Next.js, React Native, Solidity, MySQL, AWS\n- A strong passion for social impact (previous experience with social impact organizations is an asset)\n- Degree in Computer Science, Engineering or a related field is an asset\n- Strong knowledge of common algorithms and data structures\n- Strong knowledge of blockchains is an asset\n- Strong knowledge of concurrency and writing efficient and safe code\n- You possess good communication skills\n\n**What’s on offer**\n\n- Diverse, driven, and high-performing colleagues\n- A supportive, trusting and transparent working environment\n- Work-life balance with flexible hours and leave (unlimited paid leave)\n- Flexible work arrangements (full-time, part-time freelance, side-job, onsite, remote, etc.)\n- A competitive salary package: USD 30k - 51k (4-7 million yen) per year + stock options', + project_type: 'FULL_TIME', + project_length: '6_MONTHS_OR_MORE', + payment_currency: 'USD', + payment_range_lower: '30000', + payment_range_higher: '51000', + experience_level: 1, + created_at: '2024-03-15T02:39:17.227Z', + updated_at: '2024-03-15T02:39:17.227Z', + deleted_at: null, + status: 'ACTIVE', + payment_type: 'PAID', + payment_scheme: 'FIXED', + title: 'Full-Stack Developer', + expires_at: null, + country: null, + skills: ['SOFTWARE_ENGINEERING', 'SOFTWARE_DEVELOPMENT'], + causes_tags: ['SOCIAL'], + old_id: null, + other_party_id: null, + other_party_title: null, + other_party_url: null, + remote_preference: 'HYBRID', + search_tsv: + "'-7':211 '2':80 '30k':208 '4':210 '51k':209 'a':61,100,121,168,203 'algorithms':131 'an':113,125,140 'analysts':73 'and':10,27,33,43,47,52,58,72,132,146,149,163,171,182 'apis':37 'appealing':23 'applications':21,34,59 'architecture':14 'arrangements':189 'asset':114,126,141 'aws':99 'balance':178 'blockchains':138 'build':15,56 'client':8 'client-side':7 'code':151 'colleagues':167 'common':130 'communication':155 'competitive':204 'computer':117 'concurrency':145 'create':50 'data':53,70,133 'databases':32 'debug':46 'degree':115 'design':6,25,64 'develop':26 'developer':4 'development':89 'diverse':161 'documentation':67 'driven':162 'effective':36 'efficiency':44 'efficient':148 'end':19 'engineering':119 'ensure':41 'environment':174 'equivalent':85 'especially':90 'etc':202 'experience':78,83,107 'features':57 'field':123 'flexible':180,187 'for':103 'freelance':196 'front':18 'front-end':17 'full':2,191 'full-stack':1 'full-time':190 'functioning':31 'good':154 'high':165 'high-performing':164 'hours':181 'impact':105,110 'improve':75 'in':87,116 'is':112,124,139 'job':199 'knowledge':128,136,143 'leave':183,186 'life':177 'manage':28 'million':212 'minimum':79 'mobile':62 'mysql':98 'native':96 'next.js':94 'node.js':93 'of':20,82,129,137,144 'offer':160 'on':159 'onsite':200 'options':217 'or':84,120 'organizations':111 'package':206 'paid':185 'part':194 'part-time':193 'passion':102 'per':214 'performing':166 'possess':153 'previous':106 'protection':54 'react':95 'related':122 'remote':201 'responsibilities':5 'responsive':63 'responsiveness':42 's':158 'safe':150 'salary':205 'science':118 'scientists':71 'security':51 'server':12 'server-side':11 'settings':55 'side':9,13,198 'side-job':197 'skills':77,86,156 'social':104,109 'software':39,49,76,88 'solidity':97 'stack':3 'stock':216 'strong':101,127,135,142 'structures':134 'supportive':169 'technical':66 'test':38 'the':16 'through':22 'time':192,195 'to':40,74 'transparent':172 'troubleshoot':45 'trusting':170 'typescript':92 'unlimited':184 'upgrade':48 'usd':207 'visual':24 'well':30 'well-functioning':29 'what':157 'with':60,69,91,108,179 'work':68,176,188 'work-life':175 'working':173 'write':35,65 'writing':147 'year':215 'years':81 'yen':213 'you':152", + city: null, + weekly_hours_lower: null, + weekly_hours_higher: null, + commitment_hours_lower: null, + commitment_hours_higher: null, + geoname_id: null, + job_category_id: 'a0839fc4-ee83-4b44-9372-6dcf58fa6ab7', + impact_job: true, + promoted: false, + kind: 'JOB', + payment_mode: null, + identity_type: 'organizations', + identity_meta: { + id: '2bd26aa5-f745-4f12-bca7-17916161ae8b', + city: 'Tokyo, Tokyo Prefecture', + name: 'Socious', + email: 'info@socious.io', + image: 'https://storage.googleapis.com/socious-gcs/ad4ae46f5dc138d8bc63928890bc64e0.png', + hiring: true, + status: 'ACTIVE', + address: 'Nihonbashi 3-2-14-1F, Chuo Ward, Tokyo, Japan 103-0027', + country: 'JP', + mission: + 'Our mission is to give everyone the chance to make a difference.\r\n\r\nWe are a talent platform that makes impact work accessible and transparent; we build connections between purpose-driven individuals and organizations. By leveraging blockchain technology, we make social/environmental impact work traceable and reward contributions with crypto tokens.', + verified: true, + shortname: 'socious', + description: null, + wallet_address: null, + verified_impact: true, + }, + job_category: { + id: 'a0839fc4-ee83-4b44-9372-6dcf58fa6ab7', + name: 'Full-stack development', + hourly_wage_dollars: 28, + created_at: '2022-12-14T13:19:18.541708+00:00', + updated_at: '2022-12-14T13:19:18.541708+00:00', + }, + work_samples: [], + applicants: 12, + missions: 1, + saved: false, + not_interested: false, + }, + { + id: '5da57879-61a3-43ff-aff4-23691e173a5c', + identity_id: '2bd26aa5-f745-4f12-bca7-17916161ae8b', + description: + "**About Socious:**\r\n\r\nSocious is a talent marketplace that makes impact work accessible and transparent; we build connections between purpose-driven individuals and impact organizations through AI matching. By leveraging blockchain technology, we make social/environmental impact work traceable and reward contributions.\r\n\r\nHaving secured funding, we're in expansion mode. Join us in this journey!\r\n\r\n**Role:** Blockchain (Haskell/Plutus) Developer\r\n\r\n**Key Responsibilities:**\r\n\r\n- Develop secure and efficient Haskell/Plutus code.\r\n- Collaborate with the team to ensure projects are delivered on schedule.\r\n- Maintain code quality through rigorous testing, debugging, and code reviews.\r\n- Deploy and document smart contracts with a focus on security best practices.\r\n- Integrate diverse systems with the blockchain, working closely with other teams.\r\n- Continuously update knowledge on blockchain tech and industry trends.\r\n\r\n**Skills/Experience:**\r\n\r\n- Passion for making a social/environmental impact. Prior experience in this realm is a plus.\r\n- Proficiency in Haskell and familiarity with its libraries.\r\n- Degree in Computer Science/Engineering or a related discipline is valued.\r\n- Experience in functional programming.\r\n- Knowledge of databases like PostgreSQL or MySQL.\r\n- Self-driven with a knack for innovative problem-solving.\r\n- Demonstrated experience in application development.\r\n- Stellar communication and teamwork skills.\r\n\r\n**What's in it for you?**\r\n\r\n- Make a lasting impact on the lives of many and on the world.\r\n- Collaborate with passionate, diverse, and high-performing colleagues.\r\n- Achieve the perfect work-life balance with flexible hours and unlimited paid leave.\r\n- Thrive in a remote-first setting with occasional offsites.\r\n- Commit to your growth with ongoing learning and development opportunities.\r\n- Navigate a vibrant, fast-paced work setting.\r\n- Take the lead with autonomy in decision-making.\r\n- Relish a culture of trust, transparency, and unwavering support.\r\n- Enjoy a competitive compensation: USD 80k - 130k annually + token incentives.\r\n\r\n\r\n**Socious Referral Program:**\r\n\r\nKnow someone just right for Socious? We highly value word-of-mouth recommendations. Successfully refer a candidate, and enjoy a $1,000 reward as a token of our gratitude. Just share this job link!\r\n\r\nYour support in broadening our talent search is invaluable. Thank you.\r\n\r\n**Our mission and values:** \r\n\r\n**Mission:** Give everyone the chance to make a difference. \r\n\r\n**Our values:** \r\n\r\n- Diversity, inclusion, and belonging.\r\n- Life first, work second.\r\n- High performance for high impact.\r\n- Autonomy and accountability.\r\n- Candor, collaboration, and play.", + project_type: 'FULL_TIME', + project_length: '6_MONTHS_OR_MORE', + payment_currency: 'USD', + payment_range_lower: '80000', + payment_range_higher: '130000', + experience_level: 2, + created_at: '2023-08-25T23:28:51.509Z', + updated_at: '2024-02-20T14:18:24.901Z', + deleted_at: null, + status: 'ACTIVE', + payment_type: 'PAID', + payment_scheme: 'FIXED', + title: 'Blockchain (Haskell / Plutus) Developer - Fully Remote ', + expires_at: null, + country: 'JP', + skills: ['SOFTWARE_ENGINEERING', 'SOFTWARE_DEVELOPMENT'], + causes_tags: ['SOCIAL'], + old_id: null, + other_party_id: null, + other_party_title: null, + other_party_url: null, + remote_preference: 'REMOTE', + search_tsv: + "'000':314 '1':313 '130k':285 '80k':284 'a':11,100,130,139,154,174,198,235,254,271,280,308,312,317,349 'about':7 'accessible':18 'accountability':368 'achieve':219 'ai':33 'and':19,29,45,69,91,95,123,144,188,206,214,229,250,276,310,340,355,367,371 'annually':286 'application':184 'are':80 'as':316 'autonomy':265,366 'balance':225 'belonging':356 'best':104 'between':24 'blockchain':1,37,62,111,121 'broadening':330 'build':22 'by':35 'candidate':309 'candor':369 'chance':346 'closely':113 'code':72,85,92 'collaborate':73,210 'collaboration':370 'colleagues':218 'commit':243 'communication':187 'compensation':282 'competitive':281 'computer':151 'connections':23 'continuously':117 'contracts':98 'contributions':47 'culture':272 'databases':165 'debugging':90 'decision':268 'decision-making':267 'degree':149 'delivered':81 'demonstrated':181 'deploy':94 'develop':67 'developer':4,64 'development':185,251 'difference':350 'discipline':156 'diverse':107,213 'diversity':353 'document':96 'driven':27,172 'efficient':70 'enjoy':279,311 'ensure':78 'everyone':344 'expansion':54 'experience':134,159,182 'familiarity':145 'fast':257 'fast-paced':256 'first':238,358 'flexible':227 'focus':101 'for':128,176,195,296,363 'fully':5 'functional':161 'funding':50 'give':343 'gratitude':321 'growth':246 'haskell':2,143 'haskell/plutus':63,71 'having':48 'high':216,361,364 'high-performing':215 'highly':299 'hours':228 'impact':16,30,42,132,200,365 'in':53,58,135,142,150,160,183,193,234,266,329 'incentives':288 'inclusion':354 'individuals':28 'industry':124 'innovative':177 'integrate':106 'invaluable':335 'is':10,138,157,334 'it':194 'its':147 'job':325 'join':56 'journey':60 'just':294,322 'key':65 'knack':175 'know':292 'knowledge':119,163 'lasting':199 'lead':263 'learning':249 'leave':232 'leveraging':36 'libraries':148 'life':224,357 'like':166 'link':326 'lives':203 'maintain':84 'make':40,197,348 'makes':15 'making':129,269 'many':205 'marketplace':13 'matching':34 'mission':339,342 'mode':55 'mouth':304 'mysql':169 'navigate':253 'occasional':241 'of':164,204,273,303,319 'offsites':242 'on':82,102,120,201,207 'ongoing':248 'opportunities':252 'or':153,168 'organizations':31 'other':115 'our':320,331,338,351 'paced':258 'paid':231 'passion':127 'passionate':212 'perfect':221 'performance':362 'performing':217 'play':372 'plus':140 'plutus':3 'postgresql':167 'practices':105 'prior':133 'problem':179 'problem-solving':178 'proficiency':141 'program':291 'programming':162 'projects':79 'purpose':26 'purpose-driven':25 'quality':86 're':52 'realm':137 'recommendations':305 'refer':307 'referral':290 'related':155 'relish':270 'remote':6,237 'remote-first':236 'responsibilities':66 'reviews':93 'reward':46,315 'right':295 'rigorous':88 'role':61 's':192 'schedule':83 'science/engineering':152 'search':333 'second':360 'secure':68 'secured':49 'security':103 'self':171 'self-driven':170 'setting':239,260 'share':323 'skills':190 'skills/experience':126 'smart':97 'social/environmental':41,131 'socious':8,9,289,297 'solving':180 'someone':293 'stellar':186 'successfully':306 'support':278,328 'systems':108 'take':261 'talent':12,332 'team':76 'teams':116 'teamwork':189 'tech':122 'technology':38 'testing':89 'thank':336 'that':14 'the':75,110,202,208,220,262,345 'this':59,136,324 'thrive':233 'through':32,87 'to':77,244,347 'token':287,318 'traceable':44 'transparency':275 'transparent':20 'trends':125 'trust':274 'unlimited':230 'unwavering':277 'update':118 'us':57 'usd':283 'value':300 'valued':158 'values':341,352 'vibrant':255 'we':21,39,51,298 'what':191 'with':74,99,109,114,146,173,211,226,240,247,264 'word':302 'word-of-mouth':301 'work':17,43,223,259,359 'work-life':222 'working':112 'world':209 'you':196,337 'your':245,327", + city: 'Tokyo', + weekly_hours_lower: null, + weekly_hours_higher: null, + commitment_hours_lower: null, + commitment_hours_higher: null, + geoname_id: null, + job_category_id: 'a2da048a-89ad-4c1e-a5e6-759f7e4f1bf2', + impact_job: true, + promoted: false, + kind: 'JOB', + payment_mode: null, + identity_type: 'organizations', + identity_meta: { + id: '2bd26aa5-f745-4f12-bca7-17916161ae8b', + city: 'Tokyo, Tokyo Prefecture', + name: 'Socious', + email: 'info@socious.io', + image: 'https://storage.googleapis.com/socious-gcs/ad4ae46f5dc138d8bc63928890bc64e0.png', + hiring: true, + status: 'ACTIVE', + address: 'Nihonbashi 3-2-14-1F, Chuo Ward, Tokyo, Japan 103-0027', + country: 'JP', + mission: + 'Our mission is to give everyone the chance to make a difference.\r\n\r\nWe are a talent platform that makes impact work accessible and transparent; we build connections between purpose-driven individuals and organizations. By leveraging blockchain technology, we make social/environmental impact work traceable and reward contributions with crypto tokens.', + verified: true, + shortname: 'socious', + description: null, + wallet_address: null, + verified_impact: true, + }, + job_category: { + id: 'a2da048a-89ad-4c1e-a5e6-759f7e4f1bf2', + name: 'Blockchain development', + hourly_wage_dollars: 44.5, + created_at: '2022-12-14T13:19:18.541708+00:00', + updated_at: '2022-12-14T13:19:18.541708+00:00', + }, + work_samples: [], + applicants: 168, + missions: 0, + saved: false, + not_interested: false, + }, + { + id: 'fd4fa1bf-15b4-4d75-8b7b-a09cddd49df1', + identity_id: '1180accd-2a57-4a2f-af73-692feb2c05b1', + description: + "**Overview** \r\n\r\nAt EMURGO, we are looking for a Haskell developer that will help us build new products in the blockchain space and help us add new features for some of our current projects, like our Cardano SPOT, and some new stealth projects that we are starting to work on.\r\n\r\nCardan Spot is a focused social network serves end-to-end information for the Cardano community. It provides a user-generated interactive platform specifically designed for investment in, distribution, consumption, and monetization of Cardano content.\r\n\r\nCardano Spot solves the issue of fragmented content in the Cardano ecosystem by aggregating valuable, quality content from reliable sources in the Cardano ecosystem to give up-to-date developments in the Cardano ecosystem.\r\n\r\nA talented Haskell developer is needed to expand our team. You will be responsible for creating, testing, and maintaining applications built with Haskell as a Haskell Developer. You'll work with project managers and other developers to provide top-notch software solutions.\r\n\r\n**Roles and Responsibilities**\r\n\r\n- Develop, test, and maintain Haskell-based applications\r\n- Collaborate with other developers and project managers to ensure timely delivery of projects\r\n- Write clean, well-documented, and efficient code\r\n- Test and debug software applications\r\n- Participate in code reviews to maintain code quality\r\n- Stay up-to-date with emerging software technologies and frameworks\r\n- Communicate effectively with clients and project stakeholders\r\n\r\n\r\n**Requirements and Skills**\r\n\r\n- 1+ years of experience in Haskell\r\n- 1+ years of experience in Node.js\r\n- 1 year of Plutus experience preferred\r\n- Strong knowledge of Haskell programming language and its libraries\r\n- Experience with functional programming principles\r\n- Familiarity with database systems such as PostgreSQL or MySQL\r\n- Familiarity with development tools such as Git and continuous integration systems\r\n- Strong problem-solving skills\r\n- Excellent communication skills\r\n\r\n\r\n**Employee perks & benefits**\r\n\r\nEMURGO provides a generous perks & benefits package to its employees around the world to encourage work-life balance and career development.\r\n\r\n- **Your Well-Deserved Breaks!:** We believe in the importance of work-life balance and prioritizing employee well-being. That’s why we offer a generous and flexible paid time off (PTO) policy to ensure you have the opportunity to recharge and enjoy your life outside of work!\r\n- **Remote And Hybrid Working Environment:** We offer a remote or hybrid working environment for all of our employees, many of whom are based around the world and work remotely from their preferred locations.\r\n- **Continuous Learning Opportunities:** Our employees have access to regular learning activities including our very own blockchain courses through EMURGO Academy. We aim to enhance your career development and advancement knowledge throughout your time with us.\r\n- **Covered Healthcare Costs & Benefits:** We offer covered healthcare services and benefits for permanent employees.\r\n- **Onboarding Buddy Support & Company Provided Devices:** We organize buddy support programs and we also provide necessary electronic devices and work productivity tools for permanent employees.\r\n- **Employee Recognition Initiatives:** We recognise colleagues who help one another be successful at work!\r\n- **Salary Range:** $60,000 - $100,000 per year \r\n\r\n**Referral Program:**\r\n\r\nKnow someone just right for this position? We highly value word-of-mouth recommendations. Successfully refer a candidate, and enjoy a $1,000 reward as a token of our gratitude. Just share this job link!\r\n\r\nYour support in broadening our talent search is invaluable. Thank you.", + project_type: 'FULL_TIME', + project_length: '6_MONTHS_OR_MORE', + payment_currency: 'USD', + payment_range_lower: '60000', + payment_range_higher: '100000', + experience_level: 2, + created_at: '2023-08-25T14:25:54.432Z', + updated_at: '2024-02-20T14:15:49.653Z', + deleted_at: null, + status: 'ACTIVE', + payment_type: 'PAID', + payment_scheme: 'FIXED', + title: 'Haskell / Plutus Developer', + expires_at: null, + country: 'IN', + skills: ['SOFTWARE_ENGINEERING', 'SOFTWARE_DEVELOPMENT', 'HASKELL', 'PLUTUS', 'BLOCKCHAIN_DEVELOPMENT'], + causes_tags: ['SOCIAL'], + old_id: null, + other_party_id: null, + other_party_title: null, + other_party_url: null, + remote_preference: 'REMOTE', + search_tsv: + "'000':493,495,523 '1':234,240,246,522 '100':494 '60':492 'a':11,56,72,125,149,299,345,376,517,521,526 'academy':421 'access':408 'activities':412 'add':28 'advancement':430 'aggregating':103 'aim':423 'all':383 'also':464 'and':25,41,85,142,158,169,173,183,197,201,222,228,232,258,282,316,334,347,362,370,395,429,446,462,469,519 'another':485 'applications':144,178,204 'are':8,48,390 'around':307,392 'as':148,271,280,525 'at':5,488 'balance':315,333 'based':177,391 'be':137,486 'being':339 'believe':325 'benefits':296,302,440,447 'blockchain':23,417 'breaks':323 'broadening':539 'buddy':452,459 'build':18 'built':145 'by':102 'candidate':518 'cardan':53 'cardano':39,68,88,90,100,112,123 'career':317,427 'clean':193 'clients':227 'code':199,207,211 'collaborate':179 'colleagues':481 'communicate':224 'communication':292 'community':69 'company':454 'consumption':84 'content':89,97,106 'continuous':283,402 'costs':439 'courses':418 'covered':437,443 'creating':140 'current':35 'database':268 'date':119,217 'debug':202 'delivery':189 'deserved':322 'designed':79 'develop':171 'developer':3,13,128,151 'developers':160,182 'development':277,318,428 'developments':120 'devices':456,468 'distribution':83 'documented':196 'ecosystem':101,113,124 'effectively':225 'efficient':198 'electronic':467 'emerging':219 'employee':294,336,476 'employees':306,386,406,450,475 'emurgo':6,297,420 'encourage':311 'end':62,64 'end-to-end':61 'enhance':425 'enjoy':363,520 'ensure':187,355 'environment':373,381 'excellent':291 'expand':132 'experience':237,243,250,261 'familiarity':266,275 'features':30 'flexible':348 'focused':57 'for':10,31,66,80,139,382,448,473,504 'fragmented':96 'frameworks':223 'from':107,398 'functional':263 'generated':75 'generous':300,346 'git':281 'give':115 'gratitude':530 'haskell':1,12,127,147,150,176,239,255 'haskell-based':175 'have':357,407 'healthcare':438,444 'help':16,26,483 'highly':508 'hybrid':371,379 'importance':328 'in':21,82,98,110,121,206,238,244,326,538 'including':413 'information':65 'initiatives':478 'integration':284 'interactive':76 'invaluable':544 'investment':81 'is':55,129,543 'issue':94 'it':70 'its':259,305 'job':534 'just':502,531 'know':500 'knowledge':253,431 'language':257 'learning':403,411 'libraries':260 'life':314,332,365 'like':37 'link':535 'll':153 'locations':401 'looking':9 'maintain':174,210 'maintaining':143 'managers':157,185 'many':387 'monetization':86 'mouth':513 'mysql':274 'necessary':466 'needed':130 'network':59 'new':19,29,43 'node.js':245 'notch':165 'of':33,87,95,190,236,242,248,254,329,367,384,388,512,528 'off':351 'offer':344,375,442 'on':52 'onboarding':451 'one':484 'opportunities':404 'opportunity':359 'or':273,378 'organize':458 'other':159,181 'our':34,38,133,385,405,414,529,540 'outside':366 'overview':4 'own':416 'package':303 'paid':349 'participate':205 'per':496 'perks':295,301 'permanent':449,474 'platform':77 'plutus':2,249 'policy':353 'position':506 'postgresql':272 'preferred':251,400 'principles':265 'prioritizing':335 'problem':288 'problem-solving':287 'productivity':471 'products':20 'program':499 'programming':256,264 'programs':461 'project':156,184,229 'projects':36,45,191 'provide':162,465 'provided':455 'provides':71,298 'pto':352 'quality':105,212 'range':491 'recharge':361 'recognise':480 'recognition':477 'recommendations':514 'refer':516 'referral':498 'regular':410 'reliable':108 'remote':369,377 'remotely':397 'requirements':231 'responsibilities':170 'responsible':138 'reviews':208 'reward':524 'right':503 'roles':168 's':341 'salary':490 'search':542 'serves':60 'services':445 'share':532 'skills':233,290,293 'social':58 'software':166,203,220 'solutions':167 'solves':92 'solving':289 'some':32,42 'someone':501 'sources':109 'space':24 'specifically':78 'spot':40,54,91 'stakeholders':230 'starting':49 'stay':213 'stealth':44 'strong':252,286 'successful':487 'successfully':515 'such':270,279 'support':453,460,537 'systems':269,285 'talent':541 'talented':126 'team':134 'technologies':221 'test':172,200 'testing':141 'thank':545 'that':14,46,340 'the':22,67,93,99,111,122,308,327,358,393 'their':399 'this':505,533 'through':419 'throughout':432 'time':350,434 'timely':188 'to':50,63,114,118,131,161,186,209,216,304,310,354,360,409,424 'token':527 'tools':278,472 'top':164 'top-notch':163 'up':117,215 'up-to-date':116,214 'us':17,27,436 'user':74 'user-generated':73 'valuable':104 'value':509 'very':415 'we':7,47,324,343,374,422,441,457,463,479,507 'well':195,321,338 'well-being':337 'well-deserved':320 'well-documented':194 'who':482 'whom':389 'why':342 'will':15,136 'with':146,155,180,218,226,262,267,276,435 'word':511 'word-of-mouth':510 'work':51,154,313,331,368,396,470,489 'work-life':312,330 'working':372,380 'world':309,394 'write':192 'year':247,497 'years':235,241 'you':135,152,356,546 'your':319,364,426,433,536", + city: 'Bengaluru', + weekly_hours_lower: null, + weekly_hours_higher: null, + commitment_hours_lower: null, + commitment_hours_higher: null, + geoname_id: null, + job_category_id: 'a2da048a-89ad-4c1e-a5e6-759f7e4f1bf2', + impact_job: true, + promoted: false, + kind: 'JOB', + payment_mode: null, + identity_type: 'organizations', + identity_meta: { + id: '1180accd-2a57-4a2f-af73-692feb2c05b1', + city: 'Singapore', + name: 'Emurgo', + email: 'client.jobs@socious.io', + image: 'https://storage.googleapis.com/socious-gcs/e927edcb447f6a2174e9bbce9ba66f0d.jpg', + hiring: false, + status: 'ACTIVE', + address: '83 Clemenceau Avenue, Singapore River, 239920, SG', + country: 'SG', + mission: "Changing people's lives and the world through Cardano", + verified: false, + shortname: '-emurgo5998', + description: null, + wallet_address: null, + verified_impact: false, + }, + job_category: { + id: 'a2da048a-89ad-4c1e-a5e6-759f7e4f1bf2', + name: 'Blockchain development', + hourly_wage_dollars: 44.5, + created_at: '2022-12-14T13:19:18.541708+00:00', + updated_at: '2022-12-14T13:19:18.541708+00:00', + }, + work_samples: [], + applicants: 61, + missions: 0, + saved: false, + not_interested: false, + }, + { + id: 'bc7aa7df-bfb6-416f-a90d-d8a77e09d3e4', + identity_id: '2bd26aa5-f745-4f12-bca7-17916161ae8b', + description: + "Job Title: Lead Frontend Developer\r\n\r\nAbout Socious: \r\n\r\nSocious is a talent marketplace that makes impact work accessible and transparent; we build connections between purpose-driven individuals and impact organizations through AI matching. By leveraging blockchain technology, we make social/environmental impact work traceable and reward contributions.\r\n\r\nWe got funding and we are expanding our team!\r\n\r\nJob Summary:\r\n\r\nWe are seeking a seasoned and innovative Lead Frontend Developer to spearhead our dynamic and growing team. Based in Germany or a similar time zone? Great. Based elsewhere? That's fine too. We're flexible and open to candidates worldwide for this fully remote position. You will collaborate with designers, contribute to code reviews, test new features, and help document best practices. Your passion for social and environmental impact will drive our mission, while your technical skills will help shape our front-end development processes.\r\n\r\nResponsibilities:\r\n\r\nAs our Lead Frontend Developer, you will:\r\n\r\n- Write, test, and debug code using a variety of frameworks and programming languages, including JavaScript, TypeScript, and React.js.\r\n- Review and evaluate designs from the UX/UI team for functionality and usability, providing constructive feedback as necessary\r\n- Participate in code reviews, ensuring the seamless integration of new features with existing ones\r\n- Foster clear and effective communication within the team, promoting a collaborative environment\r\n- Document development processes, standards, and best practices, ensuring a consistent and high-quality coding environment\r\n\r\nSkills and Experience:\r\n\r\nThe ideal candidate will have:\r\n\r\n- A strong passion for social/environmental impact, with previous experience in impact organizations being a significant asset\r\n- A degree in Computer Science, Engineering, or a related field is preferred\r\n- At least 10 years of experience in frontend development, particularly with JavaScript, TypeScript, React.js, Next.js\r\n- Familiarity with Solidity, Haskell, Plutus, and machine learning is advantageous\r\n- A self-motivated, problem-solving mentality, with a drive for innovative solutions\r\n- Experience in building out applications, with a portfolio showcasing your work\r\n- Strong analytical skills and the ability to tackle problems with innovative solutions\r\n- Exceptional communication skills and a knack for fostering collaboration and openness in a team setting\r\n\r\nLocation:\r\n\r\nWhile we prefer candidates based in Germany or in similar time zones to ensure smooth collaboration, we are an inclusive, global company. We are fully committed to accommodating remote work, and thus we welcome applications from candidates located anywhere in the world.\r\n\r\nWhat We Offer:\r\n\r\n- A diverse, driven, and high-performing work environment\r\n- A supportive, trusting, and transparent work culture\r\n- Work-life balance with flexible hours and unlimited paid leave\r\n- A competitive salary package of USD 80k - 120k per year, plus tokens (similar to stock options) in our company\r\n\r\nIf you're ready to bring your skills and passion to a mission-driven team, we'd love to learn more about you!", + project_type: 'FULL_TIME', + project_length: '6_MONTHS_OR_MORE', + payment_currency: 'USD', + payment_range_lower: '80000', + payment_range_higher: '120000', + experience_level: 3, + created_at: '2023-07-30T00:19:37.162Z', + updated_at: '2024-02-11T13:34:58.769Z', + deleted_at: null, + status: 'ACTIVE', + payment_type: 'PAID', + payment_scheme: 'FIXED', + title: 'Lead Frontend Developer', + expires_at: null, + country: 'JP', + skills: ['JAVASCRIPT', 'SOFTWARE_ENGINEERING', 'CSS', 'REACT.JS', 'COMPUTER_SCIENCE', 'WEB_DEVELOPMENT'], + causes_tags: ['SOCIAL'], + old_id: null, + other_party_id: null, + other_party_title: null, + other_party_url: null, + remote_preference: 'REMOTE', + search_tsv: + "'10':270 '120k':425 '80k':424 'a':13,64,82,161,213,224,240,253,256,263,293,302,313,334,342,391,400,418,448 'ability':323 'about':9,459 'accessible':20 'accommodating':373 'advantageous':292 'ai':35 'an':364 'analytical':319 'and':21,31,47,53,66,75,96,118,127,157,165,171,174,183,206,220,226,233,288,321,333,339,376,394,403,414,445 'anywhere':384 'applications':311,380 'are':55,62,363,369 'as':148,188 'asset':255 'at':268 'balance':410 'based':78,87,350 'being':252 'best':121,221 'between':26 'blockchain':39 'bring':442 'build':24 'building':309 'by':37 'candidate':237 'candidates':99,349,382 'clear':205 'code':113,159,192 'coding':230 'collaborate':108 'collaboration':338,361 'collaborative':214 'committed':371 'communication':208,331 'company':367,436 'competitive':419 'computer':259 'connections':25 'consistent':225 'constructive':186 'contribute':111 'contributions':49 'culture':406 'd':454 'debug':158 'degree':257 'designers':110 'designs':176 'developer':3,8,70,152 'development':145,217,276 'diverse':392 'document':120,216 'drive':131,303 'driven':29,393,451 'dynamic':74 'effective':207 'elsewhere':88 'end':144 'engineering':261 'ensure':359 'ensuring':194,223 'environment':215,231,399 'environmental':128 'evaluate':175 'exceptional':330 'existing':202 'expanding':56 'experience':234,248,273,307 'familiarity':283 'features':117,200 'feedback':187 'field':265 'fine':91 'flexible':95,412 'for':101,125,181,243,304,336 'foster':204 'fostering':337 'frameworks':164 'from':177,381 'front':143 'front-end':142 'frontend':2,7,69,151,275 'fully':103,370 'functionality':182 'funding':52 'germany':80,352 'global':366 'got':51 'great':86 'growing':76 'haskell':286 'have':239 'help':119,139 'high':228,396 'high-performing':395 'high-quality':227 'hours':413 'ideal':236 'if':437 'impact':18,32,44,129,245,250 'in':79,191,249,258,274,308,341,351,354,385,434 'including':168 'inclusive':365 'individuals':30 'innovative':67,305,328 'integration':197 'is':12,266,291 'javascript':169,279 'job':4,59 'knack':335 'languages':167 'lead':1,6,68,150 'learn':457 'learning':290 'least':269 'leave':417 'leveraging':38 'life':409 'located':383 'location':345 'love':455 'machine':289 'make':42 'makes':17 'marketplace':15 'matching':36 'mentality':300 'mission':133,450 'mission-driven':449 'more':458 'motivated':296 'necessary':189 'new':116,199 'next.js':282 'of':163,198,272,422 'offer':390 'ones':203 'open':97 'openness':340 'options':433 'or':81,262,353 'organizations':33,251 'our':57,73,132,141,149,435 'out':310 'package':421 'paid':416 'participate':190 'particularly':277 'passion':124,242,446 'per':426 'performing':397 'plus':428 'plutus':287 'portfolio':314 'position':105 'practices':122,222 'prefer':348 'preferred':267 'previous':247 'problem':298 'problem-solving':297 'problems':326 'processes':146,218 'programming':166 'promoting':212 'providing':185 'purpose':28 'purpose-driven':27 'quality':229 're':94,439 'react.js':172,281 'ready':440 'related':264 'remote':104,374 'responsibilities':147 'review':173 'reviews':114,193 'reward':48 's':90 'salary':420 'science':260 'seamless':196 'seasoned':65 'seeking':63 'self':295 'self-motivated':294 'setting':344 'shape':140 'showcasing':315 'significant':254 'similar':83,355,430 'skills':137,232,320,332,444 'smooth':360 'social':126 'social/environmental':43,244 'socious':10,11 'solidity':285 'solutions':306,329 'solving':299 'spearhead':72 'standards':219 'stock':432 'strong':241,318 'summary':60 'supportive':401 'tackle':325 'talent':14 'team':58,77,180,211,343,452 'technical':136 'technology':40 'test':115,156 'that':16,89 'the':178,195,210,235,322,386 'this':102 'through':34 'thus':377 'time':84,356 'title':5 'to':71,98,112,324,358,372,431,441,447,456 'tokens':429 'too':92 'traceable':46 'transparent':22,404 'trusting':402 'typescript':170,280 'unlimited':415 'usability':184 'usd':423 'using':160 'ux/ui':179 'variety':162 'we':23,41,50,54,61,93,347,362,368,378,389,453 'welcome':379 'what':388 'while':134,346 'will':107,130,138,154,238 'with':109,201,246,278,284,301,312,327,411 'within':209 'work':19,45,317,375,398,405,408 'work-life':407 'world':387 'worldwide':100 'write':155 'year':427 'years':271 'you':106,153,438,460 'your':123,135,316,443 'zone':85 'zones':357", + city: 'Tokyo', + weekly_hours_lower: null, + weekly_hours_higher: null, + commitment_hours_lower: null, + commitment_hours_higher: null, + geoname_id: null, + job_category_id: 'fbacde54-88e6-4d17-8aa9-286a716ba12f', + impact_job: true, + promoted: false, + kind: 'JOB', + payment_mode: null, + identity_type: 'organizations', + identity_meta: { + id: '2bd26aa5-f745-4f12-bca7-17916161ae8b', + city: 'Tokyo, Tokyo Prefecture', + name: 'Socious', + email: 'info@socious.io', + image: 'https://storage.googleapis.com/socious-gcs/ad4ae46f5dc138d8bc63928890bc64e0.png', + hiring: true, + status: 'ACTIVE', + address: 'Nihonbashi 3-2-14-1F, Chuo Ward, Tokyo, Japan 103-0027', + country: 'JP', + mission: + 'Our mission is to give everyone the chance to make a difference.\r\n\r\nWe are a talent platform that makes impact work accessible and transparent; we build connections between purpose-driven individuals and organizations. By leveraging blockchain technology, we make social/environmental impact work traceable and reward contributions with crypto tokens.', + verified: true, + shortname: 'socious', + description: null, + wallet_address: null, + verified_impact: true, + }, + job_category: { + id: 'fbacde54-88e6-4d17-8aa9-286a716ba12f', + name: 'Frontend development', + hourly_wage_dollars: 25, + created_at: '2022-12-14T13:19:18.541708+00:00', + updated_at: '2022-12-14T13:19:18.541708+00:00', + }, + work_samples: [], + applicants: 260, + missions: 0, + saved: false, + not_interested: false, + }, + { + id: '68db532f-c167-4dac-96a5-a8bfc62bca7a', + identity_id: '14588a07-ec8b-4926-aa11-de90e7cbc642', + description: + "We’re looking for a Senior Blockchain Developer to join our core contributors team.\n\nCarbon project developers want to stop climate change, but the current financing markets are untransparent and inefficient. This makes it incredibly hard for someone like an Indonesian mangrove developer to find financing, and the process can take years. We are rethinking and accelerating carbon supply chain financing through fair, transparent and liquid markets with blockchain in a fast-growing market expected to reach $50B by 2030.\n\nSolid World DAO is the world's first truly liquid carbon credit supply-chain financial instrument. We bring investor trust to the space with world-class advanced carbon production prediction modelling and guarantee transparent price, buyer and seller 24/7. Turning carbon forwards into commodities will result in accelerated expansion cycles and increased capital deployment for carbon projects\n\nWe raised $2.7M for protocol development, have $4M TVL commitments, We have partnered with the top crypto climate companies like Toucan, OFP, Vlidner, StarCB and Emsurge. \n\nWe are looking for a talented, independent and self-starter to take charge in our mission.\n\nCome and help us stop the climate change!\n\n**What will you do?**\n\n- Architect and implement our backend + smart contracts\n- Make sure everything has full test coverage\n- Help with deployment and software development\n- Check economics, formulas and math behind project's economics (tokenomics)\n\n**What should you have?**\n\n- You have 2+ years of Solidity and Typescript experience\n- You have 5+ years of Node or backend development experience\n- You like to write things with quality in mind in a test-driven fashion\n- You have good communication skills\n- You have good English skills\n- You are focused on detail, result-oriented and self-driven\n\n**What will you get?**\n\n- A position where you have a lot of freedom and responsibility\n- You'll get to work with a team that takes crypto, quality and security seriously\n- Flexible working hours + remote work\n- You´ll get to work in a fast-growing international DAO that grows with an exponential speed\n- You´ll get to work with professional and talented people with staggering energy\n- Great salary + DAO tokens so you can benefit from the success of the DAO\n- Unlimited vacation - rest more than legally allowed!\n\nCome help us stop climate change!", + project_type: 'FULL_TIME', + project_length: '6_MONTHS_OR_MORE', + payment_currency: 'USD', + payment_range_lower: '110000', + payment_range_higher: '132000', + experience_level: 2, + created_at: '2022-11-10T14:08:47.843Z', + updated_at: '2022-11-10T14:08:47.843Z', + deleted_at: null, + status: 'ACTIVE', + payment_type: 'PAID', + payment_scheme: 'FIXED', + title: 'Senior Web3 Developer', + expires_at: null, + country: 'ee', + skills: ['JAVASCRIPT', 'SOFTWARE_DEVELOPMENT', 'NODE.JS'], + causes_tags: ['CLIMATE_CHANGE', 'SUSTAINABILITY'], + old_id: null, + other_party_id: null, + other_party_title: null, + other_party_url: null, + remote_preference: 'REMOTE', + search_tsv: + "'2':236 '2.7':146 '2030':84 '24/7':125 '4m':152 '5':245 '50b':82 'a':8,74,175,263,294,299,311,331 'accelerated':134 'accelerating':60 'advanced':113 'allowed':376 'an':43,340 'and':33,50,59,68,118,123,137,169,178,189,201,217,223,240,286,303,317,350 'architect':200 'are':31,57,172,279 'backend':204,250 'behind':225 'benefit':363 'blockchain':10,72 'bring':103 'but':26 'buyer':122 'by':83 'can':53,362 'capital':139 'carbon':18,61,95,114,127,142 'chain':63,99 'change':25,195,382 'charge':184 'check':220 'class':112 'climate':24,162,194,381 'come':188,377 'commitments':154 'commodities':130 'communication':271 'companies':163 'contracts':206 'contributors':16 'core':15 'coverage':213 'credit':96 'crypto':161,315 'current':28 'cycles':136 'dao':87,336,358,369 'deployment':140,216 'detail':282 'developer':3,11,46 'developers':20 'development':150,219,251 'do':199 'driven':266,289 'economics':221,228 'emsurge':170 'energy':355 'english':276 'everything':209 'expansion':135 'expected':79 'experience':242,252 'exponential':341 'fair':66 'fashion':267 'fast':76,333 'fast-growing':75,332 'financial':100 'financing':29,49,64 'find':48 'first':92 'flexible':320 'focused':280 'for':7,40,141,148,174 'formulas':222 'forwards':128 'freedom':302 'from':364 'full':211 'get':293,307,327,345 'good':270,275 'great':356 'growing':77,334 'grows':338 'guarantee':119 'hard':39 'has':210 'have':151,156,233,235,244,269,274,298 'help':190,214,378 'hours':322 'implement':202 'in':73,133,185,260,262,330 'increased':138 'incredibly':38 'independent':177 'indonesian':44 'inefficient':34 'instrument':101 'international':335 'into':129 'investor':104 'is':88 'it':37 'join':13 'legally':375 'like':42,164,254 'liquid':69,94 'll':306,326,344 'looking':6,173 'lot':300 'm':147 'make':207 'makes':36 'mangrove':45 'market':78 'markets':30,70 'math':224 'mind':261 'mission':187 'modelling':117 'more':373 'node':248 'of':238,247,301,367 'ofp':166 'on':281 'or':249 'oriented':285 'our':14,186,203 'partnered':157 'people':352 'position':295 'prediction':116 'price':121 'process':52 'production':115 'professional':349 'project':19,226 'projects':143 'protocol':149 'quality':259,316 'raised':145 're':5 'reach':81 'remote':323 'responsibility':304 'rest':372 'result':132,284 'result-oriented':283 'rethinking':58 's':91,227 'salary':357 'security':318 'self':180,288 'self-driven':287 'self-starter':179 'seller':124 'senior':1,9 'seriously':319 'should':231 'skills':272,277 'smart':205 'so':360 'software':218 'solid':85 'solidity':239 'someone':41 'space':108 'speed':342 'staggering':354 'starcb':168 'starter':181 'stop':23,192,380 'success':366 'supply':62,98 'supply-chain':97 'sure':208 'take':54,183 'takes':314 'talented':176,351 'team':17,312 'test':212,265 'test-driven':264 'than':374 'that':313,337 'the':27,51,89,107,159,193,365,368 'things':257 'this':35 'through':65 'to':12,22,47,80,106,182,255,308,328,346 'tokenomics':229 'tokens':359 'top':160 'toucan':165 'transparent':67,120 'truly':93 'trust':105 'turning':126 'tvl':153 'typescript':241 'unlimited':370 'untransparent':32 'us':191,379 'vacation':371 'vlidner':167 'want':21 'we':4,56,102,144,155,171 'web3':2 'what':196,230,290 'where':296 'will':131,197,291 'with':71,109,158,215,258,310,339,348,353 'work':309,324,329,347 'working':321 'world':86,90,111 'world-class':110 'write':256 'years':55,237,246 'you':198,232,234,243,253,268,273,278,292,297,305,325,343,361", + city: 'Tallinn', + weekly_hours_lower: null, + weekly_hours_higher: null, + commitment_hours_lower: null, + commitment_hours_higher: null, + geoname_id: null, + job_category_id: '87ec40e6-fe30-41cf-a4d7-63db2631c694', + impact_job: true, + promoted: false, + kind: 'JOB', + payment_mode: null, + identity_type: 'organizations', + identity_meta: { + id: '14588a07-ec8b-4926-aa11-de90e7cbc642', + city: 'Tallinn', + name: 'Solid World DAO', + email: 'client.jobs@socious.io', + image: 'https://storage.googleapis.com/socious-gcs/ca9453f602aed05632915c493a364178.jpg', + hiring: false, + status: 'ACTIVE', + address: null, + country: 'ee', + mission: 'Solid World DAO de-risks carbon investments and makes them liquid.', + verified: false, + shortname: 'solid4705', + description: null, + wallet_address: null, + verified_impact: false, + }, + job_category: { + id: '87ec40e6-fe30-41cf-a4d7-63db2631c694', + name: 'Other', + hourly_wage_dollars: 20, + created_at: '2022-12-14T13:19:18.541708+00:00', + updated_at: '2022-12-14T13:19:18.541708+00:00', + }, + work_samples: [], + applicants: 5, + missions: 0, + saved: false, + not_interested: false, + }, + { + id: 'a1d8c995-66f7-4183-bda1-c6939447a7e0', + identity_id: '2bd26aa5-f745-4f12-bca7-17916161ae8b', + description: + "**Company Overview:**\r\n\r\nSocious is a talent marketplace that makes impact work accessible and transparent; we build connections between purpose-driven individuals and impact organizations through AI matching. By leveraging blockchain technology, we make social/environmental impact work traceable and reward contributions.\r\n\r\nHaving secured funding, we're in expansion mode. Join us in this journey!\r\n\r\n**Job Description:**\r\n\r\nThe Impact Academy is our educational product, a comprehensive online learning platform designed for professionals seeking to advance their careers in social impact. We offer courses on impact measurement, ESG (environmental, social, and governance) reporting, impact accounting, the CSRD and more.\r\n\r\nAs Head of Impact Academy, you will spearhead the development and strategic direction of our educational offerings, focusing on creating high-impact learning experiences.\r\n\r\nThis role requires a deep understanding of impact measurement, ESG standards, and the educational needs of professionals aiming to enhance their skills in these areas.\r\n\r\n**Key Responsibilities:**\r\n\r\n- Develop and execute the strategic vision for the Impact Academy, ensuring alignment with industry standards and emerging trends in social impact and sustainability. Ensuring it aligns with our overall company mission and meets the needs of our target audience.\r\n- Lead the creation and curation of course content that meets the needs of professionals from diverse sectors seeking to understand and apply impact measurement, ESG principles, and the CSRD.\r\n- The field of social impact is constantly evolving. You will be responsible for staying current on the latest developments in impact measurement, ESG reporting, the CSRD, and related fields. This knowledge will inform the development of new courses and ensure our platform remains at the forefront of the industry.\r\n- You will work with our team to create a user-friendly and engaging educational content that meets the needs of our learners. This includes conducting user research, gathering feedback, and iterating on the product based on data and insights.\r\n- Oversee the design and delivery of both online and offline learning modules, utilizing innovative educational technologies and methodologies.\r\n- Measure the effectiveness of the educational programs, using impact metrics and participant feedback to continually enhance the learning experience.\r\n- Foster partnerships with key stakeholders, including educational institutions, non-profits, and corporate entities to expand the reach and impact of the academy.\r\n- You will lead a team of talented collaborators, including instructional designers, content developers, and marketing specialists. You will be responsible for creating a culture of collaboration and innovation.\r\n\r\n**Skills/Experience:**\r\n\r\n- Strong background in impact measurement, ESG, or related fields, with professional experience at an accounting firm highly desirable.\r\n- Excellent leadership and communication skills, capable of inspiring a team and collaborating with diverse stakeholders.\r\n- A deep commitment to social impact, with a strategic mindset capable of translating complex sustainability challenges into impactful educational solutions.\r\n- A strong track record of success in launching and managing online learning products.\r\n- Data-driven decision making skills.\r\n- Master’s degree in Business Administration, Sustainability, Education, or related field preferred.\r\n\r\n**What's in it for you?**\r\n\r\n- Make a lasting impact on the lives of many and on the world.\r\n- Take part in shaping the future by working with the most advanced and pioneering technologies in the field.\r\n- Collaborate with and learn from passionate, diverse, and high-performing colleagues.\r\n- Achieve the perfect work-life balance with flexible hours and unlimited paid leave.\r\n- Thrive in a remote-first setting with occasional team get-togethers.\r\n- Commit to your growth with ongoing learning and development opportunities.\r\n- Navigate a vibrant, fast-paced work setting.\r\n- Take the lead with autonomy in decision-making.\r\n- Relish a culture of trust, transparency, and unwavering support.\r\n- Become a member of a team that is deeply committed to fostering a socially responsible and ecologically sustainable work environment.\r\n- Enjoy a competitive compensation: USD 60k to 100k annually + token incentives.\r\n\r\n**Socious Referral Program:**\r\n\r\nKnow someone just right for Socious? We highly value word-of-mouth recommendations. Successfully refer a candidate, and enjoy a $1,000 reward as a token of our gratitude. Just share this job link!\r\n\r\nYour support in broadening our talent search is invaluable. Thank you.\r\n\r\n**Our mission and values:**\r\n\r\n**Mission:** Give everyone the chance to make a difference.\r\n\r\n**Our values:**\r\n\r\n- Diversity, inclusion, and belonging.\r\n- Life first, work second.\r\n- High performance for high impact.\r\n- Autonomy and accountability.\r\n- Candor, collaboration, and play.", + project_type: 'FULL_TIME', + project_length: '6_MONTHS_OR_MORE', + payment_currency: 'USD', + payment_range_lower: '60000', + payment_range_higher: '100000', + experience_level: 3, + created_at: '2024-04-23T01:34:17.428Z', + updated_at: '2024-04-30T09:18:42.854Z', + deleted_at: null, + status: 'ACTIVE', + payment_type: 'PAID', + payment_scheme: 'FIXED', + title: 'Head of Impact Academy', + expires_at: null, + country: null, + skills: ['EDUCATION', 'MANAGEMENT', 'DIGITAL_MARKETING', 'BUSINESS_DEVELOPMENT', 'ESG'], + causes_tags: ['SOCIAL'], + old_id: null, + other_party_id: null, + other_party_title: null, + other_party_url: null, + remote_preference: 'REMOTE', + search_tsv: + "'000':652 '1':651 '100k':623 '60k':621 'a':9,68,130,279,374,393,426,433,440,453,491,549,571,588,597,600,608,617,646,650,655,687 'academy':4,63,106,163,370 'accessible':16 'accountability':706 'accounting':97,414 'achieve':533 'administration':477 'advance':78 'advanced':514 'ai':31 'aiming':144 'alignment':165 'aligns':179 'an':413 'and':17,27,43,93,100,112,138,155,169,175,185,196,213,219,248,260,283,301,309,314,319,327,339,359,366,384,397,420,428,461,499,515,523,528,543,567,593,611,648,678,693,705,709 'annually':624 'apply':214 'areas':151 'as':102,654 'at':265,412 'audience':192 'autonomy':582,704 'background':401 'balance':539 'based':306 'be':232,389 'become':596 'belonging':694 'between':22 'blockchain':35 'both':317 'broadening':668 'build':20 'business':476 'by':33,509 'candidate':647 'candor':707 'capable':423,443 'careers':80 'challenges':448 'chance':684 'collaborate':521 'collaborating':429 'collaboration':396,708 'collaborators':378 'colleagues':532 'commit':560 'commitment':435 'committed':605 'communication':421 'company':5,183 'compensation':619 'competitive':618 'complex':446 'comprehensive':69 'conducting':296 'connections':21 'constantly':228 'content':200,286,382 'continually':343 'contributions':45 'corporate':360 'course':199 'courses':86,259 'create':278 'creating':121,392 'creation':195 'csrd':99,221,247 'culture':394,589 'curation':197 'current':236 'data':308,467 'data-driven':466 'decision':469,585 'decision-making':584 'deep':131,434 'deeply':604 'degree':474 'delivery':315 'description':60 'design':313 'designed':73 'designers':381 'desirable':417 'develop':154 'developers':383 'development':111,256,568 'developments':240 'difference':688 'direction':114 'diverse':208,431,527 'diversity':691 'driven':25,468 'ecologically':612 'education':479 'educational':66,117,140,285,325,334,354,451 'effectiveness':331 'emerging':170 'engaging':284 'enhance':146,344 'enjoy':616,649 'ensure':261 'ensuring':164,177 'entities':361 'environment':615 'environmental':91 'esg':90,136,217,244,405 'everyone':682 'evolving':229 'excellent':418 'execute':156 'expand':363 'expansion':52 'experience':347,411 'experiences':126 'fast':574 'fast-paced':573 'feedback':300,341 'field':223,482,520 'fields':250,408 'firm':415 'first':552,696 'flexible':541 'focusing':119 'for':74,160,234,391,488,634,701 'forefront':267 'foster':348 'fostering':607 'friendly':282 'from':207,525 'funding':48 'future':508 'gathering':299 'get':558 'get-togethers':557 'give':681 'governance':94 'gratitude':659 'growth':563 'having':46 'head':1,103 'high':123,530,699,702 'high-impact':122 'high-performing':529 'highly':416,637 'hours':542 'impact':3,14,28,40,62,83,88,96,105,124,134,162,174,215,226,242,337,367,403,438,493,703 'impactful':450 'in':51,56,81,149,172,241,402,459,475,486,505,518,548,583,667 'incentives':626 'includes':295 'including':353,379 'inclusion':692 'individuals':26 'industry':167,270 'inform':254 'innovation':398 'innovative':324 'insights':310 'inspiring':425 'institutions':355 'instructional':380 'into':449 'invaluable':673 'is':8,64,227,603,672 'it':178,487 'iterating':302 'job':59,663 'join':54 'journey':58 'just':632,660 'key':152,351 'know':630 'knowledge':252 'lasting':492 'latest':239 'launching':460 'lead':193,373,580 'leadership':419 'learn':524 'learners':293 'learning':71,125,321,346,464,566 'leave':546 'leveraging':34 'life':538,695 'link':664 'lives':496 'make':38,490,686 'makes':13 'making':470,586 'managing':462 'many':498 'marketing':385 'marketplace':11 'master':472 'matching':32 'measure':329 'measurement':89,135,216,243,404 'meets':186,202,288 'member':598 'methodologies':328 'metrics':338 'mindset':442 'mission':184,677,680 'mode':53 'modules':322 'more':101 'most':513 'mouth':642 'navigate':570 'needs':141,188,204,290 'new':258 'non':357 'non-profits':356 'occasional':555 'of':2,104,115,133,142,189,198,205,224,257,268,291,316,332,368,376,395,424,444,457,497,590,599,641,657 'offer':85 'offerings':118 'offline':320 'on':87,120,237,303,307,494,500 'ongoing':565 'online':70,318,463 'opportunities':569 'or':406,480 'organizations':29 'our':65,116,181,190,262,275,292,658,669,676,689 'overall':182 'oversee':311 'overview':6 'paced':575 'paid':545 'part':504 'participant':340 'partnerships':349 'passionate':526 'perfect':535 'performance':700 'performing':531 'pioneering':516 'platform':72,263 'play':710 'preferred':483 'principles':218 'product':67,305 'products':465 'professional':410 'professionals':75,143,206 'profits':358 'program':629 'programs':335 'purpose':24 'purpose-driven':23 're':50 'reach':365 'recommendations':643 'record':456 'refer':645 'referral':628 'related':249,407,481 'relish':587 'remains':264 'remote':551 'remote-first':550 'reporting':95,245 'requires':129 'research':298 'responsibilities':153 'responsible':233,390,610 'reward':44,653 'right':633 'role':128 's':473,485 'search':671 'second':698 'sectors':209 'secured':47 'seeking':76,210 'setting':553,577 'shaping':506 'share':661 'skills':148,422,471 'skills/experience':399 'social':82,92,173,225,437 'social/environmental':39 'socially':609 'socious':7,627,635 'solutions':452 'someone':631 'spearhead':109 'specialists':386 'stakeholders':352,432 'standards':137,168 'staying':235 'strategic':113,158,441 'strong':400,454 'success':458 'successfully':644 'support':595,666 'sustainability':176,447,478 'sustainable':613 'take':503,578 'talent':10,670 'talented':377 'target':191 'team':276,375,427,556,601 'technologies':326,517 'technology':36 'thank':674 'that':12,201,287,602 'the':61,98,110,139,157,161,187,194,203,220,222,238,246,255,266,269,289,304,312,330,333,345,364,369,495,501,507,512,519,534,579,683 'their':79,147 'these':150 'this':57,127,251,294,662 'thrive':547 'through':30 'to':77,145,211,277,342,362,436,561,606,622,685 'togethers':559 'token':625,656 'traceable':42 'track':455 'translating':445 'transparency':592 'transparent':18 'trends':171 'trust':591 'understand':212 'understanding':132 'unlimited':544 'unwavering':594 'us':55 'usd':620 'user':281,297 'user-friendly':280 'using':336 'utilizing':323 'value':638 'values':679,690 'vibrant':572 'vision':159 'we':19,37,49,84,636 'what':484 'will':108,231,253,272,372,388 'with':166,180,274,350,409,430,439,511,522,540,554,564,581 'word':640 'word-of-mouth':639 'work':15,41,273,537,576,614,697 'work-life':536 'working':510 'world':502 'you':107,230,271,371,387,489,675 'your':562,665", + city: null, + weekly_hours_lower: null, + weekly_hours_higher: null, + commitment_hours_lower: null, + commitment_hours_higher: null, + geoname_id: null, + job_category_id: '4fd54bae-80ac-4443-b610-c5a280f39093', + impact_job: true, + promoted: false, + kind: 'JOB', + payment_mode: null, + identity_type: 'organizations', + identity_meta: { + id: '2bd26aa5-f745-4f12-bca7-17916161ae8b', + city: 'Tokyo, Tokyo Prefecture', + name: 'Socious', + email: 'info@socious.io', + image: 'https://storage.googleapis.com/socious-gcs/ad4ae46f5dc138d8bc63928890bc64e0.png', + hiring: true, + status: 'ACTIVE', + address: 'Nihonbashi 3-2-14-1F, Chuo Ward, Tokyo, Japan 103-0027', + country: 'JP', + mission: + 'Our mission is to give everyone the chance to make a difference.\r\n\r\nWe are a talent platform that makes impact work accessible and transparent; we build connections between purpose-driven individuals and organizations. By leveraging blockchain technology, we make social/environmental impact work traceable and reward contributions with crypto tokens.', + verified: true, + shortname: 'socious', + description: null, + wallet_address: null, + verified_impact: true, + }, + job_category: { + id: '4fd54bae-80ac-4443-b610-c5a280f39093', + name: 'Executive management', + hourly_wage_dollars: 45, + created_at: '2023-01-26T15:00:00+00:00', + updated_at: '2023-01-26T15:00:00+00:00', + }, + work_samples: [], + applicants: 31, + missions: 0, + saved: false, + not_interested: false, + }, + { + id: '84b12f02-53f3-4d12-8cc8-8f191b10ee55', + identity_id: 'bfa7f9cf-65f0-492c-90df-6cf8ddea5c60', + description: + '**Software Engineer (Haskell)**\r\n\r\nFully remote position. We are hiring Haskell developers of different levels of seniority. We build new blockchain technologies and infrastructure people can trust. That is why we are seeking talented and passionate individuals who could contribute to our products, most of which are open-source.\r\n\r\n**Responsibilities:**\r\n\r\n- Develop a high-quality code for our cryptography and blockchain libraries\r\n- Implement novel cryptographic algorithms and integrate the existing implementations into our codebase\r\n- Help to design and implement our Layer 2 node software\r\n- Build demos and example applications for our products\r\n- Document the project according to the best standards for open-source development\r\n\r\n**Requirements:**\r\n\r\n- Excellent knowledge of Haskell\r\n- Ability to write a high-quality code\r\n- Familiarity with best practices in functional programming\r\n- Strong math / computer science background\r\n\r\n**Desired qualifications:**\r\n\r\n- Good knowledge of Rust and C++\r\n- Experience in blockchain developmen\r\n- Experience in developing cryptographic libraries\r\n- Experience in building distributed systems\r\n\r\n**Compensation**: up to $10,000 per month', + project_type: 'FULL_TIME', + project_length: '6_MONTHS_OR_MORE', + payment_currency: 'USD', + payment_range_lower: '1000', + payment_range_higher: '10000', + experience_level: 2, + created_at: '2024-02-20T13:55:09.526Z', + updated_at: '2024-02-20T15:50:41.843Z', + deleted_at: null, + status: 'ACTIVE', + payment_type: 'PAID', + payment_scheme: 'FIXED', + title: 'Software Engineer (Haskell) ', + expires_at: null, + country: 'CH', + skills: ['BLOCKCHAIN_DEVELOPMENT', 'PLUTUS', 'HASKELL', 'C++'], + causes_tags: ['SOCIAL'], + old_id: null, + other_party_id: null, + other_party_title: null, + other_party_url: null, + remote_preference: 'REMOTE', + search_tsv: + "'000':160 '10':159 '2':85 'a':55,117 'ability':114 'according':99 'algorithms':69 'and':25,37,63,70,81,90,140 'applications':92 'are':11,34,49 'background':133 'best':102,124 'blockchain':23,64,144 'build':21,88 'building':153 'c':141 'can':28 'code':59,121 'codebase':77 'compensation':156 'computer':131 'contribute':42 'could':41 'cryptographic':68,149 'cryptography':62 'demos':89 'design':80 'desired':134 'develop':54 'developers':14 'developing':148 'developmen':145 'development':108 'different':16 'distributed':154 'document':96 'engineer':2,5 'example':91 'excellent':110 'existing':73 'experience':142,146,151 'familiarity':122 'for':60,93,104 'fully':7 'functional':127 'good':136 'haskell':3,6,13,113 'help':78 'high':57,119 'high-quality':56,118 'hiring':12 'implement':66,82 'implementations':74 'in':126,143,147,152 'individuals':39 'infrastructure':26 'integrate':71 'into':75 'is':31 'knowledge':111,137 'layer':84 'levels':17 'libraries':65,150 'math':130 'month':162 'most':46 'new':22 'node':86 'novel':67 'of':15,18,47,112,138 'open':51,106 'open-source':50,105 'our':44,61,76,83,94 'passionate':38 'people':27 'per':161 'position':9 'practices':125 'products':45,95 'programming':128 'project':98 'qualifications':135 'quality':58,120 'remote':8 'requirements':109 'responsibilities':53 'rust':139 'science':132 'seeking':35 'seniority':19 'software':1,4,87 'source':52,107 'standards':103 'strong':129 'systems':155 'talented':36 'technologies':24 'that':30 'the':72,97,101 'to':43,79,100,115,158 'trust':29 'up':157 'we':10,20,33 'which':48 'who':40 'why':32 'with':123 'write':116", + city: 'Montreux', + weekly_hours_lower: null, + weekly_hours_higher: null, + commitment_hours_lower: null, + commitment_hours_higher: null, + geoname_id: null, + job_category_id: 'a2da048a-89ad-4c1e-a5e6-759f7e4f1bf2', + impact_job: true, + promoted: false, + kind: 'JOB', + payment_mode: null, + identity_type: 'organizations', + identity_meta: { + id: 'bfa7f9cf-65f0-492c-90df-6cf8ddea5c60', + city: 'Montreux', + name: 'zkFold', + email: 'info@zkfold.io', + image: 'https://storage.googleapis.com/socious-gcs/991d87f077decc28071796b7e64de961.jpg', + hiring: true, + status: 'ACTIVE', + address: null, + country: 'CH', + mission: 'We make Cardano blockchain transactions faster and cheaper with zk-rollups\n\n', + verified: false, + shortname: '-zkfold9152', + description: null, + wallet_address: null, + verified_impact: false, + }, + job_category: { + id: 'a2da048a-89ad-4c1e-a5e6-759f7e4f1bf2', + name: 'Blockchain development', + hourly_wage_dollars: 44.5, + created_at: '2022-12-14T13:19:18.541708+00:00', + updated_at: '2022-12-14T13:19:18.541708+00:00', + }, + work_samples: [], + applicants: 31, + missions: 0, + saved: false, + not_interested: false, + }, + { + id: '4b3f6d65-2eac-426a-b7cc-6a76b569c384', + identity_id: '2bd26aa5-f745-4f12-bca7-17916161ae8b', + description: + '***About us:***\r\n\r\nSocious is a talent marketplace that makes impact work accessible and transparent; we build connections between purpose-driven individuals and impact organizations through AI matching. By leveraging blockchain technology, we make social/environmental impact work traceable and reward contributions.\r\n\r\nWe got venture funding and we are expanding our team! \r\n\r\n***Responsibilities:***\r\n\r\nAs a Frontend Developer:\r\n\r\n- Writing code using a variety of programming languages/frameworks including JavaScript, Typescript, React.js, Next.js, Gatsby.js, etc.\r\n- Reviewing designs created by designers to ensure they are functional and meet usability standards\r\n- Participating in code reviews and testing new features to ensure they are compatible with existing features\r\n- Communicating clearly with other team members with minimal external help.\r\n- Documenting development processes and complying with best practices.\r\n\r\n***Skills/Experience:***\r\n\r\n- A strong passion for social/environmental impact (previous experience with impact organizations is an asset)\r\n- Degree in Computer Science, Engineering or a related field is an asset\r\n- 8+ years of experience in frontend development especially with Javascript, Typescript, React.js, Next.js\r\n- Experience with Solidity, Haskell, Plutus, and machine learning is an asset\r\n- Self-motivated and driven to creatively solve problems\r\n- Experience building out applications\r\n- Strong analytical and problem-solving skills\r\n- Excellent communication and collaboration abilities.\r\n\r\n***What we offer:*** \r\n\r\n- Diverse, driven, and high-performing colleagues\r\n- A supportive, trusting and transparent working environment\r\n- Work-life balance with flexible hours and leave (unlimited paid leave)\r\n- A competitive salary package: USD 70k - 110k per year + tokens (similar to stock options)', + project_type: 'FULL_TIME', + project_length: '6_MONTHS_OR_MORE', + payment_currency: 'USD', + payment_range_lower: '70000', + payment_range_higher: '110000', + experience_level: 2, + created_at: '2023-08-21T22:59:36.881Z', + updated_at: '2024-02-11T13:36:23.676Z', + deleted_at: null, + status: 'ACTIVE', + payment_type: 'PAID', + payment_scheme: 'FIXED', + title: 'Senior Frontend Engineer', + expires_at: null, + country: 'JP', + skills: ['REACT.JS', 'JAVASCRIPT', 'SOFTWARE_DEVELOPMENT', 'SOFTWARE_ENGINEERING'], + causes_tags: ['SOCIAL'], + old_id: null, + other_party_id: null, + other_party_title: null, + other_party_url: null, + remote_preference: 'REMOTE', + search_tsv: + "'110k':234 '70k':233 '8':150 'a':8,57,63,124,144,209,228 'abilities':198 'about':4 'accessible':15 'ai':30 'an':136,148,172 'analytical':188 'and':16,26,42,49,85,93,118,168,177,189,196,204,212,223 'applications':186 'are':51,83,100 'as':56 'asset':137,149,173 'balance':219 'best':121 'between':21 'blockchain':34 'build':19 'building':184 'by':32,78 'clearly':106 'code':61,91 'collaboration':197 'colleagues':208 'communicating':105 'communication':195 'compatible':101 'competitive':229 'complying':119 'computer':140 'connections':20 'contributions':44 'created':77 'creatively':180 'degree':138 'designers':79 'designs':76 'developer':59 'development':116,156 'diverse':202 'documenting':115 'driven':24,178,203 'engineer':3 'engineering':142 'ensure':81,98 'environment':215 'especially':157 'etc':74 'excellent':194 'existing':103 'expanding':52 'experience':131,153,163,183 'external':113 'features':96,104 'field':146 'flexible':221 'for':127 'frontend':2,58,155 'functional':84 'funding':48 'gatsby.js':73 'got':46 'haskell':166 'help':114 'high':206 'high-performing':205 'hours':222 'impact':13,27,39,129,133 'in':90,139,154 'including':68 'individuals':25 'is':7,135,147,171 'javascript':69,159 'languages/frameworks':67 'learning':170 'leave':224,227 'leveraging':33 'life':218 'machine':169 'make':37 'makes':12 'marketplace':10 'matching':31 'meet':86 'members':110 'minimal':112 'motivated':176 'new':95 'next.js':72,162 'of':65,152 'offer':201 'options':241 'or':143 'organizations':28,134 'other':108 'our':53 'out':185 'package':231 'paid':226 'participating':89 'passion':126 'per':235 'performing':207 'plutus':167 'practices':122 'previous':130 'problem':191 'problem-solving':190 'problems':182 'processes':117 'programming':66 'purpose':23 'purpose-driven':22 'react.js':71,161 'related':145 'responsibilities':55 'reviewing':75 'reviews':92 'reward':43 'salary':230 'science':141 'self':175 'self-motivated':174 'senior':1 'similar':238 'skills':193 'skills/experience':123 'social/environmental':38,128 'socious':6 'solidity':165 'solve':181 'solving':192 'standards':88 'stock':240 'strong':125,187 'supportive':210 'talent':9 'team':54,109 'technology':35 'testing':94 'that':11 'they':82,99 'through':29 'to':80,97,179,239 'tokens':237 'traceable':41 'transparent':17,213 'trusting':211 'typescript':70,160 'unlimited':225 'us':5 'usability':87 'usd':232 'using':62 'variety':64 'venture':47 'we':18,36,45,50,200 'what':199 'with':102,107,111,120,132,158,164,220 'work':14,40,217 'work-life':216 'working':214 'writing':60 'year':236 'years':151", + city: 'Tokyo', + weekly_hours_lower: null, + weekly_hours_higher: null, + commitment_hours_lower: null, + commitment_hours_higher: null, + geoname_id: null, + job_category_id: 'fbacde54-88e6-4d17-8aa9-286a716ba12f', + impact_job: true, + promoted: false, + kind: 'JOB', + payment_mode: null, + identity_type: 'organizations', + identity_meta: { + id: '2bd26aa5-f745-4f12-bca7-17916161ae8b', + city: 'Tokyo, Tokyo Prefecture', + name: 'Socious', + email: 'info@socious.io', + image: 'https://storage.googleapis.com/socious-gcs/ad4ae46f5dc138d8bc63928890bc64e0.png', + hiring: true, + status: 'ACTIVE', + address: 'Nihonbashi 3-2-14-1F, Chuo Ward, Tokyo, Japan 103-0027', + country: 'JP', + mission: + 'Our mission is to give everyone the chance to make a difference.\r\n\r\nWe are a talent platform that makes impact work accessible and transparent; we build connections between purpose-driven individuals and organizations. By leveraging blockchain technology, we make social/environmental impact work traceable and reward contributions with crypto tokens.', + verified: true, + shortname: 'socious', + description: null, + wallet_address: null, + verified_impact: true, + }, + job_category: { + id: 'fbacde54-88e6-4d17-8aa9-286a716ba12f', + name: 'Frontend development', + hourly_wage_dollars: 25, + created_at: '2022-12-14T13:19:18.541708+00:00', + updated_at: '2022-12-14T13:19:18.541708+00:00', + }, + work_samples: [], + applicants: 392, + missions: 4, + saved: false, + not_interested: false, + }, + { + id: '69d527c4-e914-490a-8521-fd6e1977a522', + identity_id: '2bd26aa5-f745-4f12-bca7-17916161ae8b', + description: + "Socious launched Tech4Good Changemaker Scholarship in partnership with Le Wagon Tokyo Coding Bootcamp. The new scholarship program is aimed at individuals who are passionate to learn web development and data science as tools to create social impact. The ultimate goal of this scholarship is to close the gap of the social sector’s scarce IT human resources.\n\nTech4Good Changemaker Scholarship will cover up to 30% of the student's tuition fee. It applies to Le Wagon Tokyo's full-time and part-time web development and data science bootcamps. It can accommodate remote learning and is open to participants from all over the world.\n\nSeira Yun, the founder of Socious Inc., is an alumnus of Le Wagon's web development program. He has been successful in transitioning from a humanitarian worker to a Tech4Good entrepreneur.\n\n“We launched Tech4Good Changemaker Scholarship to solve the shortage of IT talent in the social impact sector. We believe that talented web developers and data scientists can leverage the power of technology to help social impact organizations scale their solutions. We hope to empower people to learn to code and apply these skills to solve social problems,” said Seira.\n\nThe scholars will also enjoy mentorship from Socious Inc.'s members. Mentors will support in finding employment in or creating social impact organizations. Scholars are also entitled to free access to Socious Inc.'s community events. There will also be a community of alumni scholars that will enrich the students' network.\n\nInterested applicants can \n\n1. Apply to Le Wagon through their official website: https://info.lewagon.com/changemaker-scholarship-program\n2. if your application to Le Wagon's program is successful, you can apply to the Scholarship through the Socious app (this app). The Socious team will interview you and conduct reference checks.\n\n", + project_type: 'ONE_OFF', + project_length: '3_6_MONTHS', + payment_currency: 'USD', + payment_range_lower: '2000', + payment_range_higher: '2100', + experience_level: 1, + created_at: '2023-12-11T05:22:05.441Z', + updated_at: '2023-12-11T07:17:47.563Z', + deleted_at: null, + status: 'ACTIVE', + payment_type: 'PAID', + payment_scheme: 'FIXED', + title: 'Tech4Good Changemaker Scholarship', + expires_at: null, + country: 'JP', + skills: ['SOFTWARE_ENGINEERING'], + causes_tags: ['EDUCATION'], + old_id: null, + other_party_id: null, + other_party_title: null, + other_party_url: null, + remote_preference: 'REMOTE', + search_tsv: + "'/changemaker-scholarship-program':265 '1':254 '2':266 '30':68 'a':134,138,240 'access':229 'accommodate':97 'aimed':22 'all':106 'also':203,225,238 'alumni':243 'alumnus':119 'an':118 'and':32,85,91,100,164,190,295 'app':286,288 'applicants':252 'application':269 'applies':76 'apply':191,255,279 'are':26,224 'as':35 'at':23 'be':239 'been':129 'believe':159 'bootcamp':16 'bootcamps':94 'can':96,167,253,278 'changemaker':2,7,62,144 'checks':298 'close':49 'code':189 'coding':15 'community':234,241 'conduct':296 'cover':65 'create':38 'creating':219 'data':33,92,165 'developers':163 'development':31,90,125 'employment':216 'empower':184 'enjoy':204 'enrich':247 'entitled':226 'entrepreneur':140 'events':235 'fee':74 'finding':215 'founder':113 'free':228 'from':105,133,206 'full':83 'full-time':82 'gap':51 'goal':43 'has':128 'he':127 'help':174 'hope':182 'human':59 'humanitarian':135 'if':267 'impact':40,156,176,221 'in':9,131,153,214,217 'inc':116,208,232 'individuals':24 'info.lewagon.com':264 'info.lewagon.com/changemaker-scholarship-program':263 'interested':251 'interview':293 'is':21,47,101,117,275 'it':58,75,95,151 'launched':5,142 'le':12,78,121,257,271 'learn':29,187 'learning':99 'leverage':168 'members':210 'mentors':211 'mentorship':205 'network':250 'new':18 'of':44,52,69,114,120,150,171,242 'official':261 'open':102 'or':218 'organizations':177,222 'over':107 'part':87 'part-time':86 'participants':104 'partnership':10 'passionate':27 'people':185 'power':170 'problems':197 'program':20,126,274 'reference':297 'remote':98 'resources':60 's':56,72,81,123,209,233,273 'said':198 'scale':178 'scarce':57 'scholars':201,223,244 'scholarship':3,8,19,46,63,145,282 'science':34,93 'scientists':166 'sector':55,157 'seira':110,199 'shortage':149 'skills':193 'social':39,54,155,175,196,220 'socious':4,115,207,231,285,290 'solutions':180 'solve':147,195 'student':71 'students':249 'successful':130,276 'support':213 'talent':152 'talented':161 'team':291 'tech4good':1,6,61,139,143 'technology':172 'that':160,245 'the':17,41,50,53,70,108,112,148,154,169,200,248,281,284,289 'their':179,260 'there':236 'these':192 'this':45,287 'through':259,283 'time':84,88 'to':28,37,48,67,77,103,137,146,173,183,186,188,194,227,230,256,270,280 'tokyo':14,80 'tools':36 'transitioning':132 'tuition':73 'ultimate':42 'up':66 'wagon':13,79,122,258,272 'we':141,158,181 'web':30,89,124,162 'website':262 'who':25 'will':64,202,212,237,246,292 'with':11 'worker':136 'world':109 'you':277,294 'your':268 'yun':111", + city: 'Tokyo', + weekly_hours_lower: null, + weekly_hours_higher: null, + commitment_hours_lower: null, + commitment_hours_higher: null, + geoname_id: null, + job_category_id: '87ec40e6-fe30-41cf-a4d7-63db2631c694', + impact_job: true, + promoted: false, + kind: 'JOB', + payment_mode: null, + identity_type: 'organizations', + identity_meta: { + id: '2bd26aa5-f745-4f12-bca7-17916161ae8b', + city: 'Tokyo, Tokyo Prefecture', + name: 'Socious', + email: 'info@socious.io', + image: 'https://storage.googleapis.com/socious-gcs/ad4ae46f5dc138d8bc63928890bc64e0.png', + hiring: true, + status: 'ACTIVE', + address: 'Nihonbashi 3-2-14-1F, Chuo Ward, Tokyo, Japan 103-0027', + country: 'JP', + mission: + 'Our mission is to give everyone the chance to make a difference.\r\n\r\nWe are a talent platform that makes impact work accessible and transparent; we build connections between purpose-driven individuals and organizations. By leveraging blockchain technology, we make social/environmental impact work traceable and reward contributions with crypto tokens.', + verified: true, + shortname: 'socious', + description: null, + wallet_address: null, + verified_impact: true, + }, + job_category: { + id: '87ec40e6-fe30-41cf-a4d7-63db2631c694', + name: 'Other', + hourly_wage_dollars: 20, + created_at: '2022-12-14T13:19:18.541708+00:00', + updated_at: '2022-12-14T13:19:18.541708+00:00', + }, + work_samples: [], + applicants: 3, + missions: 1, + saved: false, + not_interested: false, + }, + { + id: 'fbdb674a-5211-4bb1-ba30-0390776caa19', + identity_id: 'd9cbf5fa-f8b7-4e8f-a19f-276fdf8fa161', + description: + "🔭 Our mission & vision\nTransforming how the world supports those left behind, through the power of people and technology 🚀\n\nJob Description\nAt Beam, our vision is to create a more just society by building radically better services and technology for those most in need.\n\nWe've already transformed the lives of hundreds of homeless people by supporting them through training, into rewarding work and stable homes.\n\nWe've done that by crowdfunding almost £2 million from over 10,000 supporters and building genuinely ground-breaking products.\n\nWe're a wildly ambitious team, backed by some of the world's leading tech investors and led by a hugely experienced, hands-on founding team.\n\nWe're a crew of friendly, collaborative problem-solvers who live by our core values of transparency and supporting each other.\n\nWe also get to do some fun things - like go to Downing Street :)\n(https://www.linkedin.com/posts/alexstephany_socialimpact-developerlife-techforgood-activity-6759434743193878528-lN7e/)\n\nAnd we're seriously just getting started. Read more about our company culture in Beam Life on our careers page. (https://beam.org/careers)\n\nResponsibilities & tasks\nLife as a Developer at Beam\nWe're looking for someone to work closely with Julian (https://www.linkedin.com/in/juliankeenaghan/ - that's me, the guy who built Beam!) to help shape and build the future of our tools and products.\n\nYou and I would spend a lot of time pair programming, brainstorming hard problems, prototyping different ideas, throwing them away, and prototyping them again. You wouldn't be just churning through tickets in a backlog — you'd be helping to design entirely new products, figuring out what exactly we're even building and why.\n\nYou'd spend your time developing and improving existing projects, for example:\n- Building internal tools for our team to help as many people as efficiently as possible\n- An entirely new onboarding flow for our beneficiaries\n- Giving increased transparency to our supporters on the impact of their donations\n- Snazzy reporting products giving unprecedented insights for government customers\n- Optimising our products so that they are snappy and performant for all of our users\n- Check out this interview with one of Beam's Full Stack Engineers on the Beam blog (https://blog.beam.org/an-interview-with-alex-rudall-senior-full-stack-developer/)\n\nWhat tech do we use?\nOur priority is to ship maintainable, reliable systems. To date we've done that using:\n- Ruby on Rails on the back-end\n- Vue JS, Tailwind CSS and ERB for front-end\n- Heroku, AWS for hosting\n- PostgreSQL, Airtable for databases\n- RSpec, Sidekiq, Stripe, Twilio, Slack, Mailchimp\n\nSkills & qualifications\nYou should apply if:\n- You’re already a great Ruby developer, well versed in engineering best practices, including version control, test-driven development and continuous integration\n- You have at least 4+ years of engineering experience in a high-growth tech startup or leading global tech company\n- You write clean, performant and well-documented code\n- You have experience building web products and services and have an awareness of technologies across the stack\n- You care about building reliable, well-tested systems\n- You have a product mindset: you care about customer outcomes and you want to make data-informed decisions\n- You have an entrepreneurial, get things done attitude\n- You'll contribute to fostering a culture of psychological safety, inclusivity, collaboration and continuous improvement within the team through participation in retrospectives and feedback\n- You're passionate about social mobility\n\nWe have a strong preference for London-based engineers who can regularly meet the team to problem solve in person. We do hire outside of the UK in locations within +/- 3 hours of GMT.\n\nAbout the team\nWe’re a team of over 70 working from our beautiful co-working space in Shoreditch and from home. We’ve picked up an armful of awards for our work (including one from our former Queen!) We’re one of the 10 hottest startups in London, according to WIRED magazine and one of LinkedIn’s Top 15 UK Startups list for 2022. We’re also proud to be rated a top company to work for Escape the City, Tempo and The Dots.\n\nWe’re committed to hiring diversely and inclusively. You don’t need a degree to work here and we love to hear from ethnic minority candidates and/or those who’ve experienced social disadvantage. 63% of people we support are from ethnic minority backgrounds and 17% have disabilities. We believe we serve these people best when we’re a diverse and inclusive team", + project_type: 'FULL_TIME', + project_length: '6_MONTHS_OR_MORE', + payment_currency: 'GBP', + payment_range_lower: '55000', + payment_range_higher: '90000', + experience_level: 2, + created_at: '2022-11-14T15:53:02.170Z', + updated_at: '2022-11-14T15:53:02.170Z', + deleted_at: null, + status: 'ACTIVE', + payment_type: 'PAID', + payment_scheme: 'FIXED', + title: 'Full Stack Engineer (Ruby on Rails)', + expires_at: null, + country: 'gb', + skills: ['RUBY', 'RUBY-ON-RAILS', 'JAVASCRIPT', 'AWS'], + causes_tags: ['HOMELESSNESS', 'REFUGEE', 'POVERTY'], + old_id: null, + other_party_id: null, + other_party_title: null, + other_party_url: null, + remote_preference: 'HYBRID', + search_tsv: + "'/an-interview-with-alex-rudall-senior-full-stack-developer/)':365 '/careers)':180 '/in/juliankeenaghan/':201 '/posts/alexstephany_socialimpact-developerlife-techforgood-activity-6759434743193878528-ln7e/)':157 '000':84 '10':83,640 '15':655 '17':725 '2':79 '2022':660 '3':591 '4':451 '63':714 '70':604 'a':34,95,112,122,185,227,255,427,457,505,535,562,600,668,693,738 'about':167,496,510,557,595 'according':645 'across':491 'again':245 'airtable':409 'all':343 'almost':78 'already':52,426 'also':143,663 'ambitious':97 'an':303,487,524,622 'and':23,43,69,86,109,138,158,213,220,223,242,274,282,340,398,444,472,483,485,513,542,552,615,649,678,687,698,724,740 'and/or':707 'apply':422 'are':338,719 'armful':623 'as':184,296,299,301 'at':27,187,449 'attitude':529 'awards':625 'awareness':488 'away':241 'aws':405 'back':392 'back-end':391 'backed':99 'backgrounds':723 'backlog':256 'based':568 'be':249,259,666 'beam':28,172,188,209,354,361 'beam.org':179 'beam.org/careers)':178 'beautiful':608 'behind':17 'believe':729 'beneficiaries':310 'best':435,734 'better':41 'blog':362 'blog.beam.org':364 'blog.beam.org/an-interview-with-alex-rudall-senior-full-stack-developer/)':363 'brainstorming':233 'breaking':91 'build':214 'building':39,87,273,288,480,497 'built':208 'by':38,61,76,100,111,132 'can':571 'candidates':706 'care':495,509 'careers':176 'check':347 'churning':251 'city':676 'clean':470 'closely':196 'co':610 'co-working':609 'code':476 'collaboration':541 'collaborative':126 'committed':683 'company':169,467,670 'continuous':445,543 'contribute':532 'control':439 'core':134 'create':33 'crew':123 'crowdfunding':77 'css':397 'culture':170,536 'customer':511 'customers':331 'd':258,277 'data':519 'data-informed':518 'databases':411 'date':380 'decisions':521 'degree':694 'description':26 'design':262 'developer':186,430 'developing':281 'development':443 'different':237 'disabilities':727 'disadvantage':713 'diverse':739 'diversely':686 'do':146,368,582 'documented':475 'don':690 'donations':322 'done':74,383,528 'dots':680 'downing':153 'driven':442 'each':140 'efficiently':300 'end':393,403 'engineer':3 'engineering':434,454 'engineers':358,569 'entirely':263,304 'entrepreneurial':525 'erb':399 'escape':674 'ethnic':704,721 'even':272 'exactly':269 'example':287 'existing':284 'experience':455,479 'experienced':114,711 'feedback':553 'figuring':266 'flow':307 'for':45,192,286,291,308,329,342,400,406,410,565,626,659,673 'former':633 'fostering':534 'founding':118 'friendly':125 'from':81,606,616,631,703,720 'front':402 'front-end':401 'full':1,356 'fun':148 'future':216 'genuinely':88 'get':144,526 'getting':163 'giving':311,326 'global':465 'gmt':594 'go':151 'government':330 'great':428 'ground':90 'ground-breaking':89 'growth':460 'guy':206 'hands':116 'hands-on':115 'hard':234 'have':448,478,486,504,523,561,726 'hear':702 'help':211,295 'helping':260 'here':697 'heroku':404 'high':459 'high-growth':458 'hire':583 'hiring':685 'home':617 'homeless':59 'homes':71 'hosting':407 'hottest':641 'hours':592 'how':11 'hugely':113 'hundreds':57 'i':224 'ideas':238 'if':423 'impact':319 'improvement':544 'improving':283 'in':48,171,254,433,456,550,579,588,613,643 'including':437,629 'inclusive':741 'inclusively':688 'inclusivity':540 'increased':312 'informed':520 'insights':328 'integration':446 'internal':289 'interview':350 'into':66 'investors':108 'is':31,373 'job':25 'js':395 'julian':198 'just':36,162,250 'leading':106,464 'least':450 'led':110 'left':16 'life':173,183 'like':150 'linkedin':652 'list':658 'live':131 'lives':55 'll':531 'locations':589 'london':567,644 'london-based':566 'looking':191 'lot':228 'love':700 'magazine':648 'mailchimp':417 'maintainable':376 'make':517 'many':297 'me':204 'meet':573 'million':80 'mindset':507 'minority':705,722 'mission':8 'mobility':559 'more':35,166 'most':47 'need':49,692 'new':264,305 'of':21,56,58,102,124,136,217,229,320,344,353,453,489,537,585,593,602,624,638,651,715 'on':5,117,174,317,359,387,389 'onboarding':306 'one':352,630,637,650 'optimising':332 'or':463 'other':141 'our':7,29,133,168,175,218,292,309,315,333,345,371,607,627,632 'out':267,348 'outcomes':512 'outside':584 'over':82,603 'page':177 'pair':231 'participation':549 'passionate':556 'people':22,60,298,716,733 'performant':341,471 'person':580 'picked':620 'possible':302 'postgresql':408 'power':20 'practices':436 'preference':564 'priority':372 'problem':128,577 'problem-solvers':127 'problems':235 'product':506 'products':92,221,265,325,334,482 'programming':232 'projects':285 'prototyping':236,243 'proud':664 'psychological':538 'qualifications':419 'queen':634 'radically':40 'rails':6,388 'rated':667 're':94,121,160,190,271,425,555,599,636,662,682,737 'read':165 'regularly':572 'reliable':377,498 'reporting':324 'responsibilities':181 'retrospectives':551 'rewarding':67 'rspec':412 'ruby':4,386,429 's':105,203,355,653 'safety':539 'seriously':161 'serve':731 'services':42,484 'shape':212 'ship':375 'shoreditch':614 'should':421 'sidekiq':413 'skills':418 'slack':416 'snappy':339 'snazzy':323 'so':335 'social':558,712 'society':37 'solve':578 'solvers':129 'some':101,147 'someone':193 'space':612 'spend':226,278 'stable':70 'stack':2,357,493 'started':164 'startup':462 'startups':642,657 'street':154 'stripe':414 'strong':563 'support':718 'supporters':85,316 'supporting':62,139 'supports':14 'systems':378,502 't':248,691 'tailwind':396 'tasks':182 'team':98,119,293,547,575,597,601,742 'tech':107,367,461,466 'technologies':490 'technology':24,44 'tempo':677 'test':441 'test-driven':440 'tested':501 'that':75,202,336,384 'the':12,19,54,103,205,215,318,360,390,492,546,574,586,596,639,675,679 'their':321 'them':63,240,244 'these':732 'they':337 'things':149,527 'this':349 'those':15,46,708 'through':18,64,252,548 'throwing':239 'tickets':253 'time':230,280 'to':32,145,152,194,210,261,294,314,374,379,516,533,576,646,665,671,684,695,701 'tools':219,290 'top':654,669 'training':65 'transformed':53 'transforming':10 'transparency':137,313 'twilio':415 'uk':587,656 'unprecedented':327 'up':621 'use':370 'users':346 'using':385 'values':135 've':51,73,382,619,710 'versed':432 'version':438 'vision':9,30 'vue':394 'want':515 'we':50,72,93,120,142,159,189,270,369,381,560,581,598,618,635,661,681,699,717,728,730,736 'web':481 'well':431,474,500 'well-documented':473 'well-tested':499 'what':268,366 'when':735 'who':130,207,570,709 'why':275 'wildly':96 'wired':647 'with':197,351 'within':545,590 'work':68,195,628,672,696 'working':605,611 'world':13,104 'would':225 'wouldn':247 'write':469 'www.linkedin.com':156,200 'www.linkedin.com/in/juliankeenaghan/':199 'www.linkedin.com/posts/alexstephany_socialimpact-developerlife-techforgood-activity-6759434743193878528-ln7e/)':155 'years':452 'you':222,246,257,276,420,424,447,468,477,494,503,508,514,522,530,554,689 'your':279", + city: 'London', + weekly_hours_lower: null, + weekly_hours_higher: null, + commitment_hours_lower: null, + commitment_hours_higher: null, + geoname_id: null, + job_category_id: '87ec40e6-fe30-41cf-a4d7-63db2631c694', + impact_job: true, + promoted: false, + kind: 'JOB', + payment_mode: null, + identity_type: 'organizations', + identity_meta: { + id: 'd9cbf5fa-f8b7-4e8f-a19f-276fdf8fa161', + city: 'London', + name: 'Beam', + email: 'client.jobs@socious.io', + image: 'https://storage.googleapis.com/socious-gcs/38d60a5b80f992bfad6f0d1319821d95.jpg', + hiring: false, + status: 'ACTIVE', + address: 'WeWork, Senna Building, Gorsuch Pl', + country: 'gb', + mission: + 'In 2016, our founder Alex Stephany became friends with a homeless man who would sit outside his local train station. Alex would stop to chat with him and buy him coffee. The man had been out of work longer than he could remember.\n\nAs the months passed, Alex became determined to find ways to help the man leave homelessness for good. But he knew he couldn’t do that on his own. That’s when Alex had the idea to crowdfund for homeless people.\n\nThrough the power of people and technology, we transform how the world supports those left behind.', + verified: false, + shortname: '-beam9317', + description: null, + wallet_address: null, + verified_impact: false, + }, + job_category: { + id: '87ec40e6-fe30-41cf-a4d7-63db2631c694', + name: 'Other', + hourly_wage_dollars: 20, + created_at: '2022-12-14T13:19:18.541708+00:00', + updated_at: '2022-12-14T13:19:18.541708+00:00', + }, + work_samples: [], + applicants: 2, + missions: 0, + saved: false, + not_interested: false, + }, + ], +}; + +export const SEARCH_RESULT_DETAIL = { + id: 'a3b6c9eb-a974-4fa8-8816-f320ba22fc27', + identity_id: '2bd26aa5-f745-4f12-bca7-17916161ae8b', + description: + "**About Socious:**\r\n\r\nSocious is a talent marketplace that makes impact work accessible and transparent; we build connections between purpose-driven individuals and impact organizations through AI matching. By leveraging blockchain technology, we make social/environmental impact work traceable and reward contributions.\r\n\r\nHaving secured funding, we're in expansion mode. Join us in this journey!\r\n\r\n**Role: Business Development Manager**\r\n\r\n**Key Responsibilities:**\r\n\r\n- **Client Acquisition (Impact Organizations)**:\r\n - Proactively identify, engage, and onboard impact organizations to the Socious talent marketplace, ensuring a steady stream of new clients.\r\n - Build and deepen relationships with these organizations, addressing their specific needs and ensuring they recognize the value of the Socious platform.\r\n - Formulate and implement a strategy for large-scale onboarding of impact organizations, ensuring a streamlined and efficient process.\r\n- **Client Relationship Management**:\r\n - Monitor client satisfaction, proactively address concerns, and gather feedback to ensure long-term retention and growth.\r\n - Represent Socious at industry events, conferences, and networking sessions, positioning the platform as the premier solution for impact work matchmaking.\r\n - Stay updated on industry trends, competitor strategies, and the broader social/environmental impact landscape to better serve and advise clients.\r\n\r\n**Skills/Experience:**\r\n\r\n- A strong desire to make a social/environmental impact. Prior experience in this realm is a plus.\r\n- Experience in a B2B or B2C sales, business development, or account management role.\r\n- Exceptional communication and relationship-building skills.\r\n- Degree in Business, Marketing, or a related discipline is valued.\r\n- Ability to understand and articulate technical offerings to a non-technical audience.\r\n- Self-driven, results-oriented with a positive outlook and a clear focus on high-quality client service.\r\n- Strong negotiation skills with a consultative approach to business development.\r\n- Proficiency in using CRM tools and data analytics to track client engagement and success metrics.\r\n\r\n**What's in it for you?**\r\n\r\n- Make a lasting impact on the lives of many and on the world.\r\n- Take part in shaping the future by working with the most advanced and pioneering technologies in the field.\r\n- Collaborate with and learn from passionate, diverse, and high-performing colleagues.\r\n- Achieve the perfect work-life balance with flexible hours and unlimited paid leave.\r\n- Thrive in a remote-first setting with occasional team get-togethers.\r\n- Commit to your growth with ongoing learning and development opportunities.\r\n- Navigate a vibrant, fast-paced work setting.\r\n- Take the lead with autonomy in decision-making.\r\n- Relish a culture of trust, transparency, and unwavering support.\r\n- Become a member of a team that is deeply committed to fostering a socially responsible and ecologically sustainable work environment.\r\n- Enjoy a competitive compensation: USD 50k - 90k annually + token incentives.\r\n\r\n**Socious Referral Program:**\r\n\r\nKnow someone just right for Socious? We highly value word-of-mouth recommendations. Successfully refer a candidate, and enjoy a $1,000 reward as a token of our gratitude. Just share this job link!\r\n\r\nYour support in broadening our talent search is invaluable. Thank you.\r\n\r\n**Our mission and values:** \r\n\r\n**Mission:** Give everyone the chance to make a difference. \r\n\r\n**Our values:** \r\n\r\n- Diversity, inclusion, and belonging.\r\n- Life first, work second.\r\n- High performance for high impact.\r\n- Autonomy and accountability.\r\n- Candor, collaboration, and play.", + project_type: 'FULL_TIME', + project_length: '6_MONTHS_OR_MORE', + payment_currency: 'USD', + payment_range_lower: '50000', + payment_range_higher: '90000', + experience_level: 2, + created_at: '2024-04-19T00:22:54.641Z', + updated_at: '2024-04-30T04:34:00.759Z', + deleted_at: null, + status: 'ACTIVE', + payment_type: 'PAID', + payment_scheme: 'FIXED', + title: 'Business Development Manager', + expires_at: null, + country: 'JP', + skills: ['SALES', 'SALES_MANAGEMENT', 'BUSINESS_DEVELOPMENT'], + causes_tags: ['SOCIAL'], + old_id: null, + other_party_id: null, + other_party_title: null, + other_party_url: null, + remote_preference: 'HYBRID', + search_tsv: + "'000':458 '1':457 '50k':428 '90k':429 'a':8,81,111,122,187,192,201,205,228,241,253,257,270,298,356,378,395,404,407,415,424,452,456,461,493 'ability':233 'about':4 'accessible':15 'account':213 'accountability':512 'achieve':340 'acquisition':65 'address':134 'addressing':94 'advanced':321 'advise':184 'ai':30 'analytics':283 'and':16,26,42,71,88,98,109,124,136,145,153,174,183,218,236,256,281,288,306,322,330,335,350,374,400,418,454,484,499,511,515 'annually':430 'approach':272 'articulate':237 'as':159,460 'at':149 'audience':245 'autonomy':389,510 'b2b':206 'b2c':208 'balance':346 'become':403 'belonging':500 'better':181 'between':21 'blockchain':34 'broadening':474 'broader':176 'build':19,87 'building':221 'business':1,59,210,225,274 'by':32,316 'candidate':453 'candor':513 'chance':490 'clear':258 'client':64,127,131,264,286 'clients':86,185 'collaborate':328 'collaboration':514 'colleagues':339 'commit':367 'committed':412 'communication':217 'compensation':426 'competitive':425 'competitor':172 'concerns':135 'conferences':152 'connections':20 'consultative':271 'contributions':44 'crm':279 'culture':396 'data':282 'decision':392 'decision-making':391 'deepen':89 'deeply':411 'degree':223 'desire':189 'development':2,60,211,275,375 'difference':494 'discipline':230 'diverse':334 'diversity':497 'driven':24,248 'ecologically':419 'efficient':125 'engage':70 'engagement':287 'enjoy':423,455 'ensure':140 'ensuring':80,99,121 'environment':422 'events':151 'everyone':488 'exceptional':216 'expansion':51 'experience':196,203 'fast':381 'fast-paced':380 'feedback':138 'field':327 'first':359,502 'flexible':348 'focus':259 'for':113,163,295,440,507 'formulate':108 'fostering':414 'from':332 'funding':47 'future':315 'gather':137 'get':365 'get-togethers':364 'give':487 'gratitude':465 'growth':146,370 'having':45 'high':262,337,505,508 'high-performing':336 'high-quality':261 'highly':443 'hours':349 'identify':69 'impact':13,27,39,66,73,119,164,178,194,300,509 'implement':110 'in':50,55,197,204,224,277,293,312,325,355,390,473 'incentives':432 'inclusion':498 'individuals':25 'industry':150,170 'invaluable':479 'is':7,200,231,410,478 'it':294 'job':469 'join':53 'journey':57 'just':438,466 'key':62 'know':436 'landscape':179 'large':115 'large-scale':114 'lasting':299 'lead':387 'learn':331 'learning':373 'leave':353 'leveraging':33 'life':345,501 'link':470 'lives':303 'long':142 'long-term':141 'make':37,191,297,492 'makes':12 'making':393 'management':129,214 'manager':3,61 'many':305 'marketing':226 'marketplace':10,79 'matching':31 'matchmaking':166 'member':405 'metrics':290 'mission':483,486 'mode':52 'monitor':130 'most':320 'mouth':448 'navigate':377 'needs':97 'negotiation':267 'networking':154 'new':85 'non':243 'non-technical':242 'occasional':362 'of':84,104,118,304,397,406,447,463 'offerings':239 'on':169,260,301,307 'onboard':72 'onboarding':117 'ongoing':372 'opportunities':376 'or':207,212,227 'organizations':28,67,74,93,120 'oriented':251 'our':464,475,482,495 'outlook':255 'paced':382 'paid':352 'part':311 'passionate':333 'perfect':342 'performance':506 'performing':338 'pioneering':323 'platform':107,158 'play':516 'plus':202 'positioning':156 'positive':254 'premier':161 'prior':195 'proactively':68,133 'process':126 'proficiency':276 'program':435 'purpose':23 'purpose-driven':22 'quality':263 're':49 'realm':199 'recognize':101 'recommendations':449 'refer':451 'referral':434 'related':229 'relationship':128,220 'relationship-building':219 'relationships':90 'relish':394 'remote':358 'remote-first':357 'represent':147 'responsibilities':63 'responsible':417 'results':250 'results-oriented':249 'retention':144 'reward':43,459 'right':439 'role':58,215 's':292 'sales':209 'satisfaction':132 'scale':116 'search':477 'second':504 'secured':46 'self':247 'self-driven':246 'serve':182 'service':265 'sessions':155 'setting':360,384 'shaping':313 'share':467 'skills':222,268 'skills/experience':186 'social/environmental':38,177,193 'socially':416 'socious':5,6,77,106,148,433,441 'solution':162 'someone':437 'specific':96 'stay':167 'steady':82 'strategies':173 'strategy':112 'stream':83 'streamlined':123 'strong':188,266 'success':289 'successfully':450 'support':402,472 'sustainable':420 'take':310,385 'talent':9,78,476 'team':363,408 'technical':238,244 'technologies':324 'technology':35 'term':143 'thank':480 'that':11,409 'the':76,102,105,157,160,175,302,308,314,319,326,341,386,489 'their':95 'these':92 'they':100 'this':56,198,468 'thrive':354 'through':29 'to':75,139,180,190,234,240,273,284,368,413,491 'togethers':366 'token':431,462 'tools':280 'traceable':41 'track':285 'transparency':399 'transparent':17 'trends':171 'trust':398 'understand':235 'unlimited':351 'unwavering':401 'updated':168 'us':54 'usd':427 'using':278 'value':103,444 'valued':232 'values':485,496 'vibrant':379 'we':18,36,48,442 'what':291 'with':91,252,269,318,329,347,361,371,388 'word':446 'word-of-mouth':445 'work':14,40,165,344,383,421,503 'work-life':343 'working':317 'world':309 'you':296,481 'your':369,471", + city: 'Tokyo', + weekly_hours_lower: null, + weekly_hours_higher: null, + commitment_hours_lower: null, + commitment_hours_higher: null, + geoname_id: null, + job_category_id: '1e76aff6-f2cb-48a0-bb18-4c9e9d42c88e', + impact_job: true, + promoted: true, + kind: 'JOB', + payment_mode: null, + identity_type: 'organizations', + identity_meta: { + id: '2bd26aa5-f745-4f12-bca7-17916161ae8b', + city: 'Tokyo, Tokyo Prefecture', + name: 'Socious', + email: 'info@socious.io', + image: 'https://storage.googleapis.com/socious-gcs/ad4ae46f5dc138d8bc63928890bc64e0.png', + hiring: true, + status: 'ACTIVE', + address: 'Nihonbashi 3-2-14-1F, Chuo Ward, Tokyo, Japan 103-0027', + country: 'JP', + mission: + 'Our mission is to give everyone the chance to make a difference.\r\n\r\nWe are a talent platform that makes impact work accessible and transparent; we build connections between purpose-driven individuals and organizations. By leveraging blockchain technology, we make social/environmental impact work traceable and reward contributions with crypto tokens.', + verified: true, + shortname: 'socious', + description: null, + wallet_address: null, + verified_impact: true, + }, + job_category: { + id: '1e76aff6-f2cb-48a0-bb18-4c9e9d42c88e', + name: 'Sales', + hourly_wage_dollars: 20, + created_at: '2023-01-26T15:00:00+00:00', + updated_at: '2023-01-26T15:00:00+00:00', + }, + applicants: 11, + missions: 1, + applied: false, + applied_date: null, + saved: false, + not_interested: false, +}; + +export const ORGS_DETAIL = { + id: '2bd26aa5-f745-4f12-bca7-17916161ae8b', + name: 'Socious', + bio: 'Socious is a talent marketplace connecting purpose-driven talent with their dream jobs.', + description: null, + email: 'info@socious.io', + phone: '07074906558', + city: 'Tokyo, Tokyo Prefecture', + type: 'SOCIAL', + address: 'Nihonbashi 3-2-14-1F, Chuo Ward, Tokyo, Japan 103-0027', + website: 'https://socious.io', + created_at: '2021-08-29T10:43:54.000Z', + updated_at: '2022-02-17T11:18:37.000Z', + social_causes: ['SOCIAL', 'DECENT_WORK', 'EDUCATION', 'POVERTY', 'SUSTAINABILITY'], + followers: 167, + followings: 38, + country: 'JP', + wallet_address: null, + impact_points: 0, + mission: + 'Our mission is to give everyone the chance to make a difference.\r\n\r\nWe are a talent platform that makes impact work accessible and transparent; we build connections between purpose-driven individuals and organizations. By leveraging blockchain technology, we make social/environmental impact work traceable and reward contributions with crypto tokens.', + culture: + 'Diversity, Inclusion and Belonging\r\n\r\nWe want build a more inclusive world and it starts from building an inclusive company.\r\n\r\nLife First, Work Second\r\n\r\nWe believe that family and friends are more important than work. If there is a conflict between life and work, we should always prioritize life.\r\n\r\nHigh Performance for High Social Impact\r\n\r\nOur goal is to maximize social impact, not shareholder value or profit. Our social and financial returns are generally aligned, but if there is a conflict, we prioritize social returns.\r\n\r\nAutonomy and Accountability\r\n\r\nEach Socious member enjoys a high level of autonomy is trusted to do the right thing. They are also accountable for the decisions they make.\r\n\r\nCandor and Collaboration\r\n\r\nBeing honest is better than being nice.', + image: { + id: '53e51908-19a2-4579-9566-5842f01531eb', + identity_id: '2bd26aa5-f745-4f12-bca7-17916161ae8b', + filename: 'Logomark_3 2.png', + url: 'https://storage.googleapis.com/socious-gcs/ad4ae46f5dc138d8bc63928890bc64e0.png', + created_at: '2023-04-06T08:49:28.777155+00:00', + }, + cover_image: { + id: '091193bc-c34b-43f3-89fe-1db4e72d9db2', + identity_id: '2bd26aa5-f745-4f12-bca7-17916161ae8b', + filename: 'YS-1580189.jpg', + url: 'https://storage.googleapis.com/socious-gcs/a2eba401bef6cbbaa66ca66eac1d8da1.jpg', + created_at: '2023-04-06T08:50:00.412141+00:00', + }, + mobile_country_code: '+81', + created_by: null, + shortname: 'socious', + old_id: 33, + status: 'ACTIVE', + search_tsv: + "'-0027':32 '-1':25 '-14':24 '-2':23 '103':31 '3':22 'access':54 'account':169,189 'align':156 'also':188 'alway':128 'autonomi':167,178 'believ':107 'belong':86 'better':201 'blockchain':69 'build':58,89,98 'candor':195 'chanc':40 'chuo':27 'collabor':197 'compani':101 'conflict':121,162 'connect':9,59 'contribut':79 'crypto':81 'decis':192 'differ':44 'divers':83 'dream':16 'driven':12,63 'enjoy':173 'everyon':38 'f':26 'famili':109 'financi':152 'first':103 'friend':111 'general':155 'give':37 'goal':138 'high':131,134,175 'honest':199 'impact':52,74,136,143 'import':114 'inclus':84,92,100 'individu':64 'info@socious.io':1 'japan':30 'job':17 'level':176 'leverag':68 'life':102,123,130 'make':42,51,72,194 'marketplac':8 'maxim':141 'member':172 'mission':34 'nice':204 'nihonbashi':21 'organ':66 'perform':132 'platform':49 'prefectur':20 'priorit':129,164 'profit':148 'purpos':11,62 'purpose-driven':10,61 'return':153,166 'reward':78 'right':184 'second':105 'sharehold':145 'social':135,142,150,165 'social/environmental':73 'socious':2,3,4,171 'start':96 'talent':7,13,48 'technolog':70 'thing':185 'token':82 'tokyo':18,19,29 'traceabl':76 'transpar':56 'trust':180 'valu':146 'want':88 'ward':28 'work':53,75,104,116,125 'world':93", + other_party_id: null, + other_party_title: null, + other_party_url: null, + geoname_id: 1850147, + verified_impact: true, + hiring: true, + size: null, + industry: null, + did: 'did:prism:b067f28d0085c93e05b34f5e38d920a459053a044313de92ae3eadb6432cfd11', + verified: true, + impact_detected: false, + following: false, + follower: false, + connection_status: null, + connection_id: null, + benefits: null, + recommendations: null, + connections: 23, +}; + +export const SEARCH_RESULT = { + page: 1, + limit: 10, + total_count: 33, + items: [ + { + id: 'a3b6c9eb-a974-4fa8-8816-f320ba22fc27', + identity_id: '2bd26aa5-f745-4f12-bca7-17916161ae8b', + description: + "**About Socious:**\r\n\r\nSocious is a talent marketplace that makes impact work accessible and transparent; we build connections between purpose-driven individuals and impact organizations through AI matching. By leveraging blockchain technology, we make social/environmental impact work traceable and reward contributions.\r\n\r\nHaving secured funding, we're in expansion mode. Join us in this journey!\r\n\r\n**Role: Business Development Manager**\r\n\r\n**Key Responsibilities:**\r\n\r\n- **Client Acquisition (Impact Organizations)**:\r\n - Proactively identify, engage, and onboard impact organizations to the Socious talent marketplace, ensuring a steady stream of new clients.\r\n - Build and deepen relationships with these organizations, addressing their specific needs and ensuring they recognize the value of the Socious platform.\r\n - Formulate and implement a strategy for large-scale onboarding of impact organizations, ensuring a streamlined and efficient process.\r\n- **Client Relationship Management**:\r\n - Monitor client satisfaction, proactively address concerns, and gather feedback to ensure long-term retention and growth.\r\n - Represent Socious at industry events, conferences, and networking sessions, positioning the platform as the premier solution for impact work matchmaking.\r\n - Stay updated on industry trends, competitor strategies, and the broader social/environmental impact landscape to better serve and advise clients.\r\n\r\n**Skills/Experience:**\r\n\r\n- A strong desire to make a social/environmental impact. Prior experience in this realm is a plus.\r\n- Experience in a B2B or B2C sales, business development, or account management role.\r\n- Exceptional communication and relationship-building skills.\r\n- Degree in Business, Marketing, or a related discipline is valued.\r\n- Ability to understand and articulate technical offerings to a non-technical audience.\r\n- Self-driven, results-oriented with a positive outlook and a clear focus on high-quality client service.\r\n- Strong negotiation skills with a consultative approach to business development.\r\n- Proficiency in using CRM tools and data analytics to track client engagement and success metrics.\r\n\r\n**What's in it for you?**\r\n\r\n- Make a lasting impact on the lives of many and on the world.\r\n- Take part in shaping the future by working with the most advanced and pioneering technologies in the field.\r\n- Collaborate with and learn from passionate, diverse, and high-performing colleagues.\r\n- Achieve the perfect work-life balance with flexible hours and unlimited paid leave.\r\n- Thrive in a remote-first setting with occasional team get-togethers.\r\n- Commit to your growth with ongoing learning and development opportunities.\r\n- Navigate a vibrant, fast-paced work setting.\r\n- Take the lead with autonomy in decision-making.\r\n- Relish a culture of trust, transparency, and unwavering support.\r\n- Become a member of a team that is deeply committed to fostering a socially responsible and ecologically sustainable work environment.\r\n- Enjoy a competitive compensation: USD 50k - 90k annually + token incentives.\r\n\r\n**Socious Referral Program:**\r\n\r\nKnow someone just right for Socious? We highly value word-of-mouth recommendations. Successfully refer a candidate, and enjoy a $1,000 reward as a token of our gratitude. Just share this job link!\r\n\r\nYour support in broadening our talent search is invaluable. Thank you.\r\n\r\n**Our mission and values:** \r\n\r\n**Mission:** Give everyone the chance to make a difference. \r\n\r\n**Our values:** \r\n\r\n- Diversity, inclusion, and belonging.\r\n- Life first, work second.\r\n- High performance for high impact.\r\n- Autonomy and accountability.\r\n- Candor, collaboration, and play.", + project_type: 'FULL_TIME', + project_length: '6_MONTHS_OR_MORE', + payment_currency: 'USD', + payment_range_lower: '50000', + payment_range_higher: '90000', + experience_level: 2, + created_at: '2024-04-19T00:22:54.641Z', + updated_at: '2024-04-30T04:34:00.759Z', + deleted_at: null, + status: 'ACTIVE', + payment_type: 'PAID', + payment_scheme: 'FIXED', + title: 'Business Development Manager', + expires_at: null, + country: 'JP', + skills: ['SALES', 'SALES_MANAGEMENT', 'BUSINESS_DEVELOPMENT'], + causes_tags: ['SOCIAL'], + old_id: null, + other_party_id: null, + other_party_title: null, + other_party_url: null, + remote_preference: 'HYBRID', + search_tsv: + "'000':458 '1':457 '50k':428 '90k':429 'a':8,81,111,122,187,192,201,205,228,241,253,257,270,298,356,378,395,404,407,415,424,452,456,461,493 'ability':233 'about':4 'accessible':15 'account':213 'accountability':512 'achieve':340 'acquisition':65 'address':134 'addressing':94 'advanced':321 'advise':184 'ai':30 'analytics':283 'and':16,26,42,71,88,98,109,124,136,145,153,174,183,218,236,256,281,288,306,322,330,335,350,374,400,418,454,484,499,511,515 'annually':430 'approach':272 'articulate':237 'as':159,460 'at':149 'audience':245 'autonomy':389,510 'b2b':206 'b2c':208 'balance':346 'become':403 'belonging':500 'better':181 'between':21 'blockchain':34 'broadening':474 'broader':176 'build':19,87 'building':221 'business':1,59,210,225,274 'by':32,316 'candidate':453 'candor':513 'chance':490 'clear':258 'client':64,127,131,264,286 'clients':86,185 'collaborate':328 'collaboration':514 'colleagues':339 'commit':367 'committed':412 'communication':217 'compensation':426 'competitive':425 'competitor':172 'concerns':135 'conferences':152 'connections':20 'consultative':271 'contributions':44 'crm':279 'culture':396 'data':282 'decision':392 'decision-making':391 'deepen':89 'deeply':411 'degree':223 'desire':189 'development':2,60,211,275,375 'difference':494 'discipline':230 'diverse':334 'diversity':497 'driven':24,248 'ecologically':419 'efficient':125 'engage':70 'engagement':287 'enjoy':423,455 'ensure':140 'ensuring':80,99,121 'environment':422 'events':151 'everyone':488 'exceptional':216 'expansion':51 'experience':196,203 'fast':381 'fast-paced':380 'feedback':138 'field':327 'first':359,502 'flexible':348 'focus':259 'for':113,163,295,440,507 'formulate':108 'fostering':414 'from':332 'funding':47 'future':315 'gather':137 'get':365 'get-togethers':364 'give':487 'gratitude':465 'growth':146,370 'having':45 'high':262,337,505,508 'high-performing':336 'high-quality':261 'highly':443 'hours':349 'identify':69 'impact':13,27,39,66,73,119,164,178,194,300,509 'implement':110 'in':50,55,197,204,224,277,293,312,325,355,390,473 'incentives':432 'inclusion':498 'individuals':25 'industry':150,170 'invaluable':479 'is':7,200,231,410,478 'it':294 'job':469 'join':53 'journey':57 'just':438,466 'key':62 'know':436 'landscape':179 'large':115 'large-scale':114 'lasting':299 'lead':387 'learn':331 'learning':373 'leave':353 'leveraging':33 'life':345,501 'link':470 'lives':303 'long':142 'long-term':141 'make':37,191,297,492 'makes':12 'making':393 'management':129,214 'manager':3,61 'many':305 'marketing':226 'marketplace':10,79 'matching':31 'matchmaking':166 'member':405 'metrics':290 'mission':483,486 'mode':52 'monitor':130 'most':320 'mouth':448 'navigate':377 'needs':97 'negotiation':267 'networking':154 'new':85 'non':243 'non-technical':242 'occasional':362 'of':84,104,118,304,397,406,447,463 'offerings':239 'on':169,260,301,307 'onboard':72 'onboarding':117 'ongoing':372 'opportunities':376 'or':207,212,227 'organizations':28,67,74,93,120 'oriented':251 'our':464,475,482,495 'outlook':255 'paced':382 'paid':352 'part':311 'passionate':333 'perfect':342 'performance':506 'performing':338 'pioneering':323 'platform':107,158 'play':516 'plus':202 'positioning':156 'positive':254 'premier':161 'prior':195 'proactively':68,133 'process':126 'proficiency':276 'program':435 'purpose':23 'purpose-driven':22 'quality':263 're':49 'realm':199 'recognize':101 'recommendations':449 'refer':451 'referral':434 'related':229 'relationship':128,220 'relationship-building':219 'relationships':90 'relish':394 'remote':358 'remote-first':357 'represent':147 'responsibilities':63 'responsible':417 'results':250 'results-oriented':249 'retention':144 'reward':43,459 'right':439 'role':58,215 's':292 'sales':209 'satisfaction':132 'scale':116 'search':477 'second':504 'secured':46 'self':247 'self-driven':246 'serve':182 'service':265 'sessions':155 'setting':360,384 'shaping':313 'share':467 'skills':222,268 'skills/experience':186 'social/environmental':38,177,193 'socially':416 'socious':5,6,77,106,148,433,441 'solution':162 'someone':437 'specific':96 'stay':167 'steady':82 'strategies':173 'strategy':112 'stream':83 'streamlined':123 'strong':188,266 'success':289 'successfully':450 'support':402,472 'sustainable':420 'take':310,385 'talent':9,78,476 'team':363,408 'technical':238,244 'technologies':324 'technology':35 'term':143 'thank':480 'that':11,409 'the':76,102,105,157,160,175,302,308,314,319,326,341,386,489 'their':95 'these':92 'they':100 'this':56,198,468 'thrive':354 'through':29 'to':75,139,180,190,234,240,273,284,368,413,491 'togethers':366 'token':431,462 'tools':280 'traceable':41 'track':285 'transparency':399 'transparent':17 'trends':171 'trust':398 'understand':235 'unlimited':351 'unwavering':401 'updated':168 'us':54 'usd':427 'using':278 'value':103,444 'valued':232 'values':485,496 'vibrant':379 'we':18,36,48,442 'what':291 'with':91,252,269,318,329,347,361,371,388 'word':446 'word-of-mouth':445 'work':14,40,165,344,383,421,503 'work-life':343 'working':317 'world':309 'you':296,481 'your':369,471", + city: 'Tokyo', + weekly_hours_lower: null, + weekly_hours_higher: null, + commitment_hours_lower: null, + commitment_hours_higher: null, + geoname_id: null, + job_category_id: '1e76aff6-f2cb-48a0-bb18-4c9e9d42c88e', + impact_job: true, + promoted: true, + kind: 'JOB', + payment_mode: null, + identity_type: 'organizations', + identity_meta: { + id: '2bd26aa5-f745-4f12-bca7-17916161ae8b', + city: 'Tokyo, Tokyo Prefecture', + name: 'Socious', + email: 'info@socious.io', + image: 'https://storage.googleapis.com/socious-gcs/ad4ae46f5dc138d8bc63928890bc64e0.png', + hiring: true, + status: 'ACTIVE', + address: 'Nihonbashi 3-2-14-1F, Chuo Ward, Tokyo, Japan 103-0027', + country: 'JP', + mission: + 'Our mission is to give everyone the chance to make a difference.\r\n\r\nWe are a talent platform that makes impact work accessible and transparent; we build connections between purpose-driven individuals and organizations. By leveraging blockchain technology, we make social/environmental impact work traceable and reward contributions with crypto tokens.', + verified: true, + shortname: 'socious', + description: null, + wallet_address: null, + verified_impact: true, + }, + job_category: { + id: '1e76aff6-f2cb-48a0-bb18-4c9e9d42c88e', + name: 'Sales', + hourly_wage_dollars: 20, + created_at: '2023-01-26T15:00:00+00:00', + updated_at: '2023-01-26T15:00:00+00:00', + }, + work_samples: [], + applicants: 11, + missions: 1, + saved: false, + not_interested: false, + }, + { + id: '722d1690-1f05-45de-af58-bfd6be52bdf7', + identity_id: '2bd26aa5-f745-4f12-bca7-17916161ae8b', + description: + "**About Socious:**\r\n\r\nSocious is a talent marketplace that makes impact work accessible and transparent; we build connections between purpose-driven individuals and impact organizations through AI matching. By leveraging blockchain technology, we make social/environmental impact work traceable and reward contributions.\r\n\r\nHaving secured funding, we're in expansion mode. Join us in this journey!\r\n\r\n**Key Responsibilities:**\r\n\r\n- **Client Acquisition (Impact Organizations)**:\r\n - Proactively identify, engage, and onboard impact organizations to the Socious talent marketplace, ensuring a steady stream of new clients.\r\n - Build and deepen relationships with these organizations, addressing their specific needs and ensuring they recognize the value of the Socious platform.\r\n - Formulate and implement a strategy for large-scale onboarding of impact organizations, ensuring a streamlined and efficient process.\r\n- **Matchmaking**:\r\n - Actively facilitate matches between the enrolled impact organizations and purpose-driven talent available on the platform.\r\n - Understand the unique requirements of each party to ensure successful and valuable matches.\r\n - Collaborate with the tech team to continuously refine the matchmaking process and enhance platform capabilities for better client outcomes.\r\n- **Client Relationship Management**:\r\n - Monitor client satisfaction, proactively address concerns, and gather feedback to ensure long-term retention and growth.\r\n - Represent Socious at industry events, conferences, and networking sessions, positioning the platform as the premier solution for impact work matchmaking.\r\n - Stay updated on industry trends, competitor strategies, and the broader social/environmental impact landscape to better serve and advise clients.\r\n\r\n**Skills/Experience:**\r\n\r\n- A strong desire to make a social/environmental impact. Prior experience in this realm is a plus.\r\n- Experience in a B2B or B2C sales, business development, or account management role.\r\n- Exceptional communication and relationship-building skills.\r\n- Degree in Business, Marketing, or a related discipline is valued.\r\n- Ability to understand and articulate technical offerings to a non-technical audience.\r\n- Self-driven, results-oriented with a positive outlook and a clear focus on high-quality client service.\r\n- Strong negotiation skills with a consultative approach to business development.\r\n- Proficiency in using CRM tools and data analytics to track client engagement and success metrics.\r\n\r\n**What's in it for you?**\r\n\r\n- Make a lasting impact on the lives of many and on the world.\r\n- Take part in shaping the future by working with the most advanced and pioneering technologies in the field.\r\n- Collaborate with and learn from passionate, diverse, and high-performing colleagues.\r\n- Achieve the perfect work-life balance with flexible hours and unlimited paid leave.\r\n- Thrive in a remote-first, hybrid setting with occasional team get-togethers.\r\n- Commit to your growth with ongoing learning and development opportunities.\r\n- Navigate a vibrant, fast-paced work setting.\r\n- Take the lead with autonomy in decision-making.\r\n- Relish a culture of trust, transparency, and unwavering support.\r\n- Become a member of a team that is deeply committed to fostering a socially responsible and ecologically sustainable work environment.\r\n- Enjoy a competitive compensation: USD 60k - 100k annually + token incentives.\r\n\r\n**Socious Referral Program:**\r\n\r\nKnow someone just right for Socious? We highly value word-of-mouth recommendations. Successfully refer a candidate, and enjoy a $1,000 reward as a token of our gratitude. Just share this job link!\r\n\r\nYour support in broadening our talent search is invaluable. Thank you.\r\n\r\n**Our mission and values:** \r\n\r\n**Mission:** Give everyone the chance to make a difference. \r\n\r\n**Our values:** \r\n\r\n- Diversity, inclusion, and belonging.\r\n- Life first, work second.\r\n- High performance for high impact.\r\n- Autonomy and accountability.\r\n- Candor, collaboration, and play. ", + project_type: 'FULL_TIME', + project_length: '6_MONTHS_OR_MORE', + payment_currency: 'USD', + payment_range_lower: '60000', + payment_range_higher: '100000', + experience_level: 2, + created_at: '2023-08-27T17:14:36.923Z', + updated_at: '2024-02-11T00:33:19.336Z', + deleted_at: null, + status: 'ACTIVE', + payment_type: 'PAID', + payment_scheme: 'FIXED', + title: 'Business Development/Client Success Manager', + expires_at: null, + country: 'JP', + skills: ['SALES', 'SALES_MANAGEMENT', 'STRATEGIC_PARTNERSHIPS', 'CRM', 'MARKETING', 'HUMAN_RESOURCES'], + causes_tags: ['SOCIAL'], + old_id: null, + other_party_id: null, + other_party_title: null, + other_party_url: null, + remote_preference: 'HYBRID', + search_tsv: + "'000':506 '1':505 '100k':477 '60k':476 'a':9,78,108,119,234,239,248,252,275,288,300,304,317,345,403,426,443,452,455,463,472,500,504,509,541 'ability':280 'about':5 'accessible':16 'account':260 'accountability':560 'achieve':387 'acquisition':62 'actively':125 'address':181 'addressing':91 'advanced':368 'advise':231 'ai':31 'analytics':330 'and':17,27,43,68,85,95,106,121,133,152,166,183,192,200,221,230,265,283,303,328,335,353,369,377,382,397,422,448,466,502,532,547,559,563 'annually':478 'approach':319 'articulate':284 'as':206,508 'at':196 'audience':292 'autonomy':437,558 'available':138 'b2b':253 'b2c':255 'balance':393 'become':451 'belonging':548 'better':171,228 'between':22,128 'blockchain':35 'broadening':522 'broader':223 'build':20,84 'building':268 'business':1,257,272,321 'by':33,363 'candidate':501 'candor':561 'capabilities':169 'chance':538 'clear':305 'client':61,172,174,178,311,333 'clients':83,232 'collaborate':155,375 'collaboration':562 'colleagues':386 'commit':415 'committed':460 'communication':264 'compensation':474 'competitive':473 'competitor':219 'concerns':182 'conferences':199 'connections':21 'consultative':318 'continuously':161 'contributions':45 'crm':326 'culture':444 'data':329 'decision':440 'decision-making':439 'deepen':86 'deeply':459 'degree':270 'desire':236 'development':258,322,423 'development/client':2 'difference':542 'discipline':277 'diverse':381 'diversity':545 'driven':25,136,295 'each':147 'ecologically':467 'efficient':122 'engage':67 'engagement':334 'enhance':167 'enjoy':471,503 'enrolled':130 'ensure':150,187 'ensuring':77,96,118 'environment':470 'events':198 'everyone':536 'exceptional':263 'expansion':52 'experience':243,250 'facilitate':126 'fast':429 'fast-paced':428 'feedback':185 'field':374 'first':406,550 'flexible':395 'focus':306 'for':110,170,210,342,488,555 'formulate':105 'fostering':462 'from':379 'funding':48 'future':362 'gather':184 'get':413 'get-togethers':412 'give':535 'gratitude':513 'growth':193,418 'having':46 'high':309,384,553,556 'high-performing':383 'high-quality':308 'highly':491 'hours':396 'hybrid':407 'identify':66 'impact':14,28,40,63,70,116,131,211,225,241,347,557 'implement':107 'in':51,56,244,251,271,324,340,359,372,402,438,521 'incentives':480 'inclusion':546 'individuals':26 'industry':197,217 'invaluable':527 'is':8,247,278,458,526 'it':341 'job':517 'join':54 'journey':58 'just':486,514 'key':59 'know':484 'landscape':226 'large':112 'large-scale':111 'lasting':346 'lead':435 'learn':378 'learning':421 'leave':400 'leveraging':34 'life':392,549 'link':518 'lives':350 'long':189 'long-term':188 'make':38,238,344,540 'makes':13 'making':441 'management':176,261 'manager':4 'many':352 'marketing':273 'marketplace':11,76 'matches':127,154 'matching':32 'matchmaking':124,164,213 'member':453 'metrics':337 'mission':531,534 'mode':53 'monitor':177 'most':367 'mouth':496 'navigate':425 'needs':94 'negotiation':314 'networking':201 'new':82 'non':290 'non-technical':289 'occasional':410 'of':81,101,115,146,351,445,454,495,511 'offerings':286 'on':139,216,307,348,354 'onboard':69 'onboarding':114 'ongoing':420 'opportunities':424 'or':254,259,274 'organizations':29,64,71,90,117,132 'oriented':298 'our':512,523,530,543 'outcomes':173 'outlook':302 'paced':430 'paid':399 'part':358 'party':148 'passionate':380 'perfect':389 'performance':554 'performing':385 'pioneering':370 'platform':104,141,168,205 'play':564 'plus':249 'positioning':203 'positive':301 'premier':208 'prior':242 'proactively':65,180 'process':123,165 'proficiency':323 'program':483 'purpose':24,135 'purpose-driven':23,134 'quality':310 're':50 'realm':246 'recognize':98 'recommendations':497 'refer':499 'referral':482 'refine':162 'related':276 'relationship':175,267 'relationship-building':266 'relationships':87 'relish':442 'remote':405 'remote-first':404 'represent':194 'requirements':145 'responsibilities':60 'responsible':465 'results':297 'results-oriented':296 'retention':191 'reward':44,507 'right':487 'role':262 's':339 'sales':256 'satisfaction':179 'scale':113 'search':525 'second':552 'secured':47 'self':294 'self-driven':293 'serve':229 'service':312 'sessions':202 'setting':408,432 'shaping':360 'share':515 'skills':269,315 'skills/experience':233 'social/environmental':39,224,240 'socially':464 'socious':6,7,74,103,195,481,489 'solution':209 'someone':485 'specific':93 'stay':214 'steady':79 'strategies':220 'strategy':109 'stream':80 'streamlined':120 'strong':235,313 'success':3,336 'successful':151 'successfully':498 'support':450,520 'sustainable':468 'take':357,433 'talent':10,75,137,524 'team':159,411,456 'tech':158 'technical':285,291 'technologies':371 'technology':36 'term':190 'thank':528 'that':12,457 'the':73,99,102,129,140,143,157,163,204,207,222,349,355,361,366,373,388,434,537 'their':92 'these':89 'they':97 'this':57,245,516 'thrive':401 'through':30 'to':72,149,160,186,227,237,281,287,320,331,416,461,539 'togethers':414 'token':479,510 'tools':327 'traceable':42 'track':332 'transparency':447 'transparent':18 'trends':218 'trust':446 'understand':142,282 'unique':144 'unlimited':398 'unwavering':449 'updated':215 'us':55 'usd':475 'using':325 'valuable':153 'value':100,492 'valued':279 'values':533,544 'vibrant':427 'we':19,37,49,490 'what':338 'with':88,156,299,316,365,376,394,409,419,436 'word':494 'word-of-mouth':493 'work':15,41,212,391,431,469,551 'work-life':390 'working':364 'world':356 'you':343,529 'your':417,519", + city: 'Tokyo', + weekly_hours_lower: null, + weekly_hours_higher: null, + commitment_hours_lower: null, + commitment_hours_higher: null, + geoname_id: null, + job_category_id: '1e76aff6-f2cb-48a0-bb18-4c9e9d42c88e', + impact_job: true, + promoted: false, + kind: 'JOB', + payment_mode: null, + identity_type: 'organizations', + identity_meta: { + id: '2bd26aa5-f745-4f12-bca7-17916161ae8b', + city: 'Tokyo, Tokyo Prefecture', + name: 'Socious', + email: 'info@socious.io', + image: 'https://storage.googleapis.com/socious-gcs/ad4ae46f5dc138d8bc63928890bc64e0.png', + hiring: true, + status: 'ACTIVE', + address: 'Nihonbashi 3-2-14-1F, Chuo Ward, Tokyo, Japan 103-0027', + country: 'JP', + mission: + 'Our mission is to give everyone the chance to make a difference.\r\n\r\nWe are a talent platform that makes impact work accessible and transparent; we build connections between purpose-driven individuals and organizations. By leveraging blockchain technology, we make social/environmental impact work traceable and reward contributions with crypto tokens.', + verified: true, + shortname: 'socious', + description: null, + wallet_address: null, + verified_impact: true, + }, + job_category: { + id: '1e76aff6-f2cb-48a0-bb18-4c9e9d42c88e', + name: 'Sales', + hourly_wage_dollars: 20, + created_at: '2023-01-26T15:00:00+00:00', + updated_at: '2023-01-26T15:00:00+00:00', + }, + work_samples: [], + applicants: 248, + missions: 2, + saved: false, + not_interested: false, + }, + { + id: 'bea087ab-1b8d-45a6-b181-6c64bfe28e51', + identity_id: 'b134bc13-c889-4eb6-a034-dd41337bc038', + description: + '**Job Title: Business Development Specialist in China - EV Market Focus**\r\n\r\n**Location:** China\r\n\r\n**Company:** Elephantech Inc.\r\n\r\n**Industry:** Automotive, Battery\r\n\r\n**Type of Employment:** Contractual (preferably a 3-month contract, with potential consideration for establishing a local office based on business conditions)\r\n\r\n**Commitment:** About 60 hours per month\r\n\r\n**Compensation:** Approximately $5,000 USD per month\r\n\r\n**About Elephantech Inc.:**\r\n\r\nElephantech Inc. is a startup that has achieved a significant milestone in the field of PCB manufacturing, by becoming the first company in the world to successfully manufacture PCBs using metal inkjet printing.\r\n\r\nWith the mission of “Making the world sustainable with new manufacturing technologies”, Elephantech provides their innovative inkjet printing solutions to promote their manufacturing method as the new global standard.\r\n\r\n**Job Description:**\r\nWe are seeking a Business Development Specialist to spearhead the expansion of our Flexible Printed Circuit (FPC) for Battery Management Systems (BMS) in Electric Vehicles (EVs). This role is crucial in conducting market research and expanding our innovative, environmentally friendly FPC products in the EV BMS market across China.\r\n\r\n**Key Responsibilities:**\r\n\r\n- **Lead Identification:** Conduct targeted market research to identify potential leads for EV-specific BMS FPC in key regions, focusing on the automotive and battery industries.\r\n- **Lead Generation Strategy:** Develop and implement effective strategies to generate and nurture leads, aligning with Elephantech’s sustainability goals.\r\n- **Stakeholder Engagement:** Build and maintain relationships with industry stakeholders, highlighting our eco-friendly manufacturing approach.\r\n- **Collaboration with Internal Teams:** Coordinate with sales and technical teams to ensure smooth transition of qualified leads for deal closure.\r\n\r\n**Qualifications:**\r\n\r\n- Experience in business development, ideally in the automotive or battery industry.\r\n- Knowledge of the EV market, BMS, and FPC technologies, with a passion for sustainability.\r\n- Strong analytical, research, and relationship-building skills.\r\n- Excellent communication and negotiation abilities.\r\n- Fluency in English; additional language skills for the target regions are advantageous.', + project_type: 'PART_TIME', + project_length: '1_3_MONTHS', + payment_currency: 'USD', + payment_range_lower: '15000', + payment_range_higher: '16000', + experience_level: 3, + created_at: '2023-12-14T04:15:33.224Z', + updated_at: '2024-02-11T00:31:20.191Z', + deleted_at: null, + status: 'ACTIVE', + payment_type: 'PAID', + payment_scheme: 'FIXED', + title: 'Job Title: Business Development Specialist in China - EV Market Focus ', + expires_at: null, + country: 'CN', + skills: ['SALES', 'SALES_MANAGEMENT', 'BUSINESS_DEVELOPMENT'], + causes_tags: ['SUSTAINABILITY'], + old_id: null, + other_party_id: null, + other_party_title: null, + other_party_url: null, + remote_preference: 'REMOTE', + search_tsv: + "'000':59 '3':35 '5':58 '60':52 'a':34,43,69,74,133,284 'abilities':300 'about':51,63 'achieved':73 'across':177 'additional':304 'advantageous':312 'aligning':220 'analytical':289 'and':164,204,211,217,229,249,280,291,298 'approach':241 'approximately':57 'are':131,311 'as':123 'automotive':27,203,270 'based':46 'battery':28,148,205,272 'becoming':84 'bms':151,175,195,279 'build':228 'building':294 'business':3,13,48,134,265 'by':83 'china':7,17,22,178 'circuit':145 'closure':261 'collaboration':242 'commitment':50 'communication':297 'company':23,87 'compensation':56 'conditions':49 'conduct':183 'conducting':161 'consideration':40 'contract':37 'contractual':32 'coordinate':246 'crucial':159 'deal':260 'description':129 'develop':210 'development':4,14,135,266 'eco':238 'eco-friendly':237 'effective':213 'electric':153 'elephantech':24,64,66,111,222 'employment':31 'engagement':227 'english':303 'ensure':253 'environmentally':168 'establishing':42 'ev':8,18,174,193,277 'ev-specific':192 'evs':155 'excellent':296 'expanding':165 'expansion':140 'experience':263 'field':79 'first':86 'flexible':143 'fluency':301 'focus':10,20 'focusing':200 'for':41,147,191,259,286,307 'fpc':146,170,196,281 'friendly':169,239 'generate':216 'generation':208 'global':126 'goals':225 'has':72 'highlighting':235 'hours':53 'ideally':267 'identification':182 'identify':188 'implement':212 'in':6,16,77,88,152,160,172,197,264,268,302 'inc':25,65,67 'industries':206 'industry':26,233,273 'inkjet':97,115 'innovative':114,167 'internal':244 'is':68,158 'job':1,11,128 'key':179,198 'knowledge':274 'language':305 'lead':181,207 'leads':190,219,258 'local':44 'location':21 'maintain':230 'making':103 'management':149 'manufacture':93 'manufacturing':82,109,121,240 'market':9,19,162,176,185,278 'metal':96 'method':122 'milestone':76 'mission':101 'month':36,55,62 'negotiation':299 'new':108,125 'nurture':218 'of':30,80,102,141,256,275 'office':45 'on':47,201 'or':271 'our':142,166,236 'passion':285 'pcb':81 'pcbs':94 'per':54,61 'potential':39,189 'preferably':33 'printed':144 'printing':98,116 'products':171 'promote':119 'provides':112 'qualifications':262 'qualified':257 'regions':199,310 'relationship':293 'relationship-building':292 'relationships':231 'research':163,186,290 'responsibilities':180 'role':157 's':223 'sales':248 'seeking':132 'significant':75 'skills':295,306 'smooth':254 'solutions':117 'spearhead':138 'specialist':5,15,136 'specific':194 'stakeholder':226 'stakeholders':234 'standard':127 'startup':70 'strategies':214 'strategy':209 'strong':288 'successfully':92 'sustainability':224,287 'sustainable':106 'systems':150 'target':309 'targeted':184 'teams':245,251 'technical':250 'technologies':110,282 'that':71 'the':78,85,89,100,104,124,139,173,202,269,276,308 'their':113,120 'this':156 'title':2,12 'to':91,118,137,187,215,252 'transition':255 'type':29 'usd':60 'using':95 'vehicles':154 'we':130 'with':38,99,107,221,232,243,247,283 'world':90,105", + city: 'Shenzhen', + weekly_hours_lower: null, + weekly_hours_higher: null, + commitment_hours_lower: null, + commitment_hours_higher: null, + geoname_id: null, + job_category_id: '1e76aff6-f2cb-48a0-bb18-4c9e9d42c88e', + impact_job: true, + promoted: false, + kind: 'JOB', + payment_mode: null, + identity_type: 'organizations', + identity_meta: { + id: 'b134bc13-c889-4eb6-a034-dd41337bc038', + city: 'Tokyo', + name: 'Elephantech', + email: 'client.jobs@socious.io', + image: 'https://storage.googleapis.com/socious-gcs/1eb3da216299ac651d900ab73b639588.jpg', + hiring: true, + status: 'ACTIVE', + address: null, + country: 'JP', + mission: + 'Elephantech Inc. is a startup that has achieved a significant milestone in the field of PCB manufacturing, by becoming the first company in the world to successfully manufacture PCBs using metal inkjet printing.\n\nWith the mission of “Making the world sustainable with new manufacturing technologies”, Elephantech provides their innovative inkjet printing solutions to promote their manufacturing method as the new global standard.', + verified: false, + shortname: 'co8292', + description: null, + wallet_address: null, + verified_impact: false, + }, + job_category: { + id: '1e76aff6-f2cb-48a0-bb18-4c9e9d42c88e', + name: 'Sales', + hourly_wage_dollars: 20, + created_at: '2023-01-26T15:00:00+00:00', + updated_at: '2023-01-26T15:00:00+00:00', + }, + work_samples: [], + applicants: 1, + missions: 0, + saved: false, + not_interested: false, + }, + { + id: 'a622294a-139c-4776-bd05-5e466bd2bdb4', + identity_id: 'b134bc13-c889-4eb6-a034-dd41337bc038', + description: + '**Job Title: Business Development Specialist in North America - EV Market Focus**\r\n\r\n**Location:** North America\r\n\r\n**Company:** Elephantech Inc.\r\n\r\n**Industry:** Automotive, Battery\r\n\r\n**Type of Employment:** Contractual (preferably a 3-month contract, with potential consideration for establishing a local office based on business conditions)\r\n\r\n**Commitment:** About 60 hours per month\r\n\r\n**Compensation:** Approximately $5,000 USD per month\r\n\r\n**About Elephantech Inc.:**\r\n\r\nElephantech Inc. is a startup that has achieved a significant milestone in the field of PCB manufacturing, by becoming the first company in the world to successfully manufacture PCBs using metal inkjet printing.\r\n\r\nWith the mission of “Making the world sustainable with new manufacturing technologies”, Elephantech provides their innovative inkjet printing solutions to promote their manufacturing method as the new global standard.\r\n\r\n**Job Description:**\r\nWe are seeking a Business Development Specialist to spearhead the expansion of our Flexible Printed Circuit (FPC) for Battery Management Systems (BMS) in Electric Vehicles (EVs). This role is crucial in conducting market research and expanding our innovative, environmentally friendly FPC products in the EV BMS market across North America.\r\n\r\n**Key Responsibilities:**\r\n\r\n- **Lead Identification:** Conduct targeted market research to identify potential leads for EV-specific BMS FPC in key regions, focusing on the automotive and battery industries.\r\n- **Lead Generation Strategy:** Develop and implement effective strategies to generate and nurture leads, aligning with Elephantech’s sustainability goals.\r\n- **Stakeholder Engagement:** Build and maintain relationships with industry stakeholders, highlighting our eco-friendly manufacturing approach.\r\n- **Collaboration with Internal Teams:** Coordinate with sales and technical teams to ensure smooth transition of qualified leads for deal closure.\r\n\r\n**Qualifications:**\r\n\r\n- Experience in business development, ideally in the automotive or battery industry.\r\n- Knowledge of the EV market, BMS, and FPC technologies, with a passion for sustainability.\r\n- Strong analytical, research, and relationship-building skills.\r\n- Excellent communication and negotiation abilities.\r\n- Fluency in English; additional language skills for the target regions are advantageous.', + project_type: 'PART_TIME', + project_length: '1_3_MONTHS', + payment_currency: 'USD', + payment_range_lower: '15000', + payment_range_higher: '16000', + experience_level: 3, + created_at: '2023-12-14T06:51:06.559Z', + updated_at: '2024-02-11T00:31:07.450Z', + deleted_at: null, + status: 'ACTIVE', + payment_type: 'PAID', + payment_scheme: 'FIXED', + title: 'Business Development Specialist in North America - EV Market Focus ', + expires_at: null, + country: 'US', + skills: ['SALES', 'SALES_MANAGEMENT', 'BUSINESS_DEVELOPMENT'], + causes_tags: ['SUSTAINABILITY'], + old_id: null, + other_party_id: null, + other_party_title: null, + other_party_url: null, + remote_preference: 'REMOTE', + search_tsv: + "'000':60 '3':36 '5':59 '60':53 'a':35,44,70,75,134,286 'abilities':302 'about':52,64 'achieved':74 'across':178 'additional':306 'advantageous':314 'aligning':222 'america':6,17,23,180 'analytical':291 'and':165,206,213,219,231,251,282,293,300 'approach':243 'approximately':58 'are':132,313 'as':124 'automotive':28,205,272 'based':47 'battery':29,149,207,274 'becoming':85 'bms':152,176,197,281 'build':230 'building':296 'business':1,12,49,135,267 'by':84 'circuit':146 'closure':263 'collaboration':244 'commitment':51 'communication':299 'company':24,88 'compensation':57 'conditions':50 'conduct':185 'conducting':162 'consideration':41 'contract':38 'contractual':33 'coordinate':248 'crucial':160 'deal':262 'description':130 'develop':212 'development':2,13,136,268 'eco':240 'eco-friendly':239 'effective':215 'electric':154 'elephantech':25,65,67,112,224 'employment':32 'engagement':229 'english':305 'ensure':255 'environmentally':169 'establishing':43 'ev':7,18,175,195,279 'ev-specific':194 'evs':156 'excellent':298 'expanding':166 'expansion':141 'experience':265 'field':80 'first':87 'flexible':144 'fluency':303 'focus':9,20 'focusing':202 'for':42,148,193,261,288,309 'fpc':147,171,198,283 'friendly':170,241 'generate':218 'generation':210 'global':127 'goals':227 'has':73 'highlighting':237 'hours':54 'ideally':269 'identification':184 'identify':190 'implement':214 'in':4,15,78,89,153,161,173,199,266,270,304 'inc':26,66,68 'industries':208 'industry':27,235,275 'inkjet':98,116 'innovative':115,168 'internal':246 'is':69,159 'job':10,129 'key':181,200 'knowledge':276 'language':307 'lead':183,209 'leads':192,221,260 'local':45 'location':21 'maintain':232 'making':104 'management':150 'manufacture':94 'manufacturing':83,110,122,242 'market':8,19,163,177,187,280 'metal':97 'method':123 'milestone':77 'mission':102 'month':37,56,63 'negotiation':301 'new':109,126 'north':5,16,22,179 'nurture':220 'of':31,81,103,142,258,277 'office':46 'on':48,203 'or':273 'our':143,167,238 'passion':287 'pcb':82 'pcbs':95 'per':55,62 'potential':40,191 'preferably':34 'printed':145 'printing':99,117 'products':172 'promote':120 'provides':113 'qualifications':264 'qualified':259 'regions':201,312 'relationship':295 'relationship-building':294 'relationships':233 'research':164,188,292 'responsibilities':182 'role':158 's':225 'sales':250 'seeking':133 'significant':76 'skills':297,308 'smooth':256 'solutions':118 'spearhead':139 'specialist':3,14,137 'specific':196 'stakeholder':228 'stakeholders':236 'standard':128 'startup':71 'strategies':216 'strategy':211 'strong':290 'successfully':93 'sustainability':226,289 'sustainable':107 'systems':151 'target':311 'targeted':186 'teams':247,253 'technical':252 'technologies':111,284 'that':72 'the':79,86,90,101,105,125,140,174,204,271,278,310 'their':114,121 'this':157 'title':11 'to':92,119,138,189,217,254 'transition':257 'type':30 'usd':61 'using':96 'vehicles':155 'we':131 'with':39,100,108,223,234,245,249,285 'world':91,106", + city: 'Austin', + weekly_hours_lower: null, + weekly_hours_higher: null, + commitment_hours_lower: null, + commitment_hours_higher: null, + geoname_id: null, + job_category_id: '1e76aff6-f2cb-48a0-bb18-4c9e9d42c88e', + impact_job: true, + promoted: false, + kind: 'JOB', + payment_mode: null, + identity_type: 'organizations', + identity_meta: { + id: 'b134bc13-c889-4eb6-a034-dd41337bc038', + city: 'Tokyo', + name: 'Elephantech', + email: 'client.jobs@socious.io', + image: 'https://storage.googleapis.com/socious-gcs/1eb3da216299ac651d900ab73b639588.jpg', + hiring: true, + status: 'ACTIVE', + address: null, + country: 'JP', + mission: + 'Elephantech Inc. is a startup that has achieved a significant milestone in the field of PCB manufacturing, by becoming the first company in the world to successfully manufacture PCBs using metal inkjet printing.\n\nWith the mission of “Making the world sustainable with new manufacturing technologies”, Elephantech provides their innovative inkjet printing solutions to promote their manufacturing method as the new global standard.', + verified: false, + shortname: 'co8292', + description: null, + wallet_address: null, + verified_impact: false, + }, + job_category: { + id: '1e76aff6-f2cb-48a0-bb18-4c9e9d42c88e', + name: 'Sales', + hourly_wage_dollars: 20, + created_at: '2023-01-26T15:00:00+00:00', + updated_at: '2023-01-26T15:00:00+00:00', + }, + work_samples: [], + applicants: 5, + missions: 0, + saved: false, + not_interested: false, + }, + { + id: '65b981b2-da68-4e92-b671-4b0d91b38d85', + identity_id: 'b134bc13-c889-4eb6-a034-dd41337bc038', + description: + '**Job Title: Business Development Specialist - EV Market Focus**\r\n\r\n**Location:** Europe\r\n\r\n**Company:** Elephantech Inc.\r\n\r\n**Industry:** Automotive, Battery\r\n\r\n**Type of Employment:** Contractual (preferably a 3-month contract, with potential consideration for establishing a local office based on business conditions)\r\n\r\n**Commitment:** About 60 hours per month\r\n\r\n**Compensation:** Approximately $5,000 USD per month\r\n\r\n**About Elephantech Inc.:**\r\n\r\nElephantech Inc. is a startup that has achieved a significant milestone in the field of PCB manufacturing, by becoming the first company in the world to successfully manufacture PCBs using metal inkjet printing.\r\n\r\nWith the mission of “Making the world sustainable with new manufacturing technologies”, Elephantech provides their innovative inkjet printing solutions to promote their manufacturing method as the new global standard.\r\n\r\n**Job Description:**\r\nWe are seeking a Business Development Specialist to spearhead the expansion of our Flexible Printed Circuit (FPC) for Battery Management Systems (BMS) in Electric Vehicles (EVs). This role is crucial in conducting market research and expanding our innovative, environmentally friendly FPC products in the EV BMS market across Europe.\r\n\r\n**Key Responsibilities:**\r\n\r\n- **Lead Identification:** Conduct targeted market research to identify potential leads for EV-specific BMS FPC in key regions, focusing on the automotive and battery industries.\r\n- **Lead Generation Strategy:** Develop and implement effective strategies to generate and nurture leads, aligning with Elephantech’s sustainability goals.\r\n- **Stakeholder Engagement:** Build and maintain relationships with industry stakeholders, highlighting our eco-friendly manufacturing approach.\r\n- **Collaboration with Internal Teams:** Coordinate with sales and technical teams to ensure smooth transition of qualified leads for deal closure.\r\n\r\n**Qualifications:**\r\n\r\n- Experience in business development, ideally in the automotive or battery industry.\r\n- Knowledge of the EV market, BMS, and FPC technologies, with a passion for sustainability.\r\n- Strong analytical, research, and relationship-building skills.\r\n- Excellent communication and negotiation abilities.\r\n- Fluency in English; additional language skills for the target regions are advantageous.', + project_type: 'PART_TIME', + project_length: '1_3_MONTHS', + payment_currency: 'USD', + payment_range_lower: '15000', + payment_range_higher: '16000', + experience_level: 3, + created_at: '2023-12-11T00:04:50.122Z', + updated_at: '2024-02-11T00:30:46.949Z', + deleted_at: null, + status: 'ACTIVE', + payment_type: 'PAID', + payment_scheme: 'FIXED', + title: 'Business Development Specialist in Europe - EV Market Focus ', + expires_at: null, + country: 'FR', + skills: ['BUSINESS_DEVELOPMENT', 'SALES', 'SALES_MANAGEMENT'], + causes_tags: ['SUSTAINABILITY'], + old_id: null, + other_party_id: null, + other_party_title: null, + other_party_url: null, + remote_preference: 'REMOTE', + search_tsv: + "'000':55 '3':31 '5':54 '60':48 'a':30,39,65,70,129,280 'abilities':296 'about':47,59 'achieved':69 'across':173 'additional':300 'advantageous':308 'aligning':216 'analytical':285 'and':160,200,207,213,225,245,276,287,294 'approach':237 'approximately':53 'are':127,307 'as':119 'automotive':23,199,266 'based':42 'battery':24,144,201,268 'becoming':80 'bms':147,171,191,275 'build':224 'building':290 'business':1,11,44,130,261 'by':79 'circuit':141 'closure':257 'collaboration':238 'commitment':46 'communication':293 'company':19,83 'compensation':52 'conditions':45 'conduct':179 'conducting':157 'consideration':36 'contract':33 'contractual':28 'coordinate':242 'crucial':155 'deal':256 'description':125 'develop':206 'development':2,12,131,262 'eco':234 'eco-friendly':233 'effective':209 'electric':149 'elephantech':20,60,62,107,218 'employment':27 'engagement':223 'english':299 'ensure':249 'environmentally':164 'establishing':38 'europe':5,18,174 'ev':6,14,170,189,273 'ev-specific':188 'evs':151 'excellent':292 'expanding':161 'expansion':136 'experience':259 'field':75 'first':82 'flexible':139 'fluency':297 'focus':8,16 'focusing':196 'for':37,143,187,255,282,303 'fpc':142,166,192,277 'friendly':165,235 'generate':212 'generation':204 'global':122 'goals':221 'has':68 'highlighting':231 'hours':49 'ideally':263 'identification':178 'identify':184 'implement':208 'in':4,73,84,148,156,168,193,260,264,298 'inc':21,61,63 'industries':202 'industry':22,229,269 'inkjet':93,111 'innovative':110,163 'internal':240 'is':64,154 'job':9,124 'key':175,194 'knowledge':270 'language':301 'lead':177,203 'leads':186,215,254 'local':40 'location':17 'maintain':226 'making':99 'management':145 'manufacture':89 'manufacturing':78,105,117,236 'market':7,15,158,172,181,274 'metal':92 'method':118 'milestone':72 'mission':97 'month':32,51,58 'negotiation':295 'new':104,121 'nurture':214 'of':26,76,98,137,252,271 'office':41 'on':43,197 'or':267 'our':138,162,232 'passion':281 'pcb':77 'pcbs':90 'per':50,57 'potential':35,185 'preferably':29 'printed':140 'printing':94,112 'products':167 'promote':115 'provides':108 'qualifications':258 'qualified':253 'regions':195,306 'relationship':289 'relationship-building':288 'relationships':227 'research':159,182,286 'responsibilities':176 'role':153 's':219 'sales':244 'seeking':128 'significant':71 'skills':291,302 'smooth':250 'solutions':113 'spearhead':134 'specialist':3,13,132 'specific':190 'stakeholder':222 'stakeholders':230 'standard':123 'startup':66 'strategies':210 'strategy':205 'strong':284 'successfully':88 'sustainability':220,283 'sustainable':102 'systems':146 'target':305 'targeted':180 'teams':241,247 'technical':246 'technologies':106,278 'that':67 'the':74,81,85,96,100,120,135,169,198,265,272,304 'their':109,116 'this':152 'title':10 'to':87,114,133,183,211,248 'transition':251 'type':25 'usd':56 'using':91 'vehicles':150 'we':126 'with':34,95,103,217,228,239,243,279 'world':86,101", + city: 'Paris', + weekly_hours_lower: null, + weekly_hours_higher: null, + commitment_hours_lower: null, + commitment_hours_higher: null, + geoname_id: null, + job_category_id: '1e76aff6-f2cb-48a0-bb18-4c9e9d42c88e', + impact_job: true, + promoted: false, + kind: 'JOB', + payment_mode: null, + identity_type: 'organizations', + identity_meta: { + id: 'b134bc13-c889-4eb6-a034-dd41337bc038', + city: 'Tokyo', + name: 'Elephantech', + email: 'client.jobs@socious.io', + image: 'https://storage.googleapis.com/socious-gcs/1eb3da216299ac651d900ab73b639588.jpg', + hiring: true, + status: 'ACTIVE', + address: null, + country: 'JP', + mission: + 'Elephantech Inc. is a startup that has achieved a significant milestone in the field of PCB manufacturing, by becoming the first company in the world to successfully manufacture PCBs using metal inkjet printing.\n\nWith the mission of “Making the world sustainable with new manufacturing technologies”, Elephantech provides their innovative inkjet printing solutions to promote their manufacturing method as the new global standard.', + verified: false, + shortname: 'co8292', + description: null, + wallet_address: null, + verified_impact: false, + }, + job_category: { + id: '1e76aff6-f2cb-48a0-bb18-4c9e9d42c88e', + name: 'Sales', + hourly_wage_dollars: 20, + created_at: '2023-01-26T15:00:00+00:00', + updated_at: '2023-01-26T15:00:00+00:00', + }, + work_samples: [], + applicants: 12, + missions: 0, + saved: false, + not_interested: false, + }, + { + id: 'ea6de290-6624-450b-a542-32940e2023b9', + identity_id: '2bd26aa5-f745-4f12-bca7-17916161ae8b', + description: + "## **Job Description**\n\n### **About Socious:**\n\nSocious is a talent marketplace that makes impact work accessible and transparent; we build connections between purpose-driven individuals and impact organizations through AI matching. By leveraging blockchain technology, we make social/environmental impact work traceable and reward contributions.\n\nHaving secured funding, we're in expansion mode. Join us in this journey!\n\n### **Role Overview:**\n\nAs the Head of Marketing at Socious, you will lead our marketing efforts, developing and executing strategies to enhance our brand presence, drive user acquisition, and support our growth within the impact sector. Your creative vision and marketing expertise will be key in amplifying Socious' mission, ensuring we reach and engage with a wide audience of impact-driven professionals and organizations.\n\n### **Key Responsibilities:**\n\n- **Strategic Marketing Leadership:**\n - Develop and implement comprehensive marketing strategies to promote Socious' mission and services, driving brand awareness and user growth.\n - Collaborate with the CEO and other team members to align marketing initiatives with Socious' overall strategic goals.\n- **Brand Development:**\n - Cultivate and maintain a strong, cohesive brand identity that resonates with our target audience.\n - Ensure consistent messaging across all marketing channels, including digital, social media, and offline platforms.\n- **User Acquisition and Engagement:**\n - Design and execute campaigns to attract and retain impact-driven professionals and organizations.\n - Leverage data analytics to optimize marketing efforts and maximize ROI.\n- **Content and Communication:**\n - Oversee the creation of compelling content, including blog posts, newsletters, social media updates, and marketing materials.\n - Manage public relations efforts, including media relations and press releases, to enhance Socious' visibility and reputation.\n- **Team Leadership and Development:**\n - Lead and mentor a high-performing marketing team, fostering a collaborative and innovative environment.\n - Champion Socious' values, ensuring a culture of diversity, inclusion, and belonging within the marketing department.\n- **Partnership and Collaboration:**\n - Identify and establish strategic partnerships to expand Socious' reach and impact.\n - Collaborate with other departments to ensure marketing efforts support business development, client success, and operational goals.\n\n### **Skills/Experience:**\n\n- A strong desire to make a social/environmental impact. Prior experience in this realm is a plus.\n- Proven experience as a Head of Marketing or similar role, ideally within the tech or social impact sector.\n- Demonstrable competency in developing and executing successful marketing strategies.\n- Outstanding organizational and leadership abilities, with a track record of effectively leading a diverse team.\n- Aptitude in decision-making and problem-solving, with a focus on marketing excellence.\n- Strong understanding of digital marketing, content creation, and brand management.\n- Excellent interpersonal and communication skills in English.\n- Proficiency in Japanese preferred.\n\n### **What's in it for you?**\n\n- Make a lasting impact on the lives of many and on the world.\n- Take part in shaping the future by working with the most advanced and pioneering technologies in the field.\n- Collaborate with and learn from passionate, diverse, and high-performing colleagues.\n- Achieve the perfect work-life balance with flexible hours and unlimited paid leave.\n- Thrive in a remote-first setting with occasional team get-togethers.\n- Commit to your growth with ongoing learning and development opportunities.\n- Navigate a vibrant, fast-paced work setting.\n- Take the lead with autonomy in decision-making.\n- Relish a culture of trust, transparency, and unwavering support.\n- Become a member of a team that is deeply committed to fostering a socially responsible and ecologically sustainable work environment.\n- Enjoy a competitive compensation: USD 50k - 90k annually + token incentives.\n\n### **Socious Referral Program:**\n\nKnow someone just right for Socious? We highly value word-of-mouth recommendations. Successfully refer a candidate, and enjoy a $1,000 reward as a token of our gratitude. Just share this job link!\n\nYour support in broadening our talent search is invaluable. Thank you.\n\n### **Our Mission and Values:**\n\n**Mission:** Give everyone the chance to make a difference.\n\n**Our Values:**\n\n- Diversity, inclusion, and belonging.\n- Life first, work second.\n- High performance for high impact.\n- Autonomy and accountability.\n- Candor, collaboration, and play.", + project_type: 'FULL_TIME', + project_length: '6_MONTHS_OR_MORE', + payment_currency: 'USD', + payment_range_lower: null, + payment_range_higher: null, + experience_level: 3, + created_at: '2024-07-26T05:31:13.773Z', + updated_at: '2024-07-26T05:42:29.385Z', + deleted_at: null, + status: 'ACTIVE', + payment_type: 'PAID', + payment_scheme: 'FIXED', + title: 'Head of Marketing', + expires_at: null, + country: 'JP', + skills: ['MARKETING', 'MARKETING_STRATEGY', 'PROJECT_MANAGEMENT', 'PROBLEM_SOLVING', 'CRM'], + causes_tags: ['SOCIAL'], + old_id: null, + other_party_id: null, + other_party_title: null, + other_party_url: null, + remote_preference: 'HYBRID', + search_tsv: + "'000':583 '1':582 '50k':553 '90k':554 'a':10,114,169,264,271,280,322,327,336,341,371,377,390,423,481,503,520,529,532,540,549,577,581,586,618 'abilities':369 'about':6 'accessible':17 'accountability':637 'achieve':465 'acquisition':86,195 'across':183 'advanced':446 'ai':32 'align':156 'all':184 'amplifying':105 'analytics':214 'and':18,28,44,76,87,98,111,122,130,139,144,151,167,191,196,199,204,210,219,223,238,248,255,259,262,273,285,292,295,303,318,360,367,385,402,407,431,447,455,460,475,499,525,543,579,609,624,636,640 'annually':555 'aptitude':380 'as':62,340,585 'at':67 'attract':203 'audience':116,179 'autonomy':514,635 'awareness':143 'balance':471 'be':102 'become':528 'belonging':286,625 'between':23 'blockchain':36 'blog':232 'brand':82,142,164,172,403 'broadening':599 'build':21 'business':314 'by':34,441 'campaigns':201 'candidate':578 'candor':638 'ceo':150 'champion':276 'chance':615 'channels':186 'client':316 'cohesive':171 'collaborate':147,305,453 'collaboration':293,639 'collaborative':272 'colleagues':464 'commit':492 'committed':537 'communication':224,408 'compelling':229 'compensation':551 'competency':357 'competitive':550 'comprehensive':132 'connections':22 'consistent':181 'content':222,230,400 'contributions':46 'creation':227,401 'creative':96 'cultivate':166 'culture':281,521 'data':213 'decision':383,517 'decision-making':382,516 'deeply':536 'demonstrable':356 'department':290 'departments':308 'description':5 'design':198 'desire':324 'develop':129 'developing':75,359 'development':165,260,315,500 'difference':619 'digital':188,398 'diverse':378,459 'diversity':283,622 'drive':84 'driven':26,120,208 'driving':141 'ecologically':544 'effectively':375 'efforts':74,218,244,312 'engage':112 'engagement':197 'english':411 'enhance':80,252 'enjoy':548,580 'ensure':180,310 'ensuring':108,279 'environment':275,547 'establish':296 'everyone':613 'excellence':394 'excellent':405 'execute':200 'executing':77,361 'expand':300 'expansion':53 'experience':331,339 'expertise':100 'fast':506 'fast-paced':505 'field':452 'first':484,627 'flexible':473 'focus':391 'for':420,565,632 'fostering':270,539 'from':457 'funding':49 'future':440 'get':490 'get-togethers':489 'give':612 'goals':163,320 'gratitude':590 'growth':90,146,495 'having':47 'head':1,64,342 'high':266,462,630,633 'high-performing':265,461 'highly':568 'hours':474 'ideally':348 'identify':294 'identity':173 'impact':15,29,41,93,119,207,304,329,354,425,634 'impact-driven':118,206 'implement':131 'in':52,57,104,332,358,381,410,413,418,437,450,480,515,598 'incentives':557 'including':187,231,245 'inclusion':284,623 'individuals':27 'initiatives':158 'innovative':274 'interpersonal':406 'invaluable':604 'is':9,335,535,603 'it':419 'japanese':414 'job':4,594 'join':55 'journey':59 'just':563,591 'key':103,124 'know':561 'lasting':424 'lead':71,261,512 'leadership':128,258,368 'leading':376 'learn':456 'learning':498 'leave':478 'leverage':212 'leveraging':35 'life':470,626 'link':595 'lives':428 'maintain':168 'make':39,326,422,617 'makes':14 'making':384,518 'manage':241 'management':404 'many':430 'marketing':3,66,73,99,127,133,157,185,217,239,268,289,311,344,363,393,399 'marketplace':12 'matching':33 'materials':240 'maximize':220 'media':190,236,246 'member':530 'members':154 'mentor':263 'messaging':182 'mission':107,138,608,611 'mode':54 'most':445 'mouth':573 'navigate':502 'newsletters':234 'occasional':487 'of':2,65,117,228,282,343,374,397,429,522,531,572,588 'offline':192 'on':392,426,432 'ongoing':497 'operational':319 'opportunities':501 'optimize':216 'or':345,352 'organizational':366 'organizations':30,123,211 'other':152,307 'our':72,81,89,177,589,600,607,620 'outstanding':365 'overall':161 'oversee':225 'overview':61 'paced':507 'paid':477 'part':436 'partnership':291 'partnerships':298 'passionate':458 'perfect':467 'performance':631 'performing':267,463 'pioneering':448 'platforms':193 'play':641 'plus':337 'posts':233 'preferred':415 'presence':83 'press':249 'prior':330 'problem':387 'problem-solving':386 'professionals':121,209 'proficiency':412 'program':560 'promote':136 'proven':338 'public':242 'purpose':25 'purpose-driven':24 're':51 'reach':110,302 'realm':334 'recommendations':574 'record':373 'refer':576 'referral':559 'relations':243,247 'releases':250 'relish':519 'remote':483 'remote-first':482 'reputation':256 'resonates':175 'responsibilities':125 'responsible':542 'retain':205 'reward':45,584 'right':564 'roi':221 'role':60,347 's':417 'search':602 'second':629 'sector':94,355 'secured':48 'services':140 'setting':485,509 'shaping':438 'share':592 'similar':346 'skills':409 'skills/experience':321 'social':189,235,353 'social/environmental':40,328 'socially':541 'socious':7,8,68,106,137,160,253,277,301,558,566 'solving':388 'someone':562 'strategic':126,162,297 'strategies':78,134,364 'strong':170,323,395 'success':317 'successful':362 'successfully':575 'support':88,313,527,597 'sustainable':545 'take':435,510 'talent':11,601 'target':178 'team':153,257,269,379,488,533 'tech':351 'technologies':449 'technology':37 'thank':605 'that':13,174,534 'the':63,92,149,226,288,350,427,433,439,444,451,466,511,614 'this':58,333,593 'thrive':479 'through':31 'to':79,135,155,202,215,251,299,309,325,493,538,616 'togethers':491 'token':556,587 'traceable':43 'track':372 'transparency':524 'transparent':19 'trust':523 'understanding':396 'unlimited':476 'unwavering':526 'updates':237 'us':56 'usd':552 'user':85,145,194 'value':569 'values':278,610,621 'vibrant':504 'visibility':254 'vision':97 'we':20,38,50,109,567 'what':416 'wide':115 'will':70,101 'with':113,148,159,176,306,370,389,443,454,472,486,496,513 'within':91,287,349 'word':571 'word-of-mouth':570 'work':16,42,469,508,546,628 'work-life':468 'working':442 'world':434 'you':69,421,606 'your':95,494,596", + city: 'Tokyo', + weekly_hours_lower: null, + weekly_hours_higher: null, + commitment_hours_lower: null, + commitment_hours_higher: null, + geoname_id: null, + job_category_id: 'f41529ba-d708-499f-8537-11ff57ed260a', + impact_job: true, + promoted: false, + kind: 'JOB', + payment_mode: null, + identity_type: 'organizations', + identity_meta: { + id: '2bd26aa5-f745-4f12-bca7-17916161ae8b', + city: 'Tokyo, Tokyo Prefecture', + name: 'Socious', + email: 'info@socious.io', + image: 'https://storage.googleapis.com/socious-gcs/ad4ae46f5dc138d8bc63928890bc64e0.png', + hiring: true, + status: 'ACTIVE', + address: 'Nihonbashi 3-2-14-1F, Chuo Ward, Tokyo, Japan 103-0027', + country: 'JP', + mission: + 'Our mission is to give everyone the chance to make a difference.\r\n\r\nWe are a talent platform that makes impact work accessible and transparent; we build connections between purpose-driven individuals and organizations. By leveraging blockchain technology, we make social/environmental impact work traceable and reward contributions with crypto tokens.', + verified: true, + shortname: 'socious', + description: null, + wallet_address: null, + verified_impact: true, + }, + job_category: { + id: 'f41529ba-d708-499f-8537-11ff57ed260a', + name: 'Project Management', + hourly_wage_dollars: 32, + created_at: '2022-12-14T13:19:18.541708+00:00', + updated_at: '2022-12-14T13:19:18.541708+00:00', + }, + work_samples: [], + applicants: 3, + missions: 0, + saved: false, + not_interested: false, + }, + { + id: '834dba9b-fa47-4dd2-8f45-5636e37a443c', + identity_id: 'b4a24289-c4f4-4bd8-bc9a-0091f2c4a881', + description: + 'Socious is seeking enthusiastic interns to join our Event Management team for the Tech For Impact Summit scheduled on September 10, 2024.\n\n - Internship Duration: May to Early September (5 months)\n- Commitment: 10 hours per week (Hybrid: Bi-weekly office attendance, predominantly remote with flexible scheduling)\n\nResponsibilities:\n- Tasks will be assigned based on priority and the event planning timeline.\n- Collaborate with the Event Management team to ensure the success of the Tech For Impact Summit.\n- Engage with potential Speakers/Sponsors including NGOs, Industry Leaders, Social Entrepreneurs, and Organizations.\n- Coordinate volunteer assignments for the day of the event.\n- Assist in promoting the event by liaising with various organizations, startups, student communities, tech hubs, and social entrepreneur networks.\n- Contribute to crafting compelling event campaigns for marketing purposes.\n\nRequirements:\n- Proficiency in English and/or Japanese.\n- Based in Greater Tokyo, Japan\n- Strong communication and collaborative abilities.\n- Strong organizational and adaptability skills.\n- Familiarity with both Japanese and international communities for effective promotion and marketing.\n-Availability for 10 hours per week (Remote work is acceptable).\n\n*What We offers:*\n- A front-row seat to the workings of a pioneering social impact platform.\n- The opportunity to contribute to meaningful projects that have a real-world impact.\n- A chance to learn from and collaborate with a diverse, high-performing team.\n- A flexible, remote-first work environment to balance your internship with personal commitments.\n- Engagement in a culture of trust, transparency, and unwavering support.\n- Opportunities for professional growth and development.\n- Though this is an unpaid role, the experience and network you build here are invaluable.\n\n*Our mission and values:*\nMission: Give everyone the chance to make a difference.\nOur values:\n- Diversity, inclusion, and belonging.\n- Life first, work second.\n- High performance for high impact.\n- Autonomy and accountability.\n- Candor, collaboration, and play.', + project_type: 'PART_TIME', + project_length: '3_6_MONTHS', + payment_currency: 'USD', + payment_range_lower: null, + payment_range_higher: null, + experience_level: 0, + created_at: '2024-05-13T07:39:00.444Z', + updated_at: '2024-06-18T06:31:47.822Z', + deleted_at: null, + status: 'ACTIVE', + payment_type: 'VOLUNTEER', + payment_scheme: 'HOURLY', + title: 'Event Management Intern', + expires_at: null, + country: 'JP', + skills: ['EVENT_MANAGEMENT', 'COMMUNICATION', 'SOCIAL_MEDIA_MARKETING'], + causes_tags: ['SOCIAL'], + old_id: null, + other_party_id: null, + other_party_title: null, + other_party_url: null, + remote_preference: 'HYBRID', + search_tsv: + "'10':24,35,163 '2024':25 '5':32 'a':174,183,197,202,210,216,232,272 'abilities':143 'acceptable':170 'accountability':291 'adaptability':147 'an':249 'and':58,89,115,141,146,153,159,207,237,244,254,263,278,290,294 'and/or':132 'are':259 'assigned':54 'assignments':93 'assist':100 'attendance':44 'autonomy':289 'availability':161 'balance':224 'based':55,134 'be':53 'belonging':279 'bi':41 'bi-weekly':40 'both':151 'build':257 'by':105 'campaigns':124 'candor':292 'chance':203,269 'collaborate':63,208 'collaboration':293 'collaborative':142 'commitment':34 'commitments':229 'communication':140 'communities':112,155 'compelling':122 'contribute':119,191 'coordinate':91 'crafting':121 'culture':233 'day':96 'development':245 'difference':273 'diverse':211 'diversity':276 'duration':27 'early':30 'effective':157 'engage':79 'engagement':230 'english':131 'ensure':70 'enthusiastic':7 'entrepreneur':117 'entrepreneurs':88 'environment':222 'event':1,12,60,66,99,104,123 'everyone':267 'experience':253 'familiarity':149 'first':220,281 'flexible':48,217 'for':15,18,76,94,125,156,162,241,286 'from':206 'front':176 'front-row':175 'give':266 'greater':136 'growth':243 'have':196 'here':258 'high':213,284,287 'high-performing':212 'hours':36,164 'hubs':114 'hybrid':39 'impact':19,77,186,201,288 'in':101,130,135,231 'including':83 'inclusion':277 'industry':85 'intern':3 'international':154 'interns':8 'internship':26,226 'invaluable':260 'is':5,169,248 'japan':138 'japanese':133,152 'join':10 'leaders':86 'learn':205 'liaising':106 'life':280 'make':271 'management':2,13,67 'marketing':126,160 'may':28 'meaningful':193 'mission':262,265 'months':33 'network':255 'networks':118 'ngos':84 'of':73,97,182,234 'offers':173 'office':43 'on':22,56 'opportunities':240 'opportunity':189 'organizational':145 'organizations':90,109 'our':11,261,274 'per':37,165 'performance':285 'performing':214 'personal':228 'pioneering':184 'planning':61 'platform':187 'play':295 'potential':81 'predominantly':45 'priority':57 'professional':242 'proficiency':129 'projects':194 'promoting':102 'promotion':158 'purposes':127 'real':199 'real-world':198 'remote':46,167,219 'remote-first':218 'requirements':128 'responsibilities':50 'role':251 'row':177 'scheduled':21 'scheduling':49 'seat':178 'second':283 'seeking':6 'september':23,31 'skills':148 'social':87,116,185 'socious':4 'speakers/sponsors':82 'startups':110 'strong':139,144 'student':111 'success':72 'summit':20,78 'support':239 'tasks':51 'team':14,68,215 'tech':17,75,113 'that':195 'the':16,59,65,71,74,95,98,103,180,188,252,268 'this':247 'though':246 'timeline':62 'to':9,29,69,120,179,190,192,204,223,270 'tokyo':137 'transparency':236 'trust':235 'unpaid':250 'unwavering':238 'values':264,275 'various':108 'volunteer':92 'we':172 'week':38,166 'weekly':42 'what':171 'will':52 'with':47,64,80,107,150,209,227 'work':168,221,282 'workings':181 'world':200 'you':256 'your':225", + city: 'Tokyo', + weekly_hours_lower: null, + weekly_hours_higher: null, + commitment_hours_lower: '5', + commitment_hours_higher: '10', + geoname_id: null, + job_category_id: 'f41529ba-d708-499f-8537-11ff57ed260a', + impact_job: true, + promoted: false, + kind: 'JOB', + payment_mode: null, + identity_type: 'organizations', + identity_meta: { + id: 'b4a24289-c4f4-4bd8-bc9a-0091f2c4a881', + city: 'Tokyo', + name: 'Tech for Impact Summit', + email: 'info@tech4impactsummit.com', + image: 'https://storage.googleapis.com/socious-gcs/8c5cb3c5201bbb0110f8f6ca29b4e065.jpg', + hiring: false, + status: 'ACTIVE', + address: null, + country: 'JP', + mission: + 'Welcome to the Tech for Impact Summit hosted by Socious. This groundbreaking event brings together international and Japanese speakers from government, tech companies, academia, and more to explore real-world applications of innovation for social and environmental impact. Explore interactive panels and workshops on innovations in global health and telecommunications to insights into civic enterprise and regulation and dive deep into the intersection of technology and social good. Join us as we unlock new possibilities and pave the way for a more sustainable future.', + verified: true, + shortname: 'techforimpactsummit', + description: null, + wallet_address: null, + verified_impact: true, + }, + job_category: { + id: 'f41529ba-d708-499f-8537-11ff57ed260a', + name: 'Project Management', + hourly_wage_dollars: 32, + created_at: '2022-12-14T13:19:18.541708+00:00', + updated_at: '2022-12-14T13:19:18.541708+00:00', + }, + work_samples: [], + applicants: 10, + missions: 0, + saved: false, + not_interested: false, + }, + { + id: '9edfd0f1-53ef-4260-8b93-5a6f78a2408d', + identity_id: '2bd26aa5-f745-4f12-bca7-17916161ae8b', + description: + "**About Socious:**\n\nSocious is a talent marketplace that makes impact work accessible and transparent; we build connections between purpose-driven individuals and impact organizations through AI matching. By leveraging blockchain technology, we make social/environmental impact work traceable and reward contributions.\n\nHaving secured funding, we're in expansion mode. Join us in this journey!\n\n**Key Responsibilities:**\n\n- Lead and mentor a team of designers.\n- Deliver on all aspects of UI/UX design, from strategy to execution.\n- Translate user needs, business goals, and technology requirements to drive design decisions.\n- Partner with and influence executive stakeholders.\n- Build a user-centric vision for features across different devices including iOS, Android, and desktop.\n\n**Skills/Experience:**\n\n- A strong desire to make a social/environmental impact. Prior experience in this realm is a plus.\n- 10+ years of industry experience (or equivalent skills) as a UI/UX designer and/or manager in a cross-functional UI/UX team.\n- Experience in architecting system wide design solutions that satisfy both product and engineering requirements.\n- Experience in full product life cycle from design through deployment.\n\n**What's in it for you?**\n\n- Make a lasting impact on the lives of many and on the world.\n- Collaborate with passionate, diverse, and high-performing colleagues.\n- Achieve the perfect work-life balance with flexible hours and unlimited paid leave.\n- Thrive in a remote-first, hybrid setting with occasional team get-togethers.\n- Commit to your growth with ongoing learning and development opportunities.\n- Navigate a vibrant, fast-paced work setting.\n- Take the lead with autonomy in decision-making.\n- Relish a culture of trust, transparency, and unwavering support.\n- Enjoy a competitive compensation: USD 80k - 130k annually + token incentives.\n\n**Socious Referral Program:**\n\nKnow someone just right for Socious? We highly value word-of-mouth recommendations. Successfully refer a candidate, and enjoy a $800 reward as a token of our gratitude. Just share this job link!\n\nYour support in broadening our talent search is invaluable. Thank you.\n\n**Our mission and values:** \n\n**Mission:** Give everyone the chance to make a difference. \n\n**Our values:** \n\n- Diversity, inclusion, and belonging.\n- Life first, work second.\n- High performance for high impact.\n- Autonomy and accountability.\n- Candor, collaboration, and play.", + project_type: 'FULL_TIME', + project_length: '6_MONTHS_OR_MORE', + payment_currency: 'USD', + payment_range_lower: '80000', + payment_range_higher: '130000', + experience_level: 3, + created_at: '2024-06-01T08:45:21.893Z', + updated_at: '2024-06-01T08:45:21.893Z', + deleted_at: null, + status: 'ACTIVE', + payment_type: 'PAID', + payment_scheme: 'FIXED', + title: 'Lead Designer', + expires_at: null, + country: null, + skills: ['UI_UX_DESIGN', 'UI_DESIGN', 'DESIGN_THINKING', 'LEADERSHIP'], + causes_tags: ['SOCIAL'], + old_id: null, + other_party_id: null, + other_party_title: null, + other_party_url: null, + remote_preference: 'REMOTE', + search_tsv: + "'10':128 '130k':271 '800':299 '80k':270 'a':7,62,96,112,117,126,137,143,180,217,240,257,266,294,298,302,334 'about':3 'accessible':14 'accountability':353 'achieve':201 'across':103 'ai':29 'all':68 'and':15,25,41,60,82,91,109,160,188,196,211,236,262,296,325,340,352,356 'and/or':140 'android':108 'annually':272 'architecting':151 'as':136,301 'aspects':69 'autonomy':251,351 'balance':207 'belonging':341 'between':20 'blockchain':33 'both':158 'broadening':315 'build':18,95 'business':80 'by':31 'candidate':295 'candor':354 'centric':99 'chance':331 'collaborate':192 'collaboration':355 'colleagues':200 'commit':229 'compensation':268 'competitive':267 'connections':19 'contributions':43 'cross':145 'cross-functional':144 'culture':258 'cycle':168 'decision':254 'decision-making':253 'decisions':88 'deliver':66 'deployment':172 'design':72,87,154,170 'designer':2,139 'designers':65 'desire':114 'desktop':110 'development':237 'devices':105 'difference':335 'different':104 'diverse':195 'diversity':338 'drive':86 'driven':23 'engineering':161 'enjoy':265,297 'equivalent':134 'everyone':329 'execution':76 'executive':93 'expansion':50 'experience':121,132,149,163 'fast':243 'fast-paced':242 'features':102 'first':220,343 'flexible':209 'for':101,177,282,348 'from':73,169 'full':165 'functional':146 'funding':46 'get':227 'get-togethers':226 'give':328 'goals':81 'gratitude':306 'growth':232 'having':44 'high':198,346,349 'high-performing':197 'highly':285 'hours':210 'hybrid':221 'impact':12,26,38,119,182,350 'in':49,54,122,142,150,164,175,216,252,314 'incentives':274 'including':106 'inclusion':339 'individuals':24 'industry':131 'influence':92 'invaluable':320 'ios':107 'is':6,125,319 'it':176 'job':310 'join':52 'journey':56 'just':280,307 'key':57 'know':278 'lasting':181 'lead':1,59,249 'learning':235 'leave':214 'leveraging':32 'life':167,206,342 'link':311 'lives':185 'make':36,116,179,333 'makes':11 'making':255 'manager':141 'many':187 'marketplace':9 'matching':30 'mentor':61 'mission':324,327 'mode':51 'mouth':290 'navigate':239 'needs':79 'occasional':224 'of':64,70,130,186,259,289,304 'on':67,183,189 'ongoing':234 'opportunities':238 'or':133 'organizations':27 'our':305,316,323,336 'paced':244 'paid':213 'partner':89 'passionate':194 'perfect':203 'performance':347 'performing':199 'play':357 'plus':127 'prior':120 'product':159,166 'program':277 'purpose':22 'purpose-driven':21 're':48 'realm':124 'recommendations':291 'refer':293 'referral':276 'relish':256 'remote':219 'remote-first':218 'requirements':84,162 'responsibilities':58 'reward':42,300 'right':281 's':174 'satisfy':157 'search':318 'second':345 'secured':45 'setting':222,246 'share':308 'skills':135 'skills/experience':111 'social/environmental':37,118 'socious':4,5,275,283 'solutions':155 'someone':279 'stakeholders':94 'strategy':74 'strong':113 'successfully':292 'support':264,313 'system':152 'take':247 'talent':8,317 'team':63,148,225 'technology':34,83 'thank':321 'that':10,156 'the':184,190,202,248,330 'this':55,123,309 'thrive':215 'through':28,171 'to':75,85,115,230,332 'togethers':228 'token':273,303 'traceable':40 'translate':77 'transparency':261 'transparent':16 'trust':260 'ui/ux':71,138,147 'unlimited':212 'unwavering':263 'us':53 'usd':269 'user':78,98 'user-centric':97 'value':286 'values':326,337 'vibrant':241 'vision':100 'we':17,35,47,284 'what':173 'wide':153 'with':90,193,208,223,233,250 'word':288 'word-of-mouth':287 'work':13,39,205,245,344 'work-life':204 'world':191 'years':129 'you':178,322 'your':231,312", + city: null, + weekly_hours_lower: null, + weekly_hours_higher: null, + commitment_hours_lower: null, + commitment_hours_higher: null, + geoname_id: null, + job_category_id: 'bc2e14cd-5087-44cd-ad0d-8e6a87a4c35a', + impact_job: true, + promoted: false, + kind: 'JOB', + payment_mode: null, + identity_type: 'organizations', + identity_meta: { + id: '2bd26aa5-f745-4f12-bca7-17916161ae8b', + city: 'Tokyo, Tokyo Prefecture', + name: 'Socious', + email: 'info@socious.io', + image: 'https://storage.googleapis.com/socious-gcs/ad4ae46f5dc138d8bc63928890bc64e0.png', + hiring: true, + status: 'ACTIVE', + address: 'Nihonbashi 3-2-14-1F, Chuo Ward, Tokyo, Japan 103-0027', + country: 'JP', + mission: + 'Our mission is to give everyone the chance to make a difference.\r\n\r\nWe are a talent platform that makes impact work accessible and transparent; we build connections between purpose-driven individuals and organizations. By leveraging blockchain technology, we make social/environmental impact work traceable and reward contributions with crypto tokens.', + verified: true, + shortname: 'socious', + description: null, + wallet_address: null, + verified_impact: true, + }, + job_category: { + id: 'bc2e14cd-5087-44cd-ad0d-8e6a87a4c35a', + name: 'UX/UI Design', + hourly_wage_dollars: 32, + created_at: '2022-12-14T13:19:18.541708+00:00', + updated_at: '2022-12-14T13:19:18.541708+00:00', + }, + work_samples: [], + applicants: 7, + missions: 1, + saved: false, + not_interested: false, + }, + { + id: '615be3c0-b294-4901-a208-2409d545959d', + identity_id: '2bd26aa5-f745-4f12-bca7-17916161ae8b', + description: + "### **About Us:**\r\n\r\nSocious is a talent marketplace that makes impact work accessible and transparent; we build connections between purpose-driven individuals and impact organizations through AI matching. By leveraging blockchain technology, we make social/environmental impact work traceable and reward contributions.\r\n\r\nHaving secured funding, we're in expansion mode. Join us in this journey!\r\n\r\n### **Job Summary:**\r\n\r\nAs a Sales & BD Rep, you will be responsible for driving sales growth by identifying and engaging potential customers, building strong relationships, and effectively communicating the value of our products/services. You will work closely with the sales and marketing teams to execute sales strategies and achieve targets.\r\n\r\n### **Key Responsibilities:**\r\n\r\n- **Prospect and Generate Leads:** Identify and research potential customers through various channels, including cold calling, email campaigns, social media, and networking events.\r\n- **Build Relationships:** Establish and maintain strong relationships with prospective and existing clients, understanding their needs and providing tailored solutions.\r\n- **Sales Presentations:** Conduct product demonstrations and presentations to showcase the value and benefits of our offerings.\r\n- **Negotiate and Close Deals:** Effectively negotiate terms and close sales deals, ensuring customer satisfaction and loyalty.\r\n- **Market Research:** Stay informed about industry trends, competitor activities, and market conditions to identify opportunities and threats.\r\n- **Collaborate:** Work closely with the sales and marketing teams to develop and implement effective sales strategies and campaigns.\r\n- **Customer Feedback:** Gather and relay customer feedback to the product development team to help improve our offerings.\r\n- **Reporting:** Maintain accurate records of sales activities, pipeline, and performance metrics, and provide regular reports to the sales manager.\r\n\r\n### **Skills/Experience:**\r\n\r\n- A strong desire to make a social/environmental impact. Prior experience in this realm is a plus.\r\n- **Experience:** 1-2 years of sales experience (preferred but not required). We welcome applications from fresh graduates, especially those with relevant internships or project experience, ideally in a tech startup or related industry.\r\n- **Education:** Bachelor's degree in Business, Marketing, or a related field is preferred.\r\n- **Skills:**\r\n - Excellent communication and interpersonal skills in English (business level) and Japanese (Native-level Japanese is preferred).\r\n - Strong presentation and negotiation abilities.\r\n - Proficiency in using CRM software and sales tools.\r\n - Ability to work independently and as part of a team.\r\n- **Attributes:**\r\n - Goal-oriented with a strong drive to achieve and exceed targets.\r\n - Adaptable and able to thrive in a fast-paced startup environment.\r\n - Passionate about technology and innovation.\r\n\r\n### **What We Offer:**\r\n\r\n- Make a lasting impact on the lives of many and on the world.\r\n- Take part in shaping the future by working with the most advanced and pioneering technologies in the field.\r\n- Collaborate with and learn from passionate, diverse, and high-performing colleagues.\r\n- Achieve the perfect work-life balance with flexible hours and unlimited paid leave.\r\n- Thrive in a remote-first setting with occasional team get-togethers.\r\n- Commit to your growth with ongoing learning and development opportunities.\r\n- Navigate a vibrant, fast-paced work setting.\r\n- Take the lead with autonomy in decision-making.\r\n- Relish a culture of trust, transparency, and unwavering support.\r\n- Become a member of a team that is deeply committed to fostering a socially responsible and ecologically sustainable work environment.\r\n- Enjoy a competitive compensation package: a base salary of ¥5,000,000 - ¥8,000,000 annually (approximately USD 35,000 - 60,000), plus 10%-30% commission on sales revenue generated, along with token allocation.\r\n\r\n**Socious Referral Program:**\r\n\r\nKnow someone just right for Socious? We highly value word-of-mouth recommendations. Successfully refer a candidate, and enjoy a $1,000 reward as a token of our gratitude. Just share this job link!\r\n\r\nYour support in broadening our talent search is invaluable. Thank you.\r\n\r\n**Our mission and values:**\r\n\r\n**Mission:** Give everyone the chance to make a difference.\r\n\r\n**Our values:**\r\n\r\n- Diversity, inclusion, and belonging.\r\n- Life first, work second.\r\n- High performance for high impact.\r\n- Autonomy and accountability.\r\n- Candor, collaboration, and play.", + project_type: 'FULL_TIME', + project_length: '6_MONTHS_OR_MORE', + payment_currency: 'USD', + payment_range_lower: '35000', + payment_range_higher: '90000', + experience_level: 1, + created_at: '2024-05-29T07:26:08.775Z', + updated_at: '2024-05-29T22:27:13.976Z', + deleted_at: null, + status: 'ACTIVE', + payment_type: 'PAID', + payment_scheme: 'FIXED', + title: 'Sales & BD Rep', + expires_at: null, + country: 'JP', + skills: ['BUSINESS_DEVELOPMENT', 'MARKETING_STRATEGY', 'SALES', 'SALES_MANAGEMENT', 'SOCIAL_MEDIA_MARKETING'], + causes_tags: ['SOCIAL'], + old_id: null, + other_party_id: null, + other_party_title: null, + other_party_url: null, + remote_preference: 'HYBRID', + search_tsv: + "'-2':272 '-30':540 '000':526,527,529,530,535,537,575 '1':271,574 '10':539 '35':534 '5':525 '60':536 '8':528 'a':8,61,254,259,268,297,311,355,362,376,391,449,471,488,497,500,508,517,521,569,573,578,610 'abilities':338 'ability':347 'able':372 'about':4,186,383 'accessible':15 'accountability':629 'accurate':236 'achieve':105,366,433 'activities':190,240 'adaptable':370 'advanced':414 'ai':30 'allocation':549 'along':546 'and':16,26,42,75,82,97,104,110,114,128,134,140,146,155,161,167,173,180,191,197,205,210,215,220,242,245,319,326,336,344,351,367,371,385,399,415,423,428,443,467,493,511,571,601,616,628,632 'annually':531 'applications':283 'approximately':532 'as':60,352,577 'attributes':357 'autonomy':482,627 'bachelor':304 'balance':439 'base':522 'bd':2,63 'be':67 'become':496 'belonging':617 'benefits':162 'between':21 'blockchain':34 'broadening':591 'build':19,131 'building':79 'business':308,324 'but':278 'by':32,73,409 'calling':123 'campaigns':125,216 'candidate':570 'candor':630 'chance':607 'channels':120 'clients':142 'close':168,174 'closely':93,201 'cold':122 'collaborate':199,421 'collaboration':631 'colleagues':432 'commission':541 'commit':460 'committed':505 'communicating':84 'communication':318 'compensation':519 'competitive':518 'competitor':189 'conditions':193 'conduct':152 'connections':20 'contributions':44 'crm':342 'culture':489 'customer':178,217,222 'customers':78,117 'deals':169,176 'decision':485 'decision-making':484 'deeply':504 'degree':306 'demonstrations':154 'desire':256 'develop':209 'development':227,468 'difference':611 'diverse':427 'diversity':614 'drive':364 'driven':24 'driving':70 'ecologically':512 'education':303 'effective':212 'effectively':83,170 'email':124 'engaging':76 'english':323 'enjoy':516,572 'ensuring':177 'environment':381,515 'especially':287 'establish':133 'events':130 'everyone':605 'exceed':368 'excellent':317 'execute':101 'existing':141 'expansion':51 'experience':263,270,276,294 'fast':378,474 'fast-paced':377,473 'feedback':218,223 'field':313,420 'first':452,619 'flexible':441 'for':69,557,624 'fostering':507 'fresh':285 'from':284,425 'funding':47 'future':408 'gather':219 'generate':111 'generated':545 'get':458 'get-togethers':457 'give':604 'goal':359 'goal-oriented':358 'graduates':286 'gratitude':582 'growth':72,463 'having':45 'help':230 'high':430,622,625 'high-performing':429 'highly':560 'hours':442 'ideally':295 'identify':113,195 'identifying':74 'impact':13,27,39,261,393,626 'implement':211 'improve':231 'in':50,55,264,296,307,322,340,375,405,418,448,483,590 'including':121 'inclusion':615 'independently':350 'individuals':25 'industry':187,302 'informed':185 'innovation':386 'internships':291 'interpersonal':320 'invaluable':596 'is':7,267,314,332,503,595 'japanese':327,331 'job':58,586 'join':53 'journey':57 'just':555,583 'key':107 'know':553 'lasting':392 'lead':480 'leads':112 'learn':424 'learning':466 'leave':446 'level':325,330 'leveraging':33 'life':438,618 'link':587 'lives':396 'loyalty':181 'maintain':135,235 'make':37,258,390,609 'makes':12 'making':486 'manager':252 'many':398 'market':182,192 'marketing':98,206,309 'marketplace':10 'matching':31 'media':127 'member':498 'metrics':244 'mission':600,603 'mode':52 'most':413 'mouth':565 'native':329 'native-level':328 'navigate':470 'needs':145 'negotiate':166,171 'negotiation':337 'networking':129 'not':279 'occasional':455 'of':87,163,238,274,354,397,490,499,524,564,580 'offer':389 'offerings':165,233 'on':394,400,542 'ongoing':465 'opportunities':196,469 'or':292,300,310 'organizations':28 'oriented':360 'our':88,164,232,581,592,599,612 'paced':379,475 'package':520 'paid':445 'part':353,404 'passionate':382,426 'perfect':435 'performance':243,623 'performing':431 'pioneering':416 'pipeline':241 'play':633 'plus':269,538 'potential':77,116 'preferred':277,315,333 'presentation':335 'presentations':151,156 'prior':262 'product':153,226 'products/services':89 'proficiency':339 'program':552 'project':293 'prospect':109 'prospective':139 'provide':246 'providing':147 'purpose':23 'purpose-driven':22 're':49 'realm':266 'recommendations':566 'records':237 'refer':568 'referral':551 'regular':247 'related':301,312 'relationships':81,132,137 'relay':221 'relevant':290 'relish':487 'remote':451 'remote-first':450 'rep':3,64 'reporting':234 'reports':248 'required':280 'research':115,183 'responsibilities':108 'responsible':68,510 'revenue':544 'reward':43,576 'right':556 's':305 'salary':523 'sales':1,62,71,96,102,150,175,204,213,239,251,275,345,543 'satisfaction':179 'search':594 'second':621 'secured':46 'setting':453,477 'shaping':406 'share':584 'showcase':158 'skills':316,321 'skills/experience':253 'social':126 'social/environmental':38,260 'socially':509 'socious':6,550,558 'software':343 'solutions':149 'someone':554 'startup':299,380 'stay':184 'strategies':103,214 'strong':80,136,255,334,363 'successfully':567 'summary':59 'support':495,589 'sustainable':513 'tailored':148 'take':403,478 'talent':9,593 'targets':106,369 'team':228,356,456,501 'teams':99,207 'tech':298 'technologies':417 'technology':35,384 'terms':172 'thank':597 'that':11,502 'the':85,95,159,203,225,250,395,401,407,412,419,434,479,606 'their':144 'this':56,265,585 'those':288 'threats':198 'thrive':374,447 'through':29,118 'to':100,157,194,208,224,229,249,257,348,365,373,461,506,608 'togethers':459 'token':548,579 'tools':346 'traceable':41 'transparency':492 'transparent':17 'trends':188 'trust':491 'understanding':143 'unlimited':444 'unwavering':494 'us':5,54 'usd':533 'using':341 'value':86,160,561 'values':602,613 'various':119 'vibrant':472 'we':18,36,48,281,388,559 'welcome':282 'what':387 'will':66,91 'with':94,138,202,289,361,411,422,440,454,464,481,547 'word':563 'word-of-mouth':562 'work':14,40,92,200,349,437,476,514,620 'work-life':436 'working':410 'world':402 'years':273 'you':65,90,598 'your':462,588", + city: 'Tokyo', + weekly_hours_lower: null, + weekly_hours_higher: null, + commitment_hours_lower: null, + commitment_hours_higher: null, + geoname_id: null, + job_category_id: '1e76aff6-f2cb-48a0-bb18-4c9e9d42c88e', + impact_job: true, + promoted: true, + kind: 'JOB', + payment_mode: null, + identity_type: 'organizations', + identity_meta: { + id: '2bd26aa5-f745-4f12-bca7-17916161ae8b', + city: 'Tokyo, Tokyo Prefecture', + name: 'Socious', + email: 'info@socious.io', + image: 'https://storage.googleapis.com/socious-gcs/ad4ae46f5dc138d8bc63928890bc64e0.png', + hiring: true, + status: 'ACTIVE', + address: 'Nihonbashi 3-2-14-1F, Chuo Ward, Tokyo, Japan 103-0027', + country: 'JP', + mission: + 'Our mission is to give everyone the chance to make a difference.\r\n\r\nWe are a talent platform that makes impact work accessible and transparent; we build connections between purpose-driven individuals and organizations. By leveraging blockchain technology, we make social/environmental impact work traceable and reward contributions with crypto tokens.', + verified: true, + shortname: 'socious', + description: null, + wallet_address: null, + verified_impact: true, + }, + job_category: { + id: '1e76aff6-f2cb-48a0-bb18-4c9e9d42c88e', + name: 'Sales', + hourly_wage_dollars: 20, + created_at: '2023-01-26T15:00:00+00:00', + updated_at: '2023-01-26T15:00:00+00:00', + }, + work_samples: [], + applicants: 10, + missions: 0, + saved: true, + not_interested: false, + }, + { + id: '59610e25-44a5-42ef-80b8-38945090611b', + identity_id: '2bd26aa5-f745-4f12-bca7-17916161ae8b', + description: + "**About Socious:**\n\nSocious is a talent marketplace that makes impact work accessible and transparent; we build connections between purpose-driven individuals and impact organizations through AI matching. By leveraging blockchain technology, we make social/environmental impact work traceable and reward contributions.\n\nHaving secured funding, we're in expansion mode. Join us in this journey!\n\n***Responsibilities:***\n\n- Collaborate with the team to design, implement and manage scalable, highly available systems\n- Ensure the provision of high-quality, reliable and maintainable code\n- Implement automation tools and frameworks (CI/CD pipelines)\n- Collaborate with team members to improve the company’s engineering tools, systems and procedures, and data security\n- Optimize the company’s computing architecture\n- Conduct systems tests for security, performance, and availability\n- Develop and maintain design and troubleshooting documentation\n- Implement the latest improvement proposals in DevOps practices\n\n***Skills/Experience:***\n\n- Proven experience as a Backend and DevOps Engineer or similar role\n- Minimum 5 years of experience in software development, especially with Python, JavaScript, NodeJS, PostgreSQL, AWS, and Azure\n- Knowledge of technological trends to build strategy\n- Understanding of budgets and business-planning\n- Familiarity with basic cryptography\n- Familiarity with P2P networks\n- Strong knowledge of concurrency and writing efficient and safe multithreaded code\n- Excellent communication skills\n- Leadership and organizational abilities\n- Strategic thinking\n- Problem-solving aptitude\n- BSc/BA in Computer Science, Engineering or a related field; MBA or other relevant graduate degree is a plus\n\n**What's in it for you?**\n\n- Make a lasting impact on the lives of many and on the world.\n- Take part in shaping the future by working with the most advanced and pioneering technologies in the field.\n- Collaborate with and learn from passionate, diverse, and high-performing colleagues.\n- Achieve the perfect work-life balance with flexible hours and unlimited paid leave.\n- Thrive in a remote-first setting with occasional team get-togethers.\n- Commit to your growth with ongoing learning and development opportunities.\n- Navigate a vibrant, fast-paced work setting.\n- Take the lead with autonomy in decision-making.\n- Relish a culture of trust, transparency, and unwavering support.\n- Become a member of a team that is deeply committed to fostering a socially responsible and ecologically sustainable work environment.\n- Enjoy a competitive compensation: USD 60k - 100k per year + tokens (similar to stock options)\n\n**Our mission and values:**\n\n**Mission:** Give everyone the chance to make a difference.\n\n**Our values:**\n\n- Diversity, inclusion, and belonging.\n- Life first, work second.\n- High performance for high impact.\n- Autonomy and accountability.\n- Candor, collaboration, and play.", + project_type: 'FULL_TIME', + project_length: '6_MONTHS_OR_MORE', + payment_currency: 'USD', + payment_range_lower: '60000', + payment_range_higher: '100000', + experience_level: 2, + created_at: '2024-05-15T15:04:15.734Z', + updated_at: '2024-05-15T15:04:15.734Z', + deleted_at: null, + status: 'ACTIVE', + payment_type: 'PAID', + payment_scheme: 'FIXED', + title: 'Backend & DevOps Engineer', + expires_at: null, + country: null, + skills: ['AWS', 'NODE.JS', 'BLOCKCHAIN_DEVELOPMENT'], + causes_tags: ['SOCIAL'], + old_id: null, + other_party_id: null, + other_party_title: null, + other_party_url: null, + remote_preference: 'REMOTE', + search_tsv: + "'100k':367 '5':149 '60k':366 'a':8,140,217,227,236,294,316,333,342,345,353,362,386 'abilities':204 'about':4 'accessible':15 'accountability':405 'achieve':278 'advanced':259 'ai':30 'and':16,26,42,66,80,86,102,104,119,122,125,142,163,175,191,194,202,244,260,268,273,288,312,338,356,377,392,404,408 'aptitude':210 'architecture':112 'as':139 'automation':84 'autonomy':327,403 'availability':120 'available':70 'aws':162 'azure':164 'backend':1,141 'balance':284 'basic':181 'become':341 'belonging':393 'between':21 'blockchain':34 'bsc/ba':211 'budgets':174 'build':19,170 'business':177 'business-planning':176 'by':32,254 'candor':406 'chance':383 'ci/cd':88 'code':82,197 'collaborate':59,90,266 'collaboration':407 'colleagues':277 'commit':305 'committed':350 'communication':199 'company':97,109 'compensation':364 'competitive':363 'computer':213 'computing':111 'concurrency':190 'conduct':113 'connections':20 'contributions':44 'cryptography':182 'culture':334 'data':105 'decision':330 'decision-making':329 'deeply':349 'degree':225 'design':64,124 'develop':121 'development':155,313 'devops':2,134,143 'difference':387 'diverse':272 'diversity':390 'documentation':127 'driven':24 'ecologically':357 'efficient':193 'engineer':3,144 'engineering':99,215 'enjoy':361 'ensure':72 'environment':360 'especially':156 'everyone':381 'excellent':198 'expansion':51 'experience':138,152 'familiarity':179,183 'fast':319 'fast-paced':318 'field':219,265 'first':297,395 'flexible':286 'for':116,233,400 'fostering':352 'frameworks':87 'from':270 'funding':47 'future':253 'get':303 'get-togethers':302 'give':380 'graduate':224 'growth':308 'having':45 'high':77,275,398,401 'high-performing':274 'high-quality':76 'highly':69 'hours':287 'impact':13,27,39,238,402 'implement':65,83,128 'improve':95 'improvement':131 'in':50,55,133,153,212,231,250,263,293,328 'inclusion':391 'individuals':25 'is':7,226,348 'it':232 'javascript':159 'join':53 'journey':57 'knowledge':165,188 'lasting':237 'latest':130 'lead':325 'leadership':201 'learn':269 'learning':311 'leave':291 'leveraging':33 'life':283,394 'lives':241 'maintain':123 'maintainable':81 'make':37,235,385 'makes':12 'making':331 'manage':67 'many':243 'marketplace':10 'matching':31 'mba':220 'member':343 'members':93 'minimum':148 'mission':376,379 'mode':52 'most':258 'multithreaded':196 'navigate':315 'networks':186 'nodejs':160 'occasional':300 'of':75,151,166,173,189,242,335,344 'on':239,245 'ongoing':310 'opportunities':314 'optimize':107 'options':374 'or':145,216,221 'organizational':203 'organizations':28 'other':222 'our':375,388 'p2p':185 'paced':320 'paid':290 'part':249 'passionate':271 'per':368 'perfect':280 'performance':118,399 'performing':276 'pioneering':261 'pipelines':89 'planning':178 'play':409 'plus':228 'postgresql':161 'practices':135 'problem':208 'problem-solving':207 'procedures':103 'proposals':132 'proven':137 'provision':74 'purpose':23 'purpose-driven':22 'python':158 'quality':78 're':49 'related':218 'relevant':223 'reliable':79 'relish':332 'remote':296 'remote-first':295 'responsibilities':58 'responsible':355 'reward':43 'role':147 's':98,110,230 'safe':195 'scalable':68 'science':214 'second':397 'secured':46 'security':106,117 'setting':298,322 'shaping':251 'similar':146,371 'skills':200 'skills/experience':136 'social/environmental':38 'socially':354 'socious':5,6 'software':154 'solving':209 'stock':373 'strategic':205 'strategy':171 'strong':187 'support':340 'sustainable':358 'systems':71,101,114 'take':248,323 'talent':9 'team':62,92,301,346 'technological':167 'technologies':262 'technology':35 'tests':115 'that':11,347 'the':61,73,96,108,129,240,246,252,257,264,279,324,382 'thinking':206 'this':56 'thrive':292 'through':29 'to':63,94,169,306,351,372,384 'togethers':304 'tokens':370 'tools':85,100 'traceable':41 'transparency':337 'transparent':17 'trends':168 'troubleshooting':126 'trust':336 'understanding':172 'unlimited':289 'unwavering':339 'us':54 'usd':365 'values':378,389 'vibrant':317 'we':18,36,48 'what':229 'with':60,91,157,180,184,256,267,285,299,309,326 'work':14,40,282,321,359,396 'work-life':281 'working':255 'world':247 'writing':192 'year':369 'years':150 'you':234 'your':307", + city: null, + weekly_hours_lower: null, + weekly_hours_higher: null, + commitment_hours_lower: null, + commitment_hours_higher: null, + geoname_id: null, + job_category_id: '95dedd87-f0d5-46f9-8756-8946308fca77', + impact_job: true, + promoted: false, + kind: 'JOB', + payment_mode: null, + identity_type: 'organizations', + identity_meta: { + id: '2bd26aa5-f745-4f12-bca7-17916161ae8b', + city: 'Tokyo, Tokyo Prefecture', + name: 'Socious', + email: 'info@socious.io', + image: 'https://storage.googleapis.com/socious-gcs/ad4ae46f5dc138d8bc63928890bc64e0.png', + hiring: true, + status: 'ACTIVE', + address: 'Nihonbashi 3-2-14-1F, Chuo Ward, Tokyo, Japan 103-0027', + country: 'JP', + mission: + 'Our mission is to give everyone the chance to make a difference.\r\n\r\nWe are a talent platform that makes impact work accessible and transparent; we build connections between purpose-driven individuals and organizations. By leveraging blockchain technology, we make social/environmental impact work traceable and reward contributions with crypto tokens.', + verified: true, + shortname: 'socious', + description: null, + wallet_address: null, + verified_impact: true, + }, + job_category: { + id: '95dedd87-f0d5-46f9-8756-8946308fca77', + name: 'Backend development', + hourly_wage_dollars: 25, + created_at: '2022-12-14T13:19:18.541708+00:00', + updated_at: '2022-12-14T13:19:18.541708+00:00', + }, + work_samples: [], + applicants: 6, + missions: 4, + saved: false, + not_interested: false, + }, + ], +}; + +export const SEARCH_PEOPLE = { + page: 1, + limit: 20, + total_count: 16, + items: [ + { + id: 'c5854445-0999-4607-a6c5-70483ae59fd6', + username: 'shantanu-gupta1943', + first_name: 'Shantanu', + last_name: 'Gupta', + city: 'New Delhi', + country: 'IN', + geoname_id: null, + mission: null, + bio: 'Data Scientist with 2.5+ years of experience currently looking to change the world and the way we think, one day at a time', + impact_points: 0, + open_to_work: false, + open_to_volunteer: false, + skills: ['AI', 'COMPUTER_SCIENCE', 'DATA_SCIENCE', 'HUMAN_RESOURCES', 'MACHINE_LEARNING'], + followers: 1, + followings: 1, + created_at: '2022-07-14T07:12:45.000Z', + wallet_address: null, + social_causes: ['ANIMAL_RIGHTS', 'BIODIVERSITY', 'CLIMATE_CHANGE', 'CORRUPTION', 'OTHER'], + proofspace_connect_id: null, + phone: '8073864852', + address: null, + avatar: null, + cover_image: null, + reported: false, + following: false, + follower: false, + connection_status: null, + connection_id: null, + mobile_country_code: '+81', + identity_verified: false, + is_contributor: null, + events: null, + portfolios: null, + certificates: null, + recommendations: null, + languages: null, + experiences: null, + educations: null, + }, + { + id: 'dc573b9e-fa04-4112-9ba8-4f2bf53af508', + username: 'krishantha1704', + first_name: 'Krishantha', + last_name: 'Karunarathna', + city: null, + country: null, + geoname_id: null, + mission: null, + bio: null, + impact_points: 0, + open_to_work: false, + open_to_volunteer: false, + skills: [], + followers: 0, + followings: 0, + created_at: '2023-06-12T11:18:37.105Z', + wallet_address: null, + social_causes: null, + proofspace_connect_id: null, + phone: null, + address: null, + avatar: { + id: 'b88fc4c1-4e93-4b3d-8f52-71dbe98f0ef2', + identity_id: 'dc573b9e-fa04-4112-9ba8-4f2bf53af508', + filename: 'Image.png', + url: 'https://storage.googleapis.com/socious-gcs/fff70b59e19d07f5f80aa7d0721d440b.png', + created_at: '2023-06-12T11:25:18.060813+00:00', + }, + cover_image: null, + reported: false, + following: false, + follower: false, + connection_status: null, + connection_id: null, + mobile_country_code: null, + identity_verified: false, + is_contributor: null, + events: null, + portfolios: null, + certificates: null, + recommendations: null, + languages: null, + experiences: null, + educations: null, + }, + { + id: '0959adc5-6ff2-467f-9e50-43d156164035', + username: 'ishantagarwal326861', + first_name: 'Ishant', + last_name: 'Agarwal', + city: 'Gurgaon, State of Haryāna', + country: 'IN', + geoname_id: 1270642, + mission: null, + bio: null, + impact_points: 0, + open_to_work: false, + open_to_volunteer: false, + skills: [ + 'AGILE_METHODOLOGIES', + 'AWS', + 'CSS', + 'GIT', + 'HTML', + 'JAVASCRIPT', + 'JSON', + 'REACT.JS', + 'REST_API', + 'ENGINEERING', + ], + followers: 0, + followings: 0, + created_at: '2023-07-19T05:08:27.559Z', + wallet_address: null, + social_causes: ['ANIMAL_RIGHTS', 'BLACK_LIVES_MATTER', 'CLIMATE_CHANGE', 'EDUCATION', 'GENDER_EQUALITY'], + proofspace_connect_id: null, + phone: null, + address: null, + avatar: null, + cover_image: null, + reported: false, + following: false, + follower: false, + connection_status: null, + connection_id: null, + mobile_country_code: null, + identity_verified: false, + is_contributor: null, + events: null, + portfolios: null, + certificates: null, + recommendations: null, + languages: null, + experiences: null, + educations: null, + }, + { + id: '09eb2184-72e1-4a10-9c0d-3ce53a35acf6', + username: 'prashanttrehan137744', + first_name: 'Prashant', + last_name: 'T', + city: null, + country: null, + geoname_id: null, + mission: null, + bio: null, + impact_points: 0, + open_to_work: false, + open_to_volunteer: false, + skills: [], + followers: 0, + followings: 0, + created_at: '2023-09-05T19:42:35.645Z', + wallet_address: null, + social_causes: null, + proofspace_connect_id: null, + phone: null, + address: null, + avatar: null, + cover_image: null, + reported: false, + following: false, + follower: false, + connection_status: null, + connection_id: null, + mobile_country_code: null, + identity_verified: false, + is_contributor: null, + events: null, + portfolios: null, + certificates: null, + recommendations: null, + languages: null, + experiences: null, + educations: null, + }, + { + id: 'b3e49c94-1b2c-4d57-aef7-69a323fea31b', + username: 'gaikwadshantanu0047622', + first_name: 'Shantanu', + last_name: 'Gaikwad', + city: null, + country: null, + geoname_id: null, + mission: null, + bio: null, + impact_points: 0, + open_to_work: true, + open_to_volunteer: false, + skills: [], + followers: 0, + followings: 0, + created_at: '2023-09-27T12:24:26.336Z', + wallet_address: null, + social_causes: null, + proofspace_connect_id: null, + phone: null, + address: null, + avatar: null, + cover_image: null, + reported: false, + following: false, + follower: false, + connection_status: null, + connection_id: null, + mobile_country_code: null, + identity_verified: false, + is_contributor: null, + events: null, + portfolios: null, + certificates: null, + recommendations: null, + languages: null, + experiences: null, + educations: null, + }, + { + id: '2e101596-46af-4830-b720-2b1a4aa29450', + username: 'hashantha', + first_name: 'hashantha', + last_name: 'wickramasinghe', + city: null, + country: null, + geoname_id: null, + mission: null, + bio: null, + impact_points: 0, + open_to_work: false, + open_to_volunteer: false, + skills: [], + followers: 0, + followings: 0, + created_at: '2024-07-18T03:23:04.399Z', + wallet_address: null, + social_causes: null, + proofspace_connect_id: null, + phone: null, + address: null, + avatar: null, + cover_image: null, + reported: false, + following: false, + follower: false, + connection_status: null, + connection_id: null, + mobile_country_code: null, + identity_verified: false, + is_contributor: null, + events: null, + portfolios: null, + certificates: null, + recommendations: null, + languages: null, + experiences: null, + educations: null, + }, + { + id: '38a23ed6-daa2-47ab-aa66-da7e7afef637', + username: 'ishant.27june8693', + first_name: 'Ishant', + last_name: 'Sahu', + city: null, + country: null, + geoname_id: null, + mission: null, + bio: null, + impact_points: 0, + open_to_work: false, + open_to_volunteer: false, + skills: [], + followers: 0, + followings: 0, + created_at: '2023-08-25T06:12:26.177Z', + wallet_address: null, + social_causes: null, + proofspace_connect_id: null, + phone: null, + address: null, + avatar: null, + cover_image: null, + reported: false, + following: false, + follower: false, + connection_status: null, + connection_id: null, + mobile_country_code: null, + identity_verified: false, + is_contributor: null, + events: null, + portfolios: null, + certificates: null, + recommendations: null, + languages: null, + experiences: null, + educations: null, + }, + { + id: '15d4e6e6-24cc-4d95-8322-9357b867299b', + username: 'rcsnishant20009124', + first_name: 'Nishant', + last_name: 'Sharma', + city: null, + country: null, + geoname_id: null, + mission: null, + bio: null, + impact_points: 0, + open_to_work: false, + open_to_volunteer: false, + skills: [], + followers: 0, + followings: 0, + created_at: '2023-09-08T04:02:34.577Z', + wallet_address: null, + social_causes: null, + proofspace_connect_id: null, + phone: null, + address: null, + avatar: null, + cover_image: null, + reported: false, + following: false, + follower: false, + connection_status: null, + connection_id: null, + mobile_country_code: null, + identity_verified: false, + is_contributor: null, + events: null, + portfolios: null, + certificates: null, + recommendations: null, + languages: null, + experiences: null, + educations: null, + }, + { + id: '1cb25a4e-cbba-4e26-a29e-2f325e0653bc', + username: 'prashantco1113016', + first_name: 'Prashant', + last_name: 'Singh', + city: null, + country: null, + geoname_id: null, + mission: null, + bio: null, + impact_points: 0, + open_to_work: false, + open_to_volunteer: false, + skills: [], + followers: 0, + followings: 0, + created_at: '2023-09-08T05:36:21.544Z', + wallet_address: null, + social_causes: null, + proofspace_connect_id: null, + phone: null, + address: null, + avatar: null, + cover_image: null, + reported: false, + following: false, + follower: false, + connection_status: null, + connection_id: null, + mobile_country_code: null, + identity_verified: false, + is_contributor: null, + events: null, + portfolios: null, + certificates: null, + recommendations: null, + languages: null, + experiences: null, + educations: null, + }, + { + id: 'ff1d33ce-1269-4f15-a1d9-4f6e7174b7c1', + username: 'prashant-tribhuvan1978', + first_name: 'prashant', + last_name: 'tribhuvan', + city: 'Mumbai', + country: 'IN', + geoname_id: null, + mission: null, + bio: 'Seo with 14 years of experience in digital marketing', + impact_points: 0, + open_to_work: false, + open_to_volunteer: false, + skills: ['SEO', 'SOCIAL_MEDIA_MARKETING'], + followers: 0, + followings: 1, + created_at: '2022-08-01T07:27:36.000Z', + wallet_address: null, + social_causes: ['HUMAN_RIGHTS', 'MENTAL', 'ANTI_SEMITISM', 'OTHER', 'ISLAMOPHOBIA'], + proofspace_connect_id: null, + phone: '8097460767', + address: null, + avatar: null, + cover_image: null, + reported: false, + following: false, + follower: false, + connection_status: null, + connection_id: null, + mobile_country_code: '+91', + identity_verified: false, + is_contributor: null, + events: null, + portfolios: null, + certificates: null, + recommendations: null, + languages: null, + experiences: null, + educations: null, + }, + { + id: '2c462c84-0323-45cd-809d-3ed84b592215', + username: 'prashant-vijay6167', + first_name: 'Prashant', + last_name: 'Vijay', + city: 'Delhi', + country: 'IN', + geoname_id: null, + mission: null, + bio: 'Experienced marketing and growth expert with proven track record of driving performance and achieving results. Over 12+ years experienced with a focus on user acquisition, growth, app marketing, search engine optimization and social media.', + impact_points: 0, + open_to_work: false, + open_to_volunteer: false, + skills: ['DIGITAL_MARKETING', 'MARKETING', 'MARKETING_STRATEGY', 'SOCIAL_MEDIA_MARKETING', 'SEO'], + followers: 4, + followings: 1, + created_at: '2022-04-24T22:37:25.000Z', + wallet_address: null, + social_causes: ['ANIMAL_RIGHTS', 'SUSTAINABLE_ENERGY', 'SUSTAINABILITY', 'NATURAL_DISASTERS', 'CLIMATE_CHANGE'], + proofspace_connect_id: null, + phone: '9873761729', + address: null, + avatar: null, + cover_image: null, + reported: false, + following: false, + follower: false, + connection_status: null, + connection_id: null, + mobile_country_code: '+91', + identity_verified: false, + is_contributor: null, + events: null, + portfolios: null, + certificates: null, + recommendations: null, + languages: null, + experiences: null, + educations: null, + }, + { + id: '5c800ad1-f8e7-4353-8177-33eac9c1f412', + username: 'neeshant-pandey5984', + first_name: 'Neeshant', + last_name: 'Pandey', + city: 'Pune', + country: 'IN', + geoname_id: null, + mission: null, + bio: 'I am recent graduate from one of the top institutes of india, IIT hyderbad.I am very passonate about learning new and emerging technologies and I am also a fast learner.I am good at problem solving.I am good at react js, nodejs and have already work on projects which have impact more than 10000 customers and have created more than $200,000 dollars for my current company Saas Labs', + impact_points: 0, + open_to_work: false, + open_to_volunteer: false, + skills: ['REACT.JS', 'JAVASCRIPT', 'HTML', 'CSS', 'NODE.JS'], + followers: 0, + followings: 0, + created_at: '2022-08-22T11:39:09.000Z', + wallet_address: null, + social_causes: ['CLIMATE_CHANGE', 'DEPOPULATION', 'GENDER_EQUALITY', 'CIVIC_ENGAGEMENT'], + proofspace_connect_id: null, + phone: '6304755240', + address: null, + avatar: { + id: '87b8c57d-8c08-40d9-905d-3efe4236e3f7', + identity_id: '5c800ad1-f8e7-4353-8177-33eac9c1f412', + filename: 'CF789628-BA29-4417-87B5-9B6819602185_J6cT67yu.png', + url: 'https://storage.googleapis.com/socious-gcs/1661168793/CF789628-BA29-4417-87B5-9B6819602185_J6cT67yu.png', + created_at: '2022-10-10T07:20:57.935185+00:00', + }, + cover_image: null, + reported: false, + following: false, + follower: false, + connection_status: null, + connection_id: null, + mobile_country_code: '+91', + identity_verified: false, + is_contributor: null, + events: null, + portfolios: null, + certificates: null, + recommendations: null, + languages: null, + experiences: null, + educations: null, + }, + { + id: 'a2c8c47c-aec2-4dbf-9aba-af39acd67c4b', + username: 'prashantco111-sociou5713', + first_name: null, + last_name: null, + city: null, + country: null, + geoname_id: null, + mission: null, + bio: null, + impact_points: 0, + open_to_work: false, + open_to_volunteer: false, + skills: null, + followers: 0, + followings: 0, + created_at: '2023-09-08T05:34:07.679Z', + wallet_address: null, + social_causes: null, + proofspace_connect_id: null, + phone: null, + address: null, + avatar: null, + cover_image: null, + reported: false, + following: false, + follower: false, + connection_status: null, + connection_id: null, + mobile_country_code: null, + identity_verified: false, + is_contributor: null, + events: null, + portfolios: null, + certificates: null, + recommendations: null, + languages: null, + experiences: null, + educations: null, + }, + { + id: '73e5304c-6e33-4b08-94a4-cf4d8a882681', + username: 'nishantmadhav241878', + first_name: null, + last_name: null, + city: null, + country: null, + geoname_id: null, + mission: null, + bio: null, + impact_points: 0, + open_to_work: false, + open_to_volunteer: false, + skills: null, + followers: 0, + followings: 0, + created_at: '2023-09-27T10:18:02.977Z', + wallet_address: null, + social_causes: null, + proofspace_connect_id: null, + phone: null, + address: null, + avatar: null, + cover_image: null, + reported: false, + following: false, + follower: false, + connection_status: null, + connection_id: null, + mobile_country_code: null, + identity_verified: false, + is_contributor: null, + events: null, + portfolios: null, + certificates: null, + recommendations: null, + languages: null, + experiences: null, + educations: null, + }, + { + id: 'b0320218-636f-40ac-beb4-f73ca9c363b8', + username: 'shantisaghoolian1065', + first_name: null, + last_name: null, + city: null, + country: null, + geoname_id: null, + mission: null, + bio: null, + impact_points: 0, + open_to_work: false, + open_to_volunteer: false, + skills: null, + followers: 0, + followings: 0, + created_at: '2025-03-30T06:16:24.869Z', + wallet_address: null, + social_causes: null, + proofspace_connect_id: null, + phone: null, + address: null, + avatar: null, + cover_image: null, + reported: false, + following: false, + follower: false, + connection_status: null, + connection_id: null, + mobile_country_code: null, + identity_verified: false, + is_contributor: null, + events: null, + portfolios: null, + certificates: null, + recommendations: null, + languages: null, + experiences: null, + educations: null, + }, + { + id: '0ca697eb-d259-4b49-8f84-537f30928315', + username: 'shant2078', + first_name: null, + last_name: null, + city: null, + country: null, + geoname_id: null, + mission: null, + bio: null, + impact_points: 0, + open_to_work: false, + open_to_volunteer: false, + skills: null, + followers: 0, + followings: 0, + created_at: '2025-03-29T20:04:30.913Z', + wallet_address: null, + social_causes: null, + proofspace_connect_id: null, + phone: null, + address: null, + avatar: null, + cover_image: null, + reported: false, + following: false, + follower: false, + connection_status: null, + connection_id: null, + mobile_country_code: null, + identity_verified: false, + is_contributor: null, + events: null, + portfolios: null, + certificates: null, + recommendations: null, + languages: null, + experiences: null, + educations: null, + }, + ], +}; + +export const SEARCH_ORGANIZATIONS = { + page: 1, + limit: 20, + total_count: 5201, + items: [ + { + id: '62884a48-ef55-4fa9-b0e8-bd59ca320fbc', + name: 'American Anthropological Association', + bio: 'Areas of focus: \n Organization type: NONPROFIT\n Organization url: https://www.idealist.org/en/nonprofit/82b70b3db3f848109c69ba609e38d547-american-anthropological-association-arlington', + description: null, + email: null, + phone: null, + city: 'Arlington', + type: 'NONPROFIT', + address: '2300 Clarendon Blvd, Arlington, VA 22201, USA', + website: + 'https://www.idealist.org/en/nonprofit/82b70b3db3f848109c69ba609e38d547-american-anthropological-association-arlington', + created_at: '2023-03-06T13:56:41.435Z', + updated_at: '2023-03-06T13:56:41.435Z', + social_causes: [], + followers: 0, + followings: 0, + country: 'US', + wallet_address: null, + impact_points: 0, + mission: null, + culture: null, + image: { + id: '6bf18ddd-f92c-4e92-b636-7c7fc1ae81c6', + identity_id: '62884a48-ef55-4fa9-b0e8-bd59ca320fbc', + filename: 'logo', + url: 'https://process.filestackapi.com/resize=width:600,height:315,fit:max/quality=value:90/hrd4f2NvQfio54X5KemQ', + created_at: '2023-03-06T13:56:41.439693+00:00', + }, + cover_image: null, + mobile_country_code: null, + created_by: null, + shortname: 'american-anthropological-associa7295', + old_id: null, + status: 'ACTIVE', + search_tsv: + "'/en/nonprofit/82b70b3db3f848109c69ba609e38d547-american-anthropological-association-arlington':18 '22201':25 '2300':20 'american':1,5 'american-anthropological-associa7295':4 'anthropolog':2,6 'area':8 'arlington':19,23 'associ':3 'associa7295':7 'blvd':22 'clarendon':21 'focus':10 'nonprofit':13 'organ':11,14 'type':12 'url':15 'usa':26 'va':24 'www.idealist.org':17 'www.idealist.org/en/nonprofit/82b70b3db3f848109c69ba609e38d547-american-anthropological-association-arlington':16", + other_party_id: null, + other_party_title: null, + other_party_url: null, + geoname_id: null, + verified_impact: false, + hiring: false, + size: null, + industry: null, + did: null, + verified: false, + impact_detected: false, + following: false, + follower: false, + connection_status: null, + connection_id: null, + benefits: null, + recommendations: null, + }, + { + id: '98496b56-9bf8-40ef-81b7-49653bf9189a', + name: 'TA Associates', + bio: 'TA Associates invests in technology, healthcare, financial services, consumer, and business services.', + description: null, + email: null, + phone: null, + city: 'Massachusetts', + type: 'OTHER', + address: null, + website: 'http://www.ta.com', + created_at: '2024-05-28T07:58:23.148Z', + updated_at: '2024-05-28T07:58:23.148Z', + social_causes: null, + followers: 0, + followings: 0, + country: 'US', + wallet_address: null, + impact_points: 0, + mission: null, + culture: null, + image: { + id: '8ce703d0-86f0-4508-9e95-16293a47a66a', + identity_id: '98496b56-9bf8-40ef-81b7-49653bf9189a', + filename: 'logo', + url: 'https://images.crunchbase.com/image/upload/t_cb-default-original/v1474650849/lbzkxdx2qwqufwbjcrrp.jpg', + created_at: '2024-05-28T20:43:57.76735+00:00', + }, + cover_image: null, + mobile_country_code: null, + created_by: null, + shortname: 'ta-associates', + old_id: null, + status: 'ACTIVE', + search_tsv: + "'associ':2,5,7 'busi':16 'consum':14 'financi':12 'healthcar':11 'invest':8 'massachusett':18 'servic':13,17 'ta':1,4,6 'ta-associ':3 'technolog':10", + other_party_id: 'f2b4f17e-25cc-9161-0509-eea8ecc3cc24', + other_party_title: 'CRUNCHBASE', + other_party_url: 'http://www.ta.com', + geoname_id: null, + verified_impact: false, + hiring: false, + size: null, + industry: null, + did: null, + verified: false, + impact_detected: false, + following: false, + follower: false, + connection_status: null, + connection_id: null, + benefits: null, + recommendations: null, + }, + ], +}; + +export const SEARCH_SERVICES = { + page: 1, + limit: 20, + total_count: 3, + items: [ + { + id: '9d15c671-2a48-4b9d-9a7f-fbf40e41b3cf', + identity_id: 'd3470a3b-7948-4575-9ac5-8b7ce9a0112c', + description: 'logo', + project_type: null, + project_length: '1_3_DAYS', + payment_currency: '0x082A2027DC16F42d6e69bE8FA13C94C17c910EbE', + payment_range_lower: '2', + payment_range_higher: '2', + experience_level: null, + created_at: '2025-02-04T03:27:22.781Z', + updated_at: '0001-01-01T00:00:00.000Z', + deleted_at: null, + status: 'ACTIVE', + payment_type: null, + payment_scheme: null, + title: 'Logo Design', + expires_at: null, + country: null, + skills: ['DESIGN_THINKING'], + causes_tags: [], + old_id: null, + other_party_id: null, + other_party_title: null, + other_party_url: null, + remote_preference: null, + search_tsv: "'design':2 'logo':1,3", + city: null, + weekly_hours_lower: null, + weekly_hours_higher: null, + commitment_hours_lower: '3', + commitment_hours_higher: '3', + geoname_id: null, + job_category_id: 'fbacde54-88e6-4d17-8aa9-286a716ba12f', + impact_job: true, + promoted: false, + kind: 'SERVICE', + payment_mode: 'CRYPTO', + identity_type: 'users', + identity_meta: { + id: 'd3470a3b-7948-4575-9ac5-8b7ce9a0112c', + city: 'Boston', + name: 'Jessica Hamilton', + email: 'pr@socious.io', + avatar: + 'https://storage.googleapis.com/socious-gcs/1645692562/DD60AF28-E49E-4B31-9302-810314E42363_PeEAj4oS.png', + status: 'ACTIVE', + address: null, + country: 'US', + username: 'jessica-hamilton6090', + open_to_work: false, + is_contributor: null, + wallet_address: '0x042d09d30183F680DC34d3D6942AAC6290A13e15', + identity_verified: false, + open_to_volunteer: false, + }, + job_category: { + id: 'fbacde54-88e6-4d17-8aa9-286a716ba12f', + name: 'Frontend development', + hourly_wage_dollars: 25, + created_at: '2022-12-14T13:19:18.541708+00:00', + updated_at: '2022-12-14T13:19:18.541708+00:00', + }, + work_samples: [ + { + id: 'b157ab82-3996-4f9c-8ef0-a589d6af89fe', + url: 'https://storage.googleapis.com/socious-gcs/2bae7a2e2f1e8231490f4ab8541e11b4.png', + filename: 'Instagram post - 2.png', + }, + ], + applicants: 0, + missions: 0, + saved: false, + not_interested: false, + }, + { + id: '855e7d2f-9739-4f5c-9ac4-2d32b32fbf02', + identity_id: '4b15f797-c7a0-4cb3-8f20-8ec0c3509b0d', + description: 'test', + project_type: null, + project_length: '1_3_DAYS', + payment_currency: '0x082A2027DC16F42d6e69bE8FA13C94C17c910EbE', + payment_range_lower: '200', + payment_range_higher: '200', + experience_level: null, + created_at: '2025-02-04T12:42:46.588Z', + updated_at: '0001-01-01T00:00:00.000Z', + deleted_at: null, + status: 'ACTIVE', + payment_type: null, + payment_scheme: null, + title: 'Logo designer', + expires_at: null, + country: null, + skills: ['DESIGN_THINKING'], + causes_tags: [], + old_id: null, + other_party_id: null, + other_party_title: null, + other_party_url: null, + remote_preference: null, + search_tsv: "'design':2 'logo':1 'test':3", + city: null, + weekly_hours_lower: null, + weekly_hours_higher: null, + commitment_hours_lower: '200', + commitment_hours_higher: '200', + geoname_id: null, + job_category_id: 'bc2e14cd-5087-44cd-ad0d-8e6a87a4c35a', + impact_job: true, + promoted: false, + kind: 'SERVICE', + payment_mode: 'CRYPTO', + identity_type: 'users', + identity_meta: { + id: '4b15f797-c7a0-4cb3-8f20-8ec0c3509b0d', + city: 'Tehran', + name: 'Ehsan Mahmoudi', + email: 'me@e-mahmoudi.me', + avatar: 'https://storage.googleapis.com/socious-gcs/79c91b59639296fc3dcaa258920c9b58.jpg', + status: 'ACTIVE', + address: null, + country: 'IR', + username: 'ehsan-mahmoudi9392', + open_to_work: false, + is_contributor: null, + wallet_address: '0x108212C59eE3b73ad771CF96617E6E7C95D4b7cF', + identity_verified: true, + open_to_volunteer: false, + }, + job_category: { + id: 'bc2e14cd-5087-44cd-ad0d-8e6a87a4c35a', + name: 'UX/UI Design', + hourly_wage_dollars: 32, + created_at: '2022-12-14T13:19:18.541708+00:00', + updated_at: '2022-12-14T13:19:18.541708+00:00', + }, + work_samples: [], + applicants: 0, + missions: 0, + saved: false, + not_interested: false, + }, + { + id: '04121699-4a8a-4b40-a382-a4d023cef20a', + identity_id: 'd3470a3b-7948-4575-9ac5-8b7ce9a0112c', + description: 'logo', + project_type: null, + project_length: '1_3_DAYS', + payment_currency: 'USD', + payment_range_lower: '3', + payment_range_higher: '3', + experience_level: null, + created_at: '2025-02-06T06:08:53.896Z', + updated_at: '0001-01-01T00:00:00.000Z', + deleted_at: null, + status: 'ACTIVE', + payment_type: null, + payment_scheme: null, + title: 'Logo Design', + expires_at: null, + country: null, + skills: ['DESIGN_THINKING'], + causes_tags: [], + old_id: null, + other_party_id: null, + other_party_title: null, + other_party_url: null, + remote_preference: null, + search_tsv: "'design':2 'logo':1,3", + city: null, + weekly_hours_lower: null, + weekly_hours_higher: null, + commitment_hours_lower: '3', + commitment_hours_higher: '3', + geoname_id: null, + job_category_id: 'fbacde54-88e6-4d17-8aa9-286a716ba12f', + impact_job: true, + promoted: false, + kind: 'SERVICE', + payment_mode: 'FIAT', + identity_type: 'users', + identity_meta: { + id: 'd3470a3b-7948-4575-9ac5-8b7ce9a0112c', + city: 'Boston', + name: 'Jessica Hamilton', + email: 'pr@socious.io', + avatar: + 'https://storage.googleapis.com/socious-gcs/1645692562/DD60AF28-E49E-4B31-9302-810314E42363_PeEAj4oS.png', + status: 'ACTIVE', + address: null, + country: 'US', + username: 'jessica-hamilton6090', + open_to_work: false, + is_contributor: null, + wallet_address: '0x042d09d30183F680DC34d3D6942AAC6290A13e15', + identity_verified: false, + open_to_volunteer: false, + }, + job_category: { + id: 'fbacde54-88e6-4d17-8aa9-286a716ba12f', + name: 'Frontend development', + hourly_wage_dollars: 25, + created_at: '2022-12-14T13:19:18.541708+00:00', + updated_at: '2022-12-14T13:19:18.541708+00:00', + }, + work_samples: [ + { + id: '62901c60-c707-4f2e-a556-1ed8d356c3ce', + url: 'https://storage.googleapis.com/socious-gcs/3fb3941d3beb4867c5e5bc8d40a1a192.png', + filename: 'TechForImpactSummit_Photos-029 2.png', + }, + ], + applicants: 0, + missions: 0, + saved: false, + not_interested: false, + }, + ], +}; + +export const QUESTIONS = { + questions: [ + { + id: 'ca53a12f-a949-46b1-9e34-8bd933d9a4e2', + project_id: '615be3c0-b294-4901-a208-2409d545959d', + question: 'How did you hear about us?', + required: true, + options: null, + created_at: '2024-05-29T07:26:09.041Z', + updated_at: '2024-05-29T07:26:09.041Z', + old_id: null, + }, + { + id: '4c1046c6-eb47-4db5-9cee-cf9c00020d45', + project_id: '615be3c0-b294-4901-a208-2409d545959d', + question: + 'Why do you want to contribute to our mission? Could you please tell us about your previous experience with social/environmental impact projects if you have any?', + required: true, + options: null, + created_at: '2024-05-29T07:26:09.095Z', + updated_at: '2024-05-29T07:26:09.095Z', + old_id: null, + }, + { + id: 'ff8fd62c-8e6e-4e40-86f8-ff91dcb86f0e', + project_id: '615be3c0-b294-4901-a208-2409d545959d', + question: 'What is your salary expectation? What is your current salary?', + required: true, + options: null, + created_at: '2024-05-29T07:26:09.116Z', + updated_at: '2024-05-29T07:26:09.116Z', + old_id: null, + }, + { + id: '2d1d66ac-91e0-4846-a846-e3575460ac98', + project_id: '615be3c0-b294-4901-a208-2409d545959d', + question: 'Could you share two repositories that best showcase your abilities? (attach public repository links)', + required: null, + options: null, + created_at: '2024-05-29T07:26:09.116Z', + updated_at: '2024-05-29T07:26:09.116Z', + old_id: null, + }, + { + id: 'ba57d1e3-cb76-481b-8d12-edf30e5f53aa', + project_id: '615be3c0-b294-4901-a208-2409d545959d', + question: 'When can you start?', + required: true, + options: null, + created_at: '2024-05-29T07:26:09.122Z', + updated_at: '2024-05-29T07:26:09.122Z', + old_id: null, + }, + ], +}; + +export const NOTIFICATIONS = { + page: 1, + limit: 50, + total_count: 12, + items: [ + { + id: '723022ee-83ed-4f7c-b119-13f006d4cbd9', + type: 'CHAT', + ref_id: 'eb19f03b-b08a-4177-a9d8-2d8059899060', + user_id: '035f724e-5824-4129-8ed6-96c6dda81a3a', + data: { + id: 'eb19f03b-b08a-4177-a9d8-2d8059899060', + body: { + body: 'OrganizationTest sent you a new message', + title: 'New Message', + }, + text: 'test test', + type: 'CHAT', + media: null, + muted: false, + orgin: { + id: '035f724e-5824-4129-8ed6-96c6dda81a3a', + meta: { + id: '035f724e-5824-4129-8ed6-96c6dda81a3a', + city: null, + name: null, + email: 'imshantik@gmail.com', + avatar: null, + status: 'ACTIVE', + address: null, + country: null, + username: 'imshantik5140', + open_to_work: true, + is_contributor: null, + wallet_address: null, + identity_verified: false, + open_to_volunteer: false, + }, + type: 'users', + created_at: '2025-02-27T10:59:24.278Z', + }, + refId: 'eb19f03b-b08a-4177-a9d8-2d8059899060', + chat_id: '47909b77-87b4-461d-b242-eb63bd498fab', + replied: false, + identity: { + id: '1396c403-1ade-4c40-b0d1-4680059a46c5', + meta: { + id: '1396c403-1ade-4c40-b0d1-4680059a46c5', + city: 'Tehran', + name: 'OrganizationTest', + email: 'imshantik@gmal.com', + image: null, + hiring: false, + status: 'ACTIVE', + address: null, + country: 'IR', + mission: null, + verified: false, + shortname: 'organizationtest', + description: null, + wallet_address: null, + verified_impact: false, + }, + type: 'organizations', + follower: false, + following: false, + created_at: '2025-02-27T13:16:43.884Z', + connection_status: null, + verification_status: null, + }, + parentId: '47909b77-87b4-461d-b242-eb63bd498fab', + reply_id: null, + created_at: '2025-03-05T16:45:26.175Z', + deleted_at: null, + updated_at: '2025-03-05T16:45:26.175Z', + identity_id: '1396c403-1ade-4c40-b0d1-4680059a46c5', + consolidate_number: 0, + }, + view_at: '2025-03-05T16:45:33.770Z', + read_at: '2025-03-05T16:45:40.341Z', + updated_at: '2025-03-05T16:45:40.341Z', + created_at: '2025-03-05T16:45:26.228Z', + silent: false, + }, + { + id: 'bd5c75ef-9dc0-4516-823c-1dda043060b2', + type: 'CHAT', + ref_id: '7894ed98-c9d5-4a63-84b8-f26681b77db4', + user_id: '035f724e-5824-4129-8ed6-96c6dda81a3a', + data: { + id: '7894ed98-c9d5-4a63-84b8-f26681b77db4', + body: { + body: 'OrganizationTest sent you a new message', + title: 'New Message', + }, + text: 'hello shant', + type: 'CHAT', + media: null, + muted: false, + orgin: { + id: '035f724e-5824-4129-8ed6-96c6dda81a3a', + meta: { + id: '035f724e-5824-4129-8ed6-96c6dda81a3a', + city: null, + name: null, + email: 'imshantik@gmail.com', + avatar: null, + status: 'ACTIVE', + address: null, + country: null, + username: 'imshantik5140', + open_to_work: true, + is_contributor: null, + wallet_address: null, + identity_verified: false, + open_to_volunteer: false, + }, + type: 'users', + created_at: '2025-02-27T10:59:24.278Z', + }, + refId: '7894ed98-c9d5-4a63-84b8-f26681b77db4', + chat_id: '47909b77-87b4-461d-b242-eb63bd498fab', + replied: false, + identity: { + id: '1396c403-1ade-4c40-b0d1-4680059a46c5', + meta: { + id: '1396c403-1ade-4c40-b0d1-4680059a46c5', + city: 'Tehran', + name: 'OrganizationTest', + email: 'imshantik@gmal.com', + image: null, + hiring: false, + status: 'ACTIVE', + address: null, + country: 'IR', + mission: null, + verified: false, + shortname: 'organizationtest', + description: null, + wallet_address: null, + verified_impact: false, + }, + type: 'organizations', + follower: false, + following: false, + created_at: '2025-02-27T13:16:43.884Z', + connection_status: null, + verification_status: null, + }, + parentId: '47909b77-87b4-461d-b242-eb63bd498fab', + reply_id: null, + created_at: '2025-03-05T16:44:08.859Z', + deleted_at: null, + updated_at: '2025-03-05T16:44:08.859Z', + identity_id: '1396c403-1ade-4c40-b0d1-4680059a46c5', + consolidate_number: 0, + }, + view_at: '2025-03-05T16:44:44.101Z', + read_at: '2025-03-05T16:44:46.662Z', + updated_at: '2025-03-05T16:44:46.662Z', + created_at: '2025-03-05T16:44:08.912Z', + silent: false, + }, + { + id: 'bb12271f-7f3a-4e29-9109-2216f9bcdab7', + type: 'CHAT', + ref_id: 'bc3957da-2306-436f-bfde-00d3977ce668', + user_id: '035f724e-5824-4129-8ed6-96c6dda81a3a', + data: { + id: 'bc3957da-2306-436f-bfde-00d3977ce668', + body: { + body: 'OrganizationTest sent you a new message', + title: 'New Message', + }, + text: 'hi', + type: 'CHAT', + media: null, + muted: false, + orgin: { + id: '035f724e-5824-4129-8ed6-96c6dda81a3a', + meta: { + id: '035f724e-5824-4129-8ed6-96c6dda81a3a', + city: null, + name: null, + email: 'imshantik@gmail.com', + avatar: null, + status: 'ACTIVE', + address: null, + country: null, + username: 'imshantik5140', + open_to_work: true, + is_contributor: null, + wallet_address: null, + identity_verified: false, + open_to_volunteer: false, + }, + type: 'users', + created_at: '2025-02-27T10:59:24.278Z', + }, + refId: 'bc3957da-2306-436f-bfde-00d3977ce668', + chat_id: '47909b77-87b4-461d-b242-eb63bd498fab', + replied: false, + identity: { + id: '1396c403-1ade-4c40-b0d1-4680059a46c5', + meta: { + id: '1396c403-1ade-4c40-b0d1-4680059a46c5', + city: 'Tehran', + name: 'OrganizationTest', + email: 'imshantik@gmal.com', + image: null, + hiring: false, + status: 'ACTIVE', + address: null, + country: 'IR', + mission: null, + verified: false, + shortname: 'organizationtest', + description: null, + wallet_address: null, + verified_impact: false, + }, + type: 'organizations', + follower: false, + following: false, + created_at: '2025-02-27T13:16:43.884Z', + connection_status: null, + verification_status: null, + }, + parentId: '47909b77-87b4-461d-b242-eb63bd498fab', + reply_id: null, + created_at: '2025-03-05T16:43:21.085Z', + deleted_at: null, + updated_at: '2025-03-05T16:43:21.085Z', + identity_id: '1396c403-1ade-4c40-b0d1-4680059a46c5', + consolidate_number: 0, + }, + view_at: '2025-03-05T16:43:35.235Z', + read_at: '2025-03-05T16:43:49.440Z', + updated_at: '2025-03-05T16:43:49.440Z', + created_at: '2025-03-05T16:43:21.141Z', + silent: false, + }, + { + id: '42c5f1f4-c775-44fa-b2d3-eff308091d7f', + type: 'CHAT', + ref_id: '374fa3f9-1d1b-40d0-9d06-68f814df1a1b', + user_id: '035f724e-5824-4129-8ed6-96c6dda81a3a', + data: { + id: '374fa3f9-1d1b-40d0-9d06-68f814df1a1b', + body: { + body: 'imshantik@gmail.com sent you a new message', + title: 'New Message', + }, + text: 'hello organization', + type: 'CHAT', + media: null, + muted: false, + orgin: { + id: '1396c403-1ade-4c40-b0d1-4680059a46c5', + meta: { + id: '1396c403-1ade-4c40-b0d1-4680059a46c5', + city: 'Tehran', + name: 'OrganizationTest', + email: 'imshantik@gmal.com', + image: null, + hiring: false, + status: 'ACTIVE', + address: null, + country: 'IR', + mission: null, + verified: false, + shortname: 'organizationtest', + description: null, + wallet_address: null, + verified_impact: false, + }, + type: 'organizations', + created_at: '2025-02-27T13:16:43.884Z', + }, + refId: '374fa3f9-1d1b-40d0-9d06-68f814df1a1b', + chat_id: '47909b77-87b4-461d-b242-eb63bd498fab', + replied: false, + identity: { + id: '035f724e-5824-4129-8ed6-96c6dda81a3a', + meta: { + id: '035f724e-5824-4129-8ed6-96c6dda81a3a', + city: null, + name: null, + email: 'imshantik@gmail.com', + avatar: null, + status: 'ACTIVE', + address: null, + country: null, + username: 'imshantik5140', + open_to_work: true, + is_contributor: null, + wallet_address: null, + identity_verified: false, + open_to_volunteer: false, + }, + type: 'users', + follower: false, + following: false, + created_at: '2025-02-27T10:59:24.278Z', + connection_status: null, + verification_status: null, + }, + parentId: '47909b77-87b4-461d-b242-eb63bd498fab', + reply_id: null, + created_at: '2025-03-05T16:42:23.356Z', + deleted_at: null, + updated_at: '2025-03-05T16:42:23.356Z', + identity_id: '035f724e-5824-4129-8ed6-96c6dda81a3a', + consolidate_number: 0, + }, + view_at: '2025-03-05T16:42:40.223Z', + read_at: '2025-03-05T16:42:50.706Z', + updated_at: '2025-03-05T16:42:50.706Z', + created_at: '2025-03-05T16:42:23.421Z', + silent: false, + }, + { + id: '36344c02-2f83-4060-ac86-4fd8353eb493', + type: 'OFFER', + ref_id: '592f9af4-22dd-4ae9-b7a1-8d491251e506', + user_id: '035f724e-5824-4129-8ed6-96c6dda81a3a', + data: { + body: { + body: 'OrganizationTest sent you an offer', + title: 'Have an offer', + }, + type: 'OFFER', + orgin: { + id: '035f724e-5824-4129-8ed6-96c6dda81a3a', + meta: { + id: '035f724e-5824-4129-8ed6-96c6dda81a3a', + city: null, + name: null, + email: 'imshantik@gmail.com', + avatar: null, + status: 'ACTIVE', + address: null, + country: null, + username: 'imshantik5140', + open_to_work: true, + is_contributor: null, + wallet_address: null, + identity_verified: false, + open_to_volunteer: false, + }, + type: 'users', + created_at: '2025-02-27T10:59:24.278Z', + }, + refId: '592f9af4-22dd-4ae9-b7a1-8d491251e506', + identity: { + id: '1396c403-1ade-4c40-b0d1-4680059a46c5', + meta: { + id: '1396c403-1ade-4c40-b0d1-4680059a46c5', + city: 'Tehran', + name: 'OrganizationTest', + email: 'imshantik@gmal.com', + image: null, + hiring: false, + status: 'ACTIVE', + address: null, + country: 'IR', + mission: null, + verified: false, + shortname: 'organizationtest', + description: null, + wallet_address: null, + verified_impact: false, + }, + type: 'organizations', + follower: false, + following: false, + created_at: '2025-02-27T13:16:43.884Z', + connection_status: null, + verification_status: null, + }, + parentId: '25e61193-9857-4af0-a146-6e7943894ccd', + consolidate_number: 0, + }, + view_at: '2025-03-05T12:30:58.257Z', + read_at: '2025-03-05T12:31:06.545Z', + updated_at: '2025-03-05T12:31:06.545Z', + created_at: '2025-03-05T12:30:49.217Z', + silent: false, + }, + { + id: 'ea8244c4-0253-47e2-a1ca-1a3f33af66bb', + type: 'APPLICATION', + ref_id: '8843fce6-042e-46dc-b1ae-50bb7ddd5ced', + user_id: '035f724e-5824-4129-8ed6-96c6dda81a3a', + data: { + body: { + body: 'imshantik@gmail.com applied to your job', + title: 'Job applied', + }, + type: 'APPLICATION', + orgin: { + id: '1396c403-1ade-4c40-b0d1-4680059a46c5', + meta: { + id: '1396c403-1ade-4c40-b0d1-4680059a46c5', + city: 'Tehran', + name: 'OrganizationTest', + email: 'imshantik@gmal.com', + image: null, + hiring: false, + status: 'ACTIVE', + address: null, + country: 'IR', + mission: null, + verified: false, + shortname: 'organizationtest', + description: null, + wallet_address: null, + verified_impact: false, + }, + type: 'organizations', + created_at: '2025-02-27T13:16:43.884Z', + }, + refId: '8843fce6-042e-46dc-b1ae-50bb7ddd5ced', + identity: { + id: '035f724e-5824-4129-8ed6-96c6dda81a3a', + meta: { + id: '035f724e-5824-4129-8ed6-96c6dda81a3a', + city: null, + name: null, + email: 'imshantik@gmail.com', + avatar: null, + status: 'ACTIVE', + address: null, + country: null, + username: 'imshantik5140', + open_to_work: true, + is_contributor: null, + wallet_address: null, + identity_verified: false, + open_to_volunteer: false, + }, + type: 'users', + follower: false, + following: false, + created_at: '2025-02-27T10:59:24.278Z', + connection_status: null, + verification_status: null, + }, + parentId: '25e61193-9857-4af0-a146-6e7943894ccd', + consolidate_number: 0, + }, + view_at: '2025-03-05T12:12:49.063Z', + read_at: '2025-03-05T12:13:57.978Z', + updated_at: '2025-03-05T12:13:57.978Z', + created_at: '2025-03-05T12:10:48.703Z', + silent: false, + }, + { + id: '5a45fbc4-04d7-4141-857f-c9ec4f83aa58', + type: 'OFFER', + ref_id: '2da2348c-f5ae-4440-b9df-cd4629f0ecc6', + user_id: '035f724e-5824-4129-8ed6-96c6dda81a3a', + data: { + body: { + body: 'OrganizationTest sent you an offer', + title: 'Have an offer', + }, + type: 'OFFER', + orgin: { + id: '035f724e-5824-4129-8ed6-96c6dda81a3a', + meta: { + id: '035f724e-5824-4129-8ed6-96c6dda81a3a', + city: null, + name: null, + email: 'imshantik@gmail.com', + avatar: null, + status: 'ACTIVE', + address: null, + country: null, + username: 'imshantik5140', + open_to_work: true, + is_contributor: null, + wallet_address: null, + identity_verified: false, + open_to_volunteer: false, + }, + type: 'users', + created_at: '2025-02-27T10:59:24.278Z', + }, + refId: '2da2348c-f5ae-4440-b9df-cd4629f0ecc6', + identity: { + id: '1396c403-1ade-4c40-b0d1-4680059a46c5', + meta: { + id: '1396c403-1ade-4c40-b0d1-4680059a46c5', + city: 'Tehran', + name: 'OrganizationTest', + email: 'imshantik@gmal.com', + image: null, + hiring: false, + status: 'ACTIVE', + address: null, + country: 'IR', + mission: null, + verified: false, + shortname: 'organizationtest', + description: null, + wallet_address: null, + verified_impact: false, + }, + type: 'organizations', + follower: false, + following: false, + created_at: '2025-02-27T13:16:43.884Z', + connection_status: null, + verification_status: null, + }, + parentId: 'ecce2dec-35a2-4a6a-a0d8-155cd898f6b9', + consolidate_number: 0, + }, + view_at: '2025-03-04T09:36:55.895Z', + read_at: '2025-03-04T09:37:08.918Z', + updated_at: '2025-03-04T09:37:08.918Z', + created_at: '2025-03-04T09:36:26.354Z', + silent: false, + }, + { + id: '0655a77e-e65d-4641-8ecf-5460aa651266', + type: 'CHAT', + ref_id: '521a71af-d4f3-4434-9fd4-095965bff6c1', + user_id: '035f724e-5824-4129-8ed6-96c6dda81a3a', + data: { + id: '521a71af-d4f3-4434-9fd4-095965bff6c1', + body: { + body: 'OrganizationTest sent you a new message', + title: 'New Message', + }, + text: 'things are nice here', + type: 'CHAT', + media: null, + muted: false, + orgin: { + id: '035f724e-5824-4129-8ed6-96c6dda81a3a', + meta: { + id: '035f724e-5824-4129-8ed6-96c6dda81a3a', + city: null, + name: null, + email: 'imshantik@gmail.com', + avatar: null, + status: 'ACTIVE', + address: null, + country: null, + username: 'imshantik5140', + open_to_work: true, + is_contributor: null, + wallet_address: null, + identity_verified: false, + open_to_volunteer: false, + }, + type: 'users', + created_at: '2025-02-27T10:59:24.278Z', + }, + refId: '521a71af-d4f3-4434-9fd4-095965bff6c1', + chat_id: '47909b77-87b4-461d-b242-eb63bd498fab', + replied: false, + identity: { + id: '1396c403-1ade-4c40-b0d1-4680059a46c5', + meta: { + id: '1396c403-1ade-4c40-b0d1-4680059a46c5', + city: 'Tehran', + name: 'OrganizationTest', + email: 'imshantik@gmal.com', + image: null, + hiring: false, + status: 'ACTIVE', + address: null, + country: 'IR', + mission: null, + verified: false, + shortname: 'organizationtest', + description: null, + wallet_address: null, + verified_impact: false, + }, + type: 'organizations', + follower: false, + following: false, + created_at: '2025-02-27T13:16:43.884Z', + connection_status: null, + verification_status: null, + }, + parentId: '47909b77-87b4-461d-b242-eb63bd498fab', + reply_id: null, + created_at: '2025-02-28T10:45:03.832Z', + deleted_at: null, + updated_at: '2025-02-28T10:45:03.832Z', + identity_id: '1396c403-1ade-4c40-b0d1-4680059a46c5', + consolidate_number: 0, + }, + view_at: '2025-02-28T10:45:14.280Z', + read_at: '2025-02-28T10:58:47.888Z', + updated_at: '2025-02-28T10:58:47.888Z', + created_at: '2025-02-28T10:45:04.137Z', + silent: false, + }, + { + id: 'b7363a62-b77f-435d-8c1d-5499ede4830a', + type: 'CHAT', + ref_id: '1c59246b-8632-45db-ae9a-5e575cf9574d', + user_id: '035f724e-5824-4129-8ed6-96c6dda81a3a', + data: { + id: '1c59246b-8632-45db-ae9a-5e575cf9574d', + body: { + body: 'imshantik@gmail.com sent you a new message', + title: 'New Message', + }, + text: 'whats good?', + type: 'CHAT', + media: null, + muted: false, + orgin: { + id: '1396c403-1ade-4c40-b0d1-4680059a46c5', + meta: { + id: '1396c403-1ade-4c40-b0d1-4680059a46c5', + city: 'Tehran', + name: 'OrganizationTest', + email: 'imshantik@gmal.com', + image: null, + hiring: false, + status: 'ACTIVE', + address: null, + country: 'IR', + mission: null, + verified: false, + shortname: 'organizationtest', + description: null, + wallet_address: null, + verified_impact: false, + }, + type: 'organizations', + created_at: '2025-02-27T13:16:43.884Z', + }, + refId: '1c59246b-8632-45db-ae9a-5e575cf9574d', + chat_id: '47909b77-87b4-461d-b242-eb63bd498fab', + replied: false, + identity: { + id: '035f724e-5824-4129-8ed6-96c6dda81a3a', + meta: { + id: '035f724e-5824-4129-8ed6-96c6dda81a3a', + city: null, + name: null, + email: 'imshantik@gmail.com', + avatar: null, + status: 'ACTIVE', + address: null, + country: null, + username: 'imshantik5140', + open_to_work: true, + is_contributor: null, + wallet_address: null, + identity_verified: false, + open_to_volunteer: false, + }, + type: 'users', + follower: false, + following: false, + created_at: '2025-02-27T10:59:24.278Z', + connection_status: null, + verification_status: null, + }, + parentId: '47909b77-87b4-461d-b242-eb63bd498fab', + reply_id: null, + created_at: '2025-02-28T10:38:39.353Z', + deleted_at: null, + updated_at: '2025-02-28T10:38:39.353Z', + identity_id: '035f724e-5824-4129-8ed6-96c6dda81a3a', + consolidate_number: 0, + }, + view_at: '2025-02-28T10:38:47.753Z', + read_at: '2025-02-28T10:58:47.888Z', + updated_at: '2025-02-28T10:58:47.888Z', + created_at: '2025-02-28T10:38:39.404Z', + silent: false, + }, + { + id: 'ec72432e-098c-43ae-85a7-fbe31cb35bcf', + type: 'CHAT', + ref_id: '9fb4d3f5-1e6a-44f6-a1b6-67fc6506c7f1', + user_id: '035f724e-5824-4129-8ed6-96c6dda81a3a', + data: { + id: '9fb4d3f5-1e6a-44f6-a1b6-67fc6506c7f1', + body: { + body: 'imshantik@gmail.com sent you a new message', + title: 'New Message', + }, + text: 'hi', + type: 'CHAT', + media: null, + muted: false, + orgin: { + id: '1396c403-1ade-4c40-b0d1-4680059a46c5', + meta: { + id: '1396c403-1ade-4c40-b0d1-4680059a46c5', + city: 'Tehran', + name: 'OrganizationTest', + email: 'imshantik@gmal.com', + image: null, + hiring: false, + status: 'ACTIVE', + address: null, + country: 'IR', + mission: null, + verified: false, + shortname: 'organizationtest', + description: null, + wallet_address: null, + verified_impact: false, + }, + type: 'organizations', + created_at: '2025-02-27T13:16:43.884Z', + }, + refId: '9fb4d3f5-1e6a-44f6-a1b6-67fc6506c7f1', + chat_id: '47909b77-87b4-461d-b242-eb63bd498fab', + replied: false, + identity: { + id: '035f724e-5824-4129-8ed6-96c6dda81a3a', + meta: { + id: '035f724e-5824-4129-8ed6-96c6dda81a3a', + city: null, + name: null, + email: 'imshantik@gmail.com', + avatar: null, + status: 'ACTIVE', + address: null, + country: null, + username: 'imshantik5140', + open_to_work: true, + is_contributor: null, + wallet_address: null, + identity_verified: false, + open_to_volunteer: false, + }, + type: 'users', + follower: false, + following: false, + created_at: '2025-02-27T10:59:24.278Z', + connection_status: null, + verification_status: null, + }, + parentId: '47909b77-87b4-461d-b242-eb63bd498fab', + reply_id: null, + created_at: '2025-02-28T10:36:55.040Z', + deleted_at: null, + updated_at: '2025-02-28T10:36:55.040Z', + identity_id: '035f724e-5824-4129-8ed6-96c6dda81a3a', + consolidate_number: 0, + }, + view_at: '2025-02-28T10:37:06.632Z', + read_at: '2025-02-28T10:58:47.888Z', + updated_at: '2025-02-28T10:58:47.888Z', + created_at: '2025-02-28T10:36:55.090Z', + silent: false, + }, + { + id: '07894516-ba0c-4aab-a6eb-e6184bdaab1f', + type: 'CHAT', + ref_id: '09a33391-d6fe-47f1-aeff-f5fb307a0605', + user_id: '035f724e-5824-4129-8ed6-96c6dda81a3a', + data: { + id: '09a33391-d6fe-47f1-aeff-f5fb307a0605', + body: { + body: 'OrganizationTest sent you a new message', + title: 'New Message', + }, + text: 'hello', + type: 'CHAT', + media: null, + muted: false, + orgin: { + id: '035f724e-5824-4129-8ed6-96c6dda81a3a', + meta: { + id: '035f724e-5824-4129-8ed6-96c6dda81a3a', + city: null, + name: null, + email: 'imshantik@gmail.com', + avatar: null, + status: 'ACTIVE', + address: null, + country: null, + username: 'imshantik5140', + open_to_work: true, + is_contributor: null, + wallet_address: null, + identity_verified: false, + open_to_volunteer: false, + }, + type: 'users', + created_at: '2025-02-27T10:59:24.278Z', + }, + refId: '09a33391-d6fe-47f1-aeff-f5fb307a0605', + chat_id: '47909b77-87b4-461d-b242-eb63bd498fab', + replied: false, + identity: { + id: '1396c403-1ade-4c40-b0d1-4680059a46c5', + meta: { + id: '1396c403-1ade-4c40-b0d1-4680059a46c5', + city: 'Tehran', + name: 'OrganizationTest', + email: 'imshantik@gmal.com', + image: null, + hiring: false, + status: 'ACTIVE', + address: null, + country: 'IR', + mission: null, + verified: false, + shortname: 'organizationtest', + description: null, + wallet_address: null, + verified_impact: false, + }, + type: 'organizations', + follower: false, + following: false, + created_at: '2025-02-27T13:16:43.884Z', + connection_status: null, + verification_status: null, + }, + parentId: '47909b77-87b4-461d-b242-eb63bd498fab', + reply_id: null, + created_at: '2025-02-28T10:36:25.925Z', + deleted_at: null, + updated_at: '2025-02-28T10:36:25.925Z', + identity_id: '1396c403-1ade-4c40-b0d1-4680059a46c5', + consolidate_number: 0, + }, + view_at: '2025-02-28T10:36:32.705Z', + read_at: '2025-02-28T10:58:47.888Z', + updated_at: '2025-02-28T10:58:47.888Z', + created_at: '2025-02-28T10:36:25.987Z', + silent: false, + }, + { + id: 'e3a5cfa7-2504-43fd-b5e4-869e6932edef', + type: 'APPLICATION', + ref_id: 'cfb626d1-2bf5-474a-bd78-3ddf41b81669', + user_id: '035f724e-5824-4129-8ed6-96c6dda81a3a', + data: { + body: { + body: 'imshantik@gmail.com applied to your job', + title: 'Job applied', + }, + type: 'APPLICATION', + orgin: { + id: '1396c403-1ade-4c40-b0d1-4680059a46c5', + meta: { + id: '1396c403-1ade-4c40-b0d1-4680059a46c5', + city: 'Tehran', + name: 'OrganizationTest', + email: 'imshantik@gmal.com', + image: null, + hiring: false, + status: 'ACTIVE', + address: null, + country: 'IR', + mission: null, + verified: false, + shortname: 'organizationtest', + description: null, + wallet_address: null, + verified_impact: false, + }, + type: 'organizations', + created_at: '2025-02-27T13:16:43.884Z', + }, + refId: 'cfb626d1-2bf5-474a-bd78-3ddf41b81669', + identity: { + id: '035f724e-5824-4129-8ed6-96c6dda81a3a', + meta: { + id: '035f724e-5824-4129-8ed6-96c6dda81a3a', + city: null, + name: null, + email: 'imshantik@gmail.com', + avatar: null, + status: 'ACTIVE', + address: null, + country: null, + username: 'imshantik5140', + open_to_work: true, + is_contributor: null, + wallet_address: null, + identity_verified: false, + open_to_volunteer: false, + }, + type: 'users', + follower: false, + following: false, + created_at: '2025-02-27T10:59:24.278Z', + connection_status: null, + verification_status: null, + }, + parentId: 'ecce2dec-35a2-4a6a-a0d8-155cd898f6b9', + consolidate_number: 0, + }, + view_at: '2025-02-28T10:24:00.022Z', + read_at: '2025-02-28T10:58:47.888Z', + updated_at: '2025-02-28T10:58:47.888Z', + created_at: '2025-02-28T10:23:52.952Z', + silent: false, + }, + ], +}; diff --git a/cypress/e2e/search/search-job.cy.ts b/cypress/e2e/search/search-job.cy.ts new file mode 100644 index 000000000..13f8852d1 --- /dev/null +++ b/cypress/e2e/search/search-job.cy.ts @@ -0,0 +1,127 @@ +import { ORGS_DETAIL, SEARCH_RESULT, SEARCH_RESULT_DETAIL, SEARCHED_JOBS, QUESTIONS, NOTIFICATIONS } from './mocks'; +import { + API_SERVER, + APP_URL, + CITY, + FIRSTNAME, + LASTNAME, + ORGANIZATION_EMAIL, + ORGANIZATION_USERNAME, + USERNAME, +} from '../authentication/constants'; +import { PROJECTS, SKILLS } from '../authentication/mocks'; +import { generateRandomEmail, OrganizationUser, User } from '../authentication/utilities'; + +const SIGNINGUP_EMAIL = generateRandomEmail(); +const user = new User(FIRSTNAME, LASTNAME, SIGNINGUP_EMAIL, USERNAME); + +const SEARCH_KEYWORD = 'development'; + +const socialCauses = ['Health', 'Security', 'Bullying']; +const organizationUser = new OrganizationUser( + FIRSTNAME, + LASTNAME, + SIGNINGUP_EMAIL, + USERNAME, + ORGANIZATION_EMAIL, + ORGANIZATION_USERNAME, + CITY, + socialCauses, +); + +describe('search bar test automation for jobs', () => { + beforeEach(() => { + //====================general interceptions===================// + cy.intercept('GET', `${API_SERVER}/projects*t=*&page=*&status=*&limit=*`, req => { + req.reply(200, PROJECTS); + }).as('getProjects'); + + cy.intercept('GET', `${API_SERVER}/identities*t=*`, req => { + req.reply(user.getIdentity()); + }).as('getIdentities'); + + cy.intercept('POST', `https://pulse.walletconnect.org/batch*projectId=*&st=*&sv=*`, req => { + req.reply(200); + }); + + cy.intercept( + 'GET', + `https://explorer-api.walletconnect.com/w3m/v1/getDesktopListings*projectId=*&sdkType=*&sdkVersion=*&page*&entries=*&version=*`, + req => { + req.reply(200); + }, + ); + + cy.intercept('GET', `${API_SERVER}/skills*t=*&limit=*`, req => { + req.reply(200, SKILLS); + }).as('getSkills'); + + cy.intercept('GET', `${API_SERVER}/notifications*t=*&page=*&limit=*`, req => { + req.reply(200, NOTIFICATIONS); + }).as('getNotification'); + + cy.intercept('GET', `${API_SERVER}/user/*/recommend/jobs*t=*`, req => { + req.reply(200, { page: 1, limit: 10, total_count: 0, items: [] }); + }).as('getRecommendedJobs'); + + cy.intercept('GET', `${API_SERVER}/chats/unreads/counts*t=*`, req => { + req.reply(200, { count: 1 }); + }).as('getUnreadCounts'); + + //====================== interceptions ================// + cy.intercept('POST', `${API_SERVER}/search/v2?page=1&limit=20`, req => { + req.reply(200, SEARCHED_JOBS); + }); + cy.intercept('GET', `${API_SERVER}/search/v2?page=1&limit=20`, req => { + req.reply(200, SEARCHED_JOBS); + }); + + cy.intercept('POST', `${API_SERVER}/search/v2?limit=10&page=*`, req => { + req.reply(200, SEARCH_RESULT); + }).as('postSearch'); + + //===============search detail ==============// + cy.intercept('GET', `${API_SERVER}/projects/*?t=*`, req => { + req.reply(200, SEARCH_RESULT_DETAIL); + }).as('searchDetail'); + cy.intercept('GET', `${API_SERVER}/jobs/projects/*?t=*`, req => { + req.reply(200, SEARCH_RESULT_DETAIL); + }).as('searchDetail'); + cy.intercept('GET', `${API_SERVER}/orgs/*?t=*`, req => { + req.reply(200, ORGS_DETAIL); + }).as('orgsDetail'); + + cy.intercept('GET', `${API_SERVER}/jobs/identities?t=*`, req => { + req.reply(200, user.getIdentity()); + }).as('getreadMoreIdentities'); + + cy.intercept('GET', `${API_SERVER}/jobs/identities?t=*`, req => { + req.reply(200, organizationUser.getIdentity()); + }).as('getApplicants'); + cy.intercept('GET', `${API_SERVER}/projects/*/questions?t=*`, req => { + req.reply(200, QUESTIONS); + }).as('getApplicants'); + }); + + it('user naviagatios to dashboard and searches for a DEVELOPMENT job and chooses from the suggestion', () => { + cy.visit(`${APP_URL}jobs`); + cy.url().should('contain', '/jobs'); + cy.contains('Find work that matters to you and the world').should('be.visible'); + + cy.get('#search-input').click(); + cy.get('#search-modal').type('development'); + cy.get('[data-testid="search-result"]').should('exist'); + cy.get('[data-testid="search-result"]').first().click(); + }); + it('user naviagatios to dashboard and searches for a DEVELOPMENT job', () => { + cy.visit(`${APP_URL}jobs`); + cy.url().should('contain', '/jobs'); + cy.contains('Find work that matters to you and the world').should('be.visible'); + + cy.get('#search-input').click(); + cy.get('#search-modal').type('development{enter}'); + cy.wait('@postSearch'); + + cy.contains(`Search for ${SEARCH_KEYWORD}`); + }); +}); diff --git a/src/modules/Search/components/ResultList/index.tsx b/src/modules/Search/components/ResultList/index.tsx index d2e118a4f..72db88b95 100644 --- a/src/modules/Search/components/ResultList/index.tsx +++ b/src/modules/Search/components/ResultList/index.tsx @@ -35,7 +35,7 @@ export const ResultList: React.FC = ({ list, onClose }) => { return (
{list.map((item, index) => ( -
+
Date: Mon, 25 Aug 2025 13:17:41 +0330 Subject: [PATCH 48/76] wallet component --- src/core/api/users/users.api.ts | 2 +- src/core/api/users/users.types.ts | 14 +- src/core/helpers/convert-md-to-jsx.tsx | 32 ++ src/core/helpers/create-form-data.ts | 7 + src/core/helpers/deepLinks.tsx | 16 + src/core/helpers/getBadgeLevel.ts | 11 + src/core/helpers/getTierDetails.ts | 24 ++ src/core/helpers/objects-arrays.ts | 32 ++ src/core/helpers/pushNotification.ts | 44 +++ src/core/helpers/regexs.ts | 4 + src/core/helpers/relative-time.ts | 58 ++++ src/core/helpers/texts.ts | 13 + src/core/helpers/utils.ts | 3 + .../general/components/Image/index.tsx | 11 + .../components/Modal/index.module.scss | 90 ++++++ .../general/components/Modal/index.tsx | 81 ++++++ .../general/components/Modal/index.types.ts | 22 ++ .../ChooseWalletModal/index.module.scss | 32 ++ .../components/ChooseWalletModal/index.tsx | 51 ++++ .../ChooseWalletModal/index.types.ts | 13 + .../ConnectModal/index.module.scss | 62 ++++ .../ConnectButton/ConnectModal/index.tsx | 54 ++++ .../ConnectButton/ConnectModal/index.types.ts | 10 + .../ConnectButton/index.module.scss | 41 +-- .../wallet/components/ConnectButton/index.tsx | 273 ++++++++++++++---- .../components/ConnectButton/index.type.ts | 17 ++ src/store/contexts/index.ts | 3 + src/store/contexts/wallet.context.tsx | 49 ++++ 28 files changed, 1000 insertions(+), 69 deletions(-) create mode 100644 src/core/helpers/convert-md-to-jsx.tsx create mode 100644 src/core/helpers/create-form-data.ts create mode 100644 src/core/helpers/deepLinks.tsx create mode 100644 src/core/helpers/getBadgeLevel.ts create mode 100644 src/core/helpers/getTierDetails.ts create mode 100644 src/core/helpers/objects-arrays.ts create mode 100644 src/core/helpers/pushNotification.ts create mode 100644 src/core/helpers/regexs.ts create mode 100644 src/core/helpers/relative-time.ts create mode 100644 src/core/helpers/texts.ts create mode 100644 src/core/helpers/utils.ts create mode 100644 src/modules/general/components/Image/index.tsx create mode 100644 src/modules/general/components/Modal/index.module.scss create mode 100644 src/modules/general/components/Modal/index.tsx create mode 100644 src/modules/general/components/Modal/index.types.ts create mode 100644 src/modules/wallet/components/ChooseWalletModal/index.module.scss create mode 100644 src/modules/wallet/components/ChooseWalletModal/index.tsx create mode 100644 src/modules/wallet/components/ChooseWalletModal/index.types.ts create mode 100644 src/modules/wallet/components/ConnectButton/ConnectModal/index.module.scss create mode 100644 src/modules/wallet/components/ConnectButton/ConnectModal/index.tsx create mode 100644 src/modules/wallet/components/ConnectButton/ConnectModal/index.types.ts create mode 100644 src/modules/wallet/components/ConnectButton/index.type.ts create mode 100644 src/store/contexts/index.ts create mode 100644 src/store/contexts/wallet.context.tsx diff --git a/src/core/api/users/users.api.ts b/src/core/api/users/users.api.ts index eb61dd4c9..8e3b4ec30 100644 --- a/src/core/api/users/users.api.ts +++ b/src/core/api/users/users.api.ts @@ -65,7 +65,7 @@ export async function updateProfile(payload: UpdateProfileReq): Promise { } export async function updateWallet(payload: UpdateWalletReq): Promise { - return (await post('user/update/wallet', payload)).data; + return (await post('users/wallets', payload, overwrittenConfigV3)).data; } export async function openToWork(): Promise { diff --git a/src/core/api/users/users.types.ts b/src/core/api/users/users.types.ts index 52e11eaca..ae5940307 100644 --- a/src/core/api/users/users.types.ts +++ b/src/core/api/users/users.types.ts @@ -39,7 +39,9 @@ export interface UpdateProfileReq { } export interface UpdateWalletReq { - wallet_address: string; + address: string; + network: string; + testnet: boolean; } export interface LanguageReq { @@ -91,6 +93,15 @@ export interface UsersRes extends PaginateRes { items: User[]; } +export interface Wallet { + id: string; + address: string; + network: string; + testnet: boolean; + created_at: Date; + updated_at: Date; +} + export interface User { id: string; username: string; @@ -129,6 +140,7 @@ export interface User { name?: string; events?: Event[] | null; rate: number; + wallets?: Wallet[] | null; } export interface UserProfile extends User { diff --git a/src/core/helpers/convert-md-to-jsx.tsx b/src/core/helpers/convert-md-to-jsx.tsx new file mode 100644 index 000000000..f1b1c4711 --- /dev/null +++ b/src/core/helpers/convert-md-to-jsx.tsx @@ -0,0 +1,32 @@ +import Markdown from 'markdown-to-jsx'; +import { ReactNode } from 'react'; + +interface CustomLinkProps { + children: ReactNode; + href: string; +} + +const CustomLink: React.FC = ({ children, href }) => ( + + {children} + +); + +const options = { + overrides: { + a: { + component: CustomLink, + }, + }, +}; + +export function convertMarkdownToJSX(value: string): JSX.Element { + if (!value) return <>; + const modifiedVal = value.replaceAll('
', ' \n'); + try { + return {modifiedVal}; + } catch (error) { + console.error('Markdown rendering failed:', error); + return
{modifiedVal}
; + } +} diff --git a/src/core/helpers/create-form-data.ts b/src/core/helpers/create-form-data.ts new file mode 100644 index 000000000..e5a6a182e --- /dev/null +++ b/src/core/helpers/create-form-data.ts @@ -0,0 +1,7 @@ +export const createFormData = (data: Record): FormData => { + const formData = new FormData(); + Object.entries(data).forEach(([key, value]) => { + formData.append(key, value instanceof File ? value : JSON.stringify(value)); + }); + return formData; +}; diff --git a/src/core/helpers/deepLinks.tsx b/src/core/helpers/deepLinks.tsx new file mode 100644 index 000000000..43435ba2b --- /dev/null +++ b/src/core/helpers/deepLinks.tsx @@ -0,0 +1,16 @@ +import { App as CapacitorApp, URLOpenListenerEvent } from '@capacitor/app'; +import { useEffect } from 'react'; + +export const DeepLinks = (): JSX.Element => { + const proofspace = 'zakaio://platform.proofspace.id/native/execute'; + + useEffect(() => { + CapacitorApp.addListener('appUrlOpen', (e: URLOpenListenerEvent) => { + if (e.url.includes(proofspace)) { + window.location.href = '/achievements'; + } + }); + }, []); + + return <>; +}; diff --git a/src/core/helpers/getBadgeLevel.ts b/src/core/helpers/getBadgeLevel.ts new file mode 100644 index 000000000..7264c7be0 --- /dev/null +++ b/src/core/helpers/getBadgeLevel.ts @@ -0,0 +1,11 @@ +export const getBadgeLevel = (points: number) => { + let level = 0; + if (points <= 535) { + level = 1; + } else if (points <= 8576) { + level = 2; + } else { + level = 3; + } + return level; +}; diff --git a/src/core/helpers/getTierDetails.ts b/src/core/helpers/getTierDetails.ts new file mode 100644 index 000000000..9a1728333 --- /dev/null +++ b/src/core/helpers/getTierDetails.ts @@ -0,0 +1,24 @@ +import { TIERS } from 'src/constants/TIERS'; + +export const getTierDetails = (impactPoints: number) => { + const tier = TIERS.find(({ min, max }) => impactPoints >= min && impactPoints <= max); + + if (!tier) + return { + tier: 0, + min: 0, + max: 0, + progressPercent: 0, + pointsLeft: 0, + }; + + const progressPercent = ((impactPoints - tier.min) / (tier.max - tier.min)) * 100; + const pointsLeft = tier.max - impactPoints + 1; + return { + tier: tier.tier, + min: tier.min, + max: tier.max, + progressPercent: Math.min(Math.max(progressPercent, 0), 100), + pointsLeft, + }; +}; diff --git a/src/core/helpers/objects-arrays.ts b/src/core/helpers/objects-arrays.ts new file mode 100644 index 000000000..2e0b7f5bc --- /dev/null +++ b/src/core/helpers/objects-arrays.ts @@ -0,0 +1,32 @@ +export const removedEmptyProps = (obj: Record | unknown) => { + if (!obj) return obj; + if (obj instanceof FormData) return obj; + return Object.entries(obj).reduce((prev, [key, value]) => { + if (value) { + Object.assign(prev, { [key]: value }); + } + return prev; + }, {}); +}; + +export const removeEmptyArrays = (obj: null | undefined | Record) => { + if (!obj) { + return; + } + + return Object.entries(obj).reduce((prev, [key, value]) => { + if (!Array.isArray(value) || !(value.length === 0)) Object.assign(prev, { [key]: value }); + + return prev; + }, {}); +}; + +export const removeValuesFromObject = (obj: any, valuesToRemove: Array) => { + const output: any = {}; + for (const key in obj) { + if (!valuesToRemove.includes(obj[key])) { + output[key] = obj[key]; + } + } + return output; +}; diff --git a/src/core/helpers/pushNotification.ts b/src/core/helpers/pushNotification.ts new file mode 100644 index 000000000..e0370bcff --- /dev/null +++ b/src/core/helpers/pushNotification.ts @@ -0,0 +1,44 @@ +import { FirebaseMessaging } from '@capacitor-firebase/messaging'; + +export const checkPermissions = async () => { + const result = await FirebaseMessaging.checkPermissions(); + return result.receive; +}; + +export const requestPermissions = async () => { + const result = await FirebaseMessaging.requestPermissions(); + return result.receive; +}; + +export const getToken = async (): Promise => { + return FirebaseMessaging.getToken() + .then(({ token }) => { + console.log('token', token); + + return token; + }) + .catch(() => ''); +}; + +export const addNotificationReceivedListener = async () => { + await FirebaseMessaging.addListener('notificationReceived', event => { + console.log('notificationReceived', { event }); + }); +}; + +export const getDeliveredNotifications = async () => { + const result = await FirebaseMessaging.getDeliveredNotifications(); + return result.notifications; +}; + +export const subscribeToTopic = async (topic: string) => { + await FirebaseMessaging.subscribeToTopic({ topic }); +}; + +export const unsubscribeToPushNotifs = async () => { + await FirebaseMessaging.removeAllListeners(); +}; + +export const deletePushNotifToken = async () => { + await FirebaseMessaging.deleteToken(); +}; diff --git a/src/core/helpers/regexs.ts b/src/core/helpers/regexs.ts new file mode 100644 index 000000000..d414e2737 --- /dev/null +++ b/src/core/helpers/regexs.ts @@ -0,0 +1,4 @@ +export const emailPattern = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/i; +export const passwordPattern = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@#$%^&+=!])[A-Za-z\d@#$%^&+=!]{8,}$/; +export const urlPattern = + /(https?:\/\/(?:www\.|(?!www))[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\.[^\s]{2,}|www\.[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\.[^\s]{2,}|https?:\/\/(?:www\.|(?!www))[a-zA-Z0-9]+\.[^\s]{2,}|www\.[a-zA-Z0-9]+\.[^\s]{2,})/; diff --git a/src/core/helpers/relative-time.ts b/src/core/helpers/relative-time.ts new file mode 100644 index 000000000..12da42172 --- /dev/null +++ b/src/core/helpers/relative-time.ts @@ -0,0 +1,58 @@ +import moment from 'moment'; + +export const toRelativeTime = (date: string | Date) => { + const isoStr = date; + const newDate = new Date(isoStr); + const timestamp = newDate.getTime(); + const difference = new Date().getTime() - new Date(timestamp).getTime(); + const daysDifference = Math.floor(difference / 1000 / 60 / 60 / 24); + const hoursDifference = Math.floor(difference / 1000 / 60 / 60); + const minutesDifference = Math.floor(difference / 1000 / 60); + const secondsDifference = Math.floor(difference / 1000); + + if (daysDifference < 1) { + if (minutesDifference < 60) { + if (secondsDifference < 60) { + return moment(timestamp).startOf('second').fromNow(); + } + return moment(timestamp).startOf('minute').fromNow(); + } + return moment(timestamp).startOf('hour').fromNow(); + } else { + return moment(timestamp).startOf('day').fromNow(); + } +}; + +// output looks like this 14 May +export const convertTimeToMonth = (timeStr: string) => { + const months = [ + 'January', + 'February', + 'March', + 'April', + 'May', + 'June', + 'July', + 'August', + 'September', + 'October', + 'November', + 'December', + ]; + + const dt = new Date(timeStr); + const day = dt.getUTCDate(); + const monthName = months[dt.getUTCMonth()]; + + const result = `${day} ${monthName}`; + return result; +}; + +export const formatDate = (date: string | Date, options?: Intl.DateTimeFormatOptions) => { + const currentDate = new Date(date); + const currentOptions = + options && Object?.keys(options)?.length + ? options + : ({ year: 'numeric', month: 'short', day: '2-digit' } as Intl.DateTimeFormatOptions); + return currentDate.toLocaleDateString('en-US', currentOptions); +}; diff --git a/src/core/helpers/texts.ts b/src/core/helpers/texts.ts new file mode 100644 index 000000000..80c2a54bc --- /dev/null +++ b/src/core/helpers/texts.ts @@ -0,0 +1,13 @@ +export const beautifyText = (str: string) => { + if (!str) return str; + return str + .toLowerCase() + .split('_') + .map(word => word.charAt(0).toUpperCase() + word.slice(1)) + .join(' '); +}; + +export const truncateFromMiddle = (fullStr: string, frontChars: number, backChars: number, middleStr = '...') => { + if (fullStr.length <= frontChars) return fullStr; + return fullStr.slice(0, frontChars) + middleStr + fullStr.slice(fullStr.length - backChars); +}; diff --git a/src/core/helpers/utils.ts b/src/core/helpers/utils.ts new file mode 100644 index 000000000..1dae91050 --- /dev/null +++ b/src/core/helpers/utils.ts @@ -0,0 +1,3 @@ +import { t } from 'i18next'; + +export const translate = t; diff --git a/src/modules/general/components/Image/index.tsx b/src/modules/general/components/Image/index.tsx new file mode 100644 index 000000000..23ef910ec --- /dev/null +++ b/src/modules/general/components/Image/index.tsx @@ -0,0 +1,11 @@ +import { config } from 'src/config'; + +const Image: React.FC> = ({ src = '', ...props }) => { + const isExternalUrl = /^https?:\/\//.test(src) || src.startsWith('//'); + const isBundledAsset = src.startsWith('data:'); + const finalSrc = isExternalUrl || isBundledAsset ? src : config.basePath + src; + + return ; +}; + +export default Image; diff --git a/src/modules/general/components/Modal/index.module.scss b/src/modules/general/components/Modal/index.module.scss new file mode 100644 index 000000000..bd1544f61 --- /dev/null +++ b/src/modules/general/components/Modal/index.module.scss @@ -0,0 +1,90 @@ +@import 'src/styles/constants/_primitives.scss'; + +.container { + display: flex; + flex-direction: column; + margin: auto; + background-color: $color-white; + z-index: 30; + + @media (min-width: 640px) { + width: 640px; + margin: auto; + max-height: 90%; + height: fit-content; + display: flex; + align-items: center; + border-radius: 12px; + } + + @media (max-width: 640px) { + width: 100%; + } +} + +.mobileCentered { + @media (max-width: 640px) { + max-width: calc(100% - 32px); + width: calc(100% - 32px); + margin: auto; + height: fit-content; + max-height: calc(100% - 32px); + overflow-y: auto; + border-radius: 12px; + } +} + +.mobileFullHeight { + @media (max-width: 640px) { + width: 100%; + height: 100%; + max-height: 100%; + } +} + +.mobileDefault { + @media (max-width: 640px) { + width: 100%; + margin-top: 80px; + border-radius: 12px 12px 0 0; + height: calc(100% - 80px); + max-height: calc(100% - 80px); + } +} + +.header { + position: absolute; + width: 100%; + top: 0; +} + +.title { + width: 100%; + font-size: 18px; + font-weight: 600; + line-height: 28px; + letter-spacing: 0em; + color: $color-grey-900; +} + +.subtitle { + width: 100%; + font-size: 14px; + font-weight: 400; + line-height: 20px; + letter-spacing: 0em; + color: $color-grey-600; +} + +.closeBtn { + border: none; + border-radius: 8px; + padding: 10px; + width: 44px; + height: 44px; +} + +.closeBtn:focus-visible { + outline: 5px auto Highlight; + outline: 5px auto -webkit-focus-ring-color; +} diff --git a/src/modules/general/components/Modal/index.tsx b/src/modules/general/components/Modal/index.tsx new file mode 100644 index 000000000..0eaca4226 --- /dev/null +++ b/src/modules/general/components/Modal/index.tsx @@ -0,0 +1,81 @@ +import { Backdrop, Divider, IconButton } from '@mui/material'; +import { Icon } from 'src/modules/general/components/Icon'; +import variables from 'src/styles/constants/_exports.module.scss'; + +import styles from './index.module.scss'; +import { ModalProps } from './index.types'; + +const Modal: React.FC = props => { + const { + open, + handleClose, + icon, + title, + subTitle, + content, + footer, + mobileFullHeight = true, + mobileCentered = false, + children, + headerDivider = true, + footerDivider = true, + customStyle, + id = '', + inlineTitle = true, + centerHeader = false, + contentClassName = '', + closeButtonClassName = '', + } = props; + + return ( + <> + {open && ( + theme.zIndex.drawer + 1, width: '100vw' }} open={open} id={id}> +
+
+ {icon} + {inlineTitle && ( +
+ {title &&

{title}

} + {subTitle &&

{subTitle}

} +
+ )} + + + +
+ {!inlineTitle && ( +
+ {title &&

{title}

} + {subTitle &&

{subTitle}

} +
+ )} + {headerDivider && } +
{content || children}
+ {footerDivider && } + {footer} +
+
+ )} + + ); +}; + +export default Modal; diff --git a/src/modules/general/components/Modal/index.types.ts b/src/modules/general/components/Modal/index.types.ts new file mode 100644 index 000000000..7f341753a --- /dev/null +++ b/src/modules/general/components/Modal/index.types.ts @@ -0,0 +1,22 @@ +import { ReactNode } from 'react'; + +export interface ModalProps { + children?: ReactNode; + open: boolean; + handleClose: (a?: any) => void; + icon?: ReactNode; + title?: string | ReactNode; + subTitle?: string | ReactNode; + content?: ReactNode; + footer?: ReactNode; + mobileFullHeight?: boolean; + mobileCentered?: boolean; + headerDivider?: boolean; + footerDivider?: boolean; + customStyle?: string; + id?: string; + inlineTitle?: boolean; + centerHeader?: boolean; + contentClassName?: string; + closeButtonClassName?: string; +} diff --git a/src/modules/wallet/components/ChooseWalletModal/index.module.scss b/src/modules/wallet/components/ChooseWalletModal/index.module.scss new file mode 100644 index 000000000..dfdaf7279 --- /dev/null +++ b/src/modules/wallet/components/ChooseWalletModal/index.module.scss @@ -0,0 +1,32 @@ +@import 'src/styles/constants/_primitives.scss'; + +.wallets { + // @include flex(flex-start, center); + flex-wrap: wrap; + gap: 1rem; + padding: 0 1.5rem; + + /* @media (max-width: $md) { + padding: 0 1rem; + } */ + + .wallet { + width: calc(50% - 0.5rem); + // @include flex(flex-start, center); + gap: 0.5rem; + padding: 0.25rem 0.5rem; + border-radius: 8px; + font-size: 14px; + font-weight: 500; + color: $color-grey-700; + cursor: pointer; + + &:hover { + background-color: $color-grey-100; + } + + /* @media (max-width: $md) { + width: 100%; + } */ + } +} diff --git a/src/modules/wallet/components/ChooseWalletModal/index.tsx b/src/modules/wallet/components/ChooseWalletModal/index.tsx new file mode 100644 index 000000000..fc33e668f --- /dev/null +++ b/src/modules/wallet/components/ChooseWalletModal/index.tsx @@ -0,0 +1,51 @@ +import { translate } from 'src/core/helpers/utils'; +import Image from 'src/modules/general/components/Image'; +import Modal from 'src/modules/general/components/Modal'; + +import styles from './index.module.scss'; +import { ChooseWalletModalProps } from './index.types'; + +const ChooseWalletModal: React.FC = ({ + open, + handleClose, + title = translate('payments-method-crypto-wallet.connect'), + headerDivider = false, + footerDivider = false, + mobileCentered = false, + mobileFullHeight = false, + wallets, + onWalletSelect, + ...props +}) => { + return ( + +
+ {wallets.map(wallet => ( +
onWalletSelect(wallet)}> + {wallet.name} + {wallet.name} +
+ ))} +
+
+ ); +}; + +export default ChooseWalletModal; diff --git a/src/modules/wallet/components/ChooseWalletModal/index.types.ts b/src/modules/wallet/components/ChooseWalletModal/index.types.ts new file mode 100644 index 000000000..b9051bc95 --- /dev/null +++ b/src/modules/wallet/components/ChooseWalletModal/index.types.ts @@ -0,0 +1,13 @@ +import { ModalProps } from '../Modal/index.types'; + +export type Wallet = { + name: string; + icon: string; + type: string; + connector?: unknown; +}; + +export interface ChooseWalletModalProps extends ModalProps { + wallets: Wallet[]; + onWalletSelect: (wallet: Wallet) => void; +} diff --git a/src/modules/wallet/components/ConnectButton/ConnectModal/index.module.scss b/src/modules/wallet/components/ConnectButton/ConnectModal/index.module.scss new file mode 100644 index 000000000..40161eb6b --- /dev/null +++ b/src/modules/wallet/components/ConnectButton/ConnectModal/index.module.scss @@ -0,0 +1,62 @@ +@import 'src/styles/constants/_primitives.scss'; + +.modal { + max-width: 22.5rem; + background-color: $color-grey-100; + + /* @media (max-width: $md) { + max-width: 100%; + } */ + + &__content { + // @include flex(normal, center, column); + gap: 0.75rem; + padding: 0 1.5rem 1.5rem; + + /* @media (max-width: $md) { + padding: 0 1rem 1rem; + } */ + } + + .address { + flex: 1; + // @include flex(center, center, column); + padding-left: 1rem; + font-size: 18px; + font-weight: 600; + line-height: 24px; + border-left: 0; + color: $color-grey-900; + } + + .balance { + font-size: 14px; + font-weight: normal; + line-height: 18px; + color: $color-grey-500; + } + + .buttons { + width: 100%; + // @include flex(space-between, center); + gap: 0.75rem; + margin-top: 0.5rem; + + .button { + flex: 1; + padding: 0.5rem; + background-color: $color-white; + border-radius: 12px; + box-shadow: $shadow-sm; + font-size: 12px; + font-weight: 600; + color: $color-grey-700; + text-align: center; + cursor: pointer; + + &:hover { + background-color: $color-grey-50; + } + } + } +} diff --git a/src/modules/wallet/components/ConnectButton/ConnectModal/index.tsx b/src/modules/wallet/components/ConnectButton/ConnectModal/index.tsx new file mode 100644 index 000000000..a824fcae7 --- /dev/null +++ b/src/modules/wallet/components/ConnectButton/ConnectModal/index.tsx @@ -0,0 +1,54 @@ +import { translate } from 'src/core/helpers/utils'; +import { Icon } from 'src/modules/general/components/Icon'; +import Image from 'src/modules/general/components/Image'; +import Modal from 'src/modules/general/components/Modal'; +import variables from 'src/styles/constants/_exports.module.scss'; + +import styles from './index.module.scss'; +import { ConnectModalProps } from './index.types'; + +const ConnectModal: React.FC = ({ + open, + handleClose, + symbol, + address, + formattedBalance, + handleDisconnect, + handleCopy, + footer, +}) => { + return ( + + <> + {symbol} +
+ {address} + + {formattedBalance} {symbol} + +
+
+ + +
+ +
+ ); +}; + +export default ConnectModal; diff --git a/src/modules/wallet/components/ConnectButton/ConnectModal/index.types.ts b/src/modules/wallet/components/ConnectButton/ConnectModal/index.types.ts new file mode 100644 index 000000000..514403df8 --- /dev/null +++ b/src/modules/wallet/components/ConnectButton/ConnectModal/index.types.ts @@ -0,0 +1,10 @@ +export interface ConnectModalProps { + open: boolean; + handleClose: () => void; + symbol: string; + address: string; + formattedBalance: string; + handleDisconnect: () => void; + handleCopy: () => void; + footer?: React.ReactNode; +} diff --git a/src/modules/wallet/components/ConnectButton/index.module.scss b/src/modules/wallet/components/ConnectButton/index.module.scss index a94491eb4..c2811e024 100644 --- a/src/modules/wallet/components/ConnectButton/index.module.scss +++ b/src/modules/wallet/components/ConnectButton/index.module.scss @@ -1,24 +1,31 @@ @import 'src/styles/constants/_primitives.scss'; -.chain, -.account { - display: flex; - align-items: center; - justify-content: center; - gap: 0.5rem; - font-size: 16px; - font-weight: 600; - color: $color-grey-600; - cursor: pointer; -} +.button { + // @include flex(normal, center); + gap: 1rem; + + .symbol { + // @include flex(normal, center); + gap: 0.5rem; + } -.account { - flex: 1; - color: $color-grey-400; - border-left: 1px solid $color-grey-300; - padding-left: 0.75rem; + .address { + flex: 1; + // @include flex(center, center); + gap: 0.5rem; + font-size: 16px; + font-weight: 600; + border-left: 0; + color: $color-grey-600; + + &--connected { + padding-left: 1rem; + color: $color-grey-400; + border-left: 1px solid $color-grey-300; + } + } - &__balance { + .balance { color: $color-grey-300; } } diff --git a/src/modules/wallet/components/ConnectButton/index.tsx b/src/modules/wallet/components/ConnectButton/index.tsx index 3aa389962..c056e2a4a 100644 --- a/src/modules/wallet/components/ConnectButton/index.tsx +++ b/src/modules/wallet/components/ConnectButton/index.tsx @@ -1,59 +1,232 @@ -import { ConnectButton as RKButton } from '@rainbow-me/rainbowkit'; -import { Button } from 'src/modules/general/components/Button'; +import { BrowserWallet, Wallet } from '@meshsdk/core'; +import { useEffect, useState } from 'react'; +import { CustomError } from 'src/core/adaptors'; +import { truncateFromMiddle } from 'src/core/helpers/texts'; +import { translate } from 'src/core/helpers/utils'; +import { NETWORKS } from 'src/dapp/dapp.connect'; +import { AlertModal } from 'src/modules/general/components/AlertModal'; +import { Button } from 'src/modules/general/components/Button/index'; import { Icon } from 'src/modules/general/components/Icon'; +import Image from 'src/modules/general/components/Image'; +import { useWalletContext } from 'src/store/contexts'; +import { useAccount, useBalance, useChainId, useConnect, useDisconnect } from 'wagmi'; import styles from './index.module.scss'; +import ChooseWalletModal from '../ChooseWalletModal'; +import ConnectModal from './ConnectModal'; +import { CardanoWallet, ConnectButtonProps, EVMWallet } from './index.type'; + +const ConnectButton: React.FC = ({ defaultAddress = '', onSetWallet }) => { + const { dispatch, state } = useWalletContext(); + const { address = defaultAddress, wallet, balance } = state; + + const { address: evmAddress = '0x', isConnected: isEvmConnected } = useAccount(); + const { connectors: evmConnectors, connect: connectEvm } = useConnect(); + const { disconnect: disconnectEvm } = useDisconnect(); + const evmChainId = useChainId(); + const { data: evmBalance } = useBalance({ + address: evmAddress, + chainId: evmChainId, + }); + + const [availableWallets, setAvailableWallets] = useState<(CardanoWallet | EVMWallet)[]>([]); + const [pendingConnector, setPendingConnector] = useState(wallet); + const [isModalOpen, setIsModalOpen] = useState(false); + const [showMenu, setShowMenu] = useState(false); + const [error, setError] = useState(''); + + const connected = !!address || isEvmConnected; + const savedWallet = localStorage.getItem('selectedWallet'); + const savedType = localStorage.getItem('walletType'); + const cardanoFormat = 1_000_000; + const evmFormat = 1e18; + const symbol = balance.symbol; + const formattedBalance = Number(balance.value.toFixed(3)).toLocaleString(); + + useEffect(() => { + if (!savedWallet) return; + if (savedType === 'cardano') { + connectCardanoWallet(savedWallet); + } + if (savedType === 'evm') { + const connector = evmConnectors.find(connector => connector.name === savedWallet); + if (connector) { + connectEvmWallet(connector); + } + } + }, []); + + useEffect(() => { + if (isEvmConnected && evmAddress && evmBalance && pendingConnector) { + finalizeConnection({ + wallet: pendingConnector, + address: evmAddress, + name: pendingConnector.name, + type: 'evm', + chain_id: evmChainId.toString(), + balance: { symbol: evmBalance?.symbol || '', value: Number(evmBalance.value) / evmFormat }, + }); + setPendingConnector(null); + } + }, [isEvmConnected, evmAddress, evmBalance, pendingConnector]); + + const finalizeConnection = ({ + wallet, + address, + name, + type, + chain_id, + balance, + }: { + wallet: BrowserWallet | EVMWallet['connector']; + address: string; + name: string; + type: 'cardano' | 'evm'; + chain_id: string; + balance: { symbol: string; value: number }; + }) => { + dispatch({ type: 'CONNECT', payload: { wallet, address, balance, connected } }); + setIsModalOpen(false); + localStorage.setItem('walletType', type); + localStorage.setItem('selectedWallet', name); + + const chain = type === 'cardano' ? 'Cardano' : (NETWORKS.find(n => n.chain.id === evmChainId)?.chain.name ?? 'EVM'); + onSetWallet?.({ chain, chain_id, address }); + }; + + const connectCardanoWallet = async (walletName: string) => { + try { + const wallet = await BrowserWallet.enable(walletName); + const networkId = await wallet.getNetworkId(); + const address = await wallet.getChangeAddress(); + const utxos = await wallet.getUtxos(); + const totalLovelace = utxos?.reduce((sum, utxo) => { + const lovelace = utxo.output.amount.find(a => a.unit === 'lovelace'); + return sum + BigInt(lovelace?.quantity || '0'); + }, BigInt(0)); + const ada = Number(totalLovelace) / cardanoFormat; + + finalizeConnection({ + wallet, + address, + name: walletName, + type: 'cardano', + chain_id: networkId ? 'cardano-mainnet' : 'cardano-preprod', + balance: { symbol: 'ADA', value: ada }, + }); + } catch (error: unknown) { + console.error((error as CustomError).message); + setError(translate('payments-method-crypto-wallet.not-connected-error', { walletName })); + } + }; + + const connectEvmWallet = async (connector: EVMWallet['connector']) => { + try { + await connectEvm({ connector }); + // Wait until evmAddress updates via useAccount + setPendingConnector(connector); + } catch (error: unknown) { + console.error((error as CustomError).message); + setError(translate('payments-method-crypto-wallet.not-connected-error', { walletName: connector.name })); + } + }; + + const handleClick = async () => { + if (connected) { + setShowMenu(prev => !prev); + return; + } + + const cardanoWallets: Wallet[] = await BrowserWallet.getAvailableWallets(); + const evmWallets: EVMWallet[] = evmConnectors.map(connector => ({ + name: connector.name, + icon: connector.name.replaceAll(' ', '').toLowerCase(), + connector: connector, + type: 'evm', + })); + const wallets = [ + ...(cardanoWallets.map(wallet => ({ ...wallet, type: 'cardano' })) as CardanoWallet[]), + ...evmWallets, + ]; + + if (!wallets.length) { + setError(translate('payments-method-crypto-wallet.not-installed-error')); + return; + } + if (wallets.length === 1) { + const wallet = wallets[0]; + wallet.type === 'cardano' ? connectCardanoWallet(wallet.name) : connectEvmWallet((wallet as EVMWallet).connector); + } else { + setAvailableWallets(wallets); + setIsModalOpen(true); + } + }; + + const handleDisconnect = () => { + if (isEvmConnected) disconnectEvm(); + dispatch({ type: 'DISCONNECT' }); + setShowMenu(false); + localStorage.removeItem('walletType'); + localStorage.removeItem('selectedWallet'); + }; + + const handleCopy = () => { + navigator.clipboard.writeText(address); + setShowMenu(false); + }; -const ConnectButton: React.FC = () => { return ( - - {({ account, chain, openAccountModal, openChainModal, openConnectModal, authenticationStatus, mounted }) => { - const ready = mounted && authenticationStatus !== 'loading'; - const connected = - ready && account && chain && (!authenticationStatus || authenticationStatus === 'authenticated'); - - return ( -
- {(() => { - if (!connected) { - return ( - - ); - } - - return ( - - ); - })()} + <> +
+ + {connected && ( + setShowMenu(false)} + symbol={symbol} + address={truncateFromMiddle(address, 5, 5)} + formattedBalance={formattedBalance} + handleDisconnect={handleDisconnect} + handleCopy={handleCopy} + /> + )} + {!!availableWallets.length && ( + setIsModalOpen(false)} + wallets={availableWallets} + onWalletSelect={wallet => + wallet.type === 'cardano' + ? connectCardanoWallet(wallet.name) + : connectEvmWallet((wallet as EVMWallet).connector) + } + /> + )} +
+ setError('')} + title={translate('payment-cards.failed')} + message={error} + customIcon={} + closeButtn={false} + submitButton={false} + /> + ); }; diff --git a/src/modules/wallet/components/ConnectButton/index.type.ts b/src/modules/wallet/components/ConnectButton/index.type.ts new file mode 100644 index 000000000..d7efa02d4 --- /dev/null +++ b/src/modules/wallet/components/ConnectButton/index.type.ts @@ -0,0 +1,17 @@ +import { Wallet } from '@meshsdk/core'; +import { WalletReq } from 'src/core/api'; +import { Connector, CreateConnectorFn } from 'wagmi'; + +export interface ConnectButtonProps { + defaultAddress?: string; + onSetWallet?: (payload: WalletReq) => void; +} + +export type EVMWallet = { + type: 'evm'; + name: string; + icon: string; + connector: Connector; +}; + +export type CardanoWallet = Wallet & { type: 'cardano' }; diff --git a/src/store/contexts/index.ts b/src/store/contexts/index.ts new file mode 100644 index 000000000..4b28f4b21 --- /dev/null +++ b/src/store/contexts/index.ts @@ -0,0 +1,3 @@ +import { WalletProvider, useWalletContext } from './wallet.context'; + +export { WalletProvider, useWalletContext }; diff --git a/src/store/contexts/wallet.context.tsx b/src/store/contexts/wallet.context.tsx new file mode 100644 index 000000000..f3c130f67 --- /dev/null +++ b/src/store/contexts/wallet.context.tsx @@ -0,0 +1,49 @@ +import React, { createContext, useContext, useReducer } from 'react'; + +export type WalletType = 'cardano' | 'evm'; + +export type WalletState = { + address: string; + wallet: any; + connected: boolean; + balance: { symbol: string; value: number }; +}; + +export type WalletAction = { type: 'CONNECT'; payload: WalletState } | { type: 'DISCONNECT' }; + +const initialState: WalletState = { + address: '', + wallet: null, + connected: false, + balance: { symbol: '', value: 0 }, +}; + +const WalletContext = createContext<{ + state: WalletState; + dispatch: React.Dispatch; +}>({ + state: initialState, + dispatch: () => null, +}); + +function walletReducer(state: WalletState, action: WalletAction): WalletState { + switch (action.type) { + case 'CONNECT': + return { + ...state, + ...action.payload, + }; + case 'DISCONNECT': + return initialState; + default: + return state; + } +} + +export const WalletProvider: React.FC<{ children: React.ReactNode }> = ({ children }) => { + const [state, dispatch] = useReducer(walletReducer, initialState); + + return {children}; +}; + +export const useWalletContext = () => useContext(WalletContext); From 2de5edd0bf26accc773b259d8d092a5e1a458d04 Mon Sep 17 00:00:00 2001 From: satanmourner Date: Mon, 25 Aug 2025 22:00:15 +0330 Subject: [PATCH 49/76] fix: adapt connect button with Socious Work --- eslint.config.mjs | 1 + package-lock.json | 272 +----------------- package.json | 1 - public/icons/crypto/ADA.svg | 72 +++++ public/icons/token-symbols/ADA.png | Bin 0 -> 91295 bytes public/icons/token-symbols/AVAX.png | Bin 0 -> 47819 bytes public/icons/token-symbols/BNB.png | Bin 0 -> 104712 bytes public/icons/token-symbols/ETH.png | Bin 0 -> 160579 bytes public/icons/token-symbols/FTM.png | Bin 0 -> 100671 bytes public/icons/token-symbols/MATIC.png | Bin 0 -> 64571 bytes public/icons/token-symbols/xDAI.png | Bin 0 -> 85180 bytes public/images/wallets/brave.svg | 1 + public/images/wallets/coinbasewallet.svg | 1 + public/images/wallets/metamask.svg | 1 + public/images/wallets/rainbow.svg | 54 ++++ public/images/wallets/trustwallet.svg | 9 + public/images/wallets/walletconnect.svg | 13 + src/App.tsx | 10 +- src/config.ts | 2 +- src/core/adaptors/index.ts | 1 + src/core/adaptors/users/index.adaptors.tsx | 21 +- src/core/adaptors/users/index.types.ts | 6 + src/core/api/users/users.api.ts | 4 +- src/core/helpers/convert-md-to-jsx.tsx | 32 --- src/core/helpers/create-form-data.ts | 7 - src/core/helpers/deepLinks.tsx | 16 -- src/core/helpers/getBadgeLevel.ts | 11 - src/core/helpers/getTierDetails.ts | 24 -- src/core/helpers/objects-arrays.ts | 32 --- src/core/helpers/pushNotification.ts | 44 --- src/core/helpers/regexs.ts | 4 - src/core/helpers/relative-time.ts | 58 ---- src/core/helpers/texts.ts | 13 - src/core/helpers/utils.ts | 3 - src/core/hooks/useTokens.tsx | 12 +- .../translation/locales/en/translation.ts | 2 + src/core/translation/locales/en/wallet.json | 10 + .../translation/locales/es/translation.ts | 2 + src/core/translation/locales/es/wallet.json | 10 + .../translation/locales/jp/translation.ts | 2 + src/core/translation/locales/jp/wallet.json | 10 + .../translation/locales/kr/translation.ts | 2 + src/core/translation/locales/kr/wallet.json | 10 + src/dapp/dapp.config.ts | 4 + src/dapp/dapp.connect.tsx | 242 ++++++++++------ src/dapp/dapp.service.ts | 131 ++++++--- src/dapp/dapp.types.ts | 18 +- src/dapp/wallets/cip-30.ts | 111 ------- src/dapp/wallets/eternl.ts | 88 ------ src/dapp/wallets/lace.ts | 88 ------ .../Contract/components/WalletModal/index.tsx | 23 +- .../containers/PaymentCryptoModal/index.tsx | 5 +- .../usePaymentCryptoModal.tsx | 19 +- .../containers/SliderAwaiting/index.tsx | 4 +- .../SliderAwaiting/useSliderAwaiting.tsx | 18 +- .../Jobs/containers/OrgOfferModal/index.tsx | 5 +- .../containers/OrgOfferModal/useOrgOffer.tsx | 12 +- .../containers/ServiceCreateForm/index.tsx | 4 +- .../useServiceCreateForm.tsx | 25 +- .../containers/ServicePaymentFlow/index.tsx | 6 +- .../useServicePaymentFlow.tsx | 41 ++- .../general/components/Image/index.tsx | 11 - .../components/Modal/index.module.scss | 90 ------ .../general/components/Modal/index.tsx | 81 ------ .../general/components/Modal/index.types.ts | 22 -- .../general/components/modal/index.tsx | 2 +- .../components/modal/modal.module.scss | 5 + .../general/components/modal/modal.types.ts | 2 +- .../notifications/useNotifications.tsx | 1 - .../ChooseWalletModal/index.module.scss | 16 +- .../components/ChooseWalletModal/index.tsx | 10 +- .../ChooseWalletModal/index.types.ts | 2 +- .../ConnectModal/index.module.scss | 21 +- .../ConnectButton/ConnectModal/index.tsx | 11 +- .../ConnectButton/index.module.scss | 10 +- .../wallet/components/ConnectButton/index.tsx | 162 +++-------- .../components/ConnectButton/index.type.ts | 2 - .../wallet/components/assets/index.tsx | 5 +- .../wallet/components/assets/useAssets.tsx | 13 +- src/store/contexts/index.ts | 3 - src/store/contexts/wallet.context.tsx | 49 ---- src/store/index.ts | 5 +- src/store/reducers/wallet.reducer.ts | 46 +++ 83 files changed, 718 insertions(+), 1468 deletions(-) create mode 100644 public/icons/crypto/ADA.svg create mode 100644 public/icons/token-symbols/ADA.png create mode 100644 public/icons/token-symbols/AVAX.png create mode 100644 public/icons/token-symbols/BNB.png create mode 100644 public/icons/token-symbols/ETH.png create mode 100644 public/icons/token-symbols/FTM.png create mode 100644 public/icons/token-symbols/MATIC.png create mode 100644 public/icons/token-symbols/xDAI.png create mode 100644 public/images/wallets/brave.svg create mode 100644 public/images/wallets/coinbasewallet.svg create mode 100644 public/images/wallets/metamask.svg create mode 100644 public/images/wallets/rainbow.svg create mode 100644 public/images/wallets/trustwallet.svg create mode 100644 public/images/wallets/walletconnect.svg delete mode 100644 src/core/helpers/convert-md-to-jsx.tsx delete mode 100644 src/core/helpers/create-form-data.ts delete mode 100644 src/core/helpers/deepLinks.tsx delete mode 100644 src/core/helpers/getBadgeLevel.ts delete mode 100644 src/core/helpers/getTierDetails.ts delete mode 100644 src/core/helpers/objects-arrays.ts delete mode 100644 src/core/helpers/pushNotification.ts delete mode 100644 src/core/helpers/regexs.ts delete mode 100644 src/core/helpers/relative-time.ts delete mode 100644 src/core/helpers/texts.ts delete mode 100644 src/core/helpers/utils.ts create mode 100644 src/core/translation/locales/en/wallet.json create mode 100644 src/core/translation/locales/es/wallet.json create mode 100644 src/core/translation/locales/jp/wallet.json create mode 100644 src/core/translation/locales/kr/wallet.json delete mode 100644 src/dapp/wallets/cip-30.ts delete mode 100644 src/dapp/wallets/eternl.ts delete mode 100644 src/dapp/wallets/lace.ts delete mode 100644 src/modules/general/components/Image/index.tsx delete mode 100644 src/modules/general/components/Modal/index.module.scss delete mode 100644 src/modules/general/components/Modal/index.tsx delete mode 100644 src/modules/general/components/Modal/index.types.ts delete mode 100644 src/store/contexts/index.ts delete mode 100644 src/store/contexts/wallet.context.tsx create mode 100644 src/store/reducers/wallet.reducer.ts diff --git a/eslint.config.mjs b/eslint.config.mjs index cdc45decc..572d4b3f8 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -48,6 +48,7 @@ export default defineConfig([ rules: { 'i18next/no-literal-string': 2, '@typescript-eslint/no-explicit-any': 1, + '@typescript-eslint/no-unused-expressions': 0, semi: 'error', 'eol-last': ['error', 'always'], 'react/react-in-jsx-scope': 'off', diff --git a/package-lock.json b/package-lock.json index 38485e3f5..2fb3e4d91 100644 --- a/package-lock.json +++ b/package-lock.json @@ -29,7 +29,6 @@ "@ionic/pwa-elements": "^3.3.0", "@mui/material": "^7.0.2", "@mui/x-date-pickers": "^8.2.0", - "@rainbow-me/rainbowkit": "^2.2.4", "@reduxjs/toolkit": "^2.8.1", "@reown/appkit": "^1.7.19", "@reown/appkit-adapter-wagmi": "^1.7.17", @@ -7456,31 +7455,6 @@ "integrity": "sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw==", "license": "MIT" }, - "node_modules/@rainbow-me/rainbowkit": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/@rainbow-me/rainbowkit/-/rainbowkit-2.2.5.tgz", - "integrity": "sha512-UWEffskEeem1HnHolKvR0FO0haA7CYkm1/M3QlKz/K3gc8N1rjLXit9FG3PJ7l/EKn79VQm25mu8ACkNWBI8sA==", - "license": "MIT", - "dependencies": { - "@vanilla-extract/css": "1.15.5", - "@vanilla-extract/dynamic": "2.1.2", - "@vanilla-extract/sprinkles": "1.6.3", - "clsx": "2.1.1", - "qrcode": "1.5.4", - "react-remove-scroll": "2.6.2", - "ua-parser-js": "^1.0.37" - }, - "engines": { - "node": ">=12.4" - }, - "peerDependencies": { - "@tanstack/react-query": ">=5.0.0", - "react": ">=18", - "react-dom": ">=18", - "viem": "2.x", - "wagmi": "^2.9.0" - } - }, "node_modules/@reduxjs/toolkit": { "version": "2.8.2", "resolved": "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-2.8.2.tgz", @@ -14743,56 +14717,6 @@ "node": ">=20.0.0" } }, - "node_modules/@vanilla-extract/css": { - "version": "1.15.5", - "resolved": "https://registry.npmjs.org/@vanilla-extract/css/-/css-1.15.5.tgz", - "integrity": "sha512-N1nQebRWnXvlcmu9fXKVUs145EVwmWtMD95bpiEKtvehHDpUhmO1l2bauS7FGYKbi3dU1IurJbGpQhBclTr1ng==", - "license": "MIT", - "dependencies": { - "@emotion/hash": "^0.9.0", - "@vanilla-extract/private": "^1.0.6", - "css-what": "^6.1.0", - "cssesc": "^3.0.0", - "csstype": "^3.0.7", - "dedent": "^1.5.3", - "deep-object-diff": "^1.1.9", - "deepmerge": "^4.2.2", - "lru-cache": "^10.4.3", - "media-query-parser": "^2.0.2", - "modern-ahocorasick": "^1.0.0", - "picocolors": "^1.0.0" - } - }, - "node_modules/@vanilla-extract/css/node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "license": "ISC" - }, - "node_modules/@vanilla-extract/dynamic": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@vanilla-extract/dynamic/-/dynamic-2.1.2.tgz", - "integrity": "sha512-9BGMciD8rO1hdSPIAh1ntsG4LPD3IYKhywR7VOmmz9OO4Lx1hlwkSg3E6X07ujFx7YuBfx0GDQnApG9ESHvB2A==", - "license": "MIT", - "dependencies": { - "@vanilla-extract/private": "^1.0.6" - } - }, - "node_modules/@vanilla-extract/private": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/@vanilla-extract/private/-/private-1.0.7.tgz", - "integrity": "sha512-v9Yb0bZ5H5Kr8ciwPXyEToOFD7J/fKKH93BYP7NCSZg02VYsA/pNFrLeVDJM2OO/vsygduPKuiEI6ORGQ4IcBw==", - "license": "MIT" - }, - "node_modules/@vanilla-extract/sprinkles": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/@vanilla-extract/sprinkles/-/sprinkles-1.6.3.tgz", - "integrity": "sha512-oCHlQeYOBIJIA2yWy2GnY5wE2A7hGHDyJplJo4lb+KEIBcJWRnDJDg8ywDwQS5VfWJrBBO3drzYZPFpWQjAMiQ==", - "license": "MIT", - "peerDependencies": { - "@vanilla-extract/css": "^1.0.0" - } - }, "node_modules/@vitejs/plugin-react-swc": { "version": "3.11.0", "resolved": "https://registry.npmjs.org/@vitejs/plugin-react-swc/-/plugin-react-swc-3.11.0.tgz", @@ -22156,6 +22080,7 @@ "version": "6.1.0", "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "dev": true, "license": "BSD-2-Clause", "engines": { "node": ">= 6" @@ -22597,6 +22522,7 @@ "version": "1.6.0", "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.6.0.tgz", "integrity": "sha512-F1Z+5UCFpmQUzJa11agbyPVMbpgT/qA3/SKyJ1jyBgm7dUcUEa8v9JwDkerSQXfakBwFljIxhOJqGkjUwZ9FSA==", + "dev": true, "license": "MIT", "peerDependencies": { "babel-plugin-macros": "^3.1.0" @@ -22633,16 +22559,11 @@ "dev": true, "license": "MIT" }, - "node_modules/deep-object-diff": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/deep-object-diff/-/deep-object-diff-1.1.9.tgz", - "integrity": "sha512-Rn+RuwkmkDwCi2/oXOFS9Gsr5lJZu/yTGpK7wAaAIE75CC+LCGEZHpY6VQJa/RoJcrmaA/docWJZvYohlNkWPA==", - "license": "MIT" - }, "node_modules/deepmerge": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -30168,15 +30089,6 @@ "safe-buffer": "^5.1.2" } }, - "node_modules/media-query-parser": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/media-query-parser/-/media-query-parser-2.0.2.tgz", - "integrity": "sha512-1N4qp+jE0pL5Xv4uEcwVUhIkwdUO3S/9gML90nqKA7v7FcOS5vUtatfzok9S9U1EJU8dHWlcv95WLnKmmxZI9w==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.12.5" - } - }, "node_modules/memoize-one": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-6.0.0.tgz", @@ -30691,12 +30603,6 @@ "integrity": "sha512-yc0LhH6tItlvfLBugVUEtgawwFU2sIe+cSdmRJJCTMZ5GEJyLxNyC/NIOAOGk67Fa8GNpOttO3Xz/1bHpXFD/g==", "license": "MIT" }, - "node_modules/modern-ahocorasick": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/modern-ahocorasick/-/modern-ahocorasick-1.1.0.tgz", - "integrity": "sha512-sEKPVl2rM+MNVkGQt3ChdmD8YsigmXdn5NifZn6jiwn9LRJpWm8F3guhaqrJT/JOat6pwpbXEk6kv+b9DMIjsQ==", - "license": "MIT" - }, "node_modules/modify-values": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz", @@ -35674,23 +35580,6 @@ "integrity": "sha512-c4iYnWb+k2E+vYpRimHqSu575b1/wKl4XFeJGpFmrJQz5I88v9aY2czh7s0w36srfCM1sXgC/xpoJz5dJfq+OQ==", "license": "MIT" }, - "node_modules/qrcode": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.5.4.tgz", - "integrity": "sha512-1ca71Zgiu6ORjHqFBDpnSMTR2ReToX4l1Au1VFLyVeBTFavzQnv5JxMFr3ukHVKpSrSA2MCk0lNJSykjUfz7Zg==", - "license": "MIT", - "dependencies": { - "dijkstrajs": "^1.0.1", - "pngjs": "^5.0.0", - "yargs": "^15.3.1" - }, - "bin": { - "qrcode": "bin/qrcode" - }, - "engines": { - "node": ">=10.13.0" - } - }, "node_modules/qrcode-svg": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/qrcode-svg/-/qrcode-svg-1.1.0.tgz", @@ -35709,136 +35598,6 @@ "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, - "node_modules/qrcode/node_modules/cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", - "license": "ISC", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" - } - }, - "node_modules/qrcode/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "license": "MIT", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/qrcode/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "license": "MIT", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/qrcode/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/qrcode/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "license": "MIT", - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/qrcode/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/qrcode/node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/qrcode/node_modules/y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "license": "ISC" - }, - "node_modules/qrcode/node_modules/yargs": { - "version": "15.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", - "license": "MIT", - "dependencies": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^18.1.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/qrcode/node_modules/yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "license": "ISC", - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/qrious": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/qrious/-/qrious-4.0.2.tgz", @@ -36350,31 +36109,6 @@ } } }, - "node_modules/react-remove-scroll": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.6.2.tgz", - "integrity": "sha512-KmONPx5fnlXYJQqC62Q+lwIeAk64ws/cUw6omIumRzMRPqgnYqhSSti99nbj0Ry13bv7dF+BKn7NB+OqkdZGTw==", - "license": "MIT", - "dependencies": { - "react-remove-scroll-bar": "^2.3.7", - "react-style-singleton": "^2.2.1", - "tslib": "^2.1.0", - "use-callback-ref": "^1.3.3", - "use-sidecar": "^1.1.2" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, "node_modules/react-remove-scroll-bar": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.8.tgz", diff --git a/package.json b/package.json index 7d6e20d09..f2f71237a 100644 --- a/package.json +++ b/package.json @@ -48,7 +48,6 @@ "@ionic/pwa-elements": "^3.3.0", "@mui/material": "^7.0.2", "@mui/x-date-pickers": "^8.2.0", - "@rainbow-me/rainbowkit": "^2.2.4", "@reduxjs/toolkit": "^2.8.1", "@reown/appkit": "^1.7.19", "@reown/appkit-adapter-wagmi": "^1.7.17", diff --git a/public/icons/crypto/ADA.svg b/public/icons/crypto/ADA.svg new file mode 100644 index 000000000..07abcd714 --- /dev/null +++ b/public/icons/crypto/ADA.svg @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/public/icons/token-symbols/ADA.png b/public/icons/token-symbols/ADA.png new file mode 100644 index 0000000000000000000000000000000000000000..98007a29716e06efd5ea34d55641e27cc08d2376 GIT binary patch literal 91295 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 SC;R9J^P2X}tA(0~$NvXiO?B@8 literal 0 HcmV?d00001 diff --git a/public/icons/token-symbols/AVAX.png b/public/icons/token-symbols/AVAX.png new file mode 100644 index 0000000000000000000000000000000000000000..73ff5079148c9ebcf74895381ee49d6cd9138123 GIT binary patch literal 47819 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 literal 0 HcmV?d00001 diff --git a/public/icons/token-symbols/BNB.png b/public/icons/token-symbols/BNB.png new file mode 100644 index 0000000000000000000000000000000000000000..1dc1061f089e9793cf642cad26323010c75b6939 GIT binary patch literal 104712 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 literal 0 HcmV?d00001 diff --git a/public/icons/token-symbols/ETH.png b/public/icons/token-symbols/ETH.png new file mode 100644 index 0000000000000000000000000000000000000000..c8ac5ec428a47db2ce3d4293d07ca321498d4489 GIT binary patch literal 160579 zcmZ^Md0fre|9{5Nm=<%#(w=c6Qo7N;V!D+|D3Ve)B(!VOZXI=LK~jW7T~u^QCGC_# zC~4D5i}uo<3cuHR-+aEk55GUg=kYPGdF|(QUgve5?{iOY-K@v=r|_R#TwHwm8|fxo zT)dg+pFifp-&CZs|AqgVcW9%zI~Nzv0`$);uIQ_RTwMQf>C-oC_pa?}I32az%e;8c zetpShfBiA*sqlK?twnb2qb^&%^$BF8Mrn+3$a+ta#V!^vAyL%bjhqX&R-f*N=WUY}$5JwSTO2 zzqGWp@`YvkCONY~C&}&yX9Id%ZbdkEN5TI+_QFm3AN}x(V^=n=JF!eZ{00yF<$WK@ z`8VqQ*+XN!bz^=<_~5TD$teFGzDz$*7XDc4F$?~~s+U9le#Q%3RLAPwqkzzB8OtNm zdJYm%%y%5I3Wh&;t>7!9j~FVhx)|L`CyMaKHRn%m=nvgIWyJnGlp^iCnK z%N=q4gOCh=?Cbaq{^s5S%KKOe2R^H0u`G=y_V4glE$xBp!Hu;$v^!asOpA$KS_=T2`&`Fz?MfaNvN~ z#By--?$r9fHij<~%7i~&lpzNQJGr_JgfPdSE)J5FmSU}#RQxsBy_ILysa8F=&C!n9 zAmFKXP5p}wBJ}u)pER{^-9ev?+EJC?YS?H6#kJseZ1jog4`F(VyR@b}xl!U~(7E9V z$|ONP+{Lmp)ax3{u$E{BT$vs&9^=IJbMi zE%jcAWuT&mzEr?&dwct+ygv|S3{L5E(blJ$nGye|c9g?+w(OQ6GjQ;+*LZf`xyKw& zx(Dj1dI))Re)~Gv-$z6B>k6JKTMa1#WqUxf2Bb0T8*=b{RoruF7uvs^rVQks;kVi` zsdRKX5Y?#Qj;oa_88i!2bQ5}8)^_sY!-p%r7=mi~MHyICZ{JGC!EQfdAF{&vA`OoW>qO(9hIofy8<=cgg%zprsa*AftANb zesaet7K>#?8Tb|r`MZDre(^q{0CfN44IUli);Ph(A-)}JJG2QSctE@S0X#dmGuYKx z2k4fJcaXxRgG7mF`AKRv)4TGHuB?r4rsdn-!~MOqd0;{DCv3HDwbL>7Z(pg0=EOCBX)>bS2ky!eA_)6VsP8o2B6Mr1y(=qtAv$J#Clr36; zPCqfL=pVaHZ5|8+hos2(rRT|l%)75~=Z2rTIbP=)Vp*gKdDIp=InIL?tI<#H*i6@O zvy_OM$7{92FEnp0@T!l%QLS$DPBtp&%B{FJq-@Q_Mcbd-nm`>~ zawR54>zTDE5GMZ=DB{e)AuVoF7d_$$-^P-=; zv323IF{8b$Yd=Cbzjv_b1C=$tJIJ~E#9SApe6KFQQDR_V_huUqaXC|$qiyX~ud?Rk7 zWs*)bFEe_AOU#=qU#<$VT&3di#lxU;N6cTqs`fdS6uWySzJBXtX1px3?M;#4*@BYV z2@j*(Vah;lVu)p;3M9_Rt5>g5SHNa?EFE9wf=MYdORQMu4RxSG=Ir_G?le@0^q0i- zw|SVF>S0g!FE6tVur(h&xCLd8Q!|!5a!Qm3JJZe^UJQ~wsrAsSzj2ozY6uSU;MM8@ z^cEr#&8xJdLNA(F3=boji*cDPDkkrDEPU3TsN$9|0bPxvd1UX%LRe2_;YYP$>zmP} z?M{7}GW9kw%+ekspky{0&Tv@C7PoVrXc1Tet8wuT}aEgU&TEl0X&x2KRA1 zwfRw!hFd}j>ds30-al+t*s>7u!>fnfTG&^p&BEGIH%4~FtU}CQ;mo!NN!3xC*ClGX zCA=?d+o<%R6N*~wlkYLm5<)llVzipj0rr_jB7ty@B8S=)(-awkocqbAtUcuJ<+r9=}Sw(T8j#fP>&26{< zjo$ig_#VWolh>4IM8E3Nv3B%9NsA_G1r$!<25hAl4s}E5Cn5Chs6o~^j_8i#bde*I zUjrzvg=MyDq2F$of_^b}9=@8>mz56nQU-2ihFL~Kaq!p&+fd$Z3Rs+p?;ADYOz*wd z^kn%^gPe{U9#84YfL01Bg0#l?*F8WRSVv0wSzJd>->`q z@hi^=DB87_S3p-DY+~RwT!^@>z`1oVri?8~b?h*?!e~uEoHpZ}s+N}yU84-VxfNgMKVAWm>8q_BnT37}97Jo<=H(DKgh5PZ|yWtXn(YB97@4~N}`1$`_LU-=ownd2;_P|I4i|8>PH#F3>q;du0^ zQ>U`%g;Bg#7V?L`=xou1Fqq=?;jZQ1quxPO>gDV( zy7eWmOG~c{QKAGhdmQ|>j4Az^NT;x*PQz`D#}|tz&#VSNZwVl~v{wYcdNxJYK&d$-i{RACDGTe zX}%DFC6~VpUjeHX)~!3b-#ju(7%aVO8fjZP9EnVrhug`cQz*@6$!it%*48{S;F>Zl zyJN0+(pubV>c4JN4?@Gfy{SV2Gw@}yx}4~PzdInRm=u{weizgWw6tQqK* zdWob8W;))e_6`Oh!G9^B<7i&jRMmfFj z6*%tZ-^T;U_YQ_JizsG-_d#NcObNeF9nxG0*L)8gKGa(lX-BQ`XoC(?*}DaiN#bN1 zpt>F@KxCs^8qonZ@C8F-X?9we~^VI_uXwdXusz@i7y{6ifhvbGogEenVW7#n0#Cf*|1v>XEm3}tQNitB=?gJ?B9PY z=QOZ#yoj;d>P{KZE?N~RdqK7&<*1lOSY7scM2EK`TWxrFcpil?w+JT*W^TU`Q9j>S z8p2fbC+>?P@CBbX_~Orz&WQ4R*_RQwNL=c+uSbr0(JgK7?CmglFwwXfh?Gh&pWSJH zTb#}u7mz^A4tqYT`zq-o1%y|ol;;x-+x>qwOUm#GWTq!k_&1=Mewm- z#jEo2@&w9&)NEjQW~`ub2a<}nAa^b^cdp&M#v@_F_4ip`{r7Sn0F~o^xB(Jiz!tit z(^W7a2r7V)%W5POuhJFmWj4F$*^P3~%2>Kq@^@N#q2}zK{r%fgQs29k+tysGY9$Z_ zex3X<(C~>5(ss8d9#LTxkB%}s%7A&?LhUHENZa>keS#qfJLls;m`iQ;;x*y5vag@h z;5_Exf{w$*`0;hSCA<2{X{G}r?6NfI^vZq>WTNlW$^sA_`=k{3-TTwRobo!(E%ZKqG= zQqJ5koIUAp(3#$N2#Bii(z$&rJ${2;$W~q};o5$m66A_tJWy*0?Y}FmU*lnSNYBLJ zfKMIJWvsznwiia+MJobjjc6q)kKVj~-TS!+84!RQa7t9e`|~hUrD+`6R6aD_z6VXl zhY37Ze?m^q2?U0#C-O2aYdSrg+g~HXB%JUJlj&GSDOjK#6*=;o3)<_g@yy-6KBm1+ zqWQHhV(0j{u2=js+E#b}w3uhXU_0c==^KW@ev|d}_59YbeR1Ie=SdSo?Hh=$WYW$W z%>0=qn7MAP(i)GqxkRh010)BPF_-N=0bBi7>fZM?g=IREFqA#of$D#mGv>1V|3tO? zz4hqX1!X{J?Eo!1_XMhvsZm(48WPmp z-TU@-+`JNL;+ul51lFtLRek|%ht~x!31)WOv8w3w=xasez%ngdy-PZUU%6L{Ai7Im zAD}CP^^^F{Y7^1^OPz7N>Hq>+du^pDzrxHZ96b~3;SL`LJYOu+|CmC{QPrd`sk;g}68#%}_Z!WGGznb)5cj{tLP`*yKChKRs%)=^n%5AT10Iycvxt7?rZ=%fW$A+_+WK=3%x?0#QE1tUL~r1Xed!`0KV{rFKrH+JQj+d}6+seRwgqULWx zEian?9~8%>K7W~#?LfEOyB<>L{5NZ>m`~^upiBc#j&nMN)`KcuEoVod&PlwlP z`(-T!b#=dR8eE;O55N=SN(HoEaNZC(Bba%|M6;wCj{32=_%b&-!!#2*4HRxx#O#^} zR_4|%cz`5fGr2Yw^h$&iz}Fl$^r`DLae*Q*Yes`>rN7pA7_lT6XL7>_M3<4dkVe3EUi=SPTAQ$r#c|o94rdwHn z|6{}qU*bD&Gri-D!T0vn4*og6qzHo44`ZGcJO$#8fVhp;YmhiRb*gU2l$@Nq6#U@C znOR3cgB<(Qw$#!w;yZSRDb4#Y1gSfw#Q_?Pt@tLF?@BLB3f%w{lgXQ;0&-|j>(-~? zPAx_wYoQaM)|#(z>|c`Top1m0f--P4@Si|g`^{1;RcqMnk9Fb8HjGO3)kP$hOPX^0 z##Z}(1WzR5J@ig(Vqi@W?&HZtrM0pZTN!tkQop_Dg8CKO+Z9nRZVlVau`WC^&daDr z^2ZB+sDI>Sb-)!G9O>7m;n`6AaC%%l5OgEh;%%J&2vTY~8#Z@K9{hm?_}?{oM$FBX z1_krA1=4P9xgFu$Rs#F|Rxvzb)23(FpFx3Msgjh>BT#tm;J1Jur1ciU#57HJ3An|| z%qy$GWpEMfa(7b} z)WxUj88195-vdNd@2_xQ5ADsp3Mtcqx3>3OJIZdngOlaeJwd!ysmI0JyP^Kc;eAP& zFlE3pj$bJA;7O}fDyI2Z zxON}vg1t2dILn;{$=f?&Xj9b#4YISb#U`p(c@S%6f$<1Z^OrBZ&vB zwZyFzf(a7P}m0u+fq&svGMIv{qgxHHt@U|y*LE=wFQYtuZr`SUZ_ zFlz*{G{19^!S)JbW;`b-ea#~^E6revz1s#iVh6RE#w!mZqdf+W&*tvyDM3PBtNZma8#c}S2|NU=;WB%#@xp$^myjP_J0fk{$IpPJckv{u_?JEvz5%(m z*u-GTrReC|HbWRh9`eUc_4(1%?}LCTif2vTWUGQ;9C@(54Jx{c4btt?bWeN}38e^ZqN_@VohXbFZ4qOUB+?=?JPYA4scF7t8F-5BziS_Ew9U z2A?BMe&)J=@f_B%dX`M#5q|Iwm8xTR;(R#Q(!Vx7-(MoSL_5Sh#rEYkXP=x>pRYXb zM-P0ORF%*#FLu+0v<6V#F#;X9Oz~!BGEF%nzwA^@=2J63Qy)S#TFX`7LJIo^m zbPLsarR6-1drq2Iqp_)ez)Q@fX^DwyySIbm9iOXv_0+hou>Omndx6niM6Q=;zHf|# zuF)~>8C!&KcNI~%ky7pcr#2uWDP@|h?2$y;X%r-_RxC)~rly*2FM*jg;d#S~1gjv7 z)dDA5+qPz=chnlhPEp5LX=%yTUo^h?3aJf*9^?N)QgZaMD^_F3eUu&+m;+nljH zHB3!M_Qe5iYIh=I&BTCuI}ehYAdOp5-qqE$oH8IzkaorNNdKD5gnn0e6I2L!*VoBb zS$)lh1Q`#;E#1tn!eGWeC$o7m0otAHnF5{xzMYc_bX? zmhcfA)wI@rPD6%N6k%Z#k!_zcDxv_hxUWMU#Uo1AG9Xspsf4^1Q*U%-<~qFj5>@2VL|mao5pHQCFGUM4%6Z)|5nTw|y@7YR45V5u zpyx<=Vs+8>@oFl=ZXtLs_2ocBxwG{eLN}~Vq$X3F6XqflCSf$w)z;Sb(EkPUaoSQW zk%j6Wxir~Q29BIW3SI+L?}#D_TSXw|l>>JZ69q)Hk$T_Qvem0)Wa=9PjF7$WusU!p zow*V$AxOveS}P(2jj%n$Z3HFS55^`HHxwmE7r+Rh&0#j~h z@AvWfB4e#WFnmpphDW*En=vM{JLDfomp5OOtW|$aMQx7aMI@UuwOAf5)@lURD~wkV zRM`Xc!suDBGRlmkSk}X7gl>hHZY$s_=*B~8vvuea#Bvu5_21_DqR2&K8*t};)aK5> z`CtVt8w7{Zt^-lLB$fl2_fB%pZ9qXko|hZ4v$AVJ~qC} z0Q?dS2c4PQf5i~Bd3hkeU?yw^&x6ML8vLxSbx}wjVj=Ohq-)skdtC;ywFNRN4gJLk z!D}(WcDCj*VidN#8x+@!oM+FT6;Buta!oP0@2Jg_yrPhMS`35EP>J?&6M_tYEF|>` zcI?;z9}Fy6a|jr!oa!G*ivTw(1e2qY5TsMMv}G=&z`G3BJ$pW0@Lz+pGg8O2Ggoad z7E*%9Ue!0~eB`hAOCn=1L4@*sPYrB0_r-OLE&IBqfSFx1IT$8qU#hMvxibs4jM?8S z+g8IeURNrx9b8wQO0GZgG22ZmSLhb<>GHwi6`5komJTkuh|IW$nXy8r(2!3UoTBux zNYigrBR`7Zr-1PjR}kf2;_?dVH-|Q&NU#dUShWB^-I<>K;u2CYSgYF16loSut`zZM zW~P-7`Gi1X(T9659c!OVA;Pc^3&Tf#QI$jAnHf*cA$Fnwa_i|{g`5(OIVA|L%;fe$ ztOVoE^3OfVJ@J&_w;kj6mfHM~PY}dPei#d|CBm=@i`DL=q@;G8!YdrIJ#ac63UDGQ zsW_!-d$~8#>qKKZfKzj6$!I0IV!NK0gNmruN~-f(255Kbe*1VA(oEP3)9e9!$HFTB zn%(;F8Tth#jZHB7MBXdJR<%#*=<+}~-ZKo&${Mv|>B*1j% z<-Q?U0gP$pmY9~2m^dmV1&d1I`O(tSQtMWp)yPb^2%C90FfkP251JpwEYSTEyk-<` zQrj;5Yq}Cu>pijHv9k5bwIE(b^^@86JO79B6&9&mgUWr@`C#Vt%t zNpW+fXP5i~sU6G8eOmo%vIzI&5DH?}Lv+h;(Gs~PMP4HI-kw(dOr}K9AK-hZ9Se2F z6H%k2whc?zo^?H?0C3|&{M0^h`sFN?|MF8>FeUrHepxY%IW8=LoW}3-tYb*2oreZu zJGWy#)81uem9vc6==2|o=W-aAr?ImUzirsQ%eR`!FZ>V0$)ij$>u_&oFf9j>UBJnp z6|n<^FBftN+{tqX^b+REVCFV18ESWXbJWHkiQQ9t=4MS>5~1L-JdxQm&&WoJiHU4^ z4X~`^c%DeW=qLX#h+%^k#&9bXqbPczAMbqd%)~#e;k4Xu;J|Qa7?P6wa);@C{Ov4A z0BdOb8n3B)F}miUbAIP{EWClRC;Uqnl~+TuFJB-26CHwwk75p#|8{Jh0OkAcL&y;A z;$UOOY(nf;O_&b;-)Sh?Q?>oJpa}SHxF$*WdVv!IedZWW&O5uJ-ln|o+eN!=3^iferaj6;rX zGnD#z*X$&Cts)Qe+Zm$g|MucOqLWw4&B(|o?%n_hzz3oV&!!M~m@{6f??4V~CT|$-^p>Elju?WR(42#{o zDEDuhwSNOQr}ub5UvR+B9Hl`6mIjhFPfl|83sIIREJK33O$?eodLm0avCb=cw`#k! z5)~0SCU22ysN>N_jscJi$uT#m&F3W?bbkknLn>*0wuDUVoFTc@Jo12Ep#$F^;Ag?C zwDZf^d?>nCuw?oD46|QJ97){Uc+NzvIGB*gz$AWxgGLUuS-WU9$lO%n<>N`n#7>$; zmZqk8&MGKcg#q5sU}`bMk=q_&i+YWcDE~TnY85Xx=yoYPqMYp$K=8w+O-0)Y8}fws zV9Cl=J}9xt{ueSYz7IP+*g$zYAk2%1MsAdd=)D>E8_hW~0p&ll>V)3-c*vX0%xK(= z;@Syez08n6`YGf3!QH-{3^L=DzjuFQ&e#YQ@vFtEn9~EMcg6GQ2WSQ;KO(|dj(AOC zDYANdWZPra_M^%Rk&j2u+{~!&rURip)={ONqBe7f{0%yLanpRIRMwa<~F_^rj_%B=0X_Cyj>b{ z115bK=nHa_ES$~*zO|jyE948D1=*DPbiQv6iheH^eWk7RsTgA<@!r7OC%ZqdrwJn6 z0IxB#VJcUHhUu*GAIMBA6N9|&MQB`>hLs2ly&rAzZ^*-KHEl!L`w3@YsnmTZF|l26 zHnPFOWtWA8T2nB(e71*Mmzhh@BarCy6BC^k<|4^Ca6?OB3nTr$VEPH2VXjm79TAOa zSuE7sX9mM4&bt85R`|U~hQG$j#pZ2R)lnj|kPbp--VMJbF}A7}pcft$CaA=qV>oUW zhLWY8T$DQ(>J*+8Mnmy3RWnwE>~J|sfzZW{$2CuHIYEuWU_Im+tW*rUwq4CD{78_Et!0ZNm-t{V>4gmn&_-DWN1<|N z(pbaK80&zQ$wMqr>K0K-J%{H*mb+Lg0&M@h05Jl;irHAzmDwmx2@?By63mod_i+(u zzf2L!fJ|t`wsC)lgd2YIT4Mgl-ykqN8mkZiPghGs(cF6okzXHI6XHV1;zn{)WN7fU zy2>aw#I!oMA_)a38elOq6U5ir)RbFv;^d8BiK87kUVSwWS~fFKCY3vq3q(ct^rT!H zoZ;F!f1%EUrfz~Gd<0A42t&p{^}azU4<%g@5D-{b$pdEUM_XZJyWV_}79EE{N`CQU zx8Y5fhD?y9`!A3}9?wXhZkvy<1DE(`-&`5fk%s*C8UX7v+m0NWvu^b;aN)XrXr!+p zi#D(qvAabsh4GDxDDy>Bn=@d%G;8y6RzyxT5XEZ&@_vUBGrUMtt>6Cj=2%M z;4*MVnT}^HqFA@xL7b}M02L*sx#UweF*NEVx48+*PzWtWDgB2lkbd2O4>n+(y@`pwDcVP%+|=AO3yE3e&e#D$%lBd7@7!T#Mmx9l+x1PISynZ#IWC;^xZS#w5g0_$WC!)y!Z}F4~7O;6E#ML0;LRL8M+0mI0d; zMfn9JnlBX)l2aqfd2(_Ix#WtJAkXPI-@erXb2q&hIDg#i63{6CI&kL2oae2pL&~Z( z$iGsP?QiAxU5O&dVlXnep6riyKXUyfAvQgtT-i4iKHT12jXNEe|s79LOnb?+GdV`aH5z zVT18PHiPJz(Nwz@uI6W!35z<|cx8i`W9sF|;9DD|G%KZlNw~|@ly*24nZY;tV^D5L zPyz^r#L}F;P@-6@1H!g`c214MFKNt(I}6jWA((u|-l&>;@(F{jge+;nEU{8;ck#MJ zh#iYY1OM!LI>MLZ$;&COmGGbVH1%8M2IT0}R~7)#8jVJC?J8^m?N~_J z;uV6}tsa?(C|6~8fZX!S*xDXPkfBoMc&v>->N=93$o8480Lj->$?Gxw6lmQDpG@37?I7qRIz1u*h z{%vxbVPX@^JfM<~+#BYjZO|!7(*&wcK>5uq0rvZ*N95cDJE)%h1GR)$fP>8}DY}a( zc^}8cA=}lu3jD_Ua@Yds>c9iL)m8)$1oX@;e#nITQQjj+GcWQG-6U>R$zTuD`&t1( zm5IjVzF!gH3akJa>lBWuW+D@`HcI8Vwu;i$BOAVBakw-+9e4FW5z`#ZVH`){`i`yG zH836L9z$M}SC*BL@ehwe+s^O+4*VJq;O*hyY8`vDu*u3LCi zB^@c33+Ht=_P?Oo3!`N-5DF%<(QN#NCM4VNR9^xe|;_T&#$G*%yj#djBH0p@`QaR~kF}wyTER1h2qsCp)`Ne;R5JM&QfDnOo~N zJI-9(Z7WjFac8F@;+0E2KG?0&DO{p@3u4Zt)JDw31z1QofceZ^E2m*>Kn)s3p7;d# zr~{0PD3sddP)b@5EqPsRllE}O|ZM`EbenB>K3S>+%#;x%7MCpUU9fbW%O?%x{2v!xGsdyW5Ycdw1yL>?f+bA@U+(p>oC%eO<0Z+Osk zl@k{1Tf5B7AFEIs+cu(T9}HRH!$MkNsD)Y&)%KUiHDGa+tu(tG(bvO*o2vM9a)q_q z2G=PP)G(EENN6-`<(bbGNc&yn3Y&U)of4XeixndSLOnd-cvzo=bX)zkL1N}I5|O6n z7VROV9%Kt@)_uyhME*}FhsfzpWo4xywYh=61^H}0jB1i{7{4S;OpNJYN!WSH;c#!Q zrvPmytll(ivfm9*37Cji7!#8DrC28!4?sJ6Y_eZ9$^Gf^)uAR8CNkHeZKv_VtnB?r z?#(9c-)4089-m;6s8;+L(s8}?*M<&N<#ruuaGw&n9(0D>OHO9|P3d>#MTwNU&7jjE z#~$&+Pz%>!lyqF%8!`!v61@B0TvMlwq##dYpaqZG#6$}w(}w>ea!l2vK6@9KtEfpX zR<|eP1}*7RCnX4u3&I5AvfYr>&rSLyD+b-(Y;om6s(HLj(k;z)Vq_w(VCbdIweTVr z?X_xN=`6y1s#^wXk!st>N#IdVZPp2ELV9h^RAPB3(-=rK_;_+=0(h;YmOo!p+>bnW zAm@3K83;7Oc8ht_ZSiL@$ls3C7AaN(BM&KNK`wrqVOZnhItE9(C6x}Juh zE4E%%#jfeL7uNqfZ}~!rgm=H#Af1TIJ)NFbJFbN(qwk#28q@9*P57o`|5qRSN;n8WnDs%~Hmn4|SEDquN8 z$}W-|Db3!Fw{h^;!w7#pTwZZG?^#`vqBmgy)|B5RTjOhC9@*5LA%?22n2Uv_Wqofj zA^17z4yJ35UYO`(J-UC5t2){|d|~+BlJrYLTl3tCJp_@I~&;n4pO?o}Z zOdCOHVE3J+IU+JL-X)=6k&f#Tx@8-ah?XdUSNx(-|$O@>aGaF+~C!D9{IUk|9Es4s(u>b$KR5Fwqk5+NNyurh^3^{f{i$%DjsqUl$_57q=TKZjZ9HKXeN4zFneB$OmmrnrgxNZU z{i@pucicde$y2$nKxS$KS!Sf!!e`IIDv*u)SF?t*a^L)dXz`=W%uHo!ak00 zqG+El%0dn4C2x`l84=UJo*>%L_!!<-x<&H@)tnT`s_FwONbY7Pm!4sMKXi#7 zZ3+9}9hmcMFQgiLoiJllOR&``%&;>t5{>oF2mj{H^& zx8uKA4?srNZX#zSASl)yK1WET7DEVT2fRSs;xKLrG9@(65Q6OAqkRqthbcn71GL}Z zX?1-OrQeN1r7OjPZ!6$_KRy)mL@aZBUQh?}*XqOX;cMaEfcGG=(}OIL5Af)ZnJSpr0BNd;i&0EB7AXj+g^GVDfJcR^eI0nTGrg!*k50r=eJ}kCBc=Q^! z#Baa@E{EYe01j2y7dPukFi;J?Eu1l#GSN;-w0}RKih2p|9KWXA0I$!_kh~G{Rv`?1 z+I!OOO9#U5#m?hM#mU~2)!$6-;Sa+8ZYOz7BD{l`B@Y804YUGH^I|HKrD$I4Y35HsRQURgW=(T5ZH4p-H z9FN##WWndMl5OzX*}tG!7x{v-oEMPj*7W+0=Sb|aE0v6S;4=&`5#6xF5#DRFR+U2) z=);Au`9TFi-mBp{WMsk%9iT-I=X_!4FUK@cCFE4_OM zKl#?m&Ol7dfBX$)VAeFLB|HYystC}5itA((qyR-yswRotw)G^X{8O>RW_BVPnsz~B#dCv*yF zD*q7d9JL}$GLxbLp^Nn*Z^V+@0aLSppI{}JbbYKA=}$&Tl>bgVI+tBEpaP|V%f@T3 zoS^9EE<^|qlFm${-yx0E#lny`<&fZg-i!%S zF{DJ%cH+asH2xywxJ%J#0AMI{0Qf)xyk9cY#WsmDCH;qGh$OGbIfASZfDdVKWJ3{v zLcGp0rNx2?{T4K}nF4a4f((j{Ujy)m=BgZIh9n93@=1h)rOCI)8*eW423Ta&X% z5>3?qB!~tYuYv`00ETo0T?7;qR~C=&>WTJptj>hVF1CNYYO8!yV0^^?4F zPwM$qqG({10vf^jYQGbd7U|aN1G$Gmpj`Tk|3IV zC*cuIZN4MHq3ExL$IZ5kJw@(2Om?3X?5hv>^O2byfPr!GX#>3!$yw653>pJn`c&3z zf}L91Jcc?r>@~UbQPYRd;ftG)Q$6}%upZ#-?93K`Pnt~R$>Fa`NKD)k%ybYvO5~j; zWK(exz#0-Rle4LNA%%Tt9O2T}AF%R6@D<-LNI4p5yXo8k=bQ&|F3A6C{fh`t!)x*` zo~Z**yHF@Dp2Gw)nt!etlqDSb;0##5bv++M&`#OtT@2TPml+7E_L@9@oS>JKlmHAw zkw2Gk+F5vM%?F{pFz`d?0vJoHi~{g~R;*Vt;AI4SDTs<3^3KD`XDzi#Zz!XhnKLrU zKp)S&CZ8X3Ts%EJUFg}bIaFU21$lGJ5M04-l;p64v5U5s)dxYMYb#%wU%w?h!t@T| z73|WN14^$>WpGsK=>^HS^U$e8`Bdky{$2rD4qP9%Y0)k&CwPqkIrb!HArO zBexP0`Bgv7McHFC(f{SkmpVUVL`H5dM&JiW#Q&lci@GCFU;chp1iz2zugG8)?)sb% zxyu7C3gxr!!V;GxFL5<%^GNHDOd>?-owRK9Z2?YV71Iug#G|Usgl4@4QmcJzkv#HY z3ZM=vMGp}wUCQS4^ySE1HJtuc;e*C$$_>`NBamDQ-$>=K;_=IryP{5n z?*HYiV|nP&)D?D!|CLSrjLFo4Cc^mo!@4TX#M4$fLa*iPYHNb4#XV)Q<&nohFsxYjpT;IUT*d3*>*?Y=YZCCZK+{9rjK@ zWaQCyS~}bexJxt#@Ta169xDZX*oQRmO6mwX6t&dm+hPY$DAr$q;m`44+02eN3`fYM zUF3><555;X1=u%N!eoWAEk0>TEcrv)v}BD^FWtf>^;d+S1J%~79rlHafT1t!;YS

yKL2IFG?Ftiv`9q0_ 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

G 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 literal 0 HcmV?d00001 diff --git a/public/icons/token-symbols/FTM.png b/public/icons/token-symbols/FTM.png new file mode 100644 index 0000000000000000000000000000000000000000..a1d97baa7b8a2b08e3ec9e81f0057ca402a63ac1 GIT binary patch literal 100671 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 literal 0 HcmV?d00001 diff --git a/public/icons/token-symbols/MATIC.png b/public/icons/token-symbols/MATIC.png new file mode 100644 index 0000000000000000000000000000000000000000..d719c065a47a6a58732a5beaa6c17191c22a0eeb GIT binary patch literal 64571 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

diff --git a/src/modules/Services/containers/ServicePaymentFlow/useServicePaymentFlow.tsx b/src/modules/Services/containers/ServicePaymentFlow/useServicePaymentFlow.tsx index c6ae97b15..a4b377b40 100644 --- a/src/modules/Services/containers/ServicePaymentFlow/useServicePaymentFlow.tsx +++ b/src/modules/Services/containers/ServicePaymentFlow/useServicePaymentFlow.tsx @@ -9,18 +9,11 @@ import { depositContractAdaptor, Service, submitRequirementsAdaptor, + updateWalletAdaptor, } from 'src/core/adaptors'; -import { - Card, - CurrentIdentity, - OrgMeta, - ProjectPaymentType, - removeCard, - updateWallet, - uploadMedia, -} from 'src/core/api'; +import { Card, CurrentIdentity, OrgMeta, ProjectPaymentType, removeCard, uploadMedia } from 'src/core/api'; import { translate } from 'src/core/utils'; -import Dapp from 'src/dapp'; +import dapp from 'src/dapp'; import { Files } from 'src/modules/general/components/FileUploader/index.types'; import { OrderStatus } from 'src/modules/Services/components/ServiceOrderDetail/index.types'; import { RootState } from 'src/store'; @@ -32,7 +25,7 @@ const schema = yup.object().shape({ export const useServicePaymentFlow = () => { const navigate = useNavigate(); - const { isConnected, account, signer, chainId, Web3Connect, walletProvider } = Dapp.useWeb3(); + const { connected, account, network, networkName, testnet, signer } = dapp.useWeb3(); const { serviceDetail: service, cards } = useLoaderData() as { serviceDetail: Service; cards: Card[] }; const currentIdentity = useSelector(state => { return state.identity.entities.find(identity => identity.current); @@ -59,13 +52,13 @@ export const useServicePaymentFlow = () => { mode: 'all', resolver: yupResolver(schema), }); - const isValidPayStep = paymentIsFiat ? !selectedCardId : !isConnected; + const isValidPayStep = paymentIsFiat ? !selectedCardId : !connected; useEffect(() => { - if (!paymentIsFiat && isConnected && account && (!walletAddress || String(walletAddress) !== account)) { - updateWallet({ wallet_address: account }); + if (!paymentIsFiat && connected && account && (!walletAddress || String(walletAddress) !== account)) { + updateWalletAdaptor({ account, networkName, testnet }); } - }, [paymentIsFiat, isConnected, account]); + }, [paymentIsFiat, connected, account]); const onRemoveCard = async (cardId: string) => { const filteredCard = cardsList.filter(card => card.id !== cardId); @@ -103,7 +96,7 @@ export const useServicePaymentFlow = () => { const handleCryptoPayment = async (contract: Contract) => { try { const contributor = contract.client?.meta.wallet_address; - if (!signer || !chainId) { + if (!connected) { setErrorMessage(translate('cont-wallet-not-connected')); return; } @@ -113,10 +106,9 @@ export const useServicePaymentFlow = () => { return; } - const result = await Dapp.escrow({ - walletProvider, + const result = await dapp.escrow({ signer, - chainId, + network, totalAmount: contract.amounts?.total || 0, escrowAmount: contract.amounts?.amount || 0, contributor, @@ -143,7 +135,9 @@ export const useServicePaymentFlow = () => { if (!contract) return; let identifier = ''; - let result: { txHash: any; token: string | undefined; id: string } | undefined = undefined; + let result: + | { id: string; txHash: string; token?: string; amount?: number; fee?: number; contributor?: string } + | undefined = undefined; if (paymentIsFiat) { identifier = selectedCardId; @@ -153,11 +147,15 @@ export const useServicePaymentFlow = () => { identifier = result?.txHash || ''; } + if (!result) return; const { error: depositError, data: depositData } = await depositContractAdaptor( contract.id, identifier, service.payment, - result && { + { + amount: result.amount, + contributor: result.contributor, + fee: result.fee, escrowId: result.id, token: result?.token || '', txHash: result.txHash, @@ -211,7 +209,6 @@ export const useServicePaymentFlow = () => { cardsList, selectedCardId, openAddCardModal, - Web3Connect, errorMessage, orderStatus, register, diff --git a/src/modules/general/components/Image/index.tsx b/src/modules/general/components/Image/index.tsx deleted file mode 100644 index 23ef910ec..000000000 --- a/src/modules/general/components/Image/index.tsx +++ /dev/null @@ -1,11 +0,0 @@ -import { config } from 'src/config'; - -const Image: React.FC> = ({ src = '', ...props }) => { - const isExternalUrl = /^https?:\/\//.test(src) || src.startsWith('//'); - const isBundledAsset = src.startsWith('data:'); - const finalSrc = isExternalUrl || isBundledAsset ? src : config.basePath + src; - - return ; -}; - -export default Image; diff --git a/src/modules/general/components/Modal/index.module.scss b/src/modules/general/components/Modal/index.module.scss deleted file mode 100644 index bd1544f61..000000000 --- a/src/modules/general/components/Modal/index.module.scss +++ /dev/null @@ -1,90 +0,0 @@ -@import 'src/styles/constants/_primitives.scss'; - -.container { - display: flex; - flex-direction: column; - margin: auto; - background-color: $color-white; - z-index: 30; - - @media (min-width: 640px) { - width: 640px; - margin: auto; - max-height: 90%; - height: fit-content; - display: flex; - align-items: center; - border-radius: 12px; - } - - @media (max-width: 640px) { - width: 100%; - } -} - -.mobileCentered { - @media (max-width: 640px) { - max-width: calc(100% - 32px); - width: calc(100% - 32px); - margin: auto; - height: fit-content; - max-height: calc(100% - 32px); - overflow-y: auto; - border-radius: 12px; - } -} - -.mobileFullHeight { - @media (max-width: 640px) { - width: 100%; - height: 100%; - max-height: 100%; - } -} - -.mobileDefault { - @media (max-width: 640px) { - width: 100%; - margin-top: 80px; - border-radius: 12px 12px 0 0; - height: calc(100% - 80px); - max-height: calc(100% - 80px); - } -} - -.header { - position: absolute; - width: 100%; - top: 0; -} - -.title { - width: 100%; - font-size: 18px; - font-weight: 600; - line-height: 28px; - letter-spacing: 0em; - color: $color-grey-900; -} - -.subtitle { - width: 100%; - font-size: 14px; - font-weight: 400; - line-height: 20px; - letter-spacing: 0em; - color: $color-grey-600; -} - -.closeBtn { - border: none; - border-radius: 8px; - padding: 10px; - width: 44px; - height: 44px; -} - -.closeBtn:focus-visible { - outline: 5px auto Highlight; - outline: 5px auto -webkit-focus-ring-color; -} diff --git a/src/modules/general/components/Modal/index.tsx b/src/modules/general/components/Modal/index.tsx deleted file mode 100644 index 0eaca4226..000000000 --- a/src/modules/general/components/Modal/index.tsx +++ /dev/null @@ -1,81 +0,0 @@ -import { Backdrop, Divider, IconButton } from '@mui/material'; -import { Icon } from 'src/modules/general/components/Icon'; -import variables from 'src/styles/constants/_exports.module.scss'; - -import styles from './index.module.scss'; -import { ModalProps } from './index.types'; - -const Modal: React.FC = props => { - const { - open, - handleClose, - icon, - title, - subTitle, - content, - footer, - mobileFullHeight = true, - mobileCentered = false, - children, - headerDivider = true, - footerDivider = true, - customStyle, - id = '', - inlineTitle = true, - centerHeader = false, - contentClassName = '', - closeButtonClassName = '', - } = props; - - return ( - <> - {open && ( - theme.zIndex.drawer + 1, width: '100vw' }} open={open} id={id}> -
-
- {icon} - {inlineTitle && ( -
- {title &&

{title}

} - {subTitle &&

{subTitle}

} -
- )} - - - -
- {!inlineTitle && ( -
- {title &&

{title}

} - {subTitle &&

{subTitle}

} -
- )} - {headerDivider && } -
{content || children}
- {footerDivider && } - {footer} -
-
- )} - - ); -}; - -export default Modal; diff --git a/src/modules/general/components/Modal/index.types.ts b/src/modules/general/components/Modal/index.types.ts deleted file mode 100644 index 7f341753a..000000000 --- a/src/modules/general/components/Modal/index.types.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { ReactNode } from 'react'; - -export interface ModalProps { - children?: ReactNode; - open: boolean; - handleClose: (a?: any) => void; - icon?: ReactNode; - title?: string | ReactNode; - subTitle?: string | ReactNode; - content?: ReactNode; - footer?: ReactNode; - mobileFullHeight?: boolean; - mobileCentered?: boolean; - headerDivider?: boolean; - footerDivider?: boolean; - customStyle?: string; - id?: string; - inlineTitle?: boolean; - centerHeader?: boolean; - contentClassName?: string; - closeButtonClassName?: string; -} diff --git a/src/modules/general/components/modal/index.tsx b/src/modules/general/components/modal/index.tsx index 9ee456a0c..e731413f3 100644 --- a/src/modules/general/components/modal/index.tsx +++ b/src/modules/general/components/modal/index.tsx @@ -20,9 +20,9 @@ export const Modal: React.FC = props => { children, headerDivider = true, footerDivider = true, - customStyle, id = '', inlineTitle = true, + customStyle = '', contentClassName = '', closeButtonClassName = '', className = '', diff --git a/src/modules/general/components/modal/modal.module.scss b/src/modules/general/components/modal/modal.module.scss index 6ef9f3a42..bd1544f61 100644 --- a/src/modules/general/components/modal/modal.module.scss +++ b/src/modules/general/components/modal/modal.module.scss @@ -1,4 +1,5 @@ @import 'src/styles/constants/_primitives.scss'; + .container { display: flex; flex-direction: column; @@ -15,6 +16,7 @@ align-items: center; border-radius: 12px; } + @media (max-width: 640px) { width: 100%; } @@ -31,6 +33,7 @@ border-radius: 12px; } } + .mobileFullHeight { @media (max-width: 640px) { width: 100%; @@ -56,6 +59,7 @@ } .title { + width: 100%; font-size: 18px; font-weight: 600; line-height: 28px; @@ -64,6 +68,7 @@ } .subtitle { + width: 100%; font-size: 14px; font-weight: 400; line-height: 20px; diff --git a/src/modules/general/components/modal/modal.types.ts b/src/modules/general/components/modal/modal.types.ts index 94016c250..94c96fd10 100644 --- a/src/modules/general/components/modal/modal.types.ts +++ b/src/modules/general/components/modal/modal.types.ts @@ -13,9 +13,9 @@ export interface ModalProps { mobileCentered?: boolean; headerDivider?: boolean; footerDivider?: boolean; - customStyle?: string; id?: string; inlineTitle?: boolean; + customStyle?: string; contentClassName?: string; closeButtonClassName?: string; className?: string; diff --git a/src/modules/layout/containers/notifications/useNotifications.tsx b/src/modules/layout/containers/notifications/useNotifications.tsx index 977811bac..19117816e 100644 --- a/src/modules/layout/containers/notifications/useNotifications.tsx +++ b/src/modules/layout/containers/notifications/useNotifications.tsx @@ -143,7 +143,6 @@ export const useNotifications = (handleClose: () => void) => { path = ''; break; } - console.log(path, 'fdsfsdf'); handleClose(); navigate(path); }; diff --git a/src/modules/wallet/components/ChooseWalletModal/index.module.scss b/src/modules/wallet/components/ChooseWalletModal/index.module.scss index dfdaf7279..d97c6a7f8 100644 --- a/src/modules/wallet/components/ChooseWalletModal/index.module.scss +++ b/src/modules/wallet/components/ChooseWalletModal/index.module.scss @@ -1,18 +1,22 @@ @import 'src/styles/constants/_primitives.scss'; .wallets { - // @include flex(flex-start, center); + display: flex; + justify-content: flex-start; + align-items: center; flex-wrap: wrap; gap: 1rem; padding: 0 1.5rem; - /* @media (max-width: $md) { + @media (max-width: $width-xl) { padding: 0 1rem; - } */ + } .wallet { width: calc(50% - 0.5rem); - // @include flex(flex-start, center); + display: flex; + justify-content: flex-start; + align-items: center; gap: 0.5rem; padding: 0.25rem 0.5rem; border-radius: 8px; @@ -25,8 +29,8 @@ background-color: $color-grey-100; } - /* @media (max-width: $md) { + @media (max-width: $width-xl) { width: 100%; - } */ + } } } diff --git a/src/modules/wallet/components/ChooseWalletModal/index.tsx b/src/modules/wallet/components/ChooseWalletModal/index.tsx index fc33e668f..48630a3ef 100644 --- a/src/modules/wallet/components/ChooseWalletModal/index.tsx +++ b/src/modules/wallet/components/ChooseWalletModal/index.tsx @@ -1,6 +1,5 @@ -import { translate } from 'src/core/helpers/utils'; -import Image from 'src/modules/general/components/Image'; -import Modal from 'src/modules/general/components/Modal'; +import { translate } from 'src/core/utils'; +import { Modal } from 'src/modules/general/components/modal'; import styles from './index.module.scss'; import { ChooseWalletModalProps } from './index.types'; @@ -8,7 +7,7 @@ import { ChooseWalletModalProps } from './index.types'; const ChooseWalletModal: React.FC = ({ open, handleClose, - title = translate('payments-method-crypto-wallet.connect'), + title = translate('wallet-connect'), headerDivider = false, footerDivider = false, mobileCentered = false, @@ -26,6 +25,7 @@ const ChooseWalletModal: React.FC = ({ footerDivider={footerDivider} mobileCentered={mobileCentered} mobileFullHeight={mobileFullHeight} + customTitleStyle="text-center" customStyle="md:max-w-[480px] md:!max-h-[504px]" contentClassName="py-4 md:py-6" {...props} @@ -33,7 +33,7 @@ const ChooseWalletModal: React.FC = ({
{wallets.map(wallet => (
onWalletSelect(wallet)}> - {wallet.name} = ({ contentClassName={styles['modal__content']} > <> - {symbol} + {symbol}
{address} @@ -39,11 +38,11 @@ const ConnectModal: React.FC = ({
diff --git a/src/modules/wallet/components/ConnectButton/index.module.scss b/src/modules/wallet/components/ConnectButton/index.module.scss index c2811e024..144520209 100644 --- a/src/modules/wallet/components/ConnectButton/index.module.scss +++ b/src/modules/wallet/components/ConnectButton/index.module.scss @@ -1,17 +1,21 @@ @import 'src/styles/constants/_primitives.scss'; .button { - // @include flex(normal, center); + display: flex; + align-items: center; gap: 1rem; .symbol { - // @include flex(normal, center); + display: flex; + align-items: center; gap: 0.5rem; } .address { flex: 1; - // @include flex(center, center); + display: flex; + justify-content: center; + align-items: center; gap: 0.5rem; font-size: 16px; font-weight: 600; diff --git a/src/modules/wallet/components/ConnectButton/index.tsx b/src/modules/wallet/components/ConnectButton/index.tsx index c056e2a4a..0a62e56b8 100644 --- a/src/modules/wallet/components/ConnectButton/index.tsx +++ b/src/modules/wallet/components/ConnectButton/index.tsx @@ -1,135 +1,37 @@ import { BrowserWallet, Wallet } from '@meshsdk/core'; -import { useEffect, useState } from 'react'; -import { CustomError } from 'src/core/adaptors'; -import { truncateFromMiddle } from 'src/core/helpers/texts'; -import { translate } from 'src/core/helpers/utils'; -import { NETWORKS } from 'src/dapp/dapp.connect'; +import { useState } from 'react'; +import { truncateFromMiddle } from 'src/core/stringTransformation'; +import { translate } from 'src/core/utils'; +import Dapp from 'src/dapp'; import { AlertModal } from 'src/modules/general/components/AlertModal'; import { Button } from 'src/modules/general/components/Button/index'; import { Icon } from 'src/modules/general/components/Icon'; -import Image from 'src/modules/general/components/Image'; -import { useWalletContext } from 'src/store/contexts'; -import { useAccount, useBalance, useChainId, useConnect, useDisconnect } from 'wagmi'; +import { useConnect } from 'wagmi'; import styles from './index.module.scss'; import ChooseWalletModal from '../ChooseWalletModal'; import ConnectModal from './ConnectModal'; import { CardanoWallet, ConnectButtonProps, EVMWallet } from './index.type'; -const ConnectButton: React.FC = ({ defaultAddress = '', onSetWallet }) => { - const { dispatch, state } = useWalletContext(); - const { address = defaultAddress, wallet, balance } = state; +export const ConnectButton: React.FC = ({ defaultAddress = '' }) => { + const { + account = defaultAddress, + connected, + balance, + setupCardanoConnection, + setupEvmConnection, + disconnect, + } = Dapp.useWeb3(); - const { address: evmAddress = '0x', isConnected: isEvmConnected } = useAccount(); - const { connectors: evmConnectors, connect: connectEvm } = useConnect(); - const { disconnect: disconnectEvm } = useDisconnect(); - const evmChainId = useChainId(); - const { data: evmBalance } = useBalance({ - address: evmAddress, - chainId: evmChainId, - }); + const { connectors: evmConnectors } = useConnect(); const [availableWallets, setAvailableWallets] = useState<(CardanoWallet | EVMWallet)[]>([]); - const [pendingConnector, setPendingConnector] = useState(wallet); const [isModalOpen, setIsModalOpen] = useState(false); const [showMenu, setShowMenu] = useState(false); const [error, setError] = useState(''); - const connected = !!address || isEvmConnected; - const savedWallet = localStorage.getItem('selectedWallet'); - const savedType = localStorage.getItem('walletType'); - const cardanoFormat = 1_000_000; - const evmFormat = 1e18; - const symbol = balance.symbol; - const formattedBalance = Number(balance.value.toFixed(3)).toLocaleString(); - - useEffect(() => { - if (!savedWallet) return; - if (savedType === 'cardano') { - connectCardanoWallet(savedWallet); - } - if (savedType === 'evm') { - const connector = evmConnectors.find(connector => connector.name === savedWallet); - if (connector) { - connectEvmWallet(connector); - } - } - }, []); - - useEffect(() => { - if (isEvmConnected && evmAddress && evmBalance && pendingConnector) { - finalizeConnection({ - wallet: pendingConnector, - address: evmAddress, - name: pendingConnector.name, - type: 'evm', - chain_id: evmChainId.toString(), - balance: { symbol: evmBalance?.symbol || '', value: Number(evmBalance.value) / evmFormat }, - }); - setPendingConnector(null); - } - }, [isEvmConnected, evmAddress, evmBalance, pendingConnector]); - - const finalizeConnection = ({ - wallet, - address, - name, - type, - chain_id, - balance, - }: { - wallet: BrowserWallet | EVMWallet['connector']; - address: string; - name: string; - type: 'cardano' | 'evm'; - chain_id: string; - balance: { symbol: string; value: number }; - }) => { - dispatch({ type: 'CONNECT', payload: { wallet, address, balance, connected } }); - setIsModalOpen(false); - localStorage.setItem('walletType', type); - localStorage.setItem('selectedWallet', name); - - const chain = type === 'cardano' ? 'Cardano' : (NETWORKS.find(n => n.chain.id === evmChainId)?.chain.name ?? 'EVM'); - onSetWallet?.({ chain, chain_id, address }); - }; - - const connectCardanoWallet = async (walletName: string) => { - try { - const wallet = await BrowserWallet.enable(walletName); - const networkId = await wallet.getNetworkId(); - const address = await wallet.getChangeAddress(); - const utxos = await wallet.getUtxos(); - const totalLovelace = utxos?.reduce((sum, utxo) => { - const lovelace = utxo.output.amount.find(a => a.unit === 'lovelace'); - return sum + BigInt(lovelace?.quantity || '0'); - }, BigInt(0)); - const ada = Number(totalLovelace) / cardanoFormat; - - finalizeConnection({ - wallet, - address, - name: walletName, - type: 'cardano', - chain_id: networkId ? 'cardano-mainnet' : 'cardano-preprod', - balance: { symbol: 'ADA', value: ada }, - }); - } catch (error: unknown) { - console.error((error as CustomError).message); - setError(translate('payments-method-crypto-wallet.not-connected-error', { walletName })); - } - }; - - const connectEvmWallet = async (connector: EVMWallet['connector']) => { - try { - await connectEvm({ connector }); - // Wait until evmAddress updates via useAccount - setPendingConnector(connector); - } catch (error: unknown) { - console.error((error as CustomError).message); - setError(translate('payments-method-crypto-wallet.not-connected-error', { walletName: connector.name })); - } - }; + const symbol = balance?.symbol || ''; + const formattedBalance = balance ? Number(balance.value.toFixed(3)).toLocaleString() : ''; const handleClick = async () => { if (connected) { @@ -150,12 +52,14 @@ const ConnectButton: React.FC = ({ defaultAddress = '', onSe ]; if (!wallets.length) { - setError(translate('payments-method-crypto-wallet.not-installed-error')); + setError(translate('wallet-not-installed-error')); return; } if (wallets.length === 1) { const wallet = wallets[0]; - wallet.type === 'cardano' ? connectCardanoWallet(wallet.name) : connectEvmWallet((wallet as EVMWallet).connector); + wallet.type === 'cardano' + ? setupCardanoConnection(wallet.name) + : setupEvmConnection((wallet as EVMWallet).connector); } else { setAvailableWallets(wallets); setIsModalOpen(true); @@ -163,15 +67,12 @@ const ConnectButton: React.FC = ({ defaultAddress = '', onSe }; const handleDisconnect = () => { - if (isEvmConnected) disconnectEvm(); - dispatch({ type: 'DISCONNECT' }); + disconnect(); setShowMenu(false); - localStorage.removeItem('walletType'); - localStorage.removeItem('selectedWallet'); }; const handleCopy = () => { - navigator.clipboard.writeText(address); + navigator.clipboard.writeText(account); setShowMenu(false); }; @@ -181,7 +82,7 @@ const ConnectButton: React.FC = ({ defaultAddress = '', onSe {connected && ( @@ -198,7 +99,7 @@ const ConnectButton: React.FC = ({ defaultAddress = '', onSe open={showMenu} handleClose={() => setShowMenu(false)} symbol={symbol} - address={truncateFromMiddle(address, 5, 5)} + address={truncateFromMiddle(account, 5, 5)} formattedBalance={formattedBalance} handleDisconnect={handleDisconnect} handleCopy={handleCopy} @@ -209,18 +110,19 @@ const ConnectButton: React.FC = ({ defaultAddress = '', onSe open={isModalOpen} handleClose={() => setIsModalOpen(false)} wallets={availableWallets} - onWalletSelect={wallet => + onWalletSelect={wallet => { wallet.type === 'cardano' - ? connectCardanoWallet(wallet.name) - : connectEvmWallet((wallet as EVMWallet).connector) - } + ? setupCardanoConnection(wallet.name) + : setupEvmConnection((wallet as EVMWallet).connector); + setIsModalOpen(false); + }} /> )}
setError('')} - title={translate('payment-cards.failed')} + title={translate('wallet-failed')} message={error} customIcon={} closeButtn={false} diff --git a/src/modules/wallet/components/ConnectButton/index.type.ts b/src/modules/wallet/components/ConnectButton/index.type.ts index d7efa02d4..1c49fa9a6 100644 --- a/src/modules/wallet/components/ConnectButton/index.type.ts +++ b/src/modules/wallet/components/ConnectButton/index.type.ts @@ -1,10 +1,8 @@ import { Wallet } from '@meshsdk/core'; -import { WalletReq } from 'src/core/api'; import { Connector, CreateConnectorFn } from 'wagmi'; export interface ConnectButtonProps { defaultAddress?: string; - onSetWallet?: (payload: WalletReq) => void; } export type EVMWallet = { diff --git a/src/modules/wallet/components/assets/index.tsx b/src/modules/wallet/components/assets/index.tsx index c96195049..28865648f 100644 --- a/src/modules/wallet/components/assets/index.tsx +++ b/src/modules/wallet/components/assets/index.tsx @@ -5,10 +5,11 @@ import { Icon } from 'src/modules/general/components/Icon'; import AddPayoutAccount from 'src/modules/general/containers/AddPayoutAccount'; import { useAssets } from './useAssets'; +import ConnectButton from '../ConnectButton'; import { StripeAccountItem } from '../stripeAccountItem'; export const Assets = () => { - const { stripeAccounts, openAddAccount, setOpenAddAccount, Web3Connect } = useAssets(); + const { stripeAccounts, openAddAccount, setOpenAddAccount } = useAssets(); return ( <> @@ -27,7 +28,7 @@ export const Assets = () => { ))}
{translate('pay-wallet')}
- +
setOpenAddAccount(false)} /> diff --git a/src/modules/wallet/components/assets/useAssets.tsx b/src/modules/wallet/components/assets/useAssets.tsx index 7977fbc54..bf8641d84 100644 --- a/src/modules/wallet/components/assets/useAssets.tsx +++ b/src/modules/wallet/components/assets/useAssets.tsx @@ -1,7 +1,8 @@ import { useEffect, useState } from 'react'; import { useSelector } from 'react-redux'; import { useLoaderData } from 'react-router-dom'; -import { CurrentIdentity, StripeAccount, updateWallet } from 'src/core/api'; +import { updateWalletAdaptor } from 'src/core/adaptors'; +import { CurrentIdentity, StripeAccount } from 'src/core/api'; import dapp from 'src/dapp'; import { RootState } from 'src/store'; @@ -9,7 +10,7 @@ import { Resolver } from './assets.types'; export const useAssets = () => { const { stripeProfileRes, jpStripeProfileRes } = useLoaderData() as Resolver; - const { isConnected, Web3Connect, account } = dapp.useWeb3(); + const { connected, account, networkName, testnet } = dapp.useWeb3(); const currentIdentity = useSelector(state => { return state.identity.entities.find(identity => identity.current); }); @@ -24,13 +25,13 @@ export const useAssets = () => { useEffect(() => { if ( currentIdentity?.type === 'users' && - isConnected && + connected && account && (!walletAddress || String(walletAddress) !== account) ) { - updateWallet({ wallet_address: account }); + updateWalletAdaptor({ account, networkName, testnet }); } - }, [isConnected, account]); + }, [connected, account]); - return { stripeAccounts, openAddAccount, setOpenAddAccount, isConnected, Web3Connect }; + return { stripeAccounts, openAddAccount, setOpenAddAccount, connected }; }; diff --git a/src/store/contexts/index.ts b/src/store/contexts/index.ts deleted file mode 100644 index 4b28f4b21..000000000 --- a/src/store/contexts/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { WalletProvider, useWalletContext } from './wallet.context'; - -export { WalletProvider, useWalletContext }; diff --git a/src/store/contexts/wallet.context.tsx b/src/store/contexts/wallet.context.tsx deleted file mode 100644 index f3c130f67..000000000 --- a/src/store/contexts/wallet.context.tsx +++ /dev/null @@ -1,49 +0,0 @@ -import React, { createContext, useContext, useReducer } from 'react'; - -export type WalletType = 'cardano' | 'evm'; - -export type WalletState = { - address: string; - wallet: any; - connected: boolean; - balance: { symbol: string; value: number }; -}; - -export type WalletAction = { type: 'CONNECT'; payload: WalletState } | { type: 'DISCONNECT' }; - -const initialState: WalletState = { - address: '', - wallet: null, - connected: false, - balance: { symbol: '', value: 0 }, -}; - -const WalletContext = createContext<{ - state: WalletState; - dispatch: React.Dispatch; -}>({ - state: initialState, - dispatch: () => null, -}); - -function walletReducer(state: WalletState, action: WalletAction): WalletState { - switch (action.type) { - case 'CONNECT': - return { - ...state, - ...action.payload, - }; - case 'DISCONNECT': - return initialState; - default: - return state; - } -} - -export const WalletProvider: React.FC<{ children: React.ReactNode }> = ({ children }) => { - const [state, dispatch] = useReducer(walletReducer, initialState); - - return {children}; -}; - -export const useWalletContext = () => useContext(WalletContext); diff --git a/src/store/index.ts b/src/store/index.ts index 2bcdc97f4..59cce42c0 100644 --- a/src/store/index.ts +++ b/src/store/index.ts @@ -8,6 +8,7 @@ import { linkedInSlice } from './reducers/linkedin.reducer'; import { profileSlice } from './reducers/profile.reducer'; import { skillsSlice } from './reducers/skills.reducer'; import { spinnerSlice } from './reducers/spinner.reducer'; +import { walletSlice } from './reducers/wallet.reducer'; const store = configureStore({ reducer: { @@ -19,11 +20,13 @@ const store = configureStore({ skills: skillsSlice.reducer, events: eventsSlice.reducer, linkedin: linkedInSlice.reducer, + wallet: walletSlice.reducer, }, middleware: getDefaultMiddleware => { return getDefaultMiddleware({ serializableCheck: { - ignoredActions: ['modals/openModal'], + ignoredActions: ['modals/openModal', 'wallet/setWalletState'], + ignoredPaths: ['wallet.wallet', 'wallet.walletProvider'], }, }); }, diff --git a/src/store/reducers/wallet.reducer.ts b/src/store/reducers/wallet.reducer.ts new file mode 100644 index 000000000..b8eb34a15 --- /dev/null +++ b/src/store/reducers/wallet.reducer.ts @@ -0,0 +1,46 @@ +import { BrowserWallet } from '@meshsdk/core'; +import { createSlice, PayloadAction } from '@reduxjs/toolkit'; +import { BrowserProvider, Eip1193Provider, JsonRpcSigner } from 'ethers'; + +export type WalletState = { + wallet: any | null; + walletProvider: Eip1193Provider | BrowserWallet | null; + provider: BrowserProvider | null; + signer: JsonRpcSigner | null; + account: string; + chainId: number | null; + connected: boolean; + network: any; + networkName: string; + testnet: boolean; + balance: { symbol: string; value: number } | null; +}; + +const initialState: WalletState = { + wallet: null, + walletProvider: null, + provider: null, + signer: null, + account: '', + chainId: null, + connected: false, + network: null, + networkName: '', + testnet: false, + balance: null, +}; + +export const walletSlice = createSlice({ + name: 'wallet', + initialState, + reducers: { + setWalletState(state, action: PayloadAction>) { + return { ...state, ...action.payload }; + }, + resetWalletState() { + return initialState; + }, + }, +}); + +export const { setWalletState, resetWalletState } = walletSlice.actions; From 2ef072ec5bae4889a8c5fe1421c9c0882ef753bc Mon Sep 17 00:00:00 2001 From: Ehsan Mahmoudi Date: Fri, 5 Sep 2025 17:17:15 +0330 Subject: [PATCH 50/76] fix: critical Cardano escrow release fee calculation bug - Fixed fee calc: was 90-95% fee, now correctly 5-10% - Added fee constants and verifiedOrg metadata - Improved error handling and validation Signed-off-by: Ehsan Mahmoudi --- src/core/api/payments/payments.types.ts | 1 + src/dapp/dapp.service.ts | 75 ++++++++++++------- .../SliderAwaiting/useSliderAwaiting.tsx | 13 +++- 3 files changed, 60 insertions(+), 29 deletions(-) diff --git a/src/core/api/payments/payments.types.ts b/src/core/api/payments/payments.types.ts index 914b6fefa..2d8e99386 100644 --- a/src/core/api/payments/payments.types.ts +++ b/src/core/api/payments/payments.types.ts @@ -50,6 +50,7 @@ export interface Payment { amount?: number; fee?: number; contributor?: string; + verifiedOrg?: boolean; }; payer_identity: Identity; diff --git a/src/dapp/dapp.service.ts b/src/dapp/dapp.service.ts index 0d3f9f9e5..787a7b8d4 100644 --- a/src/dapp/dapp.service.ts +++ b/src/dapp/dapp.service.ts @@ -5,6 +5,11 @@ import { config } from 'src/config'; import { dappConfig } from './dapp.config'; import { AllowanceParams, EscrowParams, FlattenToken, WithdrawnParams } from './dapp.types'; +// Fee constants +const VERIFIED_ORG_FEE_PERCENT = 0.05; // 5% fee for verified organizations +const UNVERIFIED_ORG_FEE_PERCENT = 0.1; // 10% fee for unverified organizations +const CARDANO_DECIMAL_FACTOR = 1_000_000; // Lovelace conversion factor + let cardanoEscrow: Escrow | null = null; export const getCardanoEscrow = () => { if (config.blockfrostProjectId && !cardanoEscrow) { @@ -58,19 +63,21 @@ export const escrow = async (params: EscrowParams) => { // Handle Cardano if (selectedNetwork.name === 'cardano') { const cardanoEscrow = getCardanoEscrow(); - if (!cardanoEscrow) return; + if (!cardanoEscrow) { + throw new Error('Cardano escrow service not available'); + } const txHash = await cardanoEscrow.deposit({ unit: token || 'lovelace', - quantity: `${totalAmount * 1_000_000}`, + quantity: `${totalAmount * CARDANO_DECIMAL_FACTOR}`, }); - // more info need for release cardano escrow + // Store metadata for release return { txHash, id: txHash, token, - varified: verifiedOrg, + verified: verifiedOrg, contributor, amount: totalAmount, fee: totalAmount - escrowAmount, @@ -131,30 +138,44 @@ export const withdrawnEscrow = async (params: WithdrawnParams) => { // Handle Cardano if (selectedNetwork.name === 'cardano') { - let feePercent = 0.1; - if (meta.verifiedOrg) feePercent = 0.05; - - const fee = meta.amount * (1 - feePercent) + meta?.fee; - const amount = meta.amount - fee; - - const cardanoEscrow = getCardanoEscrow(); - if (!cardanoEscrow) return; - - const tx = await cardanoEscrow.release({ - tx: escrowId, - payouts: [ - { - address: config.cardanoPayoutFeeAddress, - amount: Math.trunc(fee * 1000000), - }, - { - address: meta.contributor, - amount: Math.trunc(amount * 1000000), - }, - ], - }); + try { + // Determine fee percentage based on organization verification status + const feePercent = meta.verifiedOrg ? VERIFIED_ORG_FEE_PERCENT : UNVERIFIED_ORG_FEE_PERCENT; + + // FIXED: Calculate fee correctly (percentage of amount + any additional fees) + const platformFee = meta.amount * feePercent; + const totalFee = platformFee + (meta?.fee || 0); + const contributorAmount = meta.amount - totalFee; + + // Validate amounts + if (contributorAmount <= 0) { + throw new Error('Invalid amount: fee exceeds total amount'); + } + + const cardanoEscrow = getCardanoEscrow(); + if (!cardanoEscrow) { + throw new Error('Cardano escrow service not available'); + } + + const tx = await cardanoEscrow.release({ + tx: escrowId, + payouts: [ + { + address: config.cardanoPayoutFeeAddress, + amount: Math.trunc(totalFee * CARDANO_DECIMAL_FACTOR), + }, + { + address: meta.contributor, + amount: Math.trunc(contributorAmount * CARDANO_DECIMAL_FACTOR), + }, + ], + }); - return tx; + return tx; + } catch (error) { + console.error('Cardano escrow release failed:', error); + throw new Error(`Failed to release Cardano escrow: ${error instanceof Error ? error.message : 'Unknown error'}`); + } } // Handle EVM diff --git a/src/modules/Contract/containers/SliderAwaiting/useSliderAwaiting.tsx b/src/modules/Contract/containers/SliderAwaiting/useSliderAwaiting.tsx index fd5865b43..168f9f877 100644 --- a/src/modules/Contract/containers/SliderAwaiting/useSliderAwaiting.tsx +++ b/src/modules/Contract/containers/SliderAwaiting/useSliderAwaiting.tsx @@ -1,7 +1,7 @@ import { useState } from 'react'; import { useDispatch, useSelector } from 'react-redux'; import { cancelContractAdaptor, completeContractAdaptor, Contract } from 'src/core/adaptors'; -import { CurrentIdentity } from 'src/core/api'; +import { CurrentIdentity, OrgMeta } from 'src/core/api'; import { getIdentityMeta, navigateToProfile, translate } from 'src/core/utils'; import dapp from 'src/dapp'; import { RootState } from 'src/store'; @@ -48,11 +48,20 @@ export const useSliderAwaiting = (contract: Contract) => { if (contract.payment === 'CRYPTO' && escrowId) { try { + // Get verified status from the provider's identity + const providerVerified = + contract.provider?.type === 'organizations' + ? (contract.provider.meta as OrgMeta)?.verified_impact || false + : false; + const result = await dapp.withdrawnEscrow({ signer, network, escrowId, - meta: contract?.paymentObj?.meta, + meta: { + ...contract?.paymentObj?.meta, + verifiedOrg: providerVerified, + }, }); if (!result) { From 32947ad31c173f51fa88841d7a82597d9e3fac89 Mon Sep 17 00:00:00 2001 From: Sanaz Mahmoudi Date: Thu, 4 Sep 2025 17:00:34 +0330 Subject: [PATCH 51/76] fix: price limitation error for each crypto token or fiat currency --- src/constants/TOKEN_LIMIT.ts | 3 + src/core/translation/locales/en/services.json | 1 + src/core/translation/locales/es/services.json | 1 + src/core/translation/locales/jp/services.json | 1 + src/core/translation/locales/kr/services.json | 1 + .../OrgOfferModal/OrgOfferModal.types.ts | 10 +- .../Jobs/containers/OrgOfferModal/index.tsx | 35 ++-- .../containers/OrgOfferModal/useOrgOffer.tsx | 174 +++++++++--------- .../useServiceCreateForm.tsx | 102 ++++++---- 9 files changed, 190 insertions(+), 138 deletions(-) create mode 100644 src/constants/TOKEN_LIMIT.ts diff --git a/src/constants/TOKEN_LIMIT.ts b/src/constants/TOKEN_LIMIT.ts new file mode 100644 index 000000000..57cb5a386 --- /dev/null +++ b/src/constants/TOKEN_LIMIT.ts @@ -0,0 +1,3 @@ +export const minByToken: Record = { + ADA: 5, +}; diff --git a/src/core/translation/locales/en/services.json b/src/core/translation/locales/en/services.json index c40019319..a1d8a3fed 100644 --- a/src/core/translation/locales/en/services.json +++ b/src/core/translation/locales/en/services.json @@ -26,6 +26,7 @@ "subheader": "Tell us more about your service", "error-message": "This field is required", "error-positive-message": "Value must be a positive number", + "error-min-price": "The price must be at least {{minValue}}.", "name": "Service name", "name-description": "Add a clear and concise name for the service you want to provide", "name-placeholder": "e.g, Logo Design", diff --git a/src/core/translation/locales/es/services.json b/src/core/translation/locales/es/services.json index fce85d6e6..9bb3fb6a3 100644 --- a/src/core/translation/locales/es/services.json +++ b/src/core/translation/locales/es/services.json @@ -26,6 +26,7 @@ "subheader": "Cuéntanos más sobre tu servicio", "error-message": "Este campo es obligatorio", "error-positive-message": "El valor debe ser un número positivo", + "error-min-price": "El precio debe ser al menos {{minValue}}.", "name": "Nombre del servicio", "name-description": "Agrega un nombre claro y conciso para el servicio que deseas ofrecer", "name-placeholder": "Ejemplo: Diseño de logotipo", diff --git a/src/core/translation/locales/jp/services.json b/src/core/translation/locales/jp/services.json index d6861a0ce..56b6255d4 100644 --- a/src/core/translation/locales/jp/services.json +++ b/src/core/translation/locales/jp/services.json @@ -26,6 +26,7 @@ "subheader": "サービスについて詳しく教えてください", "error-message": "この項目は必須です", "error-positive-message": "値は正の数でなければなりません", + "error-min-price": "価格は少なくとも{{minValue}}である必要があります。", "name": "サービス名", "name-description": "提供するサービスの明確で簡潔な名前を追加してください", "name-placeholder": "例:ロゴデザイン", diff --git a/src/core/translation/locales/kr/services.json b/src/core/translation/locales/kr/services.json index 18b1c0141..a9bf44875 100644 --- a/src/core/translation/locales/kr/services.json +++ b/src/core/translation/locales/kr/services.json @@ -26,6 +26,7 @@ "subheader": "귀하의 서비스에 대해 더 알려주세요", "error-message": "이 필드는 필수입니다", "error-positive-message": "값은 양수여야 합니다", + "error-min-price": "가격은 최소 {{minValue}} 이상이어야 합니다.", "name": "서비스 이름", "name-description": "제공하려는 서비스의 명확하고 간결한 이름을 입력하세요", "name-placeholder": "예: 로고 디자인", diff --git a/src/modules/Jobs/containers/OrgOfferModal/OrgOfferModal.types.ts b/src/modules/Jobs/containers/OrgOfferModal/OrgOfferModal.types.ts index b05759205..c83b10bd6 100644 --- a/src/modules/Jobs/containers/OrgOfferModal/OrgOfferModal.types.ts +++ b/src/modules/Jobs/containers/OrgOfferModal/OrgOfferModal.types.ts @@ -1,9 +1,17 @@ import { Applicant } from 'src/core/api'; +export type Form = { + title: string; + paymentMethod?: string; + hours: number; + total?: number; + currency?: string; + description: string; +}; + export interface OrgOfferModalProps { applicant: Applicant; onClose: () => void; open: boolean; onSuccess: () => void; } -// applicant diff --git a/src/modules/Jobs/containers/OrgOfferModal/index.tsx b/src/modules/Jobs/containers/OrgOfferModal/index.tsx index a66e9bfb4..bbd6f388b 100644 --- a/src/modules/Jobs/containers/OrgOfferModal/index.tsx +++ b/src/modules/Jobs/containers/OrgOfferModal/index.tsx @@ -17,22 +17,21 @@ export const OrgOfferModal: React.FC = ({ open, onClose, app register, handleSubmit, onSubmit, + onSelectValue, errors, - onSelectPaymentType, - onSelectPaymentTerm, - onSelectPaymentMethod, isCrypto, isNonPaid, paymentMethodOptions, - setSelected, + currency, preventArrow, + disabled, } = useOrgOffer(applicant, onClose, onSuccess); const paymentMode = PROJECT_PAYMENT_MODE; const paymentType = [...PROJECT_PAYMENT_TYPE].reverse(); const paymentScheme = [...PROJECT_PAYMENT_SCHEME].reverse(); - const renderfieldInfo = (title: string, description: string) => { + const renderFieldInfo = (title: string, description: string) => { return (
{title}
@@ -40,6 +39,7 @@ export const OrgOfferModal: React.FC = ({ open, onClose, app
); }; + return ( <> @@ -53,7 +53,7 @@ export const OrgOfferModal: React.FC = ({ open, onClose, app
- {renderfieldInfo('Contract title*', '')} + {renderFieldInfo('Contract title*', '')} = ({ open, onClose, app />
- {renderfieldInfo('Payment type', 'Is it a paid or volunteer job?')} + {renderFieldInfo('Payment type', 'Is it a paid or volunteer job?')} onSelectPaymentType(type.value)} + onChange={type => onSelectValue('paymentType', type.value as string)} />
- {renderfieldInfo('Payment terms', 'Is it a fixed or hourly job?')} + {renderFieldInfo('Payment terms', 'Is it a fixed or hourly job?')} onSelectPaymentTerm(term.value)} + onChange={term => onSelectValue('paymentTerm', term.value as string)} errors={errors['paymentTerm']?.message ? [errors['paymentTerm']?.message.toString()] : undefined} />
- {renderfieldInfo('Estimated total hours*', '')} + {renderFieldInfo('Estimated total hours*', '')} = ({ open, onClose, app
{!isNonPaid && (
- {renderfieldInfo('Payment method', 'Payment in fiat or crypto?')} + {renderFieldInfo('Payment method', 'Payment in fiat or crypto?')} onSelectPaymentMethod(option.value)} + onChange={option => onSelectValue('paymentMethod', option.value as string)} items={paymentMode} defaultValue={paymentMode[0].value} errors={ @@ -110,7 +110,7 @@ export const OrgOfferModal: React.FC = ({ open, onClose, app )} {!isNonPaid && (
- {isCrypto && renderfieldInfo('Your wallet', 'Connect wallet to send an offer')} + {isCrypto && renderFieldInfo('Your wallet', 'Connect wallet to send an offer')} {isCrypto && (
@@ -127,14 +127,15 @@ export const OrgOfferModal: React.FC = ({ open, onClose, app errors={errors['total']?.message ? [errors['total']?.message.toString()] : undefined} postfixDropdown={{ options: paymentMethodOptions, - onChange: currency => setSelected(currency), + value: paymentMethodOptions.find(option => option.value === currency) || null, + onChange: currency => onSelectValue('currency', currency), }} />
)}
- {renderfieldInfo('Description*', '')} + {renderFieldInfo('Description*', '')} = ({ open, onClose, app -
diff --git a/src/modules/Jobs/containers/OrgOfferModal/useOrgOffer.tsx b/src/modules/Jobs/containers/OrgOfferModal/useOrgOffer.tsx index af928b312..1c301ec25 100644 --- a/src/modules/Jobs/containers/OrgOfferModal/useOrgOffer.tsx +++ b/src/modules/Jobs/containers/OrgOfferModal/useOrgOffer.tsx @@ -1,52 +1,72 @@ import { yupResolver } from '@hookform/resolvers/yup'; -import { KeyboardEvent, useEffect, useState } from 'react'; +import { KeyboardEvent, useEffect } from 'react'; import { SubmitHandler, useForm } from 'react-hook-form'; +import { PAYMENT_CURRENCIES } from 'src/constants/PAYMENT_CURRENCY'; +import { minByToken } from 'src/constants/TOKEN_LIMIT'; import { Applicant, ProjectPaymentType, offerByApplicant } from 'src/core/api'; +import { useTokens } from 'src/core/hooks/useTokens'; import { removeValuesFromObject } from 'src/core/utils'; import dapp from 'src/dapp'; import * as yup from 'yup'; -type Inputs = { - title: string; - hours: number; - total?: number; - paymentMethod?: string; - description: string; +import { Form } from './OrgOfferModal.types'; + +const getSchema = tokens => { + return yup.object().shape({ + title: yup.string().required('Required').min(2, 'Must be 2-50 characters').max(50, 'Must be 2-50 characters'), + paymentType: yup.string().required('Required'), + paymentTerm: yup.string(), + paymentMethod: yup.string(), + hours: yup + .number() + .typeError('Total hours is required') + .positive('Must be positive') + .min(1, 'Hours must be more than 0') + .required('Total hours is required'), + total: yup + .number() + .when(['paymentType', 'paymentMethod', 'currency'], ([paymentType, paymentMethod, currency], schema) => { + if (paymentType === 'VOLUNTEER') { + return yup.number().nullable().notRequired(); + } + let minValue; + if (paymentMethod === 'FIAT') { + minValue = 22; + } else if (paymentMethod === 'CRYPTO' && currency) { + const tokenLabel = tokens.find(token => token.value === currency)?.label; + minValue = minByToken[tokenLabel]; + } + return schema + .typeError('Offer amount is required') + .required('Offer amount is required') + .test('is-positive', 'Offer amount should be positive', value => typeof value === 'number' && value > 0) + .min(minValue, minValue !== undefined ? `Offer amount must be at least ${minValue}.` : ''); + }), + currency: yup.string().when(['paymentType', 'paymentMethod'], ([paymentType, paymentMethod], schema) => { + if (paymentType === 'VOLUNTEER') { + return schema.nullable().notRequired(); + } + if (paymentMethod === 'FIAT') { + return schema.required('Currency is required').oneOf( + PAYMENT_CURRENCIES.map(c => c.value), + 'Invalid FIAT currency', + ); + } + if (paymentMethod === 'CRYPTO') { + return schema.required('Token is required').oneOf( + tokens.map(t => t.value), + 'Invalid CRYPTO token', + ); + } + return schema; + }), + description: yup.string().required('Description is required'), + }); }; -const schema = yup.object().shape({ - title: yup.string().required('Required').min(2, 'Must be 2-50 characters').max(50, 'Must be 2-50 characters'), - paymentType: yup.string().required('Required'), - paymentTerm: yup.string(), - paymentMethod: yup.string(), - hours: yup - .number() - .positive() - .typeError('Total hours is required') - .min(1, 'Hours needs to be more than 0') - .required('Total hours is required'), - total: yup.number().when(['paymentType'], paymentType => { - if (paymentType.includes('PAID')) { - return yup - .number() - .typeError('Offer amount is required') - .positive('Offer amount should be positive value') - .required('Offer amount is required'); - } else { - return yup.string().nullable().notRequired(); - } - }), - description: yup.string().required('Description is required'), -}); + export const useOrgOffer = (applicant: Applicant, onClose: () => void, onSuccess: () => void) => { const { connected, network } = dapp.useWeb3(); - const [tokens, setTokens] = useState< - { - value: string; - label: string; - address: string; - }[] - >([]); - const [selected, setSelected] = useState(); + const tokens = useTokens(connected, network); const { register, @@ -57,42 +77,33 @@ export const useOrgOffer = (applicant: Applicant, onClose: () => void, onSuccess formState: { errors }, } = useForm({ mode: 'all', - resolver: yupResolver(schema), + resolver: yupResolver(getSchema(tokens)), defaultValues: { paymentType: 'PAID' as ProjectPaymentType, paymentMethod: 'FIAT' as 'STRIPE', paymentTerm: 'FIXED', }, }); + const paymentMethod = watch('paymentMethod'); + const currency = watch('currency'); + const isNonPaid = watch('paymentType') === 'VOLUNTEER'; + const isCrypto = paymentMethod === 'CRYPTO'; + const isFiat = paymentMethod === 'FIAT'; + const paymentMethodOptions = isCrypto ? tokens : PAYMENT_CURRENCIES; + + const initCurrencyValue = () => { + if (isCrypto) return tokens[0]?.value; + else if (isFiat) return PAYMENT_CURRENCIES[0].value; + return ''; + }; useEffect(() => { - const getTokens = async () => { - if (connected && network) { - const mapTokens = network.tokens.map(token => { - return { - value: token?.address || '', - label: token.name, - address: token?.address || '', - }; - }); - - setTokens(mapTokens); - } - }; - getTokens(); - }, [connected, network]); + setValue('currency', initCurrencyValue()); + }, [tokens.length, paymentMethod]); - const onSelectPaymentType = paymentType => { - setValue('paymentType', paymentType); - }; - const onSelectPaymentTerm = paymentTerm => { - setValue('paymentTerm', paymentTerm); - }; - const onSelectPaymentMethod = paymentMethod => { - setValue('paymentMethod', paymentMethod); + const onSelectValue = (name: 'paymentType' | 'paymentTerm' | 'paymentMethod' | 'currency', value: string) => { + setValue(name, value, { shouldValidate: true }); }; - const isCrypto = watch('paymentMethod') === 'CRYPTO'; - const isNonPaid = watch('paymentType') === 'VOLUNTEER'; const preventArrow = (e: KeyboardEvent) => { if (['ArrowUp', 'ArrowDown'].includes(e.key)) { @@ -100,35 +111,28 @@ export const useOrgOffer = (applicant: Applicant, onClose: () => void, onSuccess } }; - const onSubmit: SubmitHandler = async ({ paymentMethod, total, description, hours }) => { + const onSubmit: SubmitHandler = async ({ paymentMethod, total, description, hours }) => { let netTotal = total || 0; if (isNonPaid) { netTotal = 0; } - if (!isNonPaid && !selected) { + if (!isNonPaid && !currency) { setError('total', { message: 'Offer currency is required', }); return; } - if (!isNonPaid && paymentMethod === ('FIAT' as 'STRIPE') && netTotal < 22) { - setError('total', { - message: 'Offer amount on Fiat should have a minimum value of 22', - }); - return; - } - - if (isCrypto && selected && ['USD', 'JPY'].includes(selected)) { + if (isCrypto && currency && ['USD', 'JPY'].includes(currency)) { setError('total', { message: 'Offer currency is incorrect', }); return; } - if (!isCrypto && selected && !['USD', 'JPY'].includes(selected)) { + if (!isCrypto && currency && !['USD', 'JPY'].includes(currency)) { setError('total', { message: 'Offer currency is incorrect', }); @@ -140,8 +144,8 @@ export const useOrgOffer = (applicant: Applicant, onClose: () => void, onSuccess assignment_total: netTotal.toString(), offer_message: description, total_hours: hours.toString(), - crypto_currency_address: isCrypto ? selected : undefined, - currency: isCrypto ? undefined : selected, + crypto_currency_address: isCrypto ? currency : undefined, + currency: isCrypto ? undefined : currency, }; await offerByApplicant(applicant.id, removeValuesFromObject(payload, [undefined])); @@ -149,25 +153,17 @@ export const useOrgOffer = (applicant: Applicant, onClose: () => void, onSuccess onClose(); }; - const paymentMethodOptions = isCrypto - ? tokens - : [ - { label: 'USD', value: 'USD' }, - { label: 'JPY', value: 'JPY' }, - ]; return { register, handleSubmit, errors, onSubmit, - setValue, - onSelectPaymentType, - onSelectPaymentTerm, - onSelectPaymentMethod, + onSelectValue, isCrypto, isNonPaid, paymentMethodOptions, - setSelected, + currency, preventArrow, + disabled: !isFiat && !connected, }; }; diff --git a/src/modules/Services/containers/ServiceCreateForm/useServiceCreateForm.tsx b/src/modules/Services/containers/ServiceCreateForm/useServiceCreateForm.tsx index cd17d83a9..818fcc58c 100644 --- a/src/modules/Services/containers/ServiceCreateForm/useServiceCreateForm.tsx +++ b/src/modules/Services/containers/ServiceCreateForm/useServiceCreateForm.tsx @@ -6,6 +6,7 @@ import { useLoaderData, useLocation, useNavigate, useParams } from 'react-router import { PAYMENT_CURRENCIES } from 'src/constants/PAYMENT_CURRENCY'; import { translatePaymentMode } from 'src/constants/PROJECT_PAYMENT_MODE'; import { translateServiceLength } from 'src/constants/SERVICE_LENGTH'; +import { minByToken } from 'src/constants/TOKEN_LIMIT'; import { createOrUpdateServiceAdaptor, OptionType, @@ -23,37 +24,76 @@ import * as yup from 'yup'; import { ServiceForm } from './index.types'; -const schema = yup.object().shape({ - name: yup.string().required(translate('service-form.error-message')), - category: yup.object().shape({ - label: yup.string().required(), - value: yup.string().required(translate('service-form.error-message')), - }), - description: yup.string().required(translate('service-form.error-message')), - delivery: yup.object().shape({ - label: yup.string().required(), - value: yup.string().required(translate('service-form.error-message')), - }), - hours: yup - .string() - .matches(/^[0-9]*\.?[0-9]+$/, translate('service-form.error-positive-message')) - .required(translate('service-form.error-message')), - payment: yup.string().default('FIAT').required(translate('service-form.error-message')), - price: yup - .string() - .matches(/^[0-9]*\.?[0-9]+$/, translate('service-form.error-positive-message')) - .required(translate('service-form.error-message')), - currency: yup.string().required(translate('service-form.error-message')), - skills: yup - .array() - .of( - yup.object().shape({ - label: yup.string().required(), - value: yup.string().required(translate('service-form.error-message')), +const getSchema = tokens => { + return yup.object().shape({ + name: yup.string().required(translate('service-form.error-message')), + category: yup.object().shape({ + label: yup.string().required(), + value: yup.string().required(translate('service-form.error-message')), + }), + description: yup.string().required(translate('service-form.error-message')), + delivery: yup.object().shape({ + label: yup.string().required(), + value: yup.string().required(translate('service-form.error-message')), + }), + hours: yup + .string() + .matches(/^[0-9]*\.?[0-9]+$/, translate('service-form.error-positive-message')) + .required(translate('service-form.error-message')), + payment: yup.string().default('FIAT').required(translate('service-form.error-message')), + price: yup + .string() + .required(translate('service-form.error-message')) + .when(['payment', 'currency'], ([payment, currency], schema) => { + let minValue; + if (payment === 'FIAT') { + minValue = 22; + } else if (payment === 'CRYPTO' && currency) { + const tokenLabel = tokens.find(t => t.value === currency)?.label; + minValue = minByToken[tokenLabel]; + } + return schema + .test('is-positive', translate('service-form.error-positive-message'), value => + value ? parseFloat(value) > 0 : false, + ) + .test( + 'min-price', + minValue !== undefined ? translate('service-form.error-min-price', { minValue }) : '', + value => { + if (!value || minValue === undefined) return true; + return parseFloat(value) >= minValue; + }, + ); }), - ) - .required(translate('service-form.error-message')), -}); + currency: yup + .string() + .required(translate('service-form.error-message')) + .when(['payment'], ([payment], schema) => { + if (payment === 'FIAT') { + return schema.required(translate('service-form.error-message')).oneOf( + PAYMENT_CURRENCIES.map(c => c.value), + 'Invalid FIAT currency', + ); + } + if (payment === 'CRYPTO') { + return schema.required(translate('service-form.error-message')).oneOf( + tokens.map(t => t.value), + 'Invalid CRYPTO token', + ); + } + return schema; + }), + skills: yup + .array() + .of( + yup.object().shape({ + label: yup.string().required(), + value: yup.string().required(translate('service-form.error-message')), + }), + ) + .required(translate('service-form.error-message')), + }); +}; export const useServiceCreateForm = () => { const navigate = useNavigate(); @@ -99,7 +139,7 @@ export const useServiceCreateForm = () => { reset, } = useForm({ mode: 'all', - resolver: yupResolver(schema), + resolver: yupResolver(getSchema(tokens)), }); const selectedCategory = getValues('category'); const selectedDelivery = getValues('delivery'); From 9ae58316b3c744200997fec13292729ab8b334ad Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 8 Sep 2025 01:09:51 +0000 Subject: [PATCH 52/76] chore(deps-dev): bump eslint-plugin-cypress from 4.3.0 to 5.1.1 Bumps [eslint-plugin-cypress](https://github.com/cypress-io/eslint-plugin-cypress) from 4.3.0 to 5.1.1. - [Release notes](https://github.com/cypress-io/eslint-plugin-cypress/releases) - [Commits](https://github.com/cypress-io/eslint-plugin-cypress/compare/v4.3.0...v5.1.1) --- updated-dependencies: - dependency-name: eslint-plugin-cypress dependency-version: 5.1.1 dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- package-lock.json | 23 +++++------------------ package.json | 2 +- 2 files changed, 6 insertions(+), 19 deletions(-) diff --git a/package-lock.json b/package-lock.json index 2fb3e4d91..beb5e1837 100644 --- a/package-lock.json +++ b/package-lock.json @@ -119,7 +119,7 @@ "cypress-file-upload": "^5.0.8", "eslint": "^9.34.0", "eslint-config-prettier": "^10.1.8", - "eslint-plugin-cypress": "^4.3.0", + "eslint-plugin-cypress": "^5.1.1", "eslint-plugin-i18next": "^6.1.3", "eslint-plugin-import": "^2.31.0", "eslint-plugin-jsdoc": "^51.0.1", @@ -23941,31 +23941,18 @@ } }, "node_modules/eslint-plugin-cypress": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-cypress/-/eslint-plugin-cypress-4.3.0.tgz", - "integrity": "sha512-CgS/S940MJlT8jtnWGKI0LvZQBGb/BB0QCpgBOxFMM/Z6znD+PZUwBhCTwHKN2GEr5AOny3xB92an0QfzBGooQ==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-cypress/-/eslint-plugin-cypress-5.1.1.tgz", + "integrity": "sha512-LxTmZf1LLh9EklZBVvKNEZj71X9tCJnlYDviAJGsOgEVc6jz+tBODSpm02CS/9eJOfRqGsmVyvIw7LHXQ13RaA==", "dev": true, "license": "MIT", "dependencies": { - "globals": "^15.15.0" + "globals": "^16.2.0" }, "peerDependencies": { "eslint": ">=9" } }, - "node_modules/eslint-plugin-cypress/node_modules/globals": { - "version": "15.15.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-15.15.0.tgz", - "integrity": "sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/eslint-plugin-i18next": { "version": "6.1.3", "resolved": "https://registry.npmjs.org/eslint-plugin-i18next/-/eslint-plugin-i18next-6.1.3.tgz", diff --git a/package.json b/package.json index f2f71237a..16cd62107 100644 --- a/package.json +++ b/package.json @@ -138,7 +138,7 @@ "cypress-file-upload": "^5.0.8", "eslint": "^9.34.0", "eslint-config-prettier": "^10.1.8", - "eslint-plugin-cypress": "^4.3.0", + "eslint-plugin-cypress": "^5.1.1", "eslint-plugin-i18next": "^6.1.3", "eslint-plugin-import": "^2.31.0", "eslint-plugin-jsdoc": "^51.0.1", From 15b92c0b1bdd05cf3a53d126ee707ab6afa44cc9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 8 Sep 2025 01:10:11 +0000 Subject: [PATCH 53/76] chore(deps): bump @capacitor/action-sheet from 7.0.1 to 7.0.2 Bumps [@capacitor/action-sheet](https://github.com/ionic-team/capacitor-plugins) from 7.0.1 to 7.0.2. - [Release notes](https://github.com/ionic-team/capacitor-plugins/releases) - [Changelog](https://github.com/ionic-team/capacitor-plugins/blob/main/CHANGELOG.md) - [Commits](https://github.com/ionic-team/capacitor-plugins/compare/@capacitor/action-sheet@7.0.1...@capacitor/action-sheet@7.0.2) --- updated-dependencies: - dependency-name: "@capacitor/action-sheet" dependency-version: 7.0.2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- package-lock.json | 8 ++++---- package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index beb5e1837..6e6b6d915 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,7 @@ "version": "8.1.2", "dependencies": { "@capacitor-firebase/messaging": "^7.2.0", - "@capacitor/action-sheet": "^7.0.1", + "@capacitor/action-sheet": "^7.0.2", "@capacitor/android": "^7.4.2", "@capacitor/app": "^7.0.1", "@capacitor/camera": "^7.0.2", @@ -1002,9 +1002,9 @@ } }, "node_modules/@capacitor/action-sheet": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/@capacitor/action-sheet/-/action-sheet-7.0.1.tgz", - "integrity": "sha512-0ROMy6S62B/Ci9nZ7CRxhkK2LS0JBmhN+sxOXQOtntd2WHKW7+8J+VAtu8vk0LgvTjj7SjzJnicYC75KUjwLWw==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@capacitor/action-sheet/-/action-sheet-7.0.2.tgz", + "integrity": "sha512-x134ZNaik6YhT6qt8U2SHT8d1KzobidOfVWrFIxAc9QgIWzU7lAtIuS+j6WI9Pn2Dc9PjxCIVpW8Pk1r9PjvnA==", "license": "MIT", "peerDependencies": { "@capacitor/core": ">=7.0.0" diff --git a/package.json b/package.json index 16cd62107..58cbfd32c 100644 --- a/package.json +++ b/package.json @@ -28,7 +28,7 @@ }, "dependencies": { "@capacitor-firebase/messaging": "^7.2.0", - "@capacitor/action-sheet": "^7.0.1", + "@capacitor/action-sheet": "^7.0.2", "@capacitor/android": "^7.4.2", "@capacitor/app": "^7.0.1", "@capacitor/camera": "^7.0.2", From b7ceab9d0808cde606abb626794f2a31f96235d9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 8 Sep 2025 01:10:27 +0000 Subject: [PATCH 54/76] chore(deps-dev): bump postcss from 8.5.4 to 8.5.6 Bumps [postcss](https://github.com/postcss/postcss) from 8.5.4 to 8.5.6. - [Release notes](https://github.com/postcss/postcss/releases) - [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md) - [Commits](https://github.com/postcss/postcss/compare/8.5.4...8.5.6) --- updated-dependencies: - dependency-name: postcss dependency-version: 8.5.6 dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- package-lock.json | 8 ++++---- package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6e6b6d915..9b007d935 100644 --- a/package-lock.json +++ b/package-lock.json @@ -134,7 +134,7 @@ "jest": "^29.7.0", "jest-environment-jsdom": "^30.0.5", "lint-staged": "^16.0.0", - "postcss": "^8.5.4", + "postcss": "^8.5.6", "prettier": "^3.6.2", "sass": "^1.87.0", "storybook": "^8.6.14", @@ -35109,9 +35109,9 @@ } }, "node_modules/postcss": { - "version": "8.5.4", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.4.tgz", - "integrity": "sha512-QSa9EBe+uwlGTFmHsPKokv3B/oEMQZxfqW0QqNCyhpa6mB1afzulwn8hihglqAb2pOw+BJgNlmXQ8la2VeHB7w==", + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", "funding": [ { "type": "opencollective", diff --git a/package.json b/package.json index 58cbfd32c..c98598e08 100644 --- a/package.json +++ b/package.json @@ -153,7 +153,7 @@ "jest": "^29.7.0", "jest-environment-jsdom": "^30.0.5", "lint-staged": "^16.0.0", - "postcss": "^8.5.4", + "postcss": "^8.5.6", "prettier": "^3.6.2", "sass": "^1.87.0", "storybook": "^8.6.14", From dee9d4b8d9e10e96126079bd683982eb561fb210 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 8 Sep 2025 01:10:46 +0000 Subject: [PATCH 55/76] chore(deps): bump js-base64 from 3.7.7 to 3.7.8 Bumps [js-base64](https://github.com/dankogai/js-base64) from 3.7.7 to 3.7.8. - [Commits](https://github.com/dankogai/js-base64/compare/3.7.7...3.7.8) --- updated-dependencies: - dependency-name: js-base64 dependency-version: 3.7.8 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- package-lock.json | 8 ++++---- package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 9b007d935..a1b0b2e5d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -45,7 +45,7 @@ "firebase": "^11.10.0", "i18next-browser-languagedetector": "^8.1.0", "iso-country-currency": "^0.7.2", - "js-base64": "^3.7.7", + "js-base64": "^3.7.8", "js-cookie": "^3.0.5", "markdown-to-jsx": "^7.7.12", "moment": "^2.30.1", @@ -28789,9 +28789,9 @@ "license": "MIT" }, "node_modules/js-base64": { - "version": "3.7.7", - "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-3.7.7.tgz", - "integrity": "sha512-7rCnleh0z2CkXhH67J8K1Ytz0b2Y+yxTPL+/KOJoa20hfnVQ/3/T6W/KflYI4bRHRagNeXeU2bkNGI3v1oS/lw==", + "version": "3.7.8", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-3.7.8.tgz", + "integrity": "sha512-hNngCeKxIUQiEUN3GPJOkz4wF/YvdUdbNL9hsBcMQTkKzboD7T/q3OYOuuPZLUE6dBxSGpwhk5mwuDud7JVAow==", "license": "BSD-3-Clause" }, "node_modules/js-cookie": { diff --git a/package.json b/package.json index c98598e08..45de6e2b4 100644 --- a/package.json +++ b/package.json @@ -64,7 +64,7 @@ "firebase": "^11.10.0", "i18next-browser-languagedetector": "^8.1.0", "iso-country-currency": "^0.7.2", - "js-base64": "^3.7.7", + "js-base64": "^3.7.8", "js-cookie": "^3.0.5", "markdown-to-jsx": "^7.7.12", "moment": "^2.30.1", From 30aee8047818b96f59af353e2b8d85c4f03a8995 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 8 Sep 2025 01:11:37 +0000 Subject: [PATCH 56/76] chore(deps): bump @reown/appkit from 1.7.19 to 1.8.2 Bumps [@reown/appkit](https://github.com/reown-com/appkit) from 1.7.19 to 1.8.2. - [Release notes](https://github.com/reown-com/appkit/releases) - [Commits](https://github.com/reown-com/appkit/compare/@reown/appkit@1.7.19...@reown/appkit@1.8.2) --- updated-dependencies: - dependency-name: "@reown/appkit" dependency-version: 1.8.2 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- package-lock.json | 2459 ++++++++------------------------------------- package.json | 2 +- 2 files changed, 438 insertions(+), 2023 deletions(-) diff --git a/package-lock.json b/package-lock.json index a1b0b2e5d..be294f3c3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -30,7 +30,7 @@ "@mui/material": "^7.0.2", "@mui/x-date-pickers": "^8.2.0", "@reduxjs/toolkit": "^2.8.1", - "@reown/appkit": "^1.7.19", + "@reown/appkit": "^1.8.2", "@reown/appkit-adapter-wagmi": "^1.7.17", "@storybook/addon-designs": "^8.2.1", "@stripe/stripe-js": "^7.4.0", @@ -6650,6 +6650,15 @@ "url": "https://paulmillr.com/funding/" } }, + "node_modules/@phosphor-icons/webcomponents": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@phosphor-icons/webcomponents/-/webcomponents-2.1.5.tgz", + "integrity": "sha512-JcvQkZxvcX2jK+QCclm8+e8HXqtdFW9xV4/kk2aL9Y3dJA2oQVt+pzbv1orkumz3rfx4K9mn9fDoMr1He1yr7Q==", + "license": "MIT", + "dependencies": { + "lit": "^3" + } + }, "node_modules/@pkgjs/parseargs": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", @@ -7482,29 +7491,28 @@ } }, "node_modules/@reown/appkit": { - "version": "1.7.19", - "resolved": "https://registry.npmjs.org/@reown/appkit/-/appkit-1.7.19.tgz", - "integrity": "sha512-7nPCDpybFAFbzuBgPh0VCRqrTvm8jPbh6B2SC5poaPG69f12lwOK1vqUZd4Dw9zbaRQUJ0F2gfQyeFCFHE5h/Q==", + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/@reown/appkit/-/appkit-1.8.2.tgz", + "integrity": "sha512-nCFMGQX3+XHTmd8pkWtyGRj+INFgeg0sRYxLZKQktvFsiR98BFjP9DQIErIujdk2chRx5mX0gGc5s9OvaRJNyA==", "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { - "@reown/appkit-common": "1.7.19", - "@reown/appkit-controllers": "1.7.19", - "@reown/appkit-pay": "1.7.19", - "@reown/appkit-polyfills": "1.7.19", - "@reown/appkit-scaffold-ui": "1.7.19", - "@reown/appkit-ui": "1.7.19", - "@reown/appkit-utils": "1.7.19", - "@reown/appkit-wallet": "1.7.19", - "@walletconnect/universal-provider": "2.21.5", + "@reown/appkit-common": "1.8.2", + "@reown/appkit-controllers": "1.8.2", + "@reown/appkit-pay": "1.8.2", + "@reown/appkit-polyfills": "1.8.2", + "@reown/appkit-scaffold-ui": "1.8.2", + "@reown/appkit-ui": "1.8.2", + "@reown/appkit-utils": "1.8.2", + "@reown/appkit-wallet": "1.8.2", + "@walletconnect/universal-provider": "2.21.7", "bs58": "6.0.0", "semver": "7.7.2", "valtio": "2.1.5", - "viem": ">=2.32.0" + "viem": ">=2.33.3" }, "optionalDependencies": { - "@lit/react": "1.0.8", - "@reown/appkit-siwx": "1.7.19" + "@lit/react": "1.0.8" } }, "node_modules/@reown/appkit-adapter-wagmi": { @@ -8544,15 +8552,15 @@ } }, "node_modules/@reown/appkit-pay": { - "version": "1.7.19", - "resolved": "https://registry.npmjs.org/@reown/appkit-pay/-/appkit-pay-1.7.19.tgz", - "integrity": "sha512-fP1/GWAuNvbvBH2yuG2y0FXlonWXhFnh2FG5BlPubVQyiKZL3KVeAo8vJ41clbq61VSNsWCMxRygZKhy+YtZ7w==", + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/@reown/appkit-pay/-/appkit-pay-1.8.2.tgz", + "integrity": "sha512-8rBB/sNty9P4oKVgETFmUXh6iFfbr+UWmpN7TThtMAFXuAGevbHKIF4ZXNjvF63L5knpOF8elVNNmSXyxHpInA==", "license": "Apache-2.0", "dependencies": { - "@reown/appkit-common": "1.7.19", - "@reown/appkit-controllers": "1.7.19", - "@reown/appkit-ui": "1.7.19", - "@reown/appkit-utils": "1.7.19", + "@reown/appkit-common": "1.8.2", + "@reown/appkit-controllers": "1.8.2", + "@reown/appkit-ui": "1.8.2", + "@reown/appkit-utils": "1.8.2", "lit": "3.3.0", "valtio": "2.1.5" } @@ -8585,79 +8593,80 @@ } }, "node_modules/@reown/appkit-pay/node_modules/@reown/appkit-common": { - "version": "1.7.19", - "resolved": "https://registry.npmjs.org/@reown/appkit-common/-/appkit-common-1.7.19.tgz", - "integrity": "sha512-kP/NeQi44c1bwvizIxcNbSHg9mUbA03llWOiVFKiDmL2SQnBWgLoUiuRCDUEvb/Lx9Hjn6GJdMvdGkq2tmJ1rQ==", + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/@reown/appkit-common/-/appkit-common-1.8.2.tgz", + "integrity": "sha512-xlo1pRh1DkZfB7I1JkeC8ELlsM7ziSG/oJig1KgTsNZPQdYC9fADWY7vH/daUUkgS8QQbINc7HW8WAR1DkA+dw==", "license": "Apache-2.0", "dependencies": { "big.js": "6.2.2", "dayjs": "1.11.13", - "viem": ">=2.32.0" + "viem": ">=2.33.3" } }, "node_modules/@reown/appkit-pay/node_modules/@reown/appkit-controllers": { - "version": "1.7.19", - "resolved": "https://registry.npmjs.org/@reown/appkit-controllers/-/appkit-controllers-1.7.19.tgz", - "integrity": "sha512-U7LKxlrIbQMnH2GhOC5b/W2+nCjmUI0RhR9uFH2clg36y/nucZozV1E3NQQqz4kki+ZiiQb6PyxQW8wp/yhgCA==", + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/@reown/appkit-controllers/-/appkit-controllers-1.8.2.tgz", + "integrity": "sha512-ccGbuiKNceCmh8JxtcDFc115fosJ2abcSfDo4HVSSgew/4rPzqIsD/TPfBLgk2KOAi7RF4keC5mckHHIWfmoFw==", "license": "Apache-2.0", "dependencies": { - "@reown/appkit-common": "1.7.19", - "@reown/appkit-wallet": "1.7.19", - "@walletconnect/universal-provider": "2.21.5", + "@reown/appkit-common": "1.8.2", + "@reown/appkit-wallet": "1.8.2", + "@walletconnect/universal-provider": "2.21.7", "valtio": "2.1.5", - "viem": ">=2.32.0" + "viem": ">=2.33.3" } }, "node_modules/@reown/appkit-pay/node_modules/@reown/appkit-polyfills": { - "version": "1.7.19", - "resolved": "https://registry.npmjs.org/@reown/appkit-polyfills/-/appkit-polyfills-1.7.19.tgz", - "integrity": "sha512-TfjkZPaQ2l0LG1DaqlQSXr2nJAwW6TlT65OtlDO4KpJ7MbqGpeVp3ChLsijowKzoet/hire4k2wyL68QdOvYdA==", + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/@reown/appkit-polyfills/-/appkit-polyfills-1.8.2.tgz", + "integrity": "sha512-D1npLFY3q/X6qh241lh47DfL1EaPpMEeVtV7c2HFdmitUgXqc2BgH7mhMfpI3UgaT42+eP5+W+KanZwwyraNPw==", "license": "Apache-2.0", "dependencies": { "buffer": "6.0.3" } }, "node_modules/@reown/appkit-pay/node_modules/@reown/appkit-ui": { - "version": "1.7.19", - "resolved": "https://registry.npmjs.org/@reown/appkit-ui/-/appkit-ui-1.7.19.tgz", - "integrity": "sha512-hnFtiky1KMaejzO0HTCw0kdjis0j/+OswOcQ4XrWD9CzJmmgjU6/u3vx7dEnv0iLKSRothNz1QbSHhZtDmKVRQ==", + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/@reown/appkit-ui/-/appkit-ui-1.8.2.tgz", + "integrity": "sha512-tdYFBmFLIQzqO0QYo6KJTWJ8UZ5yyqmQ4+YnD1PL4pIMPAaFcVB9ZP0ESSX1eX+bGKkBc+I/rbwKgyqTIJLV9Q==", "license": "Apache-2.0", "dependencies": { - "@reown/appkit-common": "1.7.19", - "@reown/appkit-controllers": "1.7.19", - "@reown/appkit-wallet": "1.7.19", + "@phosphor-icons/webcomponents": "2.1.5", + "@reown/appkit-common": "1.8.2", + "@reown/appkit-controllers": "1.8.2", + "@reown/appkit-wallet": "1.8.2", "lit": "3.3.0", "qrcode": "1.5.3" } }, "node_modules/@reown/appkit-pay/node_modules/@reown/appkit-utils": { - "version": "1.7.19", - "resolved": "https://registry.npmjs.org/@reown/appkit-utils/-/appkit-utils-1.7.19.tgz", - "integrity": "sha512-Tac/jptivMfugZb5HtQzT6Jkrbv/9ljbYUI8Tgel+xN4GlhDpc7iTJmDfd9lWi+HUkFB8p6iqOVnghkfrfWtvg==", + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/@reown/appkit-utils/-/appkit-utils-1.8.2.tgz", + "integrity": "sha512-MBhZBCSMNeP6zQ/NVDqEK4DZttUMLEtO/G5WK4Yhzvzra54Z5VIzTPg5bnNe+ntAJ19AL2P7dh8RjaazdMN7Aw==", "license": "Apache-2.0", "dependencies": { - "@reown/appkit-common": "1.7.19", - "@reown/appkit-controllers": "1.7.19", - "@reown/appkit-polyfills": "1.7.19", - "@reown/appkit-wallet": "1.7.19", + "@reown/appkit-common": "1.8.2", + "@reown/appkit-controllers": "1.8.2", + "@reown/appkit-polyfills": "1.8.2", + "@reown/appkit-wallet": "1.8.2", "@wallet-standard/wallet": "1.1.0", "@walletconnect/logger": "2.1.2", - "@walletconnect/universal-provider": "2.21.5", + "@walletconnect/universal-provider": "2.21.7", "valtio": "2.1.5", - "viem": ">=2.32.0" + "viem": ">=2.33.3" }, "peerDependencies": { "valtio": "2.1.5" } }, "node_modules/@reown/appkit-pay/node_modules/@reown/appkit-wallet": { - "version": "1.7.19", - "resolved": "https://registry.npmjs.org/@reown/appkit-wallet/-/appkit-wallet-1.7.19.tgz", - "integrity": "sha512-gmwfFXDKX63HHMKZQU6Rxqgz9oaiXtOMrhhyaNIdyB1IKrtr/Bf/F8ytoG/+pNG0eRkXP03Cr1q15OuWISEzMw==", + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/@reown/appkit-wallet/-/appkit-wallet-1.8.2.tgz", + "integrity": "sha512-cENbBX4WLwkLpIXwH6w+Ys9gmPVnQtGz59/UaO/+nsCxpy+yJcH1yjXyktiLYUBq64ZPGBluYYXg2zJgSCL+nA==", "license": "Apache-2.0", "dependencies": { - "@reown/appkit-common": "1.7.19", - "@reown/appkit-polyfills": "1.7.19", + "@reown/appkit-common": "1.8.2", + "@reown/appkit-polyfills": "1.8.2", "@walletconnect/logger": "2.1.2", "zod": "3.22.4" } @@ -8690,9 +8699,9 @@ } }, "node_modules/@reown/appkit-pay/node_modules/@walletconnect/core": { - "version": "2.21.5", - "resolved": "https://registry.npmjs.org/@walletconnect/core/-/core-2.21.5.tgz", - "integrity": "sha512-CxGbio1TdCkou/TYn8X6Ih1mUX3UtFTk+t618/cIrT3VX5IjQW09n9I/pVafr7bQbBtm9/ATr7ugUEMrLu5snA==", + "version": "2.21.7", + "resolved": "https://registry.npmjs.org/@walletconnect/core/-/core-2.21.7.tgz", + "integrity": "sha512-q/Au5Ne3g4R+q4GvHR5cvRd3+ha00QZCZiCs058lmy+eDbiZd0YsautvTPJ5a2guD6UaS1k/w5e1JHgixdcgLA==", "license": "Apache-2.0", "dependencies": { "@walletconnect/heartbeat": "1.2.2", @@ -8706,8 +8715,8 @@ "@walletconnect/relay-auth": "1.1.0", "@walletconnect/safe-json": "1.0.2", "@walletconnect/time": "1.0.2", - "@walletconnect/types": "2.21.5", - "@walletconnect/utils": "2.21.5", + "@walletconnect/types": "2.21.7", + "@walletconnect/utils": "2.21.7", "@walletconnect/window-getters": "1.0.1", "es-toolkit": "1.39.3", "events": "3.3.0", @@ -8737,26 +8746,26 @@ } }, "node_modules/@reown/appkit-pay/node_modules/@walletconnect/sign-client": { - "version": "2.21.5", - "resolved": "https://registry.npmjs.org/@walletconnect/sign-client/-/sign-client-2.21.5.tgz", - "integrity": "sha512-IAs/IqmE1HVL9EsvqkNRU4NeAYe//h9NwqKi7ToKYZv4jhcC3BBemUD1r8iQJSTHMhO41EKn1G9/DiBln3ZiwQ==", + "version": "2.21.7", + "resolved": "https://registry.npmjs.org/@walletconnect/sign-client/-/sign-client-2.21.7.tgz", + "integrity": "sha512-9k/JEl9copR6nXRhqnmzWz2Zk1hiWysH+o6bp6Cqo8TgDUrZoMLBZMZ6qbo+2HLI54V02kKf0Vg8M81nNFOpjQ==", "license": "Apache-2.0", "dependencies": { - "@walletconnect/core": "2.21.5", + "@walletconnect/core": "2.21.7", "@walletconnect/events": "1.0.1", "@walletconnect/heartbeat": "1.2.2", "@walletconnect/jsonrpc-utils": "1.0.8", "@walletconnect/logger": "2.1.2", "@walletconnect/time": "1.0.2", - "@walletconnect/types": "2.21.5", - "@walletconnect/utils": "2.21.5", + "@walletconnect/types": "2.21.7", + "@walletconnect/utils": "2.21.7", "events": "3.3.0" } }, "node_modules/@reown/appkit-pay/node_modules/@walletconnect/types": { - "version": "2.21.5", - "resolved": "https://registry.npmjs.org/@walletconnect/types/-/types-2.21.5.tgz", - "integrity": "sha512-kpTXbenKeMdaz6mgMN/jKaHHbu6mdY3kyyrddzE/mthOd2KLACVrZr7hrTf+Fg2coPVen5d1KKyQjyECEdzOCw==", + "version": "2.21.7", + "resolved": "https://registry.npmjs.org/@walletconnect/types/-/types-2.21.7.tgz", + "integrity": "sha512-kyGnFje4Iq+XGkZZcSoAIrJWBE4BeghVW4O7n9e1MhUyeOOtO55M/kcqceNGYrvwjHvdN+Kf+aoLnKC0zKlpbQ==", "license": "Apache-2.0", "dependencies": { "@walletconnect/events": "1.0.1", @@ -8768,9 +8777,9 @@ } }, "node_modules/@reown/appkit-pay/node_modules/@walletconnect/universal-provider": { - "version": "2.21.5", - "resolved": "https://registry.npmjs.org/@walletconnect/universal-provider/-/universal-provider-2.21.5.tgz", - "integrity": "sha512-SMXGGXyj78c8Ru2f665ZFZU24phn0yZyCP5Ej7goxVQxABwqWKM/odj3j/IxZv+hxA8yU13yxaubgVefnereqw==", + "version": "2.21.7", + "resolved": "https://registry.npmjs.org/@walletconnect/universal-provider/-/universal-provider-2.21.7.tgz", + "integrity": "sha512-8PB+vA5VuR9PBqt5Y0xj4JC2doYNPlXLGQt3wJORVF9QC227Mm/8R1CAKpmneeLrUH02LkSRwx+wnN/pPnDiQA==", "license": "Apache-2.0", "dependencies": { "@walletconnect/events": "1.0.1", @@ -8780,17 +8789,17 @@ "@walletconnect/jsonrpc-utils": "1.0.8", "@walletconnect/keyvaluestorage": "1.1.1", "@walletconnect/logger": "2.1.2", - "@walletconnect/sign-client": "2.21.5", - "@walletconnect/types": "2.21.5", - "@walletconnect/utils": "2.21.5", + "@walletconnect/sign-client": "2.21.7", + "@walletconnect/types": "2.21.7", + "@walletconnect/utils": "2.21.7", "es-toolkit": "1.39.3", "events": "3.3.0" } }, "node_modules/@reown/appkit-pay/node_modules/@walletconnect/utils": { - "version": "2.21.5", - "resolved": "https://registry.npmjs.org/@walletconnect/utils/-/utils-2.21.5.tgz", - "integrity": "sha512-RSPSxPvGMuvfGhd5au1cf9cmHB/KVVLFotJR9ltisjFABGtH2215U5oaVp+a7W18QX37aemejRkvacqOELVySA==", + "version": "2.21.7", + "resolved": "https://registry.npmjs.org/@walletconnect/utils/-/utils-2.21.7.tgz", + "integrity": "sha512-qyaclTgcFf9AwVuoV8CLLg8wfH3nX7yZdpylNkDqCpS7wawQL9zmFFTaGgma8sQrCsd3Sd9jUIymcpRvCJnSTw==", "license": "Apache-2.0", "dependencies": { "@msgpack/msgpack": "3.1.2", @@ -8804,7 +8813,7 @@ "@walletconnect/relay-auth": "1.1.0", "@walletconnect/safe-json": "1.0.2", "@walletconnect/time": "1.0.2", - "@walletconnect/types": "2.21.5", + "@walletconnect/types": "2.21.7", "@walletconnect/window-getters": "1.0.1", "@walletconnect/window-metadata": "1.0.1", "blakejs": "1.2.1", @@ -8860,17 +8869,6 @@ "url": "https://paulmillr.com/funding/" } }, - "node_modules/@reown/appkit-pay/node_modules/cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", - "license": "ISC", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" - } - }, "node_modules/@reown/appkit-pay/node_modules/es-toolkit": { "version": "1.39.3", "resolved": "https://registry.npmjs.org/es-toolkit/-/es-toolkit-1.39.3.tgz", @@ -8881,31 +8879,6 @@ "benchmarks" ] }, - "node_modules/@reown/appkit-pay/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "license": "MIT", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@reown/appkit-pay/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "license": "MIT", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/@reown/appkit-pay/node_modules/lru-cache": { "version": "10.4.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", @@ -8942,69 +8915,12 @@ } } }, - "node_modules/@reown/appkit-pay/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@reown/appkit-pay/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "license": "MIT", - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/@reown/appkit-pay/node_modules/proxy-compare": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/proxy-compare/-/proxy-compare-3.0.1.tgz", "integrity": "sha512-V9plBAt3qjMlS1+nC8771KNf6oJ12gExvaxnNzN/9yVRLdTv/lc+oJlnSzrdYDAvBfTStPCoiaCOTmTs0adv7Q==", "license": "MIT" }, - "node_modules/@reown/appkit-pay/node_modules/qrcode": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.5.3.tgz", - "integrity": "sha512-puyri6ApkEHYiVl4CFzo1tDkAZ+ATcnbJrJ6RiBM1Fhctdn/ix9MTE3hRph33omisEbC/2fcfemsseiKgBPKZg==", - "license": "MIT", - "dependencies": { - "dijkstrajs": "^1.0.1", - "encode-utf8": "^1.0.3", - "pngjs": "^5.0.0", - "yargs": "^15.3.1" - }, - "bin": { - "qrcode": "bin/qrcode" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/@reown/appkit-pay/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/@reown/appkit-pay/node_modules/uint8arrays": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.1.1.tgz", @@ -9015,17 +8931,17 @@ } }, "node_modules/@reown/appkit-pay/node_modules/unstorage": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.16.1.tgz", - "integrity": "sha512-gdpZ3guLDhz+zWIlYP1UwQ259tG5T5vYRzDaHMkQ1bBY1SQPutvZnrRjTFaWUUpseErJIgAZS51h6NOcZVZiqQ==", + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.17.1.tgz", + "integrity": "sha512-KKGwRTT0iVBCErKemkJCLs7JdxNVfqTPc/85ae1XES0+bsHbc/sFBfVi5kJp156cc51BHinIH2l3k0EZ24vOBQ==", "license": "MIT", "dependencies": { "anymatch": "^3.1.3", "chokidar": "^4.0.3", "destr": "^2.0.5", - "h3": "^1.15.3", + "h3": "^1.15.4", "lru-cache": "^10.4.3", - "node-fetch-native": "^1.6.6", + "node-fetch-native": "^1.6.7", "ofetch": "^1.4.1", "ufo": "^1.6.1" }, @@ -9042,6 +8958,7 @@ "@planetscale/database": "^1.19.0", "@upstash/redis": "^1.34.3", "@vercel/blob": ">=0.27.1", + "@vercel/functions": "^2.2.12 || ^3.0.0", "@vercel/kv": "^1.0.1", "aws4fetch": "^1.0.20", "db0": ">=0.2.1", @@ -9086,6 +9003,9 @@ "@vercel/blob": { "optional": true }, + "@vercel/functions": { + "optional": true + }, "@vercel/kv": { "optional": true }, @@ -9130,20 +9050,6 @@ } } }, - "node_modules/@reown/appkit-pay/node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/@reown/appkit-pay/node_modules/ws": { "version": "8.18.2", "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.2.tgz", @@ -9165,47 +9071,6 @@ } } }, - "node_modules/@reown/appkit-pay/node_modules/y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "license": "ISC" - }, - "node_modules/@reown/appkit-pay/node_modules/yargs": { - "version": "15.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", - "license": "MIT", - "dependencies": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^18.1.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@reown/appkit-pay/node_modules/yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "license": "ISC", - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/@reown/appkit-polyfills": { "version": "1.7.17", "resolved": "https://registry.npmjs.org/@reown/appkit-polyfills/-/appkit-polyfills-1.7.17.tgz", @@ -9229,33 +9094,44 @@ "lit": "3.3.0" } }, - "node_modules/@reown/appkit-siwx": { - "version": "1.7.19", - "resolved": "https://registry.npmjs.org/@reown/appkit-siwx/-/appkit-siwx-1.7.19.tgz", - "integrity": "sha512-6ByfoM86yZgPoWaRbYh6mwiUDR9BHKun7neeANfPQw7oY32+f4I3YUTc4MF1VQcx5EJOaDV6HHNl2VSkXX54pg==", + "node_modules/@reown/appkit-ui": { + "version": "1.7.17", + "resolved": "https://registry.npmjs.org/@reown/appkit-ui/-/appkit-ui-1.7.17.tgz", + "integrity": "sha512-7lscJjtFZIfdcUv5zAsmgiFG2dMziQE0IfqY3U/H5qhnGW8v4ITcTi1gNS3A4lQrNDbcA083LecfVdyKnTdi1A==", "license": "Apache-2.0", - "optional": true, "dependencies": { - "@reown/appkit-common": "1.7.19", - "@reown/appkit-controllers": "1.7.19", - "@reown/appkit-scaffold-ui": "1.7.19", - "@reown/appkit-ui": "1.7.19", - "@reown/appkit-utils": "1.7.19", - "bip322-js": "2.0.0", - "bs58": "6.0.0", - "tweetnacl": "1.0.3", - "viem": "2.32.0" + "@reown/appkit-common": "1.7.17", + "@reown/appkit-controllers": "1.7.17", + "@reown/appkit-wallet": "1.7.17", + "lit": "3.3.0", + "qrcode": "1.5.3" + } + }, + "node_modules/@reown/appkit-utils": { + "version": "1.7.17", + "resolved": "https://registry.npmjs.org/@reown/appkit-utils/-/appkit-utils-1.7.17.tgz", + "integrity": "sha512-QWzHTmSDFy90Bp5pUUQASzcjnJXPiEvasJV68j3PZifenTPDCfFW+VsiHduWNodTHAA/rZ12O3uBQE+stM3xmQ==", + "license": "Apache-2.0", + "dependencies": { + "@reown/appkit-common": "1.7.17", + "@reown/appkit-controllers": "1.7.17", + "@reown/appkit-polyfills": "1.7.17", + "@reown/appkit-wallet": "1.7.17", + "@wallet-standard/wallet": "1.1.0", + "@walletconnect/logger": "2.1.2", + "@walletconnect/universal-provider": "2.21.5", + "valtio": "2.1.5", + "viem": ">=2.32.0" }, "peerDependencies": { - "lit": "3.3.0" + "valtio": "2.1.5" } }, - "node_modules/@reown/appkit-siwx/node_modules/@noble/ciphers": { + "node_modules/@reown/appkit-utils/node_modules/@noble/ciphers": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/@noble/ciphers/-/ciphers-1.3.0.tgz", "integrity": "sha512-2I0gnIVPtfnMw9ee9h1dJG7tp81+8Ob3OJb3Mv37rx5L40/b0i7djjCVvGOVqc9AEIQyvyu1i6ypKdFw8R8gQw==", "license": "MIT", - "optional": true, "engines": { "node": "^14.21.3 || >=16" }, @@ -9263,12 +9139,11 @@ "url": "https://paulmillr.com/funding/" } }, - "node_modules/@reown/appkit-siwx/node_modules/@noble/curves": { + "node_modules/@reown/appkit-utils/node_modules/@noble/curves": { "version": "1.9.2", "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.9.2.tgz", "integrity": "sha512-HxngEd2XUcg9xi20JkwlLCtYwfoFw4JGkuZpT+WlsPD4gB/cxkvTD8fSsoAnphGZhFdZYKeQIPCuFlWPm1uE0g==", "license": "MIT", - "optional": true, "dependencies": { "@noble/hashes": "1.8.0" }, @@ -9279,111 +9154,11 @@ "url": "https://paulmillr.com/funding/" } }, - "node_modules/@reown/appkit-siwx/node_modules/@reown/appkit-common": { - "version": "1.7.19", - "resolved": "https://registry.npmjs.org/@reown/appkit-common/-/appkit-common-1.7.19.tgz", - "integrity": "sha512-kP/NeQi44c1bwvizIxcNbSHg9mUbA03llWOiVFKiDmL2SQnBWgLoUiuRCDUEvb/Lx9Hjn6GJdMvdGkq2tmJ1rQ==", - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "big.js": "6.2.2", - "dayjs": "1.11.13", - "viem": ">=2.32.0" - } - }, - "node_modules/@reown/appkit-siwx/node_modules/@reown/appkit-controllers": { - "version": "1.7.19", - "resolved": "https://registry.npmjs.org/@reown/appkit-controllers/-/appkit-controllers-1.7.19.tgz", - "integrity": "sha512-U7LKxlrIbQMnH2GhOC5b/W2+nCjmUI0RhR9uFH2clg36y/nucZozV1E3NQQqz4kki+ZiiQb6PyxQW8wp/yhgCA==", - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "@reown/appkit-common": "1.7.19", - "@reown/appkit-wallet": "1.7.19", - "@walletconnect/universal-provider": "2.21.5", - "valtio": "2.1.5", - "viem": ">=2.32.0" - } - }, - "node_modules/@reown/appkit-siwx/node_modules/@reown/appkit-polyfills": { - "version": "1.7.19", - "resolved": "https://registry.npmjs.org/@reown/appkit-polyfills/-/appkit-polyfills-1.7.19.tgz", - "integrity": "sha512-TfjkZPaQ2l0LG1DaqlQSXr2nJAwW6TlT65OtlDO4KpJ7MbqGpeVp3ChLsijowKzoet/hire4k2wyL68QdOvYdA==", - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "buffer": "6.0.3" - } - }, - "node_modules/@reown/appkit-siwx/node_modules/@reown/appkit-scaffold-ui": { - "version": "1.7.19", - "resolved": "https://registry.npmjs.org/@reown/appkit-scaffold-ui/-/appkit-scaffold-ui-1.7.19.tgz", - "integrity": "sha512-X6Op8kPvkqFMzOzP7ocFHwHUKDcElVG8CnVt3BFUNVFqWWpQvxMb1+65OTaF9zFcLtRBuuSVz4EWON3i/DaBxQ==", - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "@reown/appkit-common": "1.7.19", - "@reown/appkit-controllers": "1.7.19", - "@reown/appkit-ui": "1.7.19", - "@reown/appkit-utils": "1.7.19", - "@reown/appkit-wallet": "1.7.19", - "lit": "3.3.0" - } - }, - "node_modules/@reown/appkit-siwx/node_modules/@reown/appkit-ui": { - "version": "1.7.19", - "resolved": "https://registry.npmjs.org/@reown/appkit-ui/-/appkit-ui-1.7.19.tgz", - "integrity": "sha512-hnFtiky1KMaejzO0HTCw0kdjis0j/+OswOcQ4XrWD9CzJmmgjU6/u3vx7dEnv0iLKSRothNz1QbSHhZtDmKVRQ==", - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "@reown/appkit-common": "1.7.19", - "@reown/appkit-controllers": "1.7.19", - "@reown/appkit-wallet": "1.7.19", - "lit": "3.3.0", - "qrcode": "1.5.3" - } - }, - "node_modules/@reown/appkit-siwx/node_modules/@reown/appkit-utils": { - "version": "1.7.19", - "resolved": "https://registry.npmjs.org/@reown/appkit-utils/-/appkit-utils-1.7.19.tgz", - "integrity": "sha512-Tac/jptivMfugZb5HtQzT6Jkrbv/9ljbYUI8Tgel+xN4GlhDpc7iTJmDfd9lWi+HUkFB8p6iqOVnghkfrfWtvg==", - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "@reown/appkit-common": "1.7.19", - "@reown/appkit-controllers": "1.7.19", - "@reown/appkit-polyfills": "1.7.19", - "@reown/appkit-wallet": "1.7.19", - "@wallet-standard/wallet": "1.1.0", - "@walletconnect/logger": "2.1.2", - "@walletconnect/universal-provider": "2.21.5", - "valtio": "2.1.5", - "viem": ">=2.32.0" - }, - "peerDependencies": { - "valtio": "2.1.5" - } - }, - "node_modules/@reown/appkit-siwx/node_modules/@reown/appkit-wallet": { - "version": "1.7.19", - "resolved": "https://registry.npmjs.org/@reown/appkit-wallet/-/appkit-wallet-1.7.19.tgz", - "integrity": "sha512-gmwfFXDKX63HHMKZQU6Rxqgz9oaiXtOMrhhyaNIdyB1IKrtr/Bf/F8ytoG/+pNG0eRkXP03Cr1q15OuWISEzMw==", - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "@reown/appkit-common": "1.7.19", - "@reown/appkit-polyfills": "1.7.19", - "@walletconnect/logger": "2.1.2", - "zod": "3.22.4" - } - }, - "node_modules/@reown/appkit-siwx/node_modules/@scure/bip32": { + "node_modules/@reown/appkit-utils/node_modules/@scure/bip32": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.7.0.tgz", "integrity": "sha512-E4FFX/N3f4B80AKWp5dP6ow+flD1LQZo/w8UnLGYZO674jS6YnYeepycOOksv+vLPSpgN35wgKgy+ybfTb2SMw==", "license": "MIT", - "optional": true, "dependencies": { "@noble/curves": "~1.9.0", "@noble/hashes": "~1.8.0", @@ -9393,12 +9168,11 @@ "url": "https://paulmillr.com/funding/" } }, - "node_modules/@reown/appkit-siwx/node_modules/@scure/bip39": { + "node_modules/@reown/appkit-utils/node_modules/@scure/bip39": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.6.0.tgz", "integrity": "sha512-+lF0BbLiJNwVlev4eKelw1WWLaiKXw7sSl8T6FvBlWkdX+94aGJ4o8XjUdlyhTCjd8c+B3KT3JfS8P0bLRNU6A==", "license": "MIT", - "optional": true, "dependencies": { "@noble/hashes": "~1.8.0", "@scure/base": "~1.2.5" @@ -9407,817 +9181,7 @@ "url": "https://paulmillr.com/funding/" } }, - "node_modules/@reown/appkit-siwx/node_modules/@walletconnect/core": { - "version": "2.21.5", - "resolved": "https://registry.npmjs.org/@walletconnect/core/-/core-2.21.5.tgz", - "integrity": "sha512-CxGbio1TdCkou/TYn8X6Ih1mUX3UtFTk+t618/cIrT3VX5IjQW09n9I/pVafr7bQbBtm9/ATr7ugUEMrLu5snA==", - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "@walletconnect/heartbeat": "1.2.2", - "@walletconnect/jsonrpc-provider": "1.0.14", - "@walletconnect/jsonrpc-types": "1.0.4", - "@walletconnect/jsonrpc-utils": "1.0.8", - "@walletconnect/jsonrpc-ws-connection": "1.0.16", - "@walletconnect/keyvaluestorage": "1.1.1", - "@walletconnect/logger": "2.1.2", - "@walletconnect/relay-api": "1.0.11", - "@walletconnect/relay-auth": "1.1.0", - "@walletconnect/safe-json": "1.0.2", - "@walletconnect/time": "1.0.2", - "@walletconnect/types": "2.21.5", - "@walletconnect/utils": "2.21.5", - "@walletconnect/window-getters": "1.0.1", - "es-toolkit": "1.39.3", - "events": "3.3.0", - "uint8arrays": "3.1.1" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@reown/appkit-siwx/node_modules/@walletconnect/keyvaluestorage": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@walletconnect/keyvaluestorage/-/keyvaluestorage-1.1.1.tgz", - "integrity": "sha512-V7ZQq2+mSxAq7MrRqDxanTzu2RcElfK1PfNYiaVnJgJ7Q7G7hTVwF8voIBx92qsRyGHZihrwNPHuZd1aKkd0rA==", - "license": "MIT", - "optional": true, - "dependencies": { - "@walletconnect/safe-json": "^1.0.1", - "idb-keyval": "^6.2.1", - "unstorage": "^1.9.0" - }, - "peerDependencies": { - "@react-native-async-storage/async-storage": "1.x" - }, - "peerDependenciesMeta": { - "@react-native-async-storage/async-storage": { - "optional": true - } - } - }, - "node_modules/@reown/appkit-siwx/node_modules/@walletconnect/sign-client": { - "version": "2.21.5", - "resolved": "https://registry.npmjs.org/@walletconnect/sign-client/-/sign-client-2.21.5.tgz", - "integrity": "sha512-IAs/IqmE1HVL9EsvqkNRU4NeAYe//h9NwqKi7ToKYZv4jhcC3BBemUD1r8iQJSTHMhO41EKn1G9/DiBln3ZiwQ==", - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "@walletconnect/core": "2.21.5", - "@walletconnect/events": "1.0.1", - "@walletconnect/heartbeat": "1.2.2", - "@walletconnect/jsonrpc-utils": "1.0.8", - "@walletconnect/logger": "2.1.2", - "@walletconnect/time": "1.0.2", - "@walletconnect/types": "2.21.5", - "@walletconnect/utils": "2.21.5", - "events": "3.3.0" - } - }, - "node_modules/@reown/appkit-siwx/node_modules/@walletconnect/types": { - "version": "2.21.5", - "resolved": "https://registry.npmjs.org/@walletconnect/types/-/types-2.21.5.tgz", - "integrity": "sha512-kpTXbenKeMdaz6mgMN/jKaHHbu6mdY3kyyrddzE/mthOd2KLACVrZr7hrTf+Fg2coPVen5d1KKyQjyECEdzOCw==", - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "@walletconnect/events": "1.0.1", - "@walletconnect/heartbeat": "1.2.2", - "@walletconnect/jsonrpc-types": "1.0.4", - "@walletconnect/keyvaluestorage": "1.1.1", - "@walletconnect/logger": "2.1.2", - "events": "3.3.0" - } - }, - "node_modules/@reown/appkit-siwx/node_modules/@walletconnect/universal-provider": { - "version": "2.21.5", - "resolved": "https://registry.npmjs.org/@walletconnect/universal-provider/-/universal-provider-2.21.5.tgz", - "integrity": "sha512-SMXGGXyj78c8Ru2f665ZFZU24phn0yZyCP5Ej7goxVQxABwqWKM/odj3j/IxZv+hxA8yU13yxaubgVefnereqw==", - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "@walletconnect/events": "1.0.1", - "@walletconnect/jsonrpc-http-connection": "1.0.8", - "@walletconnect/jsonrpc-provider": "1.0.14", - "@walletconnect/jsonrpc-types": "1.0.4", - "@walletconnect/jsonrpc-utils": "1.0.8", - "@walletconnect/keyvaluestorage": "1.1.1", - "@walletconnect/logger": "2.1.2", - "@walletconnect/sign-client": "2.21.5", - "@walletconnect/types": "2.21.5", - "@walletconnect/utils": "2.21.5", - "es-toolkit": "1.39.3", - "events": "3.3.0" - } - }, - "node_modules/@reown/appkit-siwx/node_modules/@walletconnect/utils": { - "version": "2.21.5", - "resolved": "https://registry.npmjs.org/@walletconnect/utils/-/utils-2.21.5.tgz", - "integrity": "sha512-RSPSxPvGMuvfGhd5au1cf9cmHB/KVVLFotJR9ltisjFABGtH2215U5oaVp+a7W18QX37aemejRkvacqOELVySA==", - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "@msgpack/msgpack": "3.1.2", - "@noble/ciphers": "1.3.0", - "@noble/curves": "1.9.2", - "@noble/hashes": "1.8.0", - "@scure/base": "1.2.6", - "@walletconnect/jsonrpc-utils": "1.0.8", - "@walletconnect/keyvaluestorage": "1.1.1", - "@walletconnect/relay-api": "1.0.11", - "@walletconnect/relay-auth": "1.1.0", - "@walletconnect/safe-json": "1.0.2", - "@walletconnect/time": "1.0.2", - "@walletconnect/types": "2.21.5", - "@walletconnect/window-getters": "1.0.1", - "@walletconnect/window-metadata": "1.0.1", - "blakejs": "1.2.1", - "bs58": "6.0.0", - "detect-browser": "5.3.0", - "query-string": "7.1.3", - "uint8arrays": "3.1.1", - "viem": "2.31.0" - } - }, - "node_modules/@reown/appkit-siwx/node_modules/@walletconnect/utils/node_modules/ox": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/ox/-/ox-0.7.1.tgz", - "integrity": "sha512-+k9fY9PRNuAMHRFIUbiK9Nt5seYHHzSQs9Bj+iMETcGtlpS7SmBzcGSVUQO3+nqGLEiNK4598pHNFlVRaZbRsg==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/wevm" - } - ], - "license": "MIT", - "optional": true, - "dependencies": { - "@adraffy/ens-normalize": "^1.10.1", - "@noble/ciphers": "^1.3.0", - "@noble/curves": "^1.6.0", - "@noble/hashes": "^1.5.0", - "@scure/bip32": "^1.5.0", - "@scure/bip39": "^1.4.0", - "abitype": "^1.0.6", - "eventemitter3": "5.0.1" - }, - "peerDependencies": { - "typescript": ">=5.4.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@reown/appkit-siwx/node_modules/@walletconnect/utils/node_modules/viem": { - "version": "2.31.0", - "resolved": "https://registry.npmjs.org/viem/-/viem-2.31.0.tgz", - "integrity": "sha512-U7OMQ6yqK+bRbEIarf2vqxL7unSEQvNxvML/1zG7suAmKuJmipqdVTVJGKBCJiYsm/EremyO2FS4dHIPpGv+eA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/wevm" - } - ], - "license": "MIT", - "optional": true, - "dependencies": { - "@noble/curves": "1.9.1", - "@noble/hashes": "1.8.0", - "@scure/bip32": "1.7.0", - "@scure/bip39": "1.6.0", - "abitype": "1.0.8", - "isows": "1.0.7", - "ox": "0.7.1", - "ws": "8.18.2" - }, - "peerDependencies": { - "typescript": ">=5.0.4" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@reown/appkit-siwx/node_modules/@walletconnect/utils/node_modules/viem/node_modules/@noble/curves": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.9.1.tgz", - "integrity": "sha512-k11yZxZg+t+gWvBbIswW0yoJlu8cHOC7dhunwOzoWH/mXGBiYyR4YY6hAEK/3EUs4UpB8la1RfdRpeGsFHkWsA==", - "license": "MIT", - "optional": true, - "dependencies": { - "@noble/hashes": "1.8.0" - }, - "engines": { - "node": "^14.21.3 || >=16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@reown/appkit-siwx/node_modules/cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", - "license": "ISC", - "optional": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" - } - }, - "node_modules/@reown/appkit-siwx/node_modules/es-toolkit": { - "version": "1.39.3", - "resolved": "https://registry.npmjs.org/es-toolkit/-/es-toolkit-1.39.3.tgz", - "integrity": "sha512-Qb/TCFCldgOy8lZ5uC7nLGdqJwSabkQiYQShmw4jyiPk1pZzaYWTwaYKYP7EgLccWYgZocMrtItrwh683voaww==", - "license": "MIT", - "optional": true, - "workspaces": [ - "docs", - "benchmarks" - ] - }, - "node_modules/@reown/appkit-siwx/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "license": "MIT", - "optional": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@reown/appkit-siwx/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "license": "MIT", - "optional": true, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@reown/appkit-siwx/node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "license": "ISC", - "optional": true - }, - "node_modules/@reown/appkit-siwx/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "license": "MIT", - "optional": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@reown/appkit-siwx/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "license": "MIT", - "optional": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@reown/appkit-siwx/node_modules/proxy-compare": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/proxy-compare/-/proxy-compare-3.0.1.tgz", - "integrity": "sha512-V9plBAt3qjMlS1+nC8771KNf6oJ12gExvaxnNzN/9yVRLdTv/lc+oJlnSzrdYDAvBfTStPCoiaCOTmTs0adv7Q==", - "license": "MIT", - "optional": true - }, - "node_modules/@reown/appkit-siwx/node_modules/qrcode": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.5.3.tgz", - "integrity": "sha512-puyri6ApkEHYiVl4CFzo1tDkAZ+ATcnbJrJ6RiBM1Fhctdn/ix9MTE3hRph33omisEbC/2fcfemsseiKgBPKZg==", - "license": "MIT", - "optional": true, - "dependencies": { - "dijkstrajs": "^1.0.1", - "encode-utf8": "^1.0.3", - "pngjs": "^5.0.0", - "yargs": "^15.3.1" - }, - "bin": { - "qrcode": "bin/qrcode" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/@reown/appkit-siwx/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "license": "MIT", - "optional": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@reown/appkit-siwx/node_modules/uint8arrays": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.1.1.tgz", - "integrity": "sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg==", - "license": "MIT", - "optional": true, - "dependencies": { - "multiformats": "^9.4.2" - } - }, - "node_modules/@reown/appkit-siwx/node_modules/unstorage": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.16.1.tgz", - "integrity": "sha512-gdpZ3guLDhz+zWIlYP1UwQ259tG5T5vYRzDaHMkQ1bBY1SQPutvZnrRjTFaWUUpseErJIgAZS51h6NOcZVZiqQ==", - "license": "MIT", - "optional": true, - "dependencies": { - "anymatch": "^3.1.3", - "chokidar": "^4.0.3", - "destr": "^2.0.5", - "h3": "^1.15.3", - "lru-cache": "^10.4.3", - "node-fetch-native": "^1.6.6", - "ofetch": "^1.4.1", - "ufo": "^1.6.1" - }, - "peerDependencies": { - "@azure/app-configuration": "^1.8.0", - "@azure/cosmos": "^4.2.0", - "@azure/data-tables": "^13.3.0", - "@azure/identity": "^4.6.0", - "@azure/keyvault-secrets": "^4.9.0", - "@azure/storage-blob": "^12.26.0", - "@capacitor/preferences": "^6.0.3 || ^7.0.0", - "@deno/kv": ">=0.9.0", - "@netlify/blobs": "^6.5.0 || ^7.0.0 || ^8.1.0 || ^9.0.0 || ^10.0.0", - "@planetscale/database": "^1.19.0", - "@upstash/redis": "^1.34.3", - "@vercel/blob": ">=0.27.1", - "@vercel/kv": "^1.0.1", - "aws4fetch": "^1.0.20", - "db0": ">=0.2.1", - "idb-keyval": "^6.2.1", - "ioredis": "^5.4.2", - "uploadthing": "^7.4.4" - }, - "peerDependenciesMeta": { - "@azure/app-configuration": { - "optional": true - }, - "@azure/cosmos": { - "optional": true - }, - "@azure/data-tables": { - "optional": true - }, - "@azure/identity": { - "optional": true - }, - "@azure/keyvault-secrets": { - "optional": true - }, - "@azure/storage-blob": { - "optional": true - }, - "@capacitor/preferences": { - "optional": true - }, - "@deno/kv": { - "optional": true - }, - "@netlify/blobs": { - "optional": true - }, - "@planetscale/database": { - "optional": true - }, - "@upstash/redis": { - "optional": true - }, - "@vercel/blob": { - "optional": true - }, - "@vercel/kv": { - "optional": true - }, - "aws4fetch": { - "optional": true - }, - "db0": { - "optional": true - }, - "idb-keyval": { - "optional": true - }, - "ioredis": { - "optional": true - }, - "uploadthing": { - "optional": true - } - } - }, - "node_modules/@reown/appkit-siwx/node_modules/valtio": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/valtio/-/valtio-2.1.5.tgz", - "integrity": "sha512-vsh1Ixu5mT0pJFZm+Jspvhga5GzHUTYv0/+Th203pLfh3/wbHwxhu/Z2OkZDXIgHfjnjBns7SN9HNcbDvPmaGw==", - "license": "MIT", - "optional": true, - "dependencies": { - "proxy-compare": "^3.0.1" - }, - "engines": { - "node": ">=12.20.0" - }, - "peerDependencies": { - "@types/react": ">=18.0.0", - "react": ">=18.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "react": { - "optional": true - } - } - }, - "node_modules/@reown/appkit-siwx/node_modules/viem": { - "version": "2.32.0", - "resolved": "https://registry.npmjs.org/viem/-/viem-2.32.0.tgz", - "integrity": "sha512-pHwKXQSyEWX+8ttOQJdU5dSBfYd6L9JxARY/Sx0MBj3uF/Zaiqt6o1SbzjFjQXkNzWSgtxK7H89ZI1SMIA2iLQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/wevm" - } - ], - "license": "MIT", - "optional": true, - "dependencies": { - "@noble/curves": "1.9.2", - "@noble/hashes": "1.8.0", - "@scure/bip32": "1.7.0", - "@scure/bip39": "1.6.0", - "abitype": "1.0.8", - "isows": "1.0.7", - "ox": "0.8.1", - "ws": "8.18.2" - }, - "peerDependencies": { - "typescript": ">=5.0.4" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@reown/appkit-siwx/node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "license": "MIT", - "optional": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@reown/appkit-siwx/node_modules/ws": { - "version": "8.18.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.2.tgz", - "integrity": "sha512-DMricUmwGZUVr++AEAe2uiVM7UoO9MAVZMDu05UQOaUII0lp+zOzLLU4Xqh/JvTqklB1T4uELaaPBKyjE1r4fQ==", - "license": "MIT", - "optional": true, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/@reown/appkit-siwx/node_modules/y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "license": "ISC", - "optional": true - }, - "node_modules/@reown/appkit-siwx/node_modules/yargs": { - "version": "15.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", - "license": "MIT", - "optional": true, - "dependencies": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^18.1.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@reown/appkit-siwx/node_modules/yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "license": "ISC", - "optional": true, - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@reown/appkit-ui": { - "version": "1.7.17", - "resolved": "https://registry.npmjs.org/@reown/appkit-ui/-/appkit-ui-1.7.17.tgz", - "integrity": "sha512-7lscJjtFZIfdcUv5zAsmgiFG2dMziQE0IfqY3U/H5qhnGW8v4ITcTi1gNS3A4lQrNDbcA083LecfVdyKnTdi1A==", - "license": "Apache-2.0", - "dependencies": { - "@reown/appkit-common": "1.7.17", - "@reown/appkit-controllers": "1.7.17", - "@reown/appkit-wallet": "1.7.17", - "lit": "3.3.0", - "qrcode": "1.5.3" - } - }, - "node_modules/@reown/appkit-ui/node_modules/cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", - "license": "ISC", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" - } - }, - "node_modules/@reown/appkit-ui/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "license": "MIT", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@reown/appkit-ui/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "license": "MIT", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@reown/appkit-ui/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@reown/appkit-ui/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "license": "MIT", - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@reown/appkit-ui/node_modules/qrcode": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.5.3.tgz", - "integrity": "sha512-puyri6ApkEHYiVl4CFzo1tDkAZ+ATcnbJrJ6RiBM1Fhctdn/ix9MTE3hRph33omisEbC/2fcfemsseiKgBPKZg==", - "license": "MIT", - "dependencies": { - "dijkstrajs": "^1.0.1", - "encode-utf8": "^1.0.3", - "pngjs": "^5.0.0", - "yargs": "^15.3.1" - }, - "bin": { - "qrcode": "bin/qrcode" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/@reown/appkit-ui/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@reown/appkit-ui/node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@reown/appkit-ui/node_modules/y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "license": "ISC" - }, - "node_modules/@reown/appkit-ui/node_modules/yargs": { - "version": "15.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", - "license": "MIT", - "dependencies": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^18.1.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@reown/appkit-ui/node_modules/yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "license": "ISC", - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@reown/appkit-utils": { - "version": "1.7.17", - "resolved": "https://registry.npmjs.org/@reown/appkit-utils/-/appkit-utils-1.7.17.tgz", - "integrity": "sha512-QWzHTmSDFy90Bp5pUUQASzcjnJXPiEvasJV68j3PZifenTPDCfFW+VsiHduWNodTHAA/rZ12O3uBQE+stM3xmQ==", - "license": "Apache-2.0", - "dependencies": { - "@reown/appkit-common": "1.7.17", - "@reown/appkit-controllers": "1.7.17", - "@reown/appkit-polyfills": "1.7.17", - "@reown/appkit-wallet": "1.7.17", - "@wallet-standard/wallet": "1.1.0", - "@walletconnect/logger": "2.1.2", - "@walletconnect/universal-provider": "2.21.5", - "valtio": "2.1.5", - "viem": ">=2.32.0" - }, - "peerDependencies": { - "valtio": "2.1.5" - } - }, - "node_modules/@reown/appkit-utils/node_modules/@noble/ciphers": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@noble/ciphers/-/ciphers-1.3.0.tgz", - "integrity": "sha512-2I0gnIVPtfnMw9ee9h1dJG7tp81+8Ob3OJb3Mv37rx5L40/b0i7djjCVvGOVqc9AEIQyvyu1i6ypKdFw8R8gQw==", - "license": "MIT", - "engines": { - "node": "^14.21.3 || >=16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@reown/appkit-utils/node_modules/@noble/curves": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.9.2.tgz", - "integrity": "sha512-HxngEd2XUcg9xi20JkwlLCtYwfoFw4JGkuZpT+WlsPD4gB/cxkvTD8fSsoAnphGZhFdZYKeQIPCuFlWPm1uE0g==", - "license": "MIT", - "dependencies": { - "@noble/hashes": "1.8.0" - }, - "engines": { - "node": "^14.21.3 || >=16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@reown/appkit-utils/node_modules/@scure/bip32": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.7.0.tgz", - "integrity": "sha512-E4FFX/N3f4B80AKWp5dP6ow+flD1LQZo/w8UnLGYZO674jS6YnYeepycOOksv+vLPSpgN35wgKgy+ybfTb2SMw==", - "license": "MIT", - "dependencies": { - "@noble/curves": "~1.9.0", - "@noble/hashes": "~1.8.0", - "@scure/base": "~1.2.5" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@reown/appkit-utils/node_modules/@scure/bip39": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.6.0.tgz", - "integrity": "sha512-+lF0BbLiJNwVlev4eKelw1WWLaiKXw7sSl8T6FvBlWkdX+94aGJ4o8XjUdlyhTCjd8c+B3KT3JfS8P0bLRNU6A==", - "license": "MIT", - "dependencies": { - "@noble/hashes": "~1.8.0", - "@scure/base": "~1.2.5" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@reown/appkit-utils/node_modules/@walletconnect/core": { + "node_modules/@reown/appkit-utils/node_modules/@walletconnect/core": { "version": "2.21.5", "resolved": "https://registry.npmjs.org/@walletconnect/core/-/core-2.21.5.tgz", "integrity": "sha512-CxGbio1TdCkou/TYn8X6Ih1mUX3UtFTk+t618/cIrT3VX5IjQW09n9I/pVafr7bQbBtm9/ATr7ugUEMrLu5snA==", @@ -10626,93 +9590,94 @@ } }, "node_modules/@reown/appkit/node_modules/@reown/appkit-common": { - "version": "1.7.19", - "resolved": "https://registry.npmjs.org/@reown/appkit-common/-/appkit-common-1.7.19.tgz", - "integrity": "sha512-kP/NeQi44c1bwvizIxcNbSHg9mUbA03llWOiVFKiDmL2SQnBWgLoUiuRCDUEvb/Lx9Hjn6GJdMvdGkq2tmJ1rQ==", + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/@reown/appkit-common/-/appkit-common-1.8.2.tgz", + "integrity": "sha512-xlo1pRh1DkZfB7I1JkeC8ELlsM7ziSG/oJig1KgTsNZPQdYC9fADWY7vH/daUUkgS8QQbINc7HW8WAR1DkA+dw==", "license": "Apache-2.0", "dependencies": { "big.js": "6.2.2", "dayjs": "1.11.13", - "viem": ">=2.32.0" + "viem": ">=2.33.3" } }, "node_modules/@reown/appkit/node_modules/@reown/appkit-controllers": { - "version": "1.7.19", - "resolved": "https://registry.npmjs.org/@reown/appkit-controllers/-/appkit-controllers-1.7.19.tgz", - "integrity": "sha512-U7LKxlrIbQMnH2GhOC5b/W2+nCjmUI0RhR9uFH2clg36y/nucZozV1E3NQQqz4kki+ZiiQb6PyxQW8wp/yhgCA==", + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/@reown/appkit-controllers/-/appkit-controllers-1.8.2.tgz", + "integrity": "sha512-ccGbuiKNceCmh8JxtcDFc115fosJ2abcSfDo4HVSSgew/4rPzqIsD/TPfBLgk2KOAi7RF4keC5mckHHIWfmoFw==", "license": "Apache-2.0", "dependencies": { - "@reown/appkit-common": "1.7.19", - "@reown/appkit-wallet": "1.7.19", - "@walletconnect/universal-provider": "2.21.5", + "@reown/appkit-common": "1.8.2", + "@reown/appkit-wallet": "1.8.2", + "@walletconnect/universal-provider": "2.21.7", "valtio": "2.1.5", - "viem": ">=2.32.0" + "viem": ">=2.33.3" } }, "node_modules/@reown/appkit/node_modules/@reown/appkit-polyfills": { - "version": "1.7.19", - "resolved": "https://registry.npmjs.org/@reown/appkit-polyfills/-/appkit-polyfills-1.7.19.tgz", - "integrity": "sha512-TfjkZPaQ2l0LG1DaqlQSXr2nJAwW6TlT65OtlDO4KpJ7MbqGpeVp3ChLsijowKzoet/hire4k2wyL68QdOvYdA==", + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/@reown/appkit-polyfills/-/appkit-polyfills-1.8.2.tgz", + "integrity": "sha512-D1npLFY3q/X6qh241lh47DfL1EaPpMEeVtV7c2HFdmitUgXqc2BgH7mhMfpI3UgaT42+eP5+W+KanZwwyraNPw==", "license": "Apache-2.0", "dependencies": { "buffer": "6.0.3" } }, "node_modules/@reown/appkit/node_modules/@reown/appkit-scaffold-ui": { - "version": "1.7.19", - "resolved": "https://registry.npmjs.org/@reown/appkit-scaffold-ui/-/appkit-scaffold-ui-1.7.19.tgz", - "integrity": "sha512-X6Op8kPvkqFMzOzP7ocFHwHUKDcElVG8CnVt3BFUNVFqWWpQvxMb1+65OTaF9zFcLtRBuuSVz4EWON3i/DaBxQ==", + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/@reown/appkit-scaffold-ui/-/appkit-scaffold-ui-1.8.2.tgz", + "integrity": "sha512-AmcMlrovF6NLsopRGgjRYoWMx9R04Tf7G4g+O3I/I09iKv+whz3yjQDePuxhymsCbH5pUvuGkmvVl3mMvhCR0Q==", "license": "Apache-2.0", "dependencies": { - "@reown/appkit-common": "1.7.19", - "@reown/appkit-controllers": "1.7.19", - "@reown/appkit-ui": "1.7.19", - "@reown/appkit-utils": "1.7.19", - "@reown/appkit-wallet": "1.7.19", + "@reown/appkit-common": "1.8.2", + "@reown/appkit-controllers": "1.8.2", + "@reown/appkit-ui": "1.8.2", + "@reown/appkit-utils": "1.8.2", + "@reown/appkit-wallet": "1.8.2", "lit": "3.3.0" } }, "node_modules/@reown/appkit/node_modules/@reown/appkit-ui": { - "version": "1.7.19", - "resolved": "https://registry.npmjs.org/@reown/appkit-ui/-/appkit-ui-1.7.19.tgz", - "integrity": "sha512-hnFtiky1KMaejzO0HTCw0kdjis0j/+OswOcQ4XrWD9CzJmmgjU6/u3vx7dEnv0iLKSRothNz1QbSHhZtDmKVRQ==", + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/@reown/appkit-ui/-/appkit-ui-1.8.2.tgz", + "integrity": "sha512-tdYFBmFLIQzqO0QYo6KJTWJ8UZ5yyqmQ4+YnD1PL4pIMPAaFcVB9ZP0ESSX1eX+bGKkBc+I/rbwKgyqTIJLV9Q==", "license": "Apache-2.0", "dependencies": { - "@reown/appkit-common": "1.7.19", - "@reown/appkit-controllers": "1.7.19", - "@reown/appkit-wallet": "1.7.19", + "@phosphor-icons/webcomponents": "2.1.5", + "@reown/appkit-common": "1.8.2", + "@reown/appkit-controllers": "1.8.2", + "@reown/appkit-wallet": "1.8.2", "lit": "3.3.0", "qrcode": "1.5.3" } }, "node_modules/@reown/appkit/node_modules/@reown/appkit-utils": { - "version": "1.7.19", - "resolved": "https://registry.npmjs.org/@reown/appkit-utils/-/appkit-utils-1.7.19.tgz", - "integrity": "sha512-Tac/jptivMfugZb5HtQzT6Jkrbv/9ljbYUI8Tgel+xN4GlhDpc7iTJmDfd9lWi+HUkFB8p6iqOVnghkfrfWtvg==", + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/@reown/appkit-utils/-/appkit-utils-1.8.2.tgz", + "integrity": "sha512-MBhZBCSMNeP6zQ/NVDqEK4DZttUMLEtO/G5WK4Yhzvzra54Z5VIzTPg5bnNe+ntAJ19AL2P7dh8RjaazdMN7Aw==", "license": "Apache-2.0", "dependencies": { - "@reown/appkit-common": "1.7.19", - "@reown/appkit-controllers": "1.7.19", - "@reown/appkit-polyfills": "1.7.19", - "@reown/appkit-wallet": "1.7.19", + "@reown/appkit-common": "1.8.2", + "@reown/appkit-controllers": "1.8.2", + "@reown/appkit-polyfills": "1.8.2", + "@reown/appkit-wallet": "1.8.2", "@wallet-standard/wallet": "1.1.0", "@walletconnect/logger": "2.1.2", - "@walletconnect/universal-provider": "2.21.5", + "@walletconnect/universal-provider": "2.21.7", "valtio": "2.1.5", - "viem": ">=2.32.0" + "viem": ">=2.33.3" }, "peerDependencies": { "valtio": "2.1.5" } }, "node_modules/@reown/appkit/node_modules/@reown/appkit-wallet": { - "version": "1.7.19", - "resolved": "https://registry.npmjs.org/@reown/appkit-wallet/-/appkit-wallet-1.7.19.tgz", - "integrity": "sha512-gmwfFXDKX63HHMKZQU6Rxqgz9oaiXtOMrhhyaNIdyB1IKrtr/Bf/F8ytoG/+pNG0eRkXP03Cr1q15OuWISEzMw==", + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/@reown/appkit-wallet/-/appkit-wallet-1.8.2.tgz", + "integrity": "sha512-cENbBX4WLwkLpIXwH6w+Ys9gmPVnQtGz59/UaO/+nsCxpy+yJcH1yjXyktiLYUBq64ZPGBluYYXg2zJgSCL+nA==", "license": "Apache-2.0", "dependencies": { - "@reown/appkit-common": "1.7.19", - "@reown/appkit-polyfills": "1.7.19", + "@reown/appkit-common": "1.8.2", + "@reown/appkit-polyfills": "1.8.2", "@walletconnect/logger": "2.1.2", "zod": "3.22.4" } @@ -10745,9 +9710,9 @@ } }, "node_modules/@reown/appkit/node_modules/@walletconnect/core": { - "version": "2.21.5", - "resolved": "https://registry.npmjs.org/@walletconnect/core/-/core-2.21.5.tgz", - "integrity": "sha512-CxGbio1TdCkou/TYn8X6Ih1mUX3UtFTk+t618/cIrT3VX5IjQW09n9I/pVafr7bQbBtm9/ATr7ugUEMrLu5snA==", + "version": "2.21.7", + "resolved": "https://registry.npmjs.org/@walletconnect/core/-/core-2.21.7.tgz", + "integrity": "sha512-q/Au5Ne3g4R+q4GvHR5cvRd3+ha00QZCZiCs058lmy+eDbiZd0YsautvTPJ5a2guD6UaS1k/w5e1JHgixdcgLA==", "license": "Apache-2.0", "dependencies": { "@walletconnect/heartbeat": "1.2.2", @@ -10761,8 +9726,8 @@ "@walletconnect/relay-auth": "1.1.0", "@walletconnect/safe-json": "1.0.2", "@walletconnect/time": "1.0.2", - "@walletconnect/types": "2.21.5", - "@walletconnect/utils": "2.21.5", + "@walletconnect/types": "2.21.7", + "@walletconnect/utils": "2.21.7", "@walletconnect/window-getters": "1.0.1", "es-toolkit": "1.39.3", "events": "3.3.0", @@ -10792,26 +9757,26 @@ } }, "node_modules/@reown/appkit/node_modules/@walletconnect/sign-client": { - "version": "2.21.5", - "resolved": "https://registry.npmjs.org/@walletconnect/sign-client/-/sign-client-2.21.5.tgz", - "integrity": "sha512-IAs/IqmE1HVL9EsvqkNRU4NeAYe//h9NwqKi7ToKYZv4jhcC3BBemUD1r8iQJSTHMhO41EKn1G9/DiBln3ZiwQ==", + "version": "2.21.7", + "resolved": "https://registry.npmjs.org/@walletconnect/sign-client/-/sign-client-2.21.7.tgz", + "integrity": "sha512-9k/JEl9copR6nXRhqnmzWz2Zk1hiWysH+o6bp6Cqo8TgDUrZoMLBZMZ6qbo+2HLI54V02kKf0Vg8M81nNFOpjQ==", "license": "Apache-2.0", "dependencies": { - "@walletconnect/core": "2.21.5", + "@walletconnect/core": "2.21.7", "@walletconnect/events": "1.0.1", "@walletconnect/heartbeat": "1.2.2", "@walletconnect/jsonrpc-utils": "1.0.8", "@walletconnect/logger": "2.1.2", "@walletconnect/time": "1.0.2", - "@walletconnect/types": "2.21.5", - "@walletconnect/utils": "2.21.5", + "@walletconnect/types": "2.21.7", + "@walletconnect/utils": "2.21.7", "events": "3.3.0" } }, "node_modules/@reown/appkit/node_modules/@walletconnect/types": { - "version": "2.21.5", - "resolved": "https://registry.npmjs.org/@walletconnect/types/-/types-2.21.5.tgz", - "integrity": "sha512-kpTXbenKeMdaz6mgMN/jKaHHbu6mdY3kyyrddzE/mthOd2KLACVrZr7hrTf+Fg2coPVen5d1KKyQjyECEdzOCw==", + "version": "2.21.7", + "resolved": "https://registry.npmjs.org/@walletconnect/types/-/types-2.21.7.tgz", + "integrity": "sha512-kyGnFje4Iq+XGkZZcSoAIrJWBE4BeghVW4O7n9e1MhUyeOOtO55M/kcqceNGYrvwjHvdN+Kf+aoLnKC0zKlpbQ==", "license": "Apache-2.0", "dependencies": { "@walletconnect/events": "1.0.1", @@ -10823,9 +9788,9 @@ } }, "node_modules/@reown/appkit/node_modules/@walletconnect/universal-provider": { - "version": "2.21.5", - "resolved": "https://registry.npmjs.org/@walletconnect/universal-provider/-/universal-provider-2.21.5.tgz", - "integrity": "sha512-SMXGGXyj78c8Ru2f665ZFZU24phn0yZyCP5Ej7goxVQxABwqWKM/odj3j/IxZv+hxA8yU13yxaubgVefnereqw==", + "version": "2.21.7", + "resolved": "https://registry.npmjs.org/@walletconnect/universal-provider/-/universal-provider-2.21.7.tgz", + "integrity": "sha512-8PB+vA5VuR9PBqt5Y0xj4JC2doYNPlXLGQt3wJORVF9QC227Mm/8R1CAKpmneeLrUH02LkSRwx+wnN/pPnDiQA==", "license": "Apache-2.0", "dependencies": { "@walletconnect/events": "1.0.1", @@ -10835,17 +9800,17 @@ "@walletconnect/jsonrpc-utils": "1.0.8", "@walletconnect/keyvaluestorage": "1.1.1", "@walletconnect/logger": "2.1.2", - "@walletconnect/sign-client": "2.21.5", - "@walletconnect/types": "2.21.5", - "@walletconnect/utils": "2.21.5", + "@walletconnect/sign-client": "2.21.7", + "@walletconnect/types": "2.21.7", + "@walletconnect/utils": "2.21.7", "es-toolkit": "1.39.3", "events": "3.3.0" } }, "node_modules/@reown/appkit/node_modules/@walletconnect/utils": { - "version": "2.21.5", - "resolved": "https://registry.npmjs.org/@walletconnect/utils/-/utils-2.21.5.tgz", - "integrity": "sha512-RSPSxPvGMuvfGhd5au1cf9cmHB/KVVLFotJR9ltisjFABGtH2215U5oaVp+a7W18QX37aemejRkvacqOELVySA==", + "version": "2.21.7", + "resolved": "https://registry.npmjs.org/@walletconnect/utils/-/utils-2.21.7.tgz", + "integrity": "sha512-qyaclTgcFf9AwVuoV8CLLg8wfH3nX7yZdpylNkDqCpS7wawQL9zmFFTaGgma8sQrCsd3Sd9jUIymcpRvCJnSTw==", "license": "Apache-2.0", "dependencies": { "@msgpack/msgpack": "3.1.2", @@ -10859,7 +9824,7 @@ "@walletconnect/relay-auth": "1.1.0", "@walletconnect/safe-json": "1.0.2", "@walletconnect/time": "1.0.2", - "@walletconnect/types": "2.21.5", + "@walletconnect/types": "2.21.7", "@walletconnect/window-getters": "1.0.1", "@walletconnect/window-metadata": "1.0.1", "blakejs": "1.2.1", @@ -10915,17 +9880,6 @@ "url": "https://paulmillr.com/funding/" } }, - "node_modules/@reown/appkit/node_modules/cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", - "license": "ISC", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" - } - }, "node_modules/@reown/appkit/node_modules/es-toolkit": { "version": "1.39.3", "resolved": "https://registry.npmjs.org/es-toolkit/-/es-toolkit-1.39.3.tgz", @@ -10936,31 +9890,6 @@ "benchmarks" ] }, - "node_modules/@reown/appkit/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "license": "MIT", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@reown/appkit/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "license": "MIT", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/@reown/appkit/node_modules/lru-cache": { "version": "10.4.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", @@ -10997,57 +9926,12 @@ } } }, - "node_modules/@reown/appkit/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@reown/appkit/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "license": "MIT", - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/@reown/appkit/node_modules/proxy-compare": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/proxy-compare/-/proxy-compare-3.0.1.tgz", "integrity": "sha512-V9plBAt3qjMlS1+nC8771KNf6oJ12gExvaxnNzN/9yVRLdTv/lc+oJlnSzrdYDAvBfTStPCoiaCOTmTs0adv7Q==", "license": "MIT" }, - "node_modules/@reown/appkit/node_modules/qrcode": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.5.3.tgz", - "integrity": "sha512-puyri6ApkEHYiVl4CFzo1tDkAZ+ATcnbJrJ6RiBM1Fhctdn/ix9MTE3hRph33omisEbC/2fcfemsseiKgBPKZg==", - "license": "MIT", - "dependencies": { - "dijkstrajs": "^1.0.1", - "encode-utf8": "^1.0.3", - "pngjs": "^5.0.0", - "yargs": "^15.3.1" - }, - "bin": { - "qrcode": "bin/qrcode" - }, - "engines": { - "node": ">=10.13.0" - } - }, "node_modules/@reown/appkit/node_modules/semver": { "version": "7.7.2", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", @@ -11059,18 +9943,6 @@ "node": ">=10" } }, - "node_modules/@reown/appkit/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/@reown/appkit/node_modules/uint8arrays": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.1.1.tgz", @@ -11081,17 +9953,17 @@ } }, "node_modules/@reown/appkit/node_modules/unstorage": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.16.1.tgz", - "integrity": "sha512-gdpZ3guLDhz+zWIlYP1UwQ259tG5T5vYRzDaHMkQ1bBY1SQPutvZnrRjTFaWUUpseErJIgAZS51h6NOcZVZiqQ==", + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.17.1.tgz", + "integrity": "sha512-KKGwRTT0iVBCErKemkJCLs7JdxNVfqTPc/85ae1XES0+bsHbc/sFBfVi5kJp156cc51BHinIH2l3k0EZ24vOBQ==", "license": "MIT", "dependencies": { "anymatch": "^3.1.3", "chokidar": "^4.0.3", "destr": "^2.0.5", - "h3": "^1.15.3", + "h3": "^1.15.4", "lru-cache": "^10.4.3", - "node-fetch-native": "^1.6.6", + "node-fetch-native": "^1.6.7", "ofetch": "^1.4.1", "ufo": "^1.6.1" }, @@ -11108,6 +9980,7 @@ "@planetscale/database": "^1.19.0", "@upstash/redis": "^1.34.3", "@vercel/blob": ">=0.27.1", + "@vercel/functions": "^2.2.12 || ^3.0.0", "@vercel/kv": "^1.0.1", "aws4fetch": "^1.0.20", "db0": ">=0.2.1", @@ -11152,6 +10025,9 @@ "@vercel/blob": { "optional": true }, + "@vercel/functions": { + "optional": true + }, "@vercel/kv": { "optional": true }, @@ -11196,20 +10072,6 @@ } } }, - "node_modules/@reown/appkit/node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/@reown/appkit/node_modules/ws": { "version": "8.18.2", "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.2.tgz", @@ -11231,47 +10093,6 @@ } } }, - "node_modules/@reown/appkit/node_modules/y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "license": "ISC" - }, - "node_modules/@reown/appkit/node_modules/yargs": { - "version": "15.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", - "license": "MIT", - "dependencies": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^18.1.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@reown/appkit/node_modules/yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "license": "ISC", - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/@rolldown/pluginutils": { "version": "1.0.0-beta.27", "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.27.tgz", @@ -15719,32 +14540,6 @@ } } }, - "node_modules/@walletconnect/ethereum-provider/node_modules/cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", - "license": "ISC", - "optional": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" - } - }, - "node_modules/@walletconnect/ethereum-provider/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "license": "MIT", - "optional": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/@walletconnect/ethereum-provider/node_modules/isows": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/isows/-/isows-1.0.6.tgz", @@ -15773,19 +14568,6 @@ "lit-html": "^3.1.0" } }, - "node_modules/@walletconnect/ethereum-provider/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "license": "MIT", - "optional": true, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/@walletconnect/ethereum-provider/node_modules/lru-cache": { "version": "10.4.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", @@ -15823,67 +14605,6 @@ } } }, - "node_modules/@walletconnect/ethereum-provider/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "license": "MIT", - "optional": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@walletconnect/ethereum-provider/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "license": "MIT", - "optional": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@walletconnect/ethereum-provider/node_modules/qrcode": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.5.3.tgz", - "integrity": "sha512-puyri6ApkEHYiVl4CFzo1tDkAZ+ATcnbJrJ6RiBM1Fhctdn/ix9MTE3hRph33omisEbC/2fcfemsseiKgBPKZg==", - "license": "MIT", - "optional": true, - "dependencies": { - "dijkstrajs": "^1.0.1", - "encode-utf8": "^1.0.3", - "pngjs": "^5.0.0", - "yargs": "^15.3.1" - }, - "bin": { - "qrcode": "bin/qrcode" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/@walletconnect/ethereum-provider/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "license": "MIT", - "optional": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/@walletconnect/ethereum-provider/node_modules/unstorage": { "version": "1.16.0", "resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.16.0.tgz", @@ -15977,21 +14698,6 @@ } } }, - "node_modules/@walletconnect/ethereum-provider/node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "license": "MIT", - "optional": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/@walletconnect/ethereum-provider/node_modules/ws": { "version": "8.18.0", "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", @@ -16014,50 +14720,6 @@ } } }, - "node_modules/@walletconnect/ethereum-provider/node_modules/y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "license": "ISC", - "optional": true - }, - "node_modules/@walletconnect/ethereum-provider/node_modules/yargs": { - "version": "15.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", - "license": "MIT", - "optional": true, - "dependencies": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^18.1.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@walletconnect/ethereum-provider/node_modules/yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "license": "ISC", - "optional": true, - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/@walletconnect/events": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@walletconnect/events/-/events-1.0.1.tgz", @@ -16247,30 +14909,6 @@ "@lit-labs/ssr-dom-shim": "^1.0.0" } }, - "node_modules/@walletconnect/modal-ui/node_modules/cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", - "license": "ISC", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" - } - }, - "node_modules/@walletconnect/modal-ui/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "license": "MIT", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/@walletconnect/modal-ui/node_modules/lit": { "version": "2.8.0", "resolved": "https://registry.npmjs.org/lit/-/lit-2.8.0.tgz", @@ -16302,130 +14940,6 @@ "@types/trusted-types": "^2.0.2" } }, - "node_modules/@walletconnect/modal-ui/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "license": "MIT", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@walletconnect/modal-ui/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@walletconnect/modal-ui/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "license": "MIT", - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@walletconnect/modal-ui/node_modules/qrcode": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.5.3.tgz", - "integrity": "sha512-puyri6ApkEHYiVl4CFzo1tDkAZ+ATcnbJrJ6RiBM1Fhctdn/ix9MTE3hRph33omisEbC/2fcfemsseiKgBPKZg==", - "license": "MIT", - "dependencies": { - "dijkstrajs": "^1.0.1", - "encode-utf8": "^1.0.3", - "pngjs": "^5.0.0", - "yargs": "^15.3.1" - }, - "bin": { - "qrcode": "bin/qrcode" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/@walletconnect/modal-ui/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@walletconnect/modal-ui/node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@walletconnect/modal-ui/node_modules/y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "license": "ISC" - }, - "node_modules/@walletconnect/modal-ui/node_modules/yargs": { - "version": "15.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", - "license": "MIT", - "dependencies": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^18.1.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@walletconnect/modal-ui/node_modules/yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "license": "ISC", - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/@walletconnect/relay-api": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/@walletconnect/relay-api/-/relay-api-1.0.11.tgz", @@ -18219,30 +16733,6 @@ "qrcode": "1.5.3" } }, - "node_modules/@web3modal/ui/node_modules/cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", - "license": "ISC", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" - } - }, - "node_modules/@web3modal/ui/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "license": "MIT", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/@web3modal/ui/node_modules/lit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/lit/-/lit-3.1.0.tgz", @@ -18254,130 +16744,6 @@ "lit-html": "^3.1.0" } }, - "node_modules/@web3modal/ui/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "license": "MIT", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@web3modal/ui/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@web3modal/ui/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "license": "MIT", - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@web3modal/ui/node_modules/qrcode": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.5.3.tgz", - "integrity": "sha512-puyri6ApkEHYiVl4CFzo1tDkAZ+ATcnbJrJ6RiBM1Fhctdn/ix9MTE3hRph33omisEbC/2fcfemsseiKgBPKZg==", - "license": "MIT", - "dependencies": { - "dijkstrajs": "^1.0.1", - "encode-utf8": "^1.0.3", - "pngjs": "^5.0.0", - "yargs": "^15.3.1" - }, - "bin": { - "qrcode": "bin/qrcode" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/@web3modal/ui/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@web3modal/ui/node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@web3modal/ui/node_modules/y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "license": "ISC" - }, - "node_modules/@web3modal/ui/node_modules/yargs": { - "version": "15.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", - "license": "MIT", - "dependencies": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^18.1.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@web3modal/ui/node_modules/yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "license": "ISC", - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/@web3modal/wallet": { "version": "5.1.11", "resolved": "https://registry.npmjs.org/@web3modal/wallet/-/wallet-5.1.11.tgz", @@ -26054,17 +24420,17 @@ "license": "MIT" }, "node_modules/h3": { - "version": "1.15.3", - "resolved": "https://registry.npmjs.org/h3/-/h3-1.15.3.tgz", - "integrity": "sha512-z6GknHqyX0h9aQaTx22VZDf6QyZn+0Nh+Ym8O/u0SGSkyF5cuTJYKlc8MkzW3Nzf9LE1ivcpmYC3FUGpywhuUQ==", + "version": "1.15.4", + "resolved": "https://registry.npmjs.org/h3/-/h3-1.15.4.tgz", + "integrity": "sha512-z5cFQWDffyOe4vQ9xIqNfCZdV4p//vy6fBnr8Q1AWnVZ0teurKMG66rLj++TKwKPUP3u7iMUvrvKaEUiQw2QWQ==", "license": "MIT", "dependencies": { "cookie-es": "^1.2.2", - "crossws": "^0.3.4", + "crossws": "^0.3.5", "defu": "^6.1.4", "destr": "^2.0.5", "iron-webcrypto": "^1.2.1", - "node-mock-http": "^1.0.0", + "node-mock-http": "^1.0.2", "radix3": "^1.1.2", "ufo": "^1.6.1", "uncrypto": "^0.1.3" @@ -30877,9 +29243,9 @@ } }, "node_modules/node-fetch-native": { - "version": "1.6.6", - "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.6.6.tgz", - "integrity": "sha512-8Mc2HhqPdlIfedsuZoc3yioPuzp6b+L5jRCRY1QzuWZh2EGJVQrGppC6V6cF0bLdbW0+O2YpqCA25aF/1lvipQ==", + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.6.7.tgz", + "integrity": "sha512-g9yhqoedzIUm0nTnTqAQvueMPVOuIY16bqgAJJC8XOOubYFNwz6IER9qs0Gq2Xd0+CecCKFjtdDTMA4u4xG06Q==", "license": "MIT" }, "node_modules/node-fetch/node_modules/tr46": { @@ -30934,9 +29300,9 @@ "license": "MIT" }, "node_modules/node-mock-http": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/node-mock-http/-/node-mock-http-1.0.0.tgz", - "integrity": "sha512-0uGYQ1WQL1M5kKvGRXWQ3uZCHtLTO8hln3oBjIusM75WoesZ909uQJs/Hb946i2SS+Gsrhkaa6iAO17jRIv6DQ==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/node-mock-http/-/node-mock-http-1.0.3.tgz", + "integrity": "sha512-jN8dK25fsfnMrVsEhluUTPkBFY+6ybu7jSB1n+ri/vOGjJxU8J9CZhpSGkHXSkFjtUhbmoncG/YG9ta5Ludqog==", "license": "MIT" }, "node_modules/node-releases": { @@ -34446,23 +32812,24 @@ } }, "node_modules/ox": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/ox/-/ox-0.8.1.tgz", - "integrity": "sha512-e+z5epnzV+Zuz91YYujecW8cF01mzmrUtWotJ0oEPym/G82uccs7q0WDHTYL3eiONbTUEvcZrptAKLgTBD3u2A==", + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/ox/-/ox-0.9.3.tgz", + "integrity": "sha512-KzyJP+fPV4uhuuqrTZyok4DC7vFzi7HLUFiUNEmpbyh59htKWkOC98IONC1zgXJPbHAhQgqs6B0Z6StCGhmQvg==", "funding": [ { "type": "github", "url": "https://github.com/sponsors/wevm" } ], + "license": "MIT", "dependencies": { "@adraffy/ens-normalize": "^1.11.0", "@noble/ciphers": "^1.3.0", - "@noble/curves": "^1.9.1", + "@noble/curves": "1.9.1", "@noble/hashes": "^1.8.0", "@scure/bip32": "^1.7.0", "@scure/bip39": "^1.6.0", - "abitype": "^1.0.8", + "abitype": "^1.0.9", "eventemitter3": "5.0.1" }, "peerDependencies": { @@ -34477,12 +32844,14 @@ "node_modules/ox/node_modules/@adraffy/ens-normalize": { "version": "1.11.0", "resolved": "https://registry.npmjs.org/@adraffy/ens-normalize/-/ens-normalize-1.11.0.tgz", - "integrity": "sha512-/3DDPKHqqIqxUULp8yP4zODUY1i+2xvVWsv8A79xGWdCAG+8sb0hRh0Rk2QyOJUnnbyPUAZYcpBuRe3nS2OIUg==" + "integrity": "sha512-/3DDPKHqqIqxUULp8yP4zODUY1i+2xvVWsv8A79xGWdCAG+8sb0hRh0Rk2QyOJUnnbyPUAZYcpBuRe3nS2OIUg==", + "license": "MIT" }, "node_modules/ox/node_modules/@noble/ciphers": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/@noble/ciphers/-/ciphers-1.3.0.tgz", "integrity": "sha512-2I0gnIVPtfnMw9ee9h1dJG7tp81+8Ob3OJb3Mv37rx5L40/b0i7djjCVvGOVqc9AEIQyvyu1i6ypKdFw8R8gQw==", + "license": "MIT", "engines": { "node": "^14.21.3 || >=16" }, @@ -34491,9 +32860,10 @@ } }, "node_modules/ox/node_modules/@noble/curves": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.9.2.tgz", - "integrity": "sha512-HxngEd2XUcg9xi20JkwlLCtYwfoFw4JGkuZpT+WlsPD4gB/cxkvTD8fSsoAnphGZhFdZYKeQIPCuFlWPm1uE0g==", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.9.1.tgz", + "integrity": "sha512-k11yZxZg+t+gWvBbIswW0yoJlu8cHOC7dhunwOzoWH/mXGBiYyR4YY6hAEK/3EUs4UpB8la1RfdRpeGsFHkWsA==", + "license": "MIT", "dependencies": { "@noble/hashes": "1.8.0" }, @@ -34508,6 +32878,7 @@ "version": "1.7.0", "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.7.0.tgz", "integrity": "sha512-E4FFX/N3f4B80AKWp5dP6ow+flD1LQZo/w8UnLGYZO674jS6YnYeepycOOksv+vLPSpgN35wgKgy+ybfTb2SMw==", + "license": "MIT", "dependencies": { "@noble/curves": "~1.9.0", "@noble/hashes": "~1.8.0", @@ -34521,6 +32892,7 @@ "version": "1.6.0", "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.6.0.tgz", "integrity": "sha512-+lF0BbLiJNwVlev4eKelw1WWLaiKXw7sSl8T6FvBlWkdX+94aGJ4o8XjUdlyhTCjd8c+B3KT3JfS8P0bLRNU6A==", + "license": "MIT", "dependencies": { "@noble/hashes": "~1.8.0", "@scure/base": "~1.2.5" @@ -34529,6 +32901,27 @@ "url": "https://paulmillr.com/funding/" } }, + "node_modules/ox/node_modules/abitype": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/abitype/-/abitype-1.1.0.tgz", + "integrity": "sha512-6Vh4HcRxNMLA0puzPjM5GBgT4aAcFGKZzSgAXvuZ27shJP6NEpielTuqbBmZILR5/xd0PizkBGy5hReKz9jl5A==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/wevm" + }, + "peerDependencies": { + "typescript": ">=5.0.4", + "zod": "^3.22.0 || ^4.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + }, + "zod": { + "optional": true + } + } + }, "node_modules/p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -35567,6 +33960,24 @@ "integrity": "sha512-c4iYnWb+k2E+vYpRimHqSu575b1/wKl4XFeJGpFmrJQz5I88v9aY2czh7s0w36srfCM1sXgC/xpoJz5dJfq+OQ==", "license": "MIT" }, + "node_modules/qrcode": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.5.3.tgz", + "integrity": "sha512-puyri6ApkEHYiVl4CFzo1tDkAZ+ATcnbJrJ6RiBM1Fhctdn/ix9MTE3hRph33omisEbC/2fcfemsseiKgBPKZg==", + "license": "MIT", + "dependencies": { + "dijkstrajs": "^1.0.1", + "encode-utf8": "^1.0.3", + "pngjs": "^5.0.0", + "yargs": "^15.3.1" + }, + "bin": { + "qrcode": "bin/qrcode" + }, + "engines": { + "node": ">=10.13.0" + } + }, "node_modules/qrcode-svg": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/qrcode-svg/-/qrcode-svg-1.1.0.tgz", @@ -35585,6 +33996,136 @@ "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, + "node_modules/qrcode/node_modules/cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "node_modules/qrcode/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/qrcode/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/qrcode/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/qrcode/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/qrcode/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/qrcode/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/qrcode/node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "license": "ISC" + }, + "node_modules/qrcode/node_modules/yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "license": "MIT", + "dependencies": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/qrcode/node_modules/yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "license": "ISC", + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/qrious": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/qrious/-/qrious-4.0.2.tgz", @@ -40482,9 +39023,9 @@ } }, "node_modules/viem": { - "version": "2.33.1", - "resolved": "https://registry.npmjs.org/viem/-/viem-2.33.1.tgz", - "integrity": "sha512-++Dkj8HvSOLPMKEs+ZBNNcWbBRlUHcXNWktjIU22hgr6YmbUldV1sPTGLZa6BYRm06WViMjXj6HIsHt8rD+ZKQ==", + "version": "2.37.4", + "resolved": "https://registry.npmjs.org/viem/-/viem-2.37.4.tgz", + "integrity": "sha512-1ig5O6l1wJmaw3yrSrUimjRLQEZon2ymTqSDjdntu6Bry1/tLC2GClXeS3SiCzrifpLxzfCLQWDITYVTBA10KA==", "funding": [ { "type": "github", @@ -40493,14 +39034,14 @@ ], "license": "MIT", "dependencies": { - "@noble/curves": "1.9.2", + "@noble/curves": "1.9.1", "@noble/hashes": "1.8.0", "@scure/bip32": "1.7.0", "@scure/bip39": "1.6.0", - "abitype": "1.0.8", + "abitype": "1.1.0", "isows": "1.0.7", - "ox": "0.8.1", - "ws": "8.18.2" + "ox": "0.9.3", + "ws": "8.18.3" }, "peerDependencies": { "typescript": ">=5.0.4" @@ -40512,9 +39053,10 @@ } }, "node_modules/viem/node_modules/@noble/curves": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.9.2.tgz", - "integrity": "sha512-HxngEd2XUcg9xi20JkwlLCtYwfoFw4JGkuZpT+WlsPD4gB/cxkvTD8fSsoAnphGZhFdZYKeQIPCuFlWPm1uE0g==", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.9.1.tgz", + "integrity": "sha512-k11yZxZg+t+gWvBbIswW0yoJlu8cHOC7dhunwOzoWH/mXGBiYyR4YY6hAEK/3EUs4UpB8la1RfdRpeGsFHkWsA==", + "license": "MIT", "dependencies": { "@noble/hashes": "1.8.0" }, @@ -40552,10 +39094,31 @@ "url": "https://paulmillr.com/funding/" } }, + "node_modules/viem/node_modules/abitype": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/abitype/-/abitype-1.1.0.tgz", + "integrity": "sha512-6Vh4HcRxNMLA0puzPjM5GBgT4aAcFGKZzSgAXvuZ27shJP6NEpielTuqbBmZILR5/xd0PizkBGy5hReKz9jl5A==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/wevm" + }, + "peerDependencies": { + "typescript": ">=5.0.4", + "zod": "^3.22.0 || ^4.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + }, + "zod": { + "optional": true + } + } + }, "node_modules/viem/node_modules/ws": { - "version": "8.18.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.2.tgz", - "integrity": "sha512-DMricUmwGZUVr++AEAe2uiVM7UoO9MAVZMDu05UQOaUII0lp+zOzLLU4Xqh/JvTqklB1T4uELaaPBKyjE1r4fQ==", + "version": "8.18.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz", + "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==", "license": "MIT", "engines": { "node": ">=10.0.0" @@ -42790,17 +41353,6 @@ } } }, - "node_modules/wagmi/node_modules/cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", - "license": "ISC", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" - } - }, "node_modules/wagmi/node_modules/clsx": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz", @@ -42810,19 +41362,6 @@ "node": ">=6" } }, - "node_modules/wagmi/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "license": "MIT", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/wagmi/node_modules/idb-keyval": { "version": "6.2.1", "resolved": "https://registry.npmjs.org/idb-keyval/-/idb-keyval-6.2.1.tgz", @@ -42844,18 +41383,6 @@ "ws": "*" } }, - "node_modules/wagmi/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "license": "MIT", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/wagmi/node_modules/lru-cache": { "version": "10.4.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", @@ -42903,33 +41430,6 @@ "url": "https://paulmillr.com/funding/" } }, - "node_modules/wagmi/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/wagmi/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "license": "MIT", - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/wagmi/node_modules/preact": { "version": "10.24.2", "resolved": "https://registry.npmjs.org/preact/-/preact-10.24.2.tgz", @@ -42940,36 +41440,6 @@ "url": "https://opencollective.com/preact" } }, - "node_modules/wagmi/node_modules/qrcode": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.5.3.tgz", - "integrity": "sha512-puyri6ApkEHYiVl4CFzo1tDkAZ+ATcnbJrJ6RiBM1Fhctdn/ix9MTE3hRph33omisEbC/2fcfemsseiKgBPKZg==", - "license": "MIT", - "dependencies": { - "dijkstrajs": "^1.0.1", - "encode-utf8": "^1.0.3", - "pngjs": "^5.0.0", - "yargs": "^15.3.1" - }, - "bin": { - "qrcode": "bin/qrcode" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/wagmi/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/wagmi/node_modules/use-sync-external-store": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.4.0.tgz", @@ -42979,20 +41449,6 @@ "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, - "node_modules/wagmi/node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/wagmi/node_modules/ws": { "version": "8.18.0", "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", @@ -43014,47 +41470,6 @@ } } }, - "node_modules/wagmi/node_modules/y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "license": "ISC" - }, - "node_modules/wagmi/node_modules/yargs": { - "version": "15.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", - "license": "MIT", - "dependencies": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^18.1.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/wagmi/node_modules/yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "license": "ISC", - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/walker": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", diff --git a/package.json b/package.json index 45de6e2b4..a067cf00a 100644 --- a/package.json +++ b/package.json @@ -49,7 +49,7 @@ "@mui/material": "^7.0.2", "@mui/x-date-pickers": "^8.2.0", "@reduxjs/toolkit": "^2.8.1", - "@reown/appkit": "^1.7.19", + "@reown/appkit": "^1.8.2", "@reown/appkit-adapter-wagmi": "^1.7.17", "@storybook/addon-designs": "^8.2.1", "@stripe/stripe-js": "^7.4.0", From a548e79ae8757bc6dcd2cdc0d591062807f0aaf1 Mon Sep 17 00:00:00 2001 From: Iman rb Date: Mon, 15 Sep 2025 15:26:16 +0330 Subject: [PATCH 57/76] fixed socoius id integration on mobile apps --- ios/App/App/capacitor.config.json | 2 +- ios/App/App/public/index.html | 4 +-- ios/App/Podfile | 2 +- package-lock.json | 10 ++++++++ package.json | 1 + src/pages/intro/useIntro.tsx | 41 +++++++++++++++++++++++++++++-- src/pages/oauth/socious.tsx | 4 ++- 7 files changed, 57 insertions(+), 7 deletions(-) diff --git a/ios/App/App/capacitor.config.json b/ios/App/App/capacitor.config.json index 616cd038e..35a0f67ae 100644 --- a/ios/App/App/capacitor.config.json +++ b/ios/App/App/capacitor.config.json @@ -20,10 +20,10 @@ } }, "packageClassList": [ - "SignInWithApple", "FirebaseMessagingPlugin", "ActionSheetPlugin", "AppPlugin", + "CAPBrowserPlugin", "CAPCameraPlugin", "DialogPlugin", "HapticsPlugin", diff --git a/ios/App/App/public/index.html b/ios/App/App/public/index.html index 0331449c5..ee46c2a4a 100644 --- a/ios/App/App/public/index.html +++ b/ios/App/App/public/index.html @@ -5,8 +5,8 @@ Socious - - + + diff --git a/ios/App/Podfile b/ios/App/Podfile index 746b69c4a..95f24d6ad 100644 --- a/ios/App/Podfile +++ b/ios/App/Podfile @@ -11,10 +11,10 @@ install! 'cocoapods', :disable_input_output_paths => true def capacitor_pods pod 'Capacitor', :path => '../../node_modules/@capacitor/ios' pod 'CapacitorCordova', :path => '../../node_modules/@capacitor/ios' - pod 'CapacitorCommunityAppleSignIn', :path => '../../node_modules/@capacitor-community/apple-sign-in' pod 'CapacitorFirebaseMessaging', :path => '../../node_modules/@capacitor-firebase/messaging' pod 'CapacitorActionSheet', :path => '../../node_modules/@capacitor/action-sheet' pod 'CapacitorApp', :path => '../../node_modules/@capacitor/app' + pod 'CapacitorBrowser', :path => '../../node_modules/@capacitor/browser' pod 'CapacitorCamera', :path => '../../node_modules/@capacitor/camera' pod 'CapacitorDialog', :path => '../../node_modules/@capacitor/dialog' pod 'CapacitorHaptics', :path => '../../node_modules/@capacitor/haptics' diff --git a/package-lock.json b/package-lock.json index be294f3c3..379362d11 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,6 +12,7 @@ "@capacitor/action-sheet": "^7.0.2", "@capacitor/android": "^7.4.2", "@capacitor/app": "^7.0.1", + "@capacitor/browser": "^7.0.2", "@capacitor/camera": "^7.0.2", "@capacitor/core": "^7.4.2", "@capacitor/dialog": "^7.0.1", @@ -1320,6 +1321,15 @@ "node": ">=4.0" } }, + "node_modules/@capacitor/browser": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@capacitor/browser/-/browser-7.0.2.tgz", + "integrity": "sha512-5kySTunCtH+2sezmTjgDfwvspW7GW/hslQECZeLIRM2qefnxjGTc3fmCTeILYK5EuvcxMs+8sF5BhmzzKqOzuQ==", + "license": "MIT", + "peerDependencies": { + "@capacitor/core": ">=7.0.0" + } + }, "node_modules/@capacitor/camera": { "version": "7.0.2", "resolved": "https://registry.npmjs.org/@capacitor/camera/-/camera-7.0.2.tgz", diff --git a/package.json b/package.json index a067cf00a..9170d7a92 100644 --- a/package.json +++ b/package.json @@ -31,6 +31,7 @@ "@capacitor/action-sheet": "^7.0.2", "@capacitor/android": "^7.4.2", "@capacitor/app": "^7.0.1", + "@capacitor/browser": "^7.0.2", "@capacitor/camera": "^7.0.2", "@capacitor/core": "^7.4.2", "@capacitor/dialog": "^7.0.1", diff --git a/src/pages/intro/useIntro.tsx b/src/pages/intro/useIntro.tsx index 764fd6483..bf4059f74 100644 --- a/src/pages/intro/useIntro.tsx +++ b/src/pages/intro/useIntro.tsx @@ -1,17 +1,54 @@ -import { useState } from 'react'; +import { App } from '@capacitor/app'; +import { Browser } from '@capacitor/browser'; +import { Capacitor } from '@capacitor/core'; +import { useState, useEffect } from 'react'; import { useSelector } from 'react-redux'; +import { useNavigate } from 'react-router-dom'; import { config } from 'src/config'; import { getAuthUrlAdaptor } from 'src/core/adaptors'; import { RootState } from 'src/store'; export const useIntro = () => { + const platform = Capacitor.getPlatform(); + const status = useSelector((state: RootState) => state.identity.status); const [selectedOnboarding, setSelectedOnboarding] = useState<'user' | 'organization'>('user'); + const navigate = useNavigate(); + + useEffect(() => { + let listener: any; + + const setupListener = async () => { + listener = await App.addListener('appUrlOpen', async data => { + const url = data.url; + + if (url.includes('oauth/socious')) { + await Browser.close(); + + const urlObj = new URL(url); + const path = urlObj.pathname + urlObj.search; + + navigate(path); + } + }); + }; + + platform !== 'web' && setupListener(); + + return () => { + if (listener) { + listener.remove(); + } + }; + }, [navigate]); const onContinue = async () => { const { error, data } = await getAuthUrlAdaptor(config.appBaseURL + 'oauth/socious'); if (error) return; - if (data) window.location.href = data.url; + if (data) { + if (platform === 'web') window.location.href = data.url; + else await Browser.open({ url: data.url }); + } }; return { diff --git a/src/pages/oauth/socious.tsx b/src/pages/oauth/socious.tsx index 8ccd20d2d..e313557b7 100644 --- a/src/pages/oauth/socious.tsx +++ b/src/pages/oauth/socious.tsx @@ -1,3 +1,4 @@ +import { Capacitor } from '@capacitor/core'; import { useEffect } from 'react'; import { useNavigate, useSearchParams } from 'react-router-dom'; import { config } from 'src/config'; @@ -11,6 +12,7 @@ export const SociousID = () => { const [searchParams] = useSearchParams(); const code = searchParams.get('code'); const identityId = searchParams.get('identity_id'); + const platform = Capacitor.getPlatform(); const fetchAuthURL = async () => { const { error, data } = await getAuthUrlAdaptor(config.appBaseURL + 'oauth/socious'); @@ -57,7 +59,7 @@ export const SociousID = () => { const redirectToAuthURL = async () => { const authURL = await fetchAuthURL(); - if (authURL) { + if (authURL && platform === 'web') { window.location.href = authURL; } }; From 2072aac19ac39adc147d2c5263851a662e5010ac Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 15 Sep 2025 01:11:48 +0000 Subject: [PATCH 58/76] chore(deps-dev): bump @typescript-eslint/parser from 8.35.0 to 8.43.0 Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 8.35.0 to 8.43.0. - [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases) - [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md) - [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.43.0/packages/parser) --- updated-dependencies: - dependency-name: "@typescript-eslint/parser" dependency-version: 8.43.0 dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- package-lock.json | 89 ++++++++++++++++++++++++++--------------------- package.json | 2 +- 2 files changed, 51 insertions(+), 40 deletions(-) diff --git a/package-lock.json b/package-lock.json index 379362d11..df62b1aea 100644 --- a/package-lock.json +++ b/package-lock.json @@ -112,7 +112,7 @@ "@types/react-helmet": "^6.1.11", "@types/react-infinite-scroller": "^1.2.5", "@typescript-eslint/eslint-plugin": "^8.31.1", - "@typescript-eslint/parser": "^8.35.0", + "@typescript-eslint/parser": "^8.43.0", "@vitejs/plugin-react-swc": "^3.11.0", "autoprefixer": "^10.4.21", "babel-loader": "^10.0.0", @@ -13109,15 +13109,16 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "8.35.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.35.0.tgz", - "integrity": "sha512-6sMvZePQrnZH2/cJkwRpkT7DxoAWh+g6+GFRK6bV3YQo7ogi3SX5rgF6099r5Q53Ma5qeT7LGmOmuIutF4t3lA==", + "version": "8.43.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.43.0.tgz", + "integrity": "sha512-B7RIQiTsCBBmY+yW4+ILd6mF5h1FUwJsVvpqkrgpszYifetQ2Ke+Z4u6aZh0CblkUGIdR59iYVyXqqZGkZ3aBw==", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "8.35.0", - "@typescript-eslint/types": "8.35.0", - "@typescript-eslint/typescript-estree": "8.35.0", - "@typescript-eslint/visitor-keys": "8.35.0", + "@typescript-eslint/scope-manager": "8.43.0", + "@typescript-eslint/types": "8.43.0", + "@typescript-eslint/typescript-estree": "8.43.0", + "@typescript-eslint/visitor-keys": "8.43.0", "debug": "^4.3.4" }, "engines": { @@ -13129,17 +13130,18 @@ }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.9.0" + "typescript": ">=4.8.4 <6.0.0" } }, "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/project-service": { - "version": "8.35.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.35.0.tgz", - "integrity": "sha512-41xatqRwWZuhUMF/aZm2fcUsOFKNcG28xqRSS6ZVr9BVJtGExosLAm5A1OxTjRMagx8nJqva+P5zNIGt8RIgbQ==", + "version": "8.43.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.43.0.tgz", + "integrity": "sha512-htB/+D/BIGoNTQYffZw4uM4NzzuolCoaA/BusuSIcC8YjmBYQioew5VUZAYdAETPjeed0hqCaW7EHg+Robq8uw==", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.35.0", - "@typescript-eslint/types": "^8.35.0", + "@typescript-eslint/tsconfig-utils": "^8.43.0", + "@typescript-eslint/types": "^8.43.0", "debug": "^4.3.4" }, "engines": { @@ -13150,17 +13152,18 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "typescript": ">=4.8.4 <5.9.0" + "typescript": ">=4.8.4 <6.0.0" } }, "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/scope-manager": { - "version": "8.35.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.35.0.tgz", - "integrity": "sha512-+AgL5+mcoLxl1vGjwNfiWq5fLDZM1TmTPYs2UkyHfFhgERxBbqHlNjRzhThJqz+ktBqTChRYY6zwbMwy0591AA==", + "version": "8.43.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.43.0.tgz", + "integrity": "sha512-daSWlQ87ZhsjrbMLvpuuMAt3y4ba57AuvadcR7f3nl8eS3BjRc8L9VLxFLk92RL5xdXOg6IQ+qKjjqNEimGuAg==", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.35.0", - "@typescript-eslint/visitor-keys": "8.35.0" + "@typescript-eslint/types": "8.43.0", + "@typescript-eslint/visitor-keys": "8.43.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -13171,10 +13174,11 @@ } }, "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/tsconfig-utils": { - "version": "8.35.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.35.0.tgz", - "integrity": "sha512-04k/7247kZzFraweuEirmvUj+W3bJLI9fX6fbo1Qm2YykuBvEhRTPl8tcxlYO8kZZW+HIXfkZNoasVb8EV4jpA==", + "version": "8.43.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.43.0.tgz", + "integrity": "sha512-ALC2prjZcj2YqqL5X/bwWQmHA2em6/94GcbB/KKu5SX3EBDOsqztmmX1kMkvAJHzxk7TazKzJfFiEIagNV3qEA==", "dev": true, + "license": "MIT", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, @@ -13183,14 +13187,15 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "typescript": ">=4.8.4 <5.9.0" + "typescript": ">=4.8.4 <6.0.0" } }, "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/types": { - "version": "8.35.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.35.0.tgz", - "integrity": "sha512-0mYH3emanku0vHw2aRLNGqe7EXh9WHEhi7kZzscrMDf6IIRUQ5Jk4wp1QrledE/36KtdZrVfKnE32eZCf/vaVQ==", + "version": "8.43.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.43.0.tgz", + "integrity": "sha512-vQ2FZaxJpydjSZJKiSW/LJsabFFvV7KgLC5DiLhkBcykhQj8iK9BOaDmQt74nnKdLvceM5xmhaTF+pLekrxEkw==", "dev": true, + "license": "MIT", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, @@ -13200,15 +13205,16 @@ } }, "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/typescript-estree": { - "version": "8.35.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.35.0.tgz", - "integrity": "sha512-F+BhnaBemgu1Qf8oHrxyw14wq6vbL8xwWKKMwTMwYIRmFFY/1n/9T/jpbobZL8vp7QyEUcC6xGrnAO4ua8Kp7w==", + "version": "8.43.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.43.0.tgz", + "integrity": "sha512-7Vv6zlAhPb+cvEpP06WXXy/ZByph9iL6BQRBDj4kmBsW98AqEeQHlj/13X+sZOrKSo9/rNKH4Ul4f6EICREFdw==", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/project-service": "8.35.0", - "@typescript-eslint/tsconfig-utils": "8.35.0", - "@typescript-eslint/types": "8.35.0", - "@typescript-eslint/visitor-keys": "8.35.0", + "@typescript-eslint/project-service": "8.43.0", + "@typescript-eslint/tsconfig-utils": "8.43.0", + "@typescript-eslint/types": "8.43.0", + "@typescript-eslint/visitor-keys": "8.43.0", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", @@ -13224,16 +13230,17 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "typescript": ">=4.8.4 <5.9.0" + "typescript": ">=4.8.4 <6.0.0" } }, "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/visitor-keys": { - "version": "8.35.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.35.0.tgz", - "integrity": "sha512-zTh2+1Y8ZpmeQaQVIc/ZZxsx8UzgKJyNg1PTvjzC7WMhPSVS8bfDX34k1SrwOf016qd5RU3az2UxUNue3IfQ5g==", + "version": "8.43.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.43.0.tgz", + "integrity": "sha512-T+S1KqRD4sg/bHfLwrpF/K3gQLBM1n7Rp7OjjikjTEssI2YJzQpi5WXoynOaQ93ERIuq3O8RBTOUYDKszUCEHw==", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.35.0", + "@typescript-eslint/types": "8.43.0", "eslint-visitor-keys": "^4.2.1" }, "engines": { @@ -13249,6 +13256,7 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } @@ -13258,6 +13266,7 @@ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", "dev": true, + "license": "Apache-2.0", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, @@ -13270,6 +13279,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -13285,6 +13295,7 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" }, diff --git a/package.json b/package.json index 9170d7a92..9e9c731e9 100644 --- a/package.json +++ b/package.json @@ -131,7 +131,7 @@ "@types/react-helmet": "^6.1.11", "@types/react-infinite-scroller": "^1.2.5", "@typescript-eslint/eslint-plugin": "^8.31.1", - "@typescript-eslint/parser": "^8.35.0", + "@typescript-eslint/parser": "^8.43.0", "@vitejs/plugin-react-swc": "^3.11.0", "autoprefixer": "^10.4.21", "babel-loader": "^10.0.0", From 98dc47188aac2d4dce73921328aad18dfc2b9da3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 15 Sep 2025 01:11:28 +0000 Subject: [PATCH 59/76] chore(deps): bump @datadog/browser-rum from 6.8.0 to 6.19.0 Bumps [@datadog/browser-rum](https://github.com/DataDog/browser-sdk/tree/HEAD/packages/rum) from 6.8.0 to 6.19.0. - [Release notes](https://github.com/DataDog/browser-sdk/releases) - [Changelog](https://github.com/DataDog/browser-sdk/blob/main/CHANGELOG.md) - [Commits](https://github.com/DataDog/browser-sdk/commits/v6.19.0/packages/rum) --- updated-dependencies: - dependency-name: "@datadog/browser-rum" dependency-version: 6.19.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- package-lock.json | 28 ++++++++++++++-------------- package.json | 2 +- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/package-lock.json b/package-lock.json index df62b1aea..be1d010bc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -22,7 +22,7 @@ "@capacitor/push-notifications": "^7.0.1", "@capacitor/toast": "^7.0.1", "@capgo/capacitor-social-login": "^7.6.3", - "@datadog/browser-rum": "^6.7.0", + "@datadog/browser-rum": "^6.19.0", "@emoji-mart/react": "^1.1.1", "@emotion/react": "^11.14.0", "@emotion/styled": "^11.14.1", @@ -2421,22 +2421,22 @@ } }, "node_modules/@datadog/browser-core": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/@datadog/browser-core/-/browser-core-6.8.0.tgz", - "integrity": "sha512-fB9KHx0AKVFNGNZXUnoqNqQnkHmp2fSkKY9w3A7Qx263iXsCfLZVz8ZQERDlQIhjK7O320Xead3eHx5P09wSsQ==", + "version": "6.19.0", + "resolved": "https://registry.npmjs.org/@datadog/browser-core/-/browser-core-6.19.0.tgz", + "integrity": "sha512-cyqmTXJlysZ3Tx/ZWm3dnDCUh3BT4ndtkkoBKqgEfqpM6DkUSnEFdVtsiF0gvcAkkqassaCq7OIzKo0vR24Qww==", "license": "Apache-2.0" }, "node_modules/@datadog/browser-rum": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/@datadog/browser-rum/-/browser-rum-6.8.0.tgz", - "integrity": "sha512-C9uM/MmAf3tPs74aCqzVZUhDRwV6LATvn7idQHIQdxhXvvb5ejKMF1Lf2R/EQ944Aju5HuBaoofbW8Ie4TAqUg==", + "version": "6.19.0", + "resolved": "https://registry.npmjs.org/@datadog/browser-rum/-/browser-rum-6.19.0.tgz", + "integrity": "sha512-eXkAHhAa+4dsbjvAQnl/j0qUAgJgslr1oQwtWOIpCHLedpxegbnN4/27ciz7U0r171KeJNvrKXkJIetNJx1SLQ==", "license": "Apache-2.0", "dependencies": { - "@datadog/browser-core": "6.8.0", - "@datadog/browser-rum-core": "6.8.0" + "@datadog/browser-core": "6.19.0", + "@datadog/browser-rum-core": "6.19.0" }, "peerDependencies": { - "@datadog/browser-logs": "6.8.0" + "@datadog/browser-logs": "6.19.0" }, "peerDependenciesMeta": { "@datadog/browser-logs": { @@ -2445,12 +2445,12 @@ } }, "node_modules/@datadog/browser-rum-core": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/@datadog/browser-rum-core/-/browser-rum-core-6.8.0.tgz", - "integrity": "sha512-ODKe4B9MdX+2jnGG8UoUNImrLZ4w7ZokLLREYlWSRuwFANrdpNqZgD3QDeLeA16E+TPSBkOoesj9ZZUyc6Jkwg==", + "version": "6.19.0", + "resolved": "https://registry.npmjs.org/@datadog/browser-rum-core/-/browser-rum-core-6.19.0.tgz", + "integrity": "sha512-pRzzaeGnWpORHFmhCJV23cLIlT4LA+ZRBZPBaitN5E3oMHfuwTSuU7LHhGmdBfRCaH3S60rys1bmfNwViUOR1Q==", "license": "Apache-2.0", "dependencies": { - "@datadog/browser-core": "6.8.0" + "@datadog/browser-core": "6.19.0" } }, "node_modules/@ecies/ciphers": { diff --git a/package.json b/package.json index 9e9c731e9..2c5e234f2 100644 --- a/package.json +++ b/package.json @@ -41,7 +41,7 @@ "@capacitor/push-notifications": "^7.0.1", "@capacitor/toast": "^7.0.1", "@capgo/capacitor-social-login": "^7.6.3", - "@datadog/browser-rum": "^6.7.0", + "@datadog/browser-rum": "^6.19.0", "@emoji-mart/react": "^1.1.1", "@emotion/react": "^11.14.0", "@emotion/styled": "^11.14.1", From ec6ee1f83159f6d6920622ec241c78083c2a32a7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 17 Sep 2025 15:04:09 +0000 Subject: [PATCH 60/76] chore(deps): bump @capgo/capacitor-social-login from 7.6.3 to 7.11.3 Bumps [@capgo/capacitor-social-login](https://github.com/Cap-go/capacitor-social-login) from 7.6.3 to 7.11.3. - [Changelog](https://github.com/Cap-go/capacitor-social-login/blob/main/CHANGELOG.md) - [Commits](https://github.com/Cap-go/capacitor-social-login/compare/7.6.3...7.11.3) --- updated-dependencies: - dependency-name: "@capgo/capacitor-social-login" dependency-version: 7.11.3 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- package-lock.json | 8 ++++---- package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index be1d010bc..9e33855f0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -21,7 +21,7 @@ "@capacitor/preferences": "^7.0.1", "@capacitor/push-notifications": "^7.0.1", "@capacitor/toast": "^7.0.1", - "@capgo/capacitor-social-login": "^7.6.3", + "@capgo/capacitor-social-login": "^7.11.4", "@datadog/browser-rum": "^6.19.0", "@emoji-mart/react": "^1.1.1", "@emotion/react": "^11.14.0", @@ -1481,9 +1481,9 @@ } }, "node_modules/@capgo/capacitor-social-login": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@capgo/capacitor-social-login/-/capacitor-social-login-7.6.3.tgz", - "integrity": "sha512-3XF/10OCp+dnAEGDSWojFNr4nLFfxChqt1wxbolF2ulYeqLP6ISE+z5BDxnAoyRelZO7IF3+57/oswmLDsDepQ==", + "version": "7.11.4", + "resolved": "https://registry.npmjs.org/@capgo/capacitor-social-login/-/capacitor-social-login-7.11.4.tgz", + "integrity": "sha512-EKP9qxYrm3vlVYzy02J+SvqtBf1o1XFoe+nogyRx4Aj3Eyc3KNbSoSo57Cw7uCIyfEhWQou9EZUp6oxtc6tTpw==", "license": "MIT", "peerDependencies": { "@capacitor/core": ">=7.0.0" diff --git a/package.json b/package.json index 2c5e234f2..b32897b3c 100644 --- a/package.json +++ b/package.json @@ -40,7 +40,7 @@ "@capacitor/preferences": "^7.0.1", "@capacitor/push-notifications": "^7.0.1", "@capacitor/toast": "^7.0.1", - "@capgo/capacitor-social-login": "^7.6.3", + "@capgo/capacitor-social-login": "^7.11.4", "@datadog/browser-rum": "^6.19.0", "@emoji-mart/react": "^1.1.1", "@emotion/react": "^11.14.0", From 943aeb579662b86197234ef2778d693430e5c6ae Mon Sep 17 00:00:00 2001 From: Sanaz Mahmoudi Date: Wed, 20 Aug 2025 22:01:47 +0330 Subject: [PATCH 61/76] chore: generate other languages translations with Gemini --- .env.tmp | 3 +- package.json | 6 +- src/core/generate-languages.js | 128 +++++++++++++++++++++++++++++++++ tsconfig.json | 10 ++- 4 files changed, 144 insertions(+), 3 deletions(-) create mode 100644 src/core/generate-languages.js diff --git a/.env.tmp b/.env.tmp index 3ca258d58..4e9fa287e 100644 --- a/.env.tmp +++ b/.env.tmp @@ -14,4 +14,5 @@ VITE_CLIENT_SECRET_TOKEN_REDIRECT_URL=https://app.socious.io/jobIndexing STORYBOOK_FIGMA_ACCESS_TOKEN='' VITE_GOOGLE_RECAPTCHA_SITE_KEY='' VITE_BLOCKFROST_PROJECT_ID='' -VITE_CARDANO_PAYOUT_ADERESS='' \ No newline at end of file +VITE_CARDANO_PAYOUT_ADERESS='' +GEMINI_API_KEY= \ No newline at end of file diff --git a/package.json b/package.json index b32897b3c..81ad1716c 100644 --- a/package.json +++ b/package.json @@ -24,6 +24,7 @@ "eslint:fix": "eslint --fix", "typecheck": "tsc", "typecheck:staged": "tsc-files", + "generate:translations": "node src/core/generate-languages.js", "lint": "lint-staged" }, "dependencies": { @@ -176,6 +177,9 @@ "npm run eslint:fix", "npm run prettier:fix" ], - "*.{css,scss,md}": "npm run prettier:fix" + "*.{css,scss,md}": "npm run prettier:fix", + "src/core/translation/locales/en/**/*.json": [ + "npm run generate:translations" + ] } } diff --git a/src/core/generate-languages.js b/src/core/generate-languages.js new file mode 100644 index 000000000..60b0a985a --- /dev/null +++ b/src/core/generate-languages.js @@ -0,0 +1,128 @@ +import axios from 'axios'; +import dotenv from 'dotenv'; +import fs from 'fs'; +import path from 'path'; +import process from 'process'; + +dotenv.config(); + +const DEFAULT_LANGUAGES = ['Spanish', 'Japanese', 'Korean']; +const OUTPUT_BASE = './src/core/translation/locales/'; +const fallbackLangCodes = { + spanish: 'es', + japanese: 'jp', + korean: 'kr', +}; + +// Validate API key +const apiKey = process.env.GEMINI_API_KEY; +if (!apiKey) { + console.error('❌ Missing environment variables.'); + process.exit(1); +} + +// Input files +const inputFiles = process.argv.slice(2); +if (!inputFiles.length) { + console.error('❌ No input files provided.'); + process.exit(1); +} + +// Translation using Gemini API +async function translateWithGemini(text, targetLanguage) { + try { + const response = await axios.post( + 'https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent', + { + contents: [ + { + parts: [ + { + text: `Translate the following JSON content to ${targetLanguage}. Preserve the JSON structure and keys. Only return valid JSON.\n\n${text}`, + }, + ], + }, + ], + }, + { + headers: { + 'Content-Type': 'application/json', + 'X-goog-api-key': apiKey, + }, + }, + ); + + const result = response.data; + const translated = result?.candidates?.[0]?.content?.parts?.[0]?.text; + console.log('✅ Gemini Response:', translated); + return translated.trim(); + } catch (err) { + console.error('❌ API call failed:', err.response?.data || err.message); + } +} + +// Resolve language code +function getLangCode(language) { + const lang = new Intl.DisplayNames(['en'], { type: 'language' }); + + try { + for (const code of Intl.getCanonicalLocales('en')) { + const name = lang.of(code); + if (name?.toLowerCase() === language.toLowerCase()) { + return code; + } + } + } catch (err) { + console.error(`❌ Failed to get code of ${lang}:`, err.message); + } + + return fallbackLangCodes[language.toLowerCase()] || language.toLowerCase().slice(0, 2); +} + +// Remove Gemini Response and Extract JSON +function extractJson(text) { + const match = text.match(/\{[\s\S]*\}/); + return match ? match[0] : null; +} + +// Translate a file +async function generateTranslationFile(inputFile, targetLanguages = DEFAULT_LANGUAGES, outputBase = OUTPUT_BASE) { + const originalJson = JSON.parse(fs.readFileSync(inputFile, 'utf-8')); + const originalText = JSON.stringify(originalJson, null, 2); + const inputFileName = path.basename(inputFile); + + for (const lang of targetLanguages) { + console.log(`🔄 Translating to ${lang}...`); + try { + const raw = await translateWithGemini(originalText, lang); + const translatedText = extractJson(raw) || ''; + const parsed = JSON.parse(translatedText); + + const code = getLangCode(lang); + const outputDir = path.join(outputBase, code); + const outputPath = path.join(outputDir, inputFileName); + fs.writeFileSync(outputPath, JSON.stringify(parsed, undefined, 2)); + fs.mkdirSync(outputDir, { recursive: true }); + + console.log(`✅ Saved: ${translatedText} with "${code}" code in ${outputPath}`); + } catch (err) { + console.error(`❌ Failed to translate to ${lang}:`, err.message); + } + } +} + +// Translate All Files +(async () => { + for (const inputFile of inputFiles) { + if (!inputFile.endsWith('.json') || !fs.existsSync(inputFile)) { + console.error(`❌ Skipping invalid file: ${inputFile}`); + continue; + } + + try { + await generateTranslationFile(inputFile); + } catch (err) { + console.error(`❌ Error processing file ${inputFile}:`, err.message); + } + } +})(); diff --git a/tsconfig.json b/tsconfig.json index ada16f581..5d0699278 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -19,7 +19,15 @@ "noEmit": true, "jsx": "react-jsx" }, - "include": ["cypress", "src", "**/*.ts", "**/*.tsx", "tailwind.config.js", "postcss.config.js"], + "include": [ + "cypress", + "src", + "**/*.ts", + "**/*.tsx", + "tailwind.config.js", + "postcss.config.js", + "generate-languages.js" + ], "typesOnlyInclude": ["**/*.d.ts", "tailwind.config.js", "postcss.config.js"], "exclude": ["node_modules", "vite.config.ts"], "references": [{ "path": "./tsconfig.node.json" }] From 33ab4bb942251042f03107ebc5479256f77c2248 Mon Sep 17 00:00:00 2001 From: Sanaz Mahmoudi Date: Wed, 17 Sep 2025 19:28:58 +0330 Subject: [PATCH 62/76] fix: min value for undefined state in amount field --- src/modules/Jobs/containers/OrgOfferModal/index.tsx | 2 +- src/modules/Jobs/containers/OrgOfferModal/useOrgOffer.tsx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/modules/Jobs/containers/OrgOfferModal/index.tsx b/src/modules/Jobs/containers/OrgOfferModal/index.tsx index bbd6f388b..f16f37cb5 100644 --- a/src/modules/Jobs/containers/OrgOfferModal/index.tsx +++ b/src/modules/Jobs/containers/OrgOfferModal/index.tsx @@ -117,7 +117,7 @@ export const OrgOfferModal: React.FC = ({ open, onClose, app
)}
-
Offer amount*
+ {renderFieldInfo('Offer amount*', '')} { .typeError('Offer amount is required') .required('Offer amount is required') .test('is-positive', 'Offer amount should be positive', value => typeof value === 'number' && value > 0) - .min(minValue, minValue !== undefined ? `Offer amount must be at least ${minValue}.` : ''); + .min(minValue || 0, minValue !== undefined ? `Offer amount must be at least ${minValue}.` : ''); }), currency: yup.string().when(['paymentType', 'paymentMethod'], ([paymentType, paymentMethod], schema) => { if (paymentType === 'VOLUNTEER') { From c6fb7973fc12d88b806d8cbbd7c9cffa7eb1ba81 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 22 Sep 2025 01:08:44 +0000 Subject: [PATCH 63/76] chore(deps-dev): bump jest-environment-jsdom from 30.0.5 to 30.1.2 Bumps [jest-environment-jsdom](https://github.com/jestjs/jest/tree/HEAD/packages/jest-environment-jsdom) from 30.0.5 to 30.1.2. - [Release notes](https://github.com/jestjs/jest/releases) - [Changelog](https://github.com/jestjs/jest/blob/main/CHANGELOG.md) - [Commits](https://github.com/jestjs/jest/commits/v30.1.2/packages/jest-environment-jsdom) --- updated-dependencies: - dependency-name: jest-environment-jsdom dependency-version: 30.1.2 dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- package-lock.json | 84 +++++++++++++++++++++++------------------------ package.json | 2 +- 2 files changed, 43 insertions(+), 43 deletions(-) diff --git a/package-lock.json b/package-lock.json index 9e33855f0..24de1a22a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -133,7 +133,7 @@ "husky": "^9.1.7", "identity-obj-proxy": "^3.0.0", "jest": "^29.7.0", - "jest-environment-jsdom": "^30.0.5", + "jest-environment-jsdom": "^30.1.2", "lint-staged": "^16.0.0", "postcss": "^8.5.6", "prettier": "^3.6.2", @@ -4714,14 +4714,14 @@ } }, "node_modules/@jest/environment-jsdom-abstract": { - "version": "30.0.5", - "resolved": "https://registry.npmjs.org/@jest/environment-jsdom-abstract/-/environment-jsdom-abstract-30.0.5.tgz", - "integrity": "sha512-gpWwiVxZunkoglP8DCnT3As9x5O8H6gveAOpvaJd2ATAoSh7ZSSCWbr9LQtUMvr8WD3VjG9YnDhsmkCK5WN1rQ==", + "version": "30.1.2", + "resolved": "https://registry.npmjs.org/@jest/environment-jsdom-abstract/-/environment-jsdom-abstract-30.1.2.tgz", + "integrity": "sha512-u8kTh/ZBl97GOmnGJLYK/1GuwAruMC4hoP6xuk/kwltmVWsA9u/6fH1/CsPVGt2O+Wn2yEjs8n1B1zZJ62Cx0w==", "dev": true, "license": "MIT", "dependencies": { - "@jest/environment": "30.0.5", - "@jest/fake-timers": "30.0.5", + "@jest/environment": "30.1.2", + "@jest/fake-timers": "30.1.2", "@jest/types": "30.0.5", "@types/jsdom": "^21.1.7", "@types/node": "*", @@ -4742,13 +4742,13 @@ } }, "node_modules/@jest/environment-jsdom-abstract/node_modules/@jest/environment": { - "version": "30.0.5", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-30.0.5.tgz", - "integrity": "sha512-aRX7WoaWx1oaOkDQvCWImVQ8XNtdv5sEWgk4gxR6NXb7WBUnL5sRak4WRzIQRZ1VTWPvV4VI4mgGjNL9TeKMYA==", + "version": "30.1.2", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-30.1.2.tgz", + "integrity": "sha512-N8t1Ytw4/mr9uN28OnVf0SYE2dGhaIxOVYcwsf9IInBKjvofAjbFRvedvBBlyTYk2knbJTiEjEJ2PyyDIBnd9w==", "dev": true, "license": "MIT", "dependencies": { - "@jest/fake-timers": "30.0.5", + "@jest/fake-timers": "30.1.2", "@jest/types": "30.0.5", "@types/node": "*", "jest-mock": "30.0.5" @@ -4758,16 +4758,16 @@ } }, "node_modules/@jest/environment-jsdom-abstract/node_modules/@jest/fake-timers": { - "version": "30.0.5", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-30.0.5.tgz", - "integrity": "sha512-ZO5DHfNV+kgEAeP3gK3XlpJLL4U3Sz6ebl/n68Uwt64qFFs5bv4bfEEjyRGK5uM0C90ewooNgFuKMdkbEoMEXw==", + "version": "30.1.2", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-30.1.2.tgz", + "integrity": "sha512-Beljfv9AYkr9K+ETX9tvV61rJTY706BhBUtiaepQHeEGfe0DbpvUA5Z3fomwc5Xkhns6NWrcFDZn+72fLieUnA==", "dev": true, "license": "MIT", "dependencies": { "@jest/types": "30.0.5", "@sinonjs/fake-timers": "^13.0.0", "@types/node": "*", - "jest-message-util": "30.0.5", + "jest-message-util": "30.1.0", "jest-mock": "30.0.5", "jest-util": "30.0.5" }, @@ -4808,9 +4808,9 @@ } }, "node_modules/@jest/environment-jsdom-abstract/node_modules/@sinclair/typebox": { - "version": "0.34.40", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.40.tgz", - "integrity": "sha512-gwBNIP8ZAYev/ORDWW0QvxdwPXwxBtLsdsJgSc7eDIRt8ubP+rxUBzPsrwnu16fgEF8Bx4lh/+mvQvJzcTM6Kw==", + "version": "0.34.41", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.41.tgz", + "integrity": "sha512-6gS8pZzSXdyRHTIqoqSVknxolr1kzfy4/CeDnrzsVz8TTIWUbOBr6gnzOmTYJ3eXQNh4IYHIGi5aIL7sOZ2G/g==", "dev": true, "license": "MIT" }, @@ -4838,9 +4838,9 @@ } }, "node_modules/@jest/environment-jsdom-abstract/node_modules/jest-message-util": { - "version": "30.0.5", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.0.5.tgz", - "integrity": "sha512-NAiDOhsK3V7RU0Aa/HnrQo+E4JlbarbmI3q6Pi4KcxicdtjV82gcIUrejOtczChtVQR4kddu1E1EJlW6EN9IyA==", + "version": "30.1.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.1.0.tgz", + "integrity": "sha512-HizKDGG98cYkWmaLUHChq4iN+oCENohQLb7Z5guBPumYs+/etonmNFlg1Ps6yN9LTPyZn+M+b/9BbnHx3WTMDg==", "dev": true, "license": "MIT", "dependencies": { @@ -26342,14 +26342,14 @@ "license": "MIT" }, "node_modules/jest-environment-jsdom": { - "version": "30.0.5", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-30.0.5.tgz", - "integrity": "sha512-BmnDEoAH+jEjkPrvE9DTKS2r3jYSJWlN/r46h0/DBUxKrkgt2jAZ5Nj4wXLAcV1KWkRpcFqA5zri9SWzJZ1cCg==", + "version": "30.1.2", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-30.1.2.tgz", + "integrity": "sha512-LXsfAh5+mDTuXDONGl1ZLYxtJEaS06GOoxJb2arcJTjIfh1adYg8zLD8f6P0df8VmjvCaMrLmc1PgHUI/YUTbg==", "dev": true, "license": "MIT", "dependencies": { - "@jest/environment": "30.0.5", - "@jest/environment-jsdom-abstract": "30.0.5", + "@jest/environment": "30.1.2", + "@jest/environment-jsdom-abstract": "30.1.2", "@types/jsdom": "^21.1.7", "@types/node": "*", "jsdom": "^26.1.0" @@ -26367,13 +26367,13 @@ } }, "node_modules/jest-environment-jsdom/node_modules/@jest/environment": { - "version": "30.0.5", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-30.0.5.tgz", - "integrity": "sha512-aRX7WoaWx1oaOkDQvCWImVQ8XNtdv5sEWgk4gxR6NXb7WBUnL5sRak4WRzIQRZ1VTWPvV4VI4mgGjNL9TeKMYA==", + "version": "30.1.2", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-30.1.2.tgz", + "integrity": "sha512-N8t1Ytw4/mr9uN28OnVf0SYE2dGhaIxOVYcwsf9IInBKjvofAjbFRvedvBBlyTYk2knbJTiEjEJ2PyyDIBnd9w==", "dev": true, "license": "MIT", "dependencies": { - "@jest/fake-timers": "30.0.5", + "@jest/fake-timers": "30.1.2", "@jest/types": "30.0.5", "@types/node": "*", "jest-mock": "30.0.5" @@ -26383,16 +26383,16 @@ } }, "node_modules/jest-environment-jsdom/node_modules/@jest/fake-timers": { - "version": "30.0.5", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-30.0.5.tgz", - "integrity": "sha512-ZO5DHfNV+kgEAeP3gK3XlpJLL4U3Sz6ebl/n68Uwt64qFFs5bv4bfEEjyRGK5uM0C90ewooNgFuKMdkbEoMEXw==", + "version": "30.1.2", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-30.1.2.tgz", + "integrity": "sha512-Beljfv9AYkr9K+ETX9tvV61rJTY706BhBUtiaepQHeEGfe0DbpvUA5Z3fomwc5Xkhns6NWrcFDZn+72fLieUnA==", "dev": true, "license": "MIT", "dependencies": { "@jest/types": "30.0.5", "@sinonjs/fake-timers": "^13.0.0", "@types/node": "*", - "jest-message-util": "30.0.5", + "jest-message-util": "30.1.0", "jest-mock": "30.0.5", "jest-util": "30.0.5" }, @@ -26433,9 +26433,9 @@ } }, "node_modules/jest-environment-jsdom/node_modules/@sinclair/typebox": { - "version": "0.34.40", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.40.tgz", - "integrity": "sha512-gwBNIP8ZAYev/ORDWW0QvxdwPXwxBtLsdsJgSc7eDIRt8ubP+rxUBzPsrwnu16fgEF8Bx4lh/+mvQvJzcTM6Kw==", + "version": "0.34.41", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.41.tgz", + "integrity": "sha512-6gS8pZzSXdyRHTIqoqSVknxolr1kzfy4/CeDnrzsVz8TTIWUbOBr6gnzOmTYJ3eXQNh4IYHIGi5aIL7sOZ2G/g==", "dev": true, "license": "MIT" }, @@ -26463,9 +26463,9 @@ } }, "node_modules/jest-environment-jsdom/node_modules/jest-message-util": { - "version": "30.0.5", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.0.5.tgz", - "integrity": "sha512-NAiDOhsK3V7RU0Aa/HnrQo+E4JlbarbmI3q6Pi4KcxicdtjV82gcIUrejOtczChtVQR4kddu1E1EJlW6EN9IyA==", + "version": "30.1.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.1.0.tgz", + "integrity": "sha512-HizKDGG98cYkWmaLUHChq4iN+oCENohQLb7Z5guBPumYs+/etonmNFlg1Ps6yN9LTPyZn+M+b/9BbnHx3WTMDg==", "dev": true, "license": "MIT", "dependencies": { @@ -32526,9 +32526,9 @@ } }, "node_modules/nwsapi": { - "version": "2.2.21", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.21.tgz", - "integrity": "sha512-o6nIY3qwiSXl7/LuOU0Dmuctd34Yay0yeuZRLFmDPrrdHpXKFndPj3hM+YEPVHYC5fx2otBx4Ilc/gyYSAUaIA==", + "version": "2.2.22", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.22.tgz", + "integrity": "sha512-ujSMe1OWVn55euT1ihwCI1ZcAaAU3nxUiDwfDQldc51ZXaB9m2AyOn6/jh1BLe2t/G8xd6uKG1UBF2aZJeg2SQ==", "dev": true, "license": "MIT" }, diff --git a/package.json b/package.json index 81ad1716c..038286cca 100644 --- a/package.json +++ b/package.json @@ -153,7 +153,7 @@ "husky": "^9.1.7", "identity-obj-proxy": "^3.0.0", "jest": "^29.7.0", - "jest-environment-jsdom": "^30.0.5", + "jest-environment-jsdom": "^30.1.2", "lint-staged": "^16.0.0", "postcss": "^8.5.6", "prettier": "^3.6.2", From d8e7ca8334b6d0b2c0df28618c1c628c78194214 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 22 Sep 2025 01:09:45 +0000 Subject: [PATCH 64/76] chore(deps): bump @capacitor/ios from 7.2.0 to 7.4.3 Bumps [@capacitor/ios](https://github.com/ionic-team/capacitor) from 7.2.0 to 7.4.3. - [Release notes](https://github.com/ionic-team/capacitor/releases) - [Changelog](https://github.com/ionic-team/capacitor/blob/7.4.3/CHANGELOG.md) - [Commits](https://github.com/ionic-team/capacitor/compare/7.2.0...7.4.3) --- updated-dependencies: - dependency-name: "@capacitor/ios" dependency-version: 7.4.3 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- package-lock.json | 10 +++++----- package.json | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 24de1a22a..e146291e0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,7 +17,7 @@ "@capacitor/core": "^7.4.2", "@capacitor/dialog": "^7.0.1", "@capacitor/haptics": "^7.0.1", - "@capacitor/ios": "^7.2.0", + "@capacitor/ios": "^7.4.3", "@capacitor/preferences": "^7.0.1", "@capacitor/push-notifications": "^7.0.1", "@capacitor/toast": "^7.0.1", @@ -1445,12 +1445,12 @@ } }, "node_modules/@capacitor/ios": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@capacitor/ios/-/ios-7.2.0.tgz", - "integrity": "sha512-MQgRZcXZpbpjN83bjkGrzQd7s3XeHBZplmWf38/msF/siMGJKLrXNmNzmmPIWA5Xpi/aH6UoJFk1wXuU2U+zMg==", + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/@capacitor/ios/-/ios-7.4.3.tgz", + "integrity": "sha512-VNm7cHODgh3KK/4ZC2rXU9gBlvHii/mYFLI+XMXwq24nhB679QxHhz+pUuI7PatYoM2q4MAL0NR/dRgehKCaSA==", "license": "MIT", "peerDependencies": { - "@capacitor/core": "^7.2.0" + "@capacitor/core": "^7.4.0" } }, "node_modules/@capacitor/preferences": { diff --git a/package.json b/package.json index 038286cca..b8d9f5250 100644 --- a/package.json +++ b/package.json @@ -37,7 +37,7 @@ "@capacitor/core": "^7.4.2", "@capacitor/dialog": "^7.0.1", "@capacitor/haptics": "^7.0.1", - "@capacitor/ios": "^7.2.0", + "@capacitor/ios": "^7.4.3", "@capacitor/preferences": "^7.0.1", "@capacitor/push-notifications": "^7.0.1", "@capacitor/toast": "^7.0.1", From 7ca894c514bf973cf82c813beb383b7698d977c3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 22 Sep 2025 01:10:24 +0000 Subject: [PATCH 65/76] chore(deps): bump axios from 1.10.0 to 1.12.2 Bumps [axios](https://github.com/axios/axios) from 1.10.0 to 1.12.2. - [Release notes](https://github.com/axios/axios/releases) - [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md) - [Commits](https://github.com/axios/axios/compare/v1.10.0...v1.12.2) --- updated-dependencies: - dependency-name: axios dependency-version: 1.12.2 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- package-lock.json | 10 +++++----- package.json | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index e146291e0..d3508ad76 100644 --- a/package-lock.json +++ b/package-lock.json @@ -38,7 +38,7 @@ "@tanstack/react-query": "^5.83.0", "@tanstack/react-table": "^8.21.3", "@web3modal/ethers": "^5.1.11", - "axios": "^1.10.0", + "axios": "^1.12.2", "cardano-bridge": "github:socious-io/cardano-bridge#v0.0.6", "country-flag-icons": "^1.5.19", "dotenv": "^17.2.1", @@ -17772,13 +17772,13 @@ } }, "node_modules/axios": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.10.0.tgz", - "integrity": "sha512-/1xYAC4MP/HEG+3duIhFr4ZQXR4sQXOIe+o6sdqzeykGLx6Upp/1p8MHqhINOvGeP7xyNHe7tsiJByc4SSVUxw==", + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.12.2.tgz", + "integrity": "sha512-vMJzPewAlRyOgxV2dU0Cuz2O8zzzx9VYtbJOaBgXFeLc4IV/Eg50n4LowmehOOR61S8ZMpc2K5Sa7g6A4jfkUw==", "license": "MIT", "dependencies": { "follow-redirects": "^1.15.6", - "form-data": "^4.0.0", + "form-data": "^4.0.4", "proxy-from-env": "^1.1.0" } }, diff --git a/package.json b/package.json index b8d9f5250..b149ae627 100644 --- a/package.json +++ b/package.json @@ -58,7 +58,7 @@ "@tanstack/react-query": "^5.83.0", "@tanstack/react-table": "^8.21.3", "@web3modal/ethers": "^5.1.11", - "axios": "^1.10.0", + "axios": "^1.12.2", "cardano-bridge": "github:socious-io/cardano-bridge#v0.0.6", "country-flag-icons": "^1.5.19", "dotenv": "^17.2.1", From cb7c9054e0f10f50f7e4cda6afef77583a0cf7fe Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 22 Sep 2025 01:09:28 +0000 Subject: [PATCH 66/76] chore(deps): bump wagmi from 2.16.1 to 2.17.1 Bumps [wagmi](https://github.com/wevm/wagmi/tree/HEAD/packages/react) from 2.16.1 to 2.17.1. - [Release notes](https://github.com/wevm/wagmi/releases) - [Changelog](https://github.com/wevm/wagmi/blob/main/packages/react/CHANGELOG.md) - [Commits](https://github.com/wevm/wagmi/commits/@wagmi/core@2.17.1/packages/react) --- updated-dependencies: - dependency-name: wagmi dependency-version: 2.17.1 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- package-lock.json | 523 +++++++++++++++++++++++++++++++++++++--------- package.json | 2 +- 2 files changed, 427 insertions(+), 98 deletions(-) diff --git a/package-lock.json b/package-lock.json index d3508ad76..3d9d975c9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -75,7 +75,7 @@ "viem": "^2.31.7", "vite-plugin-node-polyfills": "^0.24.0", "vite-tsconfig-paths": "^5.1.4", - "wagmi": "^2.15.6", + "wagmi": "^2.17.1", "yup": "^1.7.0" }, "devDependencies": { @@ -722,9 +722,9 @@ } }, "node_modules/@base-org/account/node_modules/@noble/curves": { - "version": "1.9.6", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.9.6.tgz", - "integrity": "sha512-GIKz/j99FRthB8icyJQA51E8Uk5hXmdyThjgQXRKiv9h0zeRlzSCLIzFw6K1LotZ3XuB7yzlf76qk7uBmTdFqA==", + "version": "1.9.7", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.9.7.tgz", + "integrity": "sha512-gbKGcRUYIjA3/zCCNaWDciTMFI0dCkvou3TL8Zmy5Nc7sJ47a0jtOeZoTaMxkuqRo9cRhjOdZJXegxYE5FN/xw==", "license": "MIT", "dependencies": { "@noble/hashes": "1.8.0" @@ -3967,6 +3967,79 @@ "integrity": "sha512-DjIZsnL3CyP/yQ/vUYA9cjrD0a/8YXejI5ZmsaOiT16cLfZcTwaCxIN01/ys4jsy+dZCQ/9DnWFn7AEFbiMDaA==", "license": "MIT" }, + "node_modules/@gemini-wallet/core": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@gemini-wallet/core/-/core-0.2.0.tgz", + "integrity": "sha512-vv9aozWnKrrPWQ3vIFcWk7yta4hQW1Ie0fsNNPeXnjAxkbXr2hqMagEptLuMxpEP2W3mnRu05VDNKzcvAuuZDw==", + "license": "MIT", + "dependencies": { + "@metamask/rpc-errors": "7.0.2", + "eventemitter3": "5.0.1" + }, + "peerDependencies": { + "viem": ">=2.0.0" + } + }, + "node_modules/@gemini-wallet/core/node_modules/@metamask/rpc-errors": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@metamask/rpc-errors/-/rpc-errors-7.0.2.tgz", + "integrity": "sha512-YYYHsVYd46XwY2QZzpGeU4PSdRhHdxnzkB8piWGvJW2xbikZ3R+epAYEL4q/K8bh9JPTucsUdwRFnACor1aOYw==", + "license": "MIT", + "dependencies": { + "@metamask/utils": "^11.0.1", + "fast-safe-stringify": "^2.0.6" + }, + "engines": { + "node": "^18.20 || ^20.17 || >=22" + } + }, + "node_modules/@gemini-wallet/core/node_modules/@metamask/utils": { + "version": "11.8.0", + "resolved": "https://registry.npmjs.org/@metamask/utils/-/utils-11.8.0.tgz", + "integrity": "sha512-EJqiuvVBAjV1vd1kBhmVmRtGfadrBfY3ImcAMjl+8MSSByTB3VNwvlIBLQdp+TwdAomUdenJCx2BvOSQykm8Hg==", + "license": "ISC", + "dependencies": { + "@ethereumjs/tx": "^4.2.0", + "@metamask/superstruct": "^3.1.0", + "@noble/hashes": "^1.3.1", + "@scure/base": "^1.1.3", + "@types/debug": "^4.1.7", + "@types/lodash": "^4.17.20", + "debug": "^4.3.4", + "lodash": "^4.17.21", + "pony-cause": "^2.1.10", + "semver": "^7.5.4", + "uuid": "^9.0.1" + }, + "engines": { + "node": "^18.18 || ^20.14 || >=22" + } + }, + "node_modules/@gemini-wallet/core/node_modules/semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@gemini-wallet/core/node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, "node_modules/@grpc/grpc-js": { "version": "1.9.15", "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.9.15.tgz", @@ -5675,6 +5748,7 @@ "version": "0.32.0", "resolved": "https://registry.npmjs.org/@metamask/sdk/-/sdk-0.32.0.tgz", "integrity": "sha512-WmGAlP1oBuD9hk4CsdlG1WJFuPtYJY+dnTHJMeCyohTWD2GgkcLMUUuvu9lO1/NVzuOoSi1OrnjbuY1O/1NZ1g==", + "optional": true, "dependencies": { "@babel/runtime": "^7.26.0", "@metamask/onboarding": "^1.0.1", @@ -5697,10 +5771,20 @@ "uuid": "^8.3.2" } }, + "node_modules/@metamask/sdk-analytics": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/@metamask/sdk-analytics/-/sdk-analytics-0.0.5.tgz", + "integrity": "sha512-fDah+keS1RjSUlC8GmYXvx6Y26s3Ax1U9hGpWb6GSY5SAdmTSIqp2CvYy6yW0WgLhnYhW+6xERuD0eVqV63QIQ==", + "license": "MIT", + "dependencies": { + "openapi-fetch": "^0.13.5" + } + }, "node_modules/@metamask/sdk-communication-layer": { "version": "0.32.0", "resolved": "https://registry.npmjs.org/@metamask/sdk-communication-layer/-/sdk-communication-layer-0.32.0.tgz", "integrity": "sha512-dmj/KFjMi1fsdZGIOtbhxdg3amxhKL/A5BqSU4uh/SyDKPub/OT+x5pX8bGjpTL1WPWY/Q0OIlvFyX3VWnT06Q==", + "optional": true, "dependencies": { "bufferutil": "^4.0.8", "date-fns": "^2.29.3", @@ -5721,6 +5805,7 @@ "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", "license": "MIT", + "optional": true, "bin": { "uuid": "dist/bin/uuid" } @@ -5729,6 +5814,7 @@ "version": "0.32.0", "resolved": "https://registry.npmjs.org/@metamask/sdk-install-modal-web/-/sdk-install-modal-web-0.32.0.tgz", "integrity": "sha512-TFoktj0JgfWnQaL3yFkApqNwcaqJ+dw4xcnrJueMP3aXkSNev2Ido+WVNOg4IIMxnmOrfAC9t0UJ0u/dC9MjOQ==", + "optional": true, "dependencies": { "@paulmillr/qr": "^0.2.1" } @@ -5738,6 +5824,7 @@ "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", "license": "MIT", + "optional": true, "bin": { "uuid": "dist/bin/uuid" } @@ -12800,10 +12887,9 @@ "license": "MIT" }, "node_modules/@types/lodash": { - "version": "4.17.17", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.17.tgz", - "integrity": "sha512-RRVJ+J3J+WmyOTqnz3PiBLA501eKwXl2noseKOrNo/6+XEHjTAxO4xHvxQB6QuNm+s4WRbn6rSiap8+EA+ykFQ==", - "dev": true, + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-H3MHACvFUEiujabxhaI/ImO6gUrd8oOurg7LQtS7mbwIXA/cUqWrvBsaeJ23aZEPk1TAYkurjfMbSELfoCXlGA==", "license": "MIT" }, "node_modules/@types/mdx": { @@ -32783,6 +32869,21 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/openapi-fetch": { + "version": "0.13.8", + "resolved": "https://registry.npmjs.org/openapi-fetch/-/openapi-fetch-0.13.8.tgz", + "integrity": "sha512-yJ4QKRyNxE44baQ9mY5+r/kAzZ8yXMemtNAOFwOzRXJscdjSxxzWSNlyBAr+o5JjkUw9Lc3W7OIoca0cY3PYnQ==", + "license": "MIT", + "dependencies": { + "openapi-typescript-helpers": "^0.0.15" + } + }, + "node_modules/openapi-typescript-helpers": { + "version": "0.0.15", + "resolved": "https://registry.npmjs.org/openapi-typescript-helpers/-/openapi-typescript-helpers-0.0.15.tgz", + "integrity": "sha512-opyTPaunsklCBpTK8JGef6mfPhLSnyy5a0IN9vKtx3+4aExf+KxEqYwIy3hqkedXIB97u357uLMJsOnm3GVjsw==", + "license": "MIT" + }, "node_modules/optionator": { "version": "0.9.4", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", @@ -39304,13 +39405,13 @@ } }, "node_modules/wagmi": { - "version": "2.16.1", - "resolved": "https://registry.npmjs.org/wagmi/-/wagmi-2.16.1.tgz", - "integrity": "sha512-iUdaoe/xd5NiNRW72QVctZs+962EORJKAvJTCsmf9n6TnEApPlENuvVRJKgobI4cGUgi5scWAstpLprB+RRo9Q==", + "version": "2.17.1", + "resolved": "https://registry.npmjs.org/wagmi/-/wagmi-2.17.1.tgz", + "integrity": "sha512-Y1CTRPENz/+A0fRgezmdkpTUoRnzDe+OUd+x2+nVPWuffoNDXVLAs/d3qFA18Z5/3B8u2/2/E8ntP1McunfisQ==", "license": "MIT", "dependencies": { - "@wagmi/connectors": "5.9.1", - "@wagmi/core": "2.18.1", + "@wagmi/connectors": "5.10.1", + "@wagmi/core": "2.21.0", "use-sync-external-store": "1.4.0" }, "funding": { @@ -39373,6 +39474,61 @@ } } }, + "node_modules/wagmi/node_modules/@metamask/sdk": { + "version": "0.33.1", + "resolved": "https://registry.npmjs.org/@metamask/sdk/-/sdk-0.33.1.tgz", + "integrity": "sha512-1mcOQVGr9rSrVcbKPNVzbZ8eCl1K0FATsYH3WJ/MH4WcZDWGECWrXJPNMZoEAkLxWiMe8jOQBumg2pmcDa9zpQ==", + "dependencies": { + "@babel/runtime": "^7.26.0", + "@metamask/onboarding": "^1.0.1", + "@metamask/providers": "16.1.0", + "@metamask/sdk-analytics": "0.0.5", + "@metamask/sdk-communication-layer": "0.33.1", + "@metamask/sdk-install-modal-web": "0.32.1", + "@paulmillr/qr": "^0.2.1", + "bowser": "^2.9.0", + "cross-fetch": "^4.0.0", + "debug": "4.3.4", + "eciesjs": "^0.4.11", + "eth-rpc-errors": "^4.0.3", + "eventemitter2": "^6.4.9", + "obj-multiplex": "^1.0.0", + "pump": "^3.0.0", + "readable-stream": "^3.6.2", + "socket.io-client": "^4.5.1", + "tslib": "^2.6.0", + "util": "^0.12.4", + "uuid": "^8.3.2" + } + }, + "node_modules/wagmi/node_modules/@metamask/sdk-communication-layer": { + "version": "0.33.1", + "resolved": "https://registry.npmjs.org/@metamask/sdk-communication-layer/-/sdk-communication-layer-0.33.1.tgz", + "integrity": "sha512-0bI9hkysxcfbZ/lk0T2+aKVo1j0ynQVTuB3sJ5ssPWlz+Z3VwveCkP1O7EVu1tsVVCb0YV5WxK9zmURu2FIiaA==", + "dependencies": { + "@metamask/sdk-analytics": "0.0.5", + "bufferutil": "^4.0.8", + "date-fns": "^2.29.3", + "debug": "4.3.4", + "utf-8-validate": "^5.0.2", + "uuid": "^8.3.2" + }, + "peerDependencies": { + "cross-fetch": "^4.0.0", + "eciesjs": "*", + "eventemitter2": "^6.4.9", + "readable-stream": "^3.6.2", + "socket.io-client": "^4.5.1" + } + }, + "node_modules/wagmi/node_modules/@metamask/sdk-install-modal-web": { + "version": "0.32.1", + "resolved": "https://registry.npmjs.org/@metamask/sdk-install-modal-web/-/sdk-install-modal-web-0.32.1.tgz", + "integrity": "sha512-MGmAo6qSjf1tuYXhCu2EZLftq+DSt5Z7fsIKr2P+lDgdTPWgLfZB1tJKzNcwKKOdf6q9Qmmxn7lJuI/gq5LrKw==", + "dependencies": { + "@paulmillr/qr": "^0.2.1" + } + }, "node_modules/wagmi/node_modules/@noble/curves": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.8.1.tgz", @@ -39649,6 +39805,21 @@ } } }, + "node_modules/wagmi/node_modules/@reown/appkit-controllers/node_modules/isows": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/isows/-/isows-1.0.6.tgz", + "integrity": "sha512-lPHCayd40oW98/I0uvgaHKWCSvkzY27LjWLbtzOm64yQ+G3Q5npjjbdppU65iZXkK1Zt+kH9pfegli0AYfwYYw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/wevm" + } + ], + "license": "MIT", + "peerDependencies": { + "ws": "*" + } + }, "node_modules/wagmi/node_modules/@reown/appkit-controllers/node_modules/ox": { "version": "0.6.7", "resolved": "https://registry.npmjs.org/ox/-/ox-0.6.7.tgz", @@ -39679,17 +39850,17 @@ } }, "node_modules/wagmi/node_modules/@reown/appkit-controllers/node_modules/unstorage": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.16.1.tgz", - "integrity": "sha512-gdpZ3guLDhz+zWIlYP1UwQ259tG5T5vYRzDaHMkQ1bBY1SQPutvZnrRjTFaWUUpseErJIgAZS51h6NOcZVZiqQ==", + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.17.1.tgz", + "integrity": "sha512-KKGwRTT0iVBCErKemkJCLs7JdxNVfqTPc/85ae1XES0+bsHbc/sFBfVi5kJp156cc51BHinIH2l3k0EZ24vOBQ==", "license": "MIT", "dependencies": { "anymatch": "^3.1.3", "chokidar": "^4.0.3", "destr": "^2.0.5", - "h3": "^1.15.3", + "h3": "^1.15.4", "lru-cache": "^10.4.3", - "node-fetch-native": "^1.6.6", + "node-fetch-native": "^1.6.7", "ofetch": "^1.4.1", "ufo": "^1.6.1" }, @@ -39706,6 +39877,7 @@ "@planetscale/database": "^1.19.0", "@upstash/redis": "^1.34.3", "@vercel/blob": ">=0.27.1", + "@vercel/functions": "^2.2.12 || ^3.0.0", "@vercel/kv": "^1.0.1", "aws4fetch": "^1.0.20", "db0": ">=0.2.1", @@ -39750,6 +39922,9 @@ "@vercel/blob": { "optional": true }, + "@vercel/functions": { + "optional": true + }, "@vercel/kv": { "optional": true }, @@ -39770,6 +39945,27 @@ } } }, + "node_modules/wagmi/node_modules/@reown/appkit-controllers/node_modules/ws": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", + "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, "node_modules/wagmi/node_modules/@reown/appkit-pay": { "version": "1.7.8", "resolved": "https://registry.npmjs.org/@reown/appkit-pay/-/appkit-pay-1.7.8.tgz", @@ -40031,6 +40227,21 @@ } } }, + "node_modules/wagmi/node_modules/@reown/appkit-utils/node_modules/isows": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/isows/-/isows-1.0.6.tgz", + "integrity": "sha512-lPHCayd40oW98/I0uvgaHKWCSvkzY27LjWLbtzOm64yQ+G3Q5npjjbdppU65iZXkK1Zt+kH9pfegli0AYfwYYw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/wevm" + } + ], + "license": "MIT", + "peerDependencies": { + "ws": "*" + } + }, "node_modules/wagmi/node_modules/@reown/appkit-utils/node_modules/ox": { "version": "0.6.7", "resolved": "https://registry.npmjs.org/ox/-/ox-0.6.7.tgz", @@ -40061,17 +40272,17 @@ } }, "node_modules/wagmi/node_modules/@reown/appkit-utils/node_modules/unstorage": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.16.1.tgz", - "integrity": "sha512-gdpZ3guLDhz+zWIlYP1UwQ259tG5T5vYRzDaHMkQ1bBY1SQPutvZnrRjTFaWUUpseErJIgAZS51h6NOcZVZiqQ==", + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.17.1.tgz", + "integrity": "sha512-KKGwRTT0iVBCErKemkJCLs7JdxNVfqTPc/85ae1XES0+bsHbc/sFBfVi5kJp156cc51BHinIH2l3k0EZ24vOBQ==", "license": "MIT", "dependencies": { "anymatch": "^3.1.3", "chokidar": "^4.0.3", "destr": "^2.0.5", - "h3": "^1.15.3", + "h3": "^1.15.4", "lru-cache": "^10.4.3", - "node-fetch-native": "^1.6.6", + "node-fetch-native": "^1.6.7", "ofetch": "^1.4.1", "ufo": "^1.6.1" }, @@ -40088,6 +40299,7 @@ "@planetscale/database": "^1.19.0", "@upstash/redis": "^1.34.3", "@vercel/blob": ">=0.27.1", + "@vercel/functions": "^2.2.12 || ^3.0.0", "@vercel/kv": "^1.0.1", "aws4fetch": "^1.0.20", "db0": ">=0.2.1", @@ -40132,6 +40344,9 @@ "@vercel/blob": { "optional": true }, + "@vercel/functions": { + "optional": true + }, "@vercel/kv": { "optional": true }, @@ -40152,6 +40367,27 @@ } } }, + "node_modules/wagmi/node_modules/@reown/appkit-utils/node_modules/ws": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", + "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, "node_modules/wagmi/node_modules/@reown/appkit-wallet": { "version": "1.7.8", "resolved": "https://registry.npmjs.org/@reown/appkit-wallet/-/appkit-wallet-1.7.8.tgz", @@ -40356,6 +40592,21 @@ } } }, + "node_modules/wagmi/node_modules/@reown/appkit/node_modules/isows": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/isows/-/isows-1.0.6.tgz", + "integrity": "sha512-lPHCayd40oW98/I0uvgaHKWCSvkzY27LjWLbtzOm64yQ+G3Q5npjjbdppU65iZXkK1Zt+kH9pfegli0AYfwYYw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/wevm" + } + ], + "license": "MIT", + "peerDependencies": { + "ws": "*" + } + }, "node_modules/wagmi/node_modules/@reown/appkit/node_modules/ox": { "version": "0.6.7", "resolved": "https://registry.npmjs.org/ox/-/ox-0.6.7.tgz", @@ -40386,17 +40637,17 @@ } }, "node_modules/wagmi/node_modules/@reown/appkit/node_modules/unstorage": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.16.1.tgz", - "integrity": "sha512-gdpZ3guLDhz+zWIlYP1UwQ259tG5T5vYRzDaHMkQ1bBY1SQPutvZnrRjTFaWUUpseErJIgAZS51h6NOcZVZiqQ==", + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.17.1.tgz", + "integrity": "sha512-KKGwRTT0iVBCErKemkJCLs7JdxNVfqTPc/85ae1XES0+bsHbc/sFBfVi5kJp156cc51BHinIH2l3k0EZ24vOBQ==", "license": "MIT", "dependencies": { "anymatch": "^3.1.3", "chokidar": "^4.0.3", "destr": "^2.0.5", - "h3": "^1.15.3", + "h3": "^1.15.4", "lru-cache": "^10.4.3", - "node-fetch-native": "^1.6.6", + "node-fetch-native": "^1.6.7", "ofetch": "^1.4.1", "ufo": "^1.6.1" }, @@ -40413,6 +40664,7 @@ "@planetscale/database": "^1.19.0", "@upstash/redis": "^1.34.3", "@vercel/blob": ">=0.27.1", + "@vercel/functions": "^2.2.12 || ^3.0.0", "@vercel/kv": "^1.0.1", "aws4fetch": "^1.0.20", "db0": ">=0.2.1", @@ -40457,6 +40709,9 @@ "@vercel/blob": { "optional": true }, + "@vercel/functions": { + "optional": true + }, "@vercel/kv": { "optional": true }, @@ -40477,6 +40732,27 @@ } } }, + "node_modules/wagmi/node_modules/@reown/appkit/node_modules/ws": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", + "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, "node_modules/wagmi/node_modules/@scure/bip32": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.7.0.tgz", @@ -40492,9 +40768,9 @@ } }, "node_modules/wagmi/node_modules/@scure/bip32/node_modules/@noble/curves": { - "version": "1.9.6", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.9.6.tgz", - "integrity": "sha512-GIKz/j99FRthB8icyJQA51E8Uk5hXmdyThjgQXRKiv9h0zeRlzSCLIzFw6K1LotZ3XuB7yzlf76qk7uBmTdFqA==", + "version": "1.9.7", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.9.7.tgz", + "integrity": "sha512-gbKGcRUYIjA3/zCCNaWDciTMFI0dCkvou3TL8Zmy5Nc7sJ47a0jtOeZoTaMxkuqRo9cRhjOdZJXegxYE5FN/xw==", "license": "MIT", "dependencies": { "@noble/hashes": "1.8.0" @@ -40544,14 +40820,15 @@ } }, "node_modules/wagmi/node_modules/@wagmi/connectors": { - "version": "5.9.1", - "resolved": "https://registry.npmjs.org/@wagmi/connectors/-/connectors-5.9.1.tgz", - "integrity": "sha512-o50e6reSYkVi2d72WWwbKSZ7xgLAeQ1Ja64tTWq3UhU1XtJPvQXWieCInIGInOajAAsZsYCPKYrPj6WoSl0Hqw==", + "version": "5.10.1", + "resolved": "https://registry.npmjs.org/@wagmi/connectors/-/connectors-5.10.1.tgz", + "integrity": "sha512-ho07FF5WLCqiR3+HsSZV1R3UrkLTi6F+EDiQdJOlgLLYsUHvB7Y7s8uLePP5lRxYUmDoFRURK1PwTGNSwlcKAA==", "license": "MIT", "dependencies": { "@base-org/account": "1.1.1", "@coinbase/wallet-sdk": "4.3.6", - "@metamask/sdk": "0.32.0", + "@gemini-wallet/core": "0.2.0", + "@metamask/sdk": "0.33.1", "@safe-global/safe-apps-provider": "0.18.6", "@safe-global/safe-apps-sdk": "9.1.0", "@walletconnect/ethereum-provider": "2.21.1", @@ -40561,7 +40838,7 @@ "url": "https://github.com/sponsors/wevm" }, "peerDependencies": { - "@wagmi/core": "2.18.1", + "@wagmi/core": "2.21.0", "typescript": ">=5.0.4", "viem": "2.x" }, @@ -40572,9 +40849,9 @@ } }, "node_modules/wagmi/node_modules/@wagmi/core": { - "version": "2.18.1", - "resolved": "https://registry.npmjs.org/@wagmi/core/-/core-2.18.1.tgz", - "integrity": "sha512-mU+qXeeY2/0lq8bf4uFm5RtMrc8FgOToqzMVMf6MzNdNbKxpNlmlbuTyRbyd9cxn4UnYa6+S6Bmx1x42FV7w3g==", + "version": "2.21.0", + "resolved": "https://registry.npmjs.org/@wagmi/core/-/core-2.21.0.tgz", + "integrity": "sha512-ZtQBUvHEyfSM22BCeXZDjwcpby2vZjivjP8mMkQHxuVqRDnunaS5DIlZr2XPJKv01lPdlUajFSoiziNcIZlH5w==", "license": "MIT", "dependencies": { "eventemitter3": "5.0.1", @@ -40646,17 +40923,17 @@ } }, "node_modules/wagmi/node_modules/@walletconnect/core/node_modules/unstorage": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.16.1.tgz", - "integrity": "sha512-gdpZ3guLDhz+zWIlYP1UwQ259tG5T5vYRzDaHMkQ1bBY1SQPutvZnrRjTFaWUUpseErJIgAZS51h6NOcZVZiqQ==", + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.17.1.tgz", + "integrity": "sha512-KKGwRTT0iVBCErKemkJCLs7JdxNVfqTPc/85ae1XES0+bsHbc/sFBfVi5kJp156cc51BHinIH2l3k0EZ24vOBQ==", "license": "MIT", "dependencies": { "anymatch": "^3.1.3", "chokidar": "^4.0.3", "destr": "^2.0.5", - "h3": "^1.15.3", + "h3": "^1.15.4", "lru-cache": "^10.4.3", - "node-fetch-native": "^1.6.6", + "node-fetch-native": "^1.6.7", "ofetch": "^1.4.1", "ufo": "^1.6.1" }, @@ -40673,6 +40950,7 @@ "@planetscale/database": "^1.19.0", "@upstash/redis": "^1.34.3", "@vercel/blob": ">=0.27.1", + "@vercel/functions": "^2.2.12 || ^3.0.0", "@vercel/kv": "^1.0.1", "aws4fetch": "^1.0.20", "db0": ">=0.2.1", @@ -40717,6 +40995,9 @@ "@vercel/blob": { "optional": true }, + "@vercel/functions": { + "optional": true + }, "@vercel/kv": { "optional": true }, @@ -40776,17 +41057,17 @@ } }, "node_modules/wagmi/node_modules/@walletconnect/ethereum-provider/node_modules/unstorage": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.16.1.tgz", - "integrity": "sha512-gdpZ3guLDhz+zWIlYP1UwQ259tG5T5vYRzDaHMkQ1bBY1SQPutvZnrRjTFaWUUpseErJIgAZS51h6NOcZVZiqQ==", + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.17.1.tgz", + "integrity": "sha512-KKGwRTT0iVBCErKemkJCLs7JdxNVfqTPc/85ae1XES0+bsHbc/sFBfVi5kJp156cc51BHinIH2l3k0EZ24vOBQ==", "license": "MIT", "dependencies": { "anymatch": "^3.1.3", "chokidar": "^4.0.3", "destr": "^2.0.5", - "h3": "^1.15.3", + "h3": "^1.15.4", "lru-cache": "^10.4.3", - "node-fetch-native": "^1.6.6", + "node-fetch-native": "^1.6.7", "ofetch": "^1.4.1", "ufo": "^1.6.1" }, @@ -40803,6 +41084,7 @@ "@planetscale/database": "^1.19.0", "@upstash/redis": "^1.34.3", "@vercel/blob": ">=0.27.1", + "@vercel/functions": "^2.2.12 || ^3.0.0", "@vercel/kv": "^1.0.1", "aws4fetch": "^1.0.20", "db0": ">=0.2.1", @@ -40847,6 +41129,9 @@ "@vercel/blob": { "optional": true }, + "@vercel/functions": { + "optional": true + }, "@vercel/kv": { "optional": true }, @@ -40918,17 +41203,17 @@ } }, "node_modules/wagmi/node_modules/@walletconnect/types/node_modules/unstorage": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.16.1.tgz", - "integrity": "sha512-gdpZ3guLDhz+zWIlYP1UwQ259tG5T5vYRzDaHMkQ1bBY1SQPutvZnrRjTFaWUUpseErJIgAZS51h6NOcZVZiqQ==", + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.17.1.tgz", + "integrity": "sha512-KKGwRTT0iVBCErKemkJCLs7JdxNVfqTPc/85ae1XES0+bsHbc/sFBfVi5kJp156cc51BHinIH2l3k0EZ24vOBQ==", "license": "MIT", "dependencies": { "anymatch": "^3.1.3", "chokidar": "^4.0.3", "destr": "^2.0.5", - "h3": "^1.15.3", + "h3": "^1.15.4", "lru-cache": "^10.4.3", - "node-fetch-native": "^1.6.6", + "node-fetch-native": "^1.6.7", "ofetch": "^1.4.1", "ufo": "^1.6.1" }, @@ -40945,6 +41230,7 @@ "@planetscale/database": "^1.19.0", "@upstash/redis": "^1.34.3", "@vercel/blob": ">=0.27.1", + "@vercel/functions": "^2.2.12 || ^3.0.0", "@vercel/kv": "^1.0.1", "aws4fetch": "^1.0.20", "db0": ">=0.2.1", @@ -40989,6 +41275,9 @@ "@vercel/blob": { "optional": true }, + "@vercel/functions": { + "optional": true + }, "@vercel/kv": { "optional": true }, @@ -41049,17 +41338,17 @@ } }, "node_modules/wagmi/node_modules/@walletconnect/universal-provider/node_modules/unstorage": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.16.1.tgz", - "integrity": "sha512-gdpZ3guLDhz+zWIlYP1UwQ259tG5T5vYRzDaHMkQ1bBY1SQPutvZnrRjTFaWUUpseErJIgAZS51h6NOcZVZiqQ==", + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.17.1.tgz", + "integrity": "sha512-KKGwRTT0iVBCErKemkJCLs7JdxNVfqTPc/85ae1XES0+bsHbc/sFBfVi5kJp156cc51BHinIH2l3k0EZ24vOBQ==", "license": "MIT", "dependencies": { "anymatch": "^3.1.3", "chokidar": "^4.0.3", "destr": "^2.0.5", - "h3": "^1.15.3", + "h3": "^1.15.4", "lru-cache": "^10.4.3", - "node-fetch-native": "^1.6.6", + "node-fetch-native": "^1.6.7", "ofetch": "^1.4.1", "ufo": "^1.6.1" }, @@ -41076,6 +41365,7 @@ "@planetscale/database": "^1.19.0", "@upstash/redis": "^1.34.3", "@vercel/blob": ">=0.27.1", + "@vercel/functions": "^2.2.12 || ^3.0.0", "@vercel/kv": "^1.0.1", "aws4fetch": "^1.0.20", "db0": ">=0.2.1", @@ -41120,6 +41410,9 @@ "@vercel/blob": { "optional": true }, + "@vercel/functions": { + "optional": true + }, "@vercel/kv": { "optional": true }, @@ -41223,6 +41516,21 @@ } } }, + "node_modules/wagmi/node_modules/@walletconnect/utils/node_modules/isows": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/isows/-/isows-1.0.6.tgz", + "integrity": "sha512-lPHCayd40oW98/I0uvgaHKWCSvkzY27LjWLbtzOm64yQ+G3Q5npjjbdppU65iZXkK1Zt+kH9pfegli0AYfwYYw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/wevm" + } + ], + "license": "MIT", + "peerDependencies": { + "ws": "*" + } + }, "node_modules/wagmi/node_modules/@walletconnect/utils/node_modules/ox": { "version": "0.6.7", "resolved": "https://registry.npmjs.org/ox/-/ox-0.6.7.tgz", @@ -41253,17 +41561,17 @@ } }, "node_modules/wagmi/node_modules/@walletconnect/utils/node_modules/unstorage": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.16.1.tgz", - "integrity": "sha512-gdpZ3guLDhz+zWIlYP1UwQ259tG5T5vYRzDaHMkQ1bBY1SQPutvZnrRjTFaWUUpseErJIgAZS51h6NOcZVZiqQ==", + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.17.1.tgz", + "integrity": "sha512-KKGwRTT0iVBCErKemkJCLs7JdxNVfqTPc/85ae1XES0+bsHbc/sFBfVi5kJp156cc51BHinIH2l3k0EZ24vOBQ==", "license": "MIT", "dependencies": { "anymatch": "^3.1.3", "chokidar": "^4.0.3", "destr": "^2.0.5", - "h3": "^1.15.3", + "h3": "^1.15.4", "lru-cache": "^10.4.3", - "node-fetch-native": "^1.6.6", + "node-fetch-native": "^1.6.7", "ofetch": "^1.4.1", "ufo": "^1.6.1" }, @@ -41280,6 +41588,7 @@ "@planetscale/database": "^1.19.0", "@upstash/redis": "^1.34.3", "@vercel/blob": ">=0.27.1", + "@vercel/functions": "^2.2.12 || ^3.0.0", "@vercel/kv": "^1.0.1", "aws4fetch": "^1.0.20", "db0": ">=0.2.1", @@ -41324,6 +41633,9 @@ "@vercel/blob": { "optional": true }, + "@vercel/functions": { + "optional": true + }, "@vercel/kv": { "optional": true }, @@ -41374,6 +41686,27 @@ } } }, + "node_modules/wagmi/node_modules/@walletconnect/utils/node_modules/ws": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", + "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, "node_modules/wagmi/node_modules/clsx": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz", @@ -41383,33 +41716,41 @@ "node": ">=6" } }, + "node_modules/wagmi/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, "node_modules/wagmi/node_modules/idb-keyval": { "version": "6.2.1", "resolved": "https://registry.npmjs.org/idb-keyval/-/idb-keyval-6.2.1.tgz", "integrity": "sha512-8Sb3veuYCyrZL+VBt9LJfZjLUPWVvqn8tG28VqYNFCo43KHcKuq+b4EiXGeuaLAQWL2YmyDgMp2aSpH9JHsEQg==", "license": "Apache-2.0" }, - "node_modules/wagmi/node_modules/isows": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/isows/-/isows-1.0.6.tgz", - "integrity": "sha512-lPHCayd40oW98/I0uvgaHKWCSvkzY27LjWLbtzOm64yQ+G3Q5npjjbdppU65iZXkK1Zt+kH9pfegli0AYfwYYw==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/wevm" - } - ], - "license": "MIT", - "peerDependencies": { - "ws": "*" - } - }, "node_modules/wagmi/node_modules/lru-cache": { "version": "10.4.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", "license": "ISC" }, + "node_modules/wagmi/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "license": "MIT" + }, "node_modules/wagmi/node_modules/ox": { "version": "0.6.9", "resolved": "https://registry.npmjs.org/ox/-/ox-0.6.9.tgz", @@ -41470,25 +41811,13 @@ "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, - "node_modules/wagmi/node_modules/ws": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", - "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", + "node_modules/wagmi/node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", "license": "MIT", - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } + "bin": { + "uuid": "dist/bin/uuid" } }, "node_modules/walker": { diff --git a/package.json b/package.json index b149ae627..bc011cf24 100644 --- a/package.json +++ b/package.json @@ -95,7 +95,7 @@ "viem": "^2.31.7", "vite-plugin-node-polyfills": "^0.24.0", "vite-tsconfig-paths": "^5.1.4", - "wagmi": "^2.15.6", + "wagmi": "^2.17.1", "yup": "^1.7.0" }, "devDependencies": { From cf9f0091e67c17a172fd80c095941fc2523aeb65 Mon Sep 17 00:00:00 2001 From: Sanaz Mahmoudi Date: Thu, 18 Sep 2025 19:05:28 +0330 Subject: [PATCH 67/76] fix: prevent input fields scroll in hire job flow --- .../Jobs/containers/OrgOfferModal/index.tsx | 171 +++++++++--------- .../containers/OrgOfferModal/useOrgOffer.tsx | 11 +- 2 files changed, 83 insertions(+), 99 deletions(-) diff --git a/src/modules/Jobs/containers/OrgOfferModal/index.tsx b/src/modules/Jobs/containers/OrgOfferModal/index.tsx index f16f37cb5..79c73cada 100644 --- a/src/modules/Jobs/containers/OrgOfferModal/index.tsx +++ b/src/modules/Jobs/containers/OrgOfferModal/index.tsx @@ -23,7 +23,6 @@ export const OrgOfferModal: React.FC = ({ open, onClose, app isNonPaid, paymentMethodOptions, currency, - preventArrow, disabled, } = useOrgOffer(applicant, onClose, onSuccess); @@ -43,7 +42,7 @@ export const OrgOfferModal: React.FC = ({ open, onClose, app return ( <> -
+

Send an offer

@@ -51,111 +50,103 @@ export const OrgOfferModal: React.FC = ({ open, onClose, app
- -
- {renderFieldInfo('Contract title*', '')} - -
-
- {renderFieldInfo('Payment type', 'Is it a paid or volunteer job?')} +
+ {renderFieldInfo('Contract title*', '')} + +
+
+ {renderFieldInfo('Payment type', 'Is it a paid or volunteer job?')} - onSelectValue('paymentType', type.value as string)} - /> -
+ onSelectValue('paymentType', type.value as string)} + /> +
+
+ {renderFieldInfo('Payment terms', 'Is it a fixed or hourly job?')} + onSelectValue('paymentTerm', term.value as string)} + errors={errors['paymentTerm']?.message ? [errors['paymentTerm']?.message.toString()] : undefined} + /> +
+
+ {renderFieldInfo('Estimated total hours*', '')} + hours

} + noBorderPostfix + errors={errors['hours']?.message ? [errors['hours']?.message.toString()] : undefined} + inputProps={{ style: { textAlign: 'right' } }} + /> +
+ {!isNonPaid && (
- {renderFieldInfo('Payment terms', 'Is it a fixed or hourly job?')} + {renderFieldInfo('Payment method', 'Payment in fiat or crypto?')} onSelectValue('paymentTerm', term.value as string)} - errors={errors['paymentTerm']?.message ? [errors['paymentTerm']?.message.toString()] : undefined} + onChange={option => onSelectValue('paymentMethod', option.value as string)} + items={paymentMode} + defaultValue={paymentMode[0].value} + errors={errors['paymentMethod']?.message ? [errors['paymentMethod']?.message.toString()] : undefined} />
+ )} + {!isNonPaid && (
- {renderFieldInfo('Estimated total hours*', '')} - hours

} - noBorderPostfix - onKeyDown={preventArrow} - errors={errors['hours']?.message ? [errors['hours']?.message.toString()] : undefined} - inputProps={{ style: { textAlign: 'right' } }} - /> -
- {!isNonPaid && ( -
- {renderFieldInfo('Payment method', 'Payment in fiat or crypto?')} - onSelectValue('paymentMethod', option.value as string)} - items={paymentMode} - defaultValue={paymentMode[0].value} - errors={ - errors['paymentMethod']?.message ? [errors['paymentMethod']?.message.toString()] : undefined - } - /> -
- )} - {!isNonPaid && ( -
- {isCrypto && renderFieldInfo('Your wallet', 'Connect wallet to send an offer')} - {isCrypto && ( -
- -
- )} -
- {renderFieldInfo('Offer amount*', '')} - option.value === currency) || null, - onChange: currency => onSelectValue('currency', currency), - }} - /> + {isCrypto && renderFieldInfo('Your wallet', 'Connect wallet to send an offer')} + {isCrypto && ( +
+
+ )} +
+ {renderFieldInfo('Offer amount*', '')} + option.value === currency) || null, + onChange: currency => onSelectValue('currency', currency), + }} + />
- )} -
- {renderFieldInfo('Description*', '')} -
- + )} +
+ {renderFieldInfo('Description*', '')} + +
-
-
+ ); diff --git a/src/modules/Jobs/containers/OrgOfferModal/useOrgOffer.tsx b/src/modules/Jobs/containers/OrgOfferModal/useOrgOffer.tsx index 18b78e1b5..c7fffc2b5 100644 --- a/src/modules/Jobs/containers/OrgOfferModal/useOrgOffer.tsx +++ b/src/modules/Jobs/containers/OrgOfferModal/useOrgOffer.tsx @@ -1,5 +1,5 @@ import { yupResolver } from '@hookform/resolvers/yup'; -import { KeyboardEvent, useEffect } from 'react'; +import { useEffect } from 'react'; import { SubmitHandler, useForm } from 'react-hook-form'; import { PAYMENT_CURRENCIES } from 'src/constants/PAYMENT_CURRENCY'; import { minByToken } from 'src/constants/TOKEN_LIMIT'; @@ -21,7 +21,7 @@ const getSchema = tokens => { .number() .typeError('Total hours is required') .positive('Must be positive') - .min(1, 'Hours must be more than 0') + .min(1, 'Hours must be more than 1') .required('Total hours is required'), total: yup .number() @@ -105,12 +105,6 @@ export const useOrgOffer = (applicant: Applicant, onClose: () => void, onSuccess setValue(name, value, { shouldValidate: true }); }; - const preventArrow = (e: KeyboardEvent) => { - if (['ArrowUp', 'ArrowDown'].includes(e.key)) { - e.preventDefault(); - } - }; - const onSubmit: SubmitHandler
= async ({ paymentMethod, total, description, hours }) => { let netTotal = total || 0; @@ -163,7 +157,6 @@ export const useOrgOffer = (applicant: Applicant, onClose: () => void, onSuccess isNonPaid, paymentMethodOptions, currency, - preventArrow, disabled: !isFiat && !connected, }; }; From b7e3c9c9036a63e7283c50636669d0eaeea8a332 Mon Sep 17 00:00:00 2001 From: Sanaz Mahmoudi Date: Mon, 22 Sep 2025 23:00:07 +0330 Subject: [PATCH 68/76] feat: account center logo on global navigation portal --- public/images/logo/account-center.svg | 6 ++++++ src/modules/layout/components/NavPortal/index.tsx | 7 ++++++- 2 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 public/images/logo/account-center.svg diff --git a/public/images/logo/account-center.svg b/public/images/logo/account-center.svg new file mode 100644 index 000000000..fc89d9eb8 --- /dev/null +++ b/public/images/logo/account-center.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/modules/layout/components/NavPortal/index.tsx b/src/modules/layout/components/NavPortal/index.tsx index b3779d0f2..721f9f905 100644 --- a/src/modules/layout/components/NavPortal/index.tsx +++ b/src/modules/layout/components/NavPortal/index.tsx @@ -21,6 +21,11 @@ const NavPortal = () => { logo: '/images/logo/fund-logo.svg', link: config.fundURL, }, + { + name: 'AC', + logo: '/images/logo/account-center.svg', + link: config.accountCenterURL + 'app', + }, ]; return ( @@ -46,7 +51,7 @@ const NavPortal = () => { onClick={() => (window.location.href = product.link)} >
- {`Socious + {`Socious
{product.name}
From 71325ee9c2fb30e1a46c875a91bba509b172f59c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 29 Sep 2025 01:12:40 +0000 Subject: [PATCH 69/76] chore(deps): bump @capacitor/toast from 7.0.1 to 7.0.2 Bumps [@capacitor/toast](https://github.com/ionic-team/capacitor-plugins) from 7.0.1 to 7.0.2. - [Release notes](https://github.com/ionic-team/capacitor-plugins/releases) - [Changelog](https://github.com/ionic-team/capacitor-plugins/blob/main/CHANGELOG.md) - [Commits](https://github.com/ionic-team/capacitor-plugins/compare/@capacitor/toast@7.0.1...@capacitor/toast@7.0.2) --- updated-dependencies: - dependency-name: "@capacitor/toast" dependency-version: 7.0.2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- package-lock.json | 8 ++++---- package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3d9d975c9..95a997268 100644 --- a/package-lock.json +++ b/package-lock.json @@ -20,7 +20,7 @@ "@capacitor/ios": "^7.4.3", "@capacitor/preferences": "^7.0.1", "@capacitor/push-notifications": "^7.0.1", - "@capacitor/toast": "^7.0.1", + "@capacitor/toast": "^7.0.2", "@capgo/capacitor-social-login": "^7.11.4", "@datadog/browser-rum": "^6.19.0", "@emoji-mart/react": "^1.1.1", @@ -1472,9 +1472,9 @@ } }, "node_modules/@capacitor/toast": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/@capacitor/toast/-/toast-7.0.1.tgz", - "integrity": "sha512-3GFhejVwKqUjosYnpQVfq5eml7X6B97jcVpncY75lBDiTlCYJeRanj63OChZPuw1KWudkBTYZMcXdRYWguJdKw==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@capacitor/toast/-/toast-7.0.2.tgz", + "integrity": "sha512-BPzxZNI1Qg58/yZzx8Y/iz1m6hBudx+vlbMkfWvcg3Z2Ph62xoSnQXE/28y54yE+c6JzAqH37NZeA8R8p9NW9A==", "license": "MIT", "peerDependencies": { "@capacitor/core": ">=7.0.0" diff --git a/package.json b/package.json index bc011cf24..2629fd574 100644 --- a/package.json +++ b/package.json @@ -40,7 +40,7 @@ "@capacitor/ios": "^7.4.3", "@capacitor/preferences": "^7.0.1", "@capacitor/push-notifications": "^7.0.1", - "@capacitor/toast": "^7.0.1", + "@capacitor/toast": "^7.0.2", "@capgo/capacitor-social-login": "^7.11.4", "@datadog/browser-rum": "^6.19.0", "@emoji-mart/react": "^1.1.1", From b4dda97f7034df0043f604c785de48cdb6e50126 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 29 Sep 2025 01:12:20 +0000 Subject: [PATCH 70/76] chore(deps-dev): bump lint-staged from 16.1.0 to 16.2.3 Bumps [lint-staged](https://github.com/lint-staged/lint-staged) from 16.1.0 to 16.2.3. - [Release notes](https://github.com/lint-staged/lint-staged/releases) - [Changelog](https://github.com/lint-staged/lint-staged/blob/main/CHANGELOG.md) - [Commits](https://github.com/lint-staged/lint-staged/compare/v16.1.0...v16.2.3) --- updated-dependencies: - dependency-name: lint-staged dependency-version: 16.2.3 dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- package-lock.json | 187 ++++++++++++++++++++-------------------------- package.json | 2 +- 2 files changed, 80 insertions(+), 109 deletions(-) diff --git a/package-lock.json b/package-lock.json index 95a997268..b0783faa5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -134,7 +134,7 @@ "identity-obj-proxy": "^3.0.0", "jest": "^29.7.0", "jest-environment-jsdom": "^30.1.2", - "lint-staged": "^16.0.0", + "lint-staged": "^16.2.3", "postcss": "^8.5.6", "prettier": "^3.6.2", "sass": "^1.87.0", @@ -23966,9 +23966,9 @@ } }, "node_modules/get-east-asian-width": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.3.0.tgz", - "integrity": "sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.4.0.tgz", + "integrity": "sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q==", "dev": true, "license": "MIT", "engines": { @@ -27764,22 +27764,19 @@ "license": "MIT" }, "node_modules/lint-staged": { - "version": "16.1.0", - "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-16.1.0.tgz", - "integrity": "sha512-HkpQh69XHxgCjObjejBT3s2ILwNjFx8M3nw+tJ/ssBauDlIpkx2RpqWSi1fBgkXLSSXnbR3iEq1NkVtpvV+FLQ==", + "version": "16.2.3", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-16.2.3.tgz", + "integrity": "sha512-1OnJEESB9zZqsp61XHH2fvpS1es3hRCxMplF/AJUDa8Ho8VrscYDIuxGrj3m8KPXbcWZ8fT9XTMUhEQmOVKpKw==", "dev": true, "license": "MIT", "dependencies": { - "chalk": "^5.4.1", - "commander": "^14.0.0", - "debug": "^4.4.1", - "lilconfig": "^3.1.3", - "listr2": "^8.3.3", + "commander": "^14.0.1", + "listr2": "^9.0.4", "micromatch": "^4.0.8", - "nano-spawn": "^1.0.2", + "nano-spawn": "^1.0.3", "pidtree": "^0.6.0", "string-argv": "^0.3.2", - "yaml": "^2.8.0" + "yaml": "^2.8.1" }, "bin": { "lint-staged": "bin/lint-staged.js" @@ -27792,9 +27789,9 @@ } }, "node_modules/lint-staged/node_modules/ansi-escapes": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.0.0.tgz", - "integrity": "sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.1.1.tgz", + "integrity": "sha512-Zhl0ErHcSRUaVfGUeUdDuLgpkEo8KIFjB4Y9uAc46ScOpdDiU1Dbyplh7qWJeJ/ZHpbyMSM26+X3BySgnIz40Q==", "dev": true, "license": "MIT", "dependencies": { @@ -27808,9 +27805,9 @@ } }, "node_modules/lint-staged/node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", + "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", "dev": true, "license": "MIT", "engines": { @@ -27820,19 +27817,6 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/lint-staged/node_modules/chalk": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", - "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, "node_modules/lint-staged/node_modules/cli-cursor": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz", @@ -27850,26 +27834,26 @@ } }, "node_modules/lint-staged/node_modules/cli-truncate": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-4.0.0.tgz", - "integrity": "sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-5.1.0.tgz", + "integrity": "sha512-7JDGG+4Zp0CsknDCedl0DYdaeOhc46QNpXi3NLQblkZpXXgA6LncLDUUyvrjSvZeF3VRQa+KiMGomazQrC1V8g==", "dev": true, "license": "MIT", "dependencies": { - "slice-ansi": "^5.0.0", - "string-width": "^7.0.0" + "slice-ansi": "^7.1.0", + "string-width": "^8.0.0" }, "engines": { - "node": ">=18" + "node": ">=20" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/lint-staged/node_modules/commander": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-14.0.0.tgz", - "integrity": "sha512-2uM9rYjPvyq39NwLRqaiLtWHyDC1FvryJDa2ATTVims5YAS4PupsEQsDvP14FqhFr0P49CYDugi59xaxJlTXRA==", + "version": "14.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-14.0.1.tgz", + "integrity": "sha512-2JkV3gUZUVrbNA+1sjBOYLsMZ5cEEl8GTFP2a4AVz5hvasAMCQ1D2l2le/cX+pV4N6ZU17zjUahLpIXRrnWL8A==", "dev": true, "license": "MIT", "engines": { @@ -27877,33 +27861,36 @@ } }, "node_modules/lint-staged/node_modules/emoji-regex": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz", - "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==", + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.5.0.tgz", + "integrity": "sha512-lb49vf1Xzfx080OKA0o6l8DQQpV+6Vg95zyCJX9VB/BqKYlhG7N4wgROUUHRA+ZPUefLnteQOad7z1kT2bV7bg==", "dev": true, "license": "MIT" }, "node_modules/lint-staged/node_modules/is-fullwidth-code-point": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", - "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-5.1.0.tgz", + "integrity": "sha512-5XHYaSyiqADb4RnZ1Bdad6cPp8Toise4TzEjcOYDHZkTCbKgiUl7WTUCpNWHuxmDt91wnsZBc9xinNzopv3JMQ==", "dev": true, "license": "MIT", + "dependencies": { + "get-east-asian-width": "^1.3.1" + }, "engines": { - "node": ">=12" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/lint-staged/node_modules/listr2": { - "version": "8.3.3", - "resolved": "https://registry.npmjs.org/listr2/-/listr2-8.3.3.tgz", - "integrity": "sha512-LWzX2KsqcB1wqQ4AHgYb4RsDXauQiqhjLk+6hjbaeHG4zpjjVAB6wC/gz6X0l+Du1cN3pUB5ZlrvTbhGSNnUQQ==", + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-9.0.4.tgz", + "integrity": "sha512-1wd/kpAdKRLwv7/3OKC8zZ5U8e/fajCfWMxacUvB79S5nLrYGPtUI/8chMQhn3LQjsRVErTb9i1ECAwW0ZIHnQ==", "dev": true, "license": "MIT", "dependencies": { - "cli-truncate": "^4.0.0", + "cli-truncate": "^5.0.0", "colorette": "^2.0.20", "eventemitter3": "^5.0.1", "log-update": "^6.1.0", @@ -27911,7 +27898,7 @@ "wrap-ansi": "^9.0.0" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/lint-staged/node_modules/log-update": { @@ -27934,39 +27921,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/lint-staged/node_modules/log-update/node_modules/is-fullwidth-code-point": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-5.0.0.tgz", - "integrity": "sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==", - "dev": true, - "license": "MIT", - "dependencies": { - "get-east-asian-width": "^1.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lint-staged/node_modules/log-update/node_modules/slice-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-7.1.0.tgz", - "integrity": "sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^6.2.1", - "is-fullwidth-code-point": "^5.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" - } - }, "node_modules/lint-staged/node_modules/onetime": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/onetime/-/onetime-7.0.0.tgz", @@ -28014,44 +27968,43 @@ } }, "node_modules/lint-staged/node_modules/slice-ansi": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", - "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-7.1.2.tgz", + "integrity": "sha512-iOBWFgUX7caIZiuutICxVgX1SdxwAVFFKwt1EvMYYec/NWO5meOJ6K5uQxhrYBdQJne4KxiqZc+KptFOWFSI9w==", "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^6.0.0", - "is-fullwidth-code-point": "^4.0.0" + "ansi-styles": "^6.2.1", + "is-fullwidth-code-point": "^5.0.0" }, "engines": { - "node": ">=12" + "node": ">=18" }, "funding": { "url": "https://github.com/chalk/slice-ansi?sponsor=1" } }, "node_modules/lint-staged/node_modules/string-width": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", - "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-8.1.0.tgz", + "integrity": "sha512-Kxl3KJGb/gxkaUMOjRsQ8IrXiGW75O4E3RPjFIINOVH8AMl2SQ/yWdTzWwF3FevIX9LcMAjJW+GRwAlAbTSXdg==", "dev": true, "license": "MIT", "dependencies": { - "emoji-regex": "^10.3.0", - "get-east-asian-width": "^1.0.0", + "get-east-asian-width": "^1.3.0", "strip-ansi": "^7.1.0" }, "engines": { - "node": ">=18" + "node": ">=20" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/lint-staged/node_modules/wrap-ansi": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz", - "integrity": "sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==", + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.2.tgz", + "integrity": "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==", "dev": true, "license": "MIT", "dependencies": { @@ -28066,6 +28019,24 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, + "node_modules/lint-staged/node_modules/wrap-ansi/node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/listr2": { "version": "3.14.0", "resolved": "https://registry.npmjs.org/listr2/-/listr2-3.14.0.tgz", @@ -29127,9 +29098,9 @@ "optional": true }, "node_modules/nano-spawn": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/nano-spawn/-/nano-spawn-1.0.2.tgz", - "integrity": "sha512-21t+ozMQDAL/UGgQVBbZ/xXvNO10++ZPuTmKRO8k9V3AClVRht49ahtDjfY8l1q6nSHOrE5ASfthzH3ol6R/hg==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/nano-spawn/-/nano-spawn-1.0.3.tgz", + "integrity": "sha512-jtpsQDetTnvS2Ts1fiRdci5rx0VYws5jGyC+4IYOTnIQ/wwdf6JdomlHBwqC3bJYOvaKu0C2GSZ1A60anrYpaA==", "dev": true, "license": "MIT", "engines": { @@ -42529,9 +42500,9 @@ "license": "ISC" }, "node_modules/yaml": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.0.tgz", - "integrity": "sha512-4lLa/EcQCB0cJkyts+FpIRx5G/llPxfP6VQU5KByHEhLxY3IJCH0f0Hy1MHI8sClTvsIb8qwRJ6R/ZdlDJ/leQ==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.1.tgz", + "integrity": "sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw==", "license": "ISC", "bin": { "yaml": "bin.mjs" diff --git a/package.json b/package.json index 2629fd574..410207e82 100644 --- a/package.json +++ b/package.json @@ -154,7 +154,7 @@ "identity-obj-proxy": "^3.0.0", "jest": "^29.7.0", "jest-environment-jsdom": "^30.1.2", - "lint-staged": "^16.0.0", + "lint-staged": "^16.2.3", "postcss": "^8.5.6", "prettier": "^3.6.2", "sass": "^1.87.0", From b59a7bc2bddcbf4b6c365d41b3dde2b58c030a68 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 29 Sep 2025 01:12:02 +0000 Subject: [PATCH 71/76] chore(deps-dev): bump globals from 16.3.0 to 16.4.0 Bumps [globals](https://github.com/sindresorhus/globals) from 16.3.0 to 16.4.0. - [Release notes](https://github.com/sindresorhus/globals/releases) - [Commits](https://github.com/sindresorhus/globals/compare/v16.3.0...v16.4.0) --- updated-dependencies: - dependency-name: globals dependency-version: 16.4.0 dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- package-lock.json | 8 ++++---- package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index b0783faa5..fbf25691a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -129,7 +129,7 @@ "eslint-plugin-react": "^7.37.5", "eslint-plugin-react-hooks": "^5.2.0", "eslint-plugin-storybook": "^9.0.7", - "globals": "^16.3.0", + "globals": "^16.4.0", "husky": "^9.1.7", "identity-obj-proxy": "^3.0.0", "jest": "^29.7.0", @@ -24431,9 +24431,9 @@ } }, "node_modules/globals": { - "version": "16.3.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-16.3.0.tgz", - "integrity": "sha512-bqWEnJ1Nt3neqx2q5SFfGS8r/ahumIakg3HcwtNlrVlwXIeNumWn/c7Pn/wKzGhf6SaW6H6uWXLqC30STCMchQ==", + "version": "16.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-16.4.0.tgz", + "integrity": "sha512-ob/2LcVVaVGCYN+r14cnwnoDPUufjiYgSqRhiFD0Q1iI4Odora5RE8Iv1D24hAz5oMophRGkGz+yuvQmmUMnMw==", "dev": true, "license": "MIT", "engines": { diff --git a/package.json b/package.json index 410207e82..07a6d6aef 100644 --- a/package.json +++ b/package.json @@ -149,7 +149,7 @@ "eslint-plugin-react": "^7.37.5", "eslint-plugin-react-hooks": "^5.2.0", "eslint-plugin-storybook": "^9.0.7", - "globals": "^16.3.0", + "globals": "^16.4.0", "husky": "^9.1.7", "identity-obj-proxy": "^3.0.0", "jest": "^29.7.0", From 4cdfca0f4a0193e5d78a6cbaec22bf4a333a99e6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 29 Sep 2025 01:11:27 +0000 Subject: [PATCH 72/76] chore(deps): bump @stripe/stripe-js from 7.4.0 to 7.9.0 Bumps [@stripe/stripe-js](https://github.com/stripe/stripe-js) from 7.4.0 to 7.9.0. - [Release notes](https://github.com/stripe/stripe-js/releases) - [Commits](https://github.com/stripe/stripe-js/compare/v7.4.0...v7.9.0) --- updated-dependencies: - dependency-name: "@stripe/stripe-js" dependency-version: 7.9.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- package-lock.json | 9 +++++---- package.json | 2 +- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index fbf25691a..da12df19f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -34,7 +34,7 @@ "@reown/appkit": "^1.8.2", "@reown/appkit-adapter-wagmi": "^1.7.17", "@storybook/addon-designs": "^8.2.1", - "@stripe/stripe-js": "^7.4.0", + "@stripe/stripe-js": "^7.9.0", "@tanstack/react-query": "^5.83.0", "@tanstack/react-table": "^8.21.3", "@web3modal/ethers": "^5.1.11", @@ -11731,9 +11731,10 @@ } }, "node_modules/@stripe/stripe-js": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@stripe/stripe-js/-/stripe-js-7.4.0.tgz", - "integrity": "sha512-lQHQPfXPTBeh0XFjq6PqSBAyR7umwcJbvJhXV77uGCUDD6ymXJU/f2164ydLMLCCceNuPlbV9b+1smx98efwWQ==", + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@stripe/stripe-js/-/stripe-js-7.9.0.tgz", + "integrity": "sha512-ggs5k+/0FUJcIgNY08aZTqpBTtbExkJMYMLSMwyucrhtWexVOEY1KJmhBsxf+E/Q15f5rbwBpj+t0t2AW2oCsQ==", + "license": "MIT", "engines": { "node": ">=12.16" } diff --git a/package.json b/package.json index 07a6d6aef..5ff460ff1 100644 --- a/package.json +++ b/package.json @@ -54,7 +54,7 @@ "@reown/appkit": "^1.8.2", "@reown/appkit-adapter-wagmi": "^1.7.17", "@storybook/addon-designs": "^8.2.1", - "@stripe/stripe-js": "^7.4.0", + "@stripe/stripe-js": "^7.9.0", "@tanstack/react-query": "^5.83.0", "@tanstack/react-table": "^8.21.3", "@web3modal/ethers": "^5.1.11", From bf152ea2d251e24ebbc8d9817b20aa0baa1ffb4e Mon Sep 17 00:00:00 2001 From: Iman rb Date: Thu, 2 Oct 2025 00:11:22 -0400 Subject: [PATCH 73/76] add tags to profile --- src/core/adaptors/users/index.adaptors.tsx | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/core/adaptors/users/index.adaptors.tsx b/src/core/adaptors/users/index.adaptors.tsx index 22b8639f4..0f847b67b 100644 --- a/src/core/adaptors/users/index.adaptors.tsx +++ b/src/core/adaptors/users/index.adaptors.tsx @@ -5,11 +5,13 @@ import { addLanguage, Education, Experience, + getUserDetails, importLinkedin, LanguageCode, ProjectType, reviews, updateWallet, + UserDetails, } from 'src/core/api'; import { getIdentityMeta } from 'src/core/utils'; import { v4 as uuidv4 } from 'uuid'; @@ -146,3 +148,14 @@ export const updateWalletAdaptor = async (payload: WalletReq): Promise> => { + try { + const data = await getUserDetails(username); + return { data, error: null }; + } catch (error) { + console.error('Error in getting user details: ', error); + return { data: null, error: 'Error in getting user details' }; + } +}; From ac04a5dc2b5901df1896ad142bfd87e737c6de02 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 6 Oct 2025 01:09:52 +0000 Subject: [PATCH 74/76] chore(deps): bump i18next-browser-languagedetector from 8.1.0 to 8.2.0 Bumps [i18next-browser-languagedetector](https://github.com/i18next/i18next-browser-languageDetector) from 8.1.0 to 8.2.0. - [Changelog](https://github.com/i18next/i18next-browser-languageDetector/blob/master/CHANGELOG.md) - [Commits](https://github.com/i18next/i18next-browser-languageDetector/compare/v8.1.0...v8.2.0) --- updated-dependencies: - dependency-name: i18next-browser-languagedetector dependency-version: 8.2.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- package-lock.json | 8 ++++---- package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index da12df19f..fb409de3f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -44,7 +44,7 @@ "dotenv": "^17.2.1", "ethers": "^6.15.0", "firebase": "^11.10.0", - "i18next-browser-languagedetector": "^8.1.0", + "i18next-browser-languagedetector": "^8.2.0", "iso-country-currency": "^0.7.2", "js-base64": "^3.7.8", "js-cookie": "^3.0.5", @@ -24965,9 +24965,9 @@ } }, "node_modules/i18next-browser-languagedetector": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/i18next-browser-languagedetector/-/i18next-browser-languagedetector-8.1.0.tgz", - "integrity": "sha512-mHZxNx1Lq09xt5kCauZ/4bsXOEA2pfpwSoU11/QTJB+pD94iONFwp+ohqi///PwiFvjFOxe1akYCdHyFo1ng5Q==", + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/i18next-browser-languagedetector/-/i18next-browser-languagedetector-8.2.0.tgz", + "integrity": "sha512-P+3zEKLnOF0qmiesW383vsLdtQVyKtCNA9cjSoKCppTKPQVfKd2W8hbVo5ZhNJKDqeM7BOcvNoKJOjpHh4Js9g==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.23.2" diff --git a/package.json b/package.json index 5ff460ff1..81e06db78 100644 --- a/package.json +++ b/package.json @@ -64,7 +64,7 @@ "dotenv": "^17.2.1", "ethers": "^6.15.0", "firebase": "^11.10.0", - "i18next-browser-languagedetector": "^8.1.0", + "i18next-browser-languagedetector": "^8.2.0", "iso-country-currency": "^0.7.2", "js-base64": "^3.7.8", "js-cookie": "^3.0.5", From f6ff2d80f9f6c38aef1a6f6514de8287d402a41b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 6 Oct 2025 01:09:53 +0000 Subject: [PATCH 75/76] chore(deps-dev): bump @typescript-eslint/parser from 8.43.0 to 8.45.0 Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 8.43.0 to 8.45.0. - [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases) - [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md) - [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.45.0/packages/parser) --- updated-dependencies: - dependency-name: "@typescript-eslint/parser" dependency-version: 8.45.0 dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- package-lock.json | 70 +++++++++++++++++++++++------------------------ package.json | 2 +- 2 files changed, 36 insertions(+), 36 deletions(-) diff --git a/package-lock.json b/package-lock.json index fb409de3f..3fbe0fbd7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -112,7 +112,7 @@ "@types/react-helmet": "^6.1.11", "@types/react-infinite-scroller": "^1.2.5", "@typescript-eslint/eslint-plugin": "^8.31.1", - "@typescript-eslint/parser": "^8.43.0", + "@typescript-eslint/parser": "^8.45.0", "@vitejs/plugin-react-swc": "^3.11.0", "autoprefixer": "^10.4.21", "babel-loader": "^10.0.0", @@ -13196,16 +13196,16 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "8.43.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.43.0.tgz", - "integrity": "sha512-B7RIQiTsCBBmY+yW4+ILd6mF5h1FUwJsVvpqkrgpszYifetQ2Ke+Z4u6aZh0CblkUGIdR59iYVyXqqZGkZ3aBw==", + "version": "8.45.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.45.0.tgz", + "integrity": "sha512-TGf22kon8KW+DeKaUmOibKWktRY8b2NSAZNdtWh798COm1NWx8+xJ6iFBtk3IvLdv6+LGLJLRlyhrhEDZWargQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "8.43.0", - "@typescript-eslint/types": "8.43.0", - "@typescript-eslint/typescript-estree": "8.43.0", - "@typescript-eslint/visitor-keys": "8.43.0", + "@typescript-eslint/scope-manager": "8.45.0", + "@typescript-eslint/types": "8.45.0", + "@typescript-eslint/typescript-estree": "8.45.0", + "@typescript-eslint/visitor-keys": "8.45.0", "debug": "^4.3.4" }, "engines": { @@ -13221,14 +13221,14 @@ } }, "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/project-service": { - "version": "8.43.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.43.0.tgz", - "integrity": "sha512-htB/+D/BIGoNTQYffZw4uM4NzzuolCoaA/BusuSIcC8YjmBYQioew5VUZAYdAETPjeed0hqCaW7EHg+Robq8uw==", + "version": "8.45.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.45.0.tgz", + "integrity": "sha512-3pcVHwMG/iA8afdGLMuTibGR7pDsn9RjDev6CCB+naRsSYs2pns5QbinF4Xqw6YC/Sj3lMrm/Im0eMfaa61WUg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.43.0", - "@typescript-eslint/types": "^8.43.0", + "@typescript-eslint/tsconfig-utils": "^8.45.0", + "@typescript-eslint/types": "^8.45.0", "debug": "^4.3.4" }, "engines": { @@ -13243,14 +13243,14 @@ } }, "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/scope-manager": { - "version": "8.43.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.43.0.tgz", - "integrity": "sha512-daSWlQ87ZhsjrbMLvpuuMAt3y4ba57AuvadcR7f3nl8eS3BjRc8L9VLxFLk92RL5xdXOg6IQ+qKjjqNEimGuAg==", + "version": "8.45.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.45.0.tgz", + "integrity": "sha512-clmm8XSNj/1dGvJeO6VGH7EUSeA0FMs+5au/u3lrA3KfG8iJ4u8ym9/j2tTEoacAffdW1TVUzXO30W1JTJS7dA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.43.0", - "@typescript-eslint/visitor-keys": "8.43.0" + "@typescript-eslint/types": "8.45.0", + "@typescript-eslint/visitor-keys": "8.45.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -13261,9 +13261,9 @@ } }, "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/tsconfig-utils": { - "version": "8.43.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.43.0.tgz", - "integrity": "sha512-ALC2prjZcj2YqqL5X/bwWQmHA2em6/94GcbB/KKu5SX3EBDOsqztmmX1kMkvAJHzxk7TazKzJfFiEIagNV3qEA==", + "version": "8.45.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.45.0.tgz", + "integrity": "sha512-aFdr+c37sc+jqNMGhH+ajxPXwjv9UtFZk79k8pLoJ6p4y0snmYpPA52GuWHgt2ZF4gRRW6odsEj41uZLojDt5w==", "dev": true, "license": "MIT", "engines": { @@ -13278,9 +13278,9 @@ } }, "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/types": { - "version": "8.43.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.43.0.tgz", - "integrity": "sha512-vQ2FZaxJpydjSZJKiSW/LJsabFFvV7KgLC5DiLhkBcykhQj8iK9BOaDmQt74nnKdLvceM5xmhaTF+pLekrxEkw==", + "version": "8.45.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.45.0.tgz", + "integrity": "sha512-WugXLuOIq67BMgQInIxxnsSyRLFxdkJEJu8r4ngLR56q/4Q5LrbfkFRH27vMTjxEK8Pyz7QfzuZe/G15qQnVRA==", "dev": true, "license": "MIT", "engines": { @@ -13292,16 +13292,16 @@ } }, "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/typescript-estree": { - "version": "8.43.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.43.0.tgz", - "integrity": "sha512-7Vv6zlAhPb+cvEpP06WXXy/ZByph9iL6BQRBDj4kmBsW98AqEeQHlj/13X+sZOrKSo9/rNKH4Ul4f6EICREFdw==", + "version": "8.45.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.45.0.tgz", + "integrity": "sha512-GfE1NfVbLam6XQ0LcERKwdTTPlLvHvXXhOeUGC1OXi4eQBoyy1iVsW+uzJ/J9jtCz6/7GCQ9MtrQ0fml/jWCnA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/project-service": "8.43.0", - "@typescript-eslint/tsconfig-utils": "8.43.0", - "@typescript-eslint/types": "8.43.0", - "@typescript-eslint/visitor-keys": "8.43.0", + "@typescript-eslint/project-service": "8.45.0", + "@typescript-eslint/tsconfig-utils": "8.45.0", + "@typescript-eslint/types": "8.45.0", + "@typescript-eslint/visitor-keys": "8.45.0", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", @@ -13321,13 +13321,13 @@ } }, "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/visitor-keys": { - "version": "8.43.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.43.0.tgz", - "integrity": "sha512-T+S1KqRD4sg/bHfLwrpF/K3gQLBM1n7Rp7OjjikjTEssI2YJzQpi5WXoynOaQ93ERIuq3O8RBTOUYDKszUCEHw==", + "version": "8.45.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.45.0.tgz", + "integrity": "sha512-qsaFBA3e09MIDAGFUrTk+dzqtfv1XPVz8t8d1f0ybTzrCY7BKiMC5cjrl1O/P7UmHsNyW90EYSkU/ZWpmXelag==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.43.0", + "@typescript-eslint/types": "8.45.0", "eslint-visitor-keys": "^4.2.1" }, "engines": { diff --git a/package.json b/package.json index 81e06db78..2762aa0fd 100644 --- a/package.json +++ b/package.json @@ -132,7 +132,7 @@ "@types/react-helmet": "^6.1.11", "@types/react-infinite-scroller": "^1.2.5", "@typescript-eslint/eslint-plugin": "^8.31.1", - "@typescript-eslint/parser": "^8.43.0", + "@typescript-eslint/parser": "^8.45.0", "@vitejs/plugin-react-swc": "^3.11.0", "autoprefixer": "^10.4.21", "babel-loader": "^10.0.0", From 7842b1793bb55f64a5b682944a4c4de3524f532d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 6 Oct 2025 01:10:45 +0000 Subject: [PATCH 76/76] chore(deps): bump dotenv from 17.2.1 to 17.2.3 Bumps [dotenv](https://github.com/motdotla/dotenv) from 17.2.1 to 17.2.3. - [Changelog](https://github.com/motdotla/dotenv/blob/master/CHANGELOG.md) - [Commits](https://github.com/motdotla/dotenv/compare/v17.2.1...v17.2.3) --- updated-dependencies: - dependency-name: dotenv dependency-version: 17.2.3 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- package-lock.json | 8 ++++---- package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3fbe0fbd7..c21faf227 100644 --- a/package-lock.json +++ b/package-lock.json @@ -41,7 +41,7 @@ "axios": "^1.12.2", "cardano-bridge": "github:socious-io/cardano-bridge#v0.0.6", "country-flag-icons": "^1.5.19", - "dotenv": "^17.2.1", + "dotenv": "^17.2.3", "ethers": "^6.15.0", "firebase": "^11.10.0", "i18next-browser-languagedetector": "^8.2.0", @@ -21635,9 +21635,9 @@ } }, "node_modules/dotenv": { - "version": "17.2.1", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.2.1.tgz", - "integrity": "sha512-kQhDYKZecqnM0fCnzI5eIv5L4cAe/iRI+HqMbO/hbRdTAeXDG+M9FjipUxNfbARuEg4iHIbhnhs78BCHNbSxEQ==", + "version": "17.2.3", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.2.3.tgz", + "integrity": "sha512-JVUnt+DUIzu87TABbhPmNfVdBDt18BLOWjMUFJMSi/Qqg7NTYtabbvSNJGOJ7afbRuv9D/lngizHtP7QyLQ+9w==", "license": "BSD-2-Clause", "engines": { "node": ">=12" diff --git a/package.json b/package.json index 2762aa0fd..ff7ef9802 100644 --- a/package.json +++ b/package.json @@ -61,7 +61,7 @@ "axios": "^1.12.2", "cardano-bridge": "github:socious-io/cardano-bridge#v0.0.6", "country-flag-icons": "^1.5.19", - "dotenv": "^17.2.1", + "dotenv": "^17.2.3", "ethers": "^6.15.0", "firebase": "^11.10.0", "i18next-browser-languagedetector": "^8.2.0",