From b2114ed337179ebcbb7f462f607377823c84646e Mon Sep 17 00:00:00 2001 From: Leonardo Balter Date: Sun, 11 Sep 2011 19:53:32 -0300 Subject: [PATCH] =?UTF-8?q?README=20com=20lista=20b=C3=A1sica=20de=20depen?= =?UTF-8?q?d=C3=AAncias,=20renomeado=20para=20.md.=20Arquivo=20b=C3=A1sico?= =?UTF-8?q?=20com=20webservice=20para=20uglify,=20emitindo=20erro=20na=20r?= =?UTF-8?q?esposta=20http=20em=20caso=20de=20falha?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 7 ++++ pimpStart.js | 103 +++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 110 insertions(+) create mode 100644 README.md create mode 100644 pimpStart.js diff --git a/README.md b/README.md new file mode 100644 index 0000000..7a24da7 --- /dev/null +++ b/README.md @@ -0,0 +1,7 @@ +DependĂȘncias: +------------- + +*uglify-js* +*connect-form* +*express* + diff --git a/pimpStart.js b/pimpStart.js new file mode 100644 index 0000000..22896c8 --- /dev/null +++ b/pimpStart.js @@ -0,0 +1,103 @@ +/** + * Module dependencies. + */ + +var express = require('express') + , form = require('connect-form') + , app = module.exports = express.createServer( + form({ keepExtensions: true }) + ) + , uglify = require('uglify-js') + , jsp = uglify.parser + , pro = uglify.uglify + , fs = require('fs'); + +app.get('/', function(req, res){ + res.send('
' + + '

' + + '

' + + '
'); +}); + +app.post('/', function(req, res, next){ + + // connect-form adds the req.form object + // we can (optionally) define onComplete, passing + // the exception (if any) fields parsed, and files parsed + req.form.complete(function(err, fields, files){ + if (err) { + next(err); + } else { + fields.fileContent = fields.fileContent || ''; + var orig_code = fields.fileContent; + + + try { + var ast = jsp.parse(orig_code); // parse code and get the initial AST + ast = pro.ast_mangle(ast); // get a new AST with mangled names + ast = pro.ast_squeeze(ast); // get an AST with compression optimizations + var final_code = pro.gen_code(ast); // compressed code here + } catch (e) { + Error('not valid'); + res.status(400); + res.send('error: ' + e.message); + return; + } + /* + * other options in https://github.com/mishoo/UglifyJS + */ + res.charset = 'utf-8'; + res.header('Content-Type', 'application/javascript'); + res.send(final_code); // now this sends the final code to screen + } + }); +}); + +app.get('/upload', function(req, res){ + res.send('
' + + '

File:

' + + '

' + + '
'); +}); + +app.post('/upload', function(req, res, next){ + + // connect-form adds the req.form object + // we can (optionally) define onComplete, passing + // the exception (if any) fields parsed, and files parsed + req.form.complete(function(err, fields, files){ + if (err) { + next(err); + } else { + console.log('\nuploaded %s to %s' + , files.file.filename + , files.file.path + ); + + var orig_code = fs.readFileSync(files.file.path, 'utf-8'); + + var ast = jsp.parse(orig_code); // parse code and get the initial AST + ast = pro.ast_mangle(ast); // get a new AST with mangled names + ast = pro.ast_squeeze(ast); // get an AST with compression optimizations + var final_code = pro.gen_code(ast); // compressed code here + + /* + * other options in https://github.com/mishoo/UglifyJS + */ + res.charset = 'utf-8'; + res.contentType(files.file.path); + res.send(final_code); // now this sends the final code to screen + } + }); + + // We can add listeners for several form + // events such as "progress" + req.form.on('progress', function(bytesReceived, bytesExpected){ + var percent = (bytesReceived / bytesExpected * 100) | 0; + process.stdout.write('Uploading: %' + percent + '\r'); + }); +}); + +app.listen(3000); +console.log("Express server listening on port %d in %s mode", +app.address().port, app.settings.env); \ No newline at end of file