diff --git a/biome.json b/biome.json
index c8f42a2ec0..13f580c8ca 100644
--- a/biome.json
+++ b/biome.json
@@ -1,5 +1,5 @@
{
- "$schema": "https://biomejs.dev/schemas/2.0.5/schema.json",
+ "$schema": "https://biomejs.dev/schemas/2.4.15/schema.json",
"vcs": {
"enabled": true,
"clientKind": "git",
@@ -14,10 +14,11 @@
"bin/**",
"e2e/**",
"private/**",
- "!packages/**/{dist,lib}/**",
+ "!packages/**/{dist,lib}",
"!node_modules",
"!.svelte-kit",
- "!packages/@uppy/components/src/input.css"
+ "!packages/@uppy/components/src/input.css",
+ "!examples/angular/**/*.html"
]
},
"formatter": {
@@ -25,20 +26,11 @@
"indentStyle": "space",
"formatWithErrors": true
},
+ "html": {
+ "experimentalFullSupportEnabled": true
+ },
"linter": {
"enabled": true,
- "includes": [
- "packages/**",
- "examples/**",
- "scripts/**",
- "private/**",
- "!packages/**/{dist,lib}/**",
- "!node_modules",
- "!.svelte-kit",
- "!packages/@uppy/components/src/input.css",
- "!**/*.vue",
- "!**/*.svelte"
- ],
"rules": {
"recommended": true,
"suspicious": {
@@ -48,37 +40,26 @@
"useExhaustiveDependencies": "error",
"useHookAtTopLevel": "error",
"noUnusedFunctionParameters": "off",
+ "noUnusedImports": "error",
+ "noUnusedPrivateClassMembers": "error",
"noUnusedVariables": {
"level": "error",
"options": {
"ignoreRestSiblings": true
}
- }
+ },
+ "noNestedComponentDefinitions": "error",
+ "noReactPropAssignments": "error"
},
"style": {
"noNonNullAssertion": "off"
},
"a11y": {
- "noSvgWithoutTitle": "off"
- },
- "nursery": {
- "noNestedComponentDefinitions": "error",
- "noReactPropAssign": "error"
+ "noSvgWithoutTitle": "off",
+ "useSemanticElements": "off"
}
}
},
- "overrides": [
- {
- "includes": ["packages/@uppy/companion/**"],
- "linter": {
- "rules": {
- "complexity": {
- "useLiteralKeys": "off"
- }
- }
- }
- }
- ],
"javascript": {
"formatter": {
"quoteStyle": "single",
@@ -92,5 +73,36 @@
"organizeImports": "on"
}
}
- }
+ },
+ "overrides": [
+ {
+ "includes": ["packages/@uppy/companion/**"],
+ "linter": {
+ "rules": {
+ "complexity": {
+ "useLiteralKeys": "off"
+ }
+ }
+ }
+ },
+ {
+ "includes": ["**/*.vue", "**/*.svelte", "packages/@uppy/vue/**/*.ts"],
+ "linter": {
+ "rules": {
+ "correctness": {
+ "useHookAtTopLevel": "off",
+ "useExhaustiveDependencies": "off"
+ }
+ }
+ }
+ },
+ {
+ "includes": ["examples/nextjs/**/*.css"],
+ "css": {
+ "parser": {
+ "tailwindDirectives": true
+ }
+ }
+ }
+ ]
}
diff --git a/examples/aws-companion/index.html b/examples/aws-companion/index.html
index 0b86787b77..01eacb7a82 100644
--- a/examples/aws-companion/index.html
+++ b/examples/aws-companion/index.html
@@ -1,5 +1,5 @@
-
+
diff --git a/examples/aws-nodejs/public/index.html b/examples/aws-nodejs/public/index.html
index 881a07567a..cd7d79f601 100644
--- a/examples/aws-nodejs/public/index.html
+++ b/examples/aws-nodejs/public/index.html
@@ -1,5 +1,5 @@
-
+
Uppy – AWS upload example
@@ -24,7 +24,8 @@ AWS upload example
You need JavaScript to run this example.
- (disabled = !disabled)}>Toggle dashboard
+ (disabled = !disabled)}>Toggle dashboard
- (hideUploadButton = !hideUploadButton)}>Toggle statusbar
+ (hideUploadButton = !hideUploadButton)}>Toggle statusbar
diff --git a/examples/transloadit/index.html b/examples/transloadit/index.html
index a3919ae1f8..a9e0b9c1f6 100644
--- a/examples/transloadit/index.html
+++ b/examples/transloadit/index.html
@@ -1,5 +1,5 @@
-
+
@@ -140,7 +140,7 @@ Dashboard Modal
This API is a one-shot upload UI using a modal overlay. Call the
function and receive a listen to an event with upload results ✌️
- Open
+ Open
uppy.upload()
An <input type=file> backed by uppy.upload():
diff --git a/examples/transloadit/server.js b/examples/transloadit/server.js
index 765301bd52..c71994b0e5 100755
--- a/examples/transloadit/server.js
+++ b/examples/transloadit/server.js
@@ -36,7 +36,7 @@ function Footer() {
}
function FormFields(fields) {
- // biome-ignore lint/nursery/noNestedComponentDefinitions: not a react component
+ // biome-ignore lint/correctness/noNestedComponentDefinitions: not a react component
function Field([name, value]) {
if (name === 'transloadit') return ''
let isValueJSON = false
@@ -76,7 +76,7 @@ function FormFields(fields) {
}
function UploadsList(uploads) {
- // biome-ignore lint/nursery/noNestedComponentDefinitions: not a react component
+ // biome-ignore lint/correctness/noNestedComponentDefinitions: not a react component
function Upload(upload) {
return `${e(upload.name)} `
}
@@ -89,12 +89,12 @@ function UploadsList(uploads) {
}
function ResultsList(results) {
- // biome-ignore lint/nursery/noNestedComponentDefinitions: not a react component
+ // biome-ignore lint/correctness/noNestedComponentDefinitions: not a react component
function Result(result) {
return `${e(result.name)} View `
}
- // biome-ignore lint/nursery/noNestedComponentDefinitions: not a react component
+ // biome-ignore lint/correctness/noNestedComponentDefinitions: not a react component
function ResultsSection(stepName) {
return `
${e(stepName)}
diff --git a/examples/vue/src/Dropzone.vue b/examples/vue/src/Dropzone.vue
index c36d0a9a9e..4bb75fd80a 100644
--- a/examples/vue/src/Dropzone.vue
+++ b/examples/vue/src/Dropzone.vue
@@ -7,7 +7,7 @@
>
-
@@ -17,7 +17,7 @@
Device
- props.openModal('webcam')"
class="hover:bg-gray-100 transition-colors p-2 rounded-md flex flex-col items-center gap-2 text-sm"
>
@@ -27,7 +27,7 @@
Webcam
- props.openModal('screen-capture')"
class="hover:bg-gray-100 transition-colors p-2 rounded-md flex flex-col items-center gap-2 text-sm"
>
@@ -37,7 +37,7 @@
Screen Capture
- props.openModal('dropbox')"
class="hover:bg-gray-100 transition-colors p-2 rounded-md flex flex-col items-center gap-2 text-sm"
>
diff --git a/examples/vue/src/ImageEditor.vue b/examples/vue/src/ImageEditor.vue
index e285826f57..7f4fb24bb1 100644
--- a/examples/vue/src/ImageEditor.vue
+++ b/examples/vue/src/ImageEditor.vue
@@ -12,6 +12,7 @@
+
-
↶ -90°
-
↷ +90°
-
⇆ Flip
-
+ Zoom
-
@@ -62,25 +63,25 @@
-
1:1
-
16:9
-
9:16
-
@@ -89,13 +90,13 @@
-
Cancel
-
diff --git a/examples/vue/src/MediaCapture.vue b/examples/vue/src/MediaCapture.vue
index 1970cde5ea..8d0801d674 100644
--- a/examples/vue/src/MediaCapture.vue
+++ b/examples/vue/src/MediaCapture.vue
@@ -24,31 +24,31 @@
-
{{ primaryActionButtonLabel }}
-
Record
-
Stop
-
Submit
-
diff --git a/examples/xhr-bundle/index.html b/examples/xhr-bundle/index.html
index e731b462c0..fd6c539c9e 100644
--- a/examples/xhr-bundle/index.html
+++ b/examples/xhr-bundle/index.html
@@ -1,5 +1,5 @@
-
+
diff --git a/examples/xhr-node/index.html b/examples/xhr-node/index.html
index 54b683f268..32dd1d254e 100644
--- a/examples/xhr-node/index.html
+++ b/examples/xhr-node/index.html
@@ -1,5 +1,5 @@
-
+
diff --git a/examples/xhr-php/index.html b/examples/xhr-php/index.html
index e1e3db298f..efbdba848e 100644
--- a/examples/xhr-php/index.html
+++ b/examples/xhr-php/index.html
@@ -1,5 +1,5 @@
-
+
diff --git a/examples/xhr-python/index.html b/examples/xhr-python/index.html
index 65bdb392a7..38239523da 100644
--- a/examples/xhr-python/index.html
+++ b/examples/xhr-python/index.html
@@ -1,5 +1,5 @@
-
+
diff --git a/package.json b/package.json
index 19499e50cc..c0e8c392b0 100644
--- a/package.json
+++ b/package.json
@@ -29,7 +29,7 @@
"release": "changeset publish"
},
"devDependencies": {
- "@biomejs/biome": "2.0.5",
+ "@biomejs/biome": "2.4.15",
"@changesets/changelog-github": "^0.5.1",
"@changesets/cli": "patch:@changesets/cli@npm%3A2.29.5#~/.yarn/patches/@changesets-cli-npm-2.29.5-68d8030bf3.patch",
"npm-run-all": "^4.1.5",
diff --git a/packages/@uppy/audio/src/Audio.tsx b/packages/@uppy/audio/src/Audio.tsx
index f998c9ef04..2f53a8cc89 100644
--- a/packages/@uppy/audio/src/Audio.tsx
+++ b/packages/@uppy/audio/src/Audio.tsx
@@ -284,7 +284,9 @@ export default class Audio extends UIPlugin<
#stop = async () => {
if (this.#stream) {
const audioTracks = this.#stream.getAudioTracks()
- audioTracks.forEach((track) => track.stop())
+ audioTracks.forEach((track) => {
+ track.stop()
+ })
}
if (this.#recorder) {
diff --git a/packages/@uppy/aws-s3/src/HTTPCommunicationQueue.ts b/packages/@uppy/aws-s3/src/HTTPCommunicationQueue.ts
index 43a30ab530..38e800fadf 100644
--- a/packages/@uppy/aws-s3/src/HTTPCommunicationQueue.ts
+++ b/packages/@uppy/aws-s3/src/HTTPCommunicationQueue.ts
@@ -263,9 +263,9 @@ export class HTTPCommunicationQueue {
const data = chunk.getData()
if (method.toUpperCase() === 'POST') {
const formData = new FormData()
- Object.entries(fields!).forEach(([key, value]) =>
- formData.set(key, value),
- )
+ Object.entries(fields!).forEach(([key, value]) => {
+ formData.set(key, value)
+ })
formData.set('file', data)
body = formData
} else {
diff --git a/packages/@uppy/aws-s3/src/MultipartUploader.ts b/packages/@uppy/aws-s3/src/MultipartUploader.ts
index c2884f62b9..1e590e0c87 100644
--- a/packages/@uppy/aws-s3/src/MultipartUploader.ts
+++ b/packages/@uppy/aws-s3/src/MultipartUploader.ts
@@ -256,6 +256,7 @@ class MultipartUploader {
else this.pause()
}
+ // biome-ignore lint/correctness/noUnusedPrivateClassMembers: accessed via Symbol in tests
private [Symbol.for('uppy test: getChunkState')]() {
return this.#chunkState
}
diff --git a/packages/@uppy/companion/src/scripts/with-load-balancer.ts b/packages/@uppy/companion/src/scripts/with-load-balancer.ts
index 1932b7a08b..02fa0d31dc 100644
--- a/packages/@uppy/companion/src/scripts/with-load-balancer.ts
+++ b/packages/@uppy/companion/src/scripts/with-load-balancer.ts
@@ -110,5 +110,7 @@ try {
await Promise.all(companions)
} finally {
loadBalancer?.close()
- companions.forEach((companion) => companion.kill())
+ companions.forEach((companion) => {
+ companion.kill()
+ })
}
diff --git a/packages/@uppy/companion/src/server/Uploader.ts b/packages/@uppy/companion/src/server/Uploader.ts
index b564cdafab..fb4e3cea77 100644
--- a/packages/@uppy/companion/src/server/Uploader.ts
+++ b/packages/@uppy/companion/src/server/Uploader.ts
@@ -806,9 +806,9 @@ export default class Uploader {
if (this.options.useFormData) {
const formData = new FormData()
- Object.entries(this.metadata).forEach(([key, value]) =>
- formData.append(key, value),
- )
+ Object.entries(this.metadata).forEach(([key, value]) => {
+ formData.append(key, value)
+ })
// see https://github.com/octet-stream/form-data/blob/73a5a24e635938026538673f94cbae1249a3f5cc/readme.md?plain=1#L232
formData.set(this.fieldname, {
diff --git a/packages/@uppy/companion/src/server/provider/facebook/adapter.ts b/packages/@uppy/companion/src/server/provider/facebook/adapter.ts
index 97c5084cfe..54a811738e 100644
--- a/packages/@uppy/companion/src/server/provider/facebook/adapter.ts
+++ b/packages/@uppy/companion/src/server/provider/facebook/adapter.ts
@@ -76,7 +76,7 @@ const getNextPagePath = (
currentQuery: Record,
currentPath: string | undefined,
): string | null => {
- if (!data.paging || !data.paging.cursors) {
+ if (!data.paging?.cursors) {
return null
}
diff --git a/packages/@uppy/companion/src/types/express.d.ts b/packages/@uppy/companion/src/types/express.d.ts
index 0180663e84..be6d83c15e 100644
--- a/packages/@uppy/companion/src/types/express.d.ts
+++ b/packages/@uppy/companion/src/types/express.d.ts
@@ -1,7 +1,7 @@
import type { S3Client } from '@aws-sdk/client-s3'
-import type { CompanionRuntimeOptions } from './companion-options.js'
-import type Provider from '../server/provider/Provider.js'
import { CredentialsFetchResponse } from '../schemas/companion.js'
+import type Provider from '../server/provider/Provider.js'
+import type { CompanionRuntimeOptions } from './companion-options.js'
export type BuildUrl = (
subPath: string,
diff --git a/packages/@uppy/companion/src/types/shims.d.ts b/packages/@uppy/companion/src/types/shims.d.ts
index 5c8a3cbbf3..df9f8d9980 100644
--- a/packages/@uppy/companion/src/types/shims.d.ts
+++ b/packages/@uppy/companion/src/types/shims.d.ts
@@ -1,5 +1,5 @@
declare module 'express-interceptor' {
- import type { Request, Response, RequestHandler } from 'express'
+ import type { Request, RequestHandler, Response } from 'express'
type InterceptorConfig = {
isInterceptable: () => boolean
diff --git a/packages/@uppy/companion/test/credentials.test.ts b/packages/@uppy/companion/test/credentials.test.ts
index 71a72a3c34..8129ed430d 100644
--- a/packages/@uppy/companion/test/credentials.test.ts
+++ b/packages/@uppy/companion/test/credentials.test.ts
@@ -41,7 +41,7 @@ describe('providers requests with remote oauth keys', () => {
// mocking request module used to fetch custom oauth credentials
nock('http://localhost:2111')
.post('/zoom-keys')
- // @ts-ignore
+ // @ts-expect-error
.reply((uri, { provider, parameters }) => {
if (provider !== 'zoom' || parameters !== 'ZOOM-CREDENTIALS-PARAMS')
return [400]
diff --git a/packages/@uppy/companion/test/providers.test.ts b/packages/@uppy/companion/test/providers.test.ts
index b9d8f92883..9e1266f682 100644
--- a/packages/@uppy/companion/test/providers.test.ts
+++ b/packages/@uppy/companion/test/providers.test.ts
@@ -489,23 +489,22 @@ describe('provider file gets downloaded from', () => {
})
describe('connect to provider', () => {
- test.each(providerNames)(
- 'connect to %s via grant.js endpoint',
- async (providerName: string) => {
- const oauthProvider = oauthProviders[providerName]
-
- if (oauthProvider == null) return
-
- await request(await getServerWithEnv())
- .get(`/${providerName}/connect?foo=bar`)
- .set('uppy-auth-token', token)
- .expect(302)
- .expect(
- 'Location',
- `http://localhost:3020/connect/${oauthProvider}?state=${OAUTH_STATE}`,
- )
- },
- )
+ test.each(
+ providerNames,
+ )('connect to %s via grant.js endpoint', async (providerName: string) => {
+ const oauthProvider = oauthProviders[providerName]
+
+ if (oauthProvider == null) return
+
+ await request(await getServerWithEnv())
+ .get(`/${providerName}/connect?foo=bar`)
+ .set('uppy-auth-token', token)
+ .expect(302)
+ .expect(
+ 'Location',
+ `http://localhost:3020/connect/${oauthProvider}?state=${OAUTH_STATE}`,
+ )
+ })
})
describe('logout of provider', () => {
diff --git a/packages/@uppy/companion/test/url.test.ts b/packages/@uppy/companion/test/url.test.ts
index dfcbc18643..214e56c37b 100644
--- a/packages/@uppy/companion/test/url.test.ts
+++ b/packages/@uppy/companion/test/url.test.ts
@@ -82,21 +82,20 @@ describe('url get', () => {
.then((res) => expect(res.body.token).toBeTruthy())
})
- test.each(invalids)(
- 'downloads are not instantiated for invalid urls',
- async (urlCase) => {
- nockUrl()
+ test.each(
+ invalids,
+ )('downloads are not instantiated for invalid urls', async (urlCase) => {
+ nockUrl()
- return request(await getMockServer())
- .post('/url/get')
- .set('Content-Type', 'application/json')
- .send({
- url: urlCase,
- endpoint: 'http://tusd.tusdemo.net/files',
- protocol: 'tus',
- })
- .expect(400)
- .then((res) => expect(res.body.error).toBe('Invalid request body'))
- },
- )
+ return request(await getMockServer())
+ .post('/url/get')
+ .set('Content-Type', 'application/json')
+ .send({
+ url: urlCase,
+ endpoint: 'http://tusd.tusdemo.net/files',
+ protocol: 'tus',
+ })
+ .expect(400)
+ .then((res) => expect(res.body.error).toBe('Invalid request body'))
+ })
})
diff --git a/packages/@uppy/compressor/src/index.ts b/packages/@uppy/compressor/src/index.ts
index c1951e7b1a..7fe262b720 100644
--- a/packages/@uppy/compressor/src/index.ts
+++ b/packages/@uppy/compressor/src/index.ts
@@ -2,7 +2,6 @@ import prettierBytes from '@transloadit/prettier-bytes'
import type { DefinePluginOpts, PluginOpts } from '@uppy/core'
import { BasePlugin, type Uppy } from '@uppy/core'
import type { Body, LocalUppyFile, Meta, UppyFile } from '@uppy/utils'
-// @ts-ignore
import { getFileNameAndExtension, RateLimitedQueue } from '@uppy/utils'
import CompressorJS from 'compressorjs'
import locale from './locale.js'
diff --git a/packages/@uppy/core/src/Restricter.ts b/packages/@uppy/core/src/Restricter.ts
index 101c1d0359..0a009c5fed 100644
--- a/packages/@uppy/core/src/Restricter.ts
+++ b/packages/@uppy/core/src/Restricter.ts
@@ -1,6 +1,6 @@
import prettierBytes from '@transloadit/prettier-bytes'
import type { Body, I18n, Meta, UppyFile } from '@uppy/utils'
-// @ts-ignore untyped
+// @ts-expect-error untyped
import match from 'mime-match'
import type { NonNullableUppyOptions, State } from './Uppy.js'
@@ -206,4 +206,4 @@ class Restricter {
}
}
-export { Restricter, defaultOptions, RestrictionError }
+export { defaultOptions, Restricter, RestrictionError }
diff --git a/packages/@uppy/core/src/Uppy.test.ts b/packages/@uppy/core/src/Uppy.test.ts
index 1c52017bdf..9ec252d1c9 100644
--- a/packages/@uppy/core/src/Uppy.test.ts
+++ b/packages/@uppy/core/src/Uppy.test.ts
@@ -173,26 +173,26 @@ describe('src/Core', () => {
core.use(AcquirerPlugin1)
core.use(AcquirerPlugin2)
core.iteratePlugins((plugin) => {
- // @ts-ignore
+ // @ts-expect-error
plugin.run('hello')
})
expect(
- // @ts-ignore
+ // @ts-expect-error
core[Symbol.for('uppy test: getPlugins')]('acquirer')[0].mocks.run.mock
.calls.length,
).toEqual(1)
expect(
- // @ts-ignore
+ // @ts-expect-error
core[Symbol.for('uppy test: getPlugins')]('acquirer')[0].mocks.run.mock
.calls[0],
).toEqual(['hello'])
expect(
- // @ts-ignore
+ // @ts-expect-error
core[Symbol.for('uppy test: getPlugins')]('acquirer')[1].mocks.run.mock
.calls.length,
).toEqual(1)
expect(
- // @ts-ignore
+ // @ts-expect-error
core[Symbol.for('uppy test: getPlugins')]('acquirer')[1].mocks.run.mock
.calls[0],
).toEqual(['hello'])
@@ -203,7 +203,7 @@ describe('src/Core', () => {
core.use(AcquirerPlugin1)
core.use(AcquirerPlugin2)
expect(
- // @ts-ignore
+ // @ts-expect-error
Object.keys(core[Symbol.for('uppy test: getPlugins')]('acquirer'))
.length,
).toEqual(2)
@@ -211,14 +211,14 @@ describe('src/Core', () => {
const plugin = core.getPlugin('TestSelector1')
core.removePlugin(plugin!)
expect(
- // @ts-ignore
+ // @ts-expect-error
Object.keys(core[Symbol.for('uppy test: getPlugins')]('acquirer'))
.length,
).toEqual(1)
- // @ts-ignore
+ // @ts-expect-error
expect(plugin.mocks.uninstall.mock.calls.length).toEqual(1)
expect(
- // @ts-ignore
+ // @ts-expect-error
core[Symbol.for('uppy test: getPlugins')]('acquirer')[0].mocks.run.mock
.calls.length,
).toEqual(0)
@@ -232,22 +232,22 @@ describe('src/Core', () => {
core.use(AcquirerPlugin2)
core.updateAll({ foo: 'bar' })
expect(
- // @ts-ignore
+ // @ts-expect-error
core[Symbol.for('uppy test: getPlugins')]('acquirer')[0].mocks.update
.mock.calls.length,
).toEqual(1)
expect(
- // @ts-ignore
+ // @ts-expect-error
core[Symbol.for('uppy test: getPlugins')]('acquirer')[0].mocks.update
.mock.calls[0],
).toEqual([{ foo: 'bar' }])
expect(
- // @ts-ignore
+ // @ts-expect-error
core[Symbol.for('uppy test: getPlugins')]('acquirer')[1].mocks.update
.mock.calls.length,
).toEqual(1)
expect(
- // @ts-ignore
+ // @ts-expect-error
core[Symbol.for('uppy test: getPlugins')]('acquirer')[1].mocks.update
.mock.calls[0],
).toEqual([{ foo: 'bar' }])
@@ -285,12 +285,12 @@ describe('src/Core', () => {
expect(core.getState()).toEqual(newState)
expect(
- // @ts-ignore
+ // @ts-expect-error
core[Symbol.for('uppy test: getPlugins')]('acquirer')[0].mocks.update
.mock.calls[1],
).toEqual([newState])
expect(
- // @ts-ignore
+ // @ts-expect-error
core[Symbol.for('uppy test: getPlugins')]('acquirer')[1].mocks.update
.mock.calls[1],
).toEqual([newState])
@@ -405,7 +405,7 @@ describe('src/Core', () => {
})
const fileIDs = Object.keys(core.getState().files)
- // @ts-ignore
+ // @ts-expect-error
const id = core[Symbol.for('uppy test: createUpload')](fileIDs)
expect(core.getState().currentUploads[id]).toBeDefined()
@@ -443,7 +443,7 @@ describe('src/Core', () => {
})
const fileIDs = Object.keys(core.getState().files)
- // @ts-ignore
+ // @ts-expect-error
const id = core[Symbol.for('uppy test: createUpload')](fileIDs)
expect(core.getState().currentUploads[id]).toBeDefined()
@@ -481,7 +481,7 @@ describe('src/Core', () => {
})
const fileIDs = Object.keys(core.getState().files)
- // @ts-ignore
+ // @ts-expect-error
const id = core[Symbol.for('uppy test: createUpload')](fileIDs)
expect(core.getState().currentUploads[id]).toBeDefined()
@@ -522,7 +522,7 @@ describe('src/Core', () => {
})
const fileIDs = Object.keys(core.getState().files)
- // @ts-ignore
+ // @ts-expect-error
const id = core[Symbol.for('uppy test: createUpload')](fileIDs)
expect(core.getState().currentUploads[id]).toBeDefined()
@@ -543,7 +543,7 @@ describe('src/Core', () => {
const coreCancelEventMock = vi.fn()
const coreStateUpdateEventMock = vi.fn()
- // @ts-ignore
+ // @ts-expect-error
const plugin = core[Symbol.for('uppy test: getPlugins')]('acquirer')[0]
core.on('cancel-all', coreCancelEventMock)
@@ -939,7 +939,7 @@ describe('src/Core', () => {
source: 'vi',
name: 'foo.webm',
type: 'video/webm; codecs="vp8, opus"',
- // @ts-ignore
+ // @ts-expect-error
data: new File([sampleImage], {
type: 'video/webm; codecs="vp8, opus"',
}),
@@ -1106,7 +1106,7 @@ describe('src/Core', () => {
it('does not dedupe different files', async () => {
const core = new Core()
const data = new Blob([sampleImage], { type: 'image/jpeg' })
- // @ts-ignore
+ // @ts-expect-error
data.lastModified = 1562770350937
core.addFile({
@@ -1165,7 +1165,6 @@ describe('src/Core', () => {
fileIDs.forEach((fileID) => {
const file = core.getFile(fileID)
if (file.name != null && /bar/.test(file.name)) {
- // @ts-ignore
core.emit(
'upload-error',
file,
@@ -1199,9 +1198,8 @@ describe('src/Core', () => {
it('should only upload files that are not already assigned to another upload id', () => {
const core = new Core()
- // @ts-ignore
+ // @ts-expect-error
core.store.state.currentUploads = {
- // @ts-ignore
upload1: {
fileIDs: [
'uppy-file1/jpg-1e-image/jpeg',
@@ -1209,7 +1207,6 @@ describe('src/Core', () => {
'uppy-file3/jpg-1e-image/jpeg',
],
},
- // @ts-ignore
upload2: {
fileIDs: [
'uppy-file4/jpg-1e-image/jpeg',
@@ -1224,21 +1221,21 @@ describe('src/Core', () => {
source: 'vi',
name: 'foo.jpg',
type: 'image/jpeg',
- // @ts-ignore
+ // @ts-expect-error
data: new Uint8Array(),
})
core.addFile({
source: 'vi',
name: 'bar.jpg',
type: 'image/jpeg',
- // @ts-ignore
+ // @ts-expect-error
data: new Uint8Array(),
})
core.addFile({
source: 'file3',
name: 'file3.jpg',
type: 'image/jpeg',
- // @ts-ignore
+ // @ts-expect-error
data: new Uint8Array(),
})
@@ -1344,7 +1341,6 @@ describe('src/Core', () => {
fileIDs.forEach((fileID) => {
const file = core.getFile(fileID)
if (!hasError) {
- // @ts-ignore
core.emit('upload-error', file, new Error('foo'))
hasError = true
}
@@ -1548,7 +1544,7 @@ describe('src/Core', () => {
core.setFileMeta(fileId, { caption: 'Test caption' })
// Trigger the dashboard:file-edit-complete event to update validation state
- // @ts-ignore
+ // @ts-expect-error
core.emit('dashboard:file-edit-complete', core.getFile(fileId))
const updatedFile = core.getFile(fileId)
@@ -1609,7 +1605,7 @@ describe('src/Core', () => {
// Fix metadata for first file only
core.setFileMeta(fileId1, { caption: 'Fixed caption' })
- // @ts-ignore
+ // @ts-expect-error
core.emit('dashboard:file-edit-complete', core.getFile(fileId1))
// Add an error to file1 so it can be retried
@@ -1676,7 +1672,7 @@ describe('src/Core', () => {
source: 'vi',
name: 'empty.dat',
type: 'application/octet-stream',
- // @ts-ignore
+ // @ts-expect-error
data: new File([new Uint8Array(1000)], {
type: 'application/octet-stream',
}),
@@ -1768,7 +1764,7 @@ describe('src/Core', () => {
source: 'vi',
name: 'foo1.png',
type: 'image/png',
- // @ts-ignore
+ // @ts-expect-error
data: new File([sampleImage], { type: 'image/png' }),
})
throw new Error('should have thrown')
@@ -1786,7 +1782,7 @@ describe('src/Core', () => {
source: 'vi',
name: 'foo1.png',
type: 'image/png',
- // @ts-ignore
+ // @ts-expect-error
data: new File([sampleImage], { type: 'image/png' }),
})
throw new Error('should have thrown')
@@ -1813,7 +1809,7 @@ describe('src/Core', () => {
source: 'vi',
name: 'foo1.png',
type: 'image/png',
- // @ts-ignore
+ // @ts-expect-error
data: new File([sampleImage], { type: 'image/png' }),
})
}).not.toThrow()
@@ -1835,7 +1831,7 @@ describe('src/Core', () => {
any
>({
store: DeepFrozenStore(),
- // @ts-ignore
+ // @ts-expect-error
meta: { foo2: 'bar2' },
})
core.setMeta({ foo: 'bar', bur: 'mur' })
@@ -1879,7 +1875,7 @@ describe('src/Core', () => {
name: 'foo.jpg',
type: 'image/jpeg',
meta: {
- // @ts-ignore
+ // @ts-expect-error
resize: 5000,
},
data: testImage,
@@ -1910,7 +1906,7 @@ describe('src/Core', () => {
core.emit('upload-start', [core.getFile(fileId)])
- // @ts-ignore
+ // @ts-expect-error
core.emit('upload-progress', file, {
bytesUploaded: 12345,
bytesTotal: 17175,
@@ -1923,7 +1919,7 @@ describe('src/Core', () => {
uploadStarted: expect.any(Number),
})
- // @ts-ignore
+ // @ts-expect-error
core.emit('upload-progress', file, {
bytesUploaded: 17175,
bytesTotal: 17175,
@@ -1951,13 +1947,13 @@ describe('src/Core', () => {
core.addUploader(async ([id]) => {
core.emit('upload-start', [core.getFile(id)])
await progressPromise
- // @ts-ignore deprecated
+ // @ts-expect-error deprecated
core.emit('upload-progress', core.getFile(id), {
bytesTotal: 3456,
bytesUploaded: 1234,
})
await finishPromise
- // @ts-ignore deprecated
+ // @ts-expect-error deprecated
core.emit('upload-success', core.getFile(id), { uploadURL: 'lol' })
})
@@ -1965,11 +1961,11 @@ describe('src/Core', () => {
source: 'dropbox',
name: 'foo.jpg',
type: 'image/jpeg',
- // @ts-ignore
+ // @ts-expect-error
data: {},
})
- // @ts-ignore
+ // @ts-expect-error
core[Symbol.for('uppy test: updateTotalProgress')]()
const uploadStartedPromise = new Promise((resolve) =>
@@ -1985,7 +1981,7 @@ describe('src/Core', () => {
bytesTotal: null,
})
- // @ts-ignore
+ // @ts-expect-error
proceedUpload()
// wait for progress event
await progressPromise
@@ -1999,7 +1995,7 @@ describe('src/Core', () => {
expect(core.getState().totalProgress).toBe(36)
- // @ts-ignore
+ // @ts-expect-error
finishUpload()
// wait for success event
await finishPromise
@@ -2021,7 +2017,7 @@ describe('src/Core', () => {
core.once('file-added', (file) => {
core.emit('upload-start', [file])
- // @ts-ignore
+ // @ts-expect-error
core.emit('upload-progress', file, {
bytesTotal: 3456,
bytesUploaded: 1234,
@@ -2031,16 +2027,15 @@ describe('src/Core', () => {
source: 'dropbox',
name: 'foo.jpg',
type: 'image/jpeg',
- // @ts-ignore
+ // @ts-expect-error
data: {},
})
core.once('file-added', (file) => {
core.emit('upload-start', [file])
core.emit('upload-progress', file, {
- // @ts-ignore
bytesTotal: null,
- // @ts-ignore
+ // @ts-expect-error
bytesUploaded: null,
})
})
@@ -2048,11 +2043,11 @@ describe('src/Core', () => {
source: 'dropbox',
name: 'bar.jpg',
type: 'image/jpeg',
- // @ts-ignore
+ // @ts-expect-error
data: {},
})
- // @ts-ignore
+ // @ts-expect-error
core[Symbol.for('uppy test: updateTotalProgress')]()
// foo.jpg at 35%, bar.jpg has unknown size and will not be counted
@@ -2082,27 +2077,27 @@ describe('src/Core', () => {
const [file1, file2] = core.getFiles()
core.setFileState(file1.id, {
- // @ts-ignore suddenly dates??
+ // @ts-expect-error suddenly dates??
progress: { ...file1.progress, uploadStarted: new Date() },
})
core.setFileState(file2.id, {
- // @ts-ignore suddenly dates??
+ // @ts-expect-error suddenly dates??
progress: { ...file2.progress, uploadStarted: new Date() },
})
- // @ts-ignore test does not care about missing properties
+ // @ts-expect-error test does not care about missing properties
core.emit('upload-progress', core.getFile(file1.id), {
bytesUploaded: 12345,
bytesTotal: 17175,
})
- // @ts-ignore test does not care about missing properties
+ // @ts-expect-error test does not care about missing properties
core.emit('upload-progress', core.getFile(file2.id), {
bytesUploaded: 10201,
bytesTotal: 17175,
})
- // @ts-ignore
+ // @ts-expect-error
core[Symbol.for('uppy test: updateTotalProgress')]()
expect(core.getState().totalProgress).toEqual(66)
@@ -2126,27 +2121,27 @@ describe('src/Core', () => {
const [file1, file2] = core.getFiles()
core.setFileState(file1.id, {
- // @ts-ignore suddenly dates??
+ // @ts-expect-error suddenly dates??
progress: { ...file1.progress, uploadStarted: new Date() },
})
core.setFileState(file2.id, {
- // @ts-ignore suddenly dates??
+ // @ts-expect-error suddenly dates??
progress: { ...file2.progress, uploadStarted: new Date() },
})
- // @ts-ignore test does not care about missing properties
+ // @ts-expect-error test does not care about missing properties
core.emit('upload-progress', core.getFile(file1.id), {
bytesUploaded: 12345,
bytesTotal: 17175,
})
- // @ts-ignore test does not care about missing properties
+ // @ts-expect-error test does not care about missing properties
core.emit('upload-progress', core.getFile(file2.id), {
bytesUploaded: 10201,
bytesTotal: 17175,
})
- // @ts-ignore
+ // @ts-expect-error
core[Symbol.for('uppy test: updateTotalProgress')]()
expect(core.getState().totalProgress).toEqual(66)
@@ -2199,7 +2194,7 @@ describe('src/Core', () => {
},
},
}
- // @ts-ignore
+ // @ts-expect-error
core.setState(newState)
expect(() => {
core.clear()
@@ -2486,14 +2481,13 @@ describe('src/Core', () => {
const core = new Core()
core.setState({
files: {
- // @ts-ignore
+ // @ts-expect-error
fileId: {
id: 'fileId',
name: 'filename',
},
},
})
- // @ts-ignore test does not care about missing properties
core.emit(
'upload-error',
core.getFile('fileId'),
@@ -2510,9 +2504,9 @@ describe('src/Core', () => {
it('should reset the error state when receiving the upload event', () => {
const core = new Core()
- // @ts-ignore test does not care about missing properties
+ // @ts-expect-error test does not care about missing properties
core.emit('error', { foo: 'bar' })
- // @ts-ignore test does not care about missing properties
+ // @ts-expect-error test does not care about missing properties
core.emit('upload')
expect(core.getState().error).toEqual(null)
})
@@ -2529,7 +2523,7 @@ describe('src/Core', () => {
}
afterEach(() => {
- // @ts-ignore readonly but whatever
+ // @ts-expect-error readonly but whatever
globalThis.window.navigator.onLine = RealNavigatorOnline
})
@@ -2538,11 +2532,8 @@ describe('src/Core', () => {
const offlineEventMock = vi.fn()
const backOnlineEventMock = vi.fn()
const core = new Core()
- // @ts-ignore untyped
core.on('is-offline', offlineEventMock)
- // @ts-ignore untyped
core.on('is-online', onlineEventMock)
- // @ts-ignore untyped
core.on('back-online', backOnlineEventMock)
mockNavigatorOnline(true)
@@ -2689,7 +2680,7 @@ describe('src/Core', () => {
data: testImage,
})
- // @ts-ignore accessing private method
+ // @ts-expect-error accessing private method
core[Symbol.for('uppy test: createUpload')](
Object.keys(core.getState().files),
)
@@ -2754,11 +2745,11 @@ describe('src/Core', () => {
// logger.debug should have been called 1 time above,
// but we call log in Core’s constructor to output VERSION, hence +1 here
- // @ts-ignore
+ // @ts-expect-error
expect(core.opts.logger.debug.mock.calls.length).toBe(2)
- // @ts-ignore
+ // @ts-expect-error
expect(core.opts.logger.error.mock.calls.length).toBe(2)
- // @ts-ignore
+ // @ts-expect-error
expect(core.opts.logger.warn.mock.calls.length).toBe(1)
})
@@ -2781,13 +2772,13 @@ describe('src/Core', () => {
// logger.debug should have been called 1 time above,
// but we call log in Core’s constructor to output VERSION, hence +1 here
- // @ts-ignore
+ // @ts-expect-error
expect(core.opts.logger.debug.mock.calls.length).toBe(2)
- // @ts-ignore
+ // @ts-expect-error
expect(core.opts.logger.error.mock.calls.length).toBe(2)
// logger.warn should have been called 1 time above,
// but we warn in Core when using both logger and debug: true, hence +1 here
- // @ts-ignore
+ // @ts-expect-error
expect(core.opts.logger.warn.mock.calls.length).toBe(2)
})
@@ -2805,14 +2796,14 @@ describe('src/Core', () => {
// console.debug debug should have been called 2 times above,
// ibut we call log n Core’ constructor to output VERSION, hence +1 here
- // @ts-ignore
+ // @ts-expect-error
expect(console.debug.mock.calls.length).toBe(3)
- // @ts-ignore
+ // @ts-expect-error
expect(console.error.mock.calls.length).toBe(1)
- // @ts-ignore
+ // @ts-expect-error
console.debug.mockClear()
- // @ts-ignore
+ // @ts-expect-error
console.error.mockClear()
const core2 = new Core({
@@ -2825,9 +2816,9 @@ describe('src/Core', () => {
// console.debug debug should have been called 2 times here,
// but we call log in Core constructor to output VERSION, hence +1 here
- // @ts-ignore
+ // @ts-expect-error
expect(console.debug.mock.calls.length).toBe(3)
- // @ts-ignore
+ // @ts-expect-error
expect(console.error.mock.calls.length).toBe(1)
})
@@ -2841,9 +2832,9 @@ describe('src/Core', () => {
core.log('beep boop')
core.log('beep beep', 'error')
- // @ts-ignore
+ // @ts-expect-error
expect(console.debug.mock.calls.length).toBe(0)
- // @ts-ignore
+ // @ts-expect-error
expect(console.error.mock.calls.length).toBe(1)
})
})
diff --git a/packages/@uppy/core/src/Uppy.ts b/packages/@uppy/core/src/Uppy.ts
index f434894ae1..73d0dd8127 100644
--- a/packages/@uppy/core/src/Uppy.ts
+++ b/packages/@uppy/core/src/Uppy.ts
@@ -25,7 +25,7 @@ import {
Translator,
} from '@uppy/utils'
import throttle from 'lodash/throttle.js'
-// @ts-ignore untyped
+// @ts-expect-error untyped
import ee from 'namespace-emitter'
import { nanoid } from 'nanoid/non-secure'
import type { h } from 'preact'
@@ -511,7 +511,7 @@ export class Uppy<
// Exposing uppy object on window for debugging and testing
if (this.opts.debug && typeof window !== 'undefined') {
- // @ts-ignore Mutating the global object for debug purposes
+ // @ts-expect-error Mutating the global object for debug purposes
window[this.opts.id] = this
}
@@ -1592,6 +1592,7 @@ export class Uppy<
{ leading: true, trailing: true },
)
+ // biome-ignore lint/correctness/noUnusedPrivateClassMembers: accessed via Symbol in tests
private [Symbol.for('uppy test: updateTotalProgress')]() {
return this.#updateTotalProgress()
}
@@ -1977,6 +1978,7 @@ export class Uppy<
return undefined
}
+ // biome-ignore lint/correctness/noUnusedPrivateClassMembers: accessed via Symbol in tests
private [Symbol.for('uppy test: getPlugins')](
type: string,
): UnknownPlugin[] {
@@ -2181,6 +2183,7 @@ export class Uppy<
return uploadID
}
+ // biome-ignore lint/correctness/noUnusedPrivateClassMembers: accessed via Symbol in tests
private [Symbol.for('uppy test: createUpload')](...args: any[]): string {
// @ts-expect-error https://github.com/microsoft/TypeScript/issues/47595
return this.#createUpload(...args)
diff --git a/packages/@uppy/core/src/loggers.ts b/packages/@uppy/core/src/loggers.ts
index 409e4341a6..a5df4e195b 100644
--- a/packages/@uppy/core/src/loggers.ts
+++ b/packages/@uppy/core/src/loggers.ts
@@ -20,4 +20,4 @@ const debugLogger = {
console.error(`[Uppy] [${getTimeStamp()}]`, ...args),
}
-export { justErrorsLogger, debugLogger }
+export { debugLogger, justErrorsLogger }
diff --git a/packages/@uppy/dashboard/src/Dashboard.tsx b/packages/@uppy/dashboard/src/Dashboard.tsx
index cdde90d3f3..422f1cda5f 100644
--- a/packages/@uppy/dashboard/src/Dashboard.tsx
+++ b/packages/@uppy/dashboard/src/Dashboard.tsx
@@ -724,7 +724,7 @@ export default class Dashboard extends UIPlugin<
private handlePopState = (event: PopStateEvent) => {
// Close the modal if the history state no longer contains our modal name
- if (this.isModalOpen() && (!event.state || !event.state[this.modalName])) {
+ if (this.isModalOpen() && !event.state?.[this.modalName]) {
this.closeModal({ manualClose: false })
}
@@ -970,9 +970,9 @@ export default class Dashboard extends UIPlugin<
if (this.opts.trigger && !this.opts.inline) {
const showModalTrigger = findAllDOMElements(this.opts.trigger)
if (showModalTrigger) {
- showModalTrigger.forEach((trigger) =>
- trigger.addEventListener('click', this.openModal),
- )
+ showModalTrigger.forEach((trigger) => {
+ trigger.addEventListener('click', this.openModal)
+ })
} else {
this.uppy.log(
'Dashboard modal trigger not found. Make sure `trigger` is set in Dashboard options, unless you are planning to call `dashboard.openModal()` method yourself',
@@ -1010,9 +1010,9 @@ export default class Dashboard extends UIPlugin<
removeEvents = (): void => {
const showModalTrigger = findAllDOMElements(this.opts.trigger)
if (!this.opts.inline && showModalTrigger) {
- showModalTrigger.forEach((trigger) =>
- trigger.removeEventListener('click', this.openModal),
- )
+ showModalTrigger.forEach((trigger) => {
+ trigger.removeEventListener('click', this.openModal)
+ })
}
this.stopListeningToResize()
diff --git a/packages/@uppy/dashboard/src/components/AddFiles.tsx b/packages/@uppy/dashboard/src/components/AddFiles.tsx
index 6431702952..ccafc3331e 100644
--- a/packages/@uppy/dashboard/src/components/AddFiles.tsx
+++ b/packages/@uppy/dashboard/src/components/AddFiles.tsx
@@ -274,6 +274,7 @@ class AddFiles extends Component {
)
}
+ // biome-ignore lint/correctness/noUnusedPrivateClassMembers: accessed via Symbol in tests
private [Symbol.for('uppy test: disable unused locale key warning')]() {
// Those are actually used in `renderDropPasteBrowseTagline` method.
this.props.i18nArray('dropPasteBoth')
@@ -309,27 +310,6 @@ class AddFiles extends Component {
)
}
- private renderAcquirers = (acquirers: TargetWithRender[]) => {
- // Group last two buttons, so we don’t end up with
- // just one button on a new line
- const acquirersWithoutLastTwo = [...acquirers]
- const lastTwoAcquirers = acquirersWithoutLastTwo.splice(
- acquirers.length - 2,
- acquirers.length,
- )
-
- return (
- <>
- {acquirersWithoutLastTwo.map((acquirer) =>
- this.renderAcquirer(acquirer),
- )}
-
- {lastTwoAcquirers.map((acquirer) => this.renderAcquirer(acquirer))}
-
- >
- )
- }
-
private renderSourcesList = (
acquirers: TargetWithRender[],
disableLocalFiles: boolean,
diff --git a/packages/@uppy/dashboard/src/components/AddFilesPanel.tsx b/packages/@uppy/dashboard/src/components/AddFilesPanel.tsx
index f46758793e..40964abe90 100644
--- a/packages/@uppy/dashboard/src/components/AddFilesPanel.tsx
+++ b/packages/@uppy/dashboard/src/components/AddFilesPanel.tsx
@@ -13,7 +13,6 @@ const AddFilesPanel = (props: $TSFixMe): $TSFixMe => {
diff --git a/packages/@uppy/dashboard/src/components/EditorPanel.tsx b/packages/@uppy/dashboard/src/components/EditorPanel.tsx
index 2e2f5c8cc8..e6771b9e3d 100644
--- a/packages/@uppy/dashboard/src/components/EditorPanel.tsx
+++ b/packages/@uppy/dashboard/src/components/EditorPanel.tsx
@@ -20,7 +20,6 @@ function EditorPanel(props: $TSFixMe) {
diff --git a/packages/@uppy/dashboard/src/components/FileCard/index.tsx b/packages/@uppy/dashboard/src/components/FileCard/index.tsx
index ca88cf2b32..1ba41d068c 100644
--- a/packages/@uppy/dashboard/src/components/FileCard/index.tsx
+++ b/packages/@uppy/dashboard/src/components/FileCard/index.tsx
@@ -115,7 +115,6 @@ export default function FileCard(props: $TSFixMe) {
diff --git a/packages/@uppy/dashboard/src/components/FileList.tsx b/packages/@uppy/dashboard/src/components/FileList.tsx
index 6c291976e8..24a47fe161 100644
--- a/packages/@uppy/dashboard/src/components/FileList.tsx
+++ b/packages/@uppy/dashboard/src/components/FileList.tsx
@@ -1,6 +1,5 @@
import type { Body, Meta, State, Uppy, UppyFile } from '@uppy/core'
import type { I18n } from '@uppy/utils'
-// @ts-ignore untyped
import { VirtualList } from '@uppy/utils'
import { useMemo } from 'preact/hooks'
import type { DashboardState } from '../Dashboard.js'
diff --git a/packages/@uppy/dashboard/src/components/PickerPanelContent.tsx b/packages/@uppy/dashboard/src/components/PickerPanelContent.tsx
index 7c9206fb35..f61d00e12e 100644
--- a/packages/@uppy/dashboard/src/components/PickerPanelContent.tsx
+++ b/packages/@uppy/dashboard/src/components/PickerPanelContent.tsx
@@ -27,7 +27,6 @@ function PickerPanelContent({
diff --git a/packages/@uppy/dashboard/src/components/StatusBar/Components.tsx b/packages/@uppy/dashboard/src/components/StatusBar/Components.tsx
index 3cdf5722d7..4d1316e8ff 100644
--- a/packages/@uppy/dashboard/src/components/StatusBar/Components.tsx
+++ b/packages/@uppy/dashboard/src/components/StatusBar/Components.tsx
@@ -456,7 +456,6 @@ function ProgressBarComplete(props: ProgressBarCompleteProps) {
return (
@@ -531,16 +530,17 @@ function ProgressBarError(props: ProgressBarErrorProps) {
)
}
+
export {
- UploadBtn,
- RetryBtn,
CancelBtn,
- PauseResumeButton,
DoneBtn,
LoadingSpinner,
- ProgressDetails,
- ProgressBarProcessing,
+ PauseResumeButton,
+ ProgressBarComplete,
ProgressBarError,
+ ProgressBarProcessing,
ProgressBarUploading,
- ProgressBarComplete,
+ ProgressDetails,
+ RetryBtn,
+ UploadBtn,
}
diff --git a/packages/@uppy/dashboard/src/index.test.ts b/packages/@uppy/dashboard/src/index.test.ts
index 72398e9f90..b11723b618 100644
--- a/packages/@uppy/dashboard/src/index.test.ts
+++ b/packages/@uppy/dashboard/src/index.test.ts
@@ -1,8 +1,6 @@
import Core, { type UIPlugin } from '@uppy/core'
import GoogleDrivePlugin from '@uppy/google-drive'
-// @ts-ignore untyped
import Url from '@uppy/url'
-// @ts-ignore untyped
import WebcamPlugin from '@uppy/webcam'
import resizeObserverPolyfill from 'resize-observer-polyfill'
import { afterAll, beforeAll, describe, expect, it } from 'vitest'
@@ -12,7 +10,6 @@ type $TSFixMe = any
describe('Dashboard', () => {
beforeAll(() => {
- // @ts-ignore we're touching globals for the test
globalThis.ResizeObserver =
(resizeObserverPolyfill as any).default || resizeObserverPolyfill
})
diff --git a/packages/@uppy/dashboard/src/utils/createSuperFocus.ts b/packages/@uppy/dashboard/src/utils/createSuperFocus.ts
index 8d69265749..34c0e8e18d 100644
--- a/packages/@uppy/dashboard/src/utils/createSuperFocus.ts
+++ b/packages/@uppy/dashboard/src/utils/createSuperFocus.ts
@@ -1,4 +1,3 @@
-// @ts-ignore untyped
import { FOCUSABLE_ELEMENTS } from '@uppy/utils'
import debounce from 'lodash/debounce.js'
import getActiveOverlayEl from './getActiveOverlayEl.js'
diff --git a/packages/@uppy/dashboard/src/utils/trapFocus.ts b/packages/@uppy/dashboard/src/utils/trapFocus.ts
index c902f4fbd8..598ad14c9c 100644
--- a/packages/@uppy/dashboard/src/utils/trapFocus.ts
+++ b/packages/@uppy/dashboard/src/utils/trapFocus.ts
@@ -1,4 +1,3 @@
-// @ts-ignore untyped
import { FOCUSABLE_ELEMENTS, toArray } from '@uppy/utils'
import getActiveOverlayEl from './getActiveOverlayEl.js'
diff --git a/packages/@uppy/form/src/index.ts b/packages/@uppy/form/src/index.ts
index 798fff854a..ba36e8cc8f 100644
--- a/packages/@uppy/form/src/index.ts
+++ b/packages/@uppy/form/src/index.ts
@@ -9,7 +9,7 @@ import type {
import { BasePlugin } from '@uppy/core'
import { findDOMElement, toArray } from '@uppy/utils'
-// @ts-ignore untyped
+// @ts-expect-error untyped
import getFormData from 'get-form-data'
import packageJson from '../package.json' with { type: 'json' }
diff --git a/packages/@uppy/golden-retriever/src/index.ts b/packages/@uppy/golden-retriever/src/index.ts
index 0898c374ab..3b5c878a82 100644
--- a/packages/@uppy/golden-retriever/src/index.ts
+++ b/packages/@uppy/golden-retriever/src/index.ts
@@ -15,7 +15,6 @@ import MetaDataStore from './MetaDataStore.js'
import ServiceWorkerStore from './ServiceWorkerStore.js'
declare module '@uppy/core' {
- // biome-ignore lint/correctness/noUnusedVariables: must be defined
export interface UppyEventMap
{
'restore:plugin-data-changed': (data: Record) => void
}
diff --git a/packages/@uppy/locales/src/ar_SA.ts b/packages/@uppy/locales/src/ar_SA.ts
index bf750b7e61..5726332aa9 100644
--- a/packages/@uppy/locales/src/ar_SA.ts
+++ b/packages/@uppy/locales/src/ar_SA.ts
@@ -136,9 +136,9 @@ ar_SA.strings = {
openFolderNamed: '%{name} افتح المجلد',
}
-// @ts-ignore untyped
+// @ts-expect-error untyped
if (typeof Uppy !== 'undefined') {
- // @ts-ignore untyped
+ // @ts-expect-error untyped
globalThis.Uppy.locales.ar_SA = ar_SA
}
diff --git a/packages/@uppy/locales/src/bg_BG.ts b/packages/@uppy/locales/src/bg_BG.ts
index 0bfb50cbc5..637e505e0c 100644
--- a/packages/@uppy/locales/src/bg_BG.ts
+++ b/packages/@uppy/locales/src/bg_BG.ts
@@ -164,9 +164,9 @@ bg_BG.strings = {
},
}
-// @ts-ignore untyped
+// @ts-expect-error untyped
if (typeof Uppy !== 'undefined') {
- // @ts-ignore untyped
+ // @ts-expect-error untyped
globalThis.Uppy.locales.bg_BG = bg_BG
}
diff --git a/packages/@uppy/locales/src/ca_ES.ts b/packages/@uppy/locales/src/ca_ES.ts
index f05b431021..bce9a1296f 100644
--- a/packages/@uppy/locales/src/ca_ES.ts
+++ b/packages/@uppy/locales/src/ca_ES.ts
@@ -229,9 +229,9 @@ ca_ES.strings = {
unselectFileNamed: 'Desselecciona arxiu %{name}',
}
-// @ts-ignore untyped
+// @ts-expect-error untyped
if (typeof Uppy !== 'undefined') {
- // @ts-ignore untyped
+ // @ts-expect-error untyped
globalThis.Uppy.locales.ca_ES = ca_ES
}
diff --git a/packages/@uppy/locales/src/cs_CZ.ts b/packages/@uppy/locales/src/cs_CZ.ts
index 9720ad3089..1489294507 100644
--- a/packages/@uppy/locales/src/cs_CZ.ts
+++ b/packages/@uppy/locales/src/cs_CZ.ts
@@ -274,9 +274,9 @@ cs_CZ.strings = {
zoomOut: 'Oddálit',
}
-// @ts-ignore untyped
+// @ts-expect-error untyped
if (typeof Uppy !== 'undefined') {
- // @ts-ignore untyped
+ // @ts-expect-error untyped
globalThis.Uppy.locales.cs_CZ = cs_CZ
}
diff --git a/packages/@uppy/locales/src/da_DK.ts b/packages/@uppy/locales/src/da_DK.ts
index 21d99dc3e7..1e8f807cf8 100644
--- a/packages/@uppy/locales/src/da_DK.ts
+++ b/packages/@uppy/locales/src/da_DK.ts
@@ -141,9 +141,9 @@ da_DK.strings = {
},
}
-// @ts-ignore untyped
+// @ts-expect-error untyped
if (typeof Uppy !== 'undefined') {
- // @ts-ignore untyped
+ // @ts-expect-error untyped
globalThis.Uppy.locales.da_DK = da_DK
}
diff --git a/packages/@uppy/locales/src/de_DE.ts b/packages/@uppy/locales/src/de_DE.ts
index b6bbb4cbac..9c1d99b0d6 100644
--- a/packages/@uppy/locales/src/de_DE.ts
+++ b/packages/@uppy/locales/src/de_DE.ts
@@ -210,9 +210,9 @@ de_DE.strings = {
zoomOut: 'Verkleinern',
}
-// @ts-ignore untyped
+// @ts-expect-error untyped
if (typeof Uppy !== 'undefined') {
- // @ts-ignore untyped
+ // @ts-expect-error untyped
globalThis.Uppy.locales.de_DE = de_DE
}
diff --git a/packages/@uppy/locales/src/el_GR.ts b/packages/@uppy/locales/src/el_GR.ts
index dcad28a604..615121078b 100644
--- a/packages/@uppy/locales/src/el_GR.ts
+++ b/packages/@uppy/locales/src/el_GR.ts
@@ -145,9 +145,9 @@ el_GR.strings = {
},
}
-// @ts-ignore untyped
+// @ts-expect-error untyped
if (typeof Uppy !== 'undefined') {
- // @ts-ignore untyped
+ // @ts-expect-error untyped
globalThis.Uppy.locales.el_GR = el_GR
}
diff --git a/packages/@uppy/locales/src/en_US.ts b/packages/@uppy/locales/src/en_US.ts
index b8a925181c..c3f95e82df 100644
--- a/packages/@uppy/locales/src/en_US.ts
+++ b/packages/@uppy/locales/src/en_US.ts
@@ -252,9 +252,9 @@ en_US.strings = {
zoomOut: 'Zoom out',
}
-// @ts-ignore untyped
+// @ts-expect-error untyped
if (typeof Uppy !== 'undefined') {
- // @ts-ignore untyped
+ // @ts-expect-error untyped
globalThis.Uppy.locales.en_US = en_US
}
diff --git a/packages/@uppy/locales/src/es_ES.ts b/packages/@uppy/locales/src/es_ES.ts
index 7114a7cf2e..e4581f90e5 100644
--- a/packages/@uppy/locales/src/es_ES.ts
+++ b/packages/@uppy/locales/src/es_ES.ts
@@ -232,9 +232,9 @@ es_ES.strings = {
unselectFileNamed: 'Deseleccionar archivo %{name}',
}
-// @ts-ignore untyped
+// @ts-expect-error untyped
if (typeof Uppy !== 'undefined') {
- // @ts-ignore untyped
+ // @ts-expect-error untyped
globalThis.Uppy.locales.es_ES = es_ES
}
diff --git a/packages/@uppy/locales/src/es_MX.ts b/packages/@uppy/locales/src/es_MX.ts
index 21efd7d145..b8eb479869 100644
--- a/packages/@uppy/locales/src/es_MX.ts
+++ b/packages/@uppy/locales/src/es_MX.ts
@@ -198,9 +198,9 @@ es_MX.strings = {
zoomOut: 'Alejar',
}
-// @ts-ignore untyped
+// @ts-expect-error untyped
if (typeof Uppy !== 'undefined') {
- // @ts-ignore untyped
+ // @ts-expect-error untyped
globalThis.Uppy.locales.es_MX = es_MX
}
diff --git a/packages/@uppy/locales/src/fa_IR.ts b/packages/@uppy/locales/src/fa_IR.ts
index 024e96e597..1b69091ca9 100644
--- a/packages/@uppy/locales/src/fa_IR.ts
+++ b/packages/@uppy/locales/src/fa_IR.ts
@@ -221,9 +221,9 @@ fa_IR.strings = {
zoomOut: 'کوچکنمایی',
}
-// @ts-ignore untyped
+// @ts-expect-error untyped
if (typeof Uppy !== 'undefined') {
- // @ts-ignore untyped
+ // @ts-expect-error untyped
globalThis.Uppy.locales.fa_IR = fa_IR
}
diff --git a/packages/@uppy/locales/src/fi_FI.ts b/packages/@uppy/locales/src/fi_FI.ts
index a2ec3d4d6b..5eda5537b6 100644
--- a/packages/@uppy/locales/src/fi_FI.ts
+++ b/packages/@uppy/locales/src/fi_FI.ts
@@ -146,9 +146,9 @@ fi_FI.strings = {
recording: 'Tallennetaan',
}
-// @ts-ignore untyped
+// @ts-expect-error untyped
if (typeof Uppy !== 'undefined') {
- // @ts-ignore untyped
+ // @ts-expect-error untyped
globalThis.Uppy.locales.fi_FI = fi_FI
}
diff --git a/packages/@uppy/locales/src/fr_FR.ts b/packages/@uppy/locales/src/fr_FR.ts
index 6a0fb817ab..7a8f6d0f29 100644
--- a/packages/@uppy/locales/src/fr_FR.ts
+++ b/packages/@uppy/locales/src/fr_FR.ts
@@ -215,9 +215,9 @@ fr_FR.strings = {
},
}
-// @ts-ignore untyped
+// @ts-expect-error untyped
if (typeof Uppy !== 'undefined') {
- // @ts-ignore untyped
+ // @ts-expect-error untyped
globalThis.Uppy.locales.fr_FR = fr_FR
}
diff --git a/packages/@uppy/locales/src/gl_ES.ts b/packages/@uppy/locales/src/gl_ES.ts
index 35c0f63d9a..25b2fed3fa 100644
--- a/packages/@uppy/locales/src/gl_ES.ts
+++ b/packages/@uppy/locales/src/gl_ES.ts
@@ -143,9 +143,9 @@ gl_ES.strings = {
openFolderNamed: 'Cartafol aberto %{name}',
}
-// @ts-ignore untyped
+// @ts-expect-error untyped
if (typeof Uppy !== 'undefined') {
- // @ts-ignore untyped
+ // @ts-expect-error untyped
globalThis.Uppy.locales.gl_ES = gl_ES
}
diff --git a/packages/@uppy/locales/src/he_IL.ts b/packages/@uppy/locales/src/he_IL.ts
index eee51fca39..44a5d52f2a 100644
--- a/packages/@uppy/locales/src/he_IL.ts
+++ b/packages/@uppy/locales/src/he_IL.ts
@@ -139,9 +139,9 @@ he_IL.strings = {
},
}
-// @ts-ignore untyped
+// @ts-expect-error untyped
if (typeof Uppy !== 'undefined') {
- // @ts-ignore untyped
+ // @ts-expect-error untyped
globalThis.Uppy.locales.he_IL = he_IL
}
diff --git a/packages/@uppy/locales/src/hi_IN.ts b/packages/@uppy/locales/src/hi_IN.ts
index d42d3b7e5e..587d31f507 100644
--- a/packages/@uppy/locales/src/hi_IN.ts
+++ b/packages/@uppy/locales/src/hi_IN.ts
@@ -189,9 +189,9 @@ hi_IN.strings = {
zoomOut: 'ज़ूम आउट',
}
-// @ts-ignore untyped
+// @ts-expect-error untyped
if (typeof Uppy !== 'undefined') {
- // @ts-ignore untyped
+ // @ts-expect-error untyped
globalThis.Uppy.locales.hi_IN = hi_IN
}
diff --git a/packages/@uppy/locales/src/hr_HR.ts b/packages/@uppy/locales/src/hr_HR.ts
index 924b57b912..f347db8279 100644
--- a/packages/@uppy/locales/src/hr_HR.ts
+++ b/packages/@uppy/locales/src/hr_HR.ts
@@ -143,9 +143,9 @@ hr_HR.strings = {
openFolderNamed: 'Otvori mapu %{name}',
}
-// @ts-ignore untyped
+// @ts-expect-error untyped
if (typeof Uppy !== 'undefined') {
- // @ts-ignore untyped
+ // @ts-expect-error untyped
globalThis.Uppy.locales.hr_HR = hr_HR
}
diff --git a/packages/@uppy/locales/src/hu_HU.ts b/packages/@uppy/locales/src/hu_HU.ts
index 94b1272f1d..4b7f6d4af1 100644
--- a/packages/@uppy/locales/src/hu_HU.ts
+++ b/packages/@uppy/locales/src/hu_HU.ts
@@ -105,9 +105,9 @@ hu_HU.strings = {
openFolderNamed: 'Nyitott mappa %{name}',
}
-// @ts-ignore untyped
+// @ts-expect-error untyped
if (typeof Uppy !== 'undefined') {
- // @ts-ignore untyped
+ // @ts-expect-error untyped
globalThis.Uppy.locales.hu_HU = hu_HU
}
diff --git a/packages/@uppy/locales/src/id_ID.ts b/packages/@uppy/locales/src/id_ID.ts
index b1d42b893f..7daf65b029 100644
--- a/packages/@uppy/locales/src/id_ID.ts
+++ b/packages/@uppy/locales/src/id_ID.ts
@@ -140,9 +140,9 @@ id_ID.strings = {
},
}
-// @ts-ignore untyped
+// @ts-expect-error untyped
if (typeof Uppy !== 'undefined') {
- // @ts-ignore untyped
+ // @ts-expect-error untyped
globalThis.Uppy.locales.id_ID = id_ID
}
diff --git a/packages/@uppy/locales/src/is_IS.ts b/packages/@uppy/locales/src/is_IS.ts
index f3a7f07946..ebf4713b54 100644
--- a/packages/@uppy/locales/src/is_IS.ts
+++ b/packages/@uppy/locales/src/is_IS.ts
@@ -145,9 +145,9 @@ is_IS.strings = {
},
}
-// @ts-ignore untyped
+// @ts-expect-error untyped
if (typeof Uppy !== 'undefined') {
- // @ts-ignore untyped
+ // @ts-expect-error untyped
globalThis.Uppy.locales.is_IS = is_IS
}
diff --git a/packages/@uppy/locales/src/it_IT.ts b/packages/@uppy/locales/src/it_IT.ts
index b6f19029eb..7508dce639 100644
--- a/packages/@uppy/locales/src/it_IT.ts
+++ b/packages/@uppy/locales/src/it_IT.ts
@@ -140,9 +140,9 @@ it_IT.strings = {
openFolderNamed: 'Cartella aperta %{name}',
}
-// @ts-ignore untyped
+// @ts-expect-error untyped
if (typeof Uppy !== 'undefined') {
- // @ts-ignore untyped
+ // @ts-expect-error untyped
globalThis.Uppy.locales.it_IT = it_IT
}
diff --git a/packages/@uppy/locales/src/ja_JP.ts b/packages/@uppy/locales/src/ja_JP.ts
index ebfbb1ac57..62e33ab51f 100644
--- a/packages/@uppy/locales/src/ja_JP.ts
+++ b/packages/@uppy/locales/src/ja_JP.ts
@@ -148,9 +148,9 @@ ja_JP.strings = {
openFolderNamed: '開いたフォルダ %{name}',
}
-// @ts-ignore untyped
+// @ts-expect-error untyped
if (typeof Uppy !== 'undefined') {
- // @ts-ignore untyped
+ // @ts-expect-error untyped
globalThis.Uppy.locales.ja_JP = ja_JP
}
diff --git a/packages/@uppy/locales/src/ko_KR.ts b/packages/@uppy/locales/src/ko_KR.ts
index e40079c72d..73138bd881 100644
--- a/packages/@uppy/locales/src/ko_KR.ts
+++ b/packages/@uppy/locales/src/ko_KR.ts
@@ -108,9 +108,9 @@ ko_KR.strings = {
youHaveToAtLeastSelectX: '최소 %{smart_count}개의 파일을 선택해야 합니다',
}
-// @ts-ignore untyped
+// @ts-expect-error untyped
if (typeof Uppy !== 'undefined') {
- // @ts-ignore untyped
+ // @ts-expect-error untyped
globalThis.Uppy.locales.ko_KR = ko_KR
}
diff --git a/packages/@uppy/locales/src/ms_MY.ts b/packages/@uppy/locales/src/ms_MY.ts
index 941c65feea..1358ea330c 100644
--- a/packages/@uppy/locales/src/ms_MY.ts
+++ b/packages/@uppy/locales/src/ms_MY.ts
@@ -232,9 +232,9 @@ ms_MY.strings = {
zoomOut: 'Zum keluar',
}
-// @ts-ignore untyped
+// @ts-expect-error untyped
if (typeof Uppy !== 'undefined') {
- // @ts-ignore untyped
+ // @ts-expect-error untyped
globalThis.Uppy.locales.ms_MY = ms_MY
}
diff --git a/packages/@uppy/locales/src/nb_NO.ts b/packages/@uppy/locales/src/nb_NO.ts
index bf8d9d29de..6560c09f0c 100644
--- a/packages/@uppy/locales/src/nb_NO.ts
+++ b/packages/@uppy/locales/src/nb_NO.ts
@@ -175,9 +175,9 @@ nb_NO.strings = {
zoomOut: 'Zoom ut',
}
-// @ts-ignore untyped
+// @ts-expect-error untyped
if (typeof Uppy !== 'undefined') {
- // @ts-ignore untyped
+ // @ts-expect-error untyped
globalThis.Uppy.locales.nb_NO = nb_NO
}
diff --git a/packages/@uppy/locales/src/nl_NL.ts b/packages/@uppy/locales/src/nl_NL.ts
index 28d2b604ad..28a11ed7c3 100644
--- a/packages/@uppy/locales/src/nl_NL.ts
+++ b/packages/@uppy/locales/src/nl_NL.ts
@@ -247,9 +247,9 @@ nl_NL.strings = {
zoomOut: 'Zoom uit',
}
-// @ts-ignore untyped
+// @ts-expect-error untyped
if (typeof Uppy !== 'undefined') {
- // @ts-ignore untyped
+ // @ts-expect-error untyped
globalThis.Uppy.locales.nl_NL = nl_NL
}
diff --git a/packages/@uppy/locales/src/pl_PL.ts b/packages/@uppy/locales/src/pl_PL.ts
index 1ca1d2b15b..00b33458b8 100644
--- a/packages/@uppy/locales/src/pl_PL.ts
+++ b/packages/@uppy/locales/src/pl_PL.ts
@@ -243,9 +243,9 @@ pl_PL.strings = {
zoomOut: 'Pomniejsz',
}
-// @ts-ignore untyped
+// @ts-expect-error untyped
if (typeof Uppy !== 'undefined') {
- // @ts-ignore untyped
+ // @ts-expect-error untyped
globalThis.Uppy.locales.pl_PL = pl_PL
}
diff --git a/packages/@uppy/locales/src/pt_BR.ts b/packages/@uppy/locales/src/pt_BR.ts
index 24a52c72a7..48bbb18489 100644
--- a/packages/@uppy/locales/src/pt_BR.ts
+++ b/packages/@uppy/locales/src/pt_BR.ts
@@ -248,9 +248,9 @@ pt_BR.strings = {
zoomOut: 'Diminuir o zoom',
}
-// @ts-ignore untyped
+// @ts-expect-error untyped
if (typeof Uppy !== 'undefined') {
- // @ts-ignore untyped
+ // @ts-expect-error untyped
globalThis.Uppy.locales.pt_BR = pt_BR
}
diff --git a/packages/@uppy/locales/src/pt_PT.ts b/packages/@uppy/locales/src/pt_PT.ts
index 30195f868f..13f2ce18af 100644
--- a/packages/@uppy/locales/src/pt_PT.ts
+++ b/packages/@uppy/locales/src/pt_PT.ts
@@ -140,9 +140,9 @@ pt_PT.strings = {
openFolderNamed: 'Pasta aberta %{name}',
}
-// @ts-ignore untyped
+// @ts-expect-error untyped
if (typeof Uppy !== 'undefined') {
- // @ts-ignore untyped
+ // @ts-expect-error untyped
globalThis.Uppy.locales.pt_PT = pt_PT
}
diff --git a/packages/@uppy/locales/src/ro_RO.ts b/packages/@uppy/locales/src/ro_RO.ts
index 7d005067b4..f271c141bc 100644
--- a/packages/@uppy/locales/src/ro_RO.ts
+++ b/packages/@uppy/locales/src/ro_RO.ts
@@ -154,9 +154,9 @@ ro_RO.strings = {
},
}
-// @ts-ignore untyped
+// @ts-expect-error untyped
if (typeof Uppy !== 'undefined') {
- // @ts-ignore untyped
+ // @ts-expect-error untyped
globalThis.Uppy.locales.ro_RO = ro_RO
}
diff --git a/packages/@uppy/locales/src/ru_RU.ts b/packages/@uppy/locales/src/ru_RU.ts
index 3bab2a12b1..2411009a46 100644
--- a/packages/@uppy/locales/src/ru_RU.ts
+++ b/packages/@uppy/locales/src/ru_RU.ts
@@ -253,9 +253,9 @@ ru_RU.strings = {
zoomOut: 'Отдалить',
}
-// @ts-ignore untyped
+// @ts-expect-error untyped
if (typeof Uppy !== 'undefined') {
- // @ts-ignore untyped
+ // @ts-expect-error untyped
globalThis.Uppy.locales.ru_RU = ru_RU
}
diff --git a/packages/@uppy/locales/src/sk_SK.ts b/packages/@uppy/locales/src/sk_SK.ts
index 68ecc9ddb2..68fc787a3b 100644
--- a/packages/@uppy/locales/src/sk_SK.ts
+++ b/packages/@uppy/locales/src/sk_SK.ts
@@ -177,9 +177,9 @@ sk_SK.strings = {
zoomOut: 'Oddialiť',
}
-// @ts-ignore untyped
+// @ts-expect-error untyped
if (typeof Uppy !== 'undefined') {
- // @ts-ignore untyped
+ // @ts-expect-error untyped
globalThis.Uppy.locales.sk_SK = sk_SK
}
diff --git a/packages/@uppy/locales/src/sr_RS_Cyrillic.ts b/packages/@uppy/locales/src/sr_RS_Cyrillic.ts
index c9ff6dd406..aac4d0fa88 100644
--- a/packages/@uppy/locales/src/sr_RS_Cyrillic.ts
+++ b/packages/@uppy/locales/src/sr_RS_Cyrillic.ts
@@ -143,9 +143,9 @@ sr_RS_Cyrillic.strings = {
openFolderNamed: 'Отвори фолдер %{name}',
}
-// @ts-ignore untyped
+// @ts-expect-error untyped
if (typeof Uppy !== 'undefined') {
- // @ts-ignore untyped
+ // @ts-expect-error untyped
globalThis.Uppy.locales.sr_RS_Cyrillic = sr_RS_Cyrillic
}
diff --git a/packages/@uppy/locales/src/sr_RS_Latin.ts b/packages/@uppy/locales/src/sr_RS_Latin.ts
index 955040aedf..987627082f 100644
--- a/packages/@uppy/locales/src/sr_RS_Latin.ts
+++ b/packages/@uppy/locales/src/sr_RS_Latin.ts
@@ -143,9 +143,9 @@ sr_RS_Latin.strings = {
openFolderNamed: 'Otvori folder %{name}',
}
-// @ts-ignore untyped
+// @ts-expect-error untyped
if (typeof Uppy !== 'undefined') {
- // @ts-ignore untyped
+ // @ts-expect-error untyped
globalThis.Uppy.locales.sr_RS_Latin = sr_RS_Latin
}
diff --git a/packages/@uppy/locales/src/sv_SE.ts b/packages/@uppy/locales/src/sv_SE.ts
index 5f0a27b206..bb2a251056 100644
--- a/packages/@uppy/locales/src/sv_SE.ts
+++ b/packages/@uppy/locales/src/sv_SE.ts
@@ -244,9 +244,9 @@ sv_SE.strings = {
zoomOut: 'Zooma ut',
}
-// @ts-ignore untyped
+// @ts-expect-error untyped
if (typeof Uppy !== 'undefined') {
- // @ts-ignore untyped
+ // @ts-expect-error untyped
globalThis.Uppy.locales.sv_SE = sv_SE
}
diff --git a/packages/@uppy/locales/src/th_TH.ts b/packages/@uppy/locales/src/th_TH.ts
index 26eda6d50f..10ed4a16f4 100644
--- a/packages/@uppy/locales/src/th_TH.ts
+++ b/packages/@uppy/locales/src/th_TH.ts
@@ -166,9 +166,9 @@ th_TH.strings = {
zoomOut: 'ซูมออก',
}
-// @ts-ignore untyped
+// @ts-expect-error untyped
if (typeof Uppy !== 'undefined') {
- // @ts-ignore untyped
+ // @ts-expect-error untyped
globalThis.Uppy.locales.th_TH = th_TH
}
diff --git a/packages/@uppy/locales/src/tr_TR.ts b/packages/@uppy/locales/src/tr_TR.ts
index 2b9e1d5fc1..76b1d12f2c 100644
--- a/packages/@uppy/locales/src/tr_TR.ts
+++ b/packages/@uppy/locales/src/tr_TR.ts
@@ -141,9 +141,9 @@ tr_TR.strings = {
openFolderNamed: 'Açık dosya %{name}',
}
-// @ts-ignore untyped
+// @ts-expect-error untyped
if (typeof Uppy !== 'undefined') {
- // @ts-ignore untyped
+ // @ts-expect-error untyped
globalThis.Uppy.locales.tr_TR = tr_TR
}
diff --git a/packages/@uppy/locales/src/uk_UA.ts b/packages/@uppy/locales/src/uk_UA.ts
index 765503d1c8..9af66cf495 100644
--- a/packages/@uppy/locales/src/uk_UA.ts
+++ b/packages/@uppy/locales/src/uk_UA.ts
@@ -238,9 +238,9 @@ uk_UA.strings = {
zoomOut: 'Зменшити',
}
-// @ts-ignore untyped
+// @ts-expect-error untyped
if (typeof Uppy !== 'undefined') {
- // @ts-ignore untyped
+ // @ts-expect-error untyped
globalThis.Uppy.locales.uk_UA = uk_UA
}
diff --git a/packages/@uppy/locales/src/uz_UZ.ts b/packages/@uppy/locales/src/uz_UZ.ts
index dec5b451fb..6f344c55d4 100644
--- a/packages/@uppy/locales/src/uz_UZ.ts
+++ b/packages/@uppy/locales/src/uz_UZ.ts
@@ -221,9 +221,9 @@ uz_UZ.strings = {
zoomOut: 'Kichraytirish',
}
-// @ts-ignore untyped
+// @ts-expect-error untyped
if (typeof Uppy !== 'undefined') {
- // @ts-ignore untyped
+ // @ts-expect-error untyped
globalThis.Uppy.locales.uz_UZ = uz_UZ
}
diff --git a/packages/@uppy/locales/src/vi_VN.ts b/packages/@uppy/locales/src/vi_VN.ts
index a8f9a371d1..9b0265e0a6 100644
--- a/packages/@uppy/locales/src/vi_VN.ts
+++ b/packages/@uppy/locales/src/vi_VN.ts
@@ -224,9 +224,9 @@ vi_VN.strings = {
zoomOut: 'Thu nhỏ',
}
-// @ts-ignore untyped
+// @ts-expect-error untyped
if (typeof Uppy !== 'undefined') {
- // @ts-ignore untyped
+ // @ts-expect-error untyped
globalThis.Uppy.locales.vi_VN = vi_VN
}
diff --git a/packages/@uppy/locales/src/zh_CN.ts b/packages/@uppy/locales/src/zh_CN.ts
index 36cc140318..b7686b22a9 100644
--- a/packages/@uppy/locales/src/zh_CN.ts
+++ b/packages/@uppy/locales/src/zh_CN.ts
@@ -178,9 +178,9 @@ zh_CN.strings = {
zoomOut: '缩小',
}
-// @ts-ignore untyped
+// @ts-expect-error untyped
if (typeof Uppy !== 'undefined') {
- // @ts-ignore untyped
+ // @ts-expect-error untyped
globalThis.Uppy.locales.zh_CN = zh_CN
}
diff --git a/packages/@uppy/locales/src/zh_TW.ts b/packages/@uppy/locales/src/zh_TW.ts
index 764c963602..ee96d65f85 100644
--- a/packages/@uppy/locales/src/zh_TW.ts
+++ b/packages/@uppy/locales/src/zh_TW.ts
@@ -176,9 +176,9 @@ zh_TW.strings = {
zoomOut: '縮小',
}
-// @ts-ignore untyped
+// @ts-expect-error untyped
if (typeof Uppy !== 'undefined') {
- // @ts-ignore untyped
+ // @ts-expect-error untyped
globalThis.Uppy.locales.zh_TW = zh_TW
}
diff --git a/packages/@uppy/locales/template.ts b/packages/@uppy/locales/template.ts
index 3dabf0d3db..5aec61eb43 100644
--- a/packages/@uppy/locales/template.ts
+++ b/packages/@uppy/locales/template.ts
@@ -12,9 +12,9 @@ const en_US: Locale<0 | 1> = {
en_US.strings = {}
-// @ts-ignore untyped
+// @ts-expect-error untyped
if (typeof Uppy !== 'undefined') {
- // @ts-ignore untyped
+ // @ts-expect-error untyped
globalThis.Uppy.locales.en_US = en_US
}
diff --git a/packages/@uppy/status-bar/src/Components.tsx b/packages/@uppy/status-bar/src/Components.tsx
index 03b4feaf7e..3361fe1cb5 100644
--- a/packages/@uppy/status-bar/src/Components.tsx
+++ b/packages/@uppy/status-bar/src/Components.tsx
@@ -456,7 +456,6 @@ function ProgressBarComplete(props: ProgressBarCompleteProps) {
return (
@@ -531,16 +530,17 @@ function ProgressBarError(props: ProgressBarErrorProps) {
)
}
+
export {
- UploadBtn,
- RetryBtn,
CancelBtn,
- PauseResumeButton,
DoneBtn,
LoadingSpinner,
- ProgressDetails,
- ProgressBarProcessing,
+ PauseResumeButton,
+ ProgressBarComplete,
ProgressBarError,
+ ProgressBarProcessing,
ProgressBarUploading,
- ProgressBarComplete,
+ ProgressDetails,
+ RetryBtn,
+ UploadBtn,
}
diff --git a/packages/@uppy/thumbnail-generator/src/index.ts b/packages/@uppy/thumbnail-generator/src/index.ts
index 3492c7d780..a97efc2c45 100644
--- a/packages/@uppy/thumbnail-generator/src/index.ts
+++ b/packages/@uppy/thumbnail-generator/src/index.ts
@@ -2,7 +2,7 @@ import type { DefinePluginOpts, UIPluginOptions, Uppy } from '@uppy/core'
import { UIPlugin } from '@uppy/core'
import type { Body, LocalUppyFile, Meta, UppyFile } from '@uppy/utils'
import { dataURItoBlob, isObjectURL, isPreviewSupported } from '@uppy/utils'
-// @ts-ignore untyped
+// @ts-expect-error untyped
import { rotation } from 'exifr/dist/mini.esm.mjs'
import packageJson from '../package.json' with { type: 'json' }
import locale from './locale.js'
diff --git a/packages/@uppy/transloadit/src/Assembly.ts b/packages/@uppy/transloadit/src/Assembly.ts
index d98900ac16..d93ee17e2a 100644
--- a/packages/@uppy/transloadit/src/Assembly.ts
+++ b/packages/@uppy/transloadit/src/Assembly.ts
@@ -1,4 +1,3 @@
-// @ts-ignore untyped
import type { RateLimitedQueue, WrapPromiseFunctionType } from '@uppy/utils'
import {
fetchWithNetworkError,
@@ -299,9 +298,7 @@ class TransloaditAssembly extends Emitter {
const prevResults = prevResultsMap[stepName] ?? []
nextResults
- .filter(
- (n) => !prevResults || !prevResults.some((p) => p.id === n.id),
- )
+ .filter((n) => !prevResults?.some((p) => p.id === n.id))
.forEach((result) => {
this.emit('result', stepName, result)
})
diff --git a/packages/@uppy/transloadit/src/AssemblyWatcher.ts b/packages/@uppy/transloadit/src/AssemblyWatcher.ts
index e3f744f1c4..8725dd3012 100644
--- a/packages/@uppy/transloadit/src/AssemblyWatcher.ts
+++ b/packages/@uppy/transloadit/src/AssemblyWatcher.ts
@@ -22,6 +22,7 @@ class TransloaditAssemblyWatcher<
#resolve!: () => void
+ // biome-ignore lint/correctness/noUnusedPrivateClassMembers: assigned in constructor, may be needed for future error handling
#reject!: (reason?: string) => void
#uppy
diff --git a/packages/@uppy/transloadit/src/index.ts b/packages/@uppy/transloadit/src/index.ts
index 326981b6cc..cbdfbe921a 100644
--- a/packages/@uppy/transloadit/src/index.ts
+++ b/packages/@uppy/transloadit/src/index.ts
@@ -110,7 +110,6 @@ type PersistentState = {
}
declare module '@uppy/core' {
- // biome-ignore lint/correctness/noUnusedVariables: must be defined
export interface UppyEventMap {
// We're also overriding the `restored` event as it is now populated with Transloadit state.
restored: (pluginData: Record) => void
@@ -191,7 +190,7 @@ function validateParams(params?: AssemblyOptions['params']): void {
parsed = params
}
- if (!parsed.auth || !parsed.auth.key) {
+ if (!parsed.auth?.key) {
throw new Error(
'Transloadit: The `params.auth.key` option is required. ' +
'You can find your Transloadit API key at https://transloadit.com/c/template-credentials',
@@ -486,7 +485,9 @@ export default class Transloadit<
// re-use the old one. See: https://github.com/transloadit/uppy/issues/4412
// and `onReceiveUploadUrl` in @uppy/tus
const files = { ...this.uppy.getState().files }
- filesFromAssembly.forEach((file) => delete files[file.id].tus)
+ filesFromAssembly.forEach((file) => {
+ delete files[file.id].tus
+ })
this.uppy.setState({ files })
this.uppy.emit('error', error)
@@ -1083,11 +1084,9 @@ export default class Transloadit<
}
}
-export { COMPANION_URL, COMPANION_ALLOWED_HOSTS }
-
// Re-export type from @transloadit/types so callers can import it from the plugin package.
export type { AssemblyInstructionsInput } from '@transloadit/types'
-
// Low-level classes for advanced usage (e.g., creating assemblies without file uploads)
export { default as Assembly } from './Assembly.js'
export { AssemblyError, default as Client } from './Client.js'
+export { COMPANION_ALLOWED_HOSTS, COMPANION_URL }
diff --git a/packages/@uppy/tus/src/index.ts b/packages/@uppy/tus/src/index.ts
index 95cf1bb19c..7eb00ebe79 100644
--- a/packages/@uppy/tus/src/index.ts
+++ b/packages/@uppy/tus/src/index.ts
@@ -222,9 +222,7 @@ export default class Tus extends BasePlugin<
// Create a new tus upload
return new Promise((resolve, reject) => {
let queuedRequest: ReturnType
- // biome-ignore lint/style/useConst: ...
let qRequest: () => () => void
- // biome-ignore lint/style/useConst: ...
let upload: tus.Upload
const opts = {
diff --git a/packages/@uppy/utils/src/Translator.ts b/packages/@uppy/utils/src/Translator.ts
index c43afbd017..b84ce01ec4 100644
--- a/packages/@uppy/utils/src/Translator.ts
+++ b/packages/@uppy/utils/src/Translator.ts
@@ -34,10 +34,11 @@ function insertReplacement(
// can be JSX objects and will be otherwise incorrectly turned into strings.
// Without this condition we’d get this: [object Object] hello [object Object] my
if (typeof chunk !== 'string') {
- return newParts.push(chunk)
+ newParts.push(chunk)
+ return
}
- return rx[Symbol.split](chunk).forEach((raw, i, list) => {
+ rx[Symbol.split](chunk).forEach((raw, i, list) => {
if (raw !== '') {
newParts.push(raw)
}
diff --git a/packages/@uppy/webcam/src/Webcam.test.ts b/packages/@uppy/webcam/src/Webcam.test.ts
index b181f91ec7..ccf67256c6 100644
--- a/packages/@uppy/webcam/src/Webcam.test.ts
+++ b/packages/@uppy/webcam/src/Webcam.test.ts
@@ -5,7 +5,7 @@ import Webcam from './index.js'
describe('Webcam', () => {
describe('_getMediaRecorderOptions', () => {
it('should not have a mimeType set if no preferences given', () => {
- // @ts-ignore
+ // @ts-expect-error
globalThis.MediaRecorder = {
isTypeSupported: () => true,
}
@@ -17,7 +17,7 @@ describe('Webcam', () => {
})
it('should use preferredVideoMimeType', () => {
- // @ts-ignore
+ // @ts-expect-error
globalThis.MediaRecorder = {
isTypeSupported: (ty) => ty === 'video/webm',
}
@@ -31,7 +31,7 @@ describe('Webcam', () => {
})
it('should not use preferredVideoMimeType if it is not supported', () => {
- // @ts-ignore
+ // @ts-expect-error
globalThis.MediaRecorder = {
isTypeSupported: (ty) => ty === 'video/webm',
}
@@ -45,7 +45,7 @@ describe('Webcam', () => {
})
it('should pick type based on `allowedFileTypes`', () => {
- // @ts-ignore
+ // @ts-expect-error
globalThis.MediaRecorder = {
isTypeSupported: () => true,
}
@@ -59,7 +59,7 @@ describe('Webcam', () => {
})
it('should use first supported type from allowedFileTypes', () => {
- // @ts-ignore
+ // @ts-expect-error
globalThis.MediaRecorder = {
isTypeSupported: (ty) => ty === 'video/webm',
}
@@ -73,7 +73,7 @@ describe('Webcam', () => {
})
it('should prefer preferredVideoMimeType over allowedFileTypes', () => {
- // @ts-ignore
+ // @ts-expect-error
globalThis.MediaRecorder = {
isTypeSupported: () => true,
}
@@ -89,7 +89,7 @@ describe('Webcam', () => {
})
it('should not use allowedFileTypes if they are unsupported', () => {
- // @ts-ignore
+ // @ts-expect-error
globalThis.MediaRecorder = {
isTypeSupported: () => false,
}
diff --git a/packages/@uppy/webcam/src/Webcam.tsx b/packages/@uppy/webcam/src/Webcam.tsx
index 54ed86759f..dc2a7860a1 100644
--- a/packages/@uppy/webcam/src/Webcam.tsx
+++ b/packages/@uppy/webcam/src/Webcam.tsx
@@ -311,7 +311,7 @@ export default class Webcam extends UIPlugin<
? stream.getAudioTracks()
: stream.getVideoTracks()
- if (!options || !options.deviceId) {
+ if (!options?.deviceId) {
currentDeviceId = tracks[0].getSettings().deviceId
} else {
tracks.forEach((track) => {
@@ -519,7 +519,9 @@ export default class Webcam extends UIPlugin<
const audioTracks = this.stream.getAudioTracks()
const videoTracks = this.stream.getVideoTracks()
- audioTracks.concat(videoTracks).forEach((track) => track.stop())
+ audioTracks.concat(videoTracks).forEach((track) => {
+ track.stop()
+ })
}
if (this.recorder) {
diff --git a/packages/@uppy/webcam/src/supportsMediaRecorder.test.ts b/packages/@uppy/webcam/src/supportsMediaRecorder.test.ts
index 4ed5d4e1eb..0a063dbca6 100644
--- a/packages/@uppy/webcam/src/supportsMediaRecorder.test.ts
+++ b/packages/@uppy/webcam/src/supportsMediaRecorder.test.ts
@@ -3,7 +3,7 @@ import supportsMediaRecorder from './supportsMediaRecorder.js'
describe('supportsMediaRecorder', () => {
it('should return true if MediaRecorder is supported', () => {
- // @ts-ignore
+ // @ts-expect-error
globalThis.MediaRecorder = class MediaRecorder {
start() {}
}
@@ -11,15 +11,15 @@ describe('supportsMediaRecorder', () => {
})
it('should return false if MediaRecorder is not supported', () => {
- // @ts-ignore
+ // @ts-expect-error
globalThis.MediaRecorder = undefined
expect(supportsMediaRecorder()).toEqual(false)
- // @ts-ignore
+ // @ts-expect-error
globalThis.MediaRecorder = class MediaRecorder {}
expect(supportsMediaRecorder()).toEqual(false)
- // @ts-ignore
+ // @ts-expect-error
globalThis.MediaRecorder = class MediaRecorder {
foo() {}
}
diff --git a/packages/@uppy/xhr-upload/src/index.ts b/packages/@uppy/xhr-upload/src/index.ts
index 46058ed601..4427b79074 100644
--- a/packages/@uppy/xhr-upload/src/index.ts
+++ b/packages/@uppy/xhr-upload/src/index.ts
@@ -331,7 +331,9 @@ export default class XHRUpload<
if (Array.isArray(value)) {
// In this case we don't transform `item` to add brackets, it's up to
// the user to add the brackets so it won't be overridden.
- value.forEach((subItem) => formData.append(item, subItem))
+ value.forEach((subItem) => {
+ formData.append(item, subItem)
+ })
} else {
formData.append(item, value as string)
}
diff --git a/private/dev/dragdrop.html b/private/dev/dragdrop.html
index 003d9fd79f..e0d7d40ebc 100644
--- a/private/dev/dragdrop.html
+++ b/private/dev/dragdrop.html
@@ -1,5 +1,5 @@
-
+
diff --git a/private/dev/index.html b/private/dev/index.html
index c22ebd63a6..27931312c8 100644
--- a/private/dev/index.html
+++ b/private/dev/index.html
@@ -1,5 +1,5 @@
-
+
diff --git a/yarn.lock b/yarn.lock
index 5bae0ea9d2..fb5d52c35c 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -2970,18 +2970,18 @@ __metadata:
languageName: node
linkType: hard
-"@biomejs/biome@npm:2.0.5":
- version: 2.0.5
- resolution: "@biomejs/biome@npm:2.0.5"
- dependencies:
- "@biomejs/cli-darwin-arm64": "npm:2.0.5"
- "@biomejs/cli-darwin-x64": "npm:2.0.5"
- "@biomejs/cli-linux-arm64": "npm:2.0.5"
- "@biomejs/cli-linux-arm64-musl": "npm:2.0.5"
- "@biomejs/cli-linux-x64": "npm:2.0.5"
- "@biomejs/cli-linux-x64-musl": "npm:2.0.5"
- "@biomejs/cli-win32-arm64": "npm:2.0.5"
- "@biomejs/cli-win32-x64": "npm:2.0.5"
+"@biomejs/biome@npm:2.4.15":
+ version: 2.4.15
+ resolution: "@biomejs/biome@npm:2.4.15"
+ dependencies:
+ "@biomejs/cli-darwin-arm64": "npm:2.4.15"
+ "@biomejs/cli-darwin-x64": "npm:2.4.15"
+ "@biomejs/cli-linux-arm64": "npm:2.4.15"
+ "@biomejs/cli-linux-arm64-musl": "npm:2.4.15"
+ "@biomejs/cli-linux-x64": "npm:2.4.15"
+ "@biomejs/cli-linux-x64-musl": "npm:2.4.15"
+ "@biomejs/cli-win32-arm64": "npm:2.4.15"
+ "@biomejs/cli-win32-x64": "npm:2.4.15"
dependenciesMeta:
"@biomejs/cli-darwin-arm64":
optional: true
@@ -3001,62 +3001,62 @@ __metadata:
optional: true
bin:
biome: bin/biome
- checksum: 10/13ad6e67783e3831d09cb0cbcfbe4d93bf21da851b1159d0376dbe8ac6426f0c426674793d0b08726b1ccfef87d4b8172ad3195511d96a074ef11007ff53071a
+ checksum: 10/1b48c62fb4d26de515599cfd3ab51fae16aa0b93e686e496ffc837d3a59887898b4a21d6653ae1a90751f52ae120078f0f998e370e35fa4af9faa3febd3d6e14
languageName: node
linkType: hard
-"@biomejs/cli-darwin-arm64@npm:2.0.5":
- version: 2.0.5
- resolution: "@biomejs/cli-darwin-arm64@npm:2.0.5"
+"@biomejs/cli-darwin-arm64@npm:2.4.15":
+ version: 2.4.15
+ resolution: "@biomejs/cli-darwin-arm64@npm:2.4.15"
conditions: os=darwin & cpu=arm64
languageName: node
linkType: hard
-"@biomejs/cli-darwin-x64@npm:2.0.5":
- version: 2.0.5
- resolution: "@biomejs/cli-darwin-x64@npm:2.0.5"
+"@biomejs/cli-darwin-x64@npm:2.4.15":
+ version: 2.4.15
+ resolution: "@biomejs/cli-darwin-x64@npm:2.4.15"
conditions: os=darwin & cpu=x64
languageName: node
linkType: hard
-"@biomejs/cli-linux-arm64-musl@npm:2.0.5":
- version: 2.0.5
- resolution: "@biomejs/cli-linux-arm64-musl@npm:2.0.5"
+"@biomejs/cli-linux-arm64-musl@npm:2.4.15":
+ version: 2.4.15
+ resolution: "@biomejs/cli-linux-arm64-musl@npm:2.4.15"
conditions: os=linux & cpu=arm64 & libc=musl
languageName: node
linkType: hard
-"@biomejs/cli-linux-arm64@npm:2.0.5":
- version: 2.0.5
- resolution: "@biomejs/cli-linux-arm64@npm:2.0.5"
+"@biomejs/cli-linux-arm64@npm:2.4.15":
+ version: 2.4.15
+ resolution: "@biomejs/cli-linux-arm64@npm:2.4.15"
conditions: os=linux & cpu=arm64 & libc=glibc
languageName: node
linkType: hard
-"@biomejs/cli-linux-x64-musl@npm:2.0.5":
- version: 2.0.5
- resolution: "@biomejs/cli-linux-x64-musl@npm:2.0.5"
+"@biomejs/cli-linux-x64-musl@npm:2.4.15":
+ version: 2.4.15
+ resolution: "@biomejs/cli-linux-x64-musl@npm:2.4.15"
conditions: os=linux & cpu=x64 & libc=musl
languageName: node
linkType: hard
-"@biomejs/cli-linux-x64@npm:2.0.5":
- version: 2.0.5
- resolution: "@biomejs/cli-linux-x64@npm:2.0.5"
+"@biomejs/cli-linux-x64@npm:2.4.15":
+ version: 2.4.15
+ resolution: "@biomejs/cli-linux-x64@npm:2.4.15"
conditions: os=linux & cpu=x64 & libc=glibc
languageName: node
linkType: hard
-"@biomejs/cli-win32-arm64@npm:2.0.5":
- version: 2.0.5
- resolution: "@biomejs/cli-win32-arm64@npm:2.0.5"
+"@biomejs/cli-win32-arm64@npm:2.4.15":
+ version: 2.4.15
+ resolution: "@biomejs/cli-win32-arm64@npm:2.4.15"
conditions: os=win32 & cpu=arm64
languageName: node
linkType: hard
-"@biomejs/cli-win32-x64@npm:2.0.5":
- version: 2.0.5
- resolution: "@biomejs/cli-win32-x64@npm:2.0.5"
+"@biomejs/cli-win32-x64@npm:2.4.15":
+ version: 2.4.15
+ resolution: "@biomejs/cli-win32-x64@npm:2.4.15"
conditions: os=win32 & cpu=x64
languageName: node
linkType: hard
@@ -8184,7 +8184,7 @@ __metadata:
version: 0.0.0-use.local
resolution: "@uppy-dev/build@workspace:."
dependencies:
- "@biomejs/biome": "npm:2.0.5"
+ "@biomejs/biome": "npm:2.4.15"
"@changesets/changelog-github": "npm:^0.5.1"
"@changesets/cli": "patch:@changesets/cli@npm%3A2.29.5#~/.yarn/patches/@changesets-cli-npm-2.29.5-68d8030bf3.patch"
npm-run-all: "npm:^4.1.5"