Support for transpiling .js files (#9160)

* Remove some `.es6` from comments where it does not matter

* Use a post processor for transpilation

This will allow us to eventually use the directory structure to
transpile rather than the extension.

* FIX: Some errors and clean up in confirm-new-email

It would throw an error if the webauthn element wasn't present.
Also I changed things so that no-module is not explicitly
referenced.

* Remove `no-module`

Instead we allow a magic comment: `// discourse-skip-module` to prevent
the asset pipeline from creating a module.

* DEV: Enable babel transpilation based on directory

If it's in `app/assets/javascripts/dicourse` it will be transpiled
even without the `.es6` extension.

* REFACTOR: Remove Tilt/ES6ModuleTranspiler
This commit is contained in:
Robin Ward
2020-03-11 09:43:55 -04:00
committed by GitHub
parent fd4ce6ab8f
commit a3f0543f99
38 changed files with 152 additions and 265 deletions

View File

@ -214,8 +214,8 @@ class ThemeJavascriptCompiler
def append_module(script, name, include_variables: true)
script = "#{theme_variables}#{script}" if include_variables
template = Tilt::ES6ModuleTranspilerTemplate.new {}
@content << template.module_transpile(script, "", name)
transpiler = DiscourseJsProcessor::Transpiler.new
@content << transpiler.perform(script, "", name)
rescue MiniRacer::RuntimeError => ex
raise CompileError.new ex.message
end
@ -237,7 +237,7 @@ class ThemeJavascriptCompiler
end
def transpile(es6_source, version)
template = Tilt::ES6ModuleTranspilerTemplate.new {}
transpiler = DiscourseJsProcessor::Transpiler.new(skip_module: true)
wrapped = <<~PLUGIN_API_JS
(function() {
if ('Discourse' in window && typeof Discourse._registerPluginCode === 'function') {
@ -254,7 +254,7 @@ class ThemeJavascriptCompiler
})();
PLUGIN_API_JS
template.babel_transpile(wrapped)
transpiler.perform(wrapped)
rescue MiniRacer::RuntimeError => ex
raise CompileError.new ex.message
end