@memberjunction/react-test-harness 5.37.0 → 5.39.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 +17 -22
  13. package/dist/lib/component-runner.d.ts.map +1 -1
  14. package/dist/lib/component-runner.js +46 -4
  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,304 +0,0 @@
1
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
- return c > 3 && r && Object.defineProperty(target, key, r), r;
6
- };
7
- import { traverse, createViolation, truncateCode, findClosestMatch, findCaseMismatch, NUMERIC_COERCION_FUNCTIONS, NON_ENTITY_PROPERTIES } from '../lint-utils.js';
8
- import * as t from '@babel/types';
9
- import { RegisterClass } from '@memberjunction/global';
10
- import { BaseLintRule } from '../lint-rule.js';
11
- import { TypeContext } from '../type-context.js';
12
- /**
13
- * Rule: entity-field-access-validation
14
- *
15
- * Validates field access on entity row variables using the shared TypeContext.
16
- * The TypeInferenceEngine populates variable types (including callback parameters
17
- * in .map/.filter/.reduce), so this rule simply checks every MemberExpression
18
- * whose object is typed as 'entity-row' and validates the property name.
19
- *
20
- * Catches:
21
- * - Nonexistent fields (high severity, with closest-match suggestion)
22
- * - Field name typos via Levenshtein distance (high severity)
23
- * - Case mismatches like `m.email` vs `m.Email` (medium severity)
24
- * - Type coercion on GUID fields like `parseInt(m.ID)` (medium severity)
25
- * - Optional chaining expressions like `m?.FieldName`
26
- *
27
- * Severity: high (nonexistent/typo), medium (case mismatch, type coercion)
28
- * Applies to: all components
29
- */
30
- /**
31
- * Looks up a variable's TypeInfo from the TypeContext, including scoped lookups.
32
- */
33
- function lookupVariableTypeInfo(varName, typeContext, path) {
34
- let varType = typeContext.getVariableType(varName);
35
- if (!varType || varType.type === 'unknown') {
36
- // Try with scope prefix from the path
37
- let current = path;
38
- while (current) {
39
- if (current.isFunction()) {
40
- let fnName;
41
- const node = current.node;
42
- if (t.isFunctionDeclaration(node) && node.id) {
43
- fnName = node.id.name;
44
- }
45
- else if (t.isArrowFunctionExpression(node) || t.isFunctionExpression(node)) {
46
- const parent = current.parent;
47
- if (t.isVariableDeclarator(parent) && t.isIdentifier(parent.id)) {
48
- fnName = parent.id.name;
49
- }
50
- }
51
- if (fnName) {
52
- varType = typeContext.getVariableType(`${fnName}:${varName}`);
53
- if (varType && varType.type !== 'unknown')
54
- break;
55
- }
56
- }
57
- current = current.parentPath;
58
- }
59
- }
60
- return varType ?? null;
61
- }
62
- /**
63
- * Resolves the variable name from a MemberExpression or OptionalMemberExpression.
64
- * Handles:
65
- * - Simple identifiers: `variable.Field`
66
- * - Scoped names: callback params in `.map()`, etc.
67
- * - Inline indexed access: `result.Results?.[0]?.Field` where [0] yields an entity/query row
68
- */
69
- function resolveVariableType(objectNode, typeContext, path) {
70
- // Case 1: Simple identifier — `variable.Field`
71
- if (t.isIdentifier(objectNode)) {
72
- const varType = lookupVariableTypeInfo(objectNode.name, typeContext, path);
73
- if (!varType)
74
- return null;
75
- if (varType.type === 'entity-row' && varType.entityName) {
76
- let fields = varType.fields;
77
- // If fields are missing (DB unavailable during type inference), try to
78
- // load from TypeContext cache or spec fieldMetadata
79
- if (!fields || fields.size === 0) {
80
- fields = typeContext.getEntityFieldTypesSync(varType.entityName);
81
- }
82
- if (fields && fields.size > 0) {
83
- return { entityName: varType.entityName, fields };
84
- }
85
- // Fields still empty — will be handled by the fieldMetadata fallback in the main rule logic
86
- return null;
87
- }
88
- if (varType.type === 'query-row' && varType.queryName) {
89
- let fields = varType.fields;
90
- if (!fields || fields.size === 0) {
91
- fields = typeContext.getQueryFieldTypes(varType.queryName) ?? undefined;
92
- }
93
- if (fields && fields.size > 0) {
94
- return { queryName: varType.queryName, entityName: varType.queryName, fields };
95
- }
96
- return null;
97
- }
98
- return null;
99
- }
100
- // Case 2: Indexed access on .Results — `result.Results?.[0]?.Field` or `result.Results[0].Field`
101
- // The object is a computed member/optional-member expression like `result.Results?.[0]`
102
- if ((t.isMemberExpression(objectNode) || t.isOptionalMemberExpression(objectNode)) && objectNode.computed) {
103
- const arrayExpr = objectNode.object;
104
- // arrayExpr should be `result.Results` or `result.Results?`
105
- if ((t.isMemberExpression(arrayExpr) || t.isOptionalMemberExpression(arrayExpr)) &&
106
- t.isIdentifier(arrayExpr.property) && arrayExpr.property.name === 'Results' &&
107
- t.isIdentifier(arrayExpr.object)) {
108
- const resultVarType = lookupVariableTypeInfo(arrayExpr.object.name, typeContext, path);
109
- if (resultVarType?.type === 'object') {
110
- // The .Results array's element type carries the entity/query row info
111
- if (resultVarType.entityName) {
112
- const entityFields = typeContext.getEntityFieldTypesSync(resultVarType.entityName);
113
- if (entityFields.size > 0) {
114
- return { entityName: resultVarType.entityName, fields: entityFields };
115
- }
116
- }
117
- if (resultVarType.queryName) {
118
- const queryFields = typeContext.getQueryFieldTypes(resultVarType.queryName);
119
- if (queryFields && queryFields.size > 0) {
120
- return { queryName: resultVarType.queryName, entityName: resultVarType.queryName, fields: queryFields };
121
- }
122
- }
123
- }
124
- }
125
- }
126
- return null;
127
- }
128
- let EntityFieldAccessValidationRule = class EntityFieldAccessValidationRule extends BaseLintRule {
129
- get Name() { return 'entity-field-access-validation'; }
130
- get AppliesTo() { return 'all'; }
131
- Test(ast, _componentName, componentSpec, _options, sharedTypeContext) {
132
- const violations = [];
133
- // Use shared TypeContext if available, otherwise create own (backward compat)
134
- const typeContext = sharedTypeContext ?? new TypeContext(componentSpec);
135
- // Pre-load entity field sets for validation.
136
- // Sources: 1) componentSpec.dataRequirements.entities, 2) entity names discovered
137
- // by the TypeInferenceEngine from RunView({ EntityName: '...' }) calls in code.
138
- const entityFieldSets = new Map();
139
- // Track entity names discovered in RunView calls for skip-with-warning
140
- const discoveredEntityNames = new Set();
141
- function ensureEntityFields(entityName) {
142
- if (entityFieldSets.has(entityName))
143
- return;
144
- const fields = typeContext.getEntityFieldTypesSync(entityName);
145
- if (fields.size > 0) {
146
- entityFieldSets.set(entityName, Array.from(fields.keys()));
147
- }
148
- }
149
- // Check if spec has fieldMetadata for a given entity
150
- function specHasFieldMetadata(entityName) {
151
- if (!componentSpec?.dataRequirements?.entities)
152
- return false;
153
- return componentSpec.dataRequirements.entities.some(e => e.name === entityName && e.fieldMetadata && e.fieldMetadata.length > 0);
154
- }
155
- // Load from spec if available
156
- if (componentSpec?.dataRequirements?.entities) {
157
- for (const entityReq of componentSpec.dataRequirements.entities) {
158
- ensureEntityFields(entityReq.name);
159
- if (!entityFieldSets.has(entityReq.name) && entityReq.fieldMetadata?.length) {
160
- entityFieldSets.set(entityReq.name, entityReq.fieldMetadata.map(f => f.name));
161
- }
162
- }
163
- }
164
- // Also discover entity names from RunView calls in the AST
165
- // (handles fixtures that don't have dataRequirements but do call RunView)
166
- traverse(ast, {
167
- CallExpression(p) {
168
- const callee = p.node.callee;
169
- if (t.isMemberExpression(callee) && t.isIdentifier(callee.property) && callee.property.name === 'RunView') {
170
- if (p.node.arguments.length > 0 && t.isObjectExpression(p.node.arguments[0])) {
171
- for (const prop of p.node.arguments[0].properties) {
172
- if (t.isObjectProperty(prop) && t.isIdentifier(prop.key) && prop.key.name === 'EntityName' && t.isStringLiteral(prop.value)) {
173
- discoveredEntityNames.add(prop.value.value);
174
- ensureEntityFields(prop.value.value);
175
- }
176
- }
177
- }
178
- }
179
- },
180
- noScope: true,
181
- });
182
- // Emit skip-with-warning for entities discovered in RunView calls but lacking metadata
183
- for (const entityName of discoveredEntityNames) {
184
- if (!entityFieldSets.has(entityName) && !specHasFieldMetadata(entityName)) {
185
- violations.push(createViolation('entity-field-access-validation', 'low', null, `Unable to validate field access on entity '${entityName}' — entity metadata not available. Ensure database connection or add fieldMetadata to dataRequirements for accurate validation.`, entityName));
186
- }
187
- }
188
- // Skip traversal only if there are no entity fields loaded AND no query fields
189
- // in the spec that could be resolved through inline expression type resolution
190
- const hasQueryFields = componentSpec?.dataRequirements?.queries?.some(q => (q.fields && q.fields.length > 0)) ?? false;
191
- if (entityFieldSets.size === 0 && !hasQueryFields)
192
- return violations;
193
- function validateFieldAccess(node, entityName, validFields, objectName, propertyName) {
194
- if (validFields.includes(propertyName))
195
- return;
196
- // Skip common DOM/React/JS properties — these are never entity fields
197
- // and would indicate a scope mismatch (variable shadowed by a different context)
198
- if (NON_ENTITY_PROPERTIES.has(propertyName))
199
- return;
200
- const caseFix = findCaseMismatch(propertyName, validFields);
201
- if (caseFix) {
202
- violations.push(createViolation('entity-field-access-validation', 'medium', node, `Field "${propertyName}" on entity "${entityName}" has incorrect casing. Did you mean "${caseFix}"?`, `${objectName}.${propertyName}`, { text: `Use the correct casing: "${caseFix}". MemberJunction entity fields use PascalCase.`,
203
- example: `// Change:\n${objectName}.${propertyName}\n// To:\n${objectName}.${caseFix}` }));
204
- return;
205
- }
206
- const closest = findClosestMatch(propertyName, validFields);
207
- const preview = validFields.slice(0, 10).join(', ');
208
- const more = validFields.length > 10 ? ` and ${validFields.length - 10} more` : '';
209
- violations.push(createViolation('entity-field-access-validation', 'high', node, closest
210
- ? `Field "${propertyName}" does not exist on entity "${entityName}". Did you mean "${closest}"? Available fields: ${preview}${more}`
211
- : `Field "${propertyName}" does not exist on entity "${entityName}". Available fields: ${preview}${more}`, `${objectName}.${propertyName}`, closest
212
- ? { text: `Replace "${propertyName}" with "${closest}".`, example: `${objectName}.${closest}` }
213
- : { text: `Use one of the valid fields from the "${entityName}" entity.` }));
214
- }
215
- /**
216
- * Gets the valid fields for a resolved entity/query, populating entityFieldSets
217
- * on-demand from resolved.fields when not already loaded (e.g., for query-row types
218
- * discovered via inline expressions).
219
- */
220
- function getValidFields(resolved) {
221
- let validFields = entityFieldSets.get(resolved.entityName);
222
- if (!validFields && resolved.fields.size > 0) {
223
- const fieldNames = Array.from(resolved.fields.keys());
224
- entityFieldSets.set(resolved.entityName, fieldNames);
225
- validFields = fieldNames;
226
- }
227
- return validFields;
228
- }
229
- // Traverse all member expressions and check entity-row typed variables
230
- traverse(ast, {
231
- MemberExpression(path) {
232
- if (path.node.computed || !t.isIdentifier(path.node.property))
233
- return;
234
- const propertyName = path.node.property.name;
235
- let resolved = resolveVariableType(path.node.object, typeContext, path);
236
- // Fallback: if we have an entity-row variable but resolveVariableType returned null
237
- // (fields unavailable from DB), try to get fields from entityFieldSets (populated from spec fieldMetadata)
238
- if (!resolved && t.isIdentifier(path.node.object)) {
239
- const varType = lookupVariableTypeInfo(path.node.object.name, typeContext, path);
240
- if (varType?.type === 'entity-row' && varType.entityName && entityFieldSets.has(varType.entityName)) {
241
- const fieldNames = entityFieldSets.get(varType.entityName);
242
- const fields = new Map(fieldNames.map(n => [n, { type: 'string', fromMetadata: false }]));
243
- resolved = { entityName: varType.entityName, fields };
244
- }
245
- }
246
- if (!resolved)
247
- return;
248
- const validFields = getValidFields(resolved);
249
- if (!validFields)
250
- return;
251
- const objectName = t.isIdentifier(path.node.object) ? path.node.object.name : '(expr)';
252
- validateFieldAccess(path.node, resolved.entityName, validFields, objectName, propertyName);
253
- },
254
- OptionalMemberExpression(path) {
255
- if (path.node.computed || !t.isIdentifier(path.node.property))
256
- return;
257
- const propertyName = path.node.property.name;
258
- let resolved = resolveVariableType(path.node.object, typeContext, path);
259
- // Same fallback for optional chaining
260
- if (!resolved && t.isIdentifier(path.node.object)) {
261
- const varType = lookupVariableTypeInfo(path.node.object.name, typeContext, path);
262
- if (varType?.type === 'entity-row' && varType.entityName && entityFieldSets.has(varType.entityName)) {
263
- const fieldNames = entityFieldSets.get(varType.entityName);
264
- const fields = new Map(fieldNames.map(n => [n, { type: 'string', fromMetadata: false }]));
265
- resolved = { entityName: varType.entityName, fields };
266
- }
267
- }
268
- if (!resolved)
269
- return;
270
- const validFields = getValidFields(resolved);
271
- if (!validFields)
272
- return;
273
- const objectName = t.isIdentifier(path.node.object) ? path.node.object.name : '(expr)';
274
- validateFieldAccess(path.node, resolved.entityName, validFields, objectName, propertyName);
275
- },
276
- // Check for numeric coercion on GUID fields
277
- CallExpression(path) {
278
- if (!t.isIdentifier(path.node.callee) || !NUMERIC_COERCION_FUNCTIONS.has(path.node.callee.name))
279
- return;
280
- if (path.node.arguments.length === 0)
281
- return;
282
- const arg = path.node.arguments[0];
283
- if (!t.isMemberExpression(arg) && !t.isOptionalMemberExpression(arg))
284
- return;
285
- if (arg.computed || !t.isIdentifier(arg.property) || !t.isIdentifier(arg.object))
286
- return;
287
- const resolved = resolveVariableType(arg.object, typeContext, path);
288
- if (!resolved)
289
- return;
290
- const fieldInfo = resolved.fields.get(arg.property.name);
291
- if (fieldInfo?.sqlType?.toLowerCase() === 'uniqueidentifier') {
292
- violations.push(createViolation('entity-field-access-validation', 'medium', path.node, `${path.node.callee.name}(${arg.object.name}.${arg.property.name}) coerces a uniqueidentifier (GUID) to a number. GUIDs are strings, not numeric values.`, truncateCode(`${path.node.callee.name}(${arg.object.name}.${arg.property.name})`), { text: `"${arg.property.name}" is a uniqueidentifier field. Use it as a string directly.`,
293
- example: `${arg.object.name}.${arg.property.name} // Already a string` }));
294
- }
295
- },
296
- });
297
- return violations;
298
- }
299
- };
300
- EntityFieldAccessValidationRule = __decorate([
301
- RegisterClass(BaseLintRule, 'entity-field-access-validation')
302
- ], EntityFieldAccessValidationRule);
303
- export { EntityFieldAccessValidationRule };
304
- //# sourceMappingURL=entity-field-access-validation.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"entity-field-access-validation.js","sourceRoot":"","sources":["../../../src/lib/runtime-rules/entity-field-access-validation.ts"],"names":[],"mappings":"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"}
@@ -1,22 +0,0 @@
1
- import * as t from '@babel/types';
2
- import { BaseLintRule } from '../lint-rule.js';
3
- import { Violation } from '../component-linter.js';
4
- import { ComponentSpec } from '@memberjunction/interactive-component-types';
5
- /**
6
- * Rule: event-parameter-validation
7
- *
8
- * Validates that event callback handlers access the correct properties from the
9
- * event object, as defined by the component spec's event parameter types.
10
- *
11
- * Catches LLM mistakes like using `e.data` (AG Grid convention) instead of
12
- * `e.record` (MJ DataGrid convention).
13
- *
14
- * Severity: high
15
- * Applies to: all components
16
- */
17
- export declare class EventParameterValidationRule extends BaseLintRule {
18
- get Name(): string;
19
- get AppliesTo(): 'all' | 'child' | 'root';
20
- Test(ast: t.File, _componentName: string, componentSpec?: ComponentSpec): Violation[];
21
- }
22
- //# sourceMappingURL=event-parameter-validation.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"event-parameter-validation.d.ts","sourceRoot":"","sources":["../../../src/lib/runtime-rules/event-parameter-validation.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,CAAC,MAAM,cAAc,CAAC;AAElC,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAkB,MAAM,6CAA6C,CAAC;AAI5F;;;;;;;;;;;GAWG;AACH,qBACa,4BAA6B,SAAQ,YAAY;IAC5D,IAAI,IAAI,WAAwB;IAChC,IAAI,SAAS,IAAI,KAAK,GAAG,OAAO,GAAG,MAAM,CAAkB;IAE3D,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,aAAa,GAAG,SAAS,EAAE;CAiBtF"}