@memberjunction/react-test-harness 5.37.0 → 5.39.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (342) hide show
  1. package/README.md +30 -0
  2. package/dist/cli/index.js +5 -1
  3. package/dist/cli/index.js.map +1 -1
  4. package/dist/index.d.ts +1 -5
  5. package/dist/index.d.ts.map +1 -1
  6. package/dist/index.js +10 -5
  7. package/dist/index.js.map +1 -1
  8. package/dist/lib/browser-context.d.ts +43 -0
  9. package/dist/lib/browser-context.d.ts.map +1 -1
  10. package/dist/lib/browser-context.js +87 -12
  11. package/dist/lib/browser-context.js.map +1 -1
  12. package/dist/lib/component-runner.d.ts +17 -22
  13. package/dist/lib/component-runner.d.ts.map +1 -1
  14. package/dist/lib/component-runner.js +46 -4
  15. package/dist/lib/component-runner.js.map +1 -1
  16. package/dist/lib/linter-test-tool.js +1 -1
  17. package/dist/lib/linter-test-tool.js.map +1 -1
  18. package/dist/lib/test-harness.d.ts +10 -0
  19. package/dist/lib/test-harness.d.ts.map +1 -1
  20. package/dist/lib/test-harness.js +10 -0
  21. package/dist/lib/test-harness.js.map +1 -1
  22. package/package.json +14 -13
  23. package/dist/lib/component-linter.d.ts +0 -77
  24. package/dist/lib/component-linter.d.ts.map +0 -1
  25. package/dist/lib/component-linter.js +0 -1205
  26. package/dist/lib/component-linter.js.map +0 -1
  27. package/dist/lib/control-flow-analyzer.d.ts +0 -184
  28. package/dist/lib/control-flow-analyzer.d.ts.map +0 -1
  29. package/dist/lib/control-flow-analyzer.js +0 -798
  30. package/dist/lib/control-flow-analyzer.js.map +0 -1
  31. package/dist/lib/library-lint-cache.d.ts +0 -50
  32. package/dist/lib/library-lint-cache.d.ts.map +0 -1
  33. package/dist/lib/library-lint-cache.js +0 -173
  34. package/dist/lib/library-lint-cache.js.map +0 -1
  35. package/dist/lib/lint-rule.d.ts +0 -70
  36. package/dist/lib/lint-rule.d.ts.map +0 -1
  37. package/dist/lib/lint-rule.js +0 -41
  38. package/dist/lib/lint-rule.js.map +0 -1
  39. package/dist/lib/lint-utils.d.ts +0 -131
  40. package/dist/lib/lint-utils.d.ts.map +0 -1
  41. package/dist/lib/lint-utils.js +0 -358
  42. package/dist/lib/lint-utils.js.map +0 -1
  43. package/dist/lib/prop-value-extractor.d.ts +0 -147
  44. package/dist/lib/prop-value-extractor.d.ts.map +0 -1
  45. package/dist/lib/prop-value-extractor.js +0 -472
  46. package/dist/lib/prop-value-extractor.js.map +0 -1
  47. package/dist/lib/runtime-rules/ai-tools-availability-check.d.ts +0 -9
  48. package/dist/lib/runtime-rules/ai-tools-availability-check.d.ts.map +0 -1
  49. package/dist/lib/runtime-rules/ai-tools-availability-check.js +0 -223
  50. package/dist/lib/runtime-rules/ai-tools-availability-check.js.map +0 -1
  51. package/dist/lib/runtime-rules/callback-event-validation.d.ts +0 -22
  52. package/dist/lib/runtime-rules/callback-event-validation.d.ts.map +0 -1
  53. package/dist/lib/runtime-rules/callback-event-validation.js +0 -561
  54. package/dist/lib/runtime-rules/callback-event-validation.js.map +0 -1
  55. package/dist/lib/runtime-rules/chart-field-validation.d.ts +0 -10
  56. package/dist/lib/runtime-rules/chart-field-validation.d.ts.map +0 -1
  57. package/dist/lib/runtime-rules/chart-field-validation.js +0 -270
  58. package/dist/lib/runtime-rules/chart-field-validation.js.map +0 -1
  59. package/dist/lib/runtime-rules/child-component-prop-validation.d.ts +0 -10
  60. package/dist/lib/runtime-rules/child-component-prop-validation.d.ts.map +0 -1
  61. package/dist/lib/runtime-rules/child-component-prop-validation.js +0 -443
  62. package/dist/lib/runtime-rules/child-component-prop-validation.js.map +0 -1
  63. package/dist/lib/runtime-rules/component-name-mismatch.d.ts +0 -19
  64. package/dist/lib/runtime-rules/component-name-mismatch.d.ts.map +0 -1
  65. package/dist/lib/runtime-rules/component-name-mismatch.js +0 -82
  66. package/dist/lib/runtime-rules/component-name-mismatch.js.map +0 -1
  67. package/dist/lib/runtime-rules/component-not-in-dependencies.d.ts +0 -20
  68. package/dist/lib/runtime-rules/component-not-in-dependencies.d.ts.map +0 -1
  69. package/dist/lib/runtime-rules/component-not-in-dependencies.js +0 -92
  70. package/dist/lib/runtime-rules/component-not-in-dependencies.js.map +0 -1
  71. package/dist/lib/runtime-rules/component-props-validation.d.ts +0 -25
  72. package/dist/lib/runtime-rules/component-props-validation.d.ts.map +0 -1
  73. package/dist/lib/runtime-rules/component-props-validation.js +0 -228
  74. package/dist/lib/runtime-rules/component-props-validation.js.map +0 -1
  75. package/dist/lib/runtime-rules/component-usage-without-destructuring.d.ts +0 -20
  76. package/dist/lib/runtime-rules/component-usage-without-destructuring.d.ts.map +0 -1
  77. package/dist/lib/runtime-rules/component-usage-without-destructuring.js +0 -124
  78. package/dist/lib/runtime-rules/component-usage-without-destructuring.js.map +0 -1
  79. package/dist/lib/runtime-rules/data-result-validation.d.ts +0 -9
  80. package/dist/lib/runtime-rules/data-result-validation.d.ts.map +0 -1
  81. package/dist/lib/runtime-rules/data-result-validation.js +0 -763
  82. package/dist/lib/runtime-rules/data-result-validation.js.map +0 -1
  83. package/dist/lib/runtime-rules/datagrid-field-validation.d.ts +0 -10
  84. package/dist/lib/runtime-rules/datagrid-field-validation.d.ts.map +0 -1
  85. package/dist/lib/runtime-rules/datagrid-field-validation.js +0 -249
  86. package/dist/lib/runtime-rules/datagrid-field-validation.js.map +0 -1
  87. package/dist/lib/runtime-rules/dependency-shadowing.d.ts +0 -20
  88. package/dist/lib/runtime-rules/dependency-shadowing.d.ts.map +0 -1
  89. package/dist/lib/runtime-rules/dependency-shadowing.js +0 -147
  90. package/dist/lib/runtime-rules/dependency-shadowing.js.map +0 -1
  91. package/dist/lib/runtime-rules/entity-field-access-validation.d.ts +0 -12
  92. package/dist/lib/runtime-rules/entity-field-access-validation.d.ts.map +0 -1
  93. package/dist/lib/runtime-rules/entity-field-access-validation.js +0 -304
  94. package/dist/lib/runtime-rules/entity-field-access-validation.js.map +0 -1
  95. package/dist/lib/runtime-rules/event-parameter-validation.d.ts +0 -22
  96. package/dist/lib/runtime-rules/event-parameter-validation.d.ts.map +0 -1
  97. package/dist/lib/runtime-rules/event-parameter-validation.js +0 -406
  98. package/dist/lib/runtime-rules/event-parameter-validation.js.map +0 -1
  99. package/dist/lib/runtime-rules/index.d.ts +0 -61
  100. package/dist/lib/runtime-rules/index.d.ts.map +0 -1
  101. package/dist/lib/runtime-rules/index.js +0 -62
  102. package/dist/lib/runtime-rules/index.js.map +0 -1
  103. package/dist/lib/runtime-rules/library-variable-names.d.ts +0 -24
  104. package/dist/lib/runtime-rules/library-variable-names.d.ts.map +0 -1
  105. package/dist/lib/runtime-rules/library-variable-names.js +0 -88
  106. package/dist/lib/runtime-rules/library-variable-names.js.map +0 -1
  107. package/dist/lib/runtime-rules/no-child-implementation.d.ts +0 -18
  108. package/dist/lib/runtime-rules/no-child-implementation.d.ts.map +0 -1
  109. package/dist/lib/runtime-rules/no-child-implementation.js +0 -57
  110. package/dist/lib/runtime-rules/no-child-implementation.js.map +0 -1
  111. package/dist/lib/runtime-rules/no-data-prop.d.ts +0 -22
  112. package/dist/lib/runtime-rules/no-data-prop.d.ts.map +0 -1
  113. package/dist/lib/runtime-rules/no-data-prop.js +0 -111
  114. package/dist/lib/runtime-rules/no-data-prop.js.map +0 -1
  115. package/dist/lib/runtime-rules/no-export-statements.d.ts +0 -18
  116. package/dist/lib/runtime-rules/no-export-statements.d.ts.map +0 -1
  117. package/dist/lib/runtime-rules/no-export-statements.js +0 -143
  118. package/dist/lib/runtime-rules/no-export-statements.js.map +0 -1
  119. package/dist/lib/runtime-rules/no-iife-wrapper.d.ts +0 -18
  120. package/dist/lib/runtime-rules/no-iife-wrapper.d.ts.map +0 -1
  121. package/dist/lib/runtime-rules/no-iife-wrapper.js +0 -217
  122. package/dist/lib/runtime-rules/no-iife-wrapper.js.map +0 -1
  123. package/dist/lib/runtime-rules/no-import-statements.d.ts +0 -18
  124. package/dist/lib/runtime-rules/no-import-statements.d.ts.map +0 -1
  125. package/dist/lib/runtime-rules/no-import-statements.js +0 -65
  126. package/dist/lib/runtime-rules/no-import-statements.js.map +0 -1
  127. package/dist/lib/runtime-rules/no-react-destructuring.d.ts +0 -18
  128. package/dist/lib/runtime-rules/no-react-destructuring.d.ts.map +0 -1
  129. package/dist/lib/runtime-rules/no-react-destructuring.js +0 -60
  130. package/dist/lib/runtime-rules/no-react-destructuring.js.map +0 -1
  131. package/dist/lib/runtime-rules/no-require-statements.d.ts +0 -18
  132. package/dist/lib/runtime-rules/no-require-statements.d.ts.map +0 -1
  133. package/dist/lib/runtime-rules/no-require-statements.js +0 -109
  134. package/dist/lib/runtime-rules/no-require-statements.js.map +0 -1
  135. package/dist/lib/runtime-rules/no-return-component.d.ts +0 -18
  136. package/dist/lib/runtime-rules/no-return-component.d.ts.map +0 -1
  137. package/dist/lib/runtime-rules/no-return-component.js +0 -106
  138. package/dist/lib/runtime-rules/no-return-component.js.map +0 -1
  139. package/dist/lib/runtime-rules/no-unwrap-utility-libs.d.ts +0 -20
  140. package/dist/lib/runtime-rules/no-unwrap-utility-libs.d.ts.map +0 -1
  141. package/dist/lib/runtime-rules/no-unwrap-utility-libs.js +0 -75
  142. package/dist/lib/runtime-rules/no-unwrap-utility-libs.js.map +0 -1
  143. package/dist/lib/runtime-rules/no-use-reducer.d.ts +0 -19
  144. package/dist/lib/runtime-rules/no-use-reducer.d.ts.map +0 -1
  145. package/dist/lib/runtime-rules/no-use-reducer.js +0 -78
  146. package/dist/lib/runtime-rules/no-use-reducer.js.map +0 -1
  147. package/dist/lib/runtime-rules/no-window-access.d.ts +0 -23
  148. package/dist/lib/runtime-rules/no-window-access.d.ts.map +0 -1
  149. package/dist/lib/runtime-rules/no-window-access.js +0 -136
  150. package/dist/lib/runtime-rules/no-window-access.js.map +0 -1
  151. package/dist/lib/runtime-rules/noisy-settings-updates.d.ts +0 -18
  152. package/dist/lib/runtime-rules/noisy-settings-updates.d.ts.map +0 -1
  153. package/dist/lib/runtime-rules/noisy-settings-updates.js +0 -110
  154. package/dist/lib/runtime-rules/noisy-settings-updates.js.map +0 -1
  155. package/dist/lib/runtime-rules/overflow-hidden-on-layout-container.d.ts +0 -30
  156. package/dist/lib/runtime-rules/overflow-hidden-on-layout-container.d.ts.map +0 -1
  157. package/dist/lib/runtime-rules/overflow-hidden-on-layout-container.js +0 -220
  158. package/dist/lib/runtime-rules/overflow-hidden-on-layout-container.js.map +0 -1
  159. package/dist/lib/runtime-rules/pass-standard-props.d.ts +0 -19
  160. package/dist/lib/runtime-rules/pass-standard-props.d.ts.map +0 -1
  161. package/dist/lib/runtime-rules/pass-standard-props.js +0 -82
  162. package/dist/lib/runtime-rules/pass-standard-props.js.map +0 -1
  163. package/dist/lib/runtime-rules/prefer-async-await.d.ts +0 -17
  164. package/dist/lib/runtime-rules/prefer-async-await.d.ts.map +0 -1
  165. package/dist/lib/runtime-rules/prefer-async-await.js +0 -52
  166. package/dist/lib/runtime-rules/prefer-async-await.js.map +0 -1
  167. package/dist/lib/runtime-rules/prefer-jsx-syntax.d.ts +0 -17
  168. package/dist/lib/runtime-rules/prefer-jsx-syntax.d.ts.map +0 -1
  169. package/dist/lib/runtime-rules/prefer-jsx-syntax.js +0 -51
  170. package/dist/lib/runtime-rules/prefer-jsx-syntax.js.map +0 -1
  171. package/dist/lib/runtime-rules/prop-state-sync.d.ts +0 -19
  172. package/dist/lib/runtime-rules/prop-state-sync.d.ts.map +0 -1
  173. package/dist/lib/runtime-rules/prop-state-sync.js +0 -76
  174. package/dist/lib/runtime-rules/prop-state-sync.js.map +0 -1
  175. package/dist/lib/runtime-rules/property-name-consistency.d.ts +0 -20
  176. package/dist/lib/runtime-rules/property-name-consistency.d.ts.map +0 -1
  177. package/dist/lib/runtime-rules/property-name-consistency.js +0 -172
  178. package/dist/lib/runtime-rules/property-name-consistency.js.map +0 -1
  179. package/dist/lib/runtime-rules/query-result-field-access-validation.d.ts +0 -10
  180. package/dist/lib/runtime-rules/query-result-field-access-validation.d.ts.map +0 -1
  181. package/dist/lib/runtime-rules/query-result-field-access-validation.js +0 -304
  182. package/dist/lib/runtime-rules/query-result-field-access-validation.js.map +0 -1
  183. package/dist/lib/runtime-rules/react-component-naming.d.ts +0 -19
  184. package/dist/lib/runtime-rules/react-component-naming.d.ts.map +0 -1
  185. package/dist/lib/runtime-rules/react-component-naming.js +0 -72
  186. package/dist/lib/runtime-rules/react-component-naming.js.map +0 -1
  187. package/dist/lib/runtime-rules/react-hooks-rules.d.ts +0 -27
  188. package/dist/lib/runtime-rules/react-hooks-rules.d.ts.map +0 -1
  189. package/dist/lib/runtime-rules/react-hooks-rules.js +0 -223
  190. package/dist/lib/runtime-rules/react-hooks-rules.js.map +0 -1
  191. package/dist/lib/runtime-rules/required-queries-not-called.d.ts +0 -19
  192. package/dist/lib/runtime-rules/required-queries-not-called.d.ts.map +0 -1
  193. package/dist/lib/runtime-rules/required-queries-not-called.js +0 -146
  194. package/dist/lib/runtime-rules/required-queries-not-called.js.map +0 -1
  195. package/dist/lib/runtime-rules/runquery-call-validation.d.ts +0 -11
  196. package/dist/lib/runtime-rules/runquery-call-validation.d.ts.map +0 -1
  197. package/dist/lib/runtime-rules/runquery-call-validation.js +0 -886
  198. package/dist/lib/runtime-rules/runquery-call-validation.js.map +0 -1
  199. package/dist/lib/runtime-rules/runview-call-validation.d.ts +0 -10
  200. package/dist/lib/runtime-rules/runview-call-validation.d.ts.map +0 -1
  201. package/dist/lib/runtime-rules/runview-call-validation.js +0 -336
  202. package/dist/lib/runtime-rules/runview-call-validation.js.map +0 -1
  203. package/dist/lib/runtime-rules/saved-user-settings-pattern.d.ts +0 -19
  204. package/dist/lib/runtime-rules/saved-user-settings-pattern.d.ts.map +0 -1
  205. package/dist/lib/runtime-rules/saved-user-settings-pattern.js +0 -90
  206. package/dist/lib/runtime-rules/saved-user-settings-pattern.js.map +0 -1
  207. package/dist/lib/runtime-rules/search-availability-check.d.ts +0 -9
  208. package/dist/lib/runtime-rules/search-availability-check.d.ts.map +0 -1
  209. package/dist/lib/runtime-rules/search-availability-check.js +0 -220
  210. package/dist/lib/runtime-rules/search-availability-check.js.map +0 -1
  211. package/dist/lib/runtime-rules/search-call-validation.d.ts +0 -9
  212. package/dist/lib/runtime-rules/search-call-validation.d.ts.map +0 -1
  213. package/dist/lib/runtime-rules/search-call-validation.js +0 -336
  214. package/dist/lib/runtime-rules/search-call-validation.js.map +0 -1
  215. package/dist/lib/runtime-rules/server-reload-on-client-operation.d.ts +0 -18
  216. package/dist/lib/runtime-rules/server-reload-on-client-operation.d.ts.map +0 -1
  217. package/dist/lib/runtime-rules/server-reload-on-client-operation.js +0 -107
  218. package/dist/lib/runtime-rules/server-reload-on-client-operation.js.map +0 -1
  219. package/dist/lib/runtime-rules/single-function-only.d.ts +0 -18
  220. package/dist/lib/runtime-rules/single-function-only.d.ts.map +0 -1
  221. package/dist/lib/runtime-rules/single-function-only.js +0 -103
  222. package/dist/lib/runtime-rules/single-function-only.js.map +0 -1
  223. package/dist/lib/runtime-rules/string-replace-all-occurrences.d.ts +0 -19
  224. package/dist/lib/runtime-rules/string-replace-all-occurrences.d.ts.map +0 -1
  225. package/dist/lib/runtime-rules/string-replace-all-occurrences.js +0 -109
  226. package/dist/lib/runtime-rules/string-replace-all-occurrences.js.map +0 -1
  227. package/dist/lib/runtime-rules/string-template-validation.d.ts +0 -22
  228. package/dist/lib/runtime-rules/string-template-validation.d.ts.map +0 -1
  229. package/dist/lib/runtime-rules/string-template-validation.js +0 -163
  230. package/dist/lib/runtime-rules/string-template-validation.js.map +0 -1
  231. package/dist/lib/runtime-rules/styles-validation.d.ts +0 -10
  232. package/dist/lib/runtime-rules/styles-validation.d.ts.map +0 -1
  233. package/dist/lib/runtime-rules/styles-validation.js +0 -153
  234. package/dist/lib/runtime-rules/styles-validation.js.map +0 -1
  235. package/dist/lib/runtime-rules/type-inference-errors.d.ts +0 -23
  236. package/dist/lib/runtime-rules/type-inference-errors.d.ts.map +0 -1
  237. package/dist/lib/runtime-rules/type-inference-errors.js +0 -53
  238. package/dist/lib/runtime-rules/type-inference-errors.js.map +0 -1
  239. package/dist/lib/runtime-rules/type-mismatch-operation.d.ts +0 -23
  240. package/dist/lib/runtime-rules/type-mismatch-operation.d.ts.map +0 -1
  241. package/dist/lib/runtime-rules/type-mismatch-operation.js +0 -141
  242. package/dist/lib/runtime-rules/type-mismatch-operation.js.map +0 -1
  243. package/dist/lib/runtime-rules/undefined-component-usage.d.ts +0 -20
  244. package/dist/lib/runtime-rules/undefined-component-usage.d.ts.map +0 -1
  245. package/dist/lib/runtime-rules/undefined-component-usage.js +0 -138
  246. package/dist/lib/runtime-rules/undefined-component-usage.js.map +0 -1
  247. package/dist/lib/runtime-rules/undefined-jsx-component.d.ts +0 -25
  248. package/dist/lib/runtime-rules/undefined-jsx-component.d.ts.map +0 -1
  249. package/dist/lib/runtime-rules/undefined-jsx-component.js +0 -269
  250. package/dist/lib/runtime-rules/undefined-jsx-component.js.map +0 -1
  251. package/dist/lib/runtime-rules/unsafe-array-operations.d.ts +0 -25
  252. package/dist/lib/runtime-rules/unsafe-array-operations.d.ts.map +0 -1
  253. package/dist/lib/runtime-rules/unsafe-array-operations.js +0 -347
  254. package/dist/lib/runtime-rules/unsafe-array-operations.js.map +0 -1
  255. package/dist/lib/runtime-rules/unsafe-formatting-methods.d.ts +0 -24
  256. package/dist/lib/runtime-rules/unsafe-formatting-methods.d.ts.map +0 -1
  257. package/dist/lib/runtime-rules/unsafe-formatting-methods.js +0 -277
  258. package/dist/lib/runtime-rules/unsafe-formatting-methods.js.map +0 -1
  259. package/dist/lib/runtime-rules/unused-component-dependencies.d.ts +0 -19
  260. package/dist/lib/runtime-rules/unused-component-dependencies.d.ts.map +0 -1
  261. package/dist/lib/runtime-rules/unused-component-dependencies.js +0 -90
  262. package/dist/lib/runtime-rules/unused-component-dependencies.js.map +0 -1
  263. package/dist/lib/runtime-rules/unused-libraries.d.ts +0 -19
  264. package/dist/lib/runtime-rules/unused-libraries.d.ts.map +0 -1
  265. package/dist/lib/runtime-rules/unused-libraries.js +0 -127
  266. package/dist/lib/runtime-rules/unused-libraries.js.map +0 -1
  267. package/dist/lib/runtime-rules/use-function-declaration.d.ts +0 -18
  268. package/dist/lib/runtime-rules/use-function-declaration.d.ts.map +0 -1
  269. package/dist/lib/runtime-rules/use-function-declaration.js +0 -127
  270. package/dist/lib/runtime-rules/use-function-declaration.js.map +0 -1
  271. package/dist/lib/runtime-rules/use-unwrap-components.d.ts +0 -19
  272. package/dist/lib/runtime-rules/use-unwrap-components.d.ts.map +0 -1
  273. package/dist/lib/runtime-rules/use-unwrap-components.js +0 -84
  274. package/dist/lib/runtime-rules/use-unwrap-components.js.map +0 -1
  275. package/dist/lib/runtime-rules/useeffect-unstable-dependencies.d.ts +0 -23
  276. package/dist/lib/runtime-rules/useeffect-unstable-dependencies.d.ts.map +0 -1
  277. package/dist/lib/runtime-rules/useeffect-unstable-dependencies.js +0 -215
  278. package/dist/lib/runtime-rules/useeffect-unstable-dependencies.js.map +0 -1
  279. package/dist/lib/runtime-rules/utilities-api-validation.d.ts +0 -24
  280. package/dist/lib/runtime-rules/utilities-api-validation.d.ts.map +0 -1
  281. package/dist/lib/runtime-rules/utilities-api-validation.js +0 -121
  282. package/dist/lib/runtime-rules/utilities-api-validation.js.map +0 -1
  283. package/dist/lib/runtime-rules/utilities-no-direct-instantiation.d.ts +0 -20
  284. package/dist/lib/runtime-rules/utilities-no-direct-instantiation.d.ts.map +0 -1
  285. package/dist/lib/runtime-rules/utilities-no-direct-instantiation.js +0 -58
  286. package/dist/lib/runtime-rules/utilities-no-direct-instantiation.js.map +0 -1
  287. package/dist/lib/runtime-rules/validate-component-references.d.ts +0 -19
  288. package/dist/lib/runtime-rules/validate-component-references.d.ts.map +0 -1
  289. package/dist/lib/runtime-rules/validate-component-references.js +0 -255
  290. package/dist/lib/runtime-rules/validate-component-references.js.map +0 -1
  291. package/dist/lib/schema-validation/component-prop-rule.d.ts +0 -125
  292. package/dist/lib/schema-validation/component-prop-rule.d.ts.map +0 -1
  293. package/dist/lib/schema-validation/component-prop-rule.js +0 -624
  294. package/dist/lib/schema-validation/component-prop-rule.js.map +0 -1
  295. package/dist/lib/schema-validation/index.d.ts +0 -26
  296. package/dist/lib/schema-validation/index.d.ts.map +0 -1
  297. package/dist/lib/schema-validation/index.js +0 -26
  298. package/dist/lib/schema-validation/index.js.map +0 -1
  299. package/dist/lib/schema-validation/semantic-validators/index.d.ts +0 -23
  300. package/dist/lib/schema-validation/semantic-validators/index.d.ts.map +0 -1
  301. package/dist/lib/schema-validation/semantic-validators/index.js +0 -23
  302. package/dist/lib/schema-validation/semantic-validators/index.js.map +0 -1
  303. package/dist/lib/schema-validation/semantic-validators/required-when-validator.d.ts +0 -43
  304. package/dist/lib/schema-validation/semantic-validators/required-when-validator.d.ts.map +0 -1
  305. package/dist/lib/schema-validation/semantic-validators/required-when-validator.js +0 -94
  306. package/dist/lib/schema-validation/semantic-validators/required-when-validator.js.map +0 -1
  307. package/dist/lib/schema-validation/semantic-validators/semantic-validator-registry.d.ts +0 -122
  308. package/dist/lib/schema-validation/semantic-validators/semantic-validator-registry.d.ts.map +0 -1
  309. package/dist/lib/schema-validation/semantic-validators/semantic-validator-registry.js +0 -166
  310. package/dist/lib/schema-validation/semantic-validators/semantic-validator-registry.js.map +0 -1
  311. package/dist/lib/schema-validation/semantic-validators/semantic-validator.d.ts +0 -260
  312. package/dist/lib/schema-validation/semantic-validators/semantic-validator.d.ts.map +0 -1
  313. package/dist/lib/schema-validation/semantic-validators/semantic-validator.js +0 -301
  314. package/dist/lib/schema-validation/semantic-validators/semantic-validator.js.map +0 -1
  315. package/dist/lib/schema-validation/semantic-validators/sql-where-clause-validator.d.ts +0 -115
  316. package/dist/lib/schema-validation/semantic-validators/sql-where-clause-validator.d.ts.map +0 -1
  317. package/dist/lib/schema-validation/semantic-validators/sql-where-clause-validator.js +0 -381
  318. package/dist/lib/schema-validation/semantic-validators/sql-where-clause-validator.js.map +0 -1
  319. package/dist/lib/schema-validation/semantic-validators/subset-of-entity-fields-validator.d.ts +0 -60
  320. package/dist/lib/schema-validation/semantic-validators/subset-of-entity-fields-validator.d.ts.map +0 -1
  321. package/dist/lib/schema-validation/semantic-validators/subset-of-entity-fields-validator.js +0 -195
  322. package/dist/lib/schema-validation/semantic-validators/subset-of-entity-fields-validator.js.map +0 -1
  323. package/dist/lib/schema-validation/semantic-validators/validation-context.d.ts +0 -335
  324. package/dist/lib/schema-validation/semantic-validators/validation-context.d.ts.map +0 -1
  325. package/dist/lib/schema-validation/semantic-validators/validation-context.js +0 -13
  326. package/dist/lib/schema-validation/semantic-validators/validation-context.js.map +0 -1
  327. package/dist/lib/styles-type-analyzer.d.ts +0 -64
  328. package/dist/lib/styles-type-analyzer.d.ts.map +0 -1
  329. package/dist/lib/styles-type-analyzer.js +0 -242
  330. package/dist/lib/styles-type-analyzer.js.map +0 -1
  331. package/dist/lib/type-context.d.ts +0 -184
  332. package/dist/lib/type-context.d.ts.map +0 -1
  333. package/dist/lib/type-context.js +0 -415
  334. package/dist/lib/type-context.js.map +0 -1
  335. package/dist/lib/type-inference-engine.d.ts +0 -181
  336. package/dist/lib/type-inference-engine.d.ts.map +0 -1
  337. package/dist/lib/type-inference-engine.js +0 -1151
  338. package/dist/lib/type-inference-engine.js.map +0 -1
  339. package/dist/lib/type-rules/type-compatibility-rule.d.ts +0 -79
  340. package/dist/lib/type-rules/type-compatibility-rule.d.ts.map +0 -1
  341. package/dist/lib/type-rules/type-compatibility-rule.js +0 -211
  342. package/dist/lib/type-rules/type-compatibility-rule.js.map +0 -1
@@ -1,443 +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, levenshteinDistance } from '../lint-utils.js';
8
- import * as t from '@babel/types';
9
- import { RegisterClass } from '@memberjunction/global';
10
- import { BaseLintRule } from '../lint-rule.js';
11
- import { ComponentMetadataEngineServer } from '@memberjunction/core-entities-server';
12
- /**
13
- * Rule: child-component-prop-validation
14
- *
15
- * Validates props passed to child/embedded components in JSX against the
16
- * dependency component specs. Detects:
17
- * - Nonexistent prop names (no matching property in child spec)
18
- * - Prop name typos (Levenshtein distance <= 2)
19
- * - Prop name case mismatches (case-insensitive match exists)
20
- * - Type mismatches (string passed where number expected, etc.)
21
- *
22
- * Child component specs are sourced from componentSpec.dependencies.
23
- *
24
- * Severity: high (nonexistent props, type mismatches), medium (case mismatches)
25
- * Applies to: all components
26
- */
27
- /** Props that are always valid on any child component and should be skipped */
28
- const STANDARD_CHILD_PROPS = new Set([
29
- 'utilities',
30
- 'styles',
31
- 'components',
32
- 'callbacks',
33
- 'savedUserSettings',
34
- 'onSaveUserSettings',
35
- 'key',
36
- 'ref',
37
- 'children',
38
- ]);
39
- /**
40
- * Build a set of event-derived prop names from a component's events array.
41
- * Events like { name: 'rowClick' } produce 'onRowClick'.
42
- */
43
- function buildEventPropNames(events) {
44
- const result = new Set();
45
- if (!events)
46
- return result;
47
- for (const event of events) {
48
- if (event.name) {
49
- result.add(event.name);
50
- const onPrefixed = 'on' + event.name.charAt(0).toUpperCase() + event.name.slice(1);
51
- result.add(onPrefixed);
52
- }
53
- }
54
- return result;
55
- }
56
- /**
57
- * Attempt to infer the runtime type of a JSX attribute value expression.
58
- * Returns a simple type string: 'string', 'number', 'boolean', 'array',
59
- * 'object', 'function', or null if unknown.
60
- *
61
- * For identifiers, traces back through the AST looking for useState
62
- * initializers to determine the type.
63
- */
64
- function inferExpressionType(expr, variableTypes) {
65
- if (t.isStringLiteral(expr) || t.isTemplateLiteral(expr))
66
- return 'string';
67
- if (t.isNumericLiteral(expr))
68
- return 'number';
69
- if (t.isBooleanLiteral(expr))
70
- return 'boolean';
71
- if (t.isArrayExpression(expr))
72
- return 'array';
73
- if (t.isObjectExpression(expr))
74
- return 'object';
75
- if (t.isArrowFunctionExpression(expr) || t.isFunctionExpression(expr))
76
- return 'function';
77
- if (t.isNullLiteral(expr))
78
- return null;
79
- if (t.isIdentifier(expr)) {
80
- return variableTypes.get(expr.name) ?? null;
81
- }
82
- return null;
83
- }
84
- /**
85
- * Infer type from a value AST node (used for useState initial values).
86
- */
87
- function inferValueType(node) {
88
- if (t.isStringLiteral(node) || t.isTemplateLiteral(node))
89
- return 'string';
90
- if (t.isNumericLiteral(node))
91
- return 'number';
92
- if (t.isBooleanLiteral(node))
93
- return 'boolean';
94
- if (t.isArrayExpression(node))
95
- return 'array';
96
- if (t.isObjectExpression(node))
97
- return 'object';
98
- if (t.isArrowFunctionExpression(node) || t.isFunctionExpression(node))
99
- return 'function';
100
- return null;
101
- }
102
- /**
103
- * Normalize a spec property type string to one of the simple types
104
- * we use for comparison.
105
- */
106
- function normalizeSpecType(specType) {
107
- const lower = specType.toLowerCase().trim();
108
- if (lower === 'string')
109
- return 'string';
110
- if (lower === 'number' || lower === 'integer' || lower === 'float')
111
- return 'number';
112
- if (lower === 'boolean' || lower === 'bool')
113
- return 'boolean';
114
- if (lower === 'array' || lower.startsWith('array<') || lower.endsWith('[]'))
115
- return 'array';
116
- if (lower === 'object')
117
- return 'object';
118
- if (lower === 'function')
119
- return 'function';
120
- if (lower === 'any')
121
- return null; // 'any' matches everything
122
- return null; // complex or unknown types - skip checking
123
- }
124
- /**
125
- * Check if two types are compatible. Returns true if they match or if
126
- * either side is unknown/any.
127
- */
128
- function typesAreCompatible(actualType, expectedType) {
129
- if (actualType === expectedType)
130
- return true;
131
- // Arrays are objects in JavaScript — allow object where array is expected and vice versa
132
- if ((actualType === 'object' && expectedType === 'array') ||
133
- (actualType === 'array' && expectedType === 'object'))
134
- return true;
135
- // JSX string attributes are common for numeric props (e.g., height="300")
136
- if (actualType === 'string' && expectedType === 'number')
137
- return true;
138
- return false;
139
- }
140
- /**
141
- * Find the closest matching property name from a list using Levenshtein distance.
142
- */
143
- function findClosestPropName(attrName, validNames) {
144
- let bestMatch = null;
145
- for (const name of validNames) {
146
- const dist = levenshteinDistance(attrName, name);
147
- if (dist <= 2 && (!bestMatch || dist < bestMatch.distance)) {
148
- bestMatch = { name, distance: dist };
149
- }
150
- }
151
- return bestMatch;
152
- }
153
- /**
154
- * Try to load component properties and events from the ComponentMetadataEngine registry.
155
- * Returns the resolved properties and events, or undefined if the registry is not
156
- * available or the component was not found.
157
- */
158
- function tryRegistryLookup(dep) {
159
- try {
160
- const engine = ComponentMetadataEngineServer.Instance;
161
- const registryComponent = engine.FindComponent(dep.name, dep.namespace, dep.registry);
162
- if (registryComponent?.spec?.properties?.length) {
163
- return {
164
- properties: registryComponent.spec.properties,
165
- events: registryComponent.spec.events,
166
- };
167
- }
168
- }
169
- catch {
170
- // DB not available or engine not initialized — fall through
171
- }
172
- return undefined;
173
- }
174
- /**
175
- * Build a lookup map from dependency component name to its prop info.
176
- * Uses a 3-tier fallback:
177
- * 1. Primary: dep.properties/events from the spec's dependencies array
178
- * 2. Fallback 1: Registry lookup via ComponentMetadataEngine
179
- * 3. Fallback 2: Skip with a low-severity warning
180
- */
181
- function buildDependencyMap(dependencies, warnings) {
182
- const result = new Map();
183
- if (!dependencies)
184
- return result;
185
- for (const dep of dependencies) {
186
- if (!dep.name)
187
- continue;
188
- let properties = dep.properties ?? [];
189
- let events = dep.events;
190
- // Fallback 1: If no properties from spec, try the registry
191
- if (properties.length === 0) {
192
- const registryResult = tryRegistryLookup(dep);
193
- if (registryResult) {
194
- properties = registryResult.properties;
195
- events = registryResult.events;
196
- }
197
- }
198
- // Fallback 2: Still no properties — emit a warning and skip this dependency
199
- if (properties.length === 0) {
200
- warnings.push({
201
- rule: 'child-component-prop-validation',
202
- severity: 'low',
203
- line: 0,
204
- column: 0,
205
- message: `Unable to validate props for <${dep.name}> — no property metadata available ` +
206
- `from spec or registry. Ensure the component spec includes property definitions ` +
207
- `for accurate validation.`,
208
- });
209
- continue;
210
- }
211
- const propertyNames = new Set();
212
- const propertyByNameLower = new Map();
213
- for (const prop of properties) {
214
- propertyNames.add(prop.name);
215
- propertyByNameLower.set(prop.name.toLowerCase(), prop);
216
- }
217
- result.set(dep.name, {
218
- properties,
219
- events,
220
- propertyNames,
221
- eventPropNames: buildEventPropNames(events),
222
- propertyByNameLower,
223
- });
224
- }
225
- return result;
226
- }
227
- /**
228
- * Collect variable type information from useState calls throughout the AST.
229
- * Maps variable name -> inferred type string.
230
- */
231
- function collectVariableTypes(ast) {
232
- const variableTypes = new Map();
233
- traverse(ast, {
234
- VariableDeclarator(path) {
235
- // Detect: const [foo, setFoo] = useState(initialValue)
236
- if (t.isArrayPattern(path.node.id) &&
237
- t.isCallExpression(path.node.init) &&
238
- t.isIdentifier(path.node.init.callee) &&
239
- path.node.init.callee.name === 'useState') {
240
- const elements = path.node.id.elements;
241
- if (elements.length >= 1 && t.isIdentifier(elements[0]) && path.node.init.arguments.length >= 1) {
242
- const varName = elements[0].name;
243
- const initArg = path.node.init.arguments[0];
244
- if (t.isExpression(initArg)) {
245
- const inferredType = inferValueType(initArg);
246
- if (inferredType) {
247
- variableTypes.set(varName, inferredType);
248
- }
249
- }
250
- }
251
- }
252
- },
253
- });
254
- return variableTypes;
255
- }
256
- /**
257
- * Validate the type of a prop value against the expected type from the child spec.
258
- */
259
- function validatePropType(violations, tagName, attrName, attr, childInfo, variableTypes, line, column) {
260
- // Find the property spec
261
- const propSpec = childInfo.properties.find((p) => p.name === attrName);
262
- if (!propSpec)
263
- return;
264
- const expectedType = normalizeSpecType(propSpec.type);
265
- if (!expectedType)
266
- return; // Can't determine expected type or it's 'any'
267
- // Get the attribute value expression
268
- const valueExpr = extractAttributeValueExpression(attr);
269
- if (!valueExpr)
270
- return;
271
- const actualType = inferExpressionType(valueExpr, variableTypes);
272
- if (!actualType)
273
- return; // Can't determine actual type
274
- if (!typesAreCompatible(actualType, expectedType)) {
275
- violations.push({
276
- rule: 'child-component-prop-validation',
277
- severity: 'high',
278
- line,
279
- column,
280
- message: `Type mismatch on prop "${attrName}" of <${tagName}>: ` +
281
- `expected "${expectedType}" but got "${actualType}".`,
282
- suggestion: {
283
- text: `Ensure the value passed to "${attrName}" is of type "${expectedType}".`,
284
- example: buildTypeFixExample(tagName, attrName, expectedType, actualType),
285
- },
286
- });
287
- }
288
- }
289
- /**
290
- * Extract the expression from a JSX attribute value.
291
- */
292
- function extractAttributeValueExpression(attr) {
293
- const value = attr.value;
294
- if (!value)
295
- return null; // Boolean shorthand like <Comp disabled />
296
- if (t.isJSXExpressionContainer(value)) {
297
- return value.expression;
298
- }
299
- if (t.isStringLiteral(value)) {
300
- return value;
301
- }
302
- return null;
303
- }
304
- /**
305
- * Build a helpful example showing how to fix a type mismatch.
306
- */
307
- function buildTypeFixExample(tagName, propName, expectedType, actualType) {
308
- const conversions = {
309
- number: {
310
- string: `// Convert string to number:\nconst parsed = Number(value);\n<${tagName} ${propName}={parsed} />`,
311
- },
312
- string: {
313
- number: `// Convert number to string:\n<${tagName} ${propName}={String(value)} />`,
314
- array: `// If you need a string, join the array:\n<${tagName} ${propName}={values.join(',')} />`,
315
- },
316
- boolean: {
317
- number: `// Convert to boolean:\n<${tagName} ${propName}={value > 0} />`,
318
- string: `// Convert to boolean:\n<${tagName} ${propName}={value === 'true'} />`,
319
- },
320
- array: {
321
- string: `// Convert string to array:\n<${tagName} ${propName}={value.split(',')} />`,
322
- },
323
- };
324
- return conversions[expectedType]?.[actualType]
325
- ?? `<${tagName} ${propName}={/* provide a ${expectedType} value */} />`;
326
- }
327
- let ChildComponentPropValidationRule = class ChildComponentPropValidationRule extends BaseLintRule {
328
- get Name() { return 'child-component-prop-validation'; }
329
- get AppliesTo() { return 'all'; }
330
- Test(ast, _componentName, componentSpec) {
331
- const violations = [];
332
- // If no dependencies, nothing to validate
333
- if (!componentSpec?.dependencies || componentSpec.dependencies.length === 0) {
334
- return violations;
335
- }
336
- const depMap = buildDependencyMap(componentSpec.dependencies, violations);
337
- if (depMap.size === 0)
338
- return violations;
339
- // Collect variable types from useState calls for type-checking
340
- const variableTypes = collectVariableTypes(ast);
341
- traverse(ast, {
342
- JSXOpeningElement(path) {
343
- // Only handle simple <ComponentName ... /> elements
344
- if (!t.isJSXIdentifier(path.node.name))
345
- return;
346
- const tagName = path.node.name.name;
347
- const childInfo = depMap.get(tagName);
348
- if (!childInfo)
349
- return; // Not a known dependency component
350
- // Full list used for typo detection (accepts both raw event names and on-prefixed)
351
- const allValidPropNames = [
352
- ...Array.from(childInfo.propertyNames),
353
- ...Array.from(childInfo.eventPropNames),
354
- ];
355
- // Display list for error messages: only show on-prefixed callback form of events
356
- const displayPropNames = [
357
- ...Array.from(childInfo.propertyNames),
358
- ...Array.from(childInfo.eventPropNames).filter((n) => n.startsWith('on')),
359
- ];
360
- for (const attr of path.node.attributes) {
361
- // Skip spread attributes like {...props}
362
- if (t.isJSXSpreadAttribute(attr))
363
- continue;
364
- const attrName = attr.name && t.isJSXIdentifier(attr.name) ? attr.name.name : null;
365
- if (!attrName)
366
- continue;
367
- // Skip standard props that are always valid
368
- if (STANDARD_CHILD_PROPS.has(attrName))
369
- continue;
370
- // Skip event prop names
371
- if (childInfo.eventPropNames.has(attrName))
372
- continue;
373
- const line = attr.loc?.start.line ?? 0;
374
- const column = attr.loc?.start.column ?? 0;
375
- // Check if the prop exists exactly
376
- if (childInfo.propertyNames.has(attrName)) {
377
- // Prop exists -- check type compatibility
378
- validatePropType(violations, tagName, attrName, attr, childInfo, variableTypes, line, column);
379
- continue;
380
- }
381
- // Prop name not found -- check for case mismatch
382
- const lowerAttrName = attrName.toLowerCase();
383
- const caseMatch = childInfo.propertyByNameLower.get(lowerAttrName);
384
- if (caseMatch) {
385
- violations.push({
386
- rule: 'child-component-prop-validation',
387
- severity: 'medium',
388
- line,
389
- column,
390
- message: `Prop "${attrName}" on <${tagName}> has incorrect casing. ` +
391
- `The correct prop name is "${caseMatch.name}".`,
392
- suggestion: {
393
- text: `Change "${attrName}" to "${caseMatch.name}"`,
394
- example: `<${tagName} ${caseMatch.name}={...} />`,
395
- },
396
- });
397
- continue;
398
- }
399
- // Check for typo via Levenshtein distance
400
- const typoMatch = findClosestPropName(attrName, allValidPropNames);
401
- if (typoMatch) {
402
- violations.push({
403
- rule: 'child-component-prop-validation',
404
- severity: 'high',
405
- line,
406
- column,
407
- message: `Prop "${attrName}" does not exist on <${tagName}>. ` +
408
- `Did you mean "${typoMatch.name}"?`,
409
- suggestion: {
410
- text: `Change "${attrName}" to "${typoMatch.name}"`,
411
- example: `<${tagName} ${typoMatch.name}={...} />`,
412
- },
413
- });
414
- continue;
415
- }
416
- // No match at all -- nonexistent prop
417
- const availableProps = displayPropNames.length > 0
418
- ? ` Available props: ${displayPropNames.join(', ')}.`
419
- : '';
420
- violations.push({
421
- rule: 'child-component-prop-validation',
422
- severity: 'high',
423
- line,
424
- column,
425
- message: `Prop "${attrName}" does not exist on <${tagName}>.${availableProps}`,
426
- suggestion: {
427
- text: `Remove "${attrName}" or use one of the available props defined in the ${tagName} component spec.`,
428
- example: displayPropNames.length > 0
429
- ? `<${tagName} ${displayPropNames[0]}={...} />`
430
- : `<${tagName} />`,
431
- },
432
- });
433
- }
434
- },
435
- });
436
- return violations;
437
- }
438
- };
439
- ChildComponentPropValidationRule = __decorate([
440
- RegisterClass(BaseLintRule, 'child-component-prop-validation')
441
- ], ChildComponentPropValidationRule);
442
- export { ChildComponentPropValidationRule };
443
- //# sourceMappingURL=child-component-prop-validation.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"child-component-prop-validation.js","sourceRoot":"","sources":["../../../src/lib/runtime-rules/child-component-prop-validation.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,QAAQ,EAAY,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACxE,OAAO,KAAK,CAAC,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAI5C,OAAO,EAAE,6BAA6B,EAAE,MAAM,sCAAsC,CAAC;AAErF;;;;;;;;;;;;;;GAcG;AAEH,+EAA+E;AAC/E,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAC;IACnC,WAAW;IACX,QAAQ;IACR,YAAY;IACZ,WAAW;IACX,mBAAmB;IACnB,oBAAoB;IACpB,KAAK;IACL,KAAK;IACL,UAAU;CACX,CAAC,CAAC;AAGH;;;GAGG;AACH,SAAS,mBAAmB,CAAC,MAAoC;IAC/D,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAC;IACjC,IAAI,CAAC,MAAM;QAAE,OAAO,MAAM,CAAC;IAC3B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;YACf,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACvB,MAAM,UAAU,GAAG,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACnF,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,mBAAmB,CAC1B,IAAyC,EACzC,aAAkC;IAElC,IAAI,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC1E,IAAI,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC9C,IAAI,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC;QAAE,OAAO,SAAS,CAAC;IAC/C,IAAI,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC;QAAE,OAAO,OAAO,CAAC;IAC9C,IAAI,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC;QAAE,OAAO,QAAQ,CAAC;IAChD,IAAI,CAAC,CAAC,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,oBAAoB,CAAC,IAAI,CAAC;QAAE,OAAO,UAAU,CAAC;IACzF,IAAI,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAEvC,IAAI,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;QACzB,OAAO,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;IAC9C,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,SAAS,cAAc,CAAC,IAAoC;IAC1D,IAAI,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC1E,IAAI,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC9C,IAAI,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC;QAAE,OAAO,SAAS,CAAC;IAC/C,IAAI,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC;QAAE,OAAO,OAAO,CAAC;IAC9C,IAAI,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC;QAAE,OAAO,QAAQ,CAAC;IAChD,IAAI,CAAC,CAAC,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,oBAAoB,CAAC,IAAI,CAAC;QAAE,OAAO,UAAU,CAAC;IACzF,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,SAAS,iBAAiB,CAAC,QAAgB;IACzC,MAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC;IAC5C,IAAI,KAAK,KAAK,QAAQ;QAAE,OAAO,QAAQ,CAAC;IACxC,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,OAAO;QAAE,OAAO,QAAQ,CAAC;IACpF,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,MAAM;QAAE,OAAO,SAAS,CAAC;IAC9D,IAAI,KAAK,KAAK,OAAO,IAAI,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,OAAO,CAAC;IAC5F,IAAI,KAAK,KAAK,QAAQ;QAAE,OAAO,QAAQ,CAAC;IACxC,IAAI,KAAK,KAAK,UAAU;QAAE,OAAO,UAAU,CAAC;IAC5C,IAAI,KAAK,KAAK,KAAK;QAAE,OAAO,IAAI,CAAC,CAAC,2BAA2B;IAC7D,OAAO,IAAI,CAAC,CAAC,2CAA2C;AAC1D,CAAC;AAED;;;GAGG;AACH,SAAS,kBAAkB,CAAC,UAAkB,EAAE,YAAoB;IAClE,IAAI,UAAU,KAAK,YAAY;QAAE,OAAO,IAAI,CAAC;IAC7C,yFAAyF;IACzF,IAAI,CAAC,UAAU,KAAK,QAAQ,IAAI,YAAY,KAAK,OAAO,CAAC;QACrD,CAAC,UAAU,KAAK,OAAO,IAAI,YAAY,KAAK,QAAQ,CAAC;QAAE,OAAO,IAAI,CAAC;IACvE,0EAA0E;IAC1E,IAAI,UAAU,KAAK,QAAQ,IAAI,YAAY,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACtE,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,SAAS,mBAAmB,CAC1B,QAAgB,EAChB,UAAoB;IAEpB,IAAI,SAAS,GAA8C,IAAI,CAAC;IAChE,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC9B,MAAM,IAAI,GAAG,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACjD,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,SAAS,IAAI,IAAI,GAAG,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC3D,SAAS,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QACvC,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAUD;;;;GAIG;AACH,SAAS,iBAAiB,CACxB,GAAkB;IAElB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,6BAA6B,CAAC,QAAQ,CAAC;QAEtD,MAAM,iBAAiB,GAAG,MAAM,CAAC,aAAa,CAC5C,GAAG,CAAC,IAAI,EACR,GAAG,CAAC,SAAS,EACb,GAAG,CAAC,QAAQ,CACb,CAAC;QACF,IAAI,iBAAiB,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;YAChD,OAAO;gBACL,UAAU,EAAE,iBAAiB,CAAC,IAAI,CAAC,UAAU;gBAC7C,MAAM,EAAE,iBAAiB,CAAC,IAAI,CAAC,MAAM;aACtC,CAAC;QACJ,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,4DAA4D;IAC9D,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;;GAMG;AACH,SAAS,kBAAkB,CACzB,YAAyC,EACzC,QAAqB;IAErB,MAAM,MAAM,GAAG,IAAI,GAAG,EAA8B,CAAC;IACrD,IAAI,CAAC,YAAY;QAAE,OAAO,MAAM,CAAC;IAEjC,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;QAC/B,IAAI,CAAC,GAAG,CAAC,IAAI;YAAE,SAAS;QAExB,IAAI,UAAU,GAAG,GAAG,CAAC,UAAU,IAAI,EAAE,CAAC;QACtC,IAAI,MAAM,GAAiC,GAAG,CAAC,MAAM,CAAC;QAEtD,2DAA2D;QAC3D,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,MAAM,cAAc,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;YAC9C,IAAI,cAAc,EAAE,CAAC;gBACnB,UAAU,GAAG,cAAc,CAAC,UAAU,CAAC;gBACvC,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC;YACjC,CAAC;QACH,CAAC;QAED,4EAA4E;QAC5E,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,QAAQ,CAAC,IAAI,CAAC;gBACZ,IAAI,EAAE,iCAAiC;gBACvC,QAAQ,EAAE,KAAK;gBACf,IAAI,EAAE,CAAC;gBACP,MAAM,EAAE,CAAC;gBACT,OAAO,EACL,iCAAiC,GAAG,CAAC,IAAI,qCAAqC;oBAC9E,iFAAiF;oBACjF,0BAA0B;aAC7B,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QAED,MAAM,aAAa,GAAG,IAAI,GAAG,EAAU,CAAC;QACxC,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAA6B,CAAC;QAEjE,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;YAC9B,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7B,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,CAAC;QACzD,CAAC;QAED,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE;YACnB,UAAU;YACV,MAAM;YACN,aAAa;YACb,cAAc,EAAE,mBAAmB,CAAC,MAAM,CAAC;YAC3C,mBAAmB;SACpB,CAAC,CAAC;IACL,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;GAGG;AACH,SAAS,oBAAoB,CAAC,GAAW;IACvC,MAAM,aAAa,GAAG,IAAI,GAAG,EAAkB,CAAC;IAEhD,QAAQ,CAAC,GAAG,EAAE;QACZ,kBAAkB,CAAC,IAAoC;YACrD,uDAAuD;YACvD,IACE,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC9B,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;gBAClC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;gBACrC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,UAAU,EACzC,CAAC;gBACD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC;gBACvC,IAAI,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;oBAChG,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;oBACjC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;oBAC5C,IAAI,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC;wBAC5B,MAAM,YAAY,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;wBAC7C,IAAI,YAAY,EAAE,CAAC;4BACjB,aAAa,CAAC,GAAG,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;wBAC3C,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;KACF,CAAC,CAAC;IAEH,OAAO,aAAa,CAAC;AACvB,CAAC;AAED;;GAEG;AACH,SAAS,gBAAgB,CACvB,UAAuB,EACvB,OAAe,EACf,QAAgB,EAChB,IAAoB,EACpB,SAA6B,EAC7B,aAAkC,EAClC,IAAY,EACZ,MAAc;IAEd,yBAAyB;IACzB,MAAM,QAAQ,GAAG,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;IACvE,IAAI,CAAC,QAAQ;QAAE,OAAO;IAEtB,MAAM,YAAY,GAAG,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACtD,IAAI,CAAC,YAAY;QAAE,OAAO,CAAC,8CAA8C;IAEzE,qCAAqC;IACrC,MAAM,SAAS,GAAG,+BAA+B,CAAC,IAAI,CAAC,CAAC;IACxD,IAAI,CAAC,SAAS;QAAE,OAAO;IAEvB,MAAM,UAAU,GAAG,mBAAmB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;IACjE,IAAI,CAAC,UAAU;QAAE,OAAO,CAAC,8BAA8B;IAEvD,IAAI,CAAC,kBAAkB,CAAC,UAAU,EAAE,YAAY,CAAC,EAAE,CAAC;QAClD,UAAU,CAAC,IAAI,CAAC;YACd,IAAI,EAAE,iCAAiC;YACvC,QAAQ,EAAE,MAAM;YAChB,IAAI;YACJ,MAAM;YACN,OAAO,EACL,0BAA0B,QAAQ,SAAS,OAAO,KAAK;gBACvD,aAAa,YAAY,cAAc,UAAU,IAAI;YACvD,UAAU,EAAE;gBACV,IAAI,EAAE,+BAA+B,QAAQ,iBAAiB,YAAY,IAAI;gBAC9E,OAAO,EAAE,mBAAmB,CAAC,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,UAAU,CAAC;aAC1E;SACF,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,+BAA+B,CACtC,IAAoB;IAEpB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IACzB,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC,CAAC,2CAA2C;IAEpE,IAAI,CAAC,CAAC,wBAAwB,CAAC,KAAK,CAAC,EAAE,CAAC;QACtC,OAAO,KAAK,CAAC,UAAU,CAAC;IAC1B,CAAC;IACD,IAAI,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,SAAS,mBAAmB,CAC1B,OAAe,EACf,QAAgB,EAChB,YAAoB,EACpB,UAAkB;IAElB,MAAM,WAAW,GAA2C;QAC1D,MAAM,EAAE;YACN,MAAM,EAAE,iEAAiE,OAAO,IAAI,QAAQ,cAAc;SAC3G;QACD,MAAM,EAAE;YACN,MAAM,EAAE,kCAAkC,OAAO,IAAI,QAAQ,qBAAqB;YAClF,KAAK,EAAE,8CAA8C,OAAO,IAAI,QAAQ,wBAAwB;SACjG;QACD,OAAO,EAAE;YACP,MAAM,EAAE,4BAA4B,OAAO,IAAI,QAAQ,iBAAiB;YACxE,MAAM,EAAE,4BAA4B,OAAO,IAAI,QAAQ,wBAAwB;SAChF;QACD,KAAK,EAAE;YACL,MAAM,EAAE,iCAAiC,OAAO,IAAI,QAAQ,wBAAwB;SACrF;KACF,CAAC;IAEF,OAAO,WAAW,CAAC,YAAY,CAAC,EAAE,CAAC,UAAU,CAAC;WACzC,IAAI,OAAO,IAAI,QAAQ,kBAAkB,YAAY,eAAe,CAAC;AAC5E,CAAC;AAGM,IAAM,gCAAgC,GAAtC,MAAM,gCAAiC,SAAQ,YAAY;IAChE,IAAI,IAAI,KAAK,OAAO,iCAAiC,CAAC,CAAC,CAAC;IACxD,IAAI,SAAS,KAA+B,OAAO,KAAK,CAAC,CAAC,CAAC;IAE3D,IAAI,CAAC,GAAW,EAAE,cAAsB,EAAE,aAA6B;QACrE,MAAM,UAAU,GAAgB,EAAE,CAAC;QAEnC,0CAA0C;QAC1C,IAAI,CAAC,aAAa,EAAE,YAAY,IAAI,aAAa,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5E,OAAO,UAAU,CAAC;QACpB,CAAC;QAED,MAAM,MAAM,GAAG,kBAAkB,CAAC,aAAa,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;QAC1E,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC;YAAE,OAAO,UAAU,CAAC;QAEzC,+DAA+D;QAC/D,MAAM,aAAa,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC;QAEhD,QAAQ,CAAC,GAAG,EAAE;YACZ,iBAAiB,CAAC,IAAmC;gBACnD,oDAAoD;gBACpD,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;oBAAE,OAAO;gBAE/C,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;gBACpC,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBACtC,IAAI,CAAC,SAAS;oBAAE,OAAO,CAAC,mCAAmC;gBAE3D,mFAAmF;gBACnF,MAAM,iBAAiB,GAAG;oBACxB,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC;oBACtC,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC;iBACxC,CAAC;gBAEF,iFAAiF;gBACjF,MAAM,gBAAgB,GAAG;oBACvB,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC;oBACtC,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;iBAC1E,CAAC;gBAEF,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;oBACxC,yCAAyC;oBACzC,IAAI,CAAC,CAAC,oBAAoB,CAAC,IAAI,CAAC;wBAAE,SAAS;oBAE3C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;oBACnF,IAAI,CAAC,QAAQ;wBAAE,SAAS;oBAExB,4CAA4C;oBAC5C,IAAI,oBAAoB,CAAC,GAAG,CAAC,QAAQ,CAAC;wBAAE,SAAS;oBAEjD,wBAAwB;oBACxB,IAAI,SAAS,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC;wBAAE,SAAS;oBAErD,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC;oBACvC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC;oBAE3C,mCAAmC;oBACnC,IAAI,SAAS,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;wBAC1C,0CAA0C;wBAC1C,gBAAgB,CACd,UAAU,EACV,OAAO,EACP,QAAQ,EACR,IAAI,EACJ,SAAS,EACT,aAAa,EACb,IAAI,EACJ,MAAM,CACP,CAAC;wBACF,SAAS;oBACX,CAAC;oBAED,iDAAiD;oBACjD,MAAM,aAAa,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;oBAC7C,MAAM,SAAS,GAAG,SAAS,CAAC,mBAAmB,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;oBACnE,IAAI,SAAS,EAAE,CAAC;wBACd,UAAU,CAAC,IAAI,CAAC;4BACd,IAAI,EAAE,iCAAiC;4BACvC,QAAQ,EAAE,QAAQ;4BAClB,IAAI;4BACJ,MAAM;4BACN,OAAO,EACL,SAAS,QAAQ,SAAS,OAAO,0BAA0B;gCAC3D,6BAA6B,SAAS,CAAC,IAAI,IAAI;4BACjD,UAAU,EAAE;gCACV,IAAI,EAAE,WAAW,QAAQ,SAAS,SAAS,CAAC,IAAI,GAAG;gCACnD,OAAO,EAAE,IAAI,OAAO,IAAI,SAAS,CAAC,IAAI,WAAW;6BAClD;yBACF,CAAC,CAAC;wBACH,SAAS;oBACX,CAAC;oBAED,0CAA0C;oBAC1C,MAAM,SAAS,GAAG,mBAAmB,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC;oBACnE,IAAI,SAAS,EAAE,CAAC;wBACd,UAAU,CAAC,IAAI,CAAC;4BACd,IAAI,EAAE,iCAAiC;4BACvC,QAAQ,EAAE,MAAM;4BAChB,IAAI;4BACJ,MAAM;4BACN,OAAO,EACL,SAAS,QAAQ,wBAAwB,OAAO,KAAK;gCACrD,iBAAiB,SAAS,CAAC,IAAI,IAAI;4BACrC,UAAU,EAAE;gCACV,IAAI,EAAE,WAAW,QAAQ,SAAS,SAAS,CAAC,IAAI,GAAG;gCACnD,OAAO,EAAE,IAAI,OAAO,IAAI,SAAS,CAAC,IAAI,WAAW;6BAClD;yBACF,CAAC,CAAC;wBACH,SAAS;oBACX,CAAC;oBAED,sCAAsC;oBACtC,MAAM,cAAc,GAAG,gBAAgB,CAAC,MAAM,GAAG,CAAC;wBAChD,CAAC,CAAC,qBAAqB,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;wBACrD,CAAC,CAAC,EAAE,CAAC;oBAEP,UAAU,CAAC,IAAI,CAAC;wBACd,IAAI,EAAE,iCAAiC;wBACvC,QAAQ,EAAE,MAAM;wBAChB,IAAI;wBACJ,MAAM;wBACN,OAAO,EACL,SAAS,QAAQ,wBAAwB,OAAO,KAAK,cAAc,EAAE;wBACvE,UAAU,EAAE;4BACV,IAAI,EAAE,WAAW,QAAQ,sDAAsD,OAAO,kBAAkB;4BACxG,OAAO,EAAE,gBAAgB,CAAC,MAAM,GAAG,CAAC;gCAClC,CAAC,CAAC,IAAI,OAAO,IAAI,gBAAgB,CAAC,CAAC,CAAC,WAAW;gCAC/C,CAAC,CAAC,IAAI,OAAO,KAAK;yBACrB;qBACF,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;SACF,CAAC,CAAC;QAEH,OAAO,UAAU,CAAC;IACpB,CAAC;CACF,CAAA;AAvIY,gCAAgC;IAD5C,aAAa,CAAC,YAAY,EAAE,iCAAiC,CAAC;GAClD,gCAAgC,CAuI5C"}
@@ -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
- import { ComponentSpec } from '@memberjunction/interactive-component-types';
5
- /**
6
- * Rule: component-name-mismatch
7
- *
8
- * Ensures that the component function name matches the name specified in the ComponentSpec.
9
- * The function name must match exactly, including capitalization.
10
- *
11
- * Severity: critical
12
- * Applies to: all components
13
- */
14
- export declare class ComponentNameMismatchRule extends BaseLintRule {
15
- get Name(): string;
16
- get AppliesTo(): 'all' | 'child' | 'root';
17
- Test(ast: t.File, componentName: string, componentSpec?: ComponentSpec): Violation[];
18
- }
19
- //# sourceMappingURL=component-name-mismatch.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"component-name-mismatch.d.ts","sourceRoot":"","sources":["../../../src/lib/runtime-rules/component-name-mismatch.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;AAE5E;;;;;;;;GAQG;AACH,qBACa,yBAA0B,SAAQ,YAAY;IACzD,IAAI,IAAI,WAAwC;IAChD,IAAI,SAAS,IAAI,KAAK,GAAG,OAAO,GAAG,MAAM,CAAkB;IAE3D,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,aAAa,GAAG,SAAS,EAAE;CA+DrF"}
@@ -1,82 +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 { RegisterClass } from '@memberjunction/global';
9
- import { BaseLintRule } from '../lint-rule.js';
10
- /**
11
- * Rule: component-name-mismatch
12
- *
13
- * Ensures that the component function name matches the name specified in the ComponentSpec.
14
- * The function name must match exactly, including capitalization.
15
- *
16
- * Severity: critical
17
- * Applies to: all components
18
- */
19
- let ComponentNameMismatchRule = class ComponentNameMismatchRule extends BaseLintRule {
20
- get Name() { return 'component-name-mismatch'; }
21
- get AppliesTo() { return 'all'; }
22
- Test(ast, componentName, componentSpec) {
23
- const violations = [];
24
- // The expected component name from the spec
25
- const expectedName = componentSpec?.name || componentName;
26
- // Find the main function declaration
27
- let foundMainFunction = false;
28
- traverse(ast, {
29
- FunctionDeclaration(path) {
30
- // Only check top-level function declarations
31
- if (path.parent === ast.program && path.node.id) {
32
- const funcName = path.node.id.name;
33
- // Check if this looks like the main component function
34
- // (starts with capital letter and has the typical props parameter)
35
- if (/^[A-Z]/.test(funcName)) {
36
- foundMainFunction = true;
37
- // Check if the function name matches the spec name
38
- if (funcName !== expectedName) {
39
- violations.push({
40
- rule: 'component-name-mismatch',
41
- severity: 'critical',
42
- line: path.node.loc?.start.line || 0,
43
- column: path.node.loc?.start.column || 0,
44
- message: `Component function name "${funcName}" does not match the spec name "${expectedName}". The function must be named exactly as specified in the component spec. Rename the function to: function ${expectedName}(...)`,
45
- code: `function ${funcName}(...)`,
46
- });
47
- }
48
- // Also check that the first letter case matches
49
- const expectedFirstChar = expectedName.charAt(0);
50
- const actualFirstChar = funcName.charAt(0);
51
- if (expectedFirstChar !== actualFirstChar && expectedName.toLowerCase() === funcName.toLowerCase()) {
52
- violations.push({
53
- rule: 'component-name-mismatch',
54
- severity: 'critical',
55
- line: path.node.loc?.start.line || 0,
56
- column: path.node.loc?.start.column || 0,
57
- message: `Component function name "${funcName}" has incorrect capitalization. Expected "${expectedName}" (note the case of the first letter). The function name must match exactly, including capitalization: function ${expectedName}(...)`,
58
- code: `function ${funcName}(...)`,
59
- });
60
- }
61
- }
62
- }
63
- },
64
- });
65
- // If we didn't find a main function with the expected name
66
- if (!foundMainFunction && componentSpec?.name) {
67
- violations.push({
68
- rule: 'component-name-mismatch',
69
- severity: 'critical',
70
- line: 1,
71
- column: 0,
72
- message: `No function declaration found with the expected name "${expectedName}". The main component function must be named exactly as specified in the spec. Add a function declaration: function ${expectedName}({ utilities, styles, components, callbacks, savedUserSettings, onSaveUserSettings }) { ... }`,
73
- });
74
- }
75
- return violations;
76
- }
77
- };
78
- ComponentNameMismatchRule = __decorate([
79
- RegisterClass(BaseLintRule, 'component-name-mismatch')
80
- ], ComponentNameMismatchRule);
81
- export { ComponentNameMismatchRule };
82
- //# sourceMappingURL=component-name-mismatch.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"component-name-mismatch.js","sourceRoot":"","sources":["../../../src/lib/runtime-rules/component-name-mismatch.ts"],"names":[],"mappings":"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"}
@@ -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
- import { ComponentSpec } from '@memberjunction/interactive-component-types';
5
- /**
6
- * Rule: component-not-in-dependencies
7
- *
8
- * Ensures that all components accessed via components.X are defined in the
9
- * component spec's dependencies array. Using undefined components will cause
10
- * runtime errors.
11
- *
12
- * Severity: critical (causes runtime errors)
13
- * Applies to: all components
14
- */
15
- export declare class ComponentNotInDependenciesRule extends BaseLintRule {
16
- get Name(): string;
17
- get AppliesTo(): 'all' | 'child' | 'root';
18
- Test(ast: t.File, componentName: string, componentSpec?: ComponentSpec): Violation[];
19
- }
20
- //# sourceMappingURL=component-not-in-dependencies.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"component-not-in-dependencies.d.ts","sourceRoot":"","sources":["../../../src/lib/runtime-rules/component-not-in-dependencies.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;AAE5E;;;;;;;;;GASG;AACH,qBACa,8BAA+B,SAAQ,YAAY;IAC9D,IAAI,IAAI,WAA8C;IACtD,IAAI,SAAS,IAAI,KAAK,GAAG,OAAO,GAAG,MAAM,CAAkB;IAE3D,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,aAAa,GAAG,SAAS,EAAE;CAyErF"}