Upgrade to Babel 6

This commit is contained in:
Robin Ward 2017-07-05 14:14:30 -04:00
parent 2f480e21a0
commit 754c1e5438
35 changed files with 62713 additions and 67299 deletions

View File

@ -44,7 +44,7 @@ export default Ember.Component.extend({
self.set("totalOthersWithSameIP", result.total);
});
const AdminUser = require('admin/models/admin-user').default;
const AdminUser = requirejs('admin/models/admin-user').default;
AdminUser.findAll("active", data).then(function (users) {
self.setProperties({
other_accounts: users,

View File

@ -18,7 +18,7 @@ export default Ember.Component.extend({
actions: {
submit: function() {
const Permalink = require('admin/models/permalink').default;
const Permalink = requirejs('admin/models/permalink').default;
if (!this.get('formSubmitted')) {
const self = this;

View File

@ -37,7 +37,7 @@ ApiKey.reopenClass({
@returns {ApiKey} the ApiKey instance
**/
create: function() {
const AdminUser = require('admin/models/admin-user').default;
const AdminUser = requirejs('admin/models/admin-user').default;
var result = this._super.apply(this, arguments);
if (result.user) {
result.user = AdminUser.create(result.user);

View File

@ -10,7 +10,7 @@ export default Discourse.Route.extend({
queryParams: { mode: {}, "start_date": {}, "end_date": {}, "category_id": {}, "group_id": {} },
model: function(params) {
const Report = require('admin/models/report').default;
const Report = requirejs('admin/models/report').default;
return Report.find(params.type, params['start_date'], params['end_date'], params['category_id'], params['group_id']);
},

View File

@ -1,5 +1,5 @@
(function() {
var Discourse = require('discourse').default;
var Discourse = requirejs('discourse').default;
Discourse.dialect_deprecated = true;

View File

@ -38,7 +38,7 @@ export function buildResolver(baseName) {
resolveRouter(parsedName) {
const routerPath = `${baseName}/router`;
if (requirejs.entries[routerPath]) {
const module = require(routerPath, null, null, true);
const module = requirejs(routerPath, null, null, true);
return module.default;
}
return this._super(parsedName);
@ -79,7 +79,7 @@ export function buildResolver(baseName) {
var module;
if (moduleName) {
module = require(moduleName, null, null, true /* force sync */);
module = requirejs(moduleName, null, null, true /* force sync */);
if (module && module['default']) { module = module['default']; }
}
return module;

View File

@ -1,4 +1,4 @@
var define, require, requirejs;
var define, requirejs;
(function() {
@ -54,7 +54,7 @@ var define, require, requirejs;
var name = this.name;
return this._require || (this._require = function(dep) {
return require(resolve(dep, name));
return requirejs(resolve(dep, name));
});
};
@ -127,7 +127,7 @@ var define, require, requirejs;
if (!mod) {
throw new Error('Could not find module `' + name + '` imported from `' + origin + '`');
}
return require(name);
return requirejs(name);
}
function missingModule(name) {

View File

@ -102,7 +102,7 @@ const Discourse = Ember.Application.extend({
Object.keys(requirejs._eak_seen).forEach(function(key) {
if (/\/pre\-initializers\//.test(key)) {
const module = require(key, null, null, true);
const module = requirejs(key, null, null, true);
if (!module) { throw new Error(key + ' must export an initializer.'); }
const init = module.default;
@ -117,7 +117,7 @@ const Discourse = Ember.Application.extend({
Object.keys(requirejs._eak_seen).forEach(function(key) {
if (/\/initializers\//.test(key)) {
const module = require(key, null, null, true);
const module = requirejs(key, null, null, true);
if (!module) { throw new Error(key + ' must export an initializer.'); }
const init = module.default;
@ -131,7 +131,7 @@ const Discourse = Ember.Application.extend({
});
// Plugins that are registered via `<script>` tags.
const withPluginApi = require('discourse/lib/plugin-api').withPluginApi;
const withPluginApi = requirejs('discourse/lib/plugin-api').withPluginApi;
let initCount = 0;
_pluginCallbacks.forEach(function(cb) {
Discourse.instanceInitializer({

View File

@ -525,12 +525,12 @@ export default Em.Component.extend({
},
groupFinder(term) {
const Group = require('discourse/models/group').default;
const Group = requirejs('discourse/models/group').default;
return Group.findAll({search: term, ignore_automatic: false});
},
badgeFinder(term) {
const Badge = require('discourse/models/badge').default;
const Badge = requirejs('discourse/models/badge').default;
return Badge.findAll({search: term});
}
});

View File

@ -60,7 +60,7 @@ const controllerOpts = {
this.topicTrackingState.resetTracking();
this.store.findFiltered('topicList', {filter}).then(list => {
const TopicList = require('discourse/models/topic-list').default;
const TopicList = requirejs('discourse/models/topic-list').default;
TopicList.hideUniformCategory(list, this.get('category'));
this.setProperties({ model: list });

View File

@ -158,7 +158,7 @@ export default Ember.Controller.extend(ModalFunctionality, {
fetchUserDetails() {
if (Discourse.User.currentProp('staff') && this.get('model.username')) {
const AdminUser = require('admin/models/admin-user').default;
const AdminUser = requirejs('admin/models/admin-user').default;
AdminUser.find(this.get('model.user_id')).then(user => this.set('userDetails', user));
}
}

View File

@ -144,7 +144,7 @@ export default Ember.Controller.extend(ModalFunctionality, {
}.property('isPrivateTopic'),
groupFinder(term) {
const Group = require('discourse/models/group').default;
const Group = requirejs('discourse/models/group').default;
return Group.findAll({search: term, ignore_automatic: true});
},
@ -191,7 +191,7 @@ export default Ember.Controller.extend(ModalFunctionality, {
actions: {
createInvite() {
const Invite = require('discourse/models/invite').default;
const Invite = requirejs('discourse/models/invite').default;
const self = this;
if (this.get('disabled')) { return; }
@ -237,7 +237,7 @@ export default Ember.Controller.extend(ModalFunctionality, {
},
generateInvitelink() {
const Invite = require('discourse/models/invite').default;
const Invite = requirejs('discourse/models/invite').default;
const self = this;
if (this.get('disabled')) { return; }

View File

@ -87,7 +87,7 @@ export default Ember.Controller.extend(CanCheckEmails, {
adminDelete() {
// I really want this deferred, don't want to bring in all this code till used
const AdminUser = require('admin/models/admin-user').default;
const AdminUser = requirejs('admin/models/admin-user').default;
AdminUser.find(this.get('model.id')).then(user => user.destroy({deletePosts: true}));
},

View File

@ -20,7 +20,7 @@ function renderRaw(ctx, container, template, templateName, params) {
const module = `discourse/raw-views/${templateName}`;
if (requirejs.entries[module]) {
const viewClass = require(module, null, null, true);
const viewClass = requirejs(module, null, null, true);
if (viewClass && viewClass.default) {
params.view = viewClass.default.create(params, _injections);
}

View File

@ -3,10 +3,10 @@ import { registerHelpers } from 'discourse-common/lib/helpers';
export function autoLoadModules(container, registry) {
Object.keys(requirejs.entries).forEach(entry => {
if ((/\/helpers\//).test(entry)) {
require(entry, null, null, true);
requirejs(entry, null, null, true);
}
if ((/\/widgets\//).test(entry)) {
require(entry, null, null, true);
requirejs(entry, null, null, true);
}
});
registerHelpers(registry);

View File

@ -132,15 +132,9 @@ function assign(ta, {setOverflowX = true, setOverflowY = true} = {}) {
set.delete(ta);
Object.keys(style).forEach(key => {
ta.style[key] = style[key];
ta.style[key] = style[key];
});
}.bind(ta, {
height: ta.style.height,
resize: ta.style.resize,
overflowY: ta.style.overflowY,
overflowX: ta.style.overflowX,
wordWrap: ta.style.wordWrap,
});
}
ta.addEventListener('autosize:destroy', destroy, false);

View File

@ -50,7 +50,7 @@ function findClass(outletName, uniqueName) {
if (!_classPaths) {
_classPaths = {};
findOutlets(require._eak_seen, (outlet, res, un) => {
_classPaths[`${outlet}/${un}`] = require(res).default;
_classPaths[`${outlet}/${un}`] = requirejs(res).default;
});
}

View File

@ -9,9 +9,9 @@ import { userPath } from 'discourse/lib/url';
export function translateResults(results, opts) {
const User = require('discourse/models/user').default;
const Post = require('discourse/models/post').default;
const Topic = require('discourse/models/topic').default;
const User = requirejs('discourse/models/user').default;
const Post = requirejs('discourse/models/post').default;
const Topic = requirejs('discourse/models/topic').default;
if (!opts) opts = {};

View File

@ -106,7 +106,7 @@ export function mapRoutes() {
// can define admin routes.
Object.keys(requirejs._eak_seen).forEach(function(key) {
if (/route-map$/.test(key)) {
var module = require(key, null, null, true);
var module = requirejs(key, null, null, true);
if (!module || !module.default) { throw new Error(key + ' must export a route map.'); }
const mapObj = module.default;

View File

@ -104,7 +104,7 @@ const Post = RestModel.extend({
createProperties() {
// composer only used once, defer the dependency
const Composer = require('discourse/models/composer').default;
const Composer = requirejs('discourse/models/composer').default;
const data = this.getProperties(Composer.serializedFieldsForCreate());
data.reply_to_post_number = this.get('reply_to_post_number');
data.image_sizes = this.get('imageSizes');

View File

@ -58,7 +58,7 @@ const ApplicationRoute = Discourse.Route.extend(OpenComposer, {
reply = post ? window.location.protocol + "//" + window.location.host + post.get("url") : null;
// used only once, one less dependency
const Composer = require('discourse/models/composer').default;
const Composer = requirejs('discourse/models/composer').default;
return this.controllerFor('composer').open({
action: Composer.PRIVATE_MESSAGE,
usernames: recipient,

View File

@ -54,7 +54,6 @@ export var not = macroAlias(Ember.computed.not);
export var notEmpty = macroAlias(Ember.computed.notEmpty);
export var oneWay = macroAlias(Ember.computed.oneWay);
export var or = macroAlias(Ember.computed.or);
export var readOnly = macroAlias(Ember.computed.readOnly);
export var reads = macroAlias(Ember.computed.reads);
export var setDiff = macroAlias(Ember.computed.setDiff);
export var sort = macroAlias(Ember.computed.sort);

View File

@ -119,7 +119,7 @@ export function setup(opts, siteSettings, state) {
Object.keys(require._eak_seen).forEach(entry => {
if (check.test(entry)) {
const module = require(entry);
const module = requirejs(entry);
if (module && module.setup) {
const featureName = entry.split('/').reverse()[0];

View File

@ -358,7 +358,7 @@ class DialectHelper {
Object.keys(require._eak_seen).forEach(entry => {
if (entry.indexOf('discourse-markdown') !== -1) {
const module = require(entry);
const module = requirejs(entry);
if (module && module.setup) {
const featureName = entry.split('/').reverse()[0];
helper.whiteList = info => whiteListFeature(featureName, info);
@ -397,7 +397,7 @@ export function cook(raw, opts) {
if (currentOpts.enableExperimentalMarkdownIt) {
result = opts.sanitizer(
require('pretty-text/engines/markdown-it/instance').default(opts).render(raw),
requirejs('pretty-text/engines/markdown-it/instance').default(opts).render(raw),
whiteLister
);
} else {

View File

@ -6,7 +6,7 @@ export default {
initialize(application) {
Object.keys(requirejs.entries).forEach(entry => {
if ((/\/helpers\//).test(entry)) {
require(entry, null, null, true);
requirejs(entry, null, null, true);
}
});
registerHelpers(application);

View File

@ -35,7 +35,7 @@ if (window.Logster) {
}
Ember.Test.adapter = window.QUnitAdapter.create();
var createPretendServer = require('wizard/test/wizard-pretender', null, null, false).default;
var createPretendServer = requirejs('wizard/test/wizard-pretender', null, null, false).default;
var server;
QUnit.testStart(function() {
@ -47,12 +47,12 @@ QUnit.testDone(function() {
});
var _testApp = require('wizard/test/helpers/start-app').default();
var _buildResolver = require('discourse-common/resolver').buildResolver;
var _testApp = requirejs('wizard/test/helpers/start-app').default();
var _buildResolver = requirejs('discourse-common/resolver').buildResolver;
window.setResolver(_buildResolver('wizard').create({ namespace: _testApp }));
Object.keys(requirejs.entries).forEach(function(entry) {
if ((/\-test/).test(entry)) {
require(entry, null, null, true);
requirejs(entry, null, null, true);
}
});

View File

@ -7,7 +7,7 @@ export default Ember.Application.extend({
start() {
Object.keys(requirejs._eak_seen).forEach(key => {
if (/\/initializers\//.test(key)) {
const module = require(key, null, null, true);
const module = requirejs(key, null, null, true);
if (!module) { throw new Error(key + ' must export an initializer.'); }
this.initializer(module.default);
}

View File

@ -37,7 +37,7 @@ PLUGIN_API_JS
name = node["name"] || node["data-template-name"] || "broken"
is_raw = name =~ /\.raw$/
if is_raw
template = "require('discourse-common/lib/raw-handlebars').template(#{Barber::Precompiler.compile(node.inner_html)})"
template = "requirejs('discourse-common/lib/raw-handlebars').template(#{Barber::Precompiler.compile(node.inner_html)})"
node.replace <<COMPILED
<script>
(function() {

View File

@ -28,7 +28,6 @@ module Tilt
ctx = MiniRacer::Context.new(timeout: 15000)
ctx.eval("var self = this; #{File.read("#{Rails.root}/vendor/assets/javascripts/babel.js")}")
ctx.eval("module = {}; exports = {};");
ctx.load("#{Rails.root}/lib/es6_module_transpiler/support/es6-module-transpiler.js")
ctx.attach("rails.logger.info", proc{|err| Rails.logger.info(err.to_s)})
ctx.attach("rails.logger.error", proc{|err| Rails.logger.error(err.to_s)})
ctx.eval <<JS
@ -105,12 +104,8 @@ JS
klass = self.class
klass.protect do
klass.v8.eval("console.prefix = 'BABEL: babel-eval: ';")
transpiled = babel_source(source)
compiler_source = "new module.exports.Compiler(#{transpiled}, '#{module_name(root_path, logical_path)}', #{compiler_options}).#{compiler_method}()"
@output = klass.v8.eval(compiler_source)
transpiled = babel_source(source, module_name: module_name(root_path, logical_path))
@output = klass.v8.eval(transpiled)
end
end
@ -120,7 +115,7 @@ JS
klass = self.class
klass.protect do
klass.v8.eval("console.prefix = 'BABEL: #{scope.logical_path}: ';")
@output = klass.v8.eval(generate_source(scope))
@output = klass.v8.eval(babel_source(data, module_name: module_name(scope.root_path, scope.logical_path)))
end
# For backwards compatibility with plugins, for now export the Global format too.
@ -159,18 +154,21 @@ JS
@output
end
def babel_source(source)
def babel_source(source, opts=nil)
opts ||= {}
js_source = ::JSON.generate(source, quirks_mode: true)
"babel.transform(#{js_source}, {ast: false, whitelist: ['es6.constants', 'es6.properties.shorthand', 'es6.arrowFunctions', 'es6.blockScoping', 'es6.destructuring', 'es6.spread', 'es6.parameters', 'es6.templateLiterals', 'es6.regex.unicode', 'es7.decorators', 'es6.classes']})['code']"
if opts[:module_name]
"Babel.transform(#{js_source}, { moduleId: '#{opts[:module_name]}', ast: false, presets: ['es2015'], plugins: [['transform-es2015-modules-amd', {noInterop: true}], 'transform-decorators-legacy'] }).code"
else
"Babel.transform(#{js_source}, { ast: false, plugins: ['check-es2015-constants', 'transform-es2015-arrow-functions', 'transform-es2015-block-scoped-functions', 'transform-es2015-block-scoping', 'transform-es2015-classes', 'transform-es2015-computed-properties', 'transform-es2015-destructuring', 'transform-es2015-duplicate-keys', 'transform-es2015-for-of', 'transform-es2015-function-name', 'transform-es2015-literals', 'transform-es2015-object-super', 'transform-es2015-parameters', 'transform-es2015-shorthand-properties', 'transform-es2015-spread', 'transform-es2015-sticky-regex', 'transform-es2015-template-literals', 'transform-es2015-typeof-symbol', 'transform-es2015-unicode-regex', 'transform-regenerator', 'transform-decorators-legacy'] }).code"
end
end
private
def generate_source(scope)
js_source = babel_source(data)
"new module.exports.Compiler(#{js_source}, '#{module_name(scope.root_path, scope.logical_path)}', #{compiler_options}).#{compiler_method}()"
end
def module_name(root_path, logical_path)
path = nil

View File

@ -14,7 +14,7 @@ class Barber::Precompiler
transpiled = template.babel_transpile(source)
# very hacky but lets us use ES6. I'm ashamed of this code -RW
transpiled.gsub!(/^export .*$/, '')
transpiled = transpiled[0...transpiled.index('export ')]
@precompiler = StringIO.new <<END
var __RawHandlebars;
@ -40,11 +40,11 @@ module Discourse
module Handlebars
module Helper
def precompile_handlebars(string)
"require('discourse-common/lib/raw-handlebars').template(#{Barber::Precompiler.compile(string)});"
"requirejs('discourse-common/lib/raw-handlebars').template(#{Barber::Precompiler.compile(string)});"
end
def compile_handlebars(string)
"require('discourse-common/lib/raw-handlebars').compile(#{indent(string).inspect});"
"requirejs('discourse-common/lib/raw-handlebars').compile(#{indent(string).inspect});"
end
end
end
@ -55,11 +55,11 @@ class Ember::Handlebars::Template
include Discourse::Ember::Handlebars::Helper
def precompile_handlebars(string, input=nil)
"require('discourse-common/lib/raw-handlebars').template(#{Barber::Precompiler.compile(string)});"
"requirejs('discourse-common/lib/raw-handlebars').template(#{Barber::Precompiler.compile(string)});"
end
def compile_handlebars(string, input=nil)
"require('discourse-common/lib/raw-handlebars').compile(#{indent(string).inspect});"
"requirejs('discourse-common/lib/raw-handlebars').compile(#{indent(string).inspect});"
end
def global_template_target(namespace, module_name, config)

View File

@ -1,6 +1,6 @@
import { default as PrettyText, buildOptions } from 'pretty-text/pretty-text';
module("lib:details-cooked-test");
QUnit.module("lib:details-cooked-test");
const defaultOpts = buildOptions({
siteSettings: {

View File

@ -40,7 +40,7 @@ window.bootbox.$body = $('#ember-testing');
$.fn.modal = AcceptanceModal;
function acceptance(name, options) {
module("Acceptance: " + name, {
QUnit.module("Acceptance: " + name, {
beforeEach() {
resetMobile();

View File

@ -34,10 +34,10 @@ QUnit.module("initializer:localization", {
}
});
QUnit.test("translation overrides", assert => {
QUnit.test("translation overrides", function(assert) {
PreloadStore.store('translationOverrides', {"js.composer.reply":"WAT","js.topic.reply.help":"foobar"});
LocalizationInitializer.initialize(this.registry);
assert.equal(I18n.t("composer.reply"), "WAT", "overrides existing translation in current locale");
assert.equal(I18n.t("topic.reply.help"), "foobar", "overrides translation in default locale");
});
});

View File

@ -3,7 +3,7 @@ import { default as PrettyText, buildOptions } from 'pretty-text/pretty-text';
import { hashString } from 'discourse/lib/hash';
// Run the MDTest spec
module("MDTest");
QUnit.module("MDTest");
// This is cheating, but the trivial differences between sanitization
// do not affect formatting.

File diff suppressed because one or more lines are too long