@contentful/experience-design-system-extraction 2.36.2-dev-build-a6f80ae6.0 → 2.36.2-dev-build-7907fec3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (292) hide show
  1. package/dist/package.json +1 -1
  2. package/dist/src/extract/controller/extract-controller.d.ts +10 -0
  3. package/dist/src/extract/controller/extract-controller.js +33 -0
  4. package/dist/src/extract/controller/helpers/validate-endpoint-request.d.ts +2 -0
  5. package/dist/src/extract/controller/helpers/validate-endpoint-request.js +24 -0
  6. package/dist/src/extract/{astro.d.ts → framework-adapters/astro/extractor.d.ts} +1 -1
  7. package/dist/src/extract/framework-adapters/astro/extractor.js +45 -0
  8. package/dist/src/extract/framework-adapters/astro/frontmatter.d.ts +11 -0
  9. package/dist/src/extract/framework-adapters/astro/frontmatter.js +96 -0
  10. package/dist/src/extract/framework-adapters/astro/helpers/collect-astro-props-bindings.d.ts +4 -0
  11. package/dist/src/extract/framework-adapters/astro/helpers/collect-astro-props-bindings.js +47 -0
  12. package/dist/src/extract/framework-adapters/astro/slots.d.ts +7 -0
  13. package/dist/src/extract/framework-adapters/astro/slots.js +44 -0
  14. package/dist/src/extract/{react.d.ts → framework-adapters/react/extractor.d.ts} +1 -1
  15. package/dist/src/extract/framework-adapters/react/extractor.js +31 -0
  16. package/dist/src/extract/framework-adapters/react/helpers/collect-dom-wrapper-contexts.d.ts +4 -0
  17. package/dist/src/extract/framework-adapters/react/helpers/collect-dom-wrapper-contexts.js +73 -0
  18. package/dist/src/extract/framework-adapters/react/helpers/collect-prop-dataflow.d.ts +14 -0
  19. package/dist/src/extract/framework-adapters/react/helpers/collect-prop-dataflow.js +220 -0
  20. package/dist/src/extract/framework-adapters/react/helpers/collect-react-impl-hints.d.ts +5 -0
  21. package/dist/src/extract/framework-adapters/react/helpers/collect-react-impl-hints.js +32 -0
  22. package/dist/src/extract/framework-adapters/react/helpers/detect-dom-is-pure-wrapper.d.ts +2 -0
  23. package/dist/src/extract/framework-adapters/react/helpers/detect-dom-is-pure-wrapper.js +59 -0
  24. package/dist/src/extract/framework-adapters/react/helpers/detect-dom-type-patterns.d.ts +8 -0
  25. package/dist/src/extract/framework-adapters/react/helpers/detect-dom-type-patterns.js +29 -0
  26. package/dist/src/extract/framework-adapters/react/helpers/detect-omit-wrapped-custom-props.d.ts +2 -0
  27. package/dist/src/extract/framework-adapters/react/helpers/detect-omit-wrapped-custom-props.js +64 -0
  28. package/dist/src/extract/framework-adapters/react/helpers/detect-pick-type-patterns.d.ts +4 -0
  29. package/dist/src/extract/framework-adapters/react/helpers/detect-pick-type-patterns.js +64 -0
  30. package/dist/src/extract/framework-adapters/react/helpers/detect-react-polymorphic.d.ts +5 -0
  31. package/dist/src/extract/framework-adapters/react/helpers/detect-react-polymorphic.js +170 -0
  32. package/dist/src/extract/framework-adapters/react/helpers/dom-attribute-surfaces.d.ts +15 -0
  33. package/dist/src/extract/framework-adapters/react/helpers/dom-attribute-surfaces.js +231 -0
  34. package/dist/src/extract/framework-adapters/react/helpers/extract-binding-fallback-props.d.ts +4 -0
  35. package/dist/src/extract/framework-adapters/react/helpers/extract-binding-fallback-props.js +50 -0
  36. package/dist/src/extract/framework-adapters/react/helpers/extract-from-react-source-file.d.ts +5 -0
  37. package/dist/src/extract/framework-adapters/react/helpers/extract-from-react-source-file.js +23 -0
  38. package/dist/src/extract/framework-adapters/react/helpers/extract-react-allowed-components.d.ts +2 -0
  39. package/dist/src/extract/framework-adapters/react/helpers/extract-react-allowed-components.js +25 -0
  40. package/dist/src/extract/framework-adapters/react/helpers/extract-react-binding-defaults.d.ts +6 -0
  41. package/dist/src/extract/framework-adapters/react/helpers/extract-react-binding-defaults.js +48 -0
  42. package/dist/src/extract/framework-adapters/react/helpers/extract-react-component-from-export.d.ts +15 -0
  43. package/dist/src/extract/framework-adapters/react/helpers/extract-react-component-from-export.js +106 -0
  44. package/dist/src/extract/framework-adapters/react/helpers/extract-react-prop-types.d.ts +3 -0
  45. package/dist/src/extract/framework-adapters/react/helpers/extract-react-prop-types.js +64 -0
  46. package/dist/src/extract/framework-adapters/react/helpers/extract-react-props-from-type.d.ts +15 -0
  47. package/dist/src/extract/framework-adapters/react/helpers/extract-react-props-from-type.js +318 -0
  48. package/dist/src/extract/framework-adapters/react/helpers/extract-react-slots.d.ts +6 -0
  49. package/dist/src/extract/framework-adapters/react/helpers/extract-react-slots.js +44 -0
  50. package/dist/src/extract/framework-adapters/react/helpers/filter-impl-alias-props.d.ts +4 -0
  51. package/dist/src/extract/framework-adapters/react/helpers/filter-impl-alias-props.js +52 -0
  52. package/dist/src/extract/framework-adapters/react/helpers/infer-primitive-dom-props.d.ts +6 -0
  53. package/dist/src/extract/framework-adapters/react/helpers/infer-primitive-dom-props.js +69 -0
  54. package/dist/src/extract/framework-adapters/react/helpers/resolve-component-function.d.ts +4 -0
  55. package/dist/src/extract/framework-adapters/react/helpers/resolve-component-function.js +131 -0
  56. package/dist/src/extract/framework-adapters/react/helpers/resolve-react-prop-forwarding.d.ts +8 -0
  57. package/dist/src/extract/framework-adapters/react/helpers/resolve-react-prop-forwarding.js +22 -0
  58. package/dist/src/extract/framework-adapters/react/helpers/resolve-react-props-type.d.ts +14 -0
  59. package/dist/src/extract/framework-adapters/react/helpers/resolve-react-props-type.js +86 -0
  60. package/dist/src/extract/framework-adapters/react/helpers/synthesize-react-structural-slots.d.ts +8 -0
  61. package/dist/src/extract/framework-adapters/react/helpers/synthesize-react-structural-slots.js +44 -0
  62. package/dist/src/extract/framework-adapters/shared/helpers/build-component-lookup-maps.d.ts +5 -0
  63. package/dist/src/extract/framework-adapters/shared/helpers/build-component-lookup-maps.js +10 -0
  64. package/dist/src/extract/framework-adapters/shared/helpers/collect-jsdoc-slot-comments.d.ts +2 -0
  65. package/dist/src/extract/framework-adapters/shared/helpers/collect-jsdoc-slot-comments.js +13 -0
  66. package/dist/src/extract/{file-extraction-workers.d.ts → framework-adapters/shared/helpers/file-processing/file-workers.d.ts} +1 -13
  67. package/dist/src/extract/{file-extraction-workers.js → framework-adapters/shared/helpers/file-processing/file-workers.js} +0 -19
  68. package/dist/src/extract/framework-adapters/shared/helpers/file-processing/project-source-files.d.ts +5 -0
  69. package/dist/src/extract/framework-adapters/shared/helpers/file-processing/project-source-files.js +13 -0
  70. package/dist/src/extract/framework-adapters/shared/helpers/file-processing/result-normalizer.d.ts +6 -0
  71. package/dist/src/extract/framework-adapters/shared/helpers/file-processing/result-normalizer.js +6 -0
  72. package/dist/src/extract/framework-adapters/shared/helpers/find-tsx-workspace-package.d.ts +2 -0
  73. package/dist/src/extract/framework-adapters/shared/helpers/find-tsx-workspace-package.js +62 -0
  74. package/dist/src/extract/{source-line-metadata.d.ts → framework-adapters/shared/helpers/get-node-source-lines.d.ts} +1 -1
  75. package/dist/src/extract/framework-adapters/shared/helpers/resolve-tsx-tsconfig-path.d.ts +7 -0
  76. package/dist/src/extract/framework-adapters/shared/helpers/resolve-tsx-tsconfig-path.js +93 -0
  77. package/dist/src/extract/framework-adapters/shared/helpers/resolve-tsx-workspace-imports.d.ts +6 -0
  78. package/dist/src/extract/framework-adapters/shared/helpers/resolve-tsx-workspace-imports.js +58 -0
  79. package/dist/src/extract/framework-adapters/shared/helpers/tsx-node-utils.d.ts +13 -0
  80. package/dist/src/extract/framework-adapters/shared/helpers/tsx-node-utils.js +76 -0
  81. package/dist/src/extract/framework-adapters/shared/helpers/tsx-renderable-exports.d.ts +12 -0
  82. package/dist/src/extract/framework-adapters/shared/helpers/tsx-renderable-exports.js +35 -0
  83. package/dist/src/extract/framework-adapters/shared/helpers/tsx-shared.d.ts +14 -0
  84. package/dist/src/extract/framework-adapters/shared/helpers/tsx-shared.js +54 -0
  85. package/dist/src/extract/{stencil.d.ts → framework-adapters/stencil/extractor.d.ts} +1 -1
  86. package/dist/src/extract/framework-adapters/stencil/extractor.js +82 -0
  87. package/dist/src/extract/framework-adapters/stencil/helpers/detect-stencil-class.d.ts +7 -0
  88. package/dist/src/extract/framework-adapters/stencil/helpers/detect-stencil-class.js +32 -0
  89. package/dist/src/extract/framework-adapters/stencil/helpers/extract-stencil-props.d.ts +5 -0
  90. package/dist/src/extract/framework-adapters/stencil/helpers/extract-stencil-props.js +62 -0
  91. package/dist/src/extract/framework-adapters/stencil/helpers/extract-stencil-slots.d.ts +6 -0
  92. package/dist/src/extract/framework-adapters/stencil/helpers/extract-stencil-slots.js +87 -0
  93. package/dist/src/extract/framework-adapters/stencil/helpers/stencil-prop-helpers.d.ts +5 -0
  94. package/dist/src/extract/framework-adapters/stencil/helpers/stencil-prop-helpers.js +39 -0
  95. package/dist/src/extract/{svelte.d.ts → framework-adapters/svelte/extractor.d.ts} +2 -1
  96. package/dist/src/extract/framework-adapters/svelte/extractor.js +27 -0
  97. package/dist/src/extract/framework-adapters/svelte/helpers/classify-svelte-props-annotation.d.ts +6 -0
  98. package/dist/src/extract/framework-adapters/svelte/helpers/classify-svelte-props-annotation.js +51 -0
  99. package/dist/src/extract/framework-adapters/svelte/helpers/collect-svelte-type-references.d.ts +3 -0
  100. package/dist/src/extract/framework-adapters/svelte/helpers/collect-svelte-type-references.js +52 -0
  101. package/dist/src/extract/framework-adapters/svelte/helpers/extract-from-svelte-file.d.ts +7 -0
  102. package/dist/src/extract/framework-adapters/svelte/helpers/extract-from-svelte-file.js +90 -0
  103. package/dist/src/extract/framework-adapters/svelte/helpers/extract-svelte-ast-type-members.d.ts +15 -0
  104. package/dist/src/extract/framework-adapters/svelte/helpers/extract-svelte-ast-type-members.js +46 -0
  105. package/dist/src/extract/framework-adapters/svelte/helpers/extract-svelte-declaration-data.d.ts +7 -0
  106. package/dist/src/extract/framework-adapters/svelte/helpers/extract-svelte-declaration-data.js +64 -0
  107. package/dist/src/extract/framework-adapters/svelte/helpers/extract-svelte-external-type-members.d.ts +4 -0
  108. package/dist/src/extract/framework-adapters/svelte/helpers/extract-svelte-external-type-members.js +58 -0
  109. package/dist/src/extract/framework-adapters/svelte/helpers/extract-svelte-from-destructure.d.ts +4 -0
  110. package/dist/src/extract/framework-adapters/svelte/helpers/extract-svelte-from-destructure.js +85 -0
  111. package/dist/src/extract/framework-adapters/svelte/helpers/extract-svelte-props.d.ts +22 -0
  112. package/dist/src/extract/framework-adapters/svelte/helpers/extract-svelte-props.js +55 -0
  113. package/dist/src/extract/framework-adapters/svelte/helpers/extract-svelte-template-slots.d.ts +7 -0
  114. package/dist/src/extract/framework-adapters/svelte/helpers/extract-svelte-template-slots.js +63 -0
  115. package/dist/src/extract/framework-adapters/svelte/helpers/extract-svelte-type-member-props.d.ts +3 -0
  116. package/dist/src/extract/framework-adapters/svelte/helpers/extract-svelte-type-member-props.js +31 -0
  117. package/dist/src/extract/framework-adapters/svelte/helpers/find-svelte-script-declarations.d.ts +8 -0
  118. package/dist/src/extract/framework-adapters/svelte/helpers/find-svelte-script-declarations.js +91 -0
  119. package/dist/src/extract/framework-adapters/svelte/helpers/get-svelte-component-name.d.ts +1 -0
  120. package/dist/src/extract/framework-adapters/svelte/helpers/get-svelte-component-name.js +26 -0
  121. package/dist/src/extract/framework-adapters/svelte/helpers/render-svelte-type-strings.d.ts +3 -0
  122. package/dist/src/extract/framework-adapters/svelte/helpers/render-svelte-type-strings.js +91 -0
  123. package/dist/src/extract/framework-adapters/svelte/helpers/render-svelte-type.d.ts +11 -0
  124. package/dist/src/extract/framework-adapters/svelte/helpers/render-svelte-type.js +68 -0
  125. package/dist/src/extract/framework-adapters/svelte/helpers/resolve-dts-location.d.ts +1 -0
  126. package/dist/src/extract/framework-adapters/svelte/helpers/resolve-dts-location.js +90 -0
  127. package/dist/src/extract/framework-adapters/svelte/helpers/resolve-svelte-allowed-components.d.ts +2 -0
  128. package/dist/src/extract/framework-adapters/svelte/helpers/resolve-svelte-allowed-components.js +20 -0
  129. package/dist/src/extract/framework-adapters/svelte/helpers/resolve-svelte-external-type-readers.d.ts +3 -0
  130. package/dist/src/extract/framework-adapters/svelte/helpers/resolve-svelte-external-type-readers.js +68 -0
  131. package/dist/src/extract/framework-adapters/svelte/helpers/resolve-svelte-type-checker.d.ts +4 -0
  132. package/dist/src/extract/framework-adapters/svelte/helpers/resolve-svelte-type-checker.js +68 -0
  133. package/dist/src/extract/framework-adapters/svelte/helpers/resolve-svelte-type-members.d.ts +6 -0
  134. package/dist/src/extract/framework-adapters/svelte/helpers/resolve-svelte-type-members.js +30 -0
  135. package/dist/src/extract/framework-adapters/svelte/helpers/resolve-svelte-unresolved-retry.d.ts +13 -0
  136. package/dist/src/extract/framework-adapters/svelte/helpers/resolve-svelte-unresolved-retry.js +192 -0
  137. package/dist/src/extract/framework-adapters/svelte/types/svelte-ast-node.d.ts +12 -0
  138. package/dist/src/extract/framework-adapters/svelte/types/svelte-ast-node.js +1 -0
  139. package/dist/src/extract/{vue.d.ts → framework-adapters/vue/extractor.d.ts} +1 -1
  140. package/dist/src/extract/framework-adapters/vue/extractor.js +61 -0
  141. package/dist/src/extract/framework-adapters/vue/helpers/extract-vue-object-props.d.ts +3 -0
  142. package/dist/src/extract/framework-adapters/vue/helpers/extract-vue-object-props.js +67 -0
  143. package/dist/src/extract/framework-adapters/vue/helpers/extract-vue-options-props.d.ts +4 -0
  144. package/dist/src/extract/framework-adapters/vue/helpers/extract-vue-options-props.js +72 -0
  145. package/dist/src/extract/framework-adapters/vue/helpers/extract-vue-setup-object-props.d.ts +8 -0
  146. package/dist/src/extract/framework-adapters/vue/helpers/extract-vue-setup-object-props.js +64 -0
  147. package/dist/src/extract/framework-adapters/vue/helpers/extract-vue-setup-props.d.ts +2 -0
  148. package/dist/src/extract/framework-adapters/vue/helpers/extract-vue-setup-props.js +66 -0
  149. package/dist/src/extract/framework-adapters/vue/helpers/extract-vue-slots.d.ts +24 -0
  150. package/dist/src/extract/framework-adapters/vue/helpers/extract-vue-slots.js +56 -0
  151. package/dist/src/extract/framework-adapters/vue/helpers/resolve-vue-component-name.d.ts +2 -0
  152. package/dist/src/extract/framework-adapters/vue/helpers/resolve-vue-component-name.js +9 -0
  153. package/dist/src/extract/framework-adapters/vue/helpers/resolve-workspace-module.d.ts +1 -0
  154. package/dist/src/extract/framework-adapters/vue/helpers/resolve-workspace-module.js +76 -0
  155. package/dist/src/extract/framework-adapters/vue/helpers/workspace-package-dirs.d.ts +2 -0
  156. package/dist/src/extract/framework-adapters/vue/helpers/workspace-package-dirs.js +77 -0
  157. package/dist/src/extract/{vue-tsx.d.ts → framework-adapters/vue-tsx/extractor.d.ts} +1 -1
  158. package/dist/src/extract/framework-adapters/vue-tsx/extractor.js +82 -0
  159. package/dist/src/extract/framework-adapters/vue-tsx/helpers/extract-vue-tsx-props.d.ts +5 -0
  160. package/dist/src/extract/framework-adapters/vue-tsx/helpers/extract-vue-tsx-props.js +189 -0
  161. package/dist/src/extract/framework-adapters/vue-tsx/helpers/extract-vue-tsx-slots.d.ts +4 -0
  162. package/dist/src/extract/framework-adapters/vue-tsx/helpers/extract-vue-tsx-slots.js +91 -0
  163. package/dist/src/extract/framework-adapters/vue-tsx/helpers/resolve-ast-object.d.ts +11 -0
  164. package/dist/src/extract/framework-adapters/vue-tsx/helpers/resolve-ast-object.js +95 -0
  165. package/dist/src/extract/{web-components.d.ts → framework-adapters/web-components/extractor.d.ts} +1 -1
  166. package/dist/src/extract/framework-adapters/web-components/extractor.js +55 -0
  167. package/dist/src/extract/framework-adapters/web-components/helpers/collect-wc-html-templates.d.ts +4 -0
  168. package/dist/src/extract/framework-adapters/web-components/helpers/collect-wc-html-templates.js +67 -0
  169. package/dist/src/extract/framework-adapters/web-components/helpers/detect-wc-non-public-members.d.ts +9 -0
  170. package/dist/src/extract/framework-adapters/web-components/helpers/detect-wc-non-public-members.js +11 -0
  171. package/dist/src/extract/framework-adapters/web-components/helpers/extract-wc-accessor-props.d.ts +3 -0
  172. package/dist/src/extract/framework-adapters/web-components/helpers/extract-wc-accessor-props.js +65 -0
  173. package/dist/src/extract/framework-adapters/web-components/helpers/extract-wc-class-properties.d.ts +3 -0
  174. package/dist/src/extract/framework-adapters/web-components/helpers/extract-wc-class-properties.js +60 -0
  175. package/dist/src/extract/framework-adapters/web-components/helpers/extract-wc-inheritance.d.ts +4 -0
  176. package/dist/src/extract/framework-adapters/web-components/helpers/extract-wc-inheritance.js +16 -0
  177. package/dist/src/extract/framework-adapters/web-components/helpers/extract-wc-jsdoc-attr-props.d.ts +3 -0
  178. package/dist/src/extract/framework-adapters/web-components/helpers/extract-wc-jsdoc-attr-props.js +24 -0
  179. package/dist/src/extract/framework-adapters/web-components/helpers/extract-wc-observed-attrs.d.ts +3 -0
  180. package/dist/src/extract/framework-adapters/web-components/helpers/extract-wc-observed-attrs.js +27 -0
  181. package/dist/src/extract/framework-adapters/web-components/helpers/extract-wc-slots.d.ts +6 -0
  182. package/dist/src/extract/framework-adapters/web-components/helpers/extract-wc-slots.js +56 -0
  183. package/dist/src/extract/framework-adapters/web-components/helpers/extract-wc-template-content.d.ts +4 -0
  184. package/dist/src/extract/framework-adapters/web-components/helpers/extract-wc-template-content.js +49 -0
  185. package/dist/src/extract/framework-adapters/web-components/helpers/merge-wc-prop-lists.d.ts +9 -0
  186. package/dist/src/extract/framework-adapters/web-components/helpers/merge-wc-prop-lists.js +19 -0
  187. package/dist/src/extract/framework-adapters/web-components/helpers/resolve-wc-base-class.d.ts +2 -0
  188. package/dist/src/extract/framework-adapters/web-components/helpers/resolve-wc-base-class.js +59 -0
  189. package/dist/src/extract/framework-adapters/web-components/helpers/resolve-wc-decorator-tag.d.ts +2 -0
  190. package/dist/src/extract/framework-adapters/web-components/helpers/resolve-wc-decorator-tag.js +54 -0
  191. package/dist/src/extract/framework-adapters/web-components/helpers/resolve-wc-import-source.d.ts +7 -0
  192. package/dist/src/extract/framework-adapters/web-components/helpers/resolve-wc-import-source.js +47 -0
  193. package/dist/src/extract/framework-adapters/web-components/helpers/resolve-wc-import.d.ts +4 -0
  194. package/dist/src/extract/framework-adapters/web-components/helpers/resolve-wc-import.js +93 -0
  195. package/dist/src/extract/framework-adapters/web-components/helpers/resolve-wc-sibling-definition.d.ts +4 -0
  196. package/dist/src/extract/framework-adapters/web-components/helpers/resolve-wc-sibling-definition.js +79 -0
  197. package/dist/src/extract/framework-adapters/web-components/helpers/resolve-wc-tag-name.d.ts +7 -0
  198. package/dist/src/extract/framework-adapters/web-components/helpers/resolve-wc-tag-name.js +62 -0
  199. package/dist/src/extract/helpers/evidence/ast/collect-structural-jsx-evidence.d.ts +5 -0
  200. package/dist/src/extract/helpers/evidence/ast/collect-structural-jsx-evidence.js +63 -0
  201. package/dist/src/extract/helpers/evidence/ast/detect-react-node-types.d.ts +2 -0
  202. package/dist/src/extract/helpers/evidence/ast/detect-react-node-types.js +24 -0
  203. package/dist/src/extract/helpers/evidence/ast/get-jsx-ast-data.d.ts +14 -0
  204. package/dist/src/extract/helpers/evidence/ast/get-jsx-ast-data.js +85 -0
  205. package/dist/src/extract/helpers/evidence/collect-jsx-component-references.d.ts +5 -0
  206. package/dist/src/extract/helpers/evidence/collect-jsx-component-references.js +52 -0
  207. package/dist/src/extract/helpers/evidence/detect-slot-from-prop.d.ts +16 -0
  208. package/dist/src/extract/helpers/evidence/detect-slot-from-prop.js +39 -0
  209. package/dist/src/extract/orchestrator/execute-extraction-orchestrator.d.ts +13 -0
  210. package/dist/src/extract/orchestrator/execute-extraction-orchestrator.js +17 -0
  211. package/dist/src/{pre-classify.d.ts → extract/services/classification/classify-component-props.d.ts} +3 -5
  212. package/dist/src/{pre-classify.js → extract/services/classification/classify-component-props.js} +8 -100
  213. package/dist/src/extract/services/classification/helpers/check-prop-types.d.ts +7 -0
  214. package/dist/src/extract/services/classification/helpers/check-prop-types.js +22 -0
  215. package/dist/src/extract/services/classification/helpers/detect-dom-props.d.ts +2 -0
  216. package/dist/src/extract/services/classification/helpers/detect-dom-props.js +63 -0
  217. package/dist/src/extract/services/deduplication/deduplicate-components.d.ts +2 -0
  218. package/dist/src/extract/services/deduplication/deduplicate-components.js +58 -0
  219. package/dist/src/extract/services/deduplication/helpers/component-path-analysis.d.ts +10 -0
  220. package/dist/src/extract/services/deduplication/helpers/component-path-analysis.js +85 -0
  221. package/dist/src/extract/services/deduplication/helpers/component-path-scoring.d.ts +10 -0
  222. package/dist/src/extract/services/deduplication/helpers/component-path-scoring.js +73 -0
  223. package/dist/src/extract/services/extraction/extract-components.d.ts +3 -0
  224. package/dist/src/extract/services/extraction/extract-components.js +19 -0
  225. package/dist/src/extract/services/extraction/helpers/collect-sveltekit-route-exclusions.d.ts +2 -0
  226. package/dist/src/extract/services/extraction/helpers/collect-sveltekit-route-exclusions.js +18 -0
  227. package/dist/src/extract/services/extraction/helpers/filter-hook-components.d.ts +6 -0
  228. package/dist/src/extract/services/extraction/helpers/filter-hook-components.js +18 -0
  229. package/dist/src/extract/services/extraction/helpers/register-extractors.d.ts +8 -0
  230. package/dist/src/extract/services/extraction/helpers/register-extractors.js +71 -0
  231. package/dist/src/extract/services/extraction/helpers/run-extractor-batches.d.ts +4 -0
  232. package/dist/src/extract/services/extraction/helpers/run-extractor-batches.js +24 -0
  233. package/dist/src/extract/services/quality/evaluate-extraction-quality.d.ts +4 -0
  234. package/dist/src/extract/services/quality/evaluate-extraction-quality.js +61 -0
  235. package/dist/src/extract/services/quality/helpers/authorability/evaluate-authorability.d.ts +28 -0
  236. package/dist/src/extract/services/quality/helpers/authorability/evaluate-authorability.js +67 -0
  237. package/dist/src/extract/services/quality/helpers/inspection/detect-data-wrapper-patterns.d.ts +16 -0
  238. package/dist/src/extract/services/quality/helpers/inspection/detect-data-wrapper-patterns.js +63 -0
  239. package/dist/src/extract/{source-inspection.d.ts → services/quality/helpers/inspection/inspect-component-source.d.ts} +3 -6
  240. package/dist/src/extract/{source-inspection.js → services/quality/helpers/inspection/inspect-component-source.js} +5 -65
  241. package/dist/src/extract/{validate.d.ts → services/quality/helpers/inspection/validate-extracted-components.d.ts} +1 -1
  242. package/dist/src/extract/services/quality/helpers/scoring/collect-scoring-inputs.d.ts +14 -0
  243. package/dist/src/extract/{scoring.js → services/quality/helpers/scoring/collect-scoring-inputs.js} +10 -24
  244. package/dist/src/extract/services/quality/helpers/scoring/compute-extraction-score.d.ts +6 -0
  245. package/dist/src/extract/services/quality/helpers/scoring/compute-extraction-score.js +12 -0
  246. package/dist/src/extract/types/classification.d.ts +4 -0
  247. package/dist/src/extract/types/classification.js +1 -0
  248. package/dist/src/extract/types/component-extractor.d.ts +7 -0
  249. package/dist/src/extract/types/component-extractor.js +1 -0
  250. package/dist/src/{types.d.ts → extract/types/component.d.ts} +0 -22
  251. package/dist/src/extract/types/component.js +1 -0
  252. package/dist/src/extract/types/contract.d.ts +16 -0
  253. package/dist/src/extract/types/contract.js +1 -0
  254. package/dist/src/extract/types/display.d.ts +3 -0
  255. package/dist/src/{types.js → extract/types/display.js} +1 -1
  256. package/dist/src/extract/types/options.d.ts +15 -0
  257. package/dist/src/extract/types/options.js +1 -0
  258. package/dist/src/extract/types/scoring.d.ts +9 -0
  259. package/dist/src/extract/types/scoring.js +1 -0
  260. package/dist/src/extract/types/source-inspection.d.ts +5 -0
  261. package/dist/src/extract/types/source-inspection.js +1 -0
  262. package/dist/src/index.d.ts +27 -21
  263. package/dist/src/index.js +21 -17
  264. package/package.json +1 -1
  265. package/dist/src/extract/astro.js +0 -226
  266. package/dist/src/extract/non-authorable-filter.d.ts +0 -17
  267. package/dist/src/extract/non-authorable-filter.js +0 -60
  268. package/dist/src/extract/pipeline.d.ts +0 -7
  269. package/dist/src/extract/pipeline.js +0 -343
  270. package/dist/src/extract/react.js +0 -2069
  271. package/dist/src/extract/scoring.d.ts +0 -12
  272. package/dist/src/extract/slot-detection.d.ts +0 -35
  273. package/dist/src/extract/slot-detection.js +0 -98
  274. package/dist/src/extract/stencil.js +0 -312
  275. package/dist/src/extract/structural-slot-evidence.d.ts +0 -63
  276. package/dist/src/extract/structural-slot-evidence.js +0 -278
  277. package/dist/src/extract/svelte.js +0 -1309
  278. package/dist/src/extract/tsx-shared.d.ts +0 -37
  279. package/dist/src/extract/tsx-shared.js +0 -368
  280. package/dist/src/extract/vue-tsx.js +0 -449
  281. package/dist/src/extract/vue.js +0 -605
  282. package/dist/src/extract/web-components.js +0 -863
  283. /package/dist/src/extract/{source-line-metadata.js → framework-adapters/shared/helpers/get-node-source-lines.js} +0 -0
  284. /package/dist/src/extract/{resolve-local-module.d.ts → framework-adapters/shared/helpers/resolve-import-file-path.d.ts} +0 -0
  285. /package/dist/src/extract/{resolve-local-module.js → framework-adapters/shared/helpers/resolve-import-file-path.js} +0 -0
  286. /package/dist/src/extract/{resolve-type-property.d.ts → framework-adapters/shared/helpers/resolve-type-symbol.d.ts} +0 -0
  287. /package/dist/src/extract/{resolve-type-property.js → framework-adapters/shared/helpers/resolve-type-symbol.js} +0 -0
  288. /package/dist/src/extract/{slot-allowed-components.d.ts → helpers/evidence/collect-allowed-component-names.d.ts} +0 -0
  289. /package/dist/src/extract/{slot-allowed-components.js → helpers/evidence/collect-allowed-component-names.js} +0 -0
  290. /package/dist/src/extract/{parse-imported-names.d.ts → helpers/evidence/parse-source-imports.d.ts} +0 -0
  291. /package/dist/src/extract/{parse-imported-names.js → helpers/evidence/parse-source-imports.js} +0 -0
  292. /package/dist/src/extract/{validate.js → services/quality/helpers/inspection/validate-extracted-components.js} +0 -0
@@ -0,0 +1,220 @@
1
+ import { Node, SyntaxKind } from 'ts-morph';
2
+ import { getJsxTagNameNode, getNodeDefinitions, getValueTargetDeclarations, isIntrinsicJsxElement, } from '../../shared/helpers/tsx-shared.js';
3
+ import { resolveFunctionNode } from './resolve-component-function.js';
4
+ function getDeclarationIdentity(node) {
5
+ if (Node.isIdentifier(node)) {
6
+ const parent = node.getParent();
7
+ if ((Node.isVariableDeclaration(parent) || Node.isBindingElement(parent) || Node.isParameterDeclaration(parent)) &&
8
+ parent.getNameNode() === node) {
9
+ return parent;
10
+ }
11
+ }
12
+ return getNodeDefinitions(node)[0]?.getDeclarationNode() ?? node;
13
+ }
14
+ export function getComponentIdentity(func) {
15
+ return `${func.getSourceFile().getFilePath()}:${func.getStart()}`;
16
+ }
17
+ function resolveForwardedComponentIdentity(tagNameNode) {
18
+ if (!Node.isIdentifier(tagNameNode))
19
+ return undefined;
20
+ for (const declaration of getValueTargetDeclarations(tagNameNode)) {
21
+ const func = resolveFunctionNode(declaration);
22
+ if (func)
23
+ return getComponentIdentity(func);
24
+ }
25
+ return undefined;
26
+ }
27
+ /**
28
+ * Declarations that are rebound somewhere in the body, so their initializer no
29
+ * longer describes the value that reaches JSX.
30
+ */
31
+ function collectReboundDeclarations(body) {
32
+ const rebound = new Set();
33
+ const recordTarget = (target) => {
34
+ if (Node.isIdentifier(target)) {
35
+ rebound.add(getDeclarationIdentity(target));
36
+ return;
37
+ }
38
+ if ((Node.isPropertyAccessExpression(target) || Node.isElementAccessExpression(target)) &&
39
+ Node.isIdentifier(target.getExpression())) {
40
+ rebound.add(getDeclarationIdentity(target.getExpression()));
41
+ }
42
+ };
43
+ for (const assignment of body?.getDescendantsOfKind(SyntaxKind.BinaryExpression) ?? []) {
44
+ // Covers `=` and every compound form (`+=`, `??=`, `>>>=`, ...).
45
+ const operator = assignment.getOperatorToken().getKind();
46
+ if (operator < SyntaxKind.FirstAssignment || operator > SyntaxKind.LastAssignment)
47
+ continue;
48
+ recordTarget(assignment.getLeft());
49
+ }
50
+ // Only `++`/`--` rebind the operand. Reading a prop through `!`, `-`, `+`, or
51
+ // `~` leaves the alias intact, so those operators must not invalidate it.
52
+ for (const update of body?.getDescendantsOfKind(SyntaxKind.PrefixUnaryExpression) ?? []) {
53
+ const operator = update.getOperatorToken();
54
+ if (operator !== SyntaxKind.PlusPlusToken && operator !== SyntaxKind.MinusMinusToken)
55
+ continue;
56
+ recordTarget(update.getOperand());
57
+ }
58
+ for (const update of body?.getDescendantsOfKind(SyntaxKind.PostfixUnaryExpression) ?? []) {
59
+ recordTarget(update.getOperand());
60
+ }
61
+ return rebound;
62
+ }
63
+ /** Trace only statically resolvable, component-local prop dataflow into JSX. */
64
+ export function collectPropDataflow(func, param, availablePropNames) {
65
+ const valueAliases = new Map();
66
+ const objectAliases = new Map();
67
+ const fullPropsShape = new Map([...availablePropNames].map((name) => [name, name]));
68
+ const belongsToComponentFunction = (node) => node.getFirstAncestor((ancestor) => Node.isFunctionDeclaration(ancestor) || Node.isArrowFunction(ancestor) || Node.isFunctionExpression(ancestor)) === func;
69
+ const resolveValue = (expression) => {
70
+ if (!expression)
71
+ return undefined;
72
+ if (Node.isParenthesizedExpression(expression))
73
+ return resolveValue(expression.getExpression());
74
+ if (Node.isIdentifier(expression))
75
+ return valueAliases.get(getDeclarationIdentity(expression));
76
+ if (Node.isPropertyAccessExpression(expression)) {
77
+ const object = expression.getExpression();
78
+ return Node.isIdentifier(object)
79
+ ? objectAliases.get(getDeclarationIdentity(object))?.get(expression.getName())
80
+ : undefined;
81
+ }
82
+ if (Node.isElementAccessExpression(expression)) {
83
+ const argument = expression.getArgumentExpression();
84
+ if (!argument || (!Node.isStringLiteral(argument) && !Node.isNoSubstitutionTemplateLiteral(argument))) {
85
+ return undefined;
86
+ }
87
+ const object = expression.getExpression();
88
+ return Node.isIdentifier(object)
89
+ ? objectAliases.get(getDeclarationIdentity(object))?.get(argument.getLiteralText())
90
+ : undefined;
91
+ }
92
+ return undefined;
93
+ };
94
+ const resolveObject = (expression) => {
95
+ if (!expression)
96
+ return undefined;
97
+ if (Node.isParenthesizedExpression(expression))
98
+ return resolveObject(expression.getExpression());
99
+ if (Node.isIdentifier(expression))
100
+ return objectAliases.get(getDeclarationIdentity(expression));
101
+ if (!Node.isObjectLiteralExpression(expression))
102
+ return undefined;
103
+ const shape = new Map();
104
+ for (const property of expression.getProperties()) {
105
+ if (Node.isSpreadAssignment(property)) {
106
+ const spreadShape = resolveObject(property.getExpression());
107
+ for (const [targetProp, sourceProp] of spreadShape ?? [])
108
+ shape.set(targetProp, sourceProp);
109
+ }
110
+ else if (Node.isShorthandPropertyAssignment(property)) {
111
+ const sourceProp = resolveValue(property.getNameNode());
112
+ if (sourceProp)
113
+ shape.set(property.getName(), sourceProp);
114
+ }
115
+ else if (Node.isPropertyAssignment(property)) {
116
+ const propertyNameNode = property.getNameNode();
117
+ if (!Node.isIdentifier(propertyNameNode) && !Node.isStringLiteral(propertyNameNode))
118
+ continue;
119
+ const sourceProp = resolveValue(property.getInitializer());
120
+ if (sourceProp)
121
+ shape.set(property.getName(), sourceProp);
122
+ }
123
+ }
124
+ return shape;
125
+ };
126
+ const addBindings = (pattern, sourceShape) => {
127
+ const omittedProps = new Set(pattern
128
+ .getElements()
129
+ .filter((element) => !element.getDotDotDotToken())
130
+ .map((element) => element.getPropertyNameNode()?.getText() ?? element.getNameNode().getText()));
131
+ for (const element of pattern.getElements()) {
132
+ const localName = element.getNameNode();
133
+ if (!Node.isIdentifier(localName))
134
+ continue;
135
+ if (element.getDotDotDotToken()) {
136
+ objectAliases.set(getDeclarationIdentity(localName), new Map([...sourceShape].filter(([targetProp]) => !omittedProps.has(targetProp))));
137
+ continue;
138
+ }
139
+ const targetProp = element.getPropertyNameNode()?.getText() ?? localName.getText();
140
+ const sourceProp = sourceShape.get(targetProp);
141
+ if (sourceProp)
142
+ valueAliases.set(getDeclarationIdentity(localName), sourceProp);
143
+ }
144
+ };
145
+ const paramNameNode = param.getNameNode();
146
+ if (Node.isIdentifier(paramNameNode))
147
+ objectAliases.set(getDeclarationIdentity(paramNameNode), fullPropsShape);
148
+ else if (Node.isObjectBindingPattern(paramNameNode))
149
+ addBindings(paramNameNode, fullPropsShape);
150
+ const body = func.getBody();
151
+ const reboundDeclarations = collectReboundDeclarations(body);
152
+ for (const declaration of reboundDeclarations) {
153
+ valueAliases.delete(declaration);
154
+ objectAliases.delete(declaration);
155
+ }
156
+ for (const declaration of body?.getDescendantsOfKind(SyntaxKind.VariableDeclaration) ?? []) {
157
+ if (!belongsToComponentFunction(declaration))
158
+ continue;
159
+ const initializer = declaration.getInitializer();
160
+ const declarationName = declaration.getNameNode();
161
+ if (Node.isIdentifier(declarationName)) {
162
+ const aliasDeclaration = getDeclarationIdentity(declarationName);
163
+ if (reboundDeclarations.has(aliasDeclaration))
164
+ continue;
165
+ const sourceProp = resolveValue(initializer);
166
+ if (sourceProp)
167
+ valueAliases.set(aliasDeclaration, sourceProp);
168
+ const sourceShape = resolveObject(initializer);
169
+ if (sourceShape)
170
+ objectAliases.set(aliasDeclaration, new Map(sourceShape));
171
+ }
172
+ else if (Node.isObjectBindingPattern(declarationName)) {
173
+ const sourceShape = resolveObject(initializer);
174
+ if (sourceShape) {
175
+ const hasInvalidatedBinding = declarationName
176
+ .getElements()
177
+ .some((element) => reboundDeclarations.has(getDeclarationIdentity(element.getNameNode())));
178
+ if (!hasInvalidatedBinding)
179
+ addBindings(declarationName, sourceShape);
180
+ }
181
+ }
182
+ }
183
+ const intrinsicDomProps = new Set();
184
+ const componentEdges = [];
185
+ const recordForwarding = (tagNameNode, targetProp, sourceProp) => {
186
+ const tagName = tagNameNode.getText();
187
+ if (isIntrinsicJsxElement(tagName)) {
188
+ if (targetProp === sourceProp)
189
+ intrinsicDomProps.add(sourceProp);
190
+ return;
191
+ }
192
+ const targetComponentIdentity = resolveForwardedComponentIdentity(tagNameNode);
193
+ if (targetComponentIdentity)
194
+ componentEdges.push({ sourceProp, targetComponentIdentity, targetProp });
195
+ };
196
+ for (const attribute of func.getDescendantsOfKind(SyntaxKind.JsxAttribute)) {
197
+ if (!belongsToComponentFunction(attribute))
198
+ continue;
199
+ const tagNameNode = getJsxTagNameNode(attribute);
200
+ if (!tagNameNode)
201
+ continue;
202
+ const initializer = attribute.getInitializer();
203
+ if (!initializer || !Node.isJsxExpression(initializer))
204
+ continue;
205
+ const sourceProp = resolveValue(initializer.getExpression());
206
+ if (sourceProp)
207
+ recordForwarding(tagNameNode, attribute.getNameNode().getText(), sourceProp);
208
+ }
209
+ for (const spread of func.getDescendantsOfKind(SyntaxKind.JsxSpreadAttribute)) {
210
+ if (!belongsToComponentFunction(spread))
211
+ continue;
212
+ const tagNameNode = getJsxTagNameNode(spread);
213
+ if (!tagNameNode)
214
+ continue;
215
+ const shape = resolveObject(spread.getExpression());
216
+ for (const [targetProp, sourceProp] of shape ?? [])
217
+ recordForwarding(tagNameNode, targetProp, sourceProp);
218
+ }
219
+ return { intrinsicDomProps, componentEdges };
220
+ }
@@ -0,0 +1,5 @@
1
+ import { type ParameterDeclaration } from 'ts-morph';
2
+ import type { FunctionLike } from './resolve-component-function.js';
3
+ import { collectRestBindingNames, isComponentSpreadAttribute, inferPrimitiveDomPropsFromImplementation } from './infer-primitive-dom-props.js';
4
+ export { collectRestBindingNames, isComponentSpreadAttribute, inferPrimitiveDomPropsFromImplementation };
5
+ export declare function hasImplementationChildrenHint(funcNode: FunctionLike, param: ParameterDeclaration): boolean;
@@ -0,0 +1,32 @@
1
+ import { Node, SyntaxKind } from 'ts-morph';
2
+ import { collectRestBindingNames, isComponentSpreadAttribute, inferPrimitiveDomPropsFromImplementation, } from './infer-primitive-dom-props.js';
3
+ export { collectRestBindingNames, isComponentSpreadAttribute, inferPrimitiveDomPropsFromImplementation };
4
+ export function hasImplementationChildrenHint(funcNode, param) {
5
+ const nameNode = param.getNameNode();
6
+ const body = funcNode.getBody();
7
+ if (!body)
8
+ return false;
9
+ if (Node.isObjectBindingPattern(nameNode)) {
10
+ for (const element of nameNode.getElements()) {
11
+ if (element.getNameNode().getText() === 'children')
12
+ return true;
13
+ }
14
+ const restBindingNames = collectRestBindingNames(nameNode);
15
+ if (restBindingNames.size === 0)
16
+ return false;
17
+ return body
18
+ .getDescendantsOfKind(SyntaxKind.JsxSpreadAttribute)
19
+ .some((attr) => isComponentSpreadAttribute(attr, restBindingNames));
20
+ }
21
+ if (!Node.isIdentifier(nameNode))
22
+ return false;
23
+ const paramName = nameNode.getText();
24
+ if (body
25
+ .getDescendantsOfKind(SyntaxKind.PropertyAccessExpression)
26
+ .some((expr) => expr.getExpression().getText() === paramName && expr.getName() === 'children')) {
27
+ return true;
28
+ }
29
+ return body
30
+ .getDescendantsOfKind(SyntaxKind.JsxSpreadAttribute)
31
+ .some((attr) => isComponentSpreadAttribute(attr, new Set([paramName])));
32
+ }
@@ -0,0 +1,2 @@
1
+ import { Node } from 'ts-morph';
2
+ export declare function isPureExpandableDomAttributeWrapperType(typeNode: Node): boolean;
@@ -0,0 +1,59 @@
1
+ import { Node } from 'ts-morph';
2
+ import { getTypeReferenceName, getNodeDefinitions } from '../../shared/helpers/tsx-shared.js';
3
+ import { getTypeReferenceTargetNode, getTypeReferenceArguments } from '../../shared/helpers/tsx-node-utils.js';
4
+ import { isExpandableDomAttributeWrapperName } from './dom-attribute-surfaces.js';
5
+ function isPureExpandableDomAttributeWrapperTypeNode(typeNode, seen = new Set()) {
6
+ if (seen.has(typeNode))
7
+ return false;
8
+ seen.add(typeNode);
9
+ if (Node.isParenthesizedTypeNode(typeNode) || Node.isTypeOperatorTypeNode(typeNode)) {
10
+ return isPureExpandableDomAttributeWrapperTypeNode(typeNode.getTypeNode(), seen);
11
+ }
12
+ if (Node.isIntersectionTypeNode(typeNode) || Node.isUnionTypeNode(typeNode)) {
13
+ const childTypes = typeNode.getTypeNodes();
14
+ return (childTypes.length > 0 && childTypes.every((child) => isPureExpandableDomAttributeWrapperTypeNode(child, seen)));
15
+ }
16
+ const typeReferenceTarget = getTypeReferenceTargetNode(typeNode);
17
+ if (typeReferenceTarget) {
18
+ const typeName = getTypeReferenceName(typeNode);
19
+ if (!typeName)
20
+ return false;
21
+ const typeArguments = getTypeReferenceArguments(typeNode);
22
+ if (isExpandableDomAttributeWrapperName(typeName))
23
+ return true;
24
+ if (typeName === 'Omit' ||
25
+ typeName === 'Partial' ||
26
+ typeName === 'Readonly' ||
27
+ typeName === 'Required' ||
28
+ typeName === 'NonNullable') {
29
+ const wrappedType = typeArguments[0];
30
+ return wrappedType ? isPureExpandableDomAttributeWrapperTypeNode(wrappedType, seen) : false;
31
+ }
32
+ if (typeName === 'Pick')
33
+ return false;
34
+ for (const definition of getNodeDefinitions(typeReferenceTarget)) {
35
+ const declaration = definition.getDeclarationNode();
36
+ if (!declaration)
37
+ continue;
38
+ if (Node.isInterfaceDeclaration(declaration)) {
39
+ if (declaration.getMembers().length > 0)
40
+ return false;
41
+ const heritageClauses = declaration.getHeritageClauses();
42
+ return (heritageClauses.length > 0 &&
43
+ heritageClauses.every((clause) => clause
44
+ .getTypeNodes()
45
+ .every((heritageTypeNode) => isPureExpandableDomAttributeWrapperTypeNode(heritageTypeNode, seen))));
46
+ }
47
+ if (Node.isTypeAliasDeclaration(declaration)) {
48
+ const aliasedTypeNode = declaration.getTypeNode();
49
+ if (!aliasedTypeNode)
50
+ return false;
51
+ return isPureExpandableDomAttributeWrapperTypeNode(aliasedTypeNode, seen);
52
+ }
53
+ }
54
+ }
55
+ return false;
56
+ }
57
+ export function isPureExpandableDomAttributeWrapperType(typeNode) {
58
+ return isPureExpandableDomAttributeWrapperTypeNode(typeNode);
59
+ }
@@ -0,0 +1,8 @@
1
+ import { Node } from 'ts-morph';
2
+ import type { RawPropDefinition } from '../../../types/component.js';
3
+ export { isPureExpandableDomAttributeWrapperType } from './detect-dom-is-pure-wrapper.js';
4
+ export { containsImportedOmitWrappedCustomProps } from './detect-omit-wrapped-custom-props.js';
5
+ export { containsSupportedDomPickType, containsAnyPickType, shouldMergeDomSyntaxExtraction, } from './detect-pick-type-patterns.js';
6
+ export { collectExpandableDomAttributeWrapperContexts, getStringLiteralTypeValues, } from './collect-dom-wrapper-contexts.js';
7
+ export declare function getSyntheticDomAttributeProps(typeNode: Node | undefined): RawPropDefinition[];
8
+ export declare function hasSyntheticDomChildren(typeNode: Node | undefined): boolean;
@@ -0,0 +1,29 @@
1
+ import { getDomAttributeSurface, DOM_ATTRIBUTE_WRAPPERS_WITH_SYNTHETIC_CHILDREN } from './dom-attribute-surfaces.js';
2
+ import { collectExpandableDomAttributeWrapperContexts } from './collect-dom-wrapper-contexts.js';
3
+ export { isPureExpandableDomAttributeWrapperType } from './detect-dom-is-pure-wrapper.js';
4
+ export { containsImportedOmitWrappedCustomProps } from './detect-omit-wrapped-custom-props.js';
5
+ export { containsSupportedDomPickType, containsAnyPickType, shouldMergeDomSyntaxExtraction, } from './detect-pick-type-patterns.js';
6
+ export { collectExpandableDomAttributeWrapperContexts, getStringLiteralTypeValues, } from './collect-dom-wrapper-contexts.js';
7
+ export function getSyntheticDomAttributeProps(typeNode) {
8
+ if (!typeNode)
9
+ return [];
10
+ const contexts = collectExpandableDomAttributeWrapperContexts(typeNode);
11
+ if (contexts.length === 0)
12
+ return [];
13
+ const propsByName = new Map();
14
+ for (const context of contexts) {
15
+ for (const prop of getDomAttributeSurface(context.name)) {
16
+ if (context.excludedProps.has(prop.name))
17
+ continue;
18
+ if (propsByName.has(prop.name))
19
+ continue;
20
+ propsByName.set(prop.name, prop);
21
+ }
22
+ }
23
+ return [...propsByName.values()].sort((a, b) => a.name.localeCompare(b.name));
24
+ }
25
+ export function hasSyntheticDomChildren(typeNode) {
26
+ if (!typeNode)
27
+ return false;
28
+ return collectExpandableDomAttributeWrapperContexts(typeNode).some((context) => DOM_ATTRIBUTE_WRAPPERS_WITH_SYNTHETIC_CHILDREN.has(context.name));
29
+ }
@@ -0,0 +1,2 @@
1
+ import { Node } from 'ts-morph';
2
+ export declare function containsImportedOmitWrappedCustomProps(typeNode: Node, seen?: Set<Node<import("ts-morph").ts.Node>>, originSourceFile?: import("ts-morph").SourceFile, sawOmit?: boolean): boolean;
@@ -0,0 +1,64 @@
1
+ import { Node } from 'ts-morph';
2
+ import { getTypeReferenceName, getTypeTargetDeclarations } from '../../shared/helpers/tsx-shared.js';
3
+ import { getTypeReferenceTargetNode } from '../../shared/helpers/tsx-node-utils.js';
4
+ import { isPureExpandableDomAttributeWrapperType } from './detect-dom-is-pure-wrapper.js';
5
+ export function containsImportedOmitWrappedCustomProps(typeNode, seen = new Set(), originSourceFile = typeNode.getSourceFile(), sawOmit = false) {
6
+ if (seen.has(typeNode))
7
+ return false;
8
+ seen.add(typeNode);
9
+ if (Node.isParenthesizedTypeNode(typeNode) || Node.isTypeOperatorTypeNode(typeNode)) {
10
+ return containsImportedOmitWrappedCustomProps(typeNode.getTypeNode(), seen, originSourceFile, sawOmit);
11
+ }
12
+ if (Node.isIntersectionTypeNode(typeNode) || Node.isUnionTypeNode(typeNode)) {
13
+ return typeNode
14
+ .getTypeNodes()
15
+ .some((child) => containsImportedOmitWrappedCustomProps(child, seen, originSourceFile, sawOmit));
16
+ }
17
+ if (Node.isTypeReference(typeNode) || Node.isExpressionWithTypeArguments(typeNode)) {
18
+ const typeName = getTypeReferenceName(typeNode);
19
+ if (!typeName)
20
+ return false;
21
+ if (typeName === 'PropsWithChildren') {
22
+ const wrappedType = typeNode.getTypeArguments()[0];
23
+ return wrappedType ? containsImportedOmitWrappedCustomProps(wrappedType, seen, originSourceFile, sawOmit) : false;
24
+ }
25
+ if (typeName === 'Omit') {
26
+ const wrappedType = typeNode.getTypeArguments()[0];
27
+ return wrappedType ? containsImportedOmitWrappedCustomProps(wrappedType, seen, originSourceFile, true) : false;
28
+ }
29
+ if (typeName === 'Partial' || typeName === 'Readonly' || typeName === 'Required' || typeName === 'NonNullable') {
30
+ const wrappedType = typeNode.getTypeArguments()[0];
31
+ return wrappedType ? containsImportedOmitWrappedCustomProps(wrappedType, seen, originSourceFile, sawOmit) : false;
32
+ }
33
+ const targetNode = getTypeReferenceTargetNode(typeNode);
34
+ for (const declaration of getTypeTargetDeclarations(targetNode, sawOmit)) {
35
+ if (!declaration)
36
+ continue;
37
+ const declarationSourceFile = declaration.getSourceFile();
38
+ const isImportedDeclaration = declarationSourceFile.getFilePath() !== originSourceFile.getFilePath();
39
+ if (sawOmit && isImportedDeclaration) {
40
+ const declarationTypeNode = Node.isTypeAliasDeclaration(declaration) ? declaration.getTypeNode() : declaration;
41
+ if (!declarationTypeNode || !isPureExpandableDomAttributeWrapperType(declarationTypeNode)) {
42
+ return true;
43
+ }
44
+ }
45
+ if (Node.isInterfaceDeclaration(declaration)) {
46
+ if (declaration
47
+ .getHeritageClauses()
48
+ .some((clause) => clause
49
+ .getTypeNodes()
50
+ .some((heritageTypeNode) => containsImportedOmitWrappedCustomProps(heritageTypeNode, seen, originSourceFile, sawOmit)))) {
51
+ return true;
52
+ }
53
+ }
54
+ if (Node.isTypeAliasDeclaration(declaration)) {
55
+ const aliasedTypeNode = declaration.getTypeNode();
56
+ if (aliasedTypeNode &&
57
+ containsImportedOmitWrappedCustomProps(aliasedTypeNode, seen, originSourceFile, sawOmit)) {
58
+ return true;
59
+ }
60
+ }
61
+ }
62
+ }
63
+ return false;
64
+ }
@@ -0,0 +1,4 @@
1
+ import { Node } from 'ts-morph';
2
+ export declare function containsSupportedDomPickType(typeNode: Node, seen?: Set<Node<import("ts-morph").ts.Node>>): boolean;
3
+ export declare function containsAnyPickType(typeNode: Node, seen?: Set<Node<import("ts-morph").ts.Node>>): boolean;
4
+ export declare function shouldMergeDomSyntaxExtraction(typeNode: Node): boolean;
@@ -0,0 +1,64 @@
1
+ import { Node } from 'ts-morph';
2
+ import { getTypeReferenceName, getTypeTargetDeclarations } from '../../shared/helpers/tsx-shared.js';
3
+ import { getTypeReferenceTargetNode, getTypeReferenceArguments } from '../../shared/helpers/tsx-node-utils.js';
4
+ import { collectExpandableDomAttributeWrapperContexts } from './detect-dom-type-patterns.js';
5
+ function containsPickType(typeNode, seen, mode) {
6
+ if (seen.has(typeNode))
7
+ return false;
8
+ seen.add(typeNode);
9
+ if (Node.isParenthesizedTypeNode(typeNode) || Node.isTypeOperatorTypeNode(typeNode)) {
10
+ return containsPickType(typeNode.getTypeNode(), seen, mode);
11
+ }
12
+ if (Node.isIntersectionTypeNode(typeNode) || Node.isUnionTypeNode(typeNode)) {
13
+ return typeNode.getTypeNodes().some((child) => containsPickType(child, seen, mode));
14
+ }
15
+ const typeReferenceTarget = getTypeReferenceTargetNode(typeNode);
16
+ if (!typeReferenceTarget)
17
+ return false;
18
+ const typeName = getTypeReferenceName(typeNode);
19
+ if (!typeName)
20
+ return false;
21
+ const typeArguments = getTypeReferenceArguments(typeNode);
22
+ if (typeName === 'Pick') {
23
+ if (mode === 'any')
24
+ return true;
25
+ const sourceTypeNode = typeArguments[0];
26
+ return sourceTypeNode
27
+ ? collectExpandableDomAttributeWrapperContexts(sourceTypeNode).length > 0 ||
28
+ containsPickType(sourceTypeNode, seen, mode)
29
+ : false;
30
+ }
31
+ const wrappedTypeNames = mode === 'any'
32
+ ? ['PropsWithChildren', 'Omit', 'Partial', 'Readonly', 'Required', 'NonNullable']
33
+ : ['Omit', 'Partial', 'Readonly', 'Required', 'NonNullable'];
34
+ if (wrappedTypeNames.includes(typeName)) {
35
+ const wrappedType = typeArguments[0];
36
+ return wrappedType ? containsPickType(wrappedType, seen, mode) : false;
37
+ }
38
+ for (const declaration of getTypeTargetDeclarations(typeReferenceTarget, mode === 'any')) {
39
+ if (!declaration)
40
+ continue;
41
+ if (Node.isInterfaceDeclaration(declaration)) {
42
+ if (declaration
43
+ .getHeritageClauses()
44
+ .some((clause) => clause.getTypeNodes().some((heritageTypeNode) => containsPickType(heritageTypeNode, seen, mode)))) {
45
+ return true;
46
+ }
47
+ }
48
+ if (Node.isTypeAliasDeclaration(declaration)) {
49
+ const aliasedTypeNode = declaration.getTypeNode();
50
+ if (aliasedTypeNode && containsPickType(aliasedTypeNode, seen, mode))
51
+ return true;
52
+ }
53
+ }
54
+ return false;
55
+ }
56
+ export function containsSupportedDomPickType(typeNode, seen = new Set()) {
57
+ return containsPickType(typeNode, seen, 'supported');
58
+ }
59
+ export function containsAnyPickType(typeNode, seen = new Set()) {
60
+ return containsPickType(typeNode, seen, 'any');
61
+ }
62
+ export function shouldMergeDomSyntaxExtraction(typeNode) {
63
+ return collectExpandableDomAttributeWrapperContexts(typeNode).length > 0 || containsSupportedDomPickType(typeNode);
64
+ }
@@ -0,0 +1,5 @@
1
+ import { Node } from 'ts-morph';
2
+ export declare const TRANSPARENT_POLYMORPHIC_TYPE_NAMES: Set<string>;
3
+ export declare function isRepoLocalTransparentPolymorphicWrapperDeclaration(declaration: Node, typeName: string): boolean;
4
+ export declare function unwrapRepoLocalTransparentPolymorphicWrapper(typeNode: Node, allowWorkspaceImportFallback: boolean): Node | undefined;
5
+ export declare function isRepoLocalSupportedPolymorphicChain(typeNode: Node, seen?: Set<Node<import("ts-morph").ts.Node>>, allowWorkspaceImportFallback?: boolean): boolean;