Compare commits

..

69 Commits

Author SHA1 Message Date
Sebastian McKenzie
5f9e954d21 v1.10.4 2014-10-28 10:54:18 +11:00
Sebastian McKenzie
a03fd0f43a fix formatting 2014-10-28 10:52:48 +11:00
Sebastian McKenzie
dcc5eaa95e support MemberExpressions in destructuring - fixes #100 2014-10-28 10:52:24 +11:00
Sebastian McKenzie
3b7ce5aaa1 add browser file so we can have a custom browser environment 2014-10-28 10:52:07 +11:00
Sebastian McKenzie
6811f071a9 v1.10.3 2014-10-25 17:24:43 +11:00
Sebastian McKenzie
9abda34e59 simplify transform call chain 2014-10-25 17:23:27 +11:00
Sebastian McKenzie
417ba2bd92 disable uglify benchmark 2014-10-25 17:23:14 +11:00
Sebastian McKenzie
e23f8e92ba remove internal transformer check from ensureTransformerNames #94 2014-10-25 17:23:03 +11:00
Sebastian McKenzie
ef2638eb89 v1.10.2 2014-10-25 13:04:49 +11:00
Sebastian McKenzie
a7d860aab4 fix error stack not getting updated 2014-10-25 13:03:44 +11:00
Sebastian McKenzie
0e3498d785 v1.10.1 2014-10-25 12:57:38 +11:00
Sebastian McKenzie
45fe1d0d47 use my acorn-jsx fork with unicode regex support 2014-10-25 12:56:12 +11:00
Sebastian McKenzie
d5c2647701 add ability to blacklist internal transformers #94 2014-10-25 10:20:11 +11:00
Sebastian McKenzie
af4d8a27aa add --inline-diffs flag to mocha 2014-10-25 09:10:14 +11:00
Sebastian McKenzie
8136b4c40b rename syntax tests to transformation 2014-10-25 09:09:55 +11:00
Sebastian McKenzie
65ba4d35e7 fix jshint errors 2014-10-25 09:09:31 +11:00
Sebastian McKenzie
e09312f127 Merge pull request #92 from jupl/master
Load regenerator runtime only for polyfill
2014-10-25 09:07:13 +11:00
jupl
1b0e42ad03 Load regenerator runtime only for polyfill 2014-10-24 13:02:06 -05:00
Sebastian McKenzie
e21a0d0a8b peg acorn-recast and acorn-ast-types versions 2014-10-23 09:14:04 +11:00
Sebastian McKenzie
ce170f7646 add more custom module formatter documentation 2014-10-23 09:01:29 +11:00
Sebastian McKenzie
5f8420f23e move from ast-types and recast to acorn-ast-types and acorn-recast 2014-10-23 09:00:27 +11:00
Sebastian McKenzie
ce4220644d abstract subclassing into declaration #88 2014-10-23 08:59:52 +11:00
Sebastian McKenzie
aa50a450bd peg esutil version and update to official acorn-jsx release 2014-10-22 22:11:52 +11:00
Sebastian McKenzie
1e6b8d80bb push to arguments instead of an array literal for jsx children 2014-10-22 21:44:08 +11:00
Sebastian McKenzie
035829e726 add custom module formatters 2014-10-22 21:43:43 +11:00
Sebastian McKenzie
2b70df4141 add util.resolve 2014-10-22 21:43:35 +11:00
Sebastian McKenzie
1e7b7b3e0c use acorn-jsx fork 2014-10-22 21:43:24 +11:00
Sebastian McKenzie
b8b670e607 fix regenerator resolution bug, don't depend on 6to5 being linked - closes #85 2014-10-22 07:23:29 +11:00
Sebastian McKenzie
3467d509f7 save old extension handlers so we can put them back if the extensions are hooked again 2014-10-22 07:22:36 +11:00
Sebastian McKenzie
66cc6bea08 add back esutils to dependencies 2014-10-22 07:22:11 +11:00
Sebastian McKenzie
dba935c63d dry up amd and common module formatter export specifiers 2014-10-22 07:21:56 +11:00
Sebastian McKenzie
73f65ae634 fix jshint spacing issues 2014-10-20 08:35:02 +11:00
Sebastian McKenzie
e263757509 simplify amd module formatter 2014-10-20 01:40:23 +11:00
Sebastian McKenzie
b8a80364df Revert "remove jsx and react transformers"
This reverts commit 4241227dbe.
2014-10-19 19:46:18 +11:00
Sebastian McKenzie
19ba55410b downgrade acorn since 0.9.1 isn't in npm 2014-10-19 19:23:13 +11:00
Sebastian McKenzie
c65197f006 better modules summary wording 2014-10-19 19:23:13 +11:00
Sebastian McKenzie
98a04a070f remove esutils and upgrade acorn 2014-10-19 19:23:13 +11:00
Sebastian McKenzie
2bda223001 update unexpected character in bin/6to5 stdin --filename test 2014-10-19 19:23:13 +11:00
Sebastian McKenzie
ddefc09510 fix linting errors 2014-10-19 19:23:13 +11:00
Sebastian McKenzie
489547b77b Merge pull request #84 from thejameskyle/module-docs
Update commonjs modules docs to be consistent
2014-10-19 19:22:53 +11:00
James Kyle
a16685d36d Update commonjs modules docs to be consistent 2014-10-19 01:21:38 -07:00
Sebastian McKenzie
891bbba375 fix Modules - Common link in readme 2014-10-19 17:53:50 +11:00
Sebastian McKenzie
7f2335974b bump dependency versions and remove benchmark transpilers 2014-10-19 17:53:08 +11:00
Sebastian McKenzie
ca597a2306 paragraph module documentation in readme 2014-10-19 17:52:52 +11:00
Sebastian McKenzie
45bab5709f change require("recast").types to require("ast-types") 2014-10-19 17:52:41 +11:00
Sebastian McKenzie
0683591c6c add new module formatters documentation 2014-10-19 17:49:09 +11:00
Sebastian McKenzie
44966849f9 remove useless root variable in umd module formatter 2014-10-19 17:48:59 +11:00
Sebastian McKenzie
e76462303e add umd module formatter - closes #82 2014-10-19 17:39:41 +11:00
Sebastian McKenzie
fceff4b52f add amd module formatter #82 2014-10-19 17:05:24 +11:00
Sebastian McKenzie
209093a3f0 move ImportbatchSpecifier definition to modules transformer 2014-10-19 15:23:37 +11:00
Sebastian McKenzie
7013e970d8 fix acorn to esprima module ast/syntax changes 2014-10-19 14:58:14 +11:00
Sebastian McKenzie
42a7973a9d add support for spreads anywhere in list - fixes #73 2014-10-19 14:52:37 +11:00
Sebastian McKenzie
a75248d2d2 remove jsx from valid extensions since we're now using acorn 2014-10-19 14:21:27 +11:00
Sebastian McKenzie
1f274a3b95 monkeypatch in acorn instead of esprima - immediately fixes #38, fixes #67 @thejameskyle 2014-10-19 13:21:56 +11:00
Sebastian McKenzie
5bc4dfc14c add base umd and amd module formatter tests 2014-10-19 13:17:21 +11:00
Sebastian McKenzie
4241227dbe remove jsx and react transformers 2014-10-19 13:17:02 +11:00
Sebastian McKenzie
a1adca6b65 add support for custom module formatters - #82 2014-10-19 12:11:12 +11:00
Sebastian McKenzie
4f15bfcf1d v1.9.9 2014-10-19 11:29:39 +11:00
Sebastian McKenzie
a405d6d3d5 Merge pull request #83 from thejameskyle/context-computed-spread-fix
Fix for spread on computed context
2014-10-19 11:11:54 +11:00
James Kyle
9c784436f0 Fix for spread on computed context 2014-10-18 17:07:23 -07:00
Sebastian McKenzie
88856e040d v1.9.8 2014-10-18 15:49:47 +11:00
Sebastian McKenzie
9f493b23ab fix whitelist tests 2014-10-18 15:49:07 +11:00
Sebastian McKenzie
cc84b5e1a4 make use-strict a public transformer 2014-10-18 15:47:03 +11:00
Sebastian McKenzie
2be2e4e1ae simplify bin/6to5 util methods and fix double compilation bug with eval in 6to5-node 2014-10-18 15:46:15 +11:00
Sebastian McKenzie
435cd98480 add file argument to transformer.ast and fix ast transformer resolution bug 2014-10-18 15:45:39 +11:00
Sebastian McKenzie
d3b088cc6d move declaration insertion to a hidden transformer, add tabWidth to recast prettyPrint 2014-10-18 15:45:22 +11:00
Sebastian McKenzie
234d9997c8 add "use strict" declaration - closes #78 2014-10-18 15:44:44 +11:00
Sebastian McKenzie
dcaea68240 fix up test styling and add use-strict declarator 2014-10-18 15:42:36 +11:00
Sebastian McKenzie
6c48e6cd66 add createClass displayName to react 2014-10-17 22:00:14 +11:00
498 changed files with 2171 additions and 850 deletions

145
MODULES.md Normal file
View File

@@ -0,0 +1,145 @@
# Modules
## Usage
### CLI
$ 6to5 --modules common script.js
### Node
```javascript
var to5 = require("6to5");
to5.transform('import "foo";', { modules: "common" });
```
## Formats
### Common (Default)
**In**
```javascript
import "foo";
import foo from "foo";
import * as foo from "foo";
import {bar} from "foo";
import {foo as bar} from "foo";
export {test};
export var test = 5;
export default test;
```
**Out**
```javascript
require("foo");
var foo = require("foo").default;
var foo = require("foo");
var bar = require("foo").bar;
var bar = require("foo").foo;
exports.test = test;
var test = 5; exports.test = test;
exports.default = test;
```
### AMD
**In**
```javascript
import foo from "foo";
export function bar() {
return foo("foobar");
}
```
**Out**
```javascript
define(["exports", "foo"], function (exports, _foo) {
exports.bar = bar;
var foo = _foo.default;
function bar() {
return foo("foobar");
}
});
```
### UMD
**In**
```javascript
import foo from "foo";
export function bar() {
return foo("foobar");
}
```
**Out**
```javascript
(function (factory) {
if (typeof define === "function" && define.amd) {
define(["exports", "foo"], factory);
} else if (typeof exports !== "undefined") {
factory(exports, require("foo"));
}
})(function (exports) {
exports.bar = bar;
var foo = _foo.default;
function bar() {
return foo("foobar");
}
});
```
## Custom
You can alternatively specify module names instead of one of the built-in types.
```javascript
module.exports = ModuleFormatter;
function ModuleFormatter() {
}
ModuleFormatter.prototype.transform = function (ast) {
// this is ran after all transformers have had their turn at modifying the ast
// feel free to modify this however
};
ModuleFormatter.prototype.import = function (node, nodes) {
// node is an ImportDeclaration
};
ModuleFormatter.prototype.importSpecifier = function (specifier, node, nodes) {
// specifier is an ImportSpecifier
// node is an ImportDeclaration
};
ModuleFormatter.prototype.export = function (node, nodes) {
// node is an ExportDeclaration
};
ModuleFormatter.prototype.exportSpecifier = function (specifier, node, nodes) {
// specifier is an ExportSpecifier
// node is an ExportDeclaration
};
```

View File

@@ -10,6 +10,7 @@ clean:
rm -rf coverage templates.json test/tmp dist
bench:
npm install es6-transpiler traceur esnext es6now jstransform
node node_modules/matcha/bin/_matcha
test:
@@ -34,7 +35,7 @@ build:
node bin/cache-templates
browserify lib/6to5/transform.js -s to5 >dist/6to5.js
browserify lib/6to5/browser.js -s to5 >dist/6to5.js
uglifyjs dist/6to5.js >dist/6to5.min.js
rm -rf templates.json
@@ -47,6 +48,9 @@ publish:
node bin/cache-templates
test -f templates.json
make build
cp dist/6to5.js browser.js
read -p "Version: " version; \
npm version $$version --message "v%s"
npm publish

View File

@@ -154,6 +154,11 @@ to5.transformFile("filename.js", options, function (err, result) {
// Run `6to5 --help` to see a full list of transformers.
whitelist: [],
// Module formatter to use
// Run `6to5 --help` to see a full list of module formatters.
// Default: "common"
modules: "common",
// If truthy, adds a `map` property to returned output.
// If set to "inline", a comment with a sourceMappingURL directive is added to
// the bottom of the returned code.
@@ -224,32 +229,12 @@ To test 6to5 in your browser run:
And open `test/browser.html` in your browser if it doesn't open automatically.
## Modules
## [Modules](MODULES.md)
6to5 modules compile straight to CommonJS, because of this various liberties are
taken into account to make their usage easier.
See [Modules - Common](MODULES.md#common-default) for documentation on the
default module formatting.
```javascript
import "foo"; // require("foo");
import foo from "foo"; // var foo = require("foo").default;
import * as foo from "foo"; // var foo = require("foo");
import {bar} from "foo"; // var bar = require("foo").bar;
import {foo as bar} from "foo"; // var bar = require("foo").foo;
export {test}; // exports.test = test;
export var test = 5; // var test = 5; exports.test = test;
export default test; // exports.default = test;
```
If you'd like to disable this behaviour and use the more ES6-like
[es6-module-transpiler](https://github.com/esnext/es6-module-transpiler) you can
use the following:
$ 6to5 script.js -o script-compiled.js --blacklist modules
$ compile-modules convert script-compiled.js -o script-compiled.js
Alternatively see [Modules](MODULES.md) for all other supported module formatting types.
## Caveats

View File

@@ -17,7 +17,12 @@ var vm = require("vm");
var _ = require("lodash");
var readResolve = function (filename) {
return fs.readFileSync(require.resolve(filename), "utf8");
try {
filename = require.resolve(filename);
} catch (err) {
return null;
}
return fs.readFileSync(filename, "utf8");
};
var getVersion = function (name) {
@@ -38,6 +43,7 @@ _.each([
var compilers = {
"6to5": {
version: getVersion(".."),
compile: function (code, filename) {
return to5.transform(code, { filename: filename }).code;
}
@@ -54,7 +60,7 @@ var compilers = {
},
esnext: {
runtime: readResolve("esnext/node_modules/regenerator/runtime.js"),
runtime: readResolve("esnext/node_modules/regenerator/runtime.js") || readResolve("regenerator/runtime.js"),
compile: function (code, filename) {
return esnext.compile(code).code;
}
@@ -87,7 +93,7 @@ var compilers = {
var uglifyTitle = "uglify v" + getVersion("uglify-js");
_.each(compilers, function (compiler, name) {
compiler.title = name + " v" + getVersion(name);
compiler.title = name + " v" + (compiler.version || getVersion(name));
});
//
@@ -96,14 +102,13 @@ var sizeBenchmark = function (code, loc, name, compiler) {
var log = function (output, title) {
title = [compiler.title].concat(title || []).join(" + ");
var kilo = (output.length / 1024).toFixed(2);
var text;
var color;
if (output === false) {
if (output.stack) {
text = "error";
color = "red";
} else {
var kilo = (output.length / 1024).toFixed(2);
text = kilo + "KB";
color = "cyan";
}
@@ -111,6 +116,10 @@ var sizeBenchmark = function (code, loc, name, compiler) {
text = matcha.utils.color(matcha.utils.padBefore(text, 22), color);
console.log(text, matcha.utils.color("» " + title, "gray"));
if (output.stack) {
console.error(output.stack);
}
};
var go = function (getOutput, title) {
@@ -118,7 +127,7 @@ var sizeBenchmark = function (code, loc, name, compiler) {
try {
code = getOutput();
} catch (err) {
log(false, title);
log(err, title);
return;
}
@@ -127,13 +136,13 @@ var sizeBenchmark = function (code, loc, name, compiler) {
var output;
go(function () {
return output = output || compiler.compile(code, loc);
return output = compiler.compile(code, loc);
});
if (!output) return;
go(function () {
return uglify.minify(output, { fromString: true }).code;
}, uglifyTitle);
//go(function () {
// return uglify.minify(output, { fromString: true }).code;
//}, uglifyTitle);
};
//

View File

@@ -41,9 +41,7 @@ var _eval = function (code, filename) {
};
if (commander.eval) {
var code = to5.transform(commander.eval, { filename: "eval" }).code;
var result = _eval(code, "eval");
var result = _eval(commander.eval, "eval");
if (commander.print) console.log(result);
} else {
var filenames = commander.args;

View File

@@ -13,7 +13,7 @@ module.exports = function (commander, filenames, opts) {
var write = function (src, relative) {
var dest = path.join(commander.outDir, relative);
var data = util.compile(src, dest);
var data = util.compile(src, { sourceMapName: dest });
var up = path.normalize(dest + "/..");
mkdirp.sync(up);

View File

@@ -100,8 +100,8 @@ module.exports = function (commander, filenames, opts) {
}
});
_.each(_filenames, function (filename) {
results.push(util.compile(filename));
_.each(_filenames, function (filename, i) {
results.push(util.compile(filename, { _noStrict: i != 0 }));
});
output();

View File

@@ -16,19 +16,27 @@ commander.option("-s, --source-maps", "Save source map alongside the compiled co
commander.option("-f, --filename [filename]", "Filename to use when reading from stdin - this will be used in source-maps, errors etc [stdin]", "stdin");
commander.option("-w, --watch", "Recompile files on changes");
commander.option("-m, --modules [modules]", "Module formatter type to use [common]", "common");
commander.option("-w, --whitelist [whitelist]", "Whitelist of transformers to ONLY use", util2.list);
commander.option("-b, --blacklist [blacklist]", "Blacklist of transformers to NOT use", util2.list);
commander.option("-o, --out-file [out]", "Compile all input files into a single file");
commander.option("-d, --out-dir [out]", "Compile an input directory of modules into an output directory");
commander.on("--help", function(){
console.log(" Transformers:");
console.log();
_.each(_.keys(transform.transformers).sort(), function (key) {
if (key[0] === "_") return;
console.log(" - " + key);
});
console.log();
var outKeys = function (title, obj) {
console.log(" " + title + ":");
console.log();
_.each(_.keys(obj).sort(), function (key) {
if (key[0] === "_") return;
console.log(" - " + key);
});
console.log();
};
outKeys("Transformers", transform.transformers);
outKeys("Module formatters", transform.moduleFormatters);
});
var pkg = require("../../package.json");
@@ -83,7 +91,8 @@ exports.opts = {
sourceMapName: commander.outFile,
blacklist: commander.blacklist,
whitelist: commander.whitelist,
sourceMap: commander.sourceMaps || commander.sourceMapsInline
sourceMap: commander.sourceMaps || commander.sourceMapsInline,
modules: commander.modules
};
var fn;

View File

@@ -9,9 +9,9 @@ exports.readdirFilter = function (filename) {
return readdir(filename).filter(util.canCompile);
};
exports.transform = function (filename, code, to) {
var opts = _.extend({ filename: filename }, index.opts);
if (to) opts.sourceMapName = to;
exports.transform = function (filename, code, opts) {
opts = _.extend(opts || {}, index.opts);
opts.filename = filename;
var result = to5.transform(code, opts);
result.filename = filename;
@@ -19,7 +19,7 @@ exports.transform = function (filename, code, to) {
return result;
};
exports.compile = function (filename, to) {
exports.compile = function (filename, opts) {
var code = fs.readFileSync(filename, "utf8");
return exports.transform(filename, code, to);
return exports.transform(filename, code, opts);
};

3
lib/6to5/browser.js Normal file
View File

@@ -0,0 +1,3 @@
var transform = require("./transform");
module.exports = transform;

View File

@@ -3,15 +3,17 @@ module.exports = File;
var SHEBANG_REGEX = /^\#\!.*/;
var transform = require("./transform");
var recast = require("recast");
var recast = require("acorn-recast");
var util = require("./util");
var b = require("recast").types.builders;
var b = require("acorn-ast-types").builders;
var _ = require("lodash");
function File(opts) {
this.opts = File.normaliseOptions(opts);
this.moduleFormatter = this.getModuleFormatter(opts.modules);
this.declarations = {};
this.uids = {};
this.opts = File.normaliseOptions(opts);
this.ast = {};
}
@@ -23,7 +25,7 @@ File.normaliseOptions = function (opts) {
whitelist: [],
sourceMap: false,
filename: "unknown",
format: {}
modules: "common"
});
_.defaults(opts, {
@@ -37,6 +39,21 @@ File.normaliseOptions = function (opts) {
return opts;
};
File.prototype.getModuleFormatter = function (type) {
var ModuleLoader = transform.moduleFormatters[type];
if (!ModuleLoader) {
var loc = util.resolve(type);
if (loc) ModuleLoader = require(loc);
}
if (!ModuleLoader) {
throw new ReferenceError("unknown module formatter type " + type);
}
return new ModuleLoader(this);
};
File.prototype.parseShebang = function (code) {
var shebangMatch = code.match(SHEBANG_REGEX);
if (shebangMatch) {
@@ -67,7 +84,8 @@ File.prototype.parse = function (code) {
code = this.parseShebang(code);
return util.parse(this.opts, code, function (tree) {
return self.transform(tree);
self.transform(tree);
return self.generate();
});
};
@@ -79,23 +97,14 @@ File.prototype.transform = function (ast) {
_.each(transform.transformers, function (transformer) {
transformer.transform(self);
});
var body = ast.program.body;
_.each(this.declarations, function (declar) {
body.unshift(b.variableDeclaration("var", [
b.variableDeclarator(declar.uid, declar.node)
]));
});
return this.generate();
};
File.prototype.generate = function () {
var opts = this.opts;
var ast = this.ast;
var printOpts = {};
var printOpts = { tabWidth: 2 };
if (opts.sourceMap) {
printOpts.sourceMapName = opts.sourceMapName;
}
@@ -120,6 +129,17 @@ File.prototype.generate = function () {
};
File.prototype.generateUid = function (name) {
// replace all non-valid identifiers with dashes
name = name.replace(/[^a-zA-Z0-9]/g, "-");
// remove all dashes and numbers from start of name
name = name.replace(/^[-0-9]+/, "");
// camel case
name = name.replace(/[-_\s]+(.)?/g, function (match, c) {
return c ? c.toUpperCase() : "";
});
var uids = this.uids;
var i = uids[name] || 1;

82
lib/6to5/modules/amd.js Normal file
View File

@@ -0,0 +1,82 @@
module.exports = AMDFormatter;
var CommonJSFormatter = require("./common");
var util = require("../util");
var b = require("acorn-ast-types").builders;
var _ = require("lodash");
function AMDFormatter(file) {
this.file = file;
this.ids = {};
}
util.inherits(AMDFormatter, CommonJSFormatter);
AMDFormatter.prototype.transform = function (ast) {
var program = ast.program;
var body = program.body;
// build an array of module names
var names = [b.literal("exports")];
_.each(this.ids, function (id, name) {
names.push(b.literal(name));
});
names = b.arrayExpression(names);
// build up define container
var params = _.values(this.ids);
params.unshift(b.identifier("exports"));
var container = b.functionExpression(null, params, b.blockStatement(body));
var call = b.callExpression(b.identifier("define"), [names, container]);
program.body = [b.expressionStatement(call)];
};
AMDFormatter.prototype._push = function (node) {
var id = node.source.value;
var ids = this.ids;
if (ids[id]) {
return ids[id];
} else {
return this.ids[id] = b.identifier(this.file.generateUid(id));
}
};
AMDFormatter.prototype.import = function (node) {
this._push(node);
};
AMDFormatter.prototype.importSpecifier = function (specifier, node, nodes) {
var key = util.getSpecifierName(specifier);
var id = specifier.id;
// import foo from "foo";
if (specifier.default) {
id = b.identifier("default");
}
var ref;
if (specifier.type === "ImportBatchSpecifier") {
// import * as bar from "foo";
ref = this._push(node);
} else {
// import foo from "foo";
ref = b.memberExpression(this._push(node), id, false);
}
nodes.push(b.variableDeclaration("var", [
b.variableDeclarator(key, ref)
]));
};
AMDFormatter.prototype.exportSpecifier = function (specifier, node, nodes) {
var self = this;
return this._exportSpecifier(function () {
return self._push(node);
}, specifier, node, nodes);
};

View File

@@ -0,0 +1,97 @@
module.exports = CommonJSFormatter;
var util = require("../util");
var b = require("acorn-ast-types").builders;
function CommonJSFormatter(file) {
this.file = file;
}
CommonJSFormatter.prototype.import = function (node, nodes) {
// import "foo";
nodes.push(util.template("require", {
MODULE_NAME: node.source.raw
}, true));
};
CommonJSFormatter.prototype.importSpecifier = function (specifier, node, nodes) {
var variableName = util.getSpecifierName(specifier);
// import foo from "foo";
if (specifier.default) {
specifier.id = b.identifier("default");
}
var templateName = "require-assign";
// import * as bar from "foo";
if (specifier.type !== "ImportBatchSpecifier") templateName += "-key";
nodes.push(util.template(templateName, {
VARIABLE_NAME: variableName,
MODULE_NAME: node.source.raw,
KEY: specifier.id
}));
};
CommonJSFormatter.prototype.export = function (node, nodes) {
var declar = node.declaration;
if (node.default) {
util.ensureExpressionType(declar);
nodes.push(util.template("exports-default", {
VALUE: declar
}, true));
} else {
var id = declar.id;
if (declar.type === "VariableDeclaration") {
id = declar.declarations[0].id;
}
var assign = util.template("exports-assign", {
VALUE: id,
KEY: id
}, true);
nodes.push(declar);
if (declar.type === "FunctionDeclaration") {
assign._blockHoist = true;
}
nodes.push(assign);
}
};
CommonJSFormatter.prototype._exportSpecifier = function (getRef, specifier, node, nodes) {
var variableName = util.getSpecifierName(specifier);
if (node.source) {
if (specifier.type === "ExportBatchSpecifier") {
// export * from "foo";
nodes.push(util.template("exports-wildcard", {
OBJECT: getRef()
}, true));
} else {
// export { foo } from "test";
nodes.push(util.template("exports-assign-key", {
VARIABLE_NAME: variableName.name,
OBJECT: getRef(),
KEY: specifier.id
}, true));
}
} else {
// export { foo };
nodes.push(util.template("exports-assign", {
VALUE: specifier.id,
KEY: variableName
}, true));
}
};
CommonJSFormatter.prototype.exportSpecifier = function (specifier, node, nodes) {
return this._exportSpecifier(function () {
return b.callExpression(b.identifier("require"), [node.source]);
}, specifier, node, nodes);
};

47
lib/6to5/modules/umd.js Normal file
View File

@@ -0,0 +1,47 @@
module.exports = UMDFormatter;
var AMDFormatter = require("./amd");
var util = require("../util");
var b = require("acorn-ast-types").builders;
var _ = require("lodash");
function UMDFormatter(file) {
this.file = file;
this.ids = {};
}
util.inherits(UMDFormatter, AMDFormatter);
UMDFormatter.prototype.transform = function (ast) {
var program = ast.program;
var body = program.body;
// build an array of module names
var names = [];
_.each(this.ids, function (id, name) {
names.push(b.literal(name));
});
// factory
var ids = _.values(this.ids);
var args = [b.identifier("exports")].concat(ids);
var factory = b.functionExpression(null, args, b.blockStatement(body));
// runner
var runner = util.template("umd-runner-body", {
AMD_ARGUMENTS: b.arrayExpression([b.literal("exports")].concat(names)),
COMMON_ARGUMENTS: names.map(function (name) {
return b.callExpression(b.identifier("require"), [name]);
})
});
//
var call = b.callExpression(runner, [factory]);
program.body = [b.expressionStatement(call)];
};

View File

@@ -1,3 +1,3 @@
require("es6-symbol/implement");
require("es6-shim");
require("regenerator").runtime();
require("regenerator/runtime");

View File

@@ -21,7 +21,7 @@ sourceMapSupport.install({
//
var ignoreRegex = /node_modules/;
var exts = [];
var exts = {};
var maps = {};
var old = require.extensions[".js"];
@@ -40,13 +40,14 @@ var loader = function (m, filename) {
};
var hookExtensions = function (_exts) {
_.each(exts, function (ext) {
delete require.extensions[ext];
_.each(exts, function (old, ext) {
require.extensions[ext] = old;
});
exts = _exts;
exts = {};
_.each(exts, function (ext) {
_.each(_exts, function (ext) {
exts[ext] = require.extensions[ext];
require.extensions[ext] = loader;
});
};

View File

@@ -1 +0,0 @@
[].concat(ARGUMENT);

View File

@@ -1 +0,0 @@
CLASS_NAME.__proto__ = SUPER_NAME;

View File

@@ -1,8 +0,0 @@
CLASS_NAME.prototype = Object.create(SUPER_NAME.prototype, {
constructor: {
value: CLASS_NAME,
enumerable: false,
writable: true,
configurable: true
}
});

View File

@@ -0,0 +1 @@
exports.VARIABLE_NAME = OBJECT.KEY;

View File

@@ -1 +0,0 @@
exports.VARIABLE_NAME = require(MODULE_NAME).KEY;

View File

@@ -2,4 +2,4 @@
for (var i in obj) {
exports[i] = obj[i];
}
}(require(MODULE_NAME)));
})(OBJECT);

View File

@@ -0,0 +1,11 @@
(function (child, parent) {
child.prototype = Object.create(parent.prototype, {
constructor: {
value: child,
enumerable: false,
writable: true,
configurable: true
}
});
child.__proto__ = parent;
})

View File

@@ -0,0 +1,7 @@
(function (factory) {
if (typeof define === "function" && define.amd) {
define(AMD_ARGUMENTS, factory);
} else if (typeof exports !== "undefined") {
factory(exports, COMMON_ARGUMENTS);
}
});

View File

View File

@@ -2,7 +2,7 @@ module.exports = transform;
var Transformer = require("./transformer");
var sourceMap = require("source-map");
var recast = require("recast");
var recast = require("acorn-recast");
var File = require("./file");
var util = require("./util");
var _ = require("lodash");
@@ -39,11 +39,13 @@ transform.test = function (task, assert) {
var actualCode = actual.code.trim();
var expectCode = expect.code.trim();
var printOpts = { tabWidth: 2 };
result = transform(actualCode, getOpts(actual.filename));
actualCode = recast.prettyPrint(result.ast).code;
actualCode = recast.prettyPrint(result.ast, printOpts).code;
var expectAst = util.parse(expect, expectCode);
var expectResult = recast.prettyPrint(expectAst);
var expectResult = recast.prettyPrint(expectAst, printOpts);
expectCode = expectResult.code;
assert.equal(actualCode, expectCode);
@@ -69,7 +71,7 @@ transform.test = function (task, assert) {
transform._ensureTransformerNames = function (type, keys) {
_.each(keys, function (key) {
if (key[0] === "_" || !_.has(transform.transformers, key)) {
if (!_.has(transform.transformers, key)) {
throw new ReferenceError("unknown transformer " + key + " specified in " + type);
}
});
@@ -98,7 +100,17 @@ transform.transformers = {
jsx: require("./transformers/jsx"),
_aliasFunctions: require("./transformers/_alias-functions"),
_blockHoist: require("./transformers/_block-hoist")
_blockHoist: require("./transformers/_block-hoist"),
_declarations: require("./transformers/_declarations"),
_moduleFormatter: require("./transformers/_module-formatter"),
useStrict: require("./transformers/use-strict")
};
transform.moduleFormatters = {
common: require("./modules/common"),
amd: require("./modules/amd"),
umd: require("./modules/umd")
};
_.each(transform.transformers, function (transformer, key) {

View File

@@ -11,12 +11,13 @@ function Transformer(key, transformer) {
Transformer.normalise = function (transformer) {
if (_.isFunction(transformer)) {
transformer = { ast: transformer };
} else {
_.each(transformer, function (fns, type) {
if (_.isFunction(fns)) fns = { enter: fns };
transformer[type] = fns;
});
}
_.each(transformer, function (fns, type) {
if (_.isFunction(fns)) fns = { enter: fns };
transformer[type] = fns;
});
return transformer;
};
@@ -26,8 +27,8 @@ Transformer.prototype.transform = function (file) {
var transformer = this.transformer;
var ast = file.ast;
if (transformer.ast) {
transformer.ast(ast);
if (transformer.ast && transformer.ast.enter) {
transformer.ast.enter(ast, file);
}
var build = function (exit) {
@@ -56,6 +57,10 @@ Transformer.prototype.transform = function (file) {
enter: build(),
exit: build(true)
});
if (transformer.ast && transformer.ast.exit) {
transformer.ast.exit(ast, file);
}
};
Transformer.prototype.canRun = function (file) {

View File

@@ -1,6 +1,6 @@
var traverse = require("../traverse");
var util = require("../util");
var b = require("recast").types.builders;
var b = require("acorn-ast-types").builders;
var go = function (getBody, node, file) {
var argumentsId;

View File

@@ -0,0 +1,12 @@
var b = require("acorn-ast-types").builders;
var _ = require("lodash");
module.exports = function (ast, file) {
var body = ast.program.body;
_.each(file.declarations, function (declar) {
body.unshift(b.variableDeclaration("var", [
b.variableDeclarator(declar.uid, declar.node)
]));
});
};

View File

@@ -0,0 +1,11 @@
var transform = require("../transform");
exports.ast = {
exit: function (ast, file) {
if (!transform.transformers.modules.canRun(file)) return;
if (file.moduleFormatter.transform) {
file.moduleFormatter.transform(ast);
}
}
};

View File

@@ -1,6 +1,5 @@
var util = require("../util");
var b = require("recast").types.builders;
var _ = require("lodash");
var b = require("acorn-ast-types").builders;
var single = function (node) {
var block = node.blocks[0];
@@ -68,12 +67,6 @@ var multiple = function (node, file) {
};
exports.ComprehensionExpression = function (node, parent, file) {
_.each(node.blocks, function (block) {
if (!block.of) {
throw util.errorWithNode(block, "for-in array comprehension is not supported");
}
});
if (node.blocks.length === 1) {
return single(node);
} else {

View File

@@ -1,6 +1,6 @@
var traverse = require("../traverse");
var util = require("../util");
var b = require("recast").types.builders;
var b = require("acorn-ast-types").builders;
var _ = require("lodash");
exports.ClassDeclaration = function (node, parent, file) {
@@ -50,17 +50,7 @@ var buildClass = function (node, file) {
var returnStatement = body.pop();
if (superName) {
// inherit prototype
body.push(util.template("class-inherits-prototype", {
SUPER_NAME: superName,
CLASS_NAME: className
}, true));
// inherit static properties
body.push(util.template("class-inherits-properties", {
SUPER_NAME: superName,
CLASS_NAME: className
}, true));
body.push(b.expressionStatement(b.callExpression(file.addDeclaration("extends"), [className, superName])));
container.arguments.push(superClassArgument);
container.callee.params.push(superClassCallee);

View File

@@ -1,5 +1,5 @@
var util = require("../util");
var b = require("recast").types.builders;
var b = require("acorn-ast-types").builders;
var _ = require("lodash");
exports.ObjectExpression = function (node, parent, file) {

View File

@@ -1,6 +1,6 @@
var traverse = require("../traverse");
var util = require("../util");
var b = require("recast").types.builders;
var b = require("acorn-ast-types").builders;
var _ = require("lodash");
var buildVariableAssign = function (kind, id, init) {
@@ -42,6 +42,8 @@ var pushArrayPattern = function (kind, nodes, pattern, parentId) {
if (elem.type === "Identifier") {
nodes.push(buildVariableAssign(kind, elem, newPatternId));
} else if (elem.type === "MemberExpression") {
nodes.push(buildVariableAssign(false, elem, newPatternId));
} else {
push(kind, nodes, elem, newPatternId);
}

View File

@@ -1,5 +1,5 @@
var util = require("../util");
var b = require("recast").types.builders;
var b = require("acorn-ast-types").builders;
exports.ForOfStatement = function (node, parent, file) {
var left = node.left;

View File

@@ -2,7 +2,7 @@
// https://github.com/RReverser/jsx-transpiler
var esutils = require("esutils");
var b = require("recast").types.builders;
var b = require("acorn-ast-types").builders;
var _ = require("lodash");
var JSX_ANNOTATION_REGEX = /^\*\s*@jsx\s+([^\s]+)/;
@@ -85,13 +85,11 @@ exports.XJSElement = {
exit: function (node) {
var callExpr = node.openingElement;
var children = node.children;
var args = callExpr.arguments;
switch (children.length) {
case 0: break;
case 1: args.push(children[0]); break;
default: args.push(b.arrayExpression(children));
}
_.each(children, function (child) {
delete child.raw;
callExpr.arguments.push(child);
});
callExpr.loc = node.loc;
return callExpr;

View File

@@ -1,6 +1,6 @@
var traverse = require("../traverse");
var util = require("../util");
var b = require("recast").types.builders;
var b = require("acorn-ast-types").builders;
var _ = require("lodash");
exports.VariableDeclaration = function (node, parent, file) {

View File

@@ -1,110 +1,28 @@
var util = require("../util");
var b = require("recast").types.builders;
var _ = require("lodash");
var _ = require("lodash");
exports.ImportDeclaration = function (node) {
exports.ImportDeclaration = function (node, parent, file) {
var nodes = [];
if (node.specifiers.length) {
_.each(node.specifiers, function (specifier) {
var variableName = getSpecifierName(specifier);
var key = specifier.id.name;
// import foo from "foo";
if (specifier.type === "ImportDefaultSpecifier") {
key = b.identifier("default");
}
var templateName = "require-assign";
// import * as bar from "foo";
if (specifier.type !== "ImportNamespaceSpecifier") templateName += "-key";
nodes.push(util.template(templateName, {
VARIABLE_NAME: variableName.name,
MODULE_NAME: node.source.raw,
KEY: key
}));
file.moduleFormatter.importSpecifier(specifier, node, nodes);
});
} else {
// import "foo";
nodes.push(util.template("require", {
MODULE_NAME: node.source.raw
}, true));
file.moduleFormatter.import(node, nodes);
}
return nodes;
};
var pushExportSpecifiers = function (node, nodes) {
_.each(node.specifiers, function (specifier) {
var variableName = getSpecifierName(specifier);
if (node.source) {
if (specifier.type === "ExportBatchSpecifier") {
// export * from "foo";
nodes.push(util.template("exports-wildcard", {
MODULE_NAME: node.source.raw
}, true));
} else {
// export { foo } from "test";
nodes.push(util.template("exports-require-assign-key", {
VARIABLE_NAME: variableName.name,
MODULE_NAME: node.source.raw,
KEY: specifier.id
}, true));
}
} else {
// export { foo };
nodes.push(util.template("exports-assign", {
VALUE: specifier.id,
KEY: variableName
}, true));
}
});
};
var getSpecifierName = function (specifier) {
return specifier.name || specifier.id;
};
var pushExportDeclaration = function (node, parent, nodes) {
var declar = node.declaration;
if (node.default) {
util.ensureExpressionType(declar);
nodes.push(util.template("exports-default", {
VALUE: declar
}, true));
} else {
var id = declar.id;
if (declar.type === "VariableDeclaration") {
id = declar.declarations[0].id;
}
var assign = util.template("exports-assign", {
VALUE: id,
KEY: id
}, true);
nodes.push(declar);
if (declar.type === "FunctionDeclaration") {
assign._blockHoist = true;
}
nodes.push(assign);
}
};
exports.ExportDeclaration = function (node, parent) {
exports.ExportDeclaration = function (node, parent, file) {
var nodes = [];
if (node.declaration) {
pushExportDeclaration(node, parent, nodes);
file.moduleFormatter.export(node, nodes);
} else {
pushExportSpecifiers(node, nodes);
_.each(node.specifiers, function (specifier) {
file.moduleFormatter.exportSpecifier(specifier, node, nodes);
});
}
return nodes;

View File

@@ -0,0 +1,63 @@
var b = require("acorn-ast-types").builders;
var _ = require("lodash");
var addDisplayName = function (id, call) {
if (!call || call.type !== "CallExpression") return;
var callee = call.callee;
if (callee.type !== "MemberExpression") return;
// not React
var obj = callee.object;
if (obj.type !== "Identifier" || obj.name !== "React") return;
// not createClass
var prop = callee.property;
if (prop.type !== "Identifier" || prop.name !== "createClass") return;
// no arguments
var args = call.arguments;
if (args.length !== 1) return;
// not an object
var first = args[0];
if (first.type !== "ObjectExpression") return;
var props = first.properties;
var safe = true;
_.each(props, function (prop) {
if (prop.key.name === "displayName") {
return safe = false;
}
});
if (safe) {
props.unshift(b.property("init", b.identifier("displayName"), b.literal(id)));
}
};
exports.AssignmentExpression =
exports.Property =
exports.VariableDeclarator = function (node) {
var left, right;
if (node.type === "AssignmentExpression") {
left = node.left;
right = node.right;
} else if (node.type === "Property") {
left = node.key;
right = node.value;
} else if (node.type === "VariableDeclarator") {
left = node.id;
right = node.init;
}
if (left && left.type === "MemberExpression") {
left = left.property;
}
if (left && left.type === "Identifier") {
addDisplayName(left.name, right);
}
};

View File

@@ -1,5 +1,5 @@
var util = require("../util");
var b = require("recast").types.builders;
var b = require("acorn-ast-types").builders;
exports.Function = function (node, parent, file) {
if (!node.rest) return;

View File

@@ -1,5 +1,5 @@
var util = require("../util");
var b = require("recast").types.builders;
var b = require("acorn-ast-types").builders;
var _ = require("lodash");
var getSpreadLiteral = function (spread, file) {
@@ -14,49 +14,82 @@ var getSpreadLiteral = function (spread, file) {
};
var hasSpread = function (nodes) {
return nodes.length && _.last(nodes).type === "SpreadElement";
var has = false;
_.each(nodes, function (node) {
if (node.type === "SpreadElement") {
has = true;
return false;
}
});
return has;
};
var build = function (props, file) {
var nodes = [];
var _props = [];
var push = function () {
if (!_props.length) return;
nodes.push(b.arrayExpression(_props));
_props = [];
};
_.each(props, function (prop) {
if (prop.type === "SpreadElement") {
push();
nodes.push(getSpreadLiteral(prop, file));
} else {
_props.push(prop);
}
});
push();
return nodes;
};
exports.ArrayExpression = function (node, parent, file) {
var elements = node.elements;
if (!hasSpread(elements)) return;
var spread = elements.pop();
var nodes = build(elements, file);
var first = nodes.shift();
var concat = util.template("array-concat", {
ARGUMENT: getSpreadLiteral(spread, file)
});
if (!nodes.length) return first;
concat.callee.object.elements = elements;
return concat;
return b.callExpression(b.memberExpression(first, b.identifier("concat"), false), nodes);
};
exports.CallExpression = function (node, parent, file) {
var args = node.arguments;
if (!hasSpread(args)) return;
var spread = args.pop();
var spreadLiteral = getSpreadLiteral(spread, file);
var contextLiteral = b.literal(null);
node.arguments = [];
if (args.length) {
var concat = util.template("array-concat");
concat.arguments = [spreadLiteral];
concat.callee.object.elements = args;
node.arguments.push(concat);
var nodes = build(args, file);
var first = nodes.shift();
if (nodes.length) {
node.arguments.push(b.callExpression(b.memberExpression(first, b.identifier("concat"), false), nodes));
} else {
node.arguments.push(spreadLiteral);
node.arguments.push(first);
}
var callee = node.callee;
if (callee.type === "MemberExpression") {
contextLiteral = callee.object;
callee.property = b.memberExpression(callee.property, b.identifier("apply"), false);
if (callee.computed) {
callee.object = b.memberExpression(callee.object, callee.property, true);
callee.property = b.identifier("apply");
callee.computed = false;
} else {
callee.property = b.memberExpression(callee.property, b.identifier("apply"), false);
}
} else {
node.callee = b.memberExpression(node.callee, b.identifier("apply"), false);
}

View File

@@ -1,4 +1,4 @@
var b = require("recast").types.builders;
var b = require("acorn-ast-types").builders;
var _ = require("lodash");
var buildBinaryExpression = function (left, right) {

View File

@@ -1,5 +1,5 @@
var rewritePattern = require("regexpu/rewrite-pattern");
var b = require("recast").types.builders;
var b = require("acorn-ast-types").builders;
var _ = require("lodash");
exports.Literal = function (node) {

View File

@@ -0,0 +1,15 @@
var b = require("acorn-ast-types").builders;
module.exports = function (ast, file) {
var body = ast.program.body;
var first = body[0];
var noStrict = !first || first.type !== "ExpressionStatement" || first.expression.type !== "Literal" || first.expression.value !== "use strict";
if (noStrict) {
if (file.opts._noStrict) return;
body.unshift(b.expressionStatement(b.literal("use strict")));
} else {
if (file.opts._noStrict) body.shift();
}
};

View File

@@ -1,13 +1,16 @@
var traverse = require("./traverse");
var astTypes = require("recast").types;
var recast = require("recast");
var astTypes = require("acorn-ast-types");
var recast = require("acorn-recast");
var path = require("path");
var util = require("util");
var fs = require("fs");
var _ = require("lodash");
var n = astTypes.namedTypes;
var b = astTypes.builders;
exports.inherits = util.inherits;
exports.ensureBlock = function (node) {
var block = node.body;
if (block.type === "BlockStatement") return;
@@ -20,10 +23,22 @@ exports.ensureBlock = function (node) {
node.body = b.blockStatement(block);
};
exports.resolve = function (loc) {
try {
return require.resolve(loc);
} catch (err) {
return null;
}
};
exports.list = function (val) {
return val ? val.split(",") : [];
};
exports.getSpecifierName = function (specifier) {
return specifier.name || specifier.id;
};
exports.ensureExpressionType = function (node) {
node.type = {
FunctionDeclaration: "FunctionExpression",
@@ -107,7 +122,7 @@ exports.errorWithNode = function (node, msg) {
exports.canCompile = function (filename) {
var ext = path.extname(filename);
return _.contains([".js", ".es6", ".jsx"], ext);
return _.contains([".js", ".es6"], ext);
};
exports.sourceMapToComment = function (map) {
@@ -237,6 +252,7 @@ exports.repeat = function (width, cha) {
exports.parse = function (opts, code, callback) {
try {
var recastOpts = {};
if (opts.sourceMap) {
recastOpts.sourceFileName = opts.sourceFileName;
recastOpts.sourceRoot = opts.sourceRoot;
@@ -252,14 +268,15 @@ exports.parse = function (opts, code, callback) {
} catch (err) {
if (!err._6to5) {
err._6to5 = true;
err.message = opts.filename + ": " + err.message;
var message = opts.filename + ": " + err.message;
if (err.lineNumber) {
var frame = exports.codeFrame(code, err.lineNumber, err.column);
var err2 = new SyntaxError(err.message + frame);
err2._6to5 = true;
throw err2;
if (err.loc) {
var frame = exports.codeFrame(code, err.loc.line, err.loc.column);
message += frame;
}
err.stack = err.stack.replace(err.message, message);
err.message = message;
}
throw err;

View File

@@ -1,7 +1,7 @@
{
"name": "6to5",
"description": "Turn ES6 code into readable vanilla ES5 with source maps",
"version": "1.9.7",
"version": "1.10.4",
"author": "Sebastian McKenzie <sebmck@gmail.com>",
"homepage": "https://github.com/sebmck/6to5",
"repository": {
@@ -34,7 +34,7 @@
"test": "make test"
},
"dependencies": {
"commander": "2.3.0",
"commander": "2.4.0",
"fs-readdir-recursive": "0.0.2",
"lodash": "2.4.1",
"mkdirp": "0.5.0",
@@ -44,19 +44,17 @@
"recast": "0.8.0",
"source-map": "0.1.40",
"regenerator": "0.6.7",
"chokidar": "^0.9.0",
"source-map-support": "^0.2.7",
"esutils": "^1.1.4"
"chokidar": "0.10.0",
"source-map-support": "0.2.7",
"esutils": "1.1.4",
"acorn-jsx": "https://github.com/sebmck/acorn-jsx/archive/master.tar.gz",
"acorn-recast": "0.8.0-3",
"acorn-ast-types": "0.5.3-1"
},
"devDependencies": {
"es6-transpiler": "0.7.17",
"istanbul": "0.3.2",
"matcha": "0.5.0",
"mocha": "1.21.5",
"traceur": "0.0.67",
"esnext": "0.11.1",
"es6now": "0.8.11",
"jstransform": "6.3.2",
"uglify-js": "2.4.15",
"browserify": "6.1.0",
"proclaim": "2.0.0",

View File

@@ -1,7 +1,7 @@
var fs = require("fs");
var _ = require("lodash");
var fixturesDir = __dirname + "/fixtures/syntax";
var fixturesDir = __dirname + "/fixtures/transformation";
var humanise = function (val) {
return val.replace(/-/g, " ");
@@ -17,7 +17,7 @@ var readFile = function (filename) {
exports.run = function (suites, transform, assert) {
_.each(suites, function (testSuite) {
suite("syntax/" + testSuite.title, function () {
suite("transformation/" + testSuite.title, function () {
_.each(testSuite.tests, function (task) {
test(task.title, function () {
var run = function () {

View File

@@ -1 +1,2 @@
"use strict";
arr.map(x => x * MULTIPLIER);

View File

@@ -1,5 +1,7 @@
"use strict";
var Test = function() {
var Test = function Test() {};
return Test;
}();
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2Jhci9iYXIuanMiLCJzb3VyY2VzIjpbInNyYy9iYXIvYmFyLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJJQUFNLENBQUMsQ0FBQyxDQUFDO01BQUgsQ0FBQyxDQUFDLENBQUMsYUFBSCxDQUFDLENBQUMsQ0FBQztTQUFILENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiY2xhc3MgVGVzdCB7XG5cbn0iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3JjL2Jhci9iYXIuanMiLCJzb3VyY2VzIjpbInNyYy9iYXIvYmFyLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0lBQU0sQ0FBQyxDQUFDLENBQUM7TUFBSCxDQUFDLENBQUMsQ0FBQyxhQUFILENBQUMsQ0FBQyxDQUFDO1NBQUgsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJjbGFzcyBUZXN0IHtcblxufSJdfQ==

View File

@@ -1,4 +1,5 @@
"use strict";
arr.map(function(x) {
return x * MULTIPLIER;
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2Zvby5qcyIsInNvdXJjZXMiOlsic3JjL2Zvby5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQUM7U0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Q0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiYXJyLm1hcCh4ID0+IHggKiBNVUxUSVBMSUVSKTsiXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3JjL2Zvby5qcyIsInNvdXJjZXMiOlsic3JjL2Zvby5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFDO1NBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0NBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImFyci5tYXAoeCA9PiB4ICogTVVMVElQTElFUik7Il19

View File

@@ -1,3 +1,5 @@
"use strict";
var Test = function() {
var Test = function Test() {};
return Test;

View File

@@ -1 +1 @@
{"version":3,"file":"lib/bar/bar.js","sources":["src/bar/bar.js"],"names":[],"mappings":"IAAM,CAAC,CAAC,CAAC;MAAH,CAAC,CAAC,CAAC,aAAH,CAAC,CAAC,CAAC;SAAH,CAAC,CAAC,CAAC","sourcesContent":["class Test {\n\n}"]}
{"version":3,"file":"src/bar/bar.js","sources":["src/bar/bar.js"],"names":[],"mappings":";;IAAM,CAAC,CAAC,CAAC;MAAH,CAAC,CAAC,CAAC,aAAH,CAAC,CAAC,CAAC;SAAH,CAAC,CAAC,CAAC","sourcesContent":["class Test {\n\n}"]}

View File

@@ -1,3 +1,4 @@
"use strict";
arr.map(function(x) {
return x * MULTIPLIER;
});

View File

@@ -1 +1 @@
{"version":3,"file":"lib/foo.js","sources":["src/foo.js"],"names":[],"mappings":"AAAA,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAC;SAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAAC,CAAC","sourcesContent":["arr.map(x => x * MULTIPLIER);"]}
{"version":3,"file":"src/foo.js","sources":["src/foo.js"],"names":[],"mappings":";AAAA,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAC;SAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAAC,CAAC","sourcesContent":["arr.map(x => x * MULTIPLIER);"]}

View File

@@ -1,3 +1,5 @@
"use strict";
var Test = function() {
var Test = function Test() {};
return Test;

View File

@@ -1,3 +1,4 @@
"use strict";
arr.map(function(x) {
return x * MULTIPLIER;
});

View File

@@ -1,5 +1,6 @@
"use strict";
arr.map(function(x) {
return x * MULTIPLIER;
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNjcmlwdC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQUM7U0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Q0FBQyxDQUFDIiwiZmlsZSI6InNjcmlwdDIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJhcnIubWFwKHggPT4geCAqIE1VTFRJUExJRVIpOyJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNjcmlwdC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFDO1NBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0NBQUMsQ0FBQyIsImZpbGUiOiJzY3JpcHQyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiYXJyLm1hcCh4ID0+IHggKiBNVUxUSVBMSUVSKTsiXX0=

View File

@@ -1,3 +1,4 @@
"use strict";
arr.map(function(x) {
return x * MULTIPLIER;
});

View File

@@ -1,3 +1,5 @@
"use strict";
var Test = function() {
var Test = function Test() {};
return Test;
@@ -6,4 +8,4 @@ arr.map(function(x) {
return x * MULTIPLIER;
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNjcmlwdC5qcyIsInNjcmlwdDIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IklBQU0sQ0FBQyxDQUFDLENBQUM7TUFBSCxDQUFDLENBQUMsQ0FBQyxhQUFILENBQUMsQ0FBQyxDQUFDO1NBQUgsQ0FBQyxDQUFDLENBQUM7OztBQ0FULENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBQztTQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztDQUFDLENBQUMiLCJmaWxlIjoic2NyaXB0My5qcyIsInNvdXJjZXNDb250ZW50IjpbImNsYXNzIFRlc3Qge1xuXG59IiwiYXJyLm1hcCh4ID0+IHggKiBNVUxUSVBMSUVSKTsiXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNjcmlwdC5qcyIsInNjcmlwdDIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7SUFBTSxDQUFDLENBQUMsQ0FBQztNQUFILENBQUMsQ0FBQyxDQUFDLGFBQUgsQ0FBQyxDQUFDLENBQUM7U0FBSCxDQUFDLENBQUMsQ0FBQzs7O0FDQVQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFDO1NBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0NBQUMsQ0FBQyIsImZpbGUiOiJzY3JpcHQzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiY2xhc3MgVGVzdCB7XG5cbn0iLCJhcnIubWFwKHggPT4geCAqIE1VTFRJUExJRVIpOyJdfQ==

View File

@@ -1,3 +1,5 @@
"use strict";
var Test = function() {
var Test = function Test() {};
return Test;

View File

@@ -1 +1 @@
{"version":3,"sources":["script.js","script2.js"],"names":[],"mappings":"IAAM,CAAC,CAAC,CAAC;MAAH,CAAC,CAAC,CAAC,aAAH,CAAC,CAAC,CAAC;SAAH,CAAC,CAAC,CAAC;;;ACAT,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAC;SAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAAC,CAAC","file":"script3.js","sourcesContent":["class Test {\n\n}","arr.map(x => x * MULTIPLIER);"]}
{"version":3,"sources":["script.js","script2.js"],"names":[],"mappings":";;IAAM,CAAC,CAAC,CAAC;MAAH,CAAC,CAAC,CAAC,aAAH,CAAC,CAAC,CAAC;SAAH,CAAC,CAAC,CAAC;;;ACAT,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAC;SAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAAC,CAAC","file":"script3.js","sourcesContent":["class Test {\n\n}","arr.map(x => x * MULTIPLIER);"]}

View File

@@ -1,3 +1,5 @@
"use strict";
var Test = function() {
var Test = function Test() {};
return Test;

View File

@@ -1 +1 @@
Error: test.js: Line 2: Unexpected token ILLEGAL
SyntaxError: test.js: Unexpected character '@'

View File

@@ -1,3 +1,4 @@
"use strict";
arr.map(function(x) {
return x * x;
});

View File

@@ -1 +1 @@
{"version":3,"sources":["stdin"],"names":[],"mappings":"AAAA,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAC;SAAK,EAAE,EAAE;CAAC,CAAC","file":"test.js","sourcesContent":["arr.map(x => x * x);"]}
{"version":3,"sources":["stdin"],"names":[],"mappings":";AAAA,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAC;SAAK,EAAE,EAAE;CAAC,CAAC","file":"test.js","sourcesContent":["arr.map(x => x * x);"]}

View File

@@ -1,3 +1,4 @@
"use strict";
arr.map(function(x) {
return x * MULTIPLIER;
});

View File

@@ -1,5 +1,6 @@
"use strict";
arr.map(function(x) {
return x * x;
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0ZGluIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBQztTQUFLLEVBQUUsRUFBRTtDQUFDLENBQUMiLCJmaWxlIjoic3Rkb3V0Iiwic291cmNlc0NvbnRlbnQiOlsiYXJyLm1hcCh4ID0+IHggKiB4KTsiXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0ZGluIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQUM7U0FBSyxFQUFFLEVBQUU7Q0FBQyxDQUFDIiwiZmlsZSI6InN0ZG91dCIsInNvdXJjZXNDb250ZW50IjpbImFyci5tYXAoeCA9PiB4ICogeCk7Il19

View File

@@ -1,3 +1,4 @@
"use strict";
arr.map(function(x) {
return x * MULTIPLIER;
});

View File

@@ -1,11 +0,0 @@
var arr = (function () {
var _arr = [];
"abcdefgh".split("").forEach(function (x) {
"12345678".split("").forEach(function (y) {
_arr.push(x + y);
});
});
return _arr;
})();

View File

@@ -1 +0,0 @@
var arr = [for (i in [1, 2, 3]) i * i];

View File

@@ -1,3 +0,0 @@
{
"throws": "for-in array comprehension is not supported"
}

View File

@@ -1,8 +0,0 @@
var seattlers = customers.filter(function (c) {
return c.city == "Seattle";
}).map(function (c) {
return {
name: c.name,
age: c.age
};
});

View File

@@ -1,3 +0,0 @@
var arr = [1, 2, 3].map(function (i) {
return i * i;
});

View File

@@ -1,8 +0,0 @@
function add() {
var _this = this;
return [1, 2, 3].map(function (i) {
return i * _this.multiplier;
});
}
add.call({ multiplier: 5 });

View File

@@ -1,3 +0,0 @@
var t = function () {
return 5 + 5;
};

View File

@@ -1,2 +0,0 @@
var t = function () {
};

View File

@@ -1,3 +0,0 @@
arr.map(function (x) {
return x * x;
});

View File

@@ -1,3 +0,0 @@
arr.map(function (i) {
return i + 1;
});

View File

@@ -1,3 +0,0 @@
var t = function (i, x) {
return i * x;
};

View File

@@ -1,13 +0,0 @@
module.exports = {
init() {
return new Promise((resolve, reject) => {
MongoClient.connect(config.mongodb, (err, db) => {
if (err) {
return reject(err);
}
this.db = db;
resolve(this);
});
});
}
};

View File

@@ -1,3 +0,0 @@
var t = function (i) {
return i * 5;
};

View File

@@ -1,3 +0,0 @@
var t = function (i) {
return i * 5;
};

View File

@@ -1,5 +0,0 @@
nums.forEach(function (v) {
if (v % 5 === 0) {
fives.push(v);
}
});

View File

@@ -1,4 +0,0 @@
var Test = function () {
var Test = function Test() { };
return Test;
}();

View File

@@ -1,31 +0,0 @@
var BaseController = function (Chaplin) {
var BaseController = function BaseController() {
Chaplin.Controller.apply(this, arguments);
};
BaseController.prototype = Object.create(Chaplin.Controller.prototype, {
constructor: {
value: BaseController,
enumerable: false,
writable: true,
configurable: true
}
});
BaseController.__proto__ = Chaplin.Controller;
return BaseController;
}(Chaplin);
var BaseController2 = function (Chaplin) {
var BaseController2 = function BaseController2() {
Chaplin.Controller.Another.apply(this, arguments);
};
BaseController2.prototype = Object.create(Chaplin.Controller.Another.prototype, {
constructor: {
value: BaseController2,
enumerable: false,
writable: true,
configurable: true
}
});
BaseController2.__proto__ = Chaplin.Controller.Another;
return BaseController2;
}(Chaplin);

View File

@@ -1,15 +0,0 @@
var Test = function (Foo) {
var Test = function Test() {
Foo.apply(this, arguments);
};
Test.prototype = Object.create(Foo.prototype, {
constructor: {
value: Test,
enumerable: false,
writable: true,
configurable: true
}
});
Test.__proto__ = Foo;
return Test;
}(Foo);

View File

@@ -1,5 +0,0 @@
wow;
/*
um yeah lol
*/
test.wow();

View File

@@ -1,3 +0,0 @@
wow;
// um yeah lol
test.wow();

View File

@@ -1,6 +0,0 @@
var obj = function (_obj) {
_obj[foobar] = function () {
return "foobar";
};
return _obj;
}({});

View File

@@ -1,4 +0,0 @@
var obj = function (_obj) {
_obj["x" + foo] = "heh";
return _obj;
}({});

View File

@@ -1,2 +0,0 @@
var x = coords.x;
var y = coords.y;

View File

@@ -1,3 +0,0 @@
{
"throws": "Line 2: Unexpected token ILLEGAL"
}

View File

@@ -1,3 +0,0 @@
/** @jsx CUSTOM_DOM */
CUSTOM_DOM.a(null);

View File

@@ -1 +0,0 @@
x(null, null);

View File

@@ -1,3 +0,0 @@
X({
"data-prop": x ? Y({ prop: 2 }) : Z(null, "\n")
});

View File

@@ -1,3 +0,0 @@
X(null, a);
X(null, [a, ' ', b]);
X({ prop: a, yes: true });

View File

@@ -1 +0,0 @@
React.DOM.a(null);

View File

@@ -1 +0,0 @@
Test.X(null);

View File

@@ -1,2 +0,0 @@
X(null);
X({ prop: '1' });

View File

@@ -1 +0,0 @@
X(null);

Some files were not shown because too many files have changed in this diff Show More