@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.
- package/dist/_virtual/_rolldown/runtime.cjs +43 -0
- package/dist/_virtual/_rolldown/runtime.js +18 -0
- package/dist/annotations/converter.cjs +15 -20
- package/dist/annotations/converter.cjs.map +1 -1
- package/dist/annotations/converter.d.ts +6 -2
- package/dist/annotations/converter.js +14 -18
- package/dist/annotations/converter.js.map +1 -1
- package/dist/annotations/index.cjs +1 -0
- package/dist/annotations/index.d.ts +2 -3
- package/dist/annotations/index.js +1 -0
- package/dist/annotations/types.d.ts +21 -16
- package/dist/bconfig/index.cjs +2 -0
- package/dist/bconfig/index.d.ts +5 -6
- package/dist/bconfig/index.js +2 -0
- package/dist/bconfig/lambdas.d.ts +52 -52
- package/dist/bconfig/normalization.cjs +13 -18
- package/dist/bconfig/normalization.cjs.map +1 -1
- package/dist/bconfig/normalization.d.ts +10 -6
- package/dist/bconfig/normalization.js +12 -16
- package/dist/bconfig/normalization.js.map +1 -1
- package/dist/bconfig/types.cjs +4 -3
- package/dist/bconfig/types.cjs.map +1 -1
- package/dist/bconfig/types.d.ts +10 -5
- package/dist/bconfig/types.js +4 -2
- package/dist/bconfig/types.js.map +1 -1
- package/dist/bconfig/util.d.ts +7 -4
- package/dist/bconfig/v3.d.ts +10 -6
- package/dist/block_api_v1.d.ts +62 -58
- package/dist/block_api_v2.d.ts +51 -47
- package/dist/block_api_v3.d.ts +33 -29
- package/dist/block_migrations.cjs +481 -413
- package/dist/block_migrations.cjs.map +1 -1
- package/dist/block_migrations.d.ts +258 -204
- package/dist/block_migrations.js +482 -408
- package/dist/block_migrations.js.map +1 -1
- package/dist/block_model.cjs +312 -343
- package/dist/block_model.cjs.map +1 -1
- package/dist/block_model.d.ts +143 -147
- package/dist/block_model.js +312 -341
- package/dist/block_model.js.map +1 -1
- package/dist/block_model_legacy.cjs +231 -255
- package/dist/block_model_legacy.cjs.map +1 -1
- package/dist/block_model_legacy.d.ts +108 -106
- package/dist/block_model_legacy.js +231 -253
- package/dist/block_model_legacy.js.map +1 -1
- package/dist/block_state_patch.d.ts +10 -10
- package/dist/block_state_util.cjs +15 -19
- package/dist/block_state_util.cjs.map +1 -1
- package/dist/block_state_util.d.ts +14 -13
- package/dist/block_state_util.js +15 -18
- package/dist/block_state_util.js.map +1 -1
- package/dist/block_storage.cjs +233 -238
- package/dist/block_storage.cjs.map +1 -1
- package/dist/block_storage.d.ts +62 -78
- package/dist/block_storage.js +234 -237
- package/dist/block_storage.js.map +1 -1
- package/dist/block_storage_callbacks.cjs +156 -195
- package/dist/block_storage_callbacks.cjs.map +1 -1
- package/dist/block_storage_callbacks.js +156 -192
- package/dist/block_storage_callbacks.js.map +1 -1
- package/dist/block_storage_facade.cjs +29 -85
- package/dist/block_storage_facade.cjs.map +1 -1
- package/dist/block_storage_facade.d.ts +83 -126
- package/dist/block_storage_facade.js +29 -83
- package/dist/block_storage_facade.js.map +1 -1
- package/dist/components/PFrameForGraphs.cjs +26 -24
- package/dist/components/PFrameForGraphs.cjs.map +1 -1
- package/dist/components/PFrameForGraphs.d.ts +12 -7
- package/dist/components/PFrameForGraphs.js +25 -22
- package/dist/components/PFrameForGraphs.js.map +1 -1
- package/dist/components/PlAnnotations/filter.d.ts +62 -79
- package/dist/components/PlAnnotations/filters_ui.cjs +135 -171
- package/dist/components/PlAnnotations/filters_ui.cjs.map +1 -1
- package/dist/components/PlAnnotations/filters_ui.d.ts +48 -46
- package/dist/components/PlAnnotations/filters_ui.js +135 -170
- package/dist/components/PlAnnotations/filters_ui.js.map +1 -1
- package/dist/components/PlAnnotations/index.d.ts +2 -3
- package/dist/components/PlDataTable/index.cjs +2 -0
- package/dist/components/PlDataTable/index.d.ts +3 -5
- package/dist/components/PlDataTable/index.js +2 -0
- package/dist/components/PlDataTable/labels.cjs +59 -81
- package/dist/components/PlDataTable/labels.cjs.map +1 -1
- package/dist/components/PlDataTable/labels.js +58 -79
- package/dist/components/PlDataTable/labels.js.map +1 -1
- package/dist/components/PlDataTable/state-migration.cjs +186 -144
- package/dist/components/PlDataTable/state-migration.cjs.map +1 -1
- package/dist/components/PlDataTable/state-migration.d.ts +85 -82
- package/dist/components/PlDataTable/state-migration.js +185 -142
- package/dist/components/PlDataTable/state-migration.js.map +1 -1
- package/dist/components/PlDataTable/table.cjs +172 -194
- package/dist/components/PlDataTable/table.cjs.map +1 -1
- package/dist/components/PlDataTable/table.d.ts +16 -12
- package/dist/components/PlDataTable/table.js +171 -192
- package/dist/components/PlDataTable/table.js.map +1 -1
- package/dist/components/PlDataTable/v4.d.ts +84 -119
- package/dist/components/PlDataTable/v5.d.ts +80 -103
- package/dist/components/PlMultiSequenceAlignment.cjs +27 -29
- package/dist/components/PlMultiSequenceAlignment.cjs.map +1 -1
- package/dist/components/PlMultiSequenceAlignment.d.ts +36 -27
- package/dist/components/PlMultiSequenceAlignment.js +26 -27
- package/dist/components/PlMultiSequenceAlignment.js.map +1 -1
- package/dist/components/PlSelectionModel.cjs +7 -6
- package/dist/components/PlSelectionModel.cjs.map +1 -1
- package/dist/components/PlSelectionModel.d.ts +10 -8
- package/dist/components/PlSelectionModel.js +7 -5
- package/dist/components/PlSelectionModel.js.map +1 -1
- package/dist/components/index.cjs +8 -0
- package/dist/components/index.d.ts +11 -6
- package/dist/components/index.js +8 -0
- package/dist/config/actions.cjs +138 -171
- package/dist/config/actions.cjs.map +1 -1
- package/dist/config/actions.d.ts +47 -47
- package/dist/config/actions.js +146 -178
- package/dist/config/actions.js.map +1 -1
- package/dist/config/actions_kinds.d.ts +114 -121
- package/dist/config/index.cjs +1 -0
- package/dist/config/index.d.ts +6 -7
- package/dist/config/index.js +1 -0
- package/dist/config/model.d.ts +131 -127
- package/dist/config/model_meta.d.ts +4 -1
- package/dist/config/type_engine.d.ts +22 -21
- package/dist/config/type_util.d.ts +12 -10
- package/dist/env_value.cjs +5 -6
- package/dist/env_value.cjs.map +1 -1
- package/dist/env_value.d.ts +4 -1
- package/dist/env_value.js +5 -5
- package/dist/env_value.js.map +1 -1
- package/dist/filters/converters/filterToQuery.cjs +273 -239
- package/dist/filters/converters/filterToQuery.cjs.map +1 -1
- package/dist/filters/converters/filterToQuery.d.ts +6 -2
- package/dist/filters/converters/filterToQuery.js +272 -237
- package/dist/filters/converters/filterToQuery.js.map +1 -1
- package/dist/filters/converters/filterUiToExpressionImpl.cjs +56 -85
- package/dist/filters/converters/filterUiToExpressionImpl.cjs.map +1 -1
- package/dist/filters/converters/filterUiToExpressionImpl.d.ts +8 -4
- package/dist/filters/converters/filterUiToExpressionImpl.js +55 -83
- package/dist/filters/converters/filterUiToExpressionImpl.js.map +1 -1
- package/dist/filters/converters/index.cjs +2 -0
- package/dist/filters/converters/index.d.ts +2 -3
- package/dist/filters/converters/index.js +2 -0
- package/dist/filters/distill.cjs +59 -60
- package/dist/filters/distill.cjs.map +1 -1
- package/dist/filters/distill.d.ts +6 -3
- package/dist/filters/distill.js +58 -58
- package/dist/filters/distill.js.map +1 -1
- package/dist/filters/index.cjs +4 -0
- package/dist/filters/index.d.ts +5 -4
- package/dist/filters/index.js +4 -0
- package/dist/filters/traverse.cjs +31 -40
- package/dist/filters/traverse.cjs.map +1 -1
- package/dist/filters/traverse.js +31 -39
- package/dist/filters/traverse.js.map +1 -1
- package/dist/filters/types.d.ts +10 -7
- package/dist/index.cjs +193 -187
- package/dist/index.d.ts +61 -28
- package/dist/index.js +49 -41
- package/dist/internal.cjs +48 -62
- package/dist/internal.cjs.map +1 -1
- package/dist/internal.js +49 -60
- package/dist/internal.js.map +1 -1
- package/dist/package.cjs +12 -0
- package/dist/package.cjs.map +1 -0
- package/dist/package.js +6 -0
- package/dist/package.js.map +1 -0
- package/dist/pframe.cjs +32 -37
- package/dist/pframe.cjs.map +1 -1
- package/dist/pframe.d.ts +14 -10
- package/dist/pframe.js +32 -35
- package/dist/pframe.js.map +1 -1
- package/dist/pframe_utils/axes.cjs +81 -114
- package/dist/pframe_utils/axes.cjs.map +1 -1
- package/dist/pframe_utils/axes.d.ts +10 -13
- package/dist/pframe_utils/axes.js +80 -112
- package/dist/pframe_utils/axes.js.map +1 -1
- package/dist/pframe_utils/columns.cjs +61 -81
- package/dist/pframe_utils/columns.cjs.map +1 -1
- package/dist/pframe_utils/columns.d.ts +15 -6
- package/dist/pframe_utils/columns.js +60 -79
- package/dist/pframe_utils/columns.js.map +1 -1
- package/dist/pframe_utils/index.cjs +232 -253
- package/dist/pframe_utils/index.cjs.map +1 -1
- package/dist/pframe_utils/index.d.ts +39 -35
- package/dist/pframe_utils/index.js +231 -251
- package/dist/pframe_utils/index.js.map +1 -1
- package/dist/platforma.d.ts +48 -46
- package/dist/plugin_handle.cjs +6 -14
- package/dist/plugin_handle.cjs.map +1 -1
- package/dist/plugin_handle.d.ts +20 -25
- package/dist/plugin_handle.js +6 -13
- package/dist/plugin_handle.js.map +1 -1
- package/dist/plugin_model.cjs +364 -163
- package/dist/plugin_model.cjs.map +1 -1
- package/dist/plugin_model.d.ts +280 -129
- package/dist/plugin_model.js +362 -163
- package/dist/plugin_model.js.map +1 -1
- package/dist/raw_globals.cjs +10 -22
- package/dist/raw_globals.cjs.map +1 -1
- package/dist/raw_globals.d.ts +8 -5
- package/dist/raw_globals.js +10 -20
- package/dist/raw_globals.js.map +1 -1
- package/dist/ref_util.cjs +14 -13
- package/dist/ref_util.cjs.map +1 -1
- package/dist/ref_util.d.ts +18 -12
- package/dist/ref_util.js +14 -11
- package/dist/ref_util.js.map +1 -1
- package/dist/render/accessor.cjs +213 -226
- package/dist/render/accessor.cjs.map +1 -1
- package/dist/render/accessor.d.ts +115 -120
- package/dist/render/accessor.js +212 -224
- package/dist/render/accessor.js.map +1 -1
- package/dist/render/api.cjs +478 -580
- package/dist/render/api.cjs.map +1 -1
- package/dist/render/api.d.ts +207 -209
- package/dist/render/api.js +476 -578
- package/dist/render/api.js.map +1 -1
- package/dist/render/future.cjs +28 -32
- package/dist/render/future.cjs.map +1 -1
- package/dist/render/future.d.ts +15 -11
- package/dist/render/future.js +28 -30
- package/dist/render/future.js.map +1 -1
- package/dist/render/index.cjs +8 -0
- package/dist/render/index.d.ts +10 -8
- package/dist/render/index.js +8 -0
- package/dist/render/internal.cjs +33 -29
- package/dist/render/internal.cjs.map +1 -1
- package/dist/render/internal.d.ts +78 -72
- package/dist/render/internal.js +29 -26
- package/dist/render/internal.js.map +1 -1
- package/dist/render/traversal_ops.d.ts +42 -43
- package/dist/render/util/axis_filtering.cjs +63 -86
- package/dist/render/util/axis_filtering.cjs.map +1 -1
- package/dist/render/util/axis_filtering.d.ts +10 -7
- package/dist/render/util/axis_filtering.js +63 -85
- package/dist/render/util/axis_filtering.js.map +1 -1
- package/dist/render/util/column_collection.cjs +266 -321
- package/dist/render/util/column_collection.cjs.map +1 -1
- package/dist/render/util/column_collection.d.ts +47 -47
- package/dist/render/util/column_collection.js +264 -319
- package/dist/render/util/column_collection.js.map +1 -1
- package/dist/render/util/index.cjs +4 -0
- package/dist/render/util/index.d.ts +4 -5
- package/dist/render/util/index.js +4 -0
- package/dist/render/util/label.cjs +129 -163
- package/dist/render/util/label.cjs.map +1 -1
- package/dist/render/util/label.d.ts +45 -46
- package/dist/render/util/label.js +128 -161
- package/dist/render/util/label.js.map +1 -1
- package/dist/render/util/pcolumn_data.cjs +315 -375
- package/dist/render/util/pcolumn_data.cjs.map +1 -1
- package/dist/render/util/pcolumn_data.d.ts +33 -32
- package/dist/render/util/pcolumn_data.js +314 -373
- package/dist/render/util/pcolumn_data.js.map +1 -1
- package/dist/render/util/pframe_upgraders.cjs +37 -42
- package/dist/render/util/pframe_upgraders.cjs.map +1 -1
- package/dist/render/util/pframe_upgraders.js +37 -41
- package/dist/render/util/pframe_upgraders.js.map +1 -1
- package/dist/render/util/split_selectors.d.ts +13 -9
- package/dist/version.cjs +6 -8
- package/dist/version.cjs.map +1 -1
- package/dist/version.d.ts +7 -4
- package/dist/version.js +5 -5
- package/dist/version.js.map +1 -1
- package/package.json +15 -9
- package/src/block_migrations.test.ts +184 -14
- package/src/block_migrations.ts +185 -30
- package/src/block_model.ts +111 -66
- package/src/block_storage.test.ts +147 -3
- package/src/block_storage.ts +43 -8
- package/src/block_storage_callbacks.ts +9 -4
- package/src/env_value.ts +0 -2
- package/src/index.ts +12 -11
- package/src/internal.ts +0 -1
- package/src/platforma.ts +4 -4
- package/src/plugin_handle.ts +1 -1
- package/src/plugin_model.test.ts +217 -21
- package/src/plugin_model.ts +450 -55
- package/src/raw_globals.ts +0 -1
- package/dist/annotations/converter.d.ts.map +0 -1
- package/dist/annotations/index.d.ts.map +0 -1
- package/dist/annotations/types.d.ts.map +0 -1
- package/dist/bconfig/index.d.ts.map +0 -1
- package/dist/bconfig/lambdas.d.ts.map +0 -1
- package/dist/bconfig/normalization.d.ts.map +0 -1
- package/dist/bconfig/types.d.ts.map +0 -1
- package/dist/bconfig/util.d.ts.map +0 -1
- package/dist/bconfig/v3.d.ts.map +0 -1
- package/dist/block_api_v1.d.ts.map +0 -1
- package/dist/block_api_v2.d.ts.map +0 -1
- package/dist/block_api_v3.d.ts.map +0 -1
- package/dist/block_migrations.d.ts.map +0 -1
- package/dist/block_model.d.ts.map +0 -1
- package/dist/block_model_legacy.d.ts.map +0 -1
- package/dist/block_state_patch.d.ts.map +0 -1
- package/dist/block_state_util.d.ts.map +0 -1
- package/dist/block_storage.d.ts.map +0 -1
- package/dist/block_storage_callbacks.d.ts +0 -115
- package/dist/block_storage_callbacks.d.ts.map +0 -1
- package/dist/block_storage_facade.d.ts.map +0 -1
- package/dist/components/PFrameForGraphs.d.ts.map +0 -1
- package/dist/components/PlAnnotations/filter.d.ts.map +0 -1
- package/dist/components/PlAnnotations/filters_ui.d.ts.map +0 -1
- package/dist/components/PlAnnotations/index.d.ts.map +0 -1
- package/dist/components/PlAnnotations/types.d.ts +0 -3
- package/dist/components/PlAnnotations/types.d.ts.map +0 -1
- package/dist/components/PlDataTable/index.d.ts.map +0 -1
- package/dist/components/PlDataTable/labels.d.ts +0 -7
- package/dist/components/PlDataTable/labels.d.ts.map +0 -1
- package/dist/components/PlDataTable/state-migration.d.ts.map +0 -1
- package/dist/components/PlDataTable/table.d.ts.map +0 -1
- package/dist/components/PlDataTable/v4.d.ts.map +0 -1
- package/dist/components/PlDataTable/v5.d.ts.map +0 -1
- package/dist/components/PlMultiSequenceAlignment.d.ts.map +0 -1
- package/dist/components/PlSelectionModel.d.ts.map +0 -1
- package/dist/components/index.d.ts.map +0 -1
- package/dist/config/actions.d.ts.map +0 -1
- package/dist/config/actions_kinds.d.ts.map +0 -1
- package/dist/config/index.d.ts.map +0 -1
- package/dist/config/model.d.ts.map +0 -1
- package/dist/config/model_meta.d.ts.map +0 -1
- package/dist/config/type_engine.d.ts.map +0 -1
- package/dist/config/type_util.d.ts.map +0 -1
- package/dist/env_value.d.ts.map +0 -1
- package/dist/filters/converters/filterToQuery.d.ts.map +0 -1
- package/dist/filters/converters/filterUiToExpressionImpl.d.ts.map +0 -1
- package/dist/filters/converters/index.d.ts.map +0 -1
- package/dist/filters/distill.d.ts.map +0 -1
- package/dist/filters/index.d.ts.map +0 -1
- package/dist/filters/traverse.d.ts +0 -27
- package/dist/filters/traverse.d.ts.map +0 -1
- package/dist/filters/types.d.ts.map +0 -1
- package/dist/index.cjs.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/internal.d.ts +0 -36
- package/dist/internal.d.ts.map +0 -1
- package/dist/package.json.cjs +0 -6
- package/dist/package.json.cjs.map +0 -1
- package/dist/package.json.js +0 -4
- package/dist/package.json.js.map +0 -1
- package/dist/pframe.d.ts.map +0 -1
- package/dist/pframe_utils/axes.d.ts.map +0 -1
- package/dist/pframe_utils/columns.d.ts.map +0 -1
- package/dist/pframe_utils/index.d.ts.map +0 -1
- package/dist/pframe_utils/querySpec.d.ts +0 -2
- package/dist/pframe_utils/querySpec.d.ts.map +0 -1
- package/dist/platforma.d.ts.map +0 -1
- package/dist/plugin_handle.d.ts.map +0 -1
- package/dist/plugin_model.d.ts.map +0 -1
- package/dist/raw_globals.d.ts.map +0 -1
- package/dist/ref_util.d.ts.map +0 -1
- package/dist/render/accessor.d.ts.map +0 -1
- package/dist/render/api.d.ts.map +0 -1
- package/dist/render/future.d.ts.map +0 -1
- package/dist/render/index.d.ts.map +0 -1
- package/dist/render/internal.d.ts.map +0 -1
- package/dist/render/traversal_ops.d.ts.map +0 -1
- package/dist/render/util/axis_filtering.d.ts.map +0 -1
- package/dist/render/util/column_collection.d.ts.map +0 -1
- package/dist/render/util/index.d.ts.map +0 -1
- package/dist/render/util/label.d.ts.map +0 -1
- package/dist/render/util/pcolumn_data.d.ts.map +0 -1
- package/dist/render/util/pframe_upgraders.d.ts +0 -3
- package/dist/render/util/pframe_upgraders.d.ts.map +0 -1
- package/dist/render/util/split_selectors.d.ts.map +0 -1
- package/dist/version.d.ts.map +0 -1
package/dist/plugin_model.d.ts
CHANGED
|
@@ -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
|
-
*
|
|
18
|
+
* Plugin data model with typed migration chain and config-aware initialization.
|
|
3
19
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
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
|
-
* @
|
|
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
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
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
|
-
*
|
|
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
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
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
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
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
|
|
98
|
-
*
|
|
99
|
-
* const dataTable = PluginModel.define<TableData, TableParams, TableConfig>({
|
|
257
|
+
* const dataTable = PluginModel.define({
|
|
100
258
|
* name: 'dataTable' as PluginName,
|
|
101
|
-
* data:
|
|
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
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
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
|
-
|
|
306
|
+
//#endregion
|
|
307
|
+
export { PluginConfig, PluginData, PluginDataModel, PluginDataModelBuilder, PluginFactory, PluginInstance, PluginModel, PluginOutputs, PluginParams };
|
|
157
308
|
//# sourceMappingURL=plugin_model.d.ts.map
|