瀏覽代碼

@uppy/utils: add `cause` support for `AbortError`s (#4198)

Refs: https://github.com/whatwg/webidl/pull/1179
Antoine du Hamel 2 年之前
父節點
當前提交
f8af58f9b9
共有 2 個文件被更改,包括 9 次插入2 次删除
  1. 8 1
      packages/@uppy/utils/src/AbortController.js
  2. 1 1
      packages/@uppy/utils/types/index.d.ts

+ 8 - 1
packages/@uppy/utils/src/AbortController.js

@@ -1,6 +1,13 @@
+import hasOwnProperty from './hasProperty.js'
 /**
  * Little AbortController proxy module so we can swap out the implementation easily later.
  */
 export const { AbortController } = globalThis
 export const { AbortSignal } = globalThis
-export const createAbortError = (message = 'Aborted') => new DOMException(message, 'AbortError')
+export const createAbortError = (message = 'Aborted', options) => {
+  const err = new DOMException(message, 'AbortError')
+  if (options != null && hasOwnProperty(options, 'cause')) {
+    Object.defineProperty(err, 'cause', { __proto__: null, configurable: true, writable: true, value: options.cause })
+  }
+  return err
+}

+ 1 - 1
packages/@uppy/utils/types/index.d.ts

@@ -241,7 +241,7 @@ declare module '@uppy/utils/lib/toArray' {
 declare module '@uppy/utils/lib/AbortController' {
   export const AbortController: typeof globalThis.AbortController
   export const AbortSignal: typeof globalThis.AbortSignal
-  export function createAbortError(message?: string): DOMException
+  export function createAbortError(message?: string, options?: ErrorOptions): DOMException
 }
 
 declare module '@uppy/utils/lib/getDroppedFiles' {