@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,20 +0,0 @@
1
- import * as t from '@babel/types';
2
- import { BaseLintRule } from '../lint-rule.js';
3
- import { Violation } from '../component-linter.js';
4
- /**
5
- * Rule: property-name-consistency
6
- *
7
- * Detects property name mismatches when data is transformed (especially in map functions).
8
- * Ensures that accessed property names match the transformed property names, catching
9
- * common errors where properties are renamed during transformation but code still tries
10
- * to access them by the original name.
11
- *
12
- * Severity: critical (causes runtime errors or undefined values)
13
- * Applies to: all components
14
- */
15
- export declare class PropertyNameConsistencyRule extends BaseLintRule {
16
- get Name(): string;
17
- get AppliesTo(): 'all' | 'child' | 'root';
18
- Test(ast: t.File, _componentName: string): Violation[];
19
- }
20
- //# sourceMappingURL=property-name-consistency.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"property-name-consistency.d.ts","sourceRoot":"","sources":["../../../src/lib/runtime-rules/property-name-consistency.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;AAEhD;;;;;;;;;;GAUG;AACH,qBACa,2BAA4B,SAAQ,YAAY;IAC3D,IAAI,IAAI,WAA0C;IAClD,IAAI,SAAS,IAAI,KAAK,GAAG,OAAO,GAAG,MAAM,CAAkB;IAE3D,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,EAAE,cAAc,EAAE,MAAM,GAAG,SAAS,EAAE;CA8JvD"}
@@ -1,172 +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 } 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
- /**
12
- * Rule: property-name-consistency
13
- *
14
- * Detects property name mismatches when data is transformed (especially in map functions).
15
- * Ensures that accessed property names match the transformed property names, catching
16
- * common errors where properties are renamed during transformation but code still tries
17
- * to access them by the original name.
18
- *
19
- * Severity: critical (causes runtime errors or undefined values)
20
- * Applies to: all components
21
- */
22
- let PropertyNameConsistencyRule = class PropertyNameConsistencyRule extends BaseLintRule {
23
- get Name() { return 'property-name-consistency'; }
24
- get AppliesTo() { return 'all'; }
25
- Test(ast, _componentName) {
26
- const violations = [];
27
- const dataTransformations = new Map();
28
- const propertyAccesses = new Map(); // variable -> accessed properties
29
- // Track data transformations (especially in map functions)
30
- traverse(ast, {
31
- CallExpression(path) {
32
- // Look for array.map transformations
33
- if (t.isMemberExpression(path.node.callee) && t.isIdentifier(path.node.callee.property) && path.node.callee.property.name === 'map') {
34
- const mapArg = path.node.arguments[0];
35
- if (mapArg && (t.isArrowFunctionExpression(mapArg) || t.isFunctionExpression(mapArg))) {
36
- const param = mapArg.params[0];
37
- if (t.isIdentifier(param)) {
38
- const paramName = param.name;
39
- const originalProps = new Set();
40
- const transformedProps = new Set();
41
- // Check the return value
42
- let returnValue = null;
43
- if (t.isArrowFunctionExpression(mapArg)) {
44
- if (t.isObjectExpression(mapArg.body)) {
45
- returnValue = mapArg.body;
46
- }
47
- else if (t.isBlockStatement(mapArg.body)) {
48
- // Find return statement
49
- for (const stmt of mapArg.body.body) {
50
- if (t.isReturnStatement(stmt) && stmt.argument) {
51
- returnValue = stmt.argument;
52
- break;
53
- }
54
- }
55
- }
56
- }
57
- // Analyze object mapping
58
- if (returnValue && t.isObjectExpression(returnValue)) {
59
- for (const prop of returnValue.properties) {
60
- if (t.isObjectProperty(prop) && t.isIdentifier(prop.key)) {
61
- transformedProps.add(prop.key.name);
62
- // Check if value is a member expression from the parameter
63
- if (t.isMemberExpression(prop.value) &&
64
- t.isIdentifier(prop.value.object) &&
65
- prop.value.object.name === paramName &&
66
- t.isIdentifier(prop.value.property)) {
67
- originalProps.add(prop.value.property.name);
68
- }
69
- }
70
- }
71
- }
72
- // Store the transformation if we found property mappings
73
- if (transformedProps.size > 0) {
74
- // Find the variable being assigned
75
- let parentPath = path.parentPath;
76
- while (parentPath && !t.isVariableDeclarator(parentPath.node) && !t.isCallExpression(parentPath.node)) {
77
- parentPath = parentPath.parentPath;
78
- }
79
- if (parentPath && t.isCallExpression(parentPath.node)) {
80
- // Check for setState calls
81
- if (t.isIdentifier(parentPath.node.callee) && /^set[A-Z]/.test(parentPath.node.callee.name)) {
82
- const stateName = parentPath.node.callee.name.replace(/^set/, '');
83
- const varName = stateName.charAt(0).toLowerCase() + stateName.slice(1);
84
- dataTransformations.set(varName, {
85
- originalProps,
86
- transformedProps,
87
- location: {
88
- line: path.node.loc?.start.line || 0,
89
- column: path.node.loc?.start.column || 0,
90
- },
91
- });
92
- }
93
- }
94
- }
95
- }
96
- }
97
- }
98
- },
99
- // Track property accesses
100
- MemberExpression(path) {
101
- if (t.isIdentifier(path.node.object) && t.isIdentifier(path.node.property)) {
102
- const objName = path.node.object.name;
103
- const propName = path.node.property.name;
104
- if (!propertyAccesses.has(objName)) {
105
- propertyAccesses.set(objName, new Set());
106
- }
107
- propertyAccesses.get(objName).add(propName);
108
- }
109
- },
110
- });
111
- // Check for mismatches
112
- for (const [varName, transformation] of dataTransformations) {
113
- const accesses = propertyAccesses.get(varName);
114
- if (accesses) {
115
- for (const accessedProp of accesses) {
116
- // Check if accessed property exists in transformed props
117
- if (!transformation.transformedProps.has(accessedProp)) {
118
- // Check if it's trying to use original prop name
119
- const matchingOriginal = Array.from(transformation.originalProps).find((orig) => orig.toLowerCase() === accessedProp.toLowerCase());
120
- if (matchingOriginal) {
121
- // Find the transformed name
122
- const transformedName = Array.from(transformation.transformedProps).find((t) => t.toLowerCase() === accessedProp.toLowerCase());
123
- violations.push({
124
- rule: 'property-name-consistency',
125
- severity: 'critical',
126
- line: transformation.location.line,
127
- column: transformation.location.column,
128
- message: `Property name mismatch: data transformed with different casing. Accessing '${accessedProp}' but property was transformed to '${transformedName || 'different name'}'`,
129
- code: `Transform uses '${Array.from(transformation.transformedProps).join(', ')}' but code accesses '${accessedProp}'`,
130
- suggestion: {
131
- text: 'Maintain consistent property names when transforming data',
132
- example: `// ❌ WRONG - Transform to camelCase but access as PascalCase:
133
- setAccountData(results.map(item => ({
134
- accountName: item.AccountName, // camelCase
135
- annualRevenue: item.AnnualRevenue // camelCase
136
- })));
137
- // Later in render...
138
- <td>{account.AccountName}</td> // PascalCase - UNDEFINED!
139
- <td>{formatCurrency(account.AnnualRevenue)}</td> // Returns $NaN
140
-
141
- // ✅ CORRECT Option 1 - Keep original casing:
142
- setAccountData(results.map(item => ({
143
- AccountName: item.AccountName, // Keep PascalCase
144
- AnnualRevenue: item.AnnualRevenue // Keep PascalCase
145
- })));
146
- // Later in render...
147
- <td>{account.AccountName}</td> // Matches!
148
- <td>{formatCurrency(account.AnnualRevenue)}</td> // Works!
149
-
150
- // ✅ CORRECT Option 2 - Transform and use consistently:
151
- setAccountData(results.map(item => ({
152
- accountName: item.AccountName, // Transform to camelCase
153
- annualRevenue: item.AnnualRevenue // Transform to camelCase
154
- })));
155
- // Later in render...
156
- <td>{account.accountName}</td> // Use camelCase consistently
157
- <td>{formatCurrency(account.annualRevenue)}</td> // Works!`,
158
- },
159
- });
160
- }
161
- }
162
- }
163
- }
164
- }
165
- return violations;
166
- }
167
- };
168
- PropertyNameConsistencyRule = __decorate([
169
- RegisterClass(BaseLintRule, 'property-name-consistency')
170
- ], PropertyNameConsistencyRule);
171
- export { PropertyNameConsistencyRule };
172
- //# sourceMappingURL=property-name-consistency.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"property-name-consistency.js","sourceRoot":"","sources":["../../../src/lib/runtime-rules/property-name-consistency.ts"],"names":[],"mappings":"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"}
@@ -1,10 +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
- export declare class QueryResultFieldAccessValidationRule extends BaseLintRule {
6
- get Name(): string;
7
- get AppliesTo(): 'all' | 'child' | 'root';
8
- Test(ast: t.File, _componentName: string, componentSpec?: ComponentSpec): Violation[];
9
- }
10
- //# sourceMappingURL=query-result-field-access-validation.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"query-result-field-access-validation.d.ts","sourceRoot":"","sources":["../../../src/lib/runtime-rules/query-result-field-access-validation.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,CAAC,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD,OAAO,EAAE,aAAa,EAAE,MAAM,6CAA6C,CAAC;AAsE5E,qBACa,oCAAqC,SAAQ,YAAY;IACpE,IAAI,IAAI,WAAqD;IAC7D,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;CAuTtF"}
@@ -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 } from '../lint-utils.js';
8
- import { RegisterClass } from '@memberjunction/global';
9
- import * as t from '@babel/types';
10
- import { BaseLintRule } from '../lint-rule.js';
11
- import { TypeContext } from '../type-context.js';
12
- /**
13
- * Rule: query-result-field-access-validation
14
- *
15
- * Enhanced validation of field access on RunQuery results against spec fieldMetadata.
16
- * Catches:
17
- * - Nonexistent fields (high severity, with closest-match suggestion)
18
- * - Field name typos via Levenshtein distance (high severity)
19
- * - Case mismatches like `r.productname` vs `r.ProductName` (medium severity)
20
- * - Type coercion on GUID fields like `parseInt(r.ID)` (medium severity)
21
- * - Optional chaining expressions like `r?.FieldName`
22
- * - All array method callbacks: map, filter, reduce, sort, find, some, every, forEach
23
- *
24
- * Severity: high (nonexistent/typo), medium (case mismatch, type coercion)
25
- * Applies to: all components
26
- */
27
- /** Array methods whose callbacks receive row items as the first parameter */
28
- const ARRAY_METHODS = ['map', 'forEach', 'filter', 'find', 'some', 'every', 'reduce', 'sort', 'flatMap'];
29
- /**
30
- * Resolves the identifier being accessed through optional chaining or regular member access.
31
- * Returns { objectName, propertyName } or null if the pattern doesn't match.
32
- */
33
- function resolveMemberAccess(node) {
34
- if (node.computed)
35
- return null;
36
- if (!t.isIdentifier(node.property))
37
- return null;
38
- if (t.isIdentifier(node.object)) {
39
- return {
40
- objectName: node.object.name,
41
- propertyName: node.property.name,
42
- };
43
- }
44
- return null;
45
- }
46
- /**
47
- * Extracts the callback parameter name(s) for array iteration methods.
48
- * For `reduce`, the item is the second param. For `sort`, both are items.
49
- */
50
- function extractIterationParamNames(callback, methodName) {
51
- const params = [];
52
- if (methodName === 'reduce') {
53
- if (callback.params.length >= 2 && t.isIdentifier(callback.params[1])) {
54
- params.push(callback.params[1].name);
55
- }
56
- }
57
- else if (methodName === 'sort') {
58
- for (const param of callback.params) {
59
- if (t.isIdentifier(param)) {
60
- params.push(param.name);
61
- }
62
- }
63
- }
64
- else {
65
- if (callback.params.length >= 1 && t.isIdentifier(callback.params[0])) {
66
- params.push(callback.params[0].name);
67
- }
68
- }
69
- return params;
70
- }
71
- let QueryResultFieldAccessValidationRule = class QueryResultFieldAccessValidationRule extends BaseLintRule {
72
- get Name() { return 'query-result-field-access-validation'; }
73
- get AppliesTo() { return 'all'; }
74
- Test(ast, _componentName, componentSpec) {
75
- const violations = [];
76
- // Skip if no data requirements with queries
77
- if (!componentSpec?.dataRequirements?.queries || componentSpec.dataRequirements.queries.length === 0) {
78
- return violations;
79
- }
80
- // Build a map of query names to their valid field names and field types
81
- const queryFieldsMap = new Map();
82
- const queryFieldTypesMap = new Map(); // queryName -> fieldName -> sqlType
83
- const typeContext = new TypeContext(componentSpec);
84
- for (const queryReq of componentSpec.dataRequirements.queries) {
85
- // Try TypeContext first (uses cached query.fields)
86
- const fields = typeContext.getQueryFieldTypes(queryReq.name, queryReq.categoryPath);
87
- if (fields && fields.size > 0) {
88
- queryFieldsMap.set(queryReq.name, new Set(fields.keys()));
89
- const typeMap = new Map();
90
- for (const [name, info] of fields) {
91
- if (info.sqlType) {
92
- typeMap.set(name, info.sqlType);
93
- }
94
- }
95
- queryFieldTypesMap.set(queryReq.name, typeMap);
96
- }
97
- else if (queryReq.fields && queryReq.fields.length > 0) {
98
- // Fallback: use fields directly from spec
99
- queryFieldsMap.set(queryReq.name, new Set(queryReq.fields.map(f => f.name)));
100
- const typeMap = new Map();
101
- for (const f of queryReq.fields) {
102
- if (f.type) {
103
- typeMap.set(f.name, f.type);
104
- }
105
- }
106
- queryFieldTypesMap.set(queryReq.name, typeMap);
107
- }
108
- }
109
- // Emit skip-with-warning for queries that were declared but have no field metadata
110
- for (const queryReq of componentSpec.dataRequirements.queries) {
111
- if (!queryFieldsMap.has(queryReq.name)) {
112
- violations.push(createViolation('query-result-field-access-validation', 'low', null, `Unable to validate field access on query '${queryReq.name}' results — query field metadata not available. Add fields to dataRequirements.queries for accurate validation.`, queryReq.name));
113
- }
114
- }
115
- // If we couldn't load any query field metadata, skip further validation
116
- if (queryFieldsMap.size === 0) {
117
- return violations;
118
- }
119
- // Track RunQuery result variables: varName -> queryName
120
- const runQueryResultVars = new Map();
121
- // Track .Results arrays: varName -> queryName
122
- const queryArrayVars = new Map();
123
- /**
124
- * Validates a single field access on a query row variable.
125
- */
126
- function validateFieldAccess(node, paramName, queryName) {
127
- const access = resolveMemberAccess(node);
128
- if (!access || access.objectName !== paramName)
129
- return;
130
- const { propertyName } = access;
131
- const validFields = queryFieldsMap.get(queryName);
132
- if (!validFields)
133
- return;
134
- // Field exists — no violation
135
- if (validFields.has(propertyName))
136
- return;
137
- // Check for case mismatch first (medium severity)
138
- const caseFix = findCaseMismatch(propertyName, validFields);
139
- if (caseFix) {
140
- violations.push(createViolation('query-result-field-access-validation', 'medium', node, `Field "${propertyName}" on query "${queryName}" has incorrect casing. Did you mean "${caseFix}"?`, `${paramName}.${propertyName}`, {
141
- text: `Use the correct casing: "${caseFix}".`,
142
- example: `// Change:\n${paramName}.${propertyName}\n// To:\n${paramName}.${caseFix}`,
143
- }));
144
- return;
145
- }
146
- // Check for close typo via Levenshtein (high severity)
147
- const closest = findClosestMatch(propertyName, validFields);
148
- const availableFields = Array.from(validFields).slice(0, 10);
149
- const moreText = validFields.size > 10 ? ` and ${validFields.size - 10} more` : '';
150
- if (closest) {
151
- violations.push(createViolation('query-result-field-access-validation', 'high', node, `Field "${propertyName}" does not exist on query "${queryName}". Did you mean "${closest}"? Available fields: ${availableFields.join(', ')}${moreText}`, `${paramName}.${propertyName}`, {
152
- text: `Replace "${propertyName}" with "${closest}".`,
153
- example: `// Change:\n${paramName}.${propertyName}\n// To:\n${paramName}.${closest}`,
154
- }));
155
- }
156
- else {
157
- violations.push(createViolation('query-result-field-access-validation', 'high', node, `Field "${propertyName}" does not exist on query "${queryName}". Available fields: ${availableFields.join(', ')}${moreText}`, `${paramName}.${propertyName}`, {
158
- text: `Use one of the valid fields from the "${queryName}" query.`,
159
- }));
160
- }
161
- }
162
- /**
163
- * Checks for numeric coercion on GUID fields from query results.
164
- */
165
- function checkTypeCoercion(callNode, queryRowParams) {
166
- if (!t.isIdentifier(callNode.callee))
167
- return;
168
- if (!NUMERIC_COERCION_FUNCTIONS.has(callNode.callee.name))
169
- return;
170
- if (callNode.arguments.length === 0)
171
- return;
172
- const arg = callNode.arguments[0];
173
- if (!t.isMemberExpression(arg) && !t.isOptionalMemberExpression(arg))
174
- return;
175
- const access = resolveMemberAccess(arg);
176
- if (!access)
177
- return;
178
- const queryName = queryRowParams.get(access.objectName);
179
- if (!queryName)
180
- return;
181
- const typeMap = queryFieldTypesMap.get(queryName);
182
- const sqlType = typeMap?.get(access.propertyName);
183
- if (typeof sqlType === 'string' && sqlType.toLowerCase() === 'uniqueidentifier') {
184
- violations.push(createViolation('query-result-field-access-validation', 'medium', callNode, `${callNode.callee.name}(${access.objectName}.${access.propertyName}) coerces a uniqueidentifier (GUID) to a number. GUIDs are strings, not numeric values.`, truncateCode(`${callNode.callee.name}(${access.objectName}.${access.propertyName})`), {
185
- text: `"${access.propertyName}" is a uniqueidentifier field. Use it as a string directly.`,
186
- example: `// Instead of:\n${callNode.callee.name}(${access.objectName}.${access.propertyName})\n// Use:\n${access.objectName}.${access.propertyName} // Already a string`,
187
- }));
188
- }
189
- }
190
- /**
191
- * Walks a callback body, validating all field accesses on known query row params.
192
- */
193
- function validateCallbackBody(body, paramNames, queryName) {
194
- const queryRowParams = new Map();
195
- for (const p of paramNames) {
196
- queryRowParams.set(p, queryName);
197
- }
198
- traverse(body, {
199
- MemberExpression(innerPath) {
200
- const objName = t.isIdentifier(innerPath.node.object) ? innerPath.node.object.name : null;
201
- if (objName && queryRowParams.has(objName)) {
202
- validateFieldAccess(innerPath.node, objName, queryName);
203
- }
204
- },
205
- OptionalMemberExpression(innerPath) {
206
- const objName = t.isIdentifier(innerPath.node.object) ? innerPath.node.object.name : null;
207
- if (objName && queryRowParams.has(objName)) {
208
- validateFieldAccess(innerPath.node, objName, queryName);
209
- }
210
- },
211
- CallExpression(innerPath) {
212
- checkTypeCoercion(innerPath.node, queryRowParams);
213
- },
214
- noScope: true,
215
- });
216
- }
217
- // Main traversal
218
- traverse(ast, {
219
- VariableDeclarator(path) {
220
- if (!t.isIdentifier(path.node.id))
221
- return;
222
- const varName = path.node.id.name;
223
- const init = path.node.init;
224
- if (!init)
225
- return;
226
- // Detect: const result = await utilities.rq.RunQuery({ QueryName: '...' })
227
- if (t.isAwaitExpression(init) && t.isCallExpression(init.argument)) {
228
- const call = init.argument;
229
- if (t.isMemberExpression(call.callee) &&
230
- t.isMemberExpression(call.callee.object) &&
231
- t.isIdentifier(call.callee.property) &&
232
- call.callee.property.name === 'RunQuery') {
233
- if (call.arguments.length > 0 && t.isObjectExpression(call.arguments[0])) {
234
- for (const prop of call.arguments[0].properties) {
235
- if (t.isObjectProperty(prop) &&
236
- t.isIdentifier(prop.key) &&
237
- prop.key.name === 'QueryName' &&
238
- t.isStringLiteral(prop.value)) {
239
- runQueryResultVars.set(varName, prop.value.value);
240
- break;
241
- }
242
- }
243
- }
244
- }
245
- }
246
- // Detect: const rows = result.Results or const rows = result?.Results
247
- if (t.isMemberExpression(init) || t.isOptionalMemberExpression(init)) {
248
- if (t.isIdentifier(init.object) &&
249
- t.isIdentifier(init.property) &&
250
- init.property.name === 'Results') {
251
- const sourceVar = init.object.name;
252
- const queryName = runQueryResultVars.get(sourceVar);
253
- if (queryName) {
254
- queryArrayVars.set(varName, queryName);
255
- }
256
- }
257
- }
258
- },
259
- CallExpression(path) {
260
- if (!t.isMemberExpression(path.node.callee) &&
261
- !t.isOptionalMemberExpression(path.node.callee)) {
262
- return;
263
- }
264
- const callee = path.node.callee;
265
- if (!t.isIdentifier(callee.property))
266
- return;
267
- const methodName = callee.property.name;
268
- if (!ARRAY_METHODS.includes(methodName))
269
- return;
270
- let queryName;
271
- // .map() etc. on a tracked array variable
272
- if (t.isIdentifier(callee.object)) {
273
- queryName = queryArrayVars.get(callee.object.name);
274
- }
275
- // .Results.map() — direct chaining on result.Results or result?.Results
276
- if ((t.isMemberExpression(callee.object) || t.isOptionalMemberExpression(callee.object)) &&
277
- t.isIdentifier(callee.object.object) &&
278
- t.isIdentifier(callee.object.property) &&
279
- callee.object.property.name === 'Results') {
280
- queryName = runQueryResultVars.get(callee.object.object.name);
281
- }
282
- if (!queryName)
283
- return;
284
- if (path.node.arguments.length === 0)
285
- return;
286
- const callback = path.node.arguments[0];
287
- if (!t.isArrowFunctionExpression(callback) &&
288
- !t.isFunctionExpression(callback)) {
289
- return;
290
- }
291
- const paramNames = extractIterationParamNames(callback, methodName);
292
- if (paramNames.length === 0)
293
- return;
294
- validateCallbackBody(callback.body, paramNames, queryName);
295
- },
296
- });
297
- return violations;
298
- }
299
- };
300
- QueryResultFieldAccessValidationRule = __decorate([
301
- RegisterClass(BaseLintRule, 'query-result-field-access-validation')
302
- ], QueryResultFieldAccessValidationRule);
303
- export { QueryResultFieldAccessValidationRule };
304
- //# sourceMappingURL=query-result-field-access-validation.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"query-result-field-access-validation.js","sourceRoot":"","sources":["../../../src/lib/runtime-rules/query-result-field-access-validation.ts"],"names":[],"mappings":"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"}
@@ -1,19 +0,0 @@
1
- import * as t from '@babel/types';
2
- import { BaseLintRule } from '../lint-rule.js';
3
- import { Violation } from '../component-linter.js';
4
- /**
5
- * Rule: react-component-naming
6
- *
7
- * Ensures that React components follow naming conventions:
8
- * - Component names must start with an uppercase letter
9
- * - JSX treats lowercase as HTML elements
10
- *
11
- * Severity: critical
12
- * Applies to: all components
13
- */
14
- export declare class ReactComponentNamingRule extends BaseLintRule {
15
- get Name(): string;
16
- get AppliesTo(): 'all' | 'child' | 'root';
17
- Test(ast: t.File, componentName: string): Violation[];
18
- }
19
- //# sourceMappingURL=react-component-naming.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"react-component-naming.d.ts","sourceRoot":"","sources":["../../../src/lib/runtime-rules/react-component-naming.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,CAAC,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAGhD;;;;;;;;;GASG;AACH,qBACa,wBAAyB,SAAQ,YAAY;IACxD,IAAI,IAAI,WAAuC;IAC/C,IAAI,SAAS,IAAI,KAAK,GAAG,OAAO,GAAG,MAAM,CAAkB;IAE3D,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,EAAE,aAAa,EAAE,MAAM,GAAG,SAAS,EAAE;CAwEtD"}