Use seed instead of signup page for admin + basic local file uploading using TUS & Uppy

This commit is contained in:
Ahmed Al-Taiar
2024-08-15 23:58:28 -04:00
parent 8493e613d7
commit a82caf96bf
16 changed files with 695 additions and 279 deletions

1
.gitignore vendored
View File

@ -22,3 +22,4 @@ api/src/lib/generateGraphiQLHeader.*
!.yarn/releases !.yarn/releases
!.yarn/sdks !.yarn/sdks
!.yarn/versions !.yarn/versions
files

View File

@ -4,9 +4,11 @@
"private": true, "private": true,
"dependencies": { "dependencies": {
"@redwoodjs/api": "7.7.4", "@redwoodjs/api": "7.7.4",
"@redwoodjs/api-server": "7.7.4",
"@redwoodjs/auth-dbauth-api": "7.7.4", "@redwoodjs/auth-dbauth-api": "7.7.4",
"@redwoodjs/graphql-server": "7.7.4", "@redwoodjs/graphql-server": "7.7.4",
"graphql-scalars": "^1.23.0", "@tus/file-store": "^1.4.0",
"@tus/server": "^1.7.0",
"nodemailer": "^6.9.14" "nodemailer": "^6.9.14"
}, },
"devDependencies": { "devDependencies": {

View File

@ -1,10 +1,3 @@
import {
CuidDefinition,
CuidResolver,
EmailAddressTypeDefinition,
EmailAddressResolver,
} from 'graphql-scalars'
import { createAuthDecoder } from '@redwoodjs/auth-dbauth-api' import { createAuthDecoder } from '@redwoodjs/auth-dbauth-api'
import { createGraphQLHandler } from '@redwoodjs/graphql-server' import { createGraphQLHandler } from '@redwoodjs/graphql-server'
@ -25,13 +18,6 @@ export const handler = createGraphQLHandler({
directives, directives,
sdls, sdls,
services, services,
schemaOptions: {
typeDefs: [CuidDefinition, EmailAddressTypeDefinition],
resolvers: {
Cuid: CuidResolver,
EmailAddress: EmailAddressResolver,
},
},
onException: () => { onException: () => {
// Disconnect from your database with an unhandled exception. // Disconnect from your database with an unhandled exception.
db.$disconnect() db.$disconnect()

View File

@ -1,4 +0,0 @@
export const schema = gql`
scalar Cuid
scalar EmailAddress
`

View File

@ -1,15 +0,0 @@
export const schema = gql`
type User {
id: Int!
username: String!
email: EmailAddress!
hashedPassword: String!
salt: String!
resetToken: String
resetTokenExpiresAt: DateTime
}
type Query {
userCount: Int! @skipAuth
}
`

View File

@ -33,7 +33,7 @@ export function censorEmail(email: string): string {
const firstChar = localPart[0] const firstChar = localPart[0]
const lastChar = localPart[localPart.length - 1] const lastChar = localPart[localPart.length - 1]
const middleLength = Math.min(localPart.length - 2, 7) const middleLength = Math.min(localPart.length - 2, 7)
const middle = ''.repeat(middleLength) const middle = '#'.repeat(middleLength)
return `${firstChar}${middle}${lastChar}@${domain}` return `${firstChar}${middle}${lastChar}@${domain}`
} }

33
api/src/server.ts Normal file
View File

@ -0,0 +1,33 @@
import { FileStore } from '@tus/file-store'
import { Server } from '@tus/server'
import { createServer } from '@redwoodjs/api-server'
import { logger } from 'src/lib/logger'
;(async () => {
const server = await createServer({
logger,
})
const tusServer = new Server({
path: '/files',
datastore: new FileStore({ directory: './files' }),
})
server.addContentTypeParser(
'application/offset+octet-stream',
(_request, _payload, done) => done(null)
)
server.all('/files', (req, res) => {
tusServer.handle(req.raw, res.raw)
return res
})
server.all('/files/*', (req, res) => {
tusServer.handle(req.raw, res.raw)
return res
})
await server.start()
})()

View File

@ -1,7 +0,0 @@
import type { QueryResolvers } from 'types/graphql'
import { db } from 'src/lib/db'
export const userCount: QueryResolvers['userCount'] = () => {
return db.user.count()
}

View File

@ -8,7 +8,7 @@
[web] [web]
title = "${NAME}" title = "${NAME}"
port = 8910 port = 8910
apiUrl = "/.redwood/functions" # You can customize graphql and dbauth urls individually too: see https://redwoodjs.com/docs/app-configuration-redwood-toml#api-paths apiUrl = "/api"
includeEnvironmentVariables = ["NAME"] includeEnvironmentVariables = ["NAME"]
[generate] [generate]
tests = false tests = false

View File

@ -1,27 +1,34 @@
// eslint-disable-next-line @typescript-eslint/no-unused-vars // eslint-disable-next-line @typescript-eslint/no-unused-vars
import { db } from 'api/src/lib/db' import { db } from 'api/src/lib/db'
// Manually apply seeds via the `yarn rw prisma db seed` command. import { hashPassword } from '@redwoodjs/auth-dbauth-api'
//
// Seeds automatically run the first time you run the `yarn rw prisma migrate dev`
// command and every time you run the `yarn rw prisma migrate reset` command.
//
// See https://redwoodjs.com/docs/database-seeds for more info
export default async () => { export default async () => {
try { try {
// Create your database records here! For example, seed some users: const admin = {
// username: 'admin',
// const users = [ email: process.env.GMAIL,
// { name: 'Alice', email: 'alice@redwoodjs.com }, password: process.env.GMAIL_SMTP_PASSWORD,
// { name: 'Bob', email: 'bob@redwoodjs.com }, }
// ]
//
// await db.user.createMany({ data: users })
console.info( const [hashedPassword, salt] = hashPassword(admin.password)
'\n No seed data, skipping. See scripts/seed.ts to start seeding your database!\n'
) await db.user.upsert({
where: {
email: admin.email,
},
create: {
username: admin.username,
email: admin.email,
hashedPassword,
salt,
},
update: {
username: admin.username,
hashedPassword,
salt,
},
})
} catch (error) { } catch (error) {
console.error(error) console.error(error)
} }

View File

@ -17,6 +17,15 @@
"@redwoodjs/forms": "7.7.4", "@redwoodjs/forms": "7.7.4",
"@redwoodjs/router": "7.7.4", "@redwoodjs/router": "7.7.4",
"@redwoodjs/web": "7.7.4", "@redwoodjs/web": "7.7.4",
"@uppy/compressor": "^2.0.1",
"@uppy/core": "^4.1.0",
"@uppy/dashboard": "^4.0.2",
"@uppy/drag-drop": "^4.0.1",
"@uppy/file-input": "^4.0.0",
"@uppy/image-editor": "^3.0.0",
"@uppy/progress-bar": "^4.0.0",
"@uppy/react": "^4.0.1",
"@uppy/tus": "^4.0.0",
"react": "18.2.0", "react": "18.2.0",
"react-dom": "18.2.0" "react-dom": "18.2.0"
}, },

View File

@ -7,10 +7,6 @@ import NavbarLayout from './layouts/NavbarLayout/NavbarLayout'
const Routes = () => { const Routes = () => {
return ( return (
<Router useAuth={useAuth}> <Router useAuth={useAuth}>
<Set wrap={AccountbarLayout} title="Create Admin Account">
<Route path="/create-admin" page={SignupPage} name="signup" />
</Set>
<Set wrap={AccountbarLayout} title="Login"> <Set wrap={AccountbarLayout} title="Login">
<Route path="/login" page={LoginPage} name="login" /> <Route path="/login" page={LoginPage} name="login" />
</Set> </Set>

View File

@ -0,0 +1,29 @@
import { useState } from 'react'
import Compressor from '@uppy/compressor'
import Uppy from '@uppy/core'
import ImageEditor from '@uppy/image-editor'
import { Dashboard } from '@uppy/react'
import Tus from '@uppy/tus'
import '@uppy/image-editor/dist/style.min.css'
import '@uppy/core/dist/style.min.css'
import '@uppy/dashboard/dist/style.min.css'
const Uploader = () => {
const [uppy] = useState(() =>
new Uppy({
restrictions: {
allowedFileTypes: ['image/*'],
maxNumberOfFiles: 10,
},
})
.use(Tus, { endpoint: 'http://localhost:8911/files' }) // TODO: check if env is production and change endpoint accordingly
.use(ImageEditor)
.use(Compressor)
)
return <Dashboard uppy={uppy} proudlyDisplayPoweredByUppy={false} />
}
export default Uploader

View File

@ -1,53 +1,15 @@
import { Metadata } from '@redwoodjs/web' import { Metadata } from '@redwoodjs/web'
import { toast } from '@redwoodjs/web/toast'
import { useAuth } from 'src/auth'
import Uploader from 'src/components/Uploader/Uploader'
const HomePage = () => { const HomePage = () => {
const { isAuthenticated } = useAuth()
return ( return (
<> <>
<Metadata title="Home" description="Home page" /> <Metadata title="Home" description="Home page" />
<button className="btn" onClick={() => toast.loading('Loading...')}> {isAuthenticated ? <Uploader /> : <></>}
Infinite loading
</button>
<button
className="btn"
onClick={() =>
toast.promise(
new Promise<number>((resolve, reject) => {
setTimeout(() => {
const x = Math.random()
x >= 0.5 ? resolve(x) : reject(x)
}, 750)
}),
{
loading: 'Loading...',
success: (res) => `Success: ${res.toFixed(4)}`,
error: (err: number) => `Error: ${err.toFixed(4)}`,
}
)
}
>
Loading -{'>'} Random result
</button>
<button className="btn" onClick={() => toast('Blank')}>
Blank
</button>
<button className="btn" onClick={() => toast.error('Error')}>
Error
</button>
<button className="btn" onClick={() => toast.success('Success')}>
Success
</button>
<button
className="btn"
onClick={() =>
toast(
"I'm baby sriracha poutine hammock pour-over direct trade, bruh coloring book ascot gatekeep put a bird on it YOLO biodiesel. Lyft wayfarers cloud bread, la croix lo-fi pork belly synth williamsburg before they sold out."
)
}
>
A pretty big notification
</button>
</> </>
) )
} }

View File

@ -1,161 +0,0 @@
import { useEffect, useRef } from 'react'
import { mdiEmail, mdiKey, mdiAccount } from '@mdi/js'
import { Icon } from '@mdi/react'
import {
Form,
Label,
TextField,
PasswordField,
Submit,
FieldError,
} from '@redwoodjs/forms'
import { navigate, routes } from '@redwoodjs/router'
import { Metadata, useQuery } from '@redwoodjs/web'
import { toast } from '@redwoodjs/web/toast'
import { useAuth } from 'src/auth'
const QUERY = gql`
query UserCount {
userCount
}
`
const SignupPage = () => {
const { data, loading } = useQuery(QUERY)
const { isAuthenticated, signUp } = useAuth()
useEffect(() => {
if (!loading && data.userCount >= 1) {
toast.error('Account already exists')
navigate(routes.home())
}
}, [data, loading])
useEffect(() => {
if (isAuthenticated) navigate(routes.home())
}, [isAuthenticated])
const emailRef = useRef<HTMLInputElement>(null)
useEffect(() => {
emailRef.current?.focus()
}, [])
const onSubmit = async (data: Record<string, string>) => {
const response = await signUp({
username: data.username,
password: data.password,
email: data.email.toLowerCase(),
})
if (response.message) toast(response.message)
else if (response.error) toast.error(response.error)
else toast.success('Welcome!')
}
if (loading) return <span className="loading loading-spinner loading-lg" />
return (
<>
<Metadata title="Sign Up" />
<div className="mx-auto my-32 flex w-fit flex-wrap items-center justify-center rounded-xl bg-base-100 p-2">
<Form onSubmit={onSubmit} className="space-y-2">
<Label
name="username"
className="input input-bordered input-disabled flex items-center gap-2"
errorClassName="input input-bordered input-disabled flex items-center gap-2 input-error"
>
<Label
name="username"
className="h-4 w-4 opacity-70"
errorClassName="h-4 w-4 text-error"
>
<Icon path={mdiAccount} />
</Label>
<TextField
name="username"
className="grow"
value="admin"
readOnly
/>
</Label>
<Label
name="email"
className="input input-bordered flex items-center gap-2"
errorClassName="input input-bordered flex items-center gap-2 input-error"
>
<Label
name="email"
className="h-4 w-4 opacity-70"
errorClassName="h-4 w-4 text-error"
>
<Icon path={mdiEmail} />
</Label>
<TextField
name="email"
className="grow"
placeholder="Email"
ref={emailRef}
validation={{
required: {
value: true,
message: 'Required',
},
pattern: {
value: new RegExp(
/^([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-]+)(\.[a-zA-Z]{2,5}){1,2}$/
),
message: 'Invalid email',
},
}}
/>
</Label>
<FieldError name="email" className="text-sm text-error" />
<Label
name="password"
className="input input-bordered flex items-center gap-2"
errorClassName="input input-bordered flex items-center gap-2 input-error"
>
<Label
name="password"
className="h-4 w-4 opacity-70"
errorClassName="h-4 w-4 text-error"
>
<Icon path={mdiKey} />
</Label>
<PasswordField
name="password"
className="grow"
placeholder="Password"
autoComplete="current-password"
validation={{
required: {
value: true,
message: 'Required',
},
minLength: {
value: 8,
message: 'Must be 8 or more characters',
},
}}
/>
</Label>
<FieldError name="password" className="text-sm text-error" />
<div className="flex w-full">
<Submit className="btn btn-primary mx-auto">Create</Submit>
</div>
</Form>
</div>
</>
)
}
export default SignupPage

600
yarn.lock
View File

@ -4475,6 +4475,17 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@redis/client@npm:^1.5.13":
version: 1.6.0
resolution: "@redis/client@npm:1.6.0"
dependencies:
cluster-key-slot: "npm:1.1.2"
generic-pool: "npm:3.9.0"
yallist: "npm:4.0.0"
checksum: 10c0/c80a01b4f72d32284515dac6d1aefe0e9c881d08b8db33281f87b51650c1c116b18074a29ca81599d15dccb37b29eef9b26a75a5755150ae27d163e680c34bf6
languageName: node
linkType: hard
"@redwoodjs/api-server@npm:7.7.4": "@redwoodjs/api-server@npm:7.7.4":
version: 7.7.4 version: 7.7.4
resolution: "@redwoodjs/api-server@npm:7.7.4" resolution: "@redwoodjs/api-server@npm:7.7.4"
@ -5295,6 +5306,13 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@transloadit/prettier-bytes@npm:^0.3.4":
version: 0.3.4
resolution: "@transloadit/prettier-bytes@npm:0.3.4"
checksum: 10c0/67834ae4e321067dbe0eed36116f7865aaa989b970931101d3715f105558d286643617c175e135bdf1655f0fe39b5cb2ce45ac7cf011466bc19e2a9eafe772c4
languageName: node
linkType: hard
"@trysound/sax@npm:0.2.0": "@trysound/sax@npm:0.2.0":
version: 0.2.0 version: 0.2.0
resolution: "@trysound/sax@npm:0.2.0" resolution: "@trysound/sax@npm:0.2.0"
@ -5354,6 +5372,42 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@tus/file-store@npm:^1.4.0":
version: 1.4.0
resolution: "@tus/file-store@npm:1.4.0"
dependencies:
"@redis/client": "npm:^1.5.13"
"@tus/utils": "npm:^0.3.0"
debug: "npm:^4.3.4"
dependenciesMeta:
"@redis/client":
optional: true
checksum: 10c0/28ca244dc9acd9ff62fd58c7b4af7c91b71eac12b357899ccc65fb7f583b93832674d7c3716da92293e54ab9d5227585d7d844be3bc2e4aa4015e1af818a6ec6
languageName: node
linkType: hard
"@tus/server@npm:^1.7.0":
version: 1.7.0
resolution: "@tus/server@npm:1.7.0"
dependencies:
"@redis/client": "npm:^1.5.13"
"@tus/utils": "npm:^0.3.0"
debug: "npm:^4.3.4"
lodash.throttle: "npm:^4.1.1"
dependenciesMeta:
"@redis/client":
optional: true
checksum: 10c0/64c06dbd4af16a6ac380acd702a125b69cf04a33e38485ef0e92e128a2f814b28202d83bcf89de180181ba45b30741675464f74688dc7e3c3f38462662ea8f23
languageName: node
linkType: hard
"@tus/utils@npm:^0.3.0":
version: 0.3.0
resolution: "@tus/utils@npm:0.3.0"
checksum: 10c0/65b357c80022018067b53640b984e79531e5335d04467eff24f256ae175bbf7055293e169e1589fd2064221fc1ffcc8032080c31f9b56655d1a17f4f3698b43a
languageName: node
linkType: hard
"@types/aria-query@npm:^5.0.1": "@types/aria-query@npm:^5.0.1":
version: 5.0.4 version: 5.0.4
resolution: "@types/aria-query@npm:5.0.4" resolution: "@types/aria-query@npm:5.0.4"
@ -5820,6 +5874,13 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@types/retry@npm:0.12.2":
version: 0.12.2
resolution: "@types/retry@npm:0.12.2"
checksum: 10c0/07481551a988cc90b423351919928b9ddcd14e3f5591cac3ab950851bb20646e55a10e89141b38bc3093d2056d4df73700b22ff2612976ac86a6367862381884
languageName: node
linkType: hard
"@types/semver@npm:^7.3.12": "@types/semver@npm:^7.3.12":
version: 7.5.8 version: 7.5.8
resolution: "@types/semver@npm:7.5.8" resolution: "@types/semver@npm:7.5.8"
@ -6060,6 +6121,233 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@uppy/companion-client@npm:^4.0.0":
version: 4.0.0
resolution: "@uppy/companion-client@npm:4.0.0"
dependencies:
"@uppy/utils": "npm:^6.0.0"
namespace-emitter: "npm:^2.0.1"
p-retry: "npm:^6.1.0"
peerDependencies:
"@uppy/core": ^4.0.0
checksum: 10c0/6212d6bb919a965b09148f9143fd3467f58db59147a5a2adab4c6c9582ddde6df204a7fb43a45d248af00a435e68e7d7440483c0435edf724664c8a1ff9c9967
languageName: node
linkType: hard
"@uppy/compressor@npm:^2.0.1":
version: 2.0.1
resolution: "@uppy/compressor@npm:2.0.1"
dependencies:
"@transloadit/prettier-bytes": "npm:^0.3.4"
"@uppy/utils": "npm:^6.0.1"
compressorjs: "npm:^1.2.1"
preact: "npm:^10.5.13"
promise-queue: "npm:^2.2.5"
peerDependencies:
"@uppy/core": ^4.1.0
checksum: 10c0/dd849e6dc3d73da3363bf69d6667e3ab5c02e56af8734766d757da453f906edf7ca4c6e6ae80ec51ef10ba4c172d8cb9128c3ab8992fa9a4356fc45973499570
languageName: node
linkType: hard
"@uppy/core@npm:^4.1.0":
version: 4.1.0
resolution: "@uppy/core@npm:4.1.0"
dependencies:
"@transloadit/prettier-bytes": "npm:^0.3.4"
"@uppy/store-default": "npm:^4.1.0"
"@uppy/utils": "npm:^6.0.1"
lodash: "npm:^4.17.21"
mime-match: "npm:^1.0.2"
namespace-emitter: "npm:^2.0.1"
nanoid: "npm:^5.0.0"
preact: "npm:^10.5.13"
checksum: 10c0/a8dec44ff49b0b206bb9a480aaa19159d3f4802d79a2e0523ef11c60ad82c96899db03621502cd558c58ef25fec2ed96e5d364d68abb6b00d4fcb488a70742c9
languageName: node
linkType: hard
"@uppy/dashboard@npm:^4.0.2":
version: 4.0.2
resolution: "@uppy/dashboard@npm:4.0.2"
dependencies:
"@transloadit/prettier-bytes": "npm:^0.3.4"
"@uppy/informer": "npm:^4.0.0"
"@uppy/provider-views": "npm:^4.0.0"
"@uppy/status-bar": "npm:^4.0.1"
"@uppy/thumbnail-generator": "npm:^4.0.0"
"@uppy/utils": "npm:^6.0.1"
classnames: "npm:^2.2.6"
lodash: "npm:^4.17.21"
memoize-one: "npm:^6.0.0"
nanoid: "npm:^5.0.0"
preact: "npm:^10.5.13"
shallow-equal: "npm:^3.0.0"
peerDependencies:
"@uppy/core": ^4.1.0
checksum: 10c0/e2e51f8d0fd438865bb4fb32f6084df64b50fc2f80884fbba8f2a2fb98454a622ff3597b0a2e86c5a64fd8f9f8e986f55b9edafc955da879cfba560363aac76f
languageName: node
linkType: hard
"@uppy/drag-drop@npm:^4.0.1":
version: 4.0.1
resolution: "@uppy/drag-drop@npm:4.0.1"
dependencies:
"@uppy/utils": "npm:^6.0.0"
preact: "npm:^10.5.13"
peerDependencies:
"@uppy/core": ^4.0.1
checksum: 10c0/db9ccd8a0d27787ebbcbb42d9ae713cc9b05748f4f5a6afe8e83a28b224a01980f1a09217e94578f37158d412ae6e18f8f9179507d611848a3477180e32eee2b
languageName: node
linkType: hard
"@uppy/file-input@npm:^4.0.0":
version: 4.0.0
resolution: "@uppy/file-input@npm:4.0.0"
dependencies:
"@uppy/utils": "npm:^6.0.0"
preact: "npm:^10.5.13"
peerDependencies:
"@uppy/core": ^4.0.0
checksum: 10c0/3bec88e89bc22659cb076a8d71c86e2149a56f1bdf17b5c6a4f189f4978ad9a386c66fdaa1bae2a77cd6cdfc71aebfcbe7b90a5e2a0b7163ebc004a8ed039ae2
languageName: node
linkType: hard
"@uppy/image-editor@npm:^3.0.0":
version: 3.0.0
resolution: "@uppy/image-editor@npm:3.0.0"
dependencies:
"@uppy/utils": "npm:^6.0.0"
cropperjs: "npm:1.5.7"
preact: "npm:^10.5.13"
peerDependencies:
"@uppy/core": ^4.0.0
checksum: 10c0/c609720ddb53c6116763a6f8e8569f05a6d67ed0e9664bdedcb65dca08a744d4bed2bcb141e8e701091c89a351cdf5bce28da57d0c39972a8a512ef200f063c7
languageName: node
linkType: hard
"@uppy/informer@npm:^4.0.0":
version: 4.0.0
resolution: "@uppy/informer@npm:4.0.0"
dependencies:
"@uppy/utils": "npm:^6.0.0"
preact: "npm:^10.5.13"
peerDependencies:
"@uppy/core": ^4.0.0
checksum: 10c0/6ebd4e40c323c79b24a59b621c51053e898003ae53219ed707a04761277ef13ffbe67753936a640f502bd74cfcd085a768620cc2f1b963de2b71bb92a7210fc9
languageName: node
linkType: hard
"@uppy/progress-bar@npm:^4.0.0":
version: 4.0.0
resolution: "@uppy/progress-bar@npm:4.0.0"
dependencies:
"@uppy/utils": "npm:^6.0.0"
preact: "npm:^10.5.13"
peerDependencies:
"@uppy/core": ^4.0.0
checksum: 10c0/6a169f376ae12bef9f2f217cb0644a6843d319ff4060800c3de11e88728ccfae8c0209138d7abadccd791ac736b05f19d6298fce740826d8ddf3b9e747d96354
languageName: node
linkType: hard
"@uppy/provider-views@npm:^4.0.0":
version: 4.0.0
resolution: "@uppy/provider-views@npm:4.0.0"
dependencies:
"@uppy/utils": "npm:^6.0.0"
classnames: "npm:^2.2.6"
nanoid: "npm:^5.0.0"
p-queue: "npm:^8.0.0"
preact: "npm:^10.5.13"
peerDependencies:
"@uppy/core": ^4.0.0
checksum: 10c0/ba900ad092d103170235927a9e0558e040373f36ce88e654d402afb3931b90ec5570e135cd0a41f934a9bd082c1e1a46a0a48eb170ee866abd5a8820085dc06b
languageName: node
linkType: hard
"@uppy/react@npm:^4.0.1":
version: 4.0.1
resolution: "@uppy/react@npm:4.0.1"
dependencies:
"@uppy/utils": "npm:^6.0.0"
use-sync-external-store: "npm:^1.2.0"
peerDependencies:
"@uppy/core": ^4.0.1
"@uppy/dashboard": ^4.0.1
"@uppy/drag-drop": ^4.0.1
"@uppy/file-input": ^4.0.0
"@uppy/progress-bar": ^4.0.0
"@uppy/status-bar": ^4.0.0
react: ^18.0.0
peerDependenciesMeta:
"@uppy/dashboard":
optional: true
"@uppy/drag-drop":
optional: true
"@uppy/file-input":
optional: true
"@uppy/progress-bar":
optional: true
"@uppy/status-bar":
optional: true
checksum: 10c0/1a90a04c3f96847c5c04145991e76f46678eb38a6f07939e51961536d212453a29190fc195b7db010e40a269e33471c7ccdd106e8b239686d958fb15bfa5da0f
languageName: node
linkType: hard
"@uppy/status-bar@npm:^4.0.1":
version: 4.0.1
resolution: "@uppy/status-bar@npm:4.0.1"
dependencies:
"@transloadit/prettier-bytes": "npm:^0.3.4"
"@uppy/utils": "npm:^6.0.1"
classnames: "npm:^2.2.6"
preact: "npm:^10.5.13"
peerDependencies:
"@uppy/core": ^4.1.0
checksum: 10c0/f8cb3aeb08be7cc8c0871a9bf25b269c288bbd9a8a324c4b3a2d293f0e09e5fc6a2aaab8df05bcf680f6226d822282a64858cc1bd4a05d9075a3469684d05996
languageName: node
linkType: hard
"@uppy/store-default@npm:^4.1.0":
version: 4.1.0
resolution: "@uppy/store-default@npm:4.1.0"
checksum: 10c0/35fa0576cfdcee005a2437e0899d494725462430d2d2a28991f4f91e2d81cc0e511812d2a5a9f946876412f3305b099408163cdcf46cd2ffeda5b9bab4beb759
languageName: node
linkType: hard
"@uppy/thumbnail-generator@npm:^4.0.0":
version: 4.0.0
resolution: "@uppy/thumbnail-generator@npm:4.0.0"
dependencies:
"@uppy/utils": "npm:^6.0.0"
exifr: "npm:^7.0.0"
peerDependencies:
"@uppy/core": ^4.0.0
checksum: 10c0/0152f9f15512581ab10217671eb0c257c0d74c848bb417a8f880c199d1dd30b3a3ad3101fa6601dc1f6aa173744ac57a773233f253c3649c8be8646bae246942
languageName: node
linkType: hard
"@uppy/tus@npm:^4.0.0":
version: 4.0.0
resolution: "@uppy/tus@npm:4.0.0"
dependencies:
"@uppy/companion-client": "npm:^4.0.0"
"@uppy/utils": "npm:^6.0.0"
tus-js-client: "npm:^4.1.0"
peerDependencies:
"@uppy/core": ^4.0.0
checksum: 10c0/043e8f3b7e3d026ddfacef1389c9e462a9bd14de0b7a0bac1b79f5b43b2cddc7f666506279de88c67fef1a5a2dd20a4272aaa894c3c15c86232056bdf486c9e5
languageName: node
linkType: hard
"@uppy/utils@npm:^6.0.0, @uppy/utils@npm:^6.0.1":
version: 6.0.1
resolution: "@uppy/utils@npm:6.0.1"
dependencies:
lodash: "npm:^4.17.21"
preact: "npm:^10.5.13"
checksum: 10c0/1226c2894d9cf7444759004a212abedc07c796da104b8bb9a7480f03dd508f9b9d020e59061403d9cf1cd80388c96ca74a57ce7017837cc4a05fc65c62c820e3
languageName: node
linkType: hard
"@vitejs/plugin-react@npm:4.2.1": "@vitejs/plugin-react@npm:4.2.1":
version: 4.2.1 version: 4.2.1
resolution: "@vitejs/plugin-react@npm:4.2.1" resolution: "@vitejs/plugin-react@npm:4.2.1"
@ -6967,10 +7255,12 @@ __metadata:
resolution: "api@workspace:api" resolution: "api@workspace:api"
dependencies: dependencies:
"@redwoodjs/api": "npm:7.7.4" "@redwoodjs/api": "npm:7.7.4"
"@redwoodjs/api-server": "npm:7.7.4"
"@redwoodjs/auth-dbauth-api": "npm:7.7.4" "@redwoodjs/auth-dbauth-api": "npm:7.7.4"
"@redwoodjs/graphql-server": "npm:7.7.4" "@redwoodjs/graphql-server": "npm:7.7.4"
"@tus/file-store": "npm:^1.4.0"
"@tus/server": "npm:^1.7.0"
"@types/nodemailer": "npm:^6.4.15" "@types/nodemailer": "npm:^6.4.15"
graphql-scalars: "npm:^1.23.0"
nodemailer: "npm:^6.9.14" nodemailer: "npm:^6.9.14"
languageName: unknown languageName: unknown
linkType: soft linkType: soft
@ -7804,6 +8094,13 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"blueimp-canvas-to-blob@npm:^3.29.0":
version: 3.29.0
resolution: "blueimp-canvas-to-blob@npm:3.29.0"
checksum: 10c0/6c44cf20aa8287d4b31b2a6133074add338e4b8de092d2f7072a48cd5e04dead04814ffd34607f71dd7b3a285b5c8322c2e8c17776cfa20a1357df395862d646
languageName: node
linkType: hard
"bn.js@npm:^4.0.0, bn.js@npm:^4.1.0, bn.js@npm:^4.11.9": "bn.js@npm:^4.0.0, bn.js@npm:^4.1.0, bn.js@npm:^4.11.9":
version: 4.12.0 version: 4.12.0
resolution: "bn.js@npm:4.12.0" resolution: "bn.js@npm:4.12.0"
@ -8035,7 +8332,7 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"buffer-from@npm:^1.0.0": "buffer-from@npm:^1.0.0, buffer-from@npm:^1.1.2":
version: 1.1.2 version: 1.1.2
resolution: "buffer-from@npm:1.1.2" resolution: "buffer-from@npm:1.1.2"
checksum: 10c0/124fff9d66d691a86d3b062eff4663fe437a9d9ee4b47b1b9e97f5a5d14f6d5399345db80f796827be7c95e70a8e765dd404b7c3ff3b3324f98e9b0c8826cc34 checksum: 10c0/124fff9d66d691a86d3b062eff4663fe437a9d9ee4b47b1b9e97f5a5d14f6d5399345db80f796827be7c95e70a8e765dd404b7c3ff3b3324f98e9b0c8826cc34
@ -8537,6 +8834,13 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"classnames@npm:^2.2.6":
version: 2.5.1
resolution: "classnames@npm:2.5.1"
checksum: 10c0/afff4f77e62cea2d79c39962980bf316bacb0d7c49e13a21adaadb9221e1c6b9d3cdb829d8bb1b23c406f4e740507f37e1dcf506f7e3b7113d17c5bab787aa69
languageName: node
linkType: hard
"clean-css@npm:^5.2.2": "clean-css@npm:^5.2.2":
version: 5.3.3 version: 5.3.3
resolution: "clean-css@npm:5.3.3" resolution: "clean-css@npm:5.3.3"
@ -8674,6 +8978,13 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"cluster-key-slot@npm:1.1.2":
version: 1.1.2
resolution: "cluster-key-slot@npm:1.1.2"
checksum: 10c0/d7d39ca28a8786e9e801eeb8c770e3c3236a566625d7299a47bb71113fb2298ce1039596acb82590e598c52dbc9b1f088c8f587803e697cb58e1867a95ff94d3
languageName: node
linkType: hard
"co@npm:^4.6.0": "co@npm:^4.6.0":
version: 4.6.0 version: 4.6.0
resolution: "co@npm:4.6.0" resolution: "co@npm:4.6.0"
@ -8765,6 +9076,16 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"combine-errors@npm:^3.0.3":
version: 3.0.3
resolution: "combine-errors@npm:3.0.3"
dependencies:
custom-error-instance: "npm:2.1.1"
lodash.uniqby: "npm:4.5.0"
checksum: 10c0/6e7c04102596dfc43ddb252c8390e869e358fb6df3b027567b33f5d998fdb2ad84573ce30a3861feb84fdee1fc3da3c465d68e23f7ab39f98bbe846ca9f70c6d
languageName: node
linkType: hard
"combined-stream@npm:^1.0.8": "combined-stream@npm:^1.0.8":
version: 1.0.8 version: 1.0.8
resolution: "combined-stream@npm:1.0.8" resolution: "combined-stream@npm:1.0.8"
@ -8881,6 +9202,16 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"compressorjs@npm:^1.2.1":
version: 1.2.1
resolution: "compressorjs@npm:1.2.1"
dependencies:
blueimp-canvas-to-blob: "npm:^3.29.0"
is-blob: "npm:^2.1.0"
checksum: 10c0/811eb37b7211af94da6e87df4986f1f8d07524bd762e913927469cede270a705c56de91000b0c190f4bdf059d601c81e259c4ff19efbf5cb34d97b87367b7c92
languageName: node
linkType: hard
"concat-map@npm:0.0.1": "concat-map@npm:0.0.1":
version: 0.0.1 version: 0.0.1
resolution: "concat-map@npm:0.0.1" resolution: "concat-map@npm:0.0.1"
@ -9206,6 +9537,13 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"cropperjs@npm:1.5.7":
version: 1.5.7
resolution: "cropperjs@npm:1.5.7"
checksum: 10c0/0674042b395397f17e8ffd5dcb639663bf00ff4dcbb896329033e7daa255f22ea5a61548460be9cf1c21e44b874d01d8464cde92bb7a9565670a24694b7468f1
languageName: node
linkType: hard
"cross-env@npm:7.0.3": "cross-env@npm:7.0.3":
version: 7.0.3 version: 7.0.3
resolution: "cross-env@npm:7.0.3" resolution: "cross-env@npm:7.0.3"
@ -9528,6 +9866,13 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"custom-error-instance@npm:2.1.1":
version: 2.1.1
resolution: "custom-error-instance@npm:2.1.1"
checksum: 10c0/c4f68550ae88426c49810846c62651438f04a10462c4d8667c089fb9264bcf1723c9b188e3f1d7791d727b0e5aa48ed1de0415eef50d43ea078517844296b85e
languageName: node
linkType: hard
"cyclist@npm:^1.0.1": "cyclist@npm:^1.0.1":
version: 1.0.2 version: 1.0.2
resolution: "cyclist@npm:1.0.2" resolution: "cyclist@npm:1.0.2"
@ -11171,6 +11516,13 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"exifr@npm:^7.0.0":
version: 7.1.3
resolution: "exifr@npm:7.1.3"
checksum: 10c0/296d66941a402f2abc42c622240c8fe943f6f7ff0526ec7aab5fe38e190cca41dadb1d5c4015ebb302ded346429524ed984b93b99815c55b3d9cc00237cee82a
languageName: node
linkType: hard
"exit@npm:^0.1.2": "exit@npm:^0.1.2":
version: 0.1.2 version: 0.1.2
resolution: "exit@npm:0.1.2" resolution: "exit@npm:0.1.2"
@ -11976,6 +12328,13 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"generic-pool@npm:3.9.0":
version: 3.9.0
resolution: "generic-pool@npm:3.9.0"
checksum: 10c0/6b314d0d71170d5cbaf7162c423f53f8d6556b2135626a65bcdc03c089840b0a2f59eeb2d907939b8200e945eaf71ceb6630426f22d2128a1d242aec4b232aa7
languageName: node
linkType: hard
"gensync@npm:^1.0.0-beta.2": "gensync@npm:^1.0.0-beta.2":
version: 1.0.0-beta.2 version: 1.0.0-beta.2
resolution: "gensync@npm:1.0.0-beta.2" resolution: "gensync@npm:1.0.0-beta.2"
@ -12312,7 +12671,7 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"graphql-scalars@npm:1.23.0, graphql-scalars@npm:^1.23.0": "graphql-scalars@npm:1.23.0":
version: 1.23.0 version: 1.23.0
resolution: "graphql-scalars@npm:1.23.0" resolution: "graphql-scalars@npm:1.23.0"
dependencies: dependencies:
@ -13136,6 +13495,13 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"is-blob@npm:^2.1.0":
version: 2.1.0
resolution: "is-blob@npm:2.1.0"
checksum: 10c0/324eb4dc16a359acf14c56c0f65a031c9ddb6ec8ca651894783abe3f3252688facd9e02edeb756eddca0c8ddb5b1efd0af97ea7d3c7b8567fc29fa75f9b1a159
languageName: node
linkType: hard
"is-boolean-object@npm:^1.1.0": "is-boolean-object@npm:^1.1.0":
version: 1.1.2 version: 1.1.2
resolution: "is-boolean-object@npm:1.1.2" resolution: "is-boolean-object@npm:1.1.2"
@ -13342,6 +13708,13 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"is-network-error@npm:^1.0.0":
version: 1.1.0
resolution: "is-network-error@npm:1.1.0"
checksum: 10c0/89eef83c2a4cf43d853145ce175d1cf43183b7a58d48c7a03e7eed4eb395d0934c1f6d101255cdd8c8c2980ab529bfbe5dd9edb24e1c3c28d2b3c814469b5b7d
languageName: node
linkType: hard
"is-node-process@npm:^1.2.0": "is-node-process@npm:^1.2.0":
version: 1.2.0 version: 1.2.0
resolution: "is-node-process@npm:1.2.0" resolution: "is-node-process@npm:1.2.0"
@ -14218,6 +14591,13 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"js-base64@npm:^3.7.2":
version: 3.7.7
resolution: "js-base64@npm:3.7.7"
checksum: 10c0/3c905a7e78b601e4751b5e710edd0d6d045ce2d23eb84c9df03515371e1b291edc72808dc91e081cb9855aef6758292a2407006f4608ec3705373dd8baf2f80f
languageName: node
linkType: hard
"js-levenshtein@npm:^1.1.6": "js-levenshtein@npm:^1.1.6":
version: 1.1.6 version: 1.1.6
resolution: "js-levenshtein@npm:1.1.6" resolution: "js-levenshtein@npm:1.1.6"
@ -14820,6 +15200,55 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"lodash._baseiteratee@npm:~4.7.0":
version: 4.7.0
resolution: "lodash._baseiteratee@npm:4.7.0"
dependencies:
lodash._stringtopath: "npm:~4.8.0"
checksum: 10c0/67f80e6878444e44e3cc6e779941c78da2bfa02413e305b5bfbe612e6ddedbbb05bda025e673014d734b79d69db911c7cfaf25dbc05abc56356eccc90e1e59e3
languageName: node
linkType: hard
"lodash._basetostring@npm:~4.12.0":
version: 4.12.0
resolution: "lodash._basetostring@npm:4.12.0"
checksum: 10c0/08d4f8affb3cfed7cc50bbe35d35605597bd72c05e6ed0696122b0a4da242de1b5f5396e986645f46a97e976d6f7b4943a001b002a4e2b3b8ea087949dc9eb98
languageName: node
linkType: hard
"lodash._baseuniq@npm:~4.6.0":
version: 4.6.0
resolution: "lodash._baseuniq@npm:4.6.0"
dependencies:
lodash._createset: "npm:~4.0.0"
lodash._root: "npm:~3.0.0"
checksum: 10c0/07e2ac63efde634685ed12b16664ee04931b258cd2511b703fddd9ddfc624a85542e3f03a6c2fdac369c00559296198daa8efffaf90d71c7a35f5c89f94ebb14
languageName: node
linkType: hard
"lodash._createset@npm:~4.0.0":
version: 4.0.3
resolution: "lodash._createset@npm:4.0.3"
checksum: 10c0/6144f59a63cedb8bf2840970579dc7dfdad55970741a80f9a6e5c6b29b629fc204c846e54e29266ec24b41e3f680bcbeb9fe9332fb9f2bab71eb9c70cacd26d8
languageName: node
linkType: hard
"lodash._root@npm:~3.0.0":
version: 3.0.1
resolution: "lodash._root@npm:3.0.1"
checksum: 10c0/679c8a570381795b6953ec8c680442acb5472c5b399263ed4ea6839630cf4dd5d65aa8c2a0f6934507fc5bc70f2af20bc430cbd847728b8c1672db95555edb51
languageName: node
linkType: hard
"lodash._stringtopath@npm:~4.8.0":
version: 4.8.0
resolution: "lodash._stringtopath@npm:4.8.0"
dependencies:
lodash._basetostring: "npm:~4.12.0"
checksum: 10c0/5e3a58a97b481a9069fc43ca6ddeace83891e3d9cff8d36400064c85977c225621a9c52131224d64632a054a7c19d8ca7b2f0f5bfc983402564bd2a5e49d8672
languageName: node
linkType: hard
"lodash.chunk@npm:^4.2.0": "lodash.chunk@npm:^4.2.0":
version: 4.2.0 version: 4.2.0
resolution: "lodash.chunk@npm:4.2.0" resolution: "lodash.chunk@npm:4.2.0"
@ -14918,6 +15347,13 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"lodash.throttle@npm:^4.1.1":
version: 4.1.1
resolution: "lodash.throttle@npm:4.1.1"
checksum: 10c0/14628013e9e7f65ac904fc82fd8ecb0e55a9c4c2416434b1dd9cf64ae70a8937f0b15376a39a68248530adc64887ed0fe2b75204b2c9ec3eea1cb2d66ddd125d
languageName: node
linkType: hard
"lodash.uniq@npm:^4.5.0": "lodash.uniq@npm:^4.5.0":
version: 4.5.0 version: 4.5.0
resolution: "lodash.uniq@npm:4.5.0" resolution: "lodash.uniq@npm:4.5.0"
@ -14925,6 +15361,16 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"lodash.uniqby@npm:4.5.0":
version: 4.5.0
resolution: "lodash.uniqby@npm:4.5.0"
dependencies:
lodash._baseiteratee: "npm:~4.7.0"
lodash._baseuniq: "npm:~4.6.0"
checksum: 10c0/4f479ec2dd92825c2a308986d3613e32fe02b13dffc5d0998cbb1ef4eeee56835f13a88e093c7a88473fa72cf5ffd37f807f5ae2d9496e738d776c1911fdabc8
languageName: node
linkType: hard
"lodash@npm:4.17.21, lodash@npm:^4.17.14, lodash@npm:^4.17.15, lodash@npm:^4.17.20, lodash@npm:^4.17.21, lodash@npm:~4.17.0": "lodash@npm:4.17.21, lodash@npm:^4.17.14, lodash@npm:^4.17.15, lodash@npm:^4.17.20, lodash@npm:^4.17.21, lodash@npm:~4.17.0":
version: 4.17.21 version: 4.17.21
resolution: "lodash@npm:4.17.21" resolution: "lodash@npm:4.17.21"
@ -15190,6 +15636,13 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"memoize-one@npm:^6.0.0":
version: 6.0.0
resolution: "memoize-one@npm:6.0.0"
checksum: 10c0/45c88e064fd715166619af72e8cf8a7a17224d6edf61f7a8633d740ed8c8c0558a4373876c9b8ffc5518c2b65a960266adf403cc215cb1e90f7e262b58991f54
languageName: node
linkType: hard
"memory-fs@npm:^0.4.1": "memory-fs@npm:^0.4.1":
version: 0.4.1 version: 0.4.1
resolution: "memory-fs@npm:0.4.1" resolution: "memory-fs@npm:0.4.1"
@ -15307,6 +15760,15 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"mime-match@npm:^1.0.2":
version: 1.0.2
resolution: "mime-match@npm:1.0.2"
dependencies:
wildcard: "npm:^1.1.0"
checksum: 10c0/f7f465246abe7798ed4b2072d9474fe86c8bbee6ea6169abb22eceab4a9752b0393272be3efd8620d3214d421a55420663416a1b4e728daba0f431da55030309
languageName: node
linkType: hard
"mime-types@npm:2.1.35, mime-types@npm:^2.1.12, mime-types@npm:^2.1.27, mime-types@npm:^2.1.31, mime-types@npm:~2.1.17, mime-types@npm:~2.1.24, mime-types@npm:~2.1.34": "mime-types@npm:2.1.35, mime-types@npm:^2.1.12, mime-types@npm:^2.1.27, mime-types@npm:^2.1.31, mime-types@npm:~2.1.17, mime-types@npm:~2.1.24, mime-types@npm:~2.1.34":
version: 2.1.35 version: 2.1.35
resolution: "mime-types@npm:2.1.35" resolution: "mime-types@npm:2.1.35"
@ -15716,6 +16178,13 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"namespace-emitter@npm:^2.0.1":
version: 2.0.1
resolution: "namespace-emitter@npm:2.0.1"
checksum: 10c0/847fdc3cc68fc9ba0f8959f240bf530f5c0b33c679079aa7756a39954cfef13f397bb4e4209387032a73f10a73684c75df7c6f60794e03c2b5786eda57bea756
languageName: node
linkType: hard
"nan@npm:^2.12.1": "nan@npm:^2.12.1":
version: 2.20.0 version: 2.20.0
resolution: "nan@npm:2.20.0" resolution: "nan@npm:2.20.0"
@ -15734,6 +16203,15 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"nanoid@npm:^5.0.0":
version: 5.0.7
resolution: "nanoid@npm:5.0.7"
bin:
nanoid: bin/nanoid.js
checksum: 10c0/a3fb1c157e3e35378f44e5a7130c70f80c9037f66c9a37285e5e3d8298e8405fcb2399baaa420980b0fe5fd9c2e4186a6a31c3526f21de03cf34c1b459871401
languageName: node
linkType: hard
"nanomatch@npm:^1.2.9": "nanomatch@npm:^1.2.9":
version: 1.2.13 version: 1.2.13
resolution: "nanomatch@npm:1.2.13" resolution: "nanomatch@npm:1.2.13"
@ -16353,6 +16831,16 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"p-queue@npm:^8.0.0":
version: 8.0.1
resolution: "p-queue@npm:8.0.1"
dependencies:
eventemitter3: "npm:^5.0.1"
p-timeout: "npm:^6.1.2"
checksum: 10c0/fe185bc8bbd32d17a5f6dba090077b1bb326b008b4ec9b0646c57a32a6984035aa8ece909a6d0de7f6c4640296dc288197f430e7394cdc76a26d862339494616
languageName: node
linkType: hard
"p-retry@npm:^4.5.0": "p-retry@npm:^4.5.0":
version: 4.6.2 version: 4.6.2
resolution: "p-retry@npm:4.6.2" resolution: "p-retry@npm:4.6.2"
@ -16363,6 +16851,24 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"p-retry@npm:^6.1.0":
version: 6.2.0
resolution: "p-retry@npm:6.2.0"
dependencies:
"@types/retry": "npm:0.12.2"
is-network-error: "npm:^1.0.0"
retry: "npm:^0.13.1"
checksum: 10c0/3277f2a8450fb1429c29c432d24c5965b32f187228f1beea56f5d49209717588a7dc0415def1c653f60e0d15ed72c56dacaa2d5fdfa71b0f860592b0aa6ce823
languageName: node
linkType: hard
"p-timeout@npm:^6.1.2":
version: 6.1.2
resolution: "p-timeout@npm:6.1.2"
checksum: 10c0/d46b90a9a5fb7c650a5c56dd5cf7102ea9ab6ce998defa2b3d4672789aaec4e2f45b3b0b5a4a3e17a0fb94301ad5dd26da7d8728402e48db2022ad1847594d19
languageName: node
linkType: hard
"p-try@npm:^2.0.0": "p-try@npm:^2.0.0":
version: 2.2.0 version: 2.2.0
resolution: "p-try@npm:2.2.0" resolution: "p-try@npm:2.2.0"
@ -17278,6 +17784,13 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"preact@npm:^10.5.13":
version: 10.23.2
resolution: "preact@npm:10.23.2"
checksum: 10c0/6e0dc1b38ead7554c99ddec9a32162b456e8f622229413b136042a777445a12d115633cd49d6df83c30b64d721a0ad4d3c71bb468edc759c15799896e96fd9f2
languageName: node
linkType: hard
"prelude-ls@npm:^1.2.1": "prelude-ls@npm:^1.2.1":
version: 1.2.1 version: 1.2.1
resolution: "prelude-ls@npm:1.2.1" resolution: "prelude-ls@npm:1.2.1"
@ -17466,6 +17979,13 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"promise-queue@npm:^2.2.5":
version: 2.2.5
resolution: "promise-queue@npm:2.2.5"
checksum: 10c0/6b29c1c717399c7e10d9527f3a6af74ea7f811aa297dab27c22e5718a824b1cb012d179e1f5d609bf2db051aaf49630fe8222317dedc2174b24971026ab39969
languageName: node
linkType: hard
"promise-retry@npm:^2.0.1": "promise-retry@npm:^2.0.1":
version: 2.0.1 version: 2.0.1
resolution: "promise-retry@npm:2.0.1" resolution: "promise-retry@npm:2.0.1"
@ -17506,6 +18026,17 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"proper-lockfile@npm:^4.1.2":
version: 4.1.2
resolution: "proper-lockfile@npm:4.1.2"
dependencies:
graceful-fs: "npm:^4.2.4"
retry: "npm:^0.12.0"
signal-exit: "npm:^3.0.2"
checksum: 10c0/2f265dbad15897a43110a02dae55105c04d356ec4ed560723dcb9f0d34bc4fb2f13f79bb930e7561be10278e2314db5aca2527d5d3dcbbdee5e6b331d1571f6d
languageName: node
linkType: hard
"proxy-addr@npm:^2.0.7, proxy-addr@npm:~2.0.7": "proxy-addr@npm:^2.0.7, proxy-addr@npm:~2.0.7":
version: 2.0.7 version: 2.0.7
resolution: "proxy-addr@npm:2.0.7" resolution: "proxy-addr@npm:2.0.7"
@ -18860,6 +19391,13 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"shallow-equal@npm:^3.0.0":
version: 3.1.0
resolution: "shallow-equal@npm:3.1.0"
checksum: 10c0/57079f8741a86b25229b58b86df5d503414aca324e486ec7ddb2423db65914c80c8282149ef66a6803092847dc0d840da8fc338ea5027bbf4fc877f944df9bf6
languageName: node
linkType: hard
"shallowequal@npm:^1.1.0": "shallowequal@npm:^1.1.0":
version: 1.1.0 version: 1.1.0
resolution: "shallowequal@npm:1.1.0" resolution: "shallowequal@npm:1.1.0"
@ -20307,6 +20845,21 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"tus-js-client@npm:^4.1.0":
version: 4.1.0
resolution: "tus-js-client@npm:4.1.0"
dependencies:
buffer-from: "npm:^1.1.2"
combine-errors: "npm:^3.0.3"
is-stream: "npm:^2.0.0"
js-base64: "npm:^3.7.2"
lodash.throttle: "npm:^4.1.1"
proper-lockfile: "npm:^4.1.2"
url-parse: "npm:^1.5.7"
checksum: 10c0/ae8c69c3ec29f4299ca1f10a622a243060305be0fbb75d3c6ef9d984d7cc8337c2fc135b5800df26107e8040e8eb9bc178298cefaef27e72335f0509ebcb2ef0
languageName: node
linkType: hard
"type-check@npm:^0.4.0, type-check@npm:~0.4.0": "type-check@npm:^0.4.0, type-check@npm:~0.4.0":
version: 0.4.0 version: 0.4.0
resolution: "type-check@npm:0.4.0" resolution: "type-check@npm:0.4.0"
@ -20698,7 +21251,7 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"url-parse@npm:^1.5.3": "url-parse@npm:^1.5.3, url-parse@npm:^1.5.7":
version: 1.5.10 version: 1.5.10
resolution: "url-parse@npm:1.5.10" resolution: "url-parse@npm:1.5.10"
dependencies: dependencies:
@ -20732,6 +21285,15 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"use-sync-external-store@npm:^1.2.0":
version: 1.2.2
resolution: "use-sync-external-store@npm:1.2.2"
peerDependencies:
react: ^16.8.0 || ^17.0.0 || ^18.0.0
checksum: 10c0/23b1597c10adf15b26ade9e8c318d8cc0abc9ec0ab5fc7ca7338da92e89c2536abd150a5891bf076836c352fdfa104fc7231fb48f806fd9960e0cbe03601abaf
languageName: node
linkType: hard
"use@npm:^3.1.0": "use@npm:^3.1.0":
version: 3.1.1 version: 3.1.1
resolution: "use@npm:3.1.1" resolution: "use@npm:3.1.1"
@ -21035,6 +21597,15 @@ __metadata:
"@redwoodjs/web": "npm:7.7.4" "@redwoodjs/web": "npm:7.7.4"
"@types/react": "npm:^18.2.55" "@types/react": "npm:^18.2.55"
"@types/react-dom": "npm:^18.2.19" "@types/react-dom": "npm:^18.2.19"
"@uppy/compressor": "npm:^2.0.1"
"@uppy/core": "npm:^4.1.0"
"@uppy/dashboard": "npm:^4.0.2"
"@uppy/drag-drop": "npm:^4.0.1"
"@uppy/file-input": "npm:^4.0.0"
"@uppy/image-editor": "npm:^3.0.0"
"@uppy/progress-bar": "npm:^4.0.0"
"@uppy/react": "npm:^4.0.1"
"@uppy/tus": "npm:^4.0.0"
autoprefixer: "npm:^10.4.20" autoprefixer: "npm:^10.4.20"
daisyui: "npm:^4.12.10" daisyui: "npm:^4.12.10"
postcss: "npm:^8.4.41" postcss: "npm:^8.4.41"
@ -21518,6 +22089,13 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"wildcard@npm:^1.1.0":
version: 1.1.2
resolution: "wildcard@npm:1.1.2"
checksum: 10c0/4051a90884f60c2e7eed81811cbb21b2de37986c0f2f82f081b2a43b9693d5d240e80a98ede68a6fa3fb0779bcdf26720e954a890de26ae4e73ee5f04e233649
languageName: node
linkType: hard
"wildcard@npm:^2.0.0": "wildcard@npm:^2.0.0":
version: 2.0.1 version: 2.0.1
resolution: "wildcard@npm:2.0.1" resolution: "wildcard@npm:2.0.1"
@ -21696,6 +22274,13 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"yallist@npm:4.0.0, yallist@npm:^4.0.0":
version: 4.0.0
resolution: "yallist@npm:4.0.0"
checksum: 10c0/2286b5e8dbfe22204ab66e2ef5cc9bbb1e55dfc873bbe0d568aa943eb255d131890dfd5bf243637273d31119b870f49c18fcde2c6ffbb7a7a092b870dc90625a
languageName: node
linkType: hard
"yallist@npm:^3.0.2": "yallist@npm:^3.0.2":
version: 3.1.1 version: 3.1.1
resolution: "yallist@npm:3.1.1" resolution: "yallist@npm:3.1.1"
@ -21703,13 +22288,6 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"yallist@npm:^4.0.0":
version: 4.0.0
resolution: "yallist@npm:4.0.0"
checksum: 10c0/2286b5e8dbfe22204ab66e2ef5cc9bbb1e55dfc873bbe0d568aa943eb255d131890dfd5bf243637273d31119b870f49c18fcde2c6ffbb7a7a092b870dc90625a
languageName: node
linkType: hard
"yaml-ast-parser@npm:^0.0.43": "yaml-ast-parser@npm:^0.0.43":
version: 0.0.43 version: 0.0.43
resolution: "yaml-ast-parser@npm:0.0.43" resolution: "yaml-ast-parser@npm:0.0.43"