@contentful/experience-design-system-extraction 2.36.2-dev-build-c4497102.0 → 2.36.2-dev-build-a6f80ae6.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/{framework-adapters/astro/extractor.d.ts → astro.d.ts} +1 -1
  3. package/dist/src/extract/astro.js +226 -0
  4. package/dist/src/extract/{framework-adapters/shared/helpers/file-processing/file-workers.d.ts → file-extraction-workers.d.ts} +13 -1
  5. package/dist/src/extract/{framework-adapters/shared/helpers/file-processing/file-workers.js → file-extraction-workers.js} +19 -0
  6. package/dist/src/extract/non-authorable-filter.d.ts +17 -0
  7. package/dist/src/extract/non-authorable-filter.js +60 -0
  8. package/dist/src/extract/pipeline.d.ts +7 -0
  9. package/dist/src/extract/pipeline.js +343 -0
  10. package/dist/src/extract/{framework-adapters/react/extractor.d.ts → react.d.ts} +1 -1
  11. package/dist/src/extract/react.js +2069 -0
  12. package/dist/src/extract/scoring.d.ts +12 -0
  13. package/dist/src/extract/{services/quality/helpers/scoring/collect-scoring-inputs.js → scoring.js} +24 -10
  14. package/dist/src/extract/slot-detection.d.ts +35 -0
  15. package/dist/src/extract/slot-detection.js +98 -0
  16. package/dist/src/extract/{services/quality/helpers/inspection/inspect-component-source.d.ts → source-inspection.d.ts} +6 -3
  17. package/dist/src/extract/{services/quality/helpers/inspection/inspect-component-source.js → source-inspection.js} +65 -5
  18. package/dist/src/extract/{framework-adapters/shared/helpers/get-node-source-lines.d.ts → source-line-metadata.d.ts} +1 -1
  19. package/dist/src/extract/{framework-adapters/stencil/extractor.d.ts → stencil.d.ts} +1 -1
  20. package/dist/src/extract/stencil.js +312 -0
  21. package/dist/src/extract/structural-slot-evidence.d.ts +63 -0
  22. package/dist/src/extract/structural-slot-evidence.js +278 -0
  23. package/dist/src/extract/{framework-adapters/svelte/extractor.d.ts → svelte.d.ts} +1 -2
  24. package/dist/src/extract/svelte.js +1309 -0
  25. package/dist/src/extract/tsx-shared.d.ts +37 -0
  26. package/dist/src/extract/tsx-shared.js +368 -0
  27. package/dist/src/extract/{services/quality/helpers/inspection/validate-extracted-components.d.ts → validate.d.ts} +1 -1
  28. package/dist/src/extract/{framework-adapters/vue-tsx/extractor.d.ts → vue-tsx.d.ts} +1 -1
  29. package/dist/src/extract/vue-tsx.js +449 -0
  30. package/dist/src/extract/{framework-adapters/vue/extractor.d.ts → vue.d.ts} +1 -1
  31. package/dist/src/extract/vue.js +605 -0
  32. package/dist/src/extract/{framework-adapters/web-components/extractor.d.ts → web-components.d.ts} +1 -1
  33. package/dist/src/extract/web-components.js +863 -0
  34. package/dist/src/index.d.ts +21 -27
  35. package/dist/src/index.js +17 -21
  36. package/dist/src/{extract/services/classification/classify-component-props.d.ts → pre-classify.d.ts} +5 -3
  37. package/dist/src/{extract/services/classification/classify-component-props.js → pre-classify.js} +100 -8
  38. package/dist/src/{extract/types/component.d.ts → types.d.ts} +22 -0
  39. package/dist/src/{extract/types/display.js → types.js} +1 -1
  40. package/package.json +1 -1
  41. package/dist/src/extract/controller/extract-controller.d.ts +0 -10
  42. package/dist/src/extract/controller/extract-controller.js +0 -33
  43. package/dist/src/extract/controller/helpers/validate-endpoint-request.d.ts +0 -2
  44. package/dist/src/extract/controller/helpers/validate-endpoint-request.js +0 -24
  45. package/dist/src/extract/framework-adapters/astro/extractor.js +0 -45
  46. package/dist/src/extract/framework-adapters/astro/frontmatter.d.ts +0 -11
  47. package/dist/src/extract/framework-adapters/astro/frontmatter.js +0 -96
  48. package/dist/src/extract/framework-adapters/astro/helpers/collect-astro-props-bindings.d.ts +0 -4
  49. package/dist/src/extract/framework-adapters/astro/helpers/collect-astro-props-bindings.js +0 -47
  50. package/dist/src/extract/framework-adapters/astro/slots.d.ts +0 -7
  51. package/dist/src/extract/framework-adapters/astro/slots.js +0 -44
  52. package/dist/src/extract/framework-adapters/react/extractor.js +0 -31
  53. package/dist/src/extract/framework-adapters/react/helpers/collect-dom-wrapper-contexts.d.ts +0 -4
  54. package/dist/src/extract/framework-adapters/react/helpers/collect-dom-wrapper-contexts.js +0 -73
  55. package/dist/src/extract/framework-adapters/react/helpers/collect-prop-dataflow.d.ts +0 -14
  56. package/dist/src/extract/framework-adapters/react/helpers/collect-prop-dataflow.js +0 -220
  57. package/dist/src/extract/framework-adapters/react/helpers/collect-react-impl-hints.d.ts +0 -5
  58. package/dist/src/extract/framework-adapters/react/helpers/collect-react-impl-hints.js +0 -32
  59. package/dist/src/extract/framework-adapters/react/helpers/detect-dom-is-pure-wrapper.d.ts +0 -2
  60. package/dist/src/extract/framework-adapters/react/helpers/detect-dom-is-pure-wrapper.js +0 -59
  61. package/dist/src/extract/framework-adapters/react/helpers/detect-dom-type-patterns.d.ts +0 -8
  62. package/dist/src/extract/framework-adapters/react/helpers/detect-dom-type-patterns.js +0 -29
  63. package/dist/src/extract/framework-adapters/react/helpers/detect-omit-wrapped-custom-props.d.ts +0 -2
  64. package/dist/src/extract/framework-adapters/react/helpers/detect-omit-wrapped-custom-props.js +0 -64
  65. package/dist/src/extract/framework-adapters/react/helpers/detect-pick-type-patterns.d.ts +0 -4
  66. package/dist/src/extract/framework-adapters/react/helpers/detect-pick-type-patterns.js +0 -64
  67. package/dist/src/extract/framework-adapters/react/helpers/detect-react-polymorphic.d.ts +0 -5
  68. package/dist/src/extract/framework-adapters/react/helpers/detect-react-polymorphic.js +0 -170
  69. package/dist/src/extract/framework-adapters/react/helpers/dom-attribute-surfaces.d.ts +0 -15
  70. package/dist/src/extract/framework-adapters/react/helpers/dom-attribute-surfaces.js +0 -231
  71. package/dist/src/extract/framework-adapters/react/helpers/extract-binding-fallback-props.d.ts +0 -4
  72. package/dist/src/extract/framework-adapters/react/helpers/extract-binding-fallback-props.js +0 -50
  73. package/dist/src/extract/framework-adapters/react/helpers/extract-from-react-source-file.d.ts +0 -5
  74. package/dist/src/extract/framework-adapters/react/helpers/extract-from-react-source-file.js +0 -23
  75. package/dist/src/extract/framework-adapters/react/helpers/extract-react-allowed-components.d.ts +0 -2
  76. package/dist/src/extract/framework-adapters/react/helpers/extract-react-allowed-components.js +0 -25
  77. package/dist/src/extract/framework-adapters/react/helpers/extract-react-binding-defaults.d.ts +0 -6
  78. package/dist/src/extract/framework-adapters/react/helpers/extract-react-binding-defaults.js +0 -48
  79. package/dist/src/extract/framework-adapters/react/helpers/extract-react-component-from-export.d.ts +0 -15
  80. package/dist/src/extract/framework-adapters/react/helpers/extract-react-component-from-export.js +0 -106
  81. package/dist/src/extract/framework-adapters/react/helpers/extract-react-prop-types.d.ts +0 -3
  82. package/dist/src/extract/framework-adapters/react/helpers/extract-react-prop-types.js +0 -64
  83. package/dist/src/extract/framework-adapters/react/helpers/extract-react-props-from-type.d.ts +0 -15
  84. package/dist/src/extract/framework-adapters/react/helpers/extract-react-props-from-type.js +0 -318
  85. package/dist/src/extract/framework-adapters/react/helpers/extract-react-slots.d.ts +0 -6
  86. package/dist/src/extract/framework-adapters/react/helpers/extract-react-slots.js +0 -44
  87. package/dist/src/extract/framework-adapters/react/helpers/filter-impl-alias-props.d.ts +0 -4
  88. package/dist/src/extract/framework-adapters/react/helpers/filter-impl-alias-props.js +0 -52
  89. package/dist/src/extract/framework-adapters/react/helpers/infer-primitive-dom-props.d.ts +0 -6
  90. package/dist/src/extract/framework-adapters/react/helpers/infer-primitive-dom-props.js +0 -69
  91. package/dist/src/extract/framework-adapters/react/helpers/resolve-component-function.d.ts +0 -4
  92. package/dist/src/extract/framework-adapters/react/helpers/resolve-component-function.js +0 -131
  93. package/dist/src/extract/framework-adapters/react/helpers/resolve-react-prop-forwarding.d.ts +0 -8
  94. package/dist/src/extract/framework-adapters/react/helpers/resolve-react-prop-forwarding.js +0 -22
  95. package/dist/src/extract/framework-adapters/react/helpers/resolve-react-props-type.d.ts +0 -14
  96. package/dist/src/extract/framework-adapters/react/helpers/resolve-react-props-type.js +0 -86
  97. package/dist/src/extract/framework-adapters/react/helpers/synthesize-react-structural-slots.d.ts +0 -8
  98. package/dist/src/extract/framework-adapters/react/helpers/synthesize-react-structural-slots.js +0 -44
  99. package/dist/src/extract/framework-adapters/shared/helpers/build-component-lookup-maps.d.ts +0 -5
  100. package/dist/src/extract/framework-adapters/shared/helpers/build-component-lookup-maps.js +0 -10
  101. package/dist/src/extract/framework-adapters/shared/helpers/collect-jsdoc-slot-comments.d.ts +0 -2
  102. package/dist/src/extract/framework-adapters/shared/helpers/collect-jsdoc-slot-comments.js +0 -13
  103. package/dist/src/extract/framework-adapters/shared/helpers/file-processing/project-source-files.d.ts +0 -5
  104. package/dist/src/extract/framework-adapters/shared/helpers/file-processing/project-source-files.js +0 -13
  105. package/dist/src/extract/framework-adapters/shared/helpers/file-processing/result-normalizer.d.ts +0 -6
  106. package/dist/src/extract/framework-adapters/shared/helpers/file-processing/result-normalizer.js +0 -6
  107. package/dist/src/extract/framework-adapters/shared/helpers/find-tsx-workspace-package.d.ts +0 -2
  108. package/dist/src/extract/framework-adapters/shared/helpers/find-tsx-workspace-package.js +0 -62
  109. package/dist/src/extract/framework-adapters/shared/helpers/resolve-tsx-tsconfig-path.d.ts +0 -7
  110. package/dist/src/extract/framework-adapters/shared/helpers/resolve-tsx-tsconfig-path.js +0 -93
  111. package/dist/src/extract/framework-adapters/shared/helpers/resolve-tsx-workspace-imports.d.ts +0 -6
  112. package/dist/src/extract/framework-adapters/shared/helpers/resolve-tsx-workspace-imports.js +0 -58
  113. package/dist/src/extract/framework-adapters/shared/helpers/tsx-node-utils.d.ts +0 -13
  114. package/dist/src/extract/framework-adapters/shared/helpers/tsx-node-utils.js +0 -76
  115. package/dist/src/extract/framework-adapters/shared/helpers/tsx-renderable-exports.d.ts +0 -12
  116. package/dist/src/extract/framework-adapters/shared/helpers/tsx-renderable-exports.js +0 -35
  117. package/dist/src/extract/framework-adapters/shared/helpers/tsx-shared.d.ts +0 -14
  118. package/dist/src/extract/framework-adapters/shared/helpers/tsx-shared.js +0 -54
  119. package/dist/src/extract/framework-adapters/stencil/extractor.js +0 -82
  120. package/dist/src/extract/framework-adapters/stencil/helpers/detect-stencil-class.d.ts +0 -7
  121. package/dist/src/extract/framework-adapters/stencil/helpers/detect-stencil-class.js +0 -32
  122. package/dist/src/extract/framework-adapters/stencil/helpers/extract-stencil-props.d.ts +0 -5
  123. package/dist/src/extract/framework-adapters/stencil/helpers/extract-stencil-props.js +0 -62
  124. package/dist/src/extract/framework-adapters/stencil/helpers/extract-stencil-slots.d.ts +0 -6
  125. package/dist/src/extract/framework-adapters/stencil/helpers/extract-stencil-slots.js +0 -87
  126. package/dist/src/extract/framework-adapters/stencil/helpers/stencil-prop-helpers.d.ts +0 -5
  127. package/dist/src/extract/framework-adapters/stencil/helpers/stencil-prop-helpers.js +0 -39
  128. package/dist/src/extract/framework-adapters/svelte/extractor.js +0 -27
  129. package/dist/src/extract/framework-adapters/svelte/helpers/classify-svelte-props-annotation.d.ts +0 -6
  130. package/dist/src/extract/framework-adapters/svelte/helpers/classify-svelte-props-annotation.js +0 -51
  131. package/dist/src/extract/framework-adapters/svelte/helpers/collect-svelte-type-references.d.ts +0 -3
  132. package/dist/src/extract/framework-adapters/svelte/helpers/collect-svelte-type-references.js +0 -52
  133. package/dist/src/extract/framework-adapters/svelte/helpers/extract-from-svelte-file.d.ts +0 -7
  134. package/dist/src/extract/framework-adapters/svelte/helpers/extract-from-svelte-file.js +0 -90
  135. package/dist/src/extract/framework-adapters/svelte/helpers/extract-svelte-ast-type-members.d.ts +0 -15
  136. package/dist/src/extract/framework-adapters/svelte/helpers/extract-svelte-ast-type-members.js +0 -46
  137. package/dist/src/extract/framework-adapters/svelte/helpers/extract-svelte-declaration-data.d.ts +0 -7
  138. package/dist/src/extract/framework-adapters/svelte/helpers/extract-svelte-declaration-data.js +0 -64
  139. package/dist/src/extract/framework-adapters/svelte/helpers/extract-svelte-external-type-members.d.ts +0 -4
  140. package/dist/src/extract/framework-adapters/svelte/helpers/extract-svelte-external-type-members.js +0 -58
  141. package/dist/src/extract/framework-adapters/svelte/helpers/extract-svelte-from-destructure.d.ts +0 -4
  142. package/dist/src/extract/framework-adapters/svelte/helpers/extract-svelte-from-destructure.js +0 -85
  143. package/dist/src/extract/framework-adapters/svelte/helpers/extract-svelte-props.d.ts +0 -22
  144. package/dist/src/extract/framework-adapters/svelte/helpers/extract-svelte-props.js +0 -55
  145. package/dist/src/extract/framework-adapters/svelte/helpers/extract-svelte-template-slots.d.ts +0 -7
  146. package/dist/src/extract/framework-adapters/svelte/helpers/extract-svelte-template-slots.js +0 -63
  147. package/dist/src/extract/framework-adapters/svelte/helpers/extract-svelte-type-member-props.d.ts +0 -3
  148. package/dist/src/extract/framework-adapters/svelte/helpers/extract-svelte-type-member-props.js +0 -31
  149. package/dist/src/extract/framework-adapters/svelte/helpers/find-svelte-script-declarations.d.ts +0 -8
  150. package/dist/src/extract/framework-adapters/svelte/helpers/find-svelte-script-declarations.js +0 -91
  151. package/dist/src/extract/framework-adapters/svelte/helpers/get-svelte-component-name.d.ts +0 -1
  152. package/dist/src/extract/framework-adapters/svelte/helpers/get-svelte-component-name.js +0 -26
  153. package/dist/src/extract/framework-adapters/svelte/helpers/render-svelte-type-strings.d.ts +0 -3
  154. package/dist/src/extract/framework-adapters/svelte/helpers/render-svelte-type-strings.js +0 -91
  155. package/dist/src/extract/framework-adapters/svelte/helpers/render-svelte-type.d.ts +0 -11
  156. package/dist/src/extract/framework-adapters/svelte/helpers/render-svelte-type.js +0 -68
  157. package/dist/src/extract/framework-adapters/svelte/helpers/resolve-dts-location.d.ts +0 -1
  158. package/dist/src/extract/framework-adapters/svelte/helpers/resolve-dts-location.js +0 -90
  159. package/dist/src/extract/framework-adapters/svelte/helpers/resolve-svelte-allowed-components.d.ts +0 -2
  160. package/dist/src/extract/framework-adapters/svelte/helpers/resolve-svelte-allowed-components.js +0 -20
  161. package/dist/src/extract/framework-adapters/svelte/helpers/resolve-svelte-external-type-readers.d.ts +0 -3
  162. package/dist/src/extract/framework-adapters/svelte/helpers/resolve-svelte-external-type-readers.js +0 -68
  163. package/dist/src/extract/framework-adapters/svelte/helpers/resolve-svelte-type-checker.d.ts +0 -4
  164. package/dist/src/extract/framework-adapters/svelte/helpers/resolve-svelte-type-checker.js +0 -68
  165. package/dist/src/extract/framework-adapters/svelte/helpers/resolve-svelte-type-members.d.ts +0 -6
  166. package/dist/src/extract/framework-adapters/svelte/helpers/resolve-svelte-type-members.js +0 -30
  167. package/dist/src/extract/framework-adapters/svelte/helpers/resolve-svelte-unresolved-retry.d.ts +0 -13
  168. package/dist/src/extract/framework-adapters/svelte/helpers/resolve-svelte-unresolved-retry.js +0 -192
  169. package/dist/src/extract/framework-adapters/svelte/types/svelte-ast-node.d.ts +0 -12
  170. package/dist/src/extract/framework-adapters/svelte/types/svelte-ast-node.js +0 -1
  171. package/dist/src/extract/framework-adapters/vue/extractor.js +0 -61
  172. package/dist/src/extract/framework-adapters/vue/helpers/extract-vue-object-props.d.ts +0 -3
  173. package/dist/src/extract/framework-adapters/vue/helpers/extract-vue-object-props.js +0 -67
  174. package/dist/src/extract/framework-adapters/vue/helpers/extract-vue-options-props.d.ts +0 -4
  175. package/dist/src/extract/framework-adapters/vue/helpers/extract-vue-options-props.js +0 -72
  176. package/dist/src/extract/framework-adapters/vue/helpers/extract-vue-setup-object-props.d.ts +0 -8
  177. package/dist/src/extract/framework-adapters/vue/helpers/extract-vue-setup-object-props.js +0 -64
  178. package/dist/src/extract/framework-adapters/vue/helpers/extract-vue-setup-props.d.ts +0 -2
  179. package/dist/src/extract/framework-adapters/vue/helpers/extract-vue-setup-props.js +0 -66
  180. package/dist/src/extract/framework-adapters/vue/helpers/extract-vue-slots.d.ts +0 -24
  181. package/dist/src/extract/framework-adapters/vue/helpers/extract-vue-slots.js +0 -56
  182. package/dist/src/extract/framework-adapters/vue/helpers/resolve-vue-component-name.d.ts +0 -2
  183. package/dist/src/extract/framework-adapters/vue/helpers/resolve-vue-component-name.js +0 -9
  184. package/dist/src/extract/framework-adapters/vue/helpers/resolve-workspace-module.d.ts +0 -1
  185. package/dist/src/extract/framework-adapters/vue/helpers/resolve-workspace-module.js +0 -76
  186. package/dist/src/extract/framework-adapters/vue/helpers/workspace-package-dirs.d.ts +0 -2
  187. package/dist/src/extract/framework-adapters/vue/helpers/workspace-package-dirs.js +0 -77
  188. package/dist/src/extract/framework-adapters/vue-tsx/extractor.js +0 -82
  189. package/dist/src/extract/framework-adapters/vue-tsx/helpers/extract-vue-tsx-props.d.ts +0 -5
  190. package/dist/src/extract/framework-adapters/vue-tsx/helpers/extract-vue-tsx-props.js +0 -189
  191. package/dist/src/extract/framework-adapters/vue-tsx/helpers/extract-vue-tsx-slots.d.ts +0 -4
  192. package/dist/src/extract/framework-adapters/vue-tsx/helpers/extract-vue-tsx-slots.js +0 -91
  193. package/dist/src/extract/framework-adapters/vue-tsx/helpers/resolve-ast-object.d.ts +0 -11
  194. package/dist/src/extract/framework-adapters/vue-tsx/helpers/resolve-ast-object.js +0 -95
  195. package/dist/src/extract/framework-adapters/web-components/extractor.js +0 -55
  196. package/dist/src/extract/framework-adapters/web-components/helpers/collect-wc-html-templates.d.ts +0 -4
  197. package/dist/src/extract/framework-adapters/web-components/helpers/collect-wc-html-templates.js +0 -67
  198. package/dist/src/extract/framework-adapters/web-components/helpers/detect-wc-non-public-members.d.ts +0 -9
  199. package/dist/src/extract/framework-adapters/web-components/helpers/detect-wc-non-public-members.js +0 -11
  200. package/dist/src/extract/framework-adapters/web-components/helpers/extract-wc-accessor-props.d.ts +0 -3
  201. package/dist/src/extract/framework-adapters/web-components/helpers/extract-wc-accessor-props.js +0 -65
  202. package/dist/src/extract/framework-adapters/web-components/helpers/extract-wc-class-properties.d.ts +0 -3
  203. package/dist/src/extract/framework-adapters/web-components/helpers/extract-wc-class-properties.js +0 -60
  204. package/dist/src/extract/framework-adapters/web-components/helpers/extract-wc-inheritance.d.ts +0 -4
  205. package/dist/src/extract/framework-adapters/web-components/helpers/extract-wc-inheritance.js +0 -16
  206. package/dist/src/extract/framework-adapters/web-components/helpers/extract-wc-jsdoc-attr-props.d.ts +0 -3
  207. package/dist/src/extract/framework-adapters/web-components/helpers/extract-wc-jsdoc-attr-props.js +0 -24
  208. package/dist/src/extract/framework-adapters/web-components/helpers/extract-wc-observed-attrs.d.ts +0 -3
  209. package/dist/src/extract/framework-adapters/web-components/helpers/extract-wc-observed-attrs.js +0 -27
  210. package/dist/src/extract/framework-adapters/web-components/helpers/extract-wc-slots.d.ts +0 -6
  211. package/dist/src/extract/framework-adapters/web-components/helpers/extract-wc-slots.js +0 -56
  212. package/dist/src/extract/framework-adapters/web-components/helpers/extract-wc-template-content.d.ts +0 -4
  213. package/dist/src/extract/framework-adapters/web-components/helpers/extract-wc-template-content.js +0 -49
  214. package/dist/src/extract/framework-adapters/web-components/helpers/merge-wc-prop-lists.d.ts +0 -9
  215. package/dist/src/extract/framework-adapters/web-components/helpers/merge-wc-prop-lists.js +0 -19
  216. package/dist/src/extract/framework-adapters/web-components/helpers/resolve-wc-base-class.d.ts +0 -2
  217. package/dist/src/extract/framework-adapters/web-components/helpers/resolve-wc-base-class.js +0 -59
  218. package/dist/src/extract/framework-adapters/web-components/helpers/resolve-wc-decorator-tag.d.ts +0 -2
  219. package/dist/src/extract/framework-adapters/web-components/helpers/resolve-wc-decorator-tag.js +0 -54
  220. package/dist/src/extract/framework-adapters/web-components/helpers/resolve-wc-import-source.d.ts +0 -7
  221. package/dist/src/extract/framework-adapters/web-components/helpers/resolve-wc-import-source.js +0 -47
  222. package/dist/src/extract/framework-adapters/web-components/helpers/resolve-wc-import.d.ts +0 -4
  223. package/dist/src/extract/framework-adapters/web-components/helpers/resolve-wc-import.js +0 -93
  224. package/dist/src/extract/framework-adapters/web-components/helpers/resolve-wc-sibling-definition.d.ts +0 -4
  225. package/dist/src/extract/framework-adapters/web-components/helpers/resolve-wc-sibling-definition.js +0 -79
  226. package/dist/src/extract/framework-adapters/web-components/helpers/resolve-wc-tag-name.d.ts +0 -7
  227. package/dist/src/extract/framework-adapters/web-components/helpers/resolve-wc-tag-name.js +0 -62
  228. package/dist/src/extract/helpers/evidence/ast/collect-structural-jsx-evidence.d.ts +0 -5
  229. package/dist/src/extract/helpers/evidence/ast/collect-structural-jsx-evidence.js +0 -63
  230. package/dist/src/extract/helpers/evidence/ast/detect-react-node-types.d.ts +0 -2
  231. package/dist/src/extract/helpers/evidence/ast/detect-react-node-types.js +0 -24
  232. package/dist/src/extract/helpers/evidence/ast/get-jsx-ast-data.d.ts +0 -14
  233. package/dist/src/extract/helpers/evidence/ast/get-jsx-ast-data.js +0 -85
  234. package/dist/src/extract/helpers/evidence/collect-jsx-component-references.d.ts +0 -5
  235. package/dist/src/extract/helpers/evidence/collect-jsx-component-references.js +0 -52
  236. package/dist/src/extract/helpers/evidence/detect-slot-from-prop.d.ts +0 -16
  237. package/dist/src/extract/helpers/evidence/detect-slot-from-prop.js +0 -39
  238. package/dist/src/extract/orchestrator/execute-extraction-orchestrator.d.ts +0 -13
  239. package/dist/src/extract/orchestrator/execute-extraction-orchestrator.js +0 -17
  240. package/dist/src/extract/services/classification/helpers/check-prop-types.d.ts +0 -7
  241. package/dist/src/extract/services/classification/helpers/check-prop-types.js +0 -22
  242. package/dist/src/extract/services/classification/helpers/detect-dom-props.d.ts +0 -2
  243. package/dist/src/extract/services/classification/helpers/detect-dom-props.js +0 -63
  244. package/dist/src/extract/services/deduplication/deduplicate-components.d.ts +0 -2
  245. package/dist/src/extract/services/deduplication/deduplicate-components.js +0 -58
  246. package/dist/src/extract/services/deduplication/helpers/component-path-analysis.d.ts +0 -10
  247. package/dist/src/extract/services/deduplication/helpers/component-path-analysis.js +0 -85
  248. package/dist/src/extract/services/deduplication/helpers/component-path-scoring.d.ts +0 -10
  249. package/dist/src/extract/services/deduplication/helpers/component-path-scoring.js +0 -73
  250. package/dist/src/extract/services/extraction/extract-components.d.ts +0 -3
  251. package/dist/src/extract/services/extraction/extract-components.js +0 -19
  252. package/dist/src/extract/services/extraction/helpers/collect-sveltekit-route-exclusions.d.ts +0 -2
  253. package/dist/src/extract/services/extraction/helpers/collect-sveltekit-route-exclusions.js +0 -18
  254. package/dist/src/extract/services/extraction/helpers/filter-hook-components.d.ts +0 -6
  255. package/dist/src/extract/services/extraction/helpers/filter-hook-components.js +0 -18
  256. package/dist/src/extract/services/extraction/helpers/register-extractors.d.ts +0 -8
  257. package/dist/src/extract/services/extraction/helpers/register-extractors.js +0 -71
  258. package/dist/src/extract/services/extraction/helpers/run-extractor-batches.d.ts +0 -4
  259. package/dist/src/extract/services/extraction/helpers/run-extractor-batches.js +0 -24
  260. package/dist/src/extract/services/quality/evaluate-extraction-quality.d.ts +0 -4
  261. package/dist/src/extract/services/quality/evaluate-extraction-quality.js +0 -61
  262. package/dist/src/extract/services/quality/helpers/authorability/evaluate-authorability.d.ts +0 -28
  263. package/dist/src/extract/services/quality/helpers/authorability/evaluate-authorability.js +0 -67
  264. package/dist/src/extract/services/quality/helpers/inspection/detect-data-wrapper-patterns.d.ts +0 -16
  265. package/dist/src/extract/services/quality/helpers/inspection/detect-data-wrapper-patterns.js +0 -63
  266. package/dist/src/extract/services/quality/helpers/scoring/collect-scoring-inputs.d.ts +0 -14
  267. package/dist/src/extract/services/quality/helpers/scoring/compute-extraction-score.d.ts +0 -6
  268. package/dist/src/extract/services/quality/helpers/scoring/compute-extraction-score.js +0 -12
  269. package/dist/src/extract/types/classification.d.ts +0 -4
  270. package/dist/src/extract/types/classification.js +0 -1
  271. package/dist/src/extract/types/component-extractor.d.ts +0 -7
  272. package/dist/src/extract/types/component-extractor.js +0 -1
  273. package/dist/src/extract/types/component.js +0 -1
  274. package/dist/src/extract/types/contract.d.ts +0 -16
  275. package/dist/src/extract/types/contract.js +0 -1
  276. package/dist/src/extract/types/display.d.ts +0 -3
  277. package/dist/src/extract/types/options.d.ts +0 -15
  278. package/dist/src/extract/types/options.js +0 -1
  279. package/dist/src/extract/types/scoring.d.ts +0 -9
  280. package/dist/src/extract/types/scoring.js +0 -1
  281. package/dist/src/extract/types/source-inspection.d.ts +0 -5
  282. package/dist/src/extract/types/source-inspection.js +0 -1
  283. /package/dist/src/extract/{helpers/evidence/parse-source-imports.d.ts → parse-imported-names.d.ts} +0 -0
  284. /package/dist/src/extract/{helpers/evidence/parse-source-imports.js → parse-imported-names.js} +0 -0
  285. /package/dist/src/extract/{framework-adapters/shared/helpers/resolve-import-file-path.d.ts → resolve-local-module.d.ts} +0 -0
  286. /package/dist/src/extract/{framework-adapters/shared/helpers/resolve-import-file-path.js → resolve-local-module.js} +0 -0
  287. /package/dist/src/extract/{framework-adapters/shared/helpers/resolve-type-symbol.d.ts → resolve-type-property.d.ts} +0 -0
  288. /package/dist/src/extract/{framework-adapters/shared/helpers/resolve-type-symbol.js → resolve-type-property.js} +0 -0
  289. /package/dist/src/extract/{helpers/evidence/collect-allowed-component-names.d.ts → slot-allowed-components.d.ts} +0 -0
  290. /package/dist/src/extract/{helpers/evidence/collect-allowed-component-names.js → slot-allowed-components.js} +0 -0
  291. /package/dist/src/extract/{framework-adapters/shared/helpers/get-node-source-lines.js → source-line-metadata.js} +0 -0
  292. /package/dist/src/extract/{services/quality/helpers/inspection/validate-extracted-components.js → validate.js} +0 -0
@@ -1,7 +0,0 @@
1
- import { Node, type Project, type SourceFile } from 'ts-morph';
2
- export declare function loadSourceFile(project: Project, filePath: string): SourceFile | null;
3
- export declare function resolveImportSourcePath(fromFilePath: string, specifier: string): string | null;
4
- export declare function resolveImportSpecifierSource(declarationNode: Node, sourceFile: SourceFile, project: Project): {
5
- sourceFile: SourceFile;
6
- importedName: string;
7
- } | undefined;
@@ -1,47 +0,0 @@
1
- import { dirname, resolve } from 'node:path';
2
- import { Node } from 'ts-morph';
3
- export function loadSourceFile(project, filePath) {
4
- let sourceFile = project.getSourceFile(filePath);
5
- if (sourceFile)
6
- return sourceFile;
7
- try {
8
- sourceFile = project.addSourceFileAtPath(filePath);
9
- return sourceFile;
10
- }
11
- catch {
12
- return null;
13
- }
14
- }
15
- export function resolveImportSourcePath(fromFilePath, specifier) {
16
- if (specifier.startsWith('.')) {
17
- const resolvedPath = resolve(dirname(fromFilePath), specifier);
18
- if (resolvedPath.endsWith('.js'))
19
- return `${resolvedPath.slice(0, -3)}.ts`;
20
- return resolvedPath;
21
- }
22
- const spectrumPrefix = '@spectrum-web-components/core/components/';
23
- if (!specifier.startsWith(spectrumPrefix))
24
- return null;
25
- const packagesMarker = `${'2nd-gen/packages'}${fromFilePath.includes('\\') ? '\\' : '/'}`;
26
- const markerIndex = fromFilePath.lastIndexOf(packagesMarker);
27
- if (markerIndex === -1)
28
- return null;
29
- const packagesRoot = fromFilePath.slice(0, markerIndex + packagesMarker.length - 1);
30
- const componentPath = specifier.slice(spectrumPrefix.length);
31
- return `${packagesRoot}/core/components/${componentPath}/index.ts`;
32
- }
33
- export function resolveImportSpecifierSource(declarationNode, sourceFile, project) {
34
- if (!Node.isImportSpecifier(declarationNode))
35
- return undefined;
36
- const importDecl = declarationNode.getImportDeclaration();
37
- const resolvedImportPath = resolveImportSourcePath(sourceFile.getFilePath(), importDecl.getModuleSpecifierValue());
38
- if (!resolvedImportPath)
39
- return undefined;
40
- const importedFile = loadSourceFile(project, resolvedImportPath);
41
- if (!importedFile)
42
- return undefined;
43
- return {
44
- sourceFile: importedFile,
45
- importedName: declarationNode.getNameNode().getText(),
46
- };
47
- }
@@ -1,4 +0,0 @@
1
- import { Node, type Project, type SourceFile } from 'ts-morph';
2
- import { loadSourceFile, resolveImportSourcePath, resolveImportSpecifierSource } from './resolve-wc-import-source.js';
3
- export { loadSourceFile, resolveImportSourcePath, resolveImportSpecifierSource };
4
- export declare function resolveStaticStringExpression(node: Node | undefined, sourceFile: SourceFile, project: Project): string | null;
@@ -1,93 +0,0 @@
1
- import { Node, SyntaxKind } from 'ts-morph';
2
- import { loadSourceFile, resolveImportSourcePath, resolveImportSpecifierSource } from './resolve-wc-import-source.js';
3
- export { loadSourceFile, resolveImportSourcePath, resolveImportSpecifierSource };
4
- export function resolveStaticStringExpression(node, sourceFile, project) {
5
- if (!node)
6
- return null;
7
- if (Node.isStringLiteral(node) || Node.isNoSubstitutionTemplateLiteral(node))
8
- return node.getLiteralValue();
9
- if (Node.isTemplateExpression(node)) {
10
- let resolved = node.getHead().getLiteralText();
11
- for (const span of node.getTemplateSpans()) {
12
- const interpolation = resolveStaticStringExpression(span.getExpression(), sourceFile, project);
13
- if (!interpolation)
14
- return null;
15
- resolved += interpolation;
16
- resolved += span.getLiteral().getLiteralText();
17
- }
18
- return resolved;
19
- }
20
- if (Node.isIdentifier(node)) {
21
- for (const definition of node.getDefinitions()) {
22
- const declarationNode = definition.getDeclarationNode();
23
- if (!declarationNode)
24
- continue;
25
- if (Node.isVariableDeclaration(declarationNode)) {
26
- const resolved = resolveStaticStringExpression(declarationNode.getInitializer(), declarationNode.getSourceFile(), project);
27
- if (resolved)
28
- return resolved;
29
- }
30
- if (Node.isImportSpecifier(declarationNode)) {
31
- const importedSource = resolveImportSpecifierSource(declarationNode, sourceFile, project);
32
- if (!importedSource)
33
- continue;
34
- const importedDeclaration = importedSource.sourceFile.getVariableDeclaration(importedSource.importedName);
35
- if (!importedDeclaration)
36
- continue;
37
- const resolved = resolveStaticStringExpression(importedDeclaration.getInitializer(), importedSource.sourceFile, project);
38
- if (resolved)
39
- return resolved;
40
- }
41
- }
42
- const text = node.getText();
43
- if (/Prefix$/.test(text))
44
- return camelToKebab(text.replace(/Prefix$/, ''));
45
- return null;
46
- }
47
- if (Node.isPropertyAccessExpression(node)) {
48
- const target = node.getExpression();
49
- if (!Node.isIdentifier(target))
50
- return null;
51
- const propertyName = node.getName();
52
- for (const definition of target.getDefinitions()) {
53
- const declarationNode = definition.getDeclarationNode();
54
- if (!declarationNode)
55
- continue;
56
- let variableDeclaration;
57
- if (Node.isVariableDeclaration(declarationNode)) {
58
- variableDeclaration = declarationNode;
59
- }
60
- else if (Node.isImportSpecifier(declarationNode)) {
61
- const importedSource = resolveImportSpecifierSource(declarationNode, sourceFile, project);
62
- if (!importedSource)
63
- continue;
64
- variableDeclaration = importedSource.sourceFile.getVariableDeclaration(importedSource.importedName);
65
- }
66
- if (!variableDeclaration)
67
- continue;
68
- let objectLiteral = variableDeclaration.getInitializerIfKind(SyntaxKind.ObjectLiteralExpression);
69
- const initializer = variableDeclaration.getInitializer();
70
- if (!objectLiteral &&
71
- initializer &&
72
- Node.isCallExpression(initializer) &&
73
- initializer.getExpression().getText() === 'Object.freeze') {
74
- objectLiteral = initializer.getArguments()[0]?.asKind(SyntaxKind.ObjectLiteralExpression) ?? undefined;
75
- }
76
- const property = objectLiteral
77
- ?.getProperties()
78
- .find((prop) => Node.isPropertyAssignment(prop) && prop.getName() === propertyName);
79
- if (!property)
80
- continue;
81
- const resolved = resolveStaticStringExpression(property.getInitializer(), variableDeclaration.getSourceFile(), project);
82
- if (resolved)
83
- return resolved;
84
- }
85
- }
86
- return null;
87
- }
88
- function camelToKebab(input) {
89
- return input
90
- .replace(/([a-z0-9])([A-Z])/g, '$1-$2')
91
- .replace(/([A-Z]+)([A-Z][a-z])/g, '$1-$2')
92
- .toLowerCase();
93
- }
@@ -1,4 +0,0 @@
1
- import { type ClassDeclaration, type Project, type SourceFile } from 'ts-morph';
2
- export declare function buildTagNameMap(sourceFile: SourceFile): Map<string, string>;
3
- export declare function getElementTagNameFromSiblingDefine(classDecl: ClassDeclaration, project: Project): string | null;
4
- export declare function getElementTagNameFromFastDefinition(classDecl: ClassDeclaration, project: Project): string | null;
@@ -1,79 +0,0 @@
1
- import { Node, SyntaxKind } from 'ts-morph';
2
- import { resolveStaticStringExpression, loadSourceFile } from './resolve-wc-import.js';
3
- export function buildTagNameMap(sourceFile) {
4
- const tagNameMap = new Map();
5
- sourceFile.forEachDescendant((node) => {
6
- if (!Node.isCallExpression(node))
7
- return;
8
- const expr = node.getExpression();
9
- if (!Node.isPropertyAccessExpression(expr) || expr.getName() !== 'define')
10
- return;
11
- if (expr.getExpression().getText() !== 'customElements')
12
- return;
13
- const args = node.getArguments();
14
- if (args.length < 2)
15
- return;
16
- const tagArg = args[0];
17
- const classArg = args[1];
18
- if (!Node.isStringLiteral(tagArg))
19
- return;
20
- tagNameMap.set(classArg.getText(), tagArg.getLiteralValue());
21
- });
22
- return tagNameMap;
23
- }
24
- export function getElementTagNameFromSiblingDefine(classDecl, project) {
25
- const sourceFilePath = classDecl.getSourceFile().getFilePath();
26
- if (!sourceFilePath.endsWith('.component.ts'))
27
- return null;
28
- const siblingPath = `${sourceFilePath.slice(0, -'.component.ts'.length)}.ts`;
29
- let siblingFile = project.getSourceFile(siblingPath);
30
- if (!siblingFile) {
31
- try {
32
- siblingFile = project.addSourceFileAtPath(siblingPath);
33
- }
34
- catch {
35
- return null;
36
- }
37
- }
38
- const className = classDecl.getName();
39
- if (!className)
40
- return null;
41
- for (const node of siblingFile.getDescendantsOfKind(SyntaxKind.CallExpression)) {
42
- const expression = node.getExpression();
43
- if (!Node.isPropertyAccessExpression(expression) || expression.getName() !== 'define')
44
- continue;
45
- if (expression.getExpression().getText() !== className)
46
- continue;
47
- const tagArg = node.getArguments()[0];
48
- if (!tagArg || !Node.isStringLiteral(tagArg))
49
- continue;
50
- return tagArg.getLiteralValue();
51
- }
52
- return null;
53
- }
54
- export function getElementTagNameFromFastDefinition(classDecl, project) {
55
- const sourceFilePath = classDecl.getSourceFile().getFilePath();
56
- if (!sourceFilePath.endsWith('.ts') || sourceFilePath.endsWith('.definition.ts'))
57
- return null;
58
- const definitionPath = `${sourceFilePath.slice(0, -'.ts'.length)}.definition.ts`;
59
- const definitionFile = loadSourceFile(project, definitionPath);
60
- if (!definitionFile)
61
- return null;
62
- for (const callExpr of definitionFile.getDescendantsOfKind(SyntaxKind.CallExpression)) {
63
- const expression = callExpr.getExpression();
64
- if (!Node.isPropertyAccessExpression(expression) || expression.getName() !== 'compose')
65
- continue;
66
- const options = callExpr.getArguments()[0];
67
- if (!options || !Node.isObjectLiteralExpression(options))
68
- continue;
69
- const nameProperty = options
70
- .getProperties()
71
- .find((prop) => Node.isPropertyAssignment(prop) && (prop.getName() === 'name' || prop.getName() === 'baseName'));
72
- if (!nameProperty)
73
- continue;
74
- const resolved = resolveStaticStringExpression(nameProperty.getInitializer(), definitionFile, project);
75
- if (resolved)
76
- return resolved;
77
- }
78
- return null;
79
- }
@@ -1,7 +0,0 @@
1
- import { type ClassDeclaration, type Project } from 'ts-morph';
2
- import { getElementTagNameFromDecorator } from './resolve-wc-decorator-tag.js';
3
- import { buildTagNameMap, getElementTagNameFromSiblingDefine, getElementTagNameFromFastDefinition } from './resolve-wc-sibling-definition.js';
4
- export { buildTagNameMap, getElementTagNameFromDecorator, getElementTagNameFromSiblingDefine, getElementTagNameFromFastDefinition, };
5
- export declare function chooseComponentName(classDecl: ClassDeclaration, className: string, tagName: string | undefined): string;
6
- export declare function getElementTagNameFromJsDoc(classDecl: ClassDeclaration): string | null;
7
- export declare function resolveWcTagName(classDecl: ClassDeclaration, tagNameMap: Map<string, string>, project: Project): string | undefined;
@@ -1,62 +0,0 @@
1
- import { basename } from 'node:path';
2
- import { kebabToPascal } from '../../shared/helpers/tsx-shared.js';
3
- import { getElementTagNameFromDecorator } from './resolve-wc-decorator-tag.js';
4
- import { buildTagNameMap, getElementTagNameFromSiblingDefine, getElementTagNameFromFastDefinition, } from './resolve-wc-sibling-definition.js';
5
- export { buildTagNameMap, getElementTagNameFromDecorator, getElementTagNameFromSiblingDefine, getElementTagNameFromFastDefinition, };
6
- function normalizeComponentName(input) {
7
- return input.replace(/[^a-zA-Z0-9]/g, '').toLowerCase();
8
- }
9
- function shouldPreferTagName(className, tagName) {
10
- const pascalTagName = kebabToPascal(tagName);
11
- if (className.startsWith('HTML') && className.endsWith('Element'))
12
- return true;
13
- if (className.endsWith('Element'))
14
- return true;
15
- if (normalizeComponentName(className) === normalizeComponentName(pascalTagName))
16
- return false;
17
- return false;
18
- }
19
- function getFileDerivedComponentName(sourceFile) {
20
- const baseName = basename(sourceFile.getFilePath())
21
- .replace(/\.[^.]+$/, '')
22
- .replace(/\.component$/, '');
23
- return kebabToPascal(baseName);
24
- }
25
- export function chooseComponentName(classDecl, className, tagName) {
26
- if (!tagName)
27
- return className;
28
- const tagDerivedName = kebabToPascal(tagName);
29
- const fileDerivedName = getFileDerivedComponentName(classDecl.getSourceFile());
30
- if (normalizeComponentName(className) === normalizeComponentName(tagDerivedName))
31
- return className;
32
- if (normalizeComponentName(className) === normalizeComponentName(fileDerivedName))
33
- return className;
34
- if (fileDerivedName && tagDerivedName.endsWith(fileDerivedName))
35
- return fileDerivedName;
36
- if (shouldPreferTagName(className, tagName))
37
- return tagDerivedName;
38
- return className;
39
- }
40
- export function getElementTagNameFromJsDoc(classDecl) {
41
- for (const doc of classDecl.getJsDocs()) {
42
- for (const tag of doc.getTags()) {
43
- if (tag.getTagName() !== 'element')
44
- continue;
45
- const comment = tag.getCommentText();
46
- if (comment)
47
- return comment.trim();
48
- }
49
- }
50
- return null;
51
- }
52
- export function resolveWcTagName(classDecl, tagNameMap, project) {
53
- const className = classDecl.getName();
54
- if (!className)
55
- return undefined;
56
- return (tagNameMap.get(className) ??
57
- getElementTagNameFromSiblingDefine(classDecl, project) ??
58
- getElementTagNameFromDecorator(classDecl) ??
59
- getElementTagNameFromJsDoc(classDecl) ??
60
- getElementTagNameFromFastDefinition(classDecl, project) ??
61
- undefined);
62
- }
@@ -1,5 +0,0 @@
1
- import { type FunctionDeclaration, type ArrowFunction, type FunctionExpression } from 'ts-morph';
2
- type FunctionLike = FunctionDeclaration | ArrowFunction | FunctionExpression;
3
- export declare function collectRenderedComponentReferences(funcNode: FunctionLike, componentNames: ReadonlySet<string>, ownComponentName: string): string[];
4
- export declare function collectArrayMapRenderComponentReferences(funcNode: FunctionLike, componentNames: ReadonlySet<string>, ownComponentName: string, propTypesByName: ReadonlyMap<string, string>): string[];
5
- export {};
@@ -1,63 +0,0 @@
1
- import { SyntaxKind } from 'ts-morph';
2
- import { isIntrinsicJsxElement } from '../../../framework-adapters/shared/helpers/tsx-shared.js';
3
- import { getReturnedJsxTagName, isJsxCarryingTypeText } from './get-jsx-ast-data.js';
4
- export function collectRenderedComponentReferences(funcNode, componentNames, ownComponentName) {
5
- const found = new Set();
6
- const jsxElements = [
7
- ...funcNode.getDescendantsOfKind(SyntaxKind.JsxSelfClosingElement),
8
- ...funcNode.getDescendantsOfKind(SyntaxKind.JsxOpeningElement),
9
- ];
10
- for (const jsxElement of jsxElements) {
11
- const tagName = jsxElement.getTagNameNode().getText();
12
- if (isIntrinsicJsxElement(tagName))
13
- continue;
14
- if (tagName === ownComponentName)
15
- continue;
16
- if (!componentNames.has(tagName))
17
- continue;
18
- found.add(tagName);
19
- }
20
- return [...found].sort();
21
- }
22
- export function collectArrayMapRenderComponentReferences(funcNode, componentNames, ownComponentName, propTypesByName) {
23
- const found = new Set();
24
- const propNames = new Set(propTypesByName.keys());
25
- const renderCountByComponent = new Map();
26
- for (const jsxElement of [
27
- ...funcNode.getDescendantsOfKind(SyntaxKind.JsxSelfClosingElement),
28
- ...funcNode.getDescendantsOfKind(SyntaxKind.JsxOpeningElement),
29
- ]) {
30
- const tagName = jsxElement.getTagNameNode().getText();
31
- if (isIntrinsicJsxElement(tagName) || tagName === ownComponentName || !componentNames.has(tagName))
32
- continue;
33
- renderCountByComponent.set(tagName, (renderCountByComponent.get(tagName) ?? 0) + 1);
34
- }
35
- for (const callExpr of funcNode.getDescendantsOfKind(SyntaxKind.CallExpression)) {
36
- const callee = callExpr.getExpression();
37
- if (!callee.isKind(SyntaxKind.PropertyAccessExpression))
38
- continue;
39
- if (callee.getName() !== 'map')
40
- continue;
41
- const receiver = callee.getExpression();
42
- if (!receiver.isKind(SyntaxKind.Identifier))
43
- continue;
44
- const propName = receiver.getText();
45
- if (!propNames.has(propName))
46
- continue;
47
- const propTypeText = propTypesByName.get(propName) ?? '';
48
- if (isJsxCarryingTypeText(propTypeText))
49
- continue;
50
- const [callbackArg] = callExpr.getArguments();
51
- if (!callbackArg)
52
- continue;
53
- if (!callbackArg.isKind(SyntaxKind.ArrowFunction) && !callbackArg.isKind(SyntaxKind.FunctionExpression))
54
- continue;
55
- const returnedJsxTag = getReturnedJsxTagName(callbackArg);
56
- if (!returnedJsxTag || returnedJsxTag === ownComponentName || !componentNames.has(returnedJsxTag))
57
- continue;
58
- if ((renderCountByComponent.get(returnedJsxTag) ?? 0) !== 1)
59
- continue;
60
- found.add(returnedJsxTag);
61
- }
62
- return [...found].sort();
63
- }
@@ -1,2 +0,0 @@
1
- export declare function isArrayReactNodeType(typeText: string): boolean;
2
- export declare function isReactNodeType(typeText: string): boolean;
@@ -1,24 +0,0 @@
1
- const REACT_NODE_EXACT_PATTERNS = ['ReactNode', 'React.ReactNode', 'ReactElement', 'React.ReactElement', 'JSX.Element'];
2
- function normalizeReactNodeType(typeText) {
3
- return typeText
4
- .replace(/\s+/g, ' ')
5
- .trim()
6
- .split('|')
7
- .map((part) => part.trim())
8
- .filter((part) => part !== 'null' && part !== 'undefined')
9
- .join(' | ');
10
- }
11
- export function isArrayReactNodeType(typeText) {
12
- const stripped = normalizeReactNodeType(typeText);
13
- for (const pattern of REACT_NODE_EXACT_PATTERNS) {
14
- if (stripped === `${pattern}[]` || stripped === `Array<${pattern}>`)
15
- return true;
16
- }
17
- return false;
18
- }
19
- export function isReactNodeType(typeText) {
20
- const stripped = normalizeReactNodeType(typeText);
21
- if (REACT_NODE_EXACT_PATTERNS.includes(stripped))
22
- return true;
23
- return isArrayReactNodeType(typeText);
24
- }
@@ -1,14 +0,0 @@
1
- import { Node, type ArrowFunction, type FunctionExpression, type SourceFile } from 'ts-morph';
2
- /** Collects all names bound in the file via imports or top-level declarations. */
3
- export declare function collectLocallyBoundNames(sourceFile: SourceFile): Set<string>;
4
- /**
5
- * Returns the tag identifier of the JSX element a callback returns, or
6
- * `undefined` if the callback doesn't return exactly one identifier-tagged JSX element.
7
- */
8
- export declare function getReturnedJsxTagName(callback: ArrowFunction | FunctionExpression): string | undefined;
9
- /** Unwraps a JSX node from an expression body, block body return, or parenthesized expression. */
10
- export declare function unwrapReturnedJsx(bodyOrExpr: Node): Node | undefined;
11
- /** Returns the single JSX child of a fragment, or undefined if the fragment has 0 or 2+ children. */
12
- export declare function unwrapSingleJsxChildOfFragment(fragment: Node): Node | undefined;
13
- /** Returns true when the type text refers to a React JSX-carrying type (ReactNode, ReactElement, JSX.Element). */
14
- export declare function isJsxCarryingTypeText(typeText: string): boolean;
@@ -1,85 +0,0 @@
1
- import { Node } from 'ts-morph';
2
- /** Collects all names bound in the file via imports or top-level declarations. */
3
- export function collectLocallyBoundNames(sourceFile) {
4
- const names = new Set();
5
- for (const imp of sourceFile.getImportDeclarations()) {
6
- const defaultImport = imp.getDefaultImport();
7
- if (defaultImport)
8
- names.add(defaultImport.getText());
9
- const namespaceImport = imp.getNamespaceImport();
10
- if (namespaceImport)
11
- names.add(namespaceImport.getText());
12
- for (const named of imp.getNamedImports()) {
13
- names.add((named.getAliasNode() ?? named.getNameNode()).getText());
14
- }
15
- }
16
- for (const decl of sourceFile.getVariableDeclarations())
17
- names.add(decl.getName());
18
- for (const decl of sourceFile.getFunctions()) {
19
- const declName = decl.getName();
20
- if (declName)
21
- names.add(declName);
22
- }
23
- return names;
24
- }
25
- /**
26
- * Returns the tag identifier of the JSX element a callback returns, or
27
- * `undefined` if the callback doesn't return exactly one identifier-tagged JSX element.
28
- */
29
- export function getReturnedJsxTagName(callback) {
30
- const body = callback.getBody();
31
- const jsxNode = unwrapReturnedJsx(body);
32
- if (!jsxNode)
33
- return undefined;
34
- if (Node.isJsxSelfClosingElement(jsxNode) || Node.isJsxOpeningElement(jsxNode)) {
35
- return jsxNode.getTagNameNode().getText();
36
- }
37
- if (Node.isJsxElement(jsxNode)) {
38
- return jsxNode.getOpeningElement().getTagNameNode().getText();
39
- }
40
- return undefined;
41
- }
42
- /** Unwraps a JSX node from an expression body, block body return, or parenthesized expression. */
43
- export function unwrapReturnedJsx(bodyOrExpr) {
44
- if (Node.isJsxElement(bodyOrExpr) ||
45
- Node.isJsxSelfClosingElement(bodyOrExpr) ||
46
- Node.isJsxOpeningElement(bodyOrExpr)) {
47
- return bodyOrExpr;
48
- }
49
- if (Node.isJsxFragment(bodyOrExpr)) {
50
- return unwrapSingleJsxChildOfFragment(bodyOrExpr);
51
- }
52
- if (Node.isParenthesizedExpression(bodyOrExpr)) {
53
- return unwrapReturnedJsx(bodyOrExpr.getExpression());
54
- }
55
- if (Node.isBlock(bodyOrExpr)) {
56
- const returns = bodyOrExpr.getStatements().filter(Node.isReturnStatement);
57
- if (returns.length !== 1)
58
- return undefined;
59
- const expr = returns[0].getExpression();
60
- if (!expr)
61
- return undefined;
62
- return unwrapReturnedJsx(expr);
63
- }
64
- return undefined;
65
- }
66
- /** Returns the single JSX child of a fragment, or undefined if the fragment has 0 or 2+ children. */
67
- export function unwrapSingleJsxChildOfFragment(fragment) {
68
- if (!Node.isJsxFragment(fragment))
69
- return undefined;
70
- const jsxChildren = fragment
71
- .getJsxChildren()
72
- .filter((child) => Node.isJsxElement(child) || Node.isJsxSelfClosingElement(child));
73
- if (jsxChildren.length !== 1)
74
- return undefined;
75
- return jsxChildren[0];
76
- }
77
- const JSX_CARRYING_TYPE_TOKENS = ['ReactNode', 'ReactElement', 'JSX.Element'];
78
- /** Returns true when the type text refers to a React JSX-carrying type (ReactNode, ReactElement, JSX.Element). */
79
- export function isJsxCarryingTypeText(typeText) {
80
- for (const token of JSX_CARRYING_TYPE_TOKENS) {
81
- if (typeText.includes(token))
82
- return true;
83
- }
84
- return false;
85
- }
@@ -1,5 +0,0 @@
1
- import { type SourceFile } from 'ts-morph';
2
- import { type AllowedComponentsContext } from './collect-allowed-component-names.js';
3
- export { collectRenderedComponentReferences, collectArrayMapRenderComponentReferences, } from './ast/collect-structural-jsx-evidence.js';
4
- export declare function collectTypePredicateComponentReferences(sourceFile: SourceFile, ctx: AllowedComponentsContext): string[];
5
- export declare function collectRuntimeTypeCheckComponentReferences(sourceFile: SourceFile, componentNames: ReadonlySet<string>): string[];
@@ -1,52 +0,0 @@
1
- import { Node, SyntaxKind, } from 'ts-morph';
2
- import { extractAllowedComponentsFromTypeText, } from './collect-allowed-component-names.js';
3
- import { collectLocallyBoundNames } from './ast/get-jsx-ast-data.js';
4
- export { collectRenderedComponentReferences, collectArrayMapRenderComponentReferences, } from './ast/collect-structural-jsx-evidence.js';
5
- export function collectTypePredicateComponentReferences(sourceFile, ctx) {
6
- const found = new Set();
7
- const candidates = [
8
- ...sourceFile.getDescendantsOfKind(SyntaxKind.FunctionDeclaration),
9
- ...sourceFile.getDescendantsOfKind(SyntaxKind.ArrowFunction),
10
- ...sourceFile.getDescendantsOfKind(SyntaxKind.FunctionExpression),
11
- ];
12
- for (const fn of candidates) {
13
- const returnTypeNode = fn.getReturnTypeNode();
14
- if (!returnTypeNode || !Node.isTypePredicate(returnTypeNode))
15
- continue;
16
- const assertedTypeNode = returnTypeNode.getTypeNode();
17
- if (!assertedTypeNode)
18
- continue;
19
- for (const name of extractAllowedComponentsFromTypeText(assertedTypeNode.getText(), ctx)) {
20
- found.add(name);
21
- }
22
- }
23
- return [...found].sort();
24
- }
25
- export function collectRuntimeTypeCheckComponentReferences(sourceFile, componentNames) {
26
- const found = new Set();
27
- const localBindings = collectLocallyBoundNames(sourceFile);
28
- for (const binary of sourceFile.getDescendantsOfKind(SyntaxKind.BinaryExpression)) {
29
- const operator = binary.getOperatorToken().getText();
30
- if (operator !== '===' && operator !== '==')
31
- continue;
32
- const left = binary.getLeft();
33
- const right = binary.getRight();
34
- const candidateFromTypeAccess = (typeAccessSide, otherSide) => {
35
- if (!Node.isPropertyAccessExpression(typeAccessSide) || typeAccessSide.getName() !== 'type')
36
- return undefined;
37
- if (!Node.isIdentifier(otherSide) && !Node.isPropertyAccessExpression(otherSide))
38
- return undefined;
39
- const name = otherSide.getText().split('.').pop();
40
- if (!name || !componentNames.has(name))
41
- return undefined;
42
- const baseIdentifier = Node.isPropertyAccessExpression(otherSide) ? otherSide.getExpression() : otherSide;
43
- if (!Node.isIdentifier(baseIdentifier) || !localBindings.has(baseIdentifier.getText()))
44
- return undefined;
45
- return name;
46
- };
47
- const match = candidateFromTypeAccess(left, right) ?? candidateFromTypeAccess(right, left);
48
- if (match)
49
- found.add(match);
50
- }
51
- return [...found].sort();
52
- }
@@ -1,16 +0,0 @@
1
- export { isReactNodeType, isArrayReactNodeType } from './ast/detect-react-node-types.js';
2
- /**
3
- * Prop names that should remain as props even when typed as ReactNode.
4
- * These are typically text-content names, not composable slots.
5
- */
6
- export declare const CONTENT_NAME_EXCEPTIONS: Set<string>;
7
- /**
8
- * Determines whether a prop should be converted to a slot based on its name and type.
9
- *
10
- * Rules:
11
- * 1. If the type is not a ReactNode type → false
12
- * 2. If the type is an array ReactNode → true (overrides exception list)
13
- * 3. If the name is in the content-name exception list → false
14
- * 4. Otherwise → true
15
- */
16
- export declare function shouldBeSlot(propName: string, typeText: string): boolean;
@@ -1,39 +0,0 @@
1
- export { isReactNodeType, isArrayReactNodeType } from './ast/detect-react-node-types.js';
2
- import { isReactNodeType, isArrayReactNodeType } from './ast/detect-react-node-types.js';
3
- /**
4
- * Prop names that should remain as props even when typed as ReactNode.
5
- * These are typically text-content names, not composable slots.
6
- */
7
- export const CONTENT_NAME_EXCEPTIONS = new Set([
8
- 'label',
9
- 'title',
10
- 'description',
11
- 'text',
12
- 'caption',
13
- 'message',
14
- 'placeholder',
15
- 'tooltip',
16
- 'heading',
17
- 'subheading',
18
- 'body',
19
- 'summary',
20
- 'excerpt',
21
- ]);
22
- /**
23
- * Determines whether a prop should be converted to a slot based on its name and type.
24
- *
25
- * Rules:
26
- * 1. If the type is not a ReactNode type → false
27
- * 2. If the type is an array ReactNode → true (overrides exception list)
28
- * 3. If the name is in the content-name exception list → false
29
- * 4. Otherwise → true
30
- */
31
- export function shouldBeSlot(propName, typeText) {
32
- if (!isReactNodeType(typeText))
33
- return false;
34
- if (isArrayReactNodeType(typeText))
35
- return true;
36
- if (CONTENT_NAME_EXCEPTIONS.has(propName))
37
- return false;
38
- return true;
39
- }
@@ -1,13 +0,0 @@
1
- import type { ExtractorProgress } from '../types/component.js';
2
- import type { ExtractionEndpointResponse } from '../types/contract.js';
3
- import type { ExtractorOptions } from '../types/options.js';
4
- export interface ExtractionOrchestratorRequest extends ExtractorOptions {
5
- readonly filePaths: readonly string[];
6
- onProgress?: (progress: ExtractorProgress) => void;
7
- }
8
- /**
9
- * Executes the extraction use case after the controller has validated the
10
- * public request. Owns extraction-time classification, inspection,
11
- * quality signals, scoring, and validation, but not transport or persistence.
12
- */
13
- export declare function executeExtractionOrchestrator(request: ExtractionOrchestratorRequest): Promise<ExtractionEndpointResponse>;