mirror of
https://github.com/scratchfoundation/scratch-analysis.git
synced 2025-04-05 17:39:47 -04:00
31 lines
963 B
JavaScript
31 lines
963 B
JavaScript
const parser = require('scratch-parser');
|
|
|
|
const {SB1Analyzer} = require('./sb1');
|
|
const sb2 = require('./sb2');
|
|
const sb3 = require('./sb3');
|
|
|
|
module.exports = function (buffer, callback) {
|
|
parser(buffer, false, (err, result) => {
|
|
if (err === 'Parser only supports Scratch 2.X and above') {
|
|
return new SB1Analyzer().analyze(buffer, callback);
|
|
} else if (err) {
|
|
return callback(err);
|
|
}
|
|
|
|
// Extract the project object from the parser results
|
|
const project = result[0];
|
|
// Check if the input buffer was a zip file
|
|
const zip = result[1];
|
|
project.isBundle = typeof zip !== 'undefined' && zip !== null;
|
|
|
|
// Push project object to the appropriate analysis handler
|
|
switch (project.projectVersion) {
|
|
case 2:
|
|
sb2(project, callback);
|
|
break;
|
|
case 3:
|
|
sb3(project, callback);
|
|
break;
|
|
}
|
|
});
|
|
};
|