@adminiumjs/adminium 0.1.0-rc.1

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 (875) hide show
  1. package/LICENSE +661 -0
  2. package/README.md +94 -0
  3. package/dashboard/assets/DeltaPill-dxlsGh-1.js +2 -0
  4. package/dashboard/assets/DeltaPill-dxlsGh-1.js.map +1 -0
  5. package/dashboard/assets/DistributionCorrelationWidgets-ztVy_W_R.js +2 -0
  6. package/dashboard/assets/DistributionCorrelationWidgets-ztVy_W_R.js.map +1 -0
  7. package/dashboard/assets/PartWholeWidgets-BDn0i0jt.js +2 -0
  8. package/dashboard/assets/PartWholeWidgets-BDn0i0jt.js.map +1 -0
  9. package/dashboard/assets/RemapEditor-z3vRY12e.js +2 -0
  10. package/dashboard/assets/RemapEditor-z3vRY12e.js.map +1 -0
  11. package/dashboard/assets/ReviewScreen-COkLQ3T7.js +2 -0
  12. package/dashboard/assets/ReviewScreen-COkLQ3T7.js.map +1 -0
  13. package/dashboard/assets/Sparkline-Cvwo368J.js +2 -0
  14. package/dashboard/assets/Sparkline-Cvwo368J.js.map +1 -0
  15. package/dashboard/assets/WidgetMissingCard-D0bPJKIs.js +2 -0
  16. package/dashboard/assets/WidgetMissingCard-D0bPJKIs.js.map +1 -0
  17. package/dashboard/assets/arc-CPxb74pf.js +2 -0
  18. package/dashboard/assets/arc-CPxb74pf.js.map +1 -0
  19. package/dashboard/assets/bars-ranking-components-9Asn_0gR.js +2 -0
  20. package/dashboard/assets/bars-ranking-components-9Asn_0gR.js.map +1 -0
  21. package/dashboard/assets/blocks-track-components-BST-NjK2.js +2 -0
  22. package/dashboard/assets/blocks-track-components-BST-NjK2.js.map +1 -0
  23. package/dashboard/assets/calendar-track-components-RgNtGtZR.js +2 -0
  24. package/dashboard/assets/calendar-track-components-RgNtGtZR.js.map +1 -0
  25. package/dashboard/assets/chrome-track-components-ClNsentC.js +2 -0
  26. package/dashboard/assets/chrome-track-components-ClNsentC.js.map +1 -0
  27. package/dashboard/assets/common-BY1j__bD.js +2 -0
  28. package/dashboard/assets/common-BY1j__bD.js.map +1 -0
  29. package/dashboard/assets/common-BdlXKpcB.js +2 -0
  30. package/dashboard/assets/common-BdlXKpcB.js.map +1 -0
  31. package/dashboard/assets/common-BqqhgMgB.js +2 -0
  32. package/dashboard/assets/common-BqqhgMgB.js.map +1 -0
  33. package/dashboard/assets/common-BribWmIo.js +2 -0
  34. package/dashboard/assets/common-BribWmIo.js.map +1 -0
  35. package/dashboard/assets/common-Cmf0_lKV.js +2 -0
  36. package/dashboard/assets/common-Cmf0_lKV.js.map +1 -0
  37. package/dashboard/assets/common-i0r48qY9.js +2 -0
  38. package/dashboard/assets/common-i0r48qY9.js.map +1 -0
  39. package/dashboard/assets/common-x8cfkwpc.js +2 -0
  40. package/dashboard/assets/common-x8cfkwpc.js.map +1 -0
  41. package/dashboard/assets/communication-track-components-CNLZXOH_.js +2 -0
  42. package/dashboard/assets/communication-track-components-CNLZXOH_.js.map +1 -0
  43. package/dashboard/assets/components-Bp5cFm2d.js +2 -0
  44. package/dashboard/assets/components-Bp5cFm2d.js.map +1 -0
  45. package/dashboard/assets/components-C4-O3_gD.js +2 -0
  46. package/dashboard/assets/components-C4-O3_gD.js.map +1 -0
  47. package/dashboard/assets/domain-ops-track-components-BPa41AU7.js +2 -0
  48. package/dashboard/assets/domain-ops-track-components-BPa41AU7.js.map +1 -0
  49. package/dashboard/assets/domain-track-components-CQ1i1X1t.js +2 -0
  50. package/dashboard/assets/domain-track-components-CQ1i1X1t.js.map +1 -0
  51. package/dashboard/assets/errors-BHUWiAQ3.js +2 -0
  52. package/dashboard/assets/errors-BHUWiAQ3.js.map +1 -0
  53. package/dashboard/assets/errors-BbyKweDG.js +2 -0
  54. package/dashboard/assets/errors-BbyKweDG.js.map +1 -0
  55. package/dashboard/assets/errors-CMQ6JC31.js +2 -0
  56. package/dashboard/assets/errors-CMQ6JC31.js.map +1 -0
  57. package/dashboard/assets/errors-D3nVgTmf.js +2 -0
  58. package/dashboard/assets/errors-D3nVgTmf.js.map +1 -0
  59. package/dashboard/assets/errors-IqJSoANC.js +2 -0
  60. package/dashboard/assets/errors-IqJSoANC.js.map +1 -0
  61. package/dashboard/assets/errors-gmIkO9F6.js +2 -0
  62. package/dashboard/assets/errors-gmIkO9F6.js.map +1 -0
  63. package/dashboard/assets/errors-vFk058Vh.js +2 -0
  64. package/dashboard/assets/errors-vFk058Vh.js.map +1 -0
  65. package/dashboard/assets/feeds-track-f-components-Cl_8SkGs.js +2 -0
  66. package/dashboard/assets/feeds-track-f-components-Cl_8SkGs.js.map +1 -0
  67. package/dashboard/assets/format-Lx4cQ8k-.js +2 -0
  68. package/dashboard/assets/format-Lx4cQ8k-.js.map +1 -0
  69. package/dashboard/assets/forms-track-components-Bc2Hoxdh.js +2 -0
  70. package/dashboard/assets/forms-track-components-Bc2Hoxdh.js.map +1 -0
  71. package/dashboard/assets/generated-1EfWhCMA.js +2 -0
  72. package/dashboard/assets/generated-1EfWhCMA.js.map +1 -0
  73. package/dashboard/assets/generated-BB3ZMxvx.js +2 -0
  74. package/dashboard/assets/generated-BB3ZMxvx.js.map +1 -0
  75. package/dashboard/assets/generated-C0JVNBRX.js +2 -0
  76. package/dashboard/assets/generated-C0JVNBRX.js.map +1 -0
  77. package/dashboard/assets/generated-C1W48_-3.js +2 -0
  78. package/dashboard/assets/generated-C1W48_-3.js.map +1 -0
  79. package/dashboard/assets/generated-CluiB_xY.js +2 -0
  80. package/dashboard/assets/generated-CluiB_xY.js.map +1 -0
  81. package/dashboard/assets/generated-DDGtlf-4.js +2 -0
  82. package/dashboard/assets/generated-DDGtlf-4.js.map +1 -0
  83. package/dashboard/assets/generated-DPCHvNto.js +2 -0
  84. package/dashboard/assets/generated-DPCHvNto.js.map +1 -0
  85. package/dashboard/assets/geo-track-components-Ct4-MSRw.js +3 -0
  86. package/dashboard/assets/geo-track-components-Ct4-MSRw.js.map +1 -0
  87. package/dashboard/assets/ibm-plex-sans-arabic-arabic-400-normal-CyU-ddYS.woff2 +0 -0
  88. package/dashboard/assets/ibm-plex-sans-arabic-arabic-500-normal-C4MQITzh.woff2 +0 -0
  89. package/dashboard/assets/ibm-plex-sans-arabic-arabic-600-normal-0pRdybE_.woff2 +0 -0
  90. package/dashboard/assets/ibm-plex-sans-arabic-arabic-700-normal-DrtBj6UE.woff2 +0 -0
  91. package/dashboard/assets/index-DPi4cduu.css +1 -0
  92. package/dashboard/assets/index-PB1II0WV.js +137 -0
  93. package/dashboard/assets/index-PB1II0WV.js.map +1 -0
  94. package/dashboard/assets/jetbrains-mono-latin-ext-wght-italic-BrDczivE.woff2 +0 -0
  95. package/dashboard/assets/jetbrains-mono-latin-ext-wght-normal-DBQx-q_a.woff2 +0 -0
  96. package/dashboard/assets/jetbrains-mono-latin-wght-italic-B2M6KQje.woff2 +0 -0
  97. package/dashboard/assets/jetbrains-mono-latin-wght-normal-B9CIFXIH.woff2 +0 -0
  98. package/dashboard/assets/leaflet-CIGW-MKW.css +1 -0
  99. package/dashboard/assets/leaflet-src-D12shr04.js +2 -0
  100. package/dashboard/assets/leaflet-src-D12shr04.js.map +1 -0
  101. package/dashboard/assets/manrope-latin-ext-wght-normal-Ch3YOpNY.woff2 +0 -0
  102. package/dashboard/assets/manrope-latin-wght-normal-DHIcAJRg.woff2 +0 -0
  103. package/dashboard/assets/media-track-components-CpeII-tT.js +2 -0
  104. package/dashboard/assets/media-track-components-CpeII-tT.js.map +1 -0
  105. package/dashboard/assets/scales-e0tkfEy1.js +2 -0
  106. package/dashboard/assets/scales-e0tkfEy1.js.map +1 -0
  107. package/dashboard/assets/sparkline-2JUGDrMW.js +2 -0
  108. package/dashboard/assets/sparkline-2JUGDrMW.js.map +1 -0
  109. package/dashboard/assets/stats-BNgXz5BD.js +2 -0
  110. package/dashboard/assets/stats-BNgXz5BD.js.map +1 -0
  111. package/dashboard/assets/studio-B7hMOwAF.js +2 -0
  112. package/dashboard/assets/studio-B7hMOwAF.js.map +1 -0
  113. package/dashboard/assets/studio-BN_9xHY3.js +2 -0
  114. package/dashboard/assets/studio-BN_9xHY3.js.map +1 -0
  115. package/dashboard/assets/studio-Cn2MObe8.js +2 -0
  116. package/dashboard/assets/studio-Cn2MObe8.js.map +1 -0
  117. package/dashboard/assets/studio-DZEZCCkw.js +2 -0
  118. package/dashboard/assets/studio-DZEZCCkw.js.map +1 -0
  119. package/dashboard/assets/studio-DzatTvLl.js +2 -0
  120. package/dashboard/assets/studio-DzatTvLl.js.map +1 -0
  121. package/dashboard/assets/studio-cBlD8x90.js +2 -0
  122. package/dashboard/assets/studio-cBlD8x90.js.map +1 -0
  123. package/dashboard/assets/studio-cglZPbJK.js +2 -0
  124. package/dashboard/assets/studio-cglZPbJK.js.map +1 -0
  125. package/dashboard/assets/system-track-components-GTYYpnfB.js +2 -0
  126. package/dashboard/assets/system-track-components-GTYYpnfB.js.map +1 -0
  127. package/dashboard/assets/tables-tail-components-DiA5GeHB.js +2 -0
  128. package/dashboard/assets/tables-tail-components-DiA5GeHB.js.map +1 -0
  129. package/dashboard/assets/tables-track-f-components-CVNPd7rq.js +2 -0
  130. package/dashboard/assets/tables-track-f-components-CVNPd7rq.js.map +1 -0
  131. package/dashboard/assets/time-flow-components-nKsaryry.js +2 -0
  132. package/dashboard/assets/time-flow-components-nKsaryry.js.map +1 -0
  133. package/dashboard/assets/ui-B-kZetor.js +2 -0
  134. package/dashboard/assets/ui-B-kZetor.js.map +1 -0
  135. package/dashboard/assets/ui-BEStJ5Pw.js +2 -0
  136. package/dashboard/assets/ui-BEStJ5Pw.js.map +1 -0
  137. package/dashboard/assets/ui-BS5_eDN4.js +2 -0
  138. package/dashboard/assets/ui-BS5_eDN4.js.map +1 -0
  139. package/dashboard/assets/ui-BZ0EyxRH.js +2 -0
  140. package/dashboard/assets/ui-BZ0EyxRH.js.map +1 -0
  141. package/dashboard/assets/ui-BloJDdt6.js +2 -0
  142. package/dashboard/assets/ui-BloJDdt6.js.map +1 -0
  143. package/dashboard/assets/ui-CpdrplJH.js +2 -0
  144. package/dashboard/assets/ui-CpdrplJH.js.map +1 -0
  145. package/dashboard/assets/ui-YJfT644k.js +2 -0
  146. package/dashboard/assets/ui-YJfT644k.js.map +1 -0
  147. package/dashboard/assets/widgets-uDqZWw4A.js +2 -0
  148. package/dashboard/assets/widgets-uDqZWw4A.js.map +1 -0
  149. package/dashboard/index.html +41 -0
  150. package/dist/app.d.ts +48 -0
  151. package/dist/app.d.ts.map +1 -0
  152. package/dist/app.js +250 -0
  153. package/dist/app.js.map +1 -0
  154. package/dist/auth/audit.d.ts +22 -0
  155. package/dist/auth/audit.d.ts.map +1 -0
  156. package/dist/auth/audit.js +17 -0
  157. package/dist/auth/audit.js.map +1 -0
  158. package/dist/auth/desktop-session.d.ts +53 -0
  159. package/dist/auth/desktop-session.d.ts.map +1 -0
  160. package/dist/auth/desktop-session.js +111 -0
  161. package/dist/auth/desktop-session.js.map +1 -0
  162. package/dist/auth/passwords.d.ts +17 -0
  163. package/dist/auth/passwords.d.ts.map +1 -0
  164. package/dist/auth/passwords.js +40 -0
  165. package/dist/auth/passwords.js.map +1 -0
  166. package/dist/auth/sessions.d.ts +77 -0
  167. package/dist/auth/sessions.d.ts.map +1 -0
  168. package/dist/auth/sessions.js +137 -0
  169. package/dist/auth/sessions.js.map +1 -0
  170. package/dist/auth/totp.d.ts +30 -0
  171. package/dist/auth/totp.d.ts.map +1 -0
  172. package/dist/auth/totp.js +97 -0
  173. package/dist/auth/totp.js.map +1 -0
  174. package/dist/backup/backup-service.d.ts +157 -0
  175. package/dist/backup/backup-service.d.ts.map +1 -0
  176. package/dist/backup/backup-service.js +354 -0
  177. package/dist/backup/backup-service.js.map +1 -0
  178. package/dist/backup/format.d.ts +300 -0
  179. package/dist/backup/format.d.ts.map +1 -0
  180. package/dist/backup/format.js +304 -0
  181. package/dist/backup/format.js.map +1 -0
  182. package/dist/backup/notify.d.ts +55 -0
  183. package/dist/backup/notify.d.ts.map +1 -0
  184. package/dist/backup/notify.js +60 -0
  185. package/dist/backup/notify.js.map +1 -0
  186. package/dist/backup/snapshot.d.ts +78 -0
  187. package/dist/backup/snapshot.d.ts.map +1 -0
  188. package/dist/backup/snapshot.js +142 -0
  189. package/dist/backup/snapshot.js.map +1 -0
  190. package/dist/capabilities/catalog.d.ts +33 -0
  191. package/dist/capabilities/catalog.d.ts.map +1 -0
  192. package/dist/capabilities/catalog.js +32 -0
  193. package/dist/capabilities/catalog.js.map +1 -0
  194. package/dist/capabilities/grants.d.ts +44 -0
  195. package/dist/capabilities/grants.d.ts.map +1 -0
  196. package/dist/capabilities/grants.js +65 -0
  197. package/dist/capabilities/grants.js.map +1 -0
  198. package/dist/cli/allowlist.d.ts +46 -0
  199. package/dist/cli/allowlist.d.ts.map +1 -0
  200. package/dist/cli/allowlist.js +99 -0
  201. package/dist/cli/allowlist.js.map +1 -0
  202. package/dist/cli/args.d.ts +63 -0
  203. package/dist/cli/args.d.ts.map +1 -0
  204. package/dist/cli/args.js +92 -0
  205. package/dist/cli/args.js.map +1 -0
  206. package/dist/cli/command.d.ts +32 -0
  207. package/dist/cli/command.d.ts.map +1 -0
  208. package/dist/cli/command.js +64 -0
  209. package/dist/cli/command.js.map +1 -0
  210. package/dist/cli/commands/apply-llm-response.d.ts +32 -0
  211. package/dist/cli/commands/apply-llm-response.d.ts.map +1 -0
  212. package/dist/cli/commands/apply-llm-response.js +209 -0
  213. package/dist/cli/commands/apply-llm-response.js.map +1 -0
  214. package/dist/cli/commands/export-zip.d.ts +17 -0
  215. package/dist/cli/commands/export-zip.d.ts.map +1 -0
  216. package/dist/cli/commands/export-zip.js +111 -0
  217. package/dist/cli/commands/export-zip.js.map +1 -0
  218. package/dist/cli/commands/generate-prompt.d.ts +29 -0
  219. package/dist/cli/commands/generate-prompt.d.ts.map +1 -0
  220. package/dist/cli/commands/generate-prompt.js +154 -0
  221. package/dist/cli/commands/generate-prompt.js.map +1 -0
  222. package/dist/cli/commands/import-zip.d.ts +13 -0
  223. package/dist/cli/commands/import-zip.d.ts.map +1 -0
  224. package/dist/cli/commands/import-zip.js +95 -0
  225. package/dist/cli/commands/import-zip.js.map +1 -0
  226. package/dist/cli/commands/init.d.ts +47 -0
  227. package/dist/cli/commands/init.d.ts.map +1 -0
  228. package/dist/cli/commands/init.js +372 -0
  229. package/dist/cli/commands/init.js.map +1 -0
  230. package/dist/cli/commands/introspect.d.ts +11 -0
  231. package/dist/cli/commands/introspect.d.ts.map +1 -0
  232. package/dist/cli/commands/introspect.js +100 -0
  233. package/dist/cli/commands/introspect.js.map +1 -0
  234. package/dist/cli/commands/migrate.d.ts +11 -0
  235. package/dist/cli/commands/migrate.d.ts.map +1 -0
  236. package/dist/cli/commands/migrate.js +80 -0
  237. package/dist/cli/commands/migrate.js.map +1 -0
  238. package/dist/cli/commands/start.d.ts +22 -0
  239. package/dist/cli/commands/start.d.ts.map +1 -0
  240. package/dist/cli/commands/start.js +101 -0
  241. package/dist/cli/commands/start.js.map +1 -0
  242. package/dist/cli/exit.d.ts +37 -0
  243. package/dist/cli/exit.d.ts.map +1 -0
  244. package/dist/cli/exit.js +39 -0
  245. package/dist/cli/exit.js.map +1 -0
  246. package/dist/cli/index.d.ts +10 -0
  247. package/dist/cli/index.d.ts.map +1 -0
  248. package/dist/cli/index.js +17 -0
  249. package/dist/cli/index.js.map +1 -0
  250. package/dist/cli/io.d.ts +49 -0
  251. package/dist/cli/io.d.ts.map +1 -0
  252. package/dist/cli/io.js +77 -0
  253. package/dist/cli/io.js.map +1 -0
  254. package/dist/cli/run.d.ts +35 -0
  255. package/dist/cli/run.d.ts.map +1 -0
  256. package/dist/cli/run.js +139 -0
  257. package/dist/cli/run.js.map +1 -0
  258. package/dist/cli/runtime.d.ts +116 -0
  259. package/dist/cli/runtime.d.ts.map +1 -0
  260. package/dist/cli/runtime.js +181 -0
  261. package/dist/cli/runtime.js.map +1 -0
  262. package/dist/cli/static-root.d.ts +42 -0
  263. package/dist/cli/static-root.d.ts.map +1 -0
  264. package/dist/cli/static-root.js +58 -0
  265. package/dist/cli/static-root.js.map +1 -0
  266. package/dist/compose.d.ts +135 -0
  267. package/dist/compose.d.ts.map +1 -0
  268. package/dist/compose.js +383 -0
  269. package/dist/compose.js.map +1 -0
  270. package/dist/config/bootstrap.d.ts +33 -0
  271. package/dist/config/bootstrap.d.ts.map +1 -0
  272. package/dist/config/bootstrap.js +81 -0
  273. package/dist/config/bootstrap.js.map +1 -0
  274. package/dist/config/env.d.ts +95 -0
  275. package/dist/config/env.d.ts.map +1 -0
  276. package/dist/config/env.js +236 -0
  277. package/dist/config/env.js.map +1 -0
  278. package/dist/config/secrets.d.ts +24 -0
  279. package/dist/config/secrets.d.ts.map +1 -0
  280. package/dist/config/secrets.js +74 -0
  281. package/dist/config/secrets.js.map +1 -0
  282. package/dist/connections/crypto.d.ts +9 -0
  283. package/dist/connections/crypto.d.ts.map +1 -0
  284. package/dist/connections/crypto.js +16 -0
  285. package/dist/connections/crypto.js.map +1 -0
  286. package/dist/connections/dsn.d.ts +42 -0
  287. package/dist/connections/dsn.d.ts.map +1 -0
  288. package/dist/connections/dsn.js +131 -0
  289. package/dist/connections/dsn.js.map +1 -0
  290. package/dist/connections/effective-schema.d.ts +65 -0
  291. package/dist/connections/effective-schema.d.ts.map +1 -0
  292. package/dist/connections/effective-schema.js +249 -0
  293. package/dist/connections/effective-schema.js.map +1 -0
  294. package/dist/connections/introspect.d.ts +52 -0
  295. package/dist/connections/introspect.d.ts.map +1 -0
  296. package/dist/connections/introspect.js +111 -0
  297. package/dist/connections/introspect.js.map +1 -0
  298. package/dist/connections/manager.d.ts +97 -0
  299. package/dist/connections/manager.d.ts.map +1 -0
  300. package/dist/connections/manager.js +224 -0
  301. package/dist/connections/manager.js.map +1 -0
  302. package/dist/connections/register-adapters.d.ts +42 -0
  303. package/dist/connections/register-adapters.d.ts.map +1 -0
  304. package/dist/connections/register-adapters.js +92 -0
  305. package/dist/connections/register-adapters.js.map +1 -0
  306. package/dist/crud/filters.d.ts +57 -0
  307. package/dist/crud/filters.d.ts.map +1 -0
  308. package/dist/crud/filters.js +177 -0
  309. package/dist/crud/filters.js.map +1 -0
  310. package/dist/crud/identifiers.d.ts +58 -0
  311. package/dist/crud/identifiers.d.ts.map +1 -0
  312. package/dist/crud/identifiers.js +99 -0
  313. package/dist/crud/identifiers.js.map +1 -0
  314. package/dist/crud/list.d.ts +51 -0
  315. package/dist/crud/list.d.ts.map +1 -0
  316. package/dist/crud/list.js +126 -0
  317. package/dist/crud/list.js.map +1 -0
  318. package/dist/crud/mask.d.ts +23 -0
  319. package/dist/crud/mask.d.ts.map +1 -0
  320. package/dist/crud/mask.js +41 -0
  321. package/dist/crud/mask.js.map +1 -0
  322. package/dist/crud/records.d.ts +33 -0
  323. package/dist/crud/records.d.ts.map +1 -0
  324. package/dist/crud/records.js +126 -0
  325. package/dist/crud/records.js.map +1 -0
  326. package/dist/crud/undo.d.ts +55 -0
  327. package/dist/crud/undo.d.ts.map +1 -0
  328. package/dist/crud/undo.js +74 -0
  329. package/dist/crud/undo.js.map +1 -0
  330. package/dist/data-io/coerce.d.ts +28 -0
  331. package/dist/data-io/coerce.d.ts.map +1 -0
  332. package/dist/data-io/coerce.js +123 -0
  333. package/dist/data-io/coerce.js.map +1 -0
  334. package/dist/data-io/csv.d.ts +38 -0
  335. package/dist/data-io/csv.d.ts.map +1 -0
  336. package/dist/data-io/csv.js +138 -0
  337. package/dist/data-io/csv.js.map +1 -0
  338. package/dist/data-io/snapshot-view.d.ts +10 -0
  339. package/dist/data-io/snapshot-view.d.ts.map +1 -0
  340. package/dist/data-io/snapshot-view.js +19 -0
  341. package/dist/data-io/snapshot-view.js.map +1 -0
  342. package/dist/desktop/demo-seed.d.ts +23 -0
  343. package/dist/desktop/demo-seed.d.ts.map +1 -0
  344. package/dist/desktop/demo-seed.js +28 -0
  345. package/dist/desktop/demo-seed.js.map +1 -0
  346. package/dist/desktop/lan-share.d.ts +94 -0
  347. package/dist/desktop/lan-share.d.ts.map +1 -0
  348. package/dist/desktop/lan-share.js +150 -0
  349. package/dist/desktop/lan-share.js.map +1 -0
  350. package/dist/errors.d.ts +72 -0
  351. package/dist/errors.d.ts.map +1 -0
  352. package/dist/errors.js +82 -0
  353. package/dist/errors.js.map +1 -0
  354. package/dist/export/bundle.d.ts +235 -0
  355. package/dist/export/bundle.d.ts.map +1 -0
  356. package/dist/export/bundle.js +172 -0
  357. package/dist/export/bundle.js.map +1 -0
  358. package/dist/export/import-service.d.ts +99 -0
  359. package/dist/export/import-service.d.ts.map +1 -0
  360. package/dist/export/import-service.js +515 -0
  361. package/dist/export/import-service.js.map +1 -0
  362. package/dist/export/readme.d.ts +25 -0
  363. package/dist/export/readme.d.ts.map +1 -0
  364. package/dist/export/readme.js +154 -0
  365. package/dist/export/readme.js.map +1 -0
  366. package/dist/export/redaction.d.ts +118 -0
  367. package/dist/export/redaction.d.ts.map +1 -0
  368. package/dist/export/redaction.js +233 -0
  369. package/dist/export/redaction.js.map +1 -0
  370. package/dist/export/zip-service.d.ts +66 -0
  371. package/dist/export/zip-service.d.ts.map +1 -0
  372. package/dist/export/zip-service.js +306 -0
  373. package/dist/export/zip-service.js.map +1 -0
  374. package/dist/files/storage.d.ts +50 -0
  375. package/dist/files/storage.d.ts.map +1 -0
  376. package/dist/files/storage.js +100 -0
  377. package/dist/files/storage.js.map +1 -0
  378. package/dist/generate/materialize-llm.d.ts +45 -0
  379. package/dist/generate/materialize-llm.d.ts.map +1 -0
  380. package/dist/generate/materialize-llm.js +167 -0
  381. package/dist/generate/materialize-llm.js.map +1 -0
  382. package/dist/generate/run.d.ts +48 -0
  383. package/dist/generate/run.d.ts.map +1 -0
  384. package/dist/generate/run.js +123 -0
  385. package/dist/generate/run.js.map +1 -0
  386. package/dist/index.d.ts +89 -0
  387. package/dist/index.d.ts.map +1 -0
  388. package/dist/index.js +116 -0
  389. package/dist/index.js.map +1 -0
  390. package/dist/jobs/export-run.d.ts +38 -0
  391. package/dist/jobs/export-run.d.ts.map +1 -0
  392. package/dist/jobs/export-run.js +172 -0
  393. package/dist/jobs/export-run.js.map +1 -0
  394. package/dist/jobs/import-run.d.ts +43 -0
  395. package/dist/jobs/import-run.d.ts.map +1 -0
  396. package/dist/jobs/import-run.js +290 -0
  397. package/dist/jobs/import-run.js.map +1 -0
  398. package/dist/jobs/llm-run.d.ts +73 -0
  399. package/dist/jobs/llm-run.d.ts.map +1 -0
  400. package/dist/jobs/llm-run.js +225 -0
  401. package/dist/jobs/llm-run.js.map +1 -0
  402. package/dist/jobs/register.d.ts +90 -0
  403. package/dist/jobs/register.d.ts.map +1 -0
  404. package/dist/jobs/register.js +121 -0
  405. package/dist/jobs/register.js.map +1 -0
  406. package/dist/jobs/registry.d.ts +74 -0
  407. package/dist/jobs/registry.d.ts.map +1 -0
  408. package/dist/jobs/registry.js +78 -0
  409. package/dist/jobs/registry.js.map +1 -0
  410. package/dist/jobs/report-run.d.ts +64 -0
  411. package/dist/jobs/report-run.d.ts.map +1 -0
  412. package/dist/jobs/report-run.js +221 -0
  413. package/dist/jobs/report-run.js.map +1 -0
  414. package/dist/jobs/scheduler.d.ts +72 -0
  415. package/dist/jobs/scheduler.d.ts.map +1 -0
  416. package/dist/jobs/scheduler.js +121 -0
  417. package/dist/jobs/scheduler.js.map +1 -0
  418. package/dist/jobs/worker.d.ts +110 -0
  419. package/dist/jobs/worker.d.ts.map +1 -0
  420. package/dist/jobs/worker.js +282 -0
  421. package/dist/jobs/worker.js.map +1 -0
  422. package/dist/llm/apply-service.d.ts +150 -0
  423. package/dist/llm/apply-service.d.ts.map +1 -0
  424. package/dist/llm/apply-service.js +463 -0
  425. package/dist/llm/apply-service.js.map +1 -0
  426. package/dist/llm/apply-undo-store.d.ts +50 -0
  427. package/dist/llm/apply-undo-store.d.ts.map +1 -0
  428. package/dist/llm/apply-undo-store.js +60 -0
  429. package/dist/llm/apply-undo-store.js.map +1 -0
  430. package/dist/llm/direct-runner.d.ts +146 -0
  431. package/dist/llm/direct-runner.d.ts.map +1 -0
  432. package/dist/llm/direct-runner.js +204 -0
  433. package/dist/llm/direct-runner.js.map +1 -0
  434. package/dist/llm/prompt-service.d.ts +90 -0
  435. package/dist/llm/prompt-service.d.ts.map +1 -0
  436. package/dist/llm/prompt-service.js +93 -0
  437. package/dist/llm/prompt-service.js.map +1 -0
  438. package/dist/llm/provider-resolver.d.ts +25 -0
  439. package/dist/llm/provider-resolver.d.ts.map +1 -0
  440. package/dist/llm/provider-resolver.js +81 -0
  441. package/dist/llm/provider-resolver.js.map +1 -0
  442. package/dist/llm/run-service.d.ts +215 -0
  443. package/dist/llm/run-service.d.ts.map +1 -0
  444. package/dist/llm/run-service.js +343 -0
  445. package/dist/llm/run-service.js.map +1 -0
  446. package/dist/llm/stats-collector.d.ts +40 -0
  447. package/dist/llm/stats-collector.d.ts.map +1 -0
  448. package/dist/llm/stats-collector.js +74 -0
  449. package/dist/llm/stats-collector.js.map +1 -0
  450. package/dist/log-scrub.d.ts +58 -0
  451. package/dist/log-scrub.d.ts.map +1 -0
  452. package/dist/log-scrub.js +103 -0
  453. package/dist/log-scrub.js.map +1 -0
  454. package/dist/meta/store.d.ts +96 -0
  455. package/dist/meta/store.d.ts.map +1 -0
  456. package/dist/meta/store.js +192 -0
  457. package/dist/meta/store.js.map +1 -0
  458. package/dist/notifications/notify.d.ts +43 -0
  459. package/dist/notifications/notify.d.ts.map +1 -0
  460. package/dist/notifications/notify.js +42 -0
  461. package/dist/notifications/notify.js.map +1 -0
  462. package/dist/plugins/auth.d.ts +42 -0
  463. package/dist/plugins/auth.d.ts.map +1 -0
  464. package/dist/plugins/auth.js +84 -0
  465. package/dist/plugins/auth.js.map +1 -0
  466. package/dist/plugins/core.d.ts +48 -0
  467. package/dist/plugins/core.d.ts.map +1 -0
  468. package/dist/plugins/core.js +248 -0
  469. package/dist/plugins/core.js.map +1 -0
  470. package/dist/plugins/rbac.d.ts +54 -0
  471. package/dist/plugins/rbac.d.ts.map +1 -0
  472. package/dist/plugins/rbac.js +103 -0
  473. package/dist/plugins/rbac.js.map +1 -0
  474. package/dist/plugins/static.d.ts +12 -0
  475. package/dist/plugins/static.d.ts.map +1 -0
  476. package/dist/plugins/static.js +36 -0
  477. package/dist/plugins/static.js.map +1 -0
  478. package/dist/rbac/api-keys.d.ts +30 -0
  479. package/dist/rbac/api-keys.d.ts.map +1 -0
  480. package/dist/rbac/api-keys.js +41 -0
  481. package/dist/rbac/api-keys.js.map +1 -0
  482. package/dist/rbac/index.d.ts +6 -0
  483. package/dist/rbac/index.d.ts.map +1 -0
  484. package/dist/rbac/index.js +6 -0
  485. package/dist/rbac/index.js.map +1 -0
  486. package/dist/rbac/permissions.d.ts +107 -0
  487. package/dist/rbac/permissions.d.ts.map +1 -0
  488. package/dist/rbac/permissions.js +250 -0
  489. package/dist/rbac/permissions.js.map +1 -0
  490. package/dist/rbac/principal.d.ts +33 -0
  491. package/dist/rbac/principal.d.ts.map +1 -0
  492. package/dist/rbac/principal.js +31 -0
  493. package/dist/rbac/principal.js.map +1 -0
  494. package/dist/rbac/resolver.d.ts +26 -0
  495. package/dist/rbac/resolver.d.ts.map +1 -0
  496. package/dist/rbac/resolver.js +46 -0
  497. package/dist/rbac/resolver.js.map +1 -0
  498. package/dist/realtime/hub.d.ts +90 -0
  499. package/dist/realtime/hub.d.ts.map +1 -0
  500. package/dist/realtime/hub.js +146 -0
  501. package/dist/realtime/hub.js.map +1 -0
  502. package/dist/realtime/sse.d.ts +35 -0
  503. package/dist/realtime/sse.d.ts.map +1 -0
  504. package/dist/realtime/sse.js +88 -0
  505. package/dist/realtime/sse.js.map +1 -0
  506. package/dist/realtime/ws.d.ts +38 -0
  507. package/dist/realtime/ws.d.ts.map +1 -0
  508. package/dist/realtime/ws.js +124 -0
  509. package/dist/realtime/ws.js.map +1 -0
  510. package/dist/reports/schedule.d.ts +14 -0
  511. package/dist/reports/schedule.d.ts.map +1 -0
  512. package/dist/reports/schedule.js +63 -0
  513. package/dist/reports/schedule.js.map +1 -0
  514. package/dist/routes/about/index.d.ts +39 -0
  515. package/dist/routes/about/index.d.ts.map +1 -0
  516. package/dist/routes/about/index.js +73 -0
  517. package/dist/routes/about/index.js.map +1 -0
  518. package/dist/routes/about/schema.d.ts +50 -0
  519. package/dist/routes/about/schema.d.ts.map +1 -0
  520. package/dist/routes/about/schema.js +53 -0
  521. package/dist/routes/about/schema.js.map +1 -0
  522. package/dist/routes/api-keys/index.d.ts +11 -0
  523. package/dist/routes/api-keys/index.d.ts.map +1 -0
  524. package/dist/routes/api-keys/index.js +79 -0
  525. package/dist/routes/api-keys/index.js.map +1 -0
  526. package/dist/routes/api-keys/schema.d.ts +62 -0
  527. package/dist/routes/api-keys/schema.d.ts.map +1 -0
  528. package/dist/routes/api-keys/schema.js +37 -0
  529. package/dist/routes/api-keys/schema.js.map +1 -0
  530. package/dist/routes/audit/index.d.ts +11 -0
  531. package/dist/routes/audit/index.d.ts.map +1 -0
  532. package/dist/routes/audit/index.js +107 -0
  533. package/dist/routes/audit/index.js.map +1 -0
  534. package/dist/routes/audit/schema.d.ts +129 -0
  535. package/dist/routes/audit/schema.d.ts.map +1 -0
  536. package/dist/routes/audit/schema.js +43 -0
  537. package/dist/routes/audit/schema.js.map +1 -0
  538. package/dist/routes/auth/desktop-session.d.ts +48 -0
  539. package/dist/routes/auth/desktop-session.d.ts.map +1 -0
  540. package/dist/routes/auth/desktop-session.js +132 -0
  541. package/dist/routes/auth/desktop-session.js.map +1 -0
  542. package/dist/routes/auth/handlers.d.ts +21 -0
  543. package/dist/routes/auth/handlers.d.ts.map +1 -0
  544. package/dist/routes/auth/handlers.js +256 -0
  545. package/dist/routes/auth/handlers.js.map +1 -0
  546. package/dist/routes/auth/index.d.ts +27 -0
  547. package/dist/routes/auth/index.d.ts.map +1 -0
  548. package/dist/routes/auth/index.js +67 -0
  549. package/dist/routes/auth/index.js.map +1 -0
  550. package/dist/routes/auth/schema.d.ts +129 -0
  551. package/dist/routes/auth/schema.d.ts.map +1 -0
  552. package/dist/routes/auth/schema.js +84 -0
  553. package/dist/routes/auth/schema.js.map +1 -0
  554. package/dist/routes/bootstrap/handlers.d.ts +34 -0
  555. package/dist/routes/bootstrap/handlers.d.ts.map +1 -0
  556. package/dist/routes/bootstrap/handlers.js +96 -0
  557. package/dist/routes/bootstrap/handlers.js.map +1 -0
  558. package/dist/routes/bootstrap/index.d.ts +9 -0
  559. package/dist/routes/bootstrap/index.d.ts.map +1 -0
  560. package/dist/routes/bootstrap/index.js +16 -0
  561. package/dist/routes/bootstrap/index.js.map +1 -0
  562. package/dist/routes/bootstrap/schema.d.ts +177 -0
  563. package/dist/routes/bootstrap/schema.d.ts.map +1 -0
  564. package/dist/routes/bootstrap/schema.js +55 -0
  565. package/dist/routes/bootstrap/schema.js.map +1 -0
  566. package/dist/routes/connections/index.d.ts +21 -0
  567. package/dist/routes/connections/index.d.ts.map +1 -0
  568. package/dist/routes/connections/index.js +260 -0
  569. package/dist/routes/connections/index.js.map +1 -0
  570. package/dist/routes/connections/schema.d.ts +161 -0
  571. package/dist/routes/connections/schema.d.ts.map +1 -0
  572. package/dist/routes/connections/schema.js +91 -0
  573. package/dist/routes/connections/schema.js.map +1 -0
  574. package/dist/routes/data/index.d.ts +46 -0
  575. package/dist/routes/data/index.d.ts.map +1 -0
  576. package/dist/routes/data/index.js +508 -0
  577. package/dist/routes/data/index.js.map +1 -0
  578. package/dist/routes/data/schema.d.ts +128 -0
  579. package/dist/routes/data/schema.d.ts.map +1 -0
  580. package/dist/routes/data/schema.js +83 -0
  581. package/dist/routes/data/schema.js.map +1 -0
  582. package/dist/routes/desktop/index.d.ts +61 -0
  583. package/dist/routes/desktop/index.d.ts.map +1 -0
  584. package/dist/routes/desktop/index.js +91 -0
  585. package/dist/routes/desktop/index.js.map +1 -0
  586. package/dist/routes/desktop/schema.d.ts +71 -0
  587. package/dist/routes/desktop/schema.d.ts.map +1 -0
  588. package/dist/routes/desktop/schema.js +58 -0
  589. package/dist/routes/desktop/schema.js.map +1 -0
  590. package/dist/routes/desktop-capabilities/index.d.ts +9 -0
  591. package/dist/routes/desktop-capabilities/index.d.ts.map +1 -0
  592. package/dist/routes/desktop-capabilities/index.js +62 -0
  593. package/dist/routes/desktop-capabilities/index.js.map +1 -0
  594. package/dist/routes/desktop-capabilities/schema.d.ts +46 -0
  595. package/dist/routes/desktop-capabilities/schema.d.ts.map +1 -0
  596. package/dist/routes/desktop-capabilities/schema.js +30 -0
  597. package/dist/routes/desktop-capabilities/schema.js.map +1 -0
  598. package/dist/routes/desktop-demo/handlers.d.ts +94 -0
  599. package/dist/routes/desktop-demo/handlers.d.ts.map +1 -0
  600. package/dist/routes/desktop-demo/handlers.js +182 -0
  601. package/dist/routes/desktop-demo/handlers.js.map +1 -0
  602. package/dist/routes/desktop-demo/index.d.ts +39 -0
  603. package/dist/routes/desktop-demo/index.d.ts.map +1 -0
  604. package/dist/routes/desktop-demo/index.js +73 -0
  605. package/dist/routes/desktop-demo/index.js.map +1 -0
  606. package/dist/routes/desktop-demo/schema.d.ts +17 -0
  607. package/dist/routes/desktop-demo/schema.d.ts.map +1 -0
  608. package/dist/routes/desktop-demo/schema.js +30 -0
  609. package/dist/routes/desktop-demo/schema.js.map +1 -0
  610. package/dist/routes/desktop-lan/index.d.ts +54 -0
  611. package/dist/routes/desktop-lan/index.d.ts.map +1 -0
  612. package/dist/routes/desktop-lan/index.js +33 -0
  613. package/dist/routes/desktop-lan/index.js.map +1 -0
  614. package/dist/routes/desktop-lan/schema.d.ts +24 -0
  615. package/dist/routes/desktop-lan/schema.d.ts.map +1 -0
  616. package/dist/routes/desktop-lan/schema.js +40 -0
  617. package/dist/routes/desktop-lan/schema.js.map +1 -0
  618. package/dist/routes/desktop-local-db/handlers.d.ts +92 -0
  619. package/dist/routes/desktop-local-db/handlers.d.ts.map +1 -0
  620. package/dist/routes/desktop-local-db/handlers.js +300 -0
  621. package/dist/routes/desktop-local-db/handlers.js.map +1 -0
  622. package/dist/routes/desktop-local-db/index.d.ts +39 -0
  623. package/dist/routes/desktop-local-db/index.d.ts.map +1 -0
  624. package/dist/routes/desktop-local-db/index.js +83 -0
  625. package/dist/routes/desktop-local-db/index.js.map +1 -0
  626. package/dist/routes/desktop-local-db/placeholder.d.ts +75 -0
  627. package/dist/routes/desktop-local-db/placeholder.d.ts.map +1 -0
  628. package/dist/routes/desktop-local-db/placeholder.js +420 -0
  629. package/dist/routes/desktop-local-db/placeholder.js.map +1 -0
  630. package/dist/routes/desktop-local-db/schema.d.ts +50 -0
  631. package/dist/routes/desktop-local-db/schema.d.ts.map +1 -0
  632. package/dist/routes/desktop-local-db/schema.js +71 -0
  633. package/dist/routes/desktop-local-db/schema.js.map +1 -0
  634. package/dist/routes/desktop-local-db/sqlite-ddl.d.ts +104 -0
  635. package/dist/routes/desktop-local-db/sqlite-ddl.d.ts.map +1 -0
  636. package/dist/routes/desktop-local-db/sqlite-ddl.js +419 -0
  637. package/dist/routes/desktop-local-db/sqlite-ddl.js.map +1 -0
  638. package/dist/routes/email-templates/index.d.ts +7 -0
  639. package/dist/routes/email-templates/index.d.ts.map +1 -0
  640. package/dist/routes/email-templates/index.js +70 -0
  641. package/dist/routes/email-templates/index.js.map +1 -0
  642. package/dist/routes/email-templates/schema.d.ts +54 -0
  643. package/dist/routes/email-templates/schema.d.ts.map +1 -0
  644. package/dist/routes/email-templates/schema.js +35 -0
  645. package/dist/routes/email-templates/schema.js.map +1 -0
  646. package/dist/routes/exports/index.d.ts +19 -0
  647. package/dist/routes/exports/index.d.ts.map +1 -0
  648. package/dist/routes/exports/index.js +145 -0
  649. package/dist/routes/exports/index.js.map +1 -0
  650. package/dist/routes/exports/schema.d.ts +183 -0
  651. package/dist/routes/exports/schema.d.ts.map +1 -0
  652. package/dist/routes/exports/schema.js +37 -0
  653. package/dist/routes/exports/schema.js.map +1 -0
  654. package/dist/routes/generate/index.d.ts +23 -0
  655. package/dist/routes/generate/index.d.ts.map +1 -0
  656. package/dist/routes/generate/index.js +80 -0
  657. package/dist/routes/generate/index.js.map +1 -0
  658. package/dist/routes/generate/schema.d.ts +43 -0
  659. package/dist/routes/generate/schema.d.ts.map +1 -0
  660. package/dist/routes/generate/schema.js +37 -0
  661. package/dist/routes/generate/schema.js.map +1 -0
  662. package/dist/routes/imports/index.d.ts +21 -0
  663. package/dist/routes/imports/index.d.ts.map +1 -0
  664. package/dist/routes/imports/index.js +288 -0
  665. package/dist/routes/imports/index.js.map +1 -0
  666. package/dist/routes/imports/schema.d.ts +292 -0
  667. package/dist/routes/imports/schema.d.ts.map +1 -0
  668. package/dist/routes/imports/schema.js +78 -0
  669. package/dist/routes/imports/schema.js.map +1 -0
  670. package/dist/routes/index.d.ts +11 -0
  671. package/dist/routes/index.d.ts.map +1 -0
  672. package/dist/routes/index.js +8 -0
  673. package/dist/routes/index.js.map +1 -0
  674. package/dist/routes/jobs/index.d.ts +29 -0
  675. package/dist/routes/jobs/index.d.ts.map +1 -0
  676. package/dist/routes/jobs/index.js +175 -0
  677. package/dist/routes/jobs/index.js.map +1 -0
  678. package/dist/routes/jobs/schema.d.ts +170 -0
  679. package/dist/routes/jobs/schema.d.ts.map +1 -0
  680. package/dist/routes/jobs/schema.js +57 -0
  681. package/dist/routes/jobs/schema.js.map +1 -0
  682. package/dist/routes/llm/config-service.d.ts +48 -0
  683. package/dist/routes/llm/config-service.d.ts.map +1 -0
  684. package/dist/routes/llm/config-service.js +102 -0
  685. package/dist/routes/llm/config-service.js.map +1 -0
  686. package/dist/routes/llm/index.d.ts +69 -0
  687. package/dist/routes/llm/index.d.ts.map +1 -0
  688. package/dist/routes/llm/index.js +412 -0
  689. package/dist/routes/llm/index.js.map +1 -0
  690. package/dist/routes/llm/schema.d.ts +605 -0
  691. package/dist/routes/llm/schema.d.ts.map +1 -0
  692. package/dist/routes/llm/schema.js +238 -0
  693. package/dist/routes/llm/schema.js.map +1 -0
  694. package/dist/routes/me/handlers.d.ts +14 -0
  695. package/dist/routes/me/handlers.d.ts.map +1 -0
  696. package/dist/routes/me/handlers.js +88 -0
  697. package/dist/routes/me/handlers.js.map +1 -0
  698. package/dist/routes/me/index.d.ts +8 -0
  699. package/dist/routes/me/index.d.ts.map +1 -0
  700. package/dist/routes/me/index.js +17 -0
  701. package/dist/routes/me/index.js.map +1 -0
  702. package/dist/routes/me/schema.d.ts +270 -0
  703. package/dist/routes/me/schema.d.ts.map +1 -0
  704. package/dist/routes/me/schema.js +59 -0
  705. package/dist/routes/me/schema.js.map +1 -0
  706. package/dist/routes/me-views/index.d.ts +23 -0
  707. package/dist/routes/me-views/index.d.ts.map +1 -0
  708. package/dist/routes/me-views/index.js +76 -0
  709. package/dist/routes/me-views/index.js.map +1 -0
  710. package/dist/routes/me-views/schema.d.ts +44 -0
  711. package/dist/routes/me-views/schema.d.ts.map +1 -0
  712. package/dist/routes/me-views/schema.js +13 -0
  713. package/dist/routes/me-views/schema.js.map +1 -0
  714. package/dist/routes/notifications/index.d.ts +19 -0
  715. package/dist/routes/notifications/index.d.ts.map +1 -0
  716. package/dist/routes/notifications/index.js +123 -0
  717. package/dist/routes/notifications/index.js.map +1 -0
  718. package/dist/routes/notifications/schema.d.ts +122 -0
  719. package/dist/routes/notifications/schema.d.ts.map +1 -0
  720. package/dist/routes/notifications/schema.js +83 -0
  721. package/dist/routes/notifications/schema.js.map +1 -0
  722. package/dist/routes/onboarding/derive.d.ts +41 -0
  723. package/dist/routes/onboarding/derive.d.ts.map +1 -0
  724. package/dist/routes/onboarding/derive.js +30 -0
  725. package/dist/routes/onboarding/derive.js.map +1 -0
  726. package/dist/routes/onboarding/index.d.ts +26 -0
  727. package/dist/routes/onboarding/index.d.ts.map +1 -0
  728. package/dist/routes/onboarding/index.js +95 -0
  729. package/dist/routes/onboarding/index.js.map +1 -0
  730. package/dist/routes/onboarding/schema.d.ts +22 -0
  731. package/dist/routes/onboarding/schema.d.ts.map +1 -0
  732. package/dist/routes/onboarding/schema.js +22 -0
  733. package/dist/routes/onboarding/schema.js.map +1 -0
  734. package/dist/routes/pages/index.d.ts +26 -0
  735. package/dist/routes/pages/index.d.ts.map +1 -0
  736. package/dist/routes/pages/index.js +119 -0
  737. package/dist/routes/pages/index.js.map +1 -0
  738. package/dist/routes/pages/layout-schema.d.ts +19 -0
  739. package/dist/routes/pages/layout-schema.d.ts.map +1 -0
  740. package/dist/routes/pages/layout-schema.js +19 -0
  741. package/dist/routes/pages/layout-schema.js.map +1 -0
  742. package/dist/routes/pages/schema.d.ts +52 -0
  743. package/dist/routes/pages/schema.d.ts.map +1 -0
  744. package/dist/routes/pages/schema.js +35 -0
  745. package/dist/routes/pages/schema.js.map +1 -0
  746. package/dist/routes/roles/index.d.ts +17 -0
  747. package/dist/routes/roles/index.d.ts.map +1 -0
  748. package/dist/routes/roles/index.js +255 -0
  749. package/dist/routes/roles/index.js.map +1 -0
  750. package/dist/routes/roles/schema.d.ts +94 -0
  751. package/dist/routes/roles/schema.d.ts.map +1 -0
  752. package/dist/routes/roles/schema.js +57 -0
  753. package/dist/routes/roles/schema.js.map +1 -0
  754. package/dist/routes/scheduled-reports/index.d.ts +15 -0
  755. package/dist/routes/scheduled-reports/index.d.ts.map +1 -0
  756. package/dist/routes/scheduled-reports/index.js +195 -0
  757. package/dist/routes/scheduled-reports/index.js.map +1 -0
  758. package/dist/routes/scheduled-reports/schema.d.ts +154 -0
  759. package/dist/routes/scheduled-reports/schema.d.ts.map +1 -0
  760. package/dist/routes/scheduled-reports/schema.js +49 -0
  761. package/dist/routes/scheduled-reports/schema.js.map +1 -0
  762. package/dist/routes/schema/index.d.ts +24 -0
  763. package/dist/routes/schema/index.d.ts.map +1 -0
  764. package/dist/routes/schema/index.js +224 -0
  765. package/dist/routes/schema/index.js.map +1 -0
  766. package/dist/routes/schema/schema.d.ts +92 -0
  767. package/dist/routes/schema/schema.d.ts.map +1 -0
  768. package/dist/routes/schema/schema.js +64 -0
  769. package/dist/routes/schema/schema.js.map +1 -0
  770. package/dist/routes/schema-import/fallback-parser.d.ts +35 -0
  771. package/dist/routes/schema-import/fallback-parser.d.ts.map +1 -0
  772. package/dist/routes/schema-import/fallback-parser.js +349 -0
  773. package/dist/routes/schema-import/fallback-parser.js.map +1 -0
  774. package/dist/routes/schema-import/index.d.ts +43 -0
  775. package/dist/routes/schema-import/index.d.ts.map +1 -0
  776. package/dist/routes/schema-import/index.js +167 -0
  777. package/dist/routes/schema-import/index.js.map +1 -0
  778. package/dist/routes/schema-import/schema.d.ts +65 -0
  779. package/dist/routes/schema-import/schema.d.ts.map +1 -0
  780. package/dist/routes/schema-import/schema.js +40 -0
  781. package/dist/routes/schema-import/schema.js.map +1 -0
  782. package/dist/routes/search/index.d.ts +71 -0
  783. package/dist/routes/search/index.d.ts.map +1 -0
  784. package/dist/routes/search/index.js +361 -0
  785. package/dist/routes/search/index.js.map +1 -0
  786. package/dist/routes/search/schema.d.ts +125 -0
  787. package/dist/routes/search/schema.d.ts.map +1 -0
  788. package/dist/routes/search/schema.js +70 -0
  789. package/dist/routes/search/schema.js.map +1 -0
  790. package/dist/routes/settings/index.d.ts +24 -0
  791. package/dist/routes/settings/index.d.ts.map +1 -0
  792. package/dist/routes/settings/index.js +164 -0
  793. package/dist/routes/settings/index.js.map +1 -0
  794. package/dist/routes/settings/schema.d.ts +110 -0
  795. package/dist/routes/settings/schema.d.ts.map +1 -0
  796. package/dist/routes/settings/schema.js +71 -0
  797. package/dist/routes/settings/schema.js.map +1 -0
  798. package/dist/routes/setup/index.d.ts +29 -0
  799. package/dist/routes/setup/index.d.ts.map +1 -0
  800. package/dist/routes/setup/index.js +68 -0
  801. package/dist/routes/setup/index.js.map +1 -0
  802. package/dist/routes/setup/schema.d.ts +61 -0
  803. package/dist/routes/setup/schema.d.ts.map +1 -0
  804. package/dist/routes/setup/schema.js +47 -0
  805. package/dist/routes/setup/schema.js.map +1 -0
  806. package/dist/routes/system/handlers.d.ts +63 -0
  807. package/dist/routes/system/handlers.d.ts.map +1 -0
  808. package/dist/routes/system/handlers.js +121 -0
  809. package/dist/routes/system/handlers.js.map +1 -0
  810. package/dist/routes/system/index.d.ts +34 -0
  811. package/dist/routes/system/index.d.ts.map +1 -0
  812. package/dist/routes/system/index.js +18 -0
  813. package/dist/routes/system/index.js.map +1 -0
  814. package/dist/routes/system/schema.d.ts +93 -0
  815. package/dist/routes/system/schema.d.ts.map +1 -0
  816. package/dist/routes/system/schema.js +109 -0
  817. package/dist/routes/system/schema.js.map +1 -0
  818. package/dist/routes/views/index.d.ts +21 -0
  819. package/dist/routes/views/index.d.ts.map +1 -0
  820. package/dist/routes/views/index.js +155 -0
  821. package/dist/routes/views/index.js.map +1 -0
  822. package/dist/routes/views/schema.d.ts +127 -0
  823. package/dist/routes/views/schema.d.ts.map +1 -0
  824. package/dist/routes/views/schema.js +56 -0
  825. package/dist/routes/views/schema.js.map +1 -0
  826. package/dist/routes/widget-data/index.d.ts +29 -0
  827. package/dist/routes/widget-data/index.d.ts.map +1 -0
  828. package/dist/routes/widget-data/index.js +152 -0
  829. package/dist/routes/widget-data/index.js.map +1 -0
  830. package/dist/routes/widget-data/schema.d.ts +252 -0
  831. package/dist/routes/widget-data/schema.d.ts.map +1 -0
  832. package/dist/routes/widget-data/schema.js +44 -0
  833. package/dist/routes/widget-data/schema.js.map +1 -0
  834. package/dist/setup/service.d.ts +63 -0
  835. package/dist/setup/service.d.ts.map +1 -0
  836. package/dist/setup/service.js +103 -0
  837. package/dist/setup/service.js.map +1 -0
  838. package/dist/start.d.ts +12 -0
  839. package/dist/start.d.ts.map +1 -0
  840. package/dist/start.js +28 -0
  841. package/dist/start.js.map +1 -0
  842. package/dist/telemetry/payload.d.ts +66 -0
  843. package/dist/telemetry/payload.d.ts.map +1 -0
  844. package/dist/telemetry/payload.js +69 -0
  845. package/dist/telemetry/payload.js.map +1 -0
  846. package/dist/telemetry/service.d.ts +67 -0
  847. package/dist/telemetry/service.d.ts.map +1 -0
  848. package/dist/telemetry/service.js +103 -0
  849. package/dist/telemetry/service.js.map +1 -0
  850. package/dist/telemetry/update-check.d.ts +79 -0
  851. package/dist/telemetry/update-check.d.ts.map +1 -0
  852. package/dist/telemetry/update-check.js +103 -0
  853. package/dist/telemetry/update-check.js.map +1 -0
  854. package/dist/version.d.ts +14 -0
  855. package/dist/version.d.ts.map +1 -0
  856. package/dist/version.js +21 -0
  857. package/dist/version.js.map +1 -0
  858. package/dist/widget-data/cache.d.ts +35 -0
  859. package/dist/widget-data/cache.d.ts.map +1 -0
  860. package/dist/widget-data/cache.js +67 -0
  861. package/dist/widget-data/cache.js.map +1 -0
  862. package/dist/widget-data/compiler.d.ts +107 -0
  863. package/dist/widget-data/compiler.d.ts.map +1 -0
  864. package/dist/widget-data/compiler.js +362 -0
  865. package/dist/widget-data/compiler.js.map +1 -0
  866. package/dist/widget-data/shapers.d.ts +75 -0
  867. package/dist/widget-data/shapers.d.ts.map +1 -0
  868. package/dist/widget-data/shapers.js +128 -0
  869. package/dist/widget-data/shapers.js.map +1 -0
  870. package/dist/widget-data/stream-publisher.d.ts +42 -0
  871. package/dist/widget-data/stream-publisher.d.ts.map +1 -0
  872. package/dist/widget-data/stream-publisher.js +34 -0
  873. package/dist/widget-data/stream-publisher.js.map +1 -0
  874. package/package.json +79 -0
  875. package/vocabulary/llm-allowlist.json +76 -0
@@ -0,0 +1,35 @@
1
+ /**
2
+ * In-memory widget-data result cache (04-widget-registry.md §5.2 step 6).
3
+ *
4
+ * Keyed on `sha256(descriptor + params + connection + role scope)` so two
5
+ * callers with different role sets (or unmask grants) never share entries.
6
+ * TTL defaults to 30 s (constructor-configurable; 04 specifies
7
+ * `min(binding.refreshInterval ?? 60, 60)` — the binding's interval lives
8
+ * client-side, so the server applies a flat conservative TTL for now).
9
+ *
10
+ * `invalidateTable(connectionId, tableId)` drops a table's entries — the
11
+ * CRUD mutation hook wires into it when the widget-data plugin and data
12
+ * routes share one composition root (start.ts wiring, M4 exit). No
13
+ * cross-process cache by design (works identically inside Electron).
14
+ */
15
+ export declare const WIDGET_CACHE_TTL_MS = 30000;
16
+ export declare function cacheKeyOf(input: {
17
+ descriptor: unknown;
18
+ params: unknown;
19
+ connectionId: string;
20
+ roleScope: string;
21
+ }): string;
22
+ export declare class WidgetDataCache {
23
+ #private;
24
+ constructor(opts?: {
25
+ ttlMs?: number | undefined;
26
+ now?: (() => number) | undefined;
27
+ });
28
+ get(key: string): unknown | undefined;
29
+ set(key: string, value: unknown, connectionId: string, tableId: string): void;
30
+ /** Drop every cached result over one table (CRUD mutation invalidation). */
31
+ invalidateTable(connectionId: string, tableId: string): void;
32
+ clear(): void;
33
+ get size(): number;
34
+ }
35
+ //# sourceMappingURL=cache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/widget-data/cache.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAIH,eAAO,MAAM,mBAAmB,QAAS,CAAC;AAU1C,wBAAgB,UAAU,CAAC,KAAK,EAAE;IAChC,UAAU,EAAE,OAAO,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACnB,GAAG,MAAM,CAET;AAED,qBAAa,eAAe;;gBAKd,IAAI,GAAE;QAAE,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAAC,GAAG,CAAC,EAAE,CAAC,MAAM,MAAM,CAAC,GAAG,SAAS,CAAA;KAAO;IAKvF,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS;IAUrC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAa7E,4EAA4E;IAC5E,eAAe,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAO5D,KAAK,IAAI,IAAI;IAIb,IAAI,IAAI,IAAI,MAAM,CAEjB;CACF"}
@@ -0,0 +1,67 @@
1
+ /**
2
+ * In-memory widget-data result cache (04-widget-registry.md §5.2 step 6).
3
+ *
4
+ * Keyed on `sha256(descriptor + params + connection + role scope)` so two
5
+ * callers with different role sets (or unmask grants) never share entries.
6
+ * TTL defaults to 30 s (constructor-configurable; 04 specifies
7
+ * `min(binding.refreshInterval ?? 60, 60)` — the binding's interval lives
8
+ * client-side, so the server applies a flat conservative TTL for now).
9
+ *
10
+ * `invalidateTable(connectionId, tableId)` drops a table's entries — the
11
+ * CRUD mutation hook wires into it when the widget-data plugin and data
12
+ * routes share one composition root (start.ts wiring, M4 exit). No
13
+ * cross-process cache by design (works identically inside Electron).
14
+ */
15
+ import { createHash } from 'node:crypto';
16
+ export const WIDGET_CACHE_TTL_MS = 30_000;
17
+ const MAX_ENTRIES = 500;
18
+ export function cacheKeyOf(input) {
19
+ return createHash('sha256').update(JSON.stringify(input)).digest('hex');
20
+ }
21
+ export class WidgetDataCache {
22
+ #ttlMs;
23
+ #now;
24
+ #entries = new Map();
25
+ constructor(opts = {}) {
26
+ this.#ttlMs = opts.ttlMs ?? WIDGET_CACHE_TTL_MS;
27
+ this.#now = opts.now ?? Date.now;
28
+ }
29
+ get(key) {
30
+ const entry = this.#entries.get(key);
31
+ if (entry === undefined)
32
+ return undefined;
33
+ if (entry.expiresAt <= this.#now()) {
34
+ this.#entries.delete(key);
35
+ return undefined;
36
+ }
37
+ return entry.value;
38
+ }
39
+ set(key, value, connectionId, tableId) {
40
+ // FIFO eviction at the cap — Map iteration order is insertion order.
41
+ if (!this.#entries.has(key) && this.#entries.size >= MAX_ENTRIES) {
42
+ const oldest = this.#entries.keys().next().value;
43
+ if (oldest !== undefined)
44
+ this.#entries.delete(oldest);
45
+ }
46
+ this.#entries.set(key, {
47
+ value,
48
+ expiresAt: this.#now() + this.#ttlMs,
49
+ tableKey: `${connectionId}:${tableId}`,
50
+ });
51
+ }
52
+ /** Drop every cached result over one table (CRUD mutation invalidation). */
53
+ invalidateTable(connectionId, tableId) {
54
+ const tableKey = `${connectionId}:${tableId}`;
55
+ for (const [key, entry] of this.#entries) {
56
+ if (entry.tableKey === tableKey)
57
+ this.#entries.delete(key);
58
+ }
59
+ }
60
+ clear() {
61
+ this.#entries.clear();
62
+ }
63
+ get size() {
64
+ return this.#entries.size;
65
+ }
66
+ }
67
+ //# sourceMappingURL=cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache.js","sourceRoot":"","sources":["../../src/widget-data/cache.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,MAAM,CAAC,MAAM,mBAAmB,GAAG,MAAM,CAAC;AAC1C,MAAM,WAAW,GAAG,GAAG,CAAC;AASxB,MAAM,UAAU,UAAU,CAAC,KAK1B;IACC,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC1E,CAAC;AAED,MAAM,OAAO,eAAe;IACjB,MAAM,CAAS;IACf,IAAI,CAAe;IACnB,QAAQ,GAAG,IAAI,GAAG,EAAsB,CAAC;IAElD,YAAY,OAAyE,EAAE;QACrF,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,IAAI,mBAAmB,CAAC;QAChD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC;IACnC,CAAC;IAED,GAAG,CAAC,GAAW;QACb,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACrC,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,SAAS,CAAC;QAC1C,IAAI,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;YACnC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC1B,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAO,KAAK,CAAC,KAAK,CAAC;IACrB,CAAC;IAED,GAAG,CAAC,GAAW,EAAE,KAAc,EAAE,YAAoB,EAAE,OAAe;QACpE,qEAAqE;QACrE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,WAAW,EAAE,CAAC;YACjE,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;YACjD,IAAI,MAAM,KAAK,SAAS;gBAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACzD,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE;YACrB,KAAK;YACL,SAAS,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,MAAM;YACpC,QAAQ,EAAE,GAAG,YAAY,IAAI,OAAO,EAAE;SACvC,CAAC,CAAC;IACL,CAAC;IAED,4EAA4E;IAC5E,eAAe,CAAC,YAAoB,EAAE,OAAe;QACnD,MAAM,QAAQ,GAAG,GAAG,YAAY,IAAI,OAAO,EAAE,CAAC;QAC9C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACzC,IAAI,KAAK,CAAC,QAAQ,KAAK,QAAQ;gBAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;IAED,KAAK;QACH,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;IAC5B,CAAC;CACF"}
@@ -0,0 +1,107 @@
1
+ /**
2
+ * Query-descriptor compiler (04-widget-registry.md §5.2, M4-T04 subset).
3
+ *
4
+ * Turns a validated `QueryDescriptor` (the pure-Zod leaf shared through
5
+ * `@adminium/engine/config`) into dynamic Kysely over the data connection.
6
+ * Invariants, identical to the CRUD layer (08-server-api.md §7 item 1):
7
+ *
8
+ * - every table/column string that reaches SQL is the schema snapshot's own
9
+ * (`SnapshotView` resolution → 422 `UNKNOWN_IDENTIFIER` otherwise);
10
+ * - PII-masked columns may not be selected, filtered, grouped, bucketed,
11
+ * aggregated, or sorted by callers without the unmask grant → 403
12
+ * `COLUMN_FORBIDDEN` (04 §5.2 step 3);
13
+ * - all values bind as parameters; the only inlined token is the bucket
14
+ * unit, drawn from a closed Zod enum.
15
+ *
16
+ * M4 scope notes: shapes compiled here are `single-metric`, `metric+delta`,
17
+ * `timeseries`, `categorical`, and `record-list` (the M4 widget set).
18
+ * `percentile` aggregations and the remaining shapes reject with 422 until
19
+ * 04-T09/T10.
20
+ *
21
+ * Dialect divergence (04 §5.2 step 4): time bucketing and rolling-window
22
+ * bounds are the two clauses whose SQL differs per engine. Rather than a
23
+ * kysely-typed adapter hook (the `@adminium/engine/adapter` `QueryEngine`
24
+ * contract must stay free of a `kysely` dependency — it types the dialect
25
+ * opaquely), the compiler branches on the connection's engine here, where
26
+ * kysely and the rest of the SQL compilation already live: `bucketExpr()`
27
+ * emits `date_trunc` / `strftime` / `DATE_FORMAT` per dialect, and window
28
+ * boundaries bind as a `Date` on Postgres but as a UTC `'YYYY-MM-DD
29
+ * HH:MM:SS'` string on MySQL/SQLite (better-sqlite3 refuses to bind a
30
+ * `Date`).
31
+ */
32
+ import { type Kysely, type SelectQueryBuilder } from 'kysely';
33
+ import type { BucketUnit, QueryDescriptor } from '@adminium/engine/config';
34
+ import type { Dialect } from '@adminium/engine';
35
+ import type { SourceDatabase } from '../connections/manager.js';
36
+ import { type FilterCondition } from '../crud/filters.js';
37
+ import type { ResolvedColumn, ResolvedTable, SnapshotView } from '../crud/identifiers.js';
38
+ /** Hard row cap on any compiled query (04 §5.2 guardrails). */
39
+ export declare const WIDGET_LIMIT_MAX = 1000;
40
+ /** Default page size for `record-list` descriptors without a `limit`. */
41
+ export declare const RECORD_LIST_LIMIT_DEFAULT = 50;
42
+ /** Group-by cardinality cap — excess folds into `__other` (04 §5.2). */
43
+ export declare const GROUP_BUCKET_CAP = 500;
44
+ /** Reserved output aliases the shaper relies on. */
45
+ export declare const BUCKET_ALIAS = "__bucket";
46
+ export declare const GROUP_ALIAS = "__group";
47
+ type Qb = SelectQueryBuilder<SourceDatabase, string, Record<string, unknown>>;
48
+ export interface CompileWidgetQueryOptions {
49
+ db: Kysely<SourceDatabase>;
50
+ view: SnapshotView;
51
+ descriptor: QueryDescriptor;
52
+ /** Page-control params for late-bound filters (`filters[].param`). */
53
+ params?: Record<string, unknown> | undefined;
54
+ canReadPii: boolean;
55
+ /** Source dialect — threads into the shared filter compiler (`ilike` per dialect). */
56
+ dialect: Dialect;
57
+ /** Injectable clock for `window` bounds (tests). */
58
+ now?: (() => Date) | undefined;
59
+ }
60
+ export interface CompiledWidgetQuery {
61
+ table: ResolvedTable;
62
+ shape: QueryDescriptor['shape'];
63
+ /** The main query, ready to `.execute()`. */
64
+ query: Qb;
65
+ /** Prior-window twin (`window.compareToPrior`) — same shape, shifted back. */
66
+ prior: Qb | null;
67
+ /** Output aliases of the requested aggregations, in order. */
68
+ aggregationAliases: string[];
69
+ /** Set when the query buckets by time (`timeseries`). */
70
+ bucketAlias: string | null;
71
+ /** Set when the query groups by a column (`categorical`). */
72
+ groupAlias: string | null;
73
+ /** Resolved columns of a `record-list` SELECT (masking metadata). */
74
+ selectedColumns: ResolvedColumn[];
75
+ /** Exact-count twin for `record-list` (fills `RecordList.total`). */
76
+ count: Qb | null;
77
+ /** Effective LIMIT after the hard cap. */
78
+ limit: number;
79
+ }
80
+ /** Resolve the descriptor's source against the snapshot (422 on unknown). */
81
+ export declare function resolveSource(view: SnapshotView, descriptor: QueryDescriptor): ResolvedTable;
82
+ /**
83
+ * UTC window boundaries for `window: { last, unit }` plus the immediately
84
+ * preceding window of the same span (04 §5.2 step 5). Calendar units go
85
+ * through UTC calendar arithmetic so month/quarter/year windows stay exact.
86
+ */
87
+ export declare function windowBounds(last: number, unit: BucketUnit, now: Date): {
88
+ start: Date;
89
+ end: Date;
90
+ priorStart: Date;
91
+ priorEnd: Date;
92
+ };
93
+ /**
94
+ * Late-bound `param` resolution (04 §5.1): a filter carrying `param` reads
95
+ * its value from the page-control params; an unset param drops the filter
96
+ * (the control is not active). Filters with neither value nor param pass
97
+ * through — `is_null`/`not_null` need no value.
98
+ */
99
+ export declare function resolveFilterParams(filters: NonNullable<QueryDescriptor['filters']>, params: Record<string, unknown>): FilterCondition[];
100
+ /**
101
+ * Compile one descriptor to dynamic Kysely. Identifier resolution and PII
102
+ * checks happen here; RBAC on the resolved table is the route's job (it
103
+ * needs the request principal).
104
+ */
105
+ export declare function compileWidgetQuery(opts: CompileWidgetQueryOptions): CompiledWidgetQuery;
106
+ export {};
107
+ //# sourceMappingURL=compiler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compiler.d.ts","sourceRoot":"","sources":["../../src/widget-data/compiler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,EAA2B,KAAK,MAAM,EAAmB,KAAK,kBAAkB,EAAE,MAAM,QAAQ,CAAC;AACxG,OAAO,KAAK,EAAe,UAAU,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AACxF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAGhD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAA4C,KAAK,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACpG,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAE1F,+DAA+D;AAC/D,eAAO,MAAM,gBAAgB,OAAO,CAAC;AACrC,yEAAyE;AACzE,eAAO,MAAM,yBAAyB,KAAK,CAAC;AAC5C,wEAAwE;AACxE,eAAO,MAAM,gBAAgB,MAAM,CAAC;AAEpC,oDAAoD;AACpD,eAAO,MAAM,YAAY,aAAa,CAAC;AACvC,eAAO,MAAM,WAAW,YAAY,CAAC;AAerC,KAAK,EAAE,GAAG,kBAAkB,CAAC,cAAc,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAE9E,MAAM,WAAW,yBAAyB;IACxC,EAAE,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC;IAC3B,IAAI,EAAE,YAAY,CAAC;IACnB,UAAU,EAAE,eAAe,CAAC;IAC5B,sEAAsE;IACtE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;IAC7C,UAAU,EAAE,OAAO,CAAC;IACpB,sFAAsF;IACtF,OAAO,EAAE,OAAO,CAAC;IACjB,oDAAoD;IACpD,GAAG,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC;CAChC;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,aAAa,CAAC;IACrB,KAAK,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC;IAChC,6CAA6C;IAC7C,KAAK,EAAE,EAAE,CAAC;IACV,8EAA8E;IAC9E,KAAK,EAAE,EAAE,GAAG,IAAI,CAAC;IACjB,8DAA8D;IAC9D,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,yDAAyD;IACzD,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,6DAA6D;IAC7D,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,qEAAqE;IACrE,eAAe,EAAE,cAAc,EAAE,CAAC;IAClC,qEAAqE;IACrE,KAAK,EAAE,EAAE,GAAG,IAAI,CAAC;IACjB,0CAA0C;IAC1C,KAAK,EAAE,MAAM,CAAC;CACf;AAED,6EAA6E;AAC7E,wBAAgB,aAAa,CAAC,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,eAAe,GAAG,aAAa,CAG5F;AAMD;;;;GAIG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,UAAU,EAChB,GAAG,EAAE,IAAI,GACR;IAAE,KAAK,EAAE,IAAI,CAAC;IAAC,GAAG,EAAE,IAAI,CAAC;IAAC,UAAU,EAAE,IAAI,CAAC;IAAC,QAAQ,EAAE,IAAI,CAAA;CAAE,CA2B9D;AAsHD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,WAAW,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,EAChD,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,eAAe,EAAE,CAgBnB;AAgCD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,yBAAyB,GAAG,mBAAmB,CAwHvF"}
@@ -0,0 +1,362 @@
1
+ /**
2
+ * Query-descriptor compiler (04-widget-registry.md §5.2, M4-T04 subset).
3
+ *
4
+ * Turns a validated `QueryDescriptor` (the pure-Zod leaf shared through
5
+ * `@adminium/engine/config`) into dynamic Kysely over the data connection.
6
+ * Invariants, identical to the CRUD layer (08-server-api.md §7 item 1):
7
+ *
8
+ * - every table/column string that reaches SQL is the schema snapshot's own
9
+ * (`SnapshotView` resolution → 422 `UNKNOWN_IDENTIFIER` otherwise);
10
+ * - PII-masked columns may not be selected, filtered, grouped, bucketed,
11
+ * aggregated, or sorted by callers without the unmask grant → 403
12
+ * `COLUMN_FORBIDDEN` (04 §5.2 step 3);
13
+ * - all values bind as parameters; the only inlined token is the bucket
14
+ * unit, drawn from a closed Zod enum.
15
+ *
16
+ * M4 scope notes: shapes compiled here are `single-metric`, `metric+delta`,
17
+ * `timeseries`, `categorical`, and `record-list` (the M4 widget set).
18
+ * `percentile` aggregations and the remaining shapes reject with 422 until
19
+ * 04-T09/T10.
20
+ *
21
+ * Dialect divergence (04 §5.2 step 4): time bucketing and rolling-window
22
+ * bounds are the two clauses whose SQL differs per engine. Rather than a
23
+ * kysely-typed adapter hook (the `@adminium/engine/adapter` `QueryEngine`
24
+ * contract must stay free of a `kysely` dependency — it types the dialect
25
+ * opaquely), the compiler branches on the connection's engine here, where
26
+ * kysely and the rest of the SQL compilation already live: `bucketExpr()`
27
+ * emits `date_trunc` / `strftime` / `DATE_FORMAT` per dialect, and window
28
+ * boundaries bind as a `Date` on Postgres but as a UTC `'YYYY-MM-DD
29
+ * HH:MM:SS'` string on MySQL/SQLite (better-sqlite3 refuses to bind a
30
+ * `Date`).
31
+ */
32
+ import { sql } from 'kysely';
33
+ import { ValidationFailedError } from '../errors.js';
34
+ import { compileFilter } from '../crud/filters.js';
35
+ /** Hard row cap on any compiled query (04 §5.2 guardrails). */
36
+ export const WIDGET_LIMIT_MAX = 1000;
37
+ /** Default page size for `record-list` descriptors without a `limit`. */
38
+ export const RECORD_LIST_LIMIT_DEFAULT = 50;
39
+ /** Group-by cardinality cap — excess folds into `__other` (04 §5.2). */
40
+ export const GROUP_BUCKET_CAP = 500;
41
+ /** Reserved output aliases the shaper relies on. */
42
+ export const BUCKET_ALIAS = '__bucket';
43
+ export const GROUP_ALIAS = '__group';
44
+ const ALIAS_PATTERN = /^[a-zA-Z_][a-zA-Z0-9_]{0,62}$/;
45
+ const SUPPORTED_SHAPES = new Set([
46
+ 'single-metric',
47
+ 'metric+delta',
48
+ 'timeseries',
49
+ 'categorical',
50
+ 'record-list',
51
+ // Live feed snapshot (04 §5.3): compiled exactly like `record-list` (recent
52
+ // rows, DESC), shaped into a `StreamShape` with the resolved WS channel.
53
+ 'stream',
54
+ ]);
55
+ /** Resolve the descriptor's source against the snapshot (422 on unknown). */
56
+ export function resolveSource(view, descriptor) {
57
+ const { schema, name } = descriptor.source;
58
+ return view.table(schema === undefined ? name : `${schema}.${name}`);
59
+ }
60
+ function reject(message, details) {
61
+ throw new ValidationFailedError(message, details);
62
+ }
63
+ /**
64
+ * UTC window boundaries for `window: { last, unit }` plus the immediately
65
+ * preceding window of the same span (04 §5.2 step 5). Calendar units go
66
+ * through UTC calendar arithmetic so month/quarter/year windows stay exact.
67
+ */
68
+ export function windowBounds(last, unit, now) {
69
+ const shift = (from, steps) => {
70
+ const d = new Date(from.getTime());
71
+ switch (unit) {
72
+ case 'hour':
73
+ d.setTime(d.getTime() - steps * 3_600_000);
74
+ return d;
75
+ case 'day':
76
+ d.setTime(d.getTime() - steps * 86_400_000);
77
+ return d;
78
+ case 'week':
79
+ d.setTime(d.getTime() - steps * 7 * 86_400_000);
80
+ return d;
81
+ case 'month':
82
+ d.setUTCMonth(d.getUTCMonth() - steps);
83
+ return d;
84
+ case 'quarter':
85
+ d.setUTCMonth(d.getUTCMonth() - steps * 3);
86
+ return d;
87
+ case 'year':
88
+ d.setUTCFullYear(d.getUTCFullYear() - steps);
89
+ return d;
90
+ }
91
+ };
92
+ const end = now;
93
+ const start = shift(end, last);
94
+ return { start, end, priorStart: shift(start, last), priorEnd: start };
95
+ }
96
+ /**
97
+ * Time-bucket expression, compiled per dialect (04 §5.2 step 4). Every bucket
98
+ * evaluates to the ISO-lexicographic start of its period, so `GROUP BY` /
99
+ * `ORDER BY` over the raw expression sort chronologically and the shaper's
100
+ * `toIso` parses the result the same way for all three engines. The unit is a
101
+ * closed Zod enum and every format token is a source constant — no caller
102
+ * string is inlined; the only interpolation is the snapshot's own column ref.
103
+ */
104
+ function bucketExpr(dialect, ref, unit) {
105
+ switch (dialect) {
106
+ case 'mysql':
107
+ return mysqlBucketExpr(ref, unit);
108
+ case 'sqlite':
109
+ return sqliteBucketExpr(ref, unit);
110
+ // 'postgres' and the schema-only 'generic' fall through to date_trunc,
111
+ // which covers every unit natively.
112
+ default:
113
+ return sql `date_trunc(${sql.lit(unit)}, ${ref})`;
114
+ }
115
+ }
116
+ /** MySQL bucket start (`DATE_FORMAT` / calendar arithmetic). */
117
+ function mysqlBucketExpr(ref, unit) {
118
+ switch (unit) {
119
+ case 'hour':
120
+ return sql `date_format(${ref}, '%Y-%m-%d %H:00:00')`;
121
+ case 'day':
122
+ return sql `date_format(${ref}, '%Y-%m-%d')`;
123
+ case 'week':
124
+ // WEEKDAY() is 0=Monday…6=Sunday, so subtracting it lands on the ISO
125
+ // Monday — matching Postgres `date_trunc('week', …)`.
126
+ return sql `date_sub(date(${ref}), interval weekday(${ref}) day)`;
127
+ case 'month':
128
+ return sql `date_format(${ref}, '%Y-%m-01')`;
129
+ case 'quarter':
130
+ return sql `date(makedate(year(${ref}), 1) + interval (quarter(${ref}) - 1) quarter)`;
131
+ case 'year':
132
+ return sql `date_format(${ref}, '%Y-01-01')`;
133
+ }
134
+ }
135
+ /** SQLite bucket start (`strftime` over ISO-text/epoch storage). */
136
+ function sqliteBucketExpr(ref, unit) {
137
+ switch (unit) {
138
+ case 'hour':
139
+ return sql `strftime('%Y-%m-%d %H:00:00', ${ref})`;
140
+ case 'day':
141
+ return sql `strftime('%Y-%m-%d', ${ref})`;
142
+ case 'week':
143
+ // (%w + 6) % 7 remaps SQLite's 0=Sunday…6=Saturday to 0=Monday, so the
144
+ // offset subtracted lands on the ISO Monday (as Postgres/MySQL do).
145
+ return sql `date(${ref}, '-' || ((strftime('%w', ${ref}) + 6) % 7) || ' days')`;
146
+ case 'month':
147
+ return sql `strftime('%Y-%m-01', ${ref})`;
148
+ case 'quarter':
149
+ return sql `strftime('%Y', ${ref}) || '-' || printf('%02d', ((cast(strftime('%m', ${ref}) as integer) - 1) / 3) * 3 + 1) || '-01'`;
150
+ case 'year':
151
+ return sql `strftime('%Y-01-01', ${ref})`;
152
+ }
153
+ }
154
+ /**
155
+ * A rolling-window boundary as the source driver expects it: Postgres binds
156
+ * the `Date` directly (timestamptz), but MySQL and SQLite take a UTC
157
+ * `'YYYY-MM-DD HH:MM:SS'` string — `windowBounds` computes in UTC, and
158
+ * better-sqlite3 refuses to bind a `Date` at all (it accepts only numbers,
159
+ * strings, bigints, buffers and null).
160
+ */
161
+ function windowBoundValue(date, dialect) {
162
+ if (dialect === 'mysql' || dialect === 'sqlite') {
163
+ return date.toISOString().slice(0, 19).replace('T', ' ');
164
+ }
165
+ return date;
166
+ }
167
+ /** Validate + resolve one aggregation; returns its select expression factory. */
168
+ function compileAggregation(db, view, table, canReadPii, aggregation) {
169
+ if (!ALIAS_PATTERN.test(aggregation.alias) || aggregation.alias.startsWith('__')) {
170
+ reject('Aggregation aliases must be simple identifiers.', { alias: aggregation.alias });
171
+ }
172
+ if (aggregation.fn === 'percentile') {
173
+ reject('`percentile` aggregations are not supported yet (04-T09).', {});
174
+ }
175
+ if (aggregation.column === undefined) {
176
+ if (aggregation.fn !== 'count') {
177
+ reject(`Aggregation "${aggregation.fn}" requires a column.`, { alias: aggregation.alias });
178
+ }
179
+ return { alias: aggregation.alias, expr: sql `count(*)` };
180
+ }
181
+ // 403 COLUMN_FORBIDDEN when masked and the caller lacks the unmask grant.
182
+ const column = view.readableColumn(table, aggregation.column, canReadPii);
183
+ const ref = db.dynamic.ref(column.name);
184
+ switch (aggregation.fn) {
185
+ case 'count':
186
+ return { alias: aggregation.alias, expr: sql `count(${ref})` };
187
+ case 'count_distinct':
188
+ return { alias: aggregation.alias, expr: sql `count(distinct ${ref})` };
189
+ case 'sum':
190
+ return { alias: aggregation.alias, expr: sql `sum(${ref})` };
191
+ case 'avg':
192
+ return { alias: aggregation.alias, expr: sql `avg(${ref})` };
193
+ case 'min':
194
+ return { alias: aggregation.alias, expr: sql `min(${ref})` };
195
+ case 'max':
196
+ return { alias: aggregation.alias, expr: sql `max(${ref})` };
197
+ }
198
+ }
199
+ /**
200
+ * Late-bound `param` resolution (04 §5.1): a filter carrying `param` reads
201
+ * its value from the page-control params; an unset param drops the filter
202
+ * (the control is not active). Filters with neither value nor param pass
203
+ * through — `is_null`/`not_null` need no value.
204
+ */
205
+ export function resolveFilterParams(filters, params) {
206
+ const out = [];
207
+ for (const filter of filters) {
208
+ if (filter.param !== undefined) {
209
+ const value = params[filter.param];
210
+ if (value === undefined)
211
+ continue; // control unset — filter inactive
212
+ out.push({ column: filter.column, op: filter.op, value });
213
+ continue;
214
+ }
215
+ out.push(filter.value === undefined
216
+ ? { column: filter.column, op: filter.op }
217
+ : { column: filter.column, op: filter.op, value: filter.value });
218
+ }
219
+ return out;
220
+ }
221
+ /** Shape ⇄ descriptor structural rules (04 §5.2 step 1 semantics). */
222
+ function assertShapeRules(descriptor) {
223
+ const { shape } = descriptor;
224
+ if (!SUPPORTED_SHAPES.has(shape)) {
225
+ reject(`Shape "${shape}" is not supported by the widget-data compiler yet.`, { shape });
226
+ }
227
+ const hasAgg = (descriptor.aggregations?.length ?? 0) > 0;
228
+ const hasGroup = (descriptor.groupBy?.length ?? 0) > 0;
229
+ const hasBucket = descriptor.bucket !== undefined;
230
+ if (shape === 'single-metric' || shape === 'metric+delta') {
231
+ if (!hasAgg)
232
+ reject(`Shape "${shape}" requires at least one aggregation.`, { shape });
233
+ if (hasGroup || hasBucket)
234
+ reject(`Shape "${shape}" cannot group or bucket.`, { shape });
235
+ }
236
+ if (shape === 'timeseries') {
237
+ if (!hasAgg || !hasBucket)
238
+ reject('Shape "timeseries" requires a `bucket` and an aggregation.', {});
239
+ if (hasGroup)
240
+ reject('Grouped timeseries is `multi-timeseries` (not supported yet).', {});
241
+ }
242
+ if (shape === 'categorical') {
243
+ if (!hasAgg)
244
+ reject('Shape "categorical" requires an aggregation.', {});
245
+ if ((descriptor.groupBy?.length ?? 0) !== 1) {
246
+ reject('Shape "categorical" requires exactly one groupBy column.', {});
247
+ }
248
+ if (hasBucket)
249
+ reject('Shape "categorical" cannot time-bucket; use "timeseries".', {});
250
+ }
251
+ if ((shape === 'record-list' || shape === 'stream') && (hasAgg || hasGroup || hasBucket)) {
252
+ reject(`Shape "${shape}" selects rows — aggregations/grouping are not allowed.`, {});
253
+ }
254
+ }
255
+ /**
256
+ * Compile one descriptor to dynamic Kysely. Identifier resolution and PII
257
+ * checks happen here; RBAC on the resolved table is the route's job (it
258
+ * needs the request principal).
259
+ */
260
+ export function compileWidgetQuery(opts) {
261
+ const { db, view, descriptor, canReadPii, dialect } = opts;
262
+ const params = opts.params ?? {};
263
+ const now = opts.now ?? (() => new Date());
264
+ assertShapeRules(descriptor);
265
+ const table = resolveSource(view, descriptor);
266
+ const dynamic = db.dynamic;
267
+ const filterCtx = { view, table, canReadPii, dynamic, dialect };
268
+ // --- WHERE: descriptor filters (CRUD DSL compiler) + rolling window -------
269
+ const conditions = descriptor.filters === undefined ? [] : resolveFilterParams(descriptor.filters, params);
270
+ // Column resolution happens inside compileFilter via readableColumn.
271
+ const windowColumn = descriptor.window === undefined
272
+ ? null
273
+ : view.readableColumn(table, descriptor.window.column, canReadPii);
274
+ const bounds = descriptor.window === undefined
275
+ ? null
276
+ : windowBounds(descriptor.window.last, descriptor.window.unit, now());
277
+ const applyWhere = (qb, window) => {
278
+ let out = qb;
279
+ if (conditions.length > 0) {
280
+ out = out.where((eb) => compileFilter(eb, filterCtx, { and: conditions }));
281
+ }
282
+ if (window !== null && windowColumn !== null) {
283
+ const ref = dynamic.ref(windowColumn.name);
284
+ out = out
285
+ .where((eb) => eb(ref, '>=', windowBoundValue(window.start, dialect)))
286
+ .where((eb) => eb(ref, '<', windowBoundValue(window.end, dialect)));
287
+ }
288
+ return out;
289
+ };
290
+ // --- SELECT ----------------------------------------------------------------
291
+ const aggregations = descriptor.aggregations ?? [];
292
+ const seenAliases = new Set();
293
+ const compiledAggs = aggregations.map((aggregation) => {
294
+ if (seenAliases.has(aggregation.alias)) {
295
+ reject('Duplicate aggregation alias.', { alias: aggregation.alias });
296
+ }
297
+ seenAliases.add(aggregation.alias);
298
+ return compileAggregation(db, view, table, canReadPii, aggregation);
299
+ });
300
+ const shape = descriptor.shape;
301
+ const rowShape = shape === 'record-list' || shape === 'stream';
302
+ let selectedColumns = [];
303
+ const requestedLimit = descriptor.limit ?? (rowShape ? RECORD_LIST_LIMIT_DEFAULT : WIDGET_LIMIT_MAX);
304
+ const limit = Math.min(Math.max(requestedLimit, 1), WIDGET_LIMIT_MAX);
305
+ const build = (window) => {
306
+ let qb = applyWhere(db.selectFrom(table.id), window);
307
+ if (rowShape) {
308
+ selectedColumns =
309
+ descriptor.select !== undefined && descriptor.select.length > 0
310
+ ? descriptor.select.map((name) => view.readableColumn(table, name, canReadPii))
311
+ : view.selectableColumns(table);
312
+ qb = qb.select(selectedColumns.map((column) => dynamic.ref(column.name)));
313
+ }
314
+ else {
315
+ qb = qb.select(compiledAggs.map(({ expr, alias }) => expr.as(alias)));
316
+ }
317
+ if (shape === 'timeseries' && descriptor.bucket !== undefined) {
318
+ const bucketColumn = view.readableColumn(table, descriptor.bucket.column, canReadPii);
319
+ const bucket = bucketExpr(dialect, dynamic.ref(bucketColumn.name), descriptor.bucket.unit);
320
+ qb = qb.select(bucket.as(BUCKET_ALIAS)).groupBy(bucket).orderBy(bucket, 'asc');
321
+ }
322
+ if (shape === 'categorical') {
323
+ const groupColumn = view.readableColumn(table, descriptor.groupBy[0], canReadPii);
324
+ const ref = dynamic.ref(groupColumn.name);
325
+ qb = qb.select(sql `${ref}`.as(GROUP_ALIAS)).groupBy(ref);
326
+ // Deterministic fold order: biggest buckets first, by the first alias.
327
+ const first = compiledAggs[0];
328
+ if (first !== undefined)
329
+ qb = qb.orderBy(sql.ref(first.alias), 'desc');
330
+ }
331
+ for (const key of descriptor.orderBy ?? []) {
332
+ const column = view.readableColumn(table, key.column, canReadPii);
333
+ qb = qb.orderBy(dynamic.ref(column.name), key.dir);
334
+ }
335
+ // Aggregate-only shapes need no LIMIT; grouped/row shapes get the cap.
336
+ if (rowShape || shape === 'categorical' || shape === 'timeseries') {
337
+ qb = qb.limit(limit);
338
+ }
339
+ return qb;
340
+ };
341
+ const query = build(bounds);
342
+ const wantsPrior = shape === 'metric+delta' || shape === 'timeseries'
343
+ ? descriptor.window?.compareToPrior === true
344
+ : false;
345
+ const prior = wantsPrior && bounds !== null ? build({ start: bounds.priorStart, end: bounds.priorEnd }) : null;
346
+ const count = shape === 'record-list'
347
+ ? applyWhere(db.selectFrom(table.id), bounds).select((eb) => eb.fn.countAll().as('total'))
348
+ : null;
349
+ return {
350
+ table,
351
+ shape,
352
+ query,
353
+ prior,
354
+ count,
355
+ aggregationAliases: compiledAggs.map(({ alias }) => alias),
356
+ bucketAlias: shape === 'timeseries' ? BUCKET_ALIAS : null,
357
+ groupAlias: shape === 'categorical' ? GROUP_ALIAS : null,
358
+ selectedColumns,
359
+ limit,
360
+ };
361
+ }
362
+ //# sourceMappingURL=compiler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compiler.js","sourceRoot":"","sources":["../../src/widget-data/compiler.ts"],"names":[],"mappings":"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"}