@miragon/pulse-widget-shell 0.0.0-stage → 0.21.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (831) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +164 -2
  3. package/dist/adapt-data-widget.d.ts +7 -0
  4. package/dist/adapt-data-widget.d.ts.map +1 -0
  5. package/dist/adapt-data-widget.js +7 -0
  6. package/dist/adapt-data-widget.js.map +1 -0
  7. package/dist/bpmn-names.d.ts +42 -0
  8. package/dist/bpmn-names.d.ts.map +1 -0
  9. package/dist/bpmn-names.js +151 -0
  10. package/dist/bpmn-names.js.map +1 -0
  11. package/dist/bpmn-names.test.d.ts +2 -0
  12. package/dist/bpmn-names.test.d.ts.map +1 -0
  13. package/dist/bpmn-names.test.js +143 -0
  14. package/dist/bpmn-names.test.js.map +1 -0
  15. package/dist/build-data-feed-result.test.d.ts +2 -0
  16. package/dist/build-data-feed-result.test.d.ts.map +1 -0
  17. package/dist/build-data-feed-result.test.js +28 -0
  18. package/dist/build-data-feed-result.test.js.map +1 -0
  19. package/dist/build-single-widget-view.test.d.ts +2 -0
  20. package/dist/build-single-widget-view.test.d.ts.map +1 -0
  21. package/dist/build-single-widget-view.test.js +136 -0
  22. package/dist/build-single-widget-view.test.js.map +1 -0
  23. package/dist/builder-texts.d.ts +27 -0
  24. package/dist/builder-texts.d.ts.map +1 -0
  25. package/dist/builder-texts.js +32 -0
  26. package/dist/builder-texts.js.map +1 -0
  27. package/dist/builder-texts.test.d.ts +2 -0
  28. package/dist/builder-texts.test.d.ts.map +1 -0
  29. package/dist/builder-texts.test.js +54 -0
  30. package/dist/builder-texts.test.js.map +1 -0
  31. package/dist/catalogue-sync.d.ts +18 -0
  32. package/dist/catalogue-sync.d.ts.map +1 -0
  33. package/dist/catalogue-sync.js +31 -0
  34. package/dist/catalogue-sync.js.map +1 -0
  35. package/dist/catalogue-sync.test.d.ts +2 -0
  36. package/dist/catalogue-sync.test.d.ts.map +1 -0
  37. package/dist/catalogue-sync.test.js +22 -0
  38. package/dist/catalogue-sync.test.js.map +1 -0
  39. package/dist/composed-server.d.ts +110 -0
  40. package/dist/composed-server.d.ts.map +1 -0
  41. package/dist/composed-server.edge.test.d.ts +2 -0
  42. package/dist/composed-server.edge.test.d.ts.map +1 -0
  43. package/dist/composed-server.edge.test.js +184 -0
  44. package/dist/composed-server.edge.test.js.map +1 -0
  45. package/dist/composed-server.fonts.test.d.ts +2 -0
  46. package/dist/composed-server.fonts.test.d.ts.map +1 -0
  47. package/dist/composed-server.fonts.test.js +186 -0
  48. package/dist/composed-server.fonts.test.js.map +1 -0
  49. package/dist/composed-server.js +260 -0
  50. package/dist/composed-server.js.map +1 -0
  51. package/dist/composed-server.test.d.ts +2 -0
  52. package/dist/composed-server.test.d.ts.map +1 -0
  53. package/dist/composed-server.test.js +332 -0
  54. package/dist/composed-server.test.js.map +1 -0
  55. package/dist/composition.d.ts +155 -0
  56. package/dist/composition.d.ts.map +1 -0
  57. package/dist/composition.js +163 -0
  58. package/dist/composition.js.map +1 -0
  59. package/dist/composition.test.d.ts +2 -0
  60. package/dist/composition.test.d.ts.map +1 -0
  61. package/dist/composition.test.js +275 -0
  62. package/dist/composition.test.js.map +1 -0
  63. package/dist/dashboard-store-postgres.d.ts +43 -0
  64. package/dist/dashboard-store-postgres.d.ts.map +1 -0
  65. package/dist/dashboard-store-postgres.js +225 -0
  66. package/dist/dashboard-store-postgres.js.map +1 -0
  67. package/dist/dashboard-store-postgres.test.d.ts +2 -0
  68. package/dist/dashboard-store-postgres.test.d.ts.map +1 -0
  69. package/dist/dashboard-store-postgres.test.js +272 -0
  70. package/dist/dashboard-store-postgres.test.js.map +1 -0
  71. package/dist/font-assets.d.ts +47 -0
  72. package/dist/font-assets.d.ts.map +1 -0
  73. package/dist/font-assets.js +93 -0
  74. package/dist/font-assets.js.map +1 -0
  75. package/dist/font-assets.test.d.ts +2 -0
  76. package/dist/font-assets.test.d.ts.map +1 -0
  77. package/dist/font-assets.test.js +123 -0
  78. package/dist/font-assets.test.js.map +1 -0
  79. package/dist/health.d.ts +59 -0
  80. package/dist/health.d.ts.map +1 -0
  81. package/dist/health.js +74 -0
  82. package/dist/health.js.map +1 -0
  83. package/dist/health.test.d.ts +2 -0
  84. package/dist/health.test.d.ts.map +1 -0
  85. package/dist/health.test.js +140 -0
  86. package/dist/health.test.js.map +1 -0
  87. package/dist/host-boot.d.ts +56 -0
  88. package/dist/host-boot.d.ts.map +1 -0
  89. package/dist/host-boot.js +64 -0
  90. package/dist/host-boot.js.map +1 -0
  91. package/dist/host-boot.test.d.ts +2 -0
  92. package/dist/host-boot.test.d.ts.map +1 -0
  93. package/dist/host-boot.test.js +59 -0
  94. package/dist/host-boot.test.js.map +1 -0
  95. package/dist/http-edge.d.ts +117 -0
  96. package/dist/http-edge.d.ts.map +1 -0
  97. package/dist/http-edge.js +219 -0
  98. package/dist/http-edge.js.map +1 -0
  99. package/dist/http-edge.test.d.ts +2 -0
  100. package/dist/http-edge.test.d.ts.map +1 -0
  101. package/dist/http-edge.test.js +255 -0
  102. package/dist/http-edge.test.js.map +1 -0
  103. package/dist/metrics.d.ts +48 -0
  104. package/dist/metrics.d.ts.map +1 -0
  105. package/dist/metrics.js +124 -0
  106. package/dist/metrics.js.map +1 -0
  107. package/dist/metrics.test.d.ts +2 -0
  108. package/dist/metrics.test.d.ts.map +1 -0
  109. package/dist/metrics.test.js +154 -0
  110. package/dist/metrics.test.js.map +1 -0
  111. package/dist/node-listener.d.ts +61 -0
  112. package/dist/node-listener.d.ts.map +1 -0
  113. package/dist/node-listener.js +165 -0
  114. package/dist/node-listener.js.map +1 -0
  115. package/dist/node-listener.test.d.ts +2 -0
  116. package/dist/node-listener.test.d.ts.map +1 -0
  117. package/dist/node-listener.test.js +331 -0
  118. package/dist/node-listener.test.js.map +1 -0
  119. package/dist/oauth-env.d.ts +42 -0
  120. package/dist/oauth-env.d.ts.map +1 -0
  121. package/dist/oauth-env.js +78 -0
  122. package/dist/oauth-env.js.map +1 -0
  123. package/dist/oauth-env.test.d.ts +2 -0
  124. package/dist/oauth-env.test.d.ts.map +1 -0
  125. package/dist/oauth-env.test.js +76 -0
  126. package/dist/oauth-env.test.js.map +1 -0
  127. package/dist/postgres.d.ts +59 -0
  128. package/dist/postgres.d.ts.map +1 -0
  129. package/dist/postgres.js +80 -0
  130. package/dist/postgres.js.map +1 -0
  131. package/dist/profile-advisory.d.ts +19 -0
  132. package/dist/profile-advisory.d.ts.map +1 -0
  133. package/dist/profile-advisory.js +48 -0
  134. package/dist/profile-advisory.js.map +1 -0
  135. package/dist/profile-advisory.test.d.ts +2 -0
  136. package/dist/profile-advisory.test.d.ts.map +1 -0
  137. package/dist/profile-advisory.test.js +53 -0
  138. package/dist/profile-advisory.test.js.map +1 -0
  139. package/dist/profile-constants.d.ts +37 -0
  140. package/dist/profile-constants.d.ts.map +1 -0
  141. package/dist/profile-constants.js +37 -0
  142. package/dist/profile-constants.js.map +1 -0
  143. package/dist/profile-migrations.d.ts +71 -0
  144. package/dist/profile-migrations.d.ts.map +1 -0
  145. package/dist/profile-migrations.js +88 -0
  146. package/dist/profile-migrations.js.map +1 -0
  147. package/dist/profile-migrations.test.d.ts +2 -0
  148. package/dist/profile-migrations.test.d.ts.map +1 -0
  149. package/dist/profile-migrations.test.js +200 -0
  150. package/dist/profile-migrations.test.js.map +1 -0
  151. package/dist/profile-record.d.ts +60 -0
  152. package/dist/profile-record.d.ts.map +1 -0
  153. package/dist/profile-record.js +78 -0
  154. package/dist/profile-record.js.map +1 -0
  155. package/dist/profile-slice.d.ts +53 -0
  156. package/dist/profile-slice.d.ts.map +1 -0
  157. package/dist/profile-slice.js +73 -0
  158. package/dist/profile-slice.js.map +1 -0
  159. package/dist/profile-slice.test.d.ts +2 -0
  160. package/dist/profile-slice.test.d.ts.map +1 -0
  161. package/dist/profile-slice.test.js +73 -0
  162. package/dist/profile-slice.test.js.map +1 -0
  163. package/dist/profile-store-env.d.ts +34 -0
  164. package/dist/profile-store-env.d.ts.map +1 -0
  165. package/dist/profile-store-env.js +44 -0
  166. package/dist/profile-store-env.js.map +1 -0
  167. package/dist/profile-store-env.test.d.ts +2 -0
  168. package/dist/profile-store-env.test.d.ts.map +1 -0
  169. package/dist/profile-store-env.test.js +69 -0
  170. package/dist/profile-store-env.test.js.map +1 -0
  171. package/dist/profile-store-postgres.d.ts +33 -0
  172. package/dist/profile-store-postgres.d.ts.map +1 -0
  173. package/dist/profile-store-postgres.js +87 -0
  174. package/dist/profile-store-postgres.js.map +1 -0
  175. package/dist/profile-store-raw.test.d.ts +2 -0
  176. package/dist/profile-store-raw.test.d.ts.map +1 -0
  177. package/dist/profile-store-raw.test.js +185 -0
  178. package/dist/profile-store-raw.test.js.map +1 -0
  179. package/dist/profile-store.d.ts +85 -0
  180. package/dist/profile-store.d.ts.map +1 -0
  181. package/dist/profile-store.js +182 -0
  182. package/dist/profile-store.js.map +1 -0
  183. package/dist/profile-store.test.d.ts +2 -0
  184. package/dist/profile-store.test.d.ts.map +1 -0
  185. package/dist/profile-store.test.js +353 -0
  186. package/dist/profile-store.test.js.map +1 -0
  187. package/dist/profile.d.ts +75 -0
  188. package/dist/profile.d.ts.map +1 -0
  189. package/dist/profile.js +85 -0
  190. package/dist/profile.js.map +1 -0
  191. package/dist/profile.test.d.ts +2 -0
  192. package/dist/profile.test.d.ts.map +1 -0
  193. package/dist/profile.test.js +71 -0
  194. package/dist/profile.test.js.map +1 -0
  195. package/dist/request-context.d.ts +47 -0
  196. package/dist/request-context.d.ts.map +1 -0
  197. package/dist/request-context.js +85 -0
  198. package/dist/request-context.js.map +1 -0
  199. package/dist/request-context.test.d.ts +2 -0
  200. package/dist/request-context.test.d.ts.map +1 -0
  201. package/dist/request-context.test.js +107 -0
  202. package/dist/request-context.test.js.map +1 -0
  203. package/dist/served-fonts.d.ts +38 -0
  204. package/dist/served-fonts.d.ts.map +1 -0
  205. package/dist/served-fonts.js +51 -0
  206. package/dist/served-fonts.js.map +1 -0
  207. package/dist/served-fonts.test.d.ts +2 -0
  208. package/dist/served-fonts.test.d.ts.map +1 -0
  209. package/dist/served-fonts.test.js +30 -0
  210. package/dist/served-fonts.test.js.map +1 -0
  211. package/dist/server-locale.d.ts +58 -0
  212. package/dist/server-locale.d.ts.map +1 -0
  213. package/dist/server-locale.js +64 -0
  214. package/dist/server-locale.js.map +1 -0
  215. package/dist/server-locale.test.d.ts +2 -0
  216. package/dist/server-locale.test.d.ts.map +1 -0
  217. package/dist/server-locale.test.js +90 -0
  218. package/dist/server-locale.test.js.map +1 -0
  219. package/dist/server.d.ts +43 -0
  220. package/dist/server.d.ts.map +1 -0
  221. package/dist/server.js +34 -0
  222. package/dist/server.js.map +1 -0
  223. package/dist/shell-catalogue.d.ts +12 -0
  224. package/dist/shell-catalogue.d.ts.map +1 -0
  225. package/dist/shell-catalogue.js +142 -0
  226. package/dist/shell-catalogue.js.map +1 -0
  227. package/dist/shell-settings-contract.d.ts +34 -0
  228. package/dist/shell-settings-contract.d.ts.map +1 -0
  229. package/dist/shell-settings-contract.js +21 -0
  230. package/dist/shell-settings-contract.js.map +1 -0
  231. package/dist/shell-settings.d.ts +24 -0
  232. package/dist/shell-settings.d.ts.map +1 -0
  233. package/dist/shell-settings.js +148 -0
  234. package/dist/shell-settings.js.map +1 -0
  235. package/dist/shell-settings.test.d.ts +2 -0
  236. package/dist/shell-settings.test.d.ts.map +1 -0
  237. package/dist/shell-settings.test.js +115 -0
  238. package/dist/shell-settings.test.js.map +1 -0
  239. package/dist/testing/catalog-text.d.ts +53 -0
  240. package/dist/testing/catalog-text.d.ts.map +1 -0
  241. package/dist/testing/catalog-text.js +146 -0
  242. package/dist/testing/catalog-text.js.map +1 -0
  243. package/dist/testing/catalog-text.test.d.ts +2 -0
  244. package/dist/testing/catalog-text.test.d.ts.map +1 -0
  245. package/dist/testing/catalog-text.test.js +137 -0
  246. package/dist/testing/catalog-text.test.js.map +1 -0
  247. package/dist/testing/colors.d.ts +34 -0
  248. package/dist/testing/colors.d.ts.map +1 -0
  249. package/dist/testing/colors.js +124 -0
  250. package/dist/testing/colors.js.map +1 -0
  251. package/dist/testing/colors.test.d.ts +2 -0
  252. package/dist/testing/colors.test.d.ts.map +1 -0
  253. package/dist/testing/colors.test.js +166 -0
  254. package/dist/testing/colors.test.js.map +1 -0
  255. package/dist/testing/contrast.d.ts +77 -0
  256. package/dist/testing/contrast.d.ts.map +1 -0
  257. package/dist/testing/contrast.js +382 -0
  258. package/dist/testing/contrast.js.map +1 -0
  259. package/dist/testing/contrast.test.d.ts +2 -0
  260. package/dist/testing/contrast.test.d.ts.map +1 -0
  261. package/dist/testing/contrast.test.js +230 -0
  262. package/dist/testing/contrast.test.js.map +1 -0
  263. package/dist/testing/display-texts.d.ts +23 -0
  264. package/dist/testing/display-texts.d.ts.map +1 -0
  265. package/dist/testing/display-texts.js +88 -0
  266. package/dist/testing/display-texts.js.map +1 -0
  267. package/dist/testing/display-texts.test.d.ts +2 -0
  268. package/dist/testing/display-texts.test.d.ts.map +1 -0
  269. package/dist/testing/display-texts.test.js +169 -0
  270. package/dist/testing/display-texts.test.js.map +1 -0
  271. package/dist/testing/glossary.d.ts +52 -0
  272. package/dist/testing/glossary.d.ts.map +1 -0
  273. package/dist/testing/glossary.js +135 -0
  274. package/dist/testing/glossary.js.map +1 -0
  275. package/dist/testing/glossary.test.d.ts +2 -0
  276. package/dist/testing/glossary.test.d.ts.map +1 -0
  277. package/dist/testing/glossary.test.js +78 -0
  278. package/dist/testing/glossary.test.js.map +1 -0
  279. package/dist/testing/glyphs.d.ts +27 -0
  280. package/dist/testing/glyphs.d.ts.map +1 -0
  281. package/dist/testing/glyphs.js +130 -0
  282. package/dist/testing/glyphs.js.map +1 -0
  283. package/dist/testing/glyphs.test.d.ts +2 -0
  284. package/dist/testing/glyphs.test.d.ts.map +1 -0
  285. package/dist/testing/glyphs.test.js +146 -0
  286. package/dist/testing/glyphs.test.js.map +1 -0
  287. package/dist/testing/icon-sizes.d.ts +22 -0
  288. package/dist/testing/icon-sizes.d.ts.map +1 -0
  289. package/dist/testing/icon-sizes.js +39 -0
  290. package/dist/testing/icon-sizes.js.map +1 -0
  291. package/dist/testing/icon-sizes.test.d.ts +2 -0
  292. package/dist/testing/icon-sizes.test.d.ts.map +1 -0
  293. package/dist/testing/icon-sizes.test.js +36 -0
  294. package/dist/testing/icon-sizes.test.js.map +1 -0
  295. package/dist/testing/index.d.ts +40 -0
  296. package/dist/testing/index.d.ts.map +1 -0
  297. package/dist/testing/index.js +40 -0
  298. package/dist/testing/index.js.map +1 -0
  299. package/dist/testing/source-scan.d.ts +16 -0
  300. package/dist/testing/source-scan.d.ts.map +1 -0
  301. package/dist/testing/source-scan.js +57 -0
  302. package/dist/testing/source-scan.js.map +1 -0
  303. package/dist/testing/tone-pairs.d.ts +20 -0
  304. package/dist/testing/tone-pairs.d.ts.map +1 -0
  305. package/dist/testing/tone-pairs.js +154 -0
  306. package/dist/testing/tone-pairs.js.map +1 -0
  307. package/dist/testing/type-scale.d.ts +40 -0
  308. package/dist/testing/type-scale.d.ts.map +1 -0
  309. package/dist/testing/type-scale.js +55 -0
  310. package/dist/testing/type-scale.js.map +1 -0
  311. package/dist/testing/type-scale.test.d.ts +2 -0
  312. package/dist/testing/type-scale.test.d.ts.map +1 -0
  313. package/dist/testing/type-scale.test.js +61 -0
  314. package/dist/testing/type-scale.test.js.map +1 -0
  315. package/dist/tool-schema-trim.d.ts +24 -0
  316. package/dist/tool-schema-trim.d.ts.map +1 -0
  317. package/dist/tool-schema-trim.js +49 -0
  318. package/dist/tool-schema-trim.js.map +1 -0
  319. package/dist/tool-schema-trim.test.d.ts +2 -0
  320. package/dist/tool-schema-trim.test.d.ts.map +1 -0
  321. package/dist/tool-schema-trim.test.js +53 -0
  322. package/dist/tool-schema-trim.test.js.map +1 -0
  323. package/dist/toolsets.d.ts +76 -0
  324. package/dist/toolsets.d.ts.map +1 -0
  325. package/dist/toolsets.js +41 -0
  326. package/dist/toolsets.js.map +1 -0
  327. package/dist/toolsets.test.d.ts +2 -0
  328. package/dist/toolsets.test.d.ts.map +1 -0
  329. package/dist/toolsets.test.js +86 -0
  330. package/dist/toolsets.test.js.map +1 -0
  331. package/dist/ui/action-feedback.d.ts +33 -0
  332. package/dist/ui/action-feedback.d.ts.map +1 -0
  333. package/dist/ui/action-feedback.js +51 -0
  334. package/dist/ui/action-feedback.js.map +1 -0
  335. package/dist/ui/action-feedback.test.d.ts +2 -0
  336. package/dist/ui/action-feedback.test.d.ts.map +1 -0
  337. package/dist/ui/action-feedback.test.js +77 -0
  338. package/dist/ui/action-feedback.test.js.map +1 -0
  339. package/dist/ui/app-shell-providers.d.ts +18 -0
  340. package/dist/ui/app-shell-providers.d.ts.map +1 -0
  341. package/dist/ui/app-shell-providers.js +19 -0
  342. package/dist/ui/app-shell-providers.js.map +1 -0
  343. package/dist/ui/app-shell-providers.test.d.ts +2 -0
  344. package/dist/ui/app-shell-providers.test.d.ts.map +1 -0
  345. package/dist/ui/app-shell-providers.test.js +249 -0
  346. package/dist/ui/app-shell-providers.test.js.map +1 -0
  347. package/dist/ui/ask-ai-button.d.ts +56 -0
  348. package/dist/ui/ask-ai-button.d.ts.map +1 -0
  349. package/dist/ui/ask-ai-button.js +36 -0
  350. package/dist/ui/ask-ai-button.js.map +1 -0
  351. package/dist/ui/ask-ai-button.test.d.ts +2 -0
  352. package/dist/ui/ask-ai-button.test.d.ts.map +1 -0
  353. package/dist/ui/ask-ai-button.test.js +103 -0
  354. package/dist/ui/ask-ai-button.test.js.map +1 -0
  355. package/dist/ui/ask-ai-prompt.d.ts +115 -0
  356. package/dist/ui/ask-ai-prompt.d.ts.map +1 -0
  357. package/dist/ui/ask-ai-prompt.js +174 -0
  358. package/dist/ui/ask-ai-prompt.js.map +1 -0
  359. package/dist/ui/ask-ai-prompt.test.d.ts +2 -0
  360. package/dist/ui/ask-ai-prompt.test.d.ts.map +1 -0
  361. package/dist/ui/ask-ai-prompt.test.js +240 -0
  362. package/dist/ui/ask-ai-prompt.test.js.map +1 -0
  363. package/dist/ui/bpmn-heatmap/heat-ramp.test.d.ts +2 -0
  364. package/dist/ui/bpmn-heatmap/heat-ramp.test.d.ts.map +1 -0
  365. package/dist/ui/bpmn-heatmap/heat-ramp.test.js +174 -0
  366. package/dist/ui/bpmn-heatmap/heat-ramp.test.js.map +1 -0
  367. package/dist/ui/bpmn-heatmap/heat-utils.d.ts +119 -0
  368. package/dist/ui/bpmn-heatmap/heat-utils.d.ts.map +1 -0
  369. package/dist/ui/bpmn-heatmap/heat-utils.js +231 -0
  370. package/dist/ui/bpmn-heatmap/heat-utils.js.map +1 -0
  371. package/dist/ui/bpmn-heatmap/heat-utils.test.d.ts +2 -0
  372. package/dist/ui/bpmn-heatmap/heat-utils.test.d.ts.map +1 -0
  373. package/dist/ui/bpmn-heatmap/heat-utils.test.js +59 -0
  374. package/dist/ui/bpmn-heatmap/heat-utils.test.js.map +1 -0
  375. package/dist/ui/bpmn-heatmap-labels.d.ts +46 -0
  376. package/dist/ui/bpmn-heatmap-labels.d.ts.map +1 -0
  377. package/dist/ui/bpmn-heatmap-labels.js +16 -0
  378. package/dist/ui/bpmn-heatmap-labels.js.map +1 -0
  379. package/dist/ui/bpmn-heatmap-widget.d.ts +38 -0
  380. package/dist/ui/bpmn-heatmap-widget.d.ts.map +1 -0
  381. package/dist/ui/bpmn-heatmap-widget.js +65 -0
  382. package/dist/ui/bpmn-heatmap-widget.js.map +1 -0
  383. package/dist/ui/bpmn-heatmap-widget.test.d.ts +2 -0
  384. package/dist/ui/bpmn-heatmap-widget.test.d.ts.map +1 -0
  385. package/dist/ui/bpmn-heatmap-widget.test.js +173 -0
  386. package/dist/ui/bpmn-heatmap-widget.test.js.map +1 -0
  387. package/dist/ui/bpmn-heatmap.d.ts +61 -0
  388. package/dist/ui/bpmn-heatmap.d.ts.map +1 -0
  389. package/dist/ui/bpmn-heatmap.js +119 -0
  390. package/dist/ui/bpmn-heatmap.js.map +1 -0
  391. package/dist/ui/bpmn-tokens.d.ts +81 -0
  392. package/dist/ui/bpmn-tokens.d.ts.map +1 -0
  393. package/dist/ui/bpmn-tokens.js +114 -0
  394. package/dist/ui/bpmn-tokens.js.map +1 -0
  395. package/dist/ui/bpmn-tokens.test.d.ts +2 -0
  396. package/dist/ui/bpmn-tokens.test.d.ts.map +1 -0
  397. package/dist/ui/bpmn-tokens.test.js +98 -0
  398. package/dist/ui/bpmn-tokens.test.js.map +1 -0
  399. package/dist/ui/bpmn-zoom-controls.d.ts +30 -0
  400. package/dist/ui/bpmn-zoom-controls.d.ts.map +1 -0
  401. package/dist/ui/bpmn-zoom-controls.js +29 -0
  402. package/dist/ui/bpmn-zoom-controls.js.map +1 -0
  403. package/dist/ui/brand-gates.test.d.ts +2 -0
  404. package/dist/ui/brand-gates.test.d.ts.map +1 -0
  405. package/dist/ui/brand-gates.test.js +131 -0
  406. package/dist/ui/brand-gates.test.js.map +1 -0
  407. package/dist/ui/brand-mark.d.ts +37 -0
  408. package/dist/ui/brand-mark.d.ts.map +1 -0
  409. package/dist/ui/brand-mark.js +33 -0
  410. package/dist/ui/brand-mark.js.map +1 -0
  411. package/dist/ui/brand-mark.test.d.ts +2 -0
  412. package/dist/ui/brand-mark.test.d.ts.map +1 -0
  413. package/dist/ui/brand-mark.test.js +111 -0
  414. package/dist/ui/brand-mark.test.js.map +1 -0
  415. package/dist/ui/confirm-dialog.d.ts +55 -0
  416. package/dist/ui/confirm-dialog.d.ts.map +1 -0
  417. package/dist/ui/confirm-dialog.js +59 -0
  418. package/dist/ui/confirm-dialog.js.map +1 -0
  419. package/dist/ui/confirm-dialog.test.d.ts +2 -0
  420. package/dist/ui/confirm-dialog.test.d.ts.map +1 -0
  421. package/dist/ui/confirm-dialog.test.js +115 -0
  422. package/dist/ui/confirm-dialog.test.js.map +1 -0
  423. package/dist/ui/count-tone.d.ts +20 -0
  424. package/dist/ui/count-tone.d.ts.map +1 -0
  425. package/dist/ui/count-tone.js +27 -0
  426. package/dist/ui/count-tone.js.map +1 -0
  427. package/dist/ui/count-tone.test.d.ts +2 -0
  428. package/dist/ui/count-tone.test.d.ts.map +1 -0
  429. package/dist/ui/count-tone.test.js +27 -0
  430. package/dist/ui/count-tone.test.js.map +1 -0
  431. package/dist/ui/create-use-t.d.ts +15 -0
  432. package/dist/ui/create-use-t.d.ts.map +1 -0
  433. package/dist/ui/create-use-t.js +17 -0
  434. package/dist/ui/create-use-t.js.map +1 -0
  435. package/dist/ui/declare-served-fonts.d.ts +14 -0
  436. package/dist/ui/declare-served-fonts.d.ts.map +1 -0
  437. package/dist/ui/declare-served-fonts.js +38 -0
  438. package/dist/ui/declare-served-fonts.js.map +1 -0
  439. package/dist/ui/declare-served-fonts.test.d.ts +2 -0
  440. package/dist/ui/declare-served-fonts.test.d.ts.map +1 -0
  441. package/dist/ui/declare-served-fonts.test.js +44 -0
  442. package/dist/ui/declare-served-fonts.test.js.map +1 -0
  443. package/dist/ui/describe-error.d.ts +71 -0
  444. package/dist/ui/describe-error.d.ts.map +1 -0
  445. package/dist/ui/describe-error.js +175 -0
  446. package/dist/ui/describe-error.js.map +1 -0
  447. package/dist/ui/describe-error.test.d.ts +2 -0
  448. package/dist/ui/describe-error.test.d.ts.map +1 -0
  449. package/dist/ui/describe-error.test.js +274 -0
  450. package/dist/ui/describe-error.test.js.map +1 -0
  451. package/dist/ui/display-mode-toggle.d.ts +32 -0
  452. package/dist/ui/display-mode-toggle.d.ts.map +1 -0
  453. package/dist/ui/display-mode-toggle.js +39 -0
  454. package/dist/ui/display-mode-toggle.js.map +1 -0
  455. package/dist/ui/error-labels.d.ts +65 -0
  456. package/dist/ui/error-labels.d.ts.map +1 -0
  457. package/dist/ui/error-labels.js +111 -0
  458. package/dist/ui/error-labels.js.map +1 -0
  459. package/dist/ui/format.d.ts +81 -0
  460. package/dist/ui/format.d.ts.map +1 -0
  461. package/dist/ui/format.js +189 -0
  462. package/dist/ui/format.js.map +1 -0
  463. package/dist/ui/format.test.d.ts +2 -0
  464. package/dist/ui/format.test.d.ts.map +1 -0
  465. package/dist/ui/format.test.js +181 -0
  466. package/dist/ui/format.test.js.map +1 -0
  467. package/dist/ui/generic-widgets.d.ts +15 -0
  468. package/dist/ui/generic-widgets.d.ts.map +1 -0
  469. package/dist/ui/generic-widgets.js +122 -0
  470. package/dist/ui/generic-widgets.js.map +1 -0
  471. package/dist/ui/generic-widgets.test.d.ts +2 -0
  472. package/dist/ui/generic-widgets.test.d.ts.map +1 -0
  473. package/dist/ui/generic-widgets.test.js +139 -0
  474. package/dist/ui/generic-widgets.test.js.map +1 -0
  475. package/dist/ui/hand-off-button.d.ts +44 -0
  476. package/dist/ui/hand-off-button.d.ts.map +1 -0
  477. package/dist/ui/hand-off-button.js +44 -0
  478. package/dist/ui/hand-off-button.js.map +1 -0
  479. package/dist/ui/hand-off-button.test.d.ts +2 -0
  480. package/dist/ui/hand-off-button.test.d.ts.map +1 -0
  481. package/dist/ui/hand-off-button.test.js +78 -0
  482. package/dist/ui/hand-off-button.test.js.map +1 -0
  483. package/dist/ui/host-context.d.ts +66 -0
  484. package/dist/ui/host-context.d.ts.map +1 -0
  485. package/dist/ui/host-context.js +122 -0
  486. package/dist/ui/host-context.js.map +1 -0
  487. package/dist/ui/host-context.test.d.ts +2 -0
  488. package/dist/ui/host-context.test.d.ts.map +1 -0
  489. package/dist/ui/host-context.test.js +160 -0
  490. package/dist/ui/host-context.test.js.map +1 -0
  491. package/dist/ui/host-document.d.ts +25 -0
  492. package/dist/ui/host-document.d.ts.map +1 -0
  493. package/dist/ui/host-document.js +93 -0
  494. package/dist/ui/host-document.js.map +1 -0
  495. package/dist/ui/host-document.test.d.ts +2 -0
  496. package/dist/ui/host-document.test.d.ts.map +1 -0
  497. package/dist/ui/host-document.test.js +112 -0
  498. package/dist/ui/host-document.test.js.map +1 -0
  499. package/dist/ui/host-widgets.d.ts +8 -0
  500. package/dist/ui/host-widgets.d.ts.map +1 -0
  501. package/dist/ui/host-widgets.js +18 -0
  502. package/dist/ui/host-widgets.js.map +1 -0
  503. package/dist/ui/humanize-key.d.ts +11 -0
  504. package/dist/ui/humanize-key.d.ts.map +1 -0
  505. package/dist/ui/humanize-key.js +26 -0
  506. package/dist/ui/humanize-key.js.map +1 -0
  507. package/dist/ui/humanize-key.test.d.ts +2 -0
  508. package/dist/ui/humanize-key.test.d.ts.map +1 -0
  509. package/dist/ui/humanize-key.test.js +42 -0
  510. package/dist/ui/humanize-key.test.js.map +1 -0
  511. package/dist/ui/icon.d.ts +37 -0
  512. package/dist/ui/icon.d.ts.map +1 -0
  513. package/dist/ui/icon.js +32 -0
  514. package/dist/ui/icon.js.map +1 -0
  515. package/dist/ui/id-breaks.d.ts +17 -0
  516. package/dist/ui/id-breaks.d.ts.map +1 -0
  517. package/dist/ui/id-breaks.js +36 -0
  518. package/dist/ui/id-breaks.js.map +1 -0
  519. package/dist/ui/id-breaks.test.d.ts +2 -0
  520. package/dist/ui/id-breaks.test.d.ts.map +1 -0
  521. package/dist/ui/id-breaks.test.js +37 -0
  522. package/dist/ui/id-breaks.test.js.map +1 -0
  523. package/dist/ui/id-text.d.ts +29 -0
  524. package/dist/ui/id-text.d.ts.map +1 -0
  525. package/dist/ui/id-text.js +103 -0
  526. package/dist/ui/id-text.js.map +1 -0
  527. package/dist/ui/id-text.test.d.ts +2 -0
  528. package/dist/ui/id-text.test.d.ts.map +1 -0
  529. package/dist/ui/id-text.test.js +122 -0
  530. package/dist/ui/id-text.test.js.map +1 -0
  531. package/dist/ui/index.d.ts +57 -0
  532. package/dist/ui/index.d.ts.map +1 -0
  533. package/dist/ui/index.js +65 -0
  534. package/dist/ui/index.js.map +1 -0
  535. package/dist/ui/index.test.d.ts +2 -0
  536. package/dist/ui/index.test.d.ts.map +1 -0
  537. package/dist/ui/index.test.js +34 -0
  538. package/dist/ui/index.test.js.map +1 -0
  539. package/dist/ui/inline-budget.d.ts +35 -0
  540. package/dist/ui/inline-budget.d.ts.map +1 -0
  541. package/dist/ui/inline-budget.js +27 -0
  542. package/dist/ui/inline-budget.js.map +1 -0
  543. package/dist/ui/inline-fit-registry.d.ts +56 -0
  544. package/dist/ui/inline-fit-registry.d.ts.map +1 -0
  545. package/dist/ui/inline-fit-registry.js +114 -0
  546. package/dist/ui/inline-fit-registry.js.map +1 -0
  547. package/dist/ui/inline-fit-solve.d.ts +50 -0
  548. package/dist/ui/inline-fit-solve.d.ts.map +1 -0
  549. package/dist/ui/inline-fit-solve.js +83 -0
  550. package/dist/ui/inline-fit-solve.js.map +1 -0
  551. package/dist/ui/inline-fit-solve.test.d.ts +2 -0
  552. package/dist/ui/inline-fit-solve.test.d.ts.map +1 -0
  553. package/dist/ui/inline-fit-solve.test.js +108 -0
  554. package/dist/ui/inline-fit-solve.test.js.map +1 -0
  555. package/dist/ui/inline-fit-time.test.d.ts +2 -0
  556. package/dist/ui/inline-fit-time.test.d.ts.map +1 -0
  557. package/dist/ui/inline-fit-time.test.js +110 -0
  558. package/dist/ui/inline-fit-time.test.js.map +1 -0
  559. package/dist/ui/inline-fit.d.ts +77 -0
  560. package/dist/ui/inline-fit.d.ts.map +1 -0
  561. package/dist/ui/inline-fit.js +242 -0
  562. package/dist/ui/inline-fit.js.map +1 -0
  563. package/dist/ui/inline-fit.test-support.d.ts +26 -0
  564. package/dist/ui/inline-fit.test-support.d.ts.map +1 -0
  565. package/dist/ui/inline-fit.test-support.js +34 -0
  566. package/dist/ui/inline-fit.test-support.js.map +1 -0
  567. package/dist/ui/inline-fit.test.d.ts +2 -0
  568. package/dist/ui/inline-fit.test.d.ts.map +1 -0
  569. package/dist/ui/inline-fit.test.js +159 -0
  570. package/dist/ui/inline-fit.test.js.map +1 -0
  571. package/dist/ui/kit-labels.d.ts +80 -0
  572. package/dist/ui/kit-labels.d.ts.map +1 -0
  573. package/dist/ui/kit-labels.js +110 -0
  574. package/dist/ui/kit-labels.js.map +1 -0
  575. package/dist/ui/kit-labels.test.d.ts +2 -0
  576. package/dist/ui/kit-labels.test.d.ts.map +1 -0
  577. package/dist/ui/kit-labels.test.js +98 -0
  578. package/dist/ui/kit-labels.test.js.map +1 -0
  579. package/dist/ui/kit-type-roles.test.d.ts +2 -0
  580. package/dist/ui/kit-type-roles.test.d.ts.map +1 -0
  581. package/dist/ui/kit-type-roles.test.js +122 -0
  582. package/dist/ui/kit-type-roles.test.js.map +1 -0
  583. package/dist/ui/komet-svg.d.ts +15 -0
  584. package/dist/ui/komet-svg.d.ts.map +1 -0
  585. package/dist/ui/komet-svg.js +21 -0
  586. package/dist/ui/komet-svg.js.map +1 -0
  587. package/dist/ui/list-table.d.ts +108 -0
  588. package/dist/ui/list-table.d.ts.map +1 -0
  589. package/dist/ui/list-table.js +161 -0
  590. package/dist/ui/list-table.js.map +1 -0
  591. package/dist/ui/list-table.test.d.ts +2 -0
  592. package/dist/ui/list-table.test.d.ts.map +1 -0
  593. package/dist/ui/list-table.test.js +169 -0
  594. package/dist/ui/list-table.test.js.map +1 -0
  595. package/dist/ui/localized-app-view.d.ts +40 -0
  596. package/dist/ui/localized-app-view.d.ts.map +1 -0
  597. package/dist/ui/localized-app-view.js +71 -0
  598. package/dist/ui/localized-app-view.js.map +1 -0
  599. package/dist/ui/log-text.d.ts +24 -0
  600. package/dist/ui/log-text.d.ts.map +1 -0
  601. package/dist/ui/log-text.js +31 -0
  602. package/dist/ui/log-text.js.map +1 -0
  603. package/dist/ui/menu-item.d.ts +12 -0
  604. package/dist/ui/menu-item.d.ts.map +1 -0
  605. package/dist/ui/menu-item.js +13 -0
  606. package/dist/ui/menu-item.js.map +1 -0
  607. package/dist/ui/named-id.d.ts +23 -0
  608. package/dist/ui/named-id.d.ts.map +1 -0
  609. package/dist/ui/named-id.js +21 -0
  610. package/dist/ui/named-id.js.map +1 -0
  611. package/dist/ui/named-id.test.d.ts +2 -0
  612. package/dist/ui/named-id.test.d.ts.map +1 -0
  613. package/dist/ui/named-id.test.js +57 -0
  614. package/dist/ui/named-id.test.js.map +1 -0
  615. package/dist/ui/native-select.d.ts +17 -0
  616. package/dist/ui/native-select.d.ts.map +1 -0
  617. package/dist/ui/native-select.js +20 -0
  618. package/dist/ui/native-select.js.map +1 -0
  619. package/dist/ui/navigation-focus.d.ts +20 -0
  620. package/dist/ui/navigation-focus.d.ts.map +1 -0
  621. package/dist/ui/navigation-focus.js +25 -0
  622. package/dist/ui/navigation-focus.js.map +1 -0
  623. package/dist/ui/navigation-focus.test.d.ts +2 -0
  624. package/dist/ui/navigation-focus.test.d.ts.map +1 -0
  625. package/dist/ui/navigation-focus.test.js +28 -0
  626. package/dist/ui/navigation-focus.test.js.map +1 -0
  627. package/dist/ui/open-in-cockpit-link.d.ts +28 -0
  628. package/dist/ui/open-in-cockpit-link.d.ts.map +1 -0
  629. package/dist/ui/open-in-cockpit-link.js +41 -0
  630. package/dist/ui/open-in-cockpit-link.js.map +1 -0
  631. package/dist/ui/paged-list-footer.test.d.ts +2 -0
  632. package/dist/ui/paged-list-footer.test.d.ts.map +1 -0
  633. package/dist/ui/paged-list-footer.test.js +128 -0
  634. package/dist/ui/paged-list-footer.test.js.map +1 -0
  635. package/dist/ui/paged-rows.d.ts +24 -0
  636. package/dist/ui/paged-rows.d.ts.map +1 -0
  637. package/dist/ui/paged-rows.js +25 -0
  638. package/dist/ui/paged-rows.js.map +1 -0
  639. package/dist/ui/parse-tool-result.test.d.ts +2 -0
  640. package/dist/ui/parse-tool-result.test.d.ts.map +1 -0
  641. package/dist/ui/parse-tool-result.test.js +88 -0
  642. package/dist/ui/parse-tool-result.test.js.map +1 -0
  643. package/dist/ui/profile-gate.d.ts +37 -0
  644. package/dist/ui/profile-gate.d.ts.map +1 -0
  645. package/dist/ui/profile-gate.js +126 -0
  646. package/dist/ui/profile-gate.js.map +1 -0
  647. package/dist/ui/profile-gate.test.d.ts +2 -0
  648. package/dist/ui/profile-gate.test.d.ts.map +1 -0
  649. package/dist/ui/profile-gate.test.js +246 -0
  650. package/dist/ui/profile-gate.test.js.map +1 -0
  651. package/dist/ui/query-fallback.d.ts +27 -0
  652. package/dist/ui/query-fallback.d.ts.map +1 -0
  653. package/dist/ui/query-fallback.js +30 -0
  654. package/dist/ui/query-fallback.js.map +1 -0
  655. package/dist/ui/query-fallback.test.d.ts +2 -0
  656. package/dist/ui/query-fallback.test.d.ts.map +1 -0
  657. package/dist/ui/query-fallback.test.js +49 -0
  658. package/dist/ui/query-fallback.test.js.map +1 -0
  659. package/dist/ui/row-card.d.ts +13 -0
  660. package/dist/ui/row-card.d.ts.map +1 -0
  661. package/dist/ui/row-card.js +11 -0
  662. package/dist/ui/row-card.js.map +1 -0
  663. package/dist/ui/section.d.ts +18 -0
  664. package/dist/ui/section.d.ts.map +1 -0
  665. package/dist/ui/section.js +14 -0
  666. package/dist/ui/section.js.map +1 -0
  667. package/dist/ui/segmented-control.d.ts +25 -0
  668. package/dist/ui/segmented-control.d.ts.map +1 -0
  669. package/dist/ui/segmented-control.js +22 -0
  670. package/dist/ui/segmented-control.js.map +1 -0
  671. package/dist/ui/settings-labels.d.ts +33 -0
  672. package/dist/ui/settings-labels.d.ts.map +1 -0
  673. package/dist/ui/settings-labels.js +50 -0
  674. package/dist/ui/settings-labels.js.map +1 -0
  675. package/dist/ui/settings-layout.d.ts +29 -0
  676. package/dist/ui/settings-layout.d.ts.map +1 -0
  677. package/dist/ui/settings-layout.js +49 -0
  678. package/dist/ui/settings-layout.js.map +1 -0
  679. package/dist/ui/settings-layout.test.d.ts +2 -0
  680. package/dist/ui/settings-layout.test.d.ts.map +1 -0
  681. package/dist/ui/settings-layout.test.js +73 -0
  682. package/dist/ui/settings-layout.test.js.map +1 -0
  683. package/dist/ui/settings.d.ts +47 -0
  684. package/dist/ui/settings.d.ts.map +1 -0
  685. package/dist/ui/settings.js +48 -0
  686. package/dist/ui/settings.js.map +1 -0
  687. package/dist/ui/settings.test.d.ts +2 -0
  688. package/dist/ui/settings.test.d.ts.map +1 -0
  689. package/dist/ui/settings.test.js +38 -0
  690. package/dist/ui/settings.test.js.map +1 -0
  691. package/dist/ui/shell-host.d.ts +46 -0
  692. package/dist/ui/shell-host.d.ts.map +1 -0
  693. package/dist/ui/shell-host.js +56 -0
  694. package/dist/ui/shell-host.js.map +1 -0
  695. package/dist/ui/shell-settings.d.ts +31 -0
  696. package/dist/ui/shell-settings.d.ts.map +1 -0
  697. package/dist/ui/shell-settings.js +97 -0
  698. package/dist/ui/shell-settings.js.map +1 -0
  699. package/dist/ui/shell-settings.test.d.ts +2 -0
  700. package/dist/ui/shell-settings.test.d.ts.map +1 -0
  701. package/dist/ui/shell-settings.test.js +108 -0
  702. package/dist/ui/shell-settings.test.js.map +1 -0
  703. package/dist/ui/shell-widgets.d.ts +14 -0
  704. package/dist/ui/shell-widgets.d.ts.map +1 -0
  705. package/dist/ui/shell-widgets.js +18 -0
  706. package/dist/ui/shell-widgets.js.map +1 -0
  707. package/dist/ui/table.d.ts +61 -0
  708. package/dist/ui/table.d.ts.map +1 -0
  709. package/dist/ui/table.js +43 -0
  710. package/dist/ui/table.js.map +1 -0
  711. package/dist/ui/tone-components.test.d.ts +2 -0
  712. package/dist/ui/tone-components.test.d.ts.map +1 -0
  713. package/dist/ui/tone-components.test.js +145 -0
  714. package/dist/ui/tone-components.test.js.map +1 -0
  715. package/dist/ui/tone-contrast.test.d.ts +2 -0
  716. package/dist/ui/tone-contrast.test.d.ts.map +1 -0
  717. package/dist/ui/tone-contrast.test.js +66 -0
  718. package/dist/ui/tone-contrast.test.js.map +1 -0
  719. package/dist/ui/toolkit-overlap.test.d.ts +2 -0
  720. package/dist/ui/toolkit-overlap.test.d.ts.map +1 -0
  721. package/dist/ui/toolkit-overlap.test.js +86 -0
  722. package/dist/ui/toolkit-overlap.test.js.map +1 -0
  723. package/dist/ui/use-apply-theme.d.ts +11 -0
  724. package/dist/ui/use-apply-theme.d.ts.map +1 -0
  725. package/dist/ui/use-apply-theme.js +37 -0
  726. package/dist/ui/use-apply-theme.js.map +1 -0
  727. package/dist/ui/use-apply-theme.test.d.ts +2 -0
  728. package/dist/ui/use-apply-theme.test.d.ts.map +1 -0
  729. package/dist/ui/use-apply-theme.test.js +102 -0
  730. package/dist/ui/use-apply-theme.test.js.map +1 -0
  731. package/dist/ui/use-bpmn-viewer.d.ts +135 -0
  732. package/dist/ui/use-bpmn-viewer.d.ts.map +1 -0
  733. package/dist/ui/use-bpmn-viewer.js +257 -0
  734. package/dist/ui/use-bpmn-viewer.js.map +1 -0
  735. package/dist/ui/use-bpmn-viewer.test.d.ts +2 -0
  736. package/dist/ui/use-bpmn-viewer.test.d.ts.map +1 -0
  737. package/dist/ui/use-bpmn-viewer.test.js +239 -0
  738. package/dist/ui/use-bpmn-viewer.test.js.map +1 -0
  739. package/dist/ui/use-detail-view.d.ts +49 -0
  740. package/dist/ui/use-detail-view.d.ts.map +1 -0
  741. package/dist/ui/use-detail-view.js +52 -0
  742. package/dist/ui/use-detail-view.js.map +1 -0
  743. package/dist/ui/use-detail-view.test.d.ts +2 -0
  744. package/dist/ui/use-detail-view.test.d.ts.map +1 -0
  745. package/dist/ui/use-detail-view.test.js +178 -0
  746. package/dist/ui/use-detail-view.test.js.map +1 -0
  747. package/dist/ui/use-paged-list-view.d.ts +48 -0
  748. package/dist/ui/use-paged-list-view.d.ts.map +1 -0
  749. package/dist/ui/use-paged-list-view.js +41 -0
  750. package/dist/ui/use-paged-list-view.js.map +1 -0
  751. package/dist/ui/use-paged-list-view.test.d.ts +2 -0
  752. package/dist/ui/use-paged-list-view.test.d.ts.map +1 -0
  753. package/dist/ui/use-paged-list-view.test.js +136 -0
  754. package/dist/ui/use-paged-list-view.test.js.map +1 -0
  755. package/dist/ui/use-paged-view-data.d.ts +103 -0
  756. package/dist/ui/use-paged-view-data.d.ts.map +1 -0
  757. package/dist/ui/use-paged-view-data.js +173 -0
  758. package/dist/ui/use-paged-view-data.js.map +1 -0
  759. package/dist/ui/use-paged-view-data.seeded.test.d.ts +2 -0
  760. package/dist/ui/use-paged-view-data.seeded.test.d.ts.map +1 -0
  761. package/dist/ui/use-paged-view-data.seeded.test.js +144 -0
  762. package/dist/ui/use-paged-view-data.seeded.test.js.map +1 -0
  763. package/dist/ui/use-paged-view-data.test.d.ts +2 -0
  764. package/dist/ui/use-paged-view-data.test.d.ts.map +1 -0
  765. package/dist/ui/use-paged-view-data.test.js +330 -0
  766. package/dist/ui/use-paged-view-data.test.js.map +1 -0
  767. package/dist/ui/use-reset-on-change.d.ts +22 -0
  768. package/dist/ui/use-reset-on-change.d.ts.map +1 -0
  769. package/dist/ui/use-reset-on-change.js +29 -0
  770. package/dist/ui/use-reset-on-change.js.map +1 -0
  771. package/dist/ui/use-reset-on-change.test.d.ts +2 -0
  772. package/dist/ui/use-reset-on-change.test.d.ts.map +1 -0
  773. package/dist/ui/use-reset-on-change.test.js +61 -0
  774. package/dist/ui/use-reset-on-change.test.js.map +1 -0
  775. package/dist/ui/use-view-data.seeded.test.d.ts +2 -0
  776. package/dist/ui/use-view-data.seeded.test.d.ts.map +1 -0
  777. package/dist/ui/use-view-data.seeded.test.js +168 -0
  778. package/dist/ui/use-view-data.seeded.test.js.map +1 -0
  779. package/dist/ui/view-data-state.d.ts +52 -0
  780. package/dist/ui/view-data-state.d.ts.map +1 -0
  781. package/dist/ui/view-data-state.js +54 -0
  782. package/dist/ui/view-data-state.js.map +1 -0
  783. package/dist/ui/view-data-state.test.d.ts +2 -0
  784. package/dist/ui/view-data-state.test.d.ts.map +1 -0
  785. package/dist/ui/view-data-state.test.js +62 -0
  786. package/dist/ui/view-data-state.test.js.map +1 -0
  787. package/dist/ui/view-meta.d.ts +70 -0
  788. package/dist/ui/view-meta.d.ts.map +1 -0
  789. package/dist/ui/view-meta.js +84 -0
  790. package/dist/ui/view-meta.js.map +1 -0
  791. package/dist/ui/view-meta.test.d.ts +2 -0
  792. package/dist/ui/view-meta.test.d.ts.map +1 -0
  793. package/dist/ui/view-meta.test.js +92 -0
  794. package/dist/ui/view-meta.test.js.map +1 -0
  795. package/dist/ui/view-refresh-state.d.ts +26 -0
  796. package/dist/ui/view-refresh-state.d.ts.map +1 -0
  797. package/dist/ui/view-refresh-state.js +15 -0
  798. package/dist/ui/view-refresh-state.js.map +1 -0
  799. package/dist/ui/widget-shell.d.ts +24 -0
  800. package/dist/ui/widget-shell.d.ts.map +1 -0
  801. package/dist/ui/widget-shell.js +50 -0
  802. package/dist/ui/widget-shell.js.map +1 -0
  803. package/dist/ui/widget-shell.test.d.ts +2 -0
  804. package/dist/ui/widget-shell.test.d.ts.map +1 -0
  805. package/dist/ui/widget-shell.test.js +41 -0
  806. package/dist/ui/widget-shell.test.js.map +1 -0
  807. package/dist/view-results.d.ts +42 -0
  808. package/dist/view-results.d.ts.map +1 -0
  809. package/dist/view-results.js +17 -0
  810. package/dist/view-results.js.map +1 -0
  811. package/dist/widget-meta-defaults.d.ts +48 -0
  812. package/dist/widget-meta-defaults.d.ts.map +1 -0
  813. package/dist/widget-meta-defaults.js +80 -0
  814. package/dist/widget-meta-defaults.js.map +1 -0
  815. package/dist/widget-meta-defaults.test.d.ts +2 -0
  816. package/dist/widget-meta-defaults.test.d.ts.map +1 -0
  817. package/dist/widget-meta-defaults.test.js +196 -0
  818. package/dist/widget-meta-defaults.test.js.map +1 -0
  819. package/dist/widget-tool-bindings.d.ts +71 -0
  820. package/dist/widget-tool-bindings.d.ts.map +1 -0
  821. package/dist/widget-tool-bindings.js +80 -0
  822. package/dist/widget-tool-bindings.js.map +1 -0
  823. package/dist/widget-tool-bindings.test.d.ts +2 -0
  824. package/dist/widget-tool-bindings.test.d.ts.map +1 -0
  825. package/dist/widget-tool-bindings.test.js +83 -0
  826. package/dist/widget-tool-bindings.test.js.map +1 -0
  827. package/dist/with-tool-errors.test.d.ts +2 -0
  828. package/dist/with-tool-errors.test.d.ts.map +1 -0
  829. package/dist/with-tool-errors.test.js +38 -0
  830. package/dist/with-tool-errors.test.js.map +1 -0
  831. package/package.json +113 -3
@@ -0,0 +1,71 @@
1
+ import { type ProfileRecord } from "./profile-record.js";
2
+ /** One record-level migration: reshapes the raw JSON of its FROM version in place. */
3
+ type ProfileMigration = (raw: Record<string, unknown>) => void;
4
+ /**
5
+ * The oldest record version this build reads as stored — the start of the
6
+ * migration history. No history predates it (#322): records an earlier
7
+ * pre-production build wrote at an older version are ADOPTED at the
8
+ * baseline, never upgraded. Their fields this build does not know (the flat
9
+ * module preferences of v1/v2) stay inert in the raw document — saves keep
10
+ * them, the per-field projection ignores them — so those preferences read as
11
+ * their defaults, while the fields every record has carried (`language`,
12
+ * `modules`) survive. A missing or out-of-range `schemaVersion`
13
+ * reads as the baseline too.
14
+ */
15
+ export declare const PROFILE_MIGRATION_BASELINE = 3;
16
+ /**
17
+ * Record-level migrations, keyed by the version they upgrade FROM: one entry
18
+ * for every version from {@link PROFILE_MIGRATION_BASELINE} up to
19
+ * `PROFILE_SCHEMA_VERSION`, so every `PROFILE_SCHEMA_VERSION` bump adds
20
+ * exactly one entry here and a stored record upgrades on read instead of
21
+ * losing its preferences. Migrations transform the raw JSON — the migrated
22
+ * result still goes through the per-field `projectProfileRecord`, which is
23
+ * the actual gate.
24
+ *
25
+ * Exported ONLY for the completeness test in `profile-migrations.test.ts`,
26
+ * which fails the moment a `PROFILE_SCHEMA_VERSION` bump forgets its entry —
27
+ * without it that mistake would surface as preferences read un-migrated.
28
+ */
29
+ export declare const PROFILE_MIGRATIONS: Readonly<Record<number, ProfileMigration>>;
30
+ /** The history {@link migrateStoredProfile} walks — the shipped one unless a test injects its own. */
31
+ interface ProfileMigrationHistory {
32
+ baseline: number;
33
+ current: number;
34
+ migrations: Readonly<Record<number, ProfileMigration>>;
35
+ }
36
+ /** A stored document after {@link migrateStoredProfile}, plus the version it is now at. */
37
+ export interface MigratedProfileDocument {
38
+ /** A shallow copy of the stored JSON, upgraded as far as the migrations reach. */
39
+ doc: Record<string, unknown>;
40
+ version: number;
41
+ }
42
+ /**
43
+ * Upgrade a persisted profile document of ANY schema version as far as this
44
+ * build can — the RAW half of the read gate, shared by the read path
45
+ * ({@link parseStoredProfile}) and the save path (`mergeStoredProfile`):
46
+ *
47
+ * - a version below the baseline is adopted AT the baseline (see
48
+ * {@link PROFILE_MIGRATION_BASELINE});
49
+ * - from there it upgrades through {@link PROFILE_MIGRATIONS} step by step;
50
+ * - a NEWER version (written by a newer build — rolling deploy, rollback)
51
+ * passes through untouched: an older build never reshapes it;
52
+ * - a missing migration (a build bug the completeness test catches) stops at
53
+ * the stuck version, so a fixed build can still upgrade the document.
54
+ *
55
+ * Unknown keys always survive. `undefined` only for JSON that is no object.
56
+ */
57
+ export declare function migrateStoredProfile(json: unknown, history?: ProfileMigrationHistory): MigratedProfileDocument | undefined;
58
+ /**
59
+ * Parse a persisted profile document into the current typed record — the
60
+ * read gate shared by every store (mirroring the toolkit's tolerant
61
+ * `parseDashboardRecord`): {@link migrateStoredProfile}, then the per-FIELD
62
+ * projection `projectProfileRecord`, so one value this build cannot validate
63
+ * degrades only that field and a newer build's document reads best-effort
64
+ * instead of as "no record" (which the next save would have written defaults
65
+ * over). Pass the store `key` as the record id; without one the stored `id`
66
+ * is used, and a document carrying none reads as `undefined`, like JSON that
67
+ * is no object.
68
+ */
69
+ export declare function parseStoredProfile(json: unknown, key?: string): ProfileRecord | undefined;
70
+ export {};
71
+ //# sourceMappingURL=profile-migrations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profile-migrations.d.ts","sourceRoot":"","sources":["../src/profile-migrations.ts"],"names":[],"mappings":"AACA,OAAO,EAAwB,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAE9E,sFAAsF;AACtF,KAAK,gBAAgB,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAA;AAE9D;;;;;;;;;;GAUG;AACH,eAAO,MAAM,0BAA0B,IAAI,CAAA;AAE3C;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,kBAAkB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAM,CAAA;AAEhF,sGAAsG;AACtG,UAAU,uBAAuB;IAC/B,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAA;CACvD;AAQD,2FAA2F;AAC3F,MAAM,WAAW,uBAAuB;IACtC,kFAAkF;IAClF,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC5B,OAAO,EAAE,MAAM,CAAA;CAChB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,OAAO,EACb,OAAO,GAAE,uBAAyC,GACjD,uBAAuB,GAAG,SAAS,CAuBrC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAKzF"}
@@ -0,0 +1,88 @@
1
+ import { PROFILE_SCHEMA_VERSION } from "./profile-constants.js";
2
+ import { projectProfileRecord } from "./profile-record.js";
3
+ /**
4
+ * The oldest record version this build reads as stored — the start of the
5
+ * migration history. No history predates it (#322): records an earlier
6
+ * pre-production build wrote at an older version are ADOPTED at the
7
+ * baseline, never upgraded. Their fields this build does not know (the flat
8
+ * module preferences of v1/v2) stay inert in the raw document — saves keep
9
+ * them, the per-field projection ignores them — so those preferences read as
10
+ * their defaults, while the fields every record has carried (`language`,
11
+ * `modules`) survive. A missing or out-of-range `schemaVersion`
12
+ * reads as the baseline too.
13
+ */
14
+ export const PROFILE_MIGRATION_BASELINE = 3;
15
+ /**
16
+ * Record-level migrations, keyed by the version they upgrade FROM: one entry
17
+ * for every version from {@link PROFILE_MIGRATION_BASELINE} up to
18
+ * `PROFILE_SCHEMA_VERSION`, so every `PROFILE_SCHEMA_VERSION` bump adds
19
+ * exactly one entry here and a stored record upgrades on read instead of
20
+ * losing its preferences. Migrations transform the raw JSON — the migrated
21
+ * result still goes through the per-field `projectProfileRecord`, which is
22
+ * the actual gate.
23
+ *
24
+ * Exported ONLY for the completeness test in `profile-migrations.test.ts`,
25
+ * which fails the moment a `PROFILE_SCHEMA_VERSION` bump forgets its entry —
26
+ * without it that mistake would surface as preferences read un-migrated.
27
+ */
28
+ export const PROFILE_MIGRATIONS = {};
29
+ const SHIPPED_HISTORY = {
30
+ baseline: PROFILE_MIGRATION_BASELINE,
31
+ current: PROFILE_SCHEMA_VERSION,
32
+ migrations: PROFILE_MIGRATIONS,
33
+ };
34
+ /**
35
+ * Upgrade a persisted profile document of ANY schema version as far as this
36
+ * build can — the RAW half of the read gate, shared by the read path
37
+ * ({@link parseStoredProfile}) and the save path (`mergeStoredProfile`):
38
+ *
39
+ * - a version below the baseline is adopted AT the baseline (see
40
+ * {@link PROFILE_MIGRATION_BASELINE});
41
+ * - from there it upgrades through {@link PROFILE_MIGRATIONS} step by step;
42
+ * - a NEWER version (written by a newer build — rolling deploy, rollback)
43
+ * passes through untouched: an older build never reshapes it;
44
+ * - a missing migration (a build bug the completeness test catches) stops at
45
+ * the stuck version, so a fixed build can still upgrade the document.
46
+ *
47
+ * Unknown keys always survive. `undefined` only for JSON that is no object.
48
+ */
49
+ export function migrateStoredProfile(json, history = SHIPPED_HISTORY) {
50
+ if (typeof json !== "object" || json === null || Array.isArray(json))
51
+ return undefined;
52
+ const doc = { ...json };
53
+ const { baseline, current, migrations } = history;
54
+ const rawVersion = doc.schemaVersion;
55
+ // `Number.isInteger` is false for anything but an integer NUMBER.
56
+ let version = Number.isInteger(rawVersion) ? Math.max(rawVersion, baseline) : baseline;
57
+ doc.schemaVersion = version;
58
+ while (version < current) {
59
+ const migrate = migrations[version];
60
+ if (!migrate) {
61
+ console.error(`[widget-shell] No profile migration from schema v${version} — reading the stored record best-effort and keeping it un-migrated`);
62
+ break;
63
+ }
64
+ migrate(doc);
65
+ version += 1;
66
+ doc.schemaVersion = version;
67
+ }
68
+ return { doc, version };
69
+ }
70
+ /**
71
+ * Parse a persisted profile document into the current typed record — the
72
+ * read gate shared by every store (mirroring the toolkit's tolerant
73
+ * `parseDashboardRecord`): {@link migrateStoredProfile}, then the per-FIELD
74
+ * projection `projectProfileRecord`, so one value this build cannot validate
75
+ * degrades only that field and a newer build's document reads best-effort
76
+ * instead of as "no record" (which the next save would have written defaults
77
+ * over). Pass the store `key` as the record id; without one the stored `id`
78
+ * is used, and a document carrying none reads as `undefined`, like JSON that
79
+ * is no object.
80
+ */
81
+ export function parseStoredProfile(json, key) {
82
+ const migrated = migrateStoredProfile(json);
83
+ if (!migrated)
84
+ return undefined;
85
+ const id = key ?? (typeof migrated.doc.id === "string" ? migrated.doc.id : undefined);
86
+ return id === undefined ? undefined : projectProfileRecord(migrated.doc, id);
87
+ }
88
+ //# sourceMappingURL=profile-migrations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profile-migrations.js","sourceRoot":"","sources":["../src/profile-migrations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAA;AAC/D,OAAO,EAAE,oBAAoB,EAAsB,MAAM,qBAAqB,CAAA;AAK9E;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAA;AAE3C;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAA+C,EAAE,CAAA;AAShF,MAAM,eAAe,GAA4B;IAC/C,QAAQ,EAAE,0BAA0B;IACpC,OAAO,EAAE,sBAAsB;IAC/B,UAAU,EAAE,kBAAkB;CAC/B,CAAA;AASD;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,oBAAoB,CAClC,IAAa,EACb,UAAmC,eAAe;IAElD,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QAAE,OAAO,SAAS,CAAA;IACtF,MAAM,GAAG,GAA4B,EAAE,GAAI,IAAgC,EAAE,CAAA;IAE7E,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,OAAO,CAAA;IACjD,MAAM,UAAU,GAAG,GAAG,CAAC,aAAa,CAAA;IACpC,kEAAkE;IAClE,IAAI,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,UAAoB,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAA;IAChG,GAAG,CAAC,aAAa,GAAG,OAAO,CAAA;IAE3B,OAAO,OAAO,GAAG,OAAO,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,CAAA;QACnC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CACX,oDAAoD,OAAO,qEAAqE,CACjI,CAAA;YACD,MAAK;QACP,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,CAAA;QACZ,OAAO,IAAI,CAAC,CAAA;QACZ,GAAG,CAAC,aAAa,GAAG,OAAO,CAAA;IAC7B,CAAC;IACD,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,CAAA;AACzB,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAa,EAAE,GAAY;IAC5D,MAAM,QAAQ,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAA;IAC3C,IAAI,CAAC,QAAQ;QAAE,OAAO,SAAS,CAAA;IAC/B,MAAM,EAAE,GAAG,GAAG,IAAI,CAAC,OAAO,QAAQ,CAAC,GAAG,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;IACrF,OAAO,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,oBAAoB,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;AAC9E,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=profile-migrations.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profile-migrations.test.d.ts","sourceRoot":"","sources":["../src/profile-migrations.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,200 @@
1
+ import { afterEach, describe, expect, it, vi } from "vitest";
2
+ import { PROFILE_MIGRATION_BASELINE, PROFILE_MIGRATIONS, migrateStoredProfile, parseStoredProfile, } from "./profile-migrations.js";
3
+ import { PROFILE_SCHEMA_VERSION } from "./profile-constants.js";
4
+ afterEach(() => {
5
+ vi.restoreAllMocks();
6
+ });
7
+ const CURRENT = {
8
+ id: "user-1",
9
+ language: "de",
10
+ modules: { analytics: { defaultPeriod: "14d" }, camunda7: { defaultEngineId: "prod-a" } },
11
+ createdAt: "2026-01-01T00:00:00.000Z",
12
+ updatedAt: "2026-01-02T00:00:00.000Z",
13
+ schemaVersion: PROFILE_SCHEMA_VERSION,
14
+ };
15
+ /** Shapes the pre-production builds persisted before the baseline: flat module fields. */
16
+ const V1_RECORD = {
17
+ id: "user-1",
18
+ language: "de",
19
+ theme: "dark",
20
+ pinnedDashboardIds: ["d1"],
21
+ analyticsDefaultPeriod: "30d",
22
+ analyticsMinBucketSize: 25,
23
+ createdAt: "2026-01-01T00:00:00.000Z",
24
+ updatedAt: "2026-01-02T00:00:00.000Z",
25
+ schemaVersion: 1,
26
+ };
27
+ const V2_RECORD = {
28
+ id: "user-1",
29
+ language: "de",
30
+ theme: "dark",
31
+ defaultEngineId: "prod-a",
32
+ allowedEngineIds: ["prod-a"],
33
+ modules: { analytics: { defaultPeriod: "14d" } },
34
+ createdAt: "2026-01-01T00:00:00.000Z",
35
+ updatedAt: "2026-01-02T00:00:00.000Z",
36
+ schemaVersion: 2,
37
+ };
38
+ /**
39
+ * The baseline as shipped, pinned HERE rather than read from the export: the
40
+ * completeness range below starts at it, so a baseline raised in step with a
41
+ * `PROFILE_SCHEMA_VERSION` bump would empty that range and let the bump pass
42
+ * without its migration — every stored record of the old version would then
43
+ * be adopted at the new one without its reshape. Moving the baseline drops
44
+ * migration history, which is an owner decision of its own, never part of a
45
+ * schema bump.
46
+ */
47
+ const SHIPPED_BASELINE = 3;
48
+ describe("PROFILE_MIGRATIONS completeness", () => {
49
+ it("keeps the migration baseline where it shipped", () => {
50
+ expect(PROFILE_MIGRATION_BASELINE).toBe(SHIPPED_BASELINE);
51
+ });
52
+ it("carries an entry for every version from the baseline up to PROFILE_SCHEMA_VERSION", () => {
53
+ // The failure mode this guards: a PROFILE_SCHEMA_VERSION bump without its
54
+ // migration entry ships, and every stored record reads un-migrated.
55
+ const expected = Array.from({ length: PROFILE_SCHEMA_VERSION - SHIPPED_BASELINE }, (_, i) => SHIPPED_BASELINE + i);
56
+ const actual = Object.keys(PROFILE_MIGRATIONS)
57
+ .map(Number)
58
+ .sort((a, b) => a - b);
59
+ expect(actual).toEqual(expected);
60
+ });
61
+ });
62
+ describe("parseStoredProfile", () => {
63
+ it("passes a current-version record through unchanged", () => {
64
+ expect(parseStoredProfile(CURRENT)).toEqual(CURRENT);
65
+ });
66
+ // No migration history predates the baseline (#322): an older record is
67
+ // adopted, never upgraded — and must still read without an error.
68
+ it.each([
69
+ ["v1", V1_RECORD, {}],
70
+ ["v2", V2_RECORD, V2_RECORD.modules],
71
+ ])("reads a %s record from before the baseline fail-soft: its flat fields drop to the defaults", (_, stored, modules) => {
72
+ const error = vi.spyOn(console, "error").mockImplementation(() => { });
73
+ expect(parseStoredProfile(stored)).toEqual({
74
+ id: "user-1",
75
+ language: "de",
76
+ modules,
77
+ createdAt: stored.createdAt,
78
+ updatedAt: stored.updatedAt,
79
+ schemaVersion: PROFILE_SCHEMA_VERSION,
80
+ });
81
+ expect(error).not.toHaveBeenCalled();
82
+ });
83
+ it("reads a missing or out-of-range schemaVersion as the baseline", () => {
84
+ const versionless = { ...CURRENT };
85
+ delete versionless.schemaVersion;
86
+ expect(parseStoredProfile(versionless)).toEqual(CURRENT);
87
+ expect(parseStoredProfile({ ...CURRENT, schemaVersion: 0 })).toEqual(CURRENT);
88
+ expect(parseStoredProfile({ ...CURRENT, schemaVersion: 2.5 })).toEqual(CURRENT);
89
+ });
90
+ it("reads a record from a NEWER build best-effort, without running any migration", () => {
91
+ const parsed = parseStoredProfile({
92
+ ...CURRENT,
93
+ newCoreField: true,
94
+ schemaVersion: PROFILE_SCHEMA_VERSION + 1,
95
+ });
96
+ // Untouched: a newer build's document is never reshaped by an older one.
97
+ expect(parsed).toEqual(CURRENT);
98
+ });
99
+ it("reads a record with the retired theme preference: the key never reaches the view", () => {
100
+ // Widgets follow the host's theme; a `theme` an earlier build saved is
101
+ // an unknown key now — no migration, no error, no reset of the rest.
102
+ expect(parseStoredProfile({ ...CURRENT, theme: "dark" })).toEqual(CURRENT);
103
+ expect(parseStoredProfile({ ...CURRENT, theme: 42 })).toEqual(CURRENT);
104
+ });
105
+ it("keeps the system language preference — following the host is a stored choice", () => {
106
+ expect(parseStoredProfile({ ...CURRENT, language: "system" })?.language).toBe("system");
107
+ });
108
+ it("degrades an invalid field to ITS default and keeps every other field", () => {
109
+ // The language default is `system` (follow the host), never a forced locale.
110
+ expect(parseStoredProfile({ ...CURRENT, language: "fr" })).toMatchObject({
111
+ language: "system",
112
+ modules: CURRENT.modules,
113
+ });
114
+ expect(parseStoredProfile({ ...CURRENT, userId: 7 })).toMatchObject({
115
+ language: "de",
116
+ modules: CURRENT.modules,
117
+ userId: undefined,
118
+ });
119
+ expect(parseStoredProfile({ ...CURRENT, modules: "garbage" })?.modules).toEqual({});
120
+ });
121
+ it("prefers the store key over the stored id and repairs missing timestamps", () => {
122
+ expect(parseStoredProfile(CURRENT, "other-key")?.id).toBe("other-key");
123
+ const sparse = parseStoredProfile({ schemaVersion: 3 }, "k");
124
+ expect(sparse).toMatchObject({ id: "k", language: "system", modules: {} });
125
+ expect(sparse?.createdAt).toBe(sparse?.updatedAt);
126
+ expect(parseStoredProfile({ schemaVersion: 3, updatedAt: "2026-02-02T00:00:00.000Z" }, "k")).toMatchObject({
127
+ createdAt: "2026-02-02T00:00:00.000Z",
128
+ updatedAt: "2026-02-02T00:00:00.000Z",
129
+ });
130
+ });
131
+ it("reads garbage as absent", () => {
132
+ expect(parseStoredProfile(null)).toBeUndefined();
133
+ expect(parseStoredProfile("nope")).toBeUndefined();
134
+ expect(parseStoredProfile(["an", "array"])).toBeUndefined();
135
+ // No id stored (or none that is a string) and no store key to fall back to.
136
+ expect(parseStoredProfile({ schemaVersion: 0 })).toBeUndefined();
137
+ expect(parseStoredProfile({ ...CURRENT, id: 42 })).toBeUndefined();
138
+ });
139
+ });
140
+ describe("migrateStoredProfile", () => {
141
+ it("adopts a pre-baseline document at the baseline, keeping its unknown keys raw", () => {
142
+ expect(migrateStoredProfile(V1_RECORD)).toEqual({
143
+ doc: { ...V1_RECORD, schemaVersion: PROFILE_MIGRATION_BASELINE },
144
+ version: PROFILE_MIGRATION_BASELINE,
145
+ });
146
+ });
147
+ it("reports the version the document ends at", () => {
148
+ expect(migrateStoredProfile(CURRENT)?.version).toBe(PROFILE_SCHEMA_VERSION);
149
+ expect(migrateStoredProfile({ ...CURRENT, schemaVersion: 42 })?.version).toBe(42);
150
+ // Anything but an integer number reads as the baseline — never NaN.
151
+ for (const schemaVersion of [undefined, "4", 4.5, null]) {
152
+ expect(migrateStoredProfile({ ...CURRENT, schemaVersion })?.version).toBe(PROFILE_MIGRATION_BASELINE);
153
+ }
154
+ expect(migrateStoredProfile(undefined)).toBeUndefined();
155
+ expect(migrateStoredProfile(null)).toBeUndefined();
156
+ expect(migrateStoredProfile([CURRENT])).toBeUndefined();
157
+ });
158
+ it("never mutates the stored JSON it was handed", () => {
159
+ const stored = { ...V1_RECORD };
160
+ const snapshot = structuredClone(stored);
161
+ migrateStoredProfile(stored);
162
+ expect(stored).toEqual(snapshot);
163
+ });
164
+ // The walk itself, against a synthetic history: the shipped one has no
165
+ // step yet (the baseline IS the current version), but the next
166
+ // PROFILE_SCHEMA_VERSION bump runs exactly this loop.
167
+ const history = {
168
+ baseline: 1,
169
+ current: 3,
170
+ migrations: {
171
+ 1: (raw) => {
172
+ raw.steps = [...(raw.steps ?? []), 1];
173
+ },
174
+ 2: (raw) => {
175
+ raw.steps = [...(raw.steps ?? []), 2];
176
+ },
177
+ },
178
+ };
179
+ it("upgrades step by step from the stored version, stamping each step", () => {
180
+ expect(migrateStoredProfile({ schemaVersion: 1 }, history)).toEqual({
181
+ doc: { schemaVersion: 3, steps: [1, 2] },
182
+ version: 3,
183
+ });
184
+ expect(migrateStoredProfile({ schemaVersion: 2 }, history)).toEqual({
185
+ doc: { schemaVersion: 3, steps: [2] },
186
+ version: 3,
187
+ });
188
+ });
189
+ it("stops at a version without its step (a build bug) and keeps the document there", () => {
190
+ const error = vi.spyOn(console, "error").mockImplementation(() => { });
191
+ const gap = { ...history, migrations: { 1: history.migrations[1] } };
192
+ expect(migrateStoredProfile({ schemaVersion: 1 }, gap)).toEqual({
193
+ doc: { schemaVersion: 2, steps: [1] },
194
+ version: 2,
195
+ });
196
+ expect(error).toHaveBeenCalledTimes(1);
197
+ expect(error).toHaveBeenCalledWith(expect.stringContaining("No profile migration from schema v2"));
198
+ });
199
+ });
200
+ //# sourceMappingURL=profile-migrations.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profile-migrations.test.js","sourceRoot":"","sources":["../src/profile-migrations.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,60 @@
1
+ import { z } from "zod";
2
+ import { type LanguagePref } from "./profile-constants.js";
3
+ /**
4
+ * The persisted profile record — deliberately connector-free: the
5
+ * cross-module preference every module may read (`language`), the per-module
6
+ * `modules.<module>` slice transport, and server-managed metadata. There is
7
+ * no theme preference: widgets follow the host's theme. A record an earlier
8
+ * build saved with a `theme` still reads — the key is unknown here, stays in
9
+ * the raw document and never reaches the typed view.
10
+ * Everything a connector wants to persist lives in ITS slice (validated
11
+ * fail-soft by the owning module), never as a new top-level field here.
12
+ *
13
+ * `id` is the profile key (the OAuth caller's id, or `anonymous` for an
14
+ * explicitly declared local caller — see `resolveProfileKey` in `profile.ts`);
15
+ * `userId` is the owner a save stamped (absent on the anonymous record).
16
+ */
17
+ export declare const profileRecordSchema: z.ZodObject<{
18
+ language: z.ZodDefault<z.ZodEnum<{
19
+ en: "en";
20
+ de: "de";
21
+ system: "system";
22
+ }>>;
23
+ modules: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
24
+ id: z.ZodString;
25
+ userId: z.ZodOptional<z.ZodString>;
26
+ createdAt: z.ZodString;
27
+ updatedAt: z.ZodString;
28
+ schemaVersion: z.ZodDefault<z.ZodLiteral<3>>;
29
+ }, z.core.$strip>;
30
+ export type ProfileRecord = z.infer<typeof profileRecordSchema>;
31
+ /**
32
+ * Save input: any subset of the record's user-settable fields. Omitted fields
33
+ * keep their current value (the store merges over the existing record);
34
+ * `modules` slices merge per module key, one level deep — a save carrying
35
+ * `modules.analytics` spreads over the stored analytics slice (explicit
36
+ * `undefined` clears a field) and leaves other modules' slices untouched.
37
+ *
38
+ * A plain type, not a zod schema: validation happens at each module's TOOL
39
+ * boundary (with a default-free schema — see `withoutDefaults` in
40
+ * `profile.ts`), not in the store.
41
+ */
42
+ export interface ProfileRecordSaveInput {
43
+ language?: LanguagePref;
44
+ modules?: Record<string, unknown>;
45
+ }
46
+ /** A fully-defaulted record for a key that has never been saved. */
47
+ export declare function defaultProfileRecord(key: string): ProfileRecord;
48
+ /**
49
+ * The typed VIEW of a stored profile document (current-shape, or written by a
50
+ * NEWER build), degrading per FIELD: a value this build cannot validate — a
51
+ * locale added later, a non-object `modules` — falls back to that field's
52
+ * default while everything else survives. Keys this build does not know are
53
+ * not part of the view, but they stay in the stored document: saves merge over
54
+ * the RAW document (`mergeStoredProfile` in `profile-store.ts`), never over
55
+ * this projection. Timestamps a hand-edited document lacks fall back to each
56
+ * other, then to `""` (the next save stamps both). `id` is the caller's (the
57
+ * store key wins).
58
+ */
59
+ export declare function projectProfileRecord(doc: Record<string, unknown>, id: string): ProfileRecord;
60
+ //# sourceMappingURL=profile-record.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profile-record.d.ts","sourceRoot":"","sources":["../src/profile-record.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAqC,KAAK,YAAY,EAAE,MAAM,wBAAwB,CAAA;AAE7F;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;iBAoB9B,CAAA;AAEF,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAA;AAE/D;;;;;;;;;;GAUG;AACH,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,EAAE,YAAY,CAAA;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAClC;AAED,oEAAoE;AACpE,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,CAS/D;AAWD;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAAE,EAAE,MAAM,GAAG,aAAa,CAc5F"}
@@ -0,0 +1,78 @@
1
+ import { z } from "zod";
2
+ import { LANGUAGES, PROFILE_SCHEMA_VERSION } from "./profile-constants.js";
3
+ /**
4
+ * The persisted profile record — deliberately connector-free: the
5
+ * cross-module preference every module may read (`language`), the per-module
6
+ * `modules.<module>` slice transport, and server-managed metadata. There is
7
+ * no theme preference: widgets follow the host's theme. A record an earlier
8
+ * build saved with a `theme` still reads — the key is unknown here, stays in
9
+ * the raw document and never reaches the typed view.
10
+ * Everything a connector wants to persist lives in ITS slice (validated
11
+ * fail-soft by the owning module), never as a new top-level field here.
12
+ *
13
+ * `id` is the profile key (the OAuth caller's id, or `anonymous` for an
14
+ * explicitly declared local caller — see `resolveProfileKey` in `profile.ts`);
15
+ * `userId` is the owner a save stamped (absent on the anonymous record).
16
+ */
17
+ export const profileRecordSchema = z.object({
18
+ language: z
19
+ .enum(LANGUAGES)
20
+ .default("system")
21
+ .describe('UI + summary language; "system" follows the host locale (summaries then stay English).'),
22
+ modules: z
23
+ .record(z.string(), z.unknown())
24
+ .default({})
25
+ .describe("Per-module settings slices, keyed by module name (e.g. `analytics`, `camunda7`). Each " +
26
+ "module owns its slice's schema, validates it fail-soft on read, and writes it through " +
27
+ "its own save tool — this record only transports the slices."),
28
+ id: z.string(),
29
+ userId: z.string().optional(),
30
+ createdAt: z.string(),
31
+ updatedAt: z.string(),
32
+ schemaVersion: z.literal(PROFILE_SCHEMA_VERSION).default(PROFILE_SCHEMA_VERSION),
33
+ });
34
+ /** A fully-defaulted record for a key that has never been saved. */
35
+ export function defaultProfileRecord(key) {
36
+ const now = new Date().toISOString();
37
+ return {
38
+ ...profileRecordSchema.omit({ id: true, createdAt: true, updatedAt: true }).parse({}),
39
+ id: key,
40
+ userId: undefined,
41
+ createdAt: now,
42
+ updatedAt: now,
43
+ };
44
+ }
45
+ const nonEmptyString = (value) => typeof value === "string" && value.length > 0 ? value : undefined;
46
+ /** The field's own value when it validates, else the field's default. */
47
+ function fieldOrDefault(schema, value) {
48
+ const parsed = schema.safeParse(value);
49
+ return parsed.success ? parsed.data : schema.parse(undefined);
50
+ }
51
+ /**
52
+ * The typed VIEW of a stored profile document (current-shape, or written by a
53
+ * NEWER build), degrading per FIELD: a value this build cannot validate — a
54
+ * locale added later, a non-object `modules` — falls back to that field's
55
+ * default while everything else survives. Keys this build does not know are
56
+ * not part of the view, but they stay in the stored document: saves merge over
57
+ * the RAW document (`mergeStoredProfile` in `profile-store.ts`), never over
58
+ * this projection. Timestamps a hand-edited document lacks fall back to each
59
+ * other, then to `""` (the next save stamps both). `id` is the caller's (the
60
+ * store key wins).
61
+ */
62
+ export function projectProfileRecord(doc, id) {
63
+ const whole = profileRecordSchema.safeParse(doc);
64
+ if (whole.success)
65
+ return { ...whole.data, id };
66
+ const { shape } = profileRecordSchema;
67
+ const updatedAt = nonEmptyString(doc.updatedAt) ?? nonEmptyString(doc.createdAt) ?? "";
68
+ return {
69
+ language: fieldOrDefault(shape.language, doc.language),
70
+ modules: fieldOrDefault(shape.modules, doc.modules),
71
+ id,
72
+ userId: fieldOrDefault(shape.userId, doc.userId),
73
+ createdAt: nonEmptyString(doc.createdAt) ?? updatedAt,
74
+ updatedAt,
75
+ schemaVersion: PROFILE_SCHEMA_VERSION,
76
+ };
77
+ }
78
+ //# sourceMappingURL=profile-record.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profile-record.js","sourceRoot":"","sources":["../src/profile-record.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ import type { z } from "zod";
2
+ import type { ProfileSource } from "./profile.js";
3
+ /**
4
+ * The `profile.modules.<module>` slice contract, shared by every module so
5
+ * the subtle rules cannot drift: WHOSE record a save touches (the canonical
6
+ * keyless refusal), HOW a slice patch is saved (the patch alone, merged by
7
+ * the store over the RAW stored slice under its lock, so foreign and
8
+ * concurrently saved fields survive), and HOW a slice reads (fail-soft per
9
+ * FIELD, so one bad value cannot reset the rest).
10
+ */
11
+ /**
12
+ * Fail-soft slice read: absent slices and garbage degrade to the schema's
13
+ * defaults — and degradation is per FIELD, not per slice: a single invalid
14
+ * value (say, one written by a newer build and then rolled back) drops to its
15
+ * own default while every other saved preference survives. Fields the schema
16
+ * doesn't know stay out of the VIEW but are preserved in storage: a save
17
+ * ({@link saveModuleSlice}) merges over the raw stored slice.
18
+ *
19
+ * Read-side only — save inputs keep validating loudly at the tool boundary;
20
+ * a write must never silently coerce.
21
+ */
22
+ export declare function parseModuleSlice<T extends z.ZodRawShape>(schema: z.ZodObject<T>, slice: unknown): z.output<z.ZodObject<T>>;
23
+ /**
24
+ * Resolve the profile key for a durable write, refusing without one. Settings
25
+ * are saved per signed-in user: a request without OAuth resolves no key (see
26
+ * `resolveProfileKey`) — writing anyway would silently share one record across
27
+ * unrelated callers, so every module's save tool throws this same,
28
+ * operator-actionable error instead.
29
+ */
30
+ export declare function requireProfileKey(ctx?: unknown): string;
31
+ /**
32
+ * Persist a partial update of `module`'s slice: hand the store the PATCH
33
+ * alone, never a slice pre-read outside the store's lock. Every
34
+ * `ProfileStore` merges a `modules.<module>` patch one level deep over the
35
+ * RAW stored slice INSIDE its per-key serialization (the postgres
36
+ * transaction lock, the filesystem store's per-key mutex, the in-memory
37
+ * store's synchronous merge), so a concurrent save of another field in the
38
+ * same slice (or of another module's slice) survives, fields a newer build
39
+ * wrote survive, and no defaults are materialized into storage. A field set
40
+ * to `undefined` in the patch CLEARS the stored value; an absent field keeps
41
+ * it.
42
+ *
43
+ * Returns the saved slice, raw (the caller parses it fail-soft for its
44
+ * report): read off the record `save` returns (every shipped store returns
45
+ * it), or read back when a custom port implementation returns nothing.
46
+ */
47
+ export declare function saveModuleSlice(store: {
48
+ get: ProfileSource["get"];
49
+ save: NonNullable<ProfileSource["save"]>;
50
+ }, key: string, module: string, patch: Record<string, unknown>, opts?: {
51
+ userId?: string;
52
+ }): Promise<unknown>;
53
+ //# sourceMappingURL=profile-slice.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profile-slice.d.ts","sourceRoot":"","sources":["../src/profile-slice.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAE5B,OAAO,KAAK,EAAgB,aAAa,EAAE,MAAM,cAAc,CAAA;AAE/D;;;;;;;GAOG;AAEH;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,CAAC,CAAC,WAAW,EACtD,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EACtB,KAAK,EAAE,OAAO,GACb,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAY1B;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,CAAC,EAAE,OAAO,GAAG,MAAM,CAQvD;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,eAAe,CACnC,KAAK,EAAE;IAAE,GAAG,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC;IAAC,IAAI,EAAE,WAAW,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAA;CAAE,EAC9E,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,IAAI,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GACzB,OAAO,CAAC,OAAO,CAAC,CAIlB"}