@milaboratories/pl-model-common 1.24.2 → 1.24.4
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/base32_encode.cjs +11 -11
- package/dist/base32_encode.cjs.map +1 -1
- package/dist/base32_encode.d.ts +1 -1
- package/dist/base32_encode.js +11 -11
- package/dist/base32_encode.js.map +1 -1
- package/dist/base64.cjs +2 -2
- package/dist/base64.cjs.map +1 -1
- package/dist/base64.d.ts +1 -1
- package/dist/base64.d.ts.map +1 -1
- package/dist/base64.js +2 -2
- package/dist/base64.js.map +1 -1
- package/dist/block_state.d.ts +3 -3
- package/dist/bmodel/block_config.cjs +1 -1
- package/dist/bmodel/block_config.cjs.map +1 -1
- package/dist/bmodel/block_config.d.ts +3 -3
- package/dist/bmodel/block_config.d.ts.map +1 -1
- package/dist/bmodel/block_config.js +1 -1
- package/dist/bmodel/block_config.js.map +1 -1
- package/dist/bmodel/code.cjs +1 -1
- package/dist/bmodel/code.cjs.map +1 -1
- package/dist/bmodel/code.d.ts +2 -2
- package/dist/bmodel/code.js +1 -1
- package/dist/bmodel/code.js.map +1 -1
- package/dist/bmodel/container.d.ts +5 -5
- package/dist/bmodel/index.d.ts +5 -5
- package/dist/bmodel/normalization.cjs +17 -17
- package/dist/bmodel/normalization.cjs.map +1 -1
- package/dist/bmodel/normalization.d.ts +2 -2
- package/dist/bmodel/normalization.d.ts.map +1 -1
- package/dist/bmodel/normalization.js +17 -17
- package/dist/bmodel/normalization.js.map +1 -1
- package/dist/bmodel/types.d.ts +1 -1
- package/dist/branding.d.ts +2 -2
- package/dist/common_types.d.ts +1 -1
- package/dist/driver_kit.d.ts +1 -1
- package/dist/drivers/ChunkedStreamReader.cjs +13 -12
- package/dist/drivers/ChunkedStreamReader.cjs.map +1 -1
- package/dist/drivers/ChunkedStreamReader.d.ts +2 -2
- package/dist/drivers/ChunkedStreamReader.d.ts.map +1 -1
- package/dist/drivers/ChunkedStreamReader.js +13 -12
- package/dist/drivers/ChunkedStreamReader.js.map +1 -1
- package/dist/drivers/blob.cjs +1 -1
- package/dist/drivers/blob.cjs.map +1 -1
- package/dist/drivers/blob.d.ts +4 -4
- package/dist/drivers/blob.d.ts.map +1 -1
- package/dist/drivers/blob.js +1 -1
- package/dist/drivers/blob.js.map +1 -1
- package/dist/drivers/index.d.ts +8 -8
- package/dist/drivers/log.cjs +1 -1
- package/dist/drivers/log.cjs.map +1 -1
- package/dist/drivers/log.js +1 -1
- package/dist/drivers/log.js.map +1 -1
- package/dist/drivers/ls.cjs +3 -3
- package/dist/drivers/ls.cjs.map +1 -1
- package/dist/drivers/ls.d.ts +6 -6
- package/dist/drivers/ls.d.ts.map +1 -1
- package/dist/drivers/ls.js +3 -3
- package/dist/drivers/ls.js.map +1 -1
- package/dist/drivers/pframe/column_filter.d.ts +1 -1
- package/dist/drivers/pframe/data_info.cjs +119 -110
- package/dist/drivers/pframe/data_info.cjs.map +1 -1
- package/dist/drivers/pframe/data_info.d.ts +10 -10
- package/dist/drivers/pframe/data_info.d.ts.map +1 -1
- package/dist/drivers/pframe/data_info.js +119 -110
- package/dist/drivers/pframe/data_info.js.map +1 -1
- package/dist/drivers/pframe/data_types.cjs +7 -4
- package/dist/drivers/pframe/data_types.cjs.map +1 -1
- package/dist/drivers/pframe/data_types.d.ts +2 -2
- package/dist/drivers/pframe/data_types.d.ts.map +1 -1
- package/dist/drivers/pframe/data_types.js +7 -4
- package/dist/drivers/pframe/data_types.js.map +1 -1
- package/dist/drivers/pframe/driver.d.ts +10 -10
- package/dist/drivers/pframe/driver.d.ts.map +1 -1
- package/dist/drivers/pframe/find_columns.d.ts +2 -2
- package/dist/drivers/pframe/index.d.ts +14 -14
- package/dist/drivers/pframe/linker_columns.cjs +13 -5
- package/dist/drivers/pframe/linker_columns.cjs.map +1 -1
- package/dist/drivers/pframe/linker_columns.d.ts +2 -2
- package/dist/drivers/pframe/linker_columns.d.ts.map +1 -1
- package/dist/drivers/pframe/linker_columns.js +13 -5
- package/dist/drivers/pframe/linker_columns.js.map +1 -1
- package/dist/drivers/pframe/pframe.d.ts +6 -6
- package/dist/drivers/pframe/pframe.d.ts.map +1 -1
- package/dist/drivers/pframe/query/index.d.ts +2 -2
- package/dist/drivers/pframe/query/query_common.d.ts +40 -40
- package/dist/drivers/pframe/query/query_common.d.ts.map +1 -1
- package/dist/drivers/pframe/query/query_data.d.ts +2 -2
- package/dist/drivers/pframe/query/query_data.d.ts.map +1 -1
- package/dist/drivers/pframe/query/query_spec.d.ts +3 -3
- package/dist/drivers/pframe/query/query_spec.d.ts.map +1 -1
- package/dist/drivers/pframe/spec/anchored.cjs +6 -6
- package/dist/drivers/pframe/spec/anchored.cjs.map +1 -1
- package/dist/drivers/pframe/spec/anchored.d.ts +4 -4
- package/dist/drivers/pframe/spec/anchored.d.ts.map +1 -1
- package/dist/drivers/pframe/spec/anchored.js +6 -6
- package/dist/drivers/pframe/spec/anchored.js.map +1 -1
- package/dist/drivers/pframe/spec/filtered_column.cjs +1 -1
- package/dist/drivers/pframe/spec/filtered_column.cjs.map +1 -1
- package/dist/drivers/pframe/spec/filtered_column.d.ts +1 -1
- package/dist/drivers/pframe/spec/filtered_column.js +1 -1
- package/dist/drivers/pframe/spec/filtered_column.js.map +1 -1
- package/dist/drivers/pframe/spec/ids.cjs.map +1 -1
- package/dist/drivers/pframe/spec/ids.d.ts +5 -5
- package/dist/drivers/pframe/spec/ids.js.map +1 -1
- package/dist/drivers/pframe/spec/index.d.ts +6 -6
- package/dist/drivers/pframe/spec/native_id.cjs.map +1 -1
- package/dist/drivers/pframe/spec/native_id.d.ts +3 -3
- package/dist/drivers/pframe/spec/native_id.d.ts.map +1 -1
- package/dist/drivers/pframe/spec/native_id.js.map +1 -1
- package/dist/drivers/pframe/spec/selectors.cjs +1 -1
- package/dist/drivers/pframe/spec/selectors.cjs.map +1 -1
- package/dist/drivers/pframe/spec/selectors.d.ts +4 -4
- package/dist/drivers/pframe/spec/selectors.d.ts.map +1 -1
- package/dist/drivers/pframe/spec/selectors.js +1 -1
- package/dist/drivers/pframe/spec/selectors.js.map +1 -1
- package/dist/drivers/pframe/spec/spec.cjs +64 -59
- package/dist/drivers/pframe/spec/spec.cjs.map +1 -1
- package/dist/drivers/pframe/spec/spec.d.ts +15 -15
- package/dist/drivers/pframe/spec/spec.d.ts.map +1 -1
- package/dist/drivers/pframe/spec/spec.js +64 -59
- package/dist/drivers/pframe/spec/spec.js.map +1 -1
- package/dist/drivers/pframe/table.d.ts +2 -2
- package/dist/drivers/pframe/table_calculate.cjs +11 -11
- package/dist/drivers/pframe/table_calculate.cjs.map +1 -1
- package/dist/drivers/pframe/table_calculate.d.ts +30 -30
- package/dist/drivers/pframe/table_calculate.d.ts.map +1 -1
- package/dist/drivers/pframe/table_calculate.js +11 -11
- package/dist/drivers/pframe/table_calculate.js.map +1 -1
- package/dist/drivers/pframe/table_common.cjs +4 -4
- package/dist/drivers/pframe/table_common.cjs.map +1 -1
- package/dist/drivers/pframe/table_common.d.ts +6 -6
- package/dist/drivers/pframe/table_common.js +4 -4
- package/dist/drivers/pframe/table_common.js.map +1 -1
- package/dist/drivers/pframe/type_util.d.ts.map +1 -1
- package/dist/drivers/pframe/unique_values.d.ts +4 -4
- package/dist/drivers/urls.cjs +2 -2
- package/dist/drivers/urls.cjs.map +1 -1
- package/dist/drivers/urls.d.ts +1 -1
- package/dist/drivers/urls.js +2 -2
- package/dist/drivers/urls.js.map +1 -1
- package/dist/errors.cjs +12 -12
- package/dist/errors.cjs.map +1 -1
- package/dist/errors.d.ts +1 -1
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +12 -12
- package/dist/errors.js.map +1 -1
- package/dist/flags/block_flags.cjs +2 -2
- package/dist/flags/block_flags.cjs.map +1 -1
- package/dist/flags/block_flags.d.ts.map +1 -1
- package/dist/flags/block_flags.js +2 -2
- package/dist/flags/block_flags.js.map +1 -1
- package/dist/flags/flag_utils.cjs +31 -29
- package/dist/flags/flag_utils.cjs.map +1 -1
- package/dist/flags/flag_utils.d.ts +33 -33
- package/dist/flags/flag_utils.d.ts.map +1 -1
- package/dist/flags/flag_utils.js +31 -29
- package/dist/flags/flag_utils.js.map +1 -1
- package/dist/flags/index.d.ts +3 -3
- package/dist/flags/type_utils.d.ts +1 -1
- package/dist/flags/type_utils.d.ts.map +1 -1
- package/dist/httpAuth.cjs +4 -5
- package/dist/httpAuth.cjs.map +1 -1
- package/dist/httpAuth.d.ts +1 -1
- package/dist/httpAuth.d.ts.map +1 -1
- package/dist/httpAuth.js +4 -5
- package/dist/httpAuth.js.map +1 -1
- package/dist/index.d.ts +19 -19
- package/dist/json.cjs +1 -1
- package/dist/json.cjs.map +1 -1
- package/dist/json.d.ts.map +1 -1
- package/dist/json.js +1 -1
- package/dist/json.js.map +1 -1
- package/dist/navigation.cjs +1 -1
- package/dist/navigation.cjs.map +1 -1
- package/dist/navigation.d.ts +3 -3
- package/dist/navigation.js +1 -1
- package/dist/navigation.js.map +1 -1
- package/dist/plid.cjs +4 -4
- package/dist/plid.cjs.map +1 -1
- package/dist/plid.d.ts +1 -1
- package/dist/plid.js +4 -4
- package/dist/plid.js.map +1 -1
- package/dist/pool/entry.d.ts +1 -1
- package/dist/pool/index.d.ts +3 -3
- package/dist/pool/query.cjs +23 -23
- package/dist/pool/query.cjs.map +1 -1
- package/dist/pool/query.d.ts +9 -9
- package/dist/pool/query.d.ts.map +1 -1
- package/dist/pool/query.js +23 -23
- package/dist/pool/query.js.map +1 -1
- package/dist/pool/spec.cjs +9 -9
- package/dist/pool/spec.cjs.map +1 -1
- package/dist/pool/spec.d.ts +4 -4
- package/dist/pool/spec.d.ts.map +1 -1
- package/dist/pool/spec.js +9 -9
- package/dist/pool/spec.js.map +1 -1
- package/dist/ref.cjs +20 -18
- package/dist/ref.cjs.map +1 -1
- package/dist/ref.d.ts +1 -1
- package/dist/ref.d.ts.map +1 -1
- package/dist/ref.js +20 -18
- package/dist/ref.js.map +1 -1
- package/dist/utag.d.ts +1 -1
- package/dist/util.cjs +1 -1
- package/dist/util.cjs.map +1 -1
- package/dist/util.js +1 -1
- package/dist/util.js.map +1 -1
- package/dist/value_or_error.cjs.map +1 -1
- package/dist/value_or_error.d.ts.map +1 -1
- package/dist/value_or_error.js.map +1 -1
- package/package.json +18 -17
- package/src/base32_encode.ts +12 -12
- package/src/base64.ts +12 -8
- package/src/block_state.ts +3 -3
- package/src/bmodel/block_config.ts +12 -6
- package/src/bmodel/code.ts +3 -3
- package/src/bmodel/container.ts +5 -5
- package/src/bmodel/index.ts +5 -5
- package/src/bmodel/normalization.ts +33 -25
- package/src/bmodel/types.ts +1 -1
- package/src/branding.ts +2 -2
- package/src/common_types.ts +1 -1
- package/src/driver_kit.ts +1 -1
- package/src/drivers/ChunkedStreamReader.ts +16 -14
- package/src/drivers/blob.ts +7 -11
- package/src/drivers/index.ts +8 -8
- package/src/drivers/log.ts +3 -3
- package/src/drivers/ls.ts +18 -18
- package/src/drivers/pframe/column_filter.ts +1 -1
- package/src/drivers/pframe/data_info.ts +146 -146
- package/src/drivers/pframe/data_types.ts +56 -36
- package/src/drivers/pframe/driver.ts +20 -36
- package/src/drivers/pframe/find_columns.ts +2 -2
- package/src/drivers/pframe/index.ts +14 -14
- package/src/drivers/pframe/linker_columns.test.ts +280 -273
- package/src/drivers/pframe/linker_columns.ts +65 -39
- package/src/drivers/pframe/pframe.ts +6 -9
- package/src/drivers/pframe/query/index.ts +2 -2
- package/src/drivers/pframe/query/query_common.ts +50 -40
- package/src/drivers/pframe/query/query_data.ts +17 -10
- package/src/drivers/pframe/query/query_spec.ts +18 -10
- package/src/drivers/pframe/spec/anchored.ts +44 -33
- package/src/drivers/pframe/spec/filtered_column.ts +2 -2
- package/src/drivers/pframe/spec/ids.ts +6 -6
- package/src/drivers/pframe/spec/index.ts +6 -6
- package/src/drivers/pframe/spec/native_id.ts +7 -9
- package/src/drivers/pframe/spec/selectors.test.ts +170 -146
- package/src/drivers/pframe/spec/selectors.ts +22 -31
- package/src/drivers/pframe/spec/spec.test.ts +163 -176
- package/src/drivers/pframe/spec/spec.ts +132 -117
- package/src/drivers/pframe/table.ts +2 -2
- package/src/drivers/pframe/table_calculate.ts +44 -50
- package/src/drivers/pframe/table_common.ts +10 -10
- package/src/drivers/pframe/type_util.ts +2 -7
- package/src/drivers/pframe/unique_values.ts +4 -4
- package/src/drivers/urls.ts +3 -3
- package/src/errors.test.ts +20 -20
- package/src/errors.ts +24 -20
- package/src/flags/block_flags.ts +8 -7
- package/src/flags/flag_utils.test.ts +94 -73
- package/src/flags/flag_utils.ts +73 -50
- package/src/flags/index.ts +3 -3
- package/src/flags/type_utils.ts +10 -7
- package/src/httpAuth.ts +5 -6
- package/src/index.ts +19 -19
- package/src/json.ts +28 -17
- package/src/navigation.ts +4 -4
- package/src/plid.ts +6 -6
- package/src/pool/entry.ts +1 -1
- package/src/pool/index.ts +3 -3
- package/src/pool/query.ts +52 -56
- package/src/pool/spec.ts +20 -17
- package/src/ref.ts +25 -19
- package/src/utag.ts +1 -1
- package/src/util.ts +1 -1
- package/src/value_or_error.ts +6 -6
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import type { PTableColumnId, PTableColumnSpec } from
|
|
2
|
-
import type { PTableVector } from
|
|
3
|
-
import type { PObjectId } from
|
|
4
|
-
import { assertNever } from
|
|
5
|
-
import type { PColumn } from
|
|
6
|
-
import type { PColumnValues } from
|
|
1
|
+
import type { PTableColumnId, PTableColumnSpec } from "./table_common";
|
|
2
|
+
import type { PTableVector } from "./data_types";
|
|
3
|
+
import type { PObjectId } from "../../pool";
|
|
4
|
+
import { assertNever } from "../../util";
|
|
5
|
+
import type { PColumn } from "./spec/spec";
|
|
6
|
+
import type { PColumnValues } from "./data_info";
|
|
7
7
|
|
|
8
8
|
/** Defines a terminal column node in the join request tree */
|
|
9
9
|
export interface ColumnJoinEntry<Col> {
|
|
10
10
|
/** Node type discriminator */
|
|
11
|
-
readonly type:
|
|
11
|
+
readonly type: "column";
|
|
12
12
|
|
|
13
13
|
/** Local column */
|
|
14
14
|
readonly column: Col;
|
|
@@ -20,7 +20,7 @@ export interface ColumnJoinEntry<Col> {
|
|
|
20
20
|
* */
|
|
21
21
|
export interface ConstantAxisFilter {
|
|
22
22
|
/** Filter type discriminator */
|
|
23
|
-
readonly type:
|
|
23
|
+
readonly type: "constant";
|
|
24
24
|
|
|
25
25
|
/** Index of axis to slice (zero-based) */
|
|
26
26
|
readonly axisIndex: number;
|
|
@@ -32,7 +32,7 @@ export interface ConstantAxisFilter {
|
|
|
32
32
|
/** Defines a terminal column node in the join request tree */
|
|
33
33
|
export interface SlicedColumnJoinEntry<Col> {
|
|
34
34
|
/** Node type discriminator */
|
|
35
|
-
readonly type:
|
|
35
|
+
readonly type: "slicedColumn";
|
|
36
36
|
|
|
37
37
|
/** Local column */
|
|
38
38
|
readonly column: Col;
|
|
@@ -46,7 +46,7 @@ export interface SlicedColumnJoinEntry<Col> {
|
|
|
46
46
|
|
|
47
47
|
export interface ArtificialColumnJoinEntry<Col> {
|
|
48
48
|
/** Node type discriminator */
|
|
49
|
-
readonly type:
|
|
49
|
+
readonly type: "artificialColumn";
|
|
50
50
|
|
|
51
51
|
/** Column definition */
|
|
52
52
|
readonly column: Col;
|
|
@@ -61,7 +61,7 @@ export interface ArtificialColumnJoinEntry<Col> {
|
|
|
61
61
|
/** Defines a terminal column node in the join request tree */
|
|
62
62
|
export interface InlineColumnJoinEntry {
|
|
63
63
|
/** Node type discriminator */
|
|
64
|
-
readonly type:
|
|
64
|
+
readonly type: "inlineColumn";
|
|
65
65
|
|
|
66
66
|
/** Column definition */
|
|
67
67
|
readonly column: PColumn<PColumnValues>;
|
|
@@ -73,7 +73,7 @@ export interface InlineColumnJoinEntry {
|
|
|
73
73
|
* */
|
|
74
74
|
export interface InnerJoin<Col> {
|
|
75
75
|
/** Node type discriminator */
|
|
76
|
-
readonly type:
|
|
76
|
+
readonly type: "inner";
|
|
77
77
|
|
|
78
78
|
/** Child nodes to be inner joined */
|
|
79
79
|
readonly entries: JoinEntry<Col>[];
|
|
@@ -87,7 +87,7 @@ export interface InnerJoin<Col> {
|
|
|
87
87
|
* */
|
|
88
88
|
export interface FullJoin<Col> {
|
|
89
89
|
/** Node type discriminator */
|
|
90
|
-
readonly type:
|
|
90
|
+
readonly type: "full";
|
|
91
91
|
|
|
92
92
|
/** Child nodes to be fully outer joined */
|
|
93
93
|
readonly entries: JoinEntry<Col>[];
|
|
@@ -105,7 +105,7 @@ export interface FullJoin<Col> {
|
|
|
105
105
|
* */
|
|
106
106
|
export interface OuterJoin<Col> {
|
|
107
107
|
/** Node type discriminator */
|
|
108
|
-
readonly type:
|
|
108
|
+
readonly type: "outer";
|
|
109
109
|
|
|
110
110
|
/** Primes the join operation. Left part of LEFT JOIN. */
|
|
111
111
|
readonly primary: JoinEntry<Col>;
|
|
@@ -142,12 +142,12 @@ export interface FullPTableColumnData {
|
|
|
142
142
|
|
|
143
143
|
export interface SingleValueIsNAPredicate {
|
|
144
144
|
/** Comparison operator */
|
|
145
|
-
readonly operator:
|
|
145
|
+
readonly operator: "IsNA";
|
|
146
146
|
}
|
|
147
147
|
|
|
148
148
|
export interface SingleValueEqualPredicate {
|
|
149
149
|
/** Comparison operator */
|
|
150
|
-
readonly operator:
|
|
150
|
+
readonly operator: "Equal";
|
|
151
151
|
|
|
152
152
|
/** Reference value, NA values will not match */
|
|
153
153
|
readonly reference: string | number;
|
|
@@ -155,7 +155,7 @@ export interface SingleValueEqualPredicate {
|
|
|
155
155
|
|
|
156
156
|
export interface SingleValueInSetPredicate {
|
|
157
157
|
/** Comparison operator */
|
|
158
|
-
readonly operator:
|
|
158
|
+
readonly operator: "InSet";
|
|
159
159
|
|
|
160
160
|
/** Reference values, NA values will not match */
|
|
161
161
|
readonly references: (string | number)[];
|
|
@@ -163,7 +163,7 @@ export interface SingleValueInSetPredicate {
|
|
|
163
163
|
|
|
164
164
|
export interface SingleValueIEqualPredicate {
|
|
165
165
|
/** Comparison operator (case insensitive) */
|
|
166
|
-
readonly operator:
|
|
166
|
+
readonly operator: "IEqual";
|
|
167
167
|
|
|
168
168
|
/** Reference value, NA values will not match */
|
|
169
169
|
readonly reference: string;
|
|
@@ -171,7 +171,7 @@ export interface SingleValueIEqualPredicate {
|
|
|
171
171
|
|
|
172
172
|
export interface SingleValueLessPredicate {
|
|
173
173
|
/** Comparison operator */
|
|
174
|
-
readonly operator:
|
|
174
|
+
readonly operator: "Less";
|
|
175
175
|
|
|
176
176
|
/** Reference value, NA values will not match */
|
|
177
177
|
readonly reference: string | number;
|
|
@@ -179,7 +179,7 @@ export interface SingleValueLessPredicate {
|
|
|
179
179
|
|
|
180
180
|
export interface SingleValueLessOrEqualPredicate {
|
|
181
181
|
/** Comparison operator */
|
|
182
|
-
readonly operator:
|
|
182
|
+
readonly operator: "LessOrEqual";
|
|
183
183
|
|
|
184
184
|
/** Reference value, NA values will not match */
|
|
185
185
|
readonly reference: string | number;
|
|
@@ -187,7 +187,7 @@ export interface SingleValueLessOrEqualPredicate {
|
|
|
187
187
|
|
|
188
188
|
export interface SingleValueGreaterPredicate {
|
|
189
189
|
/** Comparison operator */
|
|
190
|
-
readonly operator:
|
|
190
|
+
readonly operator: "Greater";
|
|
191
191
|
|
|
192
192
|
/** Reference value, NA values will not match */
|
|
193
193
|
readonly reference: string | number;
|
|
@@ -195,7 +195,7 @@ export interface SingleValueGreaterPredicate {
|
|
|
195
195
|
|
|
196
196
|
export interface SingleValueGreaterOrEqualPredicate {
|
|
197
197
|
/** Comparison operator */
|
|
198
|
-
readonly operator:
|
|
198
|
+
readonly operator: "GreaterOrEqual";
|
|
199
199
|
|
|
200
200
|
/** Reference value, NA values will not match */
|
|
201
201
|
readonly reference: string | number;
|
|
@@ -203,7 +203,7 @@ export interface SingleValueGreaterOrEqualPredicate {
|
|
|
203
203
|
|
|
204
204
|
export interface SingleValueStringContainsPredicate {
|
|
205
205
|
/** Comparison operator */
|
|
206
|
-
readonly operator:
|
|
206
|
+
readonly operator: "StringContains";
|
|
207
207
|
|
|
208
208
|
/** Reference substring, NA values are skipped */
|
|
209
209
|
readonly substring: string;
|
|
@@ -211,7 +211,7 @@ export interface SingleValueStringContainsPredicate {
|
|
|
211
211
|
|
|
212
212
|
export interface SingleValueStringIContainsPredicate {
|
|
213
213
|
/** Comparison operator (case insensitive) */
|
|
214
|
-
readonly operator:
|
|
214
|
+
readonly operator: "StringIContains";
|
|
215
215
|
|
|
216
216
|
/** Reference substring, NA values are skipped */
|
|
217
217
|
readonly substring: string;
|
|
@@ -219,7 +219,7 @@ export interface SingleValueStringIContainsPredicate {
|
|
|
219
219
|
|
|
220
220
|
export interface SingleValueMatchesPredicate {
|
|
221
221
|
/** Comparison operator */
|
|
222
|
-
readonly operator:
|
|
222
|
+
readonly operator: "Matches";
|
|
223
223
|
|
|
224
224
|
/** Regular expression, NA values are skipped */
|
|
225
225
|
readonly regex: string;
|
|
@@ -227,7 +227,7 @@ export interface SingleValueMatchesPredicate {
|
|
|
227
227
|
|
|
228
228
|
export interface SingleValueStringContainsFuzzyPredicate {
|
|
229
229
|
/** Comparison operator */
|
|
230
|
-
readonly operator:
|
|
230
|
+
readonly operator: "StringContainsFuzzy";
|
|
231
231
|
|
|
232
232
|
/** Reference value, NA values are skipped */
|
|
233
233
|
readonly reference: string;
|
|
@@ -256,7 +256,7 @@ export interface SingleValueStringContainsFuzzyPredicate {
|
|
|
256
256
|
|
|
257
257
|
export interface SingleValueStringIContainsFuzzyPredicate {
|
|
258
258
|
/** Comparison operator (case insensitive) */
|
|
259
|
-
readonly operator:
|
|
259
|
+
readonly operator: "StringIContainsFuzzy";
|
|
260
260
|
|
|
261
261
|
/** Reference value, NA values are skipped */
|
|
262
262
|
readonly reference: string;
|
|
@@ -285,7 +285,7 @@ export interface SingleValueStringIContainsFuzzyPredicate {
|
|
|
285
285
|
|
|
286
286
|
export interface SingleValueNotPredicateV2 {
|
|
287
287
|
/** Comparison operator */
|
|
288
|
-
readonly operator:
|
|
288
|
+
readonly operator: "Not";
|
|
289
289
|
|
|
290
290
|
/** Operand to negate */
|
|
291
291
|
readonly operand: SingleValuePredicateV2;
|
|
@@ -293,7 +293,7 @@ export interface SingleValueNotPredicateV2 {
|
|
|
293
293
|
|
|
294
294
|
export interface SingleValueAndPredicateV2 {
|
|
295
295
|
/** Comparison operator */
|
|
296
|
-
readonly operator:
|
|
296
|
+
readonly operator: "And";
|
|
297
297
|
|
|
298
298
|
/** Operands to combine */
|
|
299
299
|
readonly operands: SingleValuePredicateV2[];
|
|
@@ -301,7 +301,7 @@ export interface SingleValueAndPredicateV2 {
|
|
|
301
301
|
|
|
302
302
|
export interface SingleValueOrPredicateV2 {
|
|
303
303
|
/** Comparison operator */
|
|
304
|
-
readonly operator:
|
|
304
|
+
readonly operator: "Or";
|
|
305
305
|
|
|
306
306
|
/** Operands to combine */
|
|
307
307
|
readonly operands: SingleValuePredicateV2[];
|
|
@@ -334,7 +334,7 @@ export type SingleValuePredicateV2 =
|
|
|
334
334
|
* */
|
|
335
335
|
export interface PTableRecordSingleValueFilterV2 {
|
|
336
336
|
/** Filter type discriminator */
|
|
337
|
-
readonly type:
|
|
337
|
+
readonly type: "bySingleColumnV2";
|
|
338
338
|
|
|
339
339
|
/** Target axis selector to examine values from */
|
|
340
340
|
readonly column: PTableColumnId;
|
|
@@ -388,48 +388,42 @@ export type CalculateTableDataRequest<Col> = {
|
|
|
388
388
|
/** Response for {@link CalculateTableDataRequest} */
|
|
389
389
|
export type CalculateTableDataResponse = FullPTableColumnData[];
|
|
390
390
|
|
|
391
|
-
export function mapPTableDef<C1, C2>(
|
|
392
|
-
def: PTableDef<C1>,
|
|
393
|
-
cb: (c: C1) => C2,
|
|
394
|
-
): PTableDef<C2> {
|
|
391
|
+
export function mapPTableDef<C1, C2>(def: PTableDef<C1>, cb: (c: C1) => C2): PTableDef<C2> {
|
|
395
392
|
return { ...def, src: mapJoinEntry(def.src, cb) };
|
|
396
393
|
}
|
|
397
394
|
|
|
398
|
-
export function mapJoinEntry<C1, C2>(
|
|
399
|
-
entry: JoinEntry<C1>,
|
|
400
|
-
cb: (c: C1) => C2,
|
|
401
|
-
): JoinEntry<C2> {
|
|
395
|
+
export function mapJoinEntry<C1, C2>(entry: JoinEntry<C1>, cb: (c: C1) => C2): JoinEntry<C2> {
|
|
402
396
|
switch (entry.type) {
|
|
403
|
-
case
|
|
397
|
+
case "column":
|
|
404
398
|
return {
|
|
405
|
-
type:
|
|
399
|
+
type: "column",
|
|
406
400
|
column: cb(entry.column),
|
|
407
401
|
};
|
|
408
|
-
case
|
|
402
|
+
case "slicedColumn":
|
|
409
403
|
return {
|
|
410
|
-
type:
|
|
404
|
+
type: "slicedColumn",
|
|
411
405
|
column: cb(entry.column),
|
|
412
406
|
newId: entry.newId,
|
|
413
407
|
axisFilters: entry.axisFilters,
|
|
414
408
|
};
|
|
415
|
-
case
|
|
409
|
+
case "artificialColumn":
|
|
416
410
|
return {
|
|
417
|
-
type:
|
|
411
|
+
type: "artificialColumn",
|
|
418
412
|
column: cb(entry.column),
|
|
419
413
|
newId: entry.newId,
|
|
420
414
|
axesIndices: entry.axesIndices,
|
|
421
415
|
};
|
|
422
|
-
case
|
|
416
|
+
case "inlineColumn":
|
|
423
417
|
return entry;
|
|
424
|
-
case
|
|
425
|
-
case
|
|
418
|
+
case "inner":
|
|
419
|
+
case "full":
|
|
426
420
|
return {
|
|
427
421
|
type: entry.type,
|
|
428
422
|
entries: entry.entries.map((col) => mapJoinEntry(col, cb)),
|
|
429
423
|
};
|
|
430
|
-
case
|
|
424
|
+
case "outer":
|
|
431
425
|
return {
|
|
432
|
-
type:
|
|
426
|
+
type: "outer",
|
|
433
427
|
primary: mapJoinEntry(entry.primary, cb),
|
|
434
428
|
secondary: entry.secondary.map((col) => mapJoinEntry(col, cb)),
|
|
435
429
|
};
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import type { PObjectId } from
|
|
2
|
-
import type { AxisId, AxisSpec, PColumnSpec } from
|
|
1
|
+
import type { PObjectId } from "../../pool";
|
|
2
|
+
import type { AxisId, AxisSpec, PColumnSpec } from "./spec/spec";
|
|
3
3
|
|
|
4
4
|
export type PTableColumnSpecAxis = {
|
|
5
|
-
type:
|
|
5
|
+
type: "axis";
|
|
6
6
|
id: AxisId;
|
|
7
7
|
spec: AxisSpec;
|
|
8
8
|
};
|
|
9
9
|
|
|
10
10
|
export type PTableColumnSpecColumn = {
|
|
11
|
-
type:
|
|
11
|
+
type: "column";
|
|
12
12
|
id: PObjectId;
|
|
13
13
|
spec: PColumnSpec;
|
|
14
14
|
};
|
|
@@ -17,12 +17,12 @@ export type PTableColumnSpecColumn = {
|
|
|
17
17
|
export type PTableColumnSpec = PTableColumnSpecAxis | PTableColumnSpecColumn;
|
|
18
18
|
|
|
19
19
|
export type PTableColumnIdAxis = {
|
|
20
|
-
type:
|
|
20
|
+
type: "axis";
|
|
21
21
|
id: AxisId;
|
|
22
22
|
};
|
|
23
23
|
|
|
24
24
|
export type PTableColumnIdColumn = {
|
|
25
|
-
type:
|
|
25
|
+
type: "column";
|
|
26
26
|
id: PObjectId;
|
|
27
27
|
};
|
|
28
28
|
|
|
@@ -31,14 +31,14 @@ export type PTableColumnId = PTableColumnIdAxis | PTableColumnIdColumn;
|
|
|
31
31
|
|
|
32
32
|
export function getPTableColumnId(spec: PTableColumnSpec): PTableColumnId {
|
|
33
33
|
switch (spec.type) {
|
|
34
|
-
case
|
|
34
|
+
case "axis":
|
|
35
35
|
return {
|
|
36
|
-
type:
|
|
36
|
+
type: "axis",
|
|
37
37
|
id: spec.id,
|
|
38
38
|
};
|
|
39
|
-
case
|
|
39
|
+
case "column":
|
|
40
40
|
return {
|
|
41
|
-
type:
|
|
41
|
+
type: "column",
|
|
42
42
|
id: spec.id,
|
|
43
43
|
};
|
|
44
44
|
}
|
|
@@ -2,14 +2,9 @@
|
|
|
2
2
|
export type AddParameters<
|
|
3
3
|
TParameters extends [...args: any],
|
|
4
4
|
TFunction extends (...args: any) => any,
|
|
5
|
-
> = (
|
|
6
|
-
...args: [...TParameters, ...Parameters<TFunction>]
|
|
7
|
-
) => ReturnType<TFunction>;
|
|
5
|
+
> = (...args: [...TParameters, ...Parameters<TFunction>]) => ReturnType<TFunction>;
|
|
8
6
|
|
|
9
|
-
export type AddParameterToAllMethods<
|
|
10
|
-
Interface,
|
|
11
|
-
TParameters extends [...args: any],
|
|
12
|
-
> = {
|
|
7
|
+
export type AddParameterToAllMethods<Interface, TParameters extends [...args: any]> = {
|
|
13
8
|
[Field in keyof Interface]: Interface[Field] extends (...args: any) => any
|
|
14
9
|
? AddParameters<TParameters, Interface[Field]>
|
|
15
10
|
: Interface[Field];
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import type { AxisId } from
|
|
2
|
-
import type { PTableRecordFilter } from
|
|
3
|
-
import type { PTableVector } from
|
|
4
|
-
import type { PObjectId } from
|
|
1
|
+
import type { AxisId } from "./spec/spec";
|
|
2
|
+
import type { PTableRecordFilter } from "./table_calculate";
|
|
3
|
+
import type { PTableVector } from "./data_types";
|
|
4
|
+
import type { PObjectId } from "../../pool";
|
|
5
5
|
|
|
6
6
|
/** Calculate set of unique values for a specific axis for the filtered set of records */
|
|
7
7
|
export interface UniqueValuesRequest {
|
package/src/drivers/urls.ts
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export type FolderURL = `plblob+folder://${string}`;
|
|
5
5
|
|
|
6
|
-
export type ArchiveFormat =
|
|
6
|
+
export type ArchiveFormat = "zip" | "tar" | "tgz";
|
|
7
7
|
|
|
8
8
|
export interface BlobToURLDriver {
|
|
9
9
|
getPathForCustomProtocol(url: FolderURL): string;
|
|
@@ -11,7 +11,7 @@ export interface BlobToURLDriver {
|
|
|
11
11
|
|
|
12
12
|
export function isFolderURL(url: string): url is FolderURL {
|
|
13
13
|
const parsed = new URL(url);
|
|
14
|
-
return parsed.protocol ==
|
|
14
|
+
return parsed.protocol == "plblob+folder:";
|
|
15
15
|
}
|
|
16
16
|
|
|
17
17
|
/**
|
|
@@ -26,5 +26,5 @@ export interface FrontendDriver {
|
|
|
26
26
|
|
|
27
27
|
export function isBlockUIURL(url: string): url is BlockUIURL {
|
|
28
28
|
const parsed = new URL(url);
|
|
29
|
-
return parsed.protocol ==
|
|
29
|
+
return parsed.protocol == "block-ui:";
|
|
30
30
|
}
|
package/src/errors.test.ts
CHANGED
|
@@ -1,34 +1,34 @@
|
|
|
1
|
-
import { describe, test, expect } from
|
|
1
|
+
import { describe, test, expect } from "vitest";
|
|
2
2
|
import {
|
|
3
3
|
deserializeResult,
|
|
4
4
|
unwrapResult,
|
|
5
5
|
AbortError,
|
|
6
6
|
hasAbortError,
|
|
7
7
|
wrapAndSerializeAsync,
|
|
8
|
-
} from
|
|
8
|
+
} from "./errors";
|
|
9
9
|
|
|
10
|
-
describe(
|
|
11
|
-
test(
|
|
12
|
-
const abortError = new AbortError(
|
|
13
|
-
const middleError = new Error(
|
|
14
|
-
const topError = new Error(
|
|
10
|
+
describe("Full error handling cycle example", () => {
|
|
11
|
+
test("should handle complete workflow: async callback -> serialize -> deserialize with nested AbortError", async () => {
|
|
12
|
+
const abortError = new AbortError("Operation was aborted");
|
|
13
|
+
const middleError = new Error("Middle layer failed", { cause: abortError });
|
|
14
|
+
const topError = new Error("Top level operation failed", { cause: middleError });
|
|
15
15
|
|
|
16
16
|
const serialized = await wrapAndSerializeAsync(async () => {
|
|
17
17
|
throw topError;
|
|
18
18
|
});
|
|
19
19
|
|
|
20
20
|
expect(serialized.error).toBeDefined();
|
|
21
|
-
expect(serialized.error?.message).toBe(
|
|
22
|
-
expect(serialized.error?.cause?.message).toBe(
|
|
23
|
-
expect(serialized.error?.cause?.cause?.message).toBe(
|
|
24
|
-
expect(serialized.error?.cause?.cause?.name).toBe(
|
|
21
|
+
expect(serialized.error?.message).toBe("Top level operation failed");
|
|
22
|
+
expect(serialized.error?.cause?.message).toBe("Middle layer failed");
|
|
23
|
+
expect(serialized.error?.cause?.cause?.message).toBe("Operation was aborted");
|
|
24
|
+
expect(serialized.error?.cause?.cause?.name).toBe("AbortError");
|
|
25
25
|
|
|
26
26
|
const deserialized = deserializeResult(serialized);
|
|
27
27
|
expect(deserialized.error).toBeInstanceOf(Error);
|
|
28
|
-
expect(deserialized.error?.message).toBe(
|
|
28
|
+
expect(deserialized.error?.message).toBe("Top level operation failed");
|
|
29
29
|
|
|
30
|
-
if (!deserialized.error) {
|
|
31
|
-
throw new Error(
|
|
30
|
+
if (!deserialized.error) {
|
|
31
|
+
throw new Error("Deserialized error is undefined");
|
|
32
32
|
}
|
|
33
33
|
|
|
34
34
|
const deserializedError = deserialized.error;
|
|
@@ -36,13 +36,13 @@ describe('Full error handling cycle example', () => {
|
|
|
36
36
|
const abortCause = middleCause.cause as Error;
|
|
37
37
|
|
|
38
38
|
expect(middleCause).toBeInstanceOf(Error);
|
|
39
|
-
expect(middleCause.message).toBe(
|
|
40
|
-
|
|
39
|
+
expect(middleCause.message).toBe("Middle layer failed");
|
|
40
|
+
|
|
41
41
|
expect(abortCause).toBeInstanceOf(Error);
|
|
42
|
-
expect(abortCause.message).toBe(
|
|
43
|
-
expect(abortCause.name).toBe(
|
|
42
|
+
expect(abortCause.message).toBe("Operation was aborted");
|
|
43
|
+
expect(abortCause.name).toBe("AbortError");
|
|
44
44
|
|
|
45
|
-
expect(() => unwrapResult(deserialized)).toThrow(
|
|
45
|
+
expect(() => unwrapResult(deserialized)).toThrow("Top level operation failed");
|
|
46
46
|
expect(hasAbortError(deserialized.error)).toBe(true);
|
|
47
47
|
});
|
|
48
|
-
});
|
|
48
|
+
});
|
package/src/errors.ts
CHANGED
|
@@ -2,18 +2,18 @@
|
|
|
2
2
|
* Just for convenience, usually it is an Error with name 'AbortError'
|
|
3
3
|
*/
|
|
4
4
|
export class AbortError extends Error {
|
|
5
|
-
name =
|
|
5
|
+
name = "AbortError";
|
|
6
6
|
}
|
|
7
7
|
|
|
8
8
|
/**
|
|
9
9
|
* Throw this to show a message without stack trace in UI
|
|
10
10
|
*/
|
|
11
11
|
export class UiError extends Error {
|
|
12
|
-
name =
|
|
12
|
+
name = "UiError";
|
|
13
13
|
}
|
|
14
14
|
|
|
15
|
-
export function isAbortError(error: unknown): error is Error & { name:
|
|
16
|
-
return error instanceof Error && error.name ===
|
|
15
|
+
export function isAbortError(error: unknown): error is Error & { name: "AbortError" } {
|
|
16
|
+
return error instanceof Error && error.name === "AbortError";
|
|
17
17
|
}
|
|
18
18
|
|
|
19
19
|
export function hasAbortError(error: unknown): boolean {
|
|
@@ -21,35 +21,35 @@ export function hasAbortError(error: unknown): boolean {
|
|
|
21
21
|
return false;
|
|
22
22
|
}
|
|
23
23
|
|
|
24
|
-
return error.name ===
|
|
24
|
+
return error.name === "AbortError" || hasAbortError(error.cause);
|
|
25
25
|
}
|
|
26
26
|
|
|
27
27
|
export function isAggregateError(error: unknown): error is AggregateError {
|
|
28
|
-
return error instanceof Error && error.name ===
|
|
28
|
+
return error instanceof Error && error.name === "AggregateError";
|
|
29
29
|
}
|
|
30
30
|
|
|
31
31
|
export class PFrameError extends Error {
|
|
32
|
-
name =
|
|
32
|
+
name = "PFrameError";
|
|
33
33
|
}
|
|
34
34
|
|
|
35
35
|
export function isPFrameError(error: unknown): error is PFrameError {
|
|
36
|
-
return error instanceof Error && error.name ===
|
|
36
|
+
return error instanceof Error && error.name === "PFrameError";
|
|
37
37
|
}
|
|
38
38
|
|
|
39
39
|
export class PFrameDriverError extends PFrameError {
|
|
40
|
-
name =
|
|
40
|
+
name = "PFrameError.Driver";
|
|
41
41
|
}
|
|
42
42
|
|
|
43
43
|
export function isPFrameDriverError(error: unknown): error is PFrameDriverError {
|
|
44
|
-
return error instanceof Error && error.name ===
|
|
44
|
+
return error instanceof Error && error.name === "PFrameError.Driver";
|
|
45
45
|
}
|
|
46
46
|
|
|
47
47
|
function stringifyValue(value: unknown): string {
|
|
48
|
-
if (typeof value ===
|
|
48
|
+
if (typeof value === "string") {
|
|
49
49
|
return `String value was thrown: ${value}`;
|
|
50
50
|
}
|
|
51
51
|
|
|
52
|
-
if (value && typeof value ===
|
|
52
|
+
if (value && typeof value === "object") {
|
|
53
53
|
try {
|
|
54
54
|
return `Plain object was thrown: ${JSON.stringify(value)}`;
|
|
55
55
|
} catch (jsonError) {
|
|
@@ -82,7 +82,7 @@ export function deserializeError(obj: SerializedError): Error {
|
|
|
82
82
|
const cause = obj.cause ? deserializeError(obj.cause) : undefined;
|
|
83
83
|
|
|
84
84
|
const error = new Error(obj.message, cause !== undefined ? { cause } : undefined);
|
|
85
|
-
error.name = obj.name ||
|
|
85
|
+
error.name = obj.name || "Error";
|
|
86
86
|
error.stack = obj.stack;
|
|
87
87
|
|
|
88
88
|
return error;
|
|
@@ -100,12 +100,14 @@ export function serializeError(e: unknown): SerializedError {
|
|
|
100
100
|
};
|
|
101
101
|
}
|
|
102
102
|
|
|
103
|
-
export type ResultOrError<S, F = Error> =
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
103
|
+
export type ResultOrError<S, F = Error> =
|
|
104
|
+
| {
|
|
105
|
+
value: S;
|
|
106
|
+
error?: undefined;
|
|
107
|
+
}
|
|
108
|
+
| {
|
|
109
|
+
error: F;
|
|
110
|
+
};
|
|
109
111
|
|
|
110
112
|
export function unwrapResult<T>(result: ResultOrError<T, Error | SerializedError>): T {
|
|
111
113
|
if (result.error) {
|
|
@@ -151,7 +153,9 @@ export function wrapAndSerialize<T>(callback: () => T): ResultOrError<T, Seriali
|
|
|
151
153
|
return serializeResult(result);
|
|
152
154
|
}
|
|
153
155
|
|
|
154
|
-
export async function wrapAndSerializeAsync<T>(
|
|
156
|
+
export async function wrapAndSerializeAsync<T>(
|
|
157
|
+
callback: () => Promise<T>,
|
|
158
|
+
): Promise<ResultOrError<T, SerializedError>> {
|
|
155
159
|
const result = await wrapAsyncCallback(callback);
|
|
156
160
|
return serializeResult(result);
|
|
157
161
|
}
|
package/src/flags/block_flags.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ArrayTypeUnion, Assert, Is, IsSubtypeOf } from
|
|
1
|
+
import type { ArrayTypeUnion, Assert, Is, IsSubtypeOf } from "./type_utils";
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* Block-specific feature flags. Define flags that are interpreted by the desktop app to select
|
|
@@ -8,7 +8,8 @@ import type { ArrayTypeUnion, Assert, Is, IsSubtypeOf } from './type_utils';
|
|
|
8
8
|
* - supports... - those flags tells the desktop app that the block supports certain APIs, but can without them as well
|
|
9
9
|
* - requires... - those flags tells the desktop app that the block requires certain APIs, and if desktop app doesn't support it, it can't be used in the block
|
|
10
10
|
*/
|
|
11
|
-
export type BlockCodeFeatureFlags = Record<`supports${string}`, boolean | number | undefined> &
|
|
11
|
+
export type BlockCodeFeatureFlags = Record<`supports${string}`, boolean | number | undefined> &
|
|
12
|
+
Record<`requires${string}`, boolean | number | undefined>;
|
|
12
13
|
|
|
13
14
|
/**
|
|
14
15
|
* Known block flags. Flags are set during model compilation, see `BlockModel.create` for more details and for initial values.
|
|
@@ -19,11 +20,9 @@ export type BlockCodeKnownFeatureFlags = {
|
|
|
19
20
|
readonly requiresUIAPIVersion?: number;
|
|
20
21
|
};
|
|
21
22
|
|
|
22
|
-
export const AllSupportsFeatureFlags
|
|
23
|
-
= ['supportsLazyState'] as const;
|
|
23
|
+
export const AllSupportsFeatureFlags = ["supportsLazyState"] as const;
|
|
24
24
|
|
|
25
|
-
export const AllRequiresFeatureFlags
|
|
26
|
-
= ['requiresUIAPIVersion', 'requiresModelAPIVersion'] as const;
|
|
25
|
+
export const AllRequiresFeatureFlags = ["requiresUIAPIVersion", "requiresModelAPIVersion"] as const;
|
|
27
26
|
|
|
28
27
|
//
|
|
29
28
|
// Assertions
|
|
@@ -31,7 +30,9 @@ export const AllRequiresFeatureFlags
|
|
|
31
30
|
|
|
32
31
|
// This assertion ensures that BlockConfigV3KnownFeatureFlags is a subtype of BlockConfigV3FeatureFlags.
|
|
33
32
|
// It will produce a compile-time error if there's a mismatch.
|
|
34
|
-
type _KnownFlagsAreValidFlags = Assert<
|
|
33
|
+
type _KnownFlagsAreValidFlags = Assert<
|
|
34
|
+
IsSubtypeOf<BlockCodeKnownFeatureFlags, BlockCodeFeatureFlags>
|
|
35
|
+
>;
|
|
35
36
|
|
|
36
37
|
// This check ensures that all keys in BlockConfigV3FeatureFlags are covered in the arrays above.
|
|
37
38
|
// It will produce a compile-time error if there's a mismatch.
|