browser-builder.js (2209B)
1 #!/usr/bin/env node 2 3 var path = require('path'); 4 5 var AWS = require('../'); 6 7 var license = [ 8 '// AWS SDK for JavaScript v' + AWS.VERSION, 9 '// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.', 10 '// License at https://sdk.amazonaws.com/js/BUNDLE_LICENSE.txt' 11 ].join('\n') + '\n'; 12 13 function minify(code) { 14 var uglify = require('uglify-js'); 15 var minified = uglify.minify(code, {fromString: true}); 16 return minified.code; 17 } 18 19 function stripComments(code) { 20 var lines = code.split(/\r?\n/); 21 var multiLine = false; 22 lines = lines.map(function (line) { 23 var rLine = line; 24 if (line.match(/^\s*\/\//)) { 25 rLine = null; 26 } else if (line.match(/^\s*\/\*/)) { 27 multiLine = true; 28 rLine = null; 29 } 30 31 if (multiLine) { 32 var multiLineEnd = line.match(/\*\/(.*)/); 33 if (multiLineEnd) { 34 multiLine = false; 35 rLine = multiLineEnd[1]; 36 } else { 37 rLine = null; 38 } 39 } 40 41 return rLine; 42 }).filter(function(l) { return l !== null; }); 43 44 var newCode = lines.join('\n'); 45 newCode = newCode.replace(/\/\*\*[\s\S]+?Copyright\s+.+?Amazon[\s\S]+?\*\//g, ''); 46 return newCode; 47 } 48 49 function build(options, callback) { 50 if (arguments.length === 1) { 51 callback = options; 52 options = {}; 53 } 54 55 var img = require('insert-module-globals'); 56 img.vars.process = function() { return '{browser:true}'; }; 57 58 if (options.services) process.env.AWS_SERVICES = options.services; 59 60 var browserify = require('browserify'); 61 var brOpts = { basedir: path.resolve(__dirname, '..') }; 62 browserify(brOpts).add('./').ignore('domain').bundle(function(err, data) { 63 if (err) return callback(err); 64 65 var code = (data || '').toString(); 66 if (options.minify) code = minify(code); 67 else code = stripComments(code); 68 69 code = license + code; 70 callback(null, code); 71 }); 72 } 73 74 // run if we called this tool directly 75 if (require.main === module) { 76 var opts = { 77 services: process.argv[2] || process.env.SERVICES, 78 minify: process.env.MINIFY ? true : false 79 }; 80 build(opts, function(err, code) { 81 if (err) console.error(err.message); 82 else console.log(code); 83 }); 84 } 85 86 build.license = license; 87 module.exports = build;