|
@@ -1,5 +1,6 @@
|
|
|
var JSZip = require("jszip");
|
|
|
var async = require("async");
|
|
|
+var fileType = require("file-type");
|
|
|
|
|
|
function unpackzip(emitter) {
|
|
|
return function(f) {
|
|
@@ -12,11 +13,13 @@ function unpackzip(emitter) {
|
|
|
var p = new Promise(function(resolve, reject) {
|
|
|
JSZip.loadAsync(f) // 1) read the Blob
|
|
|
.then(function(zip) {
|
|
|
+ var nass;
|
|
|
var obj = {};
|
|
|
if (zip.files["namespace.manifest"]) {
|
|
|
zip.file("namespace.manifest").async("string")
|
|
|
.then(function(data) {
|
|
|
- emitter.emit("namespace", JSON.parse(data), cont)
|
|
|
+ nass= JSON.parse(data);
|
|
|
+ emitter.emit("namespace", nass, cont)
|
|
|
})
|
|
|
} else {
|
|
|
emitter.emit("nonamespace", cont)
|
|
@@ -24,20 +27,70 @@ function unpackzip(emitter) {
|
|
|
|
|
|
function cont() {
|
|
|
async.mapSeries(zip.files, function(z, next) {
|
|
|
- if (z.dir) {} else {
|
|
|
- zip.file(z.name).async("string")
|
|
|
+ if (z.dir) {
|
|
|
+ next()
|
|
|
+ } else {
|
|
|
+
|
|
|
+ zip.file(z.name).async("uint8array")
|
|
|
.then(function(data) {
|
|
|
- if (z.name.indexOf(".json") > -1) {
|
|
|
+ var mimen = fileType(data);
|
|
|
|
|
|
- emitter.emit("json", z.name, JSON.parse(data))
|
|
|
+ if (z.name.indexOf(".json") > -1 || z.name.indexOf(".link") > -1) {
|
|
|
+ zip.file(z.name).async("string")
|
|
|
+ .then(function(data) {
|
|
|
+ if (z.name.indexOf(".json") > -1) {
|
|
|
+ emitter.emit("json", z.name, JSON.parse(data))
|
|
|
+ } else {
|
|
|
+ if (z.name !== "namespace.manifest") {
|
|
|
+ emitter.emit("file", z.name, (data))
|
|
|
+ }
|
|
|
+ }
|
|
|
+ next()
|
|
|
+ })
|
|
|
} else {
|
|
|
- if (z.name !== "namespace.manifest") {
|
|
|
+ if (z.name.indexOf(".svg") > -1) {
|
|
|
+ zip.file(z.name).async("string")
|
|
|
+ .then(function(data) {
|
|
|
+ if (z.name !== "namespace.manifest") {
|
|
|
+ emitter.emit("file", z.name, (data))
|
|
|
+ }
|
|
|
+ next()
|
|
|
+ })
|
|
|
+ } else {
|
|
|
+
|
|
|
+ if (z.name.indexOf(".js")===z.name.length-3) {
|
|
|
+ zip.file(z.name).async("string")
|
|
|
+ .then(function(data) {
|
|
|
+ emitter.emit("jsfile", z.name, data, nass);
|
|
|
+
|
|
|
+ next()
|
|
|
+ })
|
|
|
+ } else {
|
|
|
+ zip.file(z.name).async("base64")
|
|
|
+ .then(function(data) {
|
|
|
+ if (z.name !== "namespace.manifest") {
|
|
|
+ emitter.emit("file", z.name, (data), mimen)
|
|
|
+ }
|
|
|
+ next()
|
|
|
+ })
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
|
|
|
- emitter.emit("file", z.name, (data))
|
|
|
}
|
|
|
}
|
|
|
- next()
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
})
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
}
|
|
|
}, function(err, done) {
|
|
|
emitter.emit("done")
|