diff --git a/.eslintrc.js b/.eslintrc.js index 2c643ed905..9e749f1436 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -466,6 +466,7 @@ module.exports = { '@typescript-eslint/no-explicit-any': 'off', '@typescript-eslint/no-extra-semi': 'off', '@typescript-eslint/no-namespace': 'off', + '@typescript-eslint/no-non-null-assertion': 'off', }, }, { diff --git a/.yarn/patches/tus-js-client-npm-3.1.3-dc57874d23.patch b/.yarn/patches/tus-js-client-npm-3.1.3-dc57874d23.patch new file mode 100644 index 0000000000..9bc37127da --- /dev/null +++ b/.yarn/patches/tus-js-client-npm-3.1.3-dc57874d23.patch @@ -0,0 +1,36 @@ +diff --git a/lib/index.d.ts b/lib/index.d.ts +index 7a4efead6df94263db77b12c72ddaeafaeaa406c..e47e63f1159f19dd780986f7e33ffdd70bfdc371 100644 +--- a/lib/index.d.ts ++++ b/lib/index.d.ts +@@ -2,7 +2,12 @@ + + export const isSupported: boolean + export const canStoreURLs: boolean +-export const defaultOptions: UploadOptions ++export const defaultOptions: UploadOptions & Required> + + // TODO: Consider using { read: () => Promise<{ done: boolean; value?: any; }>; } as type + export class Upload { +@@ -12,7 +17,7 @@ export class Upload { + options: UploadOptions + url: string | null + +- static terminate(url: string, options?: UploadOptions): Promise ++ static terminate(url: string, options: UploadOptions): Promise + start(): void + abort(shouldTerminate?: boolean): Promise + findPreviousUploads(): Promise +@@ -25,7 +30,7 @@ interface UploadOptions { + + uploadUrl?: string | null + metadata?: { [key: string]: string } +- fingerprint?: (file: File, options?: UploadOptions) => Promise ++ fingerprint?: (file: File, options: UploadOptions) => Promise + uploadSize?: number | null + + onProgress?: ((bytesSent: number, bytesTotal: number) => void) | null diff --git a/package.json b/package.json index 14a47e8183..d4d398d58a 100644 --- a/package.json +++ b/package.json @@ -175,6 +175,7 @@ "preact": "patch:preact@npm:10.10.0#.yarn/patches/preact-npm-10.10.0-dd04de05e8.patch", "start-server-and-test": "patch:start-server-and-test@npm:1.14.0#.yarn/patches/start-server-and-test-npm-1.14.0-841aa34fdf.patch", "stylelint-config-rational-order": "patch:stylelint-config-rational-order@npm%3A0.1.2#./.yarn/patches/stylelint-config-rational-order-npm-0.1.2-d8336e84ed.patch", - "uuid@^8.3.2": "patch:uuid@npm:8.3.2#.yarn/patches/uuid-npm-8.3.2-eca0baba53.patch" + "uuid@^8.3.2": "patch:uuid@npm:8.3.2#.yarn/patches/uuid-npm-8.3.2-eca0baba53.patch", + "tus-js-client": "patch:tus-js-client@npm%3A3.1.3#./.yarn/patches/tus-js-client-npm-3.1.3-dc57874d23.patch" } } diff --git a/packages/@uppy/companion-client/src/RequestClient.ts b/packages/@uppy/companion-client/src/RequestClient.ts index a60dcf667e..7d7644a066 100644 --- a/packages/@uppy/companion-client/src/RequestClient.ts +++ b/packages/@uppy/companion-client/src/RequestClient.ts @@ -374,7 +374,6 @@ export default class RequestClient { try { return await new Promise((resolve, reject) => { const token = file.serverToken - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion const host = getSocketHost(file.remote!.companionUrl) let socket: WebSocket | undefined diff --git a/packages/@uppy/companion-client/src/Socket.ts b/packages/@uppy/companion-client/src/Socket.ts index 3de816b8f4..72c3284407 100644 --- a/packages/@uppy/companion-client/src/Socket.ts +++ b/packages/@uppy/companion-client/src/Socket.ts @@ -50,9 +50,8 @@ export default class UppySocket { this.#isOpen = true while (this.#queued.length > 0 && this.#isOpen) { - const first = this.#queued.shift() - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - this.send(first!.action, first!.payload) + const first = this.#queued.shift()! + this.send(first.action, first.payload) } } diff --git a/packages/@uppy/core/src/Uppy.test.ts b/packages/@uppy/core/src/Uppy.test.ts index 04b4e61971..6f73e34452 100644 --- a/packages/@uppy/core/src/Uppy.test.ts +++ b/packages/@uppy/core/src/Uppy.test.ts @@ -1,4 +1,3 @@ -/* eslint-disable @typescript-eslint/no-non-null-assertion */ /* eslint-disable @typescript-eslint/ban-ts-comment */ /* eslint no-console: "off", no-restricted-syntax: "off" */ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' @@ -166,7 +165,6 @@ describe('src/Core', () => { core.use(AcquirerPlugin1) const plugin = core.getPlugin('TestSelector1') - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion expect(plugin!.id).toEqual('TestSelector1') expect(plugin instanceof UIPlugin) }) diff --git a/packages/@uppy/image-editor/src/Editor.tsx b/packages/@uppy/image-editor/src/Editor.tsx index a2aa71ea4f..19b6cbfd56 100644 --- a/packages/@uppy/image-editor/src/Editor.tsx +++ b/packages/@uppy/image-editor/src/Editor.tsx @@ -77,7 +77,7 @@ export default class Editor extends Component< const newCropboxData = limitCropboxMovementOnMove( canvasData, cropboxData, - prevCropboxData, + prevCropboxData!, ) if (newCropboxData) this.cropper.setCropBoxData(newCropboxData) // 2. When we stretch the cropbox by one of its sides @@ -85,7 +85,7 @@ export default class Editor extends Component< const newCropboxData = limitCropboxMovementOnResize( canvasData, cropboxData, - prevCropboxData, + prevCropboxData!, ) if (newCropboxData) this.cropper.setCropBoxData(newCropboxData) } diff --git a/packages/@uppy/image-editor/src/ImageEditor.tsx b/packages/@uppy/image-editor/src/ImageEditor.tsx index d66db50410..a96a068d46 100644 --- a/packages/@uppy/image-editor/src/ImageEditor.tsx +++ b/packages/@uppy/image-editor/src/ImageEditor.tsx @@ -185,7 +185,6 @@ export default class ImageEditor< this.cropper .getCroppedCanvas(this.opts.cropperOptions.croppedCanvasOptions) - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion .toBlob(saveBlobCallback, currentImage!.type, this.opts.quality) } diff --git a/packages/@uppy/image-editor/src/utils/limitCropboxMovementOnMove.ts b/packages/@uppy/image-editor/src/utils/limitCropboxMovementOnMove.ts index 41875cf1cc..ea8b4cf295 100644 --- a/packages/@uppy/image-editor/src/utils/limitCropboxMovementOnMove.ts +++ b/packages/@uppy/image-editor/src/utils/limitCropboxMovementOnMove.ts @@ -3,13 +3,13 @@ import type Cropper from 'cropperjs' function limitCropboxMovementOnMove( canvas: Cropper.CanvasData, cropbox: Cropper.CropBoxData, - prevCropbox: Cropper.CropBoxData | null, + prevCropbox: Cropper.CropBoxData, ): { left?: number; top?: number; width?: number; height?: number } | null { // For the left boundary if (cropbox.left < canvas.left) { return { left: canvas.left, - width: prevCropbox!.width, + width: prevCropbox.width, } } @@ -17,23 +17,23 @@ function limitCropboxMovementOnMove( if (cropbox.top < canvas.top) { return { top: canvas.top, - height: prevCropbox!.height, + height: prevCropbox.height, } } // For the right boundary if (cropbox.left + cropbox.width > canvas.left + canvas.width) { return { - left: canvas.left + canvas.width - prevCropbox!.width, - width: prevCropbox!.width, + left: canvas.left + canvas.width - prevCropbox.width, + width: prevCropbox.width, } } // For the bottom boundary if (cropbox.top + cropbox.height > canvas.top + canvas.height) { return { - top: canvas.top + canvas.height - prevCropbox!.height, - height: prevCropbox!.height, + top: canvas.top + canvas.height - prevCropbox.height, + height: prevCropbox.height, } } diff --git a/packages/@uppy/image-editor/src/utils/limitCropboxMovementOnResize.ts b/packages/@uppy/image-editor/src/utils/limitCropboxMovementOnResize.ts index 06876d05fb..a548f06e55 100644 --- a/packages/@uppy/image-editor/src/utils/limitCropboxMovementOnResize.ts +++ b/packages/@uppy/image-editor/src/utils/limitCropboxMovementOnResize.ts @@ -3,13 +3,13 @@ import type Cropper from 'cropperjs' function limitCropboxMovementOnResize( canvas: Cropper.CanvasData, cropboxData: Cropper.CropBoxData, - prevCropbox: Cropper.CropBoxData | null, + prevCropbox: Cropper.CropBoxData, ): { left?: number; top?: number; width?: number; height?: number } | null { // For the left boundary if (cropboxData.left < canvas.left) { return { left: canvas.left, - width: prevCropbox!.left + prevCropbox!.width - canvas.left, + width: prevCropbox.left + prevCropbox.width - canvas.left, } } @@ -17,23 +17,23 @@ function limitCropboxMovementOnResize( if (cropboxData.top < canvas.top) { return { top: canvas.top, - height: prevCropbox!.top + prevCropbox!.height - canvas.top, + height: prevCropbox.top + prevCropbox.height - canvas.top, } } // For the right boundary if (cropboxData.left + cropboxData.width > canvas.left + canvas.width) { return { - left: prevCropbox!.left, - width: canvas.left + canvas.width - prevCropbox!.left, + left: prevCropbox.left, + width: canvas.left + canvas.width - prevCropbox.left, } } // For the bottom boundary if (cropboxData.top + cropboxData.height > canvas.top + canvas.height) { return { - top: prevCropbox!.top, - height: canvas.top + canvas.height - prevCropbox!.top, + top: prevCropbox.top, + height: canvas.top + canvas.height - prevCropbox.top, } } diff --git a/packages/@uppy/status-bar/src/Components.tsx b/packages/@uppy/status-bar/src/Components.tsx index 5890a36c64..ee5cd83332 100644 --- a/packages/@uppy/status-bar/src/Components.tsx +++ b/packages/@uppy/status-bar/src/Components.tsx @@ -209,7 +209,7 @@ function PauseResumeButton( interface DoneBtnProps { i18n: I18n - doneButtonHandler: (() => void) | null + doneButtonHandler: (() => void) | undefined } function DoneBtn(props: DoneBtnProps): JSX.Element { @@ -219,7 +219,7 @@ function DoneBtn(props: DoneBtnProps): JSX.Element {