diff --git a/packages/webdoc-parser/src/symbols-babel/build-symbol-tree.js b/packages/webdoc-parser/src/symbols-babel/build-symbol-tree.js index b8456a5c..40d84ac9 100644 --- a/packages/webdoc-parser/src/symbols-babel/build-symbol-tree.js +++ b/packages/webdoc-parser/src/symbols-babel/build-symbol-tree.js @@ -134,7 +134,7 @@ export default function buildSymbolTree( file: string, source: SourceFile, config: LanguageConfig, - plugins: string[], + plugins: Array, ): Symbol { const moduleSymbol = SymbolUtils.createModuleSymbol(); let ast; diff --git a/packages/webdoc-parser/src/symbols-babel/index.js b/packages/webdoc-parser/src/symbols-babel/index.js index 3e015f69..4bf10204 100644 --- a/packages/webdoc-parser/src/symbols-babel/index.js +++ b/packages/webdoc-parser/src/symbols-babel/index.js @@ -16,6 +16,7 @@ const defaultPreset = [ "classPrivateMethods", "classPrivateProperties", "classProperties", + ["decorators", {decoratorsBeforeExport: true}], "doExpressions", "dynamicImport", "exportDefaultFrom", diff --git a/packages/webdoc-parser/test/lang-js.js b/packages/webdoc-parser/test/lang-js.js index 75fc2a02..26d89f45 100644 --- a/packages/webdoc-parser/test/lang-js.js +++ b/packages/webdoc-parser/test/lang-js.js @@ -123,4 +123,17 @@ describe("@webdoc/parser.LanguageIntegration{@lang js}", function() { `), ).to.not.throw(); }); + + it("should work with decorators", function() { + const symtree = buildSymbolTree(` + class DecoratorGarden { + @decorator({ withParam: 'some-value' }) + decorated() { + + } + } + `); + + expect(symtree.members[0].members.length).to.equal(1); + }); }); diff --git a/packages/webdoc-parser/test/lang-ts.js b/packages/webdoc-parser/test/lang-ts.js index d34bc7ac..18b321b1 100644 --- a/packages/webdoc-parser/test/lang-ts.js +++ b/packages/webdoc-parser/test/lang-ts.js @@ -146,4 +146,17 @@ describe("@webdoc/parser.LanguageIntegration{@lang ts}", function() { expect(specializedArrayBufferImpl.meta.implements[0]).to.equal("Special.IArrayBuffer"); expect(specializedArrayBufferImpl.meta.extends[0]).to.equal("Special.ArrayBuffer"); }); + + it("should work with decorators", function() { + const symtree = buildSymbolTree(` + class DecoratorGarden { + @decorator({ withParam: 'some-value' }) + decorated() { + + } + } + `, "*.ts"); + + expect(symtree.members[0].members.length).to.equal(1); + }); });