switch from xml2js to fast-xml-parser
much smaller and much faster
This commit is contained in:
parent
768d10bb75
commit
f1058684ed
28
package-lock.json
generated
28
package-lock.json
generated
|
@ -1175,6 +1175,12 @@
|
||||||
"integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
|
"integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"fast-xml-parser": {
|
||||||
|
"version": "3.16.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-3.16.0.tgz",
|
||||||
|
"integrity": "sha512-U+bpScacfgnfNfIKlWHDu4u6rtOaCyxhblOLJ8sZPkhsjgGqdZmVPBhdOyvdMGCDt8CsAv+cssOP3NzQptNt2w==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"figgy-pudding": {
|
"figgy-pudding": {
|
||||||
"version": "3.5.1",
|
"version": "3.5.1",
|
||||||
"resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.1.tgz",
|
"resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.1.tgz",
|
||||||
|
@ -2884,12 +2890,6 @@
|
||||||
"ret": "~0.1.10"
|
"ret": "~0.1.10"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"sax": {
|
|
||||||
"version": "1.2.4",
|
|
||||||
"resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
|
|
||||||
"integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==",
|
|
||||||
"dev": true
|
|
||||||
},
|
|
||||||
"schema-utils": {
|
"schema-utils": {
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
|
||||||
|
@ -3549,22 +3549,6 @@
|
||||||
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
|
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"xml2js": {
|
|
||||||
"version": "0.4.23",
|
|
||||||
"resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz",
|
|
||||||
"integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==",
|
|
||||||
"dev": true,
|
|
||||||
"requires": {
|
|
||||||
"sax": ">=0.6.0",
|
|
||||||
"xmlbuilder": "~11.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"xmlbuilder": {
|
|
||||||
"version": "11.0.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz",
|
|
||||||
"integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==",
|
|
||||||
"dev": true
|
|
||||||
},
|
|
||||||
"xtend": {
|
"xtend": {
|
||||||
"version": "4.0.2",
|
"version": "4.0.2",
|
||||||
"resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
|
||||||
|
|
|
@ -13,8 +13,8 @@
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"coffee-loader": "^0.9.0",
|
"coffee-loader": "^0.9.0",
|
||||||
"coffeescript": "^2.5.1",
|
"coffeescript": "^2.5.1",
|
||||||
|
"fast-xml-parser": "^3.16.0",
|
||||||
"json-loader": "^0.5.7",
|
"json-loader": "^0.5.7",
|
||||||
"webpack": "^4.41.6",
|
"webpack": "^4.41.6"
|
||||||
"xml2js": "^0.4.23"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
import AwsAuth from "./auth"
|
import AwsAuth from "./auth"
|
||||||
import { parseStringPromise as parseXML } from "xml2js"
|
import parser from "fast-xml-parser"
|
||||||
|
|
||||||
class S3
|
class S3
|
||||||
constructor: (@conf) ->
|
constructor: (@conf) ->
|
||||||
|
@ -50,10 +50,12 @@ class S3
|
||||||
if not resp.ok
|
if not resp.ok
|
||||||
# no error handling yet
|
# no error handling yet
|
||||||
throw txt
|
throw txt
|
||||||
result = await parseXML txt
|
result = parser.parse txt,
|
||||||
|
arrayMode: true
|
||||||
|
console.log result
|
||||||
if not result.ListBucketResult
|
if not result.ListBucketResult
|
||||||
return null
|
return null
|
||||||
result.ListBucketResult
|
result.ListBucketResult[0]
|
||||||
|
|
||||||
# params are in CamelCase, but converted to x-amz-* headers automatically
|
# params are in CamelCase, but converted to x-amz-* headers automatically
|
||||||
# Content* headers are exempt from the x-amz-* prefix, as well as Expires
|
# Content* headers are exempt from the x-amz-* prefix, as well as Expires
|
||||||
|
|
|
@ -65,11 +65,11 @@ handleGET = (req, file) ->
|
||||||
# We still need the real file name
|
# We still need the real file name
|
||||||
files = await s3.listObjects
|
files = await s3.listObjects
|
||||||
prefix: path
|
prefix: path
|
||||||
if !files.Contents or files.Contents.length == 0
|
if not files.Contents or files.Contents.length == 0
|
||||||
return new Response "Not Found",
|
return new Response "Not Found",
|
||||||
status: 404
|
status: 404
|
||||||
# The full path to the original file
|
# The full path to the original file
|
||||||
fullPath = files.Contents[0].Key[0]
|
fullPath = files.Contents[0].Key
|
||||||
fileName = fullPath.split('/')[-1]
|
fileName = fullPath.split('/')[-1]
|
||||||
|
|
||||||
# Build options and downlaod the file from origin
|
# Build options and downlaod the file from origin
|
||||||
|
|
Loading…
Reference in a new issue