@memberjunction/react-test-harness 5.36.0 → 5.38.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 (342) hide show
  1. package/README.md +30 -0
  2. package/dist/cli/index.js +5 -1
  3. package/dist/cli/index.js.map +1 -1
  4. package/dist/index.d.ts +1 -5
  5. package/dist/index.d.ts.map +1 -1
  6. package/dist/index.js +10 -5
  7. package/dist/index.js.map +1 -1
  8. package/dist/lib/browser-context.d.ts +43 -0
  9. package/dist/lib/browser-context.d.ts.map +1 -1
  10. package/dist/lib/browser-context.js +87 -12
  11. package/dist/lib/browser-context.js.map +1 -1
  12. package/dist/lib/component-runner.d.ts +11 -22
  13. package/dist/lib/component-runner.d.ts.map +1 -1
  14. package/dist/lib/component-runner.js +1 -1
  15. package/dist/lib/component-runner.js.map +1 -1
  16. package/dist/lib/linter-test-tool.js +1 -1
  17. package/dist/lib/linter-test-tool.js.map +1 -1
  18. package/dist/lib/test-harness.d.ts +10 -0
  19. package/dist/lib/test-harness.d.ts.map +1 -1
  20. package/dist/lib/test-harness.js +10 -0
  21. package/dist/lib/test-harness.js.map +1 -1
  22. package/package.json +14 -13
  23. package/dist/lib/component-linter.d.ts +0 -77
  24. package/dist/lib/component-linter.d.ts.map +0 -1
  25. package/dist/lib/component-linter.js +0 -1205
  26. package/dist/lib/component-linter.js.map +0 -1
  27. package/dist/lib/control-flow-analyzer.d.ts +0 -184
  28. package/dist/lib/control-flow-analyzer.d.ts.map +0 -1
  29. package/dist/lib/control-flow-analyzer.js +0 -798
  30. package/dist/lib/control-flow-analyzer.js.map +0 -1
  31. package/dist/lib/library-lint-cache.d.ts +0 -50
  32. package/dist/lib/library-lint-cache.d.ts.map +0 -1
  33. package/dist/lib/library-lint-cache.js +0 -173
  34. package/dist/lib/library-lint-cache.js.map +0 -1
  35. package/dist/lib/lint-rule.d.ts +0 -70
  36. package/dist/lib/lint-rule.d.ts.map +0 -1
  37. package/dist/lib/lint-rule.js +0 -41
  38. package/dist/lib/lint-rule.js.map +0 -1
  39. package/dist/lib/lint-utils.d.ts +0 -131
  40. package/dist/lib/lint-utils.d.ts.map +0 -1
  41. package/dist/lib/lint-utils.js +0 -358
  42. package/dist/lib/lint-utils.js.map +0 -1
  43. package/dist/lib/prop-value-extractor.d.ts +0 -147
  44. package/dist/lib/prop-value-extractor.d.ts.map +0 -1
  45. package/dist/lib/prop-value-extractor.js +0 -472
  46. package/dist/lib/prop-value-extractor.js.map +0 -1
  47. package/dist/lib/runtime-rules/ai-tools-availability-check.d.ts +0 -9
  48. package/dist/lib/runtime-rules/ai-tools-availability-check.d.ts.map +0 -1
  49. package/dist/lib/runtime-rules/ai-tools-availability-check.js +0 -223
  50. package/dist/lib/runtime-rules/ai-tools-availability-check.js.map +0 -1
  51. package/dist/lib/runtime-rules/callback-event-validation.d.ts +0 -22
  52. package/dist/lib/runtime-rules/callback-event-validation.d.ts.map +0 -1
  53. package/dist/lib/runtime-rules/callback-event-validation.js +0 -561
  54. package/dist/lib/runtime-rules/callback-event-validation.js.map +0 -1
  55. package/dist/lib/runtime-rules/chart-field-validation.d.ts +0 -10
  56. package/dist/lib/runtime-rules/chart-field-validation.d.ts.map +0 -1
  57. package/dist/lib/runtime-rules/chart-field-validation.js +0 -270
  58. package/dist/lib/runtime-rules/chart-field-validation.js.map +0 -1
  59. package/dist/lib/runtime-rules/child-component-prop-validation.d.ts +0 -10
  60. package/dist/lib/runtime-rules/child-component-prop-validation.d.ts.map +0 -1
  61. package/dist/lib/runtime-rules/child-component-prop-validation.js +0 -443
  62. package/dist/lib/runtime-rules/child-component-prop-validation.js.map +0 -1
  63. package/dist/lib/runtime-rules/component-name-mismatch.d.ts +0 -19
  64. package/dist/lib/runtime-rules/component-name-mismatch.d.ts.map +0 -1
  65. package/dist/lib/runtime-rules/component-name-mismatch.js +0 -82
  66. package/dist/lib/runtime-rules/component-name-mismatch.js.map +0 -1
  67. package/dist/lib/runtime-rules/component-not-in-dependencies.d.ts +0 -20
  68. package/dist/lib/runtime-rules/component-not-in-dependencies.d.ts.map +0 -1
  69. package/dist/lib/runtime-rules/component-not-in-dependencies.js +0 -92
  70. package/dist/lib/runtime-rules/component-not-in-dependencies.js.map +0 -1
  71. package/dist/lib/runtime-rules/component-props-validation.d.ts +0 -25
  72. package/dist/lib/runtime-rules/component-props-validation.d.ts.map +0 -1
  73. package/dist/lib/runtime-rules/component-props-validation.js +0 -228
  74. package/dist/lib/runtime-rules/component-props-validation.js.map +0 -1
  75. package/dist/lib/runtime-rules/component-usage-without-destructuring.d.ts +0 -20
  76. package/dist/lib/runtime-rules/component-usage-without-destructuring.d.ts.map +0 -1
  77. package/dist/lib/runtime-rules/component-usage-without-destructuring.js +0 -124
  78. package/dist/lib/runtime-rules/component-usage-without-destructuring.js.map +0 -1
  79. package/dist/lib/runtime-rules/data-result-validation.d.ts +0 -9
  80. package/dist/lib/runtime-rules/data-result-validation.d.ts.map +0 -1
  81. package/dist/lib/runtime-rules/data-result-validation.js +0 -763
  82. package/dist/lib/runtime-rules/data-result-validation.js.map +0 -1
  83. package/dist/lib/runtime-rules/datagrid-field-validation.d.ts +0 -10
  84. package/dist/lib/runtime-rules/datagrid-field-validation.d.ts.map +0 -1
  85. package/dist/lib/runtime-rules/datagrid-field-validation.js +0 -249
  86. package/dist/lib/runtime-rules/datagrid-field-validation.js.map +0 -1
  87. package/dist/lib/runtime-rules/dependency-shadowing.d.ts +0 -20
  88. package/dist/lib/runtime-rules/dependency-shadowing.d.ts.map +0 -1
  89. package/dist/lib/runtime-rules/dependency-shadowing.js +0 -147
  90. package/dist/lib/runtime-rules/dependency-shadowing.js.map +0 -1
  91. package/dist/lib/runtime-rules/entity-field-access-validation.d.ts +0 -12
  92. package/dist/lib/runtime-rules/entity-field-access-validation.d.ts.map +0 -1
  93. package/dist/lib/runtime-rules/entity-field-access-validation.js +0 -304
  94. package/dist/lib/runtime-rules/entity-field-access-validation.js.map +0 -1
  95. package/dist/lib/runtime-rules/event-parameter-validation.d.ts +0 -22
  96. package/dist/lib/runtime-rules/event-parameter-validation.d.ts.map +0 -1
  97. package/dist/lib/runtime-rules/event-parameter-validation.js +0 -406
  98. package/dist/lib/runtime-rules/event-parameter-validation.js.map +0 -1
  99. package/dist/lib/runtime-rules/index.d.ts +0 -61
  100. package/dist/lib/runtime-rules/index.d.ts.map +0 -1
  101. package/dist/lib/runtime-rules/index.js +0 -62
  102. package/dist/lib/runtime-rules/index.js.map +0 -1
  103. package/dist/lib/runtime-rules/library-variable-names.d.ts +0 -24
  104. package/dist/lib/runtime-rules/library-variable-names.d.ts.map +0 -1
  105. package/dist/lib/runtime-rules/library-variable-names.js +0 -88
  106. package/dist/lib/runtime-rules/library-variable-names.js.map +0 -1
  107. package/dist/lib/runtime-rules/no-child-implementation.d.ts +0 -18
  108. package/dist/lib/runtime-rules/no-child-implementation.d.ts.map +0 -1
  109. package/dist/lib/runtime-rules/no-child-implementation.js +0 -57
  110. package/dist/lib/runtime-rules/no-child-implementation.js.map +0 -1
  111. package/dist/lib/runtime-rules/no-data-prop.d.ts +0 -22
  112. package/dist/lib/runtime-rules/no-data-prop.d.ts.map +0 -1
  113. package/dist/lib/runtime-rules/no-data-prop.js +0 -111
  114. package/dist/lib/runtime-rules/no-data-prop.js.map +0 -1
  115. package/dist/lib/runtime-rules/no-export-statements.d.ts +0 -18
  116. package/dist/lib/runtime-rules/no-export-statements.d.ts.map +0 -1
  117. package/dist/lib/runtime-rules/no-export-statements.js +0 -143
  118. package/dist/lib/runtime-rules/no-export-statements.js.map +0 -1
  119. package/dist/lib/runtime-rules/no-iife-wrapper.d.ts +0 -18
  120. package/dist/lib/runtime-rules/no-iife-wrapper.d.ts.map +0 -1
  121. package/dist/lib/runtime-rules/no-iife-wrapper.js +0 -217
  122. package/dist/lib/runtime-rules/no-iife-wrapper.js.map +0 -1
  123. package/dist/lib/runtime-rules/no-import-statements.d.ts +0 -18
  124. package/dist/lib/runtime-rules/no-import-statements.d.ts.map +0 -1
  125. package/dist/lib/runtime-rules/no-import-statements.js +0 -65
  126. package/dist/lib/runtime-rules/no-import-statements.js.map +0 -1
  127. package/dist/lib/runtime-rules/no-react-destructuring.d.ts +0 -18
  128. package/dist/lib/runtime-rules/no-react-destructuring.d.ts.map +0 -1
  129. package/dist/lib/runtime-rules/no-react-destructuring.js +0 -60
  130. package/dist/lib/runtime-rules/no-react-destructuring.js.map +0 -1
  131. package/dist/lib/runtime-rules/no-require-statements.d.ts +0 -18
  132. package/dist/lib/runtime-rules/no-require-statements.d.ts.map +0 -1
  133. package/dist/lib/runtime-rules/no-require-statements.js +0 -109
  134. package/dist/lib/runtime-rules/no-require-statements.js.map +0 -1
  135. package/dist/lib/runtime-rules/no-return-component.d.ts +0 -18
  136. package/dist/lib/runtime-rules/no-return-component.d.ts.map +0 -1
  137. package/dist/lib/runtime-rules/no-return-component.js +0 -106
  138. package/dist/lib/runtime-rules/no-return-component.js.map +0 -1
  139. package/dist/lib/runtime-rules/no-unwrap-utility-libs.d.ts +0 -20
  140. package/dist/lib/runtime-rules/no-unwrap-utility-libs.d.ts.map +0 -1
  141. package/dist/lib/runtime-rules/no-unwrap-utility-libs.js +0 -75
  142. package/dist/lib/runtime-rules/no-unwrap-utility-libs.js.map +0 -1
  143. package/dist/lib/runtime-rules/no-use-reducer.d.ts +0 -19
  144. package/dist/lib/runtime-rules/no-use-reducer.d.ts.map +0 -1
  145. package/dist/lib/runtime-rules/no-use-reducer.js +0 -78
  146. package/dist/lib/runtime-rules/no-use-reducer.js.map +0 -1
  147. package/dist/lib/runtime-rules/no-window-access.d.ts +0 -23
  148. package/dist/lib/runtime-rules/no-window-access.d.ts.map +0 -1
  149. package/dist/lib/runtime-rules/no-window-access.js +0 -136
  150. package/dist/lib/runtime-rules/no-window-access.js.map +0 -1
  151. package/dist/lib/runtime-rules/noisy-settings-updates.d.ts +0 -18
  152. package/dist/lib/runtime-rules/noisy-settings-updates.d.ts.map +0 -1
  153. package/dist/lib/runtime-rules/noisy-settings-updates.js +0 -110
  154. package/dist/lib/runtime-rules/noisy-settings-updates.js.map +0 -1
  155. package/dist/lib/runtime-rules/overflow-hidden-on-layout-container.d.ts +0 -30
  156. package/dist/lib/runtime-rules/overflow-hidden-on-layout-container.d.ts.map +0 -1
  157. package/dist/lib/runtime-rules/overflow-hidden-on-layout-container.js +0 -220
  158. package/dist/lib/runtime-rules/overflow-hidden-on-layout-container.js.map +0 -1
  159. package/dist/lib/runtime-rules/pass-standard-props.d.ts +0 -19
  160. package/dist/lib/runtime-rules/pass-standard-props.d.ts.map +0 -1
  161. package/dist/lib/runtime-rules/pass-standard-props.js +0 -82
  162. package/dist/lib/runtime-rules/pass-standard-props.js.map +0 -1
  163. package/dist/lib/runtime-rules/prefer-async-await.d.ts +0 -17
  164. package/dist/lib/runtime-rules/prefer-async-await.d.ts.map +0 -1
  165. package/dist/lib/runtime-rules/prefer-async-await.js +0 -52
  166. package/dist/lib/runtime-rules/prefer-async-await.js.map +0 -1
  167. package/dist/lib/runtime-rules/prefer-jsx-syntax.d.ts +0 -17
  168. package/dist/lib/runtime-rules/prefer-jsx-syntax.d.ts.map +0 -1
  169. package/dist/lib/runtime-rules/prefer-jsx-syntax.js +0 -51
  170. package/dist/lib/runtime-rules/prefer-jsx-syntax.js.map +0 -1
  171. package/dist/lib/runtime-rules/prop-state-sync.d.ts +0 -19
  172. package/dist/lib/runtime-rules/prop-state-sync.d.ts.map +0 -1
  173. package/dist/lib/runtime-rules/prop-state-sync.js +0 -76
  174. package/dist/lib/runtime-rules/prop-state-sync.js.map +0 -1
  175. package/dist/lib/runtime-rules/property-name-consistency.d.ts +0 -20
  176. package/dist/lib/runtime-rules/property-name-consistency.d.ts.map +0 -1
  177. package/dist/lib/runtime-rules/property-name-consistency.js +0 -172
  178. package/dist/lib/runtime-rules/property-name-consistency.js.map +0 -1
  179. package/dist/lib/runtime-rules/query-result-field-access-validation.d.ts +0 -10
  180. package/dist/lib/runtime-rules/query-result-field-access-validation.d.ts.map +0 -1
  181. package/dist/lib/runtime-rules/query-result-field-access-validation.js +0 -304
  182. package/dist/lib/runtime-rules/query-result-field-access-validation.js.map +0 -1
  183. package/dist/lib/runtime-rules/react-component-naming.d.ts +0 -19
  184. package/dist/lib/runtime-rules/react-component-naming.d.ts.map +0 -1
  185. package/dist/lib/runtime-rules/react-component-naming.js +0 -72
  186. package/dist/lib/runtime-rules/react-component-naming.js.map +0 -1
  187. package/dist/lib/runtime-rules/react-hooks-rules.d.ts +0 -27
  188. package/dist/lib/runtime-rules/react-hooks-rules.d.ts.map +0 -1
  189. package/dist/lib/runtime-rules/react-hooks-rules.js +0 -223
  190. package/dist/lib/runtime-rules/react-hooks-rules.js.map +0 -1
  191. package/dist/lib/runtime-rules/required-queries-not-called.d.ts +0 -19
  192. package/dist/lib/runtime-rules/required-queries-not-called.d.ts.map +0 -1
  193. package/dist/lib/runtime-rules/required-queries-not-called.js +0 -146
  194. package/dist/lib/runtime-rules/required-queries-not-called.js.map +0 -1
  195. package/dist/lib/runtime-rules/runquery-call-validation.d.ts +0 -11
  196. package/dist/lib/runtime-rules/runquery-call-validation.d.ts.map +0 -1
  197. package/dist/lib/runtime-rules/runquery-call-validation.js +0 -886
  198. package/dist/lib/runtime-rules/runquery-call-validation.js.map +0 -1
  199. package/dist/lib/runtime-rules/runview-call-validation.d.ts +0 -10
  200. package/dist/lib/runtime-rules/runview-call-validation.d.ts.map +0 -1
  201. package/dist/lib/runtime-rules/runview-call-validation.js +0 -336
  202. package/dist/lib/runtime-rules/runview-call-validation.js.map +0 -1
  203. package/dist/lib/runtime-rules/saved-user-settings-pattern.d.ts +0 -19
  204. package/dist/lib/runtime-rules/saved-user-settings-pattern.d.ts.map +0 -1
  205. package/dist/lib/runtime-rules/saved-user-settings-pattern.js +0 -90
  206. package/dist/lib/runtime-rules/saved-user-settings-pattern.js.map +0 -1
  207. package/dist/lib/runtime-rules/search-availability-check.d.ts +0 -9
  208. package/dist/lib/runtime-rules/search-availability-check.d.ts.map +0 -1
  209. package/dist/lib/runtime-rules/search-availability-check.js +0 -220
  210. package/dist/lib/runtime-rules/search-availability-check.js.map +0 -1
  211. package/dist/lib/runtime-rules/search-call-validation.d.ts +0 -9
  212. package/dist/lib/runtime-rules/search-call-validation.d.ts.map +0 -1
  213. package/dist/lib/runtime-rules/search-call-validation.js +0 -336
  214. package/dist/lib/runtime-rules/search-call-validation.js.map +0 -1
  215. package/dist/lib/runtime-rules/server-reload-on-client-operation.d.ts +0 -18
  216. package/dist/lib/runtime-rules/server-reload-on-client-operation.d.ts.map +0 -1
  217. package/dist/lib/runtime-rules/server-reload-on-client-operation.js +0 -107
  218. package/dist/lib/runtime-rules/server-reload-on-client-operation.js.map +0 -1
  219. package/dist/lib/runtime-rules/single-function-only.d.ts +0 -18
  220. package/dist/lib/runtime-rules/single-function-only.d.ts.map +0 -1
  221. package/dist/lib/runtime-rules/single-function-only.js +0 -103
  222. package/dist/lib/runtime-rules/single-function-only.js.map +0 -1
  223. package/dist/lib/runtime-rules/string-replace-all-occurrences.d.ts +0 -19
  224. package/dist/lib/runtime-rules/string-replace-all-occurrences.d.ts.map +0 -1
  225. package/dist/lib/runtime-rules/string-replace-all-occurrences.js +0 -109
  226. package/dist/lib/runtime-rules/string-replace-all-occurrences.js.map +0 -1
  227. package/dist/lib/runtime-rules/string-template-validation.d.ts +0 -22
  228. package/dist/lib/runtime-rules/string-template-validation.d.ts.map +0 -1
  229. package/dist/lib/runtime-rules/string-template-validation.js +0 -163
  230. package/dist/lib/runtime-rules/string-template-validation.js.map +0 -1
  231. package/dist/lib/runtime-rules/styles-validation.d.ts +0 -10
  232. package/dist/lib/runtime-rules/styles-validation.d.ts.map +0 -1
  233. package/dist/lib/runtime-rules/styles-validation.js +0 -153
  234. package/dist/lib/runtime-rules/styles-validation.js.map +0 -1
  235. package/dist/lib/runtime-rules/type-inference-errors.d.ts +0 -23
  236. package/dist/lib/runtime-rules/type-inference-errors.d.ts.map +0 -1
  237. package/dist/lib/runtime-rules/type-inference-errors.js +0 -53
  238. package/dist/lib/runtime-rules/type-inference-errors.js.map +0 -1
  239. package/dist/lib/runtime-rules/type-mismatch-operation.d.ts +0 -23
  240. package/dist/lib/runtime-rules/type-mismatch-operation.d.ts.map +0 -1
  241. package/dist/lib/runtime-rules/type-mismatch-operation.js +0 -141
  242. package/dist/lib/runtime-rules/type-mismatch-operation.js.map +0 -1
  243. package/dist/lib/runtime-rules/undefined-component-usage.d.ts +0 -20
  244. package/dist/lib/runtime-rules/undefined-component-usage.d.ts.map +0 -1
  245. package/dist/lib/runtime-rules/undefined-component-usage.js +0 -138
  246. package/dist/lib/runtime-rules/undefined-component-usage.js.map +0 -1
  247. package/dist/lib/runtime-rules/undefined-jsx-component.d.ts +0 -25
  248. package/dist/lib/runtime-rules/undefined-jsx-component.d.ts.map +0 -1
  249. package/dist/lib/runtime-rules/undefined-jsx-component.js +0 -269
  250. package/dist/lib/runtime-rules/undefined-jsx-component.js.map +0 -1
  251. package/dist/lib/runtime-rules/unsafe-array-operations.d.ts +0 -25
  252. package/dist/lib/runtime-rules/unsafe-array-operations.d.ts.map +0 -1
  253. package/dist/lib/runtime-rules/unsafe-array-operations.js +0 -347
  254. package/dist/lib/runtime-rules/unsafe-array-operations.js.map +0 -1
  255. package/dist/lib/runtime-rules/unsafe-formatting-methods.d.ts +0 -24
  256. package/dist/lib/runtime-rules/unsafe-formatting-methods.d.ts.map +0 -1
  257. package/dist/lib/runtime-rules/unsafe-formatting-methods.js +0 -277
  258. package/dist/lib/runtime-rules/unsafe-formatting-methods.js.map +0 -1
  259. package/dist/lib/runtime-rules/unused-component-dependencies.d.ts +0 -19
  260. package/dist/lib/runtime-rules/unused-component-dependencies.d.ts.map +0 -1
  261. package/dist/lib/runtime-rules/unused-component-dependencies.js +0 -90
  262. package/dist/lib/runtime-rules/unused-component-dependencies.js.map +0 -1
  263. package/dist/lib/runtime-rules/unused-libraries.d.ts +0 -19
  264. package/dist/lib/runtime-rules/unused-libraries.d.ts.map +0 -1
  265. package/dist/lib/runtime-rules/unused-libraries.js +0 -127
  266. package/dist/lib/runtime-rules/unused-libraries.js.map +0 -1
  267. package/dist/lib/runtime-rules/use-function-declaration.d.ts +0 -18
  268. package/dist/lib/runtime-rules/use-function-declaration.d.ts.map +0 -1
  269. package/dist/lib/runtime-rules/use-function-declaration.js +0 -127
  270. package/dist/lib/runtime-rules/use-function-declaration.js.map +0 -1
  271. package/dist/lib/runtime-rules/use-unwrap-components.d.ts +0 -19
  272. package/dist/lib/runtime-rules/use-unwrap-components.d.ts.map +0 -1
  273. package/dist/lib/runtime-rules/use-unwrap-components.js +0 -84
  274. package/dist/lib/runtime-rules/use-unwrap-components.js.map +0 -1
  275. package/dist/lib/runtime-rules/useeffect-unstable-dependencies.d.ts +0 -23
  276. package/dist/lib/runtime-rules/useeffect-unstable-dependencies.d.ts.map +0 -1
  277. package/dist/lib/runtime-rules/useeffect-unstable-dependencies.js +0 -215
  278. package/dist/lib/runtime-rules/useeffect-unstable-dependencies.js.map +0 -1
  279. package/dist/lib/runtime-rules/utilities-api-validation.d.ts +0 -24
  280. package/dist/lib/runtime-rules/utilities-api-validation.d.ts.map +0 -1
  281. package/dist/lib/runtime-rules/utilities-api-validation.js +0 -121
  282. package/dist/lib/runtime-rules/utilities-api-validation.js.map +0 -1
  283. package/dist/lib/runtime-rules/utilities-no-direct-instantiation.d.ts +0 -20
  284. package/dist/lib/runtime-rules/utilities-no-direct-instantiation.d.ts.map +0 -1
  285. package/dist/lib/runtime-rules/utilities-no-direct-instantiation.js +0 -58
  286. package/dist/lib/runtime-rules/utilities-no-direct-instantiation.js.map +0 -1
  287. package/dist/lib/runtime-rules/validate-component-references.d.ts +0 -19
  288. package/dist/lib/runtime-rules/validate-component-references.d.ts.map +0 -1
  289. package/dist/lib/runtime-rules/validate-component-references.js +0 -255
  290. package/dist/lib/runtime-rules/validate-component-references.js.map +0 -1
  291. package/dist/lib/schema-validation/component-prop-rule.d.ts +0 -125
  292. package/dist/lib/schema-validation/component-prop-rule.d.ts.map +0 -1
  293. package/dist/lib/schema-validation/component-prop-rule.js +0 -624
  294. package/dist/lib/schema-validation/component-prop-rule.js.map +0 -1
  295. package/dist/lib/schema-validation/index.d.ts +0 -26
  296. package/dist/lib/schema-validation/index.d.ts.map +0 -1
  297. package/dist/lib/schema-validation/index.js +0 -26
  298. package/dist/lib/schema-validation/index.js.map +0 -1
  299. package/dist/lib/schema-validation/semantic-validators/index.d.ts +0 -23
  300. package/dist/lib/schema-validation/semantic-validators/index.d.ts.map +0 -1
  301. package/dist/lib/schema-validation/semantic-validators/index.js +0 -23
  302. package/dist/lib/schema-validation/semantic-validators/index.js.map +0 -1
  303. package/dist/lib/schema-validation/semantic-validators/required-when-validator.d.ts +0 -43
  304. package/dist/lib/schema-validation/semantic-validators/required-when-validator.d.ts.map +0 -1
  305. package/dist/lib/schema-validation/semantic-validators/required-when-validator.js +0 -94
  306. package/dist/lib/schema-validation/semantic-validators/required-when-validator.js.map +0 -1
  307. package/dist/lib/schema-validation/semantic-validators/semantic-validator-registry.d.ts +0 -122
  308. package/dist/lib/schema-validation/semantic-validators/semantic-validator-registry.d.ts.map +0 -1
  309. package/dist/lib/schema-validation/semantic-validators/semantic-validator-registry.js +0 -166
  310. package/dist/lib/schema-validation/semantic-validators/semantic-validator-registry.js.map +0 -1
  311. package/dist/lib/schema-validation/semantic-validators/semantic-validator.d.ts +0 -260
  312. package/dist/lib/schema-validation/semantic-validators/semantic-validator.d.ts.map +0 -1
  313. package/dist/lib/schema-validation/semantic-validators/semantic-validator.js +0 -301
  314. package/dist/lib/schema-validation/semantic-validators/semantic-validator.js.map +0 -1
  315. package/dist/lib/schema-validation/semantic-validators/sql-where-clause-validator.d.ts +0 -115
  316. package/dist/lib/schema-validation/semantic-validators/sql-where-clause-validator.d.ts.map +0 -1
  317. package/dist/lib/schema-validation/semantic-validators/sql-where-clause-validator.js +0 -381
  318. package/dist/lib/schema-validation/semantic-validators/sql-where-clause-validator.js.map +0 -1
  319. package/dist/lib/schema-validation/semantic-validators/subset-of-entity-fields-validator.d.ts +0 -60
  320. package/dist/lib/schema-validation/semantic-validators/subset-of-entity-fields-validator.d.ts.map +0 -1
  321. package/dist/lib/schema-validation/semantic-validators/subset-of-entity-fields-validator.js +0 -195
  322. package/dist/lib/schema-validation/semantic-validators/subset-of-entity-fields-validator.js.map +0 -1
  323. package/dist/lib/schema-validation/semantic-validators/validation-context.d.ts +0 -335
  324. package/dist/lib/schema-validation/semantic-validators/validation-context.d.ts.map +0 -1
  325. package/dist/lib/schema-validation/semantic-validators/validation-context.js +0 -13
  326. package/dist/lib/schema-validation/semantic-validators/validation-context.js.map +0 -1
  327. package/dist/lib/styles-type-analyzer.d.ts +0 -64
  328. package/dist/lib/styles-type-analyzer.d.ts.map +0 -1
  329. package/dist/lib/styles-type-analyzer.js +0 -242
  330. package/dist/lib/styles-type-analyzer.js.map +0 -1
  331. package/dist/lib/type-context.d.ts +0 -184
  332. package/dist/lib/type-context.d.ts.map +0 -1
  333. package/dist/lib/type-context.js +0 -415
  334. package/dist/lib/type-context.js.map +0 -1
  335. package/dist/lib/type-inference-engine.d.ts +0 -181
  336. package/dist/lib/type-inference-engine.d.ts.map +0 -1
  337. package/dist/lib/type-inference-engine.js +0 -1151
  338. package/dist/lib/type-inference-engine.js.map +0 -1
  339. package/dist/lib/type-rules/type-compatibility-rule.d.ts +0 -79
  340. package/dist/lib/type-rules/type-compatibility-rule.d.ts.map +0 -1
  341. package/dist/lib/type-rules/type-compatibility-rule.js +0 -211
  342. package/dist/lib/type-rules/type-compatibility-rule.js.map +0 -1
@@ -1,624 +0,0 @@
1
- /**
2
- * Component Prop Rule - Unified component property validation
3
- *
4
- * This rule consolidates all component prop validation:
5
- * 1. Prop existence (from dependency-prop-validation)
6
- * 2. Required props checking
7
- * 3. Prop type validation (via TypeContext)
8
- * 4. Semantic constraint validation (via SemanticValidators)
9
- * 5. Unknown props warning
10
- *
11
- * @category schema
12
- * @severity high
13
- *
14
- * ## Rationale
15
- * Component props are the contract between components. This rule ensures:
16
- * - All required props are provided
17
- * - Prop types match expected types
18
- * - Prop values meet semantic constraints
19
- * - Unknown props are flagged (may be typos)
20
- *
21
- * ## Integration
22
- * - Uses SemanticValidatorRegistry for constraint validation
23
- * - Uses TypeInferenceEngine for type checking
24
- * - Uses ComponentMetadataEngine for dependency specs
25
- *
26
- * ## Phase 3 Consolidation
27
- * This rule merges:
28
- * - dependency-prop-validation (prop existence, required, types, unknown)
29
- * - validate-component-props (semantic constraint validation)
30
- */
31
- import _traverse from '@babel/traverse';
32
- const traverse = ((_traverse.default) ?? _traverse);
33
- import * as t from '@babel/types';
34
- import { ComponentMetadataEngineServer } from '@memberjunction/core-entities-server';
35
- import { PropValueExtractor } from '../prop-value-extractor.js';
36
- import { SemanticValidatorRegistry } from './semantic-validators/semantic-validator-registry.js';
37
- /**
38
- * ComponentPropRule - Validates all aspects of component property usage
39
- *
40
- * Validates:
41
- * 1. Props exist in component spec (schema validation)
42
- * 2. Required props are provided
43
- * 3. Prop types match expected types (via TypeContext)
44
- * 4. Semantic constraints are met (via SemanticValidators)
45
- * 5. Unknown props warning
46
- */
47
- export class ComponentPropRule {
48
- constructor() {
49
- this.name = 'component-props';
50
- this.appliesTo = 'all';
51
- // Standard props that are always allowed on any component
52
- this.standardProps = new Set([
53
- 'key',
54
- 'ref',
55
- 'className',
56
- 'style',
57
- 'id',
58
- 'data-testid',
59
- 'aria-label',
60
- 'aria-describedby',
61
- 'title',
62
- // Runtime props passed through to all components
63
- 'utilities',
64
- 'styles',
65
- 'components',
66
- 'callbacks',
67
- 'savedUserSettings',
68
- 'onSaveUserSettings',
69
- ]);
70
- // React special props
71
- this.reactSpecialProps = new Set(['children', 'dangerouslySetInnerHTML']);
72
- }
73
- /**
74
- * Validate component props
75
- */
76
- validate(ast, context) {
77
- this._sqlDialect = context.sqlDialect;
78
- const violations = [];
79
- // Skip if no dependencies
80
- if (!context.componentSpec?.dependencies || context.componentSpec.dependencies.length === 0) {
81
- return violations;
82
- }
83
- // Build a map of dependency components to their full specs
84
- const dependencySpecs = this.buildDependencySpecs(context.componentSpec);
85
- // Build validation context helpers from parent spec's dataRequirements
86
- const validationHelpers = this.buildValidationHelpers(context.componentSpec);
87
- // Traverse AST and validate each component usage
88
- traverse(ast, {
89
- JSXElement: (path) => {
90
- const openingElement = path.node.openingElement;
91
- const elementName = this.getElementName(openingElement);
92
- if (!elementName)
93
- return;
94
- // Get the spec for this dependency component
95
- const depSpec = dependencySpecs.get(elementName);
96
- if (!depSpec)
97
- return; // Not a dependency, skip
98
- // Get provided props
99
- const providedProps = this.getProvidedProps(openingElement);
100
- const providedPropNodes = this.getProvidedPropNodes(openingElement);
101
- // 1. Check required props
102
- violations.push(...this.validateRequiredProps(elementName, providedProps, depSpec, openingElement, path.node));
103
- // 2. Check prop types
104
- violations.push(...this.validatePropTypes(elementName, providedPropNodes, depSpec, context, openingElement));
105
- // 3. Check unknown props
106
- violations.push(...this.validateUnknownProps(elementName, providedProps, providedPropNodes, depSpec, openingElement));
107
- // 4. Run semantic validators (if component has constraints)
108
- violations.push(...this.validateSemanticConstraints(elementName, depSpec, openingElement, path, validationHelpers));
109
- },
110
- });
111
- return violations;
112
- }
113
- /**
114
- * Build map of dependency components to their full specs
115
- */
116
- buildDependencySpecs(componentSpec) {
117
- const dependencySpecs = new Map();
118
- for (const dep of componentSpec.dependencies || []) {
119
- if (dep && dep.name) {
120
- if (dep.location === 'registry') {
121
- // Try to load from registry
122
- const match = ComponentMetadataEngineServer.Instance.FindComponent(dep.name, dep.namespace, dep.registry);
123
- if (!match) {
124
- console.warn(`Dependency component not found in registry: ${dep.name} (${dep.namespace || 'no namespace'})`);
125
- }
126
- else {
127
- dependencySpecs.set(dep.name, match.spec);
128
- }
129
- }
130
- else {
131
- // Embedded dependencies have their spec inline
132
- dependencySpecs.set(dep.name, dep);
133
- }
134
- }
135
- else {
136
- console.warn(`Invalid dependency in component spec: ${dep?.name || 'unknown'}`);
137
- }
138
- }
139
- return dependencySpecs;
140
- }
141
- /**
142
- * Build validation context helpers from parent spec's dataRequirements
143
- */
144
- buildValidationHelpers(componentSpec) {
145
- const getEntityFields = (entityName) => {
146
- if (!componentSpec.dataRequirements?.entities)
147
- return [];
148
- const entity = componentSpec.dataRequirements.entities.find((e) => e.name === entityName);
149
- if (!entity)
150
- return [];
151
- // Prefer fieldMetadata if available (provides type info, allowsNull, isPrimaryKey, etc.)
152
- if (entity.fieldMetadata && Array.isArray(entity.fieldMetadata) && entity.fieldMetadata.length > 0) {
153
- return entity.fieldMetadata.map((f) => ({
154
- name: f.name,
155
- type: f.type || 'string',
156
- required: !f.allowsNull,
157
- allowedValues: f.possibleValues || undefined,
158
- isPrimaryKey: f.isPrimaryKey || false,
159
- }));
160
- }
161
- // Fallback: Collect all field names from display/filter/sort arrays
162
- const allFieldNames = new Set();
163
- if (entity.displayFields)
164
- entity.displayFields.forEach((f) => allFieldNames.add(f));
165
- if (entity.filterFields)
166
- entity.filterFields.forEach((f) => allFieldNames.add(f));
167
- if (entity.sortFields)
168
- entity.sortFields.forEach((f) => allFieldNames.add(f));
169
- // Convert to EntityFieldInfo format (we don't have type info from field name lists)
170
- return Array.from(allFieldNames).map((name) => ({
171
- name,
172
- type: 'string', // Unknown type from field name lists
173
- required: false,
174
- allowedValues: undefined,
175
- }));
176
- };
177
- const getEntityFieldType = (entityName, fieldName) => {
178
- const fields = getEntityFields(entityName);
179
- const field = fields.find((f) => f.name === fieldName);
180
- return field?.type || null;
181
- };
182
- const hasEntity = (entityName) => {
183
- if (!componentSpec.dataRequirements?.entities)
184
- return false;
185
- return componentSpec.dataRequirements.entities.some((e) => e.name === entityName);
186
- };
187
- const findSimilarFieldNames = (fieldName, entityName, maxResults) => {
188
- const fields = getEntityFields(entityName);
189
- const fieldNames = fields.map((f) => f.name);
190
- const similar = [];
191
- // Simple Levenshtein distance calculation
192
- const levenshtein = (a, b) => {
193
- const matrix = [];
194
- for (let i = 0; i <= b.length; i++)
195
- matrix[i] = [i];
196
- for (let j = 0; j <= a.length; j++)
197
- matrix[0][j] = j;
198
- for (let i = 1; i <= b.length; i++) {
199
- for (let j = 1; j <= a.length; j++) {
200
- if (b.charAt(i - 1) === a.charAt(j - 1)) {
201
- matrix[i][j] = matrix[i - 1][j - 1];
202
- }
203
- else {
204
- matrix[i][j] = Math.min(matrix[i - 1][j - 1] + 1, matrix[i][j - 1] + 1, matrix[i - 1][j] + 1);
205
- }
206
- }
207
- }
208
- return matrix[b.length][a.length];
209
- };
210
- for (const fn of fieldNames) {
211
- const distance = levenshtein(fieldName.toLowerCase(), fn.toLowerCase());
212
- if (distance <= 3) {
213
- similar.push({ name: fn, distance });
214
- }
215
- }
216
- similar.sort((a, b) => a.distance - b.distance);
217
- return similar.slice(0, maxResults || 3).map((s) => s.name);
218
- };
219
- return {
220
- getEntityFields,
221
- getEntityFieldType,
222
- hasEntity,
223
- findSimilarFieldNames,
224
- getQueryParameters: () => [],
225
- hasQuery: () => false,
226
- };
227
- }
228
- /**
229
- * Get element name from JSX opening element
230
- */
231
- getElementName(element) {
232
- if (t.isJSXIdentifier(element.name)) {
233
- return element.name.name;
234
- }
235
- else if (t.isJSXMemberExpression(element.name)) {
236
- // Handle cases like <components.EntityDataGrid> - skip for now
237
- return null;
238
- }
239
- return null;
240
- }
241
- /**
242
- * Get set of provided prop names
243
- */
244
- getProvidedProps(element) {
245
- const props = new Set();
246
- for (const attr of element.attributes) {
247
- if (t.isJSXAttribute(attr) && t.isJSXIdentifier(attr.name)) {
248
- props.add(attr.name.name);
249
- }
250
- }
251
- return props;
252
- }
253
- /**
254
- * Get map of provided prop names to their JSXAttribute nodes
255
- */
256
- getProvidedPropNodes(element) {
257
- const propNodes = new Map();
258
- for (const attr of element.attributes) {
259
- if (t.isJSXAttribute(attr) && t.isJSXIdentifier(attr.name)) {
260
- propNodes.set(attr.name.name, attr);
261
- }
262
- }
263
- return propNodes;
264
- }
265
- /**
266
- * Validate required props are provided
267
- */
268
- validateRequiredProps(elementName, providedProps, depSpec, openingElement, jsxElement) {
269
- const violations = [];
270
- // Get required props
271
- const requiredProps = [];
272
- if (depSpec.properties && Array.isArray(depSpec.properties)) {
273
- for (const prop of depSpec.properties) {
274
- if (prop && prop.name && prop.required === true) {
275
- requiredProps.push(prop.name);
276
- }
277
- }
278
- }
279
- // Check missing required props
280
- const missingRequired = requiredProps.filter((prop) => {
281
- // Special handling for 'children' prop
282
- if (prop === 'children') {
283
- // Check if JSX element has children nodes
284
- const hasChildren = jsxElement.children &&
285
- jsxElement.children.length > 0 &&
286
- jsxElement.children.some((child) => !t.isJSXText(child) || (t.isJSXText(child) && child.value.trim() !== ''));
287
- return !providedProps.has(prop) && !hasChildren;
288
- }
289
- return !providedProps.has(prop) && !this.standardProps.has(prop);
290
- });
291
- // Separate children warnings from other critical props
292
- const missingChildren = missingRequired.filter((prop) => prop === 'children');
293
- const missingOtherProps = missingRequired.filter((prop) => prop !== 'children');
294
- // Critical violation for non-children required props
295
- if (missingOtherProps.length > 0) {
296
- violations.push({
297
- rule: 'component-props',
298
- severity: 'critical',
299
- line: openingElement.loc?.start.line || 0,
300
- column: openingElement.loc?.start.column || 0,
301
- message: `Dependency component "${elementName}" is missing required props: ${missingOtherProps.join(', ')}. These props are marked as required in the component's specification.`,
302
- code: `<${elementName} ... />`,
303
- });
304
- }
305
- // Medium severity warning for missing children when required
306
- if (missingChildren.length > 0) {
307
- violations.push({
308
- rule: 'component-props',
309
- severity: 'medium',
310
- line: openingElement.loc?.start.line || 0,
311
- column: openingElement.loc?.start.column || 0,
312
- message: `Component "${elementName}" expects children but none were provided. The 'children' prop is marked as required in the component's specification.`,
313
- code: `<${elementName} ... />`,
314
- });
315
- }
316
- return violations;
317
- }
318
- /**
319
- * Validate prop types match expected types
320
- */
321
- validatePropTypes(elementName, providedPropNodes, depSpec, context, openingElement) {
322
- const violations = [];
323
- if (!depSpec.properties || !Array.isArray(depSpec.properties)) {
324
- return violations;
325
- }
326
- for (const [propName, attrNode] of providedPropNodes) {
327
- const propSpec = depSpec.properties.find((p) => p.name === propName);
328
- if (propSpec && propSpec.type) {
329
- const value = attrNode.value;
330
- if (value && t.isJSXExpressionContainer(value)) {
331
- const expr = value.expression;
332
- if (t.isJSXEmptyExpression(expr))
333
- continue;
334
- // Use type inference to get the actual type (works for literals AND variables)
335
- const actualType = this.getExpressionType(expr, context);
336
- // Skip if type is unknown (we can't prove it's wrong)
337
- if (actualType === 'unknown')
338
- continue;
339
- // Get the expected type (normalize it)
340
- const expectedType = propSpec.type.toLowerCase();
341
- // Check type compatibility
342
- const compatibility = this.checkTypeCompatibility(actualType, expectedType);
343
- if (!compatibility.compatible) {
344
- // Generate helpful message with variable name if it's an identifier
345
- let valueDesc = actualType;
346
- if (t.isIdentifier(expr)) {
347
- valueDesc = `variable "${expr.name}" (${actualType})`;
348
- }
349
- violations.push({
350
- rule: 'component-props',
351
- severity: 'high',
352
- line: attrNode.loc?.start.line || 0,
353
- column: attrNode.loc?.start.column || 0,
354
- message: `Prop "${propName}" on component "${elementName}" expects type "${compatibility.normalizedExpected}" but received ${valueDesc}.`,
355
- code: `${propName}={<${compatibility.normalizedExpected} value>}`,
356
- });
357
- }
358
- }
359
- }
360
- }
361
- return violations;
362
- }
363
- /**
364
- * Get the type of an expression
365
- */
366
- getExpressionType(expr, context) {
367
- // Try to infer type from literal values first
368
- if (t.isStringLiteral(expr) || t.isTemplateLiteral(expr)) {
369
- return 'string';
370
- }
371
- else if (t.isNumericLiteral(expr)) {
372
- return 'number';
373
- }
374
- else if (t.isBooleanLiteral(expr)) {
375
- return 'boolean';
376
- }
377
- else if (t.isArrayExpression(expr)) {
378
- return 'array';
379
- }
380
- else if (t.isObjectExpression(expr)) {
381
- return 'object';
382
- }
383
- else if (t.isArrowFunctionExpression(expr) || t.isFunctionExpression(expr)) {
384
- return 'function';
385
- }
386
- else if (t.isIdentifier(expr)) {
387
- // Try to get type from type engine
388
- if (context.typeEngine && context.typeEngine.getType) {
389
- const inferredType = context.typeEngine.getType(expr);
390
- if (inferredType && inferredType.kind) {
391
- return inferredType.kind;
392
- }
393
- }
394
- // Fallback to unknown
395
- return 'unknown';
396
- }
397
- else if (t.isMemberExpression(expr)) {
398
- // Try to get type from type engine
399
- if (context.typeEngine && context.typeEngine.getType) {
400
- const inferredType = context.typeEngine.getType(expr);
401
- if (inferredType && inferredType.kind) {
402
- return inferredType.kind;
403
- }
404
- }
405
- return 'unknown';
406
- }
407
- return 'unknown';
408
- }
409
- /**
410
- * Check if actual type is compatible with expected type
411
- */
412
- checkTypeCompatibility(actualType, expectedType) {
413
- let isCompatible = true;
414
- let normalizedExpected = expectedType;
415
- if (expectedType === 'string') {
416
- isCompatible = actualType === 'string';
417
- }
418
- else if (expectedType === 'number' || expectedType === 'int' || expectedType === 'integer' || expectedType === 'float') {
419
- isCompatible = actualType === 'number';
420
- normalizedExpected = 'number';
421
- }
422
- else if (expectedType === 'boolean' || expectedType === 'bool') {
423
- isCompatible = actualType === 'boolean';
424
- normalizedExpected = 'boolean';
425
- }
426
- else if (expectedType === 'array' || expectedType.startsWith('array<')) {
427
- isCompatible = actualType === 'array';
428
- normalizedExpected = 'array';
429
- }
430
- else if (expectedType === 'object') {
431
- // Objects, entity-rows, query-rows are all compatible with 'object'
432
- isCompatible = ['object', 'entity-row', 'query-row'].includes(actualType);
433
- }
434
- else if (expectedType === 'function') {
435
- isCompatible = actualType === 'function';
436
- }
437
- return { compatible: isCompatible, normalizedExpected };
438
- }
439
- /**
440
- * Validate unknown props (may be typos)
441
- */
442
- validateUnknownProps(elementName, providedProps, providedPropNodes, depSpec, openingElement) {
443
- const violations = [];
444
- // Build lists of valid props and events
445
- const specPropNames = depSpec.properties?.map((p) => p.name).filter(Boolean) || [];
446
- // Convert event names to their callback prop form (e.g., "dataPointClick" -> "onDataPointClick")
447
- const specEventNames = depSpec.events?.map((e) => e.name).filter(Boolean) || [];
448
- const specEventPropNames = specEventNames.map((name) => {
449
- // If the event already starts with "on", use it as-is
450
- if (name.startsWith('on') && name.length > 2 && name[2] === name[2].toUpperCase()) {
451
- return name;
452
- }
453
- // Otherwise, convert to "onEventName" format
454
- return `on${name.charAt(0).toUpperCase()}${name.slice(1)}`;
455
- });
456
- const allValidProps = [...specPropNames, ...specEventPropNames];
457
- // Check unknown props
458
- for (const passedProp of providedProps) {
459
- // Skip standard props and React special props
460
- if (this.standardProps.has(passedProp) || this.reactSpecialProps.has(passedProp)) {
461
- continue;
462
- }
463
- // Check if prop is valid (in properties or events)
464
- if (!allValidProps.includes(passedProp)) {
465
- // Try to find a close match using Levenshtein distance
466
- const suggestion = this.findClosestMatch(passedProp, allValidProps);
467
- const loc = providedPropNodes.get(passedProp);
468
- // Build informative message showing props and event handlers separately
469
- const propsListStr = specPropNames.length > 0 ? `Properties: ${specPropNames.join(', ')}` : '';
470
- const eventsListStr = specEventPropNames.length > 0 ? `Event handlers: ${specEventPropNames.join(', ')}` : '';
471
- const expectedListStr = [propsListStr, eventsListStr].filter(Boolean).join('. ') || 'none';
472
- if (suggestion) {
473
- violations.push({
474
- rule: 'component-props',
475
- severity: 'high',
476
- line: loc?.loc?.start.line || openingElement.loc?.start.line || 0,
477
- column: loc?.loc?.start.column || openingElement.loc?.start.column || 0,
478
- message: `Unknown prop '${passedProp}' passed to dependency component '${elementName}'. Did you mean '${suggestion}'?`,
479
- code: `${passedProp}={...}`,
480
- });
481
- }
482
- else {
483
- violations.push({
484
- rule: 'component-props',
485
- severity: 'medium',
486
- line: loc?.loc?.start.line || openingElement.loc?.start.line || 0,
487
- column: loc?.loc?.start.column || openingElement.loc?.start.column || 0,
488
- message: `Unknown prop '${passedProp}' passed to dependency component '${elementName}'. ${expectedListStr}.`,
489
- code: `${passedProp}={...}`,
490
- });
491
- }
492
- }
493
- }
494
- return violations;
495
- }
496
- /**
497
- * Find closest matching prop name using Levenshtein distance
498
- */
499
- findClosestMatch(target, candidates) {
500
- if (candidates.length === 0)
501
- return null;
502
- // Simple Levenshtein distance implementation
503
- function levenshtein(a, b) {
504
- const matrix = [];
505
- for (let i = 0; i <= b.length; i++) {
506
- matrix[i] = [i];
507
- }
508
- for (let j = 0; j <= a.length; j++) {
509
- matrix[0][j] = j;
510
- }
511
- for (let i = 1; i <= b.length; i++) {
512
- for (let j = 1; j <= a.length; j++) {
513
- if (b.charAt(i - 1) === a.charAt(j - 1)) {
514
- matrix[i][j] = matrix[i - 1][j - 1];
515
- }
516
- else {
517
- matrix[i][j] = Math.min(matrix[i - 1][j - 1] + 1, // substitution
518
- matrix[i][j - 1] + 1, // insertion
519
- matrix[i - 1][j] + 1);
520
- }
521
- }
522
- }
523
- return matrix[b.length][a.length];
524
- }
525
- let bestMatch = null;
526
- let bestDistance = Infinity;
527
- for (const candidate of candidates) {
528
- const distance = levenshtein(target.toLowerCase(), candidate.toLowerCase());
529
- // Only suggest if distance is reasonable (not too far off)
530
- if (distance < bestDistance && distance <= 3) {
531
- bestMatch = candidate;
532
- bestDistance = distance;
533
- }
534
- }
535
- return bestMatch;
536
- }
537
- /**
538
- * Validate semantic constraints on props
539
- */
540
- validateSemanticConstraints(elementName, depSpec, openingElement, path, validationHelpers) {
541
- const violations = [];
542
- // Check if this component has any properties with constraints
543
- if (!depSpec.properties)
544
- return violations;
545
- const hasConstraints = depSpec.properties.some((p) => p.constraints && p.constraints.length > 0);
546
- if (!hasConstraints)
547
- return violations;
548
- // Extract all props into a map for sibling prop lookups
549
- const siblingProps = new Map();
550
- for (const attr of openingElement.attributes) {
551
- if (t.isJSXAttribute(attr) && t.isJSXIdentifier(attr.name)) {
552
- const extractedValue = PropValueExtractor.extract(attr);
553
- siblingProps.set(attr.name.name, extractedValue);
554
- }
555
- }
556
- // Iterate through all properties with constraints
557
- for (const property of depSpec.properties) {
558
- if (!property.constraints || property.constraints.length === 0) {
559
- continue;
560
- }
561
- // Find the JSX attribute for this property
562
- const propAttr = openingElement.attributes.find((attr) => t.isJSXAttribute(attr) && t.isJSXIdentifier(attr.name) && attr.name.name === property.name);
563
- if (!propAttr || !t.isJSXAttribute(propAttr)) {
564
- continue;
565
- }
566
- // Extract the property value
567
- const propValue = PropValueExtractor.extract(propAttr);
568
- // Skip dynamic values
569
- if (PropValueExtractor.isDynamicValue(propValue)) {
570
- continue;
571
- }
572
- // Run all validators for this property's constraints
573
- for (const constraint of property.constraints) {
574
- // Get validator from registry
575
- const registry = SemanticValidatorRegistry.getInstance();
576
- const validator = registry.get(constraint.type);
577
- if (!validator) {
578
- // Validator not registered for this constraint type
579
- console.warn(`No validator registered for constraint type: ${constraint.type}`);
580
- continue;
581
- }
582
- // Build ValidationContext
583
- const validationCtx = {
584
- node: propAttr,
585
- path: path,
586
- componentName: elementName,
587
- componentSpec: depSpec,
588
- propertyName: property.name,
589
- propertyValue: propValue,
590
- siblingProps,
591
- entities: new Map(),
592
- queries: new Map(),
593
- typeEngine: null,
594
- dialect: this._sqlDialect,
595
- getEntityFields: validationHelpers.getEntityFields,
596
- getEntityFieldType: validationHelpers.getEntityFieldType,
597
- findSimilarFieldNames: validationHelpers.findSimilarFieldNames,
598
- getQueryParameters: validationHelpers.getQueryParameters,
599
- hasQuery: validationHelpers.hasQuery,
600
- hasEntity: validationHelpers.hasEntity,
601
- };
602
- // Run the validator
603
- try {
604
- const constraintViolations = validator.validate(validationCtx, constraint);
605
- for (const cv of constraintViolations) {
606
- violations.push({
607
- rule: 'component-props',
608
- severity: cv.severity,
609
- line: propAttr.loc?.start.line || 0,
610
- column: propAttr.loc?.start.column || 0,
611
- message: cv.message,
612
- code: cv.suggestion || '',
613
- });
614
- }
615
- }
616
- catch (error) {
617
- console.error(`Error validating ${property.name} constraint (${constraint.type}):`, error);
618
- }
619
- }
620
- }
621
- return violations;
622
- }
623
- }
624
- //# sourceMappingURL=component-prop-rule.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"component-prop-rule.js","sourceRoot":"","sources":["../../../src/lib/schema-validation/component-prop-rule.ts"],"names":[],"mappings":"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"}