Bläddra i källkod

@uppy/utils: simplify code using optional chaining (#3080)

Antoine du Hamel 3 år sedan
förälder
incheckning
2178f531a4

+ 9 - 13
packages/@uppy/utils/src/delay.js

@@ -9,28 +9,24 @@ const { createAbortError } = require('./AbortController')
  */
 module.exports = function delay (ms, opts) {
   return new Promise((resolve, reject) => {
-    if (opts && opts.signal && opts.signal.aborted) {
+    if (opts?.signal?.aborted) {
       return reject(createAbortError())
     }
 
-    function onabort () {
-      clearTimeout(timeout)
-      cleanup()
-      reject(createAbortError())
-    }
-
     const timeout = setTimeout(() => {
-      cleanup()
+      cleanup() // eslint-disable-line no-use-before-define
       resolve()
     }, ms)
 
-    if (opts && opts.signal) {
-      opts.signal.addEventListener('abort', onabort)
+    function onabort () {
+      clearTimeout(timeout)
+      cleanup() // eslint-disable-line no-use-before-define
+      reject(createAbortError())
     }
+    opts?.signal?.addEventListener('abort', onabort)
     function cleanup () {
-      if (opts && opts.signal) {
-        opts.signal.removeEventListener('abort', onabort)
-      }
+      opts?.signal?.removeEventListener('abort', onabort)
     }
+    return undefined
   })
 }

+ 3 - 6
packages/@uppy/utils/src/getFileType.js

@@ -2,13 +2,10 @@ const getFileNameAndExtension = require('./getFileNameAndExtension')
 const mimeTypes = require('./mimeTypes')
 
 module.exports = function getFileType (file) {
-  let fileExtension = file.name ? getFileNameAndExtension(file.name).extension : null
-  fileExtension = fileExtension ? fileExtension.toLowerCase() : null
+  if (file.type) return file.type
 
-  if (file.type) {
-    // if mime type is set in the file object already, use that
-    return file.type
-  } if (fileExtension && mimeTypes[fileExtension]) {
+  const fileExtension = file.name ? getFileNameAndExtension(file.name).extension?.toLowerCase() : null
+  if (fileExtension && fileExtension in mimeTypes) {
     // else, see if we can map extension to a mime type
     return mimeTypes[fileExtension]
   }

+ 2 - 1
packages/@uppy/utils/src/getFileTypeExtension.js

@@ -19,6 +19,7 @@ const mimeToExtensions = {
 
 module.exports = function getFileTypeExtension (mimeType) {
   // Remove the ; bit in 'video/x-matroska;codecs=avc1'
-  mimeType = mimeType.replace(/;.*$/, '')
+  // eslint-disable-next-line no-param-reassign
+  [mimeType] = mimeType.split(';', 1)
   return mimeToExtensions[mimeType] || null
 }

+ 1 - 1
packages/@uppy/utils/src/getSpeed.js

@@ -1,7 +1,7 @@
 module.exports = function getSpeed (fileProgress) {
   if (!fileProgress.bytesUploaded) return 0
 
-  const timeElapsed = (new Date()) - fileProgress.uploadStarted
+  const timeElapsed = Date.now() - fileProgress.uploadStarted
   const uploadSpeed = fileProgress.bytesUploaded / (timeElapsed / 1000)
   return uploadSpeed
 }

+ 2 - 1
packages/@uppy/utils/src/getTextDirection.js

@@ -13,9 +13,10 @@ function getTextDirection (element) {
   // If no text direction is declared, we have to provide our own explicit text direction so our
   // bidirectional CSS style sheets work.
   while (element && !element.dir) {
+    // eslint-disable-next-line no-param-reassign
     element = element.parentNode
   }
-  return element ? element.dir : undefined
+  return element?.dir
 }
 
 module.exports = getTextDirection

+ 1 - 1
packages/@uppy/utils/src/isDOMElement.js

@@ -4,5 +4,5 @@
  * @param {*} obj
  */
 module.exports = function isDOMElement (obj) {
-  return obj && typeof obj === 'object' && obj.nodeType === Node.ELEMENT_NODE
+  return obj?.nodeType === Node.ELEMENT_NODE
 }

+ 1 - 1
packages/@uppy/utils/src/isObjectURL.js

@@ -5,5 +5,5 @@
  * @returns {boolean}
  */
 module.exports = function isObjectURL (url) {
-  return url.indexOf('blob:') === 0
+  return url.startsWith('blob:')
 }

+ 1 - 5
packages/@uppy/utils/src/isPreviewSupported.js

@@ -1,9 +1,5 @@
 module.exports = function isPreviewSupported (fileType) {
   if (!fileType) return false
-  const fileTypeSpecific = fileType.split('/')[1]
   // list of images that browsers can preview
-  if (/^(jpe?g|gif|png|svg|svg\+xml|bmp|webp|avif)$/.test(fileTypeSpecific)) {
-    return true
-  }
-  return false
+  return /^[^/]+\/(jpe?g|gif|png|svg|svg\+xml|bmp|webp|avif)$/.test(fileType)
 }