@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.
Files changed (292) hide show
  1. package/dist/package.json +1 -1
  2. package/dist/src/extract/controller/extract-controller.d.ts +10 -0
  3. package/dist/src/extract/controller/extract-controller.js +33 -0
  4. package/dist/src/extract/controller/helpers/validate-endpoint-request.d.ts +2 -0
  5. package/dist/src/extract/controller/helpers/validate-endpoint-request.js +24 -0
  6. package/dist/src/extract/{astro.d.ts → framework-adapters/astro/extractor.d.ts} +1 -1
  7. package/dist/src/extract/framework-adapters/astro/extractor.js +45 -0
  8. package/dist/src/extract/framework-adapters/astro/frontmatter.d.ts +11 -0
  9. package/dist/src/extract/framework-adapters/astro/frontmatter.js +96 -0
  10. package/dist/src/extract/framework-adapters/astro/helpers/collect-astro-props-bindings.d.ts +4 -0
  11. package/dist/src/extract/framework-adapters/astro/helpers/collect-astro-props-bindings.js +47 -0
  12. package/dist/src/extract/framework-adapters/astro/slots.d.ts +7 -0
  13. package/dist/src/extract/framework-adapters/astro/slots.js +44 -0
  14. package/dist/src/extract/{react.d.ts → framework-adapters/react/extractor.d.ts} +1 -1
  15. package/dist/src/extract/framework-adapters/react/extractor.js +31 -0
  16. package/dist/src/extract/framework-adapters/react/helpers/collect-dom-wrapper-contexts.d.ts +4 -0
  17. package/dist/src/extract/framework-adapters/react/helpers/collect-dom-wrapper-contexts.js +73 -0
  18. package/dist/src/extract/framework-adapters/react/helpers/collect-prop-dataflow.d.ts +14 -0
  19. package/dist/src/extract/framework-adapters/react/helpers/collect-prop-dataflow.js +220 -0
  20. package/dist/src/extract/framework-adapters/react/helpers/collect-react-impl-hints.d.ts +5 -0
  21. package/dist/src/extract/framework-adapters/react/helpers/collect-react-impl-hints.js +32 -0
  22. package/dist/src/extract/framework-adapters/react/helpers/detect-dom-is-pure-wrapper.d.ts +2 -0
  23. package/dist/src/extract/framework-adapters/react/helpers/detect-dom-is-pure-wrapper.js +59 -0
  24. package/dist/src/extract/framework-adapters/react/helpers/detect-dom-type-patterns.d.ts +8 -0
  25. package/dist/src/extract/framework-adapters/react/helpers/detect-dom-type-patterns.js +29 -0
  26. package/dist/src/extract/framework-adapters/react/helpers/detect-omit-wrapped-custom-props.d.ts +2 -0
  27. package/dist/src/extract/framework-adapters/react/helpers/detect-omit-wrapped-custom-props.js +64 -0
  28. package/dist/src/extract/framework-adapters/react/helpers/detect-pick-type-patterns.d.ts +4 -0
  29. package/dist/src/extract/framework-adapters/react/helpers/detect-pick-type-patterns.js +64 -0
  30. package/dist/src/extract/framework-adapters/react/helpers/detect-react-polymorphic.d.ts +5 -0
  31. package/dist/src/extract/framework-adapters/react/helpers/detect-react-polymorphic.js +170 -0
  32. package/dist/src/extract/framework-adapters/react/helpers/dom-attribute-surfaces.d.ts +15 -0
  33. package/dist/src/extract/framework-adapters/react/helpers/dom-attribute-surfaces.js +231 -0
  34. package/dist/src/extract/framework-adapters/react/helpers/extract-binding-fallback-props.d.ts +4 -0
  35. package/dist/src/extract/framework-adapters/react/helpers/extract-binding-fallback-props.js +50 -0
  36. package/dist/src/extract/framework-adapters/react/helpers/extract-from-react-source-file.d.ts +5 -0
  37. package/dist/src/extract/framework-adapters/react/helpers/extract-from-react-source-file.js +23 -0
  38. package/dist/src/extract/framework-adapters/react/helpers/extract-react-allowed-components.d.ts +2 -0
  39. package/dist/src/extract/framework-adapters/react/helpers/extract-react-allowed-components.js +25 -0
  40. package/dist/src/extract/framework-adapters/react/helpers/extract-react-binding-defaults.d.ts +6 -0
  41. package/dist/src/extract/framework-adapters/react/helpers/extract-react-binding-defaults.js +48 -0
  42. package/dist/src/extract/framework-adapters/react/helpers/extract-react-component-from-export.d.ts +15 -0
  43. package/dist/src/extract/framework-adapters/react/helpers/extract-react-component-from-export.js +106 -0
  44. package/dist/src/extract/framework-adapters/react/helpers/extract-react-prop-types.d.ts +3 -0
  45. package/dist/src/extract/framework-adapters/react/helpers/extract-react-prop-types.js +64 -0
  46. package/dist/src/extract/framework-adapters/react/helpers/extract-react-props-from-type.d.ts +15 -0
  47. package/dist/src/extract/framework-adapters/react/helpers/extract-react-props-from-type.js +318 -0
  48. package/dist/src/extract/framework-adapters/react/helpers/extract-react-slots.d.ts +6 -0
  49. package/dist/src/extract/framework-adapters/react/helpers/extract-react-slots.js +44 -0
  50. package/dist/src/extract/framework-adapters/react/helpers/filter-impl-alias-props.d.ts +4 -0
  51. package/dist/src/extract/framework-adapters/react/helpers/filter-impl-alias-props.js +52 -0
  52. package/dist/src/extract/framework-adapters/react/helpers/infer-primitive-dom-props.d.ts +6 -0
  53. package/dist/src/extract/framework-adapters/react/helpers/infer-primitive-dom-props.js +69 -0
  54. package/dist/src/extract/framework-adapters/react/helpers/resolve-component-function.d.ts +4 -0
  55. package/dist/src/extract/framework-adapters/react/helpers/resolve-component-function.js +131 -0
  56. package/dist/src/extract/framework-adapters/react/helpers/resolve-react-prop-forwarding.d.ts +8 -0
  57. package/dist/src/extract/framework-adapters/react/helpers/resolve-react-prop-forwarding.js +22 -0
  58. package/dist/src/extract/framework-adapters/react/helpers/resolve-react-props-type.d.ts +14 -0
  59. package/dist/src/extract/framework-adapters/react/helpers/resolve-react-props-type.js +86 -0
  60. package/dist/src/extract/framework-adapters/react/helpers/synthesize-react-structural-slots.d.ts +8 -0
  61. package/dist/src/extract/framework-adapters/react/helpers/synthesize-react-structural-slots.js +44 -0
  62. package/dist/src/extract/framework-adapters/shared/helpers/build-component-lookup-maps.d.ts +5 -0
  63. package/dist/src/extract/framework-adapters/shared/helpers/build-component-lookup-maps.js +10 -0
  64. package/dist/src/extract/framework-adapters/shared/helpers/collect-jsdoc-slot-comments.d.ts +2 -0
  65. package/dist/src/extract/framework-adapters/shared/helpers/collect-jsdoc-slot-comments.js +13 -0
  66. package/dist/src/extract/{file-extraction-workers.d.ts → framework-adapters/shared/helpers/file-processing/file-workers.d.ts} +1 -13
  67. package/dist/src/extract/{file-extraction-workers.js → framework-adapters/shared/helpers/file-processing/file-workers.js} +0 -19
  68. package/dist/src/extract/framework-adapters/shared/helpers/file-processing/project-source-files.d.ts +5 -0
  69. package/dist/src/extract/framework-adapters/shared/helpers/file-processing/project-source-files.js +13 -0
  70. package/dist/src/extract/framework-adapters/shared/helpers/file-processing/result-normalizer.d.ts +6 -0
  71. package/dist/src/extract/framework-adapters/shared/helpers/file-processing/result-normalizer.js +6 -0
  72. package/dist/src/extract/framework-adapters/shared/helpers/find-tsx-workspace-package.d.ts +2 -0
  73. package/dist/src/extract/framework-adapters/shared/helpers/find-tsx-workspace-package.js +62 -0
  74. package/dist/src/extract/{source-line-metadata.d.ts → framework-adapters/shared/helpers/get-node-source-lines.d.ts} +1 -1
  75. package/dist/src/extract/framework-adapters/shared/helpers/resolve-tsx-tsconfig-path.d.ts +7 -0
  76. package/dist/src/extract/framework-adapters/shared/helpers/resolve-tsx-tsconfig-path.js +93 -0
  77. package/dist/src/extract/framework-adapters/shared/helpers/resolve-tsx-workspace-imports.d.ts +6 -0
  78. package/dist/src/extract/framework-adapters/shared/helpers/resolve-tsx-workspace-imports.js +58 -0
  79. package/dist/src/extract/framework-adapters/shared/helpers/tsx-node-utils.d.ts +13 -0
  80. package/dist/src/extract/framework-adapters/shared/helpers/tsx-node-utils.js +76 -0
  81. package/dist/src/extract/framework-adapters/shared/helpers/tsx-renderable-exports.d.ts +12 -0
  82. package/dist/src/extract/framework-adapters/shared/helpers/tsx-renderable-exports.js +35 -0
  83. package/dist/src/extract/framework-adapters/shared/helpers/tsx-shared.d.ts +14 -0
  84. package/dist/src/extract/framework-adapters/shared/helpers/tsx-shared.js +54 -0
  85. package/dist/src/extract/{stencil.d.ts → framework-adapters/stencil/extractor.d.ts} +1 -1
  86. package/dist/src/extract/framework-adapters/stencil/extractor.js +82 -0
  87. package/dist/src/extract/framework-adapters/stencil/helpers/detect-stencil-class.d.ts +7 -0
  88. package/dist/src/extract/framework-adapters/stencil/helpers/detect-stencil-class.js +32 -0
  89. package/dist/src/extract/framework-adapters/stencil/helpers/extract-stencil-props.d.ts +5 -0
  90. package/dist/src/extract/framework-adapters/stencil/helpers/extract-stencil-props.js +62 -0
  91. package/dist/src/extract/framework-adapters/stencil/helpers/extract-stencil-slots.d.ts +6 -0
  92. package/dist/src/extract/framework-adapters/stencil/helpers/extract-stencil-slots.js +87 -0
  93. package/dist/src/extract/framework-adapters/stencil/helpers/stencil-prop-helpers.d.ts +5 -0
  94. package/dist/src/extract/framework-adapters/stencil/helpers/stencil-prop-helpers.js +39 -0
  95. package/dist/src/extract/{svelte.d.ts → framework-adapters/svelte/extractor.d.ts} +2 -1
  96. package/dist/src/extract/framework-adapters/svelte/extractor.js +27 -0
  97. package/dist/src/extract/framework-adapters/svelte/helpers/classify-svelte-props-annotation.d.ts +6 -0
  98. package/dist/src/extract/framework-adapters/svelte/helpers/classify-svelte-props-annotation.js +51 -0
  99. package/dist/src/extract/framework-adapters/svelte/helpers/collect-svelte-type-references.d.ts +3 -0
  100. package/dist/src/extract/framework-adapters/svelte/helpers/collect-svelte-type-references.js +52 -0
  101. package/dist/src/extract/framework-adapters/svelte/helpers/extract-from-svelte-file.d.ts +7 -0
  102. package/dist/src/extract/framework-adapters/svelte/helpers/extract-from-svelte-file.js +90 -0
  103. package/dist/src/extract/framework-adapters/svelte/helpers/extract-svelte-ast-type-members.d.ts +15 -0
  104. package/dist/src/extract/framework-adapters/svelte/helpers/extract-svelte-ast-type-members.js +46 -0
  105. package/dist/src/extract/framework-adapters/svelte/helpers/extract-svelte-declaration-data.d.ts +7 -0
  106. package/dist/src/extract/framework-adapters/svelte/helpers/extract-svelte-declaration-data.js +64 -0
  107. package/dist/src/extract/framework-adapters/svelte/helpers/extract-svelte-external-type-members.d.ts +4 -0
  108. package/dist/src/extract/framework-adapters/svelte/helpers/extract-svelte-external-type-members.js +58 -0
  109. package/dist/src/extract/framework-adapters/svelte/helpers/extract-svelte-from-destructure.d.ts +4 -0
  110. package/dist/src/extract/framework-adapters/svelte/helpers/extract-svelte-from-destructure.js +85 -0
  111. package/dist/src/extract/framework-adapters/svelte/helpers/extract-svelte-props.d.ts +22 -0
  112. package/dist/src/extract/framework-adapters/svelte/helpers/extract-svelte-props.js +55 -0
  113. package/dist/src/extract/framework-adapters/svelte/helpers/extract-svelte-template-slots.d.ts +7 -0
  114. package/dist/src/extract/framework-adapters/svelte/helpers/extract-svelte-template-slots.js +63 -0
  115. package/dist/src/extract/framework-adapters/svelte/helpers/extract-svelte-type-member-props.d.ts +3 -0
  116. package/dist/src/extract/framework-adapters/svelte/helpers/extract-svelte-type-member-props.js +31 -0
  117. package/dist/src/extract/framework-adapters/svelte/helpers/find-svelte-script-declarations.d.ts +8 -0
  118. package/dist/src/extract/framework-adapters/svelte/helpers/find-svelte-script-declarations.js +91 -0
  119. package/dist/src/extract/framework-adapters/svelte/helpers/get-svelte-component-name.d.ts +1 -0
  120. package/dist/src/extract/framework-adapters/svelte/helpers/get-svelte-component-name.js +26 -0
  121. package/dist/src/extract/framework-adapters/svelte/helpers/render-svelte-type-strings.d.ts +3 -0
  122. package/dist/src/extract/framework-adapters/svelte/helpers/render-svelte-type-strings.js +91 -0
  123. package/dist/src/extract/framework-adapters/svelte/helpers/render-svelte-type.d.ts +11 -0
  124. package/dist/src/extract/framework-adapters/svelte/helpers/render-svelte-type.js +68 -0
  125. package/dist/src/extract/framework-adapters/svelte/helpers/resolve-dts-location.d.ts +1 -0
  126. package/dist/src/extract/framework-adapters/svelte/helpers/resolve-dts-location.js +90 -0
  127. package/dist/src/extract/framework-adapters/svelte/helpers/resolve-svelte-allowed-components.d.ts +2 -0
  128. package/dist/src/extract/framework-adapters/svelte/helpers/resolve-svelte-allowed-components.js +20 -0
  129. package/dist/src/extract/framework-adapters/svelte/helpers/resolve-svelte-external-type-readers.d.ts +3 -0
  130. package/dist/src/extract/framework-adapters/svelte/helpers/resolve-svelte-external-type-readers.js +68 -0
  131. package/dist/src/extract/framework-adapters/svelte/helpers/resolve-svelte-type-checker.d.ts +4 -0
  132. package/dist/src/extract/framework-adapters/svelte/helpers/resolve-svelte-type-checker.js +68 -0
  133. package/dist/src/extract/framework-adapters/svelte/helpers/resolve-svelte-type-members.d.ts +6 -0
  134. package/dist/src/extract/framework-adapters/svelte/helpers/resolve-svelte-type-members.js +30 -0
  135. package/dist/src/extract/framework-adapters/svelte/helpers/resolve-svelte-unresolved-retry.d.ts +13 -0
  136. package/dist/src/extract/framework-adapters/svelte/helpers/resolve-svelte-unresolved-retry.js +192 -0
  137. package/dist/src/extract/framework-adapters/svelte/types/svelte-ast-node.d.ts +12 -0
  138. package/dist/src/extract/framework-adapters/svelte/types/svelte-ast-node.js +1 -0
  139. package/dist/src/extract/{vue.d.ts → framework-adapters/vue/extractor.d.ts} +1 -1
  140. package/dist/src/extract/framework-adapters/vue/extractor.js +61 -0
  141. package/dist/src/extract/framework-adapters/vue/helpers/extract-vue-object-props.d.ts +3 -0
  142. package/dist/src/extract/framework-adapters/vue/helpers/extract-vue-object-props.js +67 -0
  143. package/dist/src/extract/framework-adapters/vue/helpers/extract-vue-options-props.d.ts +4 -0
  144. package/dist/src/extract/framework-adapters/vue/helpers/extract-vue-options-props.js +72 -0
  145. package/dist/src/extract/framework-adapters/vue/helpers/extract-vue-setup-object-props.d.ts +8 -0
  146. package/dist/src/extract/framework-adapters/vue/helpers/extract-vue-setup-object-props.js +64 -0
  147. package/dist/src/extract/framework-adapters/vue/helpers/extract-vue-setup-props.d.ts +2 -0
  148. package/dist/src/extract/framework-adapters/vue/helpers/extract-vue-setup-props.js +66 -0
  149. package/dist/src/extract/framework-adapters/vue/helpers/extract-vue-slots.d.ts +24 -0
  150. package/dist/src/extract/framework-adapters/vue/helpers/extract-vue-slots.js +56 -0
  151. package/dist/src/extract/framework-adapters/vue/helpers/resolve-vue-component-name.d.ts +2 -0
  152. package/dist/src/extract/framework-adapters/vue/helpers/resolve-vue-component-name.js +9 -0
  153. package/dist/src/extract/framework-adapters/vue/helpers/resolve-workspace-module.d.ts +1 -0
  154. package/dist/src/extract/framework-adapters/vue/helpers/resolve-workspace-module.js +76 -0
  155. package/dist/src/extract/framework-adapters/vue/helpers/workspace-package-dirs.d.ts +2 -0
  156. package/dist/src/extract/framework-adapters/vue/helpers/workspace-package-dirs.js +77 -0
  157. package/dist/src/extract/{vue-tsx.d.ts → framework-adapters/vue-tsx/extractor.d.ts} +1 -1
  158. package/dist/src/extract/framework-adapters/vue-tsx/extractor.js +82 -0
  159. package/dist/src/extract/framework-adapters/vue-tsx/helpers/extract-vue-tsx-props.d.ts +5 -0
  160. package/dist/src/extract/framework-adapters/vue-tsx/helpers/extract-vue-tsx-props.js +189 -0
  161. package/dist/src/extract/framework-adapters/vue-tsx/helpers/extract-vue-tsx-slots.d.ts +4 -0
  162. package/dist/src/extract/framework-adapters/vue-tsx/helpers/extract-vue-tsx-slots.js +91 -0
  163. package/dist/src/extract/framework-adapters/vue-tsx/helpers/resolve-ast-object.d.ts +11 -0
  164. package/dist/src/extract/framework-adapters/vue-tsx/helpers/resolve-ast-object.js +95 -0
  165. package/dist/src/extract/{web-components.d.ts → framework-adapters/web-components/extractor.d.ts} +1 -1
  166. package/dist/src/extract/framework-adapters/web-components/extractor.js +55 -0
  167. package/dist/src/extract/framework-adapters/web-components/helpers/collect-wc-html-templates.d.ts +4 -0
  168. package/dist/src/extract/framework-adapters/web-components/helpers/collect-wc-html-templates.js +67 -0
  169. package/dist/src/extract/framework-adapters/web-components/helpers/detect-wc-non-public-members.d.ts +9 -0
  170. package/dist/src/extract/framework-adapters/web-components/helpers/detect-wc-non-public-members.js +11 -0
  171. package/dist/src/extract/framework-adapters/web-components/helpers/extract-wc-accessor-props.d.ts +3 -0
  172. package/dist/src/extract/framework-adapters/web-components/helpers/extract-wc-accessor-props.js +65 -0
  173. package/dist/src/extract/framework-adapters/web-components/helpers/extract-wc-class-properties.d.ts +3 -0
  174. package/dist/src/extract/framework-adapters/web-components/helpers/extract-wc-class-properties.js +60 -0
  175. package/dist/src/extract/framework-adapters/web-components/helpers/extract-wc-inheritance.d.ts +4 -0
  176. package/dist/src/extract/framework-adapters/web-components/helpers/extract-wc-inheritance.js +16 -0
  177. package/dist/src/extract/framework-adapters/web-components/helpers/extract-wc-jsdoc-attr-props.d.ts +3 -0
  178. package/dist/src/extract/framework-adapters/web-components/helpers/extract-wc-jsdoc-attr-props.js +24 -0
  179. package/dist/src/extract/framework-adapters/web-components/helpers/extract-wc-observed-attrs.d.ts +3 -0
  180. package/dist/src/extract/framework-adapters/web-components/helpers/extract-wc-observed-attrs.js +27 -0
  181. package/dist/src/extract/framework-adapters/web-components/helpers/extract-wc-slots.d.ts +6 -0
  182. package/dist/src/extract/framework-adapters/web-components/helpers/extract-wc-slots.js +56 -0
  183. package/dist/src/extract/framework-adapters/web-components/helpers/extract-wc-template-content.d.ts +4 -0
  184. package/dist/src/extract/framework-adapters/web-components/helpers/extract-wc-template-content.js +49 -0
  185. package/dist/src/extract/framework-adapters/web-components/helpers/merge-wc-prop-lists.d.ts +9 -0
  186. package/dist/src/extract/framework-adapters/web-components/helpers/merge-wc-prop-lists.js +19 -0
  187. package/dist/src/extract/framework-adapters/web-components/helpers/resolve-wc-base-class.d.ts +2 -0
  188. package/dist/src/extract/framework-adapters/web-components/helpers/resolve-wc-base-class.js +59 -0
  189. package/dist/src/extract/framework-adapters/web-components/helpers/resolve-wc-decorator-tag.d.ts +2 -0
  190. package/dist/src/extract/framework-adapters/web-components/helpers/resolve-wc-decorator-tag.js +54 -0
  191. package/dist/src/extract/framework-adapters/web-components/helpers/resolve-wc-import-source.d.ts +7 -0
  192. package/dist/src/extract/framework-adapters/web-components/helpers/resolve-wc-import-source.js +47 -0
  193. package/dist/src/extract/framework-adapters/web-components/helpers/resolve-wc-import.d.ts +4 -0
  194. package/dist/src/extract/framework-adapters/web-components/helpers/resolve-wc-import.js +93 -0
  195. package/dist/src/extract/framework-adapters/web-components/helpers/resolve-wc-sibling-definition.d.ts +4 -0
  196. package/dist/src/extract/framework-adapters/web-components/helpers/resolve-wc-sibling-definition.js +79 -0
  197. package/dist/src/extract/framework-adapters/web-components/helpers/resolve-wc-tag-name.d.ts +7 -0
  198. package/dist/src/extract/framework-adapters/web-components/helpers/resolve-wc-tag-name.js +62 -0
  199. package/dist/src/extract/helpers/evidence/ast/collect-structural-jsx-evidence.d.ts +5 -0
  200. package/dist/src/extract/helpers/evidence/ast/collect-structural-jsx-evidence.js +63 -0
  201. package/dist/src/extract/helpers/evidence/ast/detect-react-node-types.d.ts +2 -0
  202. package/dist/src/extract/helpers/evidence/ast/detect-react-node-types.js +24 -0
  203. package/dist/src/extract/helpers/evidence/ast/get-jsx-ast-data.d.ts +14 -0
  204. package/dist/src/extract/helpers/evidence/ast/get-jsx-ast-data.js +85 -0
  205. package/dist/src/extract/helpers/evidence/collect-jsx-component-references.d.ts +5 -0
  206. package/dist/src/extract/helpers/evidence/collect-jsx-component-references.js +52 -0
  207. package/dist/src/extract/helpers/evidence/detect-slot-from-prop.d.ts +16 -0
  208. package/dist/src/extract/helpers/evidence/detect-slot-from-prop.js +39 -0
  209. package/dist/src/extract/orchestrator/execute-extraction-orchestrator.d.ts +13 -0
  210. package/dist/src/extract/orchestrator/execute-extraction-orchestrator.js +17 -0
  211. package/dist/src/{pre-classify.d.ts → extract/services/classification/classify-component-props.d.ts} +3 -5
  212. package/dist/src/{pre-classify.js → extract/services/classification/classify-component-props.js} +8 -100
  213. package/dist/src/extract/services/classification/helpers/check-prop-types.d.ts +7 -0
  214. package/dist/src/extract/services/classification/helpers/check-prop-types.js +22 -0
  215. package/dist/src/extract/services/classification/helpers/detect-dom-props.d.ts +2 -0
  216. package/dist/src/extract/services/classification/helpers/detect-dom-props.js +63 -0
  217. package/dist/src/extract/services/deduplication/deduplicate-components.d.ts +2 -0
  218. package/dist/src/extract/services/deduplication/deduplicate-components.js +58 -0
  219. package/dist/src/extract/services/deduplication/helpers/component-path-analysis.d.ts +10 -0
  220. package/dist/src/extract/services/deduplication/helpers/component-path-analysis.js +85 -0
  221. package/dist/src/extract/services/deduplication/helpers/component-path-scoring.d.ts +10 -0
  222. package/dist/src/extract/services/deduplication/helpers/component-path-scoring.js +73 -0
  223. package/dist/src/extract/services/extraction/extract-components.d.ts +3 -0
  224. package/dist/src/extract/services/extraction/extract-components.js +19 -0
  225. package/dist/src/extract/services/extraction/helpers/collect-sveltekit-route-exclusions.d.ts +2 -0
  226. package/dist/src/extract/services/extraction/helpers/collect-sveltekit-route-exclusions.js +18 -0
  227. package/dist/src/extract/services/extraction/helpers/filter-hook-components.d.ts +6 -0
  228. package/dist/src/extract/services/extraction/helpers/filter-hook-components.js +18 -0
  229. package/dist/src/extract/services/extraction/helpers/register-extractors.d.ts +8 -0
  230. package/dist/src/extract/services/extraction/helpers/register-extractors.js +71 -0
  231. package/dist/src/extract/services/extraction/helpers/run-extractor-batches.d.ts +4 -0
  232. package/dist/src/extract/services/extraction/helpers/run-extractor-batches.js +24 -0
  233. package/dist/src/extract/services/quality/evaluate-extraction-quality.d.ts +4 -0
  234. package/dist/src/extract/services/quality/evaluate-extraction-quality.js +61 -0
  235. package/dist/src/extract/services/quality/helpers/authorability/evaluate-authorability.d.ts +28 -0
  236. package/dist/src/extract/services/quality/helpers/authorability/evaluate-authorability.js +67 -0
  237. package/dist/src/extract/services/quality/helpers/inspection/detect-data-wrapper-patterns.d.ts +16 -0
  238. package/dist/src/extract/services/quality/helpers/inspection/detect-data-wrapper-patterns.js +63 -0
  239. package/dist/src/extract/{source-inspection.d.ts → services/quality/helpers/inspection/inspect-component-source.d.ts} +3 -6
  240. package/dist/src/extract/{source-inspection.js → services/quality/helpers/inspection/inspect-component-source.js} +5 -65
  241. package/dist/src/extract/{validate.d.ts → services/quality/helpers/inspection/validate-extracted-components.d.ts} +1 -1
  242. package/dist/src/extract/services/quality/helpers/scoring/collect-scoring-inputs.d.ts +14 -0
  243. package/dist/src/extract/{scoring.js → services/quality/helpers/scoring/collect-scoring-inputs.js} +10 -24
  244. package/dist/src/extract/services/quality/helpers/scoring/compute-extraction-score.d.ts +6 -0
  245. package/dist/src/extract/services/quality/helpers/scoring/compute-extraction-score.js +12 -0
  246. package/dist/src/extract/types/classification.d.ts +4 -0
  247. package/dist/src/extract/types/classification.js +1 -0
  248. package/dist/src/extract/types/component-extractor.d.ts +7 -0
  249. package/dist/src/extract/types/component-extractor.js +1 -0
  250. package/dist/src/{types.d.ts → extract/types/component.d.ts} +0 -22
  251. package/dist/src/extract/types/component.js +1 -0
  252. package/dist/src/extract/types/contract.d.ts +16 -0
  253. package/dist/src/extract/types/contract.js +1 -0
  254. package/dist/src/extract/types/display.d.ts +3 -0
  255. package/dist/src/{types.js → extract/types/display.js} +1 -1
  256. package/dist/src/extract/types/options.d.ts +15 -0
  257. package/dist/src/extract/types/options.js +1 -0
  258. package/dist/src/extract/types/scoring.d.ts +9 -0
  259. package/dist/src/extract/types/scoring.js +1 -0
  260. package/dist/src/extract/types/source-inspection.d.ts +5 -0
  261. package/dist/src/extract/types/source-inspection.js +1 -0
  262. package/dist/src/index.d.ts +27 -21
  263. package/dist/src/index.js +21 -17
  264. package/package.json +1 -1
  265. package/dist/src/extract/astro.js +0 -226
  266. package/dist/src/extract/non-authorable-filter.d.ts +0 -17
  267. package/dist/src/extract/non-authorable-filter.js +0 -60
  268. package/dist/src/extract/pipeline.d.ts +0 -7
  269. package/dist/src/extract/pipeline.js +0 -343
  270. package/dist/src/extract/react.js +0 -2069
  271. package/dist/src/extract/scoring.d.ts +0 -12
  272. package/dist/src/extract/slot-detection.d.ts +0 -35
  273. package/dist/src/extract/slot-detection.js +0 -98
  274. package/dist/src/extract/stencil.js +0 -312
  275. package/dist/src/extract/structural-slot-evidence.d.ts +0 -63
  276. package/dist/src/extract/structural-slot-evidence.js +0 -278
  277. package/dist/src/extract/svelte.js +0 -1309
  278. package/dist/src/extract/tsx-shared.d.ts +0 -37
  279. package/dist/src/extract/tsx-shared.js +0 -368
  280. package/dist/src/extract/vue-tsx.js +0 -449
  281. package/dist/src/extract/vue.js +0 -605
  282. package/dist/src/extract/web-components.js +0 -863
  283. /package/dist/src/extract/{source-line-metadata.js → framework-adapters/shared/helpers/get-node-source-lines.js} +0 -0
  284. /package/dist/src/extract/{resolve-local-module.d.ts → framework-adapters/shared/helpers/resolve-import-file-path.d.ts} +0 -0
  285. /package/dist/src/extract/{resolve-local-module.js → framework-adapters/shared/helpers/resolve-import-file-path.js} +0 -0
  286. /package/dist/src/extract/{resolve-type-property.d.ts → framework-adapters/shared/helpers/resolve-type-symbol.d.ts} +0 -0
  287. /package/dist/src/extract/{resolve-type-property.js → framework-adapters/shared/helpers/resolve-type-symbol.js} +0 -0
  288. /package/dist/src/extract/{slot-allowed-components.d.ts → helpers/evidence/collect-allowed-component-names.d.ts} +0 -0
  289. /package/dist/src/extract/{slot-allowed-components.js → helpers/evidence/collect-allowed-component-names.js} +0 -0
  290. /package/dist/src/extract/{parse-imported-names.d.ts → helpers/evidence/parse-source-imports.d.ts} +0 -0
  291. /package/dist/src/extract/{parse-imported-names.js → helpers/evidence/parse-source-imports.js} +0 -0
  292. /package/dist/src/extract/{validate.js → services/quality/helpers/inspection/validate-extracted-components.js} +0 -0
@@ -0,0 +1,14 @@
1
+ import type { RawComponentDefinition } from '../../../../types/component.js';
2
+ import type { ExtractionConfidence, ExtractionScoreOptions } from '../../../../types/scoring.js';
3
+ /** Returns true when the union mixes 3+ distinct base primitive types (ignoring nullability). */
4
+ export declare function isWidePrimitiveUnion(type: string): boolean;
5
+ /** Counts quality issues in the component and returns the count with labels. */
6
+ export declare function countExtractionIssues(component: RawComponentDefinition, options?: ExtractionScoreOptions): {
7
+ count: number;
8
+ reasons: string[];
9
+ };
10
+ /**
11
+ * Maps issue count to a 1–5 confidence scale:
12
+ * 0 → 5 (clean), 1 → 4, 2 → 3, 3 → 2, 4+ → 1
13
+ */
14
+ export declare function mapIssueCountToConfidence(count: number): ExtractionConfidence;
@@ -1,6 +1,6 @@
1
1
  // Prop type strings that indicate the extractor couldn't resolve a concrete type
2
2
  const OPAQUE_TYPES = new Set(['any', 'unknown', 'object', 'Record<string, unknown>', 'Record<string, any>']);
3
- // Prop names that are non-obvious and benefit from a description
3
+ // Well-known prop names whose purpose is obvious without a description
4
4
  const OBVIOUS_PROP_NAMES = new Set([
5
5
  'className',
6
6
  'style',
@@ -31,9 +31,8 @@ const OBVIOUS_PROP_NAMES = new Set([
31
31
  'aria-label',
32
32
  'aria-describedby',
33
33
  ]);
34
- // A union is "wide" if it mixes 3+ distinct base primitive types (ignoring nullability modifiers).
35
- // e.g. "string | number | boolean" → wide. "string | null | undefined" → NOT wide (just nullable string).
36
- function isWidePrimitiveUnion(type) {
34
+ /** Returns true when the union mixes 3+ distinct base primitive types (ignoring nullability). */
35
+ export function isWidePrimitiveUnion(type) {
37
36
  const parts = type.split('|').map((p) => p.trim());
38
37
  if (parts.length < 3)
39
38
  return false;
@@ -43,8 +42,8 @@ function isWidePrimitiveUnion(type) {
43
42
  const nullabilityCount = parts.filter((p) => nullability.has(p)).length;
44
43
  return baseCount >= 3 || (baseCount >= 2 && nullabilityCount > 0 && baseCount + nullabilityCount >= 3);
45
44
  }
46
- // Count the number of issues found for scoring
47
- function countIssues(component, options = {}) {
45
+ /** Counts quality issues in the component and returns the count with labels. */
46
+ export function countExtractionIssues(component, options = {}) {
48
47
  let count = 0;
49
48
  const reasons = [];
50
49
  if (component.props.length === 0 && component.slots.length === 0) {
@@ -78,13 +77,11 @@ function countIssues(component, options = {}) {
78
77
  }
79
78
  return { count, reasons: [...new Set(reasons)] };
80
79
  }
81
- // Maps issue count to a 1–5 confidence scale:
82
- // 0 issues → 5 (clean)
83
- // 1 issue → 4 (minor concern)
84
- // 2 issues → 3 (moderate concern)
85
- // 3 issues → 2 (significant concern)
86
- // 4+ issues → 1 (likely wrong)
87
- function issueCountToConfidence(count) {
80
+ /**
81
+ * Maps issue count to a 1–5 confidence scale:
82
+ * 0 → 5 (clean), 1 → 4, 2 → 3, 3 → 2, 4+ → 1
83
+ */
84
+ export function mapIssueCountToConfidence(count) {
88
85
  if (count === 0)
89
86
  return 5;
90
87
  if (count === 1)
@@ -95,14 +92,3 @@ function issueCountToConfidence(count) {
95
92
  return 2;
96
93
  return 1;
97
94
  }
98
- export function computeExtractionScore(component, options = {}) {
99
- const { count, reasons } = countIssues(component, options);
100
- return {
101
- confidence: issueCountToConfidence(count),
102
- reasons,
103
- };
104
- }
105
- // Flag components scoring 2 or below for human review
106
- export function deriveNeedsReview(confidence) {
107
- return confidence <= 2;
108
- }
@@ -0,0 +1,6 @@
1
+ import type { RawComponentDefinition } from '../../../../types/component.js';
2
+ import type { ExtractionConfidence, ExtractionScore, ExtractionScoreOptions } from '../../../../types/scoring.js';
3
+ export type { ExtractionConfidence, ExtractionScore, ExtractionScoreOptions } from '../../../../types/scoring.js';
4
+ export declare function computeExtractionScore(component: RawComponentDefinition, options?: ExtractionScoreOptions): ExtractionScore;
5
+ /** Returns true when the confidence score is low enough to require human review. */
6
+ export declare function deriveNeedsReview(confidence: ExtractionConfidence): boolean;
@@ -0,0 +1,12 @@
1
+ import { countExtractionIssues, mapIssueCountToConfidence } from './collect-scoring-inputs.js';
2
+ export function computeExtractionScore(component, options = {}) {
3
+ const { count, reasons } = countExtractionIssues(component, options);
4
+ return {
5
+ confidence: mapIssueCountToConfidence(count),
6
+ reasons,
7
+ };
8
+ }
9
+ /** Returns true when the confidence score is low enough to require human review. */
10
+ export function deriveNeedsReview(confidence) {
11
+ return confidence <= 2;
12
+ }
@@ -0,0 +1,4 @@
1
+ export interface PreClassification {
2
+ category: 'content' | 'design' | 'state' | 'exclude';
3
+ cdfTypeHint?: 'string' | 'enum' | 'richtext' | 'media' | 'boolean';
4
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,7 @@
1
+ import type { ComponentExtractionResult, ExtractorProgress } from './component.js';
2
+ import type { ExtractorOptions } from './options.js';
3
+ export interface ComponentExtractor {
4
+ name: string;
5
+ fileFilter: (filePath: string) => boolean;
6
+ extract(filePaths: string[], onProgress?: (progress: ExtractorProgress) => void, options?: ExtractorOptions): Promise<ComponentExtractionResult>;
7
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -76,25 +76,3 @@ export type ExtractorProgress = {
76
76
  filesProcessed: number;
77
77
  componentsFound: number;
78
78
  };
79
- /**
80
- * Optional extraction-time settings forwarded from the CLI through the
81
- * pipeline to each extractor. Only the Svelte extractor currently consumes
82
- * any of these; other extractors ignore the value.
83
- */
84
- export interface ExtractorOptions {
85
- /**
86
- * Whether the Svelte extractor should run a retry pass for components whose
87
- * declared Props type couldn't be resolved on the first pass (cross-package
88
- * extends, path-alias-only types, etc.). See svelte.ts for the policy.
89
- */
90
- resolveUnreachable?: 'auto' | 'always' | 'never';
91
- /** Absolute project root — used by the retry pass to locate tsconfig.json and node_modules. */
92
- projectRoot?: string;
93
- }
94
- export interface ComponentExtractor {
95
- name: string;
96
- fileFilter: (filePath: string) => boolean;
97
- extract(filePaths: string[], onProgress?: (p: ExtractorProgress) => void, opts?: ExtractorOptions): Promise<ComponentExtractionResult>;
98
- }
99
- /** Strip internal scoring fields before serialising a RawComponentDefinition for display or editing. */
100
- export declare function stripScoringFields({ extractionConfidence: _c, reviewReasons: _r, needsReview: _n, ...rest }: RawComponentDefinition): Omit<RawComponentDefinition, 'extractionConfidence' | 'reviewReasons' | 'needsReview'>;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,16 @@
1
+ import type { RawComponentDefinition } from './component.js';
2
+ import type { ExtractorOptions } from './options.js';
3
+ export type ExtractionEndpointProgress = {
4
+ phase: 'extract';
5
+ filesProcessed: number;
6
+ totalFiles: number;
7
+ componentsFound: number;
8
+ };
9
+ export interface ExtractionEndpointRequest extends ExtractorOptions {
10
+ readonly filePaths: readonly string[];
11
+ onProgress?: (progress: ExtractionEndpointProgress) => void;
12
+ }
13
+ export interface ExtractionEndpointResponse {
14
+ components: RawComponentDefinition[];
15
+ warnings: string[];
16
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,3 @@
1
+ import type { RawComponentDefinition } from './component.js';
2
+ /** Removes internal scoring fields from a component before showing it in the editor or writing it to disk. */
3
+ export declare function stripScoringFields({ extractionConfidence: _c, reviewReasons: _r, needsReview: _n, ...rest }: RawComponentDefinition): Omit<RawComponentDefinition, 'extractionConfidence' | 'reviewReasons' | 'needsReview'>;
@@ -1,4 +1,4 @@
1
- /** Strip internal scoring fields before serialising a RawComponentDefinition for display or editing. */
1
+ /** Removes internal scoring fields from a component before showing it in the editor or writing it to disk. */
2
2
  export function stripScoringFields({ extractionConfidence: _c, reviewReasons: _r, needsReview: _n, ...rest }) {
3
3
  return rest;
4
4
  }
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Optional extraction-time settings forwarded from the CLI through the
3
+ * pipeline to each extractor. Only the Svelte extractor currently consumes
4
+ * any of these; other extractors ignore the value.
5
+ */
6
+ export interface ExtractorOptions {
7
+ /**
8
+ * Whether the Svelte extractor should run a retry pass for components whose
9
+ * declared Props type could not be resolved on the first pass (cross-package
10
+ * extends, path-alias-only types, etc.). See svelte.ts for the policy.
11
+ */
12
+ resolveUnreachable?: 'auto' | 'always' | 'never';
13
+ /** Absolute project root — used by the retry pass to locate tsconfig.json and node_modules. */
14
+ projectRoot?: string;
15
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,9 @@
1
+ export type ExtractionConfidence = 1 | 2 | 3 | 4 | 5;
2
+ export type ExtractionScore = {
3
+ confidence: ExtractionConfidence;
4
+ reasons: string[];
5
+ };
6
+ export interface ExtractionScoreOptions {
7
+ additionalIssueCount?: number;
8
+ additionalReasons?: string[];
9
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,5 @@
1
+ export interface ComponentSourceInspection {
2
+ wrapperConfidence: 0 | 1 | 2 | 3 | 4 | 5;
3
+ reviewReasons: string[];
4
+ keepDespiteZeroSurface: boolean;
5
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -1,21 +1,27 @@
1
- export type { RawComponentDefinition, RawPropDefinition, RawSlotDefinition, ComponentExtractionResult, ExtractionExclusion, ExtractorProgress, ExtractorOptions, ComponentExtractor, ExtractionValidationIssue, ExtractionValidationIssueCode, } from './types.js';
2
- export { stripScoringFields } from './types.js';
3
- export { extractComponents } from './extract/pipeline.js';
4
- export { extractReactComponents } from './extract/react.js';
5
- export { extractVueComponents } from './extract/vue.js';
6
- export { extractVueTsxComponents } from './extract/vue-tsx.js';
7
- export { extractStencilComponents } from './extract/stencil.js';
8
- export { extractAstroComponents } from './extract/astro.js';
9
- export { extractWebComponentDefinitions } from './extract/web-components.js';
10
- export { extractSvelteComponents } from './extract/svelte.js';
11
- export { extractAllowedComponentsFromTypeText, extractAllowedComponentsFromJsdoc, } from './extract/slot-allowed-components.js';
12
- export { isNonAuthorableComponent } from './extract/non-authorable-filter.js';
13
- export { computeExtractionScore, deriveNeedsReview } from './extract/scoring.js';
14
- export type { ExtractionScore, ExtractionScoreOptions, ExtractionConfidence } from './extract/scoring.js';
15
- export { inspectComponentSource, describeReviewReasons, describeReviewReason, isDataWrapperReviewReason, HIGH_CONFIDENCE_DATA_FETCH_WRAPPER_REASON, POSSIBLE_DATA_FETCH_WRAPPER_REASON, ZERO_SURFACE_RENDERED_UI_REASON, } from './extract/source-inspection.js';
16
- export type { ComponentSourceInspection } from './extract/source-inspection.js';
17
- export { validateExtractedComponents, shouldExcludeDueToValidation, formatExclusionWarning, formatExcludedComponentLines, } from './extract/validate.js';
18
- export { parseImportedNames } from './extract/parse-imported-names.js';
19
- export { CONTENT_NAME_EXCEPTIONS, isReactNodeType, isArrayReactNodeType, shouldBeSlot, } from './extract/slot-detection.js';
20
- export { preClassifyProp, preClassifyComponent } from './pre-classify.js';
21
- export type { PreClassification } from './pre-classify.js';
1
+ export type { RawComponentDefinition, RawPropDefinition, RawSlotDefinition, ComponentExtractionResult, ExtractionExclusion, ExtractorProgress, ExtractionValidationIssue, ExtractionValidationIssueCode, } from './extract/types/component.js';
2
+ export { stripScoringFields } from './extract/types/display.js';
3
+ export type { ExtractorOptions } from './extract/types/options.js';
4
+ export type { ComponentExtractor } from './extract/types/component-extractor.js';
5
+ export { extractComponents } from './extract/services/extraction/extract-components.js';
6
+ export { extractEndpoint } from './extract/controller/extract-controller.js';
7
+ export type { ExtractionEndpointProgress, ExtractionEndpointRequest, ExtractionEndpointResponse, } from './extract/types/contract.js';
8
+ export { extractReactComponents } from './extract/framework-adapters/react/extractor.js';
9
+ export { extractVueComponents } from './extract/framework-adapters/vue/extractor.js';
10
+ export { extractVueTsxComponents } from './extract/framework-adapters/vue-tsx/extractor.js';
11
+ export { extractStencilComponents } from './extract/framework-adapters/stencil/extractor.js';
12
+ export { extractAstroComponents } from './extract/framework-adapters/astro/extractor.js';
13
+ export { extractWebComponentDefinitions } from './extract/framework-adapters/web-components/extractor.js';
14
+ export { extractSvelteComponents } from './extract/framework-adapters/svelte/extractor.js';
15
+ export { extractAllowedComponentsFromTypeText, extractAllowedComponentsFromJsdoc, } from './extract/helpers/evidence/collect-allowed-component-names.js';
16
+ export { evaluateExtractionQuality } from './extract/services/quality/evaluate-extraction-quality.js';
17
+ export { hasNoAuthoringSurface } from './extract/services/quality/helpers/authorability/evaluate-authorability.js';
18
+ export { hasNoAuthoringSurface as isNonAuthorableComponent } from './extract/services/quality/helpers/authorability/evaluate-authorability.js';
19
+ export { computeExtractionScore, deriveNeedsReview, } from './extract/services/quality/helpers/scoring/compute-extraction-score.js';
20
+ export type { ExtractionScore, ExtractionScoreOptions, ExtractionConfidence } from './extract/types/scoring.js';
21
+ export { inspectComponentSource, describeReviewReasons, describeReviewReason, isDataWrapperReviewReason, HIGH_CONFIDENCE_DATA_FETCH_WRAPPER_REASON, POSSIBLE_DATA_FETCH_WRAPPER_REASON, ZERO_SURFACE_RENDERED_UI_REASON, } from './extract/services/quality/helpers/inspection/inspect-component-source.js';
22
+ export type { ComponentSourceInspection } from './extract/types/source-inspection.js';
23
+ export { validateExtractedComponents, shouldExcludeDueToValidation, formatExclusionWarning, formatExcludedComponentLines, } from './extract/services/quality/helpers/inspection/validate-extracted-components.js';
24
+ export { parseImportedNames } from './extract/helpers/evidence/parse-source-imports.js';
25
+ export { CONTENT_NAME_EXCEPTIONS, isReactNodeType, isArrayReactNodeType, shouldBeSlot, } from './extract/helpers/evidence/detect-slot-from-prop.js';
26
+ export { preClassifyProp, preClassifyComponent } from './extract/services/classification/classify-component-props.js';
27
+ export type { PreClassification } from './extract/types/classification.js';
package/dist/src/index.js CHANGED
@@ -1,23 +1,27 @@
1
- export { stripScoringFields } from './types.js';
1
+ export { stripScoringFields } from './extract/types/display.js';
2
2
  // Core extraction pipeline
3
- export { extractComponents } from './extract/pipeline.js';
3
+ export { extractComponents } from './extract/services/extraction/extract-components.js';
4
+ export { extractEndpoint } from './extract/controller/extract-controller.js';
4
5
  // Framework-specific extractors
5
- export { extractReactComponents } from './extract/react.js';
6
- export { extractVueComponents } from './extract/vue.js';
7
- export { extractVueTsxComponents } from './extract/vue-tsx.js';
8
- export { extractStencilComponents } from './extract/stencil.js';
9
- export { extractAstroComponents } from './extract/astro.js';
10
- export { extractWebComponentDefinitions } from './extract/web-components.js';
11
- export { extractSvelteComponents } from './extract/svelte.js';
12
- export { extractAllowedComponentsFromTypeText, extractAllowedComponentsFromJsdoc, } from './extract/slot-allowed-components.js';
6
+ export { extractReactComponents } from './extract/framework-adapters/react/extractor.js';
7
+ export { extractVueComponents } from './extract/framework-adapters/vue/extractor.js';
8
+ export { extractVueTsxComponents } from './extract/framework-adapters/vue-tsx/extractor.js';
9
+ export { extractStencilComponents } from './extract/framework-adapters/stencil/extractor.js';
10
+ export { extractAstroComponents } from './extract/framework-adapters/astro/extractor.js';
11
+ export { extractWebComponentDefinitions } from './extract/framework-adapters/web-components/extractor.js';
12
+ export { extractSvelteComponents } from './extract/framework-adapters/svelte/extractor.js';
13
+ export { extractAllowedComponentsFromTypeText, extractAllowedComponentsFromJsdoc, } from './extract/helpers/evidence/collect-allowed-component-names.js';
13
14
  // Post-extraction filtering and scoring
14
- export { isNonAuthorableComponent } from './extract/non-authorable-filter.js';
15
- export { computeExtractionScore, deriveNeedsReview } from './extract/scoring.js';
16
- export { inspectComponentSource, describeReviewReasons, describeReviewReason, isDataWrapperReviewReason, HIGH_CONFIDENCE_DATA_FETCH_WRAPPER_REASON, POSSIBLE_DATA_FETCH_WRAPPER_REASON, ZERO_SURFACE_RENDERED_UI_REASON, } from './extract/source-inspection.js';
15
+ export { evaluateExtractionQuality } from './extract/services/quality/evaluate-extraction-quality.js';
16
+ export { hasNoAuthoringSurface } from './extract/services/quality/helpers/authorability/evaluate-authorability.js';
17
+ // Backwards-compatible alias for callers that used the pre-refactor name
18
+ export { hasNoAuthoringSurface as isNonAuthorableComponent } from './extract/services/quality/helpers/authorability/evaluate-authorability.js';
19
+ export { computeExtractionScore, deriveNeedsReview, } from './extract/services/quality/helpers/scoring/compute-extraction-score.js';
20
+ export { inspectComponentSource, describeReviewReasons, describeReviewReason, isDataWrapperReviewReason, HIGH_CONFIDENCE_DATA_FETCH_WRAPPER_REASON, POSSIBLE_DATA_FETCH_WRAPPER_REASON, ZERO_SURFACE_RENDERED_UI_REASON, } from './extract/services/quality/helpers/inspection/inspect-component-source.js';
17
21
  // Validation
18
- export { validateExtractedComponents, shouldExcludeDueToValidation, formatExclusionWarning, formatExcludedComponentLines, } from './extract/validate.js';
19
- export { parseImportedNames } from './extract/parse-imported-names.js';
22
+ export { validateExtractedComponents, shouldExcludeDueToValidation, formatExclusionWarning, formatExcludedComponentLines, } from './extract/services/quality/helpers/inspection/validate-extracted-components.js';
23
+ export { parseImportedNames } from './extract/helpers/evidence/parse-source-imports.js';
20
24
  // Slot detection helpers
21
- export { CONTENT_NAME_EXCEPTIONS, isReactNodeType, isArrayReactNodeType, shouldBeSlot, } from './extract/slot-detection.js';
25
+ export { CONTENT_NAME_EXCEPTIONS, isReactNodeType, isArrayReactNodeType, shouldBeSlot, } from './extract/helpers/evidence/detect-slot-from-prop.js';
22
26
  // Pre-classification
23
- export { preClassifyProp, preClassifyComponent } from './pre-classify.js';
27
+ export { preClassifyProp, preClassifyComponent } from './extract/services/classification/classify-component-props.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@contentful/experience-design-system-extraction",
3
- "version": "2.36.2-dev-build-a6f80ae6.0",
3
+ "version": "2.36.2-dev-build-7907fec3.0",
4
4
  "description": "Component extraction engine for the Contentful Experience Design System SDK",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -1,226 +0,0 @@
1
- import os from 'node:os';
2
- import { basename } from 'node:path';
3
- import { Project, Node } from 'ts-morph';
4
- import { createSortedExtractionResult, runFileExtractionWorkers } from './file-extraction-workers.js';
5
- import { resolveTypeProperty } from './resolve-type-property.js';
6
- import { getSourceLineMetadata } from './source-line-metadata.js';
7
- function extractAllowedValues(typeText) {
8
- // Check if the type is a union of string literals like 'a' | 'b' | 'c'
9
- const parts = typeText.split('|').map((p) => p.trim());
10
- const literals = parts.filter((p) => /^['"]/.test(p)).map((p) => p.replace(/^['"]|['"]$/g, ''));
11
- return literals.length >= 2 ? literals.sort() : undefined;
12
- }
13
- function usesAstroProps(initializer) {
14
- if (!initializer)
15
- return false;
16
- if (initializer.getText() === 'Astro.props')
17
- return true;
18
- let found = false;
19
- initializer.forEachDescendant((node) => {
20
- if (found)
21
- return false;
22
- if (Node.isPropertyAccessExpression(node) && node.getText() === 'Astro.props') {
23
- found = true;
24
- return false;
25
- }
26
- return undefined;
27
- });
28
- return found;
29
- }
30
- function extractBindingPropName(element) {
31
- if (element.getText().startsWith('...'))
32
- return null;
33
- return element.getPropertyNameNode()?.getText() ?? element.getNameNode().getText();
34
- }
35
- function createAstroFrontmatterProject() {
36
- return new Project({
37
- compilerOptions: {
38
- strict: false,
39
- target: 99,
40
- module: 99,
41
- allowJs: true,
42
- },
43
- useInMemoryFileSystem: true,
44
- skipAddingFilesFromTsConfig: true,
45
- });
46
- }
47
- function forEachAstroPropsBinding(frontmatter, visit) {
48
- const sf = createAstroFrontmatterProject().createSourceFile('__frontmatter__.ts', frontmatter);
49
- sf.forEachDescendant((node) => {
50
- if (!Node.isVariableDeclaration(node))
51
- return;
52
- const initializer = node.getInitializer();
53
- if (!initializer || !usesAstroProps(initializer))
54
- return;
55
- const nameNode = node.getNameNode();
56
- if (!Node.isObjectBindingPattern(nameNode))
57
- return;
58
- for (const element of nameNode.getElements())
59
- visit(element);
60
- });
61
- }
62
- function extractFallbackPropsFromFrontmatter(frontmatter) {
63
- const props = new Map();
64
- forEachAstroPropsBinding(frontmatter, (element) => {
65
- const propName = extractBindingPropName(element);
66
- if (!propName)
67
- return;
68
- props.set(propName, {
69
- name: propName,
70
- type: 'any',
71
- required: !element.getInitializer(),
72
- });
73
- });
74
- return [...props.values()].sort((a, b) => a.name.localeCompare(b.name));
75
- }
76
- function mergeProps(...propGroups) {
77
- const merged = new Map();
78
- for (const props of propGroups) {
79
- for (const prop of props) {
80
- const existing = merged.get(prop.name);
81
- merged.set(prop.name, existing
82
- ? {
83
- ...existing,
84
- ...prop,
85
- required: existing.required && prop.required,
86
- }
87
- : prop);
88
- }
89
- }
90
- return [...merged.values()].sort((a, b) => a.name.localeCompare(b.name));
91
- }
92
- function extractPropsFromFrontmatter(frontmatter) {
93
- const sf = createAstroFrontmatterProject().createSourceFile('__frontmatter__.ts', frontmatter);
94
- const props = [];
95
- // Find `interface Props` or `type Props = ...`
96
- const propsInterface = sf.getInterface('Props');
97
- const propsTypeAlias = sf.getTypeAlias('Props');
98
- if (propsInterface) {
99
- for (const member of propsInterface.getProperties()) {
100
- const name = member.getName();
101
- const typeText = member.getTypeNode()?.getText() ?? 'any';
102
- const required = !member.hasQuestionToken();
103
- const allowedValues = extractAllowedValues(typeText);
104
- props.push({
105
- name,
106
- type: typeText,
107
- required,
108
- ...(allowedValues && { allowedValues }),
109
- sourceStartLine: member.getStartLineNumber(),
110
- sourceEndLine: member.getEndLineNumber(),
111
- });
112
- }
113
- }
114
- else if (propsTypeAlias) {
115
- const type = propsTypeAlias.getType();
116
- for (const property of type.getProperties()) {
117
- const resolved = resolveTypeProperty(property);
118
- if (!resolved)
119
- continue;
120
- const { name, declaration: decl, typeText, required } = resolved;
121
- const allowedValues = extractAllowedValues(typeText);
122
- props.push({
123
- name,
124
- type: typeText,
125
- required,
126
- ...(allowedValues && { allowedValues }),
127
- ...getSourceLineMetadata(decl),
128
- });
129
- }
130
- }
131
- return props.sort((a, b) => a.name.localeCompare(b.name));
132
- }
133
- function extractDefaultsFromFrontmatter(frontmatter) {
134
- const defaults = new Map();
135
- forEachAstroPropsBinding(frontmatter, (element) => {
136
- const propName = extractBindingPropName(element);
137
- if (!propName)
138
- return;
139
- const elementInitializer = element.getInitializer();
140
- if (!elementInitializer)
141
- return;
142
- const value = elementInitializer.getText().replace(/^['"]|['"]$/g, '');
143
- defaults.set(propName, value);
144
- });
145
- return defaults;
146
- }
147
- function extractSlotsFromTemplate(template) {
148
- const slots = [];
149
- const seen = new Set();
150
- const slotRegex = /<slot(?:\s+name=["']([^"']+)["'])?\s*\/?>/g;
151
- let match;
152
- while ((match = slotRegex.exec(template)) !== null) {
153
- const slotName = match[1] ?? 'default';
154
- if (!seen.has(slotName)) {
155
- seen.add(slotName);
156
- slots.push({ name: slotName, isDefault: slotName === 'default' });
157
- }
158
- }
159
- return slots;
160
- }
161
- function extractSlotsFromFrontmatter(frontmatter) {
162
- const slots = [];
163
- const seen = new Set();
164
- const slotRenderRegex = /Astro\.slots\.render\(\s*['"]([^'"]+)['"]\s*\)/g;
165
- let match;
166
- while ((match = slotRenderRegex.exec(frontmatter)) !== null) {
167
- const slotName = match[1];
168
- if (!seen.has(slotName)) {
169
- seen.add(slotName);
170
- slots.push({ name: slotName, isDefault: slotName === 'default' });
171
- }
172
- }
173
- return slots;
174
- }
175
- function mergeSlots(...slotGroups) {
176
- const merged = [];
177
- const seen = new Set();
178
- for (const slots of slotGroups) {
179
- for (const slot of slots) {
180
- if (seen.has(slot.name))
181
- continue;
182
- seen.add(slot.name);
183
- merged.push(slot);
184
- }
185
- }
186
- return merged;
187
- }
188
- function extractFromAstroFile(filePath, source) {
189
- const name = basename(filePath, '.astro');
190
- // Split on `---` fences: frontmatter is between first and second `---`
191
- // If there is no `---`, the entire file is a template-only component
192
- const fenceIndex = source.startsWith('---') ? 0 : -1;
193
- let frontmatter = '';
194
- let template = source;
195
- if (fenceIndex !== -1) {
196
- const endFenceIndex = source.indexOf('---', fenceIndex + 3);
197
- if (endFenceIndex !== -1) {
198
- frontmatter = source.slice(fenceIndex + 3, endFenceIndex);
199
- template = source.slice(endFenceIndex + 3);
200
- }
201
- }
202
- const props = frontmatter
203
- ? mergeProps(extractFallbackPropsFromFrontmatter(frontmatter), extractPropsFromFrontmatter(frontmatter))
204
- : [];
205
- const defaults = frontmatter ? extractDefaultsFromFrontmatter(frontmatter) : new Map();
206
- const propsWithDefaults = props.map((p) => {
207
- const defaultValue = defaults.get(p.name);
208
- return defaultValue ? { ...p, defaultValue } : p;
209
- });
210
- const slots = mergeSlots(extractSlotsFromTemplate(template), extractSlotsFromFrontmatter(frontmatter));
211
- return {
212
- name,
213
- source: filePath,
214
- sourcePath: filePath,
215
- framework: 'astro',
216
- props: propsWithDefaults,
217
- slots,
218
- };
219
- }
220
- export async function extractAstroComponents(filePaths, onProgress) {
221
- const astroFiles = filePaths.filter((f) => f.endsWith('.astro'));
222
- const { items: components, warnings } = await runFileExtractionWorkers(astroFiles, os.cpus().length, async (filePath, source) => ({
223
- item: extractFromAstroFile(filePath, source),
224
- }), (filePath, error) => `Failed to extract from ${filePath}: ${error instanceof Error ? error.message : String(error)}`, onProgress);
225
- return createSortedExtractionResult(components, warnings);
226
- }
@@ -1,17 +0,0 @@
1
- import type { RawComponentDefinition } from '../types.js';
2
- interface NonAuthorableResult {
3
- skip: boolean;
4
- reason?: string;
5
- }
6
- /**
7
- * Decides whether a component is non-authorable infrastructure (Context.Provider,
8
- * analytics shim, layout-only utility, etc.) and should be filtered out of the
9
- * analyze TUI before authoring-token generation.
10
- *
11
- * Uses prop-shape signals only — no component-name or source-path patterns.
12
- * A design system can live anywhere under any naming convention; relying on
13
- * suffixes like `*Provider` or paths like `src/lib/` would silently fail in
14
- * other repos.
15
- */
16
- export declare function isNonAuthorableComponent(component: RawComponentDefinition): NonAuthorableResult;
17
- export {};