@adaptabletools/adaptable-mcp 0.1.0-canary.1 → 0.1.0-canary.2

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 (271) hide show
  1. package/README.md +3 -1
  2. package/data/changes/21-22.json +542 -0
  3. package/data/changes/22-23.json +639 -0
  4. package/data/changes/23-24.json +1874 -0
  5. package/data/manifest.snapshot.json +28 -10
  6. package/data/templates/angular/src/app/adaptableOptions.ts +40 -0
  7. package/data/templates/angular/src/app/agGridModules.ts +7 -0
  8. package/data/templates/angular/src/app/app.component.ts +66 -0
  9. package/data/templates/angular/src/app/app.module.ts +14 -0
  10. package/data/templates/angular/src/app/columnDefs.ts +121 -0
  11. package/data/templates/angular/src/app/gridOptions.ts +32 -0
  12. package/data/templates/angular/src/app/onAdaptableReady.ts +11 -0
  13. package/data/templates/angular/src/app/rowData.ts +851 -0
  14. package/data/templates/angular/src/app/styles.css +50 -0
  15. package/data/templates/angular/src/index.html +17 -0
  16. package/data/templates/angular/src/main.ts +18 -0
  17. package/data/templates/angular/src/polyfills.ts +1 -0
  18. package/data/templates/angular/tsconfig.json +16 -0
  19. package/data/templates/manifest.json +406 -0
  20. package/data/templates/react/src/App.tsx +71 -0
  21. package/data/templates/react/src/adaptableOptions.ts +40 -0
  22. package/data/templates/react/src/agGridModules.ts +7 -0
  23. package/data/templates/react/src/columnDefs.ts +121 -0
  24. package/data/templates/react/src/gridOptions.ts +32 -0
  25. package/data/templates/react/src/index.tsx +8 -0
  26. package/data/templates/react/src/onAdaptableReady.ts +11 -0
  27. package/data/templates/react/src/rowData.ts +851 -0
  28. package/data/templates/react/src/styles.css +50 -0
  29. package/data/templates/react/tsconfig.json +9 -0
  30. package/data/templates/vanilla/index.html +18 -0
  31. package/data/templates/vanilla/src/adaptableOptions.ts +40 -0
  32. package/data/templates/vanilla/src/agGridModules.ts +7 -0
  33. package/data/templates/vanilla/src/columnDefs.ts +121 -0
  34. package/data/templates/vanilla/src/gridOptions.ts +32 -0
  35. package/data/templates/vanilla/src/index.ts +41 -0
  36. package/data/templates/vanilla/src/onAdaptableReady.ts +11 -0
  37. package/data/templates/vanilla/src/rowData.ts +851 -0
  38. package/data/templates/vanilla/src/styles.css +50 -0
  39. package/data/templates/vanilla/tsconfig.json +14 -0
  40. package/data/templates/vue/.babelrc +3 -0
  41. package/data/templates/vue/public/index.html +19 -0
  42. package/data/templates/vue/src/App.vue +35 -0
  43. package/data/templates/vue/src/adaptableOptions.ts +40 -0
  44. package/data/templates/vue/src/agGridModules.ts +7 -0
  45. package/data/templates/vue/src/columnDefs.ts +121 -0
  46. package/data/templates/vue/src/gridOptions.ts +32 -0
  47. package/data/templates/vue/src/main.ts +6 -0
  48. package/data/templates/vue/src/onAdaptableReady.ts +11 -0
  49. package/data/templates/vue/src/rowData.ts +851 -0
  50. package/data/templates/vue/src/shims-vue.d.ts +6 -0
  51. package/data/templates/vue/src/styles.css +50 -0
  52. package/data/templates/vue/tsconfig.json +30 -0
  53. package/dist/bin.js +7 -0
  54. package/dist/bin.js.map +1 -1
  55. package/dist/cli/index.js +8 -0
  56. package/dist/cli/index.js.map +1 -1
  57. package/dist/core/anonymise/anonymise.js +315 -0
  58. package/dist/core/anonymise/anonymise.js.map +1 -0
  59. package/dist/core/anonymise/capabilities.js +94 -0
  60. package/dist/core/anonymise/capabilities.js.map +1 -0
  61. package/dist/core/aql/capabilities.js +339 -0
  62. package/dist/core/aql/capabilities.js.map +1 -0
  63. package/dist/core/aql/check.js +204 -0
  64. package/dist/core/aql/check.js.map +1 -0
  65. package/dist/core/aql/engine.js +92 -0
  66. package/dist/core/aql/engine.js.map +1 -0
  67. package/dist/core/aql/functions.js +108 -0
  68. package/dist/core/aql/functions.js.map +1 -0
  69. package/dist/core/aql/migrate.js +62 -0
  70. package/dist/core/aql/migrate.js.map +1 -0
  71. package/dist/core/capabilities.js +9 -3
  72. package/dist/core/capabilities.js.map +1 -1
  73. package/dist/core/changes/capabilities.js +92 -0
  74. package/dist/core/changes/capabilities.js.map +1 -0
  75. package/dist/core/changes/changes.js +101 -0
  76. package/dist/core/changes/changes.js.map +1 -0
  77. package/dist/core/changes/grep.js +183 -0
  78. package/dist/core/changes/grep.js.map +1 -0
  79. package/dist/core/changes/records.js +172 -0
  80. package/dist/core/changes/records.js.map +1 -0
  81. package/dist/core/changes/render-md.js +101 -0
  82. package/dist/core/changes/render-md.js.map +1 -0
  83. package/dist/core/changes/with-docs.js +86 -0
  84. package/dist/core/changes/with-docs.js.map +1 -0
  85. package/dist/core/compat/capabilities.js +1 -1
  86. package/dist/core/compat/capabilities.js.map +1 -1
  87. package/dist/core/context/capabilities.js +1 -1
  88. package/dist/core/context/capabilities.js.map +1 -1
  89. package/dist/core/convert/capabilities.js +86 -0
  90. package/dist/core/convert/capabilities.js.map +1 -0
  91. package/dist/core/convert/coldefs.js +313 -0
  92. package/dist/core/convert/coldefs.js.map +1 -0
  93. package/dist/core/docs/cache.js +1 -1
  94. package/dist/core/docs/capabilities.js +1 -5
  95. package/dist/core/docs/capabilities.js.map +1 -1
  96. package/dist/core/docs/hosts.js +2 -2
  97. package/dist/core/docs/hosts.js.map +1 -1
  98. package/dist/core/extract/imports.js +163 -0
  99. package/dist/core/extract/imports.js.map +1 -0
  100. package/dist/core/extract/input.js +140 -0
  101. package/dist/core/extract/input.js.map +1 -0
  102. package/dist/core/extract/line-map.js +90 -0
  103. package/dist/core/extract/line-map.js.map +1 -0
  104. package/dist/core/extract/ts-literal.js +963 -0
  105. package/dist/core/extract/ts-literal.js.map +1 -0
  106. package/dist/core/migrate/capabilities.js +143 -0
  107. package/dist/core/migrate/capabilities.js.map +1 -0
  108. package/dist/core/migrate/leftovers.js +119 -0
  109. package/dist/core/migrate/leftovers.js.map +1 -0
  110. package/dist/core/migrate/state.js +295 -0
  111. package/dist/core/migrate/state.js.map +1 -0
  112. package/dist/core/packages/cache.js +2 -1
  113. package/dist/core/packages/cache.js.map +1 -1
  114. package/dist/core/register.js +8 -0
  115. package/dist/core/register.js.map +1 -1
  116. package/dist/core/scaffold/capabilities.js +434 -0
  117. package/dist/core/scaffold/capabilities.js.map +1 -0
  118. package/dist/core/scaffold/generate.js +409 -0
  119. package/dist/core/scaffold/generate.js.map +1 -0
  120. package/dist/core/scaffold/infer.js +441 -0
  121. package/dist/core/scaffold/infer.js.map +1 -0
  122. package/dist/core/scaffold/overlay.js +290 -0
  123. package/dist/core/scaffold/overlay.js.map +1 -0
  124. package/dist/core/scaffold/readers/csv.js +146 -0
  125. package/dist/core/scaffold/readers/csv.js.map +1 -0
  126. package/dist/core/scaffold/readers/dataset.js +53 -0
  127. package/dist/core/scaffold/readers/dataset.js.map +1 -0
  128. package/dist/core/scaffold/readers/index.js +62 -0
  129. package/dist/core/scaffold/readers/index.js.map +1 -0
  130. package/dist/core/scaffold/readers/json.js +101 -0
  131. package/dist/core/scaffold/readers/json.js.map +1 -0
  132. package/dist/core/scaffold/readers/xlsx.js +81 -0
  133. package/dist/core/scaffold/readers/xlsx.js.map +1 -0
  134. package/dist/core/scaffold/suggestions.js +57 -0
  135. package/dist/core/scaffold/suggestions.js.map +1 -0
  136. package/dist/core/scaffold/templates.js +59 -0
  137. package/dist/core/scaffold/templates.js.map +1 -0
  138. package/dist/core/setup/audit.js +91 -0
  139. package/dist/core/setup/audit.js.map +1 -0
  140. package/dist/core/setup/capabilities.js +80 -0
  141. package/dist/core/setup/capabilities.js.map +1 -0
  142. package/dist/core/setup/context.js +118 -0
  143. package/dist/core/setup/context.js.map +1 -0
  144. package/dist/core/setup/rules/cell-data-type.js +40 -0
  145. package/dist/core/setup/rules/cell-data-type.js.map +1 -0
  146. package/dist/core/setup/rules/coldef-ownership.js +67 -0
  147. package/dist/core/setup/rules/coldef-ownership.js.map +1 -0
  148. package/dist/core/setup/rules/css-import.js +34 -0
  149. package/dist/core/setup/rules/css-import.js.map +1 -0
  150. package/dist/core/setup/rules/direct-grid.js +42 -0
  151. package/dist/core/setup/rules/direct-grid.js.map +1 -0
  152. package/dist/core/setup/rules/index.js +53 -0
  153. package/dist/core/setup/rules/index.js.map +1 -0
  154. package/dist/core/setup/rules/licence-literal.js +23 -0
  155. package/dist/core/setup/rules/licence-literal.js.map +1 -0
  156. package/dist/core/setup/rules/modules.js +86 -0
  157. package/dist/core/setup/rules/modules.js.map +1 -0
  158. package/dist/core/setup/rules/react-stable-refs.js +20 -0
  159. package/dist/core/setup/rules/react-stable-refs.js.map +1 -0
  160. package/dist/core/setup/rules/ready-hook.js +33 -0
  161. package/dist/core/setup/rules/ready-hook.js.map +1 -0
  162. package/dist/core/setup/rules/required-options.js +43 -0
  163. package/dist/core/setup/rules/required-options.js.map +1 -0
  164. package/dist/core/setup/rules/rule.js +10 -0
  165. package/dist/core/setup/rules/rule.js.map +1 -0
  166. package/dist/core/setup/rules/version-skew.js +65 -0
  167. package/dist/core/setup/rules/version-skew.js.map +1 -0
  168. package/dist/core/state/capabilities.js +78 -0
  169. package/dist/core/state/capabilities.js.map +1 -0
  170. package/dist/core/state/check.js +216 -0
  171. package/dist/core/state/check.js.map +1 -0
  172. package/dist/core/state/columns.js +130 -0
  173. package/dist/core/state/columns.js.map +1 -0
  174. package/dist/core/state/did-you-mean.js +83 -0
  175. package/dist/core/state/did-you-mean.js.map +1 -0
  176. package/dist/core/state/expressions.js +170 -0
  177. package/dist/core/state/expressions.js.map +1 -0
  178. package/dist/core/state/known-names.js +96 -0
  179. package/dist/core/state/known-names.js.map +1 -0
  180. package/dist/core/state/rules/aql-legacy-shape.js +42 -0
  181. package/dist/core/state/rules/aql-legacy-shape.js.map +1 -0
  182. package/dist/core/state/rules/aql-missing.js +21 -0
  183. package/dist/core/state/rules/aql-missing.js.map +1 -0
  184. package/dist/core/state/rules/aql-syntax.js +77 -0
  185. package/dist/core/state/rules/aql-syntax.js.map +1 -0
  186. package/dist/core/state/rules/calculated-settings.js +23 -0
  187. package/dist/core/state/rules/calculated-settings.js.map +1 -0
  188. package/dist/core/state/rules/column-id-exists.js +29 -0
  189. package/dist/core/state/rules/column-id-exists.js.map +1 -0
  190. package/dist/core/state/rules/dashboard-module-names.js +31 -0
  191. package/dist/core/state/rules/dashboard-module-names.js.map +1 -0
  192. package/dist/core/state/rules/dashboard-toolbar-names.js +48 -0
  193. package/dist/core/state/rules/dashboard-toolbar-names.js.map +1 -0
  194. package/dist/core/state/rules/format-column-pivot-display-format.js +43 -0
  195. package/dist/core/state/rules/format-column-pivot-display-format.js.map +1 -0
  196. package/dist/core/state/rules/helpers.js +39 -0
  197. package/dist/core/state/rules/helpers.js.map +1 -0
  198. package/dist/core/state/rules/index.js +80 -0
  199. package/dist/core/state/rules/index.js.map +1 -0
  200. package/dist/core/state/rules/layout-column-refs.js +60 -0
  201. package/dist/core/state/rules/layout-column-refs.js.map +1 -0
  202. package/dist/core/state/rules/layout-current-exists.js +27 -0
  203. package/dist/core/state/rules/layout-current-exists.js.map +1 -0
  204. package/dist/core/state/rules/layout-non-empty.js +32 -0
  205. package/dist/core/state/rules/layout-non-empty.js.map +1 -0
  206. package/dist/core/state/rules/rule.js +2 -0
  207. package/dist/core/state/rules/rule.js.map +1 -0
  208. package/dist/core/state/rules/scope-column-refs.js +32 -0
  209. package/dist/core/state/rules/scope-column-refs.js.map +1 -0
  210. package/dist/core/state/rules/scope-shape.js +61 -0
  211. package/dist/core/state/rules/scope-shape.js.map +1 -0
  212. package/dist/core/state/rules/state-unique-name.js +40 -0
  213. package/dist/core/state/rules/state-unique-name.js.map +1 -0
  214. package/dist/core/state/rules/state-unknown-section.js +30 -0
  215. package/dist/core/state/rules/state-unknown-section.js.map +1 -0
  216. package/dist/core/state/rules/type-discriminator.js +70 -0
  217. package/dist/core/state/rules/type-discriminator.js.map +1 -0
  218. package/dist/core/state/type-check.js +349 -83
  219. package/dist/core/state/type-check.js.map +1 -1
  220. package/dist/mcp/index.js +104 -16
  221. package/dist/mcp/index.js.map +1 -1
  222. package/dist/mcp/server.js +110 -0
  223. package/dist/mcp/server.js.map +1 -0
  224. package/dist/skills/adaptable-debug/SKILL.md +145 -0
  225. package/dist/skills/adaptable-debug/VERSION.md +1 -0
  226. package/dist/skills/adaptable-debug/references/_shared/agents-snippet.md +3 -0
  227. package/dist/skills/adaptable-debug/references/_shared/capabilities.md +35 -0
  228. package/dist/skills/adaptable-debug/references/_shared/conversation.md +20 -0
  229. package/dist/skills/adaptable-debug/references/_shared/docs-protocol.md +36 -0
  230. package/dist/skills/adaptable-debug/references/_shared/grounding.md +54 -0
  231. package/dist/skills/adaptable-debug/references/_shared/guards.md +20 -0
  232. package/dist/skills/adaptable-debug/references/_shared/validation-loop.md +42 -0
  233. package/dist/skills/adaptable-debug/references/devtools-api.md +36 -0
  234. package/dist/skills/adaptable-debug/references/feedback-template.md +36 -0
  235. package/dist/skills/adaptable-debug/references/symptoms.md +37 -0
  236. package/dist/skills/adaptable-debug/references/ticket-template.md +50 -0
  237. package/dist/skills/adaptable-dev/SKILL.md +97 -0
  238. package/dist/skills/adaptable-dev/VERSION.md +1 -0
  239. package/dist/skills/adaptable-dev/references/_shared/agents-snippet.md +3 -0
  240. package/dist/skills/adaptable-dev/references/_shared/capabilities.md +35 -0
  241. package/dist/skills/adaptable-dev/references/_shared/conversation.md +20 -0
  242. package/dist/skills/adaptable-dev/references/_shared/docs-protocol.md +36 -0
  243. package/dist/skills/adaptable-dev/references/_shared/grounding.md +54 -0
  244. package/dist/skills/adaptable-dev/references/_shared/guards.md +20 -0
  245. package/dist/skills/adaptable-dev/references/_shared/validation-loop.md +42 -0
  246. package/dist/skills/adaptable-dev/references/recommendations.md +93 -0
  247. package/dist/skills/adaptable-setup/SKILL.md +158 -0
  248. package/dist/skills/adaptable-setup/VERSION.md +1 -0
  249. package/dist/skills/adaptable-setup/references/_shared/agents-snippet.md +3 -0
  250. package/dist/skills/adaptable-setup/references/_shared/capabilities.md +35 -0
  251. package/dist/skills/adaptable-setup/references/_shared/conversation.md +20 -0
  252. package/dist/skills/adaptable-setup/references/_shared/docs-protocol.md +36 -0
  253. package/dist/skills/adaptable-setup/references/_shared/grounding.md +54 -0
  254. package/dist/skills/adaptable-setup/references/_shared/guards.md +20 -0
  255. package/dist/skills/adaptable-setup/references/_shared/validation-loop.md +42 -0
  256. package/dist/skills/adaptable-setup/references/paths.md +45 -0
  257. package/dist/skills/adaptable-upgrade/SKILL.md +269 -0
  258. package/dist/skills/adaptable-upgrade/VERSION.md +1 -0
  259. package/dist/skills/adaptable-upgrade/references/_shared/agents-snippet.md +3 -0
  260. package/dist/skills/adaptable-upgrade/references/_shared/capabilities.md +35 -0
  261. package/dist/skills/adaptable-upgrade/references/_shared/conversation.md +20 -0
  262. package/dist/skills/adaptable-upgrade/references/_shared/docs-protocol.md +36 -0
  263. package/dist/skills/adaptable-upgrade/references/_shared/grounding.md +54 -0
  264. package/dist/skills/adaptable-upgrade/references/_shared/guards.md +20 -0
  265. package/dist/skills/adaptable-upgrade/references/_shared/validation-loop.md +42 -0
  266. package/dist/skills/adaptable-upgrade/references/apply-order.md +171 -0
  267. package/dist/skills/adaptable-upgrade/references/plan-preamble.md +151 -0
  268. package/dist/skills/adaptable-upgrade/scripts/adaptable.mjs +24 -0
  269. package/package.json +11 -5
  270. package/dist/core/state/rules.js +0 -417
  271. package/dist/core/state/rules.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"required-options.js","sourceRoot":"","sources":["../../../../src/core/setup/rules/required-options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,UAAU,EAAmB,MAAM,WAAW,CAAC;AAEzE,2GAA2G;AAC3G,eAAe,eAAe,CAAC;IAC7B,EAAE,EAAE,wBAAwB;IAC5B,IAAI,EAAE,uCAAuC;IAC7C,KAAK,CAAC,GAAG;QACP,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC;QACnC,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YACtE,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,MAAM,MAAM,GAAiB,EAAE,CAAC;QAChC,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QACzC,KAAK,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,YAAY,CAAU,EAAE,CAAC;YACzD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;YAC3B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,EAAE,CAAC;gBACxC,MAAM,CAAC,IAAI,CAAC;oBACV,QAAQ,EAAE,OAAO;oBACjB,IAAI,EAAE,GAAG;oBACT,OAAO,EAAE,+BAA+B,GAAG,KAAK,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,EAAE,GAAG;oBACvG,GAAG,EAAE,GAAG,KAAK,YAAY,CAAC,CAAC,CAAC,mEAAmE,CAAC,CAAC,CAAC,iFAAiF;oBACnL,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;iBAChB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QACD,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;QACtC,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,UAAU,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC;YACzF,MAAM,GAAG,GAAG,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACpE,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC5C,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,WAAW,EAAE,KAAK,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC;gBAC9E,MAAM,CAAC,IAAI,CAAC;oBACV,QAAQ,EAAE,OAAO;oBACjB,IAAI,EAAE,YAAY;oBAClB,OAAO,EAAE,kBAAkB,UAAU,kCAAkC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI;oBAC1J,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,KAAK,oCAAoC,CAAC,CAAC,CAAC,0DAA0D;oBAC3H,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,EAAE,YAAY,CAAC,IAAI,EAAE,CAAC;iBACjD,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,10 @@
1
+ export const defineSetupRule = (rule) => rule;
2
+ /** `{ file, line, column }` of a line-map entry of an extraction, when present */
3
+ export function positionOf(extraction, path, at = 'value') {
4
+ const entry = extraction?.lineMap[path];
5
+ if (!entry) {
6
+ return undefined;
7
+ }
8
+ return at === 'key' ? (entry.key ?? entry.value) : entry.value;
9
+ }
10
+ //# sourceMappingURL=rule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rule.js","sourceRoot":"","sources":["../../../../src/core/setup/rules/rule.ts"],"names":[],"mappings":"AA0BA,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,IAAe,EAAa,EAAE,CAAC,IAAI,CAAC;AAEpE,kFAAkF;AAClF,MAAM,UAAU,UAAU,CAAC,UAAoK,EAAE,IAAY,EAAE,KAAsB,OAAO;IAC1O,MAAM,KAAK,GAAG,UAAU,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACxC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC;AACjE,CAAC"}
@@ -0,0 +1,65 @@
1
+ import { pairingFor } from '../../compat/manifest.js';
2
+ import { satisfies } from '../../context/detect.js';
3
+ import { defineSetupRule } from './rule.js';
4
+ /** `>=20` → `>=20.0.0`, `>=5.4` → `>=5.4.0`: the manifest's minimums in the three-part form `satisfies` reads */
5
+ export function padRange(range) {
6
+ return range.replace(/(\d+)(?:\.(\d+))?(?:\.(\d+))?/g, (_m, a, b, c) => `${a}.${b ?? '0'}.${c ?? '0'}`);
7
+ }
8
+ const FRAMEWORK_PACKAGE = { react: 'react', angular: '@angular/core', vue: 'vue' };
9
+ /**
10
+ * Versions that do not go together: wrapper ≠ core, AG Grid below the documented
11
+ * pairing, framework / TypeScript below the manifest's minimums, AG Grid Community only
12
+ */
13
+ export default defineSetupRule({
14
+ id: 'setup/version-skew',
15
+ docs: 'support/release-schedule',
16
+ check(ctx) {
17
+ const issues = [];
18
+ const { project, manifest, major } = ctx;
19
+ if (project.wrapper?.skew) {
20
+ issues.push({
21
+ severity: 'error',
22
+ message: `${project.wrapper.name} is installed at ${project.wrapper.installed} but @adaptabletools/adaptable at ${project.adaptable.installed}; the wrapper and the core must be the same version.`,
23
+ fix: `Pin both to the same version (\`npm i @adaptabletools/adaptable@${project.adaptable.installed} ${project.wrapper.name}@${project.adaptable.installed}\`).`,
24
+ });
25
+ }
26
+ if (project.agGrid && !project.agGrid.enterprise) {
27
+ issues.push({
28
+ severity: 'error',
29
+ message: `Only ${project.agGrid.name} is installed; AdapTable requires AG Grid Enterprise.`,
30
+ fix: 'Add `ag-grid-enterprise` at the paired version and register `AllEnterpriseModule` (or the Enterprise modules the grid uses).',
31
+ });
32
+ }
33
+ const pairing = pairingFor(manifest, major);
34
+ if (pairing && project.agGrid?.major !== undefined && project.agGrid.major < pairing.agGridMajor) {
35
+ issues.push({
36
+ severity: 'error',
37
+ message: `AG Grid ${project.agGrid.installed ?? project.agGrid.range} is below the version AdapTable ${major} is paired with (AG Grid ${pairing.agGridVersion}).`,
38
+ fix: `Upgrade ${project.agGrid.name} to ${pairing.agGridVersion} (the \`ag-update\` skill does the AG Grid side).`,
39
+ });
40
+ }
41
+ const environment = manifest?.environment?.[String(major)];
42
+ if (environment) {
43
+ const frameworkPackage = FRAMEWORK_PACKAGE[ctx.framework];
44
+ const frameworkMin = frameworkPackage ? environment[ctx.framework] : undefined;
45
+ const frameworkVersion = frameworkPackage ? project.frameworkVersions[frameworkPackage]?.installed : undefined;
46
+ if (frameworkMin && frameworkVersion && satisfies(frameworkVersion, padRange(frameworkMin)) === false) {
47
+ issues.push({
48
+ severity: 'error',
49
+ message: `${frameworkPackage} ${frameworkVersion} is below the ${frameworkMin} AdapTable ${major} requires.`,
50
+ fix: `Upgrade ${frameworkPackage} to ${frameworkMin}.`,
51
+ });
52
+ }
53
+ const ts = project.typescript?.installed;
54
+ if (environment.typescript && ts && satisfies(ts, padRange(environment.typescript)) === false) {
55
+ issues.push({
56
+ severity: 'warning',
57
+ message: `TypeScript ${ts} is below the ${environment.typescript} AdapTable ${major} is built with; its type definitions may not compile.`,
58
+ fix: `Upgrade typescript to ${environment.typescript}.`,
59
+ });
60
+ }
61
+ }
62
+ return issues;
63
+ },
64
+ });
65
+ //# sourceMappingURL=version-skew.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version-skew.js","sourceRoot":"","sources":["../../../../src/core/setup/rules/version-skew.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,78 @@
1
+ /**
2
+ * `adaptable check state <file|-> [--columns <file>] [--kind initial|persistent]` · MCP `check_state` (plan §8.4).
3
+ */
4
+ import { z } from 'zod';
5
+ import { registerCapability } from '../capabilities.js';
6
+ import { CapabilityError, ok } from '../envelope.js';
7
+ import { checkState } from './check.js';
8
+ const Position = z.object({ file: z.string(), line: z.number(), column: z.number() });
9
+ const CheckStateOutput = z.object({
10
+ kind: z.enum(['initial', 'persistent']),
11
+ source: z.object({ file: z.string(), locatedBy: z.string(), line: z.number().optional(), column: z.number().optional() }),
12
+ unverifiable: z.array(Position.extend({ path: z.string(), kind: z.string(), reason: z.string(), suppressed: z.array(z.string()).optional() })),
13
+ checked: z.object({
14
+ shape: z.string(),
15
+ semantics: z.string(),
16
+ columnRefs: z.string(),
17
+ options: z.enum(['visible', 'not visible']),
18
+ aql: z.string(),
19
+ agGridTypes: z.boolean().optional(),
20
+ }),
21
+ rules: z.array(z.string()),
22
+ stats: z.object({ sections: z.number(), layouts: z.number(), expressions: z.number(), columns: z.number().optional() }),
23
+ requiresAnotherCheckAfterFix: z.boolean(),
24
+ });
25
+ registerCapability({
26
+ name: 'check-state',
27
+ description: 'Validates Adaptable State (a JSON file or the literal in a .ts/.tsx/.js/.jsx/.vue file) against the checked major: shape, semantics, column references and AdapTableQL.',
28
+ cli: { command: ['check', 'state'], positionals: ['file'], stdinField: 'text' },
29
+ mcp: { tool: 'check_state' },
30
+ input: z.object({
31
+ file: z.string().optional().describe('State input: JSON / JSONC / JSON5, or a source file holding the literal; `-` reads stdin'),
32
+ text: z.string().optional().describe('The input text itself (stdin); the CLI fills it for `-`'),
33
+ state: z.union([z.string(), z.record(z.string(), z.unknown())]).optional().describe('The State as an object or JSON string (MCP; for a running grid, DevTools getPersistentState())'),
34
+ columns: z.string().optional().describe('Grid columns: a columnDefs JSON / source file, or DevTools getColumns() output'),
35
+ columnsValue: z.array(z.unknown()).optional().describe('The columns as a value (MCP)'),
36
+ kind: z.enum(['initial', 'persistent']).default('initial').describe('`initial` for an initialState literal, `persistent` for a persisted State (every section required)'),
37
+ }),
38
+ output: CheckStateOutput,
39
+ run: async (input, ctx) => {
40
+ const resolution = await ctx.resolveContext();
41
+ const major = resolution.context.adaptableMajor;
42
+ if (major === undefined) {
43
+ throw new CapabilityError('USAGE', 'The AdapTable major to check against could not be determined.', 'Run inside a project that depends on @adaptabletools/adaptable, or pass --major <n>.');
44
+ }
45
+ const result = await checkState({ file: input.file, text: input.text, state: input.state, columns: input.columns, columnsValue: input.columnsValue, kind: input.kind }, { major, projectDir: resolution.project?.path ?? ctx.cwd, offline: ctx.globals.offline });
46
+ return ok(result.data, {
47
+ issues: result.issues,
48
+ warnings: [...resolution.warnings, ...result.warnings],
49
+ resolvedContext: {
50
+ ...resolution.context,
51
+ ...(result.codeSource ? { codeSource: result.codeSource } : {}),
52
+ ...(result.engine ? { engine: result.engine } : {}),
53
+ },
54
+ });
55
+ },
56
+ markdown: (data, envelope) => {
57
+ const errors = envelope.issues.filter((i) => i.severity === 'error').length;
58
+ const warnings = envelope.issues.filter((i) => i.severity === 'warning').length;
59
+ const lines = [
60
+ `# check state — ${errors ? `${errors} error${errors === 1 ? '' : 's'}` : 'no errors'}${warnings ? `, ${warnings} warning${warnings === 1 ? '' : 's'}` : ''}`,
61
+ '',
62
+ `- Input: ${data.source.file}${data.source.line ? `:${data.source.line}:${data.source.column}` : ''} (${data.source.locatedBy}), ${data.kind} State`,
63
+ `- Checked: shape ${data.checked.shape}; semantics ${data.checked.semantics}; column refs ${data.checked.columnRefs}; options ${data.checked.options}; AdapTableQL ${data.checked.aql}${data.checked.agGridTypes === false ? '; AG Grid types absent (members they type were not checked)' : ''}`,
64
+ `- Stats: ${data.stats.sections} sections, ${data.stats.layouts} layouts, ${data.stats.expressions} expressions${data.stats.columns !== undefined ? `, ${data.stats.columns} columns` : ''}`,
65
+ ];
66
+ if (data.unverifiable.length) {
67
+ lines.push('', '## Not verifiable statically', '');
68
+ for (const u of data.unverifiable) {
69
+ lines.push(`- \`${u.path || '(root)'}\` — ${u.reason} (${u.file}:${u.line}:${u.column})`);
70
+ }
71
+ }
72
+ if (data.requiresAnotherCheckAfterFix) {
73
+ lines.push('', '_The type-check reports one problem per section; run `check state` again after fixing._');
74
+ }
75
+ return lines.join('\n');
76
+ },
77
+ });
78
+ //# sourceMappingURL=capabilities.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../../../src/core/state/capabilities.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,216 @@
1
+ /**
2
+ * `check state` (plan §8.4): extractor → shape layer → rules → scope statement.
3
+ * Transport-free; `capabilities.ts` binds it to the CLI and MCP.
4
+ */
5
+ import { basename } from 'node:path';
6
+ import { CapabilityError } from '../envelope.js';
7
+ import { extractFromFile, extractFromSource, } from '../extract/input.js';
8
+ import { isSourceFile } from '../extract/ts-literal.js';
9
+ import { aggregationsOf, loadAql, supportsAql } from '../aql/engine.js';
10
+ import { bundledRenamesFor } from '../changes/records.js';
11
+ import { packageLocation, sourceOverride } from '../packages/load-entry.js';
12
+ import { resolvePackage } from '../packages/resolve.js';
13
+ import { buildColumnUniverse, columnsFromInput } from './columns.js';
14
+ import { asArray, collectExpressions, isObj } from './expressions.js';
15
+ import { DASHBOARD_TOOLBARS_V24, INITIAL_STATE_KEYS_V24, MODULE_BUTTONS_V24, PERSISTENT_STATE_KEYS_V24 } from './known-names.js';
16
+ import { runRules } from './rules/index.js';
17
+ import { checkShape, readTypeNames, unexplainedShapeIssues } from './type-check.js';
18
+ const TYPE_NAMES = {
19
+ initialStateKeys: 'InitialState',
20
+ persistentStateKeys: 'AdaptablePersistentState',
21
+ dashboardToolbars: 'AdaptableDashboardToolbar',
22
+ moduleButtons: 'AdaptableModuleButton',
23
+ };
24
+ const NAME_LIST_KEYS = Object.keys(TYPE_NAMES);
25
+ const isMiss = (result) => result.value === undefined;
26
+ /** The State from a file, stdin text or a value, through the extractor; `EXTRACTION_FAILED` / `USAGE` when there is none */
27
+ export function readState(input) {
28
+ if (input.state !== undefined) {
29
+ if (typeof input.state === 'string') {
30
+ return readState({ ...input, state: undefined, text: input.state, file: input.file ?? '<state>' });
31
+ }
32
+ return {
33
+ extraction: {
34
+ value: input.state,
35
+ lineMap: {},
36
+ unverifiable: [...(input.unverifiable ?? [])],
37
+ source: { file: input.file ?? '<state>', locatedBy: 'json', line: 1, column: 1 },
38
+ },
39
+ };
40
+ }
41
+ if (input.text !== undefined) {
42
+ const file = input.file && input.file !== '-' ? input.file : '<stdin>';
43
+ const result = extractFromSource(input.text, { file, target: 'state' });
44
+ return { extraction: ensureFound(result, file), sourceText: { text: input.text, file } };
45
+ }
46
+ if (!input.file || input.file === '-') {
47
+ throw new CapabilityError('USAGE', 'No State input: pass a file path, `-` with the State on stdin, or the State itself.', 'Run `adaptable check state <file>` or `adaptable check state - < state.json`.');
48
+ }
49
+ return { extraction: ensureFound(extractFromFile(input.file, { target: 'state' }), input.file) };
50
+ }
51
+ function ensureFound(result, file) {
52
+ if (isMiss(result)) {
53
+ throw new CapabilityError('EXTRACTION_FAILED', `No Adaptable State literal was found in ${basename(file)} (tried: ${result.tried.join(', ')}).`, 'Declare the State as `const initialState: InitialState = {…}`, as the `initialState:` property of the Adaptable Options, or pass the State as JSON (for a running grid, `getPersistentState()` from DevTools).');
54
+ }
55
+ return result;
56
+ }
57
+ /** A second target from the same input, quietly: `undefined` when it is not there */
58
+ export function extractQuietly(sourceText, file, target) {
59
+ try {
60
+ const result = sourceText
61
+ ? extractFromSource(sourceText.text, { file: sourceText.file, target })
62
+ : file && isSourceFile(file)
63
+ ? extractFromFile(file, { target })
64
+ : undefined;
65
+ return result && !isMiss(result) ? result : undefined;
66
+ }
67
+ catch {
68
+ return undefined;
69
+ }
70
+ }
71
+ function readColumns(input, state, options, sourceText) {
72
+ if (input.columnsValue !== undefined) {
73
+ return buildColumnUniverse(columnsFromInput(input.columnsValue), state, options, 'columns passed with the call');
74
+ }
75
+ if (input.columns) {
76
+ const result = extractFromFile(input.columns, { target: 'columnDefs' });
77
+ if (isMiss(result)) {
78
+ throw new CapabilityError('EXTRACTION_FAILED', `No \`columnDefs\` array was found in ${basename(input.columns)} (tried: ${result.tried.join(', ')}).`, 'Pass a JSON array of ColDefs, DevTools `getColumns()` output, or a source file that declares `columnDefs`.');
79
+ }
80
+ return buildColumnUniverse(columnsFromInput(result.value), state, options, basename(input.columns));
81
+ }
82
+ const same = extractQuietly(sourceText, input.file, 'columnDefs');
83
+ if (same && Array.isArray(same.value)) {
84
+ return buildColumnUniverse(columnsFromInput(same.value), state, options, `columnDefs in ${basename(same.source.file)}`);
85
+ }
86
+ return undefined;
87
+ }
88
+ async function typeUniverse(types) {
89
+ const names = await readTypeNames(types, Object.values(TYPE_NAMES));
90
+ const fromTypes = [];
91
+ const pick = (key, fallback) => {
92
+ const found = names[TYPE_NAMES[key]];
93
+ if (found) {
94
+ fromTypes.push(key);
95
+ return found;
96
+ }
97
+ return fallback;
98
+ };
99
+ return {
100
+ initialStateKeys: pick('initialStateKeys', INITIAL_STATE_KEYS_V24),
101
+ persistentStateKeys: pick('persistentStateKeys', PERSISTENT_STATE_KEYS_V24),
102
+ dashboardToolbars: pick('dashboardToolbars', DASHBOARD_TOOLBARS_V24),
103
+ moduleButtons: pick('moduleButtons', MODULE_BUTTONS_V24),
104
+ fromTypes,
105
+ };
106
+ }
107
+ export async function checkState(input, deps) {
108
+ const warnings = [];
109
+ const { extraction, sourceText } = readState(input);
110
+ if (!isObj(extraction.value)) {
111
+ const root = extraction.unverifiable.find((u) => u.path === '');
112
+ throw new CapabilityError('EXTRACTION_FAILED', root
113
+ ? `The State in ${basename(extraction.source.file)} is not visible statically: ${root.reason}.`
114
+ : `The State in ${basename(extraction.source.file)} is not an object.`, root
115
+ ? 'Export the State of the running grid with `getPersistentState()` (DevTools) and check that JSON, or declare the State as a literal.'
116
+ : 'Adaptable State is a JSON object whose keys are module names (`Layout`, `FormatColumn`, …).');
117
+ }
118
+ const state = extraction.value;
119
+ const optionsExtraction = input.optionsValue === undefined ? extractQuietly(sourceText, input.file, 'options') : undefined;
120
+ const options = isObj(input.optionsValue) ? input.optionsValue : optionsExtraction && isObj(optionsExtraction.value) ? optionsExtraction.value : undefined;
121
+ const columns = readColumns(input, state, options, sourceText);
122
+ // the types package of the checked major (plan §7.3); PACKAGE_REQUIRED propagates
123
+ const override = sourceOverride();
124
+ const resolvedTypes = override ? undefined : await resolvePackage({ kind: 'types', major: deps.major }, { projectDir: deps.projectDir, offline: deps.offline, installed: deps.installed });
125
+ const types = override ?? packageLocation(resolvedTypes);
126
+ const codeSource = resolvedTypes?.source;
127
+ // the engine (≥ 24) for the aql rules; degrades with a warning
128
+ let aql;
129
+ let aqlStatus;
130
+ let engine;
131
+ if (!supportsAql(deps.major)) {
132
+ aqlStatus = 'unsupported-for-major';
133
+ }
134
+ else {
135
+ try {
136
+ const resolvedEngine = override ? undefined : await resolvePackage({ kind: 'engine' }, { projectDir: deps.projectDir, offline: deps.offline, installed: deps.installed });
137
+ const location = override ?? packageLocation(resolvedEngine);
138
+ const loaded = await loadAql(location);
139
+ if (loaded.ok) {
140
+ aql = { module: loaded.module, aggregations: aggregationsOf(loaded.module) };
141
+ aqlStatus = 'yes';
142
+ if (resolvedEngine && resolvedTypes && resolvedEngine.version !== resolvedTypes.version) {
143
+ engine = { version: resolvedEngine.version, source: resolvedEngine.source };
144
+ }
145
+ }
146
+ else {
147
+ aqlStatus = `not available (${loaded.reason})`;
148
+ }
149
+ }
150
+ catch (error) {
151
+ if (!(error instanceof CapabilityError)) {
152
+ throw error;
153
+ }
154
+ aqlStatus = `not available (${error.message})`;
155
+ warnings.push(`AdapTableQL expressions were not checked: ${error.message} ${error.hint}`);
156
+ }
157
+ }
158
+ const names = await typeUniverse(types);
159
+ const shape = await checkShape({
160
+ value: state,
161
+ type: input.kind === 'persistent' ? 'AdaptablePersistentState' : 'InitialState',
162
+ types,
163
+ lineMap: extraction.lineMap,
164
+ unverifiable: extraction.unverifiable,
165
+ renames: deps.renames ?? bundledRenamesFor(deps.major),
166
+ });
167
+ if (!shape.ok) {
168
+ warnings.push(`The State's shape was not type-checked: ${shape.reason}`);
169
+ }
170
+ const rules = runRules({ state, major: deps.major, kind: input.kind, options, columns, names, aql }, extraction.lineMap);
171
+ // a rule finding at or under a stubbed value is about the stub (`null`), not the user's code — the shape layer suppresses those too
172
+ const stubs = extraction.unverifiable.filter((u) => u.kind !== 'spread' && u.kind !== 'computed-key' && u.path !== '');
173
+ const isStubbed = (path) => path !== undefined && stubs.some((u) => path === u.path || path.startsWith(`${u.path}.`) || path.startsWith(`${u.path}[`));
174
+ const ruleIssues = rules.issues.filter((issue) => !isStubbed(issue.path));
175
+ const shapeIssues = shape.ok ? unexplainedShapeIssues(shape.issues, ruleIssues.filter((i) => !!i.path)) : [];
176
+ const issues = [...ruleIssues, ...shapeIssues];
177
+ const suppressedByPath = new Map();
178
+ if (shape.ok) {
179
+ for (const s of shape.suppressed) {
180
+ const owner = extraction.unverifiable.find((u) => s.path === u.path || s.path.startsWith(`${u.path}.`) || s.path.startsWith(`${u.path}[`));
181
+ if (owner) {
182
+ suppressedByPath.set(owner.path, [...(suppressedByPath.get(owner.path) ?? []), s.message]);
183
+ }
184
+ }
185
+ }
186
+ const unverifiable = extraction.unverifiable.map((u) => {
187
+ const suppressed = suppressedByPath.get(u.path);
188
+ return suppressed ? { ...u, suppressed } : u;
189
+ });
190
+ const layouts = asArray(isObj(state.Layout) ? state.Layout.Layouts : undefined).length;
191
+ const expressions = collectExpressions(state, aql?.aggregations ?? new Map()).length;
192
+ const checked = {
193
+ shape: shape.ok ? shape.checked.types : `not checked (${shape.reason})`,
194
+ semantics: `${rules.applied.length} rules${names.fromTypes.length < NAME_LIST_KEYS.length ? ` (name lists for ${NAME_LIST_KEYS.filter((k) => !names.fromTypes.includes(k)).join(', ')} from the bundled 24 constants)` : ''}`,
195
+ columnRefs: columns ? `yes (${columns.source})` : 'no (no column source)',
196
+ options: options ? 'visible' : 'not visible',
197
+ aql: aqlStatus,
198
+ ...(shape.ok ? { agGridTypes: shape.checked.agGridTypes } : {}),
199
+ };
200
+ return {
201
+ data: {
202
+ kind: input.kind,
203
+ source: { file: extraction.source.file, locatedBy: extraction.source.locatedBy, line: extraction.source.line, column: extraction.source.column },
204
+ unverifiable,
205
+ checked,
206
+ rules: rules.applied,
207
+ stats: { sections: Object.keys(state).length, layouts, expressions, ...(columns ? { columns: columns.ids.size } : {}) },
208
+ requiresAnotherCheckAfterFix: shapeIssues.length > 0,
209
+ },
210
+ issues,
211
+ warnings,
212
+ ...(codeSource ? { codeSource } : {}),
213
+ ...(engine ? { engine } : {}),
214
+ };
215
+ }
216
+ //# sourceMappingURL=check.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"check.js","sourceRoot":"","sources":["../../../src/core/state/check.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,130 @@
1
+ /**
2
+ * The effective column universe of plan §8.4: `columnDefs` (`colId ?? field`,
3
+ * groups flattened) ∪ Calculated ∪ FreeText ∪ Action columns ∪ the AG Grid
4
+ * auto-group / selection columns, with an AdapTable data type per column when
5
+ * one can be read (for the engine's column checks).
6
+ */
7
+ import { asArray, getStateColumnIds, isObj } from './expressions.js';
8
+ import { isSpecialColumn } from './known-names.js';
9
+ /** AG Grid `cellDataType` → AdapTable data type */
10
+ const CELL_DATA_TYPES = {
11
+ text: 'text',
12
+ number: 'number',
13
+ boolean: 'boolean',
14
+ date: 'date',
15
+ dateString: 'date',
16
+ };
17
+ /** AG Grid column `type` hints → AdapTable data type */
18
+ const COL_TYPE_HINTS = {
19
+ numericColumn: 'number',
20
+ numberColumn: 'number',
21
+ dateColumn: 'date',
22
+ };
23
+ /** Flattens ColDefs / ColGroupDefs (`children`) into `{ id, dataType }` */
24
+ export function columnsFromColDefs(columnDefs) {
25
+ const out = [];
26
+ const visit = (def) => {
27
+ if (!isObj(def)) {
28
+ return;
29
+ }
30
+ if (Array.isArray(def.children)) {
31
+ def.children.forEach(visit);
32
+ return;
33
+ }
34
+ const id = typeof def.colId === 'string' ? def.colId : typeof def.field === 'string' ? def.field : undefined;
35
+ if (!id) {
36
+ return;
37
+ }
38
+ let dataType;
39
+ if (typeof def.cellDataType === 'string') {
40
+ dataType = CELL_DATA_TYPES[def.cellDataType];
41
+ }
42
+ const types = typeof def.type === 'string' ? [def.type] : asArray(def.type);
43
+ for (const type of types) {
44
+ if (!dataType && typeof type === 'string' && COL_TYPE_HINTS[type]) {
45
+ dataType = COL_TYPE_HINTS[type];
46
+ }
47
+ }
48
+ out.push(dataType ? { id, dataType } : { id });
49
+ };
50
+ asArray(columnDefs).forEach(visit);
51
+ return out;
52
+ }
53
+ /**
54
+ * DevTools `getColumns()` shape (`{ id, dataType, friendlyName?, field?, … }[]`) or ColDefs:
55
+ * whichever the input is. A ColDef never has `id` (it has `colId` / `field`), so a string `id`
56
+ * on every item is the DevTools output even when `field` is also present.
57
+ */
58
+ export function columnsFromInput(value) {
59
+ const items = asArray(value);
60
+ if (items.length && items.every((item) => isObj(item) && typeof item.id === 'string' && !('colId' in item))) {
61
+ return items.map((item) => {
62
+ const column = item;
63
+ return typeof column.dataType === 'string' ? { id: column.id, dataType: column.dataType } : { id: column.id };
64
+ });
65
+ }
66
+ return columnsFromColDefs(value);
67
+ }
68
+ /** Action column ids from a visible Options literal (`actionColumnOptions.actionColumns[].columnId`) */
69
+ export function actionColumnIds(options) {
70
+ const ids = [];
71
+ for (const key of ['actionColumnOptions', 'actionOptions']) {
72
+ const section = options && isObj(options[key]) ? options[key] : undefined;
73
+ for (const column of asArray(section?.actionColumns)) {
74
+ if (isObj(column) && typeof column.columnId === 'string') {
75
+ ids.push(column.columnId);
76
+ }
77
+ }
78
+ }
79
+ return ids;
80
+ }
81
+ /** Custom AdapTableQL function names declared in a visible Options literal (`expressionOptions.custom*Functions`) */
82
+ export function customFunctionNames(options) {
83
+ const expressionOptions = options && isObj(options.expressionOptions) ? options.expressionOptions : undefined;
84
+ const names = [];
85
+ for (const key of ['customStandardFunctions', 'customAggregatedFunctions', 'customExpressionFunctions']) {
86
+ const value = expressionOptions?.[key];
87
+ if (isObj(value)) {
88
+ names.push(...Object.keys(value));
89
+ }
90
+ else {
91
+ for (const item of asArray(value)) {
92
+ if (isObj(item) && typeof item.name === 'string') {
93
+ names.push(item.name);
94
+ }
95
+ }
96
+ }
97
+ }
98
+ return names.map((n) => n.toUpperCase());
99
+ }
100
+ export function buildColumnUniverse(grid, state, options, source) {
101
+ const ids = new Set();
102
+ const types = {};
103
+ for (const column of grid) {
104
+ ids.add(column.id);
105
+ types[column.id] = column.dataType;
106
+ }
107
+ for (const [id, dataType] of getStateColumnIds(state)) {
108
+ ids.add(id);
109
+ types[id] = dataType ?? types[id];
110
+ }
111
+ for (const id of actionColumnIds(options)) {
112
+ ids.add(id);
113
+ }
114
+ return { ids, types, source };
115
+ }
116
+ /** Whether a referenced id is in the universe (special AG Grid columns always are) */
117
+ export function knownColumn(universe, id) {
118
+ return universe.ids.has(id) || isSpecialColumn(id);
119
+ }
120
+ /** A column id that matches `id` case-insensitively, for the exact fix */
121
+ export function caseMatch(universe, id) {
122
+ const lower = id.toLowerCase();
123
+ for (const known of universe.ids) {
124
+ if (known !== id && known.toLowerCase() === lower) {
125
+ return known;
126
+ }
127
+ }
128
+ return undefined;
129
+ }
130
+ //# sourceMappingURL=columns.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"columns.js","sourceRoot":"","sources":["../../../src/core/state/columns.ts"],"names":[],"mappings":"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"}