diff --git a/packages/analyzer/fixtures/06-jsdoc/inherited-privacy/fixture/custom-elements.json b/packages/analyzer/fixtures/06-jsdoc/inherited-privacy/fixture/custom-elements.json new file mode 100644 index 0000000..31fb8b5 --- /dev/null +++ b/packages/analyzer/fixtures/06-jsdoc/inherited-privacy/fixture/custom-elements.json @@ -0,0 +1,123 @@ +{ + "schemaVersion": "1.0.0", + "readme": "", + "modules": [ + { + "kind": "javascript-module", + "path": "child.js", + "declarations": [ + { + "kind": "class", + "description": "", + "name": "Child", + "members": [ + { + "kind": "field", + "name": "property1", + "type": { + "text": "boolean" + }, + "default": "true", + "privacy": "public", + "inheritedFrom": { + "name": "Parent", + "module": "parent.js" + } + }, + { + "kind": "field", + "name": "property2", + "type": { + "text": "boolean" + }, + "default": "true", + "privacy": "private", + "inheritedFrom": { + "name": "Parent", + "module": "parent.js" + } + } + ], + "superclass": { + "name": "Parent", + "module": "/parent.js" + }, + "tagName": "child-el", + "customElement": true + } + ], + "exports": [ + { + "kind": "js", + "name": "Child", + "declaration": { + "name": "Child", + "module": "child.js" + } + }, + { + "kind": "custom-element-definition", + "name": "child-el", + "declaration": { + "name": "Child", + "module": "child.js" + } + } + ] + }, + { + "kind": "javascript-module", + "path": "parent.js", + "declarations": [ + { + "kind": "class", + "description": "", + "name": "Parent", + "members": [ + { + "kind": "field", + "name": "property1", + "type": { + "text": "string" + }, + "default": "\"\"", + "privacy": "private" + }, + { + "kind": "field", + "name": "property2", + "type": { + "text": "string" + }, + "default": "\"\"", + "privacy": "private" + } + ], + "superclass": { + "name": "HTMLElement" + }, + "tagName": "parent-el", + "customElement": true + } + ], + "exports": [ + { + "kind": "js", + "name": "Parent", + "declaration": { + "name": "Parent", + "module": "parent.js" + } + }, + { + "kind": "custom-element-definition", + "name": "parent-el", + "declaration": { + "name": "Parent", + "module": "parent.js" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/packages/analyzer/fixtures/06-jsdoc/inherited-privacy/output.json b/packages/analyzer/fixtures/06-jsdoc/inherited-privacy/output.json new file mode 100644 index 0000000..31fb8b5 --- /dev/null +++ b/packages/analyzer/fixtures/06-jsdoc/inherited-privacy/output.json @@ -0,0 +1,123 @@ +{ + "schemaVersion": "1.0.0", + "readme": "", + "modules": [ + { + "kind": "javascript-module", + "path": "child.js", + "declarations": [ + { + "kind": "class", + "description": "", + "name": "Child", + "members": [ + { + "kind": "field", + "name": "property1", + "type": { + "text": "boolean" + }, + "default": "true", + "privacy": "public", + "inheritedFrom": { + "name": "Parent", + "module": "parent.js" + } + }, + { + "kind": "field", + "name": "property2", + "type": { + "text": "boolean" + }, + "default": "true", + "privacy": "private", + "inheritedFrom": { + "name": "Parent", + "module": "parent.js" + } + } + ], + "superclass": { + "name": "Parent", + "module": "/parent.js" + }, + "tagName": "child-el", + "customElement": true + } + ], + "exports": [ + { + "kind": "js", + "name": "Child", + "declaration": { + "name": "Child", + "module": "child.js" + } + }, + { + "kind": "custom-element-definition", + "name": "child-el", + "declaration": { + "name": "Child", + "module": "child.js" + } + } + ] + }, + { + "kind": "javascript-module", + "path": "parent.js", + "declarations": [ + { + "kind": "class", + "description": "", + "name": "Parent", + "members": [ + { + "kind": "field", + "name": "property1", + "type": { + "text": "string" + }, + "default": "\"\"", + "privacy": "private" + }, + { + "kind": "field", + "name": "property2", + "type": { + "text": "string" + }, + "default": "\"\"", + "privacy": "private" + } + ], + "superclass": { + "name": "HTMLElement" + }, + "tagName": "parent-el", + "customElement": true + } + ], + "exports": [ + { + "kind": "js", + "name": "Parent", + "declaration": { + "name": "Parent", + "module": "parent.js" + } + }, + { + "kind": "custom-element-definition", + "name": "parent-el", + "declaration": { + "name": "Parent", + "module": "parent.js" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/packages/analyzer/fixtures/06-jsdoc/inherited-privacy/package/child.js b/packages/analyzer/fixtures/06-jsdoc/inherited-privacy/package/child.js new file mode 100644 index 0000000..6f88800 --- /dev/null +++ b/packages/analyzer/fixtures/06-jsdoc/inherited-privacy/package/child.js @@ -0,0 +1,12 @@ +import { Parent } from "./parent.js"; + +export class Child extends Parent { + /** + * @public + */ + property1 = true; + + property2 = true; +} + +customElements.define("child-el", Child); \ No newline at end of file diff --git a/packages/analyzer/fixtures/06-jsdoc/inherited-privacy/package/parent.js b/packages/analyzer/fixtures/06-jsdoc/inherited-privacy/package/parent.js new file mode 100644 index 0000000..1eacad6 --- /dev/null +++ b/packages/analyzer/fixtures/06-jsdoc/inherited-privacy/package/parent.js @@ -0,0 +1,13 @@ +export class Parent extends HTMLElement { + /** + * @private + */ + property1 = ""; + + /** + * @private + */ + property2 = ""; +} + +customElements.define("parent-el", Parent); \ No newline at end of file diff --git a/packages/analyzer/src/features/post-processing/apply-inheritance.js b/packages/analyzer/src/features/post-processing/apply-inheritance.js index bd4e9b1..804c483 100644 --- a/packages/analyzer/src/features/post-processing/apply-inheritance.js +++ b/packages/analyzer/src/features/post-processing/apply-inheritance.js @@ -52,11 +52,7 @@ export function applyInheritancePlugin() { customElement[type] = customElement?.[type]?.map(item => item.name === existing.name ? { ...newItem, - ...existing, - ...{ - ...(newItem.type ? { type: newItem.type } : {}), - ...(newItem.privacy ? { privacy: newItem.privacy } : {}) - } + ...existing } : item); } else { diff --git a/yarn.lock b/yarn.lock index 6a63663..c8aa8ee 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1401,19 +1401,6 @@ "@babel/helper-module-imports" "^7.10.4" "@rollup/pluginutils" "^3.1.0" -"@rollup/plugin-commonjs@^19.0.0": - version "19.0.0" - resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-19.0.0.tgz#8c3e71f9a66908e60d70cc1be205834ef3e45f71" - integrity sha512-adTpD6ATGbehdaQoZQ6ipDFhdjqsTgpOAhFiPwl+dzre4pPshsecptDPyEFb61JMJ1+mGljktaC4jI8ARMSNyw== - dependencies: - "@rollup/pluginutils" "^3.1.0" - commondir "^1.0.1" - estree-walker "^2.0.1" - glob "^7.1.6" - is-reference "^1.2.1" - magic-string "^0.25.7" - resolve "^1.17.0" - "@rollup/plugin-node-resolve@^11.0.1": version "11.2.1" resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz#82aa59397a29cd4e13248b106e6a4a1880362a60" @@ -1426,18 +1413,6 @@ is-module "^1.0.0" resolve "^1.19.0" -"@rollup/plugin-node-resolve@^13.0.0": - version "13.0.0" - resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.0.0.tgz#352f07e430ff377809ec8ec8a6fd636547162dc4" - integrity sha512-41X411HJ3oikIDivT5OKe9EZ6ud6DXudtfNrGbC4nniaxx2esiWjkLOzgnZsWq1IM8YIeL2rzRGLZLBjlhnZtQ== - dependencies: - "@rollup/pluginutils" "^3.1.0" - "@types/resolve" "1.17.1" - builtin-modules "^3.1.0" - deepmerge "^4.2.2" - is-module "^1.0.0" - resolve "^1.19.0" - "@rollup/plugin-replace@^2.4.2": version "2.4.2" resolved "https://registry.yarnpkg.com/@rollup/plugin-replace/-/plugin-replace-2.4.2.tgz#a2d539314fbc77c244858faa523012825068510a" @@ -1534,11 +1509,6 @@ resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.6.tgz#0b7018723084918a865eff99249c490505df2163" integrity sha512-7fDOJFA/x8B+sO1901BmHlf5dE1cxBU8mRXj8QOEDnn16hhGJv/IHxJtZhvsabZsIMn0eLIyeOKAeqSNJJYTpA== -"@types/estree@*": - version "0.0.50" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.50.tgz#1e0caa9364d3fccd2931c3ed96fdbeaa5d4cca83" - integrity sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw== - "@types/estree@0.0.39": version "0.0.39" resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" @@ -2738,11 +2708,6 @@ comment-parser@1.2.4: resolved "https://registry.yarnpkg.com/comment-parser/-/comment-parser-1.2.4.tgz#489f3ee55dfd184a6e4bffb31baba284453cb760" integrity sha512-pm0b+qv+CkWNriSTMsfnjChF9kH0kxz55y44Wo5le9qLxMj5xDQAaEd9ZN1ovSuk9CsrncWaFwgpOMg7ClJwkw== -commondir@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" - integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= - component-bind@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/component-bind/-/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1" @@ -4375,13 +4340,6 @@ is-promise@^2.0.0: resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.2.2.tgz#39ab959ccbf9a774cf079f7b40c7a26f763135f1" integrity sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ== -is-reference@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/is-reference/-/is-reference-1.2.1.tgz#8b2dac0b371f4bc994fdeaba9eb542d03002d0b7" - integrity sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ== - dependencies: - "@types/estree" "*" - is-regex@^1.0.3: version "1.1.3" resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.3.tgz#d029f9aff6448b93ebbe3f33dac71511fdcbef9f" @@ -6587,7 +6545,7 @@ resolve-path@^1.4.0: http-errors "~1.6.2" path-is-absolute "1.0.1" -resolve@^1.1.6, resolve@^1.14.2, resolve@^1.17.0, resolve@^1.19.0: +resolve@^1.1.6, resolve@^1.14.2, resolve@^1.19.0: version "1.20.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== @@ -6670,7 +6628,7 @@ rollup-plugin-terser@^7.0.2: serialize-javascript "^4.0.0" terser "^5.0.0" -rollup@^2.35.1, rollup@^2.52.8: +rollup@^2.35.1: version "2.53.1" resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.53.1.tgz#b60439efd1eb41bdb56630509bd99aae78b575d3" integrity sha512-yiTCvcYXZEulNWNlEONOQVlhXA/hgxjelFSjNcrwAAIfYx/xqjSHwqg/cCaWOyFRKr+IQBaXwt723m8tCaIUiw==