From 93fd794d3925fba56818350387d0729ebe148826 Mon Sep 17 00:00:00 2001
From: Khafra <42794878+KhafraDev@users.noreply.github.com>
Date: Mon, 7 Nov 2022 21:22:17 -0500
Subject: [PATCH] Fix filereader types (#1762)
---
package.json | 3 +--
types/filereader.d.ts | 11 +++++++---
types/patch.d.ts | 51 +++++++++++++++++++++++++++++++++++++++++++
3 files changed, 60 insertions(+), 5 deletions(-)
create mode 100644 types/patch.d.ts
diff --git a/package.json b/package.json
index c82f1a6e5ab..b2708018e58 100644
--- a/package.json
+++ b/package.json
@@ -116,8 +116,7 @@
"compilerOptions": {
"esModuleInterop": true,
"lib": [
- "esnext",
- "DOM"
+ "esnext"
]
}
},
diff --git a/types/filereader.d.ts b/types/filereader.d.ts
index 8bd7e15c242..f05d231b2ff 100644
--- a/types/filereader.d.ts
+++ b/types/filereader.d.ts
@@ -1,8 +1,11 @@
///
import { Blob } from 'buffer'
+import { DOMException, Event, EventInit, EventTarget } from './patch'
+
+export declare class FileReader {
+ __proto__: EventTarget & FileReader
-export declare class FileReader extends EventTarget {
constructor ()
readAsArrayBuffer (blob: Blob): void
@@ -40,10 +43,12 @@ export interface ProgressEventInit extends EventInit {
total?: number
}
-export declare class ProgressEvent extends Event {
+export declare class ProgressEvent {
+ __proto__: Event & ProgressEvent
+
constructor (type: string, eventInitDict?: ProgressEventInit)
readonly lengthComputable: boolean
readonly loaded: number
readonly total: number
-}
\ No newline at end of file
+}
diff --git a/types/patch.d.ts b/types/patch.d.ts
new file mode 100644
index 00000000000..f3500b589a4
--- /dev/null
+++ b/types/patch.d.ts
@@ -0,0 +1,51 @@
+///
+
+// See https://github.com/nodejs/undici/issues/1740
+
+export type DOMException = typeof globalThis extends { DOMException: infer T }
+ ? T
+ : any
+
+export type EventTarget = typeof globalThis extends { EventTarget: infer T }
+ ? T
+ : {
+ addEventListener(
+ type: string,
+ listener: any,
+ options?: any,
+ ): void
+ dispatchEvent(event: Event): boolean
+ removeEventListener(
+ type: string,
+ listener: any,
+ options?: any | boolean,
+ ): void
+ }
+
+export type Event = typeof globalThis extends { Event: infer T }
+ ? T
+ : {
+ readonly bubbles: boolean
+ cancelBubble: () => void
+ readonly cancelable: boolean
+ readonly composed: boolean
+ composedPath(): [EventTarget?]
+ readonly currentTarget: EventTarget | null
+ readonly defaultPrevented: boolean
+ readonly eventPhase: 0 | 2
+ readonly isTrusted: boolean
+ preventDefault(): void
+ returnValue: boolean
+ readonly srcElement: EventTarget | null
+ stopImmediatePropagation(): void
+ stopPropagation(): void
+ readonly target: EventTarget | null
+ readonly timeStamp: number
+ readonly type: string
+ }
+
+export interface EventInit {
+ bubbles?: boolean
+ cancelable?: boolean
+ composed?: boolean
+}