[xc-admin-frontend] Xc admin minor fixes (#968)

* Simplify refresh logic

* Bump wormhole-sdk version to include new chain names
This commit is contained in:
Mohammad Amin Khashkhashi Moghaddam 2023-07-21 07:31:55 +02:00 committed by GitHub
parent 0e018b44c1
commit fbd004f359
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 884 additions and 121 deletions

View File

@ -20,7 +20,7 @@
"test": "jest" "test": "jest"
}, },
"dependencies": { "dependencies": {
"@certusone/wormhole-sdk": "^0.9.8", "@certusone/wormhole-sdk": "^0.9.22",
"@coral-xyz/anchor": "^0.26.0", "@coral-xyz/anchor": "^0.26.0",
"@pythnetwork/client": "^2.17.0", "@pythnetwork/client": "^2.17.0",
"@pythnetwork/pyth-sdk-solidity": "*", "@pythnetwork/pyth-sdk-solidity": "*",

View File

@ -53,11 +53,9 @@ import {
import { getMappingCluster, isPubkey } from '../InstructionViews/utils' import { getMappingCluster, isPubkey } from '../InstructionViews/utils'
const ProposalRow = ({ const ProposalRow = ({
proposal, proposal,
setCurrentProposalPubkey,
multisig, multisig,
}: { }: {
proposal: TransactionAccount proposal: TransactionAccount
setCurrentProposalPubkey: Dispatch<SetStateAction<string | undefined>>
multisig: MultisigAccount | undefined multisig: MultisigAccount | undefined
}) => { }) => {
const status = getProposalStatus(proposal, multisig) const status = getProposalStatus(proposal, multisig)
@ -67,7 +65,6 @@ const ProposalRow = ({
const handleClickIndividualProposal = useCallback( const handleClickIndividualProposal = useCallback(
(proposalPubkey: string) => { (proposalPubkey: string) => {
router.query.proposal = proposalPubkey router.query.proposal = proposalPubkey
setCurrentProposalPubkey(proposalPubkey)
router.push( router.push(
{ {
pathname: router.pathname, pathname: router.pathname,
@ -77,7 +74,7 @@ const ProposalRow = ({
{ scroll: true } { scroll: true }
) )
}, },
[setCurrentProposalPubkey, router] [router]
) )
return ( return (
<div <div
@ -226,16 +223,11 @@ type ProposalType = 'priceFeed' | 'governance'
const Proposal = ({ const Proposal = ({
proposal, proposal,
proposalIndex,
multisig, multisig,
proposalType,
}: { }: {
proposal: TransactionAccount | undefined proposal: TransactionAccount | undefined
proposalIndex: number
multisig: MultisigAccount | undefined multisig: MultisigAccount | undefined
proposalType: ProposalType
}) => { }) => {
const [currentProposal, setCurrentProposal] = useState<TransactionAccount>()
const [instructions, setInstructions] = useState<MultisigInstruction[]>([]) const [instructions, setInstructions] = useState<MultisigInstruction[]>([])
const [isTransactionLoading, setIsTransactionLoading] = useState(false) const [isTransactionLoading, setIsTransactionLoading] = useState(false)
const { cluster } = useContext(ClusterContext) const { cluster } = useContext(ClusterContext)
@ -243,38 +235,23 @@ const Proposal = ({
const { const {
voteSquads, voteSquads,
isLoading: isMultisigLoading, isLoading: isMultisigLoading,
setpriceFeedMultisigProposals,
connection, connection,
refreshData,
} = useMultisigContext() } = useMultisigContext()
const { const {
priceAccountKeyToSymbolMapping, priceAccountKeyToSymbolMapping,
productAccountKeyToSymbolMapping, productAccountKeyToSymbolMapping,
publisherKeyToNameMapping, publisherKeyToNameMapping,
multisigSignerKeyToNameMapping,
} = usePythContext() } = usePythContext()
const publisherKeyToNameMappingCluster = const publisherKeyToNameMappingCluster =
publisherKeyToNameMapping[getMappingCluster(cluster)] publisherKeyToNameMapping[getMappingCluster(cluster)]
const { publicKey: signerPublicKey } = useWallet() const { publicKey: signerPublicKey } = useWallet()
useEffect(() => {
setCurrentProposal(proposal)
}, [proposal])
const proposalStatus = getProposalStatus(proposal, multisig) const proposalStatus = getProposalStatus(proposal, multisig)
useEffect(() => {
// update the priceFeedMultisigProposals with previous value but replace the current proposal with the updated one at the specific index
if (currentProposal) {
setpriceFeedMultisigProposals((prevProposals: TransactionAccount[]) => {
prevProposals.splice(proposalIndex, 1, currentProposal)
return [...prevProposals]
})
}
}, [currentProposal, setpriceFeedMultisigProposals, proposalIndex])
const verified = const verified =
currentProposal && proposal &&
Object.keys(currentProposal.status)[0] !== 'draft' && Object.keys(proposal.status)[0] !== 'draft' &&
instructions.length > 0 && instructions.length > 0 &&
instructions.every( instructions.every(
(ix) => (ix) =>
@ -300,27 +277,28 @@ const Proposal = ({
) )
const voted = const voted =
currentProposal && proposal &&
signerPublicKey && signerPublicKey &&
(currentProposal.approved.some( (proposal.approved.some(
(p) => p.toBase58() === signerPublicKey.toBase58() (p) => p.toBase58() === signerPublicKey.toBase58()
) || ) ||
currentProposal.cancelled.some( proposal.cancelled.some(
(p) => p.toBase58() === signerPublicKey.toBase58() (p) => p.toBase58() === signerPublicKey.toBase58()
) || ) ||
currentProposal.rejected.some( proposal.rejected.some(
(p) => p.toBase58() === signerPublicKey.toBase58() (p) => p.toBase58() === signerPublicKey.toBase58()
)) ))
useEffect(() => { useEffect(() => {
let isCancelled = false
const fetchInstructions = async () => { const fetchInstructions = async () => {
if (currentProposal && connection) { if (proposal && connection) {
const readOnlySquads = new SquadsMesh({ const readOnlySquads = new SquadsMesh({
connection, connection,
wallet: new NodeWallet(new Keypair()), wallet: new NodeWallet(new Keypair()),
}) })
const proposalInstructions = ( const proposalInstructions = (
await getManyProposalsInstructions(readOnlySquads, [currentProposal]) await getManyProposalsInstructions(readOnlySquads, [proposal])
)[0] )[0]
const multisigParser = MultisigParser.fromCluster( const multisigParser = MultisigParser.fromCluster(
getMultisigCluster(cluster) getMultisigCluster(cluster)
@ -332,13 +310,16 @@ const Proposal = ({
keys: ix.keys as AccountMeta[], keys: ix.keys as AccountMeta[],
}) })
) )
setInstructions(parsedInstructions) if (!isCancelled) setInstructions(parsedInstructions)
} else { } else {
setInstructions([]) if (!isCancelled) setInstructions([])
} }
} }
fetchInstructions().catch(console.error) fetchInstructions().catch(console.error)
}, [cluster, currentProposal, voteSquads, connection]) return () => {
isCancelled = true
}
}, [cluster, proposal, voteSquads, connection])
const handleClick = async ( const handleClick = async (
handler: (squad: SquadsMesh, proposalKey: PublicKey) => any, handler: (squad: SquadsMesh, proposalKey: PublicKey) => any,
@ -348,19 +329,7 @@ const Proposal = ({
try { try {
setIsTransactionLoading(true) setIsTransactionLoading(true)
await handler(voteSquads, proposal.publicKey) await handler(voteSquads, proposal.publicKey)
const proposals = await getProposals( if (refreshData) await refreshData().fetchData()
voteSquads,
proposalType === 'priceFeed'
? PRICE_FEED_MULTISIG[getMultisigCluster(cluster)]
: UPGRADE_MULTISIG[getMultisigCluster(cluster)]
)
setCurrentProposal(
proposals.find(
(proposal) =>
proposal.publicKey.toBase58() ===
currentProposal?.publicKey.toBase58()
)
)
toast.success(msg) toast.success(msg)
} catch (e: any) { } catch (e: any) {
toast.error(capitalizeFirstLetter(e.message)) toast.error(capitalizeFirstLetter(e.message))
@ -394,7 +363,7 @@ const Proposal = ({
}, `Cancelled proposal ${proposal?.publicKey.toBase58()}`) }, `Cancelled proposal ${proposal?.publicKey.toBase58()}`)
} }
return currentProposal !== undefined && return proposal !== undefined &&
multisig !== undefined && multisig !== undefined &&
!isMultisigLoading ? ( !isMultisigLoading ? (
<div className="grid grid-cols-3 gap-4"> <div className="grid grid-cols-3 gap-4">
@ -417,15 +386,15 @@ const Proposal = ({
</div> </div>
<div className="flex justify-between"> <div className="flex justify-between">
<div>Proposal</div> <div>Proposal</div>
<CopyPubkey pubkey={currentProposal.publicKey.toBase58()} /> <CopyPubkey pubkey={proposal.publicKey.toBase58()} />
</div> </div>
<div className="flex justify-between"> <div className="flex justify-between">
<div>Creator</div> <div>Creator</div>
<CopyPubkey pubkey={currentProposal.creator.toBase58()} /> <CopyPubkey pubkey={proposal.creator.toBase58()} />
</div> </div>
<div className="flex justify-between"> <div className="flex justify-between">
<div>Multisig</div> <div>Multisig</div>
<CopyPubkey pubkey={currentProposal.ms.toBase58()} /> <CopyPubkey pubkey={proposal.ms.toBase58()} />
</div> </div>
</div> </div>
<div className="col-span-3 my-2 space-y-4 bg-[#1E1B2F] p-4 lg:col-span-1"> <div className="col-span-3 my-2 space-y-4 bg-[#1E1B2F] p-4 lg:col-span-1">
@ -434,17 +403,17 @@ const Proposal = ({
<div className="grid grid-cols-3 justify-center gap-4 text-center align-middle"> <div className="grid grid-cols-3 justify-center gap-4 text-center align-middle">
<div> <div>
<div className="font-bold">Confirmed</div> <div className="font-bold">Confirmed</div>
<div className="text-lg">{currentProposal.approved.length}</div> <div className="text-lg">{proposal.approved.length}</div>
</div> </div>
{proposalStatus === 'active' || proposalStatus === 'rejected' ? ( {proposalStatus === 'active' || proposalStatus === 'rejected' ? (
<div> <div>
<div className="font-bold">Rejected</div> <div className="font-bold">Rejected</div>
<div className="text-lg">{currentProposal.rejected.length}</div> <div className="text-lg">{proposal.rejected.length}</div>
</div> </div>
) : ( ) : (
<div> <div>
<div className="font-bold">Cancelled</div> <div className="font-bold">Cancelled</div>
<div className="text-lg">{currentProposal.cancelled.length}</div> <div className="text-lg">{proposal.cancelled.length}</div>
</div> </div>
)} )}
<div> <div>
@ -490,17 +459,14 @@ const Proposal = ({
</div> </div>
) : null} ) : null}
</div> </div>
{currentProposal.approved.length > 0 && ( {proposal.approved.length > 0 && (
<AccountList listName="Confirmed" accounts={currentProposal.approved} /> <AccountList listName="Confirmed" accounts={proposal.approved} />
)} )}
{currentProposal.rejected.length > 0 && ( {proposal.rejected.length > 0 && (
<AccountList listName="Rejected" accounts={currentProposal.rejected} /> <AccountList listName="Rejected" accounts={proposal.rejected} />
)} )}
{currentProposal.cancelled.length > 0 && ( {proposal.cancelled.length > 0 && (
<AccountList <AccountList listName="Cancelled" accounts={proposal.cancelled} />
listName="Cancelled"
accounts={currentProposal.cancelled}
/>
)} )}
<div className="col-span-3 my-2 space-y-4 bg-[#1E1B2F] p-4"> <div className="col-span-3 my-2 space-y-4 bg-[#1E1B2F] p-4">
<h4 className="h4 font-semibold"> <h4 className="h4 font-semibold">
@ -562,11 +528,8 @@ const Proposal = ({
<div>Value</div> <div>Value</div>
</div> </div>
{Object.keys(instruction.args).map((key, index) => ( {Object.keys(instruction.args).map((key, index) => (
<> <Fragment key={index}>
<div <div className="flex justify-between border-t border-beige-300 py-3">
key={index}
className="flex justify-between border-t border-beige-300 py-3"
>
<div>{key}</div> <div>{key}</div>
{instruction.args[key] instanceof PublicKey ? ( {instruction.args[key] instanceof PublicKey ? (
<CopyPubkey <CopyPubkey
@ -597,7 +560,7 @@ const Proposal = ({
pubkey={instruction.args[key].toBase58()} pubkey={instruction.args[key].toBase58()}
/> />
) : null} ) : null}
</> </Fragment>
))} ))}
</div> </div>
) : ( ) : (
@ -747,7 +710,6 @@ const Proposals = () => {
const router = useRouter() const router = useRouter()
const { connected, publicKey: signerPublicKey } = useWallet() const { connected, publicKey: signerPublicKey } = useWallet()
const [currentProposal, setCurrentProposal] = useState<TransactionAccount>() const [currentProposal, setCurrentProposal] = useState<TransactionAccount>()
const [currentProposalIndex, setCurrentProposalIndex] = useState<number>()
const [currentProposalPubkey, setCurrentProposalPubkey] = useState<string>() const [currentProposalPubkey, setCurrentProposalPubkey] = useState<string>()
const { cluster } = useContext(ClusterContext) const { cluster } = useContext(ClusterContext)
const { statusFilter } = useContext(StatusFilterContext) const { statusFilter } = useContext(StatusFilterContext)
@ -808,14 +770,8 @@ const Proposals = () => {
const currProposal = multisigProposals.find( const currProposal = multisigProposals.find(
(proposal) => proposal.publicKey.toBase58() === currentProposalPubkey (proposal) => proposal.publicKey.toBase58() === currentProposalPubkey
) )
const currProposalIndex = multisigProposals.findIndex(
(proposal) => proposal.publicKey.toBase58() === currentProposalPubkey
)
setCurrentProposal(currProposal) setCurrentProposal(currProposal)
setCurrentProposalIndex( if (currProposal === undefined) {
currProposalIndex === -1 ? undefined : currProposalIndex
)
if (currProposalIndex === -1) {
const otherProposals = const otherProposals =
proposalType !== 'priceFeed' proposalType !== 'priceFeed'
? priceFeedMultisigProposals ? priceFeedMultisigProposals
@ -916,7 +872,6 @@ const Proposals = () => {
<ProposalRow <ProposalRow
key={proposal.publicKey.toBase58()} key={proposal.publicKey.toBase58()}
proposal={proposal} proposal={proposal}
setCurrentProposalPubkey={setCurrentProposalPubkey}
multisig={multisigAccount} multisig={multisigAccount}
/> />
))} ))}
@ -931,7 +886,7 @@ const Proposals = () => {
)} )}
</div> </div>
</> </>
) : !isMultisigLoading && currentProposalIndex !== undefined ? ( ) : !isMultisigLoading && currentProposal !== undefined ? (
<> <>
<div <div
className="max-w-fit cursor-pointer bg-darkGray2 p-3 text-xs font-semibold outline-none transition-colors hover:bg-darkGray3 md:text-base" className="max-w-fit cursor-pointer bg-darkGray2 p-3 text-xs font-semibold outline-none transition-colors hover:bg-darkGray3 md:text-base"
@ -940,12 +895,7 @@ const Proposals = () => {
&#8592; back to proposals &#8592; back to proposals
</div> </div>
<div className="relative mt-6"> <div className="relative mt-6">
<Proposal <Proposal proposal={currentProposal} multisig={multisigAccount} />
proposal={currentProposal}
proposalIndex={currentProposalIndex}
multisig={multisigAccount}
proposalType={proposalType}
/>
</div> </div>
</> </>
) : ( ) : (

View File

@ -16,7 +16,6 @@ const MultisigContext = createContext<MultisigHookData>({
voteSquads: undefined, voteSquads: undefined,
refreshData: undefined, refreshData: undefined,
connection: undefined, connection: undefined,
setpriceFeedMultisigProposals: () => {},
}) })
export const useMultisigContext = () => useContext(MultisigContext) export const useMultisigContext = () => useContext(MultisigContext)
@ -38,7 +37,6 @@ export const MultisigContextProvider: React.FC<
upgradeMultisigProposals, upgradeMultisigProposals,
priceFeedMultisigProposals, priceFeedMultisigProposals,
allProposalsIxsParsed, allProposalsIxsParsed,
setpriceFeedMultisigProposals,
refreshData, refreshData,
connection, connection,
} = useMultisig() } = useMultisig()
@ -50,7 +48,6 @@ export const MultisigContextProvider: React.FC<
upgradeMultisigProposals, upgradeMultisigProposals,
priceFeedMultisigProposals, priceFeedMultisigProposals,
allProposalsIxsParsed, allProposalsIxsParsed,
setpriceFeedMultisigProposals,
isLoading, isLoading,
error, error,
proposeSquads, proposeSquads,
@ -68,7 +65,6 @@ export const MultisigContextProvider: React.FC<
upgradeMultisigProposals, upgradeMultisigProposals,
priceFeedMultisigProposals, priceFeedMultisigProposals,
allProposalsIxsParsed, allProposalsIxsParsed,
setpriceFeedMultisigProposals,
refreshData, refreshData,
connection, connection,
] ]

View File

@ -26,9 +26,6 @@ export interface MultisigHookData {
allProposalsIxsParsed: MultisigInstruction[][] allProposalsIxsParsed: MultisigInstruction[][]
connection?: Connection connection?: Connection
refreshData?: () => { fetchData: () => Promise<void>; cancel: () => void } refreshData?: () => { fetchData: () => Promise<void>; cancel: () => void }
setpriceFeedMultisigProposals: React.Dispatch<
React.SetStateAction<TransactionAccount[]>
>
} }
const getSortedProposals = async ( const getSortedProposals = async (
@ -46,12 +43,12 @@ export const useMultisig = (): MultisigHookData => {
const [error, setError] = useState(null) const [error, setError] = useState(null)
const [upgradeMultisigAccount, setUpgradeMultisigAccount] = const [upgradeMultisigAccount, setUpgradeMultisigAccount] =
useState<MultisigAccount>() useState<MultisigAccount>()
const [priceFeedMultisigAccount, setpriceFeedMultisigAccount] = const [priceFeedMultisigAccount, setPriceFeedMultisigAccount] =
useState<MultisigAccount>() useState<MultisigAccount>()
const [upgradeMultisigProposals, setUpgradeMultisigProposals] = useState< const [upgradeMultisigProposals, setUpgradeMultisigProposals] = useState<
TransactionAccount[] TransactionAccount[]
>([]) >([])
const [priceFeedMultisigProposals, setpriceFeedMultisigProposals] = useState< const [priceFeedMultisigProposals, setPriceFeedMultisigProposals] = useState<
TransactionAccount[] TransactionAccount[]
>([]) >([])
const [allProposalsIxsParsed, setAllProposalsIxsParsed] = useState< const [allProposalsIxsParsed, setAllProposalsIxsParsed] = useState<
@ -109,14 +106,14 @@ export const useMultisig = (): MultisigHookData => {
) )
try { try {
if (cancelled) return if (cancelled) return
setpriceFeedMultisigAccount( setPriceFeedMultisigAccount(
await readOnlySquads.getMultisig( await readOnlySquads.getMultisig(
PRICE_FEED_MULTISIG[multisigCluster] PRICE_FEED_MULTISIG[multisigCluster]
) )
) )
} catch (e) { } catch (e) {
console.error(e) console.error(e)
setpriceFeedMultisigAccount(undefined) setPriceFeedMultisigAccount(undefined)
} }
if (cancelled) return if (cancelled) return
@ -131,11 +128,11 @@ export const useMultisig = (): MultisigHookData => {
readOnlySquads, readOnlySquads,
PRICE_FEED_MULTISIG[multisigCluster] PRICE_FEED_MULTISIG[multisigCluster]
) )
setpriceFeedMultisigProposals(sortedPriceFeedMultisigProposals) setPriceFeedMultisigProposals(sortedPriceFeedMultisigProposals)
} catch (e) { } catch (e) {
console.error(e) console.error(e)
setAllProposalsIxsParsed([]) setAllProposalsIxsParsed([])
setpriceFeedMultisigProposals([]) setPriceFeedMultisigProposals([])
} }
setIsLoading(false) setIsLoading(false)
@ -181,6 +178,5 @@ export const useMultisig = (): MultisigHookData => {
allProposalsIxsParsed, allProposalsIxsParsed,
refreshData, refreshData,
connection, connection,
setpriceFeedMultisigProposals,
} }
} }

859
package-lock.json generated
View File

@ -1838,7 +1838,7 @@
"version": "0.0.0", "version": "0.0.0",
"license": "ISC", "license": "ISC",
"dependencies": { "dependencies": {
"@certusone/wormhole-sdk": "^0.9.8", "@certusone/wormhole-sdk": "^0.9.22",
"@coral-xyz/anchor": "^0.26.0", "@coral-xyz/anchor": "^0.26.0",
"@pythnetwork/client": "^2.17.0", "@pythnetwork/client": "^2.17.0",
"@pythnetwork/pyth-sdk-solidity": "*", "@pythnetwork/pyth-sdk-solidity": "*",
@ -1860,23 +1860,21 @@
} }
}, },
"governance/xc_admin/packages/xc_admin_common/node_modules/@certusone/wormhole-sdk": { "governance/xc_admin/packages/xc_admin_common/node_modules/@certusone/wormhole-sdk": {
"version": "0.9.8", "version": "0.9.22",
"resolved": "https://registry.npmjs.org/@certusone/wormhole-sdk/-/wormhole-sdk-0.9.8.tgz", "resolved": "https://registry.npmjs.org/@certusone/wormhole-sdk/-/wormhole-sdk-0.9.22.tgz",
"integrity": "sha512-Ck93es/4TxsYTVcFxEOQumXlxJm10AHMuDdUzwg+wNGYXLKlHEksrWdEUoeJ0o1HIEnIAT33g0q/bmCq8rlWzg==", "integrity": "sha512-4wZFyqqSQBtTq5S42TCrTAircnRjd0t0OZnFRyMe5qtqk96l5iDwIztKBaIccUW+XDXoGfBhSGooW15tH/IpIQ==",
"dependencies": { "dependencies": {
"@certusone/wormhole-sdk-proto-web": "0.0.6", "@certusone/wormhole-sdk-proto-web": "0.0.6",
"@certusone/wormhole-sdk-wasm": "^0.0.1", "@certusone/wormhole-sdk-wasm": "^0.0.1",
"@coral-xyz/borsh": "0.2.6", "@coral-xyz/borsh": "0.2.6",
"@injectivelabs/networks": "^1.0.52", "@mysten/sui.js": "0.32.2",
"@injectivelabs/sdk-ts": "1.0.289",
"@injectivelabs/utils": "1.0.45",
"@project-serum/anchor": "^0.25.0", "@project-serum/anchor": "^0.25.0",
"@solana/spl-token": "^0.3.5", "@solana/spl-token": "^0.3.5",
"@solana/web3.js": "^1.66.2", "@solana/web3.js": "^1.66.2",
"@terra-money/terra.js": "^3.1.3", "@terra-money/terra.js": "3.1.9",
"@xpla/xpla.js": "^0.2.1", "@xpla/xpla.js": "^0.2.1",
"algosdk": "^1.15.0", "algosdk": "^1.15.0",
"aptos": "^1.3.16", "aptos": "1.5.0",
"axios": "^0.24.0", "axios": "^0.24.0",
"bech32": "^2.0.0", "bech32": "^2.0.0",
"binary-parser": "^2.2.1", "binary-parser": "^2.2.1",
@ -1884,6 +1882,347 @@
"elliptic": "^6.5.4", "elliptic": "^6.5.4",
"js-base64": "^3.6.1", "js-base64": "^3.6.1",
"near-api-js": "^1.0.0" "near-api-js": "^1.0.0"
},
"optionalDependencies": {
"@injectivelabs/networks": "1.10.12",
"@injectivelabs/sdk-ts": "1.10.72",
"@injectivelabs/utils": "1.10.12"
}
},
"governance/xc_admin/packages/xc_admin_common/node_modules/@cosmjs/amino": {
"version": "0.30.1",
"resolved": "https://registry.npmjs.org/@cosmjs/amino/-/amino-0.30.1.tgz",
"integrity": "sha512-yNHnzmvAlkETDYIpeCTdVqgvrdt1qgkOXwuRVi8s27UKI5hfqyE9fJ/fuunXE6ZZPnKkjIecDznmuUOMrMvw4w==",
"optional": true,
"dependencies": {
"@cosmjs/crypto": "^0.30.1",
"@cosmjs/encoding": "^0.30.1",
"@cosmjs/math": "^0.30.1",
"@cosmjs/utils": "^0.30.1"
}
},
"governance/xc_admin/packages/xc_admin_common/node_modules/@cosmjs/crypto": {
"version": "0.30.1",
"resolved": "https://registry.npmjs.org/@cosmjs/crypto/-/crypto-0.30.1.tgz",
"integrity": "sha512-rAljUlake3MSXs9xAm87mu34GfBLN0h/1uPPV6jEwClWjNkAMotzjC0ab9MARy5FFAvYHL3lWb57bhkbt2GtzQ==",
"optional": true,
"dependencies": {
"@cosmjs/encoding": "^0.30.1",
"@cosmjs/math": "^0.30.1",
"@cosmjs/utils": "^0.30.1",
"@noble/hashes": "^1",
"bn.js": "^5.2.0",
"elliptic": "^6.5.4",
"libsodium-wrappers": "^0.7.6"
}
},
"governance/xc_admin/packages/xc_admin_common/node_modules/@cosmjs/encoding": {
"version": "0.30.1",
"resolved": "https://registry.npmjs.org/@cosmjs/encoding/-/encoding-0.30.1.tgz",
"integrity": "sha512-rXmrTbgqwihORwJ3xYhIgQFfMSrwLu1s43RIK9I8EBudPx3KmnmyAKzMOVsRDo9edLFNuZ9GIvysUCwQfq3WlQ==",
"optional": true,
"dependencies": {
"base64-js": "^1.3.0",
"bech32": "^1.1.4",
"readonly-date": "^1.0.0"
}
},
"governance/xc_admin/packages/xc_admin_common/node_modules/@cosmjs/encoding/node_modules/bech32": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz",
"integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==",
"optional": true
},
"governance/xc_admin/packages/xc_admin_common/node_modules/@cosmjs/json-rpc": {
"version": "0.30.1",
"resolved": "https://registry.npmjs.org/@cosmjs/json-rpc/-/json-rpc-0.30.1.tgz",
"integrity": "sha512-pitfC/2YN9t+kXZCbNuyrZ6M8abnCC2n62m+JtU9vQUfaEtVsgy+1Fk4TRQ175+pIWSdBMFi2wT8FWVEE4RhxQ==",
"optional": true,
"dependencies": {
"@cosmjs/stream": "^0.30.1",
"xstream": "^11.14.0"
}
},
"governance/xc_admin/packages/xc_admin_common/node_modules/@cosmjs/math": {
"version": "0.30.1",
"resolved": "https://registry.npmjs.org/@cosmjs/math/-/math-0.30.1.tgz",
"integrity": "sha512-yaoeI23pin9ZiPHIisa6qqLngfnBR/25tSaWpkTm8Cy10MX70UF5oN4+/t1heLaM6SSmRrhk3psRkV4+7mH51Q==",
"optional": true,
"dependencies": {
"bn.js": "^5.2.0"
}
},
"governance/xc_admin/packages/xc_admin_common/node_modules/@cosmjs/proto-signing": {
"version": "0.30.1",
"resolved": "https://registry.npmjs.org/@cosmjs/proto-signing/-/proto-signing-0.30.1.tgz",
"integrity": "sha512-tXh8pPYXV4aiJVhTKHGyeZekjj+K9s2KKojMB93Gcob2DxUjfKapFYBMJSgfKPuWUPEmyr8Q9km2hplI38ILgQ==",
"optional": true,
"dependencies": {
"@cosmjs/amino": "^0.30.1",
"@cosmjs/crypto": "^0.30.1",
"@cosmjs/encoding": "^0.30.1",
"@cosmjs/math": "^0.30.1",
"@cosmjs/utils": "^0.30.1",
"cosmjs-types": "^0.7.1",
"long": "^4.0.0"
}
},
"governance/xc_admin/packages/xc_admin_common/node_modules/@cosmjs/socket": {
"version": "0.30.1",
"resolved": "https://registry.npmjs.org/@cosmjs/socket/-/socket-0.30.1.tgz",
"integrity": "sha512-r6MpDL+9N+qOS/D5VaxnPaMJ3flwQ36G+vPvYJsXArj93BjgyFB7BwWwXCQDzZ+23cfChPUfhbINOenr8N2Kow==",
"optional": true,
"dependencies": {
"@cosmjs/stream": "^0.30.1",
"isomorphic-ws": "^4.0.1",
"ws": "^7",
"xstream": "^11.14.0"
}
},
"governance/xc_admin/packages/xc_admin_common/node_modules/@cosmjs/stargate": {
"version": "0.30.1",
"resolved": "https://registry.npmjs.org/@cosmjs/stargate/-/stargate-0.30.1.tgz",
"integrity": "sha512-RdbYKZCGOH8gWebO7r6WvNnQMxHrNXInY/gPHPzMjbQF6UatA6fNM2G2tdgS5j5u7FTqlCI10stNXrknaNdzog==",
"optional": true,
"dependencies": {
"@confio/ics23": "^0.6.8",
"@cosmjs/amino": "^0.30.1",
"@cosmjs/encoding": "^0.30.1",
"@cosmjs/math": "^0.30.1",
"@cosmjs/proto-signing": "^0.30.1",
"@cosmjs/stream": "^0.30.1",
"@cosmjs/tendermint-rpc": "^0.30.1",
"@cosmjs/utils": "^0.30.1",
"cosmjs-types": "^0.7.1",
"long": "^4.0.0",
"protobufjs": "~6.11.3",
"xstream": "^11.14.0"
}
},
"governance/xc_admin/packages/xc_admin_common/node_modules/@cosmjs/stream": {
"version": "0.30.1",
"resolved": "https://registry.npmjs.org/@cosmjs/stream/-/stream-0.30.1.tgz",
"integrity": "sha512-Fg0pWz1zXQdoxQZpdHRMGvUH5RqS6tPv+j9Eh7Q953UjMlrwZVo0YFLC8OTf/HKVf10E4i0u6aM8D69Q6cNkgQ==",
"optional": true,
"dependencies": {
"xstream": "^11.14.0"
}
},
"governance/xc_admin/packages/xc_admin_common/node_modules/@cosmjs/tendermint-rpc": {
"version": "0.30.1",
"resolved": "https://registry.npmjs.org/@cosmjs/tendermint-rpc/-/tendermint-rpc-0.30.1.tgz",
"integrity": "sha512-Z3nCwhXSbPZJ++v85zHObeUggrEHVfm1u18ZRwXxFE9ZMl5mXTybnwYhczuYOl7KRskgwlB+rID0WYACxj4wdQ==",
"optional": true,
"dependencies": {
"@cosmjs/crypto": "^0.30.1",
"@cosmjs/encoding": "^0.30.1",
"@cosmjs/json-rpc": "^0.30.1",
"@cosmjs/math": "^0.30.1",
"@cosmjs/socket": "^0.30.1",
"@cosmjs/stream": "^0.30.1",
"@cosmjs/utils": "^0.30.1",
"axios": "^0.21.2",
"readonly-date": "^1.0.0",
"xstream": "^11.14.0"
}
},
"governance/xc_admin/packages/xc_admin_common/node_modules/@cosmjs/tendermint-rpc/node_modules/axios": {
"version": "0.21.4",
"resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz",
"integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==",
"optional": true,
"dependencies": {
"follow-redirects": "^1.14.0"
}
},
"governance/xc_admin/packages/xc_admin_common/node_modules/@cosmjs/utils": {
"version": "0.30.1",
"resolved": "https://registry.npmjs.org/@cosmjs/utils/-/utils-0.30.1.tgz",
"integrity": "sha512-KvvX58MGMWh7xA+N+deCfunkA/ZNDvFLw4YbOmX3f/XBIkqrVY7qlotfy2aNb1kgp6h4B6Yc8YawJPDTfvWX7g==",
"optional": true
},
"governance/xc_admin/packages/xc_admin_common/node_modules/@injectivelabs/sdk-ts": {
"version": "1.10.72",
"resolved": "https://registry.npmjs.org/@injectivelabs/sdk-ts/-/sdk-ts-1.10.72.tgz",
"integrity": "sha512-A5mHNNBgO4fI1c/7CZ0bGfVXliy8laP+VaYZ++aWh1YyudoZw4CTCEmLetZRy7AUU3XcfbHa8sAImRi7db+v6Q==",
"hasInstallScript": true,
"optional": true,
"dependencies": {
"@apollo/client": "^3.5.8",
"@cosmjs/amino": "^0.30.1",
"@cosmjs/proto-signing": "^0.30.1",
"@cosmjs/stargate": "^0.30.1",
"@ethersproject/bytes": "^5.7.0",
"@injectivelabs/core-proto-ts": "^0.0.14",
"@injectivelabs/exceptions": "^1.10.12",
"@injectivelabs/grpc-web": "^0.0.1",
"@injectivelabs/grpc-web-node-http-transport": "^0.0.2",
"@injectivelabs/grpc-web-react-native-transport": "^0.0.2",
"@injectivelabs/indexer-proto-ts": "1.10.8-rc.4",
"@injectivelabs/mito-proto-ts": "1.0.9",
"@injectivelabs/networks": "^1.10.12",
"@injectivelabs/test-utils": "^1.10.12",
"@injectivelabs/token-metadata": "^1.10.42",
"@injectivelabs/ts-types": "^1.10.12",
"@injectivelabs/utils": "^1.10.12",
"@metamask/eth-sig-util": "^4.0.0",
"axios": "^0.27.2",
"bech32": "^2.0.0",
"bip39": "^3.0.4",
"cosmjs-types": "^0.7.1",
"eth-crypto": "^2.6.0",
"ethereumjs-util": "^7.1.4",
"ethers": "^5.7.2",
"google-protobuf": "^3.21.0",
"graphql": "^16.3.0",
"http-status-codes": "^2.2.0",
"js-sha3": "^0.8.0",
"jscrypto": "^1.0.3",
"keccak256": "^1.0.6",
"link-module-alias": "^1.2.0",
"rxjs": "^7.8.0",
"secp256k1": "^4.0.3",
"shx": "^0.3.2",
"snakecase-keys": "^5.4.1"
}
},
"governance/xc_admin/packages/xc_admin_common/node_modules/@injectivelabs/sdk-ts/node_modules/axios": {
"version": "0.27.2",
"resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz",
"integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==",
"optional": true,
"dependencies": {
"follow-redirects": "^1.14.9",
"form-data": "^4.0.0"
}
},
"governance/xc_admin/packages/xc_admin_common/node_modules/@injectivelabs/utils": {
"version": "1.10.12",
"resolved": "https://registry.npmjs.org/@injectivelabs/utils/-/utils-1.10.12.tgz",
"integrity": "sha512-c8al79nxIJgV1cBAdW2TPDGldj/8gm5k0h5TIN/AJs8/AeIjpTwwVGfLY3QvPOpRsxuQ9CjBkTXrAcSL1wwkcw==",
"hasInstallScript": true,
"optional": true,
"dependencies": {
"@injectivelabs/exceptions": "^1.10.12",
"@injectivelabs/ts-types": "^1.10.12",
"axios": "^0.21.1",
"bignumber.js": "^9.0.1",
"http-status-codes": "^2.2.0",
"link-module-alias": "^1.2.0",
"shx": "^0.3.2",
"snakecase-keys": "^5.1.2",
"store2": "^2.12.0"
}
},
"governance/xc_admin/packages/xc_admin_common/node_modules/@injectivelabs/utils/node_modules/axios": {
"version": "0.21.4",
"resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz",
"integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==",
"optional": true,
"dependencies": {
"follow-redirects": "^1.14.0"
}
},
"governance/xc_admin/packages/xc_admin_common/node_modules/@mysten/sui.js": {
"version": "0.32.2",
"resolved": "https://registry.npmjs.org/@mysten/sui.js/-/sui.js-0.32.2.tgz",
"integrity": "sha512-/Hm4xkGolJhqj8FvQr7QSHDTlxIvL52mtbOao9f75YjrBh7y1Uh9kbJSY7xiTF1NY9sv6p5hUVlYRJuM0Hvn9A==",
"dependencies": {
"@mysten/bcs": "0.7.1",
"@noble/curves": "^1.0.0",
"@noble/hashes": "^1.3.0",
"@scure/bip32": "^1.3.0",
"@scure/bip39": "^1.2.0",
"@suchipi/femver": "^1.0.0",
"jayson": "^4.0.0",
"rpc-websockets": "^7.5.1",
"superstruct": "^1.0.3",
"tweetnacl": "^1.0.3"
},
"engines": {
"node": ">=16"
}
},
"governance/xc_admin/packages/xc_admin_common/node_modules/@mysten/sui.js/node_modules/@scure/bip39": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.2.1.tgz",
"integrity": "sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg==",
"dependencies": {
"@noble/hashes": "~1.3.0",
"@scure/base": "~1.1.0"
},
"funding": {
"url": "https://paulmillr.com/funding/"
}
},
"governance/xc_admin/packages/xc_admin_common/node_modules/@noble/curves": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.1.0.tgz",
"integrity": "sha512-091oBExgENk/kGj3AZmtBDMpxQPDtxQABR2B9lb1JbVTs6ytdzZNwvhxQ4MWasRNEzlbEH8jCWFCwhF/Obj5AA==",
"dependencies": {
"@noble/hashes": "1.3.1"
},
"funding": {
"url": "https://paulmillr.com/funding/"
}
},
"governance/xc_admin/packages/xc_admin_common/node_modules/@noble/hashes": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.1.tgz",
"integrity": "sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA==",
"engines": {
"node": ">= 16"
},
"funding": {
"url": "https://paulmillr.com/funding/"
}
},
"governance/xc_admin/packages/xc_admin_common/node_modules/@scure/bip32": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.3.1.tgz",
"integrity": "sha512-osvveYtyzdEVbt3OfwwXFr4P2iVBL5u1Q3q4ONBfDY/UpOuXmOlbgwc1xECEboY8wIays8Yt6onaWMUdUbfl0A==",
"dependencies": {
"@noble/curves": "~1.1.0",
"@noble/hashes": "~1.3.1",
"@scure/base": "~1.1.0"
},
"funding": {
"url": "https://paulmillr.com/funding/"
}
},
"governance/xc_admin/packages/xc_admin_common/node_modules/aptos": {
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/aptos/-/aptos-1.5.0.tgz",
"integrity": "sha512-N7OuRtU7IYHkDkNx+4QS3g/QQGCp+36KzYn3oXPmT7Kttfuv+UKliQVdjy3cLmwd/DCQSh9ObTovwdxnHjUn0g==",
"dependencies": {
"@noble/hashes": "1.1.3",
"@scure/bip39": "1.1.0",
"axios": "0.27.2",
"form-data": "4.0.0",
"tweetnacl": "1.0.3"
},
"engines": {
"node": ">=11.0.0"
}
},
"governance/xc_admin/packages/xc_admin_common/node_modules/aptos/node_modules/@noble/hashes": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.1.3.tgz",
"integrity": "sha512-CE0FCR57H2acVI5UOzIGSSIYxZ6v/HOhDR0Ro9VLyhnzLwx0o8W1mmgaqlEUx4049qJDlIBRztv5k+MM8vbO3A==",
"funding": [
{
"type": "individual",
"url": "https://paulmillr.com/funding/"
}
]
},
"governance/xc_admin/packages/xc_admin_common/node_modules/aptos/node_modules/axios": {
"version": "0.27.2",
"resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz",
"integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==",
"dependencies": {
"follow-redirects": "^1.14.9",
"form-data": "^4.0.0"
} }
}, },
"governance/xc_admin/packages/xc_admin_common/node_modules/axios": { "governance/xc_admin/packages/xc_admin_common/node_modules/axios": {
@ -1894,6 +2233,16 @@
"follow-redirects": "^1.14.4" "follow-redirects": "^1.14.4"
} }
}, },
"governance/xc_admin/packages/xc_admin_common/node_modules/cosmjs-types": {
"version": "0.7.2",
"resolved": "https://registry.npmjs.org/cosmjs-types/-/cosmjs-types-0.7.2.tgz",
"integrity": "sha512-vf2uLyktjr/XVAgEq0DjMxeAWh1yYREe7AMHDKd7EiHVqxBPCaBS+qEEQUkXbR9ndnckqr1sUG8BQhazh4X5lA==",
"optional": true,
"dependencies": {
"long": "^4.0.0",
"protobufjs": "~6.11.2"
}
},
"governance/xc_admin/packages/xc_admin_common/node_modules/fast-check": { "governance/xc_admin/packages/xc_admin_common/node_modules/fast-check": {
"version": "3.10.0", "version": "3.10.0",
"resolved": "https://registry.npmjs.org/fast-check/-/fast-check-3.10.0.tgz", "resolved": "https://registry.npmjs.org/fast-check/-/fast-check-3.10.0.tgz",
@ -1916,6 +2265,36 @@
"node": ">=8.0.0" "node": ">=8.0.0"
} }
}, },
"governance/xc_admin/packages/xc_admin_common/node_modules/jayson": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/jayson/-/jayson-4.1.0.tgz",
"integrity": "sha512-R6JlbyLN53Mjku329XoRT2zJAE6ZgOQ8f91ucYdMCD4nkGCF9kZSrcGXpHIU4jeKj58zUZke2p+cdQchU7Ly7A==",
"dependencies": {
"@types/connect": "^3.4.33",
"@types/node": "^12.12.54",
"@types/ws": "^7.4.4",
"commander": "^2.20.3",
"delay": "^5.0.0",
"es6-promisify": "^5.0.0",
"eyes": "^0.1.8",
"isomorphic-ws": "^4.0.1",
"json-stringify-safe": "^5.0.1",
"JSONStream": "^1.3.5",
"uuid": "^8.3.2",
"ws": "^7.4.5"
},
"bin": {
"jayson": "bin/jayson.js"
},
"engines": {
"node": ">=8"
}
},
"governance/xc_admin/packages/xc_admin_common/node_modules/jayson/node_modules/@types/node": {
"version": "12.20.55",
"resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz",
"integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ=="
},
"governance/xc_admin/packages/xc_admin_common/node_modules/prettier": { "governance/xc_admin/packages/xc_admin_common/node_modules/prettier": {
"version": "2.8.3", "version": "2.8.3",
"resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.3.tgz", "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.3.tgz",
@ -1931,6 +2310,32 @@
"url": "https://github.com/prettier/prettier?sponsor=1" "url": "https://github.com/prettier/prettier?sponsor=1"
} }
}, },
"governance/xc_admin/packages/xc_admin_common/node_modules/protobufjs": {
"version": "6.11.3",
"resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.3.tgz",
"integrity": "sha512-xL96WDdCZYdU7Slin569tFX712BxsxslWwAfAhCYjQKGTq7dAU91Lomy6nLLhh/dyGhk/YH4TwTSRxTzhuHyZg==",
"hasInstallScript": true,
"optional": true,
"dependencies": {
"@protobufjs/aspromise": "^1.1.2",
"@protobufjs/base64": "^1.1.2",
"@protobufjs/codegen": "^2.0.4",
"@protobufjs/eventemitter": "^1.1.0",
"@protobufjs/fetch": "^1.1.0",
"@protobufjs/float": "^1.0.2",
"@protobufjs/inquire": "^1.1.0",
"@protobufjs/path": "^1.1.2",
"@protobufjs/pool": "^1.1.0",
"@protobufjs/utf8": "^1.1.0",
"@types/long": "^4.0.1",
"@types/node": ">=13.7.0",
"long": "^4.0.0"
},
"bin": {
"pbjs": "bin/pbjs",
"pbts": "bin/pbts"
}
},
"governance/xc_admin/packages/xc_admin_common/node_modules/pure-rand": { "governance/xc_admin/packages/xc_admin_common/node_modules/pure-rand": {
"version": "6.0.2", "version": "6.0.2",
"resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.2.tgz", "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.2.tgz",
@ -1947,6 +2352,34 @@
} }
] ]
}, },
"governance/xc_admin/packages/xc_admin_common/node_modules/superstruct": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/superstruct/-/superstruct-1.0.3.tgz",
"integrity": "sha512-8iTn3oSS8nRGn+C2pgXSKPI3jmpm6FExNazNpjvqS6ZUJQCej3PUXEKM8NjHBOs54ExM+LPW/FBRhymrdcCiSg==",
"engines": {
"node": ">=14.0.0"
}
},
"governance/xc_admin/packages/xc_admin_common/node_modules/ws": {
"version": "7.5.9",
"resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz",
"integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==",
"engines": {
"node": ">=8.3.0"
},
"peerDependencies": {
"bufferutil": "^4.0.1",
"utf-8-validate": "^5.0.2"
},
"peerDependenciesMeta": {
"bufferutil": {
"optional": true
},
"utf-8-validate": {
"optional": true
}
}
},
"governance/xc_admin/packages/xc_admin_frontend": { "governance/xc_admin/packages/xc_admin_frontend": {
"version": "0.1.0", "version": "0.1.0",
"dependencies": { "dependencies": {
@ -55395,7 +55828,7 @@
}, },
"price_pusher": { "price_pusher": {
"name": "@pythnetwork/price-pusher", "name": "@pythnetwork/price-pusher",
"version": "5.4.5", "version": "5.4.6",
"license": "Apache-2.0", "license": "Apache-2.0",
"dependencies": { "dependencies": {
"@injectivelabs/sdk-ts": "1.10.72", "@injectivelabs/sdk-ts": "1.10.72",
@ -106059,7 +106492,7 @@
"xc_admin_common": { "xc_admin_common": {
"version": "file:governance/xc_admin/packages/xc_admin_common", "version": "file:governance/xc_admin/packages/xc_admin_common",
"requires": { "requires": {
"@certusone/wormhole-sdk": "^0.9.8", "@certusone/wormhole-sdk": "^0.9.22",
"@coral-xyz/anchor": "^0.26.0", "@coral-xyz/anchor": "^0.26.0",
"@pythnetwork/client": "^2.17.0", "@pythnetwork/client": "^2.17.0",
"@pythnetwork/pyth-sdk-solidity": "*", "@pythnetwork/pyth-sdk-solidity": "*",
@ -106079,23 +106512,24 @@
}, },
"dependencies": { "dependencies": {
"@certusone/wormhole-sdk": { "@certusone/wormhole-sdk": {
"version": "0.9.8", "version": "0.9.22",
"resolved": "https://registry.npmjs.org/@certusone/wormhole-sdk/-/wormhole-sdk-0.9.8.tgz", "resolved": "https://registry.npmjs.org/@certusone/wormhole-sdk/-/wormhole-sdk-0.9.22.tgz",
"integrity": "sha512-Ck93es/4TxsYTVcFxEOQumXlxJm10AHMuDdUzwg+wNGYXLKlHEksrWdEUoeJ0o1HIEnIAT33g0q/bmCq8rlWzg==", "integrity": "sha512-4wZFyqqSQBtTq5S42TCrTAircnRjd0t0OZnFRyMe5qtqk96l5iDwIztKBaIccUW+XDXoGfBhSGooW15tH/IpIQ==",
"requires": { "requires": {
"@certusone/wormhole-sdk-proto-web": "0.0.6", "@certusone/wormhole-sdk-proto-web": "0.0.6",
"@certusone/wormhole-sdk-wasm": "^0.0.1", "@certusone/wormhole-sdk-wasm": "^0.0.1",
"@coral-xyz/borsh": "0.2.6", "@coral-xyz/borsh": "0.2.6",
"@injectivelabs/networks": "^1.0.52", "@injectivelabs/networks": "1.10.12",
"@injectivelabs/sdk-ts": "1.0.289", "@injectivelabs/sdk-ts": "1.10.72",
"@injectivelabs/utils": "1.0.45", "@injectivelabs/utils": "1.10.12",
"@mysten/sui.js": "0.32.2",
"@project-serum/anchor": "^0.25.0", "@project-serum/anchor": "^0.25.0",
"@solana/spl-token": "^0.3.5", "@solana/spl-token": "^0.3.5",
"@solana/web3.js": "^1.66.2", "@solana/web3.js": "^1.66.2",
"@terra-money/terra.js": "^3.1.3", "@terra-money/terra.js": "3.1.9",
"@xpla/xpla.js": "^0.2.1", "@xpla/xpla.js": "^0.2.1",
"algosdk": "^1.15.0", "algosdk": "^1.15.0",
"aptos": "^1.3.16", "aptos": "1.5.0",
"axios": "^0.24.0", "axios": "^0.24.0",
"bech32": "^2.0.0", "bech32": "^2.0.0",
"binary-parser": "^2.2.1", "binary-parser": "^2.2.1",
@ -106105,6 +106539,325 @@
"near-api-js": "^1.0.0" "near-api-js": "^1.0.0"
} }
}, },
"@cosmjs/amino": {
"version": "0.30.1",
"resolved": "https://registry.npmjs.org/@cosmjs/amino/-/amino-0.30.1.tgz",
"integrity": "sha512-yNHnzmvAlkETDYIpeCTdVqgvrdt1qgkOXwuRVi8s27UKI5hfqyE9fJ/fuunXE6ZZPnKkjIecDznmuUOMrMvw4w==",
"optional": true,
"requires": {
"@cosmjs/crypto": "^0.30.1",
"@cosmjs/encoding": "^0.30.1",
"@cosmjs/math": "^0.30.1",
"@cosmjs/utils": "^0.30.1"
}
},
"@cosmjs/crypto": {
"version": "0.30.1",
"resolved": "https://registry.npmjs.org/@cosmjs/crypto/-/crypto-0.30.1.tgz",
"integrity": "sha512-rAljUlake3MSXs9xAm87mu34GfBLN0h/1uPPV6jEwClWjNkAMotzjC0ab9MARy5FFAvYHL3lWb57bhkbt2GtzQ==",
"optional": true,
"requires": {
"@cosmjs/encoding": "^0.30.1",
"@cosmjs/math": "^0.30.1",
"@cosmjs/utils": "^0.30.1",
"@noble/hashes": "^1",
"bn.js": "^5.2.0",
"elliptic": "^6.5.4",
"libsodium-wrappers": "^0.7.6"
}
},
"@cosmjs/encoding": {
"version": "0.30.1",
"resolved": "https://registry.npmjs.org/@cosmjs/encoding/-/encoding-0.30.1.tgz",
"integrity": "sha512-rXmrTbgqwihORwJ3xYhIgQFfMSrwLu1s43RIK9I8EBudPx3KmnmyAKzMOVsRDo9edLFNuZ9GIvysUCwQfq3WlQ==",
"optional": true,
"requires": {
"base64-js": "^1.3.0",
"bech32": "^1.1.4",
"readonly-date": "^1.0.0"
},
"dependencies": {
"bech32": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz",
"integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==",
"optional": true
}
}
},
"@cosmjs/json-rpc": {
"version": "0.30.1",
"resolved": "https://registry.npmjs.org/@cosmjs/json-rpc/-/json-rpc-0.30.1.tgz",
"integrity": "sha512-pitfC/2YN9t+kXZCbNuyrZ6M8abnCC2n62m+JtU9vQUfaEtVsgy+1Fk4TRQ175+pIWSdBMFi2wT8FWVEE4RhxQ==",
"optional": true,
"requires": {
"@cosmjs/stream": "^0.30.1",
"xstream": "^11.14.0"
}
},
"@cosmjs/math": {
"version": "0.30.1",
"resolved": "https://registry.npmjs.org/@cosmjs/math/-/math-0.30.1.tgz",
"integrity": "sha512-yaoeI23pin9ZiPHIisa6qqLngfnBR/25tSaWpkTm8Cy10MX70UF5oN4+/t1heLaM6SSmRrhk3psRkV4+7mH51Q==",
"optional": true,
"requires": {
"bn.js": "^5.2.0"
}
},
"@cosmjs/proto-signing": {
"version": "0.30.1",
"resolved": "https://registry.npmjs.org/@cosmjs/proto-signing/-/proto-signing-0.30.1.tgz",
"integrity": "sha512-tXh8pPYXV4aiJVhTKHGyeZekjj+K9s2KKojMB93Gcob2DxUjfKapFYBMJSgfKPuWUPEmyr8Q9km2hplI38ILgQ==",
"optional": true,
"requires": {
"@cosmjs/amino": "^0.30.1",
"@cosmjs/crypto": "^0.30.1",
"@cosmjs/encoding": "^0.30.1",
"@cosmjs/math": "^0.30.1",
"@cosmjs/utils": "^0.30.1",
"cosmjs-types": "^0.7.1",
"long": "^4.0.0"
}
},
"@cosmjs/socket": {
"version": "0.30.1",
"resolved": "https://registry.npmjs.org/@cosmjs/socket/-/socket-0.30.1.tgz",
"integrity": "sha512-r6MpDL+9N+qOS/D5VaxnPaMJ3flwQ36G+vPvYJsXArj93BjgyFB7BwWwXCQDzZ+23cfChPUfhbINOenr8N2Kow==",
"optional": true,
"requires": {
"@cosmjs/stream": "^0.30.1",
"isomorphic-ws": "^4.0.1",
"ws": "^7",
"xstream": "^11.14.0"
}
},
"@cosmjs/stargate": {
"version": "0.30.1",
"resolved": "https://registry.npmjs.org/@cosmjs/stargate/-/stargate-0.30.1.tgz",
"integrity": "sha512-RdbYKZCGOH8gWebO7r6WvNnQMxHrNXInY/gPHPzMjbQF6UatA6fNM2G2tdgS5j5u7FTqlCI10stNXrknaNdzog==",
"optional": true,
"requires": {
"@confio/ics23": "^0.6.8",
"@cosmjs/amino": "^0.30.1",
"@cosmjs/encoding": "^0.30.1",
"@cosmjs/math": "^0.30.1",
"@cosmjs/proto-signing": "^0.30.1",
"@cosmjs/stream": "^0.30.1",
"@cosmjs/tendermint-rpc": "^0.30.1",
"@cosmjs/utils": "^0.30.1",
"cosmjs-types": "^0.7.1",
"long": "^4.0.0",
"protobufjs": "~6.11.3",
"xstream": "^11.14.0"
}
},
"@cosmjs/stream": {
"version": "0.30.1",
"resolved": "https://registry.npmjs.org/@cosmjs/stream/-/stream-0.30.1.tgz",
"integrity": "sha512-Fg0pWz1zXQdoxQZpdHRMGvUH5RqS6tPv+j9Eh7Q953UjMlrwZVo0YFLC8OTf/HKVf10E4i0u6aM8D69Q6cNkgQ==",
"optional": true,
"requires": {
"xstream": "^11.14.0"
}
},
"@cosmjs/tendermint-rpc": {
"version": "0.30.1",
"resolved": "https://registry.npmjs.org/@cosmjs/tendermint-rpc/-/tendermint-rpc-0.30.1.tgz",
"integrity": "sha512-Z3nCwhXSbPZJ++v85zHObeUggrEHVfm1u18ZRwXxFE9ZMl5mXTybnwYhczuYOl7KRskgwlB+rID0WYACxj4wdQ==",
"optional": true,
"requires": {
"@cosmjs/crypto": "^0.30.1",
"@cosmjs/encoding": "^0.30.1",
"@cosmjs/json-rpc": "^0.30.1",
"@cosmjs/math": "^0.30.1",
"@cosmjs/socket": "^0.30.1",
"@cosmjs/stream": "^0.30.1",
"@cosmjs/utils": "^0.30.1",
"axios": "^0.21.2",
"readonly-date": "^1.0.0",
"xstream": "^11.14.0"
},
"dependencies": {
"axios": {
"version": "0.21.4",
"resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz",
"integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==",
"optional": true,
"requires": {
"follow-redirects": "^1.14.0"
}
}
}
},
"@cosmjs/utils": {
"version": "0.30.1",
"resolved": "https://registry.npmjs.org/@cosmjs/utils/-/utils-0.30.1.tgz",
"integrity": "sha512-KvvX58MGMWh7xA+N+deCfunkA/ZNDvFLw4YbOmX3f/XBIkqrVY7qlotfy2aNb1kgp6h4B6Yc8YawJPDTfvWX7g==",
"optional": true
},
"@injectivelabs/sdk-ts": {
"version": "1.10.72",
"resolved": "https://registry.npmjs.org/@injectivelabs/sdk-ts/-/sdk-ts-1.10.72.tgz",
"integrity": "sha512-A5mHNNBgO4fI1c/7CZ0bGfVXliy8laP+VaYZ++aWh1YyudoZw4CTCEmLetZRy7AUU3XcfbHa8sAImRi7db+v6Q==",
"optional": true,
"requires": {
"@apollo/client": "^3.5.8",
"@cosmjs/amino": "^0.30.1",
"@cosmjs/proto-signing": "^0.30.1",
"@cosmjs/stargate": "^0.30.1",
"@ethersproject/bytes": "^5.7.0",
"@injectivelabs/core-proto-ts": "^0.0.14",
"@injectivelabs/exceptions": "^1.10.12",
"@injectivelabs/grpc-web": "^0.0.1",
"@injectivelabs/grpc-web-node-http-transport": "^0.0.2",
"@injectivelabs/grpc-web-react-native-transport": "^0.0.2",
"@injectivelabs/indexer-proto-ts": "1.10.8-rc.4",
"@injectivelabs/mito-proto-ts": "1.0.9",
"@injectivelabs/networks": "^1.10.12",
"@injectivelabs/test-utils": "^1.10.12",
"@injectivelabs/token-metadata": "^1.10.42",
"@injectivelabs/ts-types": "^1.10.12",
"@injectivelabs/utils": "^1.10.12",
"@metamask/eth-sig-util": "^4.0.0",
"axios": "^0.27.2",
"bech32": "^2.0.0",
"bip39": "^3.0.4",
"cosmjs-types": "^0.7.1",
"eth-crypto": "^2.6.0",
"ethereumjs-util": "^7.1.4",
"ethers": "^5.7.2",
"google-protobuf": "^3.21.0",
"graphql": "^16.3.0",
"http-status-codes": "^2.2.0",
"js-sha3": "^0.8.0",
"jscrypto": "^1.0.3",
"keccak256": "^1.0.6",
"link-module-alias": "^1.2.0",
"rxjs": "^7.8.0",
"secp256k1": "^4.0.3",
"shx": "^0.3.2",
"snakecase-keys": "^5.4.1"
},
"dependencies": {
"axios": {
"version": "0.27.2",
"resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz",
"integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==",
"optional": true,
"requires": {
"follow-redirects": "^1.14.9",
"form-data": "^4.0.0"
}
}
}
},
"@injectivelabs/utils": {
"version": "1.10.12",
"resolved": "https://registry.npmjs.org/@injectivelabs/utils/-/utils-1.10.12.tgz",
"integrity": "sha512-c8al79nxIJgV1cBAdW2TPDGldj/8gm5k0h5TIN/AJs8/AeIjpTwwVGfLY3QvPOpRsxuQ9CjBkTXrAcSL1wwkcw==",
"optional": true,
"requires": {
"@injectivelabs/exceptions": "^1.10.12",
"@injectivelabs/ts-types": "^1.10.12",
"axios": "^0.21.1",
"bignumber.js": "^9.0.1",
"http-status-codes": "^2.2.0",
"link-module-alias": "^1.2.0",
"shx": "^0.3.2",
"snakecase-keys": "^5.1.2",
"store2": "^2.12.0"
},
"dependencies": {
"axios": {
"version": "0.21.4",
"resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz",
"integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==",
"optional": true,
"requires": {
"follow-redirects": "^1.14.0"
}
}
}
},
"@mysten/sui.js": {
"version": "0.32.2",
"resolved": "https://registry.npmjs.org/@mysten/sui.js/-/sui.js-0.32.2.tgz",
"integrity": "sha512-/Hm4xkGolJhqj8FvQr7QSHDTlxIvL52mtbOao9f75YjrBh7y1Uh9kbJSY7xiTF1NY9sv6p5hUVlYRJuM0Hvn9A==",
"requires": {
"@mysten/bcs": "0.7.1",
"@noble/curves": "^1.0.0",
"@noble/hashes": "^1.3.0",
"@scure/bip32": "^1.3.0",
"@scure/bip39": "^1.2.0",
"@suchipi/femver": "^1.0.0",
"jayson": "^4.0.0",
"rpc-websockets": "^7.5.1",
"superstruct": "^1.0.3",
"tweetnacl": "^1.0.3"
},
"dependencies": {
"@scure/bip39": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.2.1.tgz",
"integrity": "sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg==",
"requires": {
"@noble/hashes": "~1.3.0",
"@scure/base": "~1.1.0"
}
}
}
},
"@noble/curves": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.1.0.tgz",
"integrity": "sha512-091oBExgENk/kGj3AZmtBDMpxQPDtxQABR2B9lb1JbVTs6ytdzZNwvhxQ4MWasRNEzlbEH8jCWFCwhF/Obj5AA==",
"requires": {
"@noble/hashes": "1.3.1"
}
},
"@noble/hashes": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.1.tgz",
"integrity": "sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA=="
},
"@scure/bip32": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.3.1.tgz",
"integrity": "sha512-osvveYtyzdEVbt3OfwwXFr4P2iVBL5u1Q3q4ONBfDY/UpOuXmOlbgwc1xECEboY8wIays8Yt6onaWMUdUbfl0A==",
"requires": {
"@noble/curves": "~1.1.0",
"@noble/hashes": "~1.3.1",
"@scure/base": "~1.1.0"
}
},
"aptos": {
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/aptos/-/aptos-1.5.0.tgz",
"integrity": "sha512-N7OuRtU7IYHkDkNx+4QS3g/QQGCp+36KzYn3oXPmT7Kttfuv+UKliQVdjy3cLmwd/DCQSh9ObTovwdxnHjUn0g==",
"requires": {
"@noble/hashes": "1.1.3",
"@scure/bip39": "1.1.0",
"axios": "0.27.2",
"form-data": "4.0.0",
"tweetnacl": "1.0.3"
},
"dependencies": {
"@noble/hashes": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.1.3.tgz",
"integrity": "sha512-CE0FCR57H2acVI5UOzIGSSIYxZ6v/HOhDR0Ro9VLyhnzLwx0o8W1mmgaqlEUx4049qJDlIBRztv5k+MM8vbO3A=="
},
"axios": {
"version": "0.27.2",
"resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz",
"integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==",
"requires": {
"follow-redirects": "^1.14.9",
"form-data": "^4.0.0"
}
}
}
},
"axios": { "axios": {
"version": "0.24.0", "version": "0.24.0",
"resolved": "https://registry.npmjs.org/axios/-/axios-0.24.0.tgz", "resolved": "https://registry.npmjs.org/axios/-/axios-0.24.0.tgz",
@ -106113,6 +106866,16 @@
"follow-redirects": "^1.14.4" "follow-redirects": "^1.14.4"
} }
}, },
"cosmjs-types": {
"version": "0.7.2",
"resolved": "https://registry.npmjs.org/cosmjs-types/-/cosmjs-types-0.7.2.tgz",
"integrity": "sha512-vf2uLyktjr/XVAgEq0DjMxeAWh1yYREe7AMHDKd7EiHVqxBPCaBS+qEEQUkXbR9ndnckqr1sUG8BQhazh4X5lA==",
"optional": true,
"requires": {
"long": "^4.0.0",
"protobufjs": "~6.11.2"
}
},
"fast-check": { "fast-check": {
"version": "3.10.0", "version": "3.10.0",
"resolved": "https://registry.npmjs.org/fast-check/-/fast-check-3.10.0.tgz", "resolved": "https://registry.npmjs.org/fast-check/-/fast-check-3.10.0.tgz",
@ -106122,17 +106885,75 @@
"pure-rand": "^6.0.0" "pure-rand": "^6.0.0"
} }
}, },
"jayson": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/jayson/-/jayson-4.1.0.tgz",
"integrity": "sha512-R6JlbyLN53Mjku329XoRT2zJAE6ZgOQ8f91ucYdMCD4nkGCF9kZSrcGXpHIU4jeKj58zUZke2p+cdQchU7Ly7A==",
"requires": {
"@types/connect": "^3.4.33",
"@types/node": "^12.12.54",
"@types/ws": "^7.4.4",
"commander": "^2.20.3",
"delay": "^5.0.0",
"es6-promisify": "^5.0.0",
"eyes": "^0.1.8",
"isomorphic-ws": "^4.0.1",
"json-stringify-safe": "^5.0.1",
"JSONStream": "^1.3.5",
"uuid": "^8.3.2",
"ws": "^7.4.5"
},
"dependencies": {
"@types/node": {
"version": "12.20.55",
"resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz",
"integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ=="
}
}
},
"prettier": { "prettier": {
"version": "2.8.3", "version": "2.8.3",
"resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.3.tgz", "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.3.tgz",
"integrity": "sha512-tJ/oJ4amDihPoufT5sM0Z1SKEuKay8LfVAMlbbhnnkvt6BUserZylqo2PN+p9KeljLr0OHa2rXHU1T8reeoTrw==", "integrity": "sha512-tJ/oJ4amDihPoufT5sM0Z1SKEuKay8LfVAMlbbhnnkvt6BUserZylqo2PN+p9KeljLr0OHa2rXHU1T8reeoTrw==",
"dev": true "dev": true
}, },
"protobufjs": {
"version": "6.11.3",
"resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.3.tgz",
"integrity": "sha512-xL96WDdCZYdU7Slin569tFX712BxsxslWwAfAhCYjQKGTq7dAU91Lomy6nLLhh/dyGhk/YH4TwTSRxTzhuHyZg==",
"optional": true,
"requires": {
"@protobufjs/aspromise": "^1.1.2",
"@protobufjs/base64": "^1.1.2",
"@protobufjs/codegen": "^2.0.4",
"@protobufjs/eventemitter": "^1.1.0",
"@protobufjs/fetch": "^1.1.0",
"@protobufjs/float": "^1.0.2",
"@protobufjs/inquire": "^1.1.0",
"@protobufjs/path": "^1.1.2",
"@protobufjs/pool": "^1.1.0",
"@protobufjs/utf8": "^1.1.0",
"@types/long": "^4.0.1",
"@types/node": ">=13.7.0",
"long": "^4.0.0"
}
},
"pure-rand": { "pure-rand": {
"version": "6.0.2", "version": "6.0.2",
"resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.2.tgz", "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.2.tgz",
"integrity": "sha512-6Yg0ekpKICSjPswYOuC5sku/TSWaRYlA0qsXqJgM/d/4pLPHPuTxK7Nbf7jFKzAeedUhR8C7K9Uv63FBsSo8xQ==", "integrity": "sha512-6Yg0ekpKICSjPswYOuC5sku/TSWaRYlA0qsXqJgM/d/4pLPHPuTxK7Nbf7jFKzAeedUhR8C7K9Uv63FBsSo8xQ==",
"dev": true "dev": true
},
"superstruct": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/superstruct/-/superstruct-1.0.3.tgz",
"integrity": "sha512-8iTn3oSS8nRGn+C2pgXSKPI3jmpm6FExNazNpjvqS6ZUJQCej3PUXEKM8NjHBOs54ExM+LPW/FBRhymrdcCiSg=="
},
"ws": {
"version": "7.5.9",
"resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz",
"integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==",
"requires": {}
} }
} }
}, },