@contentful/experience-design-system-extraction 2.36.2-dev-build-a6f80ae6.0 → 2.36.2-dev-build-7907fec3.0
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/dist/package.json +1 -1
- package/dist/src/extract/controller/extract-controller.d.ts +10 -0
- package/dist/src/extract/controller/extract-controller.js +33 -0
- package/dist/src/extract/controller/helpers/validate-endpoint-request.d.ts +2 -0
- package/dist/src/extract/controller/helpers/validate-endpoint-request.js +24 -0
- package/dist/src/extract/{astro.d.ts → framework-adapters/astro/extractor.d.ts} +1 -1
- package/dist/src/extract/framework-adapters/astro/extractor.js +45 -0
- package/dist/src/extract/framework-adapters/astro/frontmatter.d.ts +11 -0
- package/dist/src/extract/framework-adapters/astro/frontmatter.js +96 -0
- package/dist/src/extract/framework-adapters/astro/helpers/collect-astro-props-bindings.d.ts +4 -0
- package/dist/src/extract/framework-adapters/astro/helpers/collect-astro-props-bindings.js +47 -0
- package/dist/src/extract/framework-adapters/astro/slots.d.ts +7 -0
- package/dist/src/extract/framework-adapters/astro/slots.js +44 -0
- package/dist/src/extract/{react.d.ts → framework-adapters/react/extractor.d.ts} +1 -1
- package/dist/src/extract/framework-adapters/react/extractor.js +31 -0
- package/dist/src/extract/framework-adapters/react/helpers/collect-dom-wrapper-contexts.d.ts +4 -0
- package/dist/src/extract/framework-adapters/react/helpers/collect-dom-wrapper-contexts.js +73 -0
- package/dist/src/extract/framework-adapters/react/helpers/collect-prop-dataflow.d.ts +14 -0
- package/dist/src/extract/framework-adapters/react/helpers/collect-prop-dataflow.js +220 -0
- package/dist/src/extract/framework-adapters/react/helpers/collect-react-impl-hints.d.ts +5 -0
- package/dist/src/extract/framework-adapters/react/helpers/collect-react-impl-hints.js +32 -0
- package/dist/src/extract/framework-adapters/react/helpers/detect-dom-is-pure-wrapper.d.ts +2 -0
- package/dist/src/extract/framework-adapters/react/helpers/detect-dom-is-pure-wrapper.js +59 -0
- package/dist/src/extract/framework-adapters/react/helpers/detect-dom-type-patterns.d.ts +8 -0
- package/dist/src/extract/framework-adapters/react/helpers/detect-dom-type-patterns.js +29 -0
- package/dist/src/extract/framework-adapters/react/helpers/detect-omit-wrapped-custom-props.d.ts +2 -0
- package/dist/src/extract/framework-adapters/react/helpers/detect-omit-wrapped-custom-props.js +64 -0
- package/dist/src/extract/framework-adapters/react/helpers/detect-pick-type-patterns.d.ts +4 -0
- package/dist/src/extract/framework-adapters/react/helpers/detect-pick-type-patterns.js +64 -0
- package/dist/src/extract/framework-adapters/react/helpers/detect-react-polymorphic.d.ts +5 -0
- package/dist/src/extract/framework-adapters/react/helpers/detect-react-polymorphic.js +170 -0
- package/dist/src/extract/framework-adapters/react/helpers/dom-attribute-surfaces.d.ts +15 -0
- package/dist/src/extract/framework-adapters/react/helpers/dom-attribute-surfaces.js +231 -0
- package/dist/src/extract/framework-adapters/react/helpers/extract-binding-fallback-props.d.ts +4 -0
- package/dist/src/extract/framework-adapters/react/helpers/extract-binding-fallback-props.js +50 -0
- package/dist/src/extract/framework-adapters/react/helpers/extract-from-react-source-file.d.ts +5 -0
- package/dist/src/extract/framework-adapters/react/helpers/extract-from-react-source-file.js +23 -0
- package/dist/src/extract/framework-adapters/react/helpers/extract-react-allowed-components.d.ts +2 -0
- package/dist/src/extract/framework-adapters/react/helpers/extract-react-allowed-components.js +25 -0
- package/dist/src/extract/framework-adapters/react/helpers/extract-react-binding-defaults.d.ts +6 -0
- package/dist/src/extract/framework-adapters/react/helpers/extract-react-binding-defaults.js +48 -0
- package/dist/src/extract/framework-adapters/react/helpers/extract-react-component-from-export.d.ts +15 -0
- package/dist/src/extract/framework-adapters/react/helpers/extract-react-component-from-export.js +106 -0
- package/dist/src/extract/framework-adapters/react/helpers/extract-react-prop-types.d.ts +3 -0
- package/dist/src/extract/framework-adapters/react/helpers/extract-react-prop-types.js +64 -0
- package/dist/src/extract/framework-adapters/react/helpers/extract-react-props-from-type.d.ts +15 -0
- package/dist/src/extract/framework-adapters/react/helpers/extract-react-props-from-type.js +318 -0
- package/dist/src/extract/framework-adapters/react/helpers/extract-react-slots.d.ts +6 -0
- package/dist/src/extract/framework-adapters/react/helpers/extract-react-slots.js +44 -0
- package/dist/src/extract/framework-adapters/react/helpers/filter-impl-alias-props.d.ts +4 -0
- package/dist/src/extract/framework-adapters/react/helpers/filter-impl-alias-props.js +52 -0
- package/dist/src/extract/framework-adapters/react/helpers/infer-primitive-dom-props.d.ts +6 -0
- package/dist/src/extract/framework-adapters/react/helpers/infer-primitive-dom-props.js +69 -0
- package/dist/src/extract/framework-adapters/react/helpers/resolve-component-function.d.ts +4 -0
- package/dist/src/extract/framework-adapters/react/helpers/resolve-component-function.js +131 -0
- package/dist/src/extract/framework-adapters/react/helpers/resolve-react-prop-forwarding.d.ts +8 -0
- package/dist/src/extract/framework-adapters/react/helpers/resolve-react-prop-forwarding.js +22 -0
- package/dist/src/extract/framework-adapters/react/helpers/resolve-react-props-type.d.ts +14 -0
- package/dist/src/extract/framework-adapters/react/helpers/resolve-react-props-type.js +86 -0
- package/dist/src/extract/framework-adapters/react/helpers/synthesize-react-structural-slots.d.ts +8 -0
- package/dist/src/extract/framework-adapters/react/helpers/synthesize-react-structural-slots.js +44 -0
- package/dist/src/extract/framework-adapters/shared/helpers/build-component-lookup-maps.d.ts +5 -0
- package/dist/src/extract/framework-adapters/shared/helpers/build-component-lookup-maps.js +10 -0
- package/dist/src/extract/framework-adapters/shared/helpers/collect-jsdoc-slot-comments.d.ts +2 -0
- package/dist/src/extract/framework-adapters/shared/helpers/collect-jsdoc-slot-comments.js +13 -0
- package/dist/src/extract/{file-extraction-workers.d.ts → framework-adapters/shared/helpers/file-processing/file-workers.d.ts} +1 -13
- package/dist/src/extract/{file-extraction-workers.js → framework-adapters/shared/helpers/file-processing/file-workers.js} +0 -19
- package/dist/src/extract/framework-adapters/shared/helpers/file-processing/project-source-files.d.ts +5 -0
- package/dist/src/extract/framework-adapters/shared/helpers/file-processing/project-source-files.js +13 -0
- package/dist/src/extract/framework-adapters/shared/helpers/file-processing/result-normalizer.d.ts +6 -0
- package/dist/src/extract/framework-adapters/shared/helpers/file-processing/result-normalizer.js +6 -0
- package/dist/src/extract/framework-adapters/shared/helpers/find-tsx-workspace-package.d.ts +2 -0
- package/dist/src/extract/framework-adapters/shared/helpers/find-tsx-workspace-package.js +62 -0
- package/dist/src/extract/{source-line-metadata.d.ts → framework-adapters/shared/helpers/get-node-source-lines.d.ts} +1 -1
- package/dist/src/extract/framework-adapters/shared/helpers/resolve-tsx-tsconfig-path.d.ts +7 -0
- package/dist/src/extract/framework-adapters/shared/helpers/resolve-tsx-tsconfig-path.js +93 -0
- package/dist/src/extract/framework-adapters/shared/helpers/resolve-tsx-workspace-imports.d.ts +6 -0
- package/dist/src/extract/framework-adapters/shared/helpers/resolve-tsx-workspace-imports.js +58 -0
- package/dist/src/extract/framework-adapters/shared/helpers/tsx-node-utils.d.ts +13 -0
- package/dist/src/extract/framework-adapters/shared/helpers/tsx-node-utils.js +76 -0
- package/dist/src/extract/framework-adapters/shared/helpers/tsx-renderable-exports.d.ts +12 -0
- package/dist/src/extract/framework-adapters/shared/helpers/tsx-renderable-exports.js +35 -0
- package/dist/src/extract/framework-adapters/shared/helpers/tsx-shared.d.ts +14 -0
- package/dist/src/extract/framework-adapters/shared/helpers/tsx-shared.js +54 -0
- package/dist/src/extract/{stencil.d.ts → framework-adapters/stencil/extractor.d.ts} +1 -1
- package/dist/src/extract/framework-adapters/stencil/extractor.js +82 -0
- package/dist/src/extract/framework-adapters/stencil/helpers/detect-stencil-class.d.ts +7 -0
- package/dist/src/extract/framework-adapters/stencil/helpers/detect-stencil-class.js +32 -0
- package/dist/src/extract/framework-adapters/stencil/helpers/extract-stencil-props.d.ts +5 -0
- package/dist/src/extract/framework-adapters/stencil/helpers/extract-stencil-props.js +62 -0
- package/dist/src/extract/framework-adapters/stencil/helpers/extract-stencil-slots.d.ts +6 -0
- package/dist/src/extract/framework-adapters/stencil/helpers/extract-stencil-slots.js +87 -0
- package/dist/src/extract/framework-adapters/stencil/helpers/stencil-prop-helpers.d.ts +5 -0
- package/dist/src/extract/framework-adapters/stencil/helpers/stencil-prop-helpers.js +39 -0
- package/dist/src/extract/{svelte.d.ts → framework-adapters/svelte/extractor.d.ts} +2 -1
- package/dist/src/extract/framework-adapters/svelte/extractor.js +27 -0
- package/dist/src/extract/framework-adapters/svelte/helpers/classify-svelte-props-annotation.d.ts +6 -0
- package/dist/src/extract/framework-adapters/svelte/helpers/classify-svelte-props-annotation.js +51 -0
- package/dist/src/extract/framework-adapters/svelte/helpers/collect-svelte-type-references.d.ts +3 -0
- package/dist/src/extract/framework-adapters/svelte/helpers/collect-svelte-type-references.js +52 -0
- package/dist/src/extract/framework-adapters/svelte/helpers/extract-from-svelte-file.d.ts +7 -0
- package/dist/src/extract/framework-adapters/svelte/helpers/extract-from-svelte-file.js +90 -0
- package/dist/src/extract/framework-adapters/svelte/helpers/extract-svelte-ast-type-members.d.ts +15 -0
- package/dist/src/extract/framework-adapters/svelte/helpers/extract-svelte-ast-type-members.js +46 -0
- package/dist/src/extract/framework-adapters/svelte/helpers/extract-svelte-declaration-data.d.ts +7 -0
- package/dist/src/extract/framework-adapters/svelte/helpers/extract-svelte-declaration-data.js +64 -0
- package/dist/src/extract/framework-adapters/svelte/helpers/extract-svelte-external-type-members.d.ts +4 -0
- package/dist/src/extract/framework-adapters/svelte/helpers/extract-svelte-external-type-members.js +58 -0
- package/dist/src/extract/framework-adapters/svelte/helpers/extract-svelte-from-destructure.d.ts +4 -0
- package/dist/src/extract/framework-adapters/svelte/helpers/extract-svelte-from-destructure.js +85 -0
- package/dist/src/extract/framework-adapters/svelte/helpers/extract-svelte-props.d.ts +22 -0
- package/dist/src/extract/framework-adapters/svelte/helpers/extract-svelte-props.js +55 -0
- package/dist/src/extract/framework-adapters/svelte/helpers/extract-svelte-template-slots.d.ts +7 -0
- package/dist/src/extract/framework-adapters/svelte/helpers/extract-svelte-template-slots.js +63 -0
- package/dist/src/extract/framework-adapters/svelte/helpers/extract-svelte-type-member-props.d.ts +3 -0
- package/dist/src/extract/framework-adapters/svelte/helpers/extract-svelte-type-member-props.js +31 -0
- package/dist/src/extract/framework-adapters/svelte/helpers/find-svelte-script-declarations.d.ts +8 -0
- package/dist/src/extract/framework-adapters/svelte/helpers/find-svelte-script-declarations.js +91 -0
- package/dist/src/extract/framework-adapters/svelte/helpers/get-svelte-component-name.d.ts +1 -0
- package/dist/src/extract/framework-adapters/svelte/helpers/get-svelte-component-name.js +26 -0
- package/dist/src/extract/framework-adapters/svelte/helpers/render-svelte-type-strings.d.ts +3 -0
- package/dist/src/extract/framework-adapters/svelte/helpers/render-svelte-type-strings.js +91 -0
- package/dist/src/extract/framework-adapters/svelte/helpers/render-svelte-type.d.ts +11 -0
- package/dist/src/extract/framework-adapters/svelte/helpers/render-svelte-type.js +68 -0
- package/dist/src/extract/framework-adapters/svelte/helpers/resolve-dts-location.d.ts +1 -0
- package/dist/src/extract/framework-adapters/svelte/helpers/resolve-dts-location.js +90 -0
- package/dist/src/extract/framework-adapters/svelte/helpers/resolve-svelte-allowed-components.d.ts +2 -0
- package/dist/src/extract/framework-adapters/svelte/helpers/resolve-svelte-allowed-components.js +20 -0
- package/dist/src/extract/framework-adapters/svelte/helpers/resolve-svelte-external-type-readers.d.ts +3 -0
- package/dist/src/extract/framework-adapters/svelte/helpers/resolve-svelte-external-type-readers.js +68 -0
- package/dist/src/extract/framework-adapters/svelte/helpers/resolve-svelte-type-checker.d.ts +4 -0
- package/dist/src/extract/framework-adapters/svelte/helpers/resolve-svelte-type-checker.js +68 -0
- package/dist/src/extract/framework-adapters/svelte/helpers/resolve-svelte-type-members.d.ts +6 -0
- package/dist/src/extract/framework-adapters/svelte/helpers/resolve-svelte-type-members.js +30 -0
- package/dist/src/extract/framework-adapters/svelte/helpers/resolve-svelte-unresolved-retry.d.ts +13 -0
- package/dist/src/extract/framework-adapters/svelte/helpers/resolve-svelte-unresolved-retry.js +192 -0
- package/dist/src/extract/framework-adapters/svelte/types/svelte-ast-node.d.ts +12 -0
- package/dist/src/extract/framework-adapters/svelte/types/svelte-ast-node.js +1 -0
- package/dist/src/extract/{vue.d.ts → framework-adapters/vue/extractor.d.ts} +1 -1
- package/dist/src/extract/framework-adapters/vue/extractor.js +61 -0
- package/dist/src/extract/framework-adapters/vue/helpers/extract-vue-object-props.d.ts +3 -0
- package/dist/src/extract/framework-adapters/vue/helpers/extract-vue-object-props.js +67 -0
- package/dist/src/extract/framework-adapters/vue/helpers/extract-vue-options-props.d.ts +4 -0
- package/dist/src/extract/framework-adapters/vue/helpers/extract-vue-options-props.js +72 -0
- package/dist/src/extract/framework-adapters/vue/helpers/extract-vue-setup-object-props.d.ts +8 -0
- package/dist/src/extract/framework-adapters/vue/helpers/extract-vue-setup-object-props.js +64 -0
- package/dist/src/extract/framework-adapters/vue/helpers/extract-vue-setup-props.d.ts +2 -0
- package/dist/src/extract/framework-adapters/vue/helpers/extract-vue-setup-props.js +66 -0
- package/dist/src/extract/framework-adapters/vue/helpers/extract-vue-slots.d.ts +24 -0
- package/dist/src/extract/framework-adapters/vue/helpers/extract-vue-slots.js +56 -0
- package/dist/src/extract/framework-adapters/vue/helpers/resolve-vue-component-name.d.ts +2 -0
- package/dist/src/extract/framework-adapters/vue/helpers/resolve-vue-component-name.js +9 -0
- package/dist/src/extract/framework-adapters/vue/helpers/resolve-workspace-module.d.ts +1 -0
- package/dist/src/extract/framework-adapters/vue/helpers/resolve-workspace-module.js +76 -0
- package/dist/src/extract/framework-adapters/vue/helpers/workspace-package-dirs.d.ts +2 -0
- package/dist/src/extract/framework-adapters/vue/helpers/workspace-package-dirs.js +77 -0
- package/dist/src/extract/{vue-tsx.d.ts → framework-adapters/vue-tsx/extractor.d.ts} +1 -1
- package/dist/src/extract/framework-adapters/vue-tsx/extractor.js +82 -0
- package/dist/src/extract/framework-adapters/vue-tsx/helpers/extract-vue-tsx-props.d.ts +5 -0
- package/dist/src/extract/framework-adapters/vue-tsx/helpers/extract-vue-tsx-props.js +189 -0
- package/dist/src/extract/framework-adapters/vue-tsx/helpers/extract-vue-tsx-slots.d.ts +4 -0
- package/dist/src/extract/framework-adapters/vue-tsx/helpers/extract-vue-tsx-slots.js +91 -0
- package/dist/src/extract/framework-adapters/vue-tsx/helpers/resolve-ast-object.d.ts +11 -0
- package/dist/src/extract/framework-adapters/vue-tsx/helpers/resolve-ast-object.js +95 -0
- package/dist/src/extract/{web-components.d.ts → framework-adapters/web-components/extractor.d.ts} +1 -1
- package/dist/src/extract/framework-adapters/web-components/extractor.js +55 -0
- package/dist/src/extract/framework-adapters/web-components/helpers/collect-wc-html-templates.d.ts +4 -0
- package/dist/src/extract/framework-adapters/web-components/helpers/collect-wc-html-templates.js +67 -0
- package/dist/src/extract/framework-adapters/web-components/helpers/detect-wc-non-public-members.d.ts +9 -0
- package/dist/src/extract/framework-adapters/web-components/helpers/detect-wc-non-public-members.js +11 -0
- package/dist/src/extract/framework-adapters/web-components/helpers/extract-wc-accessor-props.d.ts +3 -0
- package/dist/src/extract/framework-adapters/web-components/helpers/extract-wc-accessor-props.js +65 -0
- package/dist/src/extract/framework-adapters/web-components/helpers/extract-wc-class-properties.d.ts +3 -0
- package/dist/src/extract/framework-adapters/web-components/helpers/extract-wc-class-properties.js +60 -0
- package/dist/src/extract/framework-adapters/web-components/helpers/extract-wc-inheritance.d.ts +4 -0
- package/dist/src/extract/framework-adapters/web-components/helpers/extract-wc-inheritance.js +16 -0
- package/dist/src/extract/framework-adapters/web-components/helpers/extract-wc-jsdoc-attr-props.d.ts +3 -0
- package/dist/src/extract/framework-adapters/web-components/helpers/extract-wc-jsdoc-attr-props.js +24 -0
- package/dist/src/extract/framework-adapters/web-components/helpers/extract-wc-observed-attrs.d.ts +3 -0
- package/dist/src/extract/framework-adapters/web-components/helpers/extract-wc-observed-attrs.js +27 -0
- package/dist/src/extract/framework-adapters/web-components/helpers/extract-wc-slots.d.ts +6 -0
- package/dist/src/extract/framework-adapters/web-components/helpers/extract-wc-slots.js +56 -0
- package/dist/src/extract/framework-adapters/web-components/helpers/extract-wc-template-content.d.ts +4 -0
- package/dist/src/extract/framework-adapters/web-components/helpers/extract-wc-template-content.js +49 -0
- package/dist/src/extract/framework-adapters/web-components/helpers/merge-wc-prop-lists.d.ts +9 -0
- package/dist/src/extract/framework-adapters/web-components/helpers/merge-wc-prop-lists.js +19 -0
- package/dist/src/extract/framework-adapters/web-components/helpers/resolve-wc-base-class.d.ts +2 -0
- package/dist/src/extract/framework-adapters/web-components/helpers/resolve-wc-base-class.js +59 -0
- package/dist/src/extract/framework-adapters/web-components/helpers/resolve-wc-decorator-tag.d.ts +2 -0
- package/dist/src/extract/framework-adapters/web-components/helpers/resolve-wc-decorator-tag.js +54 -0
- package/dist/src/extract/framework-adapters/web-components/helpers/resolve-wc-import-source.d.ts +7 -0
- package/dist/src/extract/framework-adapters/web-components/helpers/resolve-wc-import-source.js +47 -0
- package/dist/src/extract/framework-adapters/web-components/helpers/resolve-wc-import.d.ts +4 -0
- package/dist/src/extract/framework-adapters/web-components/helpers/resolve-wc-import.js +93 -0
- package/dist/src/extract/framework-adapters/web-components/helpers/resolve-wc-sibling-definition.d.ts +4 -0
- package/dist/src/extract/framework-adapters/web-components/helpers/resolve-wc-sibling-definition.js +79 -0
- package/dist/src/extract/framework-adapters/web-components/helpers/resolve-wc-tag-name.d.ts +7 -0
- package/dist/src/extract/framework-adapters/web-components/helpers/resolve-wc-tag-name.js +62 -0
- package/dist/src/extract/helpers/evidence/ast/collect-structural-jsx-evidence.d.ts +5 -0
- package/dist/src/extract/helpers/evidence/ast/collect-structural-jsx-evidence.js +63 -0
- package/dist/src/extract/helpers/evidence/ast/detect-react-node-types.d.ts +2 -0
- package/dist/src/extract/helpers/evidence/ast/detect-react-node-types.js +24 -0
- package/dist/src/extract/helpers/evidence/ast/get-jsx-ast-data.d.ts +14 -0
- package/dist/src/extract/helpers/evidence/ast/get-jsx-ast-data.js +85 -0
- package/dist/src/extract/helpers/evidence/collect-jsx-component-references.d.ts +5 -0
- package/dist/src/extract/helpers/evidence/collect-jsx-component-references.js +52 -0
- package/dist/src/extract/helpers/evidence/detect-slot-from-prop.d.ts +16 -0
- package/dist/src/extract/helpers/evidence/detect-slot-from-prop.js +39 -0
- package/dist/src/extract/orchestrator/execute-extraction-orchestrator.d.ts +13 -0
- package/dist/src/extract/orchestrator/execute-extraction-orchestrator.js +17 -0
- package/dist/src/{pre-classify.d.ts → extract/services/classification/classify-component-props.d.ts} +3 -5
- package/dist/src/{pre-classify.js → extract/services/classification/classify-component-props.js} +8 -100
- package/dist/src/extract/services/classification/helpers/check-prop-types.d.ts +7 -0
- package/dist/src/extract/services/classification/helpers/check-prop-types.js +22 -0
- package/dist/src/extract/services/classification/helpers/detect-dom-props.d.ts +2 -0
- package/dist/src/extract/services/classification/helpers/detect-dom-props.js +63 -0
- package/dist/src/extract/services/deduplication/deduplicate-components.d.ts +2 -0
- package/dist/src/extract/services/deduplication/deduplicate-components.js +58 -0
- package/dist/src/extract/services/deduplication/helpers/component-path-analysis.d.ts +10 -0
- package/dist/src/extract/services/deduplication/helpers/component-path-analysis.js +85 -0
- package/dist/src/extract/services/deduplication/helpers/component-path-scoring.d.ts +10 -0
- package/dist/src/extract/services/deduplication/helpers/component-path-scoring.js +73 -0
- package/dist/src/extract/services/extraction/extract-components.d.ts +3 -0
- package/dist/src/extract/services/extraction/extract-components.js +19 -0
- package/dist/src/extract/services/extraction/helpers/collect-sveltekit-route-exclusions.d.ts +2 -0
- package/dist/src/extract/services/extraction/helpers/collect-sveltekit-route-exclusions.js +18 -0
- package/dist/src/extract/services/extraction/helpers/filter-hook-components.d.ts +6 -0
- package/dist/src/extract/services/extraction/helpers/filter-hook-components.js +18 -0
- package/dist/src/extract/services/extraction/helpers/register-extractors.d.ts +8 -0
- package/dist/src/extract/services/extraction/helpers/register-extractors.js +71 -0
- package/dist/src/extract/services/extraction/helpers/run-extractor-batches.d.ts +4 -0
- package/dist/src/extract/services/extraction/helpers/run-extractor-batches.js +24 -0
- package/dist/src/extract/services/quality/evaluate-extraction-quality.d.ts +4 -0
- package/dist/src/extract/services/quality/evaluate-extraction-quality.js +61 -0
- package/dist/src/extract/services/quality/helpers/authorability/evaluate-authorability.d.ts +28 -0
- package/dist/src/extract/services/quality/helpers/authorability/evaluate-authorability.js +67 -0
- package/dist/src/extract/services/quality/helpers/inspection/detect-data-wrapper-patterns.d.ts +16 -0
- package/dist/src/extract/services/quality/helpers/inspection/detect-data-wrapper-patterns.js +63 -0
- package/dist/src/extract/{source-inspection.d.ts → services/quality/helpers/inspection/inspect-component-source.d.ts} +3 -6
- package/dist/src/extract/{source-inspection.js → services/quality/helpers/inspection/inspect-component-source.js} +5 -65
- package/dist/src/extract/{validate.d.ts → services/quality/helpers/inspection/validate-extracted-components.d.ts} +1 -1
- package/dist/src/extract/services/quality/helpers/scoring/collect-scoring-inputs.d.ts +14 -0
- package/dist/src/extract/{scoring.js → services/quality/helpers/scoring/collect-scoring-inputs.js} +10 -24
- package/dist/src/extract/services/quality/helpers/scoring/compute-extraction-score.d.ts +6 -0
- package/dist/src/extract/services/quality/helpers/scoring/compute-extraction-score.js +12 -0
- package/dist/src/extract/types/classification.d.ts +4 -0
- package/dist/src/extract/types/classification.js +1 -0
- package/dist/src/extract/types/component-extractor.d.ts +7 -0
- package/dist/src/extract/types/component-extractor.js +1 -0
- package/dist/src/{types.d.ts → extract/types/component.d.ts} +0 -22
- package/dist/src/extract/types/component.js +1 -0
- package/dist/src/extract/types/contract.d.ts +16 -0
- package/dist/src/extract/types/contract.js +1 -0
- package/dist/src/extract/types/display.d.ts +3 -0
- package/dist/src/{types.js → extract/types/display.js} +1 -1
- package/dist/src/extract/types/options.d.ts +15 -0
- package/dist/src/extract/types/options.js +1 -0
- package/dist/src/extract/types/scoring.d.ts +9 -0
- package/dist/src/extract/types/scoring.js +1 -0
- package/dist/src/extract/types/source-inspection.d.ts +5 -0
- package/dist/src/extract/types/source-inspection.js +1 -0
- package/dist/src/index.d.ts +27 -21
- package/dist/src/index.js +21 -17
- package/package.json +1 -1
- package/dist/src/extract/astro.js +0 -226
- package/dist/src/extract/non-authorable-filter.d.ts +0 -17
- package/dist/src/extract/non-authorable-filter.js +0 -60
- package/dist/src/extract/pipeline.d.ts +0 -7
- package/dist/src/extract/pipeline.js +0 -343
- package/dist/src/extract/react.js +0 -2069
- package/dist/src/extract/scoring.d.ts +0 -12
- package/dist/src/extract/slot-detection.d.ts +0 -35
- package/dist/src/extract/slot-detection.js +0 -98
- package/dist/src/extract/stencil.js +0 -312
- package/dist/src/extract/structural-slot-evidence.d.ts +0 -63
- package/dist/src/extract/structural-slot-evidence.js +0 -278
- package/dist/src/extract/svelte.js +0 -1309
- package/dist/src/extract/tsx-shared.d.ts +0 -37
- package/dist/src/extract/tsx-shared.js +0 -368
- package/dist/src/extract/vue-tsx.js +0 -449
- package/dist/src/extract/vue.js +0 -605
- package/dist/src/extract/web-components.js +0 -863
- /package/dist/src/extract/{source-line-metadata.js → framework-adapters/shared/helpers/get-node-source-lines.js} +0 -0
- /package/dist/src/extract/{resolve-local-module.d.ts → framework-adapters/shared/helpers/resolve-import-file-path.d.ts} +0 -0
- /package/dist/src/extract/{resolve-local-module.js → framework-adapters/shared/helpers/resolve-import-file-path.js} +0 -0
- /package/dist/src/extract/{resolve-type-property.d.ts → framework-adapters/shared/helpers/resolve-type-symbol.d.ts} +0 -0
- /package/dist/src/extract/{resolve-type-property.js → framework-adapters/shared/helpers/resolve-type-symbol.js} +0 -0
- /package/dist/src/extract/{slot-allowed-components.d.ts → helpers/evidence/collect-allowed-component-names.d.ts} +0 -0
- /package/dist/src/extract/{slot-allowed-components.js → helpers/evidence/collect-allowed-component-names.js} +0 -0
- /package/dist/src/extract/{parse-imported-names.d.ts → helpers/evidence/parse-source-imports.d.ts} +0 -0
- /package/dist/src/extract/{parse-imported-names.js → helpers/evidence/parse-source-imports.js} +0 -0
- /package/dist/src/extract/{validate.js → services/quality/helpers/inspection/validate-extracted-components.js} +0 -0
|
@@ -1,278 +0,0 @@
|
|
|
1
|
-
import { Node, SyntaxKind, } from 'ts-morph';
|
|
2
|
-
import { extractAllowedComponentsFromTypeText } from './slot-allowed-components.js';
|
|
3
|
-
import { isIntrinsicJsxElement } from './tsx-shared.js';
|
|
4
|
-
/**
|
|
5
|
-
* Structural composition evidence: parent→child relationships a component's
|
|
6
|
-
* source implies through *usage*, not through a declared slot contract
|
|
7
|
-
* (`ReactElement<XProps>` on the slot's own prop type, `@allowedComponents`,
|
|
8
|
-
* a mapping-layer keyword). Declared contracts still win on conflict — see
|
|
9
|
-
* the `structural` provenance rank in the CLI's composition merge — this is
|
|
10
|
-
* a lower-trust supplementary signal for the common case where a component
|
|
11
|
-
* accepts `children: ReactNode` and narrows it at runtime instead.
|
|
12
|
-
*/
|
|
13
|
-
/**
|
|
14
|
-
* Signal A — a type-predicate function anywhere in the file asserts a value
|
|
15
|
-
* `is ReactElement<XProps>` (e.g. `function isFooElement(c): c is
|
|
16
|
-
* ReactElement<FooProps>`). Common alongside a runtime `Children.map` /
|
|
17
|
-
* `cloneElement` narrowing pattern where the slot's own prop type is a bare
|
|
18
|
-
* `ReactNode` and carries no generic for the typed-slot extractor to read.
|
|
19
|
-
*/
|
|
20
|
-
export function collectTypePredicateComponentReferences(sourceFile, ctx) {
|
|
21
|
-
const found = new Set();
|
|
22
|
-
const candidates = [
|
|
23
|
-
...sourceFile.getDescendantsOfKind(SyntaxKind.FunctionDeclaration),
|
|
24
|
-
...sourceFile.getDescendantsOfKind(SyntaxKind.ArrowFunction),
|
|
25
|
-
...sourceFile.getDescendantsOfKind(SyntaxKind.FunctionExpression),
|
|
26
|
-
];
|
|
27
|
-
for (const fn of candidates) {
|
|
28
|
-
const returnTypeNode = fn.getReturnTypeNode();
|
|
29
|
-
if (!returnTypeNode || !Node.isTypePredicate(returnTypeNode))
|
|
30
|
-
continue;
|
|
31
|
-
const assertedTypeNode = returnTypeNode.getTypeNode();
|
|
32
|
-
if (!assertedTypeNode)
|
|
33
|
-
continue;
|
|
34
|
-
for (const name of extractAllowedComponentsFromTypeText(assertedTypeNode.getText(), ctx)) {
|
|
35
|
-
found.add(name);
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
return [...found].sort();
|
|
39
|
-
}
|
|
40
|
-
/**
|
|
41
|
-
* Signal B — a runtime identity check against a known component, e.g.
|
|
42
|
-
* `isValidElement(child) && child.type === BlueAccordionItem`. `.type` on a
|
|
43
|
-
* React element is the actual component reference, so this is direct
|
|
44
|
-
* evidence the checked value is expected to BE that component — not a name
|
|
45
|
-
* guess, an identity comparison against the real imported binding.
|
|
46
|
-
*/
|
|
47
|
-
export function collectRuntimeTypeCheckComponentReferences(sourceFile, componentNames) {
|
|
48
|
-
const found = new Set();
|
|
49
|
-
const localBindings = collectLocallyBoundNames(sourceFile);
|
|
50
|
-
for (const binary of sourceFile.getDescendantsOfKind(SyntaxKind.BinaryExpression)) {
|
|
51
|
-
const operator = binary.getOperatorToken().getText();
|
|
52
|
-
if (operator !== '===' && operator !== '==')
|
|
53
|
-
continue;
|
|
54
|
-
const left = binary.getLeft();
|
|
55
|
-
const right = binary.getRight();
|
|
56
|
-
const candidateFromTypeAccess = (typeAccessSide, otherSide) => {
|
|
57
|
-
if (!Node.isPropertyAccessExpression(typeAccessSide) || typeAccessSide.getName() !== 'type')
|
|
58
|
-
return undefined;
|
|
59
|
-
if (!Node.isIdentifier(otherSide) && !Node.isPropertyAccessExpression(otherSide))
|
|
60
|
-
return undefined;
|
|
61
|
-
const name = otherSide.getText().split('.').pop();
|
|
62
|
-
if (!name || !componentNames.has(name))
|
|
63
|
-
return undefined;
|
|
64
|
-
const baseIdentifier = Node.isPropertyAccessExpression(otherSide) ? otherSide.getExpression() : otherSide;
|
|
65
|
-
if (!Node.isIdentifier(baseIdentifier) || !localBindings.has(baseIdentifier.getText()))
|
|
66
|
-
return undefined;
|
|
67
|
-
return name;
|
|
68
|
-
};
|
|
69
|
-
const match = candidateFromTypeAccess(left, right) ?? candidateFromTypeAccess(right, left);
|
|
70
|
-
if (match)
|
|
71
|
-
found.add(match);
|
|
72
|
-
}
|
|
73
|
-
return [...found].sort();
|
|
74
|
-
}
|
|
75
|
-
/** Names bound in this file by import or local declaration — used to keep signal B from matching an unrelated same-named identifier that was never actually imported here. */
|
|
76
|
-
function collectLocallyBoundNames(sourceFile) {
|
|
77
|
-
const names = new Set();
|
|
78
|
-
for (const imp of sourceFile.getImportDeclarations()) {
|
|
79
|
-
const defaultImport = imp.getDefaultImport();
|
|
80
|
-
if (defaultImport)
|
|
81
|
-
names.add(defaultImport.getText());
|
|
82
|
-
const namespaceImport = imp.getNamespaceImport();
|
|
83
|
-
if (namespaceImport)
|
|
84
|
-
names.add(namespaceImport.getText());
|
|
85
|
-
for (const named of imp.getNamedImports()) {
|
|
86
|
-
names.add((named.getAliasNode() ?? named.getNameNode()).getText());
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
for (const decl of sourceFile.getVariableDeclarations())
|
|
90
|
-
names.add(decl.getName());
|
|
91
|
-
for (const decl of sourceFile.getFunctions()) {
|
|
92
|
-
const declName = decl.getName();
|
|
93
|
-
if (declName)
|
|
94
|
-
names.add(declName);
|
|
95
|
-
}
|
|
96
|
-
return names;
|
|
97
|
-
}
|
|
98
|
-
/**
|
|
99
|
-
* Signal C — a component's own render body literally instantiates another
|
|
100
|
-
* known local component as JSX (e.g. `<CardHeader/>` inside `Card`'s
|
|
101
|
-
* return). Direct structural nesting, not a slot being filled with
|
|
102
|
-
* caller-supplied content — the weakest-trust signal, kept last in the rank.
|
|
103
|
-
*/
|
|
104
|
-
export function collectRenderedComponentReferences(funcNode, componentNames, ownComponentName) {
|
|
105
|
-
const found = new Set();
|
|
106
|
-
const jsxElements = [
|
|
107
|
-
...funcNode.getDescendantsOfKind(SyntaxKind.JsxSelfClosingElement),
|
|
108
|
-
...funcNode.getDescendantsOfKind(SyntaxKind.JsxOpeningElement),
|
|
109
|
-
];
|
|
110
|
-
for (const jsxElement of jsxElements) {
|
|
111
|
-
const tagName = jsxElement.getTagNameNode().getText();
|
|
112
|
-
if (isIntrinsicJsxElement(tagName))
|
|
113
|
-
continue;
|
|
114
|
-
if (tagName === ownComponentName)
|
|
115
|
-
continue;
|
|
116
|
-
if (!componentNames.has(tagName))
|
|
117
|
-
continue;
|
|
118
|
-
found.add(tagName);
|
|
119
|
-
}
|
|
120
|
-
return [...found].sort();
|
|
121
|
-
}
|
|
122
|
-
/**
|
|
123
|
-
* Signal D — data-array render: the component's render body maps an array-
|
|
124
|
-
* typed prop to a known child component (e.g. `{items.map(x => <ItemRow
|
|
125
|
-
* .../>)}` inside a parent whose `items` prop is a plain data array).
|
|
126
|
-
*
|
|
127
|
-
* Fires only when ALL strict-gating conditions hold, to keep false positives
|
|
128
|
-
* off in the common case where mapping over data doesn't imply an authorable
|
|
129
|
-
* compositional slot. Conditions are listed in check order (cheap fails
|
|
130
|
-
* first) so the loop-body labels line up 1-to-1 with this list:
|
|
131
|
-
*
|
|
132
|
-
* 1. The `.map` callee is an identifier that matches a declared prop on
|
|
133
|
-
* the parent (`propNames`).
|
|
134
|
-
* 2. The prop's declared type text is a plain data array — not
|
|
135
|
-
* `ReactNode[]` / `ReactElement<...>[]` / `React.ReactNode[]`, etc.
|
|
136
|
-
* (those cases are already covered by the typed-slot pass, so firing
|
|
137
|
-
* this signal for them would double-count.)
|
|
138
|
-
* 3. The callback returns a JSX element whose tag is an identifier
|
|
139
|
-
* resolving to a known component (`componentNames`).
|
|
140
|
-
* 4. That child component is NOT rendered anywhere else in the parent's
|
|
141
|
-
* body — the map is the only render site.
|
|
142
|
-
*
|
|
143
|
-
* When all four hold, the mapped child is a strong candidate for a
|
|
144
|
-
* synthesised default slot on the parent — the extractor treats it that way
|
|
145
|
-
* only when there's no other slot to hang the evidence on (see the caller in
|
|
146
|
-
* react.ts).
|
|
147
|
-
*/
|
|
148
|
-
export function collectArrayMapRenderComponentReferences(funcNode, componentNames, ownComponentName, propTypesByName) {
|
|
149
|
-
const found = new Set();
|
|
150
|
-
const propNames = new Set(propTypesByName.keys());
|
|
151
|
-
const renderCountByComponent = new Map();
|
|
152
|
-
const bumpRenderCount = (name) => {
|
|
153
|
-
renderCountByComponent.set(name, (renderCountByComponent.get(name) ?? 0) + 1);
|
|
154
|
-
};
|
|
155
|
-
for (const jsxElement of [
|
|
156
|
-
...funcNode.getDescendantsOfKind(SyntaxKind.JsxSelfClosingElement),
|
|
157
|
-
...funcNode.getDescendantsOfKind(SyntaxKind.JsxOpeningElement),
|
|
158
|
-
]) {
|
|
159
|
-
const tagName = jsxElement.getTagNameNode().getText();
|
|
160
|
-
if (isIntrinsicJsxElement(tagName))
|
|
161
|
-
continue;
|
|
162
|
-
if (tagName === ownComponentName)
|
|
163
|
-
continue;
|
|
164
|
-
if (!componentNames.has(tagName))
|
|
165
|
-
continue;
|
|
166
|
-
bumpRenderCount(tagName);
|
|
167
|
-
}
|
|
168
|
-
for (const callExpr of funcNode.getDescendantsOfKind(SyntaxKind.CallExpression)) {
|
|
169
|
-
const callee = callExpr.getExpression();
|
|
170
|
-
if (!Node.isPropertyAccessExpression(callee))
|
|
171
|
-
continue;
|
|
172
|
-
if (callee.getName() !== 'map')
|
|
173
|
-
continue;
|
|
174
|
-
// Condition 1: callee's receiver must be a bare prop identifier.
|
|
175
|
-
const receiver = callee.getExpression();
|
|
176
|
-
if (!Node.isIdentifier(receiver))
|
|
177
|
-
continue;
|
|
178
|
-
const propName = receiver.getText();
|
|
179
|
-
if (!propNames.has(propName))
|
|
180
|
-
continue;
|
|
181
|
-
// Condition 2: prop's declared type must be a plain data array — reject
|
|
182
|
-
// ReactNode / ReactElement / JSX.Element unions so we don't overlap with
|
|
183
|
-
// the typed-slot pass.
|
|
184
|
-
const propTypeText = propTypesByName.get(propName) ?? '';
|
|
185
|
-
if (isJsxCarryingTypeText(propTypeText))
|
|
186
|
-
continue;
|
|
187
|
-
// Condition 3: callback must be a function expression whose return is a
|
|
188
|
-
// JSX element resolving to a known component.
|
|
189
|
-
const [callbackArg] = callExpr.getArguments();
|
|
190
|
-
if (!callbackArg)
|
|
191
|
-
continue;
|
|
192
|
-
if (!Node.isArrowFunction(callbackArg) && !Node.isFunctionExpression(callbackArg))
|
|
193
|
-
continue;
|
|
194
|
-
const returnedJsxTag = getReturnedJsxTagName(callbackArg);
|
|
195
|
-
if (!returnedJsxTag)
|
|
196
|
-
continue;
|
|
197
|
-
if (returnedJsxTag === ownComponentName)
|
|
198
|
-
continue;
|
|
199
|
-
if (!componentNames.has(returnedJsxTag))
|
|
200
|
-
continue;
|
|
201
|
-
// Condition 4: the child must ONLY be rendered inside this map. Any
|
|
202
|
-
// additional render site elsewhere in the parent means it's a private
|
|
203
|
-
// implementation detail, not a composable slot child.
|
|
204
|
-
const totalRenders = renderCountByComponent.get(returnedJsxTag) ?? 0;
|
|
205
|
-
if (totalRenders !== 1)
|
|
206
|
-
continue;
|
|
207
|
-
found.add(returnedJsxTag);
|
|
208
|
-
}
|
|
209
|
-
return [...found].sort();
|
|
210
|
-
}
|
|
211
|
-
/**
|
|
212
|
-
* Returns the tag identifier of the JSX element the callback returns, or
|
|
213
|
-
* `undefined` if the callback doesn't return exactly one identifier-tagged
|
|
214
|
-
* JSX element. Accepts both arrow-with-expression bodies and function bodies
|
|
215
|
-
* with a single return statement. Fragment wrappers with a single JSX child
|
|
216
|
-
* are unwrapped.
|
|
217
|
-
*/
|
|
218
|
-
function getReturnedJsxTagName(callback) {
|
|
219
|
-
const body = callback.getBody();
|
|
220
|
-
const jsxNode = unwrapReturnedJsx(body);
|
|
221
|
-
if (!jsxNode)
|
|
222
|
-
return undefined;
|
|
223
|
-
if (Node.isJsxSelfClosingElement(jsxNode) || Node.isJsxOpeningElement(jsxNode)) {
|
|
224
|
-
return jsxNode.getTagNameNode().getText();
|
|
225
|
-
}
|
|
226
|
-
if (Node.isJsxElement(jsxNode)) {
|
|
227
|
-
return jsxNode.getOpeningElement().getTagNameNode().getText();
|
|
228
|
-
}
|
|
229
|
-
return undefined;
|
|
230
|
-
}
|
|
231
|
-
function unwrapReturnedJsx(bodyOrExpr) {
|
|
232
|
-
// Arrow with expression body: `(x) => <Foo/>` or `(x) => <><Foo/></>`
|
|
233
|
-
if (Node.isJsxElement(bodyOrExpr) ||
|
|
234
|
-
Node.isJsxSelfClosingElement(bodyOrExpr) ||
|
|
235
|
-
Node.isJsxOpeningElement(bodyOrExpr)) {
|
|
236
|
-
return bodyOrExpr;
|
|
237
|
-
}
|
|
238
|
-
if (Node.isJsxFragment(bodyOrExpr)) {
|
|
239
|
-
return unwrapSingleJsxChildOfFragment(bodyOrExpr);
|
|
240
|
-
}
|
|
241
|
-
if (Node.isParenthesizedExpression(bodyOrExpr)) {
|
|
242
|
-
return unwrapReturnedJsx(bodyOrExpr.getExpression());
|
|
243
|
-
}
|
|
244
|
-
// Block body: look for a single `return <Foo/>;` at the top level.
|
|
245
|
-
if (Node.isBlock(bodyOrExpr)) {
|
|
246
|
-
const returns = bodyOrExpr.getStatements().filter(Node.isReturnStatement);
|
|
247
|
-
if (returns.length !== 1)
|
|
248
|
-
return undefined;
|
|
249
|
-
const expr = returns[0].getExpression();
|
|
250
|
-
if (!expr)
|
|
251
|
-
return undefined;
|
|
252
|
-
return unwrapReturnedJsx(expr);
|
|
253
|
-
}
|
|
254
|
-
return undefined;
|
|
255
|
-
}
|
|
256
|
-
function unwrapSingleJsxChildOfFragment(fragment) {
|
|
257
|
-
if (!Node.isJsxFragment(fragment))
|
|
258
|
-
return undefined;
|
|
259
|
-
const jsxChildren = fragment
|
|
260
|
-
.getJsxChildren()
|
|
261
|
-
.filter((child) => Node.isJsxElement(child) || Node.isJsxSelfClosingElement(child));
|
|
262
|
-
if (jsxChildren.length !== 1)
|
|
263
|
-
return undefined;
|
|
264
|
-
return jsxChildren[0];
|
|
265
|
-
}
|
|
266
|
-
const JSX_CARRYING_TYPE_TOKENS = ['ReactNode', 'ReactElement', 'JSX.Element'];
|
|
267
|
-
/**
|
|
268
|
-
* True if the type text refers to a React-JSX-carrying type. Used to reject
|
|
269
|
-
* `items: ReactNode[]`-style props from the array-map signal so we don't
|
|
270
|
-
* overlap with the typed-slot pass, which already handles those.
|
|
271
|
-
*/
|
|
272
|
-
function isJsxCarryingTypeText(typeText) {
|
|
273
|
-
for (const token of JSX_CARRYING_TYPE_TOKENS) {
|
|
274
|
-
if (typeText.includes(token))
|
|
275
|
-
return true;
|
|
276
|
-
}
|
|
277
|
-
return false;
|
|
278
|
-
}
|