FIX: Restore class-property babel transform for themes (#19883)

This seems to be required for decorators to work on class properties. Followup to 624f4a7de9
This commit is contained in:
David Taylor 2023-01-16 18:06:46 +00:00 committed by GitHub
parent 624f4a7de9
commit 41f3bb8b50
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 21 additions and 8 deletions

View File

@ -6,7 +6,7 @@ require "json_schemer"
class Theme < ActiveRecord::Base
include GlobalPath
BASE_COMPILER_VERSION = 70
BASE_COMPILER_VERSION = 71
attr_accessor :child_components

View File

@ -10,6 +10,8 @@ class DiscourseJsProcessor
# babel: { debug: true } in ember-cli-build.js, then run `yarn ember build -prod`
DISCOURSE_COMMON_BABEL_PLUGINS = [
["proposal-decorators", { legacy: true }],
"proposal-class-properties",
"proposal-private-methods",
"proposal-class-static-block",
"transform-parameters",
"proposal-export-namespace-from",

View File

@ -41,13 +41,6 @@ RSpec.describe DiscourseJsProcessor do
script = <<~JS.chomp
optional?.chaining;
const template = func`test`;
class MyClass {
classProperty = 1;
#privateProperty = 1;
#privateMethod() {
console.log("hello world");
}
}
let numericSeparator = 100_000_000;
logicalAssignment ||= 2;
nullishCoalescing ?? 'works';
@ -76,6 +69,24 @@ RSpec.describe DiscourseJsProcessor do
JS
end
it "supports decorators and class properties without error" do
script = <<~JS.chomp
class MyClass {
classProperty = 1;
#privateProperty = 1;
#privateMethod() {
console.log("hello world");
}
@decorated
myMethod(){
}
}
JS
result = DiscourseJsProcessor.transpile(script, "blah", "blah/mymodule")
expect(result).to include("_applyDecoratedDescriptor")
end
it "correctly transpiles widget hbs" do
result = DiscourseJsProcessor.transpile(<<~JS, "blah", "blah/mymodule")
import hbs from "discourse/widgets/hbs-compiler";