@adaptabletools/adaptable-mcp 0.1.0-canary.0 → 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 (348) hide show
  1. package/README.md +58 -61
  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 +202 -0
  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 +23 -0
  54. package/dist/bin.js.map +1 -0
  55. package/dist/cli/build-commands.js +200 -0
  56. package/dist/cli/build-commands.js.map +1 -0
  57. package/dist/cli/index.js +94 -0
  58. package/dist/cli/index.js.map +1 -0
  59. package/dist/cli/render.js +57 -0
  60. package/dist/cli/render.js.map +1 -0
  61. package/dist/core/anonymise/anonymise.js +315 -0
  62. package/dist/core/anonymise/anonymise.js.map +1 -0
  63. package/dist/core/anonymise/capabilities.js +94 -0
  64. package/dist/core/anonymise/capabilities.js.map +1 -0
  65. package/dist/core/aql/capabilities.js +339 -0
  66. package/dist/core/aql/capabilities.js.map +1 -0
  67. package/dist/core/aql/check.js +204 -0
  68. package/dist/core/aql/check.js.map +1 -0
  69. package/dist/core/aql/engine.js +92 -0
  70. package/dist/core/aql/engine.js.map +1 -0
  71. package/dist/core/aql/functions.js +108 -0
  72. package/dist/core/aql/functions.js.map +1 -0
  73. package/dist/core/aql/migrate.js +62 -0
  74. package/dist/core/aql/migrate.js.map +1 -0
  75. package/dist/core/capabilities.js +105 -0
  76. package/dist/core/capabilities.js.map +1 -0
  77. package/dist/core/changes/capabilities.js +92 -0
  78. package/dist/core/changes/capabilities.js.map +1 -0
  79. package/dist/core/changes/changes.js +101 -0
  80. package/dist/core/changes/changes.js.map +1 -0
  81. package/dist/core/changes/grep.js +183 -0
  82. package/dist/core/changes/grep.js.map +1 -0
  83. package/dist/core/changes/records.js +172 -0
  84. package/dist/core/changes/records.js.map +1 -0
  85. package/dist/core/changes/render-md.js +101 -0
  86. package/dist/core/changes/render-md.js.map +1 -0
  87. package/dist/core/changes/with-docs.js +86 -0
  88. package/dist/core/changes/with-docs.js.map +1 -0
  89. package/dist/core/compat/capabilities.js +127 -0
  90. package/dist/core/compat/capabilities.js.map +1 -0
  91. package/dist/core/compat/manifest.js +203 -0
  92. package/dist/core/compat/manifest.js.map +1 -0
  93. package/dist/core/constants.js +38 -0
  94. package/dist/core/constants.js.map +1 -0
  95. package/dist/core/context/capabilities.js +106 -0
  96. package/dist/core/context/capabilities.js.map +1 -0
  97. package/dist/core/context/detect.js +370 -0
  98. package/dist/core/context/detect.js.map +1 -0
  99. package/dist/core/context/projects.js +159 -0
  100. package/dist/core/context/projects.js.map +1 -0
  101. package/dist/core/context/resolve.js +85 -0
  102. package/dist/core/context/resolve.js.map +1 -0
  103. package/dist/core/convert/capabilities.js +86 -0
  104. package/dist/core/convert/capabilities.js.map +1 -0
  105. package/dist/core/convert/coldefs.js +313 -0
  106. package/dist/core/convert/coldefs.js.map +1 -0
  107. package/dist/core/docs/areas.js +22 -0
  108. package/dist/core/docs/areas.js.map +1 -0
  109. package/dist/core/docs/cache.js +133 -0
  110. package/dist/core/docs/cache.js.map +1 -0
  111. package/dist/core/docs/capabilities.js +377 -0
  112. package/dist/core/docs/capabilities.js.map +1 -0
  113. package/dist/core/docs/corpus.js.map +1 -0
  114. package/dist/core/docs/demos.js +105 -0
  115. package/dist/core/docs/demos.js.map +1 -0
  116. package/dist/core/docs/get-page.js +182 -0
  117. package/dist/core/docs/get-page.js.map +1 -0
  118. package/dist/core/docs/hosts.js +74 -0
  119. package/dist/core/docs/hosts.js.map +1 -0
  120. package/dist/core/docs/search.js.map +1 -0
  121. package/dist/core/envelope.js +79 -0
  122. package/dist/core/envelope.js.map +1 -0
  123. package/dist/core/extract/imports.js +163 -0
  124. package/dist/core/extract/imports.js.map +1 -0
  125. package/dist/core/extract/input.js +140 -0
  126. package/dist/core/extract/input.js.map +1 -0
  127. package/dist/core/extract/line-map.js +90 -0
  128. package/dist/core/extract/line-map.js.map +1 -0
  129. package/dist/core/extract/ts-literal.js +963 -0
  130. package/dist/core/extract/ts-literal.js.map +1 -0
  131. package/dist/core/index.js +13 -0
  132. package/dist/core/index.js.map +1 -0
  133. package/dist/core/migrate/capabilities.js +143 -0
  134. package/dist/core/migrate/capabilities.js.map +1 -0
  135. package/dist/core/migrate/leftovers.js +119 -0
  136. package/dist/core/migrate/leftovers.js.map +1 -0
  137. package/dist/core/migrate/state.js +295 -0
  138. package/dist/core/migrate/state.js.map +1 -0
  139. package/dist/core/packages/cache.js +139 -0
  140. package/dist/core/packages/cache.js.map +1 -0
  141. package/dist/core/packages/capabilities.js +95 -0
  142. package/dist/core/packages/capabilities.js.map +1 -0
  143. package/dist/{adaptable/types.js → core/packages/entry-types.js} +1 -1
  144. package/dist/core/packages/entry-types.js.map +1 -0
  145. package/dist/core/packages/exec.js +37 -0
  146. package/dist/core/packages/exec.js.map +1 -0
  147. package/dist/core/packages/load-entry.js +123 -0
  148. package/dist/core/packages/load-entry.js.map +1 -0
  149. package/dist/core/packages/prepare.js +122 -0
  150. package/dist/core/packages/prepare.js.map +1 -0
  151. package/dist/core/packages/registry.js +75 -0
  152. package/dist/core/packages/registry.js.map +1 -0
  153. package/dist/core/packages/resolve.js +94 -0
  154. package/dist/core/packages/resolve.js.map +1 -0
  155. package/dist/core/packages/versions.js +71 -0
  156. package/dist/core/packages/versions.js.map +1 -0
  157. package/dist/core/ping.js +22 -0
  158. package/dist/core/ping.js.map +1 -0
  159. package/dist/core/register.js +18 -0
  160. package/dist/core/register.js.map +1 -0
  161. package/dist/core/scaffold/capabilities.js +434 -0
  162. package/dist/core/scaffold/capabilities.js.map +1 -0
  163. package/dist/core/scaffold/generate.js +409 -0
  164. package/dist/core/scaffold/generate.js.map +1 -0
  165. package/dist/core/scaffold/infer.js +441 -0
  166. package/dist/core/scaffold/infer.js.map +1 -0
  167. package/dist/core/scaffold/overlay.js +290 -0
  168. package/dist/core/scaffold/overlay.js.map +1 -0
  169. package/dist/core/scaffold/readers/csv.js +146 -0
  170. package/dist/core/scaffold/readers/csv.js.map +1 -0
  171. package/dist/core/scaffold/readers/dataset.js +53 -0
  172. package/dist/core/scaffold/readers/dataset.js.map +1 -0
  173. package/dist/core/scaffold/readers/index.js +62 -0
  174. package/dist/core/scaffold/readers/index.js.map +1 -0
  175. package/dist/core/scaffold/readers/json.js +101 -0
  176. package/dist/core/scaffold/readers/json.js.map +1 -0
  177. package/dist/core/scaffold/readers/xlsx.js +81 -0
  178. package/dist/core/scaffold/readers/xlsx.js.map +1 -0
  179. package/dist/core/scaffold/suggestions.js +57 -0
  180. package/dist/core/scaffold/suggestions.js.map +1 -0
  181. package/dist/core/scaffold/templates.js +59 -0
  182. package/dist/core/scaffold/templates.js.map +1 -0
  183. package/dist/core/setup/audit.js +91 -0
  184. package/dist/core/setup/audit.js.map +1 -0
  185. package/dist/core/setup/capabilities.js +80 -0
  186. package/dist/core/setup/capabilities.js.map +1 -0
  187. package/dist/core/setup/context.js +118 -0
  188. package/dist/core/setup/context.js.map +1 -0
  189. package/dist/core/setup/rules/cell-data-type.js +40 -0
  190. package/dist/core/setup/rules/cell-data-type.js.map +1 -0
  191. package/dist/core/setup/rules/coldef-ownership.js +67 -0
  192. package/dist/core/setup/rules/coldef-ownership.js.map +1 -0
  193. package/dist/core/setup/rules/css-import.js +34 -0
  194. package/dist/core/setup/rules/css-import.js.map +1 -0
  195. package/dist/core/setup/rules/direct-grid.js +42 -0
  196. package/dist/core/setup/rules/direct-grid.js.map +1 -0
  197. package/dist/core/setup/rules/index.js +53 -0
  198. package/dist/core/setup/rules/index.js.map +1 -0
  199. package/dist/core/setup/rules/licence-literal.js +23 -0
  200. package/dist/core/setup/rules/licence-literal.js.map +1 -0
  201. package/dist/core/setup/rules/modules.js +86 -0
  202. package/dist/core/setup/rules/modules.js.map +1 -0
  203. package/dist/core/setup/rules/react-stable-refs.js +20 -0
  204. package/dist/core/setup/rules/react-stable-refs.js.map +1 -0
  205. package/dist/core/setup/rules/ready-hook.js +33 -0
  206. package/dist/core/setup/rules/ready-hook.js.map +1 -0
  207. package/dist/core/setup/rules/required-options.js +43 -0
  208. package/dist/core/setup/rules/required-options.js.map +1 -0
  209. package/dist/core/setup/rules/rule.js +10 -0
  210. package/dist/core/setup/rules/rule.js.map +1 -0
  211. package/dist/core/setup/rules/version-skew.js +65 -0
  212. package/dist/core/setup/rules/version-skew.js.map +1 -0
  213. package/dist/core/state/capabilities.js +78 -0
  214. package/dist/core/state/capabilities.js.map +1 -0
  215. package/dist/core/state/check.js +216 -0
  216. package/dist/core/state/check.js.map +1 -0
  217. package/dist/core/state/columns.js +130 -0
  218. package/dist/core/state/columns.js.map +1 -0
  219. package/dist/core/state/did-you-mean.js +83 -0
  220. package/dist/core/state/did-you-mean.js.map +1 -0
  221. package/dist/core/state/expressions.js +170 -0
  222. package/dist/core/state/expressions.js.map +1 -0
  223. package/dist/core/state/known-names.js +96 -0
  224. package/dist/core/state/known-names.js.map +1 -0
  225. package/dist/core/state/rules/aql-legacy-shape.js +42 -0
  226. package/dist/core/state/rules/aql-legacy-shape.js.map +1 -0
  227. package/dist/core/state/rules/aql-missing.js +21 -0
  228. package/dist/core/state/rules/aql-missing.js.map +1 -0
  229. package/dist/core/state/rules/aql-syntax.js +77 -0
  230. package/dist/core/state/rules/aql-syntax.js.map +1 -0
  231. package/dist/core/state/rules/calculated-settings.js +23 -0
  232. package/dist/core/state/rules/calculated-settings.js.map +1 -0
  233. package/dist/core/state/rules/column-id-exists.js +29 -0
  234. package/dist/core/state/rules/column-id-exists.js.map +1 -0
  235. package/dist/core/state/rules/dashboard-module-names.js +31 -0
  236. package/dist/core/state/rules/dashboard-module-names.js.map +1 -0
  237. package/dist/core/state/rules/dashboard-toolbar-names.js +48 -0
  238. package/dist/core/state/rules/dashboard-toolbar-names.js.map +1 -0
  239. package/dist/core/state/rules/format-column-pivot-display-format.js +43 -0
  240. package/dist/core/state/rules/format-column-pivot-display-format.js.map +1 -0
  241. package/dist/core/state/rules/helpers.js +39 -0
  242. package/dist/core/state/rules/helpers.js.map +1 -0
  243. package/dist/core/state/rules/index.js +80 -0
  244. package/dist/core/state/rules/index.js.map +1 -0
  245. package/dist/core/state/rules/layout-column-refs.js +60 -0
  246. package/dist/core/state/rules/layout-column-refs.js.map +1 -0
  247. package/dist/core/state/rules/layout-current-exists.js +27 -0
  248. package/dist/core/state/rules/layout-current-exists.js.map +1 -0
  249. package/dist/core/state/rules/layout-non-empty.js +32 -0
  250. package/dist/core/state/rules/layout-non-empty.js.map +1 -0
  251. package/dist/core/state/rules/rule.js +2 -0
  252. package/dist/core/state/rules/rule.js.map +1 -0
  253. package/dist/core/state/rules/scope-column-refs.js +32 -0
  254. package/dist/core/state/rules/scope-column-refs.js.map +1 -0
  255. package/dist/core/state/rules/scope-shape.js +61 -0
  256. package/dist/core/state/rules/scope-shape.js.map +1 -0
  257. package/dist/core/state/rules/state-unique-name.js +40 -0
  258. package/dist/core/state/rules/state-unique-name.js.map +1 -0
  259. package/dist/core/state/rules/state-unknown-section.js +30 -0
  260. package/dist/core/state/rules/state-unknown-section.js.map +1 -0
  261. package/dist/core/state/rules/type-discriminator.js +70 -0
  262. package/dist/core/state/rules/type-discriminator.js.map +1 -0
  263. package/dist/core/state/type-check.js +408 -0
  264. package/dist/core/state/type-check.js.map +1 -0
  265. package/dist/mcp/index.js +109 -0
  266. package/dist/mcp/index.js.map +1 -0
  267. package/dist/mcp/server.js +110 -0
  268. package/dist/mcp/server.js.map +1 -0
  269. package/dist/skills/adaptable-debug/SKILL.md +145 -0
  270. package/dist/skills/adaptable-debug/VERSION.md +1 -0
  271. package/dist/skills/adaptable-debug/references/_shared/agents-snippet.md +3 -0
  272. package/dist/skills/adaptable-debug/references/_shared/capabilities.md +35 -0
  273. package/dist/skills/adaptable-debug/references/_shared/conversation.md +20 -0
  274. package/dist/skills/adaptable-debug/references/_shared/docs-protocol.md +36 -0
  275. package/dist/skills/adaptable-debug/references/_shared/grounding.md +54 -0
  276. package/dist/skills/adaptable-debug/references/_shared/guards.md +20 -0
  277. package/dist/skills/adaptable-debug/references/_shared/validation-loop.md +42 -0
  278. package/dist/skills/adaptable-debug/references/devtools-api.md +36 -0
  279. package/dist/skills/adaptable-debug/references/feedback-template.md +36 -0
  280. package/dist/skills/adaptable-debug/references/symptoms.md +37 -0
  281. package/dist/skills/adaptable-debug/references/ticket-template.md +50 -0
  282. package/dist/skills/adaptable-dev/SKILL.md +97 -0
  283. package/dist/skills/adaptable-dev/VERSION.md +1 -0
  284. package/dist/skills/adaptable-dev/references/_shared/agents-snippet.md +3 -0
  285. package/dist/skills/adaptable-dev/references/_shared/capabilities.md +35 -0
  286. package/dist/skills/adaptable-dev/references/_shared/conversation.md +20 -0
  287. package/dist/skills/adaptable-dev/references/_shared/docs-protocol.md +36 -0
  288. package/dist/skills/adaptable-dev/references/_shared/grounding.md +54 -0
  289. package/dist/skills/adaptable-dev/references/_shared/guards.md +20 -0
  290. package/dist/skills/adaptable-dev/references/_shared/validation-loop.md +42 -0
  291. package/dist/skills/adaptable-dev/references/recommendations.md +93 -0
  292. package/dist/skills/adaptable-setup/SKILL.md +158 -0
  293. package/dist/skills/adaptable-setup/VERSION.md +1 -0
  294. package/dist/skills/adaptable-setup/references/_shared/agents-snippet.md +3 -0
  295. package/dist/skills/adaptable-setup/references/_shared/capabilities.md +35 -0
  296. package/dist/skills/adaptable-setup/references/_shared/conversation.md +20 -0
  297. package/dist/skills/adaptable-setup/references/_shared/docs-protocol.md +36 -0
  298. package/dist/skills/adaptable-setup/references/_shared/grounding.md +54 -0
  299. package/dist/skills/adaptable-setup/references/_shared/guards.md +20 -0
  300. package/dist/skills/adaptable-setup/references/_shared/validation-loop.md +42 -0
  301. package/dist/skills/adaptable-setup/references/paths.md +45 -0
  302. package/dist/skills/adaptable-upgrade/SKILL.md +269 -0
  303. package/dist/skills/adaptable-upgrade/VERSION.md +1 -0
  304. package/dist/skills/adaptable-upgrade/references/_shared/agents-snippet.md +3 -0
  305. package/dist/skills/adaptable-upgrade/references/_shared/capabilities.md +35 -0
  306. package/dist/skills/adaptable-upgrade/references/_shared/conversation.md +20 -0
  307. package/dist/skills/adaptable-upgrade/references/_shared/docs-protocol.md +36 -0
  308. package/dist/skills/adaptable-upgrade/references/_shared/grounding.md +54 -0
  309. package/dist/skills/adaptable-upgrade/references/_shared/guards.md +20 -0
  310. package/dist/skills/adaptable-upgrade/references/_shared/validation-loop.md +42 -0
  311. package/dist/skills/adaptable-upgrade/references/apply-order.md +171 -0
  312. package/dist/skills/adaptable-upgrade/references/plan-preamble.md +151 -0
  313. package/dist/skills/adaptable-upgrade/scripts/adaptable.mjs +24 -0
  314. package/package.json +34 -13
  315. package/dist/adaptable/loadEntry.js +0 -94
  316. package/dist/adaptable/loadEntry.js.map +0 -1
  317. package/dist/adaptable/types.js.map +0 -1
  318. package/dist/cache.js +0 -11
  319. package/dist/cache.js.map +0 -1
  320. package/dist/checks/stateRules.js +0 -389
  321. package/dist/checks/stateRules.js.map +0 -1
  322. package/dist/checks/stateTypes.js +0 -142
  323. package/dist/checks/stateTypes.js.map +0 -1
  324. package/dist/context.js +0 -39
  325. package/dist/context.js.map +0 -1
  326. package/dist/docs/corpus.js.map +0 -1
  327. package/dist/docs/search.js.map +0 -1
  328. package/dist/docs/source.js +0 -151
  329. package/dist/docs/source.js.map +0 -1
  330. package/dist/environment.js +0 -181
  331. package/dist/environment.js.map +0 -1
  332. package/dist/index.js +0 -7
  333. package/dist/index.js.map +0 -1
  334. package/dist/prompts.js +0 -84
  335. package/dist/prompts.js.map +0 -1
  336. package/dist/resources.js +0 -59
  337. package/dist/resources.js.map +0 -1
  338. package/dist/server.js +0 -23
  339. package/dist/server.js.map +0 -1
  340. package/dist/tools/checks.js +0 -250
  341. package/dist/tools/checks.js.map +0 -1
  342. package/dist/tools/docs.js +0 -173
  343. package/dist/tools/docs.js.map +0 -1
  344. package/dist/tools/environment.js +0 -52
  345. package/dist/tools/environment.js.map +0 -1
  346. package/skills/adaptable-dev/SKILL.md +0 -42
  347. /package/dist/{docs → core/docs}/corpus.js +0 -0
  348. /package/dist/{docs → core/docs}/search.js +0 -0
@@ -0,0 +1,409 @@
1
+ const SAFE_ID = /^[A-Za-z_$][\w$]*$/;
2
+ /** A string literal for generated code (single quotes) */
3
+ export function str(value) {
4
+ return `'${value.replace(/\\/g, '\\\\').replace(/'/g, "\\'").replace(/\n/g, '\\n')}'`;
5
+ }
6
+ /** A property key for an interface or object literal: bare when it is an identifier */
7
+ export function key(name) {
8
+ return SAFE_ID.test(name) ? name : str(name);
9
+ }
10
+ /** `trades.csv` → `TradesRow`; `my data.xlsx` → `MyDataRow`; nothing usable → `Row` */
11
+ export function rowTypeName(stem) {
12
+ const words = (stem ?? '').split(/[^A-Za-z0-9]+/).filter((w) => w.length > 0);
13
+ const pascal = words.map((w) => w[0].toUpperCase() + w.slice(1)).join('');
14
+ const base = /^[A-Za-z]/.test(pascal) ? pascal : '';
15
+ return `${base}Row`;
16
+ }
17
+ /** AG Grid `cellDataType` for a column (dates are parsed to `Date` in `rowData.ts`) */
18
+ export function cellDataTypeOf(column) {
19
+ return column.cellDataType;
20
+ }
21
+ function tsTypeOf(column) {
22
+ const base = { text: 'string', number: 'number', boolean: 'boolean', date: 'Date', object: 'unknown' }[column.cellDataType];
23
+ return column.nullable && base !== 'unknown' ? `${base} | null` : base;
24
+ }
25
+ export function generateColumnDefs(input) {
26
+ const lines = [
27
+ `import { ColDef } from 'ag-grid-enterprise';`,
28
+ `import { ${input.rowType} } from './rowData';`,
29
+ '',
30
+ `export const columnDefs: ColDef<${input.rowType}>[] = [`,
31
+ ];
32
+ for (const column of input.schema.columns) {
33
+ lines.push(' {', ` colId: ${str(column.colId)},`, ` field: ${str(column.field)},`, ` headerName: ${str(column.headerName)},`, ` cellDataType: ${str(cellDataTypeOf(column))},`);
34
+ if (column.enumLike && column.cellDataType === 'text') {
35
+ lines.push(' enableRowGroup: true,', ' enablePivot: true,');
36
+ }
37
+ if (column.cellDataType === 'number') {
38
+ lines.push(' enableValue: true,');
39
+ }
40
+ if (column.field === input.primaryKey) {
41
+ lines.push(' editable: false,');
42
+ }
43
+ lines.push(' },');
44
+ }
45
+ lines.push('];', '');
46
+ return lines.join('\n');
47
+ }
48
+ function dateColumns(schema) {
49
+ return schema.columns.filter((c) => c.cellDataType === 'date');
50
+ }
51
+ const PARSE_DATE = `/** Parses a cell to a Date by the format the scaffold detected; unparseable or empty → null */
52
+ function parseDate(value: unknown, format: string): Date | null {
53
+ if (value === null || value === undefined || value === '') {
54
+ return null;
55
+ }
56
+ if (value instanceof Date) {
57
+ return value;
58
+ }
59
+ const text = String(value).trim();
60
+ const numeric = text.match(/^(\\d{1,4})[-/.](\\d{1,2})[-/.](\\d{1,4})$/);
61
+ if (numeric) {
62
+ const [a, b, c] = [Number(numeric[1]), Number(numeric[2]), Number(numeric[3])];
63
+ if (format.startsWith('DD')) {
64
+ return new Date(c, b - 1, a);
65
+ }
66
+ if (format.startsWith('MM')) {
67
+ return new Date(c, a - 1, b);
68
+ }
69
+ return new Date(a, b - 1, c);
70
+ }
71
+ const parsed = new Date(text);
72
+ return Number.isNaN(parsed.getTime()) ? null : parsed;
73
+ }`;
74
+ export function generateRowData(input) {
75
+ const { rowType, schema } = input;
76
+ const dates = dateColumns(schema);
77
+ const lines = [];
78
+ lines.push(`export interface ${rowType} {`);
79
+ for (const column of schema.columns) {
80
+ lines.push(` ${key(column.field)}: ${tsTypeOf(column)};`);
81
+ }
82
+ lines.push('}', '');
83
+ const needsParse = dates.length > 0;
84
+ if (needsParse) {
85
+ lines.push(PARSE_DATE, '');
86
+ lines.push(`const DATE_FORMATS: Record<string, string> = {`);
87
+ for (const column of dates) {
88
+ lines.push(` ${key(column.field)}: ${str(column.dateFormat ?? 'ISO 8601')},`);
89
+ }
90
+ lines.push('};', '');
91
+ }
92
+ lines.push(`/** Converts a raw record (strings and JSON values) to a typed row */`);
93
+ lines.push(`export function toRow(raw: Record<string, unknown>): ${rowType} {`);
94
+ if (needsParse) {
95
+ lines.push(' const row: Record<string, unknown> = { ...raw };');
96
+ lines.push(' for (const [field, format] of Object.entries(DATE_FORMATS)) {');
97
+ lines.push(' row[field] = parseDate(raw[field], format);');
98
+ lines.push(' }');
99
+ lines.push(` return row as unknown as ${rowType};`);
100
+ }
101
+ else {
102
+ lines.push(` return raw as unknown as ${rowType};`);
103
+ }
104
+ lines.push('}', '');
105
+ if (input.sourceUrl) {
106
+ lines.push(`export const SOURCE_URL = ${str(input.sourceUrl)};`, '');
107
+ lines.push(`/** Rows arrive from SOURCE_URL after the grid is ready (see onAdaptableReady.ts) */`);
108
+ lines.push(`export const rowData: ${rowType}[] = [];`, '');
109
+ lines.push(`/** Fetches SOURCE_URL and converts the payload to rows${input.sourceArrayPath ? ` (the array is under "${input.sourceArrayPath}", as in the sample)` : ''} */`);
110
+ lines.push(`export async function fetchRowData(): Promise<${rowType}[]> {`);
111
+ lines.push(' const response = await fetch(SOURCE_URL);');
112
+ lines.push(' if (!response.ok) {');
113
+ lines.push(' throw new Error(`${SOURCE_URL} returned ${response.status}`);');
114
+ lines.push(' }');
115
+ lines.push(' const payload: unknown = await response.json();');
116
+ if (input.sourceArrayPath) {
117
+ lines.push(` const records = (payload as Record<string, unknown>)[${str(input.sourceArrayPath)}];`);
118
+ }
119
+ else {
120
+ lines.push(' const records = payload;');
121
+ }
122
+ lines.push(' if (!Array.isArray(records)) {');
123
+ lines.push(` throw new Error(\`\${SOURCE_URL} did not return an array of rows\`);`);
124
+ lines.push(' }');
125
+ lines.push(' return (records as Record<string, unknown>[]).map(toRow);');
126
+ lines.push('}', '');
127
+ }
128
+ else {
129
+ lines.push(`const raw: Record<string, unknown>[] = ${JSON.stringify(input.rows, null, 2)};`, '');
130
+ lines.push(`export const rowData: ${rowType}[] = raw.map(toRow);`, '');
131
+ }
132
+ return lines.join('\n');
133
+ }
134
+ /** The Initial State (plan §8.11): one Layout with every column, Dashboard with Layout and Export */
135
+ export function buildInitialState(schema) {
136
+ return {
137
+ Dashboard: {
138
+ Tabs: [{ Name: 'Grid', Toolbars: ['Layout', 'Export'] }],
139
+ },
140
+ Layout: {
141
+ CurrentLayout: 'Default Layout',
142
+ Layouts: [{ Name: 'Default Layout', TableColumns: schema.columns.map((c) => c.colId) }],
143
+ },
144
+ };
145
+ }
146
+ /** Renders a JSON value as a TypeScript literal with bare identifier keys and single-quoted strings */
147
+ export function tsLiteral(value, indent = 2, level = 1) {
148
+ const pad = ' '.repeat(indent * level);
149
+ const padEnd = ' '.repeat(indent * (level - 1));
150
+ if (Array.isArray(value)) {
151
+ if (value.length === 0) {
152
+ return '[]';
153
+ }
154
+ return `[\n${value.map((item) => `${pad}${tsLiteral(item, indent, level + 1)},`).join('\n')}\n${padEnd}]`;
155
+ }
156
+ if (value && typeof value === 'object') {
157
+ const entries = Object.entries(value);
158
+ if (entries.length === 0) {
159
+ return '{}';
160
+ }
161
+ return `{\n${entries.map(([k, v]) => `${pad}${key(k)}: ${tsLiteral(v, indent, level + 1)},`).join('\n')}\n${padEnd}}`;
162
+ }
163
+ if (typeof value === 'string') {
164
+ return str(value);
165
+ }
166
+ return String(value);
167
+ }
168
+ export function generateAdaptableOptions(input) {
169
+ const state = buildInitialState(input.schema);
170
+ return [
171
+ `import { AdaptableOptions } from '@adaptabletools/adaptable';`,
172
+ `import { ADAPTABLE_LICENSE_KEY } from './licenses';`,
173
+ `import { ${input.rowType} } from './rowData';`,
174
+ '',
175
+ `export const adaptableOptions: AdaptableOptions<${input.rowType}> = {`,
176
+ ` primaryKey: ${str(input.primaryKey)},`,
177
+ ` adaptableId: ${str(input.adaptableId)},`,
178
+ ` licenseKey: ADAPTABLE_LICENSE_KEY,`,
179
+ ` initialState: ${tsLiteral(state, 2, 2)},`,
180
+ '};',
181
+ '',
182
+ ].join('\n');
183
+ }
184
+ export function generateGridOptions(input) {
185
+ const lines = [
186
+ `import { GridOptions, themeBalham } from 'ag-grid-enterprise';`,
187
+ '',
188
+ `import { rowData, ${input.rowType} } from './rowData';`,
189
+ `import { columnDefs } from './columnDefs';`,
190
+ '',
191
+ `export const gridOptions: GridOptions<${input.rowType}> = {`,
192
+ ' theme: themeBalham,',
193
+ ' defaultColDef: {',
194
+ ' resizable: true,',
195
+ ' sortable: true,',
196
+ ' editable: true,',
197
+ ' filter: true,',
198
+ ' floatingFilter: true,',
199
+ ' },',
200
+ ' columnDefs: columnDefs,',
201
+ ];
202
+ if (input.rowModel === 'server') {
203
+ lines.push(` rowModelType: 'serverSide',`, ' // A datasource that serves the embedded rows; replace it with your server call. AdapTable sends its', ' // filters, sorts and groups in the request: see the Server-Side Row Model guide in the docs.', ' serverSideDatasource: {', ' getRows: (params) => {', ' const start = params.request.startRow ?? 0;', ' const end = params.request.endRow ?? rowData.length;', ' params.success({ rowData: rowData.slice(start, end), rowCount: rowData.length });', ' },', ' },');
204
+ }
205
+ else {
206
+ lines.push(' rowData: rowData,');
207
+ }
208
+ if (input.schema.dottedFields.length > 0) {
209
+ lines.push(' // field names contain dots; read them as plain keys', ' suppressFieldDotNotation: true,');
210
+ }
211
+ lines.push(' sideBar: true,', ' suppressMenuHide: true,', ` columnMenu: 'new',`, ' cellSelection: true,', ' statusBar: {', ' statusPanels: [', ` { statusPanel: 'agTotalRowCountComponent', align: 'left' },`, ` { statusPanel: 'agFilteredRowCountComponent' },`, ` { key: 'Center Panel', statusPanel: 'AdaptableStatusPanel', align: 'center' },`, ' ],', ' },', '};', '');
212
+ return lines.join('\n');
213
+ }
214
+ export function generateAgGridModules() {
215
+ return [
216
+ `import { AllEnterpriseModule, LicenseManager, Module, ValidationModule } from 'ag-grid-enterprise';`,
217
+ `import { AG_GRID_LICENSE_KEY } from './licenses';`,
218
+ '',
219
+ 'if (AG_GRID_LICENSE_KEY) {',
220
+ ' LicenseManager.setLicenseKey(AG_GRID_LICENSE_KEY);',
221
+ '}',
222
+ '',
223
+ 'export const agGridModules: Module[] = [AllEnterpriseModule, ValidationModule];',
224
+ '',
225
+ ].join('\n');
226
+ }
227
+ /** Licence placeholders (plan §8.11): environment reads for Vite frameworks, `undefined` to fill for Angular; never a literal */
228
+ export function generateLicenses(framework) {
229
+ const header = [
230
+ '// Licence keys for AdapTable and AG Grid Enterprise. Keep them out of source control: read them',
231
+ '// from the build environment or your secret store. Without a key both run in evaluation mode.',
232
+ '',
233
+ ];
234
+ if (framework === 'angular') {
235
+ return [
236
+ ...header,
237
+ '// Angular: expose the keys through src/environments/environment.ts (`ng generate environments`)',
238
+ '// and import them here, e.g. `import { environment } from "../environments/environment";`.',
239
+ 'export const ADAPTABLE_LICENSE_KEY: string | undefined = undefined;',
240
+ 'export const AG_GRID_LICENSE_KEY: string | undefined = undefined;',
241
+ '',
242
+ ].join('\n');
243
+ }
244
+ return [
245
+ ...header,
246
+ '// Vite: define VITE_ADAPTABLE_LICENSE_KEY and VITE_AG_GRID_LICENSE_KEY in a .env.local file (git-ignored).',
247
+ 'export const ADAPTABLE_LICENSE_KEY: string | undefined = import.meta.env.VITE_ADAPTABLE_LICENSE_KEY;',
248
+ 'export const AG_GRID_LICENSE_KEY: string | undefined = import.meta.env.VITE_AG_GRID_LICENSE_KEY;',
249
+ '',
250
+ ].join('\n');
251
+ }
252
+ export function generateOnAdaptableReady(input) {
253
+ if (!input.sourceUrl) {
254
+ return [
255
+ `import { AdaptableReadyInfo } from '@adaptabletools/adaptable';`,
256
+ '',
257
+ 'export const onAdaptableReady = ({ adaptableApi }: AdaptableReadyInfo) => {',
258
+ ' const optionsApi = adaptableApi.optionsApi;',
259
+ ` console.log(optionsApi.getAdaptableId(), 'is ready');`,
260
+ '};',
261
+ '',
262
+ ].join('\n');
263
+ }
264
+ return [
265
+ `import { AdaptableReadyInfo } from '@adaptabletools/adaptable';`,
266
+ `import { fetchRowData, SOURCE_URL } from './rowData';`,
267
+ '',
268
+ 'export const onAdaptableReady = ({ adaptableApi }: AdaptableReadyInfo) => {',
269
+ ' fetchRowData()',
270
+ ' .then((rows) => adaptableApi.gridApi.loadGridData(rows))',
271
+ ' .catch((error: unknown) => {',
272
+ ` console.error('Could not load rows from', SOURCE_URL, error);`,
273
+ ' });',
274
+ '};',
275
+ '',
276
+ ].join('\n');
277
+ }
278
+ /** The demo templates disable State persistence; a scaffolded app should persist (AdapTable's default is localStorage) */
279
+ const STATE_OPTIONS_BLOCK = /\n\s*stateOptions:\s*\{\s*\n\s*loadState: \(\) => Promise\.resolve\(\{\}\),\s*\n\s*persistState: \(\) => Promise\.resolve\(\),\s*\n\s*\.\.\.\(adaptableOptions\?\.stateOptions \?\? \{\}\),\s*\n\s*\},/;
280
+ /** Adapts a docs wiring file: row type name, and the no-persistence block removed */
281
+ export function adaptWiring(template, rowType) {
282
+ const renamed = template.replace(/\bWebFramework\b/g, rowType);
283
+ const persistenceRestored = STATE_OPTIONS_BLOCK.test(renamed);
284
+ return { content: renamed.replace(STATE_OPTIONS_BLOCK, ''), persistenceRestored };
285
+ }
286
+ /** React: Vite's react-ts tsconfig has `noUnusedLocals`; the demo's unused state setters would fail the build */
287
+ export function reactApp(template, rowType) {
288
+ const wiring = adaptWiring(template, rowType);
289
+ return {
290
+ ...wiring,
291
+ content: wiring.content.replace(/const \[(\w+), set\w+\] = useState</g, 'const [$1] = useState<'),
292
+ };
293
+ }
294
+ /** Vite's `index.html` has `#app`; AdapTable's containers default to `#adaptable` and `#grid` */
295
+ export function vanillaMain(template, rowType) {
296
+ const wiring = adaptWiring(template, rowType);
297
+ const prelude = [
298
+ `// Vite's index.html provides #app; AdapTable mounts into #adaptable and the grid into #grid`,
299
+ `// (adaptableOptions.containerOptions can rename them).`,
300
+ `const app = document.querySelector<HTMLDivElement>('#app') ?? document.body;`,
301
+ `app.style.cssText = 'display: flex; flex-direction: column; height: 100vh;';`,
302
+ `app.innerHTML = '<div id="adaptable"></div><div id="grid" style="flex: 1"></div>';`,
303
+ '',
304
+ ].join('\n');
305
+ // after the imports, before the first statement
306
+ const lastImport = wiring.content.lastIndexOf('\nimport ');
307
+ const importsEnd = lastImport >= 0 ? wiring.content.indexOf('\n', wiring.content.indexOf(';', lastImport)) + 1 : 0;
308
+ return { ...wiring, content: `${wiring.content.slice(0, importsEnd)}\n${prelude}${wiring.content.slice(importsEnd)}` };
309
+ }
310
+ /** Vue: the creator's `main.ts` is left alone, so the CSS imports move into `App.vue` */
311
+ export function vueApp(template, rowType, adaptablePackage) {
312
+ const wiring = adaptWiring(template, rowType);
313
+ const marker = '<script setup lang="ts">\n';
314
+ const at = wiring.content.indexOf(marker);
315
+ const imports = `import '${adaptablePackage}/index.css';\nimport './styles.css';\n`;
316
+ if (at < 0) {
317
+ return { ...wiring, content: `<script setup lang="ts">\n${imports}</script>\n${wiring.content}` };
318
+ }
319
+ const cut = at + marker.length;
320
+ return { ...wiring, content: `${wiring.content.slice(0, cut)}${imports}${wiring.content.slice(cut)}` };
321
+ }
322
+ /** Angular: a standalone root component (the docs template is NgModule-based; `ng new` has been standalone since 17) */
323
+ export function angularComponent(input, target) {
324
+ return [
325
+ `import { Component } from '@angular/core';`,
326
+ `import { AgGridModule } from 'ag-grid-angular';`,
327
+ `import { AdaptableAngularAgGridModule, AdaptableOptions, AdaptableReadyInfo } from '${input.adaptablePackage}';`,
328
+ `import { GridOptions } from 'ag-grid-enterprise';`,
329
+ '',
330
+ `import { adaptableOptions } from './adaptableOptions';`,
331
+ `import { gridOptions } from './gridOptions';`,
332
+ `import { agGridModules } from './agGridModules';`,
333
+ `import { onAdaptableReady } from './onAdaptableReady';`,
334
+ `import { ${input.rowType} } from './rowData';`,
335
+ '',
336
+ '@Component({',
337
+ ` selector: 'app-root',`,
338
+ ' standalone: true,',
339
+ ' imports: [AgGridModule, AdaptableAngularAgGridModule],',
340
+ ' // AdapTable styles are global: src/styles.css imports them (angular.json "styles")',
341
+ ' template: `',
342
+ ' <adaptable-provider',
343
+ ' [adaptableOptions]="adaptableOptions"',
344
+ ' [gridOptions]="gridOptions"',
345
+ ' [modules]="modules"',
346
+ ' (adaptableReady)="adaptableReady($event)"',
347
+ ' style="height: 100vh; width: 100vw; display: flex; flex-flow: column;">',
348
+ ' <adaptable-ui style="flex: none"></adaptable-ui>',
349
+ ' <ag-grid-angular',
350
+ ' *adaptable="let adaptable"',
351
+ ' [gridOptions]="adaptable.gridOptions"',
352
+ ' [modules]="adaptable.modules"',
353
+ ' style="flex: 1">',
354
+ ' </ag-grid-angular>',
355
+ ' </adaptable-provider>',
356
+ ' `,',
357
+ '})',
358
+ `export class ${target.className} {`,
359
+ ` adaptableOptions: AdaptableOptions<${input.rowType}> = adaptableOptions;`,
360
+ ` gridOptions: GridOptions<${input.rowType}> = gridOptions;`,
361
+ ' modules = agGridModules;',
362
+ '',
363
+ ' adaptableReady(event: AdaptableReadyInfo) {',
364
+ ' onAdaptableReady(event);',
365
+ ' }',
366
+ '}',
367
+ '',
368
+ ].join('\n');
369
+ }
370
+ /** Angular loads styles globally through `src/styles.css` (angular.json "styles"); it imports AdapTable's stylesheet first */
371
+ export function angularStyles(template, adaptablePackage) {
372
+ return `/* Global styles: angular.json lists this file under "styles". AdapTable's stylesheet first, then the demo template's. */\n@import '${adaptablePackage}/index.css';\n\n${template}`;
373
+ }
374
+ /** Vite's creator stylesheets centre and pad `#root` / `#app`; the grid wants the viewport */
375
+ export function viteStyles(template) {
376
+ return `${template.trimEnd()}\n\n/* The creator's index.css / style.css centre and pad the root element; the grid needs the full viewport. */\n#root,\n#app {\n width: 100%;\n max-width: none;\n margin: 0;\n padding: 0;\n text-align: initial;\n}\n`;
377
+ }
378
+ /** Names the templates and generated files import that are types (the creators' tsconfigs set `verbatimModuleSyntax`) */
379
+ export const TYPE_IMPORTS = new Set(['AdaptableApi', 'AdaptableOptions', 'AdaptableReadyInfo', 'GridOptions', 'AgGridConfig', 'ColDef', 'ColGroupDef', 'Module']);
380
+ /**
381
+ * Marks type imports as type-only: `import { Adaptable, type AdaptableApi }`, or
382
+ * `import type { ColDef }` when every specifier is a type. Vite's `react-ts` / `vue-ts`
383
+ * tsconfigs enable `verbatimModuleSyntax`, under which a type imported as a value is a
384
+ * compile error; the form is valid everywhere else too.
385
+ */
386
+ export function typeOnlyImports(code, extraTypes = []) {
387
+ const types = new Set([...TYPE_IMPORTS, ...extraTypes]);
388
+ return code.replace(/import\s*\{([^}]*)\}\s*from\s*(['"][^'"]+['"]);?/g, (whole, specs, from) => {
389
+ const parts = specs
390
+ .split(',')
391
+ .map((part) => part.trim())
392
+ .filter((part) => part.length > 0);
393
+ if (parts.length === 0) {
394
+ return whole;
395
+ }
396
+ const nameOf = (part) => part.replace(/^type\s+/, '').split(/\s+as\s+/)[0].trim();
397
+ const marked = parts.map((part) => (types.has(nameOf(part)) && !part.startsWith('type ') ? `type ${part}` : part));
398
+ if (marked.every((part, index) => part === parts[index])) {
399
+ return whole;
400
+ }
401
+ const allTypes = marked.every((part) => part.startsWith('type '));
402
+ const list = allTypes ? marked.map((part) => part.replace(/^type\s+/, '')) : marked;
403
+ const multiline = specs.includes('\n');
404
+ const spaced = /^\s/.test(specs) && !multiline;
405
+ const body = multiline ? `\n ${list.join(',\n ')},\n` : spaced ? ` ${list.join(', ')} ` : list.join(', ');
406
+ return `import ${allTypes ? 'type ' : ''}{${body}} from ${from};`;
407
+ });
408
+ }
409
+ //# sourceMappingURL=generate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../src/core/scaffold/generate.ts"],"names":[],"mappings":"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"}