diff --git a/package.json b/package.json index a1d7817..a672790 100644 --- a/package.json +++ b/package.json @@ -19,10 +19,10 @@ "devDependencies": { "@agoric/cosmic-proto": "^0.3.0", "@agoric/ertp": "^0.16.2", - "@agoric/rpc": "^0.7.2", + "@agoric/rpc": "^0.9.0", "@agoric/smart-wallet": "^0.5.3", "@agoric/ui-components": "^0.9.0", - "@agoric/web-components": "^0.13.2", + "@agoric/web-components": "^0.15.0", "@agoric/zoe": "^0.26.2", "@endo/eventual-send": "^0.17.6", "@endo/init": "^0.5.60", diff --git a/src/App.tsx b/src/App.tsx index 7202e11..1432924 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -8,6 +8,8 @@ import { INTER_LOGO } from 'assets/assets'; import { MdBarChart } from 'react-icons/md'; import { FiExternalLink } from 'react-icons/fi'; import NoticeBanner from 'components/NoticeBanner'; +import ChainConnectionErrorDialog from 'components/ChainConnectionErrorDialog'; +import NodeSelectorDialog from 'components/NodeSelectorDialog'; import 'styles/globals.css'; @@ -53,6 +55,8 @@ const App = () => { + + ); }; diff --git a/src/components/ActionsDialog.tsx b/src/components/ActionsDialog.tsx new file mode 100644 index 0000000..07a347d --- /dev/null +++ b/src/components/ActionsDialog.tsx @@ -0,0 +1,122 @@ +import { Dialog, Transition } from '@headlessui/react'; +import clsx from 'clsx'; +import { Fragment, ReactElement, useRef } from 'react'; + +type DialogAction = { + label: string; + action: () => void; +}; + +type Props = { + isOpen: boolean; + onClose: () => void; + title: string; + body: ReactElement; + primaryAction?: DialogAction; + secondaryAction?: DialogAction; + primaryActionDisabled?: boolean; + // Whether to initially focus the primary action. + initialFocusPrimary?: boolean; + overflow?: boolean; +}; + +const ActionsDialog = ({ + isOpen, + onClose, + title, + body, + primaryAction, + secondaryAction, + primaryActionDisabled = false, + initialFocusPrimary = false, + overflow = false, +}: Props) => { + const primaryButtonRef = useRef(null); + + return ( + + + +
+ +
+
+ + + + {title} + +
{body}
+
+
+ {secondaryAction && ( + + )} + {primaryAction && ( + + )} +
+
+
+
+
+
+
+
+ ); +}; + +export default ActionsDialog; diff --git a/src/components/ChainConnection.tsx b/src/components/ChainConnection.tsx index 6a01c44..0a250b2 100644 --- a/src/components/ChainConnection.tsx +++ b/src/components/ChainConnection.tsx @@ -17,8 +17,12 @@ import { termsIndexAgreedUponAtom, smartWalletProvisionedAtom, provisionToastIdAtom, - ChainConnection as ChainConnectionStore, networkConfigPAtom, + rpcNodeAtom, + apiNodeAtom, + chainConnectionErrorAtom, + savedApiNodeAtom, + savedRpcNodeAtom, } from 'store/app'; import { watchContract, @@ -32,26 +36,29 @@ import { makeAgoricChainStorageWatcher } from '@agoric/rpc'; import { sample } from 'lodash-es'; import ProvisionSmartWalletDialog from './ProvisionSmartWalletDialog'; import { querySwingsetParams } from 'utils/swingsetParams'; +import { loadable } from 'jotai/utils'; import 'react-toastify/dist/ReactToastify.css'; import 'styles/globals.css'; -import { loadable } from 'jotai/utils'; +import SettingsButton from './SettingsButton'; const autoCloseDelayMs = 7000; -const useSmartWalletFeeQuery = ( - chainConnection: ChainConnectionStore | null -) => { +const useSmartWalletFeeQuery = () => { const [smartWalletFee, setFee] = useState(null); - const [error, setError] = useState(null); + const [error, setError] = useState(null); + const networkConfig = useAtomValue(loadable(networkConfigPAtom)); useEffect(() => { - const fetchParams = async () => { - assert(chainConnection); + if (networkConfig.state === 'loading') { + return; + } + if (networkConfig.state === 'hasError') { + setError(networkConfig.error); + } + const fetchParams = async (rpc: string) => { try { - const params = await querySwingsetParams( - chainConnection.watcher.rpcAddr - ); + const params = await querySwingsetParams(rpc); console.debug('swingset params', params); setFee(BigInt(params.params.powerFlagFees[0].fee[0].amount)); } catch (e: any) { @@ -59,10 +66,15 @@ const useSmartWalletFeeQuery = ( } }; - if (chainConnection) { - fetchParams(); + if (networkConfig.state === 'hasData') { + const rpc = sample(networkConfig.data.rpcAddrs); + if (!rpc) { + setError('No RPC available in network config'); + } else { + fetchParams(rpc); + } } - }, [chainConnection]); + }, [networkConfig]); return { smartWalletFee, error }; }; @@ -85,8 +97,14 @@ const ChainConnection = () => { const [isTermsDialogOpen, setIsTermsDialogOpen] = useState(false); const [isProvisionDialogOpen, setIsProvisionDialogOpen] = useState(false); const { smartWalletFee, error: smartWalletFeeError } = - useSmartWalletFeeQuery(chainConnection); + useSmartWalletFeeQuery(); const networkConfig = useAtomValue(loadable(networkConfigPAtom)); + const setRpcNode = useSetAtom(rpcNodeAtom); + const setApiNode = useSetAtom(apiNodeAtom); + const setChainConnectionError = useSetAtom(chainConnectionErrorAtom); + const savedApi = useAtomValue(savedApiNodeAtom); + const savedRpc = useAtomValue(savedRpcNodeAtom); + const areLatestTermsAgreed = termsAgreed === currentTermsIndex; const handleTermsDialogClose = () => { @@ -138,18 +156,11 @@ const ChainConnection = () => { (err: Error) => console.error('got watchPurses err', err) ); - watchContract( - chainConnection.watcher, - { - setMetricsIndex, - setGovernedParamsIndex, - setInstanceIds, - }, - () => - toast.error( - 'Error reading contract data from chain. See debug console for more info.' - ) - ); + watchContract(chainConnection.watcher, { + setMetricsIndex, + setGovernedParamsIndex, + setInstanceIds, + }); }, [ chainConnection, mergeBrandToInfo, @@ -180,17 +191,22 @@ const ChainConnection = () => { if (networkConfig.state === 'hasError') { throw new Error(Errors.networkConfig); } + const config = networkConfig.data; - const rpc = sample(config.rpcAddrs); - if (!rpc) { + const rpc = savedRpc || sample(config.rpcAddrs); + const api = savedApi || sample(config.apiAddrs); + const chainId = config.chainName; + + if (!rpc || !api || !chainId) { throw new Error(Errors.networkConfig); } - const chainId = config.chainName; - const watcher = makeAgoricChainStorageWatcher(rpc, chainId, e => { + setRpcNode(rpc); + setApiNode(api); + const watcher = makeAgoricChainStorageWatcher(api, chainId, e => { console.error(e); - throw e; + setChainConnectionError(e); }); - const connection = await makeAgoricWalletConnection(watcher); + const connection = await makeAgoricWalletConnection(watcher, rpc); setChainConnection({ ...connection, watcher, @@ -208,7 +224,7 @@ const ChainConnection = () => { toast.error('Network not found.'); break; default: - toast.error('Error connecting to network:' + e.message); + setChainConnectionError(e); break; } } finally { @@ -219,7 +235,16 @@ const ChainConnection = () => { if (connectionInProgress) { connect(); } - }, [connectionInProgress, networkConfig, setChainConnection]); + }, [ + connectionInProgress, + networkConfig, + savedApi, + savedRpc, + setApiNode, + setChainConnection, + setChainConnectionError, + setRpcNode, + ]); const status = (() => { if (connectionInProgress) { @@ -232,6 +257,7 @@ const ChainConnection = () => { return (
+
diff --git a/src/components/ChainConnectionErrorDialog.tsx b/src/components/ChainConnectionErrorDialog.tsx new file mode 100644 index 0000000..99cea36 --- /dev/null +++ b/src/components/ChainConnectionErrorDialog.tsx @@ -0,0 +1,90 @@ +import { useEffect, useState } from 'react'; +import { + rpcNodeAtom, + isNodeSelectorOpenAtom, + chainConnectionErrorAtom, + apiNodeAtom, +} from 'store/app'; +import { useAtomValue, useSetAtom } from 'jotai'; +import ActionsDialog from './ActionsDialog'; + +const ChainConnectionErrorDialog = () => { + const chainConnectionError = useAtomValue(chainConnectionErrorAtom); + const apiNode = useAtomValue(apiNodeAtom); + const setIsNodeSelectorOpen = useSetAtom(isNodeSelectorOpenAtom); + const rpcNode = useAtomValue(rpcNodeAtom); + const [isShowing, setIsShowing] = useState(false); + + useEffect(() => { + if (chainConnectionError) { + setIsShowing(true); + } + }, [chainConnectionError]); + + const body = ( +
+

+ There was an issue connecting to the chain - likely due to RPC node + issues. We are working to resolve it with our RPC providers. Please + check back in a couple of hours. +

+ {apiNode && ( +

+ API Endpoint:{' '} + + {apiNode} + +

+ )} + {rpcNode && ( +

+ RPC Endpoint:{' '} + + {rpcNode} + +

+ )} +

+ Details:{' '} + {chainConnectionError?.toString()} +

+
+ ); + + return ( + { + setIsShowing(false); + setIsNodeSelectorOpen(true); + }, + label: 'Connection Settings', + }} + secondaryAction={{ + action: () => { + setIsShowing(false); + }, + label: 'Dismiss', + }} + onClose={() => { + setIsShowing(false); + }} + initialFocusPrimary + /> + ); +}; + +export default ChainConnectionErrorDialog; diff --git a/src/components/Combobox.tsx b/src/components/Combobox.tsx new file mode 100644 index 0000000..473601d --- /dev/null +++ b/src/components/Combobox.tsx @@ -0,0 +1,78 @@ +import { Combobox as HeadlessComboBox, Transition } from '@headlessui/react'; +import { Fragment, useCallback, useState } from 'react'; +import { FiChevronDown } from 'react-icons/fi'; + +const Combobox = ({ + options, + value, + onValueChange, +}: { + options: string[]; + value?: string; + onValueChange: (newValue: string) => void; +}) => { + const [query, setQuery] = useState(''); + + const filteredOptions = + query === '' + ? options + : options.filter(option => { + return option.includes(query); + }); + + const onInputChange = useCallback( + (newValue: string) => { + setQuery(newValue); + }, + [setQuery] + ); + + const optionClasses = ({ active }: { active: boolean }) => + `relative cursor-pointer select-none py-2 pl-4 pr-4 text-gray-900 hover:bg-gray-100 ${ + active && 'bg-black bg-opacity-5' + }`; + + return ( + +
+
+ onInputChange(event.target.value)} + /> + + +
+ + + {filteredOptions?.map(option => ( + + {option} + + ))} + {query && !options.includes(query) && ( + + Add "{query}" + + )} + + +
+
+ ); +}; + +export default Combobox; diff --git a/src/components/NetworkDropdown.tsx b/src/components/NetworkDropdown.tsx index 7a36fa7..ad97cc8 100644 --- a/src/components/NetworkDropdown.tsx +++ b/src/components/NetworkDropdown.tsx @@ -1,8 +1,12 @@ import { Fragment, MouseEventHandler } from 'react'; import { Menu, Transition } from '@headlessui/react'; -import { useAtom } from 'jotai'; +import { useAtom, useSetAtom } from 'jotai'; import { FiChevronDown } from 'react-icons/fi'; -import { networkConfigAtom } from 'store/app'; +import { + networkConfigAtom, + savedApiNodeAtom, + savedRpcNodeAtom, +} from 'store/app'; import { networkConfigs } from 'config'; const Item = ({ @@ -32,12 +36,16 @@ const Item = ({ const NetworkDropdown = () => { const [networkConfig, setNetworkConfig] = useAtom(networkConfigAtom); + const setSavedApi = useSetAtom(savedApiNodeAtom); + const setSavedRpc = useSetAtom(savedRpcNodeAtom); const items = Object.values(networkConfigs).map(config => ( { setNetworkConfig(config); + setSavedApi(undefined); + setSavedRpc(undefined); window.location.reload(); }} label={config.label} diff --git a/src/components/NodeSelectorDialog.tsx b/src/components/NodeSelectorDialog.tsx new file mode 100644 index 0000000..a97b1c8 --- /dev/null +++ b/src/components/NodeSelectorDialog.tsx @@ -0,0 +1,109 @@ +import { + apiNodeAtom, + isNodeSelectorOpenAtom, + networkConfigPAtom, + rpcNodeAtom, + savedApiNodeAtom, + savedRpcNodeAtom, +} from 'store/app'; +import { useAtom, useAtomValue, useSetAtom } from 'jotai'; +import ActionsDialog from './ActionsDialog'; +import Combobox from './Combobox'; +import { useEffect, useState } from 'react'; +import { loadable } from 'jotai/utils'; + +const useRpcAddrs = () => { + const [rpcAddrs, setRpcAddrs] = useState([]); + const [apiAddrs, setApiAddrs] = useState([]); + const networkConfig = useAtomValue(loadable(networkConfigPAtom)); + + useEffect(() => { + if (networkConfig.state === 'hasData') { + const { rpcAddrs, apiAddrs } = networkConfig.data; + setRpcAddrs(rpcAddrs); + setApiAddrs(apiAddrs); + } + }, [networkConfig]); + + return { rpcAddrs, apiAddrs }; +}; + +const NodeSelectorDialog = () => { + const [isOpen, setIsOpen] = useAtom(isNodeSelectorOpenAtom); + const { rpcAddrs, apiAddrs } = useRpcAddrs(); + const currentActiveApi = useAtomValue(apiNodeAtom); + const currentActiveRpc = useAtomValue(rpcNodeAtom); + const [selectedApi, setSelectedApi] = useState(currentActiveApi); + const [selectedRpc, setSelectedRpc] = useState(currentActiveRpc); + const [initialApi, setInitialApi] = useState(currentActiveApi); + const [initialRpc, setInitialRpc] = useState(currentActiveRpc); + const setSavedRpc = useSetAtom(savedRpcNodeAtom); + const setSavedApi = useSetAtom(savedApiNodeAtom); + + const save = () => { + assert(selectedApi && selectedRpc); + setSavedApi(selectedApi); + setSavedRpc(selectedRpc); + setIsOpen(false); + window.location.reload(); + }; + + useEffect(() => { + if (isOpen) { + setSelectedRpc(currentActiveRpc); + setSelectedApi(currentActiveApi); + setInitialRpc(currentActiveRpc); + setInitialApi(currentActiveApi); + } + }, [isOpen, currentActiveRpc, currentActiveApi]); + + const body = ( +
+

RPC Endpoint:

+ { + setSelectedRpc(value); + }} + value={selectedRpc} + options={rpcAddrs} + /> +

API Endpoint:

+ { + setSelectedApi(value); + }} + value={selectedApi} + options={apiAddrs} + /> +
+ ); + + return ( + { + setIsOpen(false); + }, + label: 'Cancel', + }} + onClose={() => { + setIsOpen(false); + }} + initialFocusPrimary + overflow + primaryActionDisabled={ + !(selectedApi && selectedRpc) || + (initialApi === selectedApi && initialRpc === selectedRpc) + } + /> + ); +}; + +export default NodeSelectorDialog; diff --git a/src/components/SettingsButton.tsx b/src/components/SettingsButton.tsx new file mode 100644 index 0000000..17e4c32 --- /dev/null +++ b/src/components/SettingsButton.tsx @@ -0,0 +1,24 @@ +import { useSetAtom } from 'jotai'; +import { useCallback } from 'react'; +import { HiOutlineCog } from 'react-icons/hi'; +import { isNodeSelectorOpenAtom } from 'store/app'; + +const SettingsButton = () => { + const setIsNodeSelectorOpen = useSetAtom(isNodeSelectorOpenAtom); + + const onClick = useCallback(() => { + setIsNodeSelectorOpen(true); + }, [setIsNodeSelectorOpen]); + + return ( + + ); +}; + +export default SettingsButton; diff --git a/src/store/app.ts b/src/store/app.ts index 4be56a8..d8902fa 100644 --- a/src/store/app.ts +++ b/src/store/app.ts @@ -74,3 +74,32 @@ export const previewEnabledAtom = atom(_get => false); export const provisionToastIdAtom = atom(undefined); export const smartWalletProvisionedAtom = atom(undefined); + +export const chainConnectionErrorInternalAtom = atom(null); + +export const chainConnectionErrorAtom = atom( + get => get(chainConnectionErrorInternalAtom), + (get, set, error: Error) => { + if (get(chainConnectionErrorInternalAtom) === null) { + set(chainConnectionErrorInternalAtom, error); + } + } +); + +// Currently used rpc node. +export const rpcNodeAtom = atom(undefined); + +export const apiNodeAtom = atom(undefined); + +export const isNodeSelectorOpenAtom = atom(false); + +// If the user selected a node in the node selector, we save that choice here. +export const savedRpcNodeAtom = atomWithStorage( + 'savedRpcNode', + undefined +); + +export const savedApiNodeAtom = atomWithStorage( + 'savedApiNode', + undefined +); diff --git a/src/utils/networkConfig.ts b/src/utils/networkConfig.ts index 5f5654b..e126115 100644 --- a/src/utils/networkConfig.ts +++ b/src/utils/networkConfig.ts @@ -8,6 +8,7 @@ type NetworkNotice = { export type MinimalNetworkConfig = { rpcAddrs: string[]; + apiAddrs: string[]; chainName: string; notices?: NetworkNotice[]; }; diff --git a/src/utils/updates.ts b/src/utils/updates.ts index 02a1696..2fd7a3e 100644 --- a/src/utils/updates.ts +++ b/src/utils/updates.ts @@ -27,8 +27,7 @@ type GovernedParamsData = { const watchGovernance = async ( watcher: ChainStorageWatcher, setGovernedParamsIndex: ContractSetters['setGovernedParamsIndex'], - anchorPetname: string, - onErr: (err: string) => void + anchorPetname: string ) => { // E.g. 'published.psm.IST.AUSD.governance' const spec = dappConfig.INSTANCE_PREFIX + anchorPetname + '.governance'; @@ -44,16 +43,14 @@ const watchGovernance = async ( setGovernedParamsIndex([ [anchorPetname, { giveMintedFee, mintLimit, wantMintedFee }], ]); - }, - onErr + } ); }; const watchMetrics = async ( watcher: ChainStorageWatcher, setMetricsIndex: ContractSetters['setMetricsIndex'], - anchorPetname: string, - onErr: (err: string) => void + anchorPetname: string ) => { // E.g. 'published.psm.IST.AUSD.metrics' const spec = dappConfig.INSTANCE_PREFIX + anchorPetname + '.metrics'; @@ -63,15 +60,13 @@ const watchMetrics = async ( value => { console.debug('got metrics', value); setMetricsIndex([[anchorPetname, value]]); - }, - onErr + } ); }; const watchInstanceIds = async ( watcher: ChainStorageWatcher, - setters: ContractSetters, - onErr: (err: string) => void + setters: ContractSetters ) => { const watchedAnchors = new Set(); @@ -97,30 +92,15 @@ const watchInstanceIds = async ( if (!watchedAnchors.has(anchorPetname)) { watchedAnchors.add(anchorPetname); - watchMetrics(watcher, setters.setMetricsIndex, anchorPetname, err => { - console.error('Error watching metrics for', anchorPetname, err); - onErr(err); - }); + watchMetrics(watcher, setters.setMetricsIndex, anchorPetname); watchGovernance( watcher, setters.setGovernedParamsIndex, - anchorPetname, - err => { - console.error( - 'Error watching governance for', - anchorPetname, - err - ); - onErr(err); - } + anchorPetname ); } }); - }, - err => { - console.error('Error watching instance ids', err); - onErr(err); } ); }; @@ -133,10 +113,9 @@ declare type ContractSetters = { export const watchContract = async ( watcher: ChainStorageWatcher, - setters: ContractSetters, - onErr: (err: string) => void + setters: ContractSetters ) => { - watchInstanceIds(watcher, setters, onErr); + watchInstanceIds(watcher, setters); }; export const watchPurses = async ( diff --git a/yarn.lock b/yarn.lock index 9a11d3a..b0e37d0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -31,6 +31,11 @@ resolved "https://registry.yarnpkg.com/@agoric/assert/-/assert-0.6.0.tgz#43ede53cf0943f3e9038f597f776e52500446e41" integrity sha512-bpY9ul5egbVlmdf9RtDfxh1WQaDSOCzqcAxyqE771rbkv+QYs46oZc4oUVHi7wt3g5LVXj/JsKgLkJEKpEl1BA== +"@agoric/assert@^0.6.1-u11wf.0": + version "0.6.1-u11wf.0" + resolved "https://registry.yarnpkg.com/@agoric/assert/-/assert-0.6.1-u11wf.0.tgz#742ae27103547b41cdbb3f17c4f09922a2d639e2" + integrity sha512-z/uq9ZkWWsBwMYLWg/X4AxEWwKv7HYU+0dCM98SZW8REK5BPhF/Vy9u0AuFLP8kwPdpp7WroYOSIVZ6xhLz0TQ== + "@agoric/babel-generator@^7.17.4", "@agoric/babel-generator@^7.17.6": version "7.17.6" resolved "https://registry.yarnpkg.com/@agoric/babel-generator/-/babel-generator-7.17.6.tgz#75ff4629468a481d670b4154bcfade11af6de674" @@ -83,6 +88,26 @@ "@endo/promise-kit" "^0.2.56" node-fetch "^2.6.0" +"@agoric/casting@^0.4.3-u13.0": + version "0.4.3-u13.0" + resolved "https://registry.yarnpkg.com/@agoric/casting/-/casting-0.4.3-u13.0.tgz#34c3df62e2455e139f548915190616771e57c9e1" + integrity sha512-c9Y9jaJ3w6oEl/6FUCA8TZnrLZEV6Lv9tn1g4of6H09EN0CBgSTqLqON+WV8Tobs3pxglYLGNJnT8DefOu0lBA== + dependencies: + "@agoric/internal" "^0.4.0-u13.0" + "@agoric/notifier" "^0.6.3-u13.0" + "@agoric/spawner" "^0.6.9-u13.0" + "@agoric/store" "^0.9.3-u13.0" + "@cosmjs/encoding" "^0.30.1" + "@cosmjs/proto-signing" "^0.30.1" + "@cosmjs/stargate" "^0.30.1" + "@cosmjs/tendermint-rpc" "^0.30.1" + "@endo/far" "0.2.18" + "@endo/init" "0.5.56" + "@endo/lockdown" "0.1.28" + "@endo/marshal" "0.8.5" + "@endo/promise-kit" "0.2.56" + node-fetch "^2.6.0" + "@agoric/cosmic-proto@^0.3.0": version "0.3.0" resolved "https://registry.yarnpkg.com/@agoric/cosmic-proto/-/cosmic-proto-0.3.0.tgz#c9d31d3946c91fbb1630f89d8ba63a662bcdacc5" @@ -195,6 +220,20 @@ anylogger "^0.21.0" jessie.js "^0.3.2" +"@agoric/internal@^0.4.0-u13.0": + version "0.4.0-u13.0" + resolved "https://registry.yarnpkg.com/@agoric/internal/-/internal-0.4.0-u13.0.tgz#ae20303d3e06206debab23f3ce6010bc939a39cb" + integrity sha512-gMl89J2DPorGfsVudaSh5UG7ddWvOA8Y6BUoB1CKOv4ronMFZmjoJwgDQCm24n5FW60T7g31U6xpHHBAklRpWQ== + dependencies: + "@agoric/zone" "^0.2.3-u13.0" + "@endo/far" "0.2.18" + "@endo/marshal" "0.8.5" + "@endo/patterns" "0.2.2" + "@endo/promise-kit" "0.2.56" + "@endo/stream" "0.3.25" + anylogger "^0.21.0" + jessie.js "^0.3.2" + "@agoric/notifier@^0.6.2": version "0.6.2" resolved "https://registry.yarnpkg.com/@agoric/notifier/-/notifier-0.6.2.tgz#d32404671a042267321ef5df7cf5ce0f16d3e777" @@ -225,12 +264,29 @@ "@endo/marshal" "^0.8.5" "@endo/promise-kit" "^0.2.56" -"@agoric/rpc@^0.7.2": - version "0.7.2" - resolved "https://registry.yarnpkg.com/@agoric/rpc/-/rpc-0.7.2.tgz#6aff2222a257a7cfc444304a1d23002f88b34b5c" - integrity sha512-U0KpMj4olVmMjWQdABi8MGnfw8LYjIAcbeKXl1HUaRn3kU5ow7oQDWvtE+e5/j7zwZi+4aVDJbUrmyypaLSCjQ== +"@agoric/notifier@^0.6.3-u13.0": + version "0.6.3-u13.0" + resolved "https://registry.yarnpkg.com/@agoric/notifier/-/notifier-0.6.3-u13.0.tgz#fe9bfd05dd3bb2af459ef44e231ddacc995c4cf8" + integrity sha512-H/DOZ6KY/c+k+aWAT0vOnlO+vtSJlO7XKK8TMDImxExzRNZ0AXyTHVfLgPBmoUaqCxx6d9tupN7Do25PBvvPHg== + dependencies: + "@agoric/assert" "^0.6.1-u11wf.0" + "@agoric/internal" "^0.4.0-u13.0" + "@agoric/store" "^0.9.3-u13.0" + "@agoric/swing-store" "^0.9.2-u13.0" + "@agoric/swingset-vat" "^0.32.3-u13.0" + "@agoric/vat-data" "^0.5.3-u13.0" + "@endo/far" "0.2.18" + "@endo/marshal" "0.8.5" + "@endo/promise-kit" "0.2.56" + +"@agoric/rpc@^0.9.0": + version "0.9.0" + resolved "https://registry.yarnpkg.com/@agoric/rpc/-/rpc-0.9.0.tgz#bf43046fa855b666089797315af1085cb84d44a6" + integrity sha512-mJ7akVnEC/Gu0Gc/X0+NrVZ3/SC5QawcrWjyTkIBGZ+2geEmyPQ9euAEJ3Luq3cmcqi2XxF2NEHzU/0VU0SKng== dependencies: "@endo/marshal" "^0.8.9" + axios "^1.6.2" + axios-retry "^4.0.0" vite "^4.3.2" vite-tsconfig-paths "^4.2.0" @@ -273,6 +329,16 @@ "@endo/import-bundle" "^0.3.4" "@endo/marshal" "^0.8.5" +"@agoric/spawner@^0.6.9-u13.0": + version "0.6.9-u13.0" + resolved "https://registry.yarnpkg.com/@agoric/spawner/-/spawner-0.6.9-u13.0.tgz#d1754c9abe392458b5050bd178c1a6d8163d08b5" + integrity sha512-gVlb5S3tEfHe9KByrrbhDipUjYaeGq7W1VQQWMSf6pNHTbnXLGHX3My9QyYvetcHreMA8AJpXqqi29eq9YoiWw== + dependencies: + "@agoric/assert" "^0.6.1-u11wf.0" + "@endo/eventual-send" "0.17.2" + "@endo/import-bundle" "0.3.4" + "@endo/marshal" "0.8.5" + "@agoric/store@0.9.3-dev-9f085d3.0+9f085d3": version "0.9.3-dev-9f085d3.0" resolved "https://registry.yarnpkg.com/@agoric/store/-/store-0.9.3-dev-9f085d3.0.tgz#6b5efa3a17c036fa1c111c35e6fc3c4ddde2d9b8" @@ -316,6 +382,17 @@ "@endo/promise-kit" "^0.2.56" "@fast-check/ava" "^1.1.3" +"@agoric/store@^0.9.3-u13.0": + version "0.9.3-u13.0" + resolved "https://registry.yarnpkg.com/@agoric/store/-/store-0.9.3-u13.0.tgz#74cb56021aaa7ab137400dfe2652e2f278f421e2" + integrity sha512-ec7dCFWdhrEOSIolrGCzb6E/Pqd1q6trNkl16v/TLR0xt7FS903TfexX4kDJqYIgw0KrFS0QgXu+odcB2kpQCw== + dependencies: + "@agoric/assert" "^0.6.1-u11wf.0" + "@endo/exo" "0.2.2" + "@endo/marshal" "0.8.5" + "@endo/pass-style" "0.1.3" + "@endo/patterns" "0.2.2" + "@agoric/swing-store@^0.9.1": version "0.9.1" resolved "https://registry.yarnpkg.com/@agoric/swing-store/-/swing-store-0.9.1.tgz#0ed85beac7a7cd2e8e7507ea58e50eecb08a203e" @@ -342,6 +419,19 @@ "@endo/nat" "^4.1.27" better-sqlite3 "^8.2.0" +"@agoric/swing-store@^0.9.2-u13.0": + version "0.9.2-u13.0" + resolved "https://registry.yarnpkg.com/@agoric/swing-store/-/swing-store-0.9.2-u13.0.tgz#f3150afc7de49488a98ccd23456a804ddbdb6e09" + integrity sha512-sJJlQ3HdGwZOFjIQBXW+LWDnFURzo5EYh0F9td7AYmQEZ1ZmlooH2pj0/ypGuC0r4O8eupmAQLqKQsXPSiDdeA== + dependencies: + "@agoric/assert" "^0.6.1-u11wf.0" + "@agoric/internal" "^0.4.0-u13.0" + "@endo/base64" "0.2.31" + "@endo/bundle-source" "2.5.2-upstream-rollup" + "@endo/check-bundle" "0.2.18" + "@endo/nat" "4.1.27" + better-sqlite3 "^8.2.0" + "@agoric/swingset-liveslots@^0.10.2": version "0.10.2" resolved "https://registry.yarnpkg.com/@agoric/swingset-liveslots/-/swingset-liveslots-0.10.2.tgz#a8d18f32ff7a611b9945f4ff920b00b9e2801e08" @@ -378,6 +468,25 @@ "@endo/patterns" "^0.2.2" "@endo/promise-kit" "^0.2.56" +"@agoric/swingset-liveslots@^0.10.3-u13.0": + version "0.10.3-u13.0" + resolved "https://registry.yarnpkg.com/@agoric/swingset-liveslots/-/swingset-liveslots-0.10.3-u13.0.tgz#55f0e02e1cdc214068bd948fb421c980b38804bd" + integrity sha512-csSD/nPwfOC5tgqN+e4TKFidFI3pHRQjo3WRMgeduU5+NIHEMcIyXHFLyQvuLTRhfb/5b81T8imubr5hN6itzw== + dependencies: + "@agoric/assert" "^0.6.1-u11wf.0" + "@agoric/internal" "^0.4.0-u13.0" + "@agoric/store" "^0.9.3-u13.0" + "@agoric/vat-data" "^0.5.3-u13.0" + "@endo/eventual-send" "0.17.2" + "@endo/exo" "0.2.2" + "@endo/far" "0.2.18" + "@endo/init" "0.5.56" + "@endo/marshal" "0.8.5" + "@endo/nat" "4.1.27" + "@endo/pass-style" "0.1.3" + "@endo/patterns" "0.2.2" + "@endo/promise-kit" "0.2.56" + "@agoric/swingset-vat@^0.32.2": version "0.32.2" resolved "https://registry.yarnpkg.com/@agoric/swingset-vat/-/swingset-vat-0.32.2.tgz#5228855132ab2701223316d86eeaef410ec6b4b6" @@ -448,6 +557,42 @@ semver "^6.3.0" tmp "^0.2.1" +"@agoric/swingset-vat@^0.32.3-u13.0": + version "0.32.3-u13.0" + resolved "https://registry.yarnpkg.com/@agoric/swingset-vat/-/swingset-vat-0.32.3-u13.0.tgz#224c02d744009a550e6162307b8adc11a4b23a9c" + integrity sha512-UY/N9QcJO3VRNC3xKoWxl81TQKbtcuXLmY+A1DgoHqdCBWxzmgSZXAVfRhAloWZUzkTIrYHV4sFpx2ewijdj9A== + dependencies: + "@agoric/assert" "^0.6.1-u11wf.0" + "@agoric/internal" "^0.4.0-u13.0" + "@agoric/store" "^0.9.3-u13.0" + "@agoric/swing-store" "^0.9.2-u13.0" + "@agoric/swingset-liveslots" "^0.10.3-u13.0" + "@agoric/swingset-xsnap-supervisor" "^0.10.3-u13.0" + "@agoric/time" "^0.3.3-u13.0" + "@agoric/vat-data" "^0.5.3-u13.0" + "@agoric/xsnap" "^0.14.3-u13.0" + "@agoric/xsnap-lockdown" "^0.14.1-u13.0" + "@endo/base64" "0.2.31" + "@endo/bundle-source" "2.5.2-upstream-rollup" + "@endo/captp" "3.1.1" + "@endo/check-bundle" "0.2.18" + "@endo/compartment-mapper" "0.8.4" + "@endo/eventual-send" "0.17.2" + "@endo/far" "0.2.18" + "@endo/import-bundle" "0.3.4" + "@endo/init" "0.5.56" + "@endo/marshal" "0.8.5" + "@endo/nat" "4.1.27" + "@endo/promise-kit" "0.2.56" + "@endo/ses-ava" "0.2.40" + "@endo/zip" "0.2.31" + ansi-styles "^6.2.1" + anylogger "^0.21.0" + import-meta-resolve "^2.2.1" + microtime "^3.1.0" + semver "^6.3.0" + tmp "^0.2.1" + "@agoric/swingset-xsnap-supervisor@^0.10.2": version "0.10.2" resolved "https://registry.yarnpkg.com/@agoric/swingset-xsnap-supervisor/-/swingset-xsnap-supervisor-0.10.2.tgz#09f067695b0ea6ebfeb6ea200cc7f1675f0f8939" @@ -458,7 +603,12 @@ resolved "https://registry.yarnpkg.com/@agoric/swingset-xsnap-supervisor/-/swingset-xsnap-supervisor-0.10.3-u11.0.tgz#02986bb02559aa306dfa0aa1caa44800e43ffb79" integrity sha512-qywp+c1A7tzonLMfo3m2hjSldRSegwfAgs+E5Bv71Ciu/kbGnJlJlf1Tp9HzbCD8vCBBQQm6/sU+tcLjjOqr6A== -"@agoric/time@0.3.3-dev-97cb715.0", "@agoric/time@^0.3.2", "@agoric/time@^0.3.3-u11.0": +"@agoric/swingset-xsnap-supervisor@^0.10.3-u13.0": + version "0.10.3-u13.0" + resolved "https://registry.yarnpkg.com/@agoric/swingset-xsnap-supervisor/-/swingset-xsnap-supervisor-0.10.3-u13.0.tgz#83c7744c28b0093a93ef1dbdf3e3c7244dbf5265" + integrity sha512-gEIOlyLd34JZkVRPWq9982Eu7G4ggE6H3I3RueO9JbbhOXwU+irYL922t0Ztdjc9aJW2H5f78ukcn9j1SZmtHQ== + +"@agoric/time@0.3.3-dev-97cb715.0", "@agoric/time@^0.3.2", "@agoric/time@^0.3.3-u11.0", "@agoric/time@^0.3.3-u13.0": version "0.3.3-dev-97cb715.0" resolved "https://registry.yarnpkg.com/@agoric/time/-/time-0.3.3-dev-97cb715.0.tgz#c581e442fbab62ef6f5760c73c0916cb16f72230" integrity sha512-SsrZTfb74JCdTg6ifLYgrVuULcjafFnlBxBJ6/EJnC/lEPx0GAnv5Oe6j9bsRxXbMWp6SjkNo0YqhjbrlbyziQ== @@ -497,6 +647,15 @@ "@agoric/internal" "^0.3.3-u11.0" "@agoric/store" "^0.9.3-u11.0" +"@agoric/vat-data@^0.5.3-u13.0": + version "0.5.3-u13.0" + resolved "https://registry.yarnpkg.com/@agoric/vat-data/-/vat-data-0.5.3-u13.0.tgz#a784c4624b8cb10d153bdd137e0f3886af2760f8" + integrity sha512-snvf48nRaqZqSR/jyYPk4Lc4dW+b2mSIwtQA1tevx4rQtY2u6vlbAPSKBwJsA2gbRyUaGvo2Wc8oBGOFlww2Xg== + dependencies: + "@agoric/assert" "^0.6.1-u11wf.0" + "@agoric/internal" "^0.4.0-u13.0" + "@agoric/store" "^0.9.3-u13.0" + "@agoric/vats@^0.15.1": version "0.15.1" resolved "https://registry.yarnpkg.com/@agoric/vats/-/vats-0.15.1.tgz#95d43742d5375b2c0718b5f899fb7eb87aaa3b7b" @@ -539,14 +698,14 @@ eslint-plugin-eslint-comments "^3.1.2" import-meta-resolve "^2.2.1" -"@agoric/web-components@^0.13.2": - version "0.13.2" - resolved "https://registry.yarnpkg.com/@agoric/web-components/-/web-components-0.13.2.tgz#5bb6c43892269a2852371216cb19f7179652fb64" - integrity sha512-2Vd6t72lNkJv8Yv6EJFid77YpNgBicFR8AqsKu25Y4puBu9j+RqpkUFuPVjmzpecsCLQmWi1GUSDRNJE4HVPNQ== +"@agoric/web-components@^0.15.0": + version "0.15.0" + resolved "https://registry.yarnpkg.com/@agoric/web-components/-/web-components-0.15.0.tgz#477317ccf9e0c967ff394add7efaca63546026ce" + integrity sha512-G1hl0NSgOuXE+9+SsyUpCHubhFJsrmFO7zo832EeJDUcO5d/V4M0YyrtIwFHKR2bH+IUl7JouasDO4fYEE8WYA== dependencies: "@agoric/assert" "^0.6.0" "@agoric/cache" "^0.3.2" - "@agoric/casting" "^0.4.2" + "@agoric/casting" "^0.4.3-u13.0" "@agoric/ertp" "^0.16.2" "@agoric/notifier" "^0.6.3-dev-8c14632.0" "@agoric/smart-wallet" "^0.5.3" @@ -568,7 +727,12 @@ resolved "https://registry.yarnpkg.com/@agoric/xsnap-lockdown/-/xsnap-lockdown-0.14.0.tgz#0c605bbd08e6ccf1954a615dbce7d4c0fe578a32" integrity sha512-T8kYrW1baTDQTkQJ9mDp1ME2Ive3RNNRFU7PXuu60Pu9A/tWliYKiJWwqcGhYAQOkHxxFz0BVwk9Jf8HErzgRA== -"@agoric/xsnap@0.14.3-dev-9f085d3.0", "@agoric/xsnap@^0.14.2", "@agoric/xsnap@^0.14.3-u11.0": +"@agoric/xsnap-lockdown@^0.14.1-u13.0": + version "0.14.1-u13.0" + resolved "https://registry.yarnpkg.com/@agoric/xsnap-lockdown/-/xsnap-lockdown-0.14.1-u13.0.tgz#0bc11a4d19d02a77cd9158dda3877c2ddc1ef8d4" + integrity sha512-CUd4u1vyqSJfxj2+krNMBmDXlR7yN87RJsmB03ISPs8GuhjIrbdgkU+UfoKIJFLYco2ZSX7vR9j8l6azyVan1Q== + +"@agoric/xsnap@0.14.3-dev-9f085d3.0", "@agoric/xsnap@^0.14.2", "@agoric/xsnap@^0.14.3-u11.0", "@agoric/xsnap@^0.14.3-u13.0": version "0.14.3-dev-9f085d3.0" resolved "https://registry.yarnpkg.com/@agoric/xsnap/-/xsnap-0.14.3-dev-9f085d3.0.tgz#f033bb5d02b728eff5f1c23bfb89c6fec92e72b8" integrity sha512-EimoKIKTkJLLWiCOLNtfGWdGU3QyOd6fD+PV6cjdjqJtVx4pibChUERhplMwB5MZ2RHorQYZ8PaibFsyhn9TKg== @@ -627,6 +791,15 @@ "@agoric/vat-data" "^0.5.3-u11.0" "@endo/far" "^0.2.18" +"@agoric/zone@^0.2.3-u13.0": + version "0.2.3-u13.0" + resolved "https://registry.yarnpkg.com/@agoric/zone/-/zone-0.2.3-u13.0.tgz#218e6372bfd44122ca0a0524649f1b3acbd40c52" + integrity sha512-NfH7fCrSI7wQ8wun8fhRBXEQdqkmjf4OdPXLwProYoxBIEJ4eML/CiGBDpE6DBeGDyS0YfJExcp7HV9nFsYi7g== + dependencies: + "@agoric/store" "^0.9.3-u13.0" + "@agoric/vat-data" "^0.5.3-u13.0" + "@endo/far" "0.2.18" + "@alloc/quick-lru@^5.2.0": version "5.2.0" resolved "https://registry.yarnpkg.com/@alloc/quick-lru/-/quick-lru-5.2.0.tgz#7bf68b20c0a350f936915fcae06f58e32007ce30" @@ -1152,11 +1325,35 @@ resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.7.5.tgz#77211291c1900a700b8a78cfafda3160d76949ed" integrity sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg== +"@endo/base64@0.2.31": + version "0.2.31" + resolved "https://registry.yarnpkg.com/@endo/base64/-/base64-0.2.31.tgz#92378462cd791e0258a2291d44d2cfd15415cf32" + integrity sha512-7IndkaZ7buIuFw8oBovNZV7epuyFWs0gdusSJ/zrx6fMXRqX0ycSTtxr6M5xADQGss1I9fqP3vteVLiNFlyIbw== + "@endo/base64@^0.2.31", "@endo/base64@^0.2.32", "@endo/base64@^0.2.35": version "0.2.35" resolved "https://registry.yarnpkg.com/@endo/base64/-/base64-0.2.35.tgz#7d18203d5807748388c935df7eb79c7672a0b64e" integrity sha512-rsAicKvgNq/ar+9b3ElXRXglMiJcg1IErz3lx1HFYZUzfWp8r/Dibi3TEjYpSBmtOeYN9CeWH8CBluN0uFqdag== +"@endo/bundle-source@2.5.2-upstream-rollup": + version "2.5.2-upstream-rollup" + resolved "https://registry.yarnpkg.com/@endo/bundle-source/-/bundle-source-2.5.2-upstream-rollup.tgz#89fdc6b1b6625ca8c484c12e7762f04cd711ca9f" + integrity sha512-UoQlCMZ8jnQA6ulKYII+plWdyK0/XAj1clHPnAW1ILEthQWN1h9WeQT26mIWowGp+sX8CIyiRSVRQN/0pC35Fw== + dependencies: + "@agoric/babel-generator" "^7.17.4" + "@babel/parser" "^7.17.3" + "@babel/traverse" "^7.17.3" + "@endo/base64" "^0.2.31" + "@endo/compartment-mapper" "^0.8.4" + "@endo/init" "^0.5.56" + "@endo/promise-kit" "^0.2.56" + "@rollup/plugin-commonjs" "^19.0.0" + "@rollup/plugin-node-resolve" "^13.0.0" + acorn "^8.2.4" + jessie.js "^0.3.2" + rollup "^2.79.1" + source-map "^0.7.3" + "@endo/bundle-source@^2.5.1", "@endo/bundle-source@^2.5.2": version "2.8.0" resolved "https://registry.yarnpkg.com/@endo/bundle-source/-/bundle-source-2.8.0.tgz#56f25b3d9c74d3d0bede5c526647aaf02c0a8f94" @@ -1177,6 +1374,16 @@ rollup "^2.79.1" source-map "^0.7.3" +"@endo/captp@3.1.1": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@endo/captp/-/captp-3.1.1.tgz#538cdb7deec694cfce1015e1ccb387270172642d" + integrity sha512-M+EiRxtm5xzKmZtOQmTtk5IfscPUKGSDGhmcxGTm4g4WvukFKSAB8hLHAbeurLaWVQG/ZcqZBffAZL/SGUZbmw== + dependencies: + "@endo/eventual-send" "^0.17.2" + "@endo/marshal" "^0.8.5" + "@endo/nat" "^4.1.27" + "@endo/promise-kit" "^0.2.56" + "@endo/captp@^3.1.1": version "3.1.5" resolved "https://registry.yarnpkg.com/@endo/captp/-/captp-3.1.5.tgz#4cf0eeedc4728e856bd3e71cfc42cba3ab02449c" @@ -1187,6 +1394,14 @@ "@endo/nat" "^4.1.31" "@endo/promise-kit" "^0.2.60" +"@endo/check-bundle@0.2.18": + version "0.2.18" + resolved "https://registry.yarnpkg.com/@endo/check-bundle/-/check-bundle-0.2.18.tgz#0880f4237dbc1c72c292aab3eccd7b1c20506a97" + integrity sha512-PQB8ACM6ukv8dihzvqyfnHaKNr/+pKdJKmtZSxBvPmyBR4VnmLRSeTWMgMKnnmd27AyYN7vxdvKrL+qZDMA4RQ== + dependencies: + "@endo/base64" "^0.2.31" + "@endo/compartment-mapper" "^0.8.4" + "@endo/check-bundle@^0.2.18": version "0.2.22" resolved "https://registry.yarnpkg.com/@endo/check-bundle/-/check-bundle-0.2.22.tgz#1a978e71401b61ce9e091ac6c6bfd037140263b8" @@ -1195,11 +1410,21 @@ "@endo/base64" "^0.2.35" "@endo/compartment-mapper" "^0.9.2" -"@endo/cjs-module-analyzer@^0.2.32", "@endo/cjs-module-analyzer@^0.2.35": +"@endo/cjs-module-analyzer@^0.2.31", "@endo/cjs-module-analyzer@^0.2.32", "@endo/cjs-module-analyzer@^0.2.35": version "0.2.35" resolved "https://registry.yarnpkg.com/@endo/cjs-module-analyzer/-/cjs-module-analyzer-0.2.35.tgz#0de39d2306bba5671e121efa091bf6cb9990f11e" integrity sha512-Ldr1auybH9AzrR/WV6bzP4aLRpv8CCl98mv0IAui4uQmmFOPOGchshyBfpiDF5XMKM6wh7z0VgmvmydQ5/7AHQ== +"@endo/compartment-mapper@0.8.4": + version "0.8.4" + resolved "https://registry.yarnpkg.com/@endo/compartment-mapper/-/compartment-mapper-0.8.4.tgz#afae6a4dfc64dff7082e90d7f215a072fb0a9b85" + integrity sha512-OXK3pfsFWa+k6I1sA4UH+XBsXyCd1G8YEJo0PYsHyzErDSnVYQZ8Ka+M+8Jq8jJtE4SFqZqp1KwihCvMJSA6oA== + dependencies: + "@endo/cjs-module-analyzer" "^0.2.31" + "@endo/static-module-record" "^0.7.19" + "@endo/zip" "^0.2.31" + ses "^0.18.4" + "@endo/compartment-mapper@^0.8.4", "@endo/compartment-mapper@^0.8.5": version "0.8.5" resolved "https://registry.yarnpkg.com/@endo/compartment-mapper/-/compartment-mapper-0.8.5.tgz#6910d2be41754fde90190671d2fc5dc48d6fb787" @@ -1225,6 +1450,11 @@ resolved "https://registry.yarnpkg.com/@endo/env-options/-/env-options-0.1.4.tgz#e516bc3864f00b154944e444fb8996a9a0c23a45" integrity sha512-Ol8ct0aW8VK1ZaqntnUJfrYT59P6Xn36XPbHzkqQhsYkpudKDn5ILYEwGmSO/Ff+XJjv/pReNI0lhOyyrDa9mg== +"@endo/eventual-send@0.17.2": + version "0.17.2" + resolved "https://registry.yarnpkg.com/@endo/eventual-send/-/eventual-send-0.17.2.tgz#c8710d557c2f57723be05fe99e941cd893acc5d2" + integrity sha512-nux02l2yYXXUeUA2PigOO1K0gbVVMYx3prfYrW/G7Ny6PiDLtOyaeMWwKQwFTgJV2yAkOfvycr4LC1+tm7hu/Q== + "@endo/eventual-send@^0.17.2", "@endo/eventual-send@^0.17.3", "@endo/eventual-send@^0.17.5", "@endo/eventual-send@^0.17.6": version "0.17.6" resolved "https://registry.yarnpkg.com/@endo/eventual-send/-/eventual-send-0.17.6.tgz#86719e4e3ff76991c49f6680309dc77dff65fe55" @@ -1232,6 +1462,14 @@ dependencies: "@endo/env-options" "^0.1.4" +"@endo/exo@0.2.2": + version "0.2.2" + resolved "https://registry.yarnpkg.com/@endo/exo/-/exo-0.2.2.tgz#eeebe3eeb40dcf9b409fddf8d5ff73821b470515" + integrity sha512-4787jRJe7nQLV02mCCd1fQ8Ai25ParaIzLBUrxl7UKtsP98LcTlQKAON+OQmnSbV6jjXINa/wHdUeoi8/0xZDA== + dependencies: + "@endo/far" "^0.2.18" + "@endo/patterns" "^0.2.2" + "@endo/exo@^0.2.2", "@endo/exo@^0.2.3": version "0.2.6" resolved "https://registry.yarnpkg.com/@endo/exo/-/exo-0.2.6.tgz#09721063377981d4376b3cf8aa534dd0d49939dc" @@ -1242,6 +1480,14 @@ "@endo/pass-style" "^0.1.7" "@endo/patterns" "^0.2.6" +"@endo/far@0.2.18": + version "0.2.18" + resolved "https://registry.yarnpkg.com/@endo/far/-/far-0.2.18.tgz#8d8ca8ac1f7c4b57871e55c2c2f06c8e4fcf3839" + integrity sha512-NJPz5x11AOsFgxZNSIW4+llQtSUNQtcYCrvxpMwhofti3hncMjhIiUUrMVggw99pdHNmXEBr0gl16H3n/1X0sw== + dependencies: + "@endo/eventual-send" "^0.17.2" + "@endo/pass-style" "^0.1.3" + "@endo/far@^0.2.18", "@endo/far@^0.2.19", "@endo/far@^0.2.22", "@endo/far@^0.2.3": version "0.2.22" resolved "https://registry.yarnpkg.com/@endo/far/-/far-0.2.22.tgz#fda187289a903ee3f9d6dcc5664ee7fef1994b1f" @@ -1250,6 +1496,14 @@ "@endo/eventual-send" "^0.17.6" "@endo/pass-style" "^0.1.7" +"@endo/import-bundle@0.3.4": + version "0.3.4" + resolved "https://registry.yarnpkg.com/@endo/import-bundle/-/import-bundle-0.3.4.tgz#dd93dca2aa595f669365f05d03affd4465837919" + integrity sha512-MjB7VBJYFgcUhelMddJQf9uMwxqXV1McjVGqoJ3ZJ/OIQZ5BTYqR+uyZOI8CaUqpVmhNbsg3qMw8/wXW304YlA== + dependencies: + "@endo/base64" "^0.2.31" + "@endo/compartment-mapper" "^0.8.4" + "@endo/import-bundle@^0.3.4": version "0.3.5" resolved "https://registry.yarnpkg.com/@endo/import-bundle/-/import-bundle-0.3.5.tgz#b2b21f58c9fd077857754ccb7e9d0a91868de88d" @@ -1258,6 +1512,16 @@ "@endo/base64" "^0.2.32" "@endo/compartment-mapper" "^0.8.5" +"@endo/init@0.5.56": + version "0.5.56" + resolved "https://registry.yarnpkg.com/@endo/init/-/init-0.5.56.tgz#c241de519434309f362dc676e76ee36c93240151" + integrity sha512-BKA7O2uy9uaGw9dB9X515SIaTumaO58HD30AXkJllW6bmLM/BxxFM3GCgS127x0Wot1ni32Y0DxkwxdEXFXJEQ== + dependencies: + "@endo/base64" "^0.2.31" + "@endo/eventual-send" "^0.17.2" + "@endo/lockdown" "^0.1.28" + "@endo/promise-kit" "^0.2.56" + "@endo/init@^0.5.56", "@endo/init@^0.5.57", "@endo/init@^0.5.60": version "0.5.60" resolved "https://registry.yarnpkg.com/@endo/init/-/init-0.5.60.tgz#e78051b13cd4a04c72d5ec1d2a6011b7f987f7ff" @@ -1268,6 +1532,13 @@ "@endo/lockdown" "^0.1.32" "@endo/promise-kit" "^0.2.60" +"@endo/lockdown@0.1.28": + version "0.1.28" + resolved "https://registry.yarnpkg.com/@endo/lockdown/-/lockdown-0.1.28.tgz#43f23dcbb12b6ebd3ad2a3dc8c6bb3609dd9e95f" + integrity sha512-YqurtDU23+0kuWq4J2c94HyRB1aqSB8xEwrx5xTZA9IY/anrtppEiTFGU8tQXqZFhE6bfRzSGWDIVKaXCcm4Lw== + dependencies: + ses "^0.18.4" + "@endo/lockdown@^0.1.28", "@endo/lockdown@^0.1.32": version "0.1.32" resolved "https://registry.yarnpkg.com/@endo/lockdown/-/lockdown-0.1.32.tgz#2d13a9ca336d5dce243a3cf919c543b55973153c" @@ -1275,6 +1546,16 @@ dependencies: ses "^0.18.8" +"@endo/marshal@0.8.5": + version "0.8.5" + resolved "https://registry.yarnpkg.com/@endo/marshal/-/marshal-0.8.5.tgz#c1a10ed4d9b37ee7444d314d8dec9a9a96728d64" + integrity sha512-oj2Ag/TlkoMPv8m00fjoa1uWPgDwm5w8nYUU0DPqaCLfTNGRe8a8s7kYDPbv+sQdiQbkZ1RgUQjdyr/O2Mvs+A== + dependencies: + "@endo/eventual-send" "^0.17.2" + "@endo/nat" "^4.1.27" + "@endo/pass-style" "^0.1.3" + "@endo/promise-kit" "^0.2.56" + "@endo/marshal@^0.8.5", "@endo/marshal@^0.8.6", "@endo/marshal@^0.8.9": version "0.8.9" resolved "https://registry.yarnpkg.com/@endo/marshal/-/marshal-0.8.9.tgz#f6fcaf23ecad828f6d086657f1d1590ea8ef3840" @@ -1285,6 +1566,11 @@ "@endo/pass-style" "^0.1.7" "@endo/promise-kit" "^0.2.60" +"@endo/nat@4.1.27": + version "4.1.27" + resolved "https://registry.yarnpkg.com/@endo/nat/-/nat-4.1.27.tgz#8f1a398b39f994b0769070a3fb36d3397bf86794" + integrity sha512-mKRdIc4NvrxZ1qPBcYZH6zaj0RsRwADaCcfPNRnGWcHC9dY8DmZDDcgqNdSBFLiEto1RnXeoKAEGxk6hn253Ow== + "@endo/nat@^4.1.27", "@endo/nat@^4.1.30", "@endo/nat@^4.1.31": version "4.1.31" resolved "https://registry.yarnpkg.com/@endo/nat/-/nat-4.1.31.tgz#ca738f472481a572f47749b41529b3261ebb4c1e" @@ -1299,6 +1585,14 @@ "@endo/stream" "^0.3.29" ses "^0.18.8" +"@endo/pass-style@0.1.3": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@endo/pass-style/-/pass-style-0.1.3.tgz#951056a2869b04f2aab0928b61a91ae7252ddbe4" + integrity sha512-V2FLPBUJXsJYWjMSoZW2IopOuggEX14pm8AHfOVXUceF3uvHbdJj7qwKAuIIOhPApZ/TV+6nWYi86eb393Ic2w== + dependencies: + "@endo/promise-kit" "^0.2.56" + "@fast-check/ava" "^1.1.3" + "@endo/pass-style@^0.1.3", "@endo/pass-style@^0.1.4", "@endo/pass-style@^0.1.7": version "0.1.7" resolved "https://registry.yarnpkg.com/@endo/pass-style/-/pass-style-0.1.7.tgz#ea22568e8b86fb2d1a14a5fc042374cc0d8e310b" @@ -1307,6 +1601,15 @@ "@endo/promise-kit" "^0.2.60" "@fast-check/ava" "^1.1.5" +"@endo/patterns@0.2.2": + version "0.2.2" + resolved "https://registry.yarnpkg.com/@endo/patterns/-/patterns-0.2.2.tgz#d4c4d63bf450477ed9a9cf194b4a8daa56fcb4f4" + integrity sha512-rbS4BLRohZQhB+0aEPBoxmzOfOie9nAu8Qx55Fxe8xFQKS4k9acafeIYmKh9nvslEJISYQmogy5Lewm5mgdSjg== + dependencies: + "@endo/eventual-send" "^0.17.2" + "@endo/marshal" "^0.8.5" + "@endo/promise-kit" "^0.2.56" + "@endo/patterns@^0.2.2", "@endo/patterns@^0.2.3", "@endo/patterns@^0.2.5", "@endo/patterns@^0.2.6": version "0.2.6" resolved "https://registry.yarnpkg.com/@endo/patterns/-/patterns-0.2.6.tgz#abbbc3743ee313ffc6167d783d5fc78de74125fe" @@ -1316,6 +1619,13 @@ "@endo/marshal" "^0.8.9" "@endo/promise-kit" "^0.2.60" +"@endo/promise-kit@0.2.56": + version "0.2.56" + resolved "https://registry.yarnpkg.com/@endo/promise-kit/-/promise-kit-0.2.56.tgz#24ed3cf87af1eec65f4635643b7e67617b909e71" + integrity sha512-eKlOg353jJCHwDAwXCajtcAiTTjGkd7oWBXniEEc97gZHK83MeB3pnGT2lhoeq3xzdNw3Xv2DDsowBI194AXeA== + dependencies: + ses "^0.18.4" + "@endo/promise-kit@^0.2.56", "@endo/promise-kit@^0.2.57", "@endo/promise-kit@^0.2.60": version "0.2.60" resolved "https://registry.yarnpkg.com/@endo/promise-kit/-/promise-kit-0.2.60.tgz#8012ada06970c7eaf965cd856563b34a1790e163" @@ -1323,7 +1633,14 @@ dependencies: ses "^0.18.8" -"@endo/static-module-record@^0.7.20": +"@endo/ses-ava@0.2.40": + version "0.2.40" + resolved "https://registry.yarnpkg.com/@endo/ses-ava/-/ses-ava-0.2.40.tgz#8a6c1f668131ecbe4d06339cac2a8346253089b8" + integrity sha512-YIiAPuUfjS5dzyqeiV36FASv4YiSdkRzdxXbntNTBdOvdDymbT37SMkG0mUxD5YZRQuKMTu9xQyaGYSRqf8zaw== + dependencies: + ses "^0.18.4" + +"@endo/static-module-record@^0.7.19", "@endo/static-module-record@^0.7.20": version "0.7.20" resolved "https://registry.yarnpkg.com/@endo/static-module-record/-/static-module-record-0.7.20.tgz#5d9583aaa8042b8a6de58c72f765e5a28e880489" integrity sha512-qpow712L7Bh7F3olFW9e15PcDWnC2eSY4xPdhpZoYTzedsyjCETRgxFWY6+DdT193lNlyKIn0On1O1Go+5WmBA== @@ -1354,6 +1671,15 @@ "@endo/stream" "^0.3.29" ses "^0.18.8" +"@endo/stream@0.3.25": + version "0.3.25" + resolved "https://registry.yarnpkg.com/@endo/stream/-/stream-0.3.25.tgz#a49b012b62f345e3de6b360dc30ec27cc32a455f" + integrity sha512-qSl9Q9o20/4nKdXlXYCs6KJfeANMKBLrsi7JIxWV1jP9YzIDdq/PkEJsMNq89Z/HWXtPRfEQ4JEMd3O1WBYU5Q== + dependencies: + "@endo/eventual-send" "^0.17.2" + "@endo/promise-kit" "^0.2.56" + ses "^0.18.4" + "@endo/stream@^0.3.25", "@endo/stream@^0.3.26", "@endo/stream@^0.3.29": version "0.3.29" resolved "https://registry.yarnpkg.com/@endo/stream/-/stream-0.3.29.tgz#f49c24629429a3650ddd0e5e9fb90e36ef44ed0a" @@ -1368,6 +1694,11 @@ resolved "https://registry.yarnpkg.com/@endo/where/-/where-0.3.5.tgz#df7661ec38ab6a327ef050aa88b50555876c39ef" integrity sha512-y9agS7UWpSY9YSAAYwtn6sAE7zfU2BmYGOUJpw859WcmRt5ufCRi2XAXDcvIugAUPTsSVPqJj6FO3uZNVRmXPw== +"@endo/zip@0.2.31": + version "0.2.31" + resolved "https://registry.yarnpkg.com/@endo/zip/-/zip-0.2.31.tgz#371b1a9ca8b3216ad8a3564e97e3d747be42a657" + integrity sha512-rNCZtQzPm6Q8kW69gyeU0hUwKZtwuR8cX1+URgpDuUuaMUbKWBaqURKOmrqKVtE5fkqCE7pSrHvGH02DMDbDHQ== + "@endo/zip@^0.2.31", "@endo/zip@^0.2.32", "@endo/zip@^0.2.35": version "0.2.35" resolved "https://registry.yarnpkg.com/@endo/zip/-/zip-0.2.35.tgz#37a7f9266ca9c9167de5e42b55b0d9c979598d87" @@ -2262,6 +2593,11 @@ asynciterator.prototype@^1.0.0: dependencies: has-symbols "^1.0.3" +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== + autoprefixer@^10.4.8: version "10.4.15" resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.15.tgz#a1230f4aeb3636b89120b34a1f513e2f6834d530" @@ -2284,6 +2620,13 @@ axe-core@^4.6.2: resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.8.1.tgz#6948854183ee7e7eae336b9877c5bafa027998ea" integrity sha512-9l850jDDPnKq48nbad8SiEelCv4OrUWrKab/cPj0GScVg6cb6NbCCt/Ulk26QEq5jP9NnGr04Bit1BHyV6r5CQ== +axios-retry@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/axios-retry/-/axios-retry-4.0.0.tgz#d5cb8ea1db18e05ce6f08aa5fe8b2663bba48e60" + integrity sha512-F6P4HVGITD/v4z9Lw2mIA24IabTajvpDZmKa6zq/gGwn57wN5j1P3uWrAV0+diqnW6kTM2fTqmWNfgYWGmMuiA== + dependencies: + is-retry-allowed "^2.2.0" + axios@0.21.4, axios@^0.21.2: version "0.21.4" resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.4.tgz#c67b90dc0568e5c1cf2b0b858c43ba28e2eda575" @@ -2291,6 +2634,15 @@ axios@0.21.4, axios@^0.21.2: dependencies: follow-redirects "^1.14.0" +axios@^1.6.2: + version "1.6.5" + resolved "https://registry.yarnpkg.com/axios/-/axios-1.6.5.tgz#2c090da14aeeab3770ad30c3a1461bc970fb0cd8" + integrity sha512-Ii012v05KEVuUoFWmMW/UQv9aRIc3ZwkWDcM+h5Il8izZCtRVpDUfwpoFf7eOtajT3QiGR4yDUx7lPqHJULgbg== + dependencies: + follow-redirects "^1.15.4" + form-data "^4.0.0" + proxy-from-env "^1.1.0" + axobject-query@^3.1.1: version "3.2.1" resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-3.2.1.tgz#39c378a6e3b06ca679f29138151e45b2b32da62a" @@ -2601,6 +2953,13 @@ colorspace@1.1.x: color "^3.1.3" text-hex "1.0.x" +combined-stream@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + commander@7.1.0: version "7.1.0" resolved "https://registry.yarnpkg.com/commander/-/commander-7.1.0.tgz#f2eaecf131f10e36e07d894698226e36ae0eb5ff" @@ -2797,6 +3156,11 @@ delay@^5.0.0: resolved "https://registry.yarnpkg.com/delay/-/delay-5.0.0.tgz#137045ef1b96e5071060dd5be60bf9334436bd1d" integrity sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw== +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== + dequal@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be" @@ -3500,6 +3864,11 @@ follow-redirects@^1.14.0: resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== +follow-redirects@^1.15.4: + version "1.15.4" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.4.tgz#cdc7d308bf6493126b17ea2191ea0ccf3e535adf" + integrity sha512-Cr4D/5wlrb0z9dgERpUL3LrmPKVDsETIJhaCMeDfuFYcqa5bldGV6wBsAN6X/vxlXQtFBMrXdXxdL8CbDTGniw== + for-each@^0.3.3: version "0.3.3" resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" @@ -3507,6 +3876,15 @@ for-each@^0.3.3: dependencies: is-callable "^1.1.3" +form-data@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" + integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + fraction.js@^4.2.0: version "4.3.6" resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.3.6.tgz#e9e3acec6c9a28cf7bc36cbe35eea4ceb2c5c92d" @@ -4031,6 +4409,11 @@ is-regex@^1.1.4: call-bind "^1.0.2" has-tostringtag "^1.0.0" +is-retry-allowed@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-2.2.0.tgz#88f34cbd236e043e71b6932d09b0c65fb7b4d71d" + integrity sha512-XVm7LOeLpTW4jV19QSH38vkswxoLud8sQ57YwJVTPWdiaI9I8keEhGFpBlslyVsgdQy4Opg8QOLb8YRgsyZiQg== + is-set@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.2.tgz#90755fa4c2562dc1c5d4024760d6119b94ca18ec" @@ -4469,6 +4852,18 @@ microtime@^3.1.0: node-addon-api "^5.0.0" node-gyp-build "^4.4.0" +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@^2.1.12: + version "2.1.35" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + mimic-fn@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" @@ -4982,6 +5377,11 @@ protobufjs@^7.0.0, protobufjs@^7.2.4: "@types/node" ">=13.7.0" long "^5.0.0" +proxy-from-env@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" + integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== + pump@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" @@ -5270,7 +5670,7 @@ semver@^7.3.5, semver@^7.3.7, semver@^7.5.4: dependencies: lru-cache "^6.0.0" -ses@^0.18.5, ses@^0.18.8: +ses@^0.18.4, ses@^0.18.5, ses@^0.18.8: version "0.18.8" resolved "https://registry.yarnpkg.com/ses/-/ses-0.18.8.tgz#88036511ac3b3c07e4d82dd8cfc6e5f3788205b6" integrity sha512-kOH1AhJc6gWDXKURKeU1w7iFUdImAegAljVvBg5EUBgNqjH4bxcEsGVUadVEPtA2PVRMyQp1fiSMDwEZkQNj1g==