From 40c4e7c2eafebc9a73b9463db1a588a293aa6356 Mon Sep 17 00:00:00 2001 From: Guy Bedford Date: Mon, 16 May 2016 22:46:06 +0200 Subject: [PATCH] Modules systemjs system global name, use strict wrapping (#3482) * modules systemjs system global name, use strict wrapping * document systemGlobal option in readme --- .../README.md | 13 ++++++++++++- .../package.json | 3 +-- .../src/index.js | 6 +++--- .../fixtures/systemjs/exports-default/expected.js | 4 ++-- .../test/fixtures/systemjs/exports-from/expected.js | 4 ++-- .../fixtures/systemjs/exports-named/expected.js | 4 ++-- .../fixtures/systemjs/exports-variable/expected.js | 4 ++-- .../systemjs/get-module-name-option/expected.js | 4 ++-- .../systemjs/hoist-function-exports/expected.js | 4 ++-- .../fixtures/systemjs/imports-default/expected.js | 4 ++-- .../test/fixtures/systemjs/imports-glob/expected.js | 4 ++-- .../fixtures/systemjs/imports-mixing/expected.js | 4 ++-- .../fixtures/systemjs/imports-named/expected.js | 4 ++-- .../test/fixtures/systemjs/imports/expected.js | 4 ++-- .../test/fixtures/systemjs/module-name/expected.js | 4 ++-- .../test/fixtures/systemjs/overview/expected.js | 4 ++-- .../test/fixtures/systemjs/remap/expected.js | 4 ++-- 17 files changed, 44 insertions(+), 34 deletions(-) diff --git a/packages/babel-plugin-transform-es2015-modules-systemjs/README.md b/packages/babel-plugin-transform-es2015-modules-systemjs/README.md index dfe554de32..553b315d42 100644 --- a/packages/babel-plugin-transform-es2015-modules-systemjs/README.md +++ b/packages/babel-plugin-transform-es2015-modules-systemjs/README.md @@ -12,10 +12,21 @@ $ npm install babel-plugin-transform-es2015-modules-systemjs **.babelrc** -```json +```javascript +// without options { "plugins": ["transform-es2015-modules-systemjs"] } + +// with options +{ + "plugins": [ + ["transform-es2015-modules-systemjs", { + // outputs SystemJS.register(...) + "systemGlobal": "SystemJS" + }] + ] +} ``` ### Via CLI diff --git a/packages/babel-plugin-transform-es2015-modules-systemjs/package.json b/packages/babel-plugin-transform-es2015-modules-systemjs/package.json index d24b47bd30..b233bb5fab 100644 --- a/packages/babel-plugin-transform-es2015-modules-systemjs/package.json +++ b/packages/babel-plugin-transform-es2015-modules-systemjs/package.json @@ -8,8 +8,7 @@ "dependencies": { "babel-template": "^6.8.0", "babel-helper-hoist-variables": "^6.8.0", - "babel-runtime": "^6.0.0", - "babel-plugin-transform-strict-mode": "^6.8.0" + "babel-runtime": "^6.0.0" }, "keywords": [ "babel-plugin" diff --git a/packages/babel-plugin-transform-es2015-modules-systemjs/src/index.js b/packages/babel-plugin-transform-es2015-modules-systemjs/src/index.js index 467a12391d..325ef08189 100644 --- a/packages/babel-plugin-transform-es2015-modules-systemjs/src/index.js +++ b/packages/babel-plugin-transform-es2015-modules-systemjs/src/index.js @@ -4,7 +4,8 @@ import hoistVariables from "babel-helper-hoist-variables"; import template from "babel-template"; let buildTemplate = template(` - System.register(MODULE_NAME, [SOURCES], function (EXPORT_IDENTIFIER, CONTEXT_IDENTIFIER) { + SYSTEM_REGISTER(MODULE_NAME, [SOURCES], function (EXPORT_IDENTIFIER, CONTEXT_IDENTIFIER) { + "use strict"; BEFORE_BODY; return { setters: [SETTERS], @@ -51,8 +52,6 @@ export default function ({ types: t }) { }; return { - inherits: require("babel-plugin-transform-strict-mode"), - visitor: { ReferencedIdentifier(path, state) { if (path.node.name == "__moduleName" && !path.scope.hasBinding("__moduleName")) { @@ -248,6 +247,7 @@ export default function ({ types: t }) { path.node.body = [ buildTemplate({ + SYSTEM_REGISTER: t.memberExpression(t.identifier(state.opts.systemGlobal || "System"), t.identifier("register")), BEFORE_BODY: beforeBody, MODULE_NAME: moduleName, SETTERS: setters, diff --git a/packages/babel-plugin-transform-es2015-modules-systemjs/test/fixtures/systemjs/exports-default/expected.js b/packages/babel-plugin-transform-es2015-modules-systemjs/test/fixtures/systemjs/exports-default/expected.js index f4863a15a9..36523e383a 100644 --- a/packages/babel-plugin-transform-es2015-modules-systemjs/test/fixtures/systemjs/exports-default/expected.js +++ b/packages/babel-plugin-transform-es2015-modules-systemjs/test/fixtures/systemjs/exports-default/expected.js @@ -1,6 +1,6 @@ -"use strict"; - System.register([], function (_export, _context) { + "use strict"; + _export("default", function () {}); _export("default", class {}); diff --git a/packages/babel-plugin-transform-es2015-modules-systemjs/test/fixtures/systemjs/exports-from/expected.js b/packages/babel-plugin-transform-es2015-modules-systemjs/test/fixtures/systemjs/exports-from/expected.js index f5f9929a13..17868b9c27 100644 --- a/packages/babel-plugin-transform-es2015-modules-systemjs/test/fixtures/systemjs/exports-from/expected.js +++ b/packages/babel-plugin-transform-es2015-modules-systemjs/test/fixtures/systemjs/exports-from/expected.js @@ -1,6 +1,6 @@ -"use strict"; - System.register(["foo"], function (_export, _context) { + "use strict"; + return { setters: [function (_foo) { var _exportObj = {}; diff --git a/packages/babel-plugin-transform-es2015-modules-systemjs/test/fixtures/systemjs/exports-named/expected.js b/packages/babel-plugin-transform-es2015-modules-systemjs/test/fixtures/systemjs/exports-named/expected.js index 5cbaf37b55..fa86ac77b8 100644 --- a/packages/babel-plugin-transform-es2015-modules-systemjs/test/fixtures/systemjs/exports-named/expected.js +++ b/packages/babel-plugin-transform-es2015-modules-systemjs/test/fixtures/systemjs/exports-named/expected.js @@ -1,6 +1,6 @@ -"use strict"; - System.register([], function (_export, _context) { + "use strict"; + return { setters: [], execute: function () { diff --git a/packages/babel-plugin-transform-es2015-modules-systemjs/test/fixtures/systemjs/exports-variable/expected.js b/packages/babel-plugin-transform-es2015-modules-systemjs/test/fixtures/systemjs/exports-variable/expected.js index 53c351f83d..0430cbfe39 100644 --- a/packages/babel-plugin-transform-es2015-modules-systemjs/test/fixtures/systemjs/exports-variable/expected.js +++ b/packages/babel-plugin-transform-es2015-modules-systemjs/test/fixtures/systemjs/exports-variable/expected.js @@ -1,6 +1,6 @@ -"use strict"; - System.register([], function (_export, _context) { + "use strict"; + return { setters: [], execute: function () { diff --git a/packages/babel-plugin-transform-es2015-modules-systemjs/test/fixtures/systemjs/get-module-name-option/expected.js b/packages/babel-plugin-transform-es2015-modules-systemjs/test/fixtures/systemjs/get-module-name-option/expected.js index 9c667425c1..d955e4d50a 100644 --- a/packages/babel-plugin-transform-es2015-modules-systemjs/test/fixtures/systemjs/get-module-name-option/expected.js +++ b/packages/babel-plugin-transform-es2015-modules-systemjs/test/fixtures/systemjs/get-module-name-option/expected.js @@ -1,6 +1,6 @@ -"use strict"; - System.register("my custom module name", [], function (_export, _context) { + "use strict"; + return { setters: [], execute: function () {} diff --git a/packages/babel-plugin-transform-es2015-modules-systemjs/test/fixtures/systemjs/hoist-function-exports/expected.js b/packages/babel-plugin-transform-es2015-modules-systemjs/test/fixtures/systemjs/hoist-function-exports/expected.js index 795fd910ee..6fbc45668f 100644 --- a/packages/babel-plugin-transform-es2015-modules-systemjs/test/fixtures/systemjs/hoist-function-exports/expected.js +++ b/packages/babel-plugin-transform-es2015-modules-systemjs/test/fixtures/systemjs/hoist-function-exports/expected.js @@ -1,6 +1,6 @@ -"use strict"; - System.register(["./evens"], function (_export, _context) { + "use strict"; + var isEven, p, a, i, j, isOdd; return { setters: [function (_evens) { diff --git a/packages/babel-plugin-transform-es2015-modules-systemjs/test/fixtures/systemjs/imports-default/expected.js b/packages/babel-plugin-transform-es2015-modules-systemjs/test/fixtures/systemjs/imports-default/expected.js index ae6c560d0a..7ee04b8f33 100644 --- a/packages/babel-plugin-transform-es2015-modules-systemjs/test/fixtures/systemjs/imports-default/expected.js +++ b/packages/babel-plugin-transform-es2015-modules-systemjs/test/fixtures/systemjs/imports-default/expected.js @@ -1,6 +1,6 @@ -"use strict"; - System.register(["foo"], function (_export, _context) { + "use strict"; + var foo, foo2; return { setters: [function (_foo) { diff --git a/packages/babel-plugin-transform-es2015-modules-systemjs/test/fixtures/systemjs/imports-glob/expected.js b/packages/babel-plugin-transform-es2015-modules-systemjs/test/fixtures/systemjs/imports-glob/expected.js index 884f4282c2..3a606f2e0b 100644 --- a/packages/babel-plugin-transform-es2015-modules-systemjs/test/fixtures/systemjs/imports-glob/expected.js +++ b/packages/babel-plugin-transform-es2015-modules-systemjs/test/fixtures/systemjs/imports-glob/expected.js @@ -1,6 +1,6 @@ -"use strict"; - System.register(["foo"], function (_export, _context) { + "use strict"; + var foo; return { setters: [function (_foo) { diff --git a/packages/babel-plugin-transform-es2015-modules-systemjs/test/fixtures/systemjs/imports-mixing/expected.js b/packages/babel-plugin-transform-es2015-modules-systemjs/test/fixtures/systemjs/imports-mixing/expected.js index 5dd20ec349..3a51efdbd4 100644 --- a/packages/babel-plugin-transform-es2015-modules-systemjs/test/fixtures/systemjs/imports-mixing/expected.js +++ b/packages/babel-plugin-transform-es2015-modules-systemjs/test/fixtures/systemjs/imports-mixing/expected.js @@ -1,6 +1,6 @@ -"use strict"; - System.register(["foo"], function (_export, _context) { + "use strict"; + var foo, xyz; return { setters: [function (_foo) { diff --git a/packages/babel-plugin-transform-es2015-modules-systemjs/test/fixtures/systemjs/imports-named/expected.js b/packages/babel-plugin-transform-es2015-modules-systemjs/test/fixtures/systemjs/imports-named/expected.js index d8200b9d22..6c73660029 100644 --- a/packages/babel-plugin-transform-es2015-modules-systemjs/test/fixtures/systemjs/imports-named/expected.js +++ b/packages/babel-plugin-transform-es2015-modules-systemjs/test/fixtures/systemjs/imports-named/expected.js @@ -1,6 +1,6 @@ -"use strict"; - System.register(["foo"], function (_export, _context) { + "use strict"; + var bar, bar2, baz, baz2, baz3, xyz; return { setters: [function (_foo) { diff --git a/packages/babel-plugin-transform-es2015-modules-systemjs/test/fixtures/systemjs/imports/expected.js b/packages/babel-plugin-transform-es2015-modules-systemjs/test/fixtures/systemjs/imports/expected.js index 0d1d67cafa..9e5e8a2240 100644 --- a/packages/babel-plugin-transform-es2015-modules-systemjs/test/fixtures/systemjs/imports/expected.js +++ b/packages/babel-plugin-transform-es2015-modules-systemjs/test/fixtures/systemjs/imports/expected.js @@ -1,6 +1,6 @@ -"use strict"; - System.register(["foo", "foo-bar", "./directory/foo-bar"], function (_export, _context) { + "use strict"; + return { setters: [function (_foo) {}, function (_fooBar) {}, function (_directoryFooBar) {}], execute: function () {} diff --git a/packages/babel-plugin-transform-es2015-modules-systemjs/test/fixtures/systemjs/module-name/expected.js b/packages/babel-plugin-transform-es2015-modules-systemjs/test/fixtures/systemjs/module-name/expected.js index d0074c7ccc..251b11b928 100644 --- a/packages/babel-plugin-transform-es2015-modules-systemjs/test/fixtures/systemjs/module-name/expected.js +++ b/packages/babel-plugin-transform-es2015-modules-systemjs/test/fixtures/systemjs/module-name/expected.js @@ -1,6 +1,6 @@ -"use strict"; - System.register([], function (_export, _context) { + "use strict"; + var name; return { setters: [], diff --git a/packages/babel-plugin-transform-es2015-modules-systemjs/test/fixtures/systemjs/overview/expected.js b/packages/babel-plugin-transform-es2015-modules-systemjs/test/fixtures/systemjs/overview/expected.js index 46c4de062e..35b1c8c0ac 100644 --- a/packages/babel-plugin-transform-es2015-modules-systemjs/test/fixtures/systemjs/overview/expected.js +++ b/packages/babel-plugin-transform-es2015-modules-systemjs/test/fixtures/systemjs/overview/expected.js @@ -1,6 +1,6 @@ -"use strict"; - System.register(["foo", "foo-bar", "./directory/foo-bar"], function (_export, _context) { + "use strict"; + var foo, foo2, bar, bar2, test2; return { setters: [function (_foo) { diff --git a/packages/babel-plugin-transform-es2015-modules-systemjs/test/fixtures/systemjs/remap/expected.js b/packages/babel-plugin-transform-es2015-modules-systemjs/test/fixtures/systemjs/remap/expected.js index 44c5027480..1522b5bfef 100644 --- a/packages/babel-plugin-transform-es2015-modules-systemjs/test/fixtures/systemjs/remap/expected.js +++ b/packages/babel-plugin-transform-es2015-modules-systemjs/test/fixtures/systemjs/remap/expected.js @@ -1,6 +1,6 @@ -"use strict"; - System.register([], function (_export, _context) { + "use strict"; + var test, a, b, d; return { setters: [],