pax_global_header00006660000000000000000000000064130556472610014523gustar00rootroot0000000000000052 comment=870d1cdd9908394e15d31b44eb3ce19ec946a158 browser-unpack-1.2.0/000077500000000000000000000000001305564726100144655ustar00rootroot00000000000000browser-unpack-1.2.0/.travis.yml000066400000000000000000000001311305564726100165710ustar00rootroot00000000000000language: node_js node_js: - "0.8" - "0.10" before_install: - npm config set ca "" browser-unpack-1.2.0/LICENSE000066400000000000000000000020611305564726100154710ustar00rootroot00000000000000This software is released under the MIT license: Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. browser-unpack-1.2.0/bin/000077500000000000000000000000001305564726100152355ustar00rootroot00000000000000browser-unpack-1.2.0/bin/cmd.js000077500000000000000000000012431305564726100163410ustar00rootroot00000000000000#!/usr/bin/env node var parse = require('../'); var concat = require('concat-stream'); var fs = require('fs'); var minimist = require('minimist'); var argv = minimist(process.argv.slice(2)); if (argv.help || argv.h) { return fs.createReadStream(__dirname + '/usage.txt') .pipe(process.stdout) ; } process.stdin.pipe(concat(function (body) { var rows = parse(body); if (!rows) { console.error("couldn't parse this bundle"); process.exit(1); } console.log('['); rows.forEach(function (row, index) { if (index > 0) console.log(','); console.log(JSON.stringify(row)); }); console.log(']'); })); browser-unpack-1.2.0/bin/usage.txt000066400000000000000000000001551305564726100171030ustar00rootroot00000000000000usage: browser-unpack Write a browser bundle to STDIN. Outputs a JSON array in the module-deps format. browser-unpack-1.2.0/example/000077500000000000000000000000001305564726100161205ustar00rootroot00000000000000browser-unpack-1.2.0/example/foo.js000066400000000000000000000000611305564726100172360ustar00rootroot00000000000000module.exports = function (n) { return n * 111 } browser-unpack-1.2.0/example/main.js000066400000000000000000000001341305564726100174000ustar00rootroot00000000000000var foo = require('./foo.js'); var gamma = require('gamma'); console.log(foo(gamma(2.3))); browser-unpack-1.2.0/index.js000066400000000000000000000052341305564726100161360ustar00rootroot00000000000000var parse = require('acorn').parse; module.exports = function (src) { // If src is a Buffer, esprima will just stringify it, so we beat them to // the punch. This avoids the problem where we're using esprima's range // indexes -- which are meant for a UTF-16 string -- in a buffer that // contains UTF-8 encoded text. if (typeof src !== 'string') { src = String(src); } var ast = parse(src, { range: true, ecmaVersion: 6 }); ast.body = ast.body.filter(function(node) { return node.type !== 'EmptyStatement'; }); if (ast.body.length !== 1) return; if (ast.body[0].type !== 'ExpressionStatement') return; if (ast.body[0].expression.type === 'UnaryExpression') { var body = ast.body[0].expression.argument; } else if (ast.body[0].expression.type === 'AssignmentExpression') { var body = ast.body[0].expression.right; } else { var body = ast.body[0].expression; } if (body.type !== 'CallExpression') return; var args = body.arguments; if (args.length === 1) args = extractStandalone(args) || args; if (args.length !== 3) return; if (args[0].type !== 'ObjectExpression') return; if (args[1].type !== 'ObjectExpression') return; if (args[2].type !== 'ArrayExpression') return; var files = args[0].properties; var cache = args[1]; var entries = args[2].elements.map(function (e) { return e.value }); return files.map(function (file) { var body = file.value.elements[0].body.body; var start, end; if (body.length === 0) { start = body.start || 0; end = body.end || 0; } else { start = body[0].start; end = body[body.length-1].end; } var depProps = file.value.elements[1].properties; var deps = depProps.reduce(function (acc, dep) { var key = dep.key.type === 'Literal' ? dep.key.value : dep.key.name; acc[key] = dep.value.value; return acc; }, {}); var row = { id: file.key.value, source: src.slice(start, end), deps: deps }; if (entries.indexOf(row.id) >= 0) row.entry = true; return row; }); }; function extractStandalone (args) { if (args[0].type !== 'FunctionExpression') return; if (args[0].body.length < 2) return; if (args[0].body.body.length < 2) return; args = args[0].body.body[1].argument; if (args.type !== 'CallExpression') return; if (args.callee.type !== 'CallExpression') return; return args.callee.arguments; }; browser-unpack-1.2.0/package.json000066400000000000000000000015101305564726100167500ustar00rootroot00000000000000{ "name": "browser-unpack", "version": "1.2.0", "description": "parse a bundle generated by browser-pack", "main": "index.js", "bin": { "browser-unpack": "bin/cmd.js" }, "dependencies": { "acorn": "^4.0.3", "browser-pack": "^5.0.1", "concat-stream": "^1.5.0", "minimist": "^1.1.1" }, "devDependencies": { "browser-pack": "~2.0.0", "tape": "^4.0.1" }, "scripts": { "test": "tape test/*.js" }, "repository": { "type": "git", "url": "git://github.com/substack/browser-unpack.git" }, "homepage": "https://github.com/substack/browser-unpack", "keywords": [ "browserify", "bundle", "inverse", "invert", "unpack" ], "author": { "email": "mail@substack.net", "name": "James Halliday", "url": "http://substack.net" }, "license": "MIT" } browser-unpack-1.2.0/readme.markdown000066400000000000000000000056571305564726100175030ustar00rootroot00000000000000# browser-unpack parse a bundle generated by [browser-pack](https://npmjs.org/package/browser-pack) [![build status](https://secure.travis-ci.org/substack/browser-unpack.png)](http://travis-ci.org/substack/browser-unpack) # example ``` $ node main.js 129.50502147699586 $ browserify main.js > bundle.js $ browser-unpack < bundle.js [ {"id":"/home/substack/projects/browser-unpack/example/foo.js","source":"module.exports = function (n) { return n * 111 }\n\n","deps":{}} , {"id":"/home/substack/projects/browser-unpack/example/main.js","source":"var foo = require('./foo.js');\nvar gamma = require('gamma');\n\nconsole.log(foo(gamma(2.3)));","deps":{"./foo.js":"/home/substack/projects/browser-unpack/example/foo.js","gamma":"/home/substack/projects/browser-unpack/node_modules/gamma/index.js"},"entry":true} , {"id":"/home/substack/projects/browser-unpack/node_modules/gamma/index.js","source":"var g = 7;\nvar p = [\n 0.99999999999980993,\n 676.5203681218851,\n -1259.1392167224028,\n 771.32342877765313,\n -176.61502916214059,\n 12.507343278686905,\n -0.13857109526572012,\n 9.9843695780195716e-6,\n 1.5056327351493116e-7\n];\n\nvar g_ln = 607/128;\nvar p_ln = [\n 0.99999999999999709182,\n 57.156235665862923517,\n -59.597960355475491248,\n 14.136097974741747174,\n -0.49191381609762019978,\n 0.33994649984811888699e-4,\n 0.46523628927048575665e-4,\n -0.98374475304879564677e-4,\n 0.15808870322491248884e-3,\n -0.21026444172410488319e-3,\n 0.21743961811521264320e-3,\n -0.16431810653676389022e-3,\n 0.84418223983852743293e-4,\n -0.26190838401581408670e-4,\n 0.36899182659531622704e-5\n];\n\n// Spouge approximation (suitable for large arguments)\nfunction lngamma(z) {\n\n if(z < 0) return Number('0/0');\n var x = p_ln[0];\n for(var i = p_ln.length - 1; i > 0; --i) x += p_ln[i] / (z + i);\n var t = z + g_ln + 0.5;\n return .5*Math.log(2*Math.PI)+(z+.5)*Math.log(t)-t+Math.log(x)-Math.log(z);\n}\n\nmodule.exports = function gamma (z) {\n if (z < 0.5) {\n return Math.PI / (Math.sin(Math.PI * z) * gamma(1 - z));\n }\n else if(z > 100) return Math.exp(lngamma(z));\n else {\n z -= 1;\n var x = p[0];\n for (var i = 1; i < g + 2; i++) {\n x += p[i] / (z + i);\n }\n var t = z + g + 0.5;\n\n return Math.sqrt(2 * Math.PI)\n * Math.pow(t, z + 0.5)\n * Math.exp(-t)\n * x\n ;\n }\n};\n\nmodule.exports.log = lngamma;","deps":{}} ] $ browser-unpack < bundle.js | browser-pack | node 129.50502147699586 ``` # usage ``` usage: browser-unpack Write a browser bundle to STDIN. Outputs a JSON array in the module-deps format. ``` # methods ``` js var unpack = require('browser-unpack') ``` ## var rows = unpack(src) Return an array of `rows` from the bundle source string `src`. # install With [npm](https://npmjs.org) do: ``` npm install browser-unpack ``` # license MIT browser-unpack-1.2.0/test/000077500000000000000000000000001305564726100154445ustar00rootroot00000000000000browser-unpack-1.2.0/test/assignment.js000066400000000000000000000007541305564726100201600ustar00rootroot00000000000000var test = require('tape'); var unpack = require('../'); var pack = require('browser-pack'); var concat = require('concat-stream'); var vm = require('vm'); var fs = require('fs'); var src = fs.readFileSync(__dirname + '/files/assignment.js', 'utf8'); test('expression', function (t) { t.plan(2); t.doesNotThrow(function() { var p = pack({ raw: true }); var rows = unpack(src); t.equal(rows.length, 3, 'should unpack 3 rows'); }, 'should not throw'); }); browser-unpack-1.2.0/test/empty-statements.js000066400000000000000000000007601305564726100213300ustar00rootroot00000000000000var test = require('tape'); var unpack = require('../'); var pack = require('browser-pack'); var concat = require('concat-stream'); var vm = require('vm'); var fs = require('fs'); var src = fs.readFileSync(__dirname + '/files/empty-statements.js', 'utf8'); test('uglified', function (t) { t.plan(2); t.doesNotThrow(function() { var p = pack({ raw: true }); var rows = unpack(src); t.equal(rows.length, 3, 'should unpack 3 rows'); }, 'should not throw'); }); browser-unpack-1.2.0/test/files/000077500000000000000000000000001305564726100165465ustar00rootroot00000000000000browser-unpack-1.2.0/test/files/assignment.js000066400000000000000000000045411305564726100212600ustar00rootroot00000000000000require = (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);throw new Error("Cannot find module '"+o+"'")}var f=n[o]={exports:{}};t[o][0].call(f.exports,function(e){var n=t[o][1][e];return s(n?n:e)},f,f.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o 0; --i) x += p_ln[i] / (z + i); var t = z + g_ln + 0.5; return .5*Math.log(2*Math.PI)+(z+.5)*Math.log(t)-t+Math.log(x)-Math.log(z); } module.exports = function gamma (z) { if (z < 0.5) { return Math.PI / (Math.sin(Math.PI * z) * gamma(1 - z)); } else if(z > 100) return Math.exp(lngamma(z)); else { z -= 1; var x = p[0]; for (var i = 1; i < g + 2; i++) { x += p[i] / (z + i); } var t = z + g + 0.5; return Math.sqrt(2 * Math.PI) * Math.pow(t, z + 0.5) * Math.exp(-t) * x ; } }; module.exports.log = lngamma; },{}],2:[function(require,module,exports){ module.exports = function (n) { return n * 111 } },{}],3:[function(require,module,exports){ var foo = require('./foo.js'); var gamma = require('gamma'); console.log(Math.floor(foo(gamma(3.8)))); },{"./foo.js":2,"gamma":1}]},{},[3]) browser-unpack-1.2.0/test/files/bundle.js000066400000000000000000000045261305564726100203640ustar00rootroot00000000000000(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);throw new Error("Cannot find module '"+o+"'")}var f=n[o]={exports:{}};t[o][0].call(f.exports,function(e){var n=t[o][1][e];return s(n?n:e)},f,f.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o 0; --i) x += p_ln[i] / (z + i); var t = z + g_ln + 0.5; return .5*Math.log(2*Math.PI)+(z+.5)*Math.log(t)-t+Math.log(x)-Math.log(z); } module.exports = function gamma (z) { if (z < 0.5) { return Math.PI / (Math.sin(Math.PI * z) * gamma(1 - z)); } else if(z > 100) return Math.exp(lngamma(z)); else { z -= 1; var x = p[0]; for (var i = 1; i < g + 2; i++) { x += p[i] / (z + i); } var t = z + g + 0.5; return Math.sqrt(2 * Math.PI) * Math.pow(t, z + 0.5) * Math.exp(-t) * x ; } }; module.exports.log = lngamma; },{}],2:[function(require,module,exports){ module.exports = function (n) { return n * 111 } },{}],3:[function(require,module,exports){ var foo = require('./foo.js'); var gamma = require('gamma'); console.log(Math.floor(foo(gamma(3.8)))); },{"./foo.js":2,"gamma":1}]},{},[3])browser-unpack-1.2.0/test/files/empty-statements.js000066400000000000000000000045341305564726100224350ustar00rootroot00000000000000;;(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);throw new Error("Cannot find module '"+o+"'")}var f=n[o]={exports:{}};t[o][0].call(f.exports,function(e){var n=t[o][1][e];return s(n?n:e)},f,f.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o 0; --i) x += p_ln[i] / (z + i); var t = z + g_ln + 0.5; return .5*Math.log(2*Math.PI)+(z+.5)*Math.log(t)-t+Math.log(x)-Math.log(z); } module.exports = function gamma (z) { if (z < 0.5) { return Math.PI / (Math.sin(Math.PI * z) * gamma(1 - z)); } else if(z > 100) return Math.exp(lngamma(z)); else { z -= 1; var x = p[0]; for (var i = 1; i < g + 2; i++) { x += p[i] / (z + i); } var t = z + g + 0.5; return Math.sqrt(2 * Math.PI) * Math.pow(t, z + 0.5) * Math.exp(-t) * x ; } }; module.exports.log = lngamma; },{}],2:[function(require,module,exports){ module.exports = function (n) { return n * 111 } },{}],3:[function(require,module,exports){ var foo = require('./foo.js'); var gamma = require('gamma'); console.log(Math.floor(foo(gamma(3.8)))); },{"./foo.js":2,"gamma":1}]},{},[3]) ;; browser-unpack-1.2.0/test/files/empty.js000066400000000000000000000042731305564726100202500ustar00rootroot00000000000000(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);throw new Error("Cannot find module '"+o+"'")}var f=n[o]={exports:{}};t[o][0].call(f.exports,function(e){var n=t[o][1][e];return s(n?n:e)},f,f.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o 0; --i) x += p_ln[i] / (z + i); var t = z + g_ln + 0.5; return .5*Math.log(2*Math.PI)+(z+.5)*Math.log(t)-t+Math.log(x)-Math.log(z); } module.exports = function gamma (z) { if (z < 0.5) { return Math.PI / (Math.sin(Math.PI * z) * gamma(1 - z)); } else if(z > 100) return Math.exp(lngamma(z)); else { z -= 1; var x = p[0]; for (var i = 1; i < g + 2; i++) { x += p[i] / (z + i); } var t = z + g + 0.5; return Math.sqrt(2 * Math.PI) * Math.pow(t, z + 0.5) * Math.exp(-t) * x ; } }; module.exports.log = lngamma; },{}],2:[function(require,module,exports){ },{}],3:[function(require,module,exports){},{"./foo.js":2,"gamma":1}]},{},[3]) browser-unpack-1.2.0/test/files/return.js000066400000000000000000000010221305564726100204160ustar00rootroot00000000000000(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o 0; --i) x += p_ln[i] / (z + i); var t = z + g_ln + 0.5; return .5*Math.log(2*Math.PI)+(z+.5)*Math.log(t)-t+Math.log(x)-Math.log(z); } module.exports = function gamma (z) { if (z < 0.5) { return Math.PI / (Math.sin(Math.PI * z) * gamma(1 - z)); } else if(z > 100) return Math.exp(lngamma(z)); else { z -= 1; var x = p[0]; for (var i = 1; i < g + 2; i++) { x += p[i] / (z + i); } var t = z + g + 0.5; return Math.sqrt(2 * Math.PI) * Math.pow(t, z + 0.5) * Math.exp(-t) * x ; } }; module.exports.log = lngamma; },{}]},{},[2]) (2) }); browser-unpack-1.2.0/test/files/uglified.js000066400000000000000000000030021305564726100206670ustar00rootroot00000000000000!function r(t,e,o){function n(u,f){if(!e[u]){if(!t[u]){var i="function"==typeof require&&require;if(!f&&i)return i(u,!0);if(a)return a(u,!0);throw new Error("Cannot find module '"+u+"'")}var h=e[u]={exports:{}};t[u][0].call(h.exports,function(r){var e=t[u][1][r];return n(e?e:r)},h,h.exports,r,t,e,o)}return e[u].exports}for(var a="function"==typeof require&&require,u=0;ur)return Number("0/0");for(var t=u[0],e=u.length-1;e>0;--e)t+=u[e]/(r+e);var o=r+a+.5;return.5*Math.log(2*Math.PI)+(r+.5)*Math.log(o)-o+Math.log(t)-Math.log(r)}var o=7,n=[.9999999999998099,676.5203681218851,-1259.1392167224028,771.3234287776531,-176.6150291621406,12.507343278686905,-.13857109526572012,9984369578019572e-21,1.5056327351493116e-7],a=607/128,u=[.9999999999999971,57.15623566586292,-59.59796035547549,14.136097974741746,-.4919138160976202,3399464998481189e-20,4652362892704858e-20,-9837447530487956e-20,.0001580887032249125,-.00021026444172410488,.00021743961811521265,-.0001643181065367639,8441822398385275e-20,-26190838401581408e-21,36899182659531625e-22];t.exports=function f(r){if(.5>r)return Math.PI/(Math.sin(Math.PI*r)*f(1-r));if(r>100)return Math.exp(e(r));r-=1;for(var t=n[0],a=1;o+2>a;a++)t+=n[a]/(r+a);var u=r+o+.5;return Math.sqrt(2*Math.PI)*Math.pow(u,r+.5)*Math.exp(-u)*t},t.exports.log=e},{}],2:[function(r,t){t.exports=function(r){return 111*r}},{}],3:[function(r){var t=r("./foo.js"),e=r("gamma");console.log(Math.floor(t(e(3.8))))},{"./foo.js":2,gamma:1}]},{},[3]);browser-unpack-1.2.0/test/files/utf-8.js000066400000000000000000000052561305564726100200570ustar00rootroot00000000000000!function(e){if("object"==typeof exports)module.exports=e();else if("function"==typeof define&&define.amd)define(e);else{var n;"undefined"!=typeof window?n=window:"undefined"!=typeof global?n=global:"undefined"!=typeof self&&(n=self),n.StandAlone=e()}}(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);throw new Error("Cannot find module '"+o+"'")}var f=n[o]={exports:{}};t[o][0].call(f.exports,function(e){var n=t[o][1][e];return s(n?n:e)},f,f.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o 0; --i) x += p_ln[i] / (z + i); var t = z + g_ln + 0.5; return .5*Math.log(2*Math.PI)+(z+.5)*Math.log(t)-t+Math.log(x)-Math.log(z); } module.exports = function gamma (z) { if (z < 0.5) { return Math.PI / (Math.sin(Math.PI * z) * gamma(1 - z)); } else if(z > 100) return Math.exp(lngamma(z)); else { z -= 1; var x = p[0]; for (var i = 1; i < g + 2; i++) { x += p[i] / (z + i); } var t = z + g + 0.5; return Math.sqrt(2 * Math.PI) * Math.pow(t, z + 0.5) * Math.exp(-t) * x ; } }; module.exports.log = lngamma; },{}]},{},[2]) (2) }); browser-unpack-1.2.0/test/multi-byte.js000066400000000000000000000012201305564726100200700ustar00rootroot00000000000000var test = require('tape'); var unpack = require('../'); var fs = require('fs'); var src = fs.readFileSync(__dirname + '/files/utf-8.js', 'utf8'); var buf = new Buffer(src); test('multi-byte characters', function (t) { t.plan(6); t.doesNotThrow(function() { var srcRows = unpack(src); var bufRows = unpack(buf); t.equal(srcRows.length, bufRows.length, 'should unpack the same number of rows'); t.equal(srcRows.length, 3, 'should unpack 3 rows'); for (var i = 0; i < 3; i++) { t.equal(bufRows[i].source, srcRows[i].source, 'should have the same source'); } }, 'should not throw'); }); browser-unpack-1.2.0/test/return.js000066400000000000000000000012231305564726100173170ustar00rootroot00000000000000var test = require('tape'); var unpack = require('../'); var pack = require('browser-pack'); var concat = require('concat-stream'); var vm = require('vm'); var fs = require('fs'); var src = fs.readFileSync(__dirname + '/files/return.js', 'utf8'); test('return', function (t) { t.plan(1); var p = pack({ raw: true }); p.pipe(concat(function (body) { var log = function (msg) { t.equal(msg, 'whatever'); }; var c = { console: { log: log } }; vm.runInNewContext(body.toString('utf8'), c); })); var rows = unpack(src); rows.forEach(function (row) { p.write(row) }); p.end(); }); browser-unpack-1.2.0/test/standalone.js000066400000000000000000000005441305564726100201350ustar00rootroot00000000000000var test = require('tape'); var unpack = require('../'); var fs = require('fs'); var src = fs.readFileSync(__dirname + '/files/standalone.js', 'utf8'); test('standalone', function (t) { t.plan(2); t.doesNotThrow(function() { var rows = unpack(src); t.equal(rows.length, 3, 'should unpack 3 rows'); }, 'should not throw'); }); browser-unpack-1.2.0/test/uglified.js000066400000000000000000000013171305564726100175740ustar00rootroot00000000000000var test = require('tape'); var unpack = require('../'); var pack = require('browser-pack'); var concat = require('concat-stream'); var vm = require('vm'); var fs = require('fs'); var src = fs.readFileSync(__dirname + '/files/uglified.js', 'utf8'); test('uglified', function (t) { t.plan(3); t.doesNotThrow(function() { var p = pack({ raw: true }); var rows = unpack(src); t.equal(rows.length, 3, 'should unpack 3 rows'); }, 'should not throw'); t.deepEquals(deps(src), ['./foo.js', 'gamma']); function deps(src) { var rows = unpack(src); return rows.reduce(function(prev, row) { return prev.concat(Object.keys(row.deps)); }, []); } }); browser-unpack-1.2.0/test/unpack.js000066400000000000000000000017761305564726100172760ustar00rootroot00000000000000var test = require('tape'); var unpack = require('../'); var pack = require('browser-pack'); var concat = require('concat-stream'); var vm = require('vm'); var fs = require('fs'); var src = fs.readFileSync(__dirname + '/files/bundle.js', 'utf8'); var empty = fs.readFileSync(__dirname + '/files/empty.js', 'utf8'); test('unpack', function (t) { t.plan(1); var p = pack({ raw: true }); p.pipe(concat(function (body) { var log = function (msg) { t.equal(msg, 521); }; var c = { console: { log: log } }; vm.runInNewContext(body.toString('utf8'), c); })); var rows = unpack(src); rows.forEach(function (row) { p.write(row) }); p.end(); }); test('does not break on empty modules', function (t) { t.plan(1); var p = pack({ raw: true }); var rows = unpack(empty); p.pipe(concat(function (body) { t.pass('did not emit an error'); })) rows.forEach(function (row) { p.write(row); }) p.end(); })