@platforma-sdk/model 1.63.1 → 1.63.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_virtual/_rolldown/runtime.cjs +12 -22
- package/dist/_virtual/_rolldown/runtime.js +6 -11
- package/dist/annotations/converter.cjs +4 -5
- package/dist/annotations/converter.cjs.map +1 -1
- package/dist/annotations/converter.d.ts.map +1 -0
- package/dist/annotations/converter.js +1 -2
- package/dist/annotations/converter.js.map +1 -1
- package/dist/annotations/index.cjs +1 -1
- package/dist/annotations/index.js +1 -1
- package/dist/annotations/types.d.ts +0 -1
- package/dist/annotations/types.d.ts.map +1 -0
- package/dist/bconfig/index.cjs +2 -2
- package/dist/bconfig/index.js +2 -2
- package/dist/bconfig/lambdas.d.ts +0 -1
- package/dist/bconfig/lambdas.d.ts.map +1 -0
- package/dist/bconfig/normalization.cjs +4 -5
- package/dist/bconfig/normalization.cjs.map +1 -1
- package/dist/bconfig/normalization.d.ts.map +1 -0
- package/dist/bconfig/normalization.js +1 -2
- package/dist/bconfig/normalization.js.map +1 -1
- package/dist/bconfig/types.cjs +1 -2
- package/dist/bconfig/types.cjs.map +1 -1
- package/dist/bconfig/types.d.ts +0 -1
- package/dist/bconfig/types.d.ts.map +1 -0
- package/dist/bconfig/types.js +1 -1
- package/dist/bconfig/util.d.ts.map +1 -0
- package/dist/bconfig/v3.d.ts.map +1 -0
- package/dist/block_api_v1.d.ts.map +1 -0
- package/dist/block_api_v2.d.ts.map +1 -0
- package/dist/block_api_v3.d.ts.map +1 -0
- package/dist/block_migrations.cjs +2 -3
- package/dist/block_migrations.cjs.map +1 -1
- package/dist/block_migrations.d.ts.map +1 -0
- package/dist/block_migrations.js +1 -2
- package/dist/block_migrations.js.map +1 -1
- package/dist/block_model.cjs +16 -17
- package/dist/block_model.cjs.map +1 -1
- package/dist/block_model.d.ts +0 -2
- package/dist/block_model.d.ts.map +1 -0
- package/dist/block_model.js +4 -5
- package/dist/block_model.js.map +1 -1
- package/dist/block_model_legacy.cjs +10 -11
- package/dist/block_model_legacy.cjs.map +1 -1
- package/dist/block_model_legacy.d.ts +0 -3
- package/dist/block_model_legacy.d.ts.map +1 -0
- package/dist/block_model_legacy.js +1 -2
- package/dist/block_model_legacy.js.map +1 -1
- package/dist/block_state_patch.d.ts.map +1 -0
- package/dist/block_state_util.cjs +1 -2
- package/dist/block_state_util.cjs.map +1 -1
- package/dist/block_state_util.d.ts.map +1 -0
- package/dist/block_state_util.js +1 -1
- package/dist/block_state_util.js.map +1 -1
- package/dist/block_storage.cjs +5 -12
- package/dist/block_storage.cjs.map +1 -1
- package/dist/block_storage.d.ts.map +1 -0
- package/dist/block_storage.js +5 -11
- package/dist/block_storage.js.map +1 -1
- package/dist/block_storage_callbacks.cjs +4 -5
- package/dist/block_storage_callbacks.cjs.map +1 -1
- package/dist/block_storage_callbacks.js +3 -4
- package/dist/block_storage_callbacks.js.map +1 -1
- package/dist/block_storage_facade.cjs +2 -3
- package/dist/block_storage_facade.cjs.map +1 -1
- package/dist/block_storage_facade.d.ts +0 -1
- package/dist/block_storage_facade.d.ts.map +1 -0
- package/dist/block_storage_facade.js +1 -2
- package/dist/block_storage_facade.js.map +1 -1
- package/dist/columns/column_collection_builder.cjs +6 -7
- package/dist/columns/column_collection_builder.cjs.map +1 -1
- package/dist/columns/column_collection_builder.d.ts.map +1 -0
- package/dist/columns/column_collection_builder.js +1 -2
- package/dist/columns/column_collection_builder.js.map +1 -1
- package/dist/columns/column_selector.cjs +1 -2
- package/dist/columns/column_selector.cjs.map +1 -1
- package/dist/columns/column_selector.d.ts.map +1 -0
- package/dist/columns/column_selector.js +1 -1
- package/dist/columns/column_selector.js.map +1 -1
- package/dist/columns/column_snapshot.cjs +1 -2
- package/dist/columns/column_snapshot.cjs.map +1 -1
- package/dist/columns/column_snapshot.d.ts.map +1 -0
- package/dist/columns/column_snapshot.js +1 -1
- package/dist/columns/column_snapshot_provider.cjs +1 -2
- package/dist/columns/column_snapshot_provider.cjs.map +1 -1
- package/dist/columns/column_snapshot_provider.d.ts.map +1 -0
- package/dist/columns/column_snapshot_provider.js +1 -1
- package/dist/columns/column_snapshot_provider.js.map +1 -1
- package/dist/columns/ctx_column_sources.cjs +3 -4
- package/dist/columns/ctx_column_sources.cjs.map +1 -1
- package/dist/columns/ctx_column_sources.d.ts +0 -1
- package/dist/columns/ctx_column_sources.d.ts.map +1 -0
- package/dist/columns/ctx_column_sources.js +1 -2
- package/dist/columns/ctx_column_sources.js.map +1 -1
- package/dist/columns/index.cjs +5 -5
- package/dist/columns/index.js +5 -5
- package/dist/components/PFrameForGraphs.cjs +4 -5
- package/dist/components/PFrameForGraphs.cjs.map +1 -1
- package/dist/components/PFrameForGraphs.d.ts +0 -1
- package/dist/components/PFrameForGraphs.d.ts.map +1 -0
- package/dist/components/PFrameForGraphs.js +2 -3
- package/dist/components/PFrameForGraphs.js.map +1 -1
- package/dist/components/PlAnnotations/filter.d.ts.map +1 -0
- package/dist/components/PlAnnotations/filters_ui.cjs +1 -2
- package/dist/components/PlAnnotations/filters_ui.cjs.map +1 -1
- package/dist/components/PlAnnotations/filters_ui.d.ts +0 -2
- package/dist/components/PlAnnotations/filters_ui.d.ts.map +1 -0
- package/dist/components/PlAnnotations/filters_ui.js +1 -1
- package/dist/components/PlAnnotations/filters_ui.js.map +1 -1
- package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV2.cjs +9 -10
- package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV2.cjs.map +1 -1
- package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV2.d.ts +0 -1
- package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV2.d.ts.map +1 -0
- package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV2.js +1 -2
- package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV2.js.map +1 -1
- package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV3.cjs +14 -15
- package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV3.cjs.map +1 -1
- package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV3.d.ts +0 -2
- package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV3.d.ts.map +1 -0
- package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV3.js +1 -2
- package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV3.js.map +1 -1
- package/dist/components/PlDataTable/createPlDataTable/index.cjs +3 -4
- package/dist/components/PlDataTable/createPlDataTable/index.cjs.map +1 -1
- package/dist/components/PlDataTable/createPlDataTable/index.d.ts +0 -1
- package/dist/components/PlDataTable/createPlDataTable/index.d.ts.map +1 -0
- package/dist/components/PlDataTable/createPlDataTable/index.js +1 -2
- package/dist/components/PlDataTable/createPlDataTable/index.js.map +1 -1
- package/dist/components/PlDataTable/createPlDataTableSheet.cjs +1 -2
- package/dist/components/PlDataTable/createPlDataTableSheet.cjs.map +1 -1
- package/dist/components/PlDataTable/createPlDataTableSheet.d.ts +0 -1
- package/dist/components/PlDataTable/createPlDataTableSheet.d.ts.map +1 -0
- package/dist/components/PlDataTable/createPlDataTableSheet.js +1 -1
- package/dist/components/PlDataTable/index.cjs +5 -5
- package/dist/components/PlDataTable/index.js +5 -5
- package/dist/components/PlDataTable/labels.cjs +4 -5
- package/dist/components/PlDataTable/labels.cjs.map +1 -1
- package/dist/components/PlDataTable/labels.js +1 -2
- package/dist/components/PlDataTable/labels.js.map +1 -1
- package/dist/components/PlDataTable/state-migration.cjs +4 -5
- package/dist/components/PlDataTable/state-migration.cjs.map +1 -1
- package/dist/components/PlDataTable/state-migration.d.ts.map +1 -0
- package/dist/components/PlDataTable/state-migration.js +1 -2
- package/dist/components/PlDataTable/state-migration.js.map +1 -1
- package/dist/components/PlDataTable/typesV4.d.ts.map +1 -0
- package/dist/components/PlDataTable/typesV5.d.ts +0 -1
- package/dist/components/PlDataTable/typesV5.d.ts.map +1 -0
- package/dist/components/PlMultiSequenceAlignment.cjs +2 -3
- package/dist/components/PlMultiSequenceAlignment.cjs.map +1 -1
- package/dist/components/PlMultiSequenceAlignment.d.ts.map +1 -0
- package/dist/components/PlMultiSequenceAlignment.js +1 -2
- package/dist/components/PlMultiSequenceAlignment.js.map +1 -1
- package/dist/components/PlSelectionModel.cjs +1 -2
- package/dist/components/PlSelectionModel.cjs.map +1 -1
- package/dist/components/PlSelectionModel.d.ts.map +1 -0
- package/dist/components/PlSelectionModel.js +1 -1
- package/dist/components/index.cjs +11 -11
- package/dist/components/index.d.ts +0 -2
- package/dist/components/index.js +10 -10
- package/dist/config/actions.cjs +1 -2
- package/dist/config/actions.cjs.map +1 -1
- package/dist/config/actions.d.ts.map +1 -0
- package/dist/config/actions.js +1 -1
- package/dist/config/actions_kinds.d.ts.map +1 -0
- package/dist/config/index.cjs +1 -1
- package/dist/config/index.js +1 -1
- package/dist/config/model.d.ts.map +1 -0
- package/dist/config/model_meta.d.ts.map +1 -0
- package/dist/config/type_engine.d.ts.map +1 -0
- package/dist/config/type_util.d.ts.map +1 -0
- package/dist/env_value.cjs +1 -2
- package/dist/env_value.cjs.map +1 -1
- package/dist/env_value.d.ts.map +1 -0
- package/dist/env_value.js +1 -1
- package/dist/env_value.js.map +1 -1
- package/dist/filters/converters/filterToQuery.cjs +3 -4
- package/dist/filters/converters/filterToQuery.cjs.map +1 -1
- package/dist/filters/converters/filterToQuery.d.ts.map +1 -0
- package/dist/filters/converters/filterToQuery.js +1 -2
- package/dist/filters/converters/filterToQuery.js.map +1 -1
- package/dist/filters/converters/filterUiToExpressionImpl.cjs +3 -4
- package/dist/filters/converters/filterUiToExpressionImpl.cjs.map +1 -1
- package/dist/filters/converters/filterUiToExpressionImpl.d.ts.map +1 -0
- package/dist/filters/converters/filterUiToExpressionImpl.js +1 -2
- package/dist/filters/converters/filterUiToExpressionImpl.js.map +1 -1
- package/dist/filters/converters/index.cjs +2 -2
- package/dist/filters/converters/index.js +2 -2
- package/dist/filters/distill.cjs +3 -4
- package/dist/filters/distill.cjs.map +1 -1
- package/dist/filters/distill.d.ts.map +1 -0
- package/dist/filters/distill.js +1 -2
- package/dist/filters/distill.js.map +1 -1
- package/dist/filters/index.cjs +4 -4
- package/dist/filters/index.d.ts +0 -1
- package/dist/filters/index.js +3 -3
- package/dist/filters/traverse.cjs +1 -2
- package/dist/filters/traverse.cjs.map +1 -1
- package/dist/filters/traverse.js +1 -1
- package/dist/filters/traverse.js.map +1 -1
- package/dist/filters/types.d.ts.map +1 -0
- package/dist/index.cjs +78 -76
- package/dist/index.d.ts +0 -9
- package/dist/index.js +3 -6
- package/dist/internal.cjs +1 -2
- package/dist/internal.cjs.map +1 -1
- package/dist/internal.js +1 -1
- package/dist/internal.js.map +1 -1
- package/dist/labels/derive_distinct_labels.cjs +2 -3
- package/dist/labels/derive_distinct_labels.cjs.map +1 -1
- package/dist/labels/derive_distinct_labels.d.ts.map +1 -0
- package/dist/labels/derive_distinct_labels.js +1 -2
- package/dist/labels/derive_distinct_labels.js.map +1 -1
- package/dist/labels/index.cjs +2 -2
- package/dist/labels/index.js +2 -2
- package/dist/labels/write_labels_to_specs.cjs +2 -3
- package/dist/labels/write_labels_to_specs.cjs.map +1 -1
- package/dist/labels/write_labels_to_specs.d.ts +0 -2
- package/dist/labels/write_labels_to_specs.d.ts.map +1 -0
- package/dist/labels/write_labels_to_specs.js +1 -2
- package/dist/labels/write_labels_to_specs.js.map +1 -1
- package/dist/package.cjs +7 -8
- package/dist/package.js +2 -2
- package/dist/pframe.cjs +2 -3
- package/dist/pframe.cjs.map +1 -1
- package/dist/pframe.d.ts.map +1 -0
- package/dist/pframe.js +1 -2
- package/dist/pframe.js.map +1 -1
- package/dist/pframe_utils/axes.cjs +2 -3
- package/dist/pframe_utils/axes.cjs.map +1 -1
- package/dist/pframe_utils/axes.d.ts +0 -1
- package/dist/pframe_utils/axes.d.ts.map +1 -0
- package/dist/pframe_utils/axes.js +1 -2
- package/dist/pframe_utils/axes.js.map +1 -1
- package/dist/pframe_utils/columns.cjs +5 -6
- package/dist/pframe_utils/columns.cjs.map +1 -1
- package/dist/pframe_utils/columns.d.ts +0 -1
- package/dist/pframe_utils/columns.d.ts.map +1 -0
- package/dist/pframe_utils/columns.js +1 -2
- package/dist/pframe_utils/columns.js.map +1 -1
- package/dist/pframe_utils/index.cjs +3 -4
- package/dist/pframe_utils/index.cjs.map +1 -1
- package/dist/pframe_utils/index.d.ts.map +1 -0
- package/dist/pframe_utils/index.js +2 -3
- package/dist/pframe_utils/index.js.map +1 -1
- package/dist/platforma.d.ts.map +1 -0
- package/dist/plugin_handle.cjs +1 -2
- package/dist/plugin_handle.cjs.map +1 -1
- package/dist/plugin_handle.d.ts.map +1 -0
- package/dist/plugin_handle.js +1 -1
- package/dist/plugin_model.cjs +3 -4
- package/dist/plugin_model.cjs.map +1 -1
- package/dist/plugin_model.d.ts +0 -1
- package/dist/plugin_model.d.ts.map +1 -0
- package/dist/plugin_model.js +1 -2
- package/dist/plugin_model.js.map +1 -1
- package/dist/raw_globals.cjs +3 -4
- package/dist/raw_globals.cjs.map +1 -1
- package/dist/raw_globals.d.ts.map +1 -0
- package/dist/raw_globals.js +1 -2
- package/dist/raw_globals.js.map +1 -1
- package/dist/ref_util.cjs +3 -4
- package/dist/ref_util.cjs.map +1 -1
- package/dist/ref_util.d.ts +0 -2
- package/dist/ref_util.d.ts.map +1 -0
- package/dist/ref_util.js +1 -2
- package/dist/ref_util.js.map +1 -1
- package/dist/render/accessor.cjs +4 -5
- package/dist/render/accessor.cjs.map +1 -1
- package/dist/render/accessor.d.ts.map +1 -0
- package/dist/render/accessor.js +1 -2
- package/dist/render/accessor.js.map +1 -1
- package/dist/render/api.cjs +10 -11
- package/dist/render/api.cjs.map +1 -1
- package/dist/render/api.d.ts +0 -1
- package/dist/render/api.d.ts.map +1 -0
- package/dist/render/api.js +1 -2
- package/dist/render/api.js.map +1 -1
- package/dist/render/future.cjs +2 -3
- package/dist/render/future.cjs.map +1 -1
- package/dist/render/future.d.ts.map +1 -0
- package/dist/render/future.js +1 -2
- package/dist/render/future.js.map +1 -1
- package/dist/render/index.cjs +8 -8
- package/dist/render/index.d.ts +1 -2
- package/dist/render/index.js +7 -7
- package/dist/render/internal.cjs +7 -9
- package/dist/render/internal.cjs.map +1 -1
- package/dist/render/internal.d.ts.map +1 -0
- package/dist/render/internal.js +1 -2
- package/dist/render/internal.js.map +1 -1
- package/dist/render/traversal_ops.d.ts.map +1 -0
- package/dist/render/util/axis_filtering.cjs +1 -2
- package/dist/render/util/axis_filtering.cjs.map +1 -1
- package/dist/render/util/axis_filtering.d.ts.map +1 -0
- package/dist/render/util/axis_filtering.js +1 -1
- package/dist/render/util/column_collection.cjs +5 -6
- package/dist/render/util/column_collection.cjs.map +1 -1
- package/dist/render/util/column_collection.d.ts +0 -1
- package/dist/render/util/column_collection.d.ts.map +1 -0
- package/dist/render/util/column_collection.js +1 -2
- package/dist/render/util/column_collection.js.map +1 -1
- package/dist/render/util/index.cjs +4 -4
- package/dist/render/util/index.js +4 -4
- package/dist/render/util/label.cjs +2 -3
- package/dist/render/util/label.cjs.map +1 -1
- package/dist/render/util/label.d.ts.map +1 -0
- package/dist/render/util/label.js +1 -2
- package/dist/render/util/label.js.map +1 -1
- package/dist/render/util/pcolumn_data.cjs +9 -10
- package/dist/render/util/pcolumn_data.cjs.map +1 -1
- package/dist/render/util/pcolumn_data.d.ts.map +1 -0
- package/dist/render/util/pcolumn_data.js +7 -8
- package/dist/render/util/pcolumn_data.js.map +1 -1
- package/dist/render/util/pframe_upgraders.cjs +1 -2
- package/dist/render/util/pframe_upgraders.cjs.map +1 -1
- package/dist/render/util/pframe_upgraders.js +1 -1
- package/dist/render/util/split_selectors.d.ts.map +1 -0
- package/dist/services/block_services.cjs +2 -3
- package/dist/services/block_services.cjs.map +1 -1
- package/dist/services/block_services.d.ts +2 -2
- package/dist/services/block_services.d.ts.map +1 -0
- package/dist/services/block_services.js +1 -2
- package/dist/services/block_services.js.map +1 -1
- package/dist/services/index.cjs +2 -2
- package/dist/services/index.js +2 -2
- package/dist/services/service_bridge.cjs +1 -2
- package/dist/services/service_bridge.cjs.map +1 -1
- package/dist/services/service_bridge.d.ts.map +1 -0
- package/dist/services/service_bridge.js +1 -1
- package/dist/services/service_resolve.d.ts.map +1 -0
- package/dist/version.cjs +2 -4
- package/dist/version.cjs.map +1 -1
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +1 -2
- package/dist/version.js.map +1 -1
- package/package.json +12 -12
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filterUiToExpressionImpl.js","names":[],"sources":["../../../src/filters/converters/filterUiToExpressionImpl.ts"],"sourcesContent":["import { assertNever } from \"@milaboratories/pl-model-common\";\nimport type { FilterSpecLeaf } from \"@milaboratories/pl-model-common\";\nimport {\n and,\n col,\n lit,\n or,\n rank,\n type Expression,\n type ExpressionImpl,\n} from \"@milaboratories/ptabler-expression-js\";\nimport type { FilterSpec } from \"../types\";\nimport { traverseFilterSpec } from \"../traverse\";\n\nexport function convertFilterUiToExpressionImpl(value: FilterSpec): ExpressionImpl {\n return traverseFilterSpec(value, {\n leaf: leafToExpressionImpl,\n and: (expressions) => {\n if (expressions.length === 0) {\n throw new Error(\"AND filter requires at least one operand\");\n }\n return and(...expressions);\n },\n or: (expressions) => {\n if (expressions.length === 0) {\n throw new Error(\"OR filter requires at least one operand\");\n }\n return or(...expressions);\n },\n not: (result) => result.not(),\n });\n}\n\nfunction leafToExpressionImpl(value: FilterSpecLeaf): ExpressionImpl {\n switch (value.type) {\n case \"isNA\":\n return col(value.column).isNull();\n case \"isNotNA\":\n return col(value.column).isNotNull();\n case \"patternEquals\":\n return col(value.column).eq(lit(value.value));\n case \"patternNotEquals\":\n return col(value.column).neq(lit(value.value));\n case \"patternContainSubsequence\":\n return col(value.column).strContains(value.value, false, true);\n case \"patternNotContainSubsequence\":\n return col(value.column).strContains(value.value, false, true).not();\n case \"equal\":\n return col(value.column).eq(lit(value.x));\n case \"notEqual\":\n return col(value.column).neq(lit(value.x));\n case \"lessThan\":\n return col(value.column).lt(lit(value.x));\n case \"greaterThan\":\n return col(value.column).gt(lit(value.x));\n case \"lessThanOrEqual\":\n return col(value.column).le(lit(value.x));\n case \"greaterThanOrEqual\":\n return col(value.column).ge(lit(value.x));\n case \"equalToColumn\":\n return col(value.column).eq(col(value.rhs));\n case \"greaterThanColumn\":\n if (value.minDiff !== undefined && value.minDiff !== 0) {\n return col(value.column).plus(lit(value.minDiff)).gt(col(value.rhs));\n }\n return col(value.column).gt(col(value.rhs));\n case \"lessThanColumn\":\n if (value.minDiff !== undefined && value.minDiff !== 0) {\n return col(value.column).plus(lit(value.minDiff)).lt(col(value.rhs));\n }\n return col(value.column).lt(col(value.rhs));\n case \"greaterThanColumnOrEqual\":\n if (value.minDiff !== undefined && value.minDiff !== 0) {\n return col(value.column).plus(lit(value.minDiff)).ge(col(value.rhs));\n }\n return col(value.column).ge(col(value.rhs));\n case \"lessThanColumnOrEqual\":\n if (value.minDiff !== undefined && value.minDiff !== 0) {\n return col(value.column).plus(lit(value.minDiff)).le(col(value.rhs));\n }\n return col(value.column).le(col(value.rhs));\n case \"topN\":\n return rank(col(value.column), true).over([]).le(lit(value.n));\n case \"bottomN\":\n return rank(col(value.column), false).over([]).le(lit(value.n));\n case \"patternMatchesRegularExpression\":\n case \"patternFuzzyContainSubsequence\":\n case \"inSet\":\n case \"notInSet\":\n case \"ifNa\":\n throw new Error(\"Not implemented filter type: \" + value.type);\n case undefined:\n throw new Error(\"Filter type is undefined, this should not happen\");\n default:\n assertNever(value);\n }\n}\n\nexport function convertFilterUiToExpressions(value: FilterSpec): Expression {\n return convertFilterUiToExpressionImpl(value).toJSON();\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"filterUiToExpressionImpl.js","names":[],"sources":["../../../src/filters/converters/filterUiToExpressionImpl.ts"],"sourcesContent":["import { assertNever } from \"@milaboratories/pl-model-common\";\nimport type { FilterSpecLeaf } from \"@milaboratories/pl-model-common\";\nimport {\n and,\n col,\n lit,\n or,\n rank,\n type Expression,\n type ExpressionImpl,\n} from \"@milaboratories/ptabler-expression-js\";\nimport type { FilterSpec } from \"../types\";\nimport { traverseFilterSpec } from \"../traverse\";\n\nexport function convertFilterUiToExpressionImpl(value: FilterSpec): ExpressionImpl {\n return traverseFilterSpec(value, {\n leaf: leafToExpressionImpl,\n and: (expressions) => {\n if (expressions.length === 0) {\n throw new Error(\"AND filter requires at least one operand\");\n }\n return and(...expressions);\n },\n or: (expressions) => {\n if (expressions.length === 0) {\n throw new Error(\"OR filter requires at least one operand\");\n }\n return or(...expressions);\n },\n not: (result) => result.not(),\n });\n}\n\nfunction leafToExpressionImpl(value: FilterSpecLeaf): ExpressionImpl {\n switch (value.type) {\n case \"isNA\":\n return col(value.column).isNull();\n case \"isNotNA\":\n return col(value.column).isNotNull();\n case \"patternEquals\":\n return col(value.column).eq(lit(value.value));\n case \"patternNotEquals\":\n return col(value.column).neq(lit(value.value));\n case \"patternContainSubsequence\":\n return col(value.column).strContains(value.value, false, true);\n case \"patternNotContainSubsequence\":\n return col(value.column).strContains(value.value, false, true).not();\n case \"equal\":\n return col(value.column).eq(lit(value.x));\n case \"notEqual\":\n return col(value.column).neq(lit(value.x));\n case \"lessThan\":\n return col(value.column).lt(lit(value.x));\n case \"greaterThan\":\n return col(value.column).gt(lit(value.x));\n case \"lessThanOrEqual\":\n return col(value.column).le(lit(value.x));\n case \"greaterThanOrEqual\":\n return col(value.column).ge(lit(value.x));\n case \"equalToColumn\":\n return col(value.column).eq(col(value.rhs));\n case \"greaterThanColumn\":\n if (value.minDiff !== undefined && value.minDiff !== 0) {\n return col(value.column).plus(lit(value.minDiff)).gt(col(value.rhs));\n }\n return col(value.column).gt(col(value.rhs));\n case \"lessThanColumn\":\n if (value.minDiff !== undefined && value.minDiff !== 0) {\n return col(value.column).plus(lit(value.minDiff)).lt(col(value.rhs));\n }\n return col(value.column).lt(col(value.rhs));\n case \"greaterThanColumnOrEqual\":\n if (value.minDiff !== undefined && value.minDiff !== 0) {\n return col(value.column).plus(lit(value.minDiff)).ge(col(value.rhs));\n }\n return col(value.column).ge(col(value.rhs));\n case \"lessThanColumnOrEqual\":\n if (value.minDiff !== undefined && value.minDiff !== 0) {\n return col(value.column).plus(lit(value.minDiff)).le(col(value.rhs));\n }\n return col(value.column).le(col(value.rhs));\n case \"topN\":\n return rank(col(value.column), true).over([]).le(lit(value.n));\n case \"bottomN\":\n return rank(col(value.column), false).over([]).le(lit(value.n));\n case \"patternMatchesRegularExpression\":\n case \"patternFuzzyContainSubsequence\":\n case \"inSet\":\n case \"notInSet\":\n case \"ifNa\":\n throw new Error(\"Not implemented filter type: \" + value.type);\n case undefined:\n throw new Error(\"Filter type is undefined, this should not happen\");\n default:\n assertNever(value);\n }\n}\n\nexport function convertFilterUiToExpressions(value: FilterSpec): Expression {\n return convertFilterUiToExpressionImpl(value).toJSON();\n}\n"],"mappings":";;;;AAcA,SAAgB,gCAAgC,OAAmC;AACjF,QAAO,mBAAmB,OAAO;EAC/B,MAAM;EACN,MAAM,gBAAgB;AACpB,OAAI,YAAY,WAAW,EACzB,OAAM,IAAI,MAAM,2CAA2C;AAE7D,UAAO,IAAI,GAAG,YAAY;;EAE5B,KAAK,gBAAgB;AACnB,OAAI,YAAY,WAAW,EACzB,OAAM,IAAI,MAAM,0CAA0C;AAE5D,UAAO,GAAG,GAAG,YAAY;;EAE3B,MAAM,WAAW,OAAO,KAAK;EAC9B,CAAC;;AAGJ,SAAS,qBAAqB,OAAuC;AACnE,SAAQ,MAAM,MAAd;EACE,KAAK,OACH,QAAO,IAAI,MAAM,OAAO,CAAC,QAAQ;EACnC,KAAK,UACH,QAAO,IAAI,MAAM,OAAO,CAAC,WAAW;EACtC,KAAK,gBACH,QAAO,IAAI,MAAM,OAAO,CAAC,GAAG,IAAI,MAAM,MAAM,CAAC;EAC/C,KAAK,mBACH,QAAO,IAAI,MAAM,OAAO,CAAC,IAAI,IAAI,MAAM,MAAM,CAAC;EAChD,KAAK,4BACH,QAAO,IAAI,MAAM,OAAO,CAAC,YAAY,MAAM,OAAO,OAAO,KAAK;EAChE,KAAK,+BACH,QAAO,IAAI,MAAM,OAAO,CAAC,YAAY,MAAM,OAAO,OAAO,KAAK,CAAC,KAAK;EACtE,KAAK,QACH,QAAO,IAAI,MAAM,OAAO,CAAC,GAAG,IAAI,MAAM,EAAE,CAAC;EAC3C,KAAK,WACH,QAAO,IAAI,MAAM,OAAO,CAAC,IAAI,IAAI,MAAM,EAAE,CAAC;EAC5C,KAAK,WACH,QAAO,IAAI,MAAM,OAAO,CAAC,GAAG,IAAI,MAAM,EAAE,CAAC;EAC3C,KAAK,cACH,QAAO,IAAI,MAAM,OAAO,CAAC,GAAG,IAAI,MAAM,EAAE,CAAC;EAC3C,KAAK,kBACH,QAAO,IAAI,MAAM,OAAO,CAAC,GAAG,IAAI,MAAM,EAAE,CAAC;EAC3C,KAAK,qBACH,QAAO,IAAI,MAAM,OAAO,CAAC,GAAG,IAAI,MAAM,EAAE,CAAC;EAC3C,KAAK,gBACH,QAAO,IAAI,MAAM,OAAO,CAAC,GAAG,IAAI,MAAM,IAAI,CAAC;EAC7C,KAAK;AACH,OAAI,MAAM,YAAY,KAAA,KAAa,MAAM,YAAY,EACnD,QAAO,IAAI,MAAM,OAAO,CAAC,KAAK,IAAI,MAAM,QAAQ,CAAC,CAAC,GAAG,IAAI,MAAM,IAAI,CAAC;AAEtE,UAAO,IAAI,MAAM,OAAO,CAAC,GAAG,IAAI,MAAM,IAAI,CAAC;EAC7C,KAAK;AACH,OAAI,MAAM,YAAY,KAAA,KAAa,MAAM,YAAY,EACnD,QAAO,IAAI,MAAM,OAAO,CAAC,KAAK,IAAI,MAAM,QAAQ,CAAC,CAAC,GAAG,IAAI,MAAM,IAAI,CAAC;AAEtE,UAAO,IAAI,MAAM,OAAO,CAAC,GAAG,IAAI,MAAM,IAAI,CAAC;EAC7C,KAAK;AACH,OAAI,MAAM,YAAY,KAAA,KAAa,MAAM,YAAY,EACnD,QAAO,IAAI,MAAM,OAAO,CAAC,KAAK,IAAI,MAAM,QAAQ,CAAC,CAAC,GAAG,IAAI,MAAM,IAAI,CAAC;AAEtE,UAAO,IAAI,MAAM,OAAO,CAAC,GAAG,IAAI,MAAM,IAAI,CAAC;EAC7C,KAAK;AACH,OAAI,MAAM,YAAY,KAAA,KAAa,MAAM,YAAY,EACnD,QAAO,IAAI,MAAM,OAAO,CAAC,KAAK,IAAI,MAAM,QAAQ,CAAC,CAAC,GAAG,IAAI,MAAM,IAAI,CAAC;AAEtE,UAAO,IAAI,MAAM,OAAO,CAAC,GAAG,IAAI,MAAM,IAAI,CAAC;EAC7C,KAAK,OACH,QAAO,KAAK,IAAI,MAAM,OAAO,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,IAAI,MAAM,EAAE,CAAC;EAChE,KAAK,UACH,QAAO,KAAK,IAAI,MAAM,OAAO,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,IAAI,MAAM,EAAE,CAAC;EACjE,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK,OACH,OAAM,IAAI,MAAM,kCAAkC,MAAM,KAAK;EAC/D,KAAK,KAAA,EACH,OAAM,IAAI,MAAM,mDAAmD;EACrE,QACE,aAAY,MAAM;;;AAIxB,SAAgB,6BAA6B,OAA+B;AAC1E,QAAO,gCAAgC,MAAM,CAAC,QAAQ"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
require("./filterToQuery.cjs");
|
|
2
|
+
require("./filterUiToExpressionImpl.cjs");
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
1
|
+
import "./filterToQuery.js";
|
|
2
|
+
import "./filterUiToExpressionImpl.js";
|
package/dist/filters/distill.cjs
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
const require_traverse = require(
|
|
1
|
+
require("../_virtual/_rolldown/runtime.cjs");
|
|
2
|
+
const require_traverse = require("./traverse.cjs");
|
|
3
3
|
let es_toolkit_compat = require("es-toolkit/compat");
|
|
4
|
-
|
|
5
4
|
//#region src/filters/distill.ts
|
|
6
5
|
const KNOWN_LEAF_KEYS = new Set([
|
|
7
6
|
"n",
|
|
@@ -64,7 +63,7 @@ function distillFilterSpec(filter) {
|
|
|
64
63
|
}
|
|
65
64
|
});
|
|
66
65
|
}
|
|
67
|
-
|
|
68
66
|
//#endregion
|
|
69
67
|
exports.distillFilterSpec = distillFilterSpec;
|
|
68
|
+
|
|
70
69
|
//# sourceMappingURL=distill.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"distill.cjs","names":["traverseFilterSpec"],"sources":["../../src/filters/distill.ts"],"sourcesContent":["import { DistributiveKeys, UnionToTuples } from \"@milaboratories/helpers\";\nimport {\n RootFilterSpec,\n type FilterSpec,\n type FilterSpecLeaf,\n} from \"@milaboratories/pl-model-common\";\nimport { traverseFilterSpec } from \"./traverse\";\nimport { InferFilterSpecLeaf } from \"@milaboratories/pl-model-common\";\nimport { isEmpty } from \"es-toolkit/compat\";\n\n/** All possible field names that can appear in any FilterSpecLeaf variant. */\ntype FilterSpecLeafKey = DistributiveKeys<FilterSpecLeaf<string>>;\n\n/** Compile-time check: every key in the tuple is a valid leaf key (via satisfies). */\nconst KNOWN_LEAF_KEYS_TUPLE: UnionToTuples<FilterSpecLeafKey> = [\n \"n\",\n \"x\",\n \"rhs\",\n \"type\",\n \"value\",\n \"column\",\n \"minDiff\",\n \"maxEdits\",\n \"wildcard\",\n \"replacement\",\n \"substitutionsOnly\",\n];\nconst KNOWN_LEAF_KEYS: Set<FilterSpecLeafKey> = new Set(KNOWN_LEAF_KEYS_TUPLE);\n\n/** Returns true if the leaf is filled — type is defined and no required fields are undefined. */\nfunction isFilledLeaf<T>(node: FilterSpecLeaf<T>): boolean {\n if (node.type == null) return false;\n return !Object.values(node).some((value) => {\n switch (typeof value) {\n case \"number\":\n case \"boolean\":\n return false;\n case \"string\":\n return value.trim() === \"\";\n default: // undefined, null, empty objects/arrays\n return isEmpty(value);\n }\n });\n}\n\nfunction distillLeaf<T>(node: FilterSpecLeaf<T>): FilterSpecLeaf<T> {\n const result: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(node)) {\n if (KNOWN_LEAF_KEYS.has(key as FilterSpecLeafKey)) {\n result[key] = value;\n }\n }\n return result as FilterSpecLeaf<T>;\n}\n\n/**\n * Strips non-FilterSpec metadata (whitelist approach) and removes\n * unfilled leaves (type is undefined or any required field is undefined).\n */\nexport function distillFilterSpec<\n FS extends FilterSpec<FilterSpecLeaf<unknown>, unknown, unknown>,\n R extends FS extends RootFilterSpec<FilterSpecLeaf<unknown>, unknown, unknown>\n ? RootFilterSpec<InferFilterSpecLeaf<FS>>\n : FilterSpec<InferFilterSpecLeaf<FS>>,\n>(filter: null | undefined | FS): null | R {\n if (filter == null) return null;\n return traverseFilterSpec<FS, null | R>(filter, {\n leaf: (leaf) => {\n const distilled = distillLeaf(leaf);\n return isFilledLeaf(distilled) ? (distilled as R) : null;\n },\n and: (results) => {\n const filtered = results.filter((f): f is NonNullable<typeof f> => f !== null);\n return filtered.length === 0 ? null : ({ type: \"and\", filters: filtered } as R);\n },\n or: (results) => {\n const filtered = results.filter((f): f is NonNullable<typeof f> => f !== null);\n return filtered.length === 0 ? null : ({ type: \"or\", filters: filtered } as R);\n },\n not: (result) => (result === null ? null : ({ type: \"not\", filter: result } as R)),\n });\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"distill.cjs","names":["traverseFilterSpec"],"sources":["../../src/filters/distill.ts"],"sourcesContent":["import { DistributiveKeys, UnionToTuples } from \"@milaboratories/helpers\";\nimport {\n RootFilterSpec,\n type FilterSpec,\n type FilterSpecLeaf,\n} from \"@milaboratories/pl-model-common\";\nimport { traverseFilterSpec } from \"./traverse\";\nimport { InferFilterSpecLeaf } from \"@milaboratories/pl-model-common\";\nimport { isEmpty } from \"es-toolkit/compat\";\n\n/** All possible field names that can appear in any FilterSpecLeaf variant. */\ntype FilterSpecLeafKey = DistributiveKeys<FilterSpecLeaf<string>>;\n\n/** Compile-time check: every key in the tuple is a valid leaf key (via satisfies). */\nconst KNOWN_LEAF_KEYS_TUPLE: UnionToTuples<FilterSpecLeafKey> = [\n \"n\",\n \"x\",\n \"rhs\",\n \"type\",\n \"value\",\n \"column\",\n \"minDiff\",\n \"maxEdits\",\n \"wildcard\",\n \"replacement\",\n \"substitutionsOnly\",\n];\nconst KNOWN_LEAF_KEYS: Set<FilterSpecLeafKey> = new Set(KNOWN_LEAF_KEYS_TUPLE);\n\n/** Returns true if the leaf is filled — type is defined and no required fields are undefined. */\nfunction isFilledLeaf<T>(node: FilterSpecLeaf<T>): boolean {\n if (node.type == null) return false;\n return !Object.values(node).some((value) => {\n switch (typeof value) {\n case \"number\":\n case \"boolean\":\n return false;\n case \"string\":\n return value.trim() === \"\";\n default: // undefined, null, empty objects/arrays\n return isEmpty(value);\n }\n });\n}\n\nfunction distillLeaf<T>(node: FilterSpecLeaf<T>): FilterSpecLeaf<T> {\n const result: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(node)) {\n if (KNOWN_LEAF_KEYS.has(key as FilterSpecLeafKey)) {\n result[key] = value;\n }\n }\n return result as FilterSpecLeaf<T>;\n}\n\n/**\n * Strips non-FilterSpec metadata (whitelist approach) and removes\n * unfilled leaves (type is undefined or any required field is undefined).\n */\nexport function distillFilterSpec<\n FS extends FilterSpec<FilterSpecLeaf<unknown>, unknown, unknown>,\n R extends FS extends RootFilterSpec<FilterSpecLeaf<unknown>, unknown, unknown>\n ? RootFilterSpec<InferFilterSpecLeaf<FS>>\n : FilterSpec<InferFilterSpecLeaf<FS>>,\n>(filter: null | undefined | FS): null | R {\n if (filter == null) return null;\n return traverseFilterSpec<FS, null | R>(filter, {\n leaf: (leaf) => {\n const distilled = distillLeaf(leaf);\n return isFilledLeaf(distilled) ? (distilled as R) : null;\n },\n and: (results) => {\n const filtered = results.filter((f): f is NonNullable<typeof f> => f !== null);\n return filtered.length === 0 ? null : ({ type: \"and\", filters: filtered } as R);\n },\n or: (results) => {\n const filtered = results.filter((f): f is NonNullable<typeof f> => f !== null);\n return filtered.length === 0 ? null : ({ type: \"or\", filters: filtered } as R);\n },\n not: (result) => (result === null ? null : ({ type: \"not\", filter: result } as R)),\n });\n}\n"],"mappings":";;;;AA2BA,MAAM,kBAA0C,IAAI,IAbY;CAC9D;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD,CAC6E;;AAG9E,SAAS,aAAgB,MAAkC;AACzD,KAAI,KAAK,QAAQ,KAAM,QAAO;AAC9B,QAAO,CAAC,OAAO,OAAO,KAAK,CAAC,MAAM,UAAU;AAC1C,UAAQ,OAAO,OAAf;GACE,KAAK;GACL,KAAK,UACH,QAAO;GACT,KAAK,SACH,QAAO,MAAM,MAAM,KAAK;GAC1B,QACE,SAAA,GAAA,kBAAA,SAAe,MAAM;;GAEzB;;AAGJ,SAAS,YAAe,MAA4C;CAClE,MAAM,SAAkC,EAAE;AAC1C,MAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,KAAK,CAC7C,KAAI,gBAAgB,IAAI,IAAyB,CAC/C,QAAO,OAAO;AAGlB,QAAO;;;;;;AAOT,SAAgB,kBAKd,QAAyC;AACzC,KAAI,UAAU,KAAM,QAAO;AAC3B,QAAOA,iBAAAA,mBAAiC,QAAQ;EAC9C,OAAO,SAAS;GACd,MAAM,YAAY,YAAY,KAAK;AACnC,UAAO,aAAa,UAAU,GAAI,YAAkB;;EAEtD,MAAM,YAAY;GAChB,MAAM,WAAW,QAAQ,QAAQ,MAAkC,MAAM,KAAK;AAC9E,UAAO,SAAS,WAAW,IAAI,OAAQ;IAAE,MAAM;IAAO,SAAS;IAAU;;EAE3E,KAAK,YAAY;GACf,MAAM,WAAW,QAAQ,QAAQ,MAAkC,MAAM,KAAK;AAC9E,UAAO,SAAS,WAAW,IAAI,OAAQ;IAAE,MAAM;IAAM,SAAS;IAAU;;EAE1E,MAAM,WAAY,WAAW,OAAO,OAAQ;GAAE,MAAM;GAAO,QAAQ;GAAQ;EAC5E,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"distill.d.ts","names":[],"sources":["../../src/filters/distill.ts"],"mappings":";;;;AA2DA;;;iBAAgB,iBAAA,YACH,UAAA,CAAW,cAAA,yCACZ,EAAA,SAAW,cAAA,CAAe,cAAA,+BAChC,cAAA,CAAe,mBAAA,CAAoB,EAAA,KACnC,UAAA,CAAW,mBAAA,CAAoB,EAAA,IAAA,CACnC,MAAA,qBAA2B,EAAA,UAAY,CAAA"}
|
package/dist/filters/distill.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { traverseFilterSpec } from "./traverse.js";
|
|
2
2
|
import { isEmpty } from "es-toolkit/compat";
|
|
3
|
-
|
|
4
3
|
//#region src/filters/distill.ts
|
|
5
4
|
const KNOWN_LEAF_KEYS = new Set([
|
|
6
5
|
"n",
|
|
@@ -63,7 +62,7 @@ function distillFilterSpec(filter) {
|
|
|
63
62
|
}
|
|
64
63
|
});
|
|
65
64
|
}
|
|
66
|
-
|
|
67
65
|
//#endregion
|
|
68
66
|
export { distillFilterSpec };
|
|
67
|
+
|
|
69
68
|
//# sourceMappingURL=distill.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"distill.js","names":[],"sources":["../../src/filters/distill.ts"],"sourcesContent":["import { DistributiveKeys, UnionToTuples } from \"@milaboratories/helpers\";\nimport {\n RootFilterSpec,\n type FilterSpec,\n type FilterSpecLeaf,\n} from \"@milaboratories/pl-model-common\";\nimport { traverseFilterSpec } from \"./traverse\";\nimport { InferFilterSpecLeaf } from \"@milaboratories/pl-model-common\";\nimport { isEmpty } from \"es-toolkit/compat\";\n\n/** All possible field names that can appear in any FilterSpecLeaf variant. */\ntype FilterSpecLeafKey = DistributiveKeys<FilterSpecLeaf<string>>;\n\n/** Compile-time check: every key in the tuple is a valid leaf key (via satisfies). */\nconst KNOWN_LEAF_KEYS_TUPLE: UnionToTuples<FilterSpecLeafKey> = [\n \"n\",\n \"x\",\n \"rhs\",\n \"type\",\n \"value\",\n \"column\",\n \"minDiff\",\n \"maxEdits\",\n \"wildcard\",\n \"replacement\",\n \"substitutionsOnly\",\n];\nconst KNOWN_LEAF_KEYS: Set<FilterSpecLeafKey> = new Set(KNOWN_LEAF_KEYS_TUPLE);\n\n/** Returns true if the leaf is filled — type is defined and no required fields are undefined. */\nfunction isFilledLeaf<T>(node: FilterSpecLeaf<T>): boolean {\n if (node.type == null) return false;\n return !Object.values(node).some((value) => {\n switch (typeof value) {\n case \"number\":\n case \"boolean\":\n return false;\n case \"string\":\n return value.trim() === \"\";\n default: // undefined, null, empty objects/arrays\n return isEmpty(value);\n }\n });\n}\n\nfunction distillLeaf<T>(node: FilterSpecLeaf<T>): FilterSpecLeaf<T> {\n const result: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(node)) {\n if (KNOWN_LEAF_KEYS.has(key as FilterSpecLeafKey)) {\n result[key] = value;\n }\n }\n return result as FilterSpecLeaf<T>;\n}\n\n/**\n * Strips non-FilterSpec metadata (whitelist approach) and removes\n * unfilled leaves (type is undefined or any required field is undefined).\n */\nexport function distillFilterSpec<\n FS extends FilterSpec<FilterSpecLeaf<unknown>, unknown, unknown>,\n R extends FS extends RootFilterSpec<FilterSpecLeaf<unknown>, unknown, unknown>\n ? RootFilterSpec<InferFilterSpecLeaf<FS>>\n : FilterSpec<InferFilterSpecLeaf<FS>>,\n>(filter: null | undefined | FS): null | R {\n if (filter == null) return null;\n return traverseFilterSpec<FS, null | R>(filter, {\n leaf: (leaf) => {\n const distilled = distillLeaf(leaf);\n return isFilledLeaf(distilled) ? (distilled as R) : null;\n },\n and: (results) => {\n const filtered = results.filter((f): f is NonNullable<typeof f> => f !== null);\n return filtered.length === 0 ? null : ({ type: \"and\", filters: filtered } as R);\n },\n or: (results) => {\n const filtered = results.filter((f): f is NonNullable<typeof f> => f !== null);\n return filtered.length === 0 ? null : ({ type: \"or\", filters: filtered } as R);\n },\n not: (result) => (result === null ? null : ({ type: \"not\", filter: result } as R)),\n });\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"distill.js","names":[],"sources":["../../src/filters/distill.ts"],"sourcesContent":["import { DistributiveKeys, UnionToTuples } from \"@milaboratories/helpers\";\nimport {\n RootFilterSpec,\n type FilterSpec,\n type FilterSpecLeaf,\n} from \"@milaboratories/pl-model-common\";\nimport { traverseFilterSpec } from \"./traverse\";\nimport { InferFilterSpecLeaf } from \"@milaboratories/pl-model-common\";\nimport { isEmpty } from \"es-toolkit/compat\";\n\n/** All possible field names that can appear in any FilterSpecLeaf variant. */\ntype FilterSpecLeafKey = DistributiveKeys<FilterSpecLeaf<string>>;\n\n/** Compile-time check: every key in the tuple is a valid leaf key (via satisfies). */\nconst KNOWN_LEAF_KEYS_TUPLE: UnionToTuples<FilterSpecLeafKey> = [\n \"n\",\n \"x\",\n \"rhs\",\n \"type\",\n \"value\",\n \"column\",\n \"minDiff\",\n \"maxEdits\",\n \"wildcard\",\n \"replacement\",\n \"substitutionsOnly\",\n];\nconst KNOWN_LEAF_KEYS: Set<FilterSpecLeafKey> = new Set(KNOWN_LEAF_KEYS_TUPLE);\n\n/** Returns true if the leaf is filled — type is defined and no required fields are undefined. */\nfunction isFilledLeaf<T>(node: FilterSpecLeaf<T>): boolean {\n if (node.type == null) return false;\n return !Object.values(node).some((value) => {\n switch (typeof value) {\n case \"number\":\n case \"boolean\":\n return false;\n case \"string\":\n return value.trim() === \"\";\n default: // undefined, null, empty objects/arrays\n return isEmpty(value);\n }\n });\n}\n\nfunction distillLeaf<T>(node: FilterSpecLeaf<T>): FilterSpecLeaf<T> {\n const result: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(node)) {\n if (KNOWN_LEAF_KEYS.has(key as FilterSpecLeafKey)) {\n result[key] = value;\n }\n }\n return result as FilterSpecLeaf<T>;\n}\n\n/**\n * Strips non-FilterSpec metadata (whitelist approach) and removes\n * unfilled leaves (type is undefined or any required field is undefined).\n */\nexport function distillFilterSpec<\n FS extends FilterSpec<FilterSpecLeaf<unknown>, unknown, unknown>,\n R extends FS extends RootFilterSpec<FilterSpecLeaf<unknown>, unknown, unknown>\n ? RootFilterSpec<InferFilterSpecLeaf<FS>>\n : FilterSpec<InferFilterSpecLeaf<FS>>,\n>(filter: null | undefined | FS): null | R {\n if (filter == null) return null;\n return traverseFilterSpec<FS, null | R>(filter, {\n leaf: (leaf) => {\n const distilled = distillLeaf(leaf);\n return isFilledLeaf(distilled) ? (distilled as R) : null;\n },\n and: (results) => {\n const filtered = results.filter((f): f is NonNullable<typeof f> => f !== null);\n return filtered.length === 0 ? null : ({ type: \"and\", filters: filtered } as R);\n },\n or: (results) => {\n const filtered = results.filter((f): f is NonNullable<typeof f> => f !== null);\n return filtered.length === 0 ? null : ({ type: \"or\", filters: filtered } as R);\n },\n not: (result) => (result === null ? null : ({ type: \"not\", filter: result } as R)),\n });\n}\n"],"mappings":";;;AA2BA,MAAM,kBAA0C,IAAI,IAbY;CAC9D;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD,CAC6E;;AAG9E,SAAS,aAAgB,MAAkC;AACzD,KAAI,KAAK,QAAQ,KAAM,QAAO;AAC9B,QAAO,CAAC,OAAO,OAAO,KAAK,CAAC,MAAM,UAAU;AAC1C,UAAQ,OAAO,OAAf;GACE,KAAK;GACL,KAAK,UACH,QAAO;GACT,KAAK,SACH,QAAO,MAAM,MAAM,KAAK;GAC1B,QACE,QAAO,QAAQ,MAAM;;GAEzB;;AAGJ,SAAS,YAAe,MAA4C;CAClE,MAAM,SAAkC,EAAE;AAC1C,MAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,KAAK,CAC7C,KAAI,gBAAgB,IAAI,IAAyB,CAC/C,QAAO,OAAO;AAGlB,QAAO;;;;;;AAOT,SAAgB,kBAKd,QAAyC;AACzC,KAAI,UAAU,KAAM,QAAO;AAC3B,QAAO,mBAAiC,QAAQ;EAC9C,OAAO,SAAS;GACd,MAAM,YAAY,YAAY,KAAK;AACnC,UAAO,aAAa,UAAU,GAAI,YAAkB;;EAEtD,MAAM,YAAY;GAChB,MAAM,WAAW,QAAQ,QAAQ,MAAkC,MAAM,KAAK;AAC9E,UAAO,SAAS,WAAW,IAAI,OAAQ;IAAE,MAAM;IAAO,SAAS;IAAU;;EAE3E,KAAK,YAAY;GACf,MAAM,WAAW,QAAQ,QAAQ,MAAkC,MAAM,KAAK;AAC9E,UAAO,SAAS,WAAW,IAAI,OAAQ;IAAE,MAAM;IAAM,SAAS;IAAU;;EAE1E,MAAM,WAAY,WAAW,OAAO,OAAQ;GAAE,MAAM;GAAO,QAAQ;GAAQ;EAC5E,CAAC"}
|
package/dist/filters/index.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
require(
|
|
4
|
-
|
|
1
|
+
require("./converters/filterToQuery.cjs");
|
|
2
|
+
require("./converters/filterUiToExpressionImpl.cjs");
|
|
3
|
+
require("./converters/index.cjs");
|
|
4
|
+
require("./distill.cjs");
|
package/dist/filters/index.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { filterSpecToSpecQueryExpr } from "./converters/filterToQuery.js";
|
|
2
2
|
import { FilterSpec, FilterSpecLeaf, FilterSpecNode, FilterSpecOfType, FilterSpecType, SimplifiedPColumnSpec, SimplifiedUniversalPColumnEntry } from "./types.js";
|
|
3
3
|
import { convertFilterUiToExpressionImpl, convertFilterUiToExpressions } from "./converters/filterUiToExpressionImpl.js";
|
|
4
|
-
import "./converters/index.js";
|
|
5
4
|
import { distillFilterSpec } from "./distill.js";
|
package/dist/filters/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
1
|
+
import "./converters/filterToQuery.js";
|
|
2
|
+
import "./converters/filterUiToExpressionImpl.js";
|
|
3
3
|
import "./converters/index.js";
|
|
4
|
-
import
|
|
4
|
+
import "./distill.js";
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
|
|
2
1
|
//#region src/filters/traverse.ts
|
|
3
2
|
/**
|
|
4
3
|
* Recursively traverses a FilterSpec tree bottom-up, applying visitor callbacks.
|
|
@@ -37,8 +36,8 @@ function collectFilterSpecColumns(filter) {
|
|
|
37
36
|
not: (result) => result
|
|
38
37
|
});
|
|
39
38
|
}
|
|
40
|
-
|
|
41
39
|
//#endregion
|
|
42
40
|
exports.collectFilterSpecColumns = collectFilterSpecColumns;
|
|
43
41
|
exports.traverseFilterSpec = traverseFilterSpec;
|
|
42
|
+
|
|
44
43
|
//# sourceMappingURL=traverse.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"traverse.cjs","names":[],"sources":["../../src/filters/traverse.ts"],"sourcesContent":["import type {\n FilterSpec,\n FilterSpecLeaf,\n FilterSpecNode,\n InferFilterSpecLeafColumn,\n} from \"@milaboratories/pl-model-common\";\nimport type {\n InferFilterSpecCommonLeaf,\n InferFilterSpecLeaf,\n} from \"@milaboratories/pl-model-common\";\n\nexport type FilterSpecVisitor<LeafArg, R> = {\n /** Handle a leaf filter node. */\n leaf: (leaf: LeafArg) => R;\n /** Handle an AND node after children have been traversed. */\n and: (results: R[]) => R;\n /** Handle an OR node after children have been traversed. */\n or: (results: R[]) => R;\n /** Handle a NOT node after the inner filter has been traversed. */\n not: (result: R) => R;\n};\n\n/**\n * Recursively traverses a FilterSpec tree bottom-up, applying visitor callbacks.\n *\n * Entries with `{ type: undefined }` inside `and`/`or` arrays are skipped\n * (these represent unfilled filter slots in the UI).\n *\n * Traversal order:\n * 1. Recurse into child filters (`and`/`or`/`not`)\n * 2. Apply the corresponding visitor callback with already-traversed children\n * 3. For leaf nodes, call `leaf` directly\n */\nexport function traverseFilterSpec<\n F extends FilterSpec<FilterSpecLeaf<unknown>, unknown, unknown>,\n R,\n>(\n filter: F,\n visitor: FilterSpecVisitor<InferFilterSpecCommonLeaf<F> & InferFilterSpecLeaf<F>, R>,\n): R {\n return traverseFilterSpecImpl(filter, visitor as FilterSpecVisitor<unknown, R>);\n}\n/** Internal implementation with simple generics for clean recursion. */\nfunction traverseFilterSpecImpl<R>(\n filter: FilterSpecNode<FilterSpecLeaf<unknown>, unknown, unknown>,\n visitor: FilterSpecVisitor<unknown, R>,\n): R {\n switch (filter.type) {\n case \"and\":\n return visitor.and(\n filter.filters\n .filter((f) => f.type !== undefined)\n .map((f) => traverseFilterSpecImpl(f, visitor)),\n );\n case \"or\":\n return visitor.or(\n filter.filters\n .filter((f) => f.type !== undefined)\n .map((f) => traverseFilterSpecImpl(f, visitor)),\n );\n case \"not\":\n return visitor.not(traverseFilterSpecImpl(filter.filter, visitor));\n default:\n return visitor.leaf(filter);\n }\n}\n\n/** Collects all column references (`column` and `rhs` fields) from filter leaves. */\nexport function collectFilterSpecColumns<\n F extends FilterSpec<FilterSpecLeaf<unknown>, unknown, unknown>,\n R extends InferFilterSpecLeafColumn<F> = InferFilterSpecLeafColumn<F>,\n>(filter: F): R[] {\n return traverseFilterSpec(filter, {\n leaf: (leaf) => {\n const cols: R[] = [];\n if (\"column\" in leaf && leaf.column !== undefined) cols.push(leaf.column as R);\n if (\"rhs\" in leaf && leaf.rhs !== undefined) cols.push(leaf.rhs as R);\n return cols;\n },\n and: (results) => results.flat(),\n or: (results) => results.flat(),\n not: (result) => result,\n });\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"traverse.cjs","names":[],"sources":["../../src/filters/traverse.ts"],"sourcesContent":["import type {\n FilterSpec,\n FilterSpecLeaf,\n FilterSpecNode,\n InferFilterSpecLeafColumn,\n} from \"@milaboratories/pl-model-common\";\nimport type {\n InferFilterSpecCommonLeaf,\n InferFilterSpecLeaf,\n} from \"@milaboratories/pl-model-common\";\n\nexport type FilterSpecVisitor<LeafArg, R> = {\n /** Handle a leaf filter node. */\n leaf: (leaf: LeafArg) => R;\n /** Handle an AND node after children have been traversed. */\n and: (results: R[]) => R;\n /** Handle an OR node after children have been traversed. */\n or: (results: R[]) => R;\n /** Handle a NOT node after the inner filter has been traversed. */\n not: (result: R) => R;\n};\n\n/**\n * Recursively traverses a FilterSpec tree bottom-up, applying visitor callbacks.\n *\n * Entries with `{ type: undefined }` inside `and`/`or` arrays are skipped\n * (these represent unfilled filter slots in the UI).\n *\n * Traversal order:\n * 1. Recurse into child filters (`and`/`or`/`not`)\n * 2. Apply the corresponding visitor callback with already-traversed children\n * 3. For leaf nodes, call `leaf` directly\n */\nexport function traverseFilterSpec<\n F extends FilterSpec<FilterSpecLeaf<unknown>, unknown, unknown>,\n R,\n>(\n filter: F,\n visitor: FilterSpecVisitor<InferFilterSpecCommonLeaf<F> & InferFilterSpecLeaf<F>, R>,\n): R {\n return traverseFilterSpecImpl(filter, visitor as FilterSpecVisitor<unknown, R>);\n}\n/** Internal implementation with simple generics for clean recursion. */\nfunction traverseFilterSpecImpl<R>(\n filter: FilterSpecNode<FilterSpecLeaf<unknown>, unknown, unknown>,\n visitor: FilterSpecVisitor<unknown, R>,\n): R {\n switch (filter.type) {\n case \"and\":\n return visitor.and(\n filter.filters\n .filter((f) => f.type !== undefined)\n .map((f) => traverseFilterSpecImpl(f, visitor)),\n );\n case \"or\":\n return visitor.or(\n filter.filters\n .filter((f) => f.type !== undefined)\n .map((f) => traverseFilterSpecImpl(f, visitor)),\n );\n case \"not\":\n return visitor.not(traverseFilterSpecImpl(filter.filter, visitor));\n default:\n return visitor.leaf(filter);\n }\n}\n\n/** Collects all column references (`column` and `rhs` fields) from filter leaves. */\nexport function collectFilterSpecColumns<\n F extends FilterSpec<FilterSpecLeaf<unknown>, unknown, unknown>,\n R extends InferFilterSpecLeafColumn<F> = InferFilterSpecLeafColumn<F>,\n>(filter: F): R[] {\n return traverseFilterSpec(filter, {\n leaf: (leaf) => {\n const cols: R[] = [];\n if (\"column\" in leaf && leaf.column !== undefined) cols.push(leaf.column as R);\n if (\"rhs\" in leaf && leaf.rhs !== undefined) cols.push(leaf.rhs as R);\n return cols;\n },\n and: (results) => results.flat(),\n or: (results) => results.flat(),\n not: (result) => result,\n });\n}\n"],"mappings":";;;;;;;;;;;;AAiCA,SAAgB,mBAId,QACA,SACG;AACH,QAAO,uBAAuB,QAAQ,QAAyC;;;AAGjF,SAAS,uBACP,QACA,SACG;AACH,SAAQ,OAAO,MAAf;EACE,KAAK,MACH,QAAO,QAAQ,IACb,OAAO,QACJ,QAAQ,MAAM,EAAE,SAAS,KAAA,EAAU,CACnC,KAAK,MAAM,uBAAuB,GAAG,QAAQ,CAAC,CAClD;EACH,KAAK,KACH,QAAO,QAAQ,GACb,OAAO,QACJ,QAAQ,MAAM,EAAE,SAAS,KAAA,EAAU,CACnC,KAAK,MAAM,uBAAuB,GAAG,QAAQ,CAAC,CAClD;EACH,KAAK,MACH,QAAO,QAAQ,IAAI,uBAAuB,OAAO,QAAQ,QAAQ,CAAC;EACpE,QACE,QAAO,QAAQ,KAAK,OAAO;;;;AAKjC,SAAgB,yBAGd,QAAgB;AAChB,QAAO,mBAAmB,QAAQ;EAChC,OAAO,SAAS;GACd,MAAM,OAAY,EAAE;AACpB,OAAI,YAAY,QAAQ,KAAK,WAAW,KAAA,EAAW,MAAK,KAAK,KAAK,OAAY;AAC9E,OAAI,SAAS,QAAQ,KAAK,QAAQ,KAAA,EAAW,MAAK,KAAK,KAAK,IAAS;AACrE,UAAO;;EAET,MAAM,YAAY,QAAQ,MAAM;EAChC,KAAK,YAAY,QAAQ,MAAM;EAC/B,MAAM,WAAW;EAClB,CAAC"}
|
package/dist/filters/traverse.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"traverse.js","names":[],"sources":["../../src/filters/traverse.ts"],"sourcesContent":["import type {\n FilterSpec,\n FilterSpecLeaf,\n FilterSpecNode,\n InferFilterSpecLeafColumn,\n} from \"@milaboratories/pl-model-common\";\nimport type {\n InferFilterSpecCommonLeaf,\n InferFilterSpecLeaf,\n} from \"@milaboratories/pl-model-common\";\n\nexport type FilterSpecVisitor<LeafArg, R> = {\n /** Handle a leaf filter node. */\n leaf: (leaf: LeafArg) => R;\n /** Handle an AND node after children have been traversed. */\n and: (results: R[]) => R;\n /** Handle an OR node after children have been traversed. */\n or: (results: R[]) => R;\n /** Handle a NOT node after the inner filter has been traversed. */\n not: (result: R) => R;\n};\n\n/**\n * Recursively traverses a FilterSpec tree bottom-up, applying visitor callbacks.\n *\n * Entries with `{ type: undefined }` inside `and`/`or` arrays are skipped\n * (these represent unfilled filter slots in the UI).\n *\n * Traversal order:\n * 1. Recurse into child filters (`and`/`or`/`not`)\n * 2. Apply the corresponding visitor callback with already-traversed children\n * 3. For leaf nodes, call `leaf` directly\n */\nexport function traverseFilterSpec<\n F extends FilterSpec<FilterSpecLeaf<unknown>, unknown, unknown>,\n R,\n>(\n filter: F,\n visitor: FilterSpecVisitor<InferFilterSpecCommonLeaf<F> & InferFilterSpecLeaf<F>, R>,\n): R {\n return traverseFilterSpecImpl(filter, visitor as FilterSpecVisitor<unknown, R>);\n}\n/** Internal implementation with simple generics for clean recursion. */\nfunction traverseFilterSpecImpl<R>(\n filter: FilterSpecNode<FilterSpecLeaf<unknown>, unknown, unknown>,\n visitor: FilterSpecVisitor<unknown, R>,\n): R {\n switch (filter.type) {\n case \"and\":\n return visitor.and(\n filter.filters\n .filter((f) => f.type !== undefined)\n .map((f) => traverseFilterSpecImpl(f, visitor)),\n );\n case \"or\":\n return visitor.or(\n filter.filters\n .filter((f) => f.type !== undefined)\n .map((f) => traverseFilterSpecImpl(f, visitor)),\n );\n case \"not\":\n return visitor.not(traverseFilterSpecImpl(filter.filter, visitor));\n default:\n return visitor.leaf(filter);\n }\n}\n\n/** Collects all column references (`column` and `rhs` fields) from filter leaves. */\nexport function collectFilterSpecColumns<\n F extends FilterSpec<FilterSpecLeaf<unknown>, unknown, unknown>,\n R extends InferFilterSpecLeafColumn<F> = InferFilterSpecLeafColumn<F>,\n>(filter: F): R[] {\n return traverseFilterSpec(filter, {\n leaf: (leaf) => {\n const cols: R[] = [];\n if (\"column\" in leaf && leaf.column !== undefined) cols.push(leaf.column as R);\n if (\"rhs\" in leaf && leaf.rhs !== undefined) cols.push(leaf.rhs as R);\n return cols;\n },\n and: (results) => results.flat(),\n or: (results) => results.flat(),\n not: (result) => result,\n });\n}\n"],"mappings":";;;;;;;;;;;;AAiCA,SAAgB,mBAId,QACA,SACG;AACH,QAAO,uBAAuB,QAAQ,QAAyC;;;AAGjF,SAAS,uBACP,QACA,SACG;AACH,SAAQ,OAAO,MAAf;EACE,KAAK,MACH,QAAO,QAAQ,IACb,OAAO,QACJ,QAAQ,MAAM,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"traverse.js","names":[],"sources":["../../src/filters/traverse.ts"],"sourcesContent":["import type {\n FilterSpec,\n FilterSpecLeaf,\n FilterSpecNode,\n InferFilterSpecLeafColumn,\n} from \"@milaboratories/pl-model-common\";\nimport type {\n InferFilterSpecCommonLeaf,\n InferFilterSpecLeaf,\n} from \"@milaboratories/pl-model-common\";\n\nexport type FilterSpecVisitor<LeafArg, R> = {\n /** Handle a leaf filter node. */\n leaf: (leaf: LeafArg) => R;\n /** Handle an AND node after children have been traversed. */\n and: (results: R[]) => R;\n /** Handle an OR node after children have been traversed. */\n or: (results: R[]) => R;\n /** Handle a NOT node after the inner filter has been traversed. */\n not: (result: R) => R;\n};\n\n/**\n * Recursively traverses a FilterSpec tree bottom-up, applying visitor callbacks.\n *\n * Entries with `{ type: undefined }` inside `and`/`or` arrays are skipped\n * (these represent unfilled filter slots in the UI).\n *\n * Traversal order:\n * 1. Recurse into child filters (`and`/`or`/`not`)\n * 2. Apply the corresponding visitor callback with already-traversed children\n * 3. For leaf nodes, call `leaf` directly\n */\nexport function traverseFilterSpec<\n F extends FilterSpec<FilterSpecLeaf<unknown>, unknown, unknown>,\n R,\n>(\n filter: F,\n visitor: FilterSpecVisitor<InferFilterSpecCommonLeaf<F> & InferFilterSpecLeaf<F>, R>,\n): R {\n return traverseFilterSpecImpl(filter, visitor as FilterSpecVisitor<unknown, R>);\n}\n/** Internal implementation with simple generics for clean recursion. */\nfunction traverseFilterSpecImpl<R>(\n filter: FilterSpecNode<FilterSpecLeaf<unknown>, unknown, unknown>,\n visitor: FilterSpecVisitor<unknown, R>,\n): R {\n switch (filter.type) {\n case \"and\":\n return visitor.and(\n filter.filters\n .filter((f) => f.type !== undefined)\n .map((f) => traverseFilterSpecImpl(f, visitor)),\n );\n case \"or\":\n return visitor.or(\n filter.filters\n .filter((f) => f.type !== undefined)\n .map((f) => traverseFilterSpecImpl(f, visitor)),\n );\n case \"not\":\n return visitor.not(traverseFilterSpecImpl(filter.filter, visitor));\n default:\n return visitor.leaf(filter);\n }\n}\n\n/** Collects all column references (`column` and `rhs` fields) from filter leaves. */\nexport function collectFilterSpecColumns<\n F extends FilterSpec<FilterSpecLeaf<unknown>, unknown, unknown>,\n R extends InferFilterSpecLeafColumn<F> = InferFilterSpecLeafColumn<F>,\n>(filter: F): R[] {\n return traverseFilterSpec(filter, {\n leaf: (leaf) => {\n const cols: R[] = [];\n if (\"column\" in leaf && leaf.column !== undefined) cols.push(leaf.column as R);\n if (\"rhs\" in leaf && leaf.rhs !== undefined) cols.push(leaf.rhs as R);\n return cols;\n },\n and: (results) => results.flat(),\n or: (results) => results.flat(),\n not: (result) => result,\n });\n}\n"],"mappings":";;;;;;;;;;;;AAiCA,SAAgB,mBAId,QACA,SACG;AACH,QAAO,uBAAuB,QAAQ,QAAyC;;;AAGjF,SAAS,uBACP,QACA,SACG;AACH,SAAQ,OAAO,MAAf;EACE,KAAK,MACH,QAAO,QAAQ,IACb,OAAO,QACJ,QAAQ,MAAM,EAAE,SAAS,KAAA,EAAU,CACnC,KAAK,MAAM,uBAAuB,GAAG,QAAQ,CAAC,CAClD;EACH,KAAK,KACH,QAAO,QAAQ,GACb,OAAO,QACJ,QAAQ,MAAM,EAAE,SAAS,KAAA,EAAU,CACnC,KAAK,MAAM,uBAAuB,GAAG,QAAQ,CAAC,CAClD;EACH,KAAK,MACH,QAAO,QAAQ,IAAI,uBAAuB,OAAO,QAAQ,QAAQ,CAAC;EACpE,QACE,QAAO,QAAQ,KAAK,OAAO;;;;AAKjC,SAAgB,yBAGd,QAAgB;AAChB,QAAO,mBAAmB,QAAQ;EAChC,OAAO,SAAS;GACd,MAAM,OAAY,EAAE;AACpB,OAAI,YAAY,QAAQ,KAAK,WAAW,KAAA,EAAW,MAAK,KAAK,KAAK,OAAY;AAC9E,OAAI,SAAS,QAAQ,KAAK,QAAQ,KAAA,EAAW,MAAK,KAAK,KAAK,IAAS;AACrE,UAAO;;EAET,MAAM,YAAY,QAAQ,MAAM;EAChC,KAAK,YAAY,QAAQ,MAAM;EAC/B,MAAM,WAAW;EAClB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","names":[],"sources":["../../src/filters/types.ts"],"mappings":";;;KAEY,qBAAA,GAAwB,IAAA,CAAK,WAAA;AAAA,KAE7B,+BAAA;EACV,EAAA,EAAI,mBAAA;EACJ,KAAA;EACA,GAAA,EAAK,qBAAA;AAAA"}
|
package/dist/index.cjs
CHANGED
|
@@ -1,63 +1,62 @@
|
|
|
1
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value:
|
|
2
|
-
const require_block_state_util = require(
|
|
3
|
-
const require_plugin_handle = require(
|
|
4
|
-
const require_block_migrations = require(
|
|
5
|
-
const require_block_storage = require(
|
|
6
|
-
const require_block_storage_facade = require(
|
|
7
|
-
const require_actions = require(
|
|
8
|
-
require(
|
|
9
|
-
const require_future = require(
|
|
10
|
-
const require_accessor = require(
|
|
11
|
-
const require_internal = require(
|
|
12
|
-
const require_axis_filtering = require(
|
|
13
|
-
const require_derive_distinct_labels = require(
|
|
14
|
-
const require_label = require(
|
|
15
|
-
const require_pcolumn_data = require(
|
|
16
|
-
const require_column_collection = require(
|
|
17
|
-
const require_api = require(
|
|
18
|
-
require(
|
|
19
|
-
const require_version = require(
|
|
20
|
-
const require_types = require(
|
|
21
|
-
const require_normalization = require(
|
|
22
|
-
require(
|
|
23
|
-
const require_block_model_legacy = require(
|
|
24
|
-
const require_block_services = require(
|
|
25
|
-
const require_plugin_model = require(
|
|
26
|
-
const require_block_model = require(
|
|
27
|
-
const require_axes = require(
|
|
28
|
-
const require_columns = require(
|
|
29
|
-
const require_PFrameForGraphs = require(
|
|
30
|
-
const require_filters_ui = require(
|
|
31
|
-
const require_filterToQuery = require(
|
|
32
|
-
const require_filterUiToExpressionImpl = require(
|
|
33
|
-
const require_distill = require(
|
|
34
|
-
require(
|
|
35
|
-
const require_state_migration = require(
|
|
36
|
-
const require_createPlDataTableSheet = require(
|
|
37
|
-
const require_column_snapshot = require(
|
|
38
|
-
const require_column_snapshot_provider = require(
|
|
39
|
-
const require_column_selector = require(
|
|
40
|
-
const require_column_collection_builder = require(
|
|
41
|
-
const require_ctx_column_sources = require(
|
|
42
|
-
require(
|
|
43
|
-
const require_createPlDataTableV3 = require(
|
|
44
|
-
const require_createPlDataTableV2 = require(
|
|
45
|
-
const require_index$5 = require(
|
|
46
|
-
const require_PlMultiSequenceAlignment = require(
|
|
47
|
-
const require_PlSelectionModel = require(
|
|
48
|
-
require(
|
|
49
|
-
const require_pframe = require(
|
|
50
|
-
const require_write_labels_to_specs = require(
|
|
51
|
-
require(
|
|
52
|
-
const require_ref_util = require(
|
|
53
|
-
const require_raw_globals = require(
|
|
54
|
-
const require_converter = require(
|
|
55
|
-
require(
|
|
56
|
-
const require_index$9 = require(
|
|
57
|
-
const require_service_bridge = require(
|
|
58
|
-
require(
|
|
59
|
-
const require_env_value = require(
|
|
60
|
-
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
const require_block_state_util = require("./block_state_util.cjs");
|
|
3
|
+
const require_plugin_handle = require("./plugin_handle.cjs");
|
|
4
|
+
const require_block_migrations = require("./block_migrations.cjs");
|
|
5
|
+
const require_block_storage = require("./block_storage.cjs");
|
|
6
|
+
const require_block_storage_facade = require("./block_storage_facade.cjs");
|
|
7
|
+
const require_actions = require("./config/actions.cjs");
|
|
8
|
+
require("./config/index.cjs");
|
|
9
|
+
const require_future = require("./render/future.cjs");
|
|
10
|
+
const require_accessor = require("./render/accessor.cjs");
|
|
11
|
+
const require_internal = require("./render/internal.cjs");
|
|
12
|
+
const require_axis_filtering = require("./render/util/axis_filtering.cjs");
|
|
13
|
+
const require_derive_distinct_labels = require("./labels/derive_distinct_labels.cjs");
|
|
14
|
+
const require_label = require("./render/util/label.cjs");
|
|
15
|
+
const require_pcolumn_data = require("./render/util/pcolumn_data.cjs");
|
|
16
|
+
const require_column_collection = require("./render/util/column_collection.cjs");
|
|
17
|
+
const require_api = require("./render/api.cjs");
|
|
18
|
+
require("./render/index.cjs");
|
|
19
|
+
const require_version = require("./version.cjs");
|
|
20
|
+
const require_types = require("./bconfig/types.cjs");
|
|
21
|
+
const require_normalization = require("./bconfig/normalization.cjs");
|
|
22
|
+
require("./bconfig/index.cjs");
|
|
23
|
+
const require_block_model_legacy = require("./block_model_legacy.cjs");
|
|
24
|
+
const require_block_services = require("./services/block_services.cjs");
|
|
25
|
+
const require_plugin_model = require("./plugin_model.cjs");
|
|
26
|
+
const require_block_model = require("./block_model.cjs");
|
|
27
|
+
const require_axes = require("./pframe_utils/axes.cjs");
|
|
28
|
+
const require_columns = require("./pframe_utils/columns.cjs");
|
|
29
|
+
const require_PFrameForGraphs = require("./components/PFrameForGraphs.cjs");
|
|
30
|
+
const require_filters_ui = require("./components/PlAnnotations/filters_ui.cjs");
|
|
31
|
+
const require_filterToQuery = require("./filters/converters/filterToQuery.cjs");
|
|
32
|
+
const require_filterUiToExpressionImpl = require("./filters/converters/filterUiToExpressionImpl.cjs");
|
|
33
|
+
const require_distill = require("./filters/distill.cjs");
|
|
34
|
+
require("./filters/index.cjs");
|
|
35
|
+
const require_state_migration = require("./components/PlDataTable/state-migration.cjs");
|
|
36
|
+
const require_createPlDataTableSheet = require("./components/PlDataTable/createPlDataTableSheet.cjs");
|
|
37
|
+
const require_column_snapshot = require("./columns/column_snapshot.cjs");
|
|
38
|
+
const require_column_snapshot_provider = require("./columns/column_snapshot_provider.cjs");
|
|
39
|
+
const require_column_selector = require("./columns/column_selector.cjs");
|
|
40
|
+
const require_column_collection_builder = require("./columns/column_collection_builder.cjs");
|
|
41
|
+
const require_ctx_column_sources = require("./columns/ctx_column_sources.cjs");
|
|
42
|
+
require("./columns/index.cjs");
|
|
43
|
+
const require_createPlDataTableV3 = require("./components/PlDataTable/createPlDataTable/createPlDataTableV3.cjs");
|
|
44
|
+
const require_createPlDataTableV2 = require("./components/PlDataTable/createPlDataTable/createPlDataTableV2.cjs");
|
|
45
|
+
const require_index$5 = require("./components/PlDataTable/createPlDataTable/index.cjs");
|
|
46
|
+
const require_PlMultiSequenceAlignment = require("./components/PlMultiSequenceAlignment.cjs");
|
|
47
|
+
const require_PlSelectionModel = require("./components/PlSelectionModel.cjs");
|
|
48
|
+
require("./components/index.cjs");
|
|
49
|
+
const require_pframe = require("./pframe.cjs");
|
|
50
|
+
const require_write_labels_to_specs = require("./labels/write_labels_to_specs.cjs");
|
|
51
|
+
require("./labels/index.cjs");
|
|
52
|
+
const require_ref_util = require("./ref_util.cjs");
|
|
53
|
+
const require_raw_globals = require("./raw_globals.cjs");
|
|
54
|
+
const require_converter = require("./annotations/converter.cjs");
|
|
55
|
+
require("./annotations/index.cjs");
|
|
56
|
+
const require_index$9 = require("./pframe_utils/index.cjs");
|
|
57
|
+
const require_service_bridge = require("./services/service_bridge.cjs");
|
|
58
|
+
require("./services/index.cjs");
|
|
59
|
+
const require_env_value = require("./env_value.cjs");
|
|
61
60
|
exports.Args = require_actions.Args;
|
|
62
61
|
exports.ArrayColumnProvider = require_column_snapshot_provider.ArrayColumnProvider;
|
|
63
62
|
exports.BLOCK_SERVICE_FLAGS = require_block_services.BLOCK_SERVICE_FLAGS;
|
|
@@ -73,11 +72,11 @@ exports.DataModel = require_block_migrations.DataModel;
|
|
|
73
72
|
exports.DataModelBuilder = require_block_migrations.DataModelBuilder;
|
|
74
73
|
exports.FutureRef = require_future.FutureRef;
|
|
75
74
|
exports.It = require_actions.It;
|
|
76
|
-
Object.defineProperty(exports,
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
75
|
+
Object.defineProperty(exports, "JsRenderInternal", {
|
|
76
|
+
enumerable: true,
|
|
77
|
+
get: function() {
|
|
78
|
+
return require_internal.internal_exports;
|
|
79
|
+
}
|
|
81
80
|
});
|
|
82
81
|
exports.MainOutputs = require_actions.MainOutputs;
|
|
83
82
|
exports.OutputColumnProvider = require_column_snapshot_provider.OutputColumnProvider;
|
|
@@ -215,17 +214,20 @@ exports.upgradePlDataTableStateV2 = require_state_migration.upgradePlDataTableSt
|
|
|
215
214
|
exports.wrapOutputs = require_block_state_util.wrapOutputs;
|
|
216
215
|
exports.writeLabelsToSpecs = require_write_labels_to_specs.writeLabelsToSpecs;
|
|
217
216
|
var _milaboratories_pl_model_common = require("@milaboratories/pl-model-common");
|
|
218
|
-
Object.keys(_milaboratories_pl_model_common).forEach(function
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
217
|
+
Object.keys(_milaboratories_pl_model_common).forEach(function(k) {
|
|
218
|
+
if (k !== "default" && !Object.prototype.hasOwnProperty.call(exports, k)) Object.defineProperty(exports, k, {
|
|
219
|
+
enumerable: true,
|
|
220
|
+
get: function() {
|
|
221
|
+
return _milaboratories_pl_model_common[k];
|
|
222
|
+
}
|
|
223
|
+
});
|
|
223
224
|
});
|
|
224
|
-
|
|
225
225
|
var _milaboratories_pl_error_like = require("@milaboratories/pl-error-like");
|
|
226
|
-
Object.keys(_milaboratories_pl_error_like).forEach(function
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
226
|
+
Object.keys(_milaboratories_pl_error_like).forEach(function(k) {
|
|
227
|
+
if (k !== "default" && !Object.prototype.hasOwnProperty.call(exports, k)) Object.defineProperty(exports, k, {
|
|
228
|
+
enumerable: true,
|
|
229
|
+
get: function() {
|
|
230
|
+
return _milaboratories_pl_error_like[k];
|
|
231
|
+
}
|
|
232
|
+
});
|
|
231
233
|
});
|
package/dist/index.d.ts
CHANGED
|
@@ -9,13 +9,11 @@ import { Checked } from "./config/type_util.js";
|
|
|
9
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
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
11
|
import { CfgRenderingMode } from "./config/model_meta.js";
|
|
12
|
-
import "./config/index.js";
|
|
13
12
|
import { TypedConfigOrConfigLambda, TypedConfigOrString, isConfigLambda } from "./bconfig/types.js";
|
|
14
13
|
import { ConfigRenderLambda, ConfigRenderLambdaFlags, ExtractFunctionHandleReturn, InferOutputType, InferOutputsFromConfigs, InferOutputsFromLambdas, ResolveCfgType, StdCtx, StdCtxArgsOnly } from "./bconfig/lambdas.js";
|
|
15
14
|
import { BlockConfig, BlockConfigV3, BlockConfigV4 } from "./bconfig/v3.js";
|
|
16
15
|
import { downgradeCfgOrLambda, extractConfig } from "./bconfig/normalization.js";
|
|
17
16
|
import { DeriveHref } from "./bconfig/util.js";
|
|
18
|
-
import "./bconfig/index.js";
|
|
19
17
|
import { BLOCK_STORAGE_FACADE_VERSION, BlockStorageFacade, BlockStorageFacadeCallbacks, BlockStorageFacadeHandles, registerFacadeCallbacks } from "./block_storage_facade.js";
|
|
20
18
|
import { BlockApiV1, CancelSubscription } from "./block_api_v1.js";
|
|
21
19
|
import { BlockApiV2 } from "./block_api_v2.js";
|
|
@@ -32,7 +30,6 @@ import { AxisLabelProvider, ColumnProvider, PColumnCollection, PColumnEntryUnive
|
|
|
32
30
|
import { BlockRenderCtx, InferRenderFunctionReturn, PluginRenderCtx, RenderCtx, RenderCtxBase, RenderCtxLegacy, RenderFunction, RenderFunctionLegacy, ResultPool, UniversalColumnOption, UnwrapFutureRef } from "./render/api.js";
|
|
33
31
|
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, getPartitionKeysList, getUniquePartitionKeys, isPColumnReady, parsePColumnData, parseResourceMap } from "./render/util/pcolumn_data.js";
|
|
34
32
|
import { filterDataInfoEntries } from "./render/util/axis_filtering.js";
|
|
35
|
-
import "./render/index.js";
|
|
36
33
|
import { PluginConfig, PluginData, PluginDataModel, PluginDataModelBuilder, PluginDataModelVersions, PluginFactory, PluginInstance, PluginModel, PluginOutputs, PluginParams } from "./plugin_model.js";
|
|
37
34
|
import { BlockModelV3, ParamsInput, PluginRecord } from "./block_model.js";
|
|
38
35
|
import { BlockModelInfo, InferArgsType, InferBlockState, InferBlockStatePatch, InferDataType, InferHrefType, InferOutputsType, InferPluginData, InferPluginHandles, InferPluginNames, InferUiState, Platforma, PlatformaApiVersion, PlatformaExtended, PlatformaFactory, PlatformaV1, PlatformaV2, PlatformaV3 } from "./platforma.js";
|
|
@@ -44,10 +41,8 @@ import { filterSpecToSpecQueryExpr } from "./filters/converters/filterToQuery.js
|
|
|
44
41
|
import { FilterSpec, FilterSpecLeaf, FilterSpecNode, FilterSpecOfType, FilterSpecType, SimplifiedPColumnSpec, SimplifiedUniversalPColumnEntry } from "./filters/types.js";
|
|
45
42
|
import { convertFilterUiToExpressionImpl, convertFilterUiToExpressions } from "./filters/converters/filterUiToExpressionImpl.js";
|
|
46
43
|
import { distillFilterSpec } from "./filters/distill.js";
|
|
47
|
-
import "./filters/index.js";
|
|
48
44
|
import { AnnotationSpec, AnnotationSpecUi, ExpressionSpec, FilterSpecUi } from "./annotations/types.js";
|
|
49
45
|
import { convertFilterSpecsToExpressionSpecs } from "./annotations/converter.js";
|
|
50
|
-
import "./annotations/index.js";
|
|
51
46
|
import { AnnotationScriptUi, AnnotationStepUi, AnyForm, FilterUi, FilterUiOfType, FilterUiType, FormField, TypeField, TypeFieldRecord, TypeForm, TypeToLiteral, compileAnnotationScript, compileFilter, compileFilters, unreachable } from "./components/PlAnnotations/filters_ui.js";
|
|
52
47
|
import { PTableParamsV2, PlDataTableFilters, PlDataTableFiltersWithMeta, PlDataTableGridStateCore, PlDataTableModel, PlDataTableSheet, PlDataTableSheetState, PlDataTableStateV2CacheEntry, PlDataTableStateV2Normalized, PlTableColumnId, PlTableColumnIdJson } from "./components/PlDataTable/typesV5.js";
|
|
53
48
|
import { PlDataTableStateV2, createDefaultPTableParams, createPlDataTableStateV2, upgradePlDataTableStateV2 } from "./components/PlDataTable/state-migration.js";
|
|
@@ -58,21 +53,17 @@ import { ArrayColumnProvider, ColumnSnapshotProvider, ColumnSource, OutputColumn
|
|
|
58
53
|
import { ColumnSelectorInput, RelaxedAxisSelector, RelaxedColumnSelector, RelaxedRecord, RelaxedStringMatchers, StringMatcher, columnSelectorsToPredicate, matchColumn, matchColumnSelectors, normalizeSelectors } from "./columns/column_selector.js";
|
|
59
54
|
import { AnchoredBuildOptions, AnchoredColumnCollection, AnchoredFindColumnsOptions, BuildOptions, ColumnCollection, ColumnCollectionBuilder, ColumnMatch, FindColumnsOptions, MatchQualifications, MatchVariant, MatchingMode } from "./columns/column_collection_builder.js";
|
|
60
55
|
import { ResultPoolColumnSnapshotProvider, collectCtxColumnSnapshotProviders } from "./columns/ctx_column_sources.js";
|
|
61
|
-
import "./columns/index.js";
|
|
62
56
|
import { createPlDataTableV3, isColumnHidden, isColumnOptional } from "./components/PlDataTable/createPlDataTable/createPlDataTableV3.js";
|
|
63
57
|
import { createPlDataTable } from "./components/PlDataTable/createPlDataTable/index.js";
|
|
64
58
|
import { PTableKey, PlSelectionModel, createPlSelectionModel } from "./components/PlSelectionModel.js";
|
|
65
59
|
import { PColumnPredicate, PlMultiSequenceAlignmentColorSchemeOption, PlMultiSequenceAlignmentModel, PlMultiSequenceAlignmentSettings, PlMultiSequenceAlignmentWidget, createRowSelectionColumn } from "./components/PlMultiSequenceAlignment.js";
|
|
66
|
-
import "./components/index.js";
|
|
67
60
|
import { PFrameImpl } from "./pframe.js";
|
|
68
61
|
import { writeLabelsToSpecs } from "./labels/write_labels_to_specs.js";
|
|
69
|
-
import "./labels/index.js";
|
|
70
62
|
import { fromPlOption, fromPlRef } from "./ref_util.js";
|
|
71
63
|
import { getPlatformaApiVersion, getRawPlatformaInstance } from "./raw_globals.js";
|
|
72
64
|
import { getAllRelatedColumns, getRelatedColumns } from "./pframe_utils/columns.js";
|
|
73
65
|
import { getAxisUniqueValues, getColumnOrAxisValueLabelsId, getColumnSpecById, getColumnUniqueValues, getColumnsFull, getRequestColumnsFromSelectedSources, getSingleColumnData, getUniqueSourceValuesWithLabels } from "./pframe_utils/index.js";
|
|
74
66
|
import { NodeServiceProxy, buildServices, createNodeServiceProxy } from "./services/service_bridge.js";
|
|
75
|
-
import "./services/index.js";
|
|
76
67
|
import { getEnvironmentValue } from "./env_value.js";
|
|
77
68
|
export * from "@milaboratories/pl-model-common";
|
|
78
69
|
export * from "@milaboratories/pl-error-like";
|
package/dist/index.js
CHANGED
|
@@ -56,9 +56,6 @@ import { getAxisUniqueValues, getColumnOrAxisValueLabelsId, getColumnSpecById, g
|
|
|
56
56
|
import { buildServices, createNodeServiceProxy } from "./services/service_bridge.js";
|
|
57
57
|
import "./services/index.js";
|
|
58
58
|
import { getEnvironmentValue } from "./env_value.js";
|
|
59
|
-
|
|
60
|
-
export * from "@milaboratories/pl-
|
|
61
|
-
|
|
62
|
-
export * from "@milaboratories/pl-error-like"
|
|
63
|
-
|
|
64
|
-
export { Args, ArrayColumnProvider, BLOCK_SERVICE_FLAGS, BLOCK_STORAGE_FACADE_VERSION, BlockModel, BlockModelV3, BlockRenderCtx, BlockStorageFacadeCallbacks, BlockStorageFacadeHandles, ColumnCollectionBuilder, CurrentSdkInfo, DataModel, DataModelBuilder, FutureRef, It, internal_exports as JsRenderInternal, MainOutputs, OutputColumnProvider, 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, RenderCtxLegacy, ResultPool, ResultPoolColumnSnapshotProvider, SnapshotColumnProvider, StagingOutputs, TreeNodeAccessor, UiState, allPColumnsReady, and, blockServiceNames, buildServices, collectCtxColumnSnapshotProviders, columnSelectorsToPredicate, compileAnnotationScript, compileFilter, compileFilters, convertFilterSpecsToExpressionSpecs, convertFilterUiToExpressionImpl, convertFilterUiToExpressions, convertOrParsePColumnData, createBlockStorage, createColumnSnapshot, createDefaultPTableParams, createNodeServiceProxy, createPFrameForGraphs, createPlDataTable, createPlDataTableSheet, createPlDataTableStateV2, createPlDataTableV2, createPlDataTableV3, createPlSelectionModel, createReadyColumnData, createRowSelectionColumn, deriveDataFromStorage, deriveDistinctLabels, deriveLabels, distillFilterSpec, downgradeCfgOrLambda, enrichCompatible, extractArchiveAndGetURL, extractConfig, filterDataInfoEntries, filterSpecToSpecQueryExpr, flatten, fromPlOption, fromPlRef, getAllRelatedColumns, getAvailableWithLinkersAxes, getAxisUniqueValues, getBlobContent, getBlobContentAsJson, getBlobContentAsString, getColumnOrAxisValueLabelsId, getColumnSpecById, getColumnUniqueValues, getColumnsFull, getDownloadedBlobContent, getEnvironmentValue, getFromCfg, getImmediate, getImportProgress, getJsonField, getLastLogs, getLogHandle, getOnDemandBlobContent, getPartitionKeysList, getPlatformaApiVersion, getPluginData, getProgressLog, getProgressLogWithInfo, getRawPlatformaInstance, getRelatedColumns, getRequestColumnsFromSelectedSources, getResourceField, getResourceValueAsJson, getSingleColumnData, getStorageData, getUniquePartitionKeys, getUniqueSourceValuesWithLabels, ifDef, isBlockStorage, isColumnHidden, isColumnOptional, isColumnSnapshotProvider, isConfigLambda, isEmpty, isHiddenFromGraphColumn, isHiddenFromUIColumn, isPColumnReady, isPluginOutputKey, isolate, makeArray, makeObject, mapArrayValues, mapRecordValues, mapResourceFields, matchColumn, matchColumnSelectors, migrateBlockStorage, normalizeBlockStorage, normalizeSelectors, not, or, parsePColumnData, parseResourceMap, pluginOutputKey, pluginOutputPrefix, readOutput, registerFacadeCallbacks, toColumnSnapshotProvider, unreachable, updateStorageData, upgradePlDataTableStateV2, wrapOutputs, writeLabelsToSpecs };
|
|
59
|
+
export * from "@milaboratories/pl-model-common";
|
|
60
|
+
export * from "@milaboratories/pl-error-like";
|
|
61
|
+
export { Args, ArrayColumnProvider, BLOCK_SERVICE_FLAGS, BLOCK_STORAGE_FACADE_VERSION, BlockModel, BlockModelV3, BlockRenderCtx, BlockStorageFacadeCallbacks, BlockStorageFacadeHandles, ColumnCollectionBuilder, CurrentSdkInfo, DataModel, DataModelBuilder, FutureRef, It, internal_exports as JsRenderInternal, MainOutputs, OutputColumnProvider, 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, RenderCtxLegacy, ResultPool, ResultPoolColumnSnapshotProvider, SnapshotColumnProvider, StagingOutputs, TreeNodeAccessor, UiState, allPColumnsReady, and, blockServiceNames, buildServices, collectCtxColumnSnapshotProviders, columnSelectorsToPredicate, compileAnnotationScript, compileFilter, compileFilters, convertFilterSpecsToExpressionSpecs, convertFilterUiToExpressionImpl, convertFilterUiToExpressions, convertOrParsePColumnData, createBlockStorage, createColumnSnapshot, createDefaultPTableParams, createNodeServiceProxy, createPFrameForGraphs, createPlDataTable, createPlDataTableSheet, createPlDataTableStateV2, createPlDataTableV2, createPlDataTableV3, createPlSelectionModel, createReadyColumnData, createRowSelectionColumn, deriveDataFromStorage, deriveDistinctLabels, deriveLabels, distillFilterSpec, downgradeCfgOrLambda, enrichCompatible, extractArchiveAndGetURL, extractConfig, filterDataInfoEntries, filterSpecToSpecQueryExpr, flatten, fromPlOption, fromPlRef, getAllRelatedColumns, getAvailableWithLinkersAxes, getAxisUniqueValues, getBlobContent, getBlobContentAsJson, getBlobContentAsString, getColumnOrAxisValueLabelsId, getColumnSpecById, getColumnUniqueValues, getColumnsFull, getDownloadedBlobContent, getEnvironmentValue, getFromCfg, getImmediate, getImportProgress, getJsonField, getLastLogs, getLogHandle, getOnDemandBlobContent, getPartitionKeysList, getPlatformaApiVersion, getPluginData, getProgressLog, getProgressLogWithInfo, getRawPlatformaInstance, getRelatedColumns, getRequestColumnsFromSelectedSources, getResourceField, getResourceValueAsJson, getSingleColumnData, getStorageData, getUniquePartitionKeys, getUniqueSourceValuesWithLabels, ifDef, isBlockStorage, isColumnHidden, isColumnOptional, isColumnSnapshotProvider, isConfigLambda, isEmpty, isHiddenFromGraphColumn, isHiddenFromUIColumn, isPColumnReady, isPluginOutputKey, isolate, makeArray, makeObject, mapArrayValues, mapRecordValues, mapResourceFields, matchColumn, matchColumnSelectors, migrateBlockStorage, normalizeBlockStorage, normalizeSelectors, not, or, parsePColumnData, parseResourceMap, pluginOutputKey, pluginOutputPrefix, readOutput, registerFacadeCallbacks, toColumnSnapshotProvider, unreachable, updateStorageData, upgradePlDataTableStateV2, wrapOutputs, writeLabelsToSpecs };
|
package/dist/internal.cjs
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
|
|
2
1
|
//#region src/internal.ts
|
|
3
2
|
/** Utility code helping to identify whether the code is running in actual UI environment */
|
|
4
3
|
function isInUI() {
|
|
@@ -68,7 +67,6 @@ function registerFutureAwait(handle, onResolve) {
|
|
|
68
67
|
}
|
|
69
68
|
futureResolves.get(handle).push(onResolve);
|
|
70
69
|
}
|
|
71
|
-
|
|
72
70
|
//#endregion
|
|
73
71
|
exports.createAndRegisterRenderLambda = createAndRegisterRenderLambda;
|
|
74
72
|
exports.createRenderLambda = createRenderLambda;
|
|
@@ -77,4 +75,5 @@ exports.getPlatformaInstance = getPlatformaInstance;
|
|
|
77
75
|
exports.isInUI = isInUI;
|
|
78
76
|
exports.registerFutureAwait = registerFutureAwait;
|
|
79
77
|
exports.tryRegisterCallback = tryRegisterCallback;
|
|
78
|
+
|
|
80
79
|
//# sourceMappingURL=internal.cjs.map
|
package/dist/internal.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"internal.cjs","names":[],"sources":["../src/internal.ts"],"sourcesContent":["import type { OutputWithStatus } from \"@milaboratories/pl-model-common\";\nimport type { Platforma, PlatformaApiVersion } from \"./platforma\";\nimport type { FutureHandle, GlobalCfgRenderCtx } from \"./render/internal\";\nimport type { ConfigRenderLambda, ConfigRenderLambdaFlags } from \"./bconfig\";\n\n/** Utility code helping to identify whether the code is running in actual UI environment */\nexport function isInUI() {\n return (\n typeof globalThis.getPlatforma !== \"undefined\" || typeof globalThis.platforma !== \"undefined\"\n );\n}\n\n/** Utility code helping to retrieve a platforma instance form the environment */\nexport function getPlatformaInstance<\n Args = unknown,\n Outputs extends Record<string, OutputWithStatus<unknown>> = Record<\n string,\n OutputWithStatus<unknown>\n >,\n UiState = unknown,\n Href extends `/${string}` = `/${string}`,\n>(config?: {\n sdkVersion: string;\n apiVersion: PlatformaApiVersion;\n}): Platforma<Args, Outputs, UiState, Href> {\n if (config && typeof globalThis.getPlatforma === \"function\")\n return globalThis.getPlatforma(config);\n else if (typeof globalThis.platforma !== \"undefined\")\n return globalThis.platforma as Platforma<Args, Outputs, UiState, Href>;\n else throw new Error(\"Can't get platforma instance.\");\n}\n\nexport function tryGetCfgRenderCtx(): GlobalCfgRenderCtx | undefined {\n if (typeof globalThis.cfgRenderCtx !== \"undefined\") return globalThis.cfgRenderCtx;\n else return undefined;\n}\n\nexport function getCfgRenderCtx(): GlobalCfgRenderCtx {\n if (typeof globalThis.cfgRenderCtx !== \"undefined\") return globalThis.cfgRenderCtx;\n else throw new Error(\"Not in config rendering context\");\n}\n\nexport function tryRegisterCallback(key: string, callback: (...args: any[]) => any): boolean {\n const ctx = tryGetCfgRenderCtx();\n if (ctx === undefined) return false;\n if (key in ctx.callbackRegistry) throw new Error(`Callback with key ${key} already registered.`);\n ctx.callbackRegistry[key] = callback;\n return true;\n}\n\n/**\n * Registers a callback, replacing any existing callback with the same key.\n * Use this for callbacks that have a default value but can be overridden.\n *\n * @param key - The callback registry key\n * @param callback - The callback function to register\n * @returns true if registered, false if not in render context\n */\nexport function replaceCallback(key: string, callback: (...args: any[]) => any): boolean {\n const ctx = tryGetCfgRenderCtx();\n if (ctx === undefined) return false;\n ctx.callbackRegistry[key] = callback;\n return true;\n}\n\n//\n// ConfigRenderLambda helpers\n//\n\n/** Options for creating a ConfigRenderLambda descriptor */\nexport type CreateLambdaOptions = ConfigRenderLambdaFlags & {\n /** The callback registry key */\n handle: string;\n};\n\n/** Creates a ConfigRenderLambda descriptor without registering a callback. */\nexport function createRenderLambda<T = unknown>(opts: CreateLambdaOptions): ConfigRenderLambda<T> {\n const { handle, ...flags } = opts;\n return {\n __renderLambda: true,\n handle,\n ...flags,\n } as ConfigRenderLambda<T>;\n}\n\n/** Registers a callback and returns a ConfigRenderLambda descriptor. */\nexport function createAndRegisterRenderLambda<T = unknown>(\n opts: CreateLambdaOptions & {\n lambda: (...args: any[]) => any;\n },\n replace?: boolean,\n): ConfigRenderLambda<T> {\n const { handle, lambda, ...flags } = opts;\n\n if (replace) {\n replaceCallback(handle, lambda);\n } else {\n tryRegisterCallback(handle, lambda);\n }\n\n return createRenderLambda<T>({ handle, ...flags });\n}\n\nconst futureResolves = new Map<string, ((value: unknown) => void)[]>();\n\nexport function registerFutureAwait(handle: FutureHandle, onResolve: (value: unknown) => void) {\n if (!(handle in getCfgRenderCtx().callbackRegistry)) {\n getCfgRenderCtx().callbackRegistry[handle] = (value: unknown) => {\n for (const res of futureResolves.get(handle)!) {\n res(value);\n }\n };\n futureResolves.set(handle, []);\n }\n futureResolves.get(handle)!.push(onResolve);\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"internal.cjs","names":[],"sources":["../src/internal.ts"],"sourcesContent":["import type { OutputWithStatus } from \"@milaboratories/pl-model-common\";\nimport type { Platforma, PlatformaApiVersion } from \"./platforma\";\nimport type { FutureHandle, GlobalCfgRenderCtx } from \"./render/internal\";\nimport type { ConfigRenderLambda, ConfigRenderLambdaFlags } from \"./bconfig\";\n\n/** Utility code helping to identify whether the code is running in actual UI environment */\nexport function isInUI() {\n return (\n typeof globalThis.getPlatforma !== \"undefined\" || typeof globalThis.platforma !== \"undefined\"\n );\n}\n\n/** Utility code helping to retrieve a platforma instance form the environment */\nexport function getPlatformaInstance<\n Args = unknown,\n Outputs extends Record<string, OutputWithStatus<unknown>> = Record<\n string,\n OutputWithStatus<unknown>\n >,\n UiState = unknown,\n Href extends `/${string}` = `/${string}`,\n>(config?: {\n sdkVersion: string;\n apiVersion: PlatformaApiVersion;\n}): Platforma<Args, Outputs, UiState, Href> {\n if (config && typeof globalThis.getPlatforma === \"function\")\n return globalThis.getPlatforma(config);\n else if (typeof globalThis.platforma !== \"undefined\")\n return globalThis.platforma as Platforma<Args, Outputs, UiState, Href>;\n else throw new Error(\"Can't get platforma instance.\");\n}\n\nexport function tryGetCfgRenderCtx(): GlobalCfgRenderCtx | undefined {\n if (typeof globalThis.cfgRenderCtx !== \"undefined\") return globalThis.cfgRenderCtx;\n else return undefined;\n}\n\nexport function getCfgRenderCtx(): GlobalCfgRenderCtx {\n if (typeof globalThis.cfgRenderCtx !== \"undefined\") return globalThis.cfgRenderCtx;\n else throw new Error(\"Not in config rendering context\");\n}\n\nexport function tryRegisterCallback(key: string, callback: (...args: any[]) => any): boolean {\n const ctx = tryGetCfgRenderCtx();\n if (ctx === undefined) return false;\n if (key in ctx.callbackRegistry) throw new Error(`Callback with key ${key} already registered.`);\n ctx.callbackRegistry[key] = callback;\n return true;\n}\n\n/**\n * Registers a callback, replacing any existing callback with the same key.\n * Use this for callbacks that have a default value but can be overridden.\n *\n * @param key - The callback registry key\n * @param callback - The callback function to register\n * @returns true if registered, false if not in render context\n */\nexport function replaceCallback(key: string, callback: (...args: any[]) => any): boolean {\n const ctx = tryGetCfgRenderCtx();\n if (ctx === undefined) return false;\n ctx.callbackRegistry[key] = callback;\n return true;\n}\n\n//\n// ConfigRenderLambda helpers\n//\n\n/** Options for creating a ConfigRenderLambda descriptor */\nexport type CreateLambdaOptions = ConfigRenderLambdaFlags & {\n /** The callback registry key */\n handle: string;\n};\n\n/** Creates a ConfigRenderLambda descriptor without registering a callback. */\nexport function createRenderLambda<T = unknown>(opts: CreateLambdaOptions): ConfigRenderLambda<T> {\n const { handle, ...flags } = opts;\n return {\n __renderLambda: true,\n handle,\n ...flags,\n } as ConfigRenderLambda<T>;\n}\n\n/** Registers a callback and returns a ConfigRenderLambda descriptor. */\nexport function createAndRegisterRenderLambda<T = unknown>(\n opts: CreateLambdaOptions & {\n lambda: (...args: any[]) => any;\n },\n replace?: boolean,\n): ConfigRenderLambda<T> {\n const { handle, lambda, ...flags } = opts;\n\n if (replace) {\n replaceCallback(handle, lambda);\n } else {\n tryRegisterCallback(handle, lambda);\n }\n\n return createRenderLambda<T>({ handle, ...flags });\n}\n\nconst futureResolves = new Map<string, ((value: unknown) => void)[]>();\n\nexport function registerFutureAwait(handle: FutureHandle, onResolve: (value: unknown) => void) {\n if (!(handle in getCfgRenderCtx().callbackRegistry)) {\n getCfgRenderCtx().callbackRegistry[handle] = (value: unknown) => {\n for (const res of futureResolves.get(handle)!) {\n res(value);\n }\n };\n futureResolves.set(handle, []);\n }\n futureResolves.get(handle)!.push(onResolve);\n}\n"],"mappings":";;AAMA,SAAgB,SAAS;AACvB,QACE,OAAO,WAAW,iBAAiB,eAAe,OAAO,WAAW,cAAc;;;AAKtF,SAAgB,qBAQd,QAG0C;AAC1C,KAAI,UAAU,OAAO,WAAW,iBAAiB,WAC/C,QAAO,WAAW,aAAa,OAAO;UAC/B,OAAO,WAAW,cAAc,YACvC,QAAO,WAAW;KACf,OAAM,IAAI,MAAM,gCAAgC;;AAGvD,SAAgB,qBAAqD;AACnE,KAAI,OAAO,WAAW,iBAAiB,YAAa,QAAO,WAAW;KACjE,QAAO,KAAA;;AAGd,SAAgB,kBAAsC;AACpD,KAAI,OAAO,WAAW,iBAAiB,YAAa,QAAO,WAAW;KACjE,OAAM,IAAI,MAAM,kCAAkC;;AAGzD,SAAgB,oBAAoB,KAAa,UAA4C;CAC3F,MAAM,MAAM,oBAAoB;AAChC,KAAI,QAAQ,KAAA,EAAW,QAAO;AAC9B,KAAI,OAAO,IAAI,iBAAkB,OAAM,IAAI,MAAM,qBAAqB,IAAI,sBAAsB;AAChG,KAAI,iBAAiB,OAAO;AAC5B,QAAO;;;;;;;;;;AAWT,SAAgB,gBAAgB,KAAa,UAA4C;CACvF,MAAM,MAAM,oBAAoB;AAChC,KAAI,QAAQ,KAAA,EAAW,QAAO;AAC9B,KAAI,iBAAiB,OAAO;AAC5B,QAAO;;;AAcT,SAAgB,mBAAgC,MAAkD;CAChG,MAAM,EAAE,QAAQ,GAAG,UAAU;AAC7B,QAAO;EACL,gBAAgB;EAChB;EACA,GAAG;EACJ;;;AAIH,SAAgB,8BACd,MAGA,SACuB;CACvB,MAAM,EAAE,QAAQ,QAAQ,GAAG,UAAU;AAErC,KAAI,QACF,iBAAgB,QAAQ,OAAO;KAE/B,qBAAoB,QAAQ,OAAO;AAGrC,QAAO,mBAAsB;EAAE;EAAQ,GAAG;EAAO,CAAC;;AAGpD,MAAM,iCAAiB,IAAI,KAA2C;AAEtE,SAAgB,oBAAoB,QAAsB,WAAqC;AAC7F,KAAI,EAAE,UAAU,iBAAiB,CAAC,mBAAmB;AACnD,mBAAiB,CAAC,iBAAiB,WAAW,UAAmB;AAC/D,QAAK,MAAM,OAAO,eAAe,IAAI,OAAO,CAC1C,KAAI,MAAM;;AAGd,iBAAe,IAAI,QAAQ,EAAE,CAAC;;AAEhC,gBAAe,IAAI,OAAO,CAAE,KAAK,UAAU"}
|
package/dist/internal.js
CHANGED
|
@@ -67,7 +67,7 @@ function registerFutureAwait(handle, onResolve) {
|
|
|
67
67
|
}
|
|
68
68
|
futureResolves.get(handle).push(onResolve);
|
|
69
69
|
}
|
|
70
|
-
|
|
71
70
|
//#endregion
|
|
72
71
|
export { createAndRegisterRenderLambda, createRenderLambda, getCfgRenderCtx, getPlatformaInstance, isInUI, registerFutureAwait, tryRegisterCallback };
|
|
72
|
+
|
|
73
73
|
//# sourceMappingURL=internal.js.map
|
package/dist/internal.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"internal.js","names":[],"sources":["../src/internal.ts"],"sourcesContent":["import type { OutputWithStatus } from \"@milaboratories/pl-model-common\";\nimport type { Platforma, PlatformaApiVersion } from \"./platforma\";\nimport type { FutureHandle, GlobalCfgRenderCtx } from \"./render/internal\";\nimport type { ConfigRenderLambda, ConfigRenderLambdaFlags } from \"./bconfig\";\n\n/** Utility code helping to identify whether the code is running in actual UI environment */\nexport function isInUI() {\n return (\n typeof globalThis.getPlatforma !== \"undefined\" || typeof globalThis.platforma !== \"undefined\"\n );\n}\n\n/** Utility code helping to retrieve a platforma instance form the environment */\nexport function getPlatformaInstance<\n Args = unknown,\n Outputs extends Record<string, OutputWithStatus<unknown>> = Record<\n string,\n OutputWithStatus<unknown>\n >,\n UiState = unknown,\n Href extends `/${string}` = `/${string}`,\n>(config?: {\n sdkVersion: string;\n apiVersion: PlatformaApiVersion;\n}): Platforma<Args, Outputs, UiState, Href> {\n if (config && typeof globalThis.getPlatforma === \"function\")\n return globalThis.getPlatforma(config);\n else if (typeof globalThis.platforma !== \"undefined\")\n return globalThis.platforma as Platforma<Args, Outputs, UiState, Href>;\n else throw new Error(\"Can't get platforma instance.\");\n}\n\nexport function tryGetCfgRenderCtx(): GlobalCfgRenderCtx | undefined {\n if (typeof globalThis.cfgRenderCtx !== \"undefined\") return globalThis.cfgRenderCtx;\n else return undefined;\n}\n\nexport function getCfgRenderCtx(): GlobalCfgRenderCtx {\n if (typeof globalThis.cfgRenderCtx !== \"undefined\") return globalThis.cfgRenderCtx;\n else throw new Error(\"Not in config rendering context\");\n}\n\nexport function tryRegisterCallback(key: string, callback: (...args: any[]) => any): boolean {\n const ctx = tryGetCfgRenderCtx();\n if (ctx === undefined) return false;\n if (key in ctx.callbackRegistry) throw new Error(`Callback with key ${key} already registered.`);\n ctx.callbackRegistry[key] = callback;\n return true;\n}\n\n/**\n * Registers a callback, replacing any existing callback with the same key.\n * Use this for callbacks that have a default value but can be overridden.\n *\n * @param key - The callback registry key\n * @param callback - The callback function to register\n * @returns true if registered, false if not in render context\n */\nexport function replaceCallback(key: string, callback: (...args: any[]) => any): boolean {\n const ctx = tryGetCfgRenderCtx();\n if (ctx === undefined) return false;\n ctx.callbackRegistry[key] = callback;\n return true;\n}\n\n//\n// ConfigRenderLambda helpers\n//\n\n/** Options for creating a ConfigRenderLambda descriptor */\nexport type CreateLambdaOptions = ConfigRenderLambdaFlags & {\n /** The callback registry key */\n handle: string;\n};\n\n/** Creates a ConfigRenderLambda descriptor without registering a callback. */\nexport function createRenderLambda<T = unknown>(opts: CreateLambdaOptions): ConfigRenderLambda<T> {\n const { handle, ...flags } = opts;\n return {\n __renderLambda: true,\n handle,\n ...flags,\n } as ConfigRenderLambda<T>;\n}\n\n/** Registers a callback and returns a ConfigRenderLambda descriptor. */\nexport function createAndRegisterRenderLambda<T = unknown>(\n opts: CreateLambdaOptions & {\n lambda: (...args: any[]) => any;\n },\n replace?: boolean,\n): ConfigRenderLambda<T> {\n const { handle, lambda, ...flags } = opts;\n\n if (replace) {\n replaceCallback(handle, lambda);\n } else {\n tryRegisterCallback(handle, lambda);\n }\n\n return createRenderLambda<T>({ handle, ...flags });\n}\n\nconst futureResolves = new Map<string, ((value: unknown) => void)[]>();\n\nexport function registerFutureAwait(handle: FutureHandle, onResolve: (value: unknown) => void) {\n if (!(handle in getCfgRenderCtx().callbackRegistry)) {\n getCfgRenderCtx().callbackRegistry[handle] = (value: unknown) => {\n for (const res of futureResolves.get(handle)!) {\n res(value);\n }\n };\n futureResolves.set(handle, []);\n }\n futureResolves.get(handle)!.push(onResolve);\n}\n"],"mappings":";;AAMA,SAAgB,SAAS;AACvB,QACE,OAAO,WAAW,iBAAiB,eAAe,OAAO,WAAW,cAAc;;;AAKtF,SAAgB,qBAQd,QAG0C;AAC1C,KAAI,UAAU,OAAO,WAAW,iBAAiB,WAC/C,QAAO,WAAW,aAAa,OAAO;UAC/B,OAAO,WAAW,cAAc,YACvC,QAAO,WAAW;KACf,OAAM,IAAI,MAAM,gCAAgC;;AAGvD,SAAgB,qBAAqD;AACnE,KAAI,OAAO,WAAW,iBAAiB,YAAa,QAAO,WAAW;KACjE,QAAO;;AAGd,SAAgB,kBAAsC;AACpD,KAAI,OAAO,WAAW,iBAAiB,YAAa,QAAO,WAAW;KACjE,OAAM,IAAI,MAAM,kCAAkC;;AAGzD,SAAgB,oBAAoB,KAAa,UAA4C;CAC3F,MAAM,MAAM,oBAAoB;AAChC,KAAI,QAAQ,
|
|
1
|
+
{"version":3,"file":"internal.js","names":[],"sources":["../src/internal.ts"],"sourcesContent":["import type { OutputWithStatus } from \"@milaboratories/pl-model-common\";\nimport type { Platforma, PlatformaApiVersion } from \"./platforma\";\nimport type { FutureHandle, GlobalCfgRenderCtx } from \"./render/internal\";\nimport type { ConfigRenderLambda, ConfigRenderLambdaFlags } from \"./bconfig\";\n\n/** Utility code helping to identify whether the code is running in actual UI environment */\nexport function isInUI() {\n return (\n typeof globalThis.getPlatforma !== \"undefined\" || typeof globalThis.platforma !== \"undefined\"\n );\n}\n\n/** Utility code helping to retrieve a platforma instance form the environment */\nexport function getPlatformaInstance<\n Args = unknown,\n Outputs extends Record<string, OutputWithStatus<unknown>> = Record<\n string,\n OutputWithStatus<unknown>\n >,\n UiState = unknown,\n Href extends `/${string}` = `/${string}`,\n>(config?: {\n sdkVersion: string;\n apiVersion: PlatformaApiVersion;\n}): Platforma<Args, Outputs, UiState, Href> {\n if (config && typeof globalThis.getPlatforma === \"function\")\n return globalThis.getPlatforma(config);\n else if (typeof globalThis.platforma !== \"undefined\")\n return globalThis.platforma as Platforma<Args, Outputs, UiState, Href>;\n else throw new Error(\"Can't get platforma instance.\");\n}\n\nexport function tryGetCfgRenderCtx(): GlobalCfgRenderCtx | undefined {\n if (typeof globalThis.cfgRenderCtx !== \"undefined\") return globalThis.cfgRenderCtx;\n else return undefined;\n}\n\nexport function getCfgRenderCtx(): GlobalCfgRenderCtx {\n if (typeof globalThis.cfgRenderCtx !== \"undefined\") return globalThis.cfgRenderCtx;\n else throw new Error(\"Not in config rendering context\");\n}\n\nexport function tryRegisterCallback(key: string, callback: (...args: any[]) => any): boolean {\n const ctx = tryGetCfgRenderCtx();\n if (ctx === undefined) return false;\n if (key in ctx.callbackRegistry) throw new Error(`Callback with key ${key} already registered.`);\n ctx.callbackRegistry[key] = callback;\n return true;\n}\n\n/**\n * Registers a callback, replacing any existing callback with the same key.\n * Use this for callbacks that have a default value but can be overridden.\n *\n * @param key - The callback registry key\n * @param callback - The callback function to register\n * @returns true if registered, false if not in render context\n */\nexport function replaceCallback(key: string, callback: (...args: any[]) => any): boolean {\n const ctx = tryGetCfgRenderCtx();\n if (ctx === undefined) return false;\n ctx.callbackRegistry[key] = callback;\n return true;\n}\n\n//\n// ConfigRenderLambda helpers\n//\n\n/** Options for creating a ConfigRenderLambda descriptor */\nexport type CreateLambdaOptions = ConfigRenderLambdaFlags & {\n /** The callback registry key */\n handle: string;\n};\n\n/** Creates a ConfigRenderLambda descriptor without registering a callback. */\nexport function createRenderLambda<T = unknown>(opts: CreateLambdaOptions): ConfigRenderLambda<T> {\n const { handle, ...flags } = opts;\n return {\n __renderLambda: true,\n handle,\n ...flags,\n } as ConfigRenderLambda<T>;\n}\n\n/** Registers a callback and returns a ConfigRenderLambda descriptor. */\nexport function createAndRegisterRenderLambda<T = unknown>(\n opts: CreateLambdaOptions & {\n lambda: (...args: any[]) => any;\n },\n replace?: boolean,\n): ConfigRenderLambda<T> {\n const { handle, lambda, ...flags } = opts;\n\n if (replace) {\n replaceCallback(handle, lambda);\n } else {\n tryRegisterCallback(handle, lambda);\n }\n\n return createRenderLambda<T>({ handle, ...flags });\n}\n\nconst futureResolves = new Map<string, ((value: unknown) => void)[]>();\n\nexport function registerFutureAwait(handle: FutureHandle, onResolve: (value: unknown) => void) {\n if (!(handle in getCfgRenderCtx().callbackRegistry)) {\n getCfgRenderCtx().callbackRegistry[handle] = (value: unknown) => {\n for (const res of futureResolves.get(handle)!) {\n res(value);\n }\n };\n futureResolves.set(handle, []);\n }\n futureResolves.get(handle)!.push(onResolve);\n}\n"],"mappings":";;AAMA,SAAgB,SAAS;AACvB,QACE,OAAO,WAAW,iBAAiB,eAAe,OAAO,WAAW,cAAc;;;AAKtF,SAAgB,qBAQd,QAG0C;AAC1C,KAAI,UAAU,OAAO,WAAW,iBAAiB,WAC/C,QAAO,WAAW,aAAa,OAAO;UAC/B,OAAO,WAAW,cAAc,YACvC,QAAO,WAAW;KACf,OAAM,IAAI,MAAM,gCAAgC;;AAGvD,SAAgB,qBAAqD;AACnE,KAAI,OAAO,WAAW,iBAAiB,YAAa,QAAO,WAAW;KACjE,QAAO,KAAA;;AAGd,SAAgB,kBAAsC;AACpD,KAAI,OAAO,WAAW,iBAAiB,YAAa,QAAO,WAAW;KACjE,OAAM,IAAI,MAAM,kCAAkC;;AAGzD,SAAgB,oBAAoB,KAAa,UAA4C;CAC3F,MAAM,MAAM,oBAAoB;AAChC,KAAI,QAAQ,KAAA,EAAW,QAAO;AAC9B,KAAI,OAAO,IAAI,iBAAkB,OAAM,IAAI,MAAM,qBAAqB,IAAI,sBAAsB;AAChG,KAAI,iBAAiB,OAAO;AAC5B,QAAO;;;;;;;;;;AAWT,SAAgB,gBAAgB,KAAa,UAA4C;CACvF,MAAM,MAAM,oBAAoB;AAChC,KAAI,QAAQ,KAAA,EAAW,QAAO;AAC9B,KAAI,iBAAiB,OAAO;AAC5B,QAAO;;;AAcT,SAAgB,mBAAgC,MAAkD;CAChG,MAAM,EAAE,QAAQ,GAAG,UAAU;AAC7B,QAAO;EACL,gBAAgB;EAChB;EACA,GAAG;EACJ;;;AAIH,SAAgB,8BACd,MAGA,SACuB;CACvB,MAAM,EAAE,QAAQ,QAAQ,GAAG,UAAU;AAErC,KAAI,QACF,iBAAgB,QAAQ,OAAO;KAE/B,qBAAoB,QAAQ,OAAO;AAGrC,QAAO,mBAAsB;EAAE;EAAQ,GAAG;EAAO,CAAC;;AAGpD,MAAM,iCAAiB,IAAI,KAA2C;AAEtE,SAAgB,oBAAoB,QAAsB,WAAqC;AAC7F,KAAI,EAAE,UAAU,iBAAiB,CAAC,mBAAmB;AACnD,mBAAiB,CAAC,iBAAiB,WAAW,UAAmB;AAC/D,QAAK,MAAM,OAAO,eAAe,IAAI,OAAO,CAC1C,KAAI,MAAM;;AAGd,iBAAe,IAAI,QAAQ,EAAE,CAAC;;AAEhC,gBAAe,IAAI,OAAO,CAAE,KAAK,UAAU"}
|