@limetech/kompendium 1.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +313 -0
- package/dist/cjs/_commonjsHelpers-BJu3ubxk.js +13 -0
- package/dist/cjs/_commonjsHelpers-BJu3ubxk.js.map +1 -0
- package/dist/cjs/anchor-scroll-BmplAyR0.js +69 -0
- package/dist/cjs/anchor-scroll-BmplAyR0.js.map +1 -0
- package/dist/cjs/index-DYiJ6dQL.js +1866 -0
- package/dist/cjs/index-DYiJ6dQL.js.map +1 -0
- package/dist/cjs/index.cjs.js +3 -0
- package/dist/cjs/index.cjs.js.map +1 -0
- package/dist/cjs/kompendium-app.kompendium-darkmode-switch.kompendium-navigation.kompendium-search.stencil-route.stencil-route-switch.stencil-router.entry.cjs.js.map +1 -0
- package/dist/cjs/kompendium-app_7.cjs.entry.js +2924 -0
- package/dist/cjs/kompendium-code.cjs.entry.js +2724 -0
- package/dist/cjs/kompendium-code.entry.cjs.js.map +1 -0
- package/dist/cjs/kompendium-component.cjs.entry.js +207 -0
- package/dist/cjs/kompendium-component.entry.cjs.js.map +1 -0
- package/dist/cjs/kompendium-debug.cjs.entry.js +47 -0
- package/dist/cjs/kompendium-debug.entry.cjs.js.map +1 -0
- package/dist/cjs/kompendium-example-code.cjs.entry.js +20 -0
- package/dist/cjs/kompendium-example-code.entry.cjs.js.map +1 -0
- package/dist/cjs/kompendium-example-markdown.cjs.entry.js +165 -0
- package/dist/cjs/kompendium-example-markdown.entry.cjs.js.map +1 -0
- package/dist/cjs/kompendium-guide.cjs.entry.js +33 -0
- package/dist/cjs/kompendium-guide.entry.cjs.js.map +1 -0
- package/dist/cjs/kompendium-markdown.cjs.entry.js +48923 -0
- package/dist/cjs/kompendium-markdown.entry.cjs.js.map +1 -0
- package/dist/cjs/kompendium-playground.cjs.entry.js +89 -0
- package/dist/cjs/kompendium-playground.entry.cjs.js.map +1 -0
- package/dist/cjs/kompendium-proplist.kompendium-taglist.entry.cjs.js.map +1 -0
- package/dist/cjs/kompendium-proplist_2.cjs.entry.js +49 -0
- package/dist/cjs/kompendium-type.cjs.entry.js +83 -0
- package/dist/cjs/kompendium-type.entry.cjs.js.map +1 -0
- package/dist/cjs/kompendium.cjs.js +25 -0
- package/dist/cjs/kompendium.cjs.js.map +1 -0
- package/dist/cjs/loader.cjs.js +13 -0
- package/dist/cjs/loader.cjs.js.map +1 -0
- package/dist/cjs/markdown-types-B884tLd-.js +15 -0
- package/dist/cjs/markdown-types-B884tLd-.js.map +1 -0
- package/dist/cjs/methods-DoA78dOH.js +97 -0
- package/dist/cjs/methods-DoA78dOH.js.map +1 -0
- package/dist/cjs/types-SjA7Kcy_.js +8 -0
- package/dist/cjs/types-SjA7Kcy_.js.map +1 -0
- package/dist/collection/assets/favicon.svg +65 -0
- package/dist/collection/assets/icons/bookmark-fill.svg +1 -0
- package/dist/collection/assets/icons/danger.svg +1 -0
- package/dist/collection/assets/icons/debug.svg +1 -0
- package/dist/collection/assets/icons/important.svg +1 -0
- package/dist/collection/assets/icons/info.svg +1 -0
- package/dist/collection/assets/icons/logo.svg +1 -0
- package/dist/collection/assets/icons/note.svg +1 -0
- package/dist/collection/assets/icons/search.svg +1 -0
- package/dist/collection/assets/icons/tip.svg +1 -0
- package/dist/collection/assets/icons/warning.svg +1 -0
- package/dist/collection/assets/logotype.svg +64 -0
- package/dist/collection/collection-manifest.json +35 -0
- package/dist/collection/components/anchor-scroll.js +61 -0
- package/dist/collection/components/anchor-scroll.js.map +1 -0
- package/dist/collection/components/app/app.css +125 -0
- package/dist/collection/components/app/app.js +149 -0
- package/dist/collection/components/app/app.js.map +1 -0
- package/dist/collection/components/code/code.css +250 -0
- package/dist/collection/components/code/code.js +82 -0
- package/dist/collection/components/code/code.js.map +1 -0
- package/dist/collection/components/code/examples/code.js +14 -0
- package/dist/collection/components/code/examples/code.js.map +1 -0
- package/dist/collection/components/component/component.css +383 -0
- package/dist/collection/components/component/component.js +191 -0
- package/dist/collection/components/component/component.js.map +1 -0
- package/dist/collection/components/component/templates/events.js +32 -0
- package/dist/collection/components/component/templates/events.js.map +1 -0
- package/dist/collection/components/component/templates/examples.js +17 -0
- package/dist/collection/components/component/templates/examples.js.map +1 -0
- package/dist/collection/components/component/templates/methods.js +54 -0
- package/dist/collection/components/component/templates/methods.js.map +1 -0
- package/dist/collection/components/component/templates/props.js +36 -0
- package/dist/collection/components/component/templates/props.js.map +1 -0
- package/dist/collection/components/component/templates/slots.js +14 -0
- package/dist/collection/components/component/templates/slots.js.map +1 -0
- package/dist/collection/components/component/templates/style.js +14 -0
- package/dist/collection/components/component/templates/style.js.map +1 -0
- package/dist/collection/components/darkmode-switch/darkmode-switch.css +141 -0
- package/dist/collection/components/darkmode-switch/darkmode-switch.js +90 -0
- package/dist/collection/components/darkmode-switch/darkmode-switch.js.map +1 -0
- package/dist/collection/components/darkmode-switch/types.js +2 -0
- package/dist/collection/components/darkmode-switch/types.js.map +1 -0
- package/dist/collection/components/debug/debug.js +146 -0
- package/dist/collection/components/debug/debug.js.map +1 -0
- package/dist/collection/components/guide/guide.js +61 -0
- package/dist/collection/components/guide/guide.js.map +1 -0
- package/dist/collection/components/markdown/examples/markdown-example.js +150 -0
- package/dist/collection/components/markdown/examples/markdown-example.js.map +1 -0
- package/dist/collection/components/markdown/examples/markdown.js +14 -0
- package/dist/collection/components/markdown/examples/markdown.js.map +1 -0
- package/dist/collection/components/markdown/markdown-types.js +8 -0
- package/dist/collection/components/markdown/markdown-types.js.map +1 -0
- package/dist/collection/components/markdown/markdown.css +660 -0
- package/dist/collection/components/markdown/markdown.js +83 -0
- package/dist/collection/components/markdown/markdown.js.map +1 -0
- package/dist/collection/components/navigation/navigation.css +403 -0
- package/dist/collection/components/navigation/navigation.js +184 -0
- package/dist/collection/components/navigation/navigation.js.map +1 -0
- package/dist/collection/components/playground/playground.css +198 -0
- package/dist/collection/components/playground/playground.js +174 -0
- package/dist/collection/components/playground/playground.js.map +1 -0
- package/dist/collection/components/playground/playground.types.js +2 -0
- package/dist/collection/components/playground/playground.types.js.map +1 -0
- package/dist/collection/components/proplist/proplist.css +334 -0
- package/dist/collection/components/proplist/proplist.js +53 -0
- package/dist/collection/components/proplist/proplist.js.map +1 -0
- package/dist/collection/components/search/search.css +183 -0
- package/dist/collection/components/search/search.js +76 -0
- package/dist/collection/components/search/search.js.map +1 -0
- package/dist/collection/components/taglist/taglist.css +58 -0
- package/dist/collection/components/taglist/taglist.js +82 -0
- package/dist/collection/components/taglist/taglist.js.map +1 -0
- package/dist/collection/components/type/templates/alias.js +11 -0
- package/dist/collection/components/type/templates/alias.js.map +1 -0
- package/dist/collection/components/type/templates/enum.js +25 -0
- package/dist/collection/components/type/templates/enum.js.map +1 -0
- package/dist/collection/components/type/templates/interface.js +13 -0
- package/dist/collection/components/type/templates/interface.js.map +1 -0
- package/dist/collection/components/type/type.js +97 -0
- package/dist/collection/components/type/type.js.map +1 -0
- package/dist/collection/index.js +4 -0
- package/dist/collection/index.js.map +1 -0
- package/dist/collection/kompendium/config.js +7 -0
- package/dist/collection/kompendium/config.js.map +1 -0
- package/dist/collection/kompendium/filesystem.js +9 -0
- package/dist/collection/kompendium/filesystem.js.map +1 -0
- package/dist/collection/kompendium/generator.js +217 -0
- package/dist/collection/kompendium/generator.js.map +1 -0
- package/dist/collection/kompendium/guides.js +30 -0
- package/dist/collection/kompendium/guides.js.map +1 -0
- package/dist/collection/kompendium/index.js +2 -0
- package/dist/collection/kompendium/index.js.map +1 -0
- package/dist/collection/kompendium/markdown-admonitions.js +82 -0
- package/dist/collection/kompendium/markdown-admonitions.js.map +1 -0
- package/dist/collection/kompendium/markdown-code.js +40 -0
- package/dist/collection/kompendium/markdown-code.js.map +1 -0
- package/dist/collection/kompendium/markdown-frontmatter.js +12 -0
- package/dist/collection/kompendium/markdown-frontmatter.js.map +1 -0
- package/dist/collection/kompendium/markdown-nodes.js +10 -0
- package/dist/collection/kompendium/markdown-nodes.js.map +1 -0
- package/dist/collection/kompendium/markdown-typelinks.js +115 -0
- package/dist/collection/kompendium/markdown-typelinks.js.map +1 -0
- package/dist/collection/kompendium/markdown.js +35 -0
- package/dist/collection/kompendium/markdown.js.map +1 -0
- package/dist/collection/kompendium/menu.js +149 -0
- package/dist/collection/kompendium/menu.js.map +1 -0
- package/dist/collection/kompendium/schema.js +167 -0
- package/dist/collection/kompendium/schema.js.map +1 -0
- package/dist/collection/kompendium/search.js +144 -0
- package/dist/collection/kompendium/search.js.map +1 -0
- package/dist/collection/kompendium/source.js +81 -0
- package/dist/collection/kompendium/source.js.map +1 -0
- package/dist/collection/kompendium/test/fixtures/basic.js +48 -0
- package/dist/collection/kompendium/test/fixtures/basic.js.map +1 -0
- package/dist/collection/kompendium/test/fixtures/filtering/example-type.js +2 -0
- package/dist/collection/kompendium/test/fixtures/filtering/example-type.js.map +1 -0
- package/dist/collection/kompendium/test/fixtures/filtering/node-modules-type.js +2 -0
- package/dist/collection/kompendium/test/fixtures/filtering/node-modules-type.js.map +1 -0
- package/dist/collection/kompendium/test/fixtures/filtering/private-types.js +2 -0
- package/dist/collection/kompendium/test/fixtures/filtering/private-types.js.map +1 -0
- package/dist/collection/kompendium/test/fixtures/filtering/stencil-component-types.js +2 -0
- package/dist/collection/kompendium/test/fixtures/filtering/stencil-component-types.js.map +1 -0
- package/dist/collection/kompendium/test/fixtures/filtering/test-helper-type.js +2 -0
- package/dist/collection/kompendium/test/fixtures/filtering/test-helper-type.js.map +1 -0
- package/dist/collection/kompendium/test/fixtures/filtering/valid-types.js +29 -0
- package/dist/collection/kompendium/test/fixtures/filtering/valid-types.js.map +1 -0
- package/dist/collection/kompendium/typedoc.js +481 -0
- package/dist/collection/kompendium/typedoc.js.map +1 -0
- package/dist/collection/kompendium/watch.js +9 -0
- package/dist/collection/kompendium/watch.js.map +1 -0
- package/dist/collection/types.js +2 -0
- package/dist/collection/types.js.map +1 -0
- package/dist/config.ts +8 -0
- package/dist/esm/_commonjsHelpers-BFTU3MAI.js +10 -0
- package/dist/esm/_commonjsHelpers-BFTU3MAI.js.map +1 -0
- package/dist/esm/anchor-scroll-BAGXN2n6.js +65 -0
- package/dist/esm/anchor-scroll-BAGXN2n6.js.map +1 -0
- package/dist/esm/index-9UrzenzW.js +1857 -0
- package/dist/esm/index-9UrzenzW.js.map +1 -0
- package/dist/esm/index.js +2 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/kompendium-app.kompendium-darkmode-switch.kompendium-navigation.kompendium-search.stencil-route.stencil-route-switch.stencil-router.entry.js.map +1 -0
- package/dist/esm/kompendium-app_7.entry.js +2916 -0
- package/dist/esm/kompendium-code.entry.js +2722 -0
- package/dist/esm/kompendium-code.entry.js.map +1 -0
- package/dist/esm/kompendium-component.entry.js +205 -0
- package/dist/esm/kompendium-component.entry.js.map +1 -0
- package/dist/esm/kompendium-debug.entry.js +45 -0
- package/dist/esm/kompendium-debug.entry.js.map +1 -0
- package/dist/esm/kompendium-example-code.entry.js +18 -0
- package/dist/esm/kompendium-example-code.entry.js.map +1 -0
- package/dist/esm/kompendium-example-markdown.entry.js +163 -0
- package/dist/esm/kompendium-example-markdown.entry.js.map +1 -0
- package/dist/esm/kompendium-guide.entry.js +31 -0
- package/dist/esm/kompendium-guide.entry.js.map +1 -0
- package/dist/esm/kompendium-markdown.entry.js +48921 -0
- package/dist/esm/kompendium-markdown.entry.js.map +1 -0
- package/dist/esm/kompendium-playground.entry.js +87 -0
- package/dist/esm/kompendium-playground.entry.js.map +1 -0
- package/dist/esm/kompendium-proplist.kompendium-taglist.entry.js.map +1 -0
- package/dist/esm/kompendium-proplist_2.entry.js +46 -0
- package/dist/esm/kompendium-type.entry.js +81 -0
- package/dist/esm/kompendium-type.entry.js.map +1 -0
- package/dist/esm/kompendium.js +21 -0
- package/dist/esm/kompendium.js.map +1 -0
- package/dist/esm/loader.js +11 -0
- package/dist/esm/loader.js.map +1 -0
- package/dist/esm/markdown-types-Ajsawr_9.js +12 -0
- package/dist/esm/markdown-types-Ajsawr_9.js.map +1 -0
- package/dist/esm/methods-BAjd6f7g.js +94 -0
- package/dist/esm/methods-BAjd6f7g.js.map +1 -0
- package/dist/esm/types-BIPLEi1G.js +6 -0
- package/dist/esm/types-BIPLEi1G.js.map +1 -0
- package/dist/filesystem.ts +9 -0
- package/dist/generator.ts +302 -0
- package/dist/guides.ts +49 -0
- package/dist/index.cjs.js +1 -0
- package/dist/index.js +1 -0
- package/dist/index.ts +1 -0
- package/dist/kompendium/index.esm.js +2 -0
- package/dist/kompendium/index.esm.js.map +1 -0
- package/dist/kompendium/kompendium-app.kompendium-darkmode-switch.kompendium-navigation.kompendium-search.stencil-route.stencil-route-switch.stencil-router.entry.esm.js.map +1 -0
- package/dist/kompendium/kompendium-code.entry.esm.js.map +1 -0
- package/dist/kompendium/kompendium-component.entry.esm.js.map +1 -0
- package/dist/kompendium/kompendium-debug.entry.esm.js.map +1 -0
- package/dist/kompendium/kompendium-example-code.entry.esm.js.map +1 -0
- package/dist/kompendium/kompendium-example-markdown.entry.esm.js.map +1 -0
- package/dist/kompendium/kompendium-guide.entry.esm.js.map +1 -0
- package/dist/kompendium/kompendium-markdown.entry.esm.js.map +1 -0
- package/dist/kompendium/kompendium-playground.entry.esm.js.map +1 -0
- package/dist/kompendium/kompendium-proplist.kompendium-taglist.entry.esm.js.map +1 -0
- package/dist/kompendium/kompendium-type.entry.esm.js.map +1 -0
- package/dist/kompendium/kompendium.css +47 -0
- package/dist/kompendium/kompendium.esm.js +2 -0
- package/dist/kompendium/kompendium.esm.js.map +1 -0
- package/dist/kompendium/loader.esm.js.map +1 -0
- package/dist/kompendium/p-15e4b2c0.entry.js +2 -0
- package/dist/kompendium/p-15e4b2c0.entry.js.map +1 -0
- package/dist/kompendium/p-1cf0168f.entry.js +2 -0
- package/dist/kompendium/p-1cf0168f.entry.js.map +1 -0
- package/dist/kompendium/p-29c23c89.entry.js +2 -0
- package/dist/kompendium/p-29c23c89.entry.js.map +1 -0
- package/dist/kompendium/p-3981d11f.entry.js +2 -0
- package/dist/kompendium/p-3981d11f.entry.js.map +1 -0
- package/dist/kompendium/p-93f0548d.entry.js +2 -0
- package/dist/kompendium/p-93f0548d.entry.js.map +1 -0
- package/dist/kompendium/p-97b02575.entry.js +2 -0
- package/dist/kompendium/p-97b02575.entry.js.map +1 -0
- package/dist/kompendium/p-9UrzenzW.js +3 -0
- package/dist/kompendium/p-9UrzenzW.js.map +1 -0
- package/dist/kompendium/p-Ajsawr_9.js +2 -0
- package/dist/kompendium/p-Ajsawr_9.js.map +1 -0
- package/dist/kompendium/p-BAGXN2n6.js +2 -0
- package/dist/kompendium/p-BAGXN2n6.js.map +1 -0
- package/dist/kompendium/p-BFTU3MAI.js +2 -0
- package/dist/kompendium/p-BFTU3MAI.js.map +1 -0
- package/dist/kompendium/p-BIPLEi1G.js +2 -0
- package/dist/kompendium/p-BIPLEi1G.js.map +1 -0
- package/dist/kompendium/p-CnQEA7KO.js +2 -0
- package/dist/kompendium/p-CnQEA7KO.js.map +1 -0
- package/dist/kompendium/p-b0f95bd6.entry.js +2 -0
- package/dist/kompendium/p-b0f95bd6.entry.js.map +1 -0
- package/dist/kompendium/p-d9bcc473.entry.js +10 -0
- package/dist/kompendium/p-d9bcc473.entry.js.map +1 -0
- package/dist/kompendium/p-e36f3f1e.entry.js +2 -0
- package/dist/kompendium/p-e36f3f1e.entry.js.map +1 -0
- package/dist/kompendium/p-e52a2f57.entry.js +2 -0
- package/dist/kompendium/p-e52a2f57.entry.js.map +1 -0
- package/dist/kompendium/p-ec5861de.entry.js +2 -0
- package/dist/kompendium/p-ec5861de.entry.js.map +1 -0
- package/dist/markdown-admonitions.ts +112 -0
- package/dist/markdown-code.ts +51 -0
- package/dist/markdown-frontmatter.ts +19 -0
- package/dist/markdown-nodes.ts +23 -0
- package/dist/markdown-typelinks.ts +166 -0
- package/dist/markdown.ts +49 -0
- package/dist/menu.ts +189 -0
- package/dist/schema.ts +233 -0
- package/dist/search.ts +197 -0
- package/dist/source.ts +129 -0
- package/dist/typedoc.ts +665 -0
- package/dist/types/components/anchor-scroll.d.ts +36 -0
- package/dist/types/components/app/app.d.ts +22 -0
- package/dist/types/components/code/code.d.ts +26 -0
- package/dist/types/components/code/examples/code.d.ts +3 -0
- package/dist/types/components/component/component.d.ts +32 -0
- package/dist/types/components/component/templates/events.d.ts +5 -0
- package/dist/types/components/component/templates/examples.d.ts +9 -0
- package/dist/types/components/component/templates/methods.d.ts +5 -0
- package/dist/types/components/component/templates/props.d.ts +5 -0
- package/dist/types/components/component/templates/slots.d.ts +5 -0
- package/dist/types/components/component/templates/style.d.ts +5 -0
- package/dist/types/components/darkmode-switch/darkmode-switch.d.ts +18 -0
- package/dist/types/components/darkmode-switch/types.d.ts +2 -0
- package/dist/types/components/debug/debug.d.ts +24 -0
- package/dist/types/components/guide/guide.d.ts +14 -0
- package/dist/types/components/markdown/examples/markdown-example.d.ts +1 -0
- package/dist/types/components/markdown/examples/markdown.d.ts +7 -0
- package/dist/types/components/markdown/markdown-types.d.ts +2 -0
- package/dist/types/components/markdown/markdown.d.ts +20 -0
- package/dist/types/components/navigation/navigation.d.ts +35 -0
- package/dist/types/components/playground/playground.d.ts +32 -0
- package/dist/types/components/playground/playground.types.d.ts +1 -0
- package/dist/types/components/proplist/proplist.d.ts +12 -0
- package/dist/types/components/search/search.d.ts +15 -0
- package/dist/types/components/taglist/taglist.d.ts +16 -0
- package/dist/types/components/type/templates/alias.d.ts +4 -0
- package/dist/types/components/type/templates/enum.d.ts +4 -0
- package/dist/types/components/type/templates/interface.d.ts +4 -0
- package/dist/types/components/type/type.d.ts +15 -0
- package/dist/types/components.d.ts +517 -0
- package/dist/types/index.d.ts +5 -0
- package/dist/types/kompendium/config.d.ts +2 -0
- package/dist/types/kompendium/filesystem.d.ts +1 -0
- package/dist/types/kompendium/generator.d.ts +4 -0
- package/dist/types/kompendium/guides.d.ts +9 -0
- package/dist/types/kompendium/index.d.ts +1 -0
- package/dist/types/kompendium/markdown-admonitions.d.ts +3 -0
- package/dist/types/kompendium/markdown-code.d.ts +2 -0
- package/dist/types/kompendium/markdown-frontmatter.d.ts +6 -0
- package/dist/types/kompendium/markdown-nodes.d.ts +12 -0
- package/dist/types/kompendium/markdown-typelinks.d.ts +21 -0
- package/dist/types/kompendium/markdown.d.ts +8 -0
- package/dist/types/kompendium/menu.d.ts +12 -0
- package/dist/types/kompendium/schema.d.ts +9 -0
- package/dist/types/kompendium/search.d.ts +3 -0
- package/dist/types/kompendium/source.d.ts +10 -0
- package/dist/types/kompendium/test/fixtures/basic.d.ts +65 -0
- package/dist/types/kompendium/test/fixtures/filtering/example-type.d.ts +8 -0
- package/dist/types/kompendium/test/fixtures/filtering/node-modules-type.d.ts +8 -0
- package/dist/types/kompendium/test/fixtures/filtering/private-types.d.ts +23 -0
- package/dist/types/kompendium/test/fixtures/filtering/stencil-component-types.d.ts +19 -0
- package/dist/types/kompendium/test/fixtures/filtering/test-helper-type.d.ts +8 -0
- package/dist/types/kompendium/test/fixtures/filtering/valid-types.d.ts +42 -0
- package/dist/types/kompendium/typedoc.d.ts +2 -0
- package/dist/types/kompendium/watch.d.ts +1 -0
- package/dist/types/stencil-public-runtime.d.ts +1746 -0
- package/dist/types/types.d.ts +119 -0
- package/dist/watch.ts +14 -0
- package/loader/cdn.js +1 -0
- package/loader/index.cjs.js +1 -0
- package/loader/index.d.ts +24 -0
- package/loader/index.es2017.js +1 -0
- package/loader/index.js +2 -0
- package/package.json +116 -0
package/dist/typedoc.ts
ADDED
|
@@ -0,0 +1,665 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Application,
|
|
3
|
+
Reflection,
|
|
4
|
+
ReflectionKind,
|
|
5
|
+
DeclarationReflection,
|
|
6
|
+
TypeDocOptions,
|
|
7
|
+
CommentTag,
|
|
8
|
+
TypeDocReader,
|
|
9
|
+
TSConfigReader,
|
|
10
|
+
} from 'typedoc';
|
|
11
|
+
import { JsonDocsTag, JsonDocsProp } from '@stencil/core/internal';
|
|
12
|
+
import {
|
|
13
|
+
InterfaceDescription,
|
|
14
|
+
AliasDescription,
|
|
15
|
+
EnumDescription,
|
|
16
|
+
EnumMember,
|
|
17
|
+
TypeDescription,
|
|
18
|
+
MethodDescription,
|
|
19
|
+
ParameterDescription,
|
|
20
|
+
ClassDescription,
|
|
21
|
+
DecoratorDescription,
|
|
22
|
+
} from '../types';
|
|
23
|
+
import { existsSync, readFileSync } from 'fs';
|
|
24
|
+
import ts from 'typescript';
|
|
25
|
+
|
|
26
|
+
export function parseFile(
|
|
27
|
+
filename: string,
|
|
28
|
+
tsconfig?: string,
|
|
29
|
+
): TypeDescription[] {
|
|
30
|
+
if (!existsSync(filename)) {
|
|
31
|
+
// eslint-disable-next-line no-console
|
|
32
|
+
console.warn('typeRoot file does not exist', filename);
|
|
33
|
+
|
|
34
|
+
return [];
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
const app = new Application();
|
|
38
|
+
|
|
39
|
+
// Use current working directory as TypeDoc's base path for clean relative paths
|
|
40
|
+
const projectRoot = process.cwd();
|
|
41
|
+
|
|
42
|
+
const options: Partial<TypeDocOptions> = {
|
|
43
|
+
entryPoints: [filename],
|
|
44
|
+
skipErrorChecking: true,
|
|
45
|
+
basePath: projectRoot,
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
if (tsconfig) {
|
|
49
|
+
options.tsconfig = tsconfig;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
if (filename.endsWith('.d.ts')) {
|
|
53
|
+
options.exclude = ['**/+(*test*|node_modules)/**'];
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
app.options.addReader(new TypeDocReader());
|
|
57
|
+
app.options.addReader(new TSConfigReader());
|
|
58
|
+
app.bootstrap(options);
|
|
59
|
+
|
|
60
|
+
const project = app.convert();
|
|
61
|
+
if (!project) {
|
|
62
|
+
// eslint-disable-next-line no-console
|
|
63
|
+
console.warn('Could not find any type information');
|
|
64
|
+
|
|
65
|
+
return [];
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
const data: TypeDescription[] = [];
|
|
69
|
+
|
|
70
|
+
const allInterfaces = project.getReflectionsByKind(
|
|
71
|
+
ReflectionKind.Interface,
|
|
72
|
+
);
|
|
73
|
+
const allClasses = project.getReflectionsByKind(ReflectionKind.Class);
|
|
74
|
+
const allTypeAliases = project.getReflectionsByKind(
|
|
75
|
+
ReflectionKind.TypeAlias,
|
|
76
|
+
);
|
|
77
|
+
const allEnums = project.getReflectionsByKind(ReflectionKind.Enum);
|
|
78
|
+
|
|
79
|
+
const interfaces = allInterfaces.filter((r) =>
|
|
80
|
+
shouldIncludeType(r as DeclarationReflection),
|
|
81
|
+
);
|
|
82
|
+
const classes = allClasses.filter((r) =>
|
|
83
|
+
shouldIncludeType(r as DeclarationReflection),
|
|
84
|
+
);
|
|
85
|
+
const typeAliases = allTypeAliases.filter((r) =>
|
|
86
|
+
shouldIncludeType(r as DeclarationReflection),
|
|
87
|
+
);
|
|
88
|
+
const enums = allEnums.filter((r) =>
|
|
89
|
+
shouldIncludeType(r as DeclarationReflection),
|
|
90
|
+
);
|
|
91
|
+
|
|
92
|
+
interfaces.forEach((reflection) =>
|
|
93
|
+
addInterface(reflection as DeclarationReflection, data as any),
|
|
94
|
+
);
|
|
95
|
+
classes.forEach((reflection) =>
|
|
96
|
+
addClass(reflection as DeclarationReflection, data as any),
|
|
97
|
+
);
|
|
98
|
+
typeAliases.forEach((reflection) =>
|
|
99
|
+
addType(reflection as DeclarationReflection, data as any),
|
|
100
|
+
);
|
|
101
|
+
enums.forEach((reflection) => {
|
|
102
|
+
const members: EnumMember[] = [];
|
|
103
|
+
const enumReflection = reflection as DeclarationReflection;
|
|
104
|
+
enumReflection.children?.forEach((child) => {
|
|
105
|
+
if (child.kind === ReflectionKind.EnumMember) {
|
|
106
|
+
addEnumMember(child, members);
|
|
107
|
+
}
|
|
108
|
+
});
|
|
109
|
+
data.push({
|
|
110
|
+
type: 'enum',
|
|
111
|
+
name: enumReflection.name,
|
|
112
|
+
docs: getDocs(enumReflection),
|
|
113
|
+
docsTags: getDocsTags(enumReflection),
|
|
114
|
+
members: members,
|
|
115
|
+
sources: getSources(enumReflection),
|
|
116
|
+
} as EnumDescription);
|
|
117
|
+
});
|
|
118
|
+
|
|
119
|
+
return data;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
/**
|
|
123
|
+
* Determines if a type should be included in the documentation based on its source location
|
|
124
|
+
* and documentation tags.
|
|
125
|
+
*
|
|
126
|
+
* Excludes types from:
|
|
127
|
+
* - node_modules (third-party dependencies)
|
|
128
|
+
* - examples directories
|
|
129
|
+
* - test files (.test., .spec., /test/, /tests/)
|
|
130
|
+
* - Types marked with @private or @internal tags
|
|
131
|
+
* - Stencil auto-generated types (components.d.ts, Components namespace, CustomEvent wrappers)
|
|
132
|
+
* @param {DeclarationReflection} reflection - The TypeDoc reflection to check
|
|
133
|
+
* @returns {boolean} true if the type should be documented, false otherwise
|
|
134
|
+
*/
|
|
135
|
+
function shouldIncludeType(reflection: DeclarationReflection): boolean {
|
|
136
|
+
if (!reflection.sources || reflection.sources.length === 0) {
|
|
137
|
+
// No source information - include by default
|
|
138
|
+
return true;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
for (const source of reflection.sources) {
|
|
142
|
+
const sourcePath = source.fullFileName || source.fileName || '';
|
|
143
|
+
|
|
144
|
+
if (shouldExcludeSource(sourcePath)) {
|
|
145
|
+
return false;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
// Exclude CustomEvent wrapper types
|
|
150
|
+
// These are generic wrappers around CustomEvent<T> that don't add useful
|
|
151
|
+
// documentation
|
|
152
|
+
if (reflection.name.endsWith('CustomEvent')) {
|
|
153
|
+
return false;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
// Exclude HTML element interface types
|
|
157
|
+
// These are DOM element interfaces (HTMLLimelButtonElement, etc.) already
|
|
158
|
+
// documented in the Components section
|
|
159
|
+
if (
|
|
160
|
+
reflection.name.startsWith('HTML') &&
|
|
161
|
+
reflection.name.endsWith('Element')
|
|
162
|
+
) {
|
|
163
|
+
return false;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
// Exclude types in Stencil's Components namespace
|
|
167
|
+
// Belt-and-suspenders: catches any component interfaces that were not
|
|
168
|
+
// excluded based on source location
|
|
169
|
+
if (isInComponentsNamespace(reflection)) {
|
|
170
|
+
return false;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
// Don't include anything marked @private or @internal
|
|
174
|
+
if (reflection.comment?.blockTags) {
|
|
175
|
+
const hasPrivateTag = reflection.comment.blockTags.some(
|
|
176
|
+
(tag: any) => tag.tag === '@private' || tag.tag === '@internal',
|
|
177
|
+
);
|
|
178
|
+
if (hasPrivateTag) {
|
|
179
|
+
return false;
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
// Include this type
|
|
184
|
+
return true;
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
/**
|
|
188
|
+
* Checks if a source path should be excluded from documentation.
|
|
189
|
+
* @param {string} sourcePath - The file path to check
|
|
190
|
+
* @returns {boolean} true if the source should be excluded, false otherwise
|
|
191
|
+
*/
|
|
192
|
+
function shouldExcludeSource(sourcePath: string): boolean {
|
|
193
|
+
const normalizedPath = sourcePath.replaceAll('\\', '/');
|
|
194
|
+
|
|
195
|
+
if (normalizedPath.includes('node_modules/')) {
|
|
196
|
+
return true;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
if (
|
|
200
|
+
normalizedPath.includes('/examples/') ||
|
|
201
|
+
normalizedPath.includes('/example/')
|
|
202
|
+
) {
|
|
203
|
+
return true;
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
if (
|
|
207
|
+
normalizedPath.includes('.test.') ||
|
|
208
|
+
normalizedPath.includes('.spec.')
|
|
209
|
+
) {
|
|
210
|
+
return true;
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
// This file contains component prop interfaces and HTML element types that
|
|
214
|
+
// are already documented in the Components section
|
|
215
|
+
return normalizedPath.endsWith('components.d.ts');
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
/**
|
|
219
|
+
* Checks if a TypeDoc reflection is defined within Stencil's Components namespace.
|
|
220
|
+
*
|
|
221
|
+
* Stencil generates a Components namespace in components.d.ts containing interfaces
|
|
222
|
+
* for component props. These types are already documented in the Components section
|
|
223
|
+
* and should not be duplicated in the Types section.
|
|
224
|
+
* @param {DeclarationReflection} reflection - The TypeDoc reflection to check
|
|
225
|
+
* @returns {boolean} true if the reflection is in a Components namespace, false otherwise
|
|
226
|
+
*/
|
|
227
|
+
function isInComponentsNamespace(reflection: DeclarationReflection): boolean {
|
|
228
|
+
let current: Reflection | undefined = reflection.parent;
|
|
229
|
+
while (current) {
|
|
230
|
+
if (
|
|
231
|
+
current.kind === ReflectionKind.Namespace &&
|
|
232
|
+
current.name === 'Components'
|
|
233
|
+
) {
|
|
234
|
+
return true;
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
current = current.parent;
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
return false;
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
const fns = {
|
|
244
|
+
[ReflectionKind.Interface]: addInterface,
|
|
245
|
+
[ReflectionKind.Class]: addClass,
|
|
246
|
+
[ReflectionKind.TypeAlias]: addType,
|
|
247
|
+
[ReflectionKind.Enum]: addEnum,
|
|
248
|
+
[ReflectionKind.EnumMember]: addEnumMember,
|
|
249
|
+
};
|
|
250
|
+
|
|
251
|
+
const traverseCallback = (data: any) => (reflection: Reflection) => {
|
|
252
|
+
const fn = fns[reflection.kind];
|
|
253
|
+
if (fn) {
|
|
254
|
+
fn(reflection, data);
|
|
255
|
+
} else {
|
|
256
|
+
reflection.traverse(traverseCallback(data));
|
|
257
|
+
}
|
|
258
|
+
};
|
|
259
|
+
|
|
260
|
+
function addInterface(
|
|
261
|
+
reflection: DeclarationReflection,
|
|
262
|
+
data: InterfaceDescription[],
|
|
263
|
+
) {
|
|
264
|
+
data.push({
|
|
265
|
+
type: 'interface',
|
|
266
|
+
name: reflection.name,
|
|
267
|
+
typeParams: getTypeParams(reflection),
|
|
268
|
+
docs: getDocs(reflection),
|
|
269
|
+
docsTags: getDocsTags(reflection),
|
|
270
|
+
props: reflection.children?.filter(isProperty).map(getProperty) || [],
|
|
271
|
+
methods: reflection.children?.filter(isMethod).map(getMethod) || [],
|
|
272
|
+
sources: getSources(reflection),
|
|
273
|
+
});
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
function addClass(reflection: DeclarationReflection, data: ClassDescription[]) {
|
|
277
|
+
const decorators = getDecorators(reflection);
|
|
278
|
+
|
|
279
|
+
const implementedInterfaces = getImplementedInterfaces(reflection);
|
|
280
|
+
|
|
281
|
+
data.push({
|
|
282
|
+
type: 'class',
|
|
283
|
+
name: reflection.name,
|
|
284
|
+
typeParams: getTypeParams(reflection),
|
|
285
|
+
docs: getDocs(reflection),
|
|
286
|
+
docsTags: getDocsTags(reflection),
|
|
287
|
+
props:
|
|
288
|
+
reflection.children
|
|
289
|
+
?.filter(isProperty)
|
|
290
|
+
.map((prop) =>
|
|
291
|
+
getPropertyWithInheritDoc(prop, implementedInterfaces),
|
|
292
|
+
) || [],
|
|
293
|
+
methods:
|
|
294
|
+
reflection.children
|
|
295
|
+
?.filter(isMethod)
|
|
296
|
+
.map((method) =>
|
|
297
|
+
getMethodWithInheritDoc(method, implementedInterfaces),
|
|
298
|
+
) || [],
|
|
299
|
+
sources: getSources(reflection),
|
|
300
|
+
decorators: decorators,
|
|
301
|
+
});
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
function addType(reflection: DeclarationReflection, data: AliasDescription[]) {
|
|
305
|
+
data.push({
|
|
306
|
+
type: 'alias',
|
|
307
|
+
name: reflection.name,
|
|
308
|
+
docs: getDocs(reflection),
|
|
309
|
+
docsTags: getDocsTags(reflection),
|
|
310
|
+
alias: reflection.type.toString(),
|
|
311
|
+
sources: getSources(reflection),
|
|
312
|
+
});
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
function addEnum(reflection: DeclarationReflection, data: EnumDescription[]) {
|
|
316
|
+
const members = [];
|
|
317
|
+
reflection.traverse(traverseCallback(members));
|
|
318
|
+
|
|
319
|
+
data.push({
|
|
320
|
+
type: 'enum',
|
|
321
|
+
name: reflection.name,
|
|
322
|
+
docs: getDocs(reflection),
|
|
323
|
+
docsTags: getDocsTags(reflection),
|
|
324
|
+
members: members,
|
|
325
|
+
sources: getSources(reflection),
|
|
326
|
+
});
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
function addEnumMember(reflection: DeclarationReflection, data: EnumMember[]) {
|
|
330
|
+
let value: string;
|
|
331
|
+
if (reflection.type && (reflection.type as any).type === 'literal') {
|
|
332
|
+
const literalValue = (reflection.type as any).value;
|
|
333
|
+
if (typeof literalValue === 'string') {
|
|
334
|
+
value = `"${literalValue}"`;
|
|
335
|
+
} else {
|
|
336
|
+
value = String(literalValue);
|
|
337
|
+
}
|
|
338
|
+
} else {
|
|
339
|
+
value = reflection.defaultValue;
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
data.push({
|
|
343
|
+
name: reflection.name,
|
|
344
|
+
docs: getDocs(reflection),
|
|
345
|
+
docsTags: getDocsTags(reflection),
|
|
346
|
+
value: value,
|
|
347
|
+
});
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
function getDocs(reflection: Reflection): string {
|
|
351
|
+
if (!reflection.comment) {
|
|
352
|
+
return '';
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
const text =
|
|
356
|
+
reflection.comment.summary
|
|
357
|
+
?.map((part: any) => part.text)
|
|
358
|
+
.join('')
|
|
359
|
+
.trim() || '';
|
|
360
|
+
|
|
361
|
+
// Normalize multiple newlines to single newlines
|
|
362
|
+
return text.replaceAll(/\n\n+/g, '\n');
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
function getDocsTags(reflection: DeclarationReflection) {
|
|
366
|
+
return reflection.comment?.blockTags?.map(getTag) || [];
|
|
367
|
+
}
|
|
368
|
+
|
|
369
|
+
function getTag(tag: CommentTag): JsonDocsTag {
|
|
370
|
+
// tag already has @ prefix, so remove it
|
|
371
|
+
const tagName = (tag.tag as string).replace(/^@+/, '');
|
|
372
|
+
|
|
373
|
+
return {
|
|
374
|
+
name: tagName,
|
|
375
|
+
text:
|
|
376
|
+
tag.content
|
|
377
|
+
?.map((part: any) => part.text)
|
|
378
|
+
.join('')
|
|
379
|
+
.trim() || '',
|
|
380
|
+
};
|
|
381
|
+
}
|
|
382
|
+
|
|
383
|
+
function isProperty(reflection: DeclarationReflection): boolean {
|
|
384
|
+
if (reflection.kind !== ReflectionKind.Property) {
|
|
385
|
+
return false;
|
|
386
|
+
}
|
|
387
|
+
|
|
388
|
+
const type = reflection.type as any;
|
|
389
|
+
|
|
390
|
+
return !(type?.type === 'reflection' && type.declaration?.signatures);
|
|
391
|
+
}
|
|
392
|
+
|
|
393
|
+
function isMethod(reflection: DeclarationReflection): boolean {
|
|
394
|
+
if (reflection.kind !== ReflectionKind.Property) {
|
|
395
|
+
return false;
|
|
396
|
+
}
|
|
397
|
+
|
|
398
|
+
const type = reflection.type as any;
|
|
399
|
+
|
|
400
|
+
return type?.type === 'reflection' && type.declaration?.signatures;
|
|
401
|
+
}
|
|
402
|
+
|
|
403
|
+
function getProperty(reflection: DeclarationReflection): Partial<JsonDocsProp> {
|
|
404
|
+
return {
|
|
405
|
+
name: reflection.name,
|
|
406
|
+
type: reflection.type.toString(),
|
|
407
|
+
docs: getDocs(reflection),
|
|
408
|
+
docsTags: getDocsTags(reflection),
|
|
409
|
+
default: reflection.defaultValue,
|
|
410
|
+
optional: reflection.flags.isOptional,
|
|
411
|
+
};
|
|
412
|
+
}
|
|
413
|
+
|
|
414
|
+
function getMethod(reflection: DeclarationReflection): MethodDescription {
|
|
415
|
+
const type = reflection.type as any;
|
|
416
|
+
const signature = type?.declaration?.signatures?.[0];
|
|
417
|
+
|
|
418
|
+
if (!signature) {
|
|
419
|
+
return {
|
|
420
|
+
name: reflection.name,
|
|
421
|
+
docs: getDocs(reflection),
|
|
422
|
+
docsTags: [],
|
|
423
|
+
parameters: [],
|
|
424
|
+
returns: { type: 'void', docs: '' },
|
|
425
|
+
};
|
|
426
|
+
}
|
|
427
|
+
|
|
428
|
+
let docs =
|
|
429
|
+
signature.comment?.summary
|
|
430
|
+
?.map((part: any) => part.text)
|
|
431
|
+
.join('')
|
|
432
|
+
.trim() || '';
|
|
433
|
+
// Normalize multiple newlines to single newlines
|
|
434
|
+
docs = docs.replaceAll(/\n\n+/g, '\n');
|
|
435
|
+
|
|
436
|
+
const parameters: ParameterDescription[] =
|
|
437
|
+
signature.parameters?.map((param: any) => ({
|
|
438
|
+
name: param.name,
|
|
439
|
+
type: param.type?.toString() || 'any',
|
|
440
|
+
docs:
|
|
441
|
+
param.comment?.summary
|
|
442
|
+
?.map((part: any) => part.text)
|
|
443
|
+
.join('')
|
|
444
|
+
.trim() || '',
|
|
445
|
+
default: param.defaultValue,
|
|
446
|
+
optional: param.flags?.isOptional || false,
|
|
447
|
+
})) || [];
|
|
448
|
+
|
|
449
|
+
const returnsTag = signature.comment?.blockTags?.find(
|
|
450
|
+
(tag: any) => tag.tag === '@returns',
|
|
451
|
+
);
|
|
452
|
+
const returnsText =
|
|
453
|
+
returnsTag?.content
|
|
454
|
+
?.map((part: any) => part.text)
|
|
455
|
+
.join('')
|
|
456
|
+
.trim() || '';
|
|
457
|
+
|
|
458
|
+
const returns = {
|
|
459
|
+
type: signature.type?.toString() || 'void',
|
|
460
|
+
docs: returnsText,
|
|
461
|
+
};
|
|
462
|
+
|
|
463
|
+
const docsTags =
|
|
464
|
+
signature.comment?.blockTags
|
|
465
|
+
?.filter(
|
|
466
|
+
(tag: any) => tag.tag !== '@param' && tag.tag !== '@returns',
|
|
467
|
+
)
|
|
468
|
+
.map(getTag) || [];
|
|
469
|
+
|
|
470
|
+
return {
|
|
471
|
+
name: reflection.name,
|
|
472
|
+
docs: docs,
|
|
473
|
+
docsTags: docsTags,
|
|
474
|
+
parameters: parameters,
|
|
475
|
+
returns: returns,
|
|
476
|
+
};
|
|
477
|
+
}
|
|
478
|
+
|
|
479
|
+
function getImplementedInterfaces(
|
|
480
|
+
reflection: DeclarationReflection,
|
|
481
|
+
): DeclarationReflection[] {
|
|
482
|
+
const interfaces: DeclarationReflection[] = [];
|
|
483
|
+
|
|
484
|
+
const implemented = (reflection as any).implementedTypes;
|
|
485
|
+
if (implemented) {
|
|
486
|
+
implemented.forEach((type: any) => {
|
|
487
|
+
if (type.reflection) {
|
|
488
|
+
interfaces.push(type.reflection);
|
|
489
|
+
}
|
|
490
|
+
});
|
|
491
|
+
}
|
|
492
|
+
|
|
493
|
+
return interfaces;
|
|
494
|
+
}
|
|
495
|
+
|
|
496
|
+
function getPropertyWithInheritDoc(
|
|
497
|
+
reflection: DeclarationReflection,
|
|
498
|
+
interfaces: DeclarationReflection[],
|
|
499
|
+
): Partial<JsonDocsProp> {
|
|
500
|
+
const prop = getProperty(reflection);
|
|
501
|
+
|
|
502
|
+
const hasInheritDoc = reflection.comment?.blockTags?.some(
|
|
503
|
+
(tag: any) => tag.tag.toLowerCase() === '@inheritdoc',
|
|
504
|
+
);
|
|
505
|
+
|
|
506
|
+
if (hasInheritDoc && interfaces.length > 0) {
|
|
507
|
+
// Try to find the property in implemented interfaces
|
|
508
|
+
for (const iface of interfaces) {
|
|
509
|
+
const interfaceProp = iface.children?.find(
|
|
510
|
+
(child) => child.name === reflection.name,
|
|
511
|
+
);
|
|
512
|
+
if (interfaceProp) {
|
|
513
|
+
return {
|
|
514
|
+
...prop,
|
|
515
|
+
docs: getDocs(interfaceProp),
|
|
516
|
+
docsTags: getDocsTags(interfaceProp),
|
|
517
|
+
};
|
|
518
|
+
}
|
|
519
|
+
}
|
|
520
|
+
}
|
|
521
|
+
|
|
522
|
+
return prop;
|
|
523
|
+
}
|
|
524
|
+
|
|
525
|
+
function getMethodWithInheritDoc(
|
|
526
|
+
reflection: DeclarationReflection,
|
|
527
|
+
interfaces: DeclarationReflection[],
|
|
528
|
+
): MethodDescription {
|
|
529
|
+
const type = reflection.type as any;
|
|
530
|
+
const signature = type?.declaration?.signatures?.[0];
|
|
531
|
+
const hasInheritDoc = signature?.comment?.blockTags?.some(
|
|
532
|
+
(tag: any) => tag.tag.toLowerCase() === '@inheritdoc',
|
|
533
|
+
);
|
|
534
|
+
|
|
535
|
+
if (hasInheritDoc && interfaces.length > 0) {
|
|
536
|
+
for (const iface of interfaces) {
|
|
537
|
+
const interfaceMethod = iface.children?.find(
|
|
538
|
+
(child) => child.name === reflection.name,
|
|
539
|
+
);
|
|
540
|
+
if (interfaceMethod) {
|
|
541
|
+
return getMethod(interfaceMethod);
|
|
542
|
+
}
|
|
543
|
+
}
|
|
544
|
+
}
|
|
545
|
+
|
|
546
|
+
return getMethod(reflection);
|
|
547
|
+
}
|
|
548
|
+
|
|
549
|
+
/**
|
|
550
|
+
* Extract decorator information from TypeScript source code using AST parsing
|
|
551
|
+
*
|
|
552
|
+
* TypeDoc 0.23 removed the decorators property from DeclarationReflection,
|
|
553
|
+
* which was present in 0.17. This function works around that limitation by
|
|
554
|
+
* parsing the original TypeScript source files to extract decorator information.
|
|
555
|
+
* @param {DeclarationReflection} reflection - The TypeDoc reflection to extract decorators from
|
|
556
|
+
* @returns {DecoratorDescription[]} Array of decorator descriptions with names and arguments
|
|
557
|
+
* @remarks
|
|
558
|
+
* This is a workaround for incomplete TypeDoc 0.23 API. TypeDoc removed
|
|
559
|
+
* decorator information from their reflection model, but decorators are
|
|
560
|
+
* essential for documenting Stencil components (e.g., @Component, @Prop).
|
|
561
|
+
*
|
|
562
|
+
* Performance considerations:
|
|
563
|
+
* - Reads and parses source files on demand (I/O + parsing overhead)
|
|
564
|
+
* - Caches nothing - each call re-parses the file
|
|
565
|
+
* - For large codebases, consider caching parsed source files
|
|
566
|
+
*
|
|
567
|
+
* Known limitations:
|
|
568
|
+
* - Only extracts class-level decorators, not property/method decorators
|
|
569
|
+
* - Decorator arguments are captured as raw text, not parsed
|
|
570
|
+
* - Fails silently if source file is unavailable or parsing fails
|
|
571
|
+
* - Depends on TypeScript AST structure (may break with TS version changes)
|
|
572
|
+
* @example
|
|
573
|
+
* ```typescript
|
|
574
|
+
* // For a class like:
|
|
575
|
+
* @Component({ tag: 'my-component' })
|
|
576
|
+
* class MyComponent { }
|
|
577
|
+
*
|
|
578
|
+
* // Returns:
|
|
579
|
+
* [{
|
|
580
|
+
* name: 'Component',
|
|
581
|
+
* arguments: { _config: "{ tag: 'my-component' }" }
|
|
582
|
+
* }]
|
|
583
|
+
* ```
|
|
584
|
+
*/
|
|
585
|
+
function getDecorators(
|
|
586
|
+
reflection: DeclarationReflection,
|
|
587
|
+
): DecoratorDescription[] {
|
|
588
|
+
if (!reflection.sources || reflection.sources.length === 0) {
|
|
589
|
+
return [];
|
|
590
|
+
}
|
|
591
|
+
|
|
592
|
+
const source = reflection.sources[0];
|
|
593
|
+
const fileName = source.fullFileName || source.fileName;
|
|
594
|
+
|
|
595
|
+
if (!existsSync(fileName)) {
|
|
596
|
+
return [];
|
|
597
|
+
}
|
|
598
|
+
|
|
599
|
+
try {
|
|
600
|
+
const sourceFile = ts.createSourceFile(
|
|
601
|
+
fileName,
|
|
602
|
+
readFileSync(fileName, 'utf8'),
|
|
603
|
+
ts.ScriptTarget.Latest,
|
|
604
|
+
true,
|
|
605
|
+
);
|
|
606
|
+
|
|
607
|
+
let decorators: DecoratorDescription[] = [];
|
|
608
|
+
|
|
609
|
+
const visit = (node: ts.Node): void => {
|
|
610
|
+
if (
|
|
611
|
+
ts.isClassDeclaration(node) &&
|
|
612
|
+
node.name?.getText() === reflection.name
|
|
613
|
+
) {
|
|
614
|
+
let nodeDecorators;
|
|
615
|
+
if (ts.canHaveDecorators(node)) {
|
|
616
|
+
nodeDecorators = ts.getDecorators(node);
|
|
617
|
+
}
|
|
618
|
+
|
|
619
|
+
if (nodeDecorators) {
|
|
620
|
+
decorators = nodeDecorators.map((decorator: any) => {
|
|
621
|
+
const expression = decorator.expression;
|
|
622
|
+
let name = '';
|
|
623
|
+
let args: any = {};
|
|
624
|
+
|
|
625
|
+
if (ts.isCallExpression(expression)) {
|
|
626
|
+
name = expression.expression.getText();
|
|
627
|
+
if (expression.arguments.length > 0) {
|
|
628
|
+
args = {
|
|
629
|
+
_config: expression.arguments[0].getText(),
|
|
630
|
+
};
|
|
631
|
+
}
|
|
632
|
+
} else {
|
|
633
|
+
name = expression.getText();
|
|
634
|
+
}
|
|
635
|
+
|
|
636
|
+
return { name: name, arguments: args };
|
|
637
|
+
});
|
|
638
|
+
}
|
|
639
|
+
}
|
|
640
|
+
|
|
641
|
+
ts.forEachChild(node, visit);
|
|
642
|
+
};
|
|
643
|
+
|
|
644
|
+
visit(sourceFile);
|
|
645
|
+
|
|
646
|
+
return decorators;
|
|
647
|
+
} catch (error) {
|
|
648
|
+
// eslint-disable-next-line no-console
|
|
649
|
+
console.warn('Failed to parse decorators:', error);
|
|
650
|
+
|
|
651
|
+
return [];
|
|
652
|
+
}
|
|
653
|
+
}
|
|
654
|
+
|
|
655
|
+
function getTypeParams(reflection: DeclarationReflection) {
|
|
656
|
+
return (
|
|
657
|
+
reflection.typeParameters?.map((param) => ({
|
|
658
|
+
name: param.name,
|
|
659
|
+
})) || []
|
|
660
|
+
);
|
|
661
|
+
}
|
|
662
|
+
|
|
663
|
+
function getSources(reflection: DeclarationReflection) {
|
|
664
|
+
return reflection.sources?.map((source) => source.fileName) || [];
|
|
665
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Utility functions for handling anchor link scrolling in shadow DOM components.
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Get the current route from the URL hash (without the leading #).
|
|
6
|
+
*
|
|
7
|
+
* For hash-based routing where the entire hash is the route.
|
|
8
|
+
* Example: "#/component/limel-button/examples/" → "/component/limel-button/examples/"
|
|
9
|
+
* @returns {string} The route extracted from the URL hash
|
|
10
|
+
*/
|
|
11
|
+
export declare function getRoute(): string;
|
|
12
|
+
/**
|
|
13
|
+
* Extract the anchor ID from the current URL hash.
|
|
14
|
+
*
|
|
15
|
+
* Handles both simple anchors (#section) and route-based anchors (#/guide/page#section).
|
|
16
|
+
* Returns null if no valid anchor is found.
|
|
17
|
+
*
|
|
18
|
+
* Example: "#/guide/changelog#v2-features" → "v2-features"
|
|
19
|
+
* @returns {string | null} The anchor ID or null if not found
|
|
20
|
+
*/
|
|
21
|
+
export declare function getAnchorId(): string | null;
|
|
22
|
+
/**
|
|
23
|
+
* Scroll to an anchor element within a shadow root.
|
|
24
|
+
*
|
|
25
|
+
* Uses requestAnimationFrame to ensure the DOM is ready before scrolling.
|
|
26
|
+
* @param {ShadowRoot} shadowRoot - The shadow root to search for the element
|
|
27
|
+
* @param {ScrollBehavior} behavior - Scroll behavior ('auto' or 'smooth')
|
|
28
|
+
*/
|
|
29
|
+
export declare function scrollToAnchor(shadowRoot: ShadowRoot, behavior?: ScrollBehavior): void;
|
|
30
|
+
/**
|
|
31
|
+
* Scroll to a specific element by ID within a shadow root.
|
|
32
|
+
* @param {ShadowRoot} shadowRoot - The shadow root to search for the element
|
|
33
|
+
* @param {string} id - The element ID to scroll to
|
|
34
|
+
* @param {ScrollBehavior} behavior - Scroll behavior ('auto' or 'smooth')
|
|
35
|
+
*/
|
|
36
|
+
export declare function scrollToElement(shadowRoot: ShadowRoot, id: string, behavior?: ScrollBehavior): void;
|