File size: 1,243 Bytes
7aec436
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
var JSZip = require('jszip');

/**

 * Unpacks a zip file.

 * @param {string}  input    Zip file provided as a string

 * @param {boolean} isSprite Whether the input should be treated as

 * a sprite (true) or whole project (false)

 * @param {array}   callback Array including both the project and zip archive

 * @return {void}

 */
module.exports = function (input, isSprite, callback) {
    var msg = 'Failed to unzip and extract project.json, with error: ';

    return JSZip.loadAsync(input)
        .then(function (zip) {
            // look for json in the list of files, or in a subdirectory
            // assumes there is only one sprite or project json in the zipfile
            const file = isSprite ?
                zip.file(/^([^/]*\/)?sprite\.json$/)[0] :
                zip.file(/^([^/]*\/)?project\.json$/)[0];
            if (file) {
                return file.async('string')
                    .then(function (project) {
                        return callback(null, [project, zip]);
                    });
            }
            return callback(msg + 'missing project or sprite json');
        })
        .catch(function (err) {
            return callback(msg + err);
        });

};