-
-
- Deploy now
-
-
- Read our docs
-
+ return (
+
+
+ Collections
+
+ {Object.values(collections)
+ .filter((c) => c !== undefined)
+ .map((collection) => (
+
+
+
+
{collection.name}
+
+ {collection.items.length} items
+
+
+
+ ))}
diff --git a/app/components/avatar-sns.tsx b/app/components/avatar-sns.tsx
new file mode 100644
index 0000000..7727159
--- /dev/null
+++ b/app/components/avatar-sns.tsx
@@ -0,0 +1,24 @@
+import { Avatar, AvatarFallback, AvatarImage } from "./ui/avatar";
+import { PersonIcon } from "@radix-ui/react-icons";
+import { useConnection } from "@solana/wallet-adapter-react";
+import { usePrimaryDomain, useProfilePic } from "@bonfida/sns-react";
+import { PublicKey } from "@solana/web3.js";
+
+export type AvatarSNSProps = {
+ publicKey: PublicKey;
+};
+
+export function AvatarSNS({ publicKey }: AvatarSNSProps) {
+ const { connection } = useConnection();
+ const { domain } = usePrimaryDomain(connection, publicKey);
+ const { profileUrl } = useProfilePic(connection, domain);
+
+ return (
+
+
+
+
+
+
+ );
+}
diff --git a/app/components/collection/collection-image-card.tsx b/app/components/collection/collection-image-card.tsx
new file mode 100644
index 0000000..c118659
--- /dev/null
+++ b/app/components/collection/collection-image-card.tsx
@@ -0,0 +1,26 @@
+import { AspectRatio } from "@radix-ui/react-aspect-ratio";
+import { ImageWithFallback } from "../image-with-fallback";
+import { Collection } from "@/hooks/useCreateCollectionQuery";
+import { ImageIcon } from "@radix-ui/react-icons";
+
+export type CollectionImageCardProps = {
+ item: Collection;
+};
+
+export function CollectionImageCard({ item }: CollectionImageCardProps) {
+ return (
+
+
+
+
+
+
+
+
+
+
Collection Name
+
3 items
+
+
+ );
+}
diff --git a/app/components/header.tsx b/app/components/header.tsx
index 0cc2152..32485bf 100644
--- a/app/components/header.tsx
+++ b/app/components/header.tsx
@@ -1,3 +1,5 @@
+"use client";
+
import {
NavigationMenu,
NavigationMenuItem,
diff --git a/app/components/wallet-connection.tsx b/app/components/wallet-connection.tsx
index 56c94eb..297b02e 100644
--- a/app/components/wallet-connection.tsx
+++ b/app/components/wallet-connection.tsx
@@ -17,6 +17,8 @@ import {
DropdownMenuTrigger,
} from "@/components/ui/dropdown-menu";
import { WalletName } from "@solana/wallet-adapter-base";
+import { AvatarSNS } from "./avatar-sns";
+import { usePrimaryDomain } from "@bonfida/sns-react";
//handle wallet balance fixed to 2 decimal numbers without rounding
export function toFixed(num: number, fixed: number): string {
@@ -27,6 +29,7 @@ export function toFixed(num: number, fixed: number): string {
export function WalletConnection() {
const { connection } = useConnection();
const { select, wallets, publicKey, disconnect, connecting } = useWallet();
+ const { domain } = usePrimaryDomain(connection, publicKey);
const [open, setOpen] = useState
(false);
const [balance, setBalance] = useState(null);
@@ -88,11 +91,12 @@ export function WalletConnection() {
-
+
Disconnect
diff --git a/app/hooks/useAppState.ts b/app/hooks/useAppState.tsx
similarity index 69%
rename from app/hooks/useAppState.ts
rename to app/hooks/useAppState.tsx
index c287306..face7ae 100644
--- a/app/hooks/useAppState.ts
+++ b/app/hooks/useAppState.tsx
@@ -1,6 +1,9 @@
+"use client";
+
import { create } from "zustand";
import { createJSONStorage, persist, StateStorage } from "zustand/middleware";
import { get, set, del } from "idb-keyval"; // can use anything: IndexedDB, Ionic Storage, etc.
+import { useEffect } from "react";
type Collection = {
id: string;
@@ -20,10 +23,10 @@ type Collection = {
type AppState = {
collections: {
published: {
- [id: string]: Collection;
+ [id: string]: Collection | undefined;
};
drafts: {
- [id: string]: Collection;
+ [id: string]: Collection | undefined;
};
activeDraft: string | null;
};
@@ -37,6 +40,21 @@ type AppState = {
};
};
+const storage: StateStorage = {
+ getItem: async (name: string): Promise => {
+ if (typeof indexedDB === "undefined") throw Error("indexedDB unavailable");
+ return (await get(name)) || null;
+ },
+ setItem: async (name: string, value: string): Promise => {
+ if (typeof indexedDB === "undefined") throw Error("indexedDB unavailable");
+ await set(name, value);
+ },
+ removeItem: async (name: string): Promise => {
+ if (typeof indexedDB === "undefined") throw Error("indexedDB unavailable");
+ await del(name);
+ },
+};
+
export const useAppState = create(
persist>(
(set) => ({
@@ -77,10 +95,18 @@ export const useAppState = create(
...state.collections,
drafts: {
...state.collections.drafts,
- [id]: {
- ...state.collections.drafts[id],
- items: [...state.collections.drafts[id].items, item],
- },
+ [id]: state.collections.drafts[id]
+ ? {
+ ...state.collections.drafts[id],
+ items: [...state.collections.drafts[id].items, item],
+ }
+ : {
+ id,
+ name: "",
+ createdAt: new Date().toISOString(),
+ items: [item],
+ meta: [],
+ },
},
},
}));
@@ -91,14 +117,23 @@ export const useAppState = create(
...state.collections,
drafts: {
...state.collections.drafts,
- [id]: {
- ...state.collections.drafts[id],
- items: [
- ...state.collections.drafts[id].items.map((data, i) =>
- i === idx ? { ...data, ...item } : data
- ),
- ],
- },
+ [id]: state.collections.drafts[id]
+ ? {
+ ...state.collections.drafts[id],
+ items: [
+ ...state.collections.drafts[id].items.map(
+ (data, i) =>
+ i === idx ? { ...data, ...item } : data
+ ),
+ ],
+ }
+ : {
+ id,
+ name: "",
+ createdAt: new Date().toISOString(),
+ items: [item],
+ meta: [],
+ },
},
},
}));
@@ -111,12 +146,14 @@ export const useAppState = create(
...state,
collections: {
...state.collections,
+ /*
published: Object.keys(state.collections.published)
.filter((d) => d !== id)
.reduce((acc, d) => {
acc[d] = state.collections.published[d];
return acc;
}, {} as AppState["collections"]["published"]),
+ */
drafts: Object.keys(state.collections.drafts)
.filter((d) => d !== id)
.reduce((acc, d) => {
@@ -134,8 +171,9 @@ export const useAppState = create(
publish: (id, meta) => {
set((state) => {
const draft = state.collections.drafts[id];
+ if (!draft) return state;
draft.items = draft.items.slice(0, meta.length);
- draft.meta = { ...meta };
+ draft.meta = [...meta];
return {
...state,
collections: {
@@ -159,25 +197,25 @@ export const useAppState = create(
}),
{
name: "app-state",
- storage: createJSONStorage(() => storage),
+ storage: createJSONStorage(() => {
+ if (typeof indexedDB === "undefined")
+ throw new Error("indexedDB unavailable");
+ return storage;
+ }),
partialize: (state) => ({
collections: state.collections,
}),
+ skipHydration: true,
}
)
);
-const storage: StateStorage = {
- getItem: async (name: string): Promise => {
- if (typeof indexedDB === "undefined") return null;
- return (await get(name)) || null;
- },
- setItem: async (name: string, value: string): Promise => {
- if (typeof indexedDB === "undefined") return;
- await set(name, value);
- },
- removeItem: async (name: string): Promise => {
- if (typeof indexedDB === "undefined") return;
- await del(name);
- },
-};
+export default function AppStateConsumer({
+ children,
+}: React.PropsWithChildren) {
+ useEffect(() => {
+ useAppState.persist.rehydrate();
+ }, []);
+
+ return <>{children}>;
+}
diff --git a/app/package.json b/app/package.json
index bdc7666..edc918a 100644
--- a/app/package.json
+++ b/app/package.json
@@ -10,6 +10,7 @@
},
"dependencies": {
"@akord/akord-js": "^5.13.0",
+ "@bonfida/sns-react": "^3.1.1",
"@radix-ui/react-alert-dialog": "^1.1.1",
"@radix-ui/react-aspect-ratio": "^1.1.0",
"@radix-ui/react-avatar": "^1.1.0",
diff --git a/yarn.lock b/yarn.lock
index 5d1cd45..0927c4f 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -318,6 +318,38 @@
"@babel/helper-validator-identifier" "^7.24.7"
to-fast-properties "^2.0.0"
+"@bonfida/sns-react@^3.1.1":
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/@bonfida/sns-react/-/sns-react-3.1.1.tgz#e22eb5e40d1bcf5af405b0618cccf1a6eb0969af"
+ integrity sha512-StkwkUsPAi6nOPgfoPHCSM2pMTECJZKJTCU0KQUh7eR1TzFqHLsbv/87UcRaKpbZSHQsYI/aVnG3IlNVk+zqwA==
+ dependencies:
+ "@bonfida/spl-name-service" "2.3.6"
+
+"@bonfida/sns-records@0.0.1":
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/@bonfida/sns-records/-/sns-records-0.0.1.tgz#e178dece0aeeb1670c57703568ae3e1218e7e5fe"
+ integrity sha512-i28w9+BMFufhhpmLQCNx1CKKXTsEn+5RT18VFpPqdGO3sqaYlnUWC1m3wDpOvlzGk498dljgRpRo5wmcsnuEMg==
+ dependencies:
+ borsh "1.0.0"
+ bs58 "5.0.0"
+ buffer "^6.0.3"
+
+"@bonfida/spl-name-service@2.3.6":
+ version "2.3.6"
+ resolved "https://registry.yarnpkg.com/@bonfida/spl-name-service/-/spl-name-service-2.3.6.tgz#a25e5fbd0c337d5cb10230a5a0abce1f97cb321c"
+ integrity sha512-3i19tNeoU1pQMxHRrMCYa9/xF/mVFGu9O8Gk8moAJKh/pDxkI9bGVFrJUBO8PutvXGwrznKQu3RU75fMAs/vsg==
+ dependencies:
+ "@bonfida/sns-records" "0.0.1"
+ "@noble/curves" "^1.3.0"
+ "@scure/base" "^1.1.5"
+ "@solana/buffer-layout" "^4.0.1"
+ "@solana/spl-token" "0.3.9"
+ borsh "2.0.0"
+ buffer "^6.0.3"
+ graphemesplit "^2.4.4"
+ ipaddr.js "^2.1.0"
+ punycode "^2.3.1"
+
"@coral-xyz/anchor-errors@^0.30.1":
version "0.30.1"
resolved "https://registry.yarnpkg.com/@coral-xyz/anchor-errors/-/anchor-errors-0.30.1.tgz#bdfd3a353131345244546876eb4afc0e125bec30"
@@ -800,7 +832,7 @@
dependencies:
"@noble/hashes" "1.4.0"
-"@noble/curves@^1.1.0", "@noble/curves@^1.4.2":
+"@noble/curves@^1.1.0", "@noble/curves@^1.3.0", "@noble/curves@^1.4.2":
version "1.6.0"
resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.6.0.tgz#be5296ebcd5a1730fccea4786d420f87abfeb40b"
integrity sha512-TlaHRXDehJuRNR9TfZDNQ45mMEd5dwUwmicsafcIX4SsNiqnCHKjE/1alYPd/lDRVhxdhUAlv8uEhMCI5zjIJQ==
@@ -1378,7 +1410,7 @@
resolved "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.10.4.tgz"
integrity sha512-WJgX9nzTqknM393q1QJDJmoW28kUfEnybeTfVNcNAPnIx210RXm2DiXiHzfNPJNIUUb1tJnz/l4QGtJ30PgWmA==
-"@scure/base@~1.1.0", "@scure/base@~1.1.6":
+"@scure/base@^1.1.5", "@scure/base@~1.1.0", "@scure/base@~1.1.6":
version "1.1.8"
resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.1.8.tgz#8f23646c352f020c83bca750a82789e246d42b50"
integrity sha512-6CyAclxj3Nb0XT7GHK6K4zK6k2xJm6E4Ft0Ohjt4WgegiFUHEtFb2CGzmPmGBwoIhrLsqNLYfLr04Y1GePrzZg==
@@ -1465,13 +1497,32 @@
optionalDependencies:
"@react-native-async-storage/async-storage" "^1.17.7"
-"@solana/buffer-layout@^4.0.1":
+"@solana/buffer-layout-utils@^0.2.0":
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/@solana/buffer-layout-utils/-/buffer-layout-utils-0.2.0.tgz#b45a6cab3293a2eb7597cceb474f229889d875ca"
+ integrity sha512-szG4sxgJGktbuZYDg2FfNmkMi0DYQoVjN2h7ta1W1hPrwzarcFLBq9UpX1UjNXsNpT9dn+chgprtWGioUAr4/g==
+ dependencies:
+ "@solana/buffer-layout" "^4.0.0"
+ "@solana/web3.js" "^1.32.0"
+ bigint-buffer "^1.1.5"
+ bignumber.js "^9.0.1"
+
+"@solana/buffer-layout@^4.0.0", "@solana/buffer-layout@^4.0.1":
version "4.0.1"
resolved "https://registry.yarnpkg.com/@solana/buffer-layout/-/buffer-layout-4.0.1.tgz#b996235eaec15b1e0b5092a8ed6028df77fa6c15"
integrity sha512-E1ImOIAD1tBZFRdjeM4/pzTiTApC0AOBGwyAMS4fwIodCWArzJ3DWdoh8cKxeFM2fElkxBh2Aqts1BPC373rHA==
dependencies:
buffer "~6.0.3"
+"@solana/spl-token@0.3.9":
+ version "0.3.9"
+ resolved "https://registry.yarnpkg.com/@solana/spl-token/-/spl-token-0.3.9.tgz#477e703c3638ffb17dd29b82a203c21c3e465851"
+ integrity sha512-1EXHxKICMnab35MvvY/5DBc/K/uQAOJCYnDZXw83McCAYUAfi+rwq6qfd6MmITmSTEhcfBcl/zYxmW/OSN0RmA==
+ dependencies:
+ "@solana/buffer-layout" "^4.0.0"
+ "@solana/buffer-layout-utils" "^0.2.0"
+ buffer "^6.0.3"
+
"@solana/wallet-adapter-alpha@^0.1.10":
version "0.1.10"
resolved "https://registry.yarnpkg.com/@solana/wallet-adapter-alpha/-/wallet-adapter-alpha-0.1.10.tgz#497ac17634dac4de17eba643768df9b30a13129a"
@@ -1897,7 +1948,7 @@
"@solana/wallet-standard-core" "^1.1.1"
"@solana/wallet-standard-wallet-adapter" "^1.1.2"
-"@solana/web3.js@^1.36.0", "@solana/web3.js@^1.63.1", "@solana/web3.js@^1.68.0", "@solana/web3.js@^1.95.0", "@solana/web3.js@^1.95.3":
+"@solana/web3.js@^1.32.0", "@solana/web3.js@^1.36.0", "@solana/web3.js@^1.63.1", "@solana/web3.js@^1.68.0", "@solana/web3.js@^1.95.0", "@solana/web3.js@^1.95.3":
version "1.95.3"
resolved "https://registry.yarnpkg.com/@solana/web3.js/-/web3.js-1.95.3.tgz#70b5f4d76823f56b5af6403da51125fffeb65ff3"
integrity sha512-O6rPUN0w2fkNqx/Z3QJMB9L225Ex10PRDH8bTaIUPZXMPV0QP8ZpPvjQnXK+upUczlRgzHzd6SjKIha1p+I6og==
@@ -3331,6 +3382,16 @@ bn.js@^5.0.0, bn.js@^5.1.1, bn.js@^5.1.2, bn.js@^5.2.0, bn.js@^5.2.1:
resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70"
integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==
+borsh@1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/borsh/-/borsh-1.0.0.tgz#b564c8cc8f7a91e3772b9aef9e07f62b84213c1f"
+ integrity sha512-fSVWzzemnyfF89EPwlUNsrS5swF5CrtiN4e+h0/lLf4dz2he4L3ndM20PS9wj7ICSkXJe/TQUHdaPTq15b1mNQ==
+
+borsh@2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/borsh/-/borsh-2.0.0.tgz#042a9f109565caac3c6a21297cd8c0ae8db3149d"
+ integrity sha512-kc9+BgR3zz9+cjbwM8ODoUB4fs3X3I5A/HtX7LZKxCLaMrEeDFoBpnhZY//DTS1VZBSs6S5v46RZRbZjRFspEg==
+
borsh@^0.7.0:
version "0.7.0"
resolved "https://registry.yarnpkg.com/borsh/-/borsh-0.7.0.tgz#6e9560d719d86d90dc589bca60ffc8a6c51fec2a"
@@ -3432,6 +3493,13 @@ browserify-sign@^4.0.0:
readable-stream "^2.3.8"
safe-buffer "^5.2.1"
+bs58@5.0.0, bs58@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/bs58/-/bs58-5.0.0.tgz#865575b4d13c09ea2a84622df6c8cbeb54ffc279"
+ integrity sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ==
+ dependencies:
+ base-x "^4.0.0"
+
bs58@^4.0.0, bs58@^4.0.1:
version "4.0.1"
resolved "https://registry.yarnpkg.com/bs58/-/bs58-4.0.1.tgz#be161e76c354f6f788ae4071f63f34e8c4f0a42a"
@@ -3439,13 +3507,6 @@ bs58@^4.0.0, bs58@^4.0.1:
dependencies:
base-x "^3.0.2"
-bs58@^5.0.0:
- version "5.0.0"
- resolved "https://registry.yarnpkg.com/bs58/-/bs58-5.0.0.tgz#865575b4d13c09ea2a84622df6c8cbeb54ffc279"
- integrity sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ==
- dependencies:
- base-x "^4.0.0"
-
bs58check@2.1.2, bs58check@^2.1.2:
version "2.1.2"
resolved "https://registry.yarnpkg.com/bs58check/-/bs58check-2.1.2.tgz#53b018291228d82a5aa08e7d796fdafda54aebfc"
@@ -5009,6 +5070,14 @@ graphemer@^1.4.0:
resolved "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz"
integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==
+graphemesplit@^2.4.4:
+ version "2.4.4"
+ resolved "https://registry.yarnpkg.com/graphemesplit/-/graphemesplit-2.4.4.tgz#6d325c61e928efdaec2189f54a9b87babf89b75a"
+ integrity sha512-lKrpp1mk1NH26USxC/Asw4OHbhSQf5XfrWZ+CDv/dFVvd1j17kFgMotdJvOesmHkbFX9P9sBfpH8VogxOWLg8w==
+ dependencies:
+ js-base64 "^3.6.0"
+ unicode-trie "^2.0.0"
+
growl@1.10.5:
version "1.10.5"
resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e"
@@ -5210,6 +5279,11 @@ ip-address@^9.0.5:
jsbn "1.1.0"
sprintf-js "^1.1.3"
+ipaddr.js@^2.1.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-2.2.0.tgz#d33fa7bac284f4de7af949638c9d68157c6b92e8"
+ integrity sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==
+
iron-webcrypto@^1.1.1:
version "1.2.1"
resolved "https://registry.yarnpkg.com/iron-webcrypto/-/iron-webcrypto-1.2.1.tgz#aa60ff2aa10550630f4c0b11fd2442becdb35a6f"
@@ -5547,7 +5621,7 @@ jiti@^1.21.0:
resolved "https://registry.npmjs.org/jiti/-/jiti-1.21.6.tgz"
integrity sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==
-js-base64@^3.7.5:
+js-base64@^3.6.0, js-base64@^3.7.5:
version "3.7.7"
resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-3.7.7.tgz#e51b84bf78fbf5702b9541e2cb7bfcb893b43e79"
integrity sha512-7rCnleh0z2CkXhH67J8K1Ytz0b2Y+yxTPL+/KOJoa20hfnVQ/3/T6W/KflYI4bRHRagNeXeU2bkNGI3v1oS/lw==
@@ -6340,6 +6414,11 @@ p-try@^2.0.0:
resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6"
integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==
+pako@^0.2.5:
+ version "0.2.9"
+ resolved "https://registry.yarnpkg.com/pako/-/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75"
+ integrity sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==
+
pako@^2.0.3:
version "2.1.0"
resolved "https://registry.yarnpkg.com/pako/-/pako-2.1.0.tgz#266cc37f98c7d883545d11335c00fbd4062c9a86"
@@ -6636,7 +6715,7 @@ pump@^3.0.0:
end-of-stream "^1.1.0"
once "^1.3.1"
-punycode@^2.1.0:
+punycode@^2.1.0, punycode@^2.3.1:
version "2.3.1"
resolved "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz"
integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==
@@ -7625,6 +7704,11 @@ thread-stream@^0.15.1:
resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==
+tiny-inflate@^1.0.0:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/tiny-inflate/-/tiny-inflate-1.0.3.tgz#122715494913a1805166aaf7c93467933eea26c4"
+ integrity sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==
+
tiny-secp256k1@^1.1.6:
version "1.1.6"
resolved "https://registry.yarnpkg.com/tiny-secp256k1/-/tiny-secp256k1-1.1.6.tgz#7e224d2bee8ab8283f284e40e6b4acb74ffe047c"
@@ -7867,6 +7951,14 @@ unfetch@^4.2.0:
resolved "https://registry.yarnpkg.com/unfetch/-/unfetch-4.2.0.tgz#7e21b0ef7d363d8d9af0fb929a5555f6ef97a3be"
integrity sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA==
+unicode-trie@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/unicode-trie/-/unicode-trie-2.0.0.tgz#8fd8845696e2e14a8b67d78fa9e0dd2cad62fec8"
+ integrity sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ==
+ dependencies:
+ pako "^0.2.5"
+ tiny-inflate "^1.0.0"
+
unidragger@^3.0.0:
version "3.0.1"
resolved "https://registry.yarnpkg.com/unidragger/-/unidragger-3.0.1.tgz#72b2e63f2571ca6e95a884b139dfec764e08c7f3"