@milaboratories/pl-model-common 1.24.3 → 1.24.5
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 +37 -37
- 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 +46 -46
- 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
package/src/plid.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { z } from
|
|
2
|
-
import { base32Encode } from
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { base32Encode } from "./base32_encode";
|
|
3
3
|
|
|
4
4
|
/** Number of raw bytes in the PlId. */
|
|
5
5
|
export const PlIdBytes = 15;
|
|
@@ -10,22 +10,22 @@ export const PlId = z
|
|
|
10
10
|
.string()
|
|
11
11
|
.length(PlIdLength)
|
|
12
12
|
.regex(/[ABCDEFGHIJKLMNOPQRSTUVWXYZ234567]/) // RFC4648
|
|
13
|
-
.brand(
|
|
13
|
+
.brand("PlId");
|
|
14
14
|
export type PlId = z.infer<typeof PlId>;
|
|
15
15
|
|
|
16
16
|
export function uniquePlId(): PlId {
|
|
17
17
|
const data = new Uint8Array(PlIdBytes);
|
|
18
18
|
crypto.getRandomValues(data);
|
|
19
|
-
return PlId.parse(base32Encode(data,
|
|
19
|
+
return PlId.parse(base32Encode(data, "RFC4648"));
|
|
20
20
|
}
|
|
21
21
|
|
|
22
22
|
export function plId(bytes: Uint8Array): PlId {
|
|
23
23
|
if (bytes.length !== PlIdBytes) throw new Error(`Wrong number of bytes: ${bytes.length}`);
|
|
24
|
-
return PlId.parse(base32Encode(bytes,
|
|
24
|
+
return PlId.parse(base32Encode(bytes, "RFC4648"));
|
|
25
25
|
}
|
|
26
26
|
|
|
27
27
|
export async function digestPlId(data: string): Promise<PlId> {
|
|
28
28
|
const encoder = new TextEncoder();
|
|
29
|
-
const bytes = await crypto.subtle.digest(
|
|
29
|
+
const bytes = await crypto.subtle.digest("SHA-256", encoder.encode(data));
|
|
30
30
|
return plId(new Uint8Array(bytes.slice(0, 15)));
|
|
31
31
|
}
|
package/src/pool/entry.ts
CHANGED
package/src/pool/index.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export * from
|
|
2
|
-
export * from
|
|
3
|
-
export * from
|
|
1
|
+
export * from "./entry";
|
|
2
|
+
export * from "./spec";
|
|
3
|
+
export * from "./query";
|
package/src/pool/query.ts
CHANGED
|
@@ -1,89 +1,85 @@
|
|
|
1
|
-
import type { AxisId } from
|
|
2
|
-
import type { PObjectSpec } from
|
|
3
|
-
import { isPColumnSpec } from
|
|
1
|
+
import type { AxisId } from "../drivers";
|
|
2
|
+
import type { PObjectSpec } from "./spec";
|
|
3
|
+
import { isPColumnSpec } from "./spec";
|
|
4
4
|
|
|
5
5
|
export type PSpecPredicate =
|
|
6
6
|
| {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
type: "and" | "or";
|
|
8
|
+
operands: PSpecPredicate[];
|
|
9
|
+
}
|
|
10
10
|
| {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
type: "not";
|
|
12
|
+
operand: PSpecPredicate;
|
|
13
|
+
}
|
|
14
14
|
| {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
15
|
+
type: "name";
|
|
16
|
+
name: string;
|
|
17
|
+
}
|
|
18
18
|
| {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
19
|
+
type: "name_pattern";
|
|
20
|
+
pattern: string;
|
|
21
|
+
}
|
|
22
22
|
| {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
23
|
+
type: "annotation";
|
|
24
|
+
annotation: string;
|
|
25
|
+
value: string;
|
|
26
|
+
}
|
|
27
27
|
| {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
28
|
+
type: "annotation_pattern";
|
|
29
|
+
annotation: string;
|
|
30
|
+
pattern: string;
|
|
31
|
+
}
|
|
32
32
|
| {
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
33
|
+
type: "has_axes";
|
|
34
|
+
axes: Partial<AxisId>[];
|
|
35
|
+
};
|
|
36
36
|
|
|
37
37
|
function assertNever(x: never): never {
|
|
38
|
-
throw new Error(
|
|
38
|
+
throw new Error("Unexpected object: " + x); // This is ok, because this is a possible runtime error
|
|
39
39
|
}
|
|
40
40
|
|
|
41
|
-
export function executePSpecPredicate(
|
|
42
|
-
predicate: PSpecPredicate,
|
|
43
|
-
spec: PObjectSpec,
|
|
44
|
-
): boolean {
|
|
41
|
+
export function executePSpecPredicate(predicate: PSpecPredicate, spec: PObjectSpec): boolean {
|
|
45
42
|
switch (predicate.type) {
|
|
46
|
-
case
|
|
43
|
+
case "and":
|
|
47
44
|
for (const operator of predicate.operands)
|
|
48
45
|
if (!executePSpecPredicate(operator, spec)) return false;
|
|
49
46
|
return true;
|
|
50
|
-
case
|
|
47
|
+
case "or":
|
|
51
48
|
for (const operator of predicate.operands)
|
|
52
49
|
if (executePSpecPredicate(operator, spec)) return true;
|
|
53
50
|
return false;
|
|
54
|
-
case
|
|
51
|
+
case "not":
|
|
55
52
|
return !executePSpecPredicate(predicate.operand, spec);
|
|
56
|
-
case
|
|
53
|
+
case "name":
|
|
57
54
|
return isPColumnSpec(spec) && spec.name === predicate.name;
|
|
58
|
-
case
|
|
55
|
+
case "name_pattern":
|
|
59
56
|
return isPColumnSpec(spec) && Boolean(spec.name.match(predicate.pattern));
|
|
60
|
-
case
|
|
57
|
+
case "annotation":
|
|
61
58
|
return (
|
|
62
|
-
isPColumnSpec(spec)
|
|
63
|
-
|
|
64
|
-
|
|
59
|
+
isPColumnSpec(spec) &&
|
|
60
|
+
spec.annotations !== undefined &&
|
|
61
|
+
spec.annotations[predicate.annotation] === predicate.value
|
|
65
62
|
);
|
|
66
|
-
case
|
|
63
|
+
case "annotation_pattern":
|
|
67
64
|
return (
|
|
68
|
-
isPColumnSpec(spec)
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
65
|
+
isPColumnSpec(spec) &&
|
|
66
|
+
spec.annotations !== undefined &&
|
|
67
|
+
spec.annotations[predicate.annotation] !== undefined &&
|
|
68
|
+
Boolean(spec.annotations[predicate.annotation].match(predicate.pattern))
|
|
72
69
|
);
|
|
73
|
-
case
|
|
70
|
+
case "has_axes":
|
|
74
71
|
return (
|
|
75
|
-
isPColumnSpec(spec)
|
|
76
|
-
|
|
72
|
+
isPColumnSpec(spec) &&
|
|
73
|
+
predicate.axes.every((matcher) =>
|
|
77
74
|
spec.axesSpec.some(
|
|
78
75
|
(axisSpec) =>
|
|
79
|
-
(matcher.type === undefined || matcher.type === axisSpec.type)
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
([domain, domainValue]) =>
|
|
86
|
-
axisSpec.domain![domain] === domainValue,
|
|
76
|
+
(matcher.type === undefined || matcher.type === axisSpec.type) &&
|
|
77
|
+
(matcher.name === undefined || matcher.name === axisSpec.name) &&
|
|
78
|
+
(matcher.domain === undefined ||
|
|
79
|
+
Object.keys(matcher.domain).length === 0 ||
|
|
80
|
+
(axisSpec.domain !== undefined &&
|
|
81
|
+
Object.entries(matcher.domain).every(
|
|
82
|
+
([domain, domainValue]) => axisSpec.domain![domain] === domainValue,
|
|
87
83
|
))),
|
|
88
84
|
),
|
|
89
85
|
)
|
package/src/pool/spec.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import type { Branded } from
|
|
2
|
-
import type { JoinEntry, PColumn, PColumnLazy, PColumnSpec } from
|
|
3
|
-
import { assertNever } from
|
|
4
|
-
import type { ResultPoolEntry } from
|
|
1
|
+
import type { Branded } from "../branding";
|
|
2
|
+
import type { JoinEntry, PColumn, PColumnLazy, PColumnSpec } from "../drivers";
|
|
3
|
+
import { assertNever } from "../util";
|
|
4
|
+
import type { ResultPoolEntry } from "./entry";
|
|
5
5
|
|
|
6
6
|
/** Any object exported into the result pool by the block always have spec attached to it */
|
|
7
7
|
export type PObjectSpec = {
|
|
@@ -19,7 +19,7 @@ export type PObjectSpec = {
|
|
|
19
19
|
};
|
|
20
20
|
|
|
21
21
|
/** Stable PObject id */
|
|
22
|
-
export type PObjectId = Branded<string,
|
|
22
|
+
export type PObjectId = Branded<string, "PColumnId">;
|
|
23
23
|
|
|
24
24
|
/**
|
|
25
25
|
* Full PObject representation.
|
|
@@ -38,7 +38,7 @@ export interface PObject<Data> {
|
|
|
38
38
|
}
|
|
39
39
|
|
|
40
40
|
export function isPColumnSpec(spec: PObjectSpec): spec is PColumnSpec {
|
|
41
|
-
return spec.kind ===
|
|
41
|
+
return spec.kind === "PColumn";
|
|
42
42
|
}
|
|
43
43
|
|
|
44
44
|
export function isPColumn<T>(obj: PObject<T>): obj is PColumn<T> {
|
|
@@ -62,16 +62,19 @@ export function ensurePColumn<T>(obj: PObject<T>): PColumn<T> {
|
|
|
62
62
|
return obj;
|
|
63
63
|
}
|
|
64
64
|
|
|
65
|
-
export function mapPObjectData<D1, D2>(
|
|
65
|
+
export function mapPObjectData<D1, D2>(
|
|
66
|
+
pObj: PColumn<D1> | PColumnLazy<D1>,
|
|
67
|
+
cb: (d: D1) => D2,
|
|
68
|
+
): PColumn<D2>;
|
|
66
69
|
export function mapPObjectData<D1, D2>(pObj: PColumn<D1>, cb: (d: D1) => D2): PColumn<D2>;
|
|
67
70
|
export function mapPObjectData<D1, D2>(
|
|
68
71
|
pObj: PColumn<D1> | undefined,
|
|
69
|
-
cb: (d: D1) => D2
|
|
72
|
+
cb: (d: D1) => D2,
|
|
70
73
|
): PColumn<D2> | undefined;
|
|
71
74
|
export function mapPObjectData<D1, D2>(pObj: PObject<D1>, cb: (d: D1) => D2): PObject<D2>;
|
|
72
75
|
export function mapPObjectData<D1, D2>(
|
|
73
76
|
pObj: PObject<D1> | undefined,
|
|
74
|
-
cb: (d: D1) => D2
|
|
77
|
+
cb: (d: D1) => D2,
|
|
75
78
|
): PObject<D2> | undefined;
|
|
76
79
|
export function mapPObjectData<D1, D2>(
|
|
77
80
|
pObj: PObject<D1> | undefined,
|
|
@@ -81,7 +84,7 @@ export function mapPObjectData<D1, D2>(
|
|
|
81
84
|
? undefined
|
|
82
85
|
: {
|
|
83
86
|
...pObj,
|
|
84
|
-
data: cb(typeof pObj.data ===
|
|
87
|
+
data: cb(typeof pObj.data === "function" ? pObj.data() : pObj.data),
|
|
85
88
|
};
|
|
86
89
|
}
|
|
87
90
|
|
|
@@ -89,22 +92,22 @@ export function extractAllColumns<D>(entry: JoinEntry<PColumn<D>>): PColumn<D>[]
|
|
|
89
92
|
const columns = new Map<PObjectId, PColumn<D>>();
|
|
90
93
|
const addAllColumns = (entry: JoinEntry<PColumn<D>>) => {
|
|
91
94
|
switch (entry.type) {
|
|
92
|
-
case
|
|
95
|
+
case "column":
|
|
93
96
|
columns.set(entry.column.id, entry.column);
|
|
94
97
|
return;
|
|
95
|
-
case
|
|
98
|
+
case "slicedColumn":
|
|
96
99
|
columns.set(entry.column.id, entry.column);
|
|
97
100
|
return;
|
|
98
|
-
case
|
|
101
|
+
case "artificialColumn":
|
|
99
102
|
columns.set(entry.column.id, entry.column);
|
|
100
103
|
return;
|
|
101
|
-
case
|
|
104
|
+
case "inlineColumn":
|
|
102
105
|
return;
|
|
103
|
-
case
|
|
104
|
-
case
|
|
106
|
+
case "full":
|
|
107
|
+
case "inner":
|
|
105
108
|
for (const e of entry.entries) addAllColumns(e);
|
|
106
109
|
return;
|
|
107
|
-
case
|
|
110
|
+
case "outer":
|
|
108
111
|
addAllColumns(entry.primary);
|
|
109
112
|
for (const e of entry.secondary) addAllColumns(e);
|
|
110
113
|
return;
|
package/src/ref.ts
CHANGED
|
@@ -1,22 +1,24 @@
|
|
|
1
|
-
import { z } from
|
|
1
|
+
import { z } from "zod";
|
|
2
2
|
|
|
3
3
|
export const PlRef = z
|
|
4
4
|
.object({
|
|
5
5
|
__isRef: z
|
|
6
6
|
.literal(true)
|
|
7
|
-
.describe(
|
|
8
|
-
blockId: z.string()
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
.
|
|
12
|
-
|
|
13
|
-
.describe(
|
|
14
|
-
|
|
7
|
+
.describe("Crucial marker for the block dependency tree reconstruction"),
|
|
8
|
+
blockId: z.string().describe("Upstream block id"),
|
|
9
|
+
name: z.string().describe("Name of the output provided to the upstream block's output context"),
|
|
10
|
+
requireEnrichments: z
|
|
11
|
+
.literal(true)
|
|
12
|
+
.optional()
|
|
13
|
+
.describe(
|
|
14
|
+
"True if current block that stores this reference in its args, may need enrichments " +
|
|
15
|
+
"for the references value originating from the blocks in between current and referenced block",
|
|
16
|
+
),
|
|
15
17
|
})
|
|
16
18
|
.describe(
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
19
|
+
"Universal reference type, allowing to set block connections. It is crucial that " +
|
|
20
|
+
"{@link __isRef} is present and equal to true, internal logic relies on this marker " +
|
|
21
|
+
"to build block dependency trees.",
|
|
20
22
|
)
|
|
21
23
|
.readonly();
|
|
22
24
|
export type PlRef = z.infer<typeof PlRef>;
|
|
@@ -31,12 +33,12 @@ export type Ref = PlRef;
|
|
|
31
33
|
*/
|
|
32
34
|
export function isPlRef(value: unknown): value is PlRef {
|
|
33
35
|
return (
|
|
34
|
-
typeof value ===
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
36
|
+
typeof value === "object" &&
|
|
37
|
+
value !== null &&
|
|
38
|
+
"__isRef" in value &&
|
|
39
|
+
(value as { __isRef: unknown }).__isRef === true &&
|
|
40
|
+
"blockId" in value &&
|
|
41
|
+
"name" in value
|
|
40
42
|
);
|
|
41
43
|
}
|
|
42
44
|
|
|
@@ -97,5 +99,9 @@ export function withEnrichments(ref: PlRef, requireEnrichments: boolean = true):
|
|
|
97
99
|
|
|
98
100
|
/** Compare two PlRefs and returns true if they are qual */
|
|
99
101
|
export function plRefsEqual(ref1: PlRef, ref2: PlRef, ignoreEnrichments: boolean = false) {
|
|
100
|
-
return
|
|
102
|
+
return (
|
|
103
|
+
ref1.blockId === ref2.blockId &&
|
|
104
|
+
ref1.name === ref2.name &&
|
|
105
|
+
(ignoreEnrichments || ref1.requireEnrichments === ref2.requireEnrichments)
|
|
106
|
+
);
|
|
101
107
|
}
|
package/src/utag.ts
CHANGED
package/src/util.ts
CHANGED
package/src/value_or_error.ts
CHANGED