@platforma-sdk/model 1.58.5 → 1.58.11

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 (365) hide show
  1. package/dist/_virtual/_rolldown/runtime.cjs +43 -0
  2. package/dist/_virtual/_rolldown/runtime.js +18 -0
  3. package/dist/annotations/converter.cjs +15 -20
  4. package/dist/annotations/converter.cjs.map +1 -1
  5. package/dist/annotations/converter.d.ts +6 -2
  6. package/dist/annotations/converter.js +14 -18
  7. package/dist/annotations/converter.js.map +1 -1
  8. package/dist/annotations/index.cjs +1 -0
  9. package/dist/annotations/index.d.ts +2 -3
  10. package/dist/annotations/index.js +1 -0
  11. package/dist/annotations/types.d.ts +21 -16
  12. package/dist/bconfig/index.cjs +2 -0
  13. package/dist/bconfig/index.d.ts +5 -6
  14. package/dist/bconfig/index.js +2 -0
  15. package/dist/bconfig/lambdas.d.ts +52 -52
  16. package/dist/bconfig/normalization.cjs +13 -18
  17. package/dist/bconfig/normalization.cjs.map +1 -1
  18. package/dist/bconfig/normalization.d.ts +10 -6
  19. package/dist/bconfig/normalization.js +12 -16
  20. package/dist/bconfig/normalization.js.map +1 -1
  21. package/dist/bconfig/types.cjs +4 -3
  22. package/dist/bconfig/types.cjs.map +1 -1
  23. package/dist/bconfig/types.d.ts +10 -5
  24. package/dist/bconfig/types.js +4 -2
  25. package/dist/bconfig/types.js.map +1 -1
  26. package/dist/bconfig/util.d.ts +7 -4
  27. package/dist/bconfig/v3.d.ts +10 -6
  28. package/dist/block_api_v1.d.ts +62 -58
  29. package/dist/block_api_v2.d.ts +51 -47
  30. package/dist/block_api_v3.d.ts +33 -29
  31. package/dist/block_migrations.cjs +481 -413
  32. package/dist/block_migrations.cjs.map +1 -1
  33. package/dist/block_migrations.d.ts +258 -204
  34. package/dist/block_migrations.js +482 -408
  35. package/dist/block_migrations.js.map +1 -1
  36. package/dist/block_model.cjs +312 -343
  37. package/dist/block_model.cjs.map +1 -1
  38. package/dist/block_model.d.ts +143 -147
  39. package/dist/block_model.js +312 -341
  40. package/dist/block_model.js.map +1 -1
  41. package/dist/block_model_legacy.cjs +231 -255
  42. package/dist/block_model_legacy.cjs.map +1 -1
  43. package/dist/block_model_legacy.d.ts +108 -106
  44. package/dist/block_model_legacy.js +231 -253
  45. package/dist/block_model_legacy.js.map +1 -1
  46. package/dist/block_state_patch.d.ts +10 -10
  47. package/dist/block_state_util.cjs +15 -19
  48. package/dist/block_state_util.cjs.map +1 -1
  49. package/dist/block_state_util.d.ts +14 -13
  50. package/dist/block_state_util.js +15 -18
  51. package/dist/block_state_util.js.map +1 -1
  52. package/dist/block_storage.cjs +233 -238
  53. package/dist/block_storage.cjs.map +1 -1
  54. package/dist/block_storage.d.ts +62 -78
  55. package/dist/block_storage.js +234 -237
  56. package/dist/block_storage.js.map +1 -1
  57. package/dist/block_storage_callbacks.cjs +156 -195
  58. package/dist/block_storage_callbacks.cjs.map +1 -1
  59. package/dist/block_storage_callbacks.js +156 -192
  60. package/dist/block_storage_callbacks.js.map +1 -1
  61. package/dist/block_storage_facade.cjs +29 -85
  62. package/dist/block_storage_facade.cjs.map +1 -1
  63. package/dist/block_storage_facade.d.ts +83 -126
  64. package/dist/block_storage_facade.js +29 -83
  65. package/dist/block_storage_facade.js.map +1 -1
  66. package/dist/components/PFrameForGraphs.cjs +26 -24
  67. package/dist/components/PFrameForGraphs.cjs.map +1 -1
  68. package/dist/components/PFrameForGraphs.d.ts +12 -7
  69. package/dist/components/PFrameForGraphs.js +25 -22
  70. package/dist/components/PFrameForGraphs.js.map +1 -1
  71. package/dist/components/PlAnnotations/filter.d.ts +62 -79
  72. package/dist/components/PlAnnotations/filters_ui.cjs +135 -171
  73. package/dist/components/PlAnnotations/filters_ui.cjs.map +1 -1
  74. package/dist/components/PlAnnotations/filters_ui.d.ts +48 -46
  75. package/dist/components/PlAnnotations/filters_ui.js +135 -170
  76. package/dist/components/PlAnnotations/filters_ui.js.map +1 -1
  77. package/dist/components/PlAnnotations/index.d.ts +2 -3
  78. package/dist/components/PlDataTable/index.cjs +2 -0
  79. package/dist/components/PlDataTable/index.d.ts +3 -5
  80. package/dist/components/PlDataTable/index.js +2 -0
  81. package/dist/components/PlDataTable/labels.cjs +59 -81
  82. package/dist/components/PlDataTable/labels.cjs.map +1 -1
  83. package/dist/components/PlDataTable/labels.js +58 -79
  84. package/dist/components/PlDataTable/labels.js.map +1 -1
  85. package/dist/components/PlDataTable/state-migration.cjs +186 -144
  86. package/dist/components/PlDataTable/state-migration.cjs.map +1 -1
  87. package/dist/components/PlDataTable/state-migration.d.ts +85 -82
  88. package/dist/components/PlDataTable/state-migration.js +185 -142
  89. package/dist/components/PlDataTable/state-migration.js.map +1 -1
  90. package/dist/components/PlDataTable/table.cjs +172 -194
  91. package/dist/components/PlDataTable/table.cjs.map +1 -1
  92. package/dist/components/PlDataTable/table.d.ts +16 -12
  93. package/dist/components/PlDataTable/table.js +171 -192
  94. package/dist/components/PlDataTable/table.js.map +1 -1
  95. package/dist/components/PlDataTable/v4.d.ts +84 -119
  96. package/dist/components/PlDataTable/v5.d.ts +80 -103
  97. package/dist/components/PlMultiSequenceAlignment.cjs +27 -29
  98. package/dist/components/PlMultiSequenceAlignment.cjs.map +1 -1
  99. package/dist/components/PlMultiSequenceAlignment.d.ts +36 -27
  100. package/dist/components/PlMultiSequenceAlignment.js +26 -27
  101. package/dist/components/PlMultiSequenceAlignment.js.map +1 -1
  102. package/dist/components/PlSelectionModel.cjs +7 -6
  103. package/dist/components/PlSelectionModel.cjs.map +1 -1
  104. package/dist/components/PlSelectionModel.d.ts +10 -8
  105. package/dist/components/PlSelectionModel.js +7 -5
  106. package/dist/components/PlSelectionModel.js.map +1 -1
  107. package/dist/components/index.cjs +8 -0
  108. package/dist/components/index.d.ts +11 -6
  109. package/dist/components/index.js +8 -0
  110. package/dist/config/actions.cjs +138 -171
  111. package/dist/config/actions.cjs.map +1 -1
  112. package/dist/config/actions.d.ts +47 -47
  113. package/dist/config/actions.js +146 -178
  114. package/dist/config/actions.js.map +1 -1
  115. package/dist/config/actions_kinds.d.ts +114 -121
  116. package/dist/config/index.cjs +1 -0
  117. package/dist/config/index.d.ts +6 -7
  118. package/dist/config/index.js +1 -0
  119. package/dist/config/model.d.ts +131 -127
  120. package/dist/config/model_meta.d.ts +4 -1
  121. package/dist/config/type_engine.d.ts +22 -21
  122. package/dist/config/type_util.d.ts +12 -10
  123. package/dist/env_value.cjs +5 -6
  124. package/dist/env_value.cjs.map +1 -1
  125. package/dist/env_value.d.ts +4 -1
  126. package/dist/env_value.js +5 -5
  127. package/dist/env_value.js.map +1 -1
  128. package/dist/filters/converters/filterToQuery.cjs +273 -239
  129. package/dist/filters/converters/filterToQuery.cjs.map +1 -1
  130. package/dist/filters/converters/filterToQuery.d.ts +6 -2
  131. package/dist/filters/converters/filterToQuery.js +272 -237
  132. package/dist/filters/converters/filterToQuery.js.map +1 -1
  133. package/dist/filters/converters/filterUiToExpressionImpl.cjs +56 -85
  134. package/dist/filters/converters/filterUiToExpressionImpl.cjs.map +1 -1
  135. package/dist/filters/converters/filterUiToExpressionImpl.d.ts +8 -4
  136. package/dist/filters/converters/filterUiToExpressionImpl.js +55 -83
  137. package/dist/filters/converters/filterUiToExpressionImpl.js.map +1 -1
  138. package/dist/filters/converters/index.cjs +2 -0
  139. package/dist/filters/converters/index.d.ts +2 -3
  140. package/dist/filters/converters/index.js +2 -0
  141. package/dist/filters/distill.cjs +59 -60
  142. package/dist/filters/distill.cjs.map +1 -1
  143. package/dist/filters/distill.d.ts +6 -3
  144. package/dist/filters/distill.js +58 -58
  145. package/dist/filters/distill.js.map +1 -1
  146. package/dist/filters/index.cjs +4 -0
  147. package/dist/filters/index.d.ts +5 -4
  148. package/dist/filters/index.js +4 -0
  149. package/dist/filters/traverse.cjs +31 -40
  150. package/dist/filters/traverse.cjs.map +1 -1
  151. package/dist/filters/traverse.js +31 -39
  152. package/dist/filters/traverse.js.map +1 -1
  153. package/dist/filters/types.d.ts +10 -7
  154. package/dist/index.cjs +193 -187
  155. package/dist/index.d.ts +61 -28
  156. package/dist/index.js +49 -41
  157. package/dist/internal.cjs +48 -62
  158. package/dist/internal.cjs.map +1 -1
  159. package/dist/internal.js +49 -60
  160. package/dist/internal.js.map +1 -1
  161. package/dist/package.cjs +12 -0
  162. package/dist/package.cjs.map +1 -0
  163. package/dist/package.js +6 -0
  164. package/dist/package.js.map +1 -0
  165. package/dist/pframe.cjs +32 -37
  166. package/dist/pframe.cjs.map +1 -1
  167. package/dist/pframe.d.ts +14 -10
  168. package/dist/pframe.js +32 -35
  169. package/dist/pframe.js.map +1 -1
  170. package/dist/pframe_utils/axes.cjs +81 -114
  171. package/dist/pframe_utils/axes.cjs.map +1 -1
  172. package/dist/pframe_utils/axes.d.ts +10 -13
  173. package/dist/pframe_utils/axes.js +80 -112
  174. package/dist/pframe_utils/axes.js.map +1 -1
  175. package/dist/pframe_utils/columns.cjs +61 -81
  176. package/dist/pframe_utils/columns.cjs.map +1 -1
  177. package/dist/pframe_utils/columns.d.ts +15 -6
  178. package/dist/pframe_utils/columns.js +60 -79
  179. package/dist/pframe_utils/columns.js.map +1 -1
  180. package/dist/pframe_utils/index.cjs +232 -253
  181. package/dist/pframe_utils/index.cjs.map +1 -1
  182. package/dist/pframe_utils/index.d.ts +39 -35
  183. package/dist/pframe_utils/index.js +231 -251
  184. package/dist/pframe_utils/index.js.map +1 -1
  185. package/dist/platforma.d.ts +48 -46
  186. package/dist/plugin_handle.cjs +6 -14
  187. package/dist/plugin_handle.cjs.map +1 -1
  188. package/dist/plugin_handle.d.ts +20 -25
  189. package/dist/plugin_handle.js +6 -13
  190. package/dist/plugin_handle.js.map +1 -1
  191. package/dist/plugin_model.cjs +364 -163
  192. package/dist/plugin_model.cjs.map +1 -1
  193. package/dist/plugin_model.d.ts +280 -129
  194. package/dist/plugin_model.js +362 -163
  195. package/dist/plugin_model.js.map +1 -1
  196. package/dist/raw_globals.cjs +10 -22
  197. package/dist/raw_globals.cjs.map +1 -1
  198. package/dist/raw_globals.d.ts +8 -5
  199. package/dist/raw_globals.js +10 -20
  200. package/dist/raw_globals.js.map +1 -1
  201. package/dist/ref_util.cjs +14 -13
  202. package/dist/ref_util.cjs.map +1 -1
  203. package/dist/ref_util.d.ts +18 -12
  204. package/dist/ref_util.js +14 -11
  205. package/dist/ref_util.js.map +1 -1
  206. package/dist/render/accessor.cjs +213 -226
  207. package/dist/render/accessor.cjs.map +1 -1
  208. package/dist/render/accessor.d.ts +115 -120
  209. package/dist/render/accessor.js +212 -224
  210. package/dist/render/accessor.js.map +1 -1
  211. package/dist/render/api.cjs +478 -580
  212. package/dist/render/api.cjs.map +1 -1
  213. package/dist/render/api.d.ts +207 -209
  214. package/dist/render/api.js +476 -578
  215. package/dist/render/api.js.map +1 -1
  216. package/dist/render/future.cjs +28 -32
  217. package/dist/render/future.cjs.map +1 -1
  218. package/dist/render/future.d.ts +15 -11
  219. package/dist/render/future.js +28 -30
  220. package/dist/render/future.js.map +1 -1
  221. package/dist/render/index.cjs +8 -0
  222. package/dist/render/index.d.ts +10 -8
  223. package/dist/render/index.js +8 -0
  224. package/dist/render/internal.cjs +33 -29
  225. package/dist/render/internal.cjs.map +1 -1
  226. package/dist/render/internal.d.ts +78 -72
  227. package/dist/render/internal.js +29 -26
  228. package/dist/render/internal.js.map +1 -1
  229. package/dist/render/traversal_ops.d.ts +42 -43
  230. package/dist/render/util/axis_filtering.cjs +63 -86
  231. package/dist/render/util/axis_filtering.cjs.map +1 -1
  232. package/dist/render/util/axis_filtering.d.ts +10 -7
  233. package/dist/render/util/axis_filtering.js +63 -85
  234. package/dist/render/util/axis_filtering.js.map +1 -1
  235. package/dist/render/util/column_collection.cjs +266 -321
  236. package/dist/render/util/column_collection.cjs.map +1 -1
  237. package/dist/render/util/column_collection.d.ts +47 -47
  238. package/dist/render/util/column_collection.js +264 -319
  239. package/dist/render/util/column_collection.js.map +1 -1
  240. package/dist/render/util/index.cjs +4 -0
  241. package/dist/render/util/index.d.ts +4 -5
  242. package/dist/render/util/index.js +4 -0
  243. package/dist/render/util/label.cjs +129 -163
  244. package/dist/render/util/label.cjs.map +1 -1
  245. package/dist/render/util/label.d.ts +45 -46
  246. package/dist/render/util/label.js +128 -161
  247. package/dist/render/util/label.js.map +1 -1
  248. package/dist/render/util/pcolumn_data.cjs +315 -375
  249. package/dist/render/util/pcolumn_data.cjs.map +1 -1
  250. package/dist/render/util/pcolumn_data.d.ts +33 -32
  251. package/dist/render/util/pcolumn_data.js +314 -373
  252. package/dist/render/util/pcolumn_data.js.map +1 -1
  253. package/dist/render/util/pframe_upgraders.cjs +37 -42
  254. package/dist/render/util/pframe_upgraders.cjs.map +1 -1
  255. package/dist/render/util/pframe_upgraders.js +37 -41
  256. package/dist/render/util/pframe_upgraders.js.map +1 -1
  257. package/dist/render/util/split_selectors.d.ts +13 -9
  258. package/dist/version.cjs +6 -8
  259. package/dist/version.cjs.map +1 -1
  260. package/dist/version.d.ts +7 -4
  261. package/dist/version.js +5 -5
  262. package/dist/version.js.map +1 -1
  263. package/package.json +15 -9
  264. package/src/block_migrations.test.ts +184 -14
  265. package/src/block_migrations.ts +185 -30
  266. package/src/block_model.ts +111 -66
  267. package/src/block_storage.test.ts +147 -3
  268. package/src/block_storage.ts +43 -8
  269. package/src/block_storage_callbacks.ts +9 -4
  270. package/src/env_value.ts +0 -2
  271. package/src/index.ts +12 -11
  272. package/src/internal.ts +0 -1
  273. package/src/platforma.ts +4 -4
  274. package/src/plugin_handle.ts +1 -1
  275. package/src/plugin_model.test.ts +217 -21
  276. package/src/plugin_model.ts +450 -55
  277. package/src/raw_globals.ts +0 -1
  278. package/dist/annotations/converter.d.ts.map +0 -1
  279. package/dist/annotations/index.d.ts.map +0 -1
  280. package/dist/annotations/types.d.ts.map +0 -1
  281. package/dist/bconfig/index.d.ts.map +0 -1
  282. package/dist/bconfig/lambdas.d.ts.map +0 -1
  283. package/dist/bconfig/normalization.d.ts.map +0 -1
  284. package/dist/bconfig/types.d.ts.map +0 -1
  285. package/dist/bconfig/util.d.ts.map +0 -1
  286. package/dist/bconfig/v3.d.ts.map +0 -1
  287. package/dist/block_api_v1.d.ts.map +0 -1
  288. package/dist/block_api_v2.d.ts.map +0 -1
  289. package/dist/block_api_v3.d.ts.map +0 -1
  290. package/dist/block_migrations.d.ts.map +0 -1
  291. package/dist/block_model.d.ts.map +0 -1
  292. package/dist/block_model_legacy.d.ts.map +0 -1
  293. package/dist/block_state_patch.d.ts.map +0 -1
  294. package/dist/block_state_util.d.ts.map +0 -1
  295. package/dist/block_storage.d.ts.map +0 -1
  296. package/dist/block_storage_callbacks.d.ts +0 -115
  297. package/dist/block_storage_callbacks.d.ts.map +0 -1
  298. package/dist/block_storage_facade.d.ts.map +0 -1
  299. package/dist/components/PFrameForGraphs.d.ts.map +0 -1
  300. package/dist/components/PlAnnotations/filter.d.ts.map +0 -1
  301. package/dist/components/PlAnnotations/filters_ui.d.ts.map +0 -1
  302. package/dist/components/PlAnnotations/index.d.ts.map +0 -1
  303. package/dist/components/PlAnnotations/types.d.ts +0 -3
  304. package/dist/components/PlAnnotations/types.d.ts.map +0 -1
  305. package/dist/components/PlDataTable/index.d.ts.map +0 -1
  306. package/dist/components/PlDataTable/labels.d.ts +0 -7
  307. package/dist/components/PlDataTable/labels.d.ts.map +0 -1
  308. package/dist/components/PlDataTable/state-migration.d.ts.map +0 -1
  309. package/dist/components/PlDataTable/table.d.ts.map +0 -1
  310. package/dist/components/PlDataTable/v4.d.ts.map +0 -1
  311. package/dist/components/PlDataTable/v5.d.ts.map +0 -1
  312. package/dist/components/PlMultiSequenceAlignment.d.ts.map +0 -1
  313. package/dist/components/PlSelectionModel.d.ts.map +0 -1
  314. package/dist/components/index.d.ts.map +0 -1
  315. package/dist/config/actions.d.ts.map +0 -1
  316. package/dist/config/actions_kinds.d.ts.map +0 -1
  317. package/dist/config/index.d.ts.map +0 -1
  318. package/dist/config/model.d.ts.map +0 -1
  319. package/dist/config/model_meta.d.ts.map +0 -1
  320. package/dist/config/type_engine.d.ts.map +0 -1
  321. package/dist/config/type_util.d.ts.map +0 -1
  322. package/dist/env_value.d.ts.map +0 -1
  323. package/dist/filters/converters/filterToQuery.d.ts.map +0 -1
  324. package/dist/filters/converters/filterUiToExpressionImpl.d.ts.map +0 -1
  325. package/dist/filters/converters/index.d.ts.map +0 -1
  326. package/dist/filters/distill.d.ts.map +0 -1
  327. package/dist/filters/index.d.ts.map +0 -1
  328. package/dist/filters/traverse.d.ts +0 -27
  329. package/dist/filters/traverse.d.ts.map +0 -1
  330. package/dist/filters/types.d.ts.map +0 -1
  331. package/dist/index.cjs.map +0 -1
  332. package/dist/index.d.ts.map +0 -1
  333. package/dist/index.js.map +0 -1
  334. package/dist/internal.d.ts +0 -36
  335. package/dist/internal.d.ts.map +0 -1
  336. package/dist/package.json.cjs +0 -6
  337. package/dist/package.json.cjs.map +0 -1
  338. package/dist/package.json.js +0 -4
  339. package/dist/package.json.js.map +0 -1
  340. package/dist/pframe.d.ts.map +0 -1
  341. package/dist/pframe_utils/axes.d.ts.map +0 -1
  342. package/dist/pframe_utils/columns.d.ts.map +0 -1
  343. package/dist/pframe_utils/index.d.ts.map +0 -1
  344. package/dist/pframe_utils/querySpec.d.ts +0 -2
  345. package/dist/pframe_utils/querySpec.d.ts.map +0 -1
  346. package/dist/platforma.d.ts.map +0 -1
  347. package/dist/plugin_handle.d.ts.map +0 -1
  348. package/dist/plugin_model.d.ts.map +0 -1
  349. package/dist/raw_globals.d.ts.map +0 -1
  350. package/dist/ref_util.d.ts.map +0 -1
  351. package/dist/render/accessor.d.ts.map +0 -1
  352. package/dist/render/api.d.ts.map +0 -1
  353. package/dist/render/future.d.ts.map +0 -1
  354. package/dist/render/index.d.ts.map +0 -1
  355. package/dist/render/internal.d.ts.map +0 -1
  356. package/dist/render/traversal_ops.d.ts.map +0 -1
  357. package/dist/render/util/axis_filtering.d.ts.map +0 -1
  358. package/dist/render/util/column_collection.d.ts.map +0 -1
  359. package/dist/render/util/index.d.ts.map +0 -1
  360. package/dist/render/util/label.d.ts.map +0 -1
  361. package/dist/render/util/pcolumn_data.d.ts.map +0 -1
  362. package/dist/render/util/pframe_upgraders.d.ts +0 -3
  363. package/dist/render/util/pframe_upgraders.d.ts.map +0 -1
  364. package/dist/render/util/split_selectors.d.ts.map +0 -1
  365. package/dist/version.d.ts.map +0 -1
@@ -1,87 +1,246 @@
1
+ import { PluginFactoryLike } from "./plugin_handle.js";
2
+ import { DataModel, DataRecoverFn, DataVersioned, TransferTarget } from "./block_migrations.js";
3
+ import { PluginName } from "./block_storage.js";
4
+ import { PluginRenderCtx } from "./render/api.js";
5
+ import "./render/index.js";
6
+ import { BlockCodeKnownFeatureFlags } from "@milaboratories/pl-model-common";
7
+
8
+ //#region src/plugin_model.d.ts
9
+ /** Symbol for internal builder creation method */
10
+ declare const FROM_BUILDER: unique symbol;
11
+ /** Symbol for internal plugin model creation — not accessible to external consumers */
12
+ declare const CREATE_PLUGIN_MODEL: unique symbol;
13
+ type PluginData = Record<string, unknown>;
14
+ type PluginParams = undefined | Record<string, unknown>;
15
+ type PluginOutputs = Record<string, unknown>;
16
+ type PluginConfig = undefined | Record<string, unknown>;
1
17
  /**
2
- * PluginModel - Builder for creating plugin types with data model and outputs.
18
+ * Plugin data model with typed migration chain and config-aware initialization.
3
19
  *
4
- * Plugins are UI components with their own model logic and persistent state.
5
- * Block developers register plugin instances via BlockModelV3.plugin() method.
20
+ * @typeParam Data - Current (latest) plugin data type
21
+ * @typeParam Versions - Map of version keys to their data types (accumulated by the chain)
22
+ * @typeParam Config - Config type passed to init function (undefined if none)
23
+ */
24
+ declare class PluginDataModel<Data extends PluginData, Versions extends Record<string, unknown> = {}, Config = undefined> {
25
+ readonly dataModel: DataModel<Data>;
26
+ private readonly configInitFn;
27
+ /** @internal Phantom field to anchor the Versions type parameter. */
28
+ readonly __versions?: Versions;
29
+ private constructor();
30
+ /** @internal */
31
+ static [FROM_BUILDER]<Data extends PluginData, Versions extends Record<string, unknown>, Config>(dataModel: DataModel<Data>, configInitFn: (config?: Config) => Data): PluginDataModel<Data, Versions, Config>;
32
+ /** Create fresh data with optional config. */
33
+ getDefaultData(config?: Config): DataVersioned<Data>;
34
+ }
35
+ /** Internal state for plugin data model chain. */
36
+ type PluginChainState = {
37
+ initialVersion: string;
38
+ migrations: Array<{
39
+ toVersion: string;
40
+ fn: (data: unknown) => unknown;
41
+ }>;
42
+ recoverFn?: (version: string, data: unknown) => unknown;
43
+ recoverAtIndex?: number;
44
+ };
45
+ /**
46
+ * Builder for creating PluginDataModel with type-safe migrations.
47
+ * Mirrors DataModelBuilder — same .from(), .migrate(), .recover(), .init() chain.
6
48
  *
7
- * @module plugin_model
49
+ * @example
50
+ * const pluginData = new PluginDataModelBuilder()
51
+ * .from<TableData>("v1")
52
+ * .migrate<FilteredTableData>("v2", (v1) => ({ ...v1, filters: [] }))
53
+ * .init<TableConfig>((config?) => ({
54
+ * state: createDefaultState(config?.ops),
55
+ * filters: [],
56
+ * }));
8
57
  */
9
- import type { BlockCodeKnownFeatureFlags } from "@milaboratories/pl-model-common";
10
- import type { DataModel } from "./block_migrations";
11
- import type { PluginName } from "./block_storage";
12
- import type { PluginFactoryLike } from "./plugin_handle";
13
- import type { PluginRenderCtx } from "./render";
14
- /** Symbol for internal builder creation method */
15
- declare const FROM_BUILDER: unique symbol;
16
- export type PluginData = Record<string, unknown>;
17
- export type PluginParams = undefined | Record<string, unknown>;
18
- export type PluginOutputs = Record<string, unknown>;
19
- export type PluginConfig = undefined | Record<string, unknown>;
58
+ declare class PluginDataModelBuilder {
59
+ from<Data extends PluginData, const V extends string>(version: V): PluginDataModelInitialChain<Data, Record<V, Data>>;
60
+ }
61
+ /**
62
+ * Chain returned by .migrate(). Supports .migrate(), .recover(), .init().
63
+ * No .upgradeLegacy() that is only available on the initial chain.
64
+ */
65
+ declare class PluginDataModelChain<Data extends PluginData, Versions extends Record<string, unknown>> {
66
+ protected readonly state: PluginChainState;
67
+ protected constructor(state: PluginChainState);
68
+ /** @internal */
69
+ static [FROM_BUILDER]<Data extends PluginData, Versions extends Record<string, unknown>>(state: PluginChainState): PluginDataModelChain<Data, Versions>;
70
+ /**
71
+ * Add a migration step transforming data from the current version to the next.
72
+ */
73
+ migrate<Next extends PluginData, const NextV extends string>(version: NextV, fn: (current: Data) => Next): PluginDataModelChain<Next, Versions & Record<NextV, Next>>;
74
+ /**
75
+ * Set a recovery handler for unknown or legacy versions.
76
+ * Can only be called once — the returned chain has no recover() method.
77
+ */
78
+ recover(fn: DataRecoverFn<Data>): PluginDataModelWithRecover<Data, Versions>;
79
+ /** Finalize the PluginDataModel. */
80
+ init<Config = undefined>(fn: (config?: Config) => Data): PluginDataModel<Data, Versions, Config>;
81
+ }
20
82
  /**
21
- * Configured plugin instance returned by PluginModelFactory.create().
83
+ * Initial chain returned by new PluginDataModelBuilder().from().
84
+ * Extends PluginDataModelChain with .upgradeLegacy() — available only before
85
+ * any .migrate() calls, matching the block's DataModelInitialChain pattern.
86
+ */
87
+ declare class PluginDataModelInitialChain<Data extends PluginData, Versions extends Record<string, unknown>> extends PluginDataModelChain<Data, Versions> {
88
+ /** @internal */
89
+ static [FROM_BUILDER]<Data extends PluginData, Versions extends Record<string, unknown>>(state: PluginChainState): PluginDataModelInitialChain<Data, Versions>;
90
+ /**
91
+ * Handle data from a previous plugin type occupying this slot.
92
+ * Prepends a migration from DATA_MODEL_LEGACY_VERSION to the initial version.
93
+ * When a plugin type changes, the old data arrives with DATA_MODEL_LEGACY_VERSION —
94
+ * this function transforms it into the initial version, then the normal chain runs.
95
+ *
96
+ * Must be called right after .from() — not available after .migrate().
97
+ * Mutually exclusive with recover().
98
+ *
99
+ * @param fn - Transform from old plugin's raw data to this plugin's initial data type
100
+ */
101
+ upgradeLegacy(fn: (data: unknown) => Data): PluginDataModelWithRecover<Data, Versions>;
102
+ }
103
+ /**
104
+ * Chain after .recover() — supports .migrate(), .init(). No second recover().
105
+ */
106
+ declare class PluginDataModelWithRecover<Data extends PluginData, Versions extends Record<string, unknown>> {
107
+ private readonly state;
108
+ private constructor();
109
+ /** @internal */
110
+ static [FROM_BUILDER]<Data extends PluginData, Versions extends Record<string, unknown>>(state: PluginChainState): PluginDataModelWithRecover<Data, Versions>;
111
+ migrate<Next extends PluginData, const NextV extends string>(version: NextV, fn: (current: Data) => Next): PluginDataModelWithRecover<Next, Versions & Record<NextV, Next>>;
112
+ init<Config = undefined>(fn: (config?: Config) => Data): PluginDataModel<Data, Versions, Config>;
113
+ }
114
+ /**
115
+ * A named plugin instance created by `factory.create({ pluginId, ... })`.
116
+ * Passed to both `.transfer()` (on migration chain) and `.plugin()` (on BlockModelV3).
117
+ * Implements TransferTarget so the migration chain can accept it.
118
+ *
119
+ * @typeParam Id - Plugin instance ID literal type
120
+ * @typeParam Data - Plugin data type
121
+ * @typeParam Params - Plugin params type
122
+ * @typeParam Outputs - Plugin outputs type
123
+ * @typeParam TransferData - Type of data entering the plugin via transfer (never if no transfer)
124
+ */
125
+ declare class PluginInstance<Id extends string = string, Data extends PluginData = PluginData, Params extends PluginParams = undefined, Outputs extends PluginOutputs = PluginOutputs, TransferData = never> implements TransferTarget<Id, TransferData> {
126
+ readonly id: Id;
127
+ readonly transferVersion: string;
128
+ /** @internal */
129
+ readonly __transferBrand?: TransferData;
130
+ private readonly factory;
131
+ private readonly config;
132
+ private constructor();
133
+ /** @internal */
134
+ static [FROM_BUILDER]<Id extends string, Data extends PluginData, Params extends PluginParams, Outputs extends PluginOutputs, TransferData>(id: Id, factory: PluginModelFactory<Data, Params, Outputs, any, any>, transferVersion: string, config?: any): PluginInstance<Id, Data, Params, Outputs, TransferData>;
135
+ /** @internal Create a PluginModel from this instance. Used by BlockModelV3.plugin(). */
136
+ [CREATE_PLUGIN_MODEL](): PluginModel<Data, Params, Outputs>;
137
+ }
138
+ /**
139
+ * Configured plugin instance returned by PluginModelFactory[CREATE_PLUGIN_MODEL]().
22
140
  * Contains the plugin's name, data model, and output definitions.
23
141
  */
24
- export declare class PluginModel<Data extends PluginData = PluginData, Params extends PluginParams = undefined, Outputs extends PluginOutputs = PluginOutputs> {
25
- /** Globally unique plugin name */
26
- readonly name: PluginName;
27
- /** Data model instance for this plugin */
28
- readonly dataModel: DataModel<Data>;
29
- /** Output definitions - functions that compute outputs from plugin context */
30
- readonly outputs: {
31
- [K in keyof Outputs]: (ctx: PluginRenderCtx<PluginFactoryLike<Data, Params>>) => Outputs[K];
32
- };
33
- /** Feature flags declared by this plugin */
34
- readonly featureFlags?: BlockCodeKnownFeatureFlags;
35
- private constructor();
36
- /**
37
- * Internal method for creating PluginModel from factory.
38
- * Uses Symbol key to prevent external access.
39
- * @internal
40
- */
41
- static [FROM_BUILDER]<Data extends PluginData, Params extends PluginParams, Outputs extends PluginOutputs>(options: {
42
- name: PluginName;
43
- dataModel: DataModel<Data>;
44
- outputs: {
45
- [K in keyof Outputs]: (ctx: PluginRenderCtx<PluginFactoryLike<Data, Params>>) => Outputs[K];
46
- };
47
- featureFlags?: BlockCodeKnownFeatureFlags;
48
- }): PluginModel<Data, Params, Outputs>;
49
- /**
50
- * Creates a new PluginModelBuilder for building plugin definitions.
51
- *
52
- * @param options.name - Globally unique plugin name
53
- * @param options.data - Factory function that creates the data model from config
54
- * @returns PluginModelBuilder for chaining output definitions
55
- *
56
- * @example
57
- * const dataModelChain = new DataModelBuilder().from<MyData>("v1");
58
- *
59
- * const myPlugin = PluginModel.define({
60
- * name: 'myPlugin' as PluginName,
61
- * data: (cfg) => dataModelChain.init(() => ({ value: cfg.defaultValue })),
62
- * })
63
- * .output('computed', (ctx) => ctx.data.value * ctx.params.multiplier)
64
- * .build();
65
- */
66
- static define<Data extends PluginData, Params extends PluginParams, Config extends PluginConfig>(options: {
67
- name: PluginName;
68
- data: (config?: Config) => DataModel<Data>;
69
- featureFlags?: BlockCodeKnownFeatureFlags;
70
- }): PluginModelBuilder<Data, Params, {}, Config>;
142
+ declare class PluginModel<Data extends PluginData = PluginData, Params extends PluginParams = undefined, Outputs extends PluginOutputs = PluginOutputs> {
143
+ /** Globally unique plugin name */
144
+ readonly name: PluginName;
145
+ /** Data model instance for this plugin */
146
+ readonly dataModel: DataModel<Data>;
147
+ /** Output definitions - functions that compute outputs from plugin context */
148
+ readonly outputs: { [K in keyof Outputs]: (ctx: PluginRenderCtx<PluginFactoryLike<Data, Params>>) => Outputs[K] };
149
+ /** Feature flags declared by this plugin */
150
+ readonly featureFlags?: BlockCodeKnownFeatureFlags;
151
+ /** Create fresh default data. Config (if any) is captured at creation time. */
152
+ readonly getDefaultData: () => DataVersioned<Data>;
153
+ private constructor();
154
+ /**
155
+ * Internal method for creating PluginModel from factory.
156
+ * Uses Symbol key to prevent external access.
157
+ * @internal
158
+ */
159
+ static [FROM_BUILDER]<Data extends PluginData, Params extends PluginParams, Outputs extends PluginOutputs>(options: {
160
+ name: PluginName;
161
+ dataModel: DataModel<Data>;
162
+ outputs: { [K in keyof Outputs]: (ctx: PluginRenderCtx<PluginFactoryLike<Data, Params>>) => Outputs[K] };
163
+ featureFlags?: BlockCodeKnownFeatureFlags;
164
+ getDefaultData: () => DataVersioned<Data>;
165
+ }): PluginModel<Data, Params, Outputs>;
166
+ /**
167
+ * Creates a new PluginModelBuilder with a PluginDataModel (supports transfer / config).
168
+ *
169
+ * @example
170
+ * const pluginData = new PluginDataModelBuilder().from<TableData>("v1")
171
+ * .migrate<FilteredTableData>("v2", (v1) => ({ ...v1, filters: [] }))
172
+ * .init<TableConfig>((config?) => ({
173
+ * state: createDefaultState(config?.ops),
174
+ * filters: [],
175
+ * }));
176
+ *
177
+ * const myPlugin = PluginModel.define({
178
+ * name: 'myPlugin' as PluginName,
179
+ * data: pluginData,
180
+ * }).build();
181
+ */
182
+ static define<Data extends PluginData, Params extends PluginParams = undefined, Versions extends Record<string, unknown> = {}, Config extends PluginConfig = undefined>(options: {
183
+ name: PluginName;
184
+ data: PluginDataModel<Data, Versions, Config>;
185
+ featureFlags?: BlockCodeKnownFeatureFlags;
186
+ }): PluginModelBuilder<Data, Params, {}, Config, Versions>;
187
+ /**
188
+ * Creates a new PluginModelBuilder with a data model factory function (backward compatible).
189
+ *
190
+ * @example
191
+ * const myPlugin = PluginModel.define({
192
+ * name: 'myPlugin' as PluginName,
193
+ * data: (cfg) => dataModelChain.init(() => ({ value: cfg.defaultValue })),
194
+ * }).build();
195
+ */
196
+ static define<Data extends PluginData, Params extends PluginParams = undefined, Config extends PluginConfig = undefined>(options: {
197
+ name: PluginName;
198
+ data: (config?: Config) => DataModel<Data>;
199
+ featureFlags?: BlockCodeKnownFeatureFlags;
200
+ }): PluginModelBuilder<Data, Params, {}, Config, {}>;
71
201
  }
72
202
  /** Plugin factory returned by PluginModelBuilder.build(). */
73
- export interface PluginFactory<Data extends PluginData = PluginData, Params extends PluginParams = undefined, Outputs extends PluginOutputs = PluginOutputs, Config extends PluginConfig = undefined> extends PluginFactoryLike {
74
- create(config?: Config): PluginModel<Data, Params, Outputs>;
75
- /**
76
- * @internal Phantom field for structural type extraction.
77
- * Enables InferFactoryData/InferFactoryOutputs to work via PluginFactoryLike.
78
- */
79
- readonly __types?: {
80
- data: Data;
81
- params: Params;
82
- outputs: Outputs;
83
- config: Config;
84
- };
203
+ interface PluginFactory<Data extends PluginData = PluginData, Params extends PluginParams = undefined, Outputs extends PluginOutputs = PluginOutputs, Config extends PluginConfig = undefined, Versions extends Record<string, unknown> = {}> extends PluginFactoryLike<Data, Params, Outputs> {
204
+ /** Create a named plugin instance, optionally with transfer at a specific version. */
205
+ create<const Id extends string, const V extends string & keyof Versions = never>(options: {
206
+ pluginId: Id;
207
+ transferAt?: V;
208
+ config?: Config;
209
+ }): PluginInstance<Id, Data, Params, Outputs, Versions[V]>;
210
+ /**
211
+ * @internal Phantom field for structural type extraction.
212
+ * Enables InferFactoryData/InferFactoryOutputs to work via PluginFactoryLike.
213
+ */
214
+ readonly __types?: {
215
+ data: Data;
216
+ params: Params;
217
+ outputs: Outputs;
218
+ config: Config;
219
+ versions: Versions;
220
+ };
221
+ }
222
+ declare class PluginModelFactory<Data extends PluginData = PluginData, Params extends PluginParams = undefined, Outputs extends PluginOutputs = PluginOutputs, Config extends PluginConfig = undefined, Versions extends Record<string, unknown> = {}> implements PluginFactory<Data, Params, Outputs, Config, Versions> {
223
+ private readonly name;
224
+ private readonly dataFn;
225
+ private readonly getDefaultDataFn?;
226
+ readonly outputs: { [K in keyof Outputs]: (ctx: PluginRenderCtx<PluginFactoryLike<Data, Params>>) => Outputs[K] };
227
+ private readonly featureFlags?;
228
+ private constructor();
229
+ /** @internal */
230
+ static [FROM_BUILDER]<Data extends PluginData, Params extends PluginParams, Outputs extends PluginOutputs, Config extends PluginConfig, Versions extends Record<string, unknown>>(options: {
231
+ name: PluginName;
232
+ dataFn: (config?: Config) => DataModel<Data>;
233
+ getDefaultDataFn?: (config?: Config) => DataVersioned<Data>;
234
+ outputs: { [K in keyof Outputs]: (ctx: PluginRenderCtx<PluginFactoryLike<Data, Params>>) => Outputs[K] };
235
+ featureFlags?: BlockCodeKnownFeatureFlags;
236
+ }): PluginModelFactory<Data, Params, Outputs, Config, Versions>;
237
+ create<const Id extends string, const V extends string & keyof Versions = never>(options: {
238
+ pluginId: Id;
239
+ transferAt?: V;
240
+ config?: Config;
241
+ }): PluginInstance<Id, Data, Params, Outputs, Versions[V]>;
242
+ /** @internal Create a PluginModel from config. Config is captured in getDefaultData closure. */
243
+ [CREATE_PLUGIN_MODEL](config?: Config): PluginModel<Data, Params, Outputs>;
85
244
  }
86
245
  /**
87
246
  * Builder for creating PluginType with type-safe output definitions.
@@ -92,66 +251,58 @@ export interface PluginFactory<Data extends PluginData = PluginData, Params exte
92
251
  * @typeParam Params - Params derived from block's RenderCtx (optional)
93
252
  * @typeParam Config - Static configuration passed to plugin factory (optional)
94
253
  * @typeParam Outputs - Accumulated output types
254
+ * @typeParam Versions - Version map from PluginDataModel (empty for function-based data)
95
255
  *
96
256
  * @example
97
- * const dataModelChain = new DataModelBuilder().from<TableData>("v1");
98
- *
99
- * const dataTable = PluginModel.define<TableData, TableParams, TableConfig>({
257
+ * const dataTable = PluginModel.define({
100
258
  * name: 'dataTable' as PluginName,
101
- * data: (cfg) => {
102
- * return dataModelChain.init(() => ({ state: createInitialState(cfg.ops) }));
103
- * },
259
+ * data: pluginDataModel,
104
260
  * })
105
261
  * .output('model', (ctx) => createTableModel(ctx))
106
262
  * .build();
107
263
  */
108
- declare class PluginModelBuilder<Data extends PluginData = PluginData, Params extends PluginParams = undefined, Outputs extends PluginOutputs = PluginOutputs, Config extends PluginConfig = undefined> {
109
- private readonly name;
110
- private readonly data;
111
- private readonly outputs;
112
- private readonly featureFlags?;
113
- private constructor();
114
- /**
115
- * Internal method for creating PluginModelBuilder.
116
- * Uses Symbol key to prevent external access.
117
- * @internal
118
- */
119
- static [FROM_BUILDER]<Data extends PluginData, Params extends PluginParams, Outputs extends PluginOutputs, Config extends PluginConfig>(options: {
120
- name: PluginName;
121
- data: (config?: Config) => DataModel<Data>;
122
- outputs?: {
123
- [K in keyof Outputs]: (ctx: PluginRenderCtx<PluginFactoryLike<Data, Params>>) => Outputs[K];
124
- };
125
- featureFlags?: BlockCodeKnownFeatureFlags;
126
- }): PluginModelBuilder<Data, Params, Outputs, Config>;
127
- /**
128
- * Adds an output to the plugin.
129
- *
130
- * @param key - Output name
131
- * @param fn - Function that computes the output value from plugin context
132
- * @returns PluginModel with the new output added
133
- *
134
- * @example
135
- * .output('model', (ctx) => createModel(ctx.params.columns, ctx.data.state))
136
- * .output('isReady', (ctx) => ctx.params.columns !== undefined)
137
- */
138
- output<const Key extends string, T>(key: Key, fn: (ctx: PluginRenderCtx<PluginFactoryLike<Data, Params>>) => T): PluginModelBuilder<Data, Params, Outputs & {
139
- [K in Key]: T;
140
- }, Config>;
141
- /**
142
- * Finalizes the plugin definition and returns a ConfigurablePluginModel.
143
- *
144
- * @returns Callable plugin factory that accepts config and returns PluginModel
145
- *
146
- * @example
147
- * const myPlugin = new PluginModelBuilder('myPlugin', () => dataModel)
148
- * .output('value', (ctx) => ctx.data.value)
149
- * .build();
150
- *
151
- * // Later, call create() with config to get a configured instance:
152
- * const configured = myPlugin.create({ defaultValue: 'test' });
153
- */
154
- build(): PluginFactory<Data, Params, Outputs, Config>;
264
+ declare class PluginModelBuilder<Data extends PluginData = PluginData, Params extends PluginParams = undefined, Outputs extends PluginOutputs = PluginOutputs, Config extends PluginConfig = undefined, Versions extends Record<string, unknown> = {}> {
265
+ private readonly name;
266
+ private readonly dataFn;
267
+ private readonly getDefaultDataFn?;
268
+ private readonly outputs;
269
+ private readonly featureFlags?;
270
+ private constructor();
271
+ /** @internal */
272
+ static [FROM_BUILDER]<Data extends PluginData, Params extends PluginParams, Outputs extends PluginOutputs, Config extends PluginConfig, Versions extends Record<string, unknown> = {}>(options: {
273
+ name: PluginName;
274
+ dataFn: (config?: Config) => DataModel<Data>;
275
+ getDefaultDataFn?: (config?: Config) => DataVersioned<Data>;
276
+ outputs?: { [K in keyof Outputs]: (ctx: PluginRenderCtx<PluginFactoryLike<Data, Params>>) => Outputs[K] };
277
+ featureFlags?: BlockCodeKnownFeatureFlags;
278
+ }): PluginModelBuilder<Data, Params, Outputs, Config, Versions>;
279
+ /**
280
+ * Adds an output to the plugin.
281
+ *
282
+ * @param key - Output name
283
+ * @param fn - Function that computes the output value from plugin context
284
+ * @returns PluginModel with the new output added
285
+ *
286
+ * @example
287
+ * .output('model', (ctx) => createModel(ctx.params.columns, ctx.data.state))
288
+ * .output('isReady', (ctx) => ctx.params.columns !== undefined)
289
+ */
290
+ output<const Key extends string, T>(key: Key, fn: (ctx: PluginRenderCtx<PluginFactoryLike<Data, Params>>) => T): PluginModelBuilder<Data, Params, Outputs & { [K in Key]: T }, Config, Versions>;
291
+ /**
292
+ * Finalizes the plugin definition and returns a PluginFactory.
293
+ *
294
+ * @returns Plugin factory that creates named plugin instances via .create()
295
+ *
296
+ * @example
297
+ * const myPlugin = PluginModel.define({ ... })
298
+ * .output('value', (ctx) => ctx.data.value)
299
+ * .build();
300
+ *
301
+ * // Create a named instance:
302
+ * const table = myPlugin.create({ pluginId: 'mainTable', config: { ... } });
303
+ */
304
+ build(): PluginFactory<Data, Params, Outputs, Config, Versions>;
155
305
  }
156
- export {};
306
+ //#endregion
307
+ export { PluginConfig, PluginData, PluginDataModel, PluginDataModelBuilder, PluginFactory, PluginInstance, PluginModel, PluginOutputs, PluginParams };
157
308
  //# sourceMappingURL=plugin_model.d.ts.map