[Pkg-javascript-commits] [node-browser-unpack] 01/40: initial version of unpacking without entries

Bastien Roucariès rouca at moszumanska.debian.org
Thu Nov 9 12:27:23 UTC 2017


This is an automated email from the git hooks/post-receive script.

rouca pushed a commit to branch master
in repository node-browser-unpack.

commit 296db31758c105e67b0f4225e8ce076075840f42
Author: James Halliday <mail at substack.net>
Date:   Mon Dec 23 20:13:54 2013 -0800

    initial version of unpacking without entries
---
 example/foo.js           |  1 +
 example/main.js          |  4 ++++
 example/rematerialize.js |  6 ++++++
 index.js                 | 43 +++++++++++++++++++++++++++++++++++++++++++
 readme.markdown          |  4 ++++
 5 files changed, 58 insertions(+)

diff --git a/example/foo.js b/example/foo.js
new file mode 100644
index 0000000..4325a0b
--- /dev/null
+++ b/example/foo.js
@@ -0,0 +1 @@
+module.exports = function (n) { return n * 111 }
diff --git a/example/main.js b/example/main.js
new file mode 100644
index 0000000..8bbdde0
--- /dev/null
+++ b/example/main.js
@@ -0,0 +1,4 @@
+var foo = require('./foo.js');
+var gamma = require('gamma');
+
+console.log(foo(gamma(2.3)));
diff --git a/example/rematerialize.js b/example/rematerialize.js
new file mode 100644
index 0000000..79faf28
--- /dev/null
+++ b/example/rematerialize.js
@@ -0,0 +1,6 @@
+var parse = require('../');
+var concat = require('concat-stream');
+
+process.stdin.pipe(concat(function (body) {
+    console.log(parse(body));
+}));
diff --git a/index.js b/index.js
new file mode 100644
index 0000000..7f97f85
--- /dev/null
+++ b/index.js
@@ -0,0 +1,43 @@
+var parse = require('esprima').parse;
+
+module.exports = function (src) {
+    var ast = parse(src, { range: true });
+    if (ast.body.length !== 1) return;
+    if (ast.body[0].type !== 'ExpressionStatement') return;
+    if (ast.body[0].expression.type !== 'CallExpression') return;
+    
+    var args = ast.body[0].expression.arguments;
+    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];
+    
+    return files.map(function (file) {
+        var body = file.value.elements[0].body.body;
+        var start, end;
+        if (body.length === 0) {
+            start = body.range[0];
+            end = body.range[1];
+        }
+        else {
+            start = body[0].range[0];
+            end = body[body.length-1].range[1];
+        }
+        
+        var depProps = file.value.elements[1].properties;
+        var deps = depProps.reduce(function (acc, dep) {
+            acc[dep.key.value] = dep.value.value;
+            return acc;
+        }, {});
+        return {
+            id: file.key.value,
+            source: src.slice(start, end).toString('utf8'),
+            deps: deps
+        };
+    });
+};
diff --git a/readme.markdown b/readme.markdown
new file mode 100644
index 0000000..cde0147
--- /dev/null
+++ b/readme.markdown
@@ -0,0 +1,4 @@
+# browser-unpack
+
+parse a bundle generated by
+[browser-pack](https://npmjs.org/package/browser-pack)

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-javascript/node-browser-unpack.git



More information about the Pkg-javascript-commits mailing list