@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,27 +1,21 @@
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';
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';
package/dist/src/index.js CHANGED
@@ -1,27 +1,23 @@
1
- export { stripScoringFields } from './extract/types/display.js';
1
+ export { stripScoringFields } from './types.js';
2
2
  // Core extraction pipeline
3
- export { extractComponents } from './extract/services/extraction/extract-components.js';
4
- export { extractEndpoint } from './extract/controller/extract-controller.js';
3
+ export { extractComponents } from './extract/pipeline.js';
5
4
  // Framework-specific extractors
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';
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';
14
13
  // Post-extraction filtering and scoring
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';
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';
21
17
  // Validation
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';
18
+ export { validateExtractedComponents, shouldExcludeDueToValidation, formatExclusionWarning, formatExcludedComponentLines, } from './extract/validate.js';
19
+ export { parseImportedNames } from './extract/parse-imported-names.js';
24
20
  // Slot detection helpers
25
- export { CONTENT_NAME_EXCEPTIONS, isReactNodeType, isArrayReactNodeType, shouldBeSlot, } from './extract/helpers/evidence/detect-slot-from-prop.js';
21
+ export { CONTENT_NAME_EXCEPTIONS, isReactNodeType, isArrayReactNodeType, shouldBeSlot, } from './extract/slot-detection.js';
26
22
  // Pre-classification
27
- export { preClassifyProp, preClassifyComponent } from './extract/services/classification/classify-component-props.js';
23
+ export { preClassifyProp, preClassifyComponent } from './pre-classify.js';
@@ -1,6 +1,8 @@
1
- import type { RawPropDefinition, RawComponentDefinition } from '../../types/component.js';
2
- import type { PreClassification } from '../../types/classification.js';
3
- export type { PreClassification } from '../../types/classification.js';
1
+ import type { RawPropDefinition, RawComponentDefinition } from './types.js';
2
+ export interface PreClassification {
3
+ category: 'content' | 'design' | 'state' | 'exclude';
4
+ cdfTypeHint?: 'string' | 'enum' | 'richtext' | 'media' | 'boolean';
5
+ }
4
6
  /**
5
7
  * Deterministic pre-classification rule engine.
6
8
  * Applies rules in priority order and returns on the first match.
@@ -1,5 +1,96 @@
1
- import { isStringLiteralUnion, isBooleanType, isStringType, isNumberType, isComplexType, } from './helpers/check-prop-types.js';
2
- import { isDomPassThroughProp } from './helpers/detect-dom-props.js';
1
+ /**
2
+ * Determines whether a type string represents a simple/primitive type
3
+ * (string, boolean, number, or string literal union) vs a complex type
4
+ * (object, function, array, generic, etc.).
5
+ */
6
+ function isSimpleType(type) {
7
+ const t = type.trim();
8
+ if (t === 'string' || t === 'boolean' || t === 'number')
9
+ return true;
10
+ // String literal union (e.g., "'a' | 'b'")
11
+ if (isStringLiteralUnion(t))
12
+ return true;
13
+ return false;
14
+ }
15
+ function isStringLiteralUnion(type) {
16
+ return type.includes('|') && type.includes("'");
17
+ }
18
+ function isBooleanType(type) {
19
+ return type.trim() === 'boolean';
20
+ }
21
+ function isStringType(type) {
22
+ return type.trim() === 'string';
23
+ }
24
+ function isNumberType(type) {
25
+ return type.trim() === 'number';
26
+ }
27
+ function isComplexType(type) {
28
+ return !isSimpleType(type);
29
+ }
30
+ const DOM_PASS_THROUGH_PROPS = new Set([
31
+ // Bare HTML / framework styling pass-through
32
+ 'className',
33
+ 'class',
34
+ 'classes',
35
+ 'classNames',
36
+ 'rootClassName',
37
+ 'prefixCls',
38
+ 'style',
39
+ 'styles',
40
+ // Bare HTML attributes
41
+ 'id',
42
+ 'role',
43
+ 'tabIndex',
44
+ 'tabindex',
45
+ 'htmlFor',
46
+ 'for',
47
+ 'slot',
48
+ 'is',
49
+ 'lang',
50
+ 'dir',
51
+ 'hidden',
52
+ 'draggable',
53
+ 'spellCheck',
54
+ 'spellcheck',
55
+ 'contentEditable',
56
+ 'contenteditable',
57
+ 'inputMode',
58
+ 'inputmode',
59
+ 'autoComplete',
60
+ 'autocomplete',
61
+ 'autoFocus',
62
+ 'autofocus',
63
+ 'translate',
64
+ 'part',
65
+ 'exportparts',
66
+ 'aria',
67
+ // Framework theming / pass-through escape hatches — dev-facing, never marketer-configurable
68
+ 'dt',
69
+ 'pt',
70
+ 'ptOptions',
71
+ 'unstyled',
72
+ 'sx',
73
+ // Polymorphic component props — change rendered HTML/component, not marketer-visible behavior
74
+ 'as',
75
+ 'element',
76
+ 'component',
77
+ // QA / vendor test attributes
78
+ 'dataQa',
79
+ 'data-qa',
80
+ // Vue v-model internals — framework wiring, never marketer-configurable
81
+ 'modelValue',
82
+ 'modelModifiers',
83
+ ]);
84
+ function isDomPassThroughProp(name) {
85
+ if (DOM_PASS_THROUGH_PROPS.has(name))
86
+ return true;
87
+ // aria-label, aria-hidden, ariaLabel, ariaHidden — both kebab and camel forms
88
+ if (/^aria[-A-Z]/.test(name))
89
+ return true;
90
+ if (name.startsWith('data-'))
91
+ return true;
92
+ return false;
93
+ }
3
94
  /**
4
95
  * Deterministic pre-classification rule engine.
5
96
  * Applies rules in priority order and returns on the first match.
@@ -7,6 +98,7 @@ import { isDomPassThroughProp } from './helpers/detect-dom-props.js';
7
98
  export function preClassifyProp(prop) {
8
99
  const { name, type } = prop;
9
100
  // Rule 1: Event handlers
101
+ // name starts with `on` + uppercase, OR type contains `=> void` or `EventHandler`
10
102
  if (/^on[A-Z]/.test(name) || type.includes('=> void') || type.includes('EventHandler')) {
11
103
  return { category: 'exclude' };
12
104
  }
@@ -27,6 +119,9 @@ export function preClassifyProp(prop) {
27
119
  return { category: 'exclude' };
28
120
  }
29
121
  // Rule 6: DOM / a11y / framework pass-through props
122
+ // These are escape hatches developers use to wire components into the DOM.
123
+ // Marketers should never configure them in the ExO editor; exposing them
124
+ // generates noise that obscures the props that actually carry intent.
30
125
  if (isDomPassThroughProp(name)) {
31
126
  return { category: 'exclude' };
32
127
  }
@@ -116,18 +211,15 @@ export function preClassifyComponent(component) {
116
211
  // Provenance is extraction-only evidence. Do not add it to the payload
117
212
  // presented to downstream agents.
118
213
  const { domAttribute: _domAttribute, ...authorableProp } = prop;
214
+ // If category is already set, leave unchanged
119
215
  if (prop.category) {
120
216
  return [authorableProp];
121
217
  }
122
218
  if (!result) {
123
219
  return [authorableProp];
124
220
  }
125
- return [
126
- {
127
- ...authorableProp,
128
- category: result.category,
129
- },
130
- ];
221
+ // Set category hint
222
+ return [{ ...authorableProp, category: result.category }];
131
223
  });
132
224
  return { ...component, props };
133
225
  }
@@ -76,3 +76,25 @@ 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'>;
@@ -1,4 +1,4 @@
1
- /** Removes internal scoring fields from a component before showing it in the editor or writing it to disk. */
1
+ /** Strip internal scoring fields before serialising a RawComponentDefinition for display or editing. */
2
2
  export function stripScoringFields({ extractionConfidence: _c, reviewReasons: _r, needsReview: _n, ...rest }) {
3
3
  return rest;
4
4
  }
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-c4497102.0",
3
+ "version": "2.36.2-dev-build-a6f80ae6.0",
4
4
  "description": "Component extraction engine for the Contentful Experience Design System SDK",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -1,10 +0,0 @@
1
- import type { ExtractionEndpointRequest, ExtractionEndpointResponse } from '../types/contract.js';
2
- export type { ExtractionEndpointProgress, ExtractionEndpointRequest, ExtractionEndpointResponse, } from '../types/contract.js';
3
- /**
4
- * Stable in-process extraction contract.
5
- *
6
- * The controller owns public request validation and progress translation. The
7
- * extraction service owns source analysis and quality policy; neither layer
8
- * scans directories, invokes agents, or persists sessions.
9
- */
10
- export declare function extractEndpoint(request: ExtractionEndpointRequest): Promise<ExtractionEndpointResponse>;
@@ -1,33 +0,0 @@
1
- import { executeExtractionOrchestrator } from '../orchestrator/execute-extraction-orchestrator.js';
2
- import { validateRequest } from './helpers/validate-endpoint-request.js';
3
- /**
4
- * Stable in-process extraction contract.
5
- *
6
- * The controller owns public request validation and progress translation. The
7
- * extraction service owns source analysis and quality policy; neither layer
8
- * scans directories, invokes agents, or persists sessions.
9
- */
10
- export async function extractEndpoint(request) {
11
- validateRequest(request);
12
- const filePaths = [...request.filePaths];
13
- const result = await executeExtractionOrchestrator({
14
- filePaths,
15
- ...(request.resolveUnreachable !== undefined ? { resolveUnreachable: request.resolveUnreachable } : {}),
16
- ...(request.projectRoot !== undefined ? { projectRoot: request.projectRoot } : {}),
17
- onProgress: ({ filesProcessed, componentsFound }) => {
18
- request.onProgress?.({
19
- phase: 'extract',
20
- filesProcessed,
21
- totalFiles: filePaths.length,
22
- componentsFound,
23
- });
24
- },
25
- });
26
- request.onProgress?.({
27
- phase: 'extract',
28
- filesProcessed: filePaths.length,
29
- totalFiles: filePaths.length,
30
- componentsFound: result.components.length,
31
- });
32
- return result;
33
- }
@@ -1,2 +0,0 @@
1
- import type { ExtractionEndpointRequest } from '../../types/contract.js';
2
- export declare function validateRequest(request: ExtractionEndpointRequest): void;
@@ -1,24 +0,0 @@
1
- export function validateRequest(request) {
2
- if (request === null || typeof request !== 'object') {
3
- throw new TypeError('extractEndpoint requires a request object');
4
- }
5
- if (!Array.isArray(request.filePaths)) {
6
- throw new TypeError('extractEndpoint requires filePaths to be an array');
7
- }
8
- if (request.filePaths.some((filePath) => typeof filePath !== 'string' || filePath.trim().length === 0)) {
9
- throw new TypeError('extractEndpoint requires filePaths to contain non-empty strings');
10
- }
11
- if (request.projectRoot !== undefined &&
12
- (typeof request.projectRoot !== 'string' || request.projectRoot.trim().length === 0)) {
13
- throw new TypeError('extractEndpoint requires projectRoot to be a non-empty string when provided');
14
- }
15
- if (request.resolveUnreachable !== undefined &&
16
- request.resolveUnreachable !== 'auto' &&
17
- request.resolveUnreachable !== 'always' &&
18
- request.resolveUnreachable !== 'never') {
19
- throw new TypeError("extractEndpoint requires resolveUnreachable to be 'auto', 'always', or 'never'");
20
- }
21
- if (request.onProgress !== undefined && typeof request.onProgress !== 'function') {
22
- throw new TypeError('extractEndpoint requires onProgress to be a function when provided');
23
- }
24
- }
@@ -1,45 +0,0 @@
1
- import os from 'node:os';
2
- import { basename } from 'node:path';
3
- import { runFileExtractionWorkers } from '../shared/helpers/file-processing/file-workers.js';
4
- import { createSortedExtractionResult } from '../shared/helpers/file-processing/result-normalizer.js';
5
- import { extractFallbackPropsFromFrontmatter, extractPropsFromFrontmatter, extractDefaultsFromFrontmatter, mergeProps, } from './frontmatter.js';
6
- import { extractSlotsFromTemplate, extractSlotsFromFrontmatter, mergeSlots } from './slots.js';
7
- function extractFromAstroFile(filePath, source) {
8
- const name = basename(filePath, '.astro');
9
- // Split on `---` fences: frontmatter is between first and second `---`.
10
- // If there is no `---`, the entire file is a template-only component.
11
- const fenceIndex = source.startsWith('---') ? 0 : -1;
12
- let frontmatter = '';
13
- let template = source;
14
- if (fenceIndex !== -1) {
15
- const endFenceIndex = source.indexOf('---', fenceIndex + 3);
16
- if (endFenceIndex !== -1) {
17
- frontmatter = source.slice(fenceIndex + 3, endFenceIndex);
18
- template = source.slice(endFenceIndex + 3);
19
- }
20
- }
21
- const props = frontmatter
22
- ? mergeProps(extractFallbackPropsFromFrontmatter(frontmatter), extractPropsFromFrontmatter(frontmatter))
23
- : [];
24
- const defaults = frontmatter ? extractDefaultsFromFrontmatter(frontmatter) : new Map();
25
- const propsWithDefaults = props.map((p) => {
26
- const defaultValue = defaults.get(p.name);
27
- return defaultValue ? { ...p, defaultValue } : p;
28
- });
29
- const slots = mergeSlots(extractSlotsFromTemplate(template), extractSlotsFromFrontmatter(frontmatter));
30
- return {
31
- name,
32
- source: filePath,
33
- sourcePath: filePath,
34
- framework: 'astro',
35
- props: propsWithDefaults,
36
- slots,
37
- };
38
- }
39
- export async function extractAstroComponents(filePaths, onProgress) {
40
- const astroFiles = filePaths.filter((f) => f.endsWith('.astro'));
41
- const { items: components, warnings } = await runFileExtractionWorkers(astroFiles, os.cpus().length, async (filePath, source) => ({
42
- item: extractFromAstroFile(filePath, source),
43
- }), (filePath, error) => `Failed to extract from ${filePath}: ${error instanceof Error ? error.message : String(error)}`, onProgress);
44
- return createSortedExtractionResult(components, warnings);
45
- }
@@ -1,11 +0,0 @@
1
- import type { RawPropDefinition } from '../../types/component.js';
2
- /** Returns the string literals from a union type like `'a' | 'b' | 'c'`, or undefined if fewer than two are found. */
3
- export declare function extractAllowedValues(typeText: string): string[] | undefined;
4
- /** Reads prop names and requiredness from destructured `Astro.props` bindings when no typed Props interface exists. */
5
- export declare function extractFallbackPropsFromFrontmatter(frontmatter: string): RawPropDefinition[];
6
- /** Reads typed props from an `interface Props` or `type Props = ...` declaration in the frontmatter. */
7
- export declare function extractPropsFromFrontmatter(frontmatter: string): RawPropDefinition[];
8
- /** Reads default values from destructuring initializers in `const { foo = 'bar' } = Astro.props`. */
9
- export declare function extractDefaultsFromFrontmatter(frontmatter: string): Map<string, string>;
10
- /** Merges multiple prop arrays, preferring later entries on name collision and treating a prop as required only if all sources require it. */
11
- export declare function mergeProps(...propGroups: RawPropDefinition[][]): RawPropDefinition[];
@@ -1,96 +0,0 @@
1
- import { resolveTypeProperty } from '../shared/helpers/resolve-type-symbol.js';
2
- import { getSourceLineMetadata } from '../shared/helpers/get-node-source-lines.js';
3
- import { createAstroFrontmatterProject, collectAstroPropsBindings, extractBindingPropName, } from './helpers/collect-astro-props-bindings.js';
4
- /** Returns the string literals from a union type like `'a' | 'b' | 'c'`, or undefined if fewer than two are found. */
5
- export function extractAllowedValues(typeText) {
6
- const parts = typeText.split('|').map((p) => p.trim());
7
- const literals = parts.filter((p) => /^['"]/.test(p)).map((p) => p.replace(/^['"]|['"]$/g, ''));
8
- return literals.length >= 2 ? literals.sort() : undefined;
9
- }
10
- /** Reads prop names and requiredness from destructured `Astro.props` bindings when no typed Props interface exists. */
11
- export function extractFallbackPropsFromFrontmatter(frontmatter) {
12
- const props = new Map();
13
- for (const element of collectAstroPropsBindings(frontmatter)) {
14
- const propName = extractBindingPropName(element);
15
- if (!propName)
16
- continue;
17
- props.set(propName, {
18
- name: propName,
19
- type: 'any',
20
- required: !element.getInitializer(),
21
- });
22
- }
23
- return [...props.values()].sort((a, b) => a.name.localeCompare(b.name));
24
- }
25
- /** Reads typed props from an `interface Props` or `type Props = ...` declaration in the frontmatter. */
26
- export function extractPropsFromFrontmatter(frontmatter) {
27
- const sf = createAstroFrontmatterProject().createSourceFile('__frontmatter__.ts', frontmatter);
28
- const props = [];
29
- const propsInterface = sf.getInterface('Props');
30
- const propsTypeAlias = sf.getTypeAlias('Props');
31
- if (propsInterface) {
32
- for (const member of propsInterface.getProperties()) {
33
- const name = member.getName();
34
- const typeText = member.getTypeNode()?.getText() ?? 'any';
35
- const required = !member.hasQuestionToken();
36
- const allowedValues = extractAllowedValues(typeText);
37
- props.push({
38
- name,
39
- type: typeText,
40
- required,
41
- ...(allowedValues && { allowedValues }),
42
- sourceStartLine: member.getStartLineNumber(),
43
- sourceEndLine: member.getEndLineNumber(),
44
- });
45
- }
46
- }
47
- else if (propsTypeAlias) {
48
- const type = propsTypeAlias.getType();
49
- for (const property of type.getProperties()) {
50
- const resolved = resolveTypeProperty(property);
51
- if (!resolved)
52
- continue;
53
- const { name, declaration: decl, typeText, required } = resolved;
54
- const allowedValues = extractAllowedValues(typeText);
55
- props.push({
56
- name,
57
- type: typeText,
58
- required,
59
- ...(allowedValues && { allowedValues }),
60
- ...getSourceLineMetadata(decl),
61
- });
62
- }
63
- }
64
- return props.sort((a, b) => a.name.localeCompare(b.name));
65
- }
66
- /** Reads default values from destructuring initializers in `const { foo = 'bar' } = Astro.props`. */
67
- export function extractDefaultsFromFrontmatter(frontmatter) {
68
- const defaults = new Map();
69
- for (const element of collectAstroPropsBindings(frontmatter)) {
70
- const propName = extractBindingPropName(element);
71
- if (!propName)
72
- continue;
73
- const elementInitializer = element.getInitializer();
74
- if (!elementInitializer)
75
- continue;
76
- defaults.set(propName, elementInitializer.getText().replace(/^['"]|['"]$/g, ''));
77
- }
78
- return defaults;
79
- }
80
- /** Merges multiple prop arrays, preferring later entries on name collision and treating a prop as required only if all sources require it. */
81
- export function mergeProps(...propGroups) {
82
- const merged = new Map();
83
- for (const props of propGroups) {
84
- for (const prop of props) {
85
- const existing = merged.get(prop.name);
86
- merged.set(prop.name, existing
87
- ? {
88
- ...existing,
89
- ...prop,
90
- required: existing.required && prop.required,
91
- }
92
- : prop);
93
- }
94
- }
95
- return [...merged.values()].sort((a, b) => a.name.localeCompare(b.name));
96
- }
@@ -1,4 +0,0 @@
1
- import { Project } from 'ts-morph';
2
- export declare function createAstroFrontmatterProject(): Project;
3
- export declare function extractBindingPropName(element: import('ts-morph').BindingElement): string | null;
4
- export declare function collectAstroPropsBindings(frontmatter: string): import('ts-morph').BindingElement[];
@@ -1,47 +0,0 @@
1
- import { Node, Project } from 'ts-morph';
2
- export function createAstroFrontmatterProject() {
3
- return new Project({
4
- compilerOptions: { strict: false, target: 99, module: 99, allowJs: true },
5
- useInMemoryFileSystem: true,
6
- skipAddingFilesFromTsConfig: true,
7
- });
8
- }
9
- function usesAstroProps(initializer) {
10
- if (!initializer)
11
- return false;
12
- if (initializer.getText() === 'Astro.props')
13
- return true;
14
- let found = false;
15
- initializer.forEachDescendant((node) => {
16
- if (found)
17
- return false;
18
- if (Node.isPropertyAccessExpression(node) && node.getText() === 'Astro.props') {
19
- found = true;
20
- return false;
21
- }
22
- return undefined;
23
- });
24
- return found;
25
- }
26
- export function extractBindingPropName(element) {
27
- if (element.getText().startsWith('...'))
28
- return null;
29
- return element.getPropertyNameNode()?.getText() ?? element.getNameNode().getText();
30
- }
31
- export function collectAstroPropsBindings(frontmatter) {
32
- const elements = [];
33
- const sf = createAstroFrontmatterProject().createSourceFile('__frontmatter__.ts', frontmatter);
34
- sf.forEachDescendant((node) => {
35
- if (!Node.isVariableDeclaration(node))
36
- return;
37
- const initializer = node.getInitializer();
38
- if (!initializer || !usesAstroProps(initializer))
39
- return;
40
- const nameNode = node.getNameNode();
41
- if (!Node.isObjectBindingPattern(nameNode))
42
- return;
43
- for (const element of nameNode.getElements())
44
- elements.push(element);
45
- });
46
- return elements;
47
- }
@@ -1,7 +0,0 @@
1
- import type { RawSlotDefinition } from '../../types/component.js';
2
- /** Finds `<slot name="...">` tags in the Astro template section. */
3
- export declare function extractSlotsFromTemplate(template: string): RawSlotDefinition[];
4
- /** Finds `Astro.slots.render('name')` calls in the frontmatter to detect programmatically-rendered slots. */
5
- export declare function extractSlotsFromFrontmatter(frontmatter: string): RawSlotDefinition[];
6
- /** Merges slot arrays, keeping the first occurrence of each name. */
7
- export declare function mergeSlots(...slotGroups: RawSlotDefinition[][]): RawSlotDefinition[];
@@ -1,44 +0,0 @@
1
- /** Finds `<slot name="...">` tags in the Astro template section. */
2
- export function extractSlotsFromTemplate(template) {
3
- const slots = [];
4
- const seen = new Set();
5
- const slotRegex = /<slot(?:\s+name=["']([^"']+)["'])?\s*\/?>/g;
6
- let match;
7
- while ((match = slotRegex.exec(template)) !== null) {
8
- const slotName = match[1] ?? 'default';
9
- if (!seen.has(slotName)) {
10
- seen.add(slotName);
11
- slots.push({ name: slotName, isDefault: slotName === 'default' });
12
- }
13
- }
14
- return slots;
15
- }
16
- /** Finds `Astro.slots.render('name')` calls in the frontmatter to detect programmatically-rendered slots. */
17
- export function extractSlotsFromFrontmatter(frontmatter) {
18
- const slots = [];
19
- const seen = new Set();
20
- const slotRenderRegex = /Astro\.slots\.render\(\s*['"]([^'"]+)['"]\s*\)/g;
21
- let match;
22
- while ((match = slotRenderRegex.exec(frontmatter)) !== null) {
23
- const slotName = match[1];
24
- if (!seen.has(slotName)) {
25
- seen.add(slotName);
26
- slots.push({ name: slotName, isDefault: slotName === 'default' });
27
- }
28
- }
29
- return slots;
30
- }
31
- /** Merges slot arrays, keeping the first occurrence of each name. */
32
- export function mergeSlots(...slotGroups) {
33
- const merged = [];
34
- const seen = new Set();
35
- for (const slots of slotGroups) {
36
- for (const slot of slots) {
37
- if (seen.has(slot.name))
38
- continue;
39
- seen.add(slot.name);
40
- merged.push(slot);
41
- }
42
- }
43
- return merged;
44
- }