@platforma-sdk/model 1.81.1 → 1.83.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.
- package/dist/bconfig/index.d.ts +2 -2
- package/dist/bconfig/lambdas.d.ts +2 -12
- package/dist/bconfig/lambdas.d.ts.map +1 -1
- package/dist/bconfig/v3.d.ts +1 -1
- package/dist/block_migrations.cjs +92 -8
- package/dist/block_migrations.cjs.map +1 -1
- package/dist/block_migrations.d.ts +121 -32
- package/dist/block_migrations.d.ts.map +1 -1
- package/dist/block_migrations.js +92 -8
- package/dist/block_migrations.js.map +1 -1
- package/dist/block_model.cjs +71 -17
- package/dist/block_model.cjs.map +1 -1
- package/dist/block_model.d.ts +58 -22
- package/dist/block_model.d.ts.map +1 -1
- package/dist/block_model.js +72 -18
- package/dist/block_model.js.map +1 -1
- package/dist/block_storage_callbacks.cjs +194 -13
- package/dist/block_storage_callbacks.cjs.map +1 -1
- package/dist/block_storage_callbacks.js +192 -15
- package/dist/block_storage_callbacks.js.map +1 -1
- package/dist/block_storage_facade.cjs +4 -1
- package/dist/block_storage_facade.cjs.map +1 -1
- package/dist/block_storage_facade.d.ts +102 -0
- package/dist/block_storage_facade.d.ts.map +1 -1
- package/dist/block_storage_facade.js +4 -1
- package/dist/block_storage_facade.js.map +1 -1
- package/dist/config/index.d.ts +2 -6
- package/dist/config/type_engine.d.ts +7 -28
- package/dist/config/type_engine.d.ts.map +1 -1
- package/dist/index.cjs +20 -60
- package/dist/index.d.ts +5 -11
- package/dist/index.js +4 -8
- package/dist/package.cjs +1 -1
- package/dist/package.js +1 -1
- package/dist/render/api.cjs +0 -22
- package/dist/render/api.cjs.map +1 -1
- package/dist/render/api.d.ts +1 -9
- package/dist/render/api.d.ts.map +1 -1
- package/dist/render/api.js +1 -22
- package/dist/render/api.js.map +1 -1
- package/dist/render/index.cjs +0 -1
- package/dist/render/index.d.ts +2 -2
- package/dist/render/index.js +2 -2
- package/package.json +10 -9
- package/src/bconfig/lambdas.ts +1 -25
- package/src/block_migrations.ts +205 -55
- package/src/block_model.ts +190 -59
- package/src/block_storage_callbacks.ts +294 -15
- package/src/block_storage_facade.ts +95 -0
- package/src/config/index.ts +0 -4
- package/src/config/type_engine.ts +6 -49
- package/src/index.ts +0 -2
- package/src/kind_reference.test.ts +134 -0
- package/src/render/api.ts +0 -32
- package/src/template_init.test.ts +413 -0
- package/src/template_params.test.ts +135 -0
- package/src/typing.test.ts +4 -143
- package/dist/block_model_legacy.cjs +0 -240
- package/dist/block_model_legacy.cjs.map +0 -1
- package/dist/block_model_legacy.d.ts +0 -115
- package/dist/block_model_legacy.d.ts.map +0 -1
- package/dist/block_model_legacy.js +0 -240
- package/dist/block_model_legacy.js.map +0 -1
- package/dist/config/actions.cjs +0 -232
- package/dist/config/actions.cjs.map +0 -1
- package/dist/config/actions.d.ts +0 -48
- package/dist/config/actions.d.ts.map +0 -1
- package/dist/config/actions.js +0 -201
- package/dist/config/actions.js.map +0 -1
- package/dist/config/actions_kinds.d.ts +0 -116
- package/dist/config/actions_kinds.d.ts.map +0 -1
- package/dist/config/index.cjs +0 -33
- package/dist/config/index.js +0 -2
- package/dist/config/model_meta.d.ts +0 -9
- package/dist/config/model_meta.d.ts.map +0 -1
- package/dist/config/type_util.d.ts +0 -14
- package/dist/config/type_util.d.ts.map +0 -1
- package/dist/ref_util.cjs +0 -21
- package/dist/ref_util.cjs.map +0 -1
- package/dist/ref_util.d.ts +0 -19
- package/dist/ref_util.d.ts.map +0 -1
- package/dist/ref_util.js +0 -20
- package/dist/ref_util.js.map +0 -1
- package/src/block_model_legacy.ts +0 -465
- package/src/config/actions.ts +0 -468
- package/src/config/actions_kinds.ts +0 -264
- package/src/config/model_meta.ts +0 -5
- package/src/config/type_util.ts +0 -25
- package/src/ref_util.ts +0 -17
package/dist/index.cjs
CHANGED
|
@@ -4,8 +4,7 @@ const require_plugin_handle = require("./plugin_handle.cjs");
|
|
|
4
4
|
const require_block_migrations = require("./block_migrations.cjs");
|
|
5
5
|
const require_block_storage = require("./block_storage.cjs");
|
|
6
6
|
const require_block_storage_facade = require("./block_storage_facade.cjs");
|
|
7
|
-
const
|
|
8
|
-
require("./config/index.cjs");
|
|
7
|
+
const require_block_services = require("./services/block_services.cjs");
|
|
9
8
|
const require_future = require("./render/future.cjs");
|
|
10
9
|
const require_accessor = require("./render/accessor.cjs");
|
|
11
10
|
const require_internal = require("./render/internal.cjs");
|
|
@@ -14,28 +13,26 @@ const require_derive_distinct_labels = require("./labels/derive_distinct_labels.
|
|
|
14
13
|
const require_label = require("./render/util/label.cjs");
|
|
15
14
|
const require_pcolumn_data = require("./render/util/pcolumn_data.cjs");
|
|
16
15
|
const require_column_collection = require("./render/util/column_collection.cjs");
|
|
17
|
-
const require_block_services = require("./services/block_services.cjs");
|
|
18
16
|
const require_service_bridge = require("./services/service_bridge.cjs");
|
|
19
17
|
const require_get_services = require("./services/get_services.cjs");
|
|
20
18
|
require("./services/index.cjs");
|
|
21
19
|
const require_api = require("./render/api.cjs");
|
|
22
20
|
require("./render/index.cjs");
|
|
21
|
+
const require_plugin_model = require("./plugin_model.cjs");
|
|
23
22
|
const require_version = require("./version.cjs");
|
|
24
23
|
const require_types = require("./bconfig/types.cjs");
|
|
25
24
|
const require_normalization = require("./bconfig/normalization.cjs");
|
|
26
25
|
require("./bconfig/index.cjs");
|
|
27
|
-
const require_block_model_legacy = require("./block_model_legacy.cjs");
|
|
28
|
-
const require_plugin_model = require("./plugin_model.cjs");
|
|
29
26
|
const require_block_model = require("./block_model.cjs");
|
|
30
27
|
const require_axes = require("./pframe_utils/axes.cjs");
|
|
31
28
|
const require_column = require("./columns/column.cjs");
|
|
32
29
|
const require_column_discovered_recipe = require("./columns/column_recipes/column_discovered_recipe.cjs");
|
|
33
30
|
const require_column_filtered_recipe = require("./columns/column_recipes/column_filtered_recipe.cjs");
|
|
34
|
-
const require_index$
|
|
31
|
+
const require_index$3 = require("./columns/column_recipes/index.cjs");
|
|
35
32
|
const require_column_overrided_recipe = require("./columns/column_recipes/column_overrided_recipe.cjs");
|
|
36
33
|
const require_data_column = require("./columns/data_column.cjs");
|
|
37
34
|
const require_providers = require("./columns/column_providers/providers.cjs");
|
|
38
|
-
const require_index$
|
|
35
|
+
const require_index$4 = require("./columns/column_providers/index.cjs");
|
|
39
36
|
const require_columns_collection = require("./columns/columns_collection.cjs");
|
|
40
37
|
const require_utils = require("./columns/utils.cjs");
|
|
41
38
|
const require_derive_axis_values_labels = require("./columns/derive_axis_values_labels.cjs");
|
|
@@ -58,25 +55,22 @@ const require_utils$1 = require("./components/PlDataTable/createPlDataTable/util
|
|
|
58
55
|
const require_createPlDataTableV2 = require("./components/PlDataTable/createPlDataTable/createPlDataTableV2.cjs");
|
|
59
56
|
const require_discoverColumns = require("./components/PlDataTable/createPlDataTable/discoverColumns.cjs");
|
|
60
57
|
const require_createPlDataTableV3 = require("./components/PlDataTable/createPlDataTable/createPlDataTableV3.cjs");
|
|
61
|
-
const require_index$
|
|
58
|
+
const require_index$7 = require("./components/PlDataTable/createPlDataTable/index.cjs");
|
|
62
59
|
const require_PlMultiSequenceAlignment = require("./components/PlMultiSequenceAlignment.cjs");
|
|
63
60
|
const require_PlSelectionModel = require("./components/PlSelectionModel.cjs");
|
|
64
61
|
require("./components/index.cjs");
|
|
65
62
|
const require_pframe = require("./pframe.cjs");
|
|
66
63
|
require("./labels/index.cjs");
|
|
67
|
-
const require_ref_util = require("./ref_util.cjs");
|
|
68
64
|
const require_raw_globals = require("./raw_globals.cjs");
|
|
69
65
|
const require_converter = require("./annotations/converter.cjs");
|
|
70
66
|
require("./annotations/index.cjs");
|
|
71
|
-
const require_index$
|
|
67
|
+
const require_index$11 = require("./pframe_utils/index.cjs");
|
|
72
68
|
const require_env_value = require("./env_value.cjs");
|
|
73
69
|
exports.AccessorColumnsProvider = require_providers.AccessorColumnsProvider;
|
|
74
70
|
exports.AccessorColumnsProviderImpl = require_providers.AccessorColumnsProviderImpl;
|
|
75
|
-
exports.Args = require_actions.Args;
|
|
76
71
|
exports.ArrayColumnsProvider = require_providers.ArrayColumnsProvider;
|
|
77
72
|
exports.BLOCK_SERVICE_FLAGS = require_block_services.BLOCK_SERVICE_FLAGS;
|
|
78
73
|
exports.BLOCK_STORAGE_FACADE_VERSION = require_block_storage_facade.BLOCK_STORAGE_FACADE_VERSION;
|
|
79
|
-
exports.BlockModel = require_block_model_legacy.BlockModel;
|
|
80
74
|
exports.BlockModelV3 = require_block_model.BlockModelV3;
|
|
81
75
|
exports.BlockRenderCtx = require_api.BlockRenderCtx;
|
|
82
76
|
exports.BlockStorageFacadeCallbacks = require_block_storage_facade.BlockStorageFacadeCallbacks;
|
|
@@ -86,7 +80,7 @@ exports.ColumnAbsentError = require_data_column.ColumnAbsentError;
|
|
|
86
80
|
exports.ColumnDiscoveredRecipe = require_column_discovered_recipe.ColumnDiscoveredRecipe;
|
|
87
81
|
exports.ColumnFilteredRecipe = require_column_filtered_recipe.ColumnFilteredRecipe;
|
|
88
82
|
exports.ColumnOverriddenRecipe = require_column_overrided_recipe.ColumnOverriddenRecipe;
|
|
89
|
-
exports.ColumnRecipe = require_index$
|
|
83
|
+
exports.ColumnRecipe = require_index$3.ColumnRecipe;
|
|
90
84
|
exports.ColumnsCollection = require_columns_collection.ColumnsCollection;
|
|
91
85
|
exports.ColumnsCollectionImpl = require_columns_collection.ColumnsCollectionImpl;
|
|
92
86
|
exports.ColumnsProvider = require_providers.ColumnsProvider;
|
|
@@ -96,7 +90,6 @@ exports.DataColumnImpl = require_data_column.DataColumnImpl;
|
|
|
96
90
|
exports.DataModel = require_block_migrations.DataModel;
|
|
97
91
|
exports.DataModelBuilder = require_block_migrations.DataModelBuilder;
|
|
98
92
|
exports.FutureRef = require_future.FutureRef;
|
|
99
|
-
exports.It = require_actions.It;
|
|
100
93
|
Object.defineProperty(exports, "JsRenderInternal", {
|
|
101
94
|
enumerable: true,
|
|
102
95
|
get: function() {
|
|
@@ -104,7 +97,6 @@ Object.defineProperty(exports, "JsRenderInternal", {
|
|
|
104
97
|
}
|
|
105
98
|
});
|
|
106
99
|
exports.MainAccessorName = require_internal.MainAccessorName;
|
|
107
|
-
exports.MainOutputs = require_actions.MainOutputs;
|
|
108
100
|
exports.OutputError = require_block_state_util.OutputError;
|
|
109
101
|
exports.PColumnCollection = require_column_collection.PColumnCollection;
|
|
110
102
|
exports.PFrameImpl = require_pframe.PFrameImpl;
|
|
@@ -123,17 +115,13 @@ exports.RT_PARQUET_SUPER_PARTITIONED = require_pcolumn_data.RT_PARQUET_SUPER_PAR
|
|
|
123
115
|
exports.RT_RESOURCE_MAP = require_pcolumn_data.RT_RESOURCE_MAP;
|
|
124
116
|
exports.RT_RESOURCE_MAP_PARTITIONED = require_pcolumn_data.RT_RESOURCE_MAP_PARTITIONED;
|
|
125
117
|
exports.RenderCtxBase = require_api.RenderCtxBase;
|
|
126
|
-
exports.RenderCtxLegacy = require_api.RenderCtxLegacy;
|
|
127
118
|
exports.ResultPool = require_api.ResultPool;
|
|
128
119
|
exports.ResultPoolColumnsProvider = require_providers.ResultPoolColumnsProvider;
|
|
129
120
|
exports.ResultPoolColumnsProviderImpl = require_providers.ResultPoolColumnsProviderImpl;
|
|
130
121
|
exports.StagingAccessorName = require_internal.StagingAccessorName;
|
|
131
|
-
exports.StagingOutputs = require_actions.StagingOutputs;
|
|
132
122
|
exports.TreeNodeAccessor = require_accessor.TreeNodeAccessor;
|
|
133
|
-
exports.
|
|
134
|
-
exports._ctxProvidersCache = require_index$5._ctxProvidersCache;
|
|
123
|
+
exports._ctxProvidersCache = require_index$4._ctxProvidersCache;
|
|
135
124
|
exports.allPColumnsReady = require_pcolumn_data.allPColumnsReady;
|
|
136
|
-
exports.and = require_actions.and;
|
|
137
125
|
exports.blockServiceNames = require_block_services.blockServiceNames;
|
|
138
126
|
exports.buildDatasetOptions = require_build_dataset_options.buildDatasetOptions;
|
|
139
127
|
exports.buildRefMap = require_filter_discovery.buildRefMap;
|
|
@@ -151,7 +139,7 @@ exports.createBlockStorage = require_block_storage.createBlockStorage;
|
|
|
151
139
|
exports.createDatasetSelection = require_dataset_selection.createDatasetSelection;
|
|
152
140
|
exports.createDefaultPTableParams = require_state_migration.createDefaultPTableParams;
|
|
153
141
|
exports.createPFrameForGraphs = require_PFrameForGraphs.createPFrameForGraphs;
|
|
154
|
-
exports.createPlDataTable = require_index$
|
|
142
|
+
exports.createPlDataTable = require_index$7.createPlDataTable;
|
|
155
143
|
exports.createPlDataTableSheet = require_createPlDataTableSheet.createPlDataTableSheet;
|
|
156
144
|
exports.createPlDataTableStateV2 = require_state_migration.createPlDataTableStateV2;
|
|
157
145
|
exports.createPlDataTableV2 = require_createPlDataTableV2.createPlDataTableV2;
|
|
@@ -169,54 +157,35 @@ exports.discoverTableColumnSnaphots = require_discoverColumns.discoverTableColum
|
|
|
169
157
|
exports.distillFilterSpec = require_distill.distillFilterSpec;
|
|
170
158
|
exports.downgradeCfgOrLambda = require_normalization.downgradeCfgOrLambda;
|
|
171
159
|
exports.enrichCompatible = require_axes.enrichCompatible;
|
|
172
|
-
exports.extractArchiveAndGetURL = require_actions.extractArchiveAndGetURL;
|
|
173
160
|
exports.extractConfig = require_normalization.extractConfig;
|
|
174
161
|
exports.filterDataInfoEntries = require_axis_filtering.filterDataInfoEntries;
|
|
175
162
|
exports.filterMatchesToOptions = require_filter_discovery.filterMatchesToOptions;
|
|
176
163
|
exports.filterSpecToSpecQueryExpr = require_filterToQuery.filterSpecToSpecQueryExpr;
|
|
177
164
|
exports.finalizePColumnData = require_api.finalizePColumnData;
|
|
178
165
|
exports.findFilterColumns = require_filter_discovery.findFilterColumns;
|
|
179
|
-
exports.flatten = require_actions.flatten;
|
|
180
|
-
exports.fromPlOption = require_ref_util.fromPlOption;
|
|
181
|
-
exports.fromPlRef = require_ref_util.fromPlRef;
|
|
182
166
|
exports.getAllRelatedColumns = require_columns.getAllRelatedColumns;
|
|
183
167
|
exports.getAvailableWithLinkersAxes = require_axes.getAvailableWithLinkersAxes;
|
|
184
|
-
exports.getAxisUniqueValues = require_index$
|
|
185
|
-
exports.
|
|
186
|
-
exports.
|
|
187
|
-
exports.
|
|
188
|
-
exports.
|
|
189
|
-
exports.
|
|
190
|
-
exports.getColumnUniqueValues = require_index$12.getColumnUniqueValues;
|
|
191
|
-
exports.getColumnsFull = require_index$12.getColumnsFull;
|
|
192
|
-
exports.getCtxProviders = require_index$5.getCtxProviders;
|
|
193
|
-
exports.getDownloadedBlobContent = require_actions.getDownloadedBlobContent;
|
|
168
|
+
exports.getAxisUniqueValues = require_index$11.getAxisUniqueValues;
|
|
169
|
+
exports.getColumnOrAxisValueLabelsId = require_index$11.getColumnOrAxisValueLabelsId;
|
|
170
|
+
exports.getColumnSpecById = require_index$11.getColumnSpecById;
|
|
171
|
+
exports.getColumnUniqueValues = require_index$11.getColumnUniqueValues;
|
|
172
|
+
exports.getColumnsFull = require_index$11.getColumnsFull;
|
|
173
|
+
exports.getCtxProviders = require_index$4.getCtxProviders;
|
|
194
174
|
exports.getEffectiveVisibility = require_utils$1.getEffectiveVisibility;
|
|
195
175
|
exports.getEnvironmentValue = require_env_value.getEnvironmentValue;
|
|
196
|
-
exports.getFromCfg = require_actions.getFromCfg;
|
|
197
|
-
exports.getImmediate = require_actions.getImmediate;
|
|
198
|
-
exports.getImportProgress = require_actions.getImportProgress;
|
|
199
|
-
exports.getJsonField = require_actions.getJsonField;
|
|
200
|
-
exports.getLastLogs = require_actions.getLastLogs;
|
|
201
|
-
exports.getLogHandle = require_actions.getLogHandle;
|
|
202
176
|
exports.getNumberOfRows = require_pcolumn_data.getNumberOfRows;
|
|
203
|
-
exports.getOnDemandBlobContent = require_actions.getOnDemandBlobContent;
|
|
204
177
|
exports.getOrderPriority = require_utils$1.getOrderPriority;
|
|
205
178
|
exports.getPartitionKeysList = require_pcolumn_data.getPartitionKeysList;
|
|
206
179
|
exports.getPlatformaApiVersion = require_raw_globals.getPlatformaApiVersion;
|
|
207
180
|
exports.getPluginData = require_block_storage.getPluginData;
|
|
208
|
-
exports.getProgressLog = require_actions.getProgressLog;
|
|
209
|
-
exports.getProgressLogWithInfo = require_actions.getProgressLogWithInfo;
|
|
210
181
|
exports.getRawPlatformaInstance = require_raw_globals.getRawPlatformaInstance;
|
|
211
182
|
exports.getRelatedColumns = require_columns.getRelatedColumns;
|
|
212
|
-
exports.getRequestColumnsFromSelectedSources = require_index$
|
|
213
|
-
exports.getResourceField = require_actions.getResourceField;
|
|
214
|
-
exports.getResourceValueAsJson = require_actions.getResourceValueAsJson;
|
|
183
|
+
exports.getRequestColumnsFromSelectedSources = require_index$11.getRequestColumnsFromSelectedSources;
|
|
215
184
|
exports.getService = require_get_services.getService;
|
|
216
|
-
exports.getSingleColumnData = require_index$
|
|
185
|
+
exports.getSingleColumnData = require_index$11.getSingleColumnData;
|
|
217
186
|
exports.getStorageData = require_block_storage.getStorageData;
|
|
218
187
|
exports.getUniquePartitionKeys = require_pcolumn_data.getUniquePartitionKeys;
|
|
219
|
-
exports.getUniqueSourceValuesWithLabels = require_index$
|
|
188
|
+
exports.getUniqueSourceValuesWithLabels = require_index$11.getUniqueSourceValuesWithLabels;
|
|
220
189
|
exports.hasColumnData = require_utils.hasColumnData;
|
|
221
190
|
exports.hasReachableData = require_utils.hasReachableData;
|
|
222
191
|
exports.hasSingleDataColumn = require_utils.hasSingleDataColumn;
|
|
@@ -226,27 +195,18 @@ exports.isBlockStorage = require_block_storage.isBlockStorage;
|
|
|
226
195
|
exports.isColumn = require_column.isColumn;
|
|
227
196
|
exports.isColumnHidden = require_utils$1.isColumnHidden;
|
|
228
197
|
exports.isColumnOptional = require_utils$1.isColumnOptional;
|
|
229
|
-
exports.isColumnProvider = require_index$
|
|
198
|
+
exports.isColumnProvider = require_index$4.isColumnProvider;
|
|
230
199
|
exports.isColumnsCollection = require_columns_collection.isColumnsCollection;
|
|
231
200
|
exports.isConfigLambda = require_types.isConfigLambda;
|
|
232
201
|
exports.isDataColumn = require_data_column.isDataColumn;
|
|
233
202
|
exports.isDatasetSelection = require_dataset_selection.isDatasetSelection;
|
|
234
|
-
exports.isEmpty = require_actions.isEmpty;
|
|
235
203
|
exports.isHiddenFromGraphColumn = require_PFrameForGraphs.isHiddenFromGraphColumn;
|
|
236
204
|
exports.isHiddenFromUIColumn = require_PFrameForGraphs.isHiddenFromUIColumn;
|
|
237
205
|
exports.isLeafColumn = require_utils.isLeafColumn;
|
|
238
206
|
exports.isPColumnReady = require_pcolumn_data.isPColumnReady;
|
|
239
207
|
exports.isPluginOutputKey = require_plugin_handle.isPluginOutputKey;
|
|
240
|
-
exports.isolate = require_actions.isolate;
|
|
241
|
-
exports.makeArray = require_actions.makeArray;
|
|
242
|
-
exports.makeObject = require_actions.makeObject;
|
|
243
|
-
exports.mapArrayValues = require_actions.mapArrayValues;
|
|
244
|
-
exports.mapRecordValues = require_actions.mapRecordValues;
|
|
245
|
-
exports.mapResourceFields = require_actions.mapResourceFields;
|
|
246
208
|
exports.migrateBlockStorage = require_block_storage.migrateBlockStorage;
|
|
247
209
|
exports.normalizeBlockStorage = require_block_storage.normalizeBlockStorage;
|
|
248
|
-
exports.not = require_actions.not;
|
|
249
|
-
exports.or = require_actions.or;
|
|
250
210
|
exports.parsePColumnData = require_pcolumn_data.parsePColumnData;
|
|
251
211
|
exports.parseResourceMap = require_pcolumn_data.parseResourceMap;
|
|
252
212
|
exports.pluginOutputKey = require_plugin_handle.pluginOutputKey;
|
|
@@ -255,7 +215,7 @@ exports.queriesQualifications = require_utils.queriesQualifications;
|
|
|
255
215
|
exports.readOutput = require_block_state_util.readOutput;
|
|
256
216
|
exports.registerFacadeCallbacks = require_block_storage_facade.registerFacadeCallbacks;
|
|
257
217
|
exports.splitByAxes = require_split_by_axes.splitByAxes;
|
|
258
|
-
exports.toColumnProvider = require_index$
|
|
218
|
+
exports.toColumnProvider = require_index$4.toColumnProvider;
|
|
259
219
|
exports.unreachable = require_filters_ui.unreachable;
|
|
260
220
|
exports.updateStorageData = require_block_storage.updateStorageData;
|
|
261
221
|
exports.upgradePlDataTableStateV2 = require_state_migration.upgradePlDataTableStateV2;
|
package/dist/index.d.ts
CHANGED
|
@@ -4,13 +4,9 @@ import { InferFactoryData, InferFactoryModelServices, InferFactoryOutputs, Infer
|
|
|
4
4
|
import { DataModel, DataModelBuilder } from "./block_migrations.js";
|
|
5
5
|
import { BlockStorage, BlockStorageSchemaVersion, MigrateBlockStorageConfig, MigrationFailure, MigrationResult, MigrationSuccess, MutateStoragePayload, PluginName, PluginRegistry, VersionedData, createBlockStorage, deriveDataFromStorage, getPluginData, getStorageData, isBlockStorage, migrateBlockStorage, normalizeBlockStorage, updateStorageData } from "./block_storage.js";
|
|
6
6
|
import { Cfg, CfgAnd, CfgBlobContent, CfgBlobContentAsJson, CfgBlobContentAsString, CfgDownloadedBlobContent, CfgExtractArchiveAndGetURL, CfgFlatten, CfgGetFromCtx, CfgGetJsonField, CfgGetResourceField, CfgImmediate, CfgImportProgress, CfgIsEmpty, CfgIsolate, CfgLastLogs, CfgLogHandle, CfgMakeArray, CfgMakeObject, CfgMapArrayValues, CfgMapRecordValues, CfgMapResourceFields, CfgNot, CfgOnDemandBlobContent, CfgOr, CfgProgressLog, CfgProgressLogWithInfo, CfgResourceValueAsJson } from "./config/model.js";
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import { ActAnd, ActExtractArchiveAndGetURL, ActFlatten, ActGetBlobContent, ActGetBlobContentAsJson, ActGetBlobContentAsString, ActGetDownloadedBlobContent, ActGetField, ActGetFromCtx, ActGetImmediate, ActGetLastLogs, ActGetLogHandle, ActGetOnDemandBlobContent, ActGetProgressLog, ActGetProgressLogWithInfo, ActGetResourceField, ActGetResourceValueAsJson, ActImportProgress, ActIsEmpty, ActIsolate, ActMakeArray, ActMakeObject, ActMapArrayValues, ActMapRecordValues, ActMapResourceFields, ActNot, ActOr } from "./config/actions_kinds.js";
|
|
10
|
-
import { Args, It, MainOutputs, StagingOutputs, UiState, and, extractArchiveAndGetURL, flatten, getBlobContent, getBlobContentAsJson, getBlobContentAsString, getDownloadedBlobContent, getFromCfg, getImmediate, getImportProgress, getJsonField, getLastLogs, getLogHandle, getOnDemandBlobContent, getProgressLog, getProgressLogWithInfo, getResourceField, getResourceValueAsJson, isEmpty, isolate, makeArray, makeObject, mapArrayValues, mapRecordValues, mapResourceFields, not, or } from "./config/actions.js";
|
|
11
|
-
import { CfgRenderingMode } from "./config/model_meta.js";
|
|
7
|
+
import { OptionalPlResourceEntry, PlResourceEntry, TypedConfig } from "./config/type_engine.js";
|
|
8
|
+
import { ConfigRenderLambda, ConfigRenderLambdaFlags, ExtractFunctionHandleReturn, InferOutputsFromLambdas, StdCtx, StdCtxArgsOnly } from "./bconfig/lambdas.js";
|
|
12
9
|
import { TypedConfigOrConfigLambda, TypedConfigOrString, isConfigLambda } from "./bconfig/types.js";
|
|
13
|
-
import { ConfigRenderLambda, ConfigRenderLambdaFlags, ExtractFunctionHandleReturn, InferOutputType, InferOutputsFromConfigs, InferOutputsFromLambdas, ResolveCfgType, StdCtx, StdCtxArgsOnly } from "./bconfig/lambdas.js";
|
|
14
10
|
import { BlockConfig, BlockConfigV3, BlockConfigV4 } from "./bconfig/v3.js";
|
|
15
11
|
import { downgradeCfgOrLambda, extractConfig } from "./bconfig/normalization.js";
|
|
16
12
|
import { DeriveHref } from "./bconfig/util.js";
|
|
@@ -27,13 +23,12 @@ import { TreeNodeAccessor, ifDef } from "./render/accessor.js";
|
|
|
27
23
|
import { DeriveLabelsFormatters, DeriveLabelsOptions, Entry, LinkerStep, Trace, TraceEntry, deriveDistinctLabels } from "./labels/derive_distinct_labels.js";
|
|
28
24
|
import { deriveLabels } from "./render/util/label.js";
|
|
29
25
|
import { AxisLabelProvider, ColumnProvider, PColumnCollection, PColumnEntryUniversal, PColumnEntryWithLabel, PColumnUniversal, PColumnWithLabel } from "./render/util/column_collection.js";
|
|
30
|
-
import { BlockRenderCtx, InferRenderFunctionReturn, PluginRenderCtx, RenderCtx, RenderCtxBase,
|
|
26
|
+
import { BlockRenderCtx, InferRenderFunctionReturn, PluginRenderCtx, RenderCtx, RenderCtxBase, RenderFunction, ResultPool, UniversalColumnOption, UnwrapFutureRef, finalizePColumnData } from "./render/api.js";
|
|
31
27
|
import { PColumnKeyList, PColumnResourceMapData, PColumnResourceMapEntry, RT_BINARY_PARTITIONED, RT_BINARY_SUPER_PARTITIONED, RT_JSON_PARTITIONED, RT_JSON_SUPER_PARTITIONED, RT_PARQUET_PARTITIONED, RT_PARQUET_SUPER_PARTITIONED, RT_RESOURCE_MAP, RT_RESOURCE_MAP_PARTITIONED, allPColumnsReady, convertOrParsePColumnData, getNumberOfRows, getPartitionKeysList, getUniquePartitionKeys, isPColumnReady, parsePColumnData, parseResourceMap } from "./render/util/pcolumn_data.js";
|
|
32
28
|
import { filterDataInfoEntries } from "./render/util/axis_filtering.js";
|
|
33
29
|
import { PluginConfig, PluginData, PluginDataModel, PluginDataModelBuilder, PluginDataModelVersions, PluginFactory, PluginInstance, PluginModel, PluginOutputs, PluginParams, PluginPublicOutputs, PublicOutputFieldDef } from "./plugin_model.js";
|
|
34
|
-
import { BlockModelV3, ParamsInput, PluginRecord } from "./block_model.js";
|
|
35
30
|
import { BlockModelInfo, InferArgsType, InferBlockState, InferBlockStatePatch, InferDataType, InferHrefType, InferOutputsType, InferPluginData, InferPluginNames, InferPluginUiEntries, InferUiState, Platforma, PlatformaApiVersion, PlatformaExtended, PlatformaFactory, PlatformaV1, PlatformaV2, PlatformaV3 } from "./platforma.js";
|
|
36
|
-
import {
|
|
31
|
+
import { BlockModelV3, ParamsInput, PluginRecord } from "./block_model.js";
|
|
37
32
|
import { AxesVault, enrichCompatible, getAvailableWithLinkersAxes } from "./pframe_utils/axes.js";
|
|
38
33
|
import { createPFrameForGraphs, isHiddenFromGraphColumn, isHiddenFromUIColumn } from "./components/PFrameForGraphs.js";
|
|
39
34
|
import { AndFilter, AnnotationFilter, AnnotationMode, AnnotationScript, AnnotationScript2, AnnotationStep, IsNA, Log10, NotFilter, NumericalComparisonFilter, OrFilter, PatternFilter, PatternPredicate, PatternPredicateContainSubsequence, PatternPredicateEquals, SortedCumulativeSum, TransformedColumn, ValueRank } from "./components/PlAnnotations/filter.js";
|
|
@@ -73,7 +68,6 @@ import { PTableKey, PlSelectionModel, createPlSelectionModel } from "./component
|
|
|
73
68
|
import { PColumnPredicate, PlMultiSequenceAlignmentColorSchemeOption, PlMultiSequenceAlignmentModel, PlMultiSequenceAlignmentSettings, PlMultiSequenceAlignmentWidget, createRowSelectionColumn } from "./components/PlMultiSequenceAlignment.js";
|
|
74
69
|
import { PFrameImpl } from "./pframe.js";
|
|
75
70
|
import { TooltipEntry, deriveDistinctTooltips } from "./labels/derive_distinct_tooltips.js";
|
|
76
|
-
import { fromPlOption, fromPlRef } from "./ref_util.js";
|
|
77
71
|
import { getPlatformaApiVersion, getRawPlatformaInstance } from "./raw_globals.js";
|
|
78
72
|
import { getAllRelatedColumns, getRelatedColumns } from "./pframe_utils/columns.js";
|
|
79
73
|
import { getAxisUniqueValues, getColumnOrAxisValueLabelsId, getColumnSpecById, getColumnUniqueValues, getColumnsFull, getRequestColumnsFromSelectedSources, getSingleColumnData, getUniqueSourceValuesWithLabels } from "./pframe_utils/index.js";
|
|
@@ -82,4 +76,4 @@ import { getService } from "./services/get_services.js";
|
|
|
82
76
|
import { getEnvironmentValue } from "./env_value.js";
|
|
83
77
|
export * from "@milaboratories/pl-model-common";
|
|
84
78
|
export * from "@milaboratories/pl-error-like";
|
|
85
|
-
export { AccessorColumnsProvider, AccessorColumnsProviderImpl, type AccessorHandle,
|
|
79
|
+
export { AccessorColumnsProvider, AccessorColumnsProviderImpl, type AccessorHandle, AndFilter, AnnotationFilter, AnnotationMode, AnnotationScript, AnnotationScript2, AnnotationScriptUi, AnnotationSpec, AnnotationSpecUi, AnnotationStep, AnnotationStepUi, AnyForm, ArrayColumnsProvider, type AxesVault, AxisLabelProvider, BLOCK_SERVICE_FLAGS, BLOCK_STORAGE_FACADE_VERSION, BlockApiV1, BlockApiV2, BlockConfig, BlockConfigV3, BlockConfigV4, BlockDefaultModelServices, BlockDefaultUiServices, BlockModelInfo, BlockModelV3, BlockRenderCtx, BlockServiceFlags, BlockStatePatch, type BlockStorage, BlockStorageFacade, BlockStorageFacadeCallbacks, BlockStorageFacadeHandles, type BlockStorageSchemaVersion, BuildDatasetOptions, CancelSubscription, Cfg, CfgAnd, CfgBlobContent, CfgBlobContentAsJson, CfgBlobContentAsString, CfgDownloadedBlobContent, CfgExtractArchiveAndGetURL, CfgFlatten, CfgGetFromCtx, CfgGetJsonField, CfgGetResourceField, CfgImmediate, CfgImportProgress, CfgIsEmpty, CfgIsolate, CfgLastLogs, CfgLogHandle, CfgMakeArray, CfgMakeObject, CfgMapArrayValues, CfgMapRecordValues, CfgMapResourceFields, CfgNot, CfgOnDemandBlobContent, CfgOr, CfgProgressLog, CfgProgressLogWithInfo, CfgResourceValueAsJson, Column, ColumnAbsentError, ColumnData, ColumnDiscoveredRecipe, type ColumnFieldStatus, ColumnFilteredRecipe, ColumnOption, type ColumnOrderRule, ColumnOverriddenRecipe, ColumnProvider, ColumnRecipe, type ColumnRecipeId, type ColumnResolutionStatus, ColumnSource, type ColumnVisibilityRule, ColumnsCollection, ColumnsCollectionDeps, ColumnsCollectionImpl, type ColumnsDisplayOptions, ColumnsProvider, type ColumnsSelectorConfig, ColumnsSource, ColumnsSourceShorthand, CommonFieldTraverseOps, CommonTraversalOps, ConfigRenderLambda, ConfigRenderLambdaFlags, CurrentSdkInfo, DataColumn, DataColumnId, DataColumnImpl, DataColumnRecipe, DataColumnSource, DataModel, DataModelBuilder, DatasetOption, DatasetSelection, DeriveHref, DeriveLabelsFormatters, DeriveLabelsOptions, Entry, ExpressionSpec, ExtractFunctionHandleReturn, type ExtractFutureRefType, FieldTraversalStep, FieldType, FilterMatchOptions, type FilterSpec, type FilterSpecLeaf, type FilterSpecNode, type FilterSpecOfType, type FilterSpecType, FilterSpecUi, FilterUi, FilterUiOfType, FilterUiType, FindFilterColumnsOptions, FormField, FutureRef, GetFieldStep, InferArgsType, InferBlockState, InferBlockStatePatch, InferDataType, InferFactoryData, InferFactoryModelServices, InferFactoryOutputs, InferFactoryParams, InferFactoryUiServices, InferHrefType, InferOutputsFromLambdas, InferOutputsType, InferPluginData, InferPluginHandle, InferPluginNames, InferPluginUiEntries, InferRenderFunctionReturn, InferUiState, IsNA, internal_d_exports as JsRenderInternal, type DeriveLabelsOptions as LabelDerivationOps, LinkerStep, Log10, MainAccessorName, type MigrateBlockStorageConfig, type MigrationFailure, type MigrationResult, type MigrationSuccess, type ModelServices, type MutateStoragePayload, NotFilter, NumericalComparisonFilter, OptionalPlResourceEntry, OrFilter, OutputError, PColumnCollection, type PColumnDataUniversal, PColumnEntryUniversal, PColumnEntryWithLabel, PColumnKeyList, PColumnPredicate, PColumnResourceMapData, PColumnResourceMapEntry, PColumnUniversal, PColumnWithLabel, PFrameImpl, PTableKey, type PTableParamsV2, type ParamsInput, Patch, PatternFilter, PatternPredicate, PatternPredicateContainSubsequence, PatternPredicateEquals, type PlDataTableAxisMeta, type PlDataTableColumnMeta, type PlDataTableColumnsMeta, type PlDataTableFilterMeta, type PlDataTableFilterSpecLeaf, type PlDataTableFilters, type PlDataTableFiltersWithMeta, type PlDataTableGridStateCore, type PlDataTableModel, type PlDataTableSheet, type PlDataTableSheetState, type PlDataTableStateV2, type PlDataTableStateV2CacheEntry, type PlDataTableStateV2Normalized, PlMultiSequenceAlignmentColorSchemeOption, PlMultiSequenceAlignmentModel, PlMultiSequenceAlignmentSettings, PlMultiSequenceAlignmentWidget, PlResourceEntry, PlSelectionModel, type PlTableColumnIdJson, Platforma, PlatformaApiVersion, PlatformaExtended, PlatformaFactory, PlatformaSDKVersion, PlatformaV1, PlatformaV2, PlatformaV3, type PluginConfig, type PluginData, PluginDataModel, PluginDataModelBuilder, type PluginDataModelVersions, type PluginFactory, PluginFactoryLike, PluginHandle, PluginInstance, PluginModel, type PluginName, type PluginOutputs, type PluginParams, type PluginPublicOutputs, type PluginRecord, type PluginRegistry, PluginRenderCtx, type PublicOutputFieldDef, QueryColumnId, QueryColumnIdAxis, QueryColumnIdColumn, RT_BINARY_PARTITIONED, RT_BINARY_SUPER_PARTITIONED, RT_JSON_PARTITIONED, RT_JSON_SUPER_PARTITIONED, RT_PARQUET_PARTITIONED, RT_PARQUET_SUPER_PARTITIONED, RT_RESOURCE_MAP, RT_RESOURCE_MAP_PARTITIONED, RenderCtx, RenderCtxBase, RenderFunction, ResolveModelServices, ResolveUiServices, ResourceTraversalOps, ResourceType, ResultPool, ResultPoolColumnsProvider, ResultPoolColumnsProviderImpl, SdkInfo, ServiceProxy, SimplifiedPColumnSpec, SimplifiedUniversalPColumnEntry, SortedCumulativeSum, type Entry as SpecExtractorResult, type SpecQuery, SplitAxis, SplitByAxesOpts, StagingAccessorName, StdCtx, StdCtxArgsOnly, TooltipEntry, type Trace, type TraceEntry, TransformedColumn, TreeNodeAccessor, TypeField, TypeFieldRecord, TypeForm, TypeToLiteral, TypedConfig, TypedConfigOrConfigLambda, TypedConfigOrString, type UiServices, Unionize, UniversalColumnOption, UnwrapFutureRef, ValueRank, type VersionedData, _ctxProvidersCache, allPColumnsReady, blockServiceNames, buildDatasetOptions, buildRefMap, buildServices, collectLinkerColumns, collectLinkerIds, compileAnnotationScript, compileFilter, compileFilters, convertFilterSpecsToExpressionSpecs, convertFilterUiToExpressionImpl, convertFilterUiToExpressions, convertOrParsePColumnData, createBlockStorage, createDatasetSelection, createDefaultPTableParams, createPFrameForGraphs, createPlDataTable, type createPlDataTableOptionsV3, createPlDataTableSheet, createPlDataTableStateV2, createPlDataTableV2, createPlDataTableV3, createPlSelectionModel, createRowSelectionColumn, createServiceProxy, deriveAxisValuesLabels, deriveColumnOptions, deriveDataFromStorage, deriveDistinctLabels, deriveDistinctTooltips, deriveLabels, discoverTableColumns as discoverTableColumnSnaphots, distillFilterSpec, downgradeCfgOrLambda, enrichCompatible, extractConfig, filterDataInfoEntries, filterMatchesToOptions, filterSpecToSpecQueryExpr, finalizePColumnData, findFilterColumns, getAllRelatedColumns, getAvailableWithLinkersAxes, getAxisUniqueValues, getColumnOrAxisValueLabelsId, getColumnSpecById, getColumnUniqueValues, getColumnsFull, getCtxProviders, getEffectiveVisibility, getEnvironmentValue, getNumberOfRows, getOrderPriority, getPartitionKeysList, getPlatformaApiVersion, getPluginData, getRawPlatformaInstance, getRelatedColumns, getRequestColumnsFromSelectedSources, getService, getSingleColumnData, getStorageData, getUniquePartitionKeys, getUniqueSourceValuesWithLabels, hasColumnData, hasReachableData, hasSingleDataColumn, hitQualifications, ifDef, isBlockStorage, isColumn, isColumnHidden, isColumnOptional, isColumnProvider, isColumnsCollection, isConfigLambda, isDataColumn, isDatasetSelection, isHiddenFromGraphColumn, isHiddenFromUIColumn, isLeafColumn, isPColumnReady, isPluginOutputKey, migrateBlockStorage, normalizeBlockStorage, parsePColumnData, parseResourceMap, pluginOutputKey, pluginOutputPrefix, queriesQualifications, readOutput, registerFacadeCallbacks, splitByAxes, toColumnProvider, unreachable, updateStorageData, upgradePlDataTableStateV2, wrapOutputs };
|
package/dist/index.js
CHANGED
|
@@ -3,8 +3,7 @@ import { isPluginOutputKey, pluginOutputKey, pluginOutputPrefix } from "./plugin
|
|
|
3
3
|
import { DataModel, DataModelBuilder } from "./block_migrations.js";
|
|
4
4
|
import { createBlockStorage, deriveDataFromStorage, getPluginData, getStorageData, isBlockStorage, migrateBlockStorage, normalizeBlockStorage, updateStorageData } from "./block_storage.js";
|
|
5
5
|
import { BLOCK_STORAGE_FACADE_VERSION, BlockStorageFacadeCallbacks, BlockStorageFacadeHandles, registerFacadeCallbacks } from "./block_storage_facade.js";
|
|
6
|
-
import {
|
|
7
|
-
import "./config/index.js";
|
|
6
|
+
import { BLOCK_SERVICE_FLAGS, blockServiceNames } from "./services/block_services.js";
|
|
8
7
|
import { FutureRef } from "./render/future.js";
|
|
9
8
|
import { TreeNodeAccessor, ifDef } from "./render/accessor.js";
|
|
10
9
|
import { MainAccessorName, StagingAccessorName, internal_exports } from "./render/internal.js";
|
|
@@ -13,18 +12,16 @@ import { deriveDistinctLabels } from "./labels/derive_distinct_labels.js";
|
|
|
13
12
|
import { deriveLabels } from "./render/util/label.js";
|
|
14
13
|
import { RT_BINARY_PARTITIONED, RT_BINARY_SUPER_PARTITIONED, RT_JSON_PARTITIONED, RT_JSON_SUPER_PARTITIONED, RT_PARQUET_PARTITIONED, RT_PARQUET_SUPER_PARTITIONED, RT_RESOURCE_MAP, RT_RESOURCE_MAP_PARTITIONED, allPColumnsReady, convertOrParsePColumnData, getNumberOfRows, getPartitionKeysList, getUniquePartitionKeys, isPColumnReady, parsePColumnData, parseResourceMap } from "./render/util/pcolumn_data.js";
|
|
15
14
|
import { PColumnCollection } from "./render/util/column_collection.js";
|
|
16
|
-
import { BLOCK_SERVICE_FLAGS, blockServiceNames } from "./services/block_services.js";
|
|
17
15
|
import { buildServices, createServiceProxy } from "./services/service_bridge.js";
|
|
18
16
|
import { getService } from "./services/get_services.js";
|
|
19
17
|
import "./services/index.js";
|
|
20
|
-
import { BlockRenderCtx, PluginRenderCtx, RenderCtxBase,
|
|
18
|
+
import { BlockRenderCtx, PluginRenderCtx, RenderCtxBase, ResultPool, finalizePColumnData } from "./render/api.js";
|
|
21
19
|
import "./render/index.js";
|
|
20
|
+
import { PluginDataModel, PluginDataModelBuilder, PluginInstance, PluginModel } from "./plugin_model.js";
|
|
22
21
|
import { CurrentSdkInfo, PlatformaSDKVersion } from "./version.js";
|
|
23
22
|
import { isConfigLambda } from "./bconfig/types.js";
|
|
24
23
|
import { downgradeCfgOrLambda, extractConfig } from "./bconfig/normalization.js";
|
|
25
24
|
import "./bconfig/index.js";
|
|
26
|
-
import { BlockModel } from "./block_model_legacy.js";
|
|
27
|
-
import { PluginDataModel, PluginDataModelBuilder, PluginInstance, PluginModel } from "./plugin_model.js";
|
|
28
25
|
import { BlockModelV3 } from "./block_model.js";
|
|
29
26
|
import { enrichCompatible, getAvailableWithLinkersAxes } from "./pframe_utils/axes.js";
|
|
30
27
|
import { Column, isColumn } from "./columns/column.js";
|
|
@@ -63,7 +60,6 @@ import { createPlSelectionModel } from "./components/PlSelectionModel.js";
|
|
|
63
60
|
import "./components/index.js";
|
|
64
61
|
import { PFrameImpl } from "./pframe.js";
|
|
65
62
|
import "./labels/index.js";
|
|
66
|
-
import { fromPlOption, fromPlRef } from "./ref_util.js";
|
|
67
63
|
import { getPlatformaApiVersion, getRawPlatformaInstance } from "./raw_globals.js";
|
|
68
64
|
import { convertFilterSpecsToExpressionSpecs } from "./annotations/converter.js";
|
|
69
65
|
import "./annotations/index.js";
|
|
@@ -71,4 +67,4 @@ import { getAxisUniqueValues, getColumnOrAxisValueLabelsId, getColumnSpecById, g
|
|
|
71
67
|
import { getEnvironmentValue } from "./env_value.js";
|
|
72
68
|
export * from "@milaboratories/pl-model-common";
|
|
73
69
|
export * from "@milaboratories/pl-error-like";
|
|
74
|
-
export { AccessorColumnsProvider, AccessorColumnsProviderImpl,
|
|
70
|
+
export { AccessorColumnsProvider, AccessorColumnsProviderImpl, ArrayColumnsProvider, BLOCK_SERVICE_FLAGS, BLOCK_STORAGE_FACADE_VERSION, BlockModelV3, BlockRenderCtx, BlockStorageFacadeCallbacks, BlockStorageFacadeHandles, Column, ColumnAbsentError, ColumnDiscoveredRecipe, ColumnFilteredRecipe, ColumnOverriddenRecipe, ColumnRecipe, ColumnsCollection, ColumnsCollectionImpl, ColumnsProvider, CurrentSdkInfo, DataColumn, DataColumnImpl, DataModel, DataModelBuilder, FutureRef, internal_exports as JsRenderInternal, MainAccessorName, OutputError, PColumnCollection, PFrameImpl, PlatformaSDKVersion, PluginDataModel, PluginDataModelBuilder, PluginInstance, PluginModel, PluginRenderCtx, RT_BINARY_PARTITIONED, RT_BINARY_SUPER_PARTITIONED, RT_JSON_PARTITIONED, RT_JSON_SUPER_PARTITIONED, RT_PARQUET_PARTITIONED, RT_PARQUET_SUPER_PARTITIONED, RT_RESOURCE_MAP, RT_RESOURCE_MAP_PARTITIONED, RenderCtxBase, ResultPool, ResultPoolColumnsProvider, ResultPoolColumnsProviderImpl, StagingAccessorName, TreeNodeAccessor, _ctxProvidersCache, allPColumnsReady, blockServiceNames, buildDatasetOptions, buildRefMap, buildServices, collectLinkerColumns, collectLinkerIds, compileAnnotationScript, compileFilter, compileFilters, convertFilterSpecsToExpressionSpecs, convertFilterUiToExpressionImpl, convertFilterUiToExpressions, convertOrParsePColumnData, createBlockStorage, createDatasetSelection, createDefaultPTableParams, createPFrameForGraphs, createPlDataTable, createPlDataTableSheet, createPlDataTableStateV2, createPlDataTableV2, createPlDataTableV3, createPlSelectionModel, createRowSelectionColumn, createServiceProxy, deriveAxisValuesLabels, deriveColumnOptions, deriveDataFromStorage, deriveDistinctLabels, deriveDistinctTooltips, deriveLabels, discoverTableColumns as discoverTableColumnSnaphots, distillFilterSpec, downgradeCfgOrLambda, enrichCompatible, extractConfig, filterDataInfoEntries, filterMatchesToOptions, filterSpecToSpecQueryExpr, finalizePColumnData, findFilterColumns, getAllRelatedColumns, getAvailableWithLinkersAxes, getAxisUniqueValues, getColumnOrAxisValueLabelsId, getColumnSpecById, getColumnUniqueValues, getColumnsFull, getCtxProviders, getEffectiveVisibility, getEnvironmentValue, getNumberOfRows, getOrderPriority, getPartitionKeysList, getPlatformaApiVersion, getPluginData, getRawPlatformaInstance, getRelatedColumns, getRequestColumnsFromSelectedSources, getService, getSingleColumnData, getStorageData, getUniquePartitionKeys, getUniqueSourceValuesWithLabels, hasColumnData, hasReachableData, hasSingleDataColumn, hitQualifications, ifDef, isBlockStorage, isColumn, isColumnHidden, isColumnOptional, isColumnProvider, isColumnsCollection, isConfigLambda, isDataColumn, isDatasetSelection, isHiddenFromGraphColumn, isHiddenFromUIColumn, isLeafColumn, isPColumnReady, isPluginOutputKey, migrateBlockStorage, normalizeBlockStorage, parsePColumnData, parseResourceMap, pluginOutputKey, pluginOutputPrefix, queriesQualifications, readOutput, registerFacadeCallbacks, splitByAxes, toColumnProvider, unreachable, updateStorageData, upgradePlDataTableStateV2, wrapOutputs };
|
package/dist/package.cjs
CHANGED
package/dist/package.js
CHANGED
package/dist/render/api.cjs
CHANGED
|
@@ -426,27 +426,6 @@ var BlockRenderCtx = class extends RenderCtxBase {
|
|
|
426
426
|
return this.argsCache.v;
|
|
427
427
|
}
|
|
428
428
|
};
|
|
429
|
-
/** Render context for legacy v1/v2 blocks - provides backward compatibility */
|
|
430
|
-
var RenderCtxLegacy = class extends RenderCtxBase {
|
|
431
|
-
argsCache;
|
|
432
|
-
get args() {
|
|
433
|
-
if (this.argsCache === void 0) {
|
|
434
|
-
const raw = this.ctx.args;
|
|
435
|
-
const value = typeof raw === "function" ? raw() : raw;
|
|
436
|
-
this.argsCache = { v: JSON.parse(value) };
|
|
437
|
-
}
|
|
438
|
-
return this.argsCache.v;
|
|
439
|
-
}
|
|
440
|
-
uiStateCache;
|
|
441
|
-
get uiState() {
|
|
442
|
-
if (this.uiStateCache === void 0) {
|
|
443
|
-
const raw = this.ctx.uiState;
|
|
444
|
-
const value = typeof raw === "function" ? raw() : raw;
|
|
445
|
-
this.uiStateCache = { v: value ? JSON.parse(value) : {} };
|
|
446
|
-
}
|
|
447
|
-
return this.uiStateCache.v;
|
|
448
|
-
}
|
|
449
|
-
};
|
|
450
429
|
/**
|
|
451
430
|
* Render context for plugin output functions.
|
|
452
431
|
* Reads plugin data from blockStorage and derives params from pre-wrapped input callbacks.
|
|
@@ -488,7 +467,6 @@ var PluginRenderCtx = class extends RenderCtxBase {
|
|
|
488
467
|
exports.BlockRenderCtx = BlockRenderCtx;
|
|
489
468
|
exports.PluginRenderCtx = PluginRenderCtx;
|
|
490
469
|
exports.RenderCtxBase = RenderCtxBase;
|
|
491
|
-
exports.RenderCtxLegacy = RenderCtxLegacy;
|
|
492
470
|
exports.ResultPool = ResultPool;
|
|
493
471
|
exports.finalizePColumnData = finalizePColumnData;
|
|
494
472
|
|
package/dist/render/api.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.cjs","names":["TreeNodeAccessor","getCfgRenderCtx","deriveLabels","AnchoredIdDeriver","PColumnCollection","PColumnName","getService","ifDef","StagingAccessorName","MainAccessorName","patchInSetFilters","allPColumnsReady","getPluginData"],"sources":["../../src/render/api.ts"],"sourcesContent":["import type {\n AnchoredPColumnSelector,\n AnyFunction,\n AxisId,\n DataInfo,\n ModelServices,\n Option,\n PColumn,\n PColumnSelector,\n PColumnSpec,\n PColumnValues,\n PFrameDef,\n PFrameHandle,\n ColumnUniversalId,\n PObject,\n PObjectId,\n PObjectSpec,\n PTableDef,\n PTableDefV2,\n PTableHandle,\n PTableRecordFilter,\n PTableSorting,\n PlRef,\n ResolveAnchorsOptions,\n ResultCollection,\n SUniversalPColumnId,\n ValueOrError,\n} from \"@milaboratories/pl-model-common\";\nimport {\n AnchoredIdDeriver,\n ensurePColumn,\n parseJson,\n isDataInfo,\n isPColumn,\n isPColumnSpec,\n isPlRef,\n mapDataInfo,\n mapPObjectData,\n mapPTableDef,\n mapPTableDefV2,\n mapValueInVOE,\n PColumnName,\n readAnnotation,\n withEnrichments,\n legacyColumnSelectorsToPredicate,\n extractAllColumns,\n visitDataInfo,\n} from \"@milaboratories/pl-model-common\";\nimport canonicalize from \"canonicalize\";\nimport type { Optional } from \"utility-types\";\nimport { getCfgRenderCtx } from \"../internal\";\nimport { getPluginData } from \"../block_storage\";\nimport type {\n PluginHandle,\n PluginFactoryLike,\n InferFactoryData,\n InferFactoryParams,\n} from \"../plugin_handle\";\nimport { TreeNodeAccessor, ifDef } from \"./accessor\";\nimport type { FutureRef } from \"./future\";\nimport type { AccessorHandle, GlobalCfgRenderCtx } from \"./internal\";\nimport { MainAccessorName, StagingAccessorName } from \"./internal\";\nimport {\n PColumnCollection,\n type AxisLabelProvider,\n type ColumnProvider,\n} from \"./util/column_collection\";\nimport type { LabelDerivationOps } from \"./util/label\";\nimport { deriveLabels } from \"./util/label\";\nimport type { APColumnSelectorWithSplit } from \"./util/split_selectors\";\nimport { patchInSetFilters } from \"./util/pframe_upgraders\";\nimport type { PColumnDataUniversal } from \"./internal\";\nimport { getService } from \"../services\";\nimport { allPColumnsReady } from \"./util\";\nimport { throwError } from \"@milaboratories/helpers\";\nimport { isString } from \"es-toolkit\";\n\n/**\n * Helper function to match domain objects\n * @param query Optional domain to match against\n * @param target Optional domain to match\n * @returns true if domains match, false otherwise\n */\nfunction matchDomain(query?: Record<string, string>, target?: Record<string, string>) {\n if (query === undefined) return target === undefined;\n if (target === undefined) return true;\n for (const k in target) {\n if (query[k] !== target[k]) return false;\n }\n return true;\n}\n\nexport type UniversalColumnOption = { label: string; value: SUniversalPColumnId };\n\n/**\n * Transforms PColumn data into the internal representation expected by the platform\n * @param column Data from a PColumn to transform\n * @returns Transformed data compatible with platform API\n */\nexport function finalizePColumnData(\n column: PColumn<PColumnDataUniversal<undefined | TreeNodeAccessor>>,\n): PColumn<PColumnValues | AccessorHandle | DataInfo<AccessorHandle>> {\n return mapPObjectData(column, (data) => {\n if (data instanceof TreeNodeAccessor) {\n return data.handle;\n } else if (isDataInfo(data)) {\n let ready = true;\n visitDataInfo(data, (accessor) => (ready &&= accessor?.getIsReadyOrError() ?? false));\n if (!ready) return [];\n return mapDataInfo(\n data,\n (accessor) => accessor?.handle ?? throwError(\"Accessor handle is undefined\"),\n );\n } else {\n return data ?? [];\n }\n });\n}\n\ntype UniversalPColumnOpts = {\n labelOps?: LabelDerivationOps;\n dontWaitAllData?: boolean;\n exclude?: AnchoredPColumnSelector | AnchoredPColumnSelector[];\n} & ResolveAnchorsOptions;\n\ntype GetOptionsOpts = {\n /**\n * If true, references returned by the method will contain `requireEnrichments` flag set to true.\n * If this reference is added to the block's args, it will communicate to the platform that the block\n * expects enrichments of the referenced block to be available in the context of the current block.\n */\n refsWithEnrichments?: boolean;\n /**\n * Label derivation options.\n * If provided, it will be used to derive labels for the options.\n * If not provided, labels will be derived using the default logic.\n */\n label?: ((spec: PObjectSpec, ref: PlRef) => string) | LabelDerivationOps;\n};\n\n/**\n * @deprecated use the direct `ctx.*` methods on `RenderCtxBase` instead.\n *\n * Migration map:\n * - `getSpecs` → `ctx.getSpecs`\n * - `getSpecByRef` / `getPColumnSpecByRef` → `ctx.getSpecByRef` / `ctx.getPColumnSpecByRef`\n * - `getDataByRef` / `getPColumnByRef` → `ctx.getDataByRef` / `ctx.getPColumnByRef`\n * - `getOptions` → `ctx.getOptions`\n *\n * Eager methods `selectColumns` / `getData` / `getDataWithErrors` should be\n * replaced by `ctx.getSpecs` + on-demand `ctx.getStatusByRef` /\n * `ctx.getPColumnByRef` so that the data resource is not subscribed up-front.\n */\nexport class ResultPool implements ColumnProvider, AxisLabelProvider {\n private readonly ctx: GlobalCfgRenderCtx = getCfgRenderCtx();\n\n public getOptions(\n predicateOrSelector: ((spec: PObjectSpec) => boolean) | PColumnSelector | PColumnSelector[],\n opts?: GetOptionsOpts,\n ): Option[];\n /** @deprecated wrap label ops with { label: <...> } */\n public getOptions(\n predicateOrSelector: ((spec: PObjectSpec) => boolean) | PColumnSelector | PColumnSelector[],\n label?: ((spec: PObjectSpec, ref: PlRef) => string) | LabelDerivationOps,\n ): Option[];\n public getOptions(\n predicateOrSelector: ((spec: PObjectSpec) => boolean) | PColumnSelector | PColumnSelector[],\n opts?: GetOptionsOpts | ((spec: PObjectSpec, ref: PlRef) => string) | LabelDerivationOps,\n ): Option[] {\n const predicate =\n typeof predicateOrSelector === \"function\"\n ? predicateOrSelector\n : legacyColumnSelectorsToPredicate(predicateOrSelector);\n const filtered = this.getSpecs().entries.filter((s) => predicate(s.obj));\n\n let labelOps: LabelDerivationOps | ((spec: PObjectSpec, ref: PlRef) => string) = {};\n let refsWithEnrichments: boolean = false;\n if (typeof opts !== \"undefined\") {\n if (typeof opts === \"function\") {\n labelOps = opts;\n } else if (typeof opts === \"object\") {\n if (\"includeNativeLabel\" in opts || \"separator\" in opts || \"addLabelAsSuffix\" in opts) {\n labelOps = opts;\n } else {\n opts = opts as GetOptionsOpts;\n labelOps = opts.label ?? {};\n refsWithEnrichments = opts.refsWithEnrichments ?? false;\n }\n }\n }\n\n if (typeof labelOps === \"object\")\n return deriveLabels(filtered, (o) => o.obj, labelOps ?? {}).map(\n ({ value: { ref }, label }) => ({\n ref: withEnrichments(ref, refsWithEnrichments),\n label,\n }),\n );\n else\n return filtered.map(({ ref, obj }) => ({\n ref: withEnrichments(ref, refsWithEnrichments),\n label: labelOps(obj, ref),\n }));\n }\n\n public resolveAnchorCtx(\n anchorsOrCtx: AnchoredIdDeriver | Record<string, PColumnSpec | PlRef>,\n ): AnchoredIdDeriver | undefined {\n if (anchorsOrCtx instanceof AnchoredIdDeriver) return anchorsOrCtx;\n const resolvedAnchors: Record<string, PColumnSpec> = {};\n for (const [key, value] of Object.entries(anchorsOrCtx)) {\n if (isPlRef(value)) {\n const resolvedSpec = this.getPColumnSpecByRef(value);\n if (!resolvedSpec) return undefined;\n resolvedAnchors[key] = resolvedSpec;\n } else {\n resolvedAnchors[key] = value;\n }\n }\n return new AnchoredIdDeriver(resolvedAnchors);\n }\n\n /**\n * Returns columns that match the provided anchors and selectors. It applies axis filters and label derivation.\n *\n * @param anchorsOrCtx - Anchor context for column selection (same as in getCanonicalOptions)\n * @param predicateOrSelectors - Predicate or selectors for filtering columns (same as in getCanonicalOptions)\n * @param opts - Optional configuration for label generation and data waiting\n * @returns A PFrameHandle for the created PFrame, or undefined if any required data is missing\n */\n public getAnchoredPColumns(\n anchorsOrCtx: AnchoredIdDeriver | Record<string, PColumnSpec | PlRef>,\n predicateOrSelectors:\n | ((spec: PColumnSpec) => boolean)\n | APColumnSelectorWithSplit\n | APColumnSelectorWithSplit[],\n opts?: UniversalPColumnOpts,\n ): undefined | PColumn<undefined | PColumnDataUniversal>[] {\n const anchorCtx = this.resolveAnchorCtx(anchorsOrCtx);\n if (!anchorCtx) return undefined;\n return new PColumnCollection()\n .addColumnProvider(this)\n .addAxisLabelProvider(this)\n .getColumns(predicateOrSelectors, {\n ...opts,\n anchorCtx,\n });\n }\n\n /**\n * Calculates anchored identifier options for columns matching a given predicate and returns their\n * canonicalized representations.\n *\n * This function filters column specifications from the result pool that match the provided predicate,\n * creates a standardized AnchorCtx from the provided anchors, and generates a list of label-value\n * pairs for UI components (like dropdowns).\n *\n * @param anchorsOrCtx - Either:\n * - An existing AnchorCtx instance\n * - A record mapping anchor IDs to PColumnSpec objects\n * - A record mapping anchor IDs to PlRef objects (which will be resolved to PColumnSpec)\n * @param predicateOrSelectors - Either:\n * - A predicate function that takes a PColumnSpec and returns a boolean.\n * Only specs that return true will be included.\n * - An APColumnSelector object for declarative filtering, which will be\n * resolved against the provided anchors and matched using matchPColumn.\n * - An array of APColumnSelector objects - columns matching ANY selector\n * in the array will be included (OR operation).\n * @param opts - Optional configuration for label generation:\n * - labelOps: Optional configuration for label generation:\n * - includeNativeLabel: Whether to include native column labels\n * - separator: String to use between label parts (defaults to \" / \")\n * - addLabelAsSuffix: Whether to add labels as suffix instead of prefix\n * - dontWaitAllData: Whether to skip columns that don't have all data (if not set, will return undefined,\n * if at least one column that requires splitting is missing data)\n * @returns An array of objects with `label` (display text) and `value` (anchored ID string) properties,\n * or undefined if any PlRef resolution fails.\n */\n getCanonicalOptions(\n anchorsOrCtx: AnchoredIdDeriver | Record<string, PColumnSpec | PlRef>,\n predicateOrSelectors:\n | ((spec: PColumnSpec) => boolean)\n | APColumnSelectorWithSplit\n | APColumnSelectorWithSplit[],\n opts?: UniversalPColumnOpts,\n ): { label: string; value: SUniversalPColumnId }[] | undefined {\n const anchorCtx = this.resolveAnchorCtx(anchorsOrCtx);\n if (!anchorCtx) return undefined;\n const entries = new PColumnCollection()\n .addColumnProvider(this)\n .addAxisLabelProvider(this)\n .getUniversalEntries(predicateOrSelectors, {\n ...opts,\n anchorCtx,\n });\n if (!entries) return undefined;\n return entries.map((item) => ({\n value: item.id,\n label: item.label,\n }));\n }\n\n /**\n * @deprecated use getData()\n */\n public getDataFromResultPool(): ResultCollection<PObject<TreeNodeAccessor>> {\n return this.getData();\n }\n\n public getData(): ResultCollection<PObject<TreeNodeAccessor>> {\n const result = this.ctx.getDataFromResultPool();\n return {\n isComplete: result.isComplete,\n entries: result.entries.map((e) => ({\n ref: e.ref,\n obj: {\n ...e.obj,\n data: new TreeNodeAccessor(e.obj.data, [e.ref.blockId, e.ref.name]),\n },\n })),\n };\n }\n\n /**\n * @deprecated use getDataWithErrors()\n */\n public getDataWithErrorsFromResultPool(): ResultCollection<\n Optional<PObject<ValueOrError<TreeNodeAccessor, Error>>, \"id\">\n > {\n return this.getDataWithErrors();\n }\n\n public getDataWithErrors(): ResultCollection<\n Optional<PObject<ValueOrError<TreeNodeAccessor, Error>>, \"id\">\n > {\n const result = this.ctx.getDataWithErrorsFromResultPool();\n return {\n isComplete: result.isComplete,\n entries: result.entries.map((e) => ({\n ref: e.ref,\n obj: {\n ...e.obj,\n data: mapValueInVOE(\n e.obj.data,\n (handle) => new TreeNodeAccessor(handle, [e.ref.blockId, e.ref.name]),\n ),\n },\n })),\n };\n }\n\n /**\n * @deprecated use getSpecs()\n */\n public getSpecsFromResultPool(): ResultCollection<PObjectSpec> {\n return this.getSpecs();\n }\n\n public getSpecs(): ResultCollection<PObjectSpec> {\n return this.ctx.getSpecsFromResultPool();\n }\n\n /**\n * @param ref a Ref\n * @returns data associated with the ref\n */\n public getDataByRef(ref: PlRef): PObject<TreeNodeAccessor> | undefined {\n const data = this.ctx.getDataFromResultPoolByRef(ref.blockId, ref.name); // Keep original call\n // Need to handle undefined case before mapping\n if (!data) return undefined;\n return mapPObjectData(data, (handle) => new TreeNodeAccessor(handle, [ref.blockId, ref.name]));\n }\n\n /**\n * Returns data associated with the ref ensuring that it is a p-column.\n * @param ref a Ref\n * @returns p-column associated with the ref\n */\n public getPColumnByRef(ref: PlRef): PColumn<TreeNodeAccessor> | undefined {\n const data = this.getDataByRef(ref);\n if (!data) return undefined;\n return ensurePColumn(data);\n }\n\n /**\n * Returns spec associated with the ref ensuring that it is a p-column spec.\n * @param ref a Ref\n * @returns p-column spec associated with the ref\n */\n public getPColumnSpecByRef(ref: PlRef): PColumnSpec | undefined {\n const spec = this.getSpecByRef(ref);\n if (!spec) return undefined;\n if (!isPColumnSpec(spec)) throw new Error(`not a PColumn spec (kind = ${spec.kind})`);\n return spec;\n }\n\n /**\n * @param ref a Ref\n * @returns object spec associated with the ref\n */\n public getSpecByRef(ref: PlRef): PObjectSpec | undefined {\n return this.ctx.getSpecFromResultPoolByRef(ref.blockId, ref.name);\n }\n\n /**\n * @param spec object specification\n * @returns array of data objects with compatible specs\n * @deprecated delete this method after Jan 1, 2025\n */\n public findDataWithCompatibleSpec(spec: PColumnSpec): PObject<TreeNodeAccessor>[] {\n const result: PObject<TreeNodeAccessor>[] = [];\n\n out: for (const data of this.getData().entries) {\n if (!isPColumnSpec(data.obj.spec)) {\n continue;\n }\n\n const oth = data.obj.spec;\n\n if (spec.name !== oth.name) {\n continue;\n }\n\n if (spec.valueType !== oth.valueType) {\n continue;\n }\n\n if (spec.axesSpec.length !== oth.axesSpec.length) {\n continue;\n }\n\n if (!matchDomain(spec.domain, oth.domain)) {\n continue;\n }\n\n if (!matchDomain(spec.contextDomain, oth.contextDomain)) {\n continue;\n }\n\n for (let i = 0; i < spec.axesSpec.length; ++i) {\n const qAx = spec.axesSpec[i];\n const tAx = oth.axesSpec[i];\n if (qAx.name !== tAx.name) {\n continue out;\n }\n if (qAx.type !== tAx.type) {\n continue out;\n }\n if (!matchDomain(qAx.domain, tAx.domain)) {\n continue out;\n }\n if (!matchDomain(qAx.contextDomain, tAx.contextDomain)) {\n continue out;\n }\n }\n\n result.push(data.obj);\n }\n return result;\n }\n\n /**\n * Find labels data for a given axis id. It will search for a label column and return its data as a map.\n * @returns a map of axis value => label\n */\n public findLabels(axis: AxisId): Record<string | number, string> | undefined {\n const dataPool = this.getData();\n for (const column of dataPool.entries) {\n if (!isPColumn(column.obj)) continue;\n\n const spec = column.obj.spec;\n if (\n spec.name === PColumnName.Label &&\n spec.axesSpec.length === 1 &&\n spec.axesSpec[0].name === axis.name &&\n spec.axesSpec[0].type === axis.type &&\n matchDomain(axis.domain, spec.axesSpec[0].domain) &&\n matchDomain(axis.contextDomain, spec.axesSpec[0].contextDomain)\n ) {\n if (column.obj.data.resourceType.name !== \"PColumnData/Json\") {\n throw Error(`Expected JSON column for labels, got: ${column.obj.data.resourceType.name}`);\n }\n const labels: Record<string | number, string> = Object.fromEntries(\n Object.entries(\n column.obj.data.getDataAsJson<{\n data: Record<string | number, string>;\n }>().data,\n ).map((e) => [JSON.parse(e[0])[0], e[1]]),\n );\n\n return labels;\n }\n }\n return undefined;\n }\n\n /**\n * Selects columns based on the provided selectors, returning PColumn objects\n * with lazily loaded data.\n *\n * @param selectors - A predicate function, a single selector, or an array of selectors.\n * @returns An array of PColumn objects matching the selectors. Data is loaded on first access.\n * @deprecated use `RenderCtxBase.rawResultPool` + `ResultPoolColumnsProvider` +\n * `discoverColumns` instead. This eager path materializes column data\n * unnecessarily for callers that only filter by spec.\n */\n public selectColumns(\n selectors: ((spec: PColumnSpec) => boolean) | PColumnSelector | PColumnSelector[],\n ): PColumn<TreeNodeAccessor | undefined>[] {\n const predicate =\n typeof selectors === \"function\" ? selectors : legacyColumnSelectorsToPredicate(selectors);\n\n const matchedSpecs = this.getSpecs().entries.filter(({ obj: spec }) => {\n if (!isPColumnSpec(spec)) return false;\n return predicate(spec);\n });\n\n // Map specs to PColumn objects with lazy data loading\n return matchedSpecs.map(({ ref, obj: spec }) => {\n // Type assertion needed because filter ensures it's PColumnSpec\n const pcolumnSpec = spec as PColumnSpec;\n let _cachedData: TreeNodeAccessor | undefined | null = null; // Use null to distinguish initial state from undefined result\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const self = this; // Capture 'this' for use inside the getter\n\n return {\n id: canonicalize(ref) as PObjectId,\n spec: pcolumnSpec,\n get data(): TreeNodeAccessor | undefined {\n if (_cachedData !== null) {\n return _cachedData; // Return cached data (could be undefined if fetch failed)\n }\n\n _cachedData = self.getPColumnByRef(ref)?.data;\n return _cachedData;\n },\n } satisfies PColumn<TreeNodeAccessor | undefined>; // Cast needed because 'data' is a getter\n });\n }\n\n /**\n * Find labels data for a given axis id of a p-column.\n * @returns a map of axis value => label\n */\n public findLabelsForColumnAxis(\n column: PColumnSpec,\n axisIdx: number,\n ): Record<string | number, string> | undefined {\n const labels = this.findLabels(column.axesSpec[axisIdx]);\n if (!labels) return undefined;\n const axisKeys = readAnnotation(column, `pl7.app/axisKeys/${axisIdx}`);\n if (axisKeys !== undefined) {\n const keys = JSON.parse(axisKeys) as string[];\n return Object.fromEntries(\n keys.map((key) => {\n return [key, labels[key] ?? \"Unlabelled\"];\n }),\n );\n } else {\n return labels;\n }\n }\n}\n\n/** Main entry point to the API available within model lambdas (like outputs, sections, etc..) */\nexport abstract class RenderCtxBase<Args = unknown, Data = unknown> {\n public readonly ctx: GlobalCfgRenderCtx;\n\n constructor() {\n this.ctx = getCfgRenderCtx();\n }\n\n private dataCache?: { v: Data };\n\n public get data(): Data {\n if (this.dataCache === undefined) {\n const raw = this.ctx.data;\n const value = typeof raw === \"function\" ? raw() : raw;\n this.dataCache = { v: value ? JSON.parse(value) : ({} as Data) };\n }\n return this.dataCache.v;\n }\n\n // lazy rendering because this feature is rarely used\n private activeArgsCache?: { v?: Args };\n\n /**\n * Returns args snapshot the block was executed for (i.e. when \"Run\" button was pressed).\n * Returns undefined, if block was never executed or stopped mid-way execution, so that the result was cleared.\n * */\n public get activeArgs(): Args | undefined {\n if (this.activeArgsCache === undefined) {\n const raw = this.ctx.activeArgs;\n const value = typeof raw === \"function\" ? raw() : raw;\n this.activeArgsCache = {\n v: value ? JSON.parse(value) : undefined,\n };\n }\n return this.activeArgsCache.v;\n }\n\n public getService<T extends keyof ModelServices>(name: T): ModelServices[T] {\n return getService(name);\n }\n\n // /** Can be used to determine features provided by the desktop instance. */\n // public get featureFlags() {\n // return this.ctx.featureFlags;\n // }\n\n private getNamedAccessor(name: string): TreeNodeAccessor | undefined {\n return ifDef(\n this.ctx.getAccessorHandleByName(name),\n (accessor) => new TreeNodeAccessor(accessor, [name]),\n );\n }\n\n public get prerun(): TreeNodeAccessor | undefined {\n return this.getNamedAccessor(StagingAccessorName);\n }\n\n public get outputs(): TreeNodeAccessor | undefined {\n return this.getNamedAccessor(MainAccessorName);\n }\n\n /** @deprecated use `rawResultPool` + `ResultPoolColumnsProvider` instead. */\n public readonly resultPool = new ResultPool();\n\n private patchPTableDef(\n def: PTableDef<PColumn<PColumnDataUniversal>>,\n ): PTableDef<PColumn<PColumnDataUniversal>> {\n if (!this.ctx.featureFlags?.pTablePartitionFiltersSupport) {\n // For old desktop move all partition filters to filters field as it doesn't read partitionFilters field\n def = {\n ...def,\n partitionFilters: [],\n filters: [...def.partitionFilters, ...def.filters],\n };\n }\n if (!this.ctx.featureFlags?.pFrameInSetFilterSupport) {\n def = {\n ...def,\n partitionFilters: patchInSetFilters(def.partitionFilters),\n filters: patchInSetFilters(def.filters),\n };\n }\n return def;\n }\n\n public createPFrame(\n def: PFrameDef<PObjectId | SUniversalPColumnId | PColumn<undefined | PColumnDataUniversal>>,\n ): PFrameHandle | undefined {\n return this.ctx.createPFrame(def.map((v) => (isString(v) ? v : finalizePColumnData(v))));\n }\n\n // TODO remove all non-PColumn fields\n public createPTable(def: PTableDef<PColumn<PColumnDataUniversal>>): PTableHandle | undefined;\n public createPTable(def: {\n columns: PColumn<PColumnDataUniversal>[];\n filters?: PTableRecordFilter[];\n /** Table sorting */\n sorting?: PTableSorting[];\n }): PTableHandle | undefined;\n public createPTable(\n def:\n | PTableDef<PColumn<PColumnDataUniversal>>\n | {\n columns: PColumn<PColumnDataUniversal>[];\n filters?: PTableRecordFilter[];\n /** Table sorting */\n sorting?: PTableSorting[];\n },\n ): PTableHandle | undefined {\n let rawDef: PTableDef<PColumn<PColumnDataUniversal>>;\n if (\"columns\" in def) {\n rawDef = this.patchPTableDef({\n src: {\n type: \"full\",\n entries: def.columns.map((c) => ({ type: \"column\", column: c })),\n },\n partitionFilters: def.filters ?? [],\n filters: [],\n sorting: def.sorting ?? [],\n });\n } else {\n rawDef = this.patchPTableDef(def);\n }\n const columns = extractAllColumns(rawDef.src);\n if (!allPColumnsReady(columns)) return undefined;\n return this.ctx.createPTable(mapPTableDef(rawDef, finalizePColumnData));\n }\n\n public createPTableV2(\n def: PTableDefV2<ColumnUniversalId | PColumn<undefined | PColumnDataUniversal>>,\n ): PTableHandle | undefined {\n return this.ctx.createPTableV2(\n mapPTableDefV2(def, { column: (v) => (isString(v) ? v : finalizePColumnData(v)) }),\n );\n }\n\n public getCurrentUnstableMarker(): string | undefined {\n return this.ctx.getCurrentUnstableMarker();\n }\n\n public logInfo(msg: string): void {\n this.ctx.logInfo(msg);\n }\n\n public logWarn(msg: string): void {\n this.ctx.logWarn(msg);\n }\n\n public logError(msg: string): void {\n this.ctx.logError(msg);\n }\n}\n\n/** Main entry point to the API available within model lambdas (like outputs, sections, etc..) for v3+ blocks */\nexport class BlockRenderCtx<Args = unknown, Data = unknown> extends RenderCtxBase<Args, Data> {\n private argsCache?: { v: Args | undefined };\n public get args(): Args | undefined {\n if (this.argsCache === undefined) {\n const raw = this.ctx.args;\n const value = typeof raw === \"function\" ? raw() : raw;\n this.argsCache = { v: value === undefined ? undefined : JSON.parse(value) };\n }\n return this.argsCache.v;\n }\n}\n\n/** Render context for legacy v1/v2 blocks - provides backward compatibility */\nexport class RenderCtxLegacy<Args = unknown, UiState = unknown> extends RenderCtxBase<\n Args,\n UiState\n> {\n private argsCache?: { v: Args };\n\n public get args(): Args {\n if (this.argsCache === undefined) {\n const raw = this.ctx.args;\n const value = typeof raw === \"function\" ? raw() : raw;\n this.argsCache = { v: JSON.parse(value) };\n }\n return this.argsCache.v;\n }\n\n private uiStateCache?: { v: UiState };\n\n public get uiState(): UiState {\n if (this.uiStateCache === undefined) {\n const raw = this.ctx.uiState!;\n const value = typeof raw === \"function\" ? raw() : raw;\n this.uiStateCache = { v: value ? JSON.parse(value) : ({} as UiState) };\n }\n return this.uiStateCache.v;\n }\n}\n\n/**\n * Render context for plugin output functions.\n * Reads plugin data from blockStorage and derives params from pre-wrapped input callbacks.\n *\n * Parameterized on the factory-like phantom F so that getPluginData returns\n * InferFactoryData<F> directly — no casts needed for the data getter.\n *\n * @typeParam F - PluginFactoryLike phantom carrying data/params/outputs types\n */\nexport class PluginRenderCtx<F extends PluginFactoryLike = PluginFactoryLike> extends RenderCtxBase<\n unknown,\n InferFactoryData<F>\n> {\n private readonly handle: PluginHandle<F>;\n private readonly wrappedInputs: Record<string, () => unknown>;\n\n constructor(handle: PluginHandle<F>, wrappedInputs: Record<string, () => unknown>) {\n super();\n this.handle = handle;\n this.wrappedInputs = wrappedInputs;\n }\n\n private pluginDataCache?: { v: InferFactoryData<F> };\n\n /** Plugin's persistent data from blockStorage.__plugins.{pluginId}.__data */\n public override get data(): InferFactoryData<F> {\n if (this.pluginDataCache === undefined) {\n const raw = this.ctx.blockStorage();\n this.pluginDataCache = { v: getPluginData(parseJson(raw), this.handle) };\n }\n return this.pluginDataCache.v;\n }\n\n private paramsCache?: { v: InferFactoryParams<F> };\n\n /** Params derived from block context via pre-wrapped input callbacks */\n public get params(): InferFactoryParams<F> {\n if (this.paramsCache === undefined) {\n const result: Record<string, unknown> = {};\n for (const [key, fn] of Object.entries(this.wrappedInputs)) {\n result[key] = fn();\n }\n this.paramsCache = { v: result as InferFactoryParams<F> };\n }\n return this.paramsCache.v;\n }\n}\n\n/** @deprecated Use BlockRenderCtx instead */\nexport type RenderCtx<Args = unknown, Data = unknown> = BlockRenderCtx<Args, Data>;\n\nexport type RenderFunction<Args = unknown, State = unknown, Ret = unknown> = (\n rCtx: BlockRenderCtx<Args, State>,\n) => Ret;\n\nexport type RenderFunctionLegacy<Args = unknown, State = unknown, Ret = unknown> = (\n rCtx: RenderCtxLegacy<Args, State>,\n) => Ret;\n\nexport type UnwrapFutureRef<K> =\n K extends FutureRef<infer T>\n ? T\n : K extends bigint | boolean | null | number | string | symbol | undefined\n ? K\n : { [key in keyof K]: UnwrapFutureRef<K[key]> };\n\nexport type InferRenderFunctionReturn<RF extends AnyFunction> = RF extends (...args: any) => infer R\n ? UnwrapFutureRef<R>\n : never;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"api.cjs","names":["TreeNodeAccessor","getCfgRenderCtx","deriveLabels","AnchoredIdDeriver","PColumnCollection","PColumnName","getService","ifDef","StagingAccessorName","MainAccessorName","patchInSetFilters","allPColumnsReady","getPluginData"],"sources":["../../src/render/api.ts"],"sourcesContent":["import type {\n AnchoredPColumnSelector,\n AnyFunction,\n AxisId,\n DataInfo,\n ModelServices,\n Option,\n PColumn,\n PColumnSelector,\n PColumnSpec,\n PColumnValues,\n PFrameDef,\n PFrameHandle,\n ColumnUniversalId,\n PObject,\n PObjectId,\n PObjectSpec,\n PTableDef,\n PTableDefV2,\n PTableHandle,\n PTableRecordFilter,\n PTableSorting,\n PlRef,\n ResolveAnchorsOptions,\n ResultCollection,\n SUniversalPColumnId,\n ValueOrError,\n} from \"@milaboratories/pl-model-common\";\nimport {\n AnchoredIdDeriver,\n ensurePColumn,\n parseJson,\n isDataInfo,\n isPColumn,\n isPColumnSpec,\n isPlRef,\n mapDataInfo,\n mapPObjectData,\n mapPTableDef,\n mapPTableDefV2,\n mapValueInVOE,\n PColumnName,\n readAnnotation,\n withEnrichments,\n legacyColumnSelectorsToPredicate,\n extractAllColumns,\n visitDataInfo,\n} from \"@milaboratories/pl-model-common\";\nimport canonicalize from \"canonicalize\";\nimport type { Optional } from \"utility-types\";\nimport { getCfgRenderCtx } from \"../internal\";\nimport { getPluginData } from \"../block_storage\";\nimport type {\n PluginHandle,\n PluginFactoryLike,\n InferFactoryData,\n InferFactoryParams,\n} from \"../plugin_handle\";\nimport { TreeNodeAccessor, ifDef } from \"./accessor\";\nimport type { FutureRef } from \"./future\";\nimport type { AccessorHandle, GlobalCfgRenderCtx } from \"./internal\";\nimport { MainAccessorName, StagingAccessorName } from \"./internal\";\nimport {\n PColumnCollection,\n type AxisLabelProvider,\n type ColumnProvider,\n} from \"./util/column_collection\";\nimport type { LabelDerivationOps } from \"./util/label\";\nimport { deriveLabels } from \"./util/label\";\nimport type { APColumnSelectorWithSplit } from \"./util/split_selectors\";\nimport { patchInSetFilters } from \"./util/pframe_upgraders\";\nimport type { PColumnDataUniversal } from \"./internal\";\nimport { getService } from \"../services\";\nimport { allPColumnsReady } from \"./util\";\nimport { throwError } from \"@milaboratories/helpers\";\nimport { isString } from \"es-toolkit\";\n\n/**\n * Helper function to match domain objects\n * @param query Optional domain to match against\n * @param target Optional domain to match\n * @returns true if domains match, false otherwise\n */\nfunction matchDomain(query?: Record<string, string>, target?: Record<string, string>) {\n if (query === undefined) return target === undefined;\n if (target === undefined) return true;\n for (const k in target) {\n if (query[k] !== target[k]) return false;\n }\n return true;\n}\n\nexport type UniversalColumnOption = { label: string; value: SUniversalPColumnId };\n\n/**\n * Transforms PColumn data into the internal representation expected by the platform\n * @param column Data from a PColumn to transform\n * @returns Transformed data compatible with platform API\n */\nexport function finalizePColumnData(\n column: PColumn<PColumnDataUniversal<undefined | TreeNodeAccessor>>,\n): PColumn<PColumnValues | AccessorHandle | DataInfo<AccessorHandle>> {\n return mapPObjectData(column, (data) => {\n if (data instanceof TreeNodeAccessor) {\n return data.handle;\n } else if (isDataInfo(data)) {\n let ready = true;\n visitDataInfo(data, (accessor) => (ready &&= accessor?.getIsReadyOrError() ?? false));\n if (!ready) return [];\n return mapDataInfo(\n data,\n (accessor) => accessor?.handle ?? throwError(\"Accessor handle is undefined\"),\n );\n } else {\n return data ?? [];\n }\n });\n}\n\ntype UniversalPColumnOpts = {\n labelOps?: LabelDerivationOps;\n dontWaitAllData?: boolean;\n exclude?: AnchoredPColumnSelector | AnchoredPColumnSelector[];\n} & ResolveAnchorsOptions;\n\ntype GetOptionsOpts = {\n /**\n * If true, references returned by the method will contain `requireEnrichments` flag set to true.\n * If this reference is added to the block's args, it will communicate to the platform that the block\n * expects enrichments of the referenced block to be available in the context of the current block.\n */\n refsWithEnrichments?: boolean;\n /**\n * Label derivation options.\n * If provided, it will be used to derive labels for the options.\n * If not provided, labels will be derived using the default logic.\n */\n label?: ((spec: PObjectSpec, ref: PlRef) => string) | LabelDerivationOps;\n};\n\n/**\n * @deprecated use the direct `ctx.*` methods on `RenderCtxBase` instead.\n *\n * Migration map:\n * - `getSpecs` → `ctx.getSpecs`\n * - `getSpecByRef` / `getPColumnSpecByRef` → `ctx.getSpecByRef` / `ctx.getPColumnSpecByRef`\n * - `getDataByRef` / `getPColumnByRef` → `ctx.getDataByRef` / `ctx.getPColumnByRef`\n * - `getOptions` → `ctx.getOptions`\n *\n * Eager methods `selectColumns` / `getData` / `getDataWithErrors` should be\n * replaced by `ctx.getSpecs` + on-demand `ctx.getStatusByRef` /\n * `ctx.getPColumnByRef` so that the data resource is not subscribed up-front.\n */\nexport class ResultPool implements ColumnProvider, AxisLabelProvider {\n private readonly ctx: GlobalCfgRenderCtx = getCfgRenderCtx();\n\n public getOptions(\n predicateOrSelector: ((spec: PObjectSpec) => boolean) | PColumnSelector | PColumnSelector[],\n opts?: GetOptionsOpts,\n ): Option[];\n /** @deprecated wrap label ops with { label: <...> } */\n public getOptions(\n predicateOrSelector: ((spec: PObjectSpec) => boolean) | PColumnSelector | PColumnSelector[],\n label?: ((spec: PObjectSpec, ref: PlRef) => string) | LabelDerivationOps,\n ): Option[];\n public getOptions(\n predicateOrSelector: ((spec: PObjectSpec) => boolean) | PColumnSelector | PColumnSelector[],\n opts?: GetOptionsOpts | ((spec: PObjectSpec, ref: PlRef) => string) | LabelDerivationOps,\n ): Option[] {\n const predicate =\n typeof predicateOrSelector === \"function\"\n ? predicateOrSelector\n : legacyColumnSelectorsToPredicate(predicateOrSelector);\n const filtered = this.getSpecs().entries.filter((s) => predicate(s.obj));\n\n let labelOps: LabelDerivationOps | ((spec: PObjectSpec, ref: PlRef) => string) = {};\n let refsWithEnrichments: boolean = false;\n if (typeof opts !== \"undefined\") {\n if (typeof opts === \"function\") {\n labelOps = opts;\n } else if (typeof opts === \"object\") {\n if (\"includeNativeLabel\" in opts || \"separator\" in opts || \"addLabelAsSuffix\" in opts) {\n labelOps = opts;\n } else {\n opts = opts as GetOptionsOpts;\n labelOps = opts.label ?? {};\n refsWithEnrichments = opts.refsWithEnrichments ?? false;\n }\n }\n }\n\n if (typeof labelOps === \"object\")\n return deriveLabels(filtered, (o) => o.obj, labelOps ?? {}).map(\n ({ value: { ref }, label }) => ({\n ref: withEnrichments(ref, refsWithEnrichments),\n label,\n }),\n );\n else\n return filtered.map(({ ref, obj }) => ({\n ref: withEnrichments(ref, refsWithEnrichments),\n label: labelOps(obj, ref),\n }));\n }\n\n public resolveAnchorCtx(\n anchorsOrCtx: AnchoredIdDeriver | Record<string, PColumnSpec | PlRef>,\n ): AnchoredIdDeriver | undefined {\n if (anchorsOrCtx instanceof AnchoredIdDeriver) return anchorsOrCtx;\n const resolvedAnchors: Record<string, PColumnSpec> = {};\n for (const [key, value] of Object.entries(anchorsOrCtx)) {\n if (isPlRef(value)) {\n const resolvedSpec = this.getPColumnSpecByRef(value);\n if (!resolvedSpec) return undefined;\n resolvedAnchors[key] = resolvedSpec;\n } else {\n resolvedAnchors[key] = value;\n }\n }\n return new AnchoredIdDeriver(resolvedAnchors);\n }\n\n /**\n * Returns columns that match the provided anchors and selectors. It applies axis filters and label derivation.\n *\n * @param anchorsOrCtx - Anchor context for column selection (same as in getCanonicalOptions)\n * @param predicateOrSelectors - Predicate or selectors for filtering columns (same as in getCanonicalOptions)\n * @param opts - Optional configuration for label generation and data waiting\n * @returns A PFrameHandle for the created PFrame, or undefined if any required data is missing\n */\n public getAnchoredPColumns(\n anchorsOrCtx: AnchoredIdDeriver | Record<string, PColumnSpec | PlRef>,\n predicateOrSelectors:\n | ((spec: PColumnSpec) => boolean)\n | APColumnSelectorWithSplit\n | APColumnSelectorWithSplit[],\n opts?: UniversalPColumnOpts,\n ): undefined | PColumn<undefined | PColumnDataUniversal>[] {\n const anchorCtx = this.resolveAnchorCtx(anchorsOrCtx);\n if (!anchorCtx) return undefined;\n return new PColumnCollection()\n .addColumnProvider(this)\n .addAxisLabelProvider(this)\n .getColumns(predicateOrSelectors, {\n ...opts,\n anchorCtx,\n });\n }\n\n /**\n * Calculates anchored identifier options for columns matching a given predicate and returns their\n * canonicalized representations.\n *\n * This function filters column specifications from the result pool that match the provided predicate,\n * creates a standardized AnchorCtx from the provided anchors, and generates a list of label-value\n * pairs for UI components (like dropdowns).\n *\n * @param anchorsOrCtx - Either:\n * - An existing AnchorCtx instance\n * - A record mapping anchor IDs to PColumnSpec objects\n * - A record mapping anchor IDs to PlRef objects (which will be resolved to PColumnSpec)\n * @param predicateOrSelectors - Either:\n * - A predicate function that takes a PColumnSpec and returns a boolean.\n * Only specs that return true will be included.\n * - An APColumnSelector object for declarative filtering, which will be\n * resolved against the provided anchors and matched using matchPColumn.\n * - An array of APColumnSelector objects - columns matching ANY selector\n * in the array will be included (OR operation).\n * @param opts - Optional configuration for label generation:\n * - labelOps: Optional configuration for label generation:\n * - includeNativeLabel: Whether to include native column labels\n * - separator: String to use between label parts (defaults to \" / \")\n * - addLabelAsSuffix: Whether to add labels as suffix instead of prefix\n * - dontWaitAllData: Whether to skip columns that don't have all data (if not set, will return undefined,\n * if at least one column that requires splitting is missing data)\n * @returns An array of objects with `label` (display text) and `value` (anchored ID string) properties,\n * or undefined if any PlRef resolution fails.\n */\n getCanonicalOptions(\n anchorsOrCtx: AnchoredIdDeriver | Record<string, PColumnSpec | PlRef>,\n predicateOrSelectors:\n | ((spec: PColumnSpec) => boolean)\n | APColumnSelectorWithSplit\n | APColumnSelectorWithSplit[],\n opts?: UniversalPColumnOpts,\n ): { label: string; value: SUniversalPColumnId }[] | undefined {\n const anchorCtx = this.resolveAnchorCtx(anchorsOrCtx);\n if (!anchorCtx) return undefined;\n const entries = new PColumnCollection()\n .addColumnProvider(this)\n .addAxisLabelProvider(this)\n .getUniversalEntries(predicateOrSelectors, {\n ...opts,\n anchorCtx,\n });\n if (!entries) return undefined;\n return entries.map((item) => ({\n value: item.id,\n label: item.label,\n }));\n }\n\n /**\n * @deprecated use getData()\n */\n public getDataFromResultPool(): ResultCollection<PObject<TreeNodeAccessor>> {\n return this.getData();\n }\n\n public getData(): ResultCollection<PObject<TreeNodeAccessor>> {\n const result = this.ctx.getDataFromResultPool();\n return {\n isComplete: result.isComplete,\n entries: result.entries.map((e) => ({\n ref: e.ref,\n obj: {\n ...e.obj,\n data: new TreeNodeAccessor(e.obj.data, [e.ref.blockId, e.ref.name]),\n },\n })),\n };\n }\n\n /**\n * @deprecated use getDataWithErrors()\n */\n public getDataWithErrorsFromResultPool(): ResultCollection<\n Optional<PObject<ValueOrError<TreeNodeAccessor, Error>>, \"id\">\n > {\n return this.getDataWithErrors();\n }\n\n public getDataWithErrors(): ResultCollection<\n Optional<PObject<ValueOrError<TreeNodeAccessor, Error>>, \"id\">\n > {\n const result = this.ctx.getDataWithErrorsFromResultPool();\n return {\n isComplete: result.isComplete,\n entries: result.entries.map((e) => ({\n ref: e.ref,\n obj: {\n ...e.obj,\n data: mapValueInVOE(\n e.obj.data,\n (handle) => new TreeNodeAccessor(handle, [e.ref.blockId, e.ref.name]),\n ),\n },\n })),\n };\n }\n\n /**\n * @deprecated use getSpecs()\n */\n public getSpecsFromResultPool(): ResultCollection<PObjectSpec> {\n return this.getSpecs();\n }\n\n public getSpecs(): ResultCollection<PObjectSpec> {\n return this.ctx.getSpecsFromResultPool();\n }\n\n /**\n * @param ref a Ref\n * @returns data associated with the ref\n */\n public getDataByRef(ref: PlRef): PObject<TreeNodeAccessor> | undefined {\n const data = this.ctx.getDataFromResultPoolByRef(ref.blockId, ref.name); // Keep original call\n // Need to handle undefined case before mapping\n if (!data) return undefined;\n return mapPObjectData(data, (handle) => new TreeNodeAccessor(handle, [ref.blockId, ref.name]));\n }\n\n /**\n * Returns data associated with the ref ensuring that it is a p-column.\n * @param ref a Ref\n * @returns p-column associated with the ref\n */\n public getPColumnByRef(ref: PlRef): PColumn<TreeNodeAccessor> | undefined {\n const data = this.getDataByRef(ref);\n if (!data) return undefined;\n return ensurePColumn(data);\n }\n\n /**\n * Returns spec associated with the ref ensuring that it is a p-column spec.\n * @param ref a Ref\n * @returns p-column spec associated with the ref\n */\n public getPColumnSpecByRef(ref: PlRef): PColumnSpec | undefined {\n const spec = this.getSpecByRef(ref);\n if (!spec) return undefined;\n if (!isPColumnSpec(spec)) throw new Error(`not a PColumn spec (kind = ${spec.kind})`);\n return spec;\n }\n\n /**\n * @param ref a Ref\n * @returns object spec associated with the ref\n */\n public getSpecByRef(ref: PlRef): PObjectSpec | undefined {\n return this.ctx.getSpecFromResultPoolByRef(ref.blockId, ref.name);\n }\n\n /**\n * @param spec object specification\n * @returns array of data objects with compatible specs\n * @deprecated delete this method after Jan 1, 2025\n */\n public findDataWithCompatibleSpec(spec: PColumnSpec): PObject<TreeNodeAccessor>[] {\n const result: PObject<TreeNodeAccessor>[] = [];\n\n out: for (const data of this.getData().entries) {\n if (!isPColumnSpec(data.obj.spec)) {\n continue;\n }\n\n const oth = data.obj.spec;\n\n if (spec.name !== oth.name) {\n continue;\n }\n\n if (spec.valueType !== oth.valueType) {\n continue;\n }\n\n if (spec.axesSpec.length !== oth.axesSpec.length) {\n continue;\n }\n\n if (!matchDomain(spec.domain, oth.domain)) {\n continue;\n }\n\n if (!matchDomain(spec.contextDomain, oth.contextDomain)) {\n continue;\n }\n\n for (let i = 0; i < spec.axesSpec.length; ++i) {\n const qAx = spec.axesSpec[i];\n const tAx = oth.axesSpec[i];\n if (qAx.name !== tAx.name) {\n continue out;\n }\n if (qAx.type !== tAx.type) {\n continue out;\n }\n if (!matchDomain(qAx.domain, tAx.domain)) {\n continue out;\n }\n if (!matchDomain(qAx.contextDomain, tAx.contextDomain)) {\n continue out;\n }\n }\n\n result.push(data.obj);\n }\n return result;\n }\n\n /**\n * Find labels data for a given axis id. It will search for a label column and return its data as a map.\n * @returns a map of axis value => label\n */\n public findLabels(axis: AxisId): Record<string | number, string> | undefined {\n const dataPool = this.getData();\n for (const column of dataPool.entries) {\n if (!isPColumn(column.obj)) continue;\n\n const spec = column.obj.spec;\n if (\n spec.name === PColumnName.Label &&\n spec.axesSpec.length === 1 &&\n spec.axesSpec[0].name === axis.name &&\n spec.axesSpec[0].type === axis.type &&\n matchDomain(axis.domain, spec.axesSpec[0].domain) &&\n matchDomain(axis.contextDomain, spec.axesSpec[0].contextDomain)\n ) {\n if (column.obj.data.resourceType.name !== \"PColumnData/Json\") {\n throw Error(`Expected JSON column for labels, got: ${column.obj.data.resourceType.name}`);\n }\n const labels: Record<string | number, string> = Object.fromEntries(\n Object.entries(\n column.obj.data.getDataAsJson<{\n data: Record<string | number, string>;\n }>().data,\n ).map((e) => [JSON.parse(e[0])[0], e[1]]),\n );\n\n return labels;\n }\n }\n return undefined;\n }\n\n /**\n * Selects columns based on the provided selectors, returning PColumn objects\n * with lazily loaded data.\n *\n * @param selectors - A predicate function, a single selector, or an array of selectors.\n * @returns An array of PColumn objects matching the selectors. Data is loaded on first access.\n * @deprecated use `RenderCtxBase.rawResultPool` + `ResultPoolColumnsProvider` +\n * `discoverColumns` instead. This eager path materializes column data\n * unnecessarily for callers that only filter by spec.\n */\n public selectColumns(\n selectors: ((spec: PColumnSpec) => boolean) | PColumnSelector | PColumnSelector[],\n ): PColumn<TreeNodeAccessor | undefined>[] {\n const predicate =\n typeof selectors === \"function\" ? selectors : legacyColumnSelectorsToPredicate(selectors);\n\n const matchedSpecs = this.getSpecs().entries.filter(({ obj: spec }) => {\n if (!isPColumnSpec(spec)) return false;\n return predicate(spec);\n });\n\n // Map specs to PColumn objects with lazy data loading\n return matchedSpecs.map(({ ref, obj: spec }) => {\n // Type assertion needed because filter ensures it's PColumnSpec\n const pcolumnSpec = spec as PColumnSpec;\n let _cachedData: TreeNodeAccessor | undefined | null = null; // Use null to distinguish initial state from undefined result\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const self = this; // Capture 'this' for use inside the getter\n\n return {\n id: canonicalize(ref) as PObjectId,\n spec: pcolumnSpec,\n get data(): TreeNodeAccessor | undefined {\n if (_cachedData !== null) {\n return _cachedData; // Return cached data (could be undefined if fetch failed)\n }\n\n _cachedData = self.getPColumnByRef(ref)?.data;\n return _cachedData;\n },\n } satisfies PColumn<TreeNodeAccessor | undefined>; // Cast needed because 'data' is a getter\n });\n }\n\n /**\n * Find labels data for a given axis id of a p-column.\n * @returns a map of axis value => label\n */\n public findLabelsForColumnAxis(\n column: PColumnSpec,\n axisIdx: number,\n ): Record<string | number, string> | undefined {\n const labels = this.findLabels(column.axesSpec[axisIdx]);\n if (!labels) return undefined;\n const axisKeys = readAnnotation(column, `pl7.app/axisKeys/${axisIdx}`);\n if (axisKeys !== undefined) {\n const keys = JSON.parse(axisKeys) as string[];\n return Object.fromEntries(\n keys.map((key) => {\n return [key, labels[key] ?? \"Unlabelled\"];\n }),\n );\n } else {\n return labels;\n }\n }\n}\n\n/** Main entry point to the API available within model lambdas (like outputs, sections, etc..) */\nexport abstract class RenderCtxBase<Args = unknown, Data = unknown> {\n public readonly ctx: GlobalCfgRenderCtx;\n\n constructor() {\n this.ctx = getCfgRenderCtx();\n }\n\n private dataCache?: { v: Data };\n\n public get data(): Data {\n if (this.dataCache === undefined) {\n const raw = this.ctx.data;\n const value = typeof raw === \"function\" ? raw() : raw;\n this.dataCache = { v: value ? JSON.parse(value) : ({} as Data) };\n }\n return this.dataCache.v;\n }\n\n // lazy rendering because this feature is rarely used\n private activeArgsCache?: { v?: Args };\n\n /**\n * Returns args snapshot the block was executed for (i.e. when \"Run\" button was pressed).\n * Returns undefined, if block was never executed or stopped mid-way execution, so that the result was cleared.\n * */\n public get activeArgs(): Args | undefined {\n if (this.activeArgsCache === undefined) {\n const raw = this.ctx.activeArgs;\n const value = typeof raw === \"function\" ? raw() : raw;\n this.activeArgsCache = {\n v: value ? JSON.parse(value) : undefined,\n };\n }\n return this.activeArgsCache.v;\n }\n\n public getService<T extends keyof ModelServices>(name: T): ModelServices[T] {\n return getService(name);\n }\n\n // /** Can be used to determine features provided by the desktop instance. */\n // public get featureFlags() {\n // return this.ctx.featureFlags;\n // }\n\n private getNamedAccessor(name: string): TreeNodeAccessor | undefined {\n return ifDef(\n this.ctx.getAccessorHandleByName(name),\n (accessor) => new TreeNodeAccessor(accessor, [name]),\n );\n }\n\n public get prerun(): TreeNodeAccessor | undefined {\n return this.getNamedAccessor(StagingAccessorName);\n }\n\n public get outputs(): TreeNodeAccessor | undefined {\n return this.getNamedAccessor(MainAccessorName);\n }\n\n /** @deprecated use `rawResultPool` + `ResultPoolColumnsProvider` instead. */\n public readonly resultPool = new ResultPool();\n\n private patchPTableDef(\n def: PTableDef<PColumn<PColumnDataUniversal>>,\n ): PTableDef<PColumn<PColumnDataUniversal>> {\n if (!this.ctx.featureFlags?.pTablePartitionFiltersSupport) {\n // For old desktop move all partition filters to filters field as it doesn't read partitionFilters field\n def = {\n ...def,\n partitionFilters: [],\n filters: [...def.partitionFilters, ...def.filters],\n };\n }\n if (!this.ctx.featureFlags?.pFrameInSetFilterSupport) {\n def = {\n ...def,\n partitionFilters: patchInSetFilters(def.partitionFilters),\n filters: patchInSetFilters(def.filters),\n };\n }\n return def;\n }\n\n public createPFrame(\n def: PFrameDef<PObjectId | SUniversalPColumnId | PColumn<undefined | PColumnDataUniversal>>,\n ): PFrameHandle | undefined {\n return this.ctx.createPFrame(def.map((v) => (isString(v) ? v : finalizePColumnData(v))));\n }\n\n // TODO remove all non-PColumn fields\n public createPTable(def: PTableDef<PColumn<PColumnDataUniversal>>): PTableHandle | undefined;\n public createPTable(def: {\n columns: PColumn<PColumnDataUniversal>[];\n filters?: PTableRecordFilter[];\n /** Table sorting */\n sorting?: PTableSorting[];\n }): PTableHandle | undefined;\n public createPTable(\n def:\n | PTableDef<PColumn<PColumnDataUniversal>>\n | {\n columns: PColumn<PColumnDataUniversal>[];\n filters?: PTableRecordFilter[];\n /** Table sorting */\n sorting?: PTableSorting[];\n },\n ): PTableHandle | undefined {\n let rawDef: PTableDef<PColumn<PColumnDataUniversal>>;\n if (\"columns\" in def) {\n rawDef = this.patchPTableDef({\n src: {\n type: \"full\",\n entries: def.columns.map((c) => ({ type: \"column\", column: c })),\n },\n partitionFilters: def.filters ?? [],\n filters: [],\n sorting: def.sorting ?? [],\n });\n } else {\n rawDef = this.patchPTableDef(def);\n }\n const columns = extractAllColumns(rawDef.src);\n if (!allPColumnsReady(columns)) return undefined;\n return this.ctx.createPTable(mapPTableDef(rawDef, finalizePColumnData));\n }\n\n public createPTableV2(\n def: PTableDefV2<ColumnUniversalId | PColumn<undefined | PColumnDataUniversal>>,\n ): PTableHandle | undefined {\n return this.ctx.createPTableV2(\n mapPTableDefV2(def, { column: (v) => (isString(v) ? v : finalizePColumnData(v)) }),\n );\n }\n\n public getCurrentUnstableMarker(): string | undefined {\n return this.ctx.getCurrentUnstableMarker();\n }\n\n public logInfo(msg: string): void {\n this.ctx.logInfo(msg);\n }\n\n public logWarn(msg: string): void {\n this.ctx.logWarn(msg);\n }\n\n public logError(msg: string): void {\n this.ctx.logError(msg);\n }\n}\n\n/** Main entry point to the API available within model lambdas (like outputs, sections, etc..) for v3+ blocks */\nexport class BlockRenderCtx<Args = unknown, Data = unknown> extends RenderCtxBase<Args, Data> {\n private argsCache?: { v: Args | undefined };\n public get args(): Args | undefined {\n if (this.argsCache === undefined) {\n const raw = this.ctx.args;\n const value = typeof raw === \"function\" ? raw() : raw;\n this.argsCache = { v: value === undefined ? undefined : JSON.parse(value) };\n }\n return this.argsCache.v;\n }\n}\n\n/**\n * Render context for plugin output functions.\n * Reads plugin data from blockStorage and derives params from pre-wrapped input callbacks.\n *\n * Parameterized on the factory-like phantom F so that getPluginData returns\n * InferFactoryData<F> directly — no casts needed for the data getter.\n *\n * @typeParam F - PluginFactoryLike phantom carrying data/params/outputs types\n */\nexport class PluginRenderCtx<F extends PluginFactoryLike = PluginFactoryLike> extends RenderCtxBase<\n unknown,\n InferFactoryData<F>\n> {\n private readonly handle: PluginHandle<F>;\n private readonly wrappedInputs: Record<string, () => unknown>;\n\n constructor(handle: PluginHandle<F>, wrappedInputs: Record<string, () => unknown>) {\n super();\n this.handle = handle;\n this.wrappedInputs = wrappedInputs;\n }\n\n private pluginDataCache?: { v: InferFactoryData<F> };\n\n /** Plugin's persistent data from blockStorage.__plugins.{pluginId}.__data */\n public override get data(): InferFactoryData<F> {\n if (this.pluginDataCache === undefined) {\n const raw = this.ctx.blockStorage();\n this.pluginDataCache = { v: getPluginData(parseJson(raw), this.handle) };\n }\n return this.pluginDataCache.v;\n }\n\n private paramsCache?: { v: InferFactoryParams<F> };\n\n /** Params derived from block context via pre-wrapped input callbacks */\n public get params(): InferFactoryParams<F> {\n if (this.paramsCache === undefined) {\n const result: Record<string, unknown> = {};\n for (const [key, fn] of Object.entries(this.wrappedInputs)) {\n result[key] = fn();\n }\n this.paramsCache = { v: result as InferFactoryParams<F> };\n }\n return this.paramsCache.v;\n }\n}\n\n/** @deprecated Use BlockRenderCtx instead */\nexport type RenderCtx<Args = unknown, Data = unknown> = BlockRenderCtx<Args, Data>;\n\nexport type RenderFunction<Args = unknown, State = unknown, Ret = unknown> = (\n rCtx: BlockRenderCtx<Args, State>,\n) => Ret;\n\nexport type UnwrapFutureRef<K> =\n K extends FutureRef<infer T>\n ? T\n : K extends bigint | boolean | null | number | string | symbol | undefined\n ? K\n : { [key in keyof K]: UnwrapFutureRef<K[key]> };\n\nexport type InferRenderFunctionReturn<RF extends AnyFunction> = RF extends (...args: any) => infer R\n ? UnwrapFutureRef<R>\n : never;\n"],"mappings":"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"}
|