From 5b9e418695a57cce483dcc62de61f2f2e3c7a912 Mon Sep 17 00:00:00 2001 From: Albert Folch Date: Wed, 16 Apr 2025 10:29:12 +0200 Subject: [PATCH 01/18] wip --- .gitignore | 3 +- package-lock.json | 67 ++++++++++++++++++- package.json | 2 + scripts/link-to-local-chat-sdk.js | 62 +++++++++++++++++ .../modal/components/RetractDisputeModal.tsx | 2 +- src/lib/utils/hooks/chat/common.ts | 4 +- src/pages/chat/components/Message.tsx | 2 +- .../chat/components/MessageSeparator.tsx | 2 +- .../conversation/ChatConversation.tsx | 19 +++--- .../conversation/ChatConversationBottom.tsx | 2 +- .../components/conversation/ChatInput.tsx | 4 +- .../chat/components/conversation/Messages.tsx | 25 +++++-- src/pages/chat/utils/send.ts | 2 +- 13 files changed, 170 insertions(+), 26 deletions(-) create mode 100644 scripts/link-to-local-chat-sdk.js diff --git a/.gitignore b/.gitignore index 51d226d08..3a65fede4 100644 --- a/.gitignore +++ b/.gitignore @@ -31,4 +31,5 @@ playwright-report/ test-results.json .vscode -codecov \ No newline at end of file +codecov +.qodo diff --git a/package-lock.json b/package-lock.json index 8a6c7d402..54ba29df6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -55,6 +55,7 @@ "@web3-react/network": "^8.2.3", "@web3-react/walletconnect": "^8.2.3", "@web3-react/walletconnect-v2": "^8.5.1", + "@xmtp/browser-sdk": "^2.0.3", "ajv": "^8.12.0", "array-move": "^4.0.0", "assert": "^2.0.0", @@ -17476,9 +17477,63 @@ "version": "2.6.2", "license": "0BSD" }, + "node_modules/@xmtp/browser-sdk": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@xmtp/browser-sdk/-/browser-sdk-2.0.3.tgz", + "integrity": "sha512-UaMDRpArFH1s4zuHnQuIC+UsVSm/8iQhORam6XFxiZPWsIM0Py12ZwLnCN59UHPFdQyz6cFbfI6em5xClJxYjg==", + "dependencies": { + "@xmtp/content-type-group-updated": "^2.0.1", + "@xmtp/content-type-primitives": "^2.0.1", + "@xmtp/content-type-text": "^2.0.1", + "@xmtp/proto": "^3.78.0", + "@xmtp/wasm-bindings": "1.2.0-dev.878fd38", + "uuid": "^11.1.0" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/@xmtp/browser-sdk/node_modules/uuid": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.1.0.tgz", + "integrity": "sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "bin": { + "uuid": "dist/esm/bin/uuid" + } + }, + "node_modules/@xmtp/content-type-group-updated": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@xmtp/content-type-group-updated/-/content-type-group-updated-2.0.1.tgz", + "integrity": "sha512-ao546DrxANHAqEZxMMHm41G/sE9vtAcNCrVGaOf1x5CIMAmXmH/lTvy6JVWnNn+DeJmNr6DrkMVVfAjP95OqLA==", + "dependencies": { + "@xmtp/content-type-primitives": "^2.0.1", + "@xmtp/proto": "^3.78.0" + } + }, + "node_modules/@xmtp/content-type-primitives": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@xmtp/content-type-primitives/-/content-type-primitives-2.0.1.tgz", + "integrity": "sha512-RfRwIVU2Pj2kgYxKnM+N1t1yzvt8C9lTEgma3vGqMjmh/yR3s4bGj8BhE0m8k2JCyCd0c5lQANeeaASOL1lsWQ==", + "dependencies": { + "@xmtp/proto": "^3.78.0" + } + }, + "node_modules/@xmtp/content-type-text": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@xmtp/content-type-text/-/content-type-text-2.0.1.tgz", + "integrity": "sha512-cX3Swxx90O1lYi0OC+ENwPfuV/b508V7h1ZNVxt828fmpwc0LL51KZG/PREVTxwk/yiTt2f6OQqnqkC4AbL8Rg==", + "dependencies": { + "@xmtp/content-type-primitives": "^2.0.1" + } + }, "node_modules/@xmtp/proto": { - "version": "3.26.0", - "license": "MIT", + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@xmtp/proto/-/proto-3.78.0.tgz", + "integrity": "sha512-JHkkvbdyqpWo1YOg88uOrc2GAsPnfXhIWaUKyIjXQdt4LltR4iAMgXcr1CFN+xjUmOBkAwwJ2JywUYv/uA4yZA==", "dependencies": { "long": "^5.2.0", "protobufjs": "^7.0.0", @@ -17512,6 +17567,14 @@ "node": ">=12.0.0" } }, + "node_modules/@xmtp/wasm-bindings": { + "version": "1.2.0-dev.878fd38", + "resolved": "https://registry.npmjs.org/@xmtp/wasm-bindings/-/wasm-bindings-1.2.0-dev.878fd38.tgz", + "integrity": "sha512-G72RniMu1kcx6/hsJ6s8qPkHYLILx2Wj99VnQePxsS6Q0njaOcThIPmCcc7YnoaICsNDv8XKcns2PLmwB38ziQ==", + "engines": { + "node": ">=20" + } + }, "node_modules/@xmtp/xmtp-js": { "version": "8.2.1", "license": "MIT", diff --git a/package.json b/package.json index 8a4614772..a3a8b0d08 100644 --- a/package.json +++ b/package.json @@ -32,6 +32,7 @@ "clean-react-cache:default": "rm -rf node_modules/.cache", "clean-react-cache:win32": "rmdir /S /Q node_modules\\.cache", "link-cc": "node ./scripts/link-to-local-core-components.js", + "link-chat": "node ./scripts/link-to-local-chat-sdk.js --link", "ts-coverage": "typescript-coverage-report", "tsc": "tsc" }, @@ -91,6 +92,7 @@ "@web3-react/network": "^8.2.3", "@web3-react/walletconnect": "^8.2.3", "@web3-react/walletconnect-v2": "^8.5.1", + "@xmtp/browser-sdk": "^2.0.3", "ajv": "^8.12.0", "array-move": "^4.0.0", "assert": "^2.0.0", diff --git a/scripts/link-to-local-chat-sdk.js b/scripts/link-to-local-chat-sdk.js new file mode 100644 index 000000000..3f2186c86 --- /dev/null +++ b/scripts/link-to-local-chat-sdk.js @@ -0,0 +1,62 @@ +/* eslint-disable @typescript-eslint/no-var-requires */ +const { program } = require("commander"); +const { symlinkSync, existsSync, rmSync, cpSync } = require("fs"); +const { resolve } = require("path"); + +program + .description( + "Link local Chat-sdk build directory to the current node_modules tree" + ) + .argument("", "Chat sdk local repository") + .option("--link", "Use symbolic links instead of hard copy") + .parse(process.argv); + +const [chatRepo] = program.args; +const opts = program.opts(); +const mode = opts.link ? "link" : "copy"; +const folders = ["src", "dist"]; + +const packages = [{ path: ".", mode, folders }]; + +async function main() { + for (const package of packages) { + for (const folder of package.folders) { + const target = `${resolve(chatRepo, package.path, folder)}`; + if (!existsSync(target)) { + console.error(`Target ${target} does not exist.`); + continue; + } + const linkPath = `${resolve( + __dirname, + "..", + "node_modules/@bosonprotocol/chat-sdk", + package.path, + folder + )}`; + while (existsSync(linkPath)) { + // remove linkPath first + rmSync(linkPath, { recursive: true }); + await new Promise((r) => setTimeout(r, 200)); + } + if (package.mode === "link") { + console.log(`Create link ${linkPath} --> ${target}`); + symlinkSync(target, linkPath, "junction"); + } + if (package.mode === "copy") { + console.log(`Copy ${target} into ${linkPath}`); + cpSync(target, linkPath, { + recursive: true, + force: true, + preserveTimestamps: true + }); + } + } + } +} + +main() + .then(() => console.log("success")) + .catch((e) => { + console.error(e); + process.exit(1); + }); diff --git a/src/components/modal/components/RetractDisputeModal.tsx b/src/components/modal/components/RetractDisputeModal.tsx index c6945d46c..a4ee99d71 100644 --- a/src/components/modal/components/RetractDisputeModal.tsx +++ b/src/components/modal/components/RetractDisputeModal.tsx @@ -152,7 +152,7 @@ export default function RetractDisputeModal({ await addMessage({ authorityId: "", - timestamp: Date.now(), + timestamp: BigInt(Date.now()) * BigInt(1_000_000), sender: address, recipient: destinationAddress, data: newMessage, diff --git a/src/lib/utils/hooks/chat/common.ts b/src/lib/utils/hooks/chat/common.ts index 626256dc6..09cd1b430 100644 --- a/src/lib/utils/hooks/chat/common.ts +++ b/src/lib/utils/hooks/chat/common.ts @@ -103,5 +103,7 @@ export function getDedupSortedMessages( seenMessagesSet.add(id); return !duplicate; }); - return uniqueMessages.sort((msgA, msgB) => msgA.timestamp - msgB.timestamp); + return uniqueMessages.sort((msgA, msgB) => + Number(msgA.timestamp - msgB.timestamp) + ); } diff --git a/src/pages/chat/components/Message.tsx b/src/pages/chat/components/Message.tsx index c6ca3e746..35cca4af3 100644 --- a/src/pages/chat/components/Message.tsx +++ b/src/pages/chat/components/Message.tsx @@ -133,7 +133,7 @@ const BottomDateStamp = ({ isLeftAligned: Props["isLeftAligned"]; message: Props["message"]; }) => { - const sentDate = new Date(message.timestamp); + const sentDate = new Date(Number(message.timestamp / BigInt(1_000_000))); return ( diff --git a/src/pages/chat/components/MessageSeparator.tsx b/src/pages/chat/components/MessageSeparator.tsx index 64872ffe4..2f12da1ac 100644 --- a/src/pages/chat/components/MessageSeparator.tsx +++ b/src/pages/chat/components/MessageSeparator.tsx @@ -57,7 +57,7 @@ interface Props { export default function MessageSeparator({ message }: Props) { const { diffInDays, sentDate } = useMemo(() => { const currentDate = dayjs().startOf("day"); - const sentDate = dayjs(message.timestamp).startOf("day"); + const sentDate = dayjs(Number(message.timestamp)).startOf("day"); return { diffInDays: currentDate.diff(sentDate, "day"), sentDate }; }, [message]); diff --git a/src/pages/chat/components/conversation/ChatConversation.tsx b/src/pages/chat/components/conversation/ChatConversation.tsx index f972f5182..d936dd388 100644 --- a/src/pages/chat/components/conversation/ChatConversation.tsx +++ b/src/pages/chat/components/conversation/ChatConversation.tsx @@ -187,6 +187,7 @@ const ChatConversation = ({ refetchExchanges }: ChatConversationProps) => { const { account: address } = useAccount(); + const { bosonXmtp } = useChatContext(); const [hasError, setHasError] = useState(false); const location = useLocation(); const iAmTheBuyer = myBuyerId === exchange?.buyer.id; @@ -207,7 +208,6 @@ const ChatConversation = ({ const destinationAddress = destinationAddressLowerCase ? utils.getAddress(destinationAddressLowerCase) : ""; - const { bosonXmtp } = useChatContext(); const threadId = useMemo(() => { if (!exchange) { return null; @@ -236,7 +236,7 @@ const ChatConversation = ({ const onMessagesReceived = useCallback( (messages: MessageData[]) => { const sortedMessages = messages.sort((msgA, msgB) => { - return msgB.timestamp - msgA.timestamp; + return Number((msgB.timestamp - msgA.timestamp).toString()); }); const tempAcceptedProposal = sortedMessages.find((message) => { return message.data.contentType === MessageType.AcceptProposal; @@ -245,7 +245,8 @@ const ChatConversation = ({ .filter(filterProposals) .find((message) => { const isAProposalFromSomeoneElse = - message.sender.toLowerCase() !== address?.toLowerCase(); + message.sender.toLowerCase() !== + bosonXmtp?.client.inboxId?.toLowerCase(); const hasProposals = !!(message.data.content as ProposalContent) ?.value.proposals?.length; return hasProposals && isAProposalFromSomeoneElse; @@ -254,7 +255,8 @@ const ChatConversation = ({ .filter(filterProposals) .find((message) => { const isMyProposal = - message.sender.toLowerCase() === address?.toLowerCase(); + message.sender.toLowerCase() === + bosonXmtp?.client.inboxId?.toLowerCase(); const hasProposals = !!(message.data.content as ProposalContent) ?.value.proposals?.length; @@ -283,7 +285,7 @@ const ChatConversation = ({ }); } }, - [address] + [bosonXmtp?.client.inboxId] ); const { @@ -303,7 +305,7 @@ const ChatConversation = ({ counterParty: destinationAddress, genesisDate: exchange?.committedDate ? new Date(Number(exchange?.committedDate) * 1000) - : new Date("2022-08-25"), + : new Date("2025-04-14"), checkCustomCondition: (mergedThread) => { // load conversation until we receive a proposal @@ -313,11 +315,12 @@ const ChatConversation = ({ const sortedProposals = [...mergedThread.messages] .filter(filterProposals) .sort((msgA, msgB) => { - return msgB.timestamp - msgA.timestamp; + return Number((msgB.timestamp - msgA.timestamp).toString()); }); return sortedProposals.some((message) => { const isAProposalFromSomeoneElse = - message.sender.toLowerCase() !== address?.toLowerCase(); + message.sender.toLowerCase() !== + bosonXmtp?.client.inboxId?.toLowerCase(); return isAProposalFromSomeoneElse; }); }, diff --git a/src/pages/chat/components/conversation/ChatConversationBottom.tsx b/src/pages/chat/components/conversation/ChatConversationBottom.tsx index e95c482ff..d1afb88b8 100644 --- a/src/pages/chat/components/conversation/ChatConversationBottom.tsx +++ b/src/pages/chat/components/conversation/ChatConversationBottom.tsx @@ -75,7 +75,7 @@ export const ChatConversationBottom: React.FC = ({ callbackSendingMessage: async (newMessage, uuid) => { await addMessage({ authorityId: "", - timestamp: Date.now(), + timestamp: BigInt(Date.now()) * BigInt(1_000_000), sender: address, recipient: destinationAddress, data: newMessage, diff --git a/src/pages/chat/components/conversation/ChatInput.tsx b/src/pages/chat/components/conversation/ChatInput.tsx index b68e20fed..49e73e012 100644 --- a/src/pages/chat/components/conversation/ChatInput.tsx +++ b/src/pages/chat/components/conversation/ChatInput.tsx @@ -190,7 +190,7 @@ export const ChatInput: React.FC = ({ await addMessage({ authorityId: "", - timestamp: Date.now(), + timestamp: BigInt(Date.now()), sender: address, recipient: destinationAddress, data: newMessage, @@ -247,7 +247,7 @@ export const ChatInput: React.FC = ({ callbackSendingMessage: async (newMessage, uuid) => { await addMessage({ authorityId: "", - timestamp: Date.now(), + timestamp: BigInt(Date.now()) * BigInt(1_000_000), sender: address, recipient: destinationAddress, data: newMessage, diff --git a/src/pages/chat/components/conversation/Messages.tsx b/src/pages/chat/components/conversation/Messages.tsx index 4a68e2444..68c0591f0 100644 --- a/src/pages/chat/components/conversation/Messages.tsx +++ b/src/pages/chat/components/conversation/Messages.tsx @@ -1,7 +1,9 @@ +import { BosonXmtpClient } from "@bosonprotocol/chat-sdk"; import { MessageData } from "@bosonprotocol/chat-sdk/dist/esm/util/v0.0.1/definitions"; import { subgraph } from "@bosonprotocol/react-kit"; import dayjs from "dayjs"; import { Exchange } from "lib/utils/hooks/useExchanges"; +import { useChatContext } from "pages/chat/ChatProvider/ChatContext"; import { WarningCircle } from "phosphor-react"; import { memo, RefObject, useMemo } from "react"; import InfiniteScroll from "react-infinite-scroll-component"; @@ -67,8 +69,11 @@ const LoadMoreMessages = styled.button.attrs({ type: "button" })` } `; -const getWasItSentByMe = (myAddress: string | undefined, sender: string) => { - return myAddress === sender; +const getWasItSentByMe = ( + bosonXmtp: BosonXmtpClient | undefined, + sender: string +) => { + return bosonXmtp?.client.inboxId === sender; }; type MessagesProps = { @@ -95,12 +100,13 @@ export const Messages: React.FC = memo( loadMoreMessages, thread, areThreadsLoading, - address, iAmTheBuyer, messagesContainerRef, lastReceivedProposal, lastSentProposal }) => { + const { bosonXmtp } = useChatContext(); + const hasMoreMessages = !isBeginningOfTimes; const Buyer = useMemo(() => { return ( @@ -173,21 +179,26 @@ export const Messages: React.FC = memo( const isFirstMessage = index === 0; const isPreviousMessageInADifferentDay = isFirstMessage ? false - : dayjs(message.timestamp) + : dayjs(Number(message.timestamp)) .startOf("day") .diff( - dayjs(thread.messages[index - 1].timestamp).startOf("day") + dayjs( + Number(thread.messages[index - 1].timestamp) + ).startOf("day") ) > 0; const showMessageSeparator = isFirstMessage || isPreviousMessageInADifferentDay; - const wasItMe = getWasItSentByMe(address, message.sender); + const wasItMe = getWasItSentByMe(bosonXmtp, message.sender); const Child = (wasItMe && iAmTheBuyer) || (!wasItMe && !iAmTheBuyer) ? Buyer : Seller; const leftAligned = !wasItMe; return ( - + <> {showMessageSeparator && ( diff --git a/src/pages/chat/utils/send.ts b/src/pages/chat/utils/send.ts index 05d6e009b..4f3e2fe21 100644 --- a/src/pages/chat/utils/send.ts +++ b/src/pages/chat/utils/send.ts @@ -208,7 +208,7 @@ export const sendAndAddMessageToUI = async ({ await addMessage?.({ authorityId: "", - timestamp: Date.now(), + timestamp: BigInt(Date.now()) * BigInt(1_000_000), sender: address, recipient: destinationAddress, data: newMessage, From 7a594bb934b10abc0957556081df7be119990c53 Mon Sep 17 00:00:00 2001 From: Albert Folch Date: Wed, 16 Apr 2025 11:56:28 +0200 Subject: [PATCH 02/18] wip --- src/pages/chat/ChatProvider/const.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/chat/ChatProvider/const.ts b/src/pages/chat/ChatProvider/const.ts index 4552aad33..b5bff1692 100644 --- a/src/pages/chat/ChatProvider/const.ts +++ b/src/pages/chat/ChatProvider/const.ts @@ -1,4 +1,4 @@ import { DappConfig } from "lib/config"; export const getChatEnvName = (dappConfig: DappConfig) => - `${dappConfig.envName}-${dappConfig.envConfig.contracts.protocolDiamond}`; + `bosonprotocol-${dappConfig.envName}-${dappConfig.envConfig.contracts.protocolDiamond}`.toLowerCase(); From 2926781cb7f676d01cb1d3fb63facf9699a94419 Mon Sep 17 00:00:00 2001 From: Albert Folch Date: Wed, 16 Apr 2025 16:32:51 +0200 Subject: [PATCH 03/18] wip --- .../components/Chat/ResolveDisputeModal.tsx | 2 -- .../modal/components/RetractDisputeModal.tsx | 3 +-- src/lib/utils/hooks/chat/getThreadWorker.ts | 13 +++++++++---- src/pages/chat/ChatProvider/const.ts | 3 ++- src/pages/chat/components/MessageSeparator.tsx | 4 +++- .../conversation/ChatConversation.tsx | 17 +++++++---------- .../conversation/ChatConversationBottom.tsx | 2 +- .../chat/components/conversation/ChatInput.tsx | 4 ++-- .../chat/components/conversation/Messages.tsx | 12 ++++++++---- src/pages/chat/utils/send.ts | 4 +--- src/pages/dispute-centre/RaiseDisputePage.tsx | 1 - 11 files changed, 34 insertions(+), 31 deletions(-) diff --git a/src/components/modal/components/Chat/ResolveDisputeModal.tsx b/src/components/modal/components/Chat/ResolveDisputeModal.tsx index f143a0c79..23591dee0 100644 --- a/src/components/modal/components/Chat/ResolveDisputeModal.tsx +++ b/src/components/modal/components/Chat/ResolveDisputeModal.tsx @@ -217,7 +217,6 @@ export default function ResolveDisputeModal({ bosonXmtp, addMessage, onSentMessage, - address, destinationAddress, newMessage }); @@ -276,7 +275,6 @@ export default function ResolveDisputeModal({ bosonXmtp, addMessage, onSentMessage, - address, destinationAddress, newMessage: errorMessageObj })); diff --git a/src/components/modal/components/RetractDisputeModal.tsx b/src/components/modal/components/RetractDisputeModal.tsx index a4ee99d71..d4d92f48d 100644 --- a/src/components/modal/components/RetractDisputeModal.tsx +++ b/src/components/modal/components/RetractDisputeModal.tsx @@ -153,7 +153,7 @@ export default function RetractDisputeModal({ await addMessage({ authorityId: "", timestamp: BigInt(Date.now()) * BigInt(1_000_000), - sender: address, + sender: bosonXmtp.inboxId || "", recipient: destinationAddress, data: newMessage, isValid: false, @@ -214,7 +214,6 @@ export default function RetractDisputeModal({ bosonXmtp, addMessage, onSentMessage, - address, destinationAddress, newMessage: errorMessageObj })); diff --git a/src/lib/utils/hooks/chat/getThreadWorker.ts b/src/lib/utils/hooks/chat/getThreadWorker.ts index 22fbd0d6e..dfad3c610 100644 --- a/src/lib/utils/hooks/chat/getThreadWorker.ts +++ b/src/lib/utils/hooks/chat/getThreadWorker.ts @@ -78,10 +78,15 @@ export async function getThread({ return null; } return () => { - return bosonXmtp.getThread(threadId, counterParty, { - startTime: times.startTime, - endTime: times.endTime - }); + return bosonXmtp.getThread( + threadId, + counterParty + // , // TODO: add back + // { + // sentAfterNs: BigInt(times.startTime.getTime()) * BigInt(1_000_000), + // sentBeforeNs: BigInt(times.endTime.getTime()) * BigInt(1_000_000) + // } + ); }; }); if (!promises.filter((v) => !!v).length) { diff --git a/src/pages/chat/ChatProvider/const.ts b/src/pages/chat/ChatProvider/const.ts index b5bff1692..7992bc49f 100644 --- a/src/pages/chat/ChatProvider/const.ts +++ b/src/pages/chat/ChatProvider/const.ts @@ -1,4 +1,5 @@ +import { EnvironmentType } from "@bosonprotocol/react-kit"; import { DappConfig } from "lib/config"; export const getChatEnvName = (dappConfig: DappConfig) => - `bosonprotocol-${dappConfig.envName}-${dappConfig.envConfig.contracts.protocolDiamond}`.toLowerCase(); + `${dappConfig.envName}-${dappConfig.envConfig.contracts.protocolDiamond}`.toLowerCase() as `${EnvironmentType}-0x123`; diff --git a/src/pages/chat/components/MessageSeparator.tsx b/src/pages/chat/components/MessageSeparator.tsx index 2f12da1ac..f542b4af6 100644 --- a/src/pages/chat/components/MessageSeparator.tsx +++ b/src/pages/chat/components/MessageSeparator.tsx @@ -57,7 +57,9 @@ interface Props { export default function MessageSeparator({ message }: Props) { const { diffInDays, sentDate } = useMemo(() => { const currentDate = dayjs().startOf("day"); - const sentDate = dayjs(Number(message.timestamp)).startOf("day"); + const sentDate = dayjs( + Number(message.timestamp / BigInt(1_000_000)) + ).startOf("day"); return { diffInDays: currentDate.diff(sentDate, "day"), sentDate }; }, [message]); diff --git a/src/pages/chat/components/conversation/ChatConversation.tsx b/src/pages/chat/components/conversation/ChatConversation.tsx index d936dd388..df1172465 100644 --- a/src/pages/chat/components/conversation/ChatConversation.tsx +++ b/src/pages/chat/components/conversation/ChatConversation.tsx @@ -319,8 +319,7 @@ const ChatConversation = ({ }); return sortedProposals.some((message) => { const isAProposalFromSomeoneElse = - message.sender.toLowerCase() !== - bosonXmtp?.client.inboxId?.toLowerCase(); + message.sender.toLowerCase() !== bosonXmtp?.inboxId; return isAProposalFromSomeoneElse; }); }, @@ -366,14 +365,12 @@ const ChatConversation = ({ const newMessages = Array.isArray(newMessageOrList) ? newMessageOrList : [newMessageOrList]; - const messagesWithIsValid = await Promise.all( - newMessages.map(async (message) => { - if (message.isValid === undefined) { - message.isValid = await validateMessage(message.data); - } - return message; - }) - ); + const messagesWithIsValid = newMessages.map((message) => { + if (message.isValid === undefined) { + message.isValid = validateMessage(message.data); + } + return message; + }); appendMessages(messagesWithIsValid); }, [appendMessages] diff --git a/src/pages/chat/components/conversation/ChatConversationBottom.tsx b/src/pages/chat/components/conversation/ChatConversationBottom.tsx index d1afb88b8..95b91ba2a 100644 --- a/src/pages/chat/components/conversation/ChatConversationBottom.tsx +++ b/src/pages/chat/components/conversation/ChatConversationBottom.tsx @@ -76,7 +76,7 @@ export const ChatConversationBottom: React.FC = ({ await addMessage({ authorityId: "", timestamp: BigInt(Date.now()) * BigInt(1_000_000), - sender: address, + sender: bosonXmtp.inboxId || "", recipient: destinationAddress, data: newMessage, isValid: false, diff --git a/src/pages/chat/components/conversation/ChatInput.tsx b/src/pages/chat/components/conversation/ChatInput.tsx index 49e73e012..6a232ecad 100644 --- a/src/pages/chat/components/conversation/ChatInput.tsx +++ b/src/pages/chat/components/conversation/ChatInput.tsx @@ -191,7 +191,7 @@ export const ChatInput: React.FC = ({ await addMessage({ authorityId: "", timestamp: BigInt(Date.now()), - sender: address, + sender: bosonXmtp.inboxId || "", recipient: destinationAddress, data: newMessage, isValid: false, @@ -248,7 +248,7 @@ export const ChatInput: React.FC = ({ await addMessage({ authorityId: "", timestamp: BigInt(Date.now()) * BigInt(1_000_000), - sender: address, + sender: bosonXmtp.inboxId || "", recipient: destinationAddress, data: newMessage, isValid: false, diff --git a/src/pages/chat/components/conversation/Messages.tsx b/src/pages/chat/components/conversation/Messages.tsx index 68c0591f0..5a501b363 100644 --- a/src/pages/chat/components/conversation/Messages.tsx +++ b/src/pages/chat/components/conversation/Messages.tsx @@ -73,7 +73,7 @@ const getWasItSentByMe = ( bosonXmtp: BosonXmtpClient | undefined, sender: string ) => { - return bosonXmtp?.client.inboxId === sender; + return bosonXmtp?.inboxId === sender; }; type MessagesProps = { @@ -177,13 +177,17 @@ export const Messages: React.FC = memo( )} {thread?.messages.map((message, index) => { const isFirstMessage = index === 0; + const timeStampInMs = message.timestamp / BigInt(1_000_000); const isPreviousMessageInADifferentDay = isFirstMessage ? false - : dayjs(Number(message.timestamp)) + : dayjs(Number(timeStampInMs)) .startOf("day") .diff( dayjs( - Number(thread.messages[index - 1].timestamp) + Number( + thread.messages[index - 1].timestamp / + BigInt(1_000_000) + ) ).startOf("day") ) > 0; const showMessageSeparator = @@ -196,7 +200,7 @@ export const Messages: React.FC = memo( const leftAligned = !wasItMe; return ( <> diff --git a/src/pages/chat/utils/send.ts b/src/pages/chat/utils/send.ts index 4f3e2fe21..2ea27b5ff 100644 --- a/src/pages/chat/utils/send.ts +++ b/src/pages/chat/utils/send.ts @@ -187,7 +187,6 @@ export const sendAndAddMessageToUI = async ({ bosonXmtp, addMessage, onSentMessage, - address, destinationAddress, newMessage }: { @@ -200,7 +199,6 @@ export const sendAndAddMessageToUI = async ({ onSentMessage?: | ((messageData: MessageData, uuid: string) => Promise) | undefined; - address: string; destinationAddress: string; newMessage: MessageObject; }) => { @@ -209,7 +207,7 @@ export const sendAndAddMessageToUI = async ({ await addMessage?.({ authorityId: "", timestamp: BigInt(Date.now()) * BigInt(1_000_000), - sender: address, + sender: bosonXmtp.inboxId || "", recipient: destinationAddress, data: newMessage, isValid: false, diff --git a/src/pages/dispute-centre/RaiseDisputePage.tsx b/src/pages/dispute-centre/RaiseDisputePage.tsx index a3be4fb14..f83435bef 100644 --- a/src/pages/dispute-centre/RaiseDisputePage.tsx +++ b/src/pages/dispute-centre/RaiseDisputePage.tsx @@ -319,7 +319,6 @@ function RaiseDisputePage() { bosonXmtp && (await sendAndAddMessageToUI({ bosonXmtp, - address, destinationAddress, newMessage: errorMessageObj })); From 979973de6807835bb69f079d2e3907cf8b28b10c Mon Sep 17 00:00:00 2001 From: Albert Folch Date: Wed, 16 Apr 2025 16:42:19 +0200 Subject: [PATCH 04/18] wip --- src/lib/utils/hooks/chat/getThreadWorker.ts | 6 ++++++ src/lib/utils/hooks/chat/useChatStatus.ts | 11 +++++------ src/pages/chat/ChatProvider/ChatContext.ts | 6 ++++-- 3 files changed, 15 insertions(+), 8 deletions(-) diff --git a/src/lib/utils/hooks/chat/getThreadWorker.ts b/src/lib/utils/hooks/chat/getThreadWorker.ts index dfad3c610..b22d108cc 100644 --- a/src/lib/utils/hooks/chat/getThreadWorker.ts +++ b/src/lib/utils/hooks/chat/getThreadWorker.ts @@ -71,6 +71,12 @@ export async function getThread({ genesisDate }); }); + console.log( + "timesArrayInRange", + timesArrayInRange, + "failedTimes", + failedTimes + ); const timesArray = [...timesArrayInRange, ...failedTimes]; failedTimesArray = []; const promises = timesArray.map((times) => { diff --git a/src/lib/utils/hooks/chat/useChatStatus.ts b/src/lib/utils/hooks/chat/useChatStatus.ts index 798e4a53c..4f6c0c879 100644 --- a/src/lib/utils/hooks/chat/useChatStatus.ts +++ b/src/lib/utils/hooks/chat/useChatStatus.ts @@ -1,4 +1,3 @@ -import { BosonXmtpClient } from "@bosonprotocol/chat-sdk"; import { useConfigContext } from "components/config/ConfigContext"; import { useEffect, useState } from "react"; @@ -26,6 +25,9 @@ export const useChatStatus = (): { const { account: address } = useAccount(); useEffect(() => { + if (!chatEnvName) { + throw new Error(`chatEnvName is falsy ${chatEnvName}`); + } if ( chatInitializationStatus === ChatInitializationStatus.PENDING && !!bosonXmtp @@ -37,11 +39,8 @@ export const useChatStatus = (): { ) { setError(null); - BosonXmtpClient.isXmtpEnabled( - address, - config.envConfig.envName === "production" ? "production" : "dev", - chatEnvName - ) + bosonXmtp + ?.isXmtpEnabled() .then((isEnabled) => { if (isEnabled) { setChatInitializationStatus(ChatInitializationStatus.INITIALIZED); diff --git a/src/pages/chat/ChatProvider/ChatContext.ts b/src/pages/chat/ChatProvider/ChatContext.ts index 13ac05824..d0fe6d972 100644 --- a/src/pages/chat/ChatProvider/ChatContext.ts +++ b/src/pages/chat/ChatProvider/ChatContext.ts @@ -1,17 +1,19 @@ import { BosonXmtpClient } from "@bosonprotocol/chat-sdk"; import { createContext, Dispatch, SetStateAction, useContext } from "react"; +import { getChatEnvName } from "./const"; + export const Context = createContext<{ bosonXmtp: BosonXmtpClient | undefined; initialize: Dispatch>; - chatEnvName: string; + chatEnvName: ReturnType | null; error: unknown; isInitializing: boolean; }>({ bosonXmtp: undefined, initialize: () => console.log("initialize has not been defined"), error: null, - chatEnvName: "", + chatEnvName: null, isInitializing: false }); From 8cef988c29c89e9a4e738265fdf04035352c6723 Mon Sep 17 00:00:00 2001 From: Albert Folch Date: Wed, 16 Apr 2025 16:44:19 +0200 Subject: [PATCH 05/18] wip --- src/lib/utils/hooks/chat/useChatStatus.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/lib/utils/hooks/chat/useChatStatus.ts b/src/lib/utils/hooks/chat/useChatStatus.ts index 4f6c0c879..61dc94951 100644 --- a/src/lib/utils/hooks/chat/useChatStatus.ts +++ b/src/lib/utils/hooks/chat/useChatStatus.ts @@ -38,9 +38,11 @@ export const useChatStatus = (): { chatInitializationStatus !== ChatInitializationStatus.ALREADY_INITIALIZED ) { setError(null); - + if (!bosonXmtp) { + throw new Error(`bosonXmtp is falsy ${bosonXmtp}`); + } bosonXmtp - ?.isXmtpEnabled() + .isXmtpEnabled() .then((isEnabled) => { if (isEnabled) { setChatInitializationStatus(ChatInitializationStatus.INITIALIZED); From b32fba045dbe9a65f285a6535fe8041da30097d5 Mon Sep 17 00:00:00 2001 From: Albert Folch Date: Tue, 22 Apr 2025 13:03:34 +0200 Subject: [PATCH 06/18] wip --- src/lib/utils/hooks/chat/getThreadWorker.ts | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/src/lib/utils/hooks/chat/getThreadWorker.ts b/src/lib/utils/hooks/chat/getThreadWorker.ts index b22d108cc..a4e182d95 100644 --- a/src/lib/utils/hooks/chat/getThreadWorker.ts +++ b/src/lib/utils/hooks/chat/getThreadWorker.ts @@ -84,15 +84,10 @@ export async function getThread({ return null; } return () => { - return bosonXmtp.getThread( - threadId, - counterParty - // , // TODO: add back - // { - // sentAfterNs: BigInt(times.startTime.getTime()) * BigInt(1_000_000), - // sentBeforeNs: BigInt(times.endTime.getTime()) * BigInt(1_000_000) - // } - ); + return bosonXmtp.getThread(threadId, counterParty, { + sentAfterNs: BigInt(times.startTime.getTime()) * BigInt(1_000_000), + sentBeforeNs: BigInt(times.endTime.getTime()) * BigInt(1_000_000) + }); }; }); if (!promises.filter((v) => !!v).length) { From 9c5d7b2c71b7ce505390c5836f166d88ff53af7d Mon Sep 17 00:00:00 2001 From: Albert Folch Date: Wed, 23 Apr 2025 14:29:19 +0200 Subject: [PATCH 07/18] wip --- src/lib/utils/hooks/chat/getThreadWorker.ts | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/lib/utils/hooks/chat/getThreadWorker.ts b/src/lib/utils/hooks/chat/getThreadWorker.ts index a4e182d95..b55813c5c 100644 --- a/src/lib/utils/hooks/chat/getThreadWorker.ts +++ b/src/lib/utils/hooks/chat/getThreadWorker.ts @@ -71,12 +71,6 @@ export async function getThread({ genesisDate }); }); - console.log( - "timesArrayInRange", - timesArrayInRange, - "failedTimes", - failedTimes - ); const timesArray = [...timesArrayInRange, ...failedTimes]; failedTimesArray = []; const promises = timesArray.map((times) => { From ffdb514bfa03e0473507fb83497e210848282497 Mon Sep 17 00:00:00 2001 From: Albert Folch Date: Wed, 23 Apr 2025 14:51:25 +0200 Subject: [PATCH 08/18] wip --- src/pages/chat/components/conversation/ChatConversation.tsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/pages/chat/components/conversation/ChatConversation.tsx b/src/pages/chat/components/conversation/ChatConversation.tsx index df1172465..b33d8b21b 100644 --- a/src/pages/chat/components/conversation/ChatConversation.tsx +++ b/src/pages/chat/components/conversation/ChatConversation.tsx @@ -287,7 +287,9 @@ const ChatConversation = ({ }, [bosonXmtp?.client.inboxId] ); - + useEffect(() => { + bosonXmtp?.client.conversations.syncAll(); + }, [bosonXmtp?.client.conversations]); const { data: thread, isLoading: areThreadsLoading, From 8040f805cd79ceaad1df82452c51617c34ba1de6 Mon Sep 17 00:00:00 2001 From: Albert Folch Date: Wed, 23 Apr 2025 14:58:47 +0200 Subject: [PATCH 09/18] wip --- src/pages/chat/components/conversation/ChatInput.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/chat/components/conversation/ChatInput.tsx b/src/pages/chat/components/conversation/ChatInput.tsx index 6a232ecad..a48021f9e 100644 --- a/src/pages/chat/components/conversation/ChatInput.tsx +++ b/src/pages/chat/components/conversation/ChatInput.tsx @@ -190,7 +190,7 @@ export const ChatInput: React.FC = ({ await addMessage({ authorityId: "", - timestamp: BigInt(Date.now()), + timestamp: BigInt(Date.now()) * BigInt(1_000_000), sender: bosonXmtp.inboxId || "", recipient: destinationAddress, data: newMessage, From 4d6a716e8b1006e624bcb9bd9cdcf8c016fa4060 Mon Sep 17 00:00:00 2001 From: Albert Folch Date: Wed, 23 Apr 2025 16:50:59 +0200 Subject: [PATCH 10/18] wip --- package-lock.json | 2131 ++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 1995 insertions(+), 136 deletions(-) diff --git a/package-lock.json b/package-lock.json index 54ba29df6..ffc9380f6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1279,11 +1279,13 @@ "license": "0BSD" }, "node_modules/@babel/code-frame": { - "version": "7.23.5", - "license": "MIT", + "version": "7.26.2", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", + "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", "dependencies": { - "@babel/highlight": "^7.23.4", - "chalk": "^2.4.2" + "@babel/helper-validator-identifier": "^7.25.9", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" }, "engines": { "node": ">=6.9.0" @@ -1621,15 +1623,17 @@ } }, "node_modules/@babel/helper-string-parser": { - "version": "7.23.4", - "license": "MIT", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", + "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.20", - "license": "MIT", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", + "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", "engines": { "node": ">=6.9.0" } @@ -1665,21 +1669,13 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/highlight": { - "version": "7.23.4", - "license": "MIT", + "node_modules/@babel/parser": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.0.tgz", + "integrity": "sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==", "dependencies": { - "@babel/helper-validator-identifier": "^7.22.20", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0" + "@babel/types": "^7.27.0" }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/parser": { - "version": "7.24.0", - "license": "MIT", "bin": { "parser": "bin/babel-parser.js" }, @@ -3349,12 +3345,13 @@ "license": "MIT" }, "node_modules/@babel/template": { - "version": "7.24.0", - "license": "MIT", + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.0.tgz", + "integrity": "sha512-2ncevenBqXI6qRMukPlXwHKHchC7RyMuu4xv5JBXRfOGVcTy1mXCD12qrp7Jsoxll1EV3+9sE4GugBVRjT2jFA==", "dependencies": { - "@babel/code-frame": "^7.23.5", - "@babel/parser": "^7.24.0", - "@babel/types": "^7.24.0" + "@babel/code-frame": "^7.26.2", + "@babel/parser": "^7.27.0", + "@babel/types": "^7.27.0" }, "engines": { "node": ">=6.9.0" @@ -3380,12 +3377,12 @@ } }, "node_modules/@babel/types": { - "version": "7.24.0", - "license": "MIT", + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.0.tgz", + "integrity": "sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==", "dependencies": { - "@babel/helper-string-parser": "^7.23.4", - "@babel/helper-validator-identifier": "^7.22.20", - "to-fast-properties": "^2.0.0" + "@babel/helper-string-parser": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -3396,31 +3393,162 @@ "license": "MIT" }, "node_modules/@bosonprotocol/chat-sdk": { - "version": "1.3.1-alpha.9", - "license": "Apache-2.0", + "version": "1.3.1-alpha.13", + "resolved": "https://registry.npmjs.org/@bosonprotocol/chat-sdk/-/chat-sdk-1.3.1-alpha.13.tgz", + "integrity": "sha512-0ArRSPImsS1PFrUXjLX1xCLHGgO7DssZp6xN04uRG29Ci+8X+cxFYGniqnylw8C/K1GGVop1IaKx8dgnxYNu2g==", + "hasInstallScript": true, "dependencies": { - "@xmtp/xmtp-js": "^8.2.0", + "@vitest/browser": "^3.1.1", + "@xmtp/browser-sdk": "^2.0.5", + "babel-plugin-transform-import-meta": "^2.3.2", "ethers": "^5.7.2", + "playwright": "^1.51.1", "valid-data-url": "^4.0.1", - "yup": "^0.32.11" + "viem": "^2.26.5" + }, + "peerDependencies": { + "yup": "^1.5.0" } }, - "node_modules/@bosonprotocol/chat-sdk/node_modules/yup": { - "version": "0.32.11", - "resolved": "https://registry.npmjs.org/yup/-/yup-0.32.11.tgz", - "integrity": "sha512-Z2Fe1bn+eLstG8DRR6FTavGD+MeAwyfmouhHsIUgaADz8jvFKbO/fXc2trJKZg+5EBjh4gGm3iU/t3onKlXHIg==", - "license": "MIT", + "node_modules/@bosonprotocol/chat-sdk/node_modules/@noble/curves": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.8.2.tgz", + "integrity": "sha512-vnI7V6lFNe0tLAuJMu+2sX+FcL14TaCWy1qiczg1VwRmPrpQCdq5ESXQMqUc2tluRNf6irBXrWbl1mGN8uaU/g==", "dependencies": { - "@babel/runtime": "^7.15.4", - "@types/lodash": "^4.14.175", - "lodash": "^4.17.21", - "lodash-es": "^4.17.21", - "nanoclone": "^0.2.1", - "property-expr": "^2.0.4", - "toposort": "^2.0.2" + "@noble/hashes": "1.7.2" }, "engines": { - "node": ">=10" + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@bosonprotocol/chat-sdk/node_modules/@noble/hashes": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.7.2.tgz", + "integrity": "sha512-biZ0NUSxyjLLqo6KxEJ1b+C2NAx0wtDoFvCaXHGgUkeHzf3Xc1xKumFKREuT7f7DARNZ/slvYUwFG6B0f2b6hQ==", + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@bosonprotocol/chat-sdk/node_modules/@scure/base": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.2.4.tgz", + "integrity": "sha512-5Yy9czTO47mqz+/J8GM6GIId4umdCk1wc1q8rKERQulIoc8VP9pzDcghv10Tl2E7R96ZUx/PhND3ESYUQX8NuQ==", + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@bosonprotocol/chat-sdk/node_modules/@scure/bip32": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.6.2.tgz", + "integrity": "sha512-t96EPDMbtGgtb7onKKqxRLfE5g05k7uHnHRM2xdE6BP/ZmxaLtPek4J4KfVn/90IQNrU1IOAqMgiDtUdtbe3nw==", + "dependencies": { + "@noble/curves": "~1.8.1", + "@noble/hashes": "~1.7.1", + "@scure/base": "~1.2.2" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@bosonprotocol/chat-sdk/node_modules/@scure/bip39": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.5.4.tgz", + "integrity": "sha512-TFM4ni0vKvCfBpohoh+/lY05i9gRbSwXWngAsF4CABQxoaOHijxuaZ2R6cStDQ5CHtHO9aGJTr4ksVJASRRyMA==", + "dependencies": { + "@noble/hashes": "~1.7.1", + "@scure/base": "~1.2.4" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@bosonprotocol/chat-sdk/node_modules/abitype": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/abitype/-/abitype-1.0.8.tgz", + "integrity": "sha512-ZeiI6h3GnW06uYDLx0etQtX/p8E24UaHHBj57RSjK7YBFe7iuVn07EDpOeP451D06sF27VOz9JJPlIKJmXgkEg==", + "funding": { + "url": "https://github.com/sponsors/wevm" + }, + "peerDependencies": { + "typescript": ">=5.0.4", + "zod": "^3 >=3.22.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + }, + "zod": { + "optional": true + } + } + }, + "node_modules/@bosonprotocol/chat-sdk/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" + } + ], + "peerDependencies": { + "ws": "*" + } + }, + "node_modules/@bosonprotocol/chat-sdk/node_modules/viem": { + "version": "2.28.0", + "resolved": "https://registry.npmjs.org/viem/-/viem-2.28.0.tgz", + "integrity": "sha512-Z4W5O1pe+6pirYTFm451FcZmfGAUxUWt2L/eWC+YfTF28j/8rd7q6MBAi05lMN4KhLJjhN0s5YGIPB+kf1L20g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/wevm" + } + ], + "dependencies": { + "@noble/curves": "1.8.2", + "@noble/hashes": "1.7.2", + "@scure/bip32": "1.6.2", + "@scure/bip39": "1.5.4", + "abitype": "1.0.8", + "isows": "1.0.6", + "ox": "0.6.9", + "ws": "8.18.1" + }, + "peerDependencies": { + "typescript": ">=5.0.4" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@bosonprotocol/chat-sdk/node_modules/ws": { + "version": "8.18.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.1.tgz", + "integrity": "sha512-RKW2aJZMXeMxVpnZ6bck+RswznaxmzdULiBr6KY7XkTnW8uvt0iT9H5DkHUChXrc+uurzwa0rVI16n/Xzjdz1w==", + "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/@bosonprotocol/common": { @@ -5099,6 +5227,22 @@ "node": ">=12" } }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.3.tgz", + "integrity": "sha512-1QaLtOWq0mzK6tzzp0jRN3eccmN3hezey7mhLnzC6oNlJoUJz4nym5ZD7mDnS/LZQgkrhEbEiTn515lPeLpgWA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "netbsd" + ], + "peer": true, + "engines": { + "node": ">=18" + } + }, "node_modules/@esbuild/netbsd-x64": { "version": "0.21.5", "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", @@ -8303,8 +8447,9 @@ } }, "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "license": "MIT" + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==" }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.9", @@ -8624,7 +8769,8 @@ "url": "https://paulmillr.com/funding/" } ], - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", @@ -9494,9 +9640,9 @@ } }, "node_modules/@polka/url": { - "version": "1.0.0-next.21", - "dev": true, - "license": "MIT" + "version": "1.0.0-next.29", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.29.tgz", + "integrity": "sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==" }, "node_modules/@popperjs/core": { "version": "2.11.5", @@ -12820,6 +12966,266 @@ "rollup": "^1.20.0||^2.0.0" } }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.40.0.tgz", + "integrity": "sha512-+Fbls/diZ0RDerhE8kyC6hjADCXA1K4yVNlH0EYfd2XjyH0UGgzaQ8MlT0pCXAThfxv3QUAczHaL+qSv1E4/Cg==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "android" + ], + "peer": true + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.40.0.tgz", + "integrity": "sha512-PPA6aEEsTPRz+/4xxAmaoWDqh67N7wFbgFUJGMnanCFs0TV99M0M8QhhaSCks+n6EbQoFvLQgYOGXxlMGQe/6w==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ], + "peer": true + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.40.0.tgz", + "integrity": "sha512-GwYOcOakYHdfnjjKwqpTGgn5a6cUX7+Ra2HeNj/GdXvO2VJOOXCiYYlRFU4CubFM67EhbmzLOmACKEfvp3J1kQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "peer": true + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.40.0.tgz", + "integrity": "sha512-CoLEGJ+2eheqD9KBSxmma6ld01czS52Iw0e2qMZNpPDlf7Z9mj8xmMemxEucinev4LgHalDPczMyxzbq+Q+EtA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "peer": true + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.40.0.tgz", + "integrity": "sha512-r7yGiS4HN/kibvESzmrOB/PxKMhPTlz+FcGvoUIKYoTyGd5toHp48g1uZy1o1xQvybwwpqpe010JrcGG2s5nkg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "peer": true + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.40.0.tgz", + "integrity": "sha512-mVDxzlf0oLzV3oZOr0SMJ0lSDd3xC4CmnWJ8Val8isp9jRGl5Dq//LLDSPFrasS7pSm6m5xAcKaw3sHXhBjoRw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "peer": true + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.40.0.tgz", + "integrity": "sha512-y/qUMOpJxBMy8xCXD++jeu8t7kzjlOCkoxxajL58G62PJGBZVl/Gwpm7JK9+YvlB701rcQTzjUZ1JgUoPTnoQA==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.40.0.tgz", + "integrity": "sha512-GoCsPibtVdJFPv/BOIvBKO/XmwZLwaNWdyD8TKlXuqp0veo2sHE+A/vpMQ5iSArRUz/uaoj4h5S6Pn0+PdhRjg==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.40.0.tgz", + "integrity": "sha512-L5ZLphTjjAD9leJzSLI7rr8fNqJMlGDKlazW2tX4IUF9P7R5TMQPElpH82Q7eNIDQnQlAyiNVfRPfP2vM5Avvg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.40.0.tgz", + "integrity": "sha512-ATZvCRGCDtv1Y4gpDIXsS+wfFeFuLwVxyUBSLawjgXK2tRE6fnsQEkE4csQQYWlBlsFztRzCnBvWVfcae/1qxQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true + }, + "node_modules/@rollup/rollup-linux-loongarch64-gnu": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.40.0.tgz", + "integrity": "sha512-wG9e2XtIhd++QugU5MD9i7OnpaVb08ji3P1y/hNbxrQ3sYEelKJOq1UJ5dXczeo6Hj2rfDEL5GdtkMSVLa/AOg==", + "cpu": [ + "loong64" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true + }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.40.0.tgz", + "integrity": "sha512-vgXfWmj0f3jAUvC7TZSU/m/cOE558ILWDzS7jBhiCAFpY2WEBn5jqgbqvmzlMjtp8KlLcBlXVD2mkTSEQE6Ixw==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.40.0.tgz", + "integrity": "sha512-uJkYTugqtPZBS3Z136arevt/FsKTF/J9dEMTX/cwR7lsAW4bShzI2R0pJVw+hcBTWF4dxVckYh72Hk3/hWNKvA==", + "cpu": [ + "riscv64" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.40.0.tgz", + "integrity": "sha512-rKmSj6EXQRnhSkE22+WvrqOqRtk733x3p5sWpZilhmjnkHkpeCgWsFFo0dGnUGeA+OZjRl3+VYq+HyCOEuwcxQ==", + "cpu": [ + "riscv64" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.40.0.tgz", + "integrity": "sha512-SpnYlAfKPOoVsQqmTFJ0usx0z84bzGOS9anAC0AZ3rdSo3snecihbhFTlJZ8XMwzqAcodjFU4+/SM311dqE5Sw==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.40.0.tgz", + "integrity": "sha512-RcDGMtqF9EFN8i2RYN2W+64CdHruJ5rPqrlYw+cgM3uOVPSsnAQps7cpjXe9be/yDp8UC7VLoCoKC8J3Kn2FkQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.40.0.tgz", + "integrity": "sha512-HZvjpiUmSNx5zFgwtQAV1GaGazT2RWvqeDi0hV+AtC8unqqDSsaFjPxfsO6qPtKRRg25SisACWnJ37Yio8ttaw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.40.0.tgz", + "integrity": "sha512-UtZQQI5k/b8d7d3i9AZmA/t+Q4tk3hOC0tMOMSq2GlMYOfxbesxG4mJSeDp0EHs30N9bsfwUvs3zF4v/RzOeTQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "peer": true + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.40.0.tgz", + "integrity": "sha512-+m03kvI2f5syIqHXCZLPVYplP8pQch9JHyXKZ3AGMKlg8dCyr2PKHjwRLiW53LTrN/Nc3EqHOKxUxzoSPdKddA==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "peer": true + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.40.0.tgz", + "integrity": "sha512-lpPE1cLfP5oPzVjKMx10pgBmKELQnFJXHgvtHCtuJWOv8MxqdEIMNtgHgBFf7Ea2/7EuVwa9fodWUfXAlXZLZQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "peer": true + }, "node_modules/@rushstack/eslint-patch": { "version": "1.1.4", "license": "MIT" @@ -14934,8 +15340,9 @@ } }, "node_modules/@testing-library/user-event": { - "version": "14.2.6", - "license": "MIT", + "version": "14.6.1", + "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-14.6.1.tgz", + "integrity": "sha512-vq7fv0rnt+QTXgPxr5Hjc210p6YKq2kmdziLgnsZGgLJ9e6VAShx1pACLuRjd/AS/sr7phAR58OIIpf0LlmQNw==", "engines": { "node": ">=12", "npm": ">=6" @@ -15069,8 +15476,9 @@ "integrity": "sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==" }, "node_modules/@types/debug": { - "version": "4.1.7", - "license": "MIT", + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", + "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", "dependencies": { "@types/ms": "*" } @@ -15229,6 +15637,7 @@ }, "node_modules/@types/lodash": { "version": "4.14.182", + "dev": true, "license": "MIT" }, "node_modules/@types/lodash.merge": { @@ -16400,6 +16809,328 @@ "version": "3.4.1-solc-0.7-2", "license": "MIT" }, + "node_modules/@vitest/browser": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@vitest/browser/-/browser-3.1.2.tgz", + "integrity": "sha512-dwL6hQg3NSDP3Z4xzIZL0xHq/AkQAPQ4StFpWVlY2zbRJtK3Y2YqdFZ7YmZjszTETN1BDQZRn/QOrcP+c8ATgg==", + "dependencies": { + "@testing-library/dom": "^10.4.0", + "@testing-library/user-event": "^14.6.1", + "@vitest/mocker": "3.1.2", + "@vitest/utils": "3.1.2", + "magic-string": "^0.30.17", + "sirv": "^3.0.1", + "tinyrainbow": "^2.0.0", + "ws": "^8.18.1" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "playwright": "*", + "vitest": "3.1.2", + "webdriverio": "^7.0.0 || ^8.0.0 || ^9.0.0" + }, + "peerDependenciesMeta": { + "playwright": { + "optional": true + }, + "safaridriver": { + "optional": true + }, + "webdriverio": { + "optional": true + } + } + }, + "node_modules/@vitest/browser/node_modules/@testing-library/dom": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-10.4.0.tgz", + "integrity": "sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==", + "dependencies": { + "@babel/code-frame": "^7.10.4", + "@babel/runtime": "^7.12.5", + "@types/aria-query": "^5.0.1", + "aria-query": "5.3.0", + "chalk": "^4.1.0", + "dom-accessibility-api": "^0.5.9", + "lz-string": "^1.5.0", + "pretty-format": "^27.0.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@vitest/browser/node_modules/@types/aria-query": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz", + "integrity": "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==" + }, + "node_modules/@vitest/browser/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@vitest/browser/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@vitest/browser/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@vitest/browser/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/@vitest/browser/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@vitest/browser/node_modules/magic-string": { + "version": "0.30.17", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", + "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0" + } + }, + "node_modules/@vitest/browser/node_modules/mrmime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.1.tgz", + "integrity": "sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==", + "engines": { + "node": ">=10" + } + }, + "node_modules/@vitest/browser/node_modules/sirv": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-3.0.1.tgz", + "integrity": "sha512-FoqMu0NCGBLCcAkS1qA+XJIQTR6/JHfQXl+uGteNCQ76T91DMUjPa9xfmeqMY3z80nLSg9yQmNjK0Px6RWsH/A==", + "dependencies": { + "@polka/url": "^1.0.0-next.24", + "mrmime": "^2.0.0", + "totalist": "^3.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@vitest/browser/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@vitest/browser/node_modules/totalist": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", + "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/@vitest/browser/node_modules/ws": { + "version": "8.18.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.1.tgz", + "integrity": "sha512-RKW2aJZMXeMxVpnZ6bck+RswznaxmzdULiBr6KY7XkTnW8uvt0iT9H5DkHUChXrc+uurzwa0rVI16n/Xzjdz1w==", + "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/@vitest/expect": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.1.2.tgz", + "integrity": "sha512-O8hJgr+zREopCAqWl3uCVaOdqJwZ9qaDwUP7vy3Xigad0phZe9APxKhPcDNqYYi0rX5oMvwJMSCAXY2afqeTSA==", + "peer": true, + "dependencies": { + "@vitest/spy": "3.1.2", + "@vitest/utils": "3.1.2", + "chai": "^5.2.0", + "tinyrainbow": "^2.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/mocker": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.1.2.tgz", + "integrity": "sha512-kOtd6K2lc7SQ0mBqYv/wdGedlqPdM/B38paPY+OwJ1XiNi44w3Fpog82UfOibmHaV9Wod18A09I9SCKLyDMqgw==", + "dependencies": { + "@vitest/spy": "3.1.2", + "estree-walker": "^3.0.3", + "magic-string": "^0.30.17" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "msw": "^2.4.9", + "vite": "^5.0.0 || ^6.0.0" + }, + "peerDependenciesMeta": { + "msw": { + "optional": true + }, + "vite": { + "optional": true + } + } + }, + "node_modules/@vitest/mocker/node_modules/@types/estree": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz", + "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==" + }, + "node_modules/@vitest/mocker/node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "dependencies": { + "@types/estree": "^1.0.0" + } + }, + "node_modules/@vitest/mocker/node_modules/magic-string": { + "version": "0.30.17", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", + "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0" + } + }, + "node_modules/@vitest/pretty-format": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.1.2.tgz", + "integrity": "sha512-R0xAiHuWeDjTSB3kQ3OQpT8Rx3yhdOAIm/JM4axXxnG7Q/fS8XUwggv/A4xzbQA+drYRjzkMnpYnOGAc4oeq8w==", + "dependencies": { + "tinyrainbow": "^2.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/runner": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.1.2.tgz", + "integrity": "sha512-bhLib9l4xb4sUMPXnThbnhX2Yi8OutBMA8Yahxa7yavQsFDtwY/jrUZwpKp2XH9DhRFJIeytlyGpXCqZ65nR+g==", + "peer": true, + "dependencies": { + "@vitest/utils": "3.1.2", + "pathe": "^2.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/runner/node_modules/pathe": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", + "peer": true + }, + "node_modules/@vitest/snapshot": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.1.2.tgz", + "integrity": "sha512-Q1qkpazSF/p4ApZg1vfZSQ5Yw6OCQxVMVrLjslbLFA1hMDrT2uxtqMaw8Tc/jy5DLka1sNs1Y7rBcftMiaSH/Q==", + "peer": true, + "dependencies": { + "@vitest/pretty-format": "3.1.2", + "magic-string": "^0.30.17", + "pathe": "^2.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/snapshot/node_modules/magic-string": { + "version": "0.30.17", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", + "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", + "peer": true, + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0" + } + }, + "node_modules/@vitest/snapshot/node_modules/pathe": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", + "peer": true + }, + "node_modules/@vitest/spy": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.1.2.tgz", + "integrity": "sha512-OEc5fSXMws6sHVe4kOFyDSj/+4MSwst0ib4un0DlcYgQvRuYQ0+M2HyqGaauUMnjq87tmUaMNDxKQx7wNfVqPA==", + "dependencies": { + "tinyspy": "^3.0.2" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/utils": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.1.2.tgz", + "integrity": "sha512-5GGd0ytZ7BH3H6JTj9Kw7Prn1Nbg0wZVrIvou+UWxm54d+WoXXgAgjFJ8wn3LdagWLFSEfpPeyYrByZaGEZHLg==", + "dependencies": { + "@vitest/pretty-format": "3.1.2", + "loupe": "^3.1.3", + "tinyrainbow": "^2.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, "node_modules/@walletconnect/browser-utils": { "version": "1.8.0", "license": "Apache-2.0", @@ -17478,15 +18209,15 @@ "license": "0BSD" }, "node_modules/@xmtp/browser-sdk": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@xmtp/browser-sdk/-/browser-sdk-2.0.3.tgz", - "integrity": "sha512-UaMDRpArFH1s4zuHnQuIC+UsVSm/8iQhORam6XFxiZPWsIM0Py12ZwLnCN59UHPFdQyz6cFbfI6em5xClJxYjg==", + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/@xmtp/browser-sdk/-/browser-sdk-2.0.9.tgz", + "integrity": "sha512-nbsMrm9+6Zsh2mQzau1KuDU5UEFOr5I8zGVA82dBzV2XDZ0JllnX0+BWDqus3K8uMJjuGbn1cERseOIXOoT6ww==", "dependencies": { - "@xmtp/content-type-group-updated": "^2.0.1", - "@xmtp/content-type-primitives": "^2.0.1", - "@xmtp/content-type-text": "^2.0.1", + "@xmtp/content-type-group-updated": "^2.0.2", + "@xmtp/content-type-primitives": "^2.0.2", + "@xmtp/content-type-text": "^2.0.2", "@xmtp/proto": "^3.78.0", - "@xmtp/wasm-bindings": "1.2.0-dev.878fd38", + "@xmtp/wasm-bindings": "1.2.0-dev.75e600e", "uuid": "^11.1.0" }, "engines": { @@ -17506,28 +18237,28 @@ } }, "node_modules/@xmtp/content-type-group-updated": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@xmtp/content-type-group-updated/-/content-type-group-updated-2.0.1.tgz", - "integrity": "sha512-ao546DrxANHAqEZxMMHm41G/sE9vtAcNCrVGaOf1x5CIMAmXmH/lTvy6JVWnNn+DeJmNr6DrkMVVfAjP95OqLA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@xmtp/content-type-group-updated/-/content-type-group-updated-2.0.2.tgz", + "integrity": "sha512-ZUGLtzWALo5jimk5hYBVXjbdaKT6zP6a9wK0Urzl9H+Xv2w+H3fYDhwAidU0PXTcLL81qlUM6joxKVlsF5udvA==", "dependencies": { - "@xmtp/content-type-primitives": "^2.0.1", + "@xmtp/content-type-primitives": "^2.0.2", "@xmtp/proto": "^3.78.0" } }, "node_modules/@xmtp/content-type-primitives": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@xmtp/content-type-primitives/-/content-type-primitives-2.0.1.tgz", - "integrity": "sha512-RfRwIVU2Pj2kgYxKnM+N1t1yzvt8C9lTEgma3vGqMjmh/yR3s4bGj8BhE0m8k2JCyCd0c5lQANeeaASOL1lsWQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@xmtp/content-type-primitives/-/content-type-primitives-2.0.2.tgz", + "integrity": "sha512-OTUsCD48sO2Eg69dfre32OSnXSkmefbSZA4L0S58LqYK6+hMymFRRjEH4fvPzXc9WCw5FmCYEG7DFAaB680HiQ==", "dependencies": { "@xmtp/proto": "^3.78.0" } }, "node_modules/@xmtp/content-type-text": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@xmtp/content-type-text/-/content-type-text-2.0.1.tgz", - "integrity": "sha512-cX3Swxx90O1lYi0OC+ENwPfuV/b508V7h1ZNVxt828fmpwc0LL51KZG/PREVTxwk/yiTt2f6OQqnqkC4AbL8Rg==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@xmtp/content-type-text/-/content-type-text-2.0.2.tgz", + "integrity": "sha512-nlRufOYPrG5sNbruNPCsb6Qk9/jmJ5lMooPsZEo4Dbwda/2S4bSvrrIncT6if7M2SCha3hxtlgJlFGeTtHy4gQ==", "dependencies": { - "@xmtp/content-type-primitives": "^2.0.1" + "@xmtp/content-type-primitives": "^2.0.2" } }, "node_modules/@xmtp/proto": { @@ -17542,13 +18273,15 @@ } }, "node_modules/@xmtp/proto/node_modules/long": { - "version": "5.2.3", - "license": "Apache-2.0" + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/long/-/long-5.3.2.tgz", + "integrity": "sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==" }, "node_modules/@xmtp/proto/node_modules/protobufjs": { - "version": "7.2.4", + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.5.0.tgz", + "integrity": "sha512-Z2E/kOY1QjoMlCytmexzYfDm/w5fKAiRwpSzGtdnXW1zC88Z2yXazHHrOtwCzn+7wSxyE8PYM4rvVcMphF9sOA==", "hasInstallScript": true, - "license": "BSD-3-Clause", "dependencies": { "@protobufjs/aspromise": "^1.1.2", "@protobufjs/base64": "^1.1.2", @@ -17568,43 +18301,13 @@ } }, "node_modules/@xmtp/wasm-bindings": { - "version": "1.2.0-dev.878fd38", - "resolved": "https://registry.npmjs.org/@xmtp/wasm-bindings/-/wasm-bindings-1.2.0-dev.878fd38.tgz", - "integrity": "sha512-G72RniMu1kcx6/hsJ6s8qPkHYLILx2Wj99VnQePxsS6Q0njaOcThIPmCcc7YnoaICsNDv8XKcns2PLmwB38ziQ==", + "version": "1.2.0-dev.75e600e", + "resolved": "https://registry.npmjs.org/@xmtp/wasm-bindings/-/wasm-bindings-1.2.0-dev.75e600e.tgz", + "integrity": "sha512-x9dXm4eQVuNXrNEdVsp2pdz786AwX97zuUyrGR5wAIPPwA8+AfPpEBIpkhuW+HZhfxqXTDtXMnBEgBsDz1NrEg==", "engines": { "node": ">=20" } }, - "node_modules/@xmtp/xmtp-js": { - "version": "8.2.1", - "license": "MIT", - "dependencies": { - "@noble/secp256k1": "^1.5.2", - "@xmtp/proto": "^3.24.0", - "async-mutex": "^0.4.0", - "elliptic": "^6.5.4", - "ethers": "^5.5.3", - "long": "^5.2.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@xmtp/xmtp-js/node_modules/async-mutex": { - "version": "0.4.0", - "license": "MIT", - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@xmtp/xmtp-js/node_modules/long": { - "version": "5.2.3", - "license": "Apache-2.0" - }, - "node_modules/@xmtp/xmtp-js/node_modules/tslib": { - "version": "2.6.0", - "license": "0BSD" - }, "node_modules/@xtuc/ieee754": { "version": "1.2.0", "license": "BSD-3-Clause" @@ -18321,6 +19024,15 @@ "util": "^0.12.0" } }, + "node_modules/assertion-error": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", + "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", + "peer": true, + "engines": { + "node": ">=12" + } + }, "node_modules/ast-types": { "version": "0.15.2", "license": "MIT", @@ -18765,6 +19477,23 @@ "@babel/plugin-syntax-flow": "^7.12.1" } }, + "node_modules/babel-plugin-transform-import-meta": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-import-meta/-/babel-plugin-transform-import-meta-2.3.2.tgz", + "integrity": "sha512-902o4GiQqI1GqAXfD5rEoz0PJamUfJ3VllpdWaNsFTwdaNjFSFHawvBO+cp5K2j+g2h3bZ4lnM1Xb6yFYGihtA==", + "dependencies": { + "@babel/template": "^7.25.9", + "tslib": "^2.8.1" + }, + "peerDependencies": { + "@babel/core": "^7.10.0" + } + }, + "node_modules/babel-plugin-transform-import-meta/node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" + }, "node_modules/babel-plugin-transform-react-remove-prop-types": { "version": "0.4.24", "license": "MIT" @@ -19600,6 +20329,15 @@ "node": ">= 0.8" } }, + "node_modules/cac": { + "version": "6.7.14", + "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", + "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", + "peer": true, + "engines": { + "node": ">=8" + } + }, "node_modules/caching-transform": { "version": "4.0.0", "dev": true, @@ -19781,6 +20519,22 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/chai": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-5.2.0.tgz", + "integrity": "sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==", + "peer": true, + "dependencies": { + "assertion-error": "^2.0.1", + "check-error": "^2.1.1", + "deep-eql": "^5.0.1", + "loupe": "^3.1.0", + "pathval": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/chalk": { "version": "2.4.2", "license": "MIT", @@ -19862,6 +20616,15 @@ "version": "3.8.0", "license": "MIT" }, + "node_modules/check-error": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz", + "integrity": "sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==", + "peer": true, + "engines": { + "node": ">= 16" + } + }, "node_modules/check-types": { "version": "11.1.2", "license": "MIT" @@ -21588,6 +22351,15 @@ "version": "0.7.0", "license": "MIT" }, + "node_modules/deep-eql": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz", + "integrity": "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==", + "peer": true, + "engines": { + "node": ">=6" + } + }, "node_modules/deep-extend": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", @@ -23931,6 +24703,15 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, + "node_modules/expect-type": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.2.1.tgz", + "integrity": "sha512-/kP8CAwxzLVEeFrMm4kMmy4CCDlpipyA7MYLVrdJIkV0fYF0UaigQHRsxHiuY/GEea+bh4KSv3TIlgr+2UL6bw==", + "peer": true, + "engines": { + "node": ">=12.0.0" + } + }, "node_modules/expect/node_modules/ansi-styles": { "version": "4.3.0", "license": "MIT", @@ -25073,7 +25854,7 @@ "version": "4.8.1", "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.8.1.tgz", "integrity": "sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "resolve-pkg-maps": "^1.0.0" @@ -31567,6 +32348,11 @@ "loose-envify": "cli.js" } }, + "node_modules/loupe": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.3.tgz", + "integrity": "sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==" + }, "node_modules/lower-case": { "version": "2.0.2", "license": "MIT", @@ -31605,8 +32391,9 @@ } }, "node_modules/lz-string": { - "version": "1.4.4", - "license": "WTFPL", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz", + "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==", "bin": { "lz-string": "bin/bin.js" } @@ -34214,14 +35001,15 @@ "license": "MIT" }, "node_modules/nanoid": { - "version": "3.3.7", + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", "funding": [ { "type": "github", "url": "https://github.com/sponsors/ai" } ], - "license": "MIT", "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -37348,6 +38136,158 @@ "@daybrush/utils": "^1.7.1" } }, + "node_modules/ox": { + "version": "0.6.9", + "resolved": "https://registry.npmjs.org/ox/-/ox-0.6.9.tgz", + "integrity": "sha512-wi5ShvzE4eOcTwQVsIPdFr+8ycyX+5le/96iAJutaZAvCes1J0+RvpEPg5QDPDiaR0XQQAvZVl7AwqQcINuUug==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/wevm" + } + ], + "dependencies": { + "@adraffy/ens-normalize": "^1.10.1", + "@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/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==" + }, + "node_modules/ox/node_modules/@noble/curves": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.9.0.tgz", + "integrity": "sha512-7YDlXiNMdO1YZeH6t/kvopHHbIZzlxrCV9WLqCY6QhcXOoXiNCMDqJIglZ9Yjx5+w7Dz30TITFrlTjnRg7sKEg==", + "dependencies": { + "@noble/hashes": "1.8.0" + }, + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/ox/node_modules/@noble/hashes": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", + "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/ox/node_modules/@scure/base": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.2.4.tgz", + "integrity": "sha512-5Yy9czTO47mqz+/J8GM6GIId4umdCk1wc1q8rKERQulIoc8VP9pzDcghv10Tl2E7R96ZUx/PhND3ESYUQX8NuQ==", + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/ox/node_modules/@scure/bip32": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.6.2.tgz", + "integrity": "sha512-t96EPDMbtGgtb7onKKqxRLfE5g05k7uHnHRM2xdE6BP/ZmxaLtPek4J4KfVn/90IQNrU1IOAqMgiDtUdtbe3nw==", + "dependencies": { + "@noble/curves": "~1.8.1", + "@noble/hashes": "~1.7.1", + "@scure/base": "~1.2.2" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/ox/node_modules/@scure/bip32/node_modules/@noble/curves": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.8.2.tgz", + "integrity": "sha512-vnI7V6lFNe0tLAuJMu+2sX+FcL14TaCWy1qiczg1VwRmPrpQCdq5ESXQMqUc2tluRNf6irBXrWbl1mGN8uaU/g==", + "dependencies": { + "@noble/hashes": "1.7.2" + }, + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/ox/node_modules/@scure/bip32/node_modules/@noble/hashes": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.7.2.tgz", + "integrity": "sha512-biZ0NUSxyjLLqo6KxEJ1b+C2NAx0wtDoFvCaXHGgUkeHzf3Xc1xKumFKREuT7f7DARNZ/slvYUwFG6B0f2b6hQ==", + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/ox/node_modules/@scure/bip39": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.5.4.tgz", + "integrity": "sha512-TFM4ni0vKvCfBpohoh+/lY05i9gRbSwXWngAsF4CABQxoaOHijxuaZ2R6cStDQ5CHtHO9aGJTr4ksVJASRRyMA==", + "dependencies": { + "@noble/hashes": "~1.7.1", + "@scure/base": "~1.2.4" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/ox/node_modules/@scure/bip39/node_modules/@noble/hashes": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.7.2.tgz", + "integrity": "sha512-biZ0NUSxyjLLqo6KxEJ1b+C2NAx0wtDoFvCaXHGgUkeHzf3Xc1xKumFKREuT7f7DARNZ/slvYUwFG6B0f2b6hQ==", + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/ox/node_modules/abitype": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/abitype/-/abitype-1.0.8.tgz", + "integrity": "sha512-ZeiI6h3GnW06uYDLx0etQtX/p8E24UaHHBj57RSjK7YBFe7iuVn07EDpOeP451D06sF27VOz9JJPlIKJmXgkEg==", + "funding": { + "url": "https://github.com/sponsors/wevm" + }, + "peerDependencies": { + "typescript": ">=5.0.4", + "zod": "^3 >=3.22.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + }, + "zod": { + "optional": true + } + } + }, + "node_modules/ox/node_modules/eventemitter3": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==" + }, "node_modules/p-defer": { "version": "3.0.0", "license": "MIT", @@ -37600,6 +38540,15 @@ "version": "1.1.2", "license": "MIT" }, + "node_modules/pathval": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.0.tgz", + "integrity": "sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==", + "peer": true, + "engines": { + "node": ">= 14.16" + } + }, "node_modules/pbkdf2": { "version": "3.1.2", "license": "MIT", @@ -37629,8 +38578,9 @@ } }, "node_modules/picocolors": { - "version": "1.0.0", - "license": "ISC" + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==" }, "node_modules/picomatch": { "version": "2.3.1", @@ -37766,6 +38716,23 @@ "node": ">=4" } }, + "node_modules/playwright": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.52.0.tgz", + "integrity": "sha512-JAwMNMBlxJ2oD1kce4KPtMkDeKGHQstdpFPcPH3maElAXon/QZeTvtsfXmTMRyO9TslfoYOXkSsvao2nE1ilTw==", + "dependencies": { + "playwright-core": "1.52.0" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "fsevents": "2.3.2" + } + }, "node_modules/playwright-core": { "version": "1.23.4", "dev": true, @@ -37777,6 +38744,30 @@ "node": ">=14" } }, + "node_modules/playwright/node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/playwright/node_modules/playwright-core": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.52.0.tgz", + "integrity": "sha512-l2osTgLXSMeuLZOML9qYODUQoPPnUsKsb5/P6LJ2e6uPKXUdPK5WYhN4z03G+YNbWmGDY4YENauNu4ZKczreHg==", + "bin": { + "playwright-core": "cli.js" + }, + "engines": { + "node": ">=18" + } + }, "node_modules/pngjs": { "version": "5.0.0", "license": "MIT", @@ -41290,7 +42281,7 @@ }, "node_modules/resolve-pkg-maps": { "version": "1.0.0", - "dev": true, + "devOptional": true, "license": "MIT", "funding": { "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" @@ -42135,6 +43126,12 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/siginfo": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", + "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==", + "peer": true + }, "node_modules/sigmund": { "version": "1.0.1", "license": "ISC" @@ -42430,8 +43427,9 @@ } }, "node_modules/source-map-js": { - "version": "1.0.2", - "license": "BSD-3-Clause", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", "engines": { "node": ">=0.10.0" } @@ -42556,6 +43554,12 @@ "node": ">=8" } }, + "node_modules/stackback": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", + "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==", + "peer": true + }, "node_modules/stackframe": { "version": "1.3.4", "license": "MIT" @@ -42601,8 +43605,9 @@ } }, "node_modules/std-env": { - "version": "3.7.0", - "license": "MIT" + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.9.0.tgz", + "integrity": "sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==" }, "node_modules/stream-blackhole": { "version": "1.0.3", @@ -43458,6 +44463,85 @@ "version": "1.0.3", "license": "MIT" }, + "node_modules/tinybench": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz", + "integrity": "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==", + "peer": true + }, + "node_modules/tinyexec": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz", + "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==", + "peer": true + }, + "node_modules/tinyglobby": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.13.tgz", + "integrity": "sha512-mEwzpUgrLySlveBwEVDMKk5B57bhLPYovRfPAXD5gA/98Opn0rCDj3GtLwFvCvH5RK9uPCExUROW5NjDwvqkxw==", + "peer": true, + "dependencies": { + "fdir": "^6.4.4", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tinyglobby/node_modules/fdir": { + "version": "6.4.4", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.4.tgz", + "integrity": "sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==", + "peer": true, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/tinyglobby/node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "peer": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/tinypool": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.0.2.tgz", + "integrity": "sha512-al6n+QEANGFOMf/dmUMsuS5/r9B06uwlyNjZZql/zv8J7ybHCgoihBNORZCY2mzUuAnomQa2JdhyHKzZxPCrFA==", + "peer": true, + "engines": { + "node": "^18.0.0 || >=20.0.0" + } + }, + "node_modules/tinyrainbow": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-2.0.0.tgz", + "integrity": "sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tinyspy": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-3.0.2.tgz", + "integrity": "sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==", + "engines": { + "node": ">=14.0.0" + } + }, "node_modules/tippy.js": { "version": "6.3.7", "license": "MIT", @@ -43490,13 +44574,6 @@ "version": "1.0.5", "license": "BSD-3-Clause" }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, "node_modules/to-regex-range": { "version": "5.0.1", "license": "MIT", @@ -43713,7 +44790,7 @@ "version": "4.19.2", "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.19.2.tgz", "integrity": "sha512-pOUl6Vo2LUq/bSa8S5q7b91cgNSjctn9ugq/+Mvow99qW6x/UZYwzxy/3NmqoT66eHYfCVvFvACC58UBPFf28g==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "esbuild": "~0.23.0", @@ -44124,7 +45201,7 @@ "version": "0.23.1", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.23.1.tgz", "integrity": "sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==", - "dev": true, + "devOptional": true, "hasInstallScript": true, "license": "MIT", "bin": { @@ -45564,6 +46641,768 @@ } } }, + "node_modules/vite": { + "version": "6.3.2", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.3.2.tgz", + "integrity": "sha512-ZSvGOXKGceizRQIZSz7TGJ0pS3QLlVY/9hwxVh17W3re67je1RKYzFHivZ/t0tubU78Vkyb9WnHPENSBCzbckg==", + "peer": true, + "dependencies": { + "esbuild": "^0.25.0", + "fdir": "^6.4.3", + "picomatch": "^4.0.2", + "postcss": "^8.5.3", + "rollup": "^4.34.9", + "tinyglobby": "^0.2.12" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "jiti": ">=1.21.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/vite-node": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.1.2.tgz", + "integrity": "sha512-/8iMryv46J3aK13iUXsei5G/A3CUlW4665THCPS+K8xAaqrVWiGB4RfXMQXCLjpK9P2eK//BczrVkn5JLAk6DA==", + "peer": true, + "dependencies": { + "cac": "^6.7.14", + "debug": "^4.4.0", + "es-module-lexer": "^1.6.0", + "pathe": "^2.0.3", + "vite": "^5.0.0 || ^6.0.0" + }, + "bin": { + "vite-node": "vite-node.mjs" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/vite-node/node_modules/debug": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "peer": true, + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/vite-node/node_modules/es-module-lexer": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz", + "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==", + "peer": true + }, + "node_modules/vite-node/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "peer": true + }, + "node_modules/vite-node/node_modules/pathe": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", + "peer": true + }, + "node_modules/vite/node_modules/@esbuild/aix-ppc64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.3.tgz", + "integrity": "sha512-W8bFfPA8DowP8l//sxjJLSLkD8iEjMc7cBVyP+u4cEv9sM7mdUCkgsj+t0n/BWPFtv7WWCN5Yzj0N6FJNUUqBQ==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "aix" + ], + "peer": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/android-arm": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.3.tgz", + "integrity": "sha512-PuwVXbnP87Tcff5I9ngV0lmiSu40xw1At6i3GsU77U7cjDDB4s0X2cyFuBiDa1SBk9DnvWwnGvVaGBqoFWPb7A==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "android" + ], + "peer": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/android-arm64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.3.tgz", + "integrity": "sha512-XelR6MzjlZuBM4f5z2IQHK6LkK34Cvv6Rj2EntER3lwCBFdg6h2lKbtRjpTTsdEjD/WSe1q8UyPBXP1x3i/wYQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ], + "peer": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/android-x64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.3.tgz", + "integrity": "sha512-ogtTpYHT/g1GWS/zKM0cc/tIebFjm1F9Aw1boQ2Y0eUQ+J89d0jFY//s9ei9jVIlkYi8AfOjiixcLJSGNSOAdQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "android" + ], + "peer": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/darwin-arm64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.3.tgz", + "integrity": "sha512-eESK5yfPNTqpAmDfFWNsOhmIOaQA59tAcF/EfYvo5/QWQCzXn5iUSOnqt3ra3UdzBv073ykTtmeLJZGt3HhA+w==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "peer": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/darwin-x64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.3.tgz", + "integrity": "sha512-Kd8glo7sIZtwOLcPbW0yLpKmBNWMANZhrC1r6K++uDR2zyzb6AeOYtI6udbtabmQpFaxJ8uduXMAo1gs5ozz8A==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "peer": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.3.tgz", + "integrity": "sha512-EJiyS70BYybOBpJth3M0KLOus0n+RRMKTYzhYhFeMwp7e/RaajXvP+BWlmEXNk6uk+KAu46j/kaQzr6au+JcIw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "peer": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/freebsd-x64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.3.tgz", + "integrity": "sha512-Q+wSjaLpGxYf7zC0kL0nDlhsfuFkoN+EXrx2KSB33RhinWzejOd6AvgmP5JbkgXKmjhmpfgKZq24pneodYqE8Q==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "peer": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-arm": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.3.tgz", + "integrity": "sha512-dUOVmAUzuHy2ZOKIHIKHCm58HKzFqd+puLaS424h6I85GlSDRZIA5ycBixb3mFgM0Jdh+ZOSB6KptX30DD8YOQ==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-arm64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.3.tgz", + "integrity": "sha512-xCUgnNYhRD5bb1C1nqrDV1PfkwgbswTTBRbAd8aH5PhYzikdf/ddtsYyMXFfGSsb/6t6QaPSzxtbfAZr9uox4A==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-ia32": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.3.tgz", + "integrity": "sha512-yplPOpczHOO4jTYKmuYuANI3WhvIPSVANGcNUeMlxH4twz/TeXuzEP41tGKNGWJjuMhotpGabeFYGAOU2ummBw==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-loong64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.3.tgz", + "integrity": "sha512-P4BLP5/fjyihmXCELRGrLd793q/lBtKMQl8ARGpDxgzgIKJDRJ/u4r1A/HgpBpKpKZelGct2PGI4T+axcedf6g==", + "cpu": [ + "loong64" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-mips64el": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.3.tgz", + "integrity": "sha512-eRAOV2ODpu6P5divMEMa26RRqb2yUoYsuQQOuFUexUoQndm4MdpXXDBbUoKIc0iPa4aCO7gIhtnYomkn2x+bag==", + "cpu": [ + "mips64el" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-ppc64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.3.tgz", + "integrity": "sha512-ZC4jV2p7VbzTlnl8nZKLcBkfzIf4Yad1SJM4ZMKYnJqZFD4rTI+pBG65u8ev4jk3/MPwY9DvGn50wi3uhdaghg==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-riscv64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.3.tgz", + "integrity": "sha512-LDDODcFzNtECTrUUbVCs6j9/bDVqy7DDRsuIXJg6so+mFksgwG7ZVnTruYi5V+z3eE5y+BJZw7VvUadkbfg7QA==", + "cpu": [ + "riscv64" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-s390x": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.3.tgz", + "integrity": "sha512-s+w/NOY2k0yC2p9SLen+ymflgcpRkvwwa02fqmAwhBRI3SC12uiS10edHHXlVWwfAagYSY5UpmT/zISXPMW3tQ==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-x64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.3.tgz", + "integrity": "sha512-nQHDz4pXjSDC6UfOE1Fw9Q8d6GCAd9KdvMZpfVGWSJztYCarRgSDfOVBY5xwhQXseiyxapkiSJi/5/ja8mRFFA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/netbsd-x64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.3.tgz", + "integrity": "sha512-i5Hm68HXHdgv8wkrt+10Bc50zM0/eonPb/a/OFVfB6Qvpiirco5gBA5bz7S2SHuU+Y4LWn/zehzNX14Sp4r27g==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "netbsd" + ], + "peer": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.3.tgz", + "integrity": "sha512-zGAVApJEYTbOC6H/3QBr2mq3upG/LBEXr85/pTtKiv2IXcgKV0RT0QA/hSXZqSvLEpXeIxah7LczB4lkiYhTAQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "openbsd" + ], + "peer": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/openbsd-x64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.3.tgz", + "integrity": "sha512-fpqctI45NnCIDKBH5AXQBsD0NDPbEFczK98hk/aa6HJxbl+UtLkJV2+Bvy5hLSLk3LHmqt0NTkKNso1A9y1a4w==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "openbsd" + ], + "peer": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/sunos-x64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.3.tgz", + "integrity": "sha512-ROJhm7d8bk9dMCUZjkS8fgzsPAZEjtRJqCAmVgB0gMrvG7hfmPmz9k1rwO4jSiblFjYmNvbECL9uhaPzONMfgA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "sunos" + ], + "peer": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/win32-arm64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.3.tgz", + "integrity": "sha512-YWcow8peiHpNBiIXHwaswPnAXLsLVygFwCB3A7Bh5jRkIBFWHGmNQ48AlX4xDvQNoMZlPYzjVOQDYEzWCqufMQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "peer": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/win32-ia32": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.3.tgz", + "integrity": "sha512-qspTZOIGoXVS4DpNqUYUs9UxVb04khS1Degaw/MnfMe7goQ3lTfQ13Vw4qY/Nj0979BGvMRpAYbs/BAxEvU8ew==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "peer": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/win32-x64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.3.tgz", + "integrity": "sha512-ICgUR+kPimx0vvRzf+N/7L7tVSQeE3BYY+NhHRHXS1kBuPO7z2+7ea2HbhDyZdTephgvNvKrlDDKUexuCVBVvg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "peer": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@types/estree": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz", + "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==", + "peer": true + }, + "node_modules/vite/node_modules/esbuild": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.3.tgz", + "integrity": "sha512-qKA6Pvai73+M2FtftpNKRxJ78GIjmFXFxd/1DVBqGo/qNhLSfv+G12n9pNoWdytJC8U00TrViOwpjT0zgqQS8Q==", + "hasInstallScript": true, + "peer": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.25.3", + "@esbuild/android-arm": "0.25.3", + "@esbuild/android-arm64": "0.25.3", + "@esbuild/android-x64": "0.25.3", + "@esbuild/darwin-arm64": "0.25.3", + "@esbuild/darwin-x64": "0.25.3", + "@esbuild/freebsd-arm64": "0.25.3", + "@esbuild/freebsd-x64": "0.25.3", + "@esbuild/linux-arm": "0.25.3", + "@esbuild/linux-arm64": "0.25.3", + "@esbuild/linux-ia32": "0.25.3", + "@esbuild/linux-loong64": "0.25.3", + "@esbuild/linux-mips64el": "0.25.3", + "@esbuild/linux-ppc64": "0.25.3", + "@esbuild/linux-riscv64": "0.25.3", + "@esbuild/linux-s390x": "0.25.3", + "@esbuild/linux-x64": "0.25.3", + "@esbuild/netbsd-arm64": "0.25.3", + "@esbuild/netbsd-x64": "0.25.3", + "@esbuild/openbsd-arm64": "0.25.3", + "@esbuild/openbsd-x64": "0.25.3", + "@esbuild/sunos-x64": "0.25.3", + "@esbuild/win32-arm64": "0.25.3", + "@esbuild/win32-ia32": "0.25.3", + "@esbuild/win32-x64": "0.25.3" + } + }, + "node_modules/vite/node_modules/fdir": { + "version": "6.4.4", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.4.tgz", + "integrity": "sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==", + "peer": true, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/vite/node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "peer": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/vite/node_modules/postcss": { + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz", + "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "peer": true, + "dependencies": { + "nanoid": "^3.3.8", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/vite/node_modules/rollup": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.40.0.tgz", + "integrity": "sha512-Noe455xmA96nnqH5piFtLobsGbCij7Tu+tb3c1vYjNbTkfzGqXqQXG3wJaYXkRZuQ0vEYN4bhwg7QnIrqB5B+w==", + "peer": true, + "dependencies": { + "@types/estree": "1.0.7" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.40.0", + "@rollup/rollup-android-arm64": "4.40.0", + "@rollup/rollup-darwin-arm64": "4.40.0", + "@rollup/rollup-darwin-x64": "4.40.0", + "@rollup/rollup-freebsd-arm64": "4.40.0", + "@rollup/rollup-freebsd-x64": "4.40.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.40.0", + "@rollup/rollup-linux-arm-musleabihf": "4.40.0", + "@rollup/rollup-linux-arm64-gnu": "4.40.0", + "@rollup/rollup-linux-arm64-musl": "4.40.0", + "@rollup/rollup-linux-loongarch64-gnu": "4.40.0", + "@rollup/rollup-linux-powerpc64le-gnu": "4.40.0", + "@rollup/rollup-linux-riscv64-gnu": "4.40.0", + "@rollup/rollup-linux-riscv64-musl": "4.40.0", + "@rollup/rollup-linux-s390x-gnu": "4.40.0", + "@rollup/rollup-linux-x64-gnu": "4.40.0", + "@rollup/rollup-linux-x64-musl": "4.40.0", + "@rollup/rollup-win32-arm64-msvc": "4.40.0", + "@rollup/rollup-win32-ia32-msvc": "4.40.0", + "@rollup/rollup-win32-x64-msvc": "4.40.0", + "fsevents": "~2.3.2" + } + }, + "node_modules/vitest": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.1.2.tgz", + "integrity": "sha512-WaxpJe092ID1C0mr+LH9MmNrhfzi8I65EX/NRU/Ld016KqQNRgxSOlGNP1hHN+a/F8L15Mh8klwaF77zR3GeDQ==", + "peer": true, + "dependencies": { + "@vitest/expect": "3.1.2", + "@vitest/mocker": "3.1.2", + "@vitest/pretty-format": "^3.1.2", + "@vitest/runner": "3.1.2", + "@vitest/snapshot": "3.1.2", + "@vitest/spy": "3.1.2", + "@vitest/utils": "3.1.2", + "chai": "^5.2.0", + "debug": "^4.4.0", + "expect-type": "^1.2.1", + "magic-string": "^0.30.17", + "pathe": "^2.0.3", + "std-env": "^3.9.0", + "tinybench": "^2.9.0", + "tinyexec": "^0.3.2", + "tinyglobby": "^0.2.13", + "tinypool": "^1.0.2", + "tinyrainbow": "^2.0.0", + "vite": "^5.0.0 || ^6.0.0", + "vite-node": "3.1.2", + "why-is-node-running": "^2.3.0" + }, + "bin": { + "vitest": "vitest.mjs" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "@edge-runtime/vm": "*", + "@types/debug": "^4.1.12", + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "@vitest/browser": "3.1.2", + "@vitest/ui": "3.1.2", + "happy-dom": "*", + "jsdom": "*" + }, + "peerDependenciesMeta": { + "@edge-runtime/vm": { + "optional": true + }, + "@types/debug": { + "optional": true + }, + "@types/node": { + "optional": true + }, + "@vitest/browser": { + "optional": true + }, + "@vitest/ui": { + "optional": true + }, + "happy-dom": { + "optional": true + }, + "jsdom": { + "optional": true + } + } + }, + "node_modules/vitest/node_modules/debug": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "peer": true, + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/vitest/node_modules/magic-string": { + "version": "0.30.17", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", + "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", + "peer": true, + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0" + } + }, + "node_modules/vitest/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "peer": true + }, + "node_modules/vitest/node_modules/pathe": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", + "peer": true + }, "node_modules/vlq": { "version": "1.0.1", "license": "MIT", @@ -46397,6 +48236,22 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/why-is-node-running": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz", + "integrity": "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==", + "peer": true, + "dependencies": { + "siginfo": "^2.0.0", + "stackback": "0.0.2" + }, + "bin": { + "why-is-node-running": "cli.js" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/widest-line": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", @@ -46922,8 +48777,12 @@ "license": "ISC" }, "node_modules/yaml": { - "version": "2.3.2", - "license": "ISC", + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.7.1.tgz", + "integrity": "sha512-10ULxpnOCQXxJvBgxsn9ptjq6uviG/htZKk9veJGhlqn3w/DxQ631zFF+nlQXLwmImeS5amR2dl2U8sg6U9jsQ==", + "bin": { + "yaml": "bin.mjs" + }, "engines": { "node": ">= 14" } From 879fdd7bf82df30d3bd046689f944301c51595fb Mon Sep 17 00:00:00 2001 From: Albert Folch Date: Wed, 23 Apr 2025 16:56:17 +0200 Subject: [PATCH 11/18] wip --- .../Chat/components/EscalateModal/steps/EscalateStepTwo.tsx | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/components/modal/components/Chat/components/EscalateModal/steps/EscalateStepTwo.tsx b/src/components/modal/components/Chat/components/EscalateModal/steps/EscalateStepTwo.tsx index e24c52e7b..629545a86 100644 --- a/src/components/modal/components/Chat/components/EscalateModal/steps/EscalateStepTwo.tsx +++ b/src/components/modal/components/Chat/components/EscalateModal/steps/EscalateStepTwo.tsx @@ -463,7 +463,6 @@ function EscalateStepTwo({ bosonXmtp, addMessage, onSentMessage, - address, destinationAddress, newMessage }); @@ -524,7 +523,6 @@ function EscalateStepTwo({ bosonXmtp, addMessage, onSentMessage, - address, destinationAddress, newMessage: errorMessageObj })); From 1db148ef71d5d1c195410d1d25e736dd6203301e Mon Sep 17 00:00:00 2001 From: Albert Folch Date: Thu, 24 Apr 2025 08:42:55 +0200 Subject: [PATCH 12/18] wip --- 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 ffc9380f6..36f1aea38 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,7 @@ "version": "1.0.0", "dependencies": { "@apollo/client": "^3.8.1", - "@bosonprotocol/chat-sdk": "^1.3.1-alpha.9", + "@bosonprotocol/chat-sdk": "^1.3.1-alpha.14", "@bosonprotocol/react-kit": "^0.39.2-alpha.3", "@davatar/react": "^1.10.4", "@ethersproject/address": "^5.6.1", @@ -3393,9 +3393,9 @@ "license": "MIT" }, "node_modules/@bosonprotocol/chat-sdk": { - "version": "1.3.1-alpha.13", - "resolved": "https://registry.npmjs.org/@bosonprotocol/chat-sdk/-/chat-sdk-1.3.1-alpha.13.tgz", - "integrity": "sha512-0ArRSPImsS1PFrUXjLX1xCLHGgO7DssZp6xN04uRG29Ci+8X+cxFYGniqnylw8C/K1GGVop1IaKx8dgnxYNu2g==", + "version": "1.3.1-alpha.14", + "resolved": "https://registry.npmjs.org/@bosonprotocol/chat-sdk/-/chat-sdk-1.3.1-alpha.14.tgz", + "integrity": "sha512-GzvNwRUorbUxcImDHYuiah9gL92wLAMdi4VRK1dYa4NdEqavWQRrsmwxuBMcPyqSCP9SJwtHL7/mPLI1LMGF4Q==", "hasInstallScript": true, "dependencies": { "@vitest/browser": "^3.1.1", diff --git a/package.json b/package.json index a3a8b0d08..aab48a13d 100644 --- a/package.json +++ b/package.json @@ -46,7 +46,7 @@ }, "dependencies": { "@apollo/client": "^3.8.1", - "@bosonprotocol/chat-sdk": "^1.3.1-alpha.9", + "@bosonprotocol/chat-sdk": "^1.3.1-alpha.14", "@bosonprotocol/react-kit": "^0.39.2-alpha.3", "@davatar/react": "^1.10.4", "@ethersproject/address": "^5.6.1", From 4f18c6661cb9dca3b786968fda71fed39e0f3246 Mon Sep 17 00:00:00 2001 From: Albert Folch Date: Fri, 25 Apr 2025 10:48:48 +0200 Subject: [PATCH 13/18] wip --- src/lib/utils/hooks/chat/useChatStatus.ts | 5 +---- src/pages/chat/ChatProvider/ChatProvider.tsx | 1 + 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/src/lib/utils/hooks/chat/useChatStatus.ts b/src/lib/utils/hooks/chat/useChatStatus.ts index 61dc94951..0d17751e4 100644 --- a/src/lib/utils/hooks/chat/useChatStatus.ts +++ b/src/lib/utils/hooks/chat/useChatStatus.ts @@ -38,11 +38,8 @@ export const useChatStatus = (): { chatInitializationStatus !== ChatInitializationStatus.ALREADY_INITIALIZED ) { setError(null); - if (!bosonXmtp) { - throw new Error(`bosonXmtp is falsy ${bosonXmtp}`); - } bosonXmtp - .isXmtpEnabled() + ?.isXmtpEnabled() .then((isEnabled) => { if (isEnabled) { setChatInitializationStatus(ChatInitializationStatus.INITIALIZED); diff --git a/src/pages/chat/ChatProvider/ChatProvider.tsx b/src/pages/chat/ChatProvider/ChatProvider.tsx index bac4b01d0..9c3031f2d 100644 --- a/src/pages/chat/ChatProvider/ChatProvider.tsx +++ b/src/pages/chat/ChatProvider/ChatProvider.tsx @@ -21,6 +21,7 @@ export default function ChatProvider({ children }: Props) { const [bosonXmtp, setBosonXmtp] = useState(); const chatEnvName = getChatEnvName(config); useEffect(() => { + console.log({ signer, initialize, bosonXmtp }); if (signer && initialize && !bosonXmtp) { setLoading(true); BosonXmtpClient.initialise( From 66e05bf9aa7836d96794e93392bab34a9e17a4b9 Mon Sep 17 00:00:00 2001 From: Albert Folch Date: Fri, 25 Apr 2025 10:49:43 +0200 Subject: [PATCH 14/18] wip --- src/lib/utils/hooks/chat/useChatStatus.ts | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/src/lib/utils/hooks/chat/useChatStatus.ts b/src/lib/utils/hooks/chat/useChatStatus.ts index 0d17751e4..32633fa55 100644 --- a/src/lib/utils/hooks/chat/useChatStatus.ts +++ b/src/lib/utils/hooks/chat/useChatStatus.ts @@ -20,14 +20,11 @@ export const useChatStatus = (): { const [error, setError] = useState(null); const [chatInitializationStatus, setChatInitializationStatus] = useState(ChatInitializationStatus.PENDING); - const { bosonXmtp, chatEnvName } = useChatContext(); + const { bosonXmtp } = useChatContext(); const { config } = useConfigContext(); const { account: address } = useAccount(); useEffect(() => { - if (!chatEnvName) { - throw new Error(`chatEnvName is falsy ${chatEnvName}`); - } if ( chatInitializationStatus === ChatInitializationStatus.PENDING && !!bosonXmtp @@ -54,13 +51,7 @@ export const useChatStatus = (): { setChatInitializationStatus(ChatInitializationStatus.ERROR); }); } - }, [ - address, - bosonXmtp, - chatInitializationStatus, - chatEnvName, - config.envConfig.envName - ]); + }, [address, bosonXmtp, chatInitializationStatus, config.envConfig.envName]); return { chatInitializationStatus, error, From 80ceb7ec1db6c9ed9af1bfd387030a298f830e08 Mon Sep 17 00:00:00 2001 From: Albert Folch Date: Fri, 25 Apr 2025 10:51:38 +0200 Subject: [PATCH 15/18] wip --- src/pages/chat/ChatProvider/ChatProvider.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/src/pages/chat/ChatProvider/ChatProvider.tsx b/src/pages/chat/ChatProvider/ChatProvider.tsx index 9c3031f2d..bac4b01d0 100644 --- a/src/pages/chat/ChatProvider/ChatProvider.tsx +++ b/src/pages/chat/ChatProvider/ChatProvider.tsx @@ -21,7 +21,6 @@ export default function ChatProvider({ children }: Props) { const [bosonXmtp, setBosonXmtp] = useState(); const chatEnvName = getChatEnvName(config); useEffect(() => { - console.log({ signer, initialize, bosonXmtp }); if (signer && initialize && !bosonXmtp) { setLoading(true); BosonXmtpClient.initialise( From 7ae94319f45c3eb299c3dfa8e7c5ce918a3a3bd5 Mon Sep 17 00:00:00 2001 From: Albert Folch Date: Fri, 25 Apr 2025 11:25:56 +0200 Subject: [PATCH 16/18] wip --- package-lock.json | 8 +++---- package.json | 2 +- .../ConfirmProductDetails.tsx | 2 +- src/lib/utils/hooks/chat/useChatStatus.ts | 23 +++++++++++++++---- 4 files changed, 25 insertions(+), 10 deletions(-) diff --git a/package-lock.json b/package-lock.json index 36f1aea38..2da3b2a97 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,7 @@ "version": "1.0.0", "dependencies": { "@apollo/client": "^3.8.1", - "@bosonprotocol/chat-sdk": "^1.3.1-alpha.14", + "@bosonprotocol/chat-sdk": "^1.3.1-alpha.15", "@bosonprotocol/react-kit": "^0.39.2-alpha.3", "@davatar/react": "^1.10.4", "@ethersproject/address": "^5.6.1", @@ -3393,9 +3393,9 @@ "license": "MIT" }, "node_modules/@bosonprotocol/chat-sdk": { - "version": "1.3.1-alpha.14", - "resolved": "https://registry.npmjs.org/@bosonprotocol/chat-sdk/-/chat-sdk-1.3.1-alpha.14.tgz", - "integrity": "sha512-GzvNwRUorbUxcImDHYuiah9gL92wLAMdi4VRK1dYa4NdEqavWQRrsmwxuBMcPyqSCP9SJwtHL7/mPLI1LMGF4Q==", + "version": "1.3.1-alpha.15", + "resolved": "https://registry.npmjs.org/@bosonprotocol/chat-sdk/-/chat-sdk-1.3.1-alpha.15.tgz", + "integrity": "sha512-Ec/M3JOxLWosgdIVOO6WSP4HNab1C6kZrgooFO7PmAbCSWsXR6bb7oo5dAn4liuXyfkAu2clW0cTZRk9LM9L6w==", "hasInstallScript": true, "dependencies": { "@vitest/browser": "^3.1.1", diff --git a/package.json b/package.json index aab48a13d..b2d47d5be 100644 --- a/package.json +++ b/package.json @@ -46,7 +46,7 @@ }, "dependencies": { "@apollo/client": "^3.8.1", - "@bosonprotocol/chat-sdk": "^1.3.1-alpha.14", + "@bosonprotocol/chat-sdk": "^1.3.1-alpha.15", "@bosonprotocol/react-kit": "^0.39.2-alpha.3", "@davatar/react": "^1.10.4", "@ethersproject/address": "^5.6.1", diff --git a/src/components/product/confirmProductDetailsPage/ConfirmProductDetails.tsx b/src/components/product/confirmProductDetailsPage/ConfirmProductDetails.tsx index e2fe73c7f..9170b436e 100644 --- a/src/components/product/confirmProductDetailsPage/ConfirmProductDetails.tsx +++ b/src/components/product/confirmProductDetailsPage/ConfirmProductDetails.tsx @@ -693,7 +693,7 @@ export default function ConfirmProductDetails({ } > {chatInitializationStatus === - ChatInitializationStatus.NOT_INITIALIZED && bosonXmtp ? ( + ChatInitializationStatus.INITIALIZING && bosonXmtp ? ( ) : ( "Confirm" diff --git a/src/lib/utils/hooks/chat/useChatStatus.ts b/src/lib/utils/hooks/chat/useChatStatus.ts index 32633fa55..ff82ab43b 100644 --- a/src/lib/utils/hooks/chat/useChatStatus.ts +++ b/src/lib/utils/hooks/chat/useChatStatus.ts @@ -1,3 +1,4 @@ +import { BosonXmtpClient } from "@bosonprotocol/chat-sdk"; import { useConfigContext } from "components/config/ConfigContext"; import { useEffect, useState } from "react"; @@ -8,6 +9,7 @@ export enum ChatInitializationStatus { PENDING = "PENDING", ALREADY_INITIALIZED = "ALREADY_INITIALIZED", INITIALIZED = "INITIALIZED", + INITIALIZING = "INITIALIZING", NOT_INITIALIZED = "NOT_INITIALIZED", ERROR = "ERROR" } @@ -20,7 +22,7 @@ export const useChatStatus = (): { const [error, setError] = useState(null); const [chatInitializationStatus, setChatInitializationStatus] = useState(ChatInitializationStatus.PENDING); - const { bosonXmtp } = useChatContext(); + const { bosonXmtp, chatEnvName } = useChatContext(); const { config } = useConfigContext(); const { account: address } = useAccount(); @@ -35,8 +37,15 @@ export const useChatStatus = (): { chatInitializationStatus !== ChatInitializationStatus.ALREADY_INITIALIZED ) { setError(null); - bosonXmtp - ?.isXmtpEnabled() + if (!chatEnvName) { + return; + } + setChatInitializationStatus(ChatInitializationStatus.INITIALIZING); + BosonXmtpClient.isXmtpEnabled( + address, + config.envConfig.envName === "production" ? "production" : "dev", + chatEnvName + ) .then((isEnabled) => { if (isEnabled) { setChatInitializationStatus(ChatInitializationStatus.INITIALIZED); @@ -51,7 +60,13 @@ export const useChatStatus = (): { setChatInitializationStatus(ChatInitializationStatus.ERROR); }); } - }, [address, bosonXmtp, chatInitializationStatus, config.envConfig.envName]); + }, [ + address, + bosonXmtp, + chatInitializationStatus, + chatEnvName, + config.envConfig.envName + ]); return { chatInitializationStatus, error, From 26b03d8bad204a7499875b9bbdd4c48260fe0fc0 Mon Sep 17 00:00:00 2001 From: Albert Folch Date: Fri, 25 Apr 2025 12:33:26 +0200 Subject: [PATCH 17/18] syncAll every 5 seconds --- .../chat/components/conversation/ChatConversation.tsx | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/pages/chat/components/conversation/ChatConversation.tsx b/src/pages/chat/components/conversation/ChatConversation.tsx index b33d8b21b..b015bcc56 100644 --- a/src/pages/chat/components/conversation/ChatConversation.tsx +++ b/src/pages/chat/components/conversation/ChatConversation.tsx @@ -288,8 +288,15 @@ const ChatConversation = ({ [bosonXmtp?.client.inboxId] ); useEffect(() => { - bosonXmtp?.client.conversations.syncAll(); + if (!bosonXmtp?.client.conversations) return; + + const interval = setInterval(() => { + bosonXmtp.client.conversations.syncAll(); + }, 5000); + + return () => clearInterval(interval); }, [bosonXmtp?.client.conversations]); + const { data: thread, isLoading: areThreadsLoading, From 27d96b119d330134ad9884c8a9a46f1f4376ecab Mon Sep 17 00:00:00 2001 From: Albert Folch Date: Fri, 25 Apr 2025 12:54:43 +0200 Subject: [PATCH 18/18] wip --- src/pages/chat/components/conversation/ChatConversation.tsx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/pages/chat/components/conversation/ChatConversation.tsx b/src/pages/chat/components/conversation/ChatConversation.tsx index b015bcc56..91eb7b7c3 100644 --- a/src/pages/chat/components/conversation/ChatConversation.tsx +++ b/src/pages/chat/components/conversation/ChatConversation.tsx @@ -290,6 +290,8 @@ const ChatConversation = ({ useEffect(() => { if (!bosonXmtp?.client.conversations) return; + bosonXmtp.client.conversations.syncAll(); + const interval = setInterval(() => { bosonXmtp.client.conversations.syncAll(); }, 5000);