Просмотр исходного кода

aws-s3: replace resolve-url by url-parse (#1854)

So it works in browser-ish, but non-DOM, environments. Will use the
global `URL` API if available, and fall back to url-parse, which has a
compatible-enough API.

Fixes https://github.com/transloadit/uppy/issues/1720
Renée Kooi 5 лет назад
Родитель
Сommit
0f81d70c51

+ 2 - 3
package-lock.json

@@ -6092,15 +6092,14 @@
         "@uppy/companion-client": "file:packages/@uppy/companion-client",
         "@uppy/companion-client": "file:packages/@uppy/companion-client",
         "@uppy/utils": "file:packages/@uppy/utils",
         "@uppy/utils": "file:packages/@uppy/utils",
         "@uppy/xhr-upload": "file:packages/@uppy/xhr-upload",
         "@uppy/xhr-upload": "file:packages/@uppy/xhr-upload",
-        "resolve-url": "^0.2.1"
+        "url-parse": "^1.4.7"
       }
       }
     },
     },
     "@uppy/aws-s3-multipart": {
     "@uppy/aws-s3-multipart": {
       "version": "file:packages/@uppy/aws-s3-multipart",
       "version": "file:packages/@uppy/aws-s3-multipart",
       "requires": {
       "requires": {
         "@uppy/companion-client": "file:packages/@uppy/companion-client",
         "@uppy/companion-client": "file:packages/@uppy/companion-client",
-        "@uppy/utils": "file:packages/@uppy/utils",
-        "resolve-url": "^0.2.1"
+        "@uppy/utils": "file:packages/@uppy/utils"
       }
       }
     },
     },
     "@uppy/companion": {
     "@uppy/companion": {

+ 1 - 2
packages/@uppy/aws-s3-multipart/package.json

@@ -24,8 +24,7 @@
   },
   },
   "dependencies": {
   "dependencies": {
     "@uppy/companion-client": "file:../companion-client",
     "@uppy/companion-client": "file:../companion-client",
-    "@uppy/utils": "file:../utils",
-    "resolve-url": "^0.2.1"
+    "@uppy/utils": "file:../utils"
   },
   },
   "peerDependencies": {
   "peerDependencies": {
     "@uppy/core": "^1.0.0"
     "@uppy/core": "^1.0.0"

+ 1 - 1
packages/@uppy/aws-s3/package.json

@@ -25,7 +25,7 @@
     "@uppy/companion-client": "file:../companion-client",
     "@uppy/companion-client": "file:../companion-client",
     "@uppy/utils": "file:../utils",
     "@uppy/utils": "file:../utils",
     "@uppy/xhr-upload": "file:../xhr-upload",
     "@uppy/xhr-upload": "file:../xhr-upload",
-    "resolve-url": "^0.2.1"
+    "url-parse": "^1.4.7"
   },
   },
   "peerDependencies": {
   "peerDependencies": {
     "@uppy/core": "^1.0.0"
     "@uppy/core": "^1.0.0"

+ 6 - 1
packages/@uppy/aws-s3/src/index.js

@@ -1,10 +1,15 @@
-const resolveUrl = require('resolve-url')
+// If global `URL` constructor is available, use it
+const URL_ = typeof URL === 'function' ? URL : require('url-parse')
 const { Plugin } = require('@uppy/core')
 const { Plugin } = require('@uppy/core')
 const Translator = require('@uppy/utils/lib/Translator')
 const Translator = require('@uppy/utils/lib/Translator')
 const RateLimitedQueue = require('@uppy/utils/lib/RateLimitedQueue')
 const RateLimitedQueue = require('@uppy/utils/lib/RateLimitedQueue')
 const { RequestClient } = require('@uppy/companion-client')
 const { RequestClient } = require('@uppy/companion-client')
 const XHRUpload = require('@uppy/xhr-upload')
 const XHRUpload = require('@uppy/xhr-upload')
 
 
+function resolveUrl (origin, link) {
+  return new URL_(link, origin).toString()
+}
+
 function isXml (xhr) {
 function isXml (xhr) {
   const contentType = xhr.headers ? xhr.headers['content-type'] : xhr.getResponseHeader('Content-Type')
   const contentType = xhr.headers ? xhr.headers['content-type'] : xhr.getResponseHeader('Content-Type')
   return typeof contentType === 'string' && contentType.toLowerCase() === 'application/xml'
   return typeof contentType === 'string' && contentType.toLowerCase() === 'application/xml'