From 88d508f7bf367b0d2c34176b0fda35b2073340e2 Mon Sep 17 00:00:00 2001 From: Merlijn Vos Date: Thu, 20 Jun 2024 16:54:10 +0200 Subject: [PATCH] TS strict mode (#5258) Co-authored-by: Antoine du Hamel --- packages/@uppy/audio/src/Audio.tsx | 2 +- .../audio/src/audio-oscilloscope/index.ts | 10 +++++----- .../@uppy/aws-s3/src/HTTPCommunicationQueue.ts | 18 +++++++++--------- packages/@uppy/aws-s3/src/MultipartUploader.ts | 6 +++--- packages/@uppy/aws-s3/src/index.ts | 10 ++++++---- packages/@uppy/box/src/Box.tsx | 2 +- packages/@uppy/drop-target/src/index.ts | 2 +- packages/@uppy/dropbox/src/Dropbox.tsx | 2 +- packages/@uppy/facebook/src/Facebook.tsx | 2 +- packages/@uppy/file-input/src/FileInput.tsx | 2 +- packages/@uppy/form/src/index.ts | 2 +- packages/@uppy/golden-retriever/src/index.ts | 2 +- .../@uppy/google-drive/src/GoogleDrive.tsx | 2 +- .../@uppy/google-photos/src/GooglePhotos.tsx | 2 +- packages/@uppy/image-editor/src/Editor.tsx | 4 ++-- .../@uppy/image-editor/src/ImageEditor.tsx | 2 +- packages/@uppy/instagram/src/Instagram.tsx | 2 +- packages/@uppy/onedrive/src/OneDrive.tsx | 2 +- packages/@uppy/provider-views/src/View.ts | 6 +++--- packages/@uppy/react/src/Dashboard.ts | 4 ++-- packages/@uppy/react/src/DashboardModal.ts | 4 ++-- packages/@uppy/react/src/DragDrop.ts | 4 ++-- packages/@uppy/react/src/FileInput.ts | 6 +++--- packages/@uppy/react/src/ProgressBar.ts | 4 ++-- packages/@uppy/react/src/StatusBar.ts | 4 ++-- .../screen-capture/src/RecorderScreen.tsx | 2 +- .../@uppy/screen-capture/src/ScreenCapture.tsx | 12 ++++++------ .../@uppy/screen-capture/src/StopWatch.tsx | 4 ++-- packages/@uppy/transloadit/src/Assembly.ts | 2 +- .../@uppy/transloadit/src/AssemblyWatcher.ts | 4 ++-- packages/@uppy/transloadit/src/index.ts | 2 +- packages/@uppy/unsplash/src/Unsplash.tsx | 2 +- packages/@uppy/url/src/Url.tsx | 2 +- packages/@uppy/url/src/UrlUI.tsx | 3 ++- packages/@uppy/utils/src/RateLimitedQueue.ts | 10 +++++----- packages/@uppy/webcam/src/CameraScreen.tsx | 2 +- packages/@uppy/webcam/src/Webcam.tsx | 10 +++++----- packages/@uppy/zoom/src/Zoom.tsx | 2 +- tsconfig.shared.json | 9 +++------ 39 files changed, 86 insertions(+), 86 deletions(-) diff --git a/packages/@uppy/audio/src/Audio.tsx b/packages/@uppy/audio/src/Audio.tsx index 1186deaa4c..a41d7b9b08 100644 --- a/packages/@uppy/audio/src/Audio.tsx +++ b/packages/@uppy/audio/src/Audio.tsx @@ -44,7 +44,7 @@ export default class Audio extends UIPlugin< > { static VERSION = packageJson.version - #recordingLengthTimer: ReturnType + #recordingLengthTimer?: ReturnType private icon diff --git a/packages/@uppy/audio/src/audio-oscilloscope/index.ts b/packages/@uppy/audio/src/audio-oscilloscope/index.ts index f41d665fc6..bd70a0eca5 100644 --- a/packages/@uppy/audio/src/audio-oscilloscope/index.ts +++ b/packages/@uppy/audio/src/audio-oscilloscope/index.ts @@ -42,16 +42,16 @@ export default class AudioOscilloscope { private bufferLength: number - private dataArray: Uint8Array + private dataArray?: Uint8Array // eslint-disable-next-line no-use-before-define private onDrawFrame: (oscilloscope: AudioOscilloscope) => void private streamSource?: MediaStreamAudioSourceNode - private audioContext: BaseAudioContext + private audioContext?: BaseAudioContext - public source: AudioBufferSourceNode + public source?: AudioBufferSourceNode constructor( canvas: HTMLCanvasElement, @@ -98,7 +98,7 @@ export default class AudioOscilloscope { const h = this.height if (analyser) { - analyser.getByteTimeDomainData(dataArray) + analyser.getByteTimeDomainData(dataArray!) } ctx.fillRect(0, 0, w, h) @@ -112,7 +112,7 @@ export default class AudioOscilloscope { } for (let i = 0; i < bufferLength; i++) { - const v = dataArray[i] / 128.0 + const v = dataArray![i] / 128.0 const y = v * (h / 2) if (i === 0) { diff --git a/packages/@uppy/aws-s3/src/HTTPCommunicationQueue.ts b/packages/@uppy/aws-s3/src/HTTPCommunicationQueue.ts index 1b645b65b6..a4707ab48e 100644 --- a/packages/@uppy/aws-s3/src/HTTPCommunicationQueue.ts +++ b/packages/@uppy/aws-s3/src/HTTPCommunicationQueue.ts @@ -17,37 +17,37 @@ function removeMetadataFromURL(urlString: string) { } export class HTTPCommunicationQueue { - #abortMultipartUpload: WrapPromiseFunctionType< + #abortMultipartUpload!: WrapPromiseFunctionType< AwsS3Multipart['abortMultipartUpload'] > #cache = new WeakMap() - #createMultipartUpload: WrapPromiseFunctionType< + #createMultipartUpload!: WrapPromiseFunctionType< AwsS3Multipart['createMultipartUpload'] > - #fetchSignature: WrapPromiseFunctionType['signPart']> + #fetchSignature!: WrapPromiseFunctionType['signPart']> - #getUploadParameters: WrapPromiseFunctionType< + #getUploadParameters!: WrapPromiseFunctionType< AwsS3Multipart['getUploadParameters'] > - #listParts: WrapPromiseFunctionType['listParts']> + #listParts!: WrapPromiseFunctionType['listParts']> - #previousRetryDelay: number + #previousRetryDelay!: number #requests - #retryDelays: { values: () => Iterator } + #retryDelays!: { values: () => Iterator } - #sendCompletionRequest: WrapPromiseFunctionType< + #sendCompletionRequest!: WrapPromiseFunctionType< AwsS3Multipart['completeMultipartUpload'] > #setS3MultipartState - #uploadPartBytes: WrapPromiseFunctionType + #uploadPartBytes!: WrapPromiseFunctionType #getFile diff --git a/packages/@uppy/aws-s3/src/MultipartUploader.ts b/packages/@uppy/aws-s3/src/MultipartUploader.ts index f029be8827..1e9b9bc337 100644 --- a/packages/@uppy/aws-s3/src/MultipartUploader.ts +++ b/packages/@uppy/aws-s3/src/MultipartUploader.ts @@ -67,9 +67,9 @@ class MultipartUploader { #abortController = new AbortController() - #chunks: Array + #chunks: Array = [] - #chunkState: { uploaded: number; etag?: string; done?: boolean }[] + #chunkState: { uploaded: number; etag?: string; done?: boolean }[] = [] /** * The (un-chunked) data to upload. @@ -131,7 +131,7 @@ class MultipartUploader { if (shouldUseMultipart && fileSize > this.#minPartSize) { // At least 5MB per request: let chunkSize = Math.max( - this.options.getChunkSize(this.#data), + this.options.getChunkSize(this.#data) as number, // Math.max can take undefined but TS does not think so this.#minPartSize, ) let arraySize = Math.floor(fileSize / chunkSize) diff --git a/packages/@uppy/aws-s3/src/index.ts b/packages/@uppy/aws-s3/src/index.ts index 3ae8c8bc40..f3b7df30b4 100644 --- a/packages/@uppy/aws-s3/src/index.ts +++ b/packages/@uppy/aws-s3/src/index.ts @@ -204,7 +204,7 @@ type AWSS3MultipartWithoutCompanionMandatorySignPart< ) => MaybePromise } type AWSS3MultipartWithoutCompanionMandatory = { - getChunkSize?: (file: UppyFile) => number + getChunkSize?: (file: { size: number }) => number createMultipartUpload: (file: UppyFile) => MaybePromise listParts: ( file: UppyFile, @@ -314,7 +314,7 @@ export default class AwsS3Multipart< #companionCommunicationQueue - #client: RequestClient + #client!: RequestClient protected requests: any @@ -530,7 +530,7 @@ export default class AwsS3Multipart< .then(assertServerError) } - #cachedTemporaryCredentials: MaybePromise + #cachedTemporaryCredentials?: MaybePromise async #getTemporarySecurityCredentials(options?: RequestOptions) { throwIfAborted(options?.signal) @@ -859,7 +859,9 @@ export default class AwsS3Multipart< log: (...args: Parameters['log']>) => this.uppy.log(...args), getChunkSize: - this.opts.getChunkSize ? this.opts.getChunkSize.bind(this) : null, + this.opts.getChunkSize ? + this.opts.getChunkSize.bind(this) + : undefined, onProgress, onError, diff --git a/packages/@uppy/box/src/Box.tsx b/packages/@uppy/box/src/Box.tsx index a7e72bf672..21b2ef7ebc 100644 --- a/packages/@uppy/box/src/Box.tsx +++ b/packages/@uppy/box/src/Box.tsx @@ -29,7 +29,7 @@ export default class Box extends UIPlugin< provider: Provider - view: ProviderViews + view!: ProviderViews storage: typeof tokenStorage diff --git a/packages/@uppy/drop-target/src/index.ts b/packages/@uppy/drop-target/src/index.ts index bfcbbaf909..5bc64b4301 100644 --- a/packages/@uppy/drop-target/src/index.ts +++ b/packages/@uppy/drop-target/src/index.ts @@ -42,7 +42,7 @@ export default class DropTarget< > { static VERSION = packageJson.version - private removeDragOverClassTimeout: ReturnType + private removeDragOverClassTimeout?: ReturnType private nodes?: Array diff --git a/packages/@uppy/dropbox/src/Dropbox.tsx b/packages/@uppy/dropbox/src/Dropbox.tsx index 38bcb18b66..aea4b93370 100644 --- a/packages/@uppy/dropbox/src/Dropbox.tsx +++ b/packages/@uppy/dropbox/src/Dropbox.tsx @@ -29,7 +29,7 @@ export default class Dropbox extends UIPlugin< provider: Provider - view: ProviderViews + view!: ProviderViews storage: typeof tokenStorage diff --git a/packages/@uppy/facebook/src/Facebook.tsx b/packages/@uppy/facebook/src/Facebook.tsx index 9fe6c86abd..f81c66c595 100644 --- a/packages/@uppy/facebook/src/Facebook.tsx +++ b/packages/@uppy/facebook/src/Facebook.tsx @@ -29,7 +29,7 @@ export default class Facebook extends UIPlugin< provider: Provider - view: ProviderViews + view!: ProviderViews storage: typeof tokenStorage diff --git a/packages/@uppy/file-input/src/FileInput.tsx b/packages/@uppy/file-input/src/FileInput.tsx index aa50e2ad46..f3c260d6d7 100644 --- a/packages/@uppy/file-input/src/FileInput.tsx +++ b/packages/@uppy/file-input/src/FileInput.tsx @@ -33,7 +33,7 @@ export default class FileInput extends UIPlugin< > { static VERSION = packageJson.version - input: HTMLFileInputElement | null + input: HTMLFileInputElement | null = null constructor(uppy: Uppy, opts?: FileInputOptions) { super(uppy, { ...defaultOptions, ...opts }) diff --git a/packages/@uppy/form/src/index.ts b/packages/@uppy/form/src/index.ts index 32c308cef3..ff830534ba 100644 --- a/packages/@uppy/form/src/index.ts +++ b/packages/@uppy/form/src/index.ts @@ -50,7 +50,7 @@ export default class Form extends BasePlugin< > { static VERSION = packageJson.version - #form: HTMLFormElement + #form!: HTMLFormElement /** * Unfortunately Uppy isn't a state machine in which we can guarantee it's diff --git a/packages/@uppy/golden-retriever/src/index.ts b/packages/@uppy/golden-retriever/src/index.ts index a2d30a9389..2ff90daffc 100644 --- a/packages/@uppy/golden-retriever/src/index.ts +++ b/packages/@uppy/golden-retriever/src/index.ts @@ -60,7 +60,7 @@ export default class GoldenRetriever< IndexedDBStore: IndexedDBStore - savedPluginData: Record + savedPluginData?: Record constructor(uppy: Uppy, opts?: GoldenRetrieverOptions) { super(uppy, { ...defaultOptions, ...opts }) diff --git a/packages/@uppy/google-drive/src/GoogleDrive.tsx b/packages/@uppy/google-drive/src/GoogleDrive.tsx index 09e370789a..2ac20663fd 100644 --- a/packages/@uppy/google-drive/src/GoogleDrive.tsx +++ b/packages/@uppy/google-drive/src/GoogleDrive.tsx @@ -28,7 +28,7 @@ export default class GoogleDrive< provider: Provider - view: ProviderViews + view!: ProviderViews storage: typeof tokenStorage diff --git a/packages/@uppy/google-photos/src/GooglePhotos.tsx b/packages/@uppy/google-photos/src/GooglePhotos.tsx index 32b9d99b25..85c45f37a6 100644 --- a/packages/@uppy/google-photos/src/GooglePhotos.tsx +++ b/packages/@uppy/google-photos/src/GooglePhotos.tsx @@ -28,7 +28,7 @@ export default class GooglePhotos< provider: Provider - view: ProviderViews + view!: ProviderViews storage: typeof tokenStorage diff --git a/packages/@uppy/image-editor/src/Editor.tsx b/packages/@uppy/image-editor/src/Editor.tsx index d8ccb242bf..83a6407d3b 100644 --- a/packages/@uppy/image-editor/src/Editor.tsx +++ b/packages/@uppy/image-editor/src/Editor.tsx @@ -28,9 +28,9 @@ export default class Editor extends Component< Props, State > { - imgElement: HTMLImageElement + imgElement!: HTMLImageElement - cropper: Cropper + cropper!: Cropper constructor(props: Props) { super(props) diff --git a/packages/@uppy/image-editor/src/ImageEditor.tsx b/packages/@uppy/image-editor/src/ImageEditor.tsx index 1ee0ffa75e..01f6e01510 100644 --- a/packages/@uppy/image-editor/src/ImageEditor.tsx +++ b/packages/@uppy/image-editor/src/ImageEditor.tsx @@ -110,7 +110,7 @@ export default class ImageEditor< > extends UIPlugin> { static VERSION = packageJson.version - cropper: Cropper + cropper!: Cropper constructor(uppy: Uppy, opts?: Opts) { super(uppy, { diff --git a/packages/@uppy/instagram/src/Instagram.tsx b/packages/@uppy/instagram/src/Instagram.tsx index 284794d6f8..1b8fb56da1 100644 --- a/packages/@uppy/instagram/src/Instagram.tsx +++ b/packages/@uppy/instagram/src/Instagram.tsx @@ -29,7 +29,7 @@ export default class Instagram extends UIPlugin< provider: Provider - view: ProviderViews + view!: ProviderViews storage: typeof tokenStorage diff --git a/packages/@uppy/onedrive/src/OneDrive.tsx b/packages/@uppy/onedrive/src/OneDrive.tsx index c7e8bb0700..6004cf96e6 100644 --- a/packages/@uppy/onedrive/src/OneDrive.tsx +++ b/packages/@uppy/onedrive/src/OneDrive.tsx @@ -29,7 +29,7 @@ export default class OneDrive extends UIPlugin< provider: Provider - view: ProviderViews + view!: ProviderViews storage: typeof tokenStorage diff --git a/packages/@uppy/provider-views/src/View.ts b/packages/@uppy/provider-views/src/View.ts index 38018db982..c6825c0766 100644 --- a/packages/@uppy/provider-views/src/View.ts +++ b/packages/@uppy/provider-views/src/View.ts @@ -46,9 +46,9 @@ export default class View< isHandlingScroll: boolean - requestClientId: string + requestClientId?: string - isShiftKeyPressed: boolean + isShiftKeyPressed: boolean = false lastCheckbox: CompanionFile | undefined @@ -136,7 +136,7 @@ export default class View< }, providerName: this.provider.name, provider: this.provider.provider, - requestClientId: this.requestClientId, + requestClientId: this.requestClientId!, }, } diff --git a/packages/@uppy/react/src/Dashboard.ts b/packages/@uppy/react/src/Dashboard.ts index 0ab0b0d1e3..6a7173c382 100644 --- a/packages/@uppy/react/src/Dashboard.ts +++ b/packages/@uppy/react/src/Dashboard.ts @@ -25,9 +25,9 @@ export interface DashboardProps class Dashboard extends Component< DashboardProps > { - private container: HTMLElement + private container!: HTMLElement - private plugin: UnknownPlugin + private plugin!: UnknownPlugin componentDidMount(): void { this.installPlugin() diff --git a/packages/@uppy/react/src/DashboardModal.ts b/packages/@uppy/react/src/DashboardModal.ts index 570e87a991..c6d1a9938d 100644 --- a/packages/@uppy/react/src/DashboardModal.ts +++ b/packages/@uppy/react/src/DashboardModal.ts @@ -31,9 +31,9 @@ class DashboardModal extends Component< onRequestClose: undefined, } - private container: HTMLElement + private container!: HTMLElement - private plugin: DashboardPlugin + private plugin!: DashboardPlugin componentDidMount(): void { this.installPlugin() diff --git a/packages/@uppy/react/src/DragDrop.ts b/packages/@uppy/react/src/DragDrop.ts index a7a6171c69..968c21e701 100644 --- a/packages/@uppy/react/src/DragDrop.ts +++ b/packages/@uppy/react/src/DragDrop.ts @@ -18,9 +18,9 @@ interface DragDropProps class DragDrop extends Component< DragDropProps > { - private container: HTMLElement + private container!: HTMLElement - private plugin: UnknownPlugin + private plugin!: UnknownPlugin componentDidMount(): void { this.installPlugin() diff --git a/packages/@uppy/react/src/FileInput.ts b/packages/@uppy/react/src/FileInput.ts index ec0d3f12e5..740c389f3e 100644 --- a/packages/@uppy/react/src/FileInput.ts +++ b/packages/@uppy/react/src/FileInput.ts @@ -27,9 +27,9 @@ class FileInput extends Component< inputName: 'files[]', } - private container: HTMLElement + private container!: HTMLElement - private plugin: UnknownPlugin + private plugin?: UnknownPlugin componentDidMount(): void { this.installPlugin() @@ -65,7 +65,7 @@ class FileInput extends Component< uninstallPlugin(props = this.props): void { const { uppy } = props - uppy.removePlugin(this.plugin) + uppy.removePlugin(this.plugin!) } // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types diff --git a/packages/@uppy/react/src/ProgressBar.ts b/packages/@uppy/react/src/ProgressBar.ts index 6c94863789..e66023718f 100644 --- a/packages/@uppy/react/src/ProgressBar.ts +++ b/packages/@uppy/react/src/ProgressBar.ts @@ -17,9 +17,9 @@ interface ProgressBarProps class ProgressBar extends Component< ProgressBarProps > { - private container: HTMLElement + private container!: HTMLElement - private plugin: UnknownPlugin + private plugin!: UnknownPlugin componentDidMount(): void { this.installPlugin() diff --git a/packages/@uppy/react/src/StatusBar.ts b/packages/@uppy/react/src/StatusBar.ts index fd2567ec9e..c5e3fb9c39 100644 --- a/packages/@uppy/react/src/StatusBar.ts +++ b/packages/@uppy/react/src/StatusBar.ts @@ -18,9 +18,9 @@ interface StatusBarProps class StatusBar extends Component< StatusBarProps > { - private container: HTMLElement + private container!: HTMLElement - private plugin: UnknownPlugin + private plugin!: UnknownPlugin componentDidMount(): void { this.installPlugin() diff --git a/packages/@uppy/screen-capture/src/RecorderScreen.tsx b/packages/@uppy/screen-capture/src/RecorderScreen.tsx index b016a75c05..a4f178e850 100644 --- a/packages/@uppy/screen-capture/src/RecorderScreen.tsx +++ b/packages/@uppy/screen-capture/src/RecorderScreen.tsx @@ -20,7 +20,7 @@ type RecorderScreenProps = { class RecorderScreen extends Component< RecorderScreenProps > { - videoElement: HTMLVideoElement | null + videoElement: HTMLVideoElement | null = null componentWillUnmount(): void { const { onStop } = this.props diff --git a/packages/@uppy/screen-capture/src/ScreenCapture.tsx b/packages/@uppy/screen-capture/src/ScreenCapture.tsx index 8526d82965..a71edc56e4 100644 --- a/packages/@uppy/screen-capture/src/ScreenCapture.tsx +++ b/packages/@uppy/screen-capture/src/ScreenCapture.tsx @@ -83,17 +83,17 @@ export default class ScreenCapture< type: string } - videoStream: null | MediaStream + videoStream: null | MediaStream = null - audioStream: null | MediaStream + audioStream: null | MediaStream = null - userDenied: boolean + userDenied: boolean = false - recorder: null | MediaRecorder + recorder: null | MediaRecorder = null - outputStream: null | MediaStream + outputStream: null | MediaStream = null - recordingChunks: Blob[] | null + recordingChunks: Blob[] | null = null constructor(uppy: Uppy, opts?: ScreenCaptureOptions) { super(uppy, { ...defaultOptions, ...opts }) diff --git a/packages/@uppy/screen-capture/src/StopWatch.tsx b/packages/@uppy/screen-capture/src/StopWatch.tsx index bb324281b2..f2ef25d00a 100644 --- a/packages/@uppy/screen-capture/src/StopWatch.tsx +++ b/packages/@uppy/screen-capture/src/StopWatch.tsx @@ -48,9 +48,9 @@ class StopWatch extends Component { fontFamily: 'Courier New', } as const - private timerRunning: boolean + private timerRunning: boolean = false - private timer: ReturnType + private timer?: ReturnType constructor(props: $TSFixMe) { super(props) diff --git a/packages/@uppy/transloadit/src/Assembly.ts b/packages/@uppy/transloadit/src/Assembly.ts index de8ae1ff82..7676ace25a 100644 --- a/packages/@uppy/transloadit/src/Assembly.ts +++ b/packages/@uppy/transloadit/src/Assembly.ts @@ -37,7 +37,7 @@ class TransloaditAssembly extends Emitter { #previousFetchStatusStillPending = false - #sse: EventSource | null + #sse: EventSource | null = null status: AssemblyResponse diff --git a/packages/@uppy/transloadit/src/AssemblyWatcher.ts b/packages/@uppy/transloadit/src/AssemblyWatcher.ts index b3dca112fa..6982316dcc 100644 --- a/packages/@uppy/transloadit/src/AssemblyWatcher.ts +++ b/packages/@uppy/transloadit/src/AssemblyWatcher.ts @@ -21,9 +21,9 @@ class TransloaditAssemblyWatcher< promise: Promise - #resolve: () => void + #resolve!: () => void - #reject: (reason?: string) => void + #reject!: (reason?: string) => void #uppy diff --git a/packages/@uppy/transloadit/src/index.ts b/packages/@uppy/transloadit/src/index.ts index db6f447a8f..45dafae0e6 100644 --- a/packages/@uppy/transloadit/src/index.ts +++ b/packages/@uppy/transloadit/src/index.ts @@ -257,7 +257,7 @@ export default class Transloadit< completedFiles: Record - restored: Promise | null + restored: Promise | null = null constructor(uppy: Uppy, opts: TransloaditOptions) { super(uppy, { ...defaultOptions, ...opts }) diff --git a/packages/@uppy/unsplash/src/Unsplash.tsx b/packages/@uppy/unsplash/src/Unsplash.tsx index c70131bf11..932a569179 100644 --- a/packages/@uppy/unsplash/src/Unsplash.tsx +++ b/packages/@uppy/unsplash/src/Unsplash.tsx @@ -29,7 +29,7 @@ export default class Unsplash extends UIPlugin< provider: SearchProvider - view: SearchProviderViews + view!: SearchProviderViews storage: typeof tokenStorage diff --git a/packages/@uppy/url/src/Url.tsx b/packages/@uppy/url/src/Url.tsx index ce19643de7..fd46450d0b 100644 --- a/packages/@uppy/url/src/Url.tsx +++ b/packages/@uppy/url/src/Url.tsx @@ -87,7 +87,7 @@ export default class Url extends UIPlugin< client: RequestClient - canHandleRootDrop: typeof canHandleRootDrop + canHandleRootDrop!: typeof canHandleRootDrop constructor(uppy: Uppy, opts: UrlOptions) { super(uppy, opts) diff --git a/packages/@uppy/url/src/UrlUI.tsx b/packages/@uppy/url/src/UrlUI.tsx index 9149a201c2..3f41ba8884 100644 --- a/packages/@uppy/url/src/UrlUI.tsx +++ b/packages/@uppy/url/src/UrlUI.tsx @@ -10,7 +10,8 @@ type UrlUIProps = { class UrlUI extends Component { form = document.createElement('form') - input: HTMLInputElement + // Ref is always defined after render + input!: HTMLInputElement constructor(props: UrlUIProps) { super(props) diff --git a/packages/@uppy/utils/src/RateLimitedQueue.ts b/packages/@uppy/utils/src/RateLimitedQueue.ts index 52abae3ce8..355f6a582f 100644 --- a/packages/@uppy/utils/src/RateLimitedQueue.ts +++ b/packages/@uppy/utils/src/RateLimitedQueue.ts @@ -46,13 +46,13 @@ export class RateLimitedQueue { #paused = false - #pauseTimer: ReturnType + #pauseTimer?: ReturnType #downLimit = 1 - #upperLimit: number + #upperLimit?: number - #rateLimitingTimer: ReturnType + #rateLimitingTimer?: ReturnType limit: number @@ -285,11 +285,11 @@ export class RateLimitedQueue { return } this.#downLimit = this.limit - this.limit = Math.ceil((this.#upperLimit + this.#downLimit) / 2) + this.limit = Math.ceil((this.#upperLimit! + this.#downLimit) / 2) for (let i = this.#downLimit; i <= this.limit; i++) { this.#queueNext() } - if (this.#upperLimit - this.#downLimit > 3) { + if (this.#upperLimit! - this.#downLimit > 3) { this.#rateLimitingTimer = setTimeout(this.#increaseLimit, 2000) } else { this.#downLimit = Math.floor(this.#downLimit / 2) diff --git a/packages/@uppy/webcam/src/CameraScreen.tsx b/packages/@uppy/webcam/src/CameraScreen.tsx index feb8304c81..1df4ee2af7 100644 --- a/packages/@uppy/webcam/src/CameraScreen.tsx +++ b/packages/@uppy/webcam/src/CameraScreen.tsx @@ -37,7 +37,7 @@ interface CameraScreenProps extends VideoSourceSelectProps { } class CameraScreen extends Component { - private videoElement: HTMLVideoElement + private videoElement?: HTMLVideoElement refs: any diff --git a/packages/@uppy/webcam/src/Webcam.tsx b/packages/@uppy/webcam/src/Webcam.tsx index 57b8524baa..b65221aab0 100644 --- a/packages/@uppy/webcam/src/Webcam.tsx +++ b/packages/@uppy/webcam/src/Webcam.tsx @@ -126,15 +126,15 @@ export default class Webcam extends UIPlugin< private webcamActive - private stream: MediaStream | null + private stream: MediaStream | null = null - private recorder: MediaRecorder | null + private recorder: MediaRecorder | null = null - private recordingChunks: Blob[] | null + private recordingChunks: Blob[] | null = null - private recordingLengthTimer: ReturnType + private recordingLengthTimer?: ReturnType - private captureInProgress: boolean + private captureInProgress: boolean = false constructor(uppy: Uppy, opts?: WebcamOptions) { super(uppy, { ...defaultOptions, ...opts }) diff --git a/packages/@uppy/zoom/src/Zoom.tsx b/packages/@uppy/zoom/src/Zoom.tsx index f19fb80b8d..81c6bacf3c 100644 --- a/packages/@uppy/zoom/src/Zoom.tsx +++ b/packages/@uppy/zoom/src/Zoom.tsx @@ -29,7 +29,7 @@ export default class Zoom extends UIPlugin< provider: Provider - view: ProviderViews + view!: ProviderViews storage: typeof tokenStorage diff --git a/tsconfig.shared.json b/tsconfig.shared.json index e3dafc5a26..c5727f92b0 100644 --- a/tsconfig.shared.json +++ b/tsconfig.shared.json @@ -3,10 +3,10 @@ "composite": true, "incremental": true, "target": "ESnext", - "module": "ESNext", - "moduleResolution": "Bundler", + "module": "preserve", "lib": ["dom", "ESnext"], "resolveJsonModule": true, + "useUnknownInCatchVariables": false, "allowImportingTsExtensions": true, "allowJs": false, "declaration": true, @@ -16,11 +16,8 @@ "jsxImportSource": "preact", "noImplicitAny": true, "noImplicitThis": true, - "strictNullChecks": true, + "strict": true, "verbatimModuleSyntax": true, - "esModuleInterop": true, - "allowSyntheticDefaultImports": true, - "strictFunctionTypes": true, "forceConsistentCasingInFileNames": true } }