Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: w3console cleanup and updates to packages to support it #507

Merged
merged 8 commits into from
Apr 27, 2023
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
feat: lift types up to reduce w3console dependencies
export more types from `keyring-core`, `uploader-core` and dependent packages to reduce `w3console`'s dependencies to just the `@w3ui/react-*` packages
travis committed Apr 11, 2023
commit 6dc9ef9f1bfa2c90915ef92fe9542234ea37f016
2 changes: 0 additions & 2 deletions examples/react/w3console/package.json
Original file line number Diff line number Diff line change
@@ -14,11 +14,9 @@
"@heroicons/react": "^2.0.17",
"@ipld/car": "^5.1.0",
"@ipld/dag-ucan": "^3.2.0",
"@w3ui/keyring-core": "workspace:^",
"@w3ui/react-keyring": "workspace:^",
"@w3ui/react-uploader": "workspace:^",
"@w3ui/react-uploads-list": "workspace:^",
"@w3ui/uploader-core": "workspace:^",
"blueimp-md5": "^2.19.0",
"preact": "^10.11.3",
"react-router-dom": "^6.9.0"
2 changes: 1 addition & 1 deletion examples/react/w3console/src/components/Loader.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { ArrowPathIcon } from '@heroicons/react/20/solid'

export default ({ className = '' }: { className?: 'string' }) => (
export default ({ className = '' }: { className?: string }) => (
travis marked this conversation as resolved.
Show resolved Hide resolved
<ArrowPathIcon className={`animate-spin ${className}`} />
)
2 changes: 1 addition & 1 deletion examples/react/w3console/src/components/SpaceFinder.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import type { Space } from '@w3ui/keyring-core'
import type { Space } from '@w3ui/react-keyring'

import React, { Fragment, useState } from 'react'
import { Combobox, Transition } from '@headlessui/react'
10 changes: 6 additions & 4 deletions examples/react/w3console/src/components/Uploader.tsx
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
import type { OnUploadComplete } from '@w3ui/react-uploader'
import type {
OnUploadComplete,
CARMetadata,
CID
} from '@w3ui/react-uploader'

import { Link, Version } from 'multiformats'
import { CloudArrowUpIcon } from '@heroicons/react/24/outline'
import { CARMetadata } from '@w3ui/uploader-core'
import {
Status,
Uploader as UploaderCore,
@@ -38,7 +40,7 @@ export const Errored = ({ error }: { error: any }): JSX.Element => (

interface DoneProps {
file?: File
dataCID?: Link<unknown, number, number, Version>
dataCID?: CID
storedDAGShards?: CARMetadata[]
}

6 changes: 1 addition & 5 deletions examples/react/w3console/src/components/W3API.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import React, { useMemo } from 'react'
import { ServiceConfig } from '@w3ui/uploader-core'
import { useMemo } from 'react'
import {
useUploader,
UploaderContextValue,
@@ -22,9 +21,6 @@ export interface W3APIContextValue {
uploader: UploaderContextValue
uploadsList: UploadsListContextValue
}
export interface UploaderProviderProps extends ServiceConfig {
children?: JSX.Element
}

export interface W3APIProviderProps {
children: JSX.Element | JSX.Element[]
3 changes: 1 addition & 2 deletions examples/react/w3console/src/pages/index.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import type { ChangeEvent } from 'react'
import type { Space } from '@w3ui/keyring-core'
import type { Space } from '@w3ui/react-keyring'

import { useEffect, useState } from 'react'
import { DIDKey } from '@ucanto/interface'
1 change: 1 addition & 0 deletions packages/react-keyring/src/index.ts
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
export type { Space } from '@w3ui/keyring-core'
export * from './providers/Keyring'
export * from './Authenticator'
3 changes: 1 addition & 2 deletions packages/react-uploader/package.json
Original file line number Diff line number Diff line change
@@ -33,8 +33,7 @@
"@w3ui/react-keyring": "workspace:^",
"@w3ui/uploader-core": "workspace:^",
"@web3-storage/capabilities": "^4.0.0",
"ariakit-react-utils": "0.17.0-next.27",
"multiformats": "^11.0.1"
"ariakit-react-utils": "0.17.0-next.27"
},
"peerDependencies": {
"react": "^16.8.0 || ^17.0.0 || ^18.0.0"
22 changes: 10 additions & 12 deletions packages/react-uploader/src/Uploader.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
import type { As, Component, Props, Options } from 'ariakit-react-utils'
import type { ChangeEvent } from 'react'
import type {
CID,
CARMetadata,
UploaderContextState,
UploaderContextActions
} from '@w3ui/uploader-core'

import React, {
useContext,
@@ -10,12 +16,6 @@ import React, {
Fragment
} from 'react'
import { createComponent, createElement } from 'ariakit-react-utils'
import { Link, Version } from 'multiformats'
import {
CARMetadata,
UploaderContextState,
UploaderContextActions
} from '@w3ui/uploader-core'
import { useUploader } from './providers/Uploader'

export enum Status {
@@ -46,7 +46,7 @@ export type UploaderComponentContextState = UploaderContextState & {
/**
* The CID of a successful upload
*/
dataCID?: Link<unknown, number, number, Version>
dataCID?: CID
/**
* Shards of a DAG uploaded to web3.storage
*/
@@ -86,17 +86,15 @@ const UploaderComponentContext = createContext<UploaderComponentContextValue>([

interface OnUploadCompleteProps {
file?: File
dataCID?: Link<unknown, number, number, Version>
dataCID?: CID
}

export type OnUploadComplete = (props: OnUploadCompleteProps) => void

export type UploaderRootOptions<T extends As = typeof Fragment> = Options<T> & {
onUploadComplete?: OnUploadComplete
}
export type UploaderRootProps<T extends As = typeof Fragment> = Props<
UploaderRootOptions<T>
>
export type UploaderRootProps<T extends As = typeof Fragment> = Props<UploaderRootOptions<T>>

/**
* Top level component of the headless Uploader.
@@ -110,7 +108,7 @@ export const UploaderRoot: Component<UploaderRootProps> = createComponent(
const [uploaderState, uploaderActions] = useUploader()
const [file, setFile] = useState<File>()
const [dataCID, setDataCID] =
useState<Link<unknown, number, number, Version>>()
useState<CID>()
const [status, setStatus] = useState(Status.Idle)
const [error, setError] = useState()

2 changes: 1 addition & 1 deletion packages/react-uploader/src/index.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
export type { Service, CARMetadata } from '@w3ui/uploader-core'
export type { Service, CARMetadata, CID } from '@w3ui/uploader-core'
export { uploadFile, uploadDirectory } from '@w3ui/uploader-core'
export * from './providers/Uploader'
export * from './Uploader'
1 change: 1 addition & 0 deletions packages/solid-keyring/src/index.ts
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
export type { Space } from '@w3ui/keyring-core'
export * from './providers/Keyring'
2 changes: 1 addition & 1 deletion packages/solid-uploader/src/index.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
export type { Service, CARMetadata } from '@w3ui/uploader-core'
export type { Service, CARMetadata, CID } from '@w3ui/uploader-core'
export { uploadFile, uploadDirectory } from '@w3ui/uploader-core'
export * from './providers/Uploader'
5 changes: 3 additions & 2 deletions packages/uploader-core/src/index.ts
Original file line number Diff line number Diff line change
@@ -6,6 +6,7 @@ export { uploadFile, uploadDirectory } from '@web3-storage/upload-client'

export type { CARMetadata, Service }

export type CID = Link<unknown, number, number, Version>
export interface UploaderContextState {
storedDAGShards: CARMetadata[]
}
@@ -19,11 +20,11 @@ export interface UploaderContextActions {
/**
* Upload a single file to the current space.
*/
uploadFile: (file: Blob) => Promise<Link<unknown, number, number, Version>>
uploadFile: (file: Blob) => Promise<CID>
/**
* Upload a directory of files to the current space.
*/
uploadDirectory: (
files: File[]
) => Promise<Link<unknown, number, number, Version>>
) => Promise<CID>
}
1 change: 1 addition & 0 deletions packages/vue-keyring/src/index.ts
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
export type { Space } from '@w3ui/keyring-core'
export * from './providers/Keyring'
2 changes: 1 addition & 1 deletion packages/vue-uploader/src/index.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
export { uploadFile, uploadDirectory } from '@w3ui/uploader-core'
export type { Service, CARMetadata } from '@w3ui/uploader-core'
export type { Service, CARMetadata, CID } from '@w3ui/uploader-core'

export * from './providers/Uploader'
12 changes: 3 additions & 9 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.