@memberjunction/react-linter 0.0.1 → 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 (330) hide show
  1. package/dist/component-linter.d.ts +77 -0
  2. package/dist/component-linter.d.ts.map +1 -0
  3. package/dist/component-linter.js +1206 -0
  4. package/dist/component-linter.js.map +1 -0
  5. package/dist/control-flow-analyzer.d.ts +184 -0
  6. package/dist/control-flow-analyzer.d.ts.map +1 -0
  7. package/dist/control-flow-analyzer.js +798 -0
  8. package/dist/control-flow-analyzer.js.map +1 -0
  9. package/dist/index.d.ts +6 -0
  10. package/dist/index.d.ts.map +1 -0
  11. package/dist/index.js +8 -0
  12. package/dist/index.js.map +1 -0
  13. package/dist/library-lint-cache.d.ts +50 -0
  14. package/dist/library-lint-cache.d.ts.map +1 -0
  15. package/dist/library-lint-cache.js +173 -0
  16. package/dist/library-lint-cache.js.map +1 -0
  17. package/dist/lint-rule.d.ts +70 -0
  18. package/dist/lint-rule.d.ts.map +1 -0
  19. package/dist/lint-rule.js +30 -0
  20. package/dist/lint-rule.js.map +1 -0
  21. package/dist/lint-utils.d.ts +131 -0
  22. package/dist/lint-utils.d.ts.map +1 -0
  23. package/dist/lint-utils.js +358 -0
  24. package/dist/lint-utils.js.map +1 -0
  25. package/dist/linter-options.d.ts +51 -0
  26. package/dist/linter-options.d.ts.map +1 -0
  27. package/dist/linter-options.js +2 -0
  28. package/dist/linter-options.js.map +1 -0
  29. package/dist/prop-value-extractor.d.ts +147 -0
  30. package/dist/prop-value-extractor.d.ts.map +1 -0
  31. package/dist/prop-value-extractor.js +472 -0
  32. package/dist/prop-value-extractor.js.map +1 -0
  33. package/dist/runtime-rules/ai-tools-availability-check.d.ts +9 -0
  34. package/dist/runtime-rules/ai-tools-availability-check.d.ts.map +1 -0
  35. package/dist/runtime-rules/ai-tools-availability-check.js +223 -0
  36. package/dist/runtime-rules/ai-tools-availability-check.js.map +1 -0
  37. package/dist/runtime-rules/callback-event-validation.d.ts +22 -0
  38. package/dist/runtime-rules/callback-event-validation.d.ts.map +1 -0
  39. package/dist/runtime-rules/callback-event-validation.js +561 -0
  40. package/dist/runtime-rules/callback-event-validation.js.map +1 -0
  41. package/dist/runtime-rules/chart-field-validation.d.ts +10 -0
  42. package/dist/runtime-rules/chart-field-validation.d.ts.map +1 -0
  43. package/dist/runtime-rules/chart-field-validation.js +270 -0
  44. package/dist/runtime-rules/chart-field-validation.js.map +1 -0
  45. package/dist/runtime-rules/child-component-prop-validation.d.ts +11 -0
  46. package/dist/runtime-rules/child-component-prop-validation.d.ts.map +1 -0
  47. package/dist/runtime-rules/child-component-prop-validation.js +443 -0
  48. package/dist/runtime-rules/child-component-prop-validation.js.map +1 -0
  49. package/dist/runtime-rules/component-name-mismatch.d.ts +19 -0
  50. package/dist/runtime-rules/component-name-mismatch.d.ts.map +1 -0
  51. package/dist/runtime-rules/component-name-mismatch.js +82 -0
  52. package/dist/runtime-rules/component-name-mismatch.js.map +1 -0
  53. package/dist/runtime-rules/component-not-in-dependencies.d.ts +20 -0
  54. package/dist/runtime-rules/component-not-in-dependencies.d.ts.map +1 -0
  55. package/dist/runtime-rules/component-not-in-dependencies.js +92 -0
  56. package/dist/runtime-rules/component-not-in-dependencies.js.map +1 -0
  57. package/dist/runtime-rules/component-props-validation.d.ts +25 -0
  58. package/dist/runtime-rules/component-props-validation.d.ts.map +1 -0
  59. package/dist/runtime-rules/component-props-validation.js +228 -0
  60. package/dist/runtime-rules/component-props-validation.js.map +1 -0
  61. package/dist/runtime-rules/component-usage-without-destructuring.d.ts +20 -0
  62. package/dist/runtime-rules/component-usage-without-destructuring.d.ts.map +1 -0
  63. package/dist/runtime-rules/component-usage-without-destructuring.js +124 -0
  64. package/dist/runtime-rules/component-usage-without-destructuring.js.map +1 -0
  65. package/dist/runtime-rules/data-result-validation.d.ts +9 -0
  66. package/dist/runtime-rules/data-result-validation.d.ts.map +1 -0
  67. package/dist/runtime-rules/data-result-validation.js +763 -0
  68. package/dist/runtime-rules/data-result-validation.js.map +1 -0
  69. package/dist/runtime-rules/datagrid-field-validation.d.ts +10 -0
  70. package/dist/runtime-rules/datagrid-field-validation.d.ts.map +1 -0
  71. package/dist/runtime-rules/datagrid-field-validation.js +249 -0
  72. package/dist/runtime-rules/datagrid-field-validation.js.map +1 -0
  73. package/dist/runtime-rules/dependency-shadowing.d.ts +20 -0
  74. package/dist/runtime-rules/dependency-shadowing.d.ts.map +1 -0
  75. package/dist/runtime-rules/dependency-shadowing.js +147 -0
  76. package/dist/runtime-rules/dependency-shadowing.js.map +1 -0
  77. package/dist/runtime-rules/entity-field-access-validation.d.ts +12 -0
  78. package/dist/runtime-rules/entity-field-access-validation.d.ts.map +1 -0
  79. package/dist/runtime-rules/entity-field-access-validation.js +304 -0
  80. package/dist/runtime-rules/entity-field-access-validation.js.map +1 -0
  81. package/dist/runtime-rules/event-parameter-validation.d.ts +22 -0
  82. package/dist/runtime-rules/event-parameter-validation.d.ts.map +1 -0
  83. package/dist/runtime-rules/event-parameter-validation.js +406 -0
  84. package/dist/runtime-rules/event-parameter-validation.js.map +1 -0
  85. package/dist/runtime-rules/index.d.ts +61 -0
  86. package/dist/runtime-rules/index.d.ts.map +1 -0
  87. package/dist/runtime-rules/index.js +62 -0
  88. package/dist/runtime-rules/index.js.map +1 -0
  89. package/dist/runtime-rules/library-variable-names.d.ts +24 -0
  90. package/dist/runtime-rules/library-variable-names.d.ts.map +1 -0
  91. package/dist/runtime-rules/library-variable-names.js +88 -0
  92. package/dist/runtime-rules/library-variable-names.js.map +1 -0
  93. package/dist/runtime-rules/no-child-implementation.d.ts +18 -0
  94. package/dist/runtime-rules/no-child-implementation.d.ts.map +1 -0
  95. package/dist/runtime-rules/no-child-implementation.js +57 -0
  96. package/dist/runtime-rules/no-child-implementation.js.map +1 -0
  97. package/dist/runtime-rules/no-data-prop.d.ts +22 -0
  98. package/dist/runtime-rules/no-data-prop.d.ts.map +1 -0
  99. package/dist/runtime-rules/no-data-prop.js +111 -0
  100. package/dist/runtime-rules/no-data-prop.js.map +1 -0
  101. package/dist/runtime-rules/no-export-statements.d.ts +18 -0
  102. package/dist/runtime-rules/no-export-statements.d.ts.map +1 -0
  103. package/dist/runtime-rules/no-export-statements.js +143 -0
  104. package/dist/runtime-rules/no-export-statements.js.map +1 -0
  105. package/dist/runtime-rules/no-iife-wrapper.d.ts +18 -0
  106. package/dist/runtime-rules/no-iife-wrapper.d.ts.map +1 -0
  107. package/dist/runtime-rules/no-iife-wrapper.js +217 -0
  108. package/dist/runtime-rules/no-iife-wrapper.js.map +1 -0
  109. package/dist/runtime-rules/no-import-statements.d.ts +18 -0
  110. package/dist/runtime-rules/no-import-statements.d.ts.map +1 -0
  111. package/dist/runtime-rules/no-import-statements.js +65 -0
  112. package/dist/runtime-rules/no-import-statements.js.map +1 -0
  113. package/dist/runtime-rules/no-react-destructuring.d.ts +18 -0
  114. package/dist/runtime-rules/no-react-destructuring.d.ts.map +1 -0
  115. package/dist/runtime-rules/no-react-destructuring.js +60 -0
  116. package/dist/runtime-rules/no-react-destructuring.js.map +1 -0
  117. package/dist/runtime-rules/no-require-statements.d.ts +18 -0
  118. package/dist/runtime-rules/no-require-statements.d.ts.map +1 -0
  119. package/dist/runtime-rules/no-require-statements.js +109 -0
  120. package/dist/runtime-rules/no-require-statements.js.map +1 -0
  121. package/dist/runtime-rules/no-return-component.d.ts +18 -0
  122. package/dist/runtime-rules/no-return-component.d.ts.map +1 -0
  123. package/dist/runtime-rules/no-return-component.js +106 -0
  124. package/dist/runtime-rules/no-return-component.js.map +1 -0
  125. package/dist/runtime-rules/no-unwrap-utility-libs.d.ts +20 -0
  126. package/dist/runtime-rules/no-unwrap-utility-libs.d.ts.map +1 -0
  127. package/dist/runtime-rules/no-unwrap-utility-libs.js +75 -0
  128. package/dist/runtime-rules/no-unwrap-utility-libs.js.map +1 -0
  129. package/dist/runtime-rules/no-use-reducer.d.ts +19 -0
  130. package/dist/runtime-rules/no-use-reducer.d.ts.map +1 -0
  131. package/dist/runtime-rules/no-use-reducer.js +78 -0
  132. package/dist/runtime-rules/no-use-reducer.js.map +1 -0
  133. package/dist/runtime-rules/no-window-access.d.ts +23 -0
  134. package/dist/runtime-rules/no-window-access.d.ts.map +1 -0
  135. package/dist/runtime-rules/no-window-access.js +136 -0
  136. package/dist/runtime-rules/no-window-access.js.map +1 -0
  137. package/dist/runtime-rules/noisy-settings-updates.d.ts +18 -0
  138. package/dist/runtime-rules/noisy-settings-updates.d.ts.map +1 -0
  139. package/dist/runtime-rules/noisy-settings-updates.js +110 -0
  140. package/dist/runtime-rules/noisy-settings-updates.js.map +1 -0
  141. package/dist/runtime-rules/overflow-hidden-on-layout-container.d.ts +30 -0
  142. package/dist/runtime-rules/overflow-hidden-on-layout-container.d.ts.map +1 -0
  143. package/dist/runtime-rules/overflow-hidden-on-layout-container.js +220 -0
  144. package/dist/runtime-rules/overflow-hidden-on-layout-container.js.map +1 -0
  145. package/dist/runtime-rules/pass-standard-props.d.ts +19 -0
  146. package/dist/runtime-rules/pass-standard-props.d.ts.map +1 -0
  147. package/dist/runtime-rules/pass-standard-props.js +82 -0
  148. package/dist/runtime-rules/pass-standard-props.js.map +1 -0
  149. package/dist/runtime-rules/prefer-async-await.d.ts +17 -0
  150. package/dist/runtime-rules/prefer-async-await.d.ts.map +1 -0
  151. package/dist/runtime-rules/prefer-async-await.js +52 -0
  152. package/dist/runtime-rules/prefer-async-await.js.map +1 -0
  153. package/dist/runtime-rules/prefer-jsx-syntax.d.ts +17 -0
  154. package/dist/runtime-rules/prefer-jsx-syntax.d.ts.map +1 -0
  155. package/dist/runtime-rules/prefer-jsx-syntax.js +51 -0
  156. package/dist/runtime-rules/prefer-jsx-syntax.js.map +1 -0
  157. package/dist/runtime-rules/prop-state-sync.d.ts +19 -0
  158. package/dist/runtime-rules/prop-state-sync.d.ts.map +1 -0
  159. package/dist/runtime-rules/prop-state-sync.js +76 -0
  160. package/dist/runtime-rules/prop-state-sync.js.map +1 -0
  161. package/dist/runtime-rules/property-name-consistency.d.ts +20 -0
  162. package/dist/runtime-rules/property-name-consistency.d.ts.map +1 -0
  163. package/dist/runtime-rules/property-name-consistency.js +172 -0
  164. package/dist/runtime-rules/property-name-consistency.js.map +1 -0
  165. package/dist/runtime-rules/query-result-field-access-validation.d.ts +10 -0
  166. package/dist/runtime-rules/query-result-field-access-validation.d.ts.map +1 -0
  167. package/dist/runtime-rules/query-result-field-access-validation.js +304 -0
  168. package/dist/runtime-rules/query-result-field-access-validation.js.map +1 -0
  169. package/dist/runtime-rules/react-component-naming.d.ts +19 -0
  170. package/dist/runtime-rules/react-component-naming.d.ts.map +1 -0
  171. package/dist/runtime-rules/react-component-naming.js +72 -0
  172. package/dist/runtime-rules/react-component-naming.js.map +1 -0
  173. package/dist/runtime-rules/react-hooks-rules.d.ts +27 -0
  174. package/dist/runtime-rules/react-hooks-rules.d.ts.map +1 -0
  175. package/dist/runtime-rules/react-hooks-rules.js +223 -0
  176. package/dist/runtime-rules/react-hooks-rules.js.map +1 -0
  177. package/dist/runtime-rules/required-queries-not-called.d.ts +19 -0
  178. package/dist/runtime-rules/required-queries-not-called.d.ts.map +1 -0
  179. package/dist/runtime-rules/required-queries-not-called.js +146 -0
  180. package/dist/runtime-rules/required-queries-not-called.js.map +1 -0
  181. package/dist/runtime-rules/runquery-call-validation.d.ts +11 -0
  182. package/dist/runtime-rules/runquery-call-validation.d.ts.map +1 -0
  183. package/dist/runtime-rules/runquery-call-validation.js +886 -0
  184. package/dist/runtime-rules/runquery-call-validation.js.map +1 -0
  185. package/dist/runtime-rules/runview-call-validation.d.ts +10 -0
  186. package/dist/runtime-rules/runview-call-validation.d.ts.map +1 -0
  187. package/dist/runtime-rules/runview-call-validation.js +336 -0
  188. package/dist/runtime-rules/runview-call-validation.js.map +1 -0
  189. package/dist/runtime-rules/saved-user-settings-pattern.d.ts +19 -0
  190. package/dist/runtime-rules/saved-user-settings-pattern.d.ts.map +1 -0
  191. package/dist/runtime-rules/saved-user-settings-pattern.js +90 -0
  192. package/dist/runtime-rules/saved-user-settings-pattern.js.map +1 -0
  193. package/dist/runtime-rules/search-availability-check.d.ts +9 -0
  194. package/dist/runtime-rules/search-availability-check.d.ts.map +1 -0
  195. package/dist/runtime-rules/search-availability-check.js +220 -0
  196. package/dist/runtime-rules/search-availability-check.js.map +1 -0
  197. package/dist/runtime-rules/search-call-validation.d.ts +9 -0
  198. package/dist/runtime-rules/search-call-validation.d.ts.map +1 -0
  199. package/dist/runtime-rules/search-call-validation.js +336 -0
  200. package/dist/runtime-rules/search-call-validation.js.map +1 -0
  201. package/dist/runtime-rules/server-reload-on-client-operation.d.ts +18 -0
  202. package/dist/runtime-rules/server-reload-on-client-operation.d.ts.map +1 -0
  203. package/dist/runtime-rules/server-reload-on-client-operation.js +107 -0
  204. package/dist/runtime-rules/server-reload-on-client-operation.js.map +1 -0
  205. package/dist/runtime-rules/single-function-only.d.ts +18 -0
  206. package/dist/runtime-rules/single-function-only.d.ts.map +1 -0
  207. package/dist/runtime-rules/single-function-only.js +103 -0
  208. package/dist/runtime-rules/single-function-only.js.map +1 -0
  209. package/dist/runtime-rules/string-replace-all-occurrences.d.ts +19 -0
  210. package/dist/runtime-rules/string-replace-all-occurrences.d.ts.map +1 -0
  211. package/dist/runtime-rules/string-replace-all-occurrences.js +109 -0
  212. package/dist/runtime-rules/string-replace-all-occurrences.js.map +1 -0
  213. package/dist/runtime-rules/string-template-validation.d.ts +22 -0
  214. package/dist/runtime-rules/string-template-validation.d.ts.map +1 -0
  215. package/dist/runtime-rules/string-template-validation.js +163 -0
  216. package/dist/runtime-rules/string-template-validation.js.map +1 -0
  217. package/dist/runtime-rules/styles-validation.d.ts +10 -0
  218. package/dist/runtime-rules/styles-validation.d.ts.map +1 -0
  219. package/dist/runtime-rules/styles-validation.js +153 -0
  220. package/dist/runtime-rules/styles-validation.js.map +1 -0
  221. package/dist/runtime-rules/type-inference-errors.d.ts +23 -0
  222. package/dist/runtime-rules/type-inference-errors.d.ts.map +1 -0
  223. package/dist/runtime-rules/type-inference-errors.js +53 -0
  224. package/dist/runtime-rules/type-inference-errors.js.map +1 -0
  225. package/dist/runtime-rules/type-mismatch-operation.d.ts +23 -0
  226. package/dist/runtime-rules/type-mismatch-operation.d.ts.map +1 -0
  227. package/dist/runtime-rules/type-mismatch-operation.js +145 -0
  228. package/dist/runtime-rules/type-mismatch-operation.js.map +1 -0
  229. package/dist/runtime-rules/undefined-component-usage.d.ts +20 -0
  230. package/dist/runtime-rules/undefined-component-usage.d.ts.map +1 -0
  231. package/dist/runtime-rules/undefined-component-usage.js +138 -0
  232. package/dist/runtime-rules/undefined-component-usage.js.map +1 -0
  233. package/dist/runtime-rules/undefined-jsx-component.d.ts +25 -0
  234. package/dist/runtime-rules/undefined-jsx-component.d.ts.map +1 -0
  235. package/dist/runtime-rules/undefined-jsx-component.js +269 -0
  236. package/dist/runtime-rules/undefined-jsx-component.js.map +1 -0
  237. package/dist/runtime-rules/unsafe-array-operations.d.ts +25 -0
  238. package/dist/runtime-rules/unsafe-array-operations.d.ts.map +1 -0
  239. package/dist/runtime-rules/unsafe-array-operations.js +347 -0
  240. package/dist/runtime-rules/unsafe-array-operations.js.map +1 -0
  241. package/dist/runtime-rules/unsafe-formatting-methods.d.ts +24 -0
  242. package/dist/runtime-rules/unsafe-formatting-methods.d.ts.map +1 -0
  243. package/dist/runtime-rules/unsafe-formatting-methods.js +277 -0
  244. package/dist/runtime-rules/unsafe-formatting-methods.js.map +1 -0
  245. package/dist/runtime-rules/unused-component-dependencies.d.ts +19 -0
  246. package/dist/runtime-rules/unused-component-dependencies.d.ts.map +1 -0
  247. package/dist/runtime-rules/unused-component-dependencies.js +90 -0
  248. package/dist/runtime-rules/unused-component-dependencies.js.map +1 -0
  249. package/dist/runtime-rules/unused-libraries.d.ts +19 -0
  250. package/dist/runtime-rules/unused-libraries.d.ts.map +1 -0
  251. package/dist/runtime-rules/unused-libraries.js +127 -0
  252. package/dist/runtime-rules/unused-libraries.js.map +1 -0
  253. package/dist/runtime-rules/use-function-declaration.d.ts +18 -0
  254. package/dist/runtime-rules/use-function-declaration.d.ts.map +1 -0
  255. package/dist/runtime-rules/use-function-declaration.js +127 -0
  256. package/dist/runtime-rules/use-function-declaration.js.map +1 -0
  257. package/dist/runtime-rules/use-unwrap-components.d.ts +19 -0
  258. package/dist/runtime-rules/use-unwrap-components.d.ts.map +1 -0
  259. package/dist/runtime-rules/use-unwrap-components.js +84 -0
  260. package/dist/runtime-rules/use-unwrap-components.js.map +1 -0
  261. package/dist/runtime-rules/useeffect-unstable-dependencies.d.ts +23 -0
  262. package/dist/runtime-rules/useeffect-unstable-dependencies.d.ts.map +1 -0
  263. package/dist/runtime-rules/useeffect-unstable-dependencies.js +215 -0
  264. package/dist/runtime-rules/useeffect-unstable-dependencies.js.map +1 -0
  265. package/dist/runtime-rules/utilities-api-validation.d.ts +24 -0
  266. package/dist/runtime-rules/utilities-api-validation.d.ts.map +1 -0
  267. package/dist/runtime-rules/utilities-api-validation.js +121 -0
  268. package/dist/runtime-rules/utilities-api-validation.js.map +1 -0
  269. package/dist/runtime-rules/utilities-no-direct-instantiation.d.ts +20 -0
  270. package/dist/runtime-rules/utilities-no-direct-instantiation.d.ts.map +1 -0
  271. package/dist/runtime-rules/utilities-no-direct-instantiation.js +58 -0
  272. package/dist/runtime-rules/utilities-no-direct-instantiation.js.map +1 -0
  273. package/dist/runtime-rules/validate-component-references.d.ts +19 -0
  274. package/dist/runtime-rules/validate-component-references.d.ts.map +1 -0
  275. package/dist/runtime-rules/validate-component-references.js +255 -0
  276. package/dist/runtime-rules/validate-component-references.js.map +1 -0
  277. package/dist/schema-validation/component-prop-rule.d.ts +131 -0
  278. package/dist/schema-validation/component-prop-rule.d.ts.map +1 -0
  279. package/dist/schema-validation/component-prop-rule.js +625 -0
  280. package/dist/schema-validation/component-prop-rule.js.map +1 -0
  281. package/dist/schema-validation/index.d.ts +26 -0
  282. package/dist/schema-validation/index.d.ts.map +1 -0
  283. package/dist/schema-validation/index.js +26 -0
  284. package/dist/schema-validation/index.js.map +1 -0
  285. package/dist/schema-validation/semantic-validators/index.d.ts +23 -0
  286. package/dist/schema-validation/semantic-validators/index.d.ts.map +1 -0
  287. package/dist/schema-validation/semantic-validators/index.js +23 -0
  288. package/dist/schema-validation/semantic-validators/index.js.map +1 -0
  289. package/dist/schema-validation/semantic-validators/required-when-validator.d.ts +43 -0
  290. package/dist/schema-validation/semantic-validators/required-when-validator.d.ts.map +1 -0
  291. package/dist/schema-validation/semantic-validators/required-when-validator.js +94 -0
  292. package/dist/schema-validation/semantic-validators/required-when-validator.js.map +1 -0
  293. package/dist/schema-validation/semantic-validators/semantic-validator-registry.d.ts +122 -0
  294. package/dist/schema-validation/semantic-validators/semantic-validator-registry.d.ts.map +1 -0
  295. package/dist/schema-validation/semantic-validators/semantic-validator-registry.js +166 -0
  296. package/dist/schema-validation/semantic-validators/semantic-validator-registry.js.map +1 -0
  297. package/dist/schema-validation/semantic-validators/semantic-validator.d.ts +260 -0
  298. package/dist/schema-validation/semantic-validators/semantic-validator.d.ts.map +1 -0
  299. package/dist/schema-validation/semantic-validators/semantic-validator.js +301 -0
  300. package/dist/schema-validation/semantic-validators/semantic-validator.js.map +1 -0
  301. package/dist/schema-validation/semantic-validators/sql-where-clause-validator.d.ts +115 -0
  302. package/dist/schema-validation/semantic-validators/sql-where-clause-validator.d.ts.map +1 -0
  303. package/dist/schema-validation/semantic-validators/sql-where-clause-validator.js +381 -0
  304. package/dist/schema-validation/semantic-validators/sql-where-clause-validator.js.map +1 -0
  305. package/dist/schema-validation/semantic-validators/subset-of-entity-fields-validator.d.ts +60 -0
  306. package/dist/schema-validation/semantic-validators/subset-of-entity-fields-validator.d.ts.map +1 -0
  307. package/dist/schema-validation/semantic-validators/subset-of-entity-fields-validator.js +195 -0
  308. package/dist/schema-validation/semantic-validators/subset-of-entity-fields-validator.js.map +1 -0
  309. package/dist/schema-validation/semantic-validators/validation-context.d.ts +335 -0
  310. package/dist/schema-validation/semantic-validators/validation-context.d.ts.map +1 -0
  311. package/dist/schema-validation/semantic-validators/validation-context.js +13 -0
  312. package/dist/schema-validation/semantic-validators/validation-context.js.map +1 -0
  313. package/dist/styles-type-analyzer.d.ts +64 -0
  314. package/dist/styles-type-analyzer.d.ts.map +1 -0
  315. package/dist/styles-type-analyzer.js +242 -0
  316. package/dist/styles-type-analyzer.js.map +1 -0
  317. package/dist/type-context.d.ts +184 -0
  318. package/dist/type-context.d.ts.map +1 -0
  319. package/dist/type-context.js +415 -0
  320. package/dist/type-context.js.map +1 -0
  321. package/dist/type-inference-engine.d.ts +181 -0
  322. package/dist/type-inference-engine.d.ts.map +1 -0
  323. package/dist/type-inference-engine.js +1151 -0
  324. package/dist/type-inference-engine.js.map +1 -0
  325. package/dist/type-rules/type-compatibility-rule.d.ts +85 -0
  326. package/dist/type-rules/type-compatibility-rule.d.ts.map +1 -0
  327. package/dist/type-rules/type-compatibility-rule.js +211 -0
  328. package/dist/type-rules/type-compatibility-rule.js.map +1 -0
  329. package/package.json +35 -7
  330. package/README.md +0 -45
@@ -0,0 +1,561 @@
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
+ * The set of methods allowed on the ComponentCallbacks interface.
13
+ * Any access to `callbacks.X` where X is not in this set is a violation.
14
+ */
15
+ const ALLOWED_CALLBACK_METHODS = new Set(['OpenEntityRecord', 'RegisterMethod', 'CreateSimpleNotification']);
16
+ /** Valid notification style values for CreateSimpleNotification. */
17
+ const VALID_NOTIFICATION_STYLES = ['none', 'success', 'error', 'warning', 'info'];
18
+ /** Shared rule name used for all violations emitted by this consolidated rule. */
19
+ const RULE_NAME = 'callback-event-validation';
20
+ /**
21
+ * Rule: callback-event-validation
22
+ *
23
+ * Consolidated rule that replaces four separate rules:
24
+ * - callback-parameter-validation: validates callback method parameter counts and types
25
+ * - callbacks-passthrough-only: ensures callbacks are passed through unchanged to children
26
+ * - callbacks-usage-validation: validates callbacks are only accessed via allowed methods
27
+ * - event-invocation-pattern: ensures event props are null-checked before invocation
28
+ *
29
+ * Severity: critical / high / medium / low (varies by check)
30
+ * Applies to: all components
31
+ */
32
+ let CallbackEventValidationRule = class CallbackEventValidationRule extends BaseLintRule {
33
+ get Name() { return RULE_NAME; }
34
+ get AppliesTo() { return 'all'; }
35
+ Test(ast, _componentName, componentSpec) {
36
+ const violations = [];
37
+ const componentEvents = buildComponentEventsSet(componentSpec);
38
+ traverse(ast, {
39
+ CallExpression: (path) => {
40
+ checkCallbackParameterValidation(path, violations);
41
+ checkObjectAssignOnCallbacks(path, violations);
42
+ checkEventInvocationNullCheck(path, violations, componentEvents);
43
+ },
44
+ MemberExpression: (path) => {
45
+ checkCallbackMethodUsage(path, violations, componentEvents);
46
+ },
47
+ OptionalCallExpression: (path) => {
48
+ // Optional chaining on events (e.g. onFoo?.(data)) is the correct pattern — no violation
49
+ checkOptionalCallOnEvent(path, componentEvents);
50
+ },
51
+ JSXAttribute: (path) => {
52
+ checkCallbacksPassthrough(path, violations);
53
+ },
54
+ VariableDeclarator: (path) => {
55
+ checkCallbacksDestructuring(path, violations, componentEvents);
56
+ checkCallbacksSpreadInVariable(path, violations);
57
+ },
58
+ });
59
+ return violations;
60
+ }
61
+ };
62
+ CallbackEventValidationRule = __decorate([
63
+ RegisterClass(BaseLintRule, 'callback-event-validation')
64
+ ], CallbackEventValidationRule);
65
+ export { CallbackEventValidationRule };
66
+ // ---------------------------------------------------------------------------
67
+ // Helper: build component events set from spec
68
+ // ---------------------------------------------------------------------------
69
+ function buildComponentEventsSet(componentSpec) {
70
+ const componentEvents = new Set();
71
+ if (componentSpec?.events) {
72
+ for (const event of componentSpec.events) {
73
+ if (event.name) {
74
+ componentEvents.add(event.name);
75
+ }
76
+ }
77
+ }
78
+ return componentEvents;
79
+ }
80
+ // ---------------------------------------------------------------------------
81
+ // Callback parameter validation helpers
82
+ // ---------------------------------------------------------------------------
83
+ function isCallbacksMemberCall(callee) {
84
+ if (!t.isOptionalMemberExpression(callee) && !t.isMemberExpression(callee)) {
85
+ return false;
86
+ }
87
+ return ((t.isIdentifier(callee.object) && callee.object.name === 'callbacks') ||
88
+ (t.isOptionalMemberExpression(callee) && t.isIdentifier(callee.object) && callee.object.name === 'callbacks'));
89
+ }
90
+ function checkCallbackParameterValidation(path, violations) {
91
+ const callee = path.node.callee;
92
+ if (!isCallbacksMemberCall(callee)) {
93
+ return;
94
+ }
95
+ if (!t.isIdentifier(callee.property)) {
96
+ return;
97
+ }
98
+ const methodName = callee.property.name;
99
+ const args = path.node.arguments;
100
+ if (methodName === 'OpenEntityRecord') {
101
+ validateOpenEntityRecord(path, args, violations);
102
+ }
103
+ else if (methodName === 'RegisterMethod') {
104
+ validateRegisterMethod(path, args, violations);
105
+ }
106
+ else if (methodName === 'CreateSimpleNotification') {
107
+ validateCreateSimpleNotification(path, args, violations);
108
+ }
109
+ }
110
+ function validateOpenEntityRecord(path, args, violations) {
111
+ if (args.length < 2) {
112
+ violations.push({
113
+ rule: RULE_NAME,
114
+ severity: 'high',
115
+ line: path.node.loc?.start.line || 0,
116
+ column: path.node.loc?.start.column || 0,
117
+ message: `OpenEntityRecord requires 2 parameters (entityName, key), but ${args.length} provided`,
118
+ suggestion: {
119
+ text: `OpenEntityRecord expects an entity name and a key parameter.`,
120
+ example: `callbacks?.OpenEntityRecord?.(entityName, recordKey);`,
121
+ },
122
+ });
123
+ }
124
+ }
125
+ function validateRegisterMethod(path, args, violations) {
126
+ if (args.length < 2) {
127
+ violations.push({
128
+ rule: RULE_NAME,
129
+ severity: 'high',
130
+ line: path.node.loc?.start.line || 0,
131
+ column: path.node.loc?.start.column || 0,
132
+ message: `RegisterMethod requires 2 parameters (methodName, handler), but ${args.length} provided`,
133
+ suggestion: {
134
+ text: `RegisterMethod expects a method name and a handler function.`,
135
+ example: `callbacks?.RegisterMethod?.('myMethod', myHandler);`,
136
+ },
137
+ });
138
+ }
139
+ }
140
+ function validateCreateSimpleNotification(path, args, violations) {
141
+ if (args.length < 1) {
142
+ violations.push({
143
+ rule: RULE_NAME,
144
+ severity: 'high',
145
+ line: path.node.loc?.start.line || 0,
146
+ column: path.node.loc?.start.column || 0,
147
+ message: `CreateSimpleNotification requires at least 1 parameter (message), but ${args.length} provided`,
148
+ suggestion: {
149
+ text: `CreateSimpleNotification expects a message and optional style and hideAfter parameters.`,
150
+ example: `callbacks?.CreateSimpleNotification?.('Success!', 'success', 3000);`,
151
+ },
152
+ });
153
+ }
154
+ else if (args.length >= 2) {
155
+ validateNotificationStyle(args[1], violations);
156
+ }
157
+ if (args.length >= 3) {
158
+ validateHideAfterParam(args[2], violations);
159
+ }
160
+ }
161
+ function validateNotificationStyle(styleArg, violations) {
162
+ if (t.isStringLiteral(styleArg) && !VALID_NOTIFICATION_STYLES.includes(styleArg.value)) {
163
+ violations.push({
164
+ rule: RULE_NAME,
165
+ severity: 'medium',
166
+ line: styleArg.loc?.start.line || 0,
167
+ column: styleArg.loc?.start.column || 0,
168
+ message: `Invalid notification style "${styleArg.value}". Must be one of: ${VALID_NOTIFICATION_STYLES.join(', ')}`,
169
+ suggestion: {
170
+ text: `Use one of the valid notification styles.`,
171
+ example: `callbacks?.CreateSimpleNotification?.('Message', 'success', 3000);`,
172
+ },
173
+ });
174
+ }
175
+ }
176
+ function validateHideAfterParam(hideAfterArg, violations) {
177
+ if (t.isNumericLiteral(hideAfterArg) && hideAfterArg.value < 0) {
178
+ violations.push({
179
+ rule: RULE_NAME,
180
+ severity: 'low',
181
+ line: hideAfterArg.loc?.start.line || 0,
182
+ column: hideAfterArg.loc?.start.column || 0,
183
+ message: `hideAfter parameter should be a positive number (milliseconds)`,
184
+ suggestion: {
185
+ text: `Use a positive number for auto-hide duration in milliseconds.`,
186
+ example: `callbacks?.CreateSimpleNotification?.('Message', 'success', 3000); // Hide after 3 seconds`,
187
+ },
188
+ });
189
+ }
190
+ }
191
+ // ---------------------------------------------------------------------------
192
+ // Callbacks usage validation helpers (allowed methods only, not events)
193
+ // ---------------------------------------------------------------------------
194
+ function checkCallbackMethodUsage(path, violations, componentEvents) {
195
+ if (!t.isIdentifier(path.node.object) || path.node.object.name !== 'callbacks') {
196
+ return;
197
+ }
198
+ if (!t.isIdentifier(path.node.property)) {
199
+ return;
200
+ }
201
+ const methodName = path.node.property.name;
202
+ // Valid runtime callback — allow it
203
+ if (ALLOWED_CALLBACK_METHODS.has(methodName)) {
204
+ return;
205
+ }
206
+ if (componentEvents.has(methodName)) {
207
+ violations.push({
208
+ rule: RULE_NAME,
209
+ severity: 'critical',
210
+ line: path.node.loc?.start.line || 0,
211
+ column: path.node.loc?.start.column || 0,
212
+ message: `Event "${methodName}" should not be accessed from callbacks. Events are passed as direct props to the component. Use the prop directly: ${methodName}`,
213
+ suggestion: {
214
+ text: `Events defined in the component spec are passed as direct props, not through callbacks. Access the event directly as a prop.`,
215
+ example: `// ❌ WRONG - Accessing event from callbacks
216
+ const { ${methodName} } = callbacks || {};
217
+ callbacks?.${methodName}?.(data);
218
+
219
+ // ✅ CORRECT - Event is a direct prop
220
+ // In the component props destructuring:
221
+ function MyComponent({ ..., ${methodName} }) {
222
+ // Use with null checking:
223
+ if (${methodName}) {
224
+ ${methodName}(data);
225
+ }
226
+ }`,
227
+ },
228
+ });
229
+ }
230
+ else {
231
+ violations.push({
232
+ rule: RULE_NAME,
233
+ severity: 'critical',
234
+ line: path.node.loc?.start.line || 0,
235
+ column: path.node.loc?.start.column || 0,
236
+ message: `Invalid callback method "${methodName}". The callbacks prop only supports: ${Array.from(ALLOWED_CALLBACK_METHODS).join(', ')}`,
237
+ suggestion: {
238
+ text: `The callbacks prop is reserved for specific MemberJunction framework methods. Custom events should be defined in the component spec's events array and passed as props.`,
239
+ example: `// Allowed callbacks methods:
240
+ callbacks?.OpenEntityRecord?.(entityName, key);
241
+ callbacks?.RegisterMethod?.(methodName, handler);
242
+ callbacks?.CreateSimpleNotification?.(message, style, hideAfter);
243
+
244
+ // For custom events, define them in the spec and use as props:
245
+ function MyComponent({ onCustomEvent }) {
246
+ if (onCustomEvent) {
247
+ onCustomEvent(data);
248
+ }
249
+ }`,
250
+ },
251
+ });
252
+ }
253
+ }
254
+ // ---------------------------------------------------------------------------
255
+ // Callbacks destructuring validation (from VariableDeclarator)
256
+ // ---------------------------------------------------------------------------
257
+ function checkCallbacksDestructuring(path, violations, componentEvents) {
258
+ if (!t.isObjectPattern(path.node.id)) {
259
+ return;
260
+ }
261
+ // Match: const { X } = callbacks
262
+ const isDirectCallbacks = t.isIdentifier(path.node.init) && path.node.init.name === 'callbacks';
263
+ // Match: const { X } = callbacks || {}
264
+ const isCallbacksWithFallback = t.isLogicalExpression(path.node.init) &&
265
+ path.node.init.operator === '||' &&
266
+ t.isIdentifier(path.node.init.left) &&
267
+ path.node.init.left.name === 'callbacks';
268
+ if (!isDirectCallbacks && !isCallbacksWithFallback) {
269
+ return;
270
+ }
271
+ for (const prop of path.node.id.properties) {
272
+ if (!t.isObjectProperty(prop) || !t.isIdentifier(prop.key)) {
273
+ continue;
274
+ }
275
+ const methodName = prop.key.name;
276
+ // Valid runtime callback — allow it
277
+ if (ALLOWED_CALLBACK_METHODS.has(methodName)) {
278
+ continue;
279
+ }
280
+ if (componentEvents.has(methodName)) {
281
+ violations.push({
282
+ rule: RULE_NAME,
283
+ severity: 'critical',
284
+ line: prop.loc?.start.line || 0,
285
+ column: prop.loc?.start.column || 0,
286
+ message: `Event "${methodName}" should not be destructured from callbacks. Events are passed as direct props to the component.`,
287
+ suggestion: {
288
+ text: `Events should be destructured from the component props, not from callbacks.`,
289
+ example: `// ❌ WRONG
290
+ const { ${methodName} } = callbacks || {};
291
+
292
+ // ✅ CORRECT
293
+ function MyComponent({ utilities, styles, callbacks, ${methodName} }) {
294
+ // ${methodName} is now available as a prop
295
+ }`,
296
+ },
297
+ });
298
+ }
299
+ else {
300
+ violations.push({
301
+ rule: RULE_NAME,
302
+ severity: 'critical',
303
+ line: prop.loc?.start.line || 0,
304
+ column: prop.loc?.start.column || 0,
305
+ message: `Invalid callback method "${methodName}" being destructured. The callbacks prop only supports: ${Array.from(ALLOWED_CALLBACK_METHODS).join(', ')}`,
306
+ });
307
+ }
308
+ }
309
+ }
310
+ // ---------------------------------------------------------------------------
311
+ // Callbacks passthrough validation helpers
312
+ // ---------------------------------------------------------------------------
313
+ function checkCallbacksPassthrough(path, violations) {
314
+ if (!t.isJSXIdentifier(path.node.name) || path.node.name.name !== 'callbacks') {
315
+ return;
316
+ }
317
+ const value = path.node.value;
318
+ if (!t.isJSXExpressionContainer(value)) {
319
+ return;
320
+ }
321
+ const expr = value.expression;
322
+ // Valid patterns: callbacks={callbacks} or callbacks={props.callbacks}
323
+ const isValidPassthrough = (t.isIdentifier(expr) && expr.name === 'callbacks') ||
324
+ (t.isMemberExpression(expr) && t.isIdentifier(expr.property) && expr.property.name === 'callbacks');
325
+ if (isValidPassthrough) {
326
+ return;
327
+ }
328
+ if (t.isObjectExpression(expr)) {
329
+ checkObjectExpressionPassthrough(path, expr, violations);
330
+ }
331
+ else if (t.isConditionalExpression(expr) || t.isLogicalExpression(expr)) {
332
+ violations.push({
333
+ rule: RULE_NAME,
334
+ severity: 'medium',
335
+ line: path.node.loc?.start.line || 0,
336
+ column: path.node.loc?.start.column || 0,
337
+ message: `Callbacks should be passed through directly without conditional logic. Consider handling the condition at a higher level.`,
338
+ suggestion: {
339
+ text: `Pass callbacks directly or handle conditions in parent component.`,
340
+ example: `// ⚠️ AVOID - Conditional callbacks
341
+ <ChildComponent
342
+ callbacks={someCondition ? callbacks : undefined}
343
+ />
344
+
345
+ // ✅ BETTER - Pass callbacks directly
346
+ <ChildComponent
347
+ callbacks={callbacks}
348
+ />`,
349
+ },
350
+ });
351
+ }
352
+ else if (!t.isIdentifier(expr) && !t.isMemberExpression(expr)) {
353
+ violations.push({
354
+ rule: RULE_NAME,
355
+ severity: 'critical',
356
+ line: path.node.loc?.start.line || 0,
357
+ column: path.node.loc?.start.column || 0,
358
+ message: `Callbacks must be passed through unchanged. Found complex expression instead of direct passthrough.`,
359
+ suggestion: {
360
+ text: `Pass the callbacks prop directly without modification.`,
361
+ example: `// ✅ CORRECT
362
+ <ChildComponent callbacks={callbacks} />`,
363
+ },
364
+ });
365
+ }
366
+ }
367
+ function checkObjectExpressionPassthrough(path, expr, violations) {
368
+ const hasSpread = expr.properties.some((prop) => t.isSpreadElement(prop) && t.isIdentifier(prop.argument) && prop.argument.name === 'callbacks');
369
+ if (hasSpread) {
370
+ const addedProps = expr.properties
371
+ .filter((prop) => !t.isSpreadElement(prop) && t.isObjectProperty(prop))
372
+ .map((prop) => {
373
+ if (t.isObjectProperty(prop)) {
374
+ if (t.isIdentifier(prop.key)) {
375
+ return prop.key.name;
376
+ }
377
+ else if (t.isStringLiteral(prop.key)) {
378
+ return prop.key.value;
379
+ }
380
+ }
381
+ return 'unknown';
382
+ });
383
+ violations.push({
384
+ rule: RULE_NAME,
385
+ severity: 'critical',
386
+ line: path.node.loc?.start.line || 0,
387
+ column: path.node.loc?.start.column || 0,
388
+ message: `Callbacks must be passed through unchanged. Found spreading with additional properties: ${addedProps.join(', ')}. Component events should be passed as direct props, not added to callbacks.`,
389
+ suggestion: {
390
+ text: `The callbacks prop should only contain OpenEntityRecord and RegisterMethod. Pass component events as separate props.`,
391
+ example: `// ❌ WRONG - Modifying callbacks
392
+ <ChildComponent
393
+ callbacks={{ ...callbacks, onOpen: handleOpen }}
394
+ />
395
+
396
+ // ✅ CORRECT - Pass callbacks unchanged, events as props
397
+ <ChildComponent
398
+ callbacks={callbacks}
399
+ onOpen={handleOpen}
400
+ />`,
401
+ },
402
+ });
403
+ }
404
+ else if (expr.properties.length > 0) {
405
+ violations.push({
406
+ rule: RULE_NAME,
407
+ severity: 'critical',
408
+ line: path.node.loc?.start.line || 0,
409
+ column: path.node.loc?.start.column || 0,
410
+ message: `Callbacks must be passed through unchanged. Do not create new callback objects. Pass the callbacks prop directly.`,
411
+ suggestion: {
412
+ text: `Pass callbacks directly without modification.`,
413
+ example: `// ❌ WRONG - Creating new callbacks object
414
+ <ChildComponent
415
+ callbacks={{ OpenEntityRecord: customHandler }}
416
+ />
417
+
418
+ // ✅ CORRECT - Pass callbacks unchanged
419
+ <ChildComponent
420
+ callbacks={callbacks}
421
+ />`,
422
+ },
423
+ });
424
+ }
425
+ }
426
+ /** Check for Object.assign(callbacks, ...) */
427
+ function checkObjectAssignOnCallbacks(path, violations) {
428
+ if (t.isMemberExpression(path.node.callee) &&
429
+ t.isIdentifier(path.node.callee.object) &&
430
+ path.node.callee.object.name === 'Object' &&
431
+ t.isIdentifier(path.node.callee.property) &&
432
+ path.node.callee.property.name === 'assign') {
433
+ const args = path.node.arguments;
434
+ const hasCallbacks = args.some((arg) => t.isIdentifier(arg) && arg.name === 'callbacks');
435
+ if (hasCallbacks) {
436
+ violations.push({
437
+ rule: RULE_NAME,
438
+ severity: 'critical',
439
+ line: path.node.loc?.start.line || 0,
440
+ column: path.node.loc?.start.column || 0,
441
+ message: `Do not modify callbacks with Object.assign. Callbacks should be passed through unchanged.`,
442
+ suggestion: {
443
+ text: `Pass callbacks directly and use separate props for component events.`,
444
+ example: `// ❌ WRONG
445
+ const modifiedCallbacks = Object.assign({}, callbacks, { onOpen: handler });
446
+
447
+ // ✅ CORRECT - Keep callbacks separate from events
448
+ <Component callbacks={callbacks} onOpen={handler} />`,
449
+ },
450
+ });
451
+ }
452
+ }
453
+ }
454
+ /** Check for variable assignments that spread callbacks with additional props. */
455
+ function checkCallbacksSpreadInVariable(path, violations) {
456
+ if (!t.isObjectExpression(path.node.init)) {
457
+ return;
458
+ }
459
+ const hasCallbacksSpread = path.node.init.properties.some((prop) => t.isSpreadElement(prop) && t.isIdentifier(prop.argument) && prop.argument.name === 'callbacks');
460
+ if (!hasCallbacksSpread) {
461
+ return;
462
+ }
463
+ const hasAdditionalProps = path.node.init.properties.some((prop) => !t.isSpreadElement(prop));
464
+ if (hasAdditionalProps) {
465
+ violations.push({
466
+ rule: RULE_NAME,
467
+ severity: 'critical',
468
+ line: path.node.loc?.start.line || 0,
469
+ column: path.node.loc?.start.column || 0,
470
+ message: `Do not create modified copies of callbacks. Pass callbacks unchanged and use separate props for events.`,
471
+ suggestion: {
472
+ text: `Keep callbacks immutable and pass component events as separate props.`,
473
+ example: `// ❌ WRONG
474
+ const extendedCallbacks = { ...callbacks, onCustomEvent: handler };
475
+
476
+ // ✅ CORRECT - Keep them separate
477
+ // Pass to child component:
478
+ <Component callbacks={callbacks} onCustomEvent={handler} />`,
479
+ },
480
+ });
481
+ }
482
+ }
483
+ // ---------------------------------------------------------------------------
484
+ // Event invocation null-check validation helpers
485
+ // ---------------------------------------------------------------------------
486
+ function checkEventInvocationNullCheck(path, violations, componentEvents) {
487
+ if (componentEvents.size === 0) {
488
+ return;
489
+ }
490
+ if (!t.isIdentifier(path.node.callee)) {
491
+ return;
492
+ }
493
+ const eventName = path.node.callee.name;
494
+ if (!componentEvents.has(eventName)) {
495
+ return;
496
+ }
497
+ if (!hasNullCheckAncestor(path, eventName)) {
498
+ violations.push({
499
+ rule: RULE_NAME,
500
+ severity: 'medium',
501
+ line: path.node.loc?.start.line || 0,
502
+ column: path.node.loc?.start.column || 0,
503
+ message: `Event "${eventName}" is being invoked without null-checking. Events are optional props and should be checked before invocation.`,
504
+ suggestion: {
505
+ text: `Always check that an event prop exists before invoking it, as events are optional.`,
506
+ example: `// ❌ WRONG - No null check
507
+ ${eventName}(data);
508
+
509
+ // ✅ CORRECT - With null check
510
+ if (${eventName}) {
511
+ ${eventName}(data);
512
+ }
513
+
514
+ // ✅ ALSO CORRECT - Inline check
515
+ ${eventName} && ${eventName}(data);
516
+
517
+ // ✅ ALSO CORRECT - Optional chaining
518
+ ${eventName}?.(data);`,
519
+ },
520
+ });
521
+ }
522
+ }
523
+ function hasNullCheckAncestor(path, eventName) {
524
+ let currentPath = path.parentPath;
525
+ while (currentPath) {
526
+ if (t.isIfStatement(currentPath.node)) {
527
+ if (isEventNameTest(currentPath.node.test, eventName)) {
528
+ return true;
529
+ }
530
+ }
531
+ else if (t.isLogicalExpression(currentPath.node) && currentPath.node.operator === '&&') {
532
+ if (t.isIdentifier(currentPath.node.left) && currentPath.node.left.name === eventName) {
533
+ return true;
534
+ }
535
+ }
536
+ else if (t.isConditionalExpression(currentPath.node)) {
537
+ if (t.isIdentifier(currentPath.node.test) && currentPath.node.test.name === eventName) {
538
+ return true;
539
+ }
540
+ }
541
+ currentPath = currentPath.parentPath || null;
542
+ }
543
+ return false;
544
+ }
545
+ function isEventNameTest(test, eventName) {
546
+ if (t.isIdentifier(test) && test.name === eventName) {
547
+ return true;
548
+ }
549
+ if (t.isLogicalExpression(test) && test.operator === '&&') {
550
+ if (t.isIdentifier(test.left) && test.left.name === eventName) {
551
+ return true;
552
+ }
553
+ }
554
+ return false;
555
+ }
556
+ /** Optional chaining on events is the correct pattern — no-op. */
557
+ function checkOptionalCallOnEvent(_path, _componentEvents) {
558
+ // This is the correct pattern, no violation needed.
559
+ return;
560
+ }
561
+ //# sourceMappingURL=callback-event-validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"callback-event-validation.js","sourceRoot":"","sources":["../../src/runtime-rules/callback-event-validation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
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 ChartFieldValidationRule 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=chart-field-validation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chart-field-validation.d.ts","sourceRoot":"","sources":["../../src/runtime-rules/chart-field-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,EAAE,MAAM,6CAA6C,CAAC;AA4N5E,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,cAAc,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,aAAa,GAAG,SAAS,EAAE;CA6EtF"}