diff --git a/packages/w3ui/.github/workflows/w3console.yaml b/packages/w3ui/.github/workflows/w3console.yaml
index 1965476a1..50eb2460d 100644
--- a/packages/w3ui/.github/workflows/w3console.yaml
+++ b/packages/w3ui/.github/workflows/w3console.yaml
@@ -23,6 +23,11 @@ jobs:
- name: Build w3console
run: pnpm build
working-directory: examples/react/w3console
+ env:
+ VITE_W3UP_ACCESS_SERVICE_URL: 'https://w3access-staging.protocol-labs.workers.dev'
+ VITE_W3UP_ACCESS_SERVICE_DID: 'did:web:staging.web3.storage'
+ VITE_W3UP_UPLOAD_SERVICE_URL: 'https://staging.up.web3.storage'
+ VITE_W3UP_UPLOAD_SERVICE_DID: 'did:web:staging.web3.storage'
- name: Publish static site
uses: ./.github/actions/preview
diff --git a/packages/w3ui/examples/react/playground/package.json b/packages/w3ui/examples/react/playground/package.json
index e215ceeed..22dadbf97 100644
--- a/packages/w3ui/examples/react/playground/package.json
+++ b/packages/w3ui/examples/react/playground/package.json
@@ -32,7 +32,7 @@
"@storybook/testing-library": "^0.0.13",
"@types/react": "^18.0.26",
"@types/react-dom": "^18.0.9",
- "@ucanto/interface": "^4.2.3",
+ "@ucanto/interface": "^6.2.0",
"@vitejs/plugin-react": "^3.0.0",
"@w3ui/uploads-list-core": "workspace:^",
"multiformats": "^11.0.1",
diff --git a/packages/w3ui/examples/react/w3console/package.json b/packages/w3ui/examples/react/w3console/package.json
index 1d3c54180..d0dfcfdc7 100644
--- a/packages/w3ui/examples/react/w3console/package.json
+++ b/packages/w3ui/examples/react/w3console/package.json
@@ -25,8 +25,8 @@
"devDependencies": {
"@preact/preset-vite": "^2.4.0",
"@types/blueimp-md5": "^2.18.0",
- "@ucanto/core": "^4.1.0",
- "@ucanto/interface": "^4.1.0",
+ "@ucanto/core": "^5.2.0",
+ "@ucanto/interface": "^6.2.0",
"autoprefixer": "^10.4.13",
"postcss": "^8.4.21",
"tailwindcss": "^3.2.4",
diff --git a/packages/w3ui/examples/react/w3console/src/app.tsx b/packages/w3ui/examples/react/w3console/src/app.tsx
index 0c456b7d2..933afc650 100644
--- a/packages/w3ui/examples/react/w3console/src/app.tsx
+++ b/packages/w3ui/examples/react/w3console/src/app.tsx
@@ -13,7 +13,7 @@ import { Uploader } from './components/Uploader'
import { UploadsList } from './components/UploadsList'
import { W3APIProvider } from './components/W3API'
import { SpaceFinder } from './components/SpaceFinder'
-import { SpaceCreator } from './components/SpaceCreator'
+import { SpaceCreatorForm, SpaceCreator } from './components/SpaceCreator'
function SpaceRegistrar (): JSX.Element {
const [, { registerSpace }] = useKeyring()
@@ -140,7 +140,12 @@ function SpaceSection (props: SpaceSectionProps): JSX.Element {
>
)}
- {!registered && !share && }
+ {(space && !registered) && !share && }
+ {!space && (
+
+
Select a space from the dropdown on the left to get started.
+
+ )}
)
@@ -187,7 +192,33 @@ export function Logo (): JSX.Element {
)
}
-export function Layout (): JsxElement {
+export function SpaceEnsurer ({
+ children
+}: {
+ children: JSX.Element | JSX.Element[]
+}): JSX.Element {
+ const [{ spaces, account }] = useKeyring()
+ if (spaces && spaces.length > 0) {
+ return <>{children}>
+ }
+ return (
+
+
+
Welcome {account}!
+
+ To get started with w3up you'll need to create a space.
+
+
+ Give it a name and hit create!
+
+
+
+
+ )
+}
+
+
+export function Layout (): JSX.Element {
const [share, setShare] = useState(false)
const [{ space, spaces }, { setCurrentSpace }] = useKeyring()
@@ -224,7 +255,9 @@ export function App (): JSX.Element {
return (
-
+
+
+
)
diff --git a/packages/w3ui/examples/react/w3console/src/components/Authenticator.tsx b/packages/w3ui/examples/react/w3console/src/components/Authenticator.tsx
index a5499fb67..94b23f01c 100644
--- a/packages/w3ui/examples/react/w3console/src/components/Authenticator.tsx
+++ b/packages/w3ui/examples/react/w3console/src/components/Authenticator.tsx
@@ -49,9 +49,9 @@ export function AuthenticationEnsurer ({
}: {
children: JSX.Element | JSX.Element[]
}): JSX.Element {
- const [{ spaces, submitted }] = useAuthenticator()
- const registered = Boolean(spaces.some((s) => s.registered()))
- if (registered) {
+ const [{ submitted, account }] = useAuthenticator()
+ const authenticated = !!account
+ if (authenticated) {
return <>{children}>
}
if (submitted) {
diff --git a/packages/w3ui/examples/react/w3console/src/components/SpaceCreator.tsx b/packages/w3ui/examples/react/w3console/src/components/SpaceCreator.tsx
index de2e1c0b7..1911b03b8 100644
--- a/packages/w3ui/examples/react/w3console/src/components/SpaceCreator.tsx
+++ b/packages/w3ui/examples/react/w3console/src/components/SpaceCreator.tsx
@@ -13,83 +13,92 @@ export function SpaceCreatorCreating (): JSX.Element {
)
}
-interface SpaceCreatorProps {
+interface SpaceCreatorFormProps {
className?: string
}
-export function SpaceCreator ({
+export function SpaceCreatorForm ({
className = ''
-}: SpaceCreatorProps): JSX.Element {
- const [, { createSpace, registerSpace }] = useKeyring()
- const [creating, setCreating] = useState(false)
+}: SpaceCreatorFormProps): JSX.Element {
+ const [{ account }, { createSpace, registerSpace }] = useKeyring()
const [submitted, setSubmitted] = useState(false)
- const [email, setEmail] = useState('')
const [name, setName] = useState('')
function resetForm (): void {
- setEmail('')
setName('')
}
async function onSubmit (e: React.FormEvent): Promise {
e.preventDefault()
- setSubmitted(true)
- try {
- await createSpace(name)
- // ignore this because the Space UI should handle helping the user recover
- // from space registration failure
- void registerSpace(email)
- } catch (error) {
- /* eslint-disable no-console */
- console.error(error)
- /* eslint-enable no-console */
- throw new Error('failed to register', { cause: error })
- } finally {
- resetForm()
- setSubmitted(false)
+ if (account) {
+ setSubmitted(true)
+ try {
+ await createSpace(name)
+ // ignore this because the Space UI should handle helping the user recover
+ // from space registration failure
+ await registerSpace(account)
+ } catch (error) {
+ /* eslint-disable no-console */
+ console.error(error)
+ /* eslint-enable no-console */
+ throw new Error('failed to register', { cause: error })
+ } finally {
+ resetForm()
+ setSubmitted(false)
+ }
+ } else {
+ throw new Error('cannot create space, no account found, have you authorized your email?')
}
}
- /* eslint-disable no-nested-ternary */
+ return (
+
+ {
+ submitted
+ ? (
+
+ )
+ : (
+
+ )
+ }
+
+ )
+}
+
+interface SpaceCreatorProps {
+ className?: string
+}
+
+export function SpaceCreator ({
+ className = ''
+}: SpaceCreatorProps): JSX.Element {
+ const [creating, setCreating] = useState(false)
+
return (
{creating
? (
- submitted
- ? (
-
- )
- : (
-
- )
- )
+
+ )
: (
- )}
+ )}
)
/* eslint-enable no-nested-ternary */
diff --git a/packages/w3ui/examples/react/w3console/src/components/SpaceFinder.tsx b/packages/w3ui/examples/react/w3console/src/components/SpaceFinder.tsx
index ccea6b1eb..ee4c81e51 100644
--- a/packages/w3ui/examples/react/w3console/src/components/SpaceFinder.tsx
+++ b/packages/w3ui/examples/react/w3console/src/components/SpaceFinder.tsx
@@ -33,7 +33,7 @@ export function SpaceFinder ({
a.sameAs(b)}
+ by={(a, b) => a?.sameAs(b)}
>
@@ -57,7 +57,7 @@ export function SpaceFinder ({
afterLeave={() => { setQuery('') }}
>
{filtered.length === 0 && query !== ''
diff --git a/packages/w3ui/examples/react/w3console/src/components/W3API.tsx b/packages/w3ui/examples/react/w3console/src/components/W3API.tsx
index b621dd707..ae3ece772 100644
--- a/packages/w3ui/examples/react/w3console/src/components/W3API.tsx
+++ b/packages/w3ui/examples/react/w3console/src/components/W3API.tsx
@@ -15,6 +15,7 @@ import {
KeyringContextValue,
KeyringProvider
} from '@w3ui/react-keyring'
+import { accessServiceConnection, accessServicePrincipal, uploadServiceConnection, uploadServicePrincipal } from './services'
export interface W3APIContextValue {
keyring: KeyringContextValue
@@ -35,9 +36,9 @@ export function W3APIProvider ({
uploadsListPageSize
}: W3APIProviderProps): JSX.Element {
return (
-
-
-
+
+
+
<>{children}>
diff --git a/packages/w3ui/examples/react/w3console/src/components/services.ts b/packages/w3ui/examples/react/w3console/src/components/services.ts
new file mode 100644
index 000000000..e77811042
--- /dev/null
+++ b/packages/w3ui/examples/react/w3console/src/components/services.ts
@@ -0,0 +1,43 @@
+import type { Service } from '@web3-storage/access/types'
+import { connect } from '@ucanto/client'
+import { CAR, CBOR, HTTP } from '@ucanto/transport'
+import * as DID from '@ipld/dag-ucan/did'
+
+
+export const accessServiceURL = new URL(
+ //'https://w3access-staging.protocol-labs.workers.dev'
+ import.meta.env.VITE_W3UP_ACCESS_SERVICE_URL
+)
+export const accessServicePrincipal = DID.parse(
+ //'did:web:staging.web3.storage'
+ import.meta.env.VITE_W3UP_ACCESS_SERVICE_DID
+)
+
+export const accessServiceConnection = connect({
+ id: accessServicePrincipal,
+ encoder: CAR,
+ decoder: CBOR,
+ channel: HTTP.open>({
+ url: accessServiceURL,
+ method: 'POST',
+ }),
+})
+
+export const uploadServiceURL = new URL(
+ //'https://staging.up.web3.storage'
+ import.meta.env.VITE_W3UP_UPLOAD_SERVICE_URL
+)
+export const uploadServicePrincipal = DID.parse(
+ //'did:web:staging.web3.storage'
+ import.meta.env.VITE_W3UP_UPLOAD_SERVICE_DID
+)
+
+export const uploadServiceConnection = connect({
+ id: uploadServicePrincipal,
+ encoder: CAR,
+ decoder: CBOR,
+ channel: HTTP.open>({
+ url: uploadServiceURL,
+ method: 'POST',
+ }),
+})
diff --git a/packages/w3ui/package.json b/packages/w3ui/package.json
index 5870ab53b..c9899ff56 100644
--- a/packages/w3ui/package.json
+++ b/packages/w3ui/package.json
@@ -40,11 +40,11 @@
"@types/jest": "^29.4.0",
"@types/jsdom": "^20.0.1",
"@types/react": "^18.0.26",
- "@ucanto/client": "^4.2.3",
- "@ucanto/server": "^4.2.3",
- "@ucanto/transport": "^4.2.3",
+ "@ucanto/client": "^5.1.0",
+ "@ucanto/server": "^6.1.0",
+ "@ucanto/transport": "^5.1.1",
"@web-std/file": "^3.0.2",
- "@web3-storage/capabilities": "^2.2.0",
+ "@web3-storage/capabilities": "^4.0.0",
"esm": "^3.2.25",
"fake-indexeddb": "^4.0.1",
"hd-scripts": "^4.1.0",
diff --git a/packages/w3ui/packages/keyring-core/package.json b/packages/w3ui/packages/keyring-core/package.json
index 35f229336..cd23deff6 100644
--- a/packages/w3ui/packages/keyring-core/package.json
+++ b/packages/w3ui/packages/keyring-core/package.json
@@ -31,9 +31,9 @@
},
"homepage": "https://github.com/web3-storage/w3ui/tree/main/packages/keyring-core",
"dependencies": {
- "@ucanto/interface": "^4.2.3",
- "@ucanto/principal": "^4.2.3",
- "@web3-storage/access": "^9.4.0"
+ "@ucanto/interface": "^6.2.0",
+ "@ucanto/principal": "^5.1.0",
+ "@web3-storage/access": "11.0.0-rc.0"
},
"eslintConfig": {
"extends": [
diff --git a/packages/w3ui/packages/keyring-core/src/index.ts b/packages/w3ui/packages/keyring-core/src/index.ts
index ba33db3e9..806543f78 100644
--- a/packages/w3ui/packages/keyring-core/src/index.ts
+++ b/packages/w3ui/packages/keyring-core/src/index.ts
@@ -87,6 +87,10 @@ export interface KeyringContextState {
* The current user agent (this device).
*/
agent?: Signer
+ /**
+ * The account this device is authorized to act as. Currently just an email address.
+ */
+ account?: string
}
export interface KeyringContextActions {
@@ -104,6 +108,10 @@ export interface KeyringContextActions {
* storage. Note: this removes all data and is unrecoverable.
*/
resetAgent: () => Promise
+ /**
+ * Authorize this device to act as the account linked to email.
+ */
+ authorize: (email: '{string}@{string}') => Promise
/**
* Create a new space with the passed name and set it as the current space.
*/
diff --git a/packages/w3ui/packages/react-keyring/package.json b/packages/w3ui/packages/react-keyring/package.json
index 33090a56c..7a0f40a95 100644
--- a/packages/w3ui/packages/react-keyring/package.json
+++ b/packages/w3ui/packages/react-keyring/package.json
@@ -31,14 +31,15 @@
"homepage": "https://github.com/web3-storage/w3ui/tree/main/packages/react-keyring",
"dependencies": {
"@w3ui/keyring-core": "workspace:^",
- "ariakit-react-utils": "0.17.0-next.27"
+ "ariakit-react-utils": "0.17.0-next.27",
+ "use-local-storage-state": "^18.2.1"
},
"devDependencies": {
"@testing-library/react": "^13.4.0",
"@testing-library/user-event": "^14.4.3",
- "@ucanto/interface": "^4.2.3",
- "@ucanto/principal": "^4.2.3",
- "@web3-storage/access": "^9.4.0"
+ "@ucanto/interface": "^6.2.0",
+ "@ucanto/principal": "^5.1.0",
+ "@web3-storage/access": "11.0.0-rc.0"
},
"peerDependencies": {
"react": "^16.8.0 || ^17.0.0 || ^18.0.0"
diff --git a/packages/w3ui/packages/react-keyring/src/Authenticator.tsx b/packages/w3ui/packages/react-keyring/src/Authenticator.tsx
index fcad710e9..4a9151dc7 100644
--- a/packages/w3ui/packages/react-keyring/src/Authenticator.tsx
+++ b/packages/w3ui/packages/react-keyring/src/Authenticator.tsx
@@ -67,7 +67,8 @@ export const AuthenticatorContext = createContext([
createDelegation: async () => {
throw new Error('missing keyring context provider')
},
- addSpace: async () => {}
+ addSpace: async () => {},
+ authorize: async () => {}
}
])
@@ -100,7 +101,7 @@ AuthenticatorRootOptions
export const AuthenticatorRoot: Component =
createComponent((props) => {
const [state, actions] = useKeyring()
- const { createSpace, registerSpace } = actions
+ const { authorize } = actions
const [email, setEmail] = useState('')
const [submitted, setSubmitted] = useState(false)
@@ -109,15 +110,16 @@ export const AuthenticatorRoot: Component =
e.preventDefault()
setSubmitted(true)
try {
- await createSpace()
- await registerSpace(email)
+ await authorize(email as '{string}@{string}')
} catch (error: any) {
+ // eslint-disable-next-line no-console
+ console.error('failed to register:', error)
throw new Error('failed to register', { cause: error })
} finally {
setSubmitted(false)
}
},
- [email, setSubmitted, createSpace, registerSpace]
+ [email, setSubmitted, authorize]
)
const value = useMemo(
diff --git a/packages/w3ui/packages/react-keyring/src/providers/Keyring.tsx b/packages/w3ui/packages/react-keyring/src/providers/Keyring.tsx
index 80e8bfd4f..e258b5b4b 100644
--- a/packages/w3ui/packages/react-keyring/src/providers/Keyring.tsx
+++ b/packages/w3ui/packages/react-keyring/src/providers/Keyring.tsx
@@ -1,8 +1,9 @@
import React, { createContext, useState, useContext } from 'react'
+import useLocalStorageState from 'use-local-storage-state'
import {
createAgent,
Space,
- getCurrentSpace,
+ getCurrentSpace as getCurrentSpaceInAgent,
getSpaces,
CreateDelegationOptions
} from '@w3ui/keyring-core'
@@ -13,6 +14,7 @@ import type {
} from '@w3ui/keyring-core'
import type { Agent } from '@web3-storage/access'
import type { Abilities } from '@web3-storage/access/types'
+import { authorizeWithSocket } from '@web3-storage/access/agent'
import type {
Capability,
Delegation,
@@ -33,12 +35,14 @@ export const keyringContextDefaultValue: KeyringContextValue = [
{
space: undefined,
spaces: [],
- agent: undefined
+ agent: undefined,
+ account: undefined
},
{
loadAgent: async () => {},
unloadAgent: async () => {},
resetAgent: async () => {},
+ authorize: async () => {},
createSpace: async () => {
throw new Error('missing keyring context provider')
},
@@ -70,6 +74,7 @@ export function KeyringProvider ({
connection
}: KeyringProviderProps): JSX.Element {
const [agent, setAgent] = useState()
+ const [account, setAccount] = useLocalStorageState('w3ui-account-email')
const [space, setSpace] = useState()
const [spaces, setSpaces] = useState([])
const [issuer, setIssuer] = useState()
@@ -81,13 +86,35 @@ export function KeyringProvider ({
const a = await createAgent({ servicePrincipal, connection })
setAgent(a)
setIssuer(a.issuer)
- setSpace(getCurrentSpace(a))
+ setSpace(getCurrentSpaceInAgent(a))
setSpaces(getSpaces(a))
return a
}
return agent
}
+ const authorize = async (email: '{string}@{string}'): Promise => {
+ const agent = await getAgent()
+ const controller = new AbortController()
+ setRegisterAbortController(controller)
+
+ try {
+ await authorizeWithSocket(agent, email, { signal: controller.signal })
+ // TODO is there other state that needs to be initialized?
+ setAccount(email)
+ const newSpaces = getSpaces(agent)
+ setSpaces(newSpaces)
+ const newCurrentSpace = getCurrentSpaceInAgent(agent) ?? newSpaces[0]
+ if (newCurrentSpace != null) {
+ await setCurrentSpace(newCurrentSpace.did() as DID<'key'>)
+ }
+ } catch (error) {
+ if (!controller.signal.aborted) {
+ throw error
+ }
+ }
+ }
+
const cancelRegisterSpace = (): void => {
if (registerAbortController != null) {
registerAbortController.abort()
@@ -98,7 +125,7 @@ export function KeyringProvider ({
const agent = await getAgent()
const { did } = await agent.createSpace(name)
await agent.setCurrentSpace(did)
- setSpace(getCurrentSpace(agent))
+ setSpace(getCurrentSpaceInAgent(agent))
return did
}
@@ -108,8 +135,11 @@ export function KeyringProvider ({
setRegisterAbortController(controller)
try {
- await agent.registerSpace(email, { signal: controller.signal })
- setSpace(getCurrentSpace(agent))
+ await agent.registerSpace(email, {
+ signal: controller.signal,
+ provider: agent.connection.id.did() as DID<'web'>
+ })
+ setSpace(getCurrentSpaceInAgent(agent))
setSpaces(getSpaces(agent))
} catch (error) {
if (!controller.signal.aborted) {
@@ -120,8 +150,8 @@ export function KeyringProvider ({
const setCurrentSpace = async (did: DID): Promise => {
const agent = await getAgent()
- await agent.setCurrentSpace(did)
- setSpace(getCurrentSpace(agent))
+ await agent.setCurrentSpace(did as DID<'key'>)
+ setSpace(getCurrentSpaceInAgent(agent))
}
const loadAgent = async (): Promise => {
@@ -173,9 +203,11 @@ export function KeyringProvider ({
const state = {
space,
spaces,
- agent: issuer
+ agent: issuer,
+ account
}
const actions = {
+ authorize,
loadAgent,
unloadAgent,
resetAgent,
diff --git a/packages/w3ui/packages/react-keyring/test/Authenticator.spec.tsx b/packages/w3ui/packages/react-keyring/test/Authenticator.spec.tsx
index edd8ea53d..e16e40222 100644
--- a/packages/w3ui/packages/react-keyring/test/Authenticator.spec.tsx
+++ b/packages/w3ui/packages/react-keyring/test/Authenticator.spec.tsx
@@ -32,15 +32,13 @@ test('CancelButton', async () => {
})
test('Form', async () => {
- const createSpace = vi.fn()
- const registerSpace = vi.fn()
+ const authorize = vi.fn()
const contextValue: KeyringContextValue = [
keyringContextDefaultValue[0],
{
...keyringContextDefaultValue[1],
- createSpace,
- registerSpace
+ authorize
}
]
render(
@@ -62,6 +60,5 @@ test('Form', async () => {
const submitButton = screen.getByText('Create Space')
await user.click(submitButton)
- expect(createSpace).toHaveBeenCalledOnce()
- expect(registerSpace).toHaveBeenCalledWith(myEmail)
+ expect(authorize).toHaveBeenCalledOnce()
})
diff --git a/packages/w3ui/packages/react-uploader/package.json b/packages/w3ui/packages/react-uploader/package.json
index d05e09f3f..b8278bbc8 100644
--- a/packages/w3ui/packages/react-uploader/package.json
+++ b/packages/w3ui/packages/react-uploader/package.json
@@ -32,7 +32,7 @@
"dependencies": {
"@w3ui/react-keyring": "workspace:^",
"@w3ui/uploader-core": "workspace:^",
- "@web3-storage/capabilities": "^2.2.0",
+ "@web3-storage/capabilities": "^4.0.0",
"ariakit-react-utils": "0.17.0-next.27",
"multiformats": "^11.0.1"
},
diff --git a/packages/w3ui/packages/react-uploads-list/package.json b/packages/w3ui/packages/react-uploads-list/package.json
index 36235048e..46b7fcacd 100644
--- a/packages/w3ui/packages/react-uploads-list/package.json
+++ b/packages/w3ui/packages/react-uploads-list/package.json
@@ -32,7 +32,7 @@
"dependencies": {
"@w3ui/react-keyring": "workspace:^",
"@w3ui/uploads-list-core": "workspace:^",
- "@web3-storage/capabilities": "^2.3.0",
+ "@web3-storage/capabilities": "^4.0.0",
"ariakit-react-utils": "0.17.0-next.27"
},
"peerDependencies": {
diff --git a/packages/w3ui/packages/solid-keyring/package.json b/packages/w3ui/packages/solid-keyring/package.json
index 30939f838..a71ab09ab 100644
--- a/packages/w3ui/packages/solid-keyring/package.json
+++ b/packages/w3ui/packages/solid-keyring/package.json
@@ -28,10 +28,10 @@
},
"homepage": "https://github.com/web3-storage/w3ui/tree/main/packages/solid-keyring",
"dependencies": {
- "@ucanto/interface": "^4.2.3",
- "@ucanto/principal": "^4.2.3",
+ "@ucanto/interface": "^6.2.0",
+ "@ucanto/principal": "^5.1.0",
"@w3ui/keyring-core": "workspace:^",
- "@web3-storage/access": "^9.4.0"
+ "@web3-storage/access": "11.0.0-rc.0"
},
"peerDependencies": {
"solid-js": "^1.5.0"
diff --git a/packages/w3ui/packages/solid-keyring/src/providers/Keyring.ts b/packages/w3ui/packages/solid-keyring/src/providers/Keyring.ts
index 107dd73ef..d3daa2511 100644
--- a/packages/w3ui/packages/solid-keyring/src/providers/Keyring.ts
+++ b/packages/w3ui/packages/solid-keyring/src/providers/Keyring.ts
@@ -7,6 +7,8 @@ import type {
} from '@w3ui/keyring-core'
import type { Agent } from '@web3-storage/access'
import type { Abilities } from '@web3-storage/access/types'
+import { authorizeWithSocket } from '@web3-storage/access/agent'
+
import type { Delegation, Capability, DID, Principal } from '@ucanto/interface'
import {
@@ -16,7 +18,7 @@ import {
createComponent
} from 'solid-js'
import { createStore } from 'solid-js/store'
-import { createAgent, getCurrentSpace, getSpaces } from '@w3ui/keyring-core'
+import { createAgent, getCurrentSpace as getCurrentSpaceInAgent, getSpaces } from '@w3ui/keyring-core'
export { KeyringContextState, KeyringContextActions }
@@ -28,7 +30,8 @@ export type KeyringContextValue = [
const defaultState: KeyringContextState = {
space: undefined,
spaces: [],
- agent: undefined
+ agent: undefined,
+ account: undefined
}
export const AuthContext = createContext([
@@ -47,7 +50,8 @@ export const AuthContext = createContext([
createDelegation: async () => {
throw new Error('missing keyring context provider')
},
- addSpace: async () => {}
+ addSpace: async () => {},
+ authorize: async () => {}
}
])
@@ -62,7 +66,8 @@ export const KeyringProvider: ParentComponent = (
const [state, setState] = createStore({
space: defaultState.space,
spaces: defaultState.spaces,
- agent: defaultState.agent
+ agent: defaultState.agent,
+ account: defaultState.account
})
const [agent, setAgent] = createSignal()
@@ -78,12 +83,34 @@ export const KeyringProvider: ParentComponent = (
})
setAgent(a)
setState('agent', a.issuer)
- setState('space', getCurrentSpace(a))
+ setState('space', getCurrentSpaceInAgent(a))
setState('spaces', getSpaces(a))
}
return a
}
+ const authorize = async (email: '{string}@{string}'): Promise => {
+ const agent = await getAgent()
+ const controller = new AbortController()
+ setRegisterAbortController(controller)
+
+ try {
+ await authorizeWithSocket(agent, email, { signal: controller.signal })
+ // TODO is there other state that needs to be initialized?
+ setState('account', email)
+ const newSpaces = getSpaces(agent)
+ setState('spaces', newSpaces)
+ const newCurrentSpace = getCurrentSpaceInAgent(agent) ?? newSpaces[0]
+ if (newCurrentSpace != null) {
+ await setCurrentSpace(newCurrentSpace.did() as DID<'key'>)
+ }
+ } catch (error) {
+ if (!controller.signal.aborted) {
+ throw error
+ }
+ }
+ }
+
const cancelRegisterSpace = (): void => {
const controller = registerAbortController()
if (controller != null) {
@@ -95,7 +122,7 @@ export const KeyringProvider: ParentComponent = (
const agent = await getAgent()
const { did } = await agent.createSpace(name)
await agent.setCurrentSpace(did)
- setState('space', getCurrentSpace(agent))
+ setState('space', getCurrentSpaceInAgent(agent))
return did
}
@@ -106,7 +133,7 @@ export const KeyringProvider: ParentComponent = (
try {
await agent.registerSpace(email, { signal: controller.signal })
- setState('space', getCurrentSpace(agent))
+ setState('space', getCurrentSpaceInAgent(agent))
setState('spaces', getSpaces(agent))
} catch (error) {
if (!controller.signal.aborted) {
@@ -117,8 +144,8 @@ export const KeyringProvider: ParentComponent = (
const setCurrentSpace = async (did: DID): Promise => {
const agent = await getAgent()
- await agent.setCurrentSpace(did)
- setState('space', getCurrentSpace(agent))
+ await agent.setCurrentSpace(did as DID<'key'>)
+ setState('space', getCurrentSpaceInAgent(agent))
}
const loadAgent = async (): Promise => {
@@ -177,7 +204,8 @@ export const KeyringProvider: ParentComponent = (
setCurrentSpace,
getProofs,
createDelegation,
- addSpace
+ addSpace,
+ authorize
}
return createComponent(AuthContext.Provider, {
diff --git a/packages/w3ui/packages/solid-uploader/package.json b/packages/w3ui/packages/solid-uploader/package.json
index fcd42cfd5..87eb4ee62 100644
--- a/packages/w3ui/packages/solid-uploader/package.json
+++ b/packages/w3ui/packages/solid-uploader/package.json
@@ -30,7 +30,7 @@
"dependencies": {
"@w3ui/solid-keyring": "workspace:^",
"@w3ui/uploader-core": "workspace:^",
- "@web3-storage/capabilities": "^2.2.0",
+ "@web3-storage/capabilities": "^4.0.0",
"multiformats": "^11.0.1"
},
"peerDependencies": {
diff --git a/packages/w3ui/packages/solid-uploads-list/package.json b/packages/w3ui/packages/solid-uploads-list/package.json
index 785ec1b92..b45813db0 100644
--- a/packages/w3ui/packages/solid-uploads-list/package.json
+++ b/packages/w3ui/packages/solid-uploads-list/package.json
@@ -30,13 +30,13 @@
"dependencies": {
"@w3ui/solid-keyring": "workspace:^",
"@w3ui/uploads-list-core": "workspace:^",
- "@web3-storage/capabilities": "^2.2.0"
+ "@web3-storage/capabilities": "^4.0.0"
},
"peerDependencies": {
"solid-js": "^1.5.0"
},
"devDependencies": {
- "@ucanto/interface": "^4.2.3"
+ "@ucanto/interface": "^6.2.0"
},
"eslintConfig": {
"extends": [
diff --git a/packages/w3ui/packages/uploader-core/package.json b/packages/w3ui/packages/uploader-core/package.json
index a16b4654e..c5caf6865 100644
--- a/packages/w3ui/packages/uploader-core/package.json
+++ b/packages/w3ui/packages/uploader-core/package.json
@@ -28,8 +28,8 @@
},
"homepage": "https://github.com/web3-storage/w3ui/tree/main/packages/uploader-core",
"dependencies": {
- "@ucanto/interface": "^4.2.3",
- "@web3-storage/upload-client": "^6.0.0",
+ "@ucanto/interface": "^6.2.0",
+ "@web3-storage/upload-client": "^7.0.0",
"multiformats": "^11.0.1"
},
"eslintConfig": {
diff --git a/packages/w3ui/packages/uploads-list-core/package.json b/packages/w3ui/packages/uploads-list-core/package.json
index a65e4ce94..fc455cbd9 100644
--- a/packages/w3ui/packages/uploads-list-core/package.json
+++ b/packages/w3ui/packages/uploads-list-core/package.json
@@ -28,8 +28,8 @@
},
"homepage": "https://github.com/web3-storage/w3ui/tree/main/packages/uploads-list-core",
"dependencies": {
- "@ucanto/interface": "^4.2.3",
- "@web3-storage/upload-client": "^6.0.0"
+ "@ucanto/interface": "^6.2.0",
+ "@web3-storage/upload-client": "^7.0.0"
},
"eslintConfig": {
"extends": [
diff --git a/packages/w3ui/packages/vue-keyring/package.json b/packages/w3ui/packages/vue-keyring/package.json
index d43d63988..eb7487089 100644
--- a/packages/w3ui/packages/vue-keyring/package.json
+++ b/packages/w3ui/packages/vue-keyring/package.json
@@ -33,9 +33,9 @@
"vue": "^3.0.0"
},
"devDependencies": {
- "@ucanto/interface": "^4.2.3",
- "@ucanto/principal": "^4.2.3",
- "@web3-storage/access": "^9.4.0"
+ "@ucanto/interface": "^6.2.0",
+ "@ucanto/principal": "^5.1.0",
+ "@web3-storage/access": "11.0.0-rc.0"
},
"eslintConfig": {
"extends": [
diff --git a/packages/w3ui/packages/vue-keyring/src/providers/Keyring.ts b/packages/w3ui/packages/vue-keyring/src/providers/Keyring.ts
index ba86f08d8..6bcc00451 100644
--- a/packages/w3ui/packages/vue-keyring/src/providers/Keyring.ts
+++ b/packages/w3ui/packages/vue-keyring/src/providers/Keyring.ts
@@ -6,12 +6,13 @@ import {
Ref,
shallowReactive
} from 'vue'
-import { createAgent, getCurrentSpace, getSpaces } from '@w3ui/keyring-core'
+import { createAgent, getCurrentSpace as getCurrentSpaceInAgent, getSpaces } from '@w3ui/keyring-core'
import type {
KeyringContextState,
KeyringContextActions,
ServiceConfig
} from '@w3ui/keyring-core'
+import { authorizeWithSocket } from '@web3-storage/access/agent'
import type { Agent } from '@web3-storage/access'
import type { Capability, DID, Proof } from '@ucanto/interface'
@@ -30,6 +31,7 @@ interface KeyringProviderInjectionKeyType {
registerSpace: InjectionKey
cancelRegisterSpace: InjectionKey
getProofs: InjectionKey
+ authorize: InjectionKey
}
/**
@@ -46,10 +48,11 @@ export const KeyringProviderInjectionKey: KeyringProviderInjectionKeyType = {
setCurrentSpace: Symbol('w3ui keyring setCurrentSpace'),
registerSpace: Symbol('w3ui keyring registerSpace'),
cancelRegisterSpace: Symbol('w3ui keyring cancelRegisterSpace'),
- getProofs: Symbol('w3ui keyring getProofs')
+ getProofs: Symbol('w3ui keyring getProofs'),
+ authorize: Symbol('w3ui keyring authorize')
}
-export interface KeyringProviderProps extends ServiceConfig {}
+export interface KeyringProviderProps extends ServiceConfig { }
/**
* Provider for authentication with the service.
@@ -59,7 +62,8 @@ export const KeyringProvider = defineComponent({
const state = shallowReactive({
agent: undefined,
space: undefined,
- spaces: []
+ spaces: [],
+ account: undefined
})
let agent: Agent | undefined
let registerAbortController: AbortController
@@ -81,12 +85,35 @@ export const KeyringProvider = defineComponent({
if (agent == null) {
agent = await createAgent({ servicePrincipal, connection })
state.agent = agent.issuer
- state.space = getCurrentSpace(agent)
+ state.space = getCurrentSpaceInAgent(agent)
state.spaces = getSpaces(agent)
}
return agent
}
+ provide(KeyringProviderInjectionKey.authorize,
+ async (email: '{string}@{string}'): Promise => {
+ const agent = await getAgent()
+ const controller = new AbortController()
+ registerAbortController = controller
+
+ try {
+ await authorizeWithSocket(agent, email, { signal: controller.signal })
+ // TODO is there other state that needs to be initialized?
+ state.account = email
+ const newSpaces = getSpaces(agent)
+ state.spaces = newSpaces
+ const newCurrentSpace = getCurrentSpaceInAgent(agent) ?? newSpaces[0]
+ if (newCurrentSpace != null) {
+ state.space = newCurrentSpace
+ }
+ } catch (error) {
+ if (!controller.signal.aborted) {
+ throw error
+ }
+ }
+ })
+
provide(KeyringProviderInjectionKey.cancelRegisterSpace, (): void => {
if (registerAbortController != null) {
registerAbortController.abort()
@@ -99,7 +126,7 @@ export const KeyringProvider = defineComponent({
const agent = await getAgent()
const { did } = await agent.createSpace(name)
await agent.setCurrentSpace(did)
- state.space = getCurrentSpace(agent)
+ state.space = getCurrentSpaceInAgent(agent)
return did
}
)
@@ -113,7 +140,7 @@ export const KeyringProvider = defineComponent({
try {
await agent.registerSpace(email, { signal: controller.signal })
- state.space = getCurrentSpace(agent)
+ state.space = getCurrentSpaceInAgent(agent)
state.spaces = getSpaces(agent)
} catch (error) {
if (!controller.signal.aborted) {
@@ -127,8 +154,8 @@ export const KeyringProvider = defineComponent({
KeyringProviderInjectionKey.setCurrentSpace,
async (did: DID): Promise => {
const agent = await getAgent()
- await agent.setCurrentSpace(did)
- state.space = getCurrentSpace(agent)
+ await agent.setCurrentSpace(did as DID<'key'>)
+ state.space = getCurrentSpaceInAgent(agent)
}
)
diff --git a/packages/w3ui/packages/vue-uploader/package.json b/packages/w3ui/packages/vue-uploader/package.json
index 6a7840915..c516986f9 100644
--- a/packages/w3ui/packages/vue-uploader/package.json
+++ b/packages/w3ui/packages/vue-uploader/package.json
@@ -29,7 +29,7 @@
"dependencies": {
"@w3ui/uploader-core": "workspace:^",
"@w3ui/vue-keyring": "workspace:^",
- "@web3-storage/capabilities": "^2.2.0",
+ "@web3-storage/capabilities": "^4.0.0",
"multiformats": "^11.0.1"
},
"peerDependencies": {
diff --git a/packages/w3ui/packages/vue-uploads-list/package.json b/packages/w3ui/packages/vue-uploads-list/package.json
index 4cf473c49..84d7fe706 100644
--- a/packages/w3ui/packages/vue-uploads-list/package.json
+++ b/packages/w3ui/packages/vue-uploads-list/package.json
@@ -29,7 +29,7 @@
"dependencies": {
"@w3ui/uploads-list-core": "workspace:^",
"@w3ui/vue-keyring": "workspace:^",
- "@web3-storage/capabilities": "^2.2.0"
+ "@web3-storage/capabilities": "^4.0.0"
},
"peerDependencies": {
"vue": "^3.0.0"
diff --git a/packages/w3ui/pnpm-lock.yaml b/packages/w3ui/pnpm-lock.yaml
index e23f9861d..1454bd2bc 100644
--- a/packages/w3ui/pnpm-lock.yaml
+++ b/packages/w3ui/pnpm-lock.yaml
@@ -18,11 +18,11 @@ importers:
'@types/jest': ^29.4.0
'@types/jsdom': ^20.0.1
'@types/react': ^18.0.26
- '@ucanto/client': ^4.2.3
- '@ucanto/server': ^4.2.3
- '@ucanto/transport': ^4.2.3
+ '@ucanto/client': ^5.1.0
+ '@ucanto/server': ^6.1.0
+ '@ucanto/transport': ^5.1.1
'@web-std/file': ^3.0.2
- '@web3-storage/capabilities': ^2.2.0
+ '@web3-storage/capabilities': ^4.0.0
esm: ^3.2.25
fake-indexeddb: ^4.0.1
hd-scripts: ^4.1.0
@@ -55,11 +55,11 @@ importers:
'@types/jest': 29.4.0
'@types/jsdom': 20.0.1
'@types/react': 18.0.26
- '@ucanto/client': 4.2.3
- '@ucanto/server': 4.2.3
- '@ucanto/transport': 4.2.3
+ '@ucanto/client': 5.1.0
+ '@ucanto/server': 6.1.0
+ '@ucanto/transport': 5.1.1
'@web-std/file': 3.0.2
- '@web3-storage/capabilities': 2.2.0
+ '@web3-storage/capabilities': 4.0.0
esm: 3.2.25
fake-indexeddb: 4.0.1
hd-scripts: 4.1.0
@@ -132,7 +132,7 @@ importers:
'@storybook/testing-library': ^0.0.13
'@types/react': ^18.0.26
'@types/react-dom': ^18.0.9
- '@ucanto/interface': ^4.2.3
+ '@ucanto/interface': ^6.2.0
'@vitejs/plugin-react': ^3.0.0
'@w3ui/keyring-core': workspace:^2.0.1
'@w3ui/react': workspace:^
@@ -167,7 +167,7 @@ importers:
'@storybook/testing-library': 0.0.13_biqbaboplfbrettd7655fr4n2y
'@types/react': 18.0.26
'@types/react-dom': 18.0.9
- '@ucanto/interface': 4.2.3
+ '@ucanto/interface': 6.2.0
'@vitejs/plugin-react': 3.0.0_vite@4.0.3
'@w3ui/uploads-list-core': link:../../../packages/uploads-list-core
multiformats: 11.0.1
@@ -240,8 +240,8 @@ importers:
'@ipld/dag-ucan': ^3.2.0
'@preact/preset-vite': ^2.4.0
'@types/blueimp-md5': ^2.18.0
- '@ucanto/core': ^4.1.0
- '@ucanto/interface': ^4.1.0
+ '@ucanto/core': ^5.2.0
+ '@ucanto/interface': ^6.2.0
'@w3ui/keyring-core': workspace:^
'@w3ui/react-keyring': workspace:^
'@w3ui/react-uploader': workspace:^
@@ -269,8 +269,8 @@ importers:
devDependencies:
'@preact/preset-vite': 2.5.0_preact@10.11.3+vite@4.0.3
'@types/blueimp-md5': 2.18.0
- '@ucanto/core': 4.2.3
- '@ucanto/interface': 4.2.3
+ '@ucanto/core': 5.2.0
+ '@ucanto/interface': 6.2.0
autoprefixer: 10.4.13_postcss@8.4.21
postcss: 8.4.21
tailwindcss: 3.2.4_postcss@8.4.21
@@ -462,13 +462,13 @@ importers:
packages/keyring-core:
specifiers:
- '@ucanto/interface': ^4.2.3
- '@ucanto/principal': ^4.2.3
- '@web3-storage/access': ^9.4.0
+ '@ucanto/interface': ^6.2.0
+ '@ucanto/principal': ^5.1.0
+ '@web3-storage/access': 11.0.0-rc.0
dependencies:
- '@ucanto/interface': 4.2.3
- '@ucanto/principal': 4.2.3
- '@web3-storage/access': 9.4.0
+ '@ucanto/interface': 6.2.0
+ '@ucanto/principal': 5.1.0
+ '@web3-storage/access': 11.0.0-rc.0
packages/react:
specifiers:
@@ -490,20 +490,22 @@ importers:
specifiers:
'@testing-library/react': ^13.4.0
'@testing-library/user-event': ^14.4.3
- '@ucanto/interface': ^4.2.3
- '@ucanto/principal': ^4.2.3
+ '@ucanto/interface': ^6.2.0
+ '@ucanto/principal': ^5.1.0
'@w3ui/keyring-core': workspace:^
- '@web3-storage/access': ^9.4.0
+ '@web3-storage/access': 11.0.0-rc.0
ariakit-react-utils: 0.17.0-next.27
+ use-local-storage-state: ^18.2.1
dependencies:
'@w3ui/keyring-core': link:../keyring-core
ariakit-react-utils: 0.17.0-next.27
+ use-local-storage-state: 18.2.1
devDependencies:
'@testing-library/react': 13.4.0
'@testing-library/user-event': 14.4.3
- '@ucanto/interface': 4.2.3
- '@ucanto/principal': 4.2.3
- '@web3-storage/access': 9.4.0
+ '@ucanto/interface': 6.2.0
+ '@ucanto/principal': 5.1.0
+ '@web3-storage/access': 11.0.0-rc.0
packages/react-uploader:
specifiers:
@@ -511,13 +513,13 @@ importers:
'@testing-library/user-event': ^14.4.3
'@w3ui/react-keyring': workspace:^
'@w3ui/uploader-core': workspace:^
- '@web3-storage/capabilities': ^2.2.0
+ '@web3-storage/capabilities': ^4.0.0
ariakit-react-utils: 0.17.0-next.27
multiformats: ^11.0.1
dependencies:
'@w3ui/react-keyring': link:../react-keyring
'@w3ui/uploader-core': link:../uploader-core
- '@web3-storage/capabilities': 2.2.0
+ '@web3-storage/capabilities': 4.0.0
ariakit-react-utils: 0.17.0-next.27
multiformats: 11.0.1
devDependencies:
@@ -530,12 +532,12 @@ importers:
'@testing-library/user-event': ^14.4.3
'@w3ui/react-keyring': workspace:^
'@w3ui/uploads-list-core': workspace:^
- '@web3-storage/capabilities': ^2.3.0
+ '@web3-storage/capabilities': ^4.0.0
ariakit-react-utils: 0.17.0-next.27
dependencies:
'@w3ui/react-keyring': link:../react-keyring
'@w3ui/uploads-list-core': link:../uploads-list-core
- '@web3-storage/capabilities': 2.3.0
+ '@web3-storage/capabilities': 4.0.0
ariakit-react-utils: 0.17.0-next.27
devDependencies:
'@testing-library/react': 13.4.0
@@ -543,58 +545,58 @@ importers:
packages/solid-keyring:
specifiers:
- '@ucanto/interface': ^4.2.3
- '@ucanto/principal': ^4.2.3
+ '@ucanto/interface': ^6.2.0
+ '@ucanto/principal': ^5.1.0
'@w3ui/keyring-core': workspace:^
- '@web3-storage/access': ^9.4.0
+ '@web3-storage/access': 11.0.0-rc.0
dependencies:
- '@ucanto/interface': 4.2.3
- '@ucanto/principal': 4.2.3
+ '@ucanto/interface': 6.2.0
+ '@ucanto/principal': 5.1.0
'@w3ui/keyring-core': link:../keyring-core
- '@web3-storage/access': 9.4.0
+ '@web3-storage/access': 11.0.0-rc.0
packages/solid-uploader:
specifiers:
'@w3ui/solid-keyring': workspace:^
'@w3ui/uploader-core': workspace:^
- '@web3-storage/capabilities': ^2.2.0
+ '@web3-storage/capabilities': ^4.0.0
multiformats: ^11.0.1
dependencies:
'@w3ui/solid-keyring': link:../solid-keyring
'@w3ui/uploader-core': link:../uploader-core
- '@web3-storage/capabilities': 2.2.0
+ '@web3-storage/capabilities': 4.0.0
multiformats: 11.0.1
packages/solid-uploads-list:
specifiers:
- '@ucanto/interface': ^4.2.3
+ '@ucanto/interface': ^6.2.0
'@w3ui/solid-keyring': workspace:^
'@w3ui/uploads-list-core': workspace:^
- '@web3-storage/capabilities': ^2.2.0
+ '@web3-storage/capabilities': ^4.0.0
dependencies:
'@w3ui/solid-keyring': link:../solid-keyring
'@w3ui/uploads-list-core': link:../uploads-list-core
- '@web3-storage/capabilities': 2.2.0
+ '@web3-storage/capabilities': 4.0.0
devDependencies:
- '@ucanto/interface': 4.2.3
+ '@ucanto/interface': 6.2.0
packages/uploader-core:
specifiers:
- '@ucanto/interface': ^4.2.3
- '@web3-storage/upload-client': ^6.0.0
+ '@ucanto/interface': ^6.2.0
+ '@web3-storage/upload-client': ^7.0.0
multiformats: ^11.0.1
dependencies:
- '@ucanto/interface': 4.2.3
- '@web3-storage/upload-client': 6.0.0
+ '@ucanto/interface': 6.2.0
+ '@web3-storage/upload-client': 7.0.0
multiformats: 11.0.1
packages/uploads-list-core:
specifiers:
- '@ucanto/interface': ^4.2.3
- '@web3-storage/upload-client': ^6.0.0
+ '@ucanto/interface': ^6.2.0
+ '@web3-storage/upload-client': ^7.0.0
dependencies:
- '@ucanto/interface': 4.2.3
- '@web3-storage/upload-client': 6.0.0
+ '@ucanto/interface': 6.2.0
+ '@web3-storage/upload-client': 7.0.0
packages/vitest-environment-w3ui:
specifiers:
@@ -604,38 +606,38 @@ importers:
packages/vue-keyring:
specifiers:
- '@ucanto/interface': ^4.2.3
- '@ucanto/principal': ^4.2.3
+ '@ucanto/interface': ^6.2.0
+ '@ucanto/principal': ^5.1.0
'@w3ui/keyring-core': workspace:^
- '@web3-storage/access': ^9.4.0
+ '@web3-storage/access': 11.0.0-rc.0
dependencies:
'@w3ui/keyring-core': link:../keyring-core
devDependencies:
- '@ucanto/interface': 4.2.3
- '@ucanto/principal': 4.2.3
- '@web3-storage/access': 9.4.0
+ '@ucanto/interface': 6.2.0
+ '@ucanto/principal': 5.1.0
+ '@web3-storage/access': 11.0.0-rc.0
packages/vue-uploader:
specifiers:
'@w3ui/uploader-core': workspace:^
'@w3ui/vue-keyring': workspace:^
- '@web3-storage/capabilities': ^2.2.0
+ '@web3-storage/capabilities': ^4.0.0
multiformats: ^11.0.1
dependencies:
'@w3ui/uploader-core': link:../uploader-core
'@w3ui/vue-keyring': link:../vue-keyring
- '@web3-storage/capabilities': 2.2.0
+ '@web3-storage/capabilities': 4.0.0
multiformats: 11.0.1
packages/vue-uploads-list:
specifiers:
'@w3ui/uploads-list-core': workspace:^
'@w3ui/vue-keyring': workspace:^
- '@web3-storage/capabilities': ^2.2.0
+ '@web3-storage/capabilities': ^4.0.0
dependencies:
'@w3ui/uploads-list-core': link:../uploads-list-core
'@w3ui/vue-keyring': link:../vue-keyring
- '@web3-storage/capabilities': 2.2.0
+ '@web3-storage/capabilities': 4.0.0
packages:
@@ -3315,32 +3317,34 @@ packages:
multiformats: 11.0.1
varint: 6.0.0
- /@ipld/dag-cbor/8.0.1:
- resolution: {integrity: sha512-mHRuzgGXNk0Y5W7nNQdN37qJiig1Kdgf92icBVFRUNtBc9Ezl5DIdWfiGWBucHBrhqPBncxoH3As9cHPIRozxA==}
+ /@ipld/car/5.1.1:
+ resolution: {integrity: sha512-HoFTUqUJL9cPGhC9qRmHCvamfIsj1JllQSQ/Xu9/KN/VNJp8To9Ms4qiZPEMOwcrNFclfYqrahjGYbf4KL/d9A==}
engines: {node: '>=16.0.0', npm: '>=7.0.0'}
dependencies:
- cborg: 1.10.0
- multiformats: 11.0.1
+ '@ipld/dag-cbor': 9.0.0
+ cborg: 1.10.1
+ multiformats: 11.0.2
+ varint: 6.0.0
/@ipld/dag-cbor/9.0.0:
resolution: {integrity: sha512-zdsiSiYDEOIDW7mmWOYWC9gukjXO+F8wqxz/LfN7iSwTfIyipC8+UQrCbPupFMRb/33XQTZk8yl3My8vUQBRoA==}
engines: {node: '>=16.0.0', npm: '>=7.0.0'}
dependencies:
- cborg: 1.10.0
- multiformats: 11.0.1
+ cborg: 1.10.1
+ multiformats: 11.0.2
/@ipld/dag-json/10.0.0:
resolution: {integrity: sha512-u/PfR2sT9AiZZDUl1VNspx3OP13zuvBXAd3sKiURlSOoWfoLigxTCs+sXeaXA0hoXU7u1M2DECMt4LCUHuApSA==}
engines: {node: '>=16.0.0', npm: '>=7.0.0'}
dependencies:
- cborg: 1.10.0
+ cborg: 1.10.1
multiformats: 11.0.1
- /@ipld/dag-pb/4.0.0:
- resolution: {integrity: sha512-8FB/qTlNowCiszL9Sek8xH6xIQxIioXuzZ5B1jVPknQMVkd08nZUHzDjrn1Y6MqJ5PrXWLrBwNghGMWPPpvNVw==}
+ /@ipld/dag-pb/4.0.2:
+ resolution: {integrity: sha512-me9oEPb7UNPWSplUFCXyxnQE3/WlsjOljqO2RZN44XOmGkBY0/WVklbXorVE1eiv0Rt3p6dBS2x36Rq8A0Am8A==}
engines: {node: '>=16.0.0', npm: '>=7.0.0'}
dependencies:
- multiformats: 11.0.1
+ multiformats: 11.0.2
dev: false
/@ipld/dag-ucan/3.2.0:
@@ -3350,14 +3354,16 @@ packages:
'@ipld/dag-json': 10.0.0
multiformats: 11.0.1
- /@ipld/unixfs/2.0.1:
- resolution: {integrity: sha512-W3LD67tLrIGpCVYFN6N/x6bL3o03zmsfd7jPAD1aXfGXaQWWa95qXPwc6PMVRTttxha/bHMKQiG2ZeFCqp83Ew==}
+ /@ipld/unixfs/2.1.1:
+ resolution: {integrity: sha512-g3gr/3XvfQs4x2VFjlICae09ul5fbWCKRInN6Vgeot2+GH0h/krr3PqZCIo4dy4Ou2mQOsIddxUvG8UZ4p9SbQ==}
dependencies:
- '@ipld/dag-pb': 4.0.0
+ '@ipld/dag-pb': 4.0.2
+ '@multiformats/murmur3': 2.1.3
+ '@perma/map': 1.0.2
'@web-std/stream': 1.0.1
actor: 2.3.1
- multiformats: 11.0.1
- protobufjs: 7.2.0
+ multiformats: 11.0.2
+ protobufjs: 7.2.2
rabin-rs: 2.1.0
dev: false
@@ -3515,8 +3521,16 @@ packages:
react: 18.2.0
dev: true
- /@noble/ed25519/1.7.1:
- resolution: {integrity: sha512-Rk4SkJFaXZiznFyC/t77Q0NKS4FL7TLJJsVG2V2oiEq3kJVeTdxysEe/yRWSpnWMe808XRDJ+VFh5pt/FN5plw==}
+ /@multiformats/murmur3/2.1.3:
+ resolution: {integrity: sha512-YvLK1IrLnRckPsvXhOkZjaIGNonsEdD1dL3NPSaLilV/WjVYeBgnNZXTUsaPzFXGrIFM7motx+yCmmqzXO6gtQ==}
+ engines: {node: '>=16.0.0', npm: '>=7.0.0'}
+ dependencies:
+ multiformats: 11.0.2
+ murmurhash3js-revisited: 3.0.0
+ dev: false
+
+ /@noble/ed25519/1.7.3:
+ resolution: {integrity: sha512-iR8GBkDt0Q3GyaVcIu7mSsVIqnFbkbRzGLWlvhwunacoLwt4J3swfKhfaM6rN6WY+TBGoYT1GtT1mIh2/jGbRQ==}
/@nodelib/fs.scandir/2.1.5:
resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
@@ -3539,6 +3553,12 @@ packages:
fastq: 1.14.0
dev: true
+ /@perma/map/1.0.2:
+ resolution: {integrity: sha512-hujwGOY6yTYnpf5YAtpD5MJAI1kcsVPqyN0lxG8Sampf/InO3jmX/MlJCHCGFPpPqB5JyO5WNnL+tUs1Umqe0A==}
+ dependencies:
+ murmurhash3js-revisited: 3.0.0
+ dev: false
+
/@phenomnomnominal/tsquery/4.2.0_typescript@4.9.4:
resolution: {integrity: sha512-hR2U3uVcrrdkuG30ItQ+uFDs4ncZAybxWG0OjTE8ptPzVoU7GVeXpy+vMU8zX9EbmjGeITPw/su5HjYQyAH8bA==}
peerDependencies:
@@ -3882,7 +3902,7 @@ packages:
'@storybook/csf-plugin': 7.0.0-beta.29
'@storybook/csf-tools': 7.0.0-beta.29
'@storybook/global': 5.0.0
- '@storybook/mdx2-csf': 1.0.0-next.5
+ '@storybook/mdx2-csf': 1.0.0-next.6
'@storybook/node-logger': 7.0.0-beta.29
'@storybook/postinstall': 7.0.0-beta.29
'@storybook/preview-api': 7.0.0-beta.29
@@ -4211,7 +4231,7 @@ packages:
'@storybook/client-logger': 7.0.0-beta.29
'@storybook/core-common': 7.0.0-beta.29
'@storybook/csf-plugin': 7.0.0-beta.29
- '@storybook/mdx2-csf': 1.0.0-next.5
+ '@storybook/mdx2-csf': 1.0.0-next.6
'@storybook/node-logger': 7.0.0-beta.29
'@storybook/preview': 7.0.0-beta.29
'@storybook/preview-api': 7.0.0-beta.29
@@ -4585,8 +4605,8 @@ packages:
resolution: {integrity: sha512-Ha6GJXxEjqP9Z03iV7ehBKgsij0enB7GRcFstJOHjnV8WEDKfF8uPg3SHh2yfueww7P8SWS3Xc3Rzud80fJctQ==}
dev: true
- /@storybook/mdx2-csf/1.0.0-next.5:
- resolution: {integrity: sha512-02w0sgGZaK1agT050yCVhJ+o4rLHANWvLKWjQjeAsYbjneLC5ITt+3GDB4jRiWwJboZ8dHW1fGSK1Vg5fA34aQ==}
+ /@storybook/mdx2-csf/1.0.0-next.6:
+ resolution: {integrity: sha512-m6plojocU/rmrqWd26yvm8D+oHZPZ6PtSSFmZIgpNDEPVmc8s4fBD6LXOAB5MiPI5f8KLUr2HVhOMZ97o5pDTw==}
dev: true
/@storybook/node-logger/7.0.0-beta.29:
@@ -5069,6 +5089,11 @@ packages:
/@types/node/18.11.18:
resolution: {integrity: sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA==}
+ dev: true
+
+ /@types/node/18.15.5:
+ resolution: {integrity: sha512-Ark2WDjjZO7GmvsyFFf81MXuGTA/d6oP38anyxWOL6EREyBKAxKoFHwBhaZxCfLRLpO8JgVXwqOwSwa7jRcjew==}
+ dev: false
/@types/normalize-package-data/2.4.1:
resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==}
@@ -5307,61 +5332,61 @@ packages:
eslint-visitor-keys: 3.3.0
dev: true
- /@ucanto/client/4.2.3:
- resolution: {integrity: sha512-vIa0drEAeolQpSePpHtsW1bx8lzDdxtXi2fEdQ4f34xbI2VSOQuAgUURJTtRVmRXa5MweQoEGI9CHPKL4CMyFQ==}
+ /@ucanto/client/5.1.0:
+ resolution: {integrity: sha512-Rr2q3ARDmiaaVnvNkPNsIhS+1ORyCqQhGRSqf8ugfJVmvbvjLFA6EYxjknUdg5tqt0aVnYTNuZ/GwIxaqMzliA==}
dependencies:
- '@ucanto/interface': 4.2.3
- multiformats: 11.0.1
+ '@ucanto/interface': 6.2.0
+ multiformats: 11.0.2
- /@ucanto/core/4.2.3:
- resolution: {integrity: sha512-udvp7IMRCE3XFhPYiKISt52r8QjbrqG7d1papdtWwF6RAzTbIWhgXSwAjEbroYCr/gQst7U8aYsgr4xvG2miUQ==}
+ /@ucanto/core/5.2.0:
+ resolution: {integrity: sha512-Eblo2LfJyojRKmBk5/w25u1hhSCs6K3zUH/zNknwTrJg7CJYxw0hgsGcXrlkQf1TnSRzJVFEduK1ZzYCV55/Uw==}
dependencies:
- '@ipld/car': 5.1.0
+ '@ipld/car': 5.1.1
'@ipld/dag-cbor': 9.0.0
'@ipld/dag-ucan': 3.2.0
- '@ucanto/interface': 4.2.3
- multiformats: 11.0.1
+ '@ucanto/interface': 6.2.0
+ multiformats: 11.0.2
- /@ucanto/interface/4.2.3:
- resolution: {integrity: sha512-IoccqMc2/vqaPT6U061ylC138mQ3pLp6coqjXTDmlL9OHmskLcEeQh5Mxe0AYHWMhO1ZuB0LRIysBXk7xoK25Q==}
+ /@ucanto/interface/6.2.0:
+ resolution: {integrity: sha512-b37bjTxNWQE+O4f18fvb7/woe41Dvb4AfdbevPLmaJj1fZogssH9fVgWlZdVg8ZsJQhMxRyHDuH40QAvuKRR1w==}
dependencies:
'@ipld/dag-ucan': 3.2.0
- multiformats: 11.0.1
+ multiformats: 11.0.2
- /@ucanto/principal/4.2.3:
- resolution: {integrity: sha512-S02cKaMcIQhxk9uJfUCUb+f98zEEFsC+5BZC6aBoYVCEpXwVZD6+hc9xI0yIQl8zJyQVA3nnUUpLfLynsSox2A==}
+ /@ucanto/principal/5.1.0:
+ resolution: {integrity: sha512-niZzojYPYAgdszTmra82wGbl5YGHugUblMTPrEjuz3RFjXDCxW50IJFwzus3Z6k6Q6zIbXPU+yVxTbzJWg8/JA==}
dependencies:
'@ipld/dag-ucan': 3.2.0
- '@noble/ed25519': 1.7.1
- '@ucanto/interface': 4.2.3
- multiformats: 11.0.1
+ '@noble/ed25519': 1.7.3
+ '@ucanto/interface': 6.2.0
+ multiformats: 11.0.2
one-webcrypto: 1.0.3
- /@ucanto/server/4.2.3:
- resolution: {integrity: sha512-lmDC0d9mVGYfiqwzpiTG6CFZpGVw1GnFx9EOtozKPa+v2nzwqDAkwYAQwNrJ2nbJWQQeFi7/Jiaec9EmdPEpsg==}
+ /@ucanto/server/6.1.0:
+ resolution: {integrity: sha512-IRvYbv1iEAjgm8Rc4hqUPm2NGSU+R+X+wyHp3hUI/YdGji+bajghV4gU9klkDkgm0aqVuI1fDFyODWZb5UROtw==}
dependencies:
- '@ucanto/core': 4.2.3
- '@ucanto/interface': 4.2.3
- '@ucanto/validator': 4.2.3
+ '@ucanto/core': 5.2.0
+ '@ucanto/interface': 6.2.0
+ '@ucanto/validator': 6.1.0
dev: true
- /@ucanto/transport/4.2.3:
- resolution: {integrity: sha512-ZtHB5ybSB/1dBLhzJqjxGDEE+TTTNzc9HMrVA1AP5KHvaHPu2UtAmS2IMr+HrhSjcwWwdavK0qMQbXSfLWM+kg==}
+ /@ucanto/transport/5.1.1:
+ resolution: {integrity: sha512-5g2Xiofqalvmaw/UPRTdxV2be+KE3TMbFhG4ZNNPkDIBpdBduVENcLQPJ9ksD29Bc2ArIefXALxGzyGLgUPCBg==}
dependencies:
- '@ipld/car': 5.1.0
+ '@ipld/car': 5.1.1
'@ipld/dag-cbor': 9.0.0
- '@ucanto/core': 4.2.3
- '@ucanto/interface': 4.2.3
- multiformats: 11.0.1
+ '@ucanto/core': 5.2.0
+ '@ucanto/interface': 6.2.0
+ multiformats: 11.0.2
- /@ucanto/validator/4.2.3:
- resolution: {integrity: sha512-7lA9PK+c0Hu857eHuZIVX3ZBooqvOT25/CXUxGjqs5YFCY7dUhrNCxJYnWsPZnEdriq6x6VSj8pZPwN8I7CyQw==}
+ /@ucanto/validator/6.1.0:
+ resolution: {integrity: sha512-vZ40paByLgosllG+YfuI4eD7m3KyYG1ebEa9jZEkLDYjWh7WWBtYvBn40pziIiLfBCzum2zU1uP1SMOf63EqqQ==}
dependencies:
- '@ipld/car': 5.1.0
- '@ipld/dag-cbor': 8.0.1
- '@ucanto/core': 4.2.3
- '@ucanto/interface': 4.2.3
- multiformats: 11.0.1
+ '@ipld/car': 5.1.1
+ '@ipld/dag-cbor': 9.0.0
+ '@ucanto/core': 5.2.0
+ '@ucanto/interface': 6.2.0
+ multiformats: 11.0.2
/@vitejs/plugin-react/3.0.0_vite@4.0.3:
resolution: {integrity: sha512-1mvyPc0xYW5G8CHQvJIJXLoMjl5Ct3q2g5Y2s6Ccfgwm45y48LBvsla7az+GkkAtYikWQ4Lxqcsq5RHLcZgtNQ==}
@@ -5488,26 +5513,26 @@ packages:
web-streams-polyfill: 3.2.1
dev: false
- /@web3-storage/access/9.4.0:
- resolution: {integrity: sha512-GwrSHhOigNI009DRmRtJjqQ3JS/a+rlU7wXM7k5+FwMR9Kqr/Ayid+Ida1tN7NPEIKBqfe9wfXbVMowi86YNYw==}
+ /@web3-storage/access/11.0.0-rc.0:
+ resolution: {integrity: sha512-y3hwtlj8QhHHmK6XvzWRusm8E83jh3GkHon80wTCE0iB/BFlTNkOBeb+C5FhImC1vSFseBBG+FxLZffwfsnrYA==}
hasBin: true
dependencies:
'@ipld/car': 5.1.0
'@ipld/dag-cbor': 9.0.0
'@ipld/dag-ucan': 3.2.0
- '@ucanto/client': 4.2.3
- '@ucanto/core': 4.2.3
- '@ucanto/interface': 4.2.3
- '@ucanto/principal': 4.2.3
- '@ucanto/transport': 4.2.3
- '@ucanto/validator': 4.2.3
- '@web3-storage/capabilities': 2.3.0
+ '@ucanto/client': 5.1.0
+ '@ucanto/core': 5.2.0
+ '@ucanto/interface': 6.2.0
+ '@ucanto/principal': 5.1.0
+ '@ucanto/transport': 5.1.1
+ '@ucanto/validator': 6.1.0
+ '@web3-storage/capabilities': 4.0.0
bigint-mod-arith: 3.1.2
conf: 10.2.0
inquirer: 9.1.4
isomorphic-ws: 5.0.0_ws@8.12.0
kysely: 0.23.4
- multiformats: 11.0.1
+ multiformats: 11.0.2
one-webcrypto: 1.0.3
ora: 6.1.2
p-defer: 4.0.0
@@ -5521,36 +5546,37 @@ packages:
- bufferutil
- utf-8-validate
- /@web3-storage/capabilities/2.2.0:
- resolution: {integrity: sha512-TCGcpMSVQJa0CI2GzBxJSEZDdbilEe3dtXdCzwi9NWmulsnPPj3KjSil/qHW04pYtnfql4/9n4a+pxjx6iGNCA==}
+ /@web3-storage/capabilities/3.2.0:
+ resolution: {integrity: sha512-WtQNLpqfsq1v62+OJFaXUNXJsk+x8WWJZnok4tEd2p57uv1d9TeNnnWhzOo5qzGmoh1pqjlLoPjYrq78Ib9o7A==}
dependencies:
- '@ucanto/core': 4.2.3
- '@ucanto/interface': 4.2.3
- '@ucanto/principal': 4.2.3
- '@ucanto/transport': 4.2.3
- '@ucanto/validator': 4.2.3
+ '@ucanto/core': 5.2.0
+ '@ucanto/interface': 6.2.0
+ '@ucanto/principal': 5.1.0
+ '@ucanto/transport': 5.1.1
+ '@ucanto/validator': 6.1.0
+ dev: false
- /@web3-storage/capabilities/2.3.0:
- resolution: {integrity: sha512-+vg61eqK1eqQ+QD1hvChDDx6CXLGFnUsEA+W+g9yagCpq+H9yAqROncEEt+oluIGvAqNbFMrUb+bWRWxk0Tmuw==}
+ /@web3-storage/capabilities/4.0.0:
+ resolution: {integrity: sha512-O+WmApepwaNFNsOj8f66HrIgDl/VGsGLn4iJMyqZdiTxVupNXfFsSVI2iBGEaJlNI+RDzISejXnGtScy1abxGQ==}
dependencies:
- '@ucanto/core': 4.2.3
- '@ucanto/interface': 4.2.3
- '@ucanto/principal': 4.2.3
- '@ucanto/transport': 4.2.3
- '@ucanto/validator': 4.2.3
+ '@ucanto/core': 5.2.0
+ '@ucanto/interface': 6.2.0
+ '@ucanto/principal': 5.1.0
+ '@ucanto/transport': 5.1.1
+ '@ucanto/validator': 6.1.0
- /@web3-storage/upload-client/6.0.0:
- resolution: {integrity: sha512-oJ1/cLBSap25j2ZfC1RNOW9IisOnWMX2ay7sAWY9KPDiWe/coBXDOQB3vXxtPWSIBID6+SOSGaHh3+kXv8b4yg==}
+ /@web3-storage/upload-client/7.0.0:
+ resolution: {integrity: sha512-zPAdnay60PzKKqClXRWxGukdTiMFustmgcDmrWf7PAISZSoP2gvc5WFHYYY0NGlSOsgDUwN4zgl8noGsQQFisQ==}
dependencies:
- '@ipld/car': 5.1.0
+ '@ipld/car': 5.1.1
'@ipld/dag-ucan': 3.2.0
- '@ipld/unixfs': 2.0.1
- '@ucanto/client': 4.2.3
- '@ucanto/interface': 4.2.3
- '@ucanto/transport': 4.2.3
- '@web3-storage/capabilities': 2.3.0
- multiformats: 11.0.1
- p-queue: 7.3.0
+ '@ipld/unixfs': 2.1.1
+ '@ucanto/client': 5.1.0
+ '@ucanto/interface': 6.2.0
+ '@ucanto/transport': 5.1.1
+ '@web3-storage/capabilities': 3.2.0
+ multiformats: 11.0.2
+ p-queue: 7.3.4
p-retry: 5.1.2
dev: false
@@ -6406,6 +6432,10 @@ packages:
resolution: {integrity: sha512-/eM0JCaL99HDHxjySNQJLaolZFVdl6VA0/hEKIoiQPcQzE5LrG5QHdml0HaBt31brgB9dNe1zMr3f8IVrpotRQ==}
hasBin: true
+ /cborg/1.10.1:
+ resolution: {integrity: sha512-et6Qm8MOUY2kCWa5GKk2MlBVoPjHv0hQBmlzI/Z7+5V3VJCeIkGehIB3vWknNsm2kOkAIs6wEKJFJo8luWQQ/w==}
+ hasBin: true
+
/chai/4.3.7:
resolution: {integrity: sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==}
engines: {node: '>=4'}
@@ -10242,6 +10272,15 @@ packages:
resolution: {integrity: sha512-atWruyH34YiknSdL5yeIir00EDlJRpHzELYQxG7Iy29eCyL+VrZHpPrX5yqlik3jnuqpLpRKVZ0SGVb9UzKaSA==}
engines: {node: '>=16.0.0', npm: '>=7.0.0'}
+ /multiformats/11.0.2:
+ resolution: {integrity: sha512-b5mYMkOkARIuVZCpvijFj9a6m5wMVLC7cf/jIPd5D/ARDOfLC5+IFkbgDXQgcU2goIsTD/O9NY4DI/Mt4OGvlg==}
+ engines: {node: '>=16.0.0', npm: '>=7.0.0'}
+
+ /murmurhash3js-revisited/3.0.0:
+ resolution: {integrity: sha512-/sF3ee6zvScXMb1XFJ8gDsSnY+X8PbOyjIuBhtgis10W2Jx4ZjIhikUCIF9c4gpJxVnQIsPAFrSwTCuAjicP6g==}
+ engines: {node: '>=8.0.0'}
+ dev: false
+
/mute-stream/0.0.8:
resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==}
@@ -10604,8 +10643,8 @@ packages:
aggregate-error: 3.1.0
dev: true
- /p-queue/7.3.0:
- resolution: {integrity: sha512-5fP+yVQ0qp0rEfZoDTlP2c3RYBgxvRsw30qO+VtPPc95lyvSG+x6USSh1TuLB4n96IO6I8/oXQGsTgtna4q2nQ==}
+ /p-queue/7.3.4:
+ resolution: {integrity: sha512-esox8CWt0j9EZECFvkFl2WNPat8LN4t7WWeXq73D9ha0V96qPRufApZi4ZhPwXAln1uVVal429HVVKPa2X0yQg==}
engines: {node: '>=12'}
dependencies:
eventemitter3: 4.0.7
@@ -10995,8 +11034,8 @@ packages:
xtend: 4.0.2
dev: false
- /protobufjs/7.2.0:
- resolution: {integrity: sha512-hYCqTDuII4iJ4stZqiuGCSU8xxWl5JeXYpwARGtn/tWcKCAro6h3WQz+xpsNbXW0UYqpmTQFEyFWO0G0Kjt64g==}
+ /protobufjs/7.2.2:
+ resolution: {integrity: sha512-++PrQIjrom+bFDPpfmqXfAGSQs40116JRrqqyf53dymUMvvb5d/LMRyicRoF1AUKoXVS1/IgJXlEgcpr4gTF3Q==}
engines: {node: '>=12.0.0'}
requiresBuild: true
dependencies:
@@ -11010,7 +11049,7 @@ packages:
'@protobufjs/path': 1.1.2
'@protobufjs/pool': 1.1.0
'@protobufjs/utf8': 1.1.0
- '@types/node': 18.11.18
+ '@types/node': 18.15.5
long: 5.2.1
dev: false
@@ -12642,7 +12681,7 @@ packages:
resolution: {integrity: sha512-b+aKlI2oTnxnfeSQWV1sMacqSNxqhtXySaH6bflvONGxF8V/fT3ZlYH7z2qgGfydsvpVo4JUgM/Ylyfl2YouCg==}
engines: {node: '>=16.0.0', npm: '>=7.0.0'}
dependencies:
- multiformats: 11.0.1
+ multiformats: 11.0.2
/unbox-primitive/1.0.2:
resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==}
@@ -12793,6 +12832,14 @@ packages:
requires-port: 1.0.0
dev: true
+ /use-local-storage-state/18.2.1:
+ resolution: {integrity: sha512-JgFWmMIIsN3uIQ2hSDhYGiYdfykMFVPNX/vz5JX/9V1igJSUjEe30CgswH076YqBx4Njea1NJ6B4farIlnSLuA==}
+ engines: {node: '>=12'}
+ peerDependencies:
+ react: '>=18'
+ react-dom: '>=18'
+ dev: false
+
/use/3.1.1:
resolution: {integrity: sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==}
engines: {node: '>=0.10.0'}