@milaboratories/pl-model-common 1.25.0 → 1.25.2
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 +29 -0
- package/dist/author_marker.d.ts +9 -6
- package/dist/base32_encode.cjs +40 -46
- package/dist/base32_encode.cjs.map +1 -1
- package/dist/base32_encode.js +40 -45
- package/dist/base32_encode.js.map +1 -1
- package/dist/base64.cjs +5 -4
- package/dist/base64.cjs.map +1 -1
- package/dist/base64.d.ts +10 -6
- package/dist/base64.js +5 -3
- package/dist/base64.js.map +1 -1
- package/dist/block_state.d.ts +21 -23
- package/dist/bmodel/block_config.cjs +9 -10
- package/dist/bmodel/block_config.cjs.map +1 -1
- package/dist/bmodel/block_config.d.ts +53 -72
- package/dist/bmodel/block_config.js +9 -9
- package/dist/bmodel/block_config.js.map +1 -1
- package/dist/bmodel/code.cjs +7 -6
- package/dist/bmodel/code.cjs.map +1 -1
- package/dist/bmodel/code.d.ts +17 -13
- package/dist/bmodel/code.js +6 -4
- package/dist/bmodel/code.js.map +1 -1
- package/dist/bmodel/container.d.ts +46 -44
- package/dist/bmodel/index.cjs +3 -0
- package/dist/bmodel/index.d.ts +5 -6
- package/dist/bmodel/index.js +3 -0
- package/dist/bmodel/normalization.cjs +90 -106
- package/dist/bmodel/normalization.cjs.map +1 -1
- package/dist/bmodel/normalization.d.ts +7 -3
- package/dist/bmodel/normalization.js +90 -105
- package/dist/bmodel/normalization.js.map +1 -1
- package/dist/bmodel/types.d.ts +4 -1
- package/dist/branding.d.ts +5 -5
- package/dist/common_types.d.ts +19 -15
- package/dist/driver_kit.d.ts +25 -17
- package/dist/drivers/ChunkedStreamReader.cjs +168 -203
- package/dist/drivers/ChunkedStreamReader.cjs.map +1 -1
- package/dist/drivers/ChunkedStreamReader.d.ts +104 -100
- package/dist/drivers/ChunkedStreamReader.js +168 -202
- package/dist/drivers/ChunkedStreamReader.js.map +1 -1
- package/dist/drivers/blob.cjs +15 -17
- package/dist/drivers/blob.cjs.map +1 -1
- package/dist/drivers/blob.d.ts +35 -35
- package/dist/drivers/blob.js +14 -15
- package/dist/drivers/blob.js.map +1 -1
- package/dist/drivers/index.cjs +18 -0
- package/dist/drivers/index.d.ts +29 -9
- package/dist/drivers/index.js +18 -0
- package/dist/drivers/interfaces.d.ts +17 -14
- package/dist/drivers/log.cjs +4 -3
- package/dist/drivers/log.cjs.map +1 -1
- package/dist/drivers/log.d.ts +52 -49
- package/dist/drivers/log.js +4 -2
- package/dist/drivers/log.js.map +1 -1
- package/dist/drivers/ls.cjs +16 -19
- package/dist/drivers/ls.cjs.map +1 -1
- package/dist/drivers/ls.d.ts +73 -76
- package/dist/drivers/ls.js +16 -17
- package/dist/drivers/ls.js.map +1 -1
- package/dist/drivers/pframe/column_filter.d.ts +19 -15
- package/dist/drivers/pframe/data_info.cjs +201 -252
- package/dist/drivers/pframe/data_info.cjs.map +1 -1
- package/dist/drivers/pframe/data_info.d.ts +84 -109
- package/dist/drivers/pframe/data_info.js +201 -250
- package/dist/drivers/pframe/data_info.js.map +1 -1
- package/dist/drivers/pframe/data_types.cjs +38 -63
- package/dist/drivers/pframe/data_types.cjs.map +1 -1
- package/dist/drivers/pframe/data_types.d.ts +91 -93
- package/dist/drivers/pframe/data_types.js +38 -61
- package/dist/drivers/pframe/data_types.js.map +1 -1
- package/dist/drivers/pframe/driver.cjs +7 -0
- package/dist/drivers/pframe/driver.cjs.map +1 -0
- package/dist/drivers/pframe/driver.d.ts +50 -45
- package/dist/drivers/pframe/driver.js +6 -0
- package/dist/drivers/pframe/driver.js.map +1 -0
- package/dist/drivers/pframe/filter_spec.d.ts +127 -123
- package/dist/drivers/pframe/find_columns.d.ts +21 -17
- package/dist/drivers/pframe/index.cjs +15 -0
- package/dist/drivers/pframe/index.d.ts +23 -16
- package/dist/drivers/pframe/index.js +15 -0
- package/dist/drivers/pframe/linker_columns.cjs +184 -238
- package/dist/drivers/pframe/linker_columns.cjs.map +1 -1
- package/dist/drivers/pframe/linker_columns.d.ts +45 -38
- package/dist/drivers/pframe/linker_columns.js +184 -236
- package/dist/drivers/pframe/linker_columns.js.map +1 -1
- package/dist/drivers/pframe/pframe.d.ts +26 -21
- package/dist/drivers/pframe/query/index.cjs +1 -0
- package/dist/drivers/pframe/query/index.d.ts +3 -4
- package/dist/drivers/pframe/query/index.js +1 -0
- package/dist/drivers/pframe/query/query_common.d.ts +205 -247
- package/dist/drivers/pframe/query/query_data.d.ts +25 -23
- package/dist/drivers/pframe/query/query_spec.d.ts +30 -29
- package/dist/drivers/pframe/query/utils.cjs +164 -183
- package/dist/drivers/pframe/query/utils.cjs.map +1 -1
- package/dist/drivers/pframe/query/utils.d.ts +13 -12
- package/dist/drivers/pframe/query/utils.js +164 -181
- package/dist/drivers/pframe/query/utils.js.map +1 -1
- package/dist/drivers/pframe/spec/anchored.cjs +178 -216
- package/dist/drivers/pframe/spec/anchored.cjs.map +1 -1
- package/dist/drivers/pframe/spec/anchored.d.ts +53 -49
- package/dist/drivers/pframe/spec/anchored.js +176 -214
- package/dist/drivers/pframe/spec/anchored.js.map +1 -1
- package/dist/drivers/pframe/spec/filtered_column.cjs +8 -7
- package/dist/drivers/pframe/spec/filtered_column.cjs.map +1 -1
- package/dist/drivers/pframe/spec/filtered_column.d.ts +20 -17
- package/dist/drivers/pframe/spec/filtered_column.js +8 -6
- package/dist/drivers/pframe/spec/filtered_column.js.map +1 -1
- package/dist/drivers/pframe/spec/ids.cjs +16 -14
- package/dist/drivers/pframe/spec/ids.cjs.map +1 -1
- package/dist/drivers/pframe/spec/ids.d.ts +13 -8
- package/dist/drivers/pframe/spec/ids.js +14 -12
- package/dist/drivers/pframe/spec/ids.js.map +1 -1
- package/dist/drivers/pframe/spec/index.cjs +6 -0
- package/dist/drivers/pframe/spec/index.d.ts +6 -7
- package/dist/drivers/pframe/spec/index.js +6 -0
- package/dist/drivers/pframe/spec/native_id.cjs +16 -16
- package/dist/drivers/pframe/spec/native_id.cjs.map +1 -1
- package/dist/drivers/pframe/spec/native_id.d.ts +9 -4
- package/dist/drivers/pframe/spec/native_id.js +13 -13
- package/dist/drivers/pframe/spec/native_id.js.map +1 -1
- package/dist/drivers/pframe/spec/selectors.cjs +72 -112
- package/dist/drivers/pframe/spec/selectors.cjs.map +1 -1
- package/dist/drivers/pframe/spec/selectors.d.ts +99 -94
- package/dist/drivers/pframe/spec/selectors.js +72 -110
- package/dist/drivers/pframe/spec/selectors.js.map +1 -1
- package/dist/drivers/pframe/spec/spec.cjs +282 -324
- package/dist/drivers/pframe/spec/spec.cjs.map +1 -1
- package/dist/drivers/pframe/spec/spec.d.ts +263 -272
- package/dist/drivers/pframe/spec/spec.js +281 -322
- package/dist/drivers/pframe/spec/spec.js.map +1 -1
- package/dist/drivers/pframe/table.d.ts +28 -24
- package/dist/drivers/pframe/table_calculate.cjs +117 -147
- package/dist/drivers/pframe/table_calculate.cjs.map +1 -1
- package/dist/drivers/pframe/table_calculate.d.ts +219 -220
- package/dist/drivers/pframe/table_calculate.js +117 -145
- package/dist/drivers/pframe/table_calculate.js.map +1 -1
- package/dist/drivers/pframe/table_common.cjs +13 -14
- package/dist/drivers/pframe/table_common.cjs.map +1 -1
- package/dist/drivers/pframe/table_common.d.ts +24 -19
- package/dist/drivers/pframe/table_common.js +13 -13
- package/dist/drivers/pframe/table_common.js.map +1 -1
- package/dist/drivers/pframe/unique_values.d.ts +23 -18
- package/dist/drivers/upload.d.ts +21 -18
- package/dist/drivers/urls.cjs +5 -6
- package/dist/drivers/urls.cjs.map +1 -1
- package/dist/drivers/urls.d.ts +12 -9
- package/dist/drivers/urls.js +5 -5
- package/dist/drivers/urls.js.map +1 -1
- package/dist/errors.cjs +65 -86
- package/dist/errors.cjs.map +1 -1
- package/dist/errors.d.ts +36 -33
- package/dist/errors.js +65 -85
- package/dist/errors.js.map +1 -1
- package/dist/flags/block_flags.cjs +6 -5
- package/dist/flags/block_flags.cjs.map +1 -1
- package/dist/flags/block_flags.d.ts +11 -8
- package/dist/flags/block_flags.js +6 -4
- package/dist/flags/block_flags.js.map +1 -1
- package/dist/flags/flag_utils.cjs +69 -87
- package/dist/flags/flag_utils.cjs.map +1 -1
- package/dist/flags/flag_utils.d.ts +40 -36
- package/dist/flags/flag_utils.js +69 -86
- package/dist/flags/flag_utils.js.map +1 -1
- package/dist/flags/type_utils.d.ts +12 -11
- package/dist/httpAuth.cjs +16 -20
- package/dist/httpAuth.cjs.map +1 -1
- package/dist/httpAuth.d.ts +10 -7
- package/dist/httpAuth.js +16 -19
- package/dist/httpAuth.js.map +1 -1
- package/dist/index.cjs +176 -178
- package/dist/index.d.ts +58 -20
- package/dist/index.js +37 -34
- package/dist/json.cjs +10 -8
- package/dist/json.cjs.map +1 -1
- package/dist/json.d.ts +18 -18
- package/dist/json.js +8 -6
- package/dist/json.js.map +1 -1
- package/dist/navigation.cjs +3 -2
- package/dist/navigation.cjs.map +1 -1
- package/dist/navigation.d.ts +18 -21
- package/dist/navigation.js +3 -1
- package/dist/navigation.js.map +1 -1
- package/dist/plid.cjs +16 -20
- package/dist/plid.cjs.map +1 -1
- package/dist/plid.d.ts +11 -7
- package/dist/plid.js +15 -18
- package/dist/plid.js.map +1 -1
- package/dist/pool/entry.d.ts +11 -11
- package/dist/pool/index.d.ts +3 -4
- package/dist/pool/query.cjs +21 -43
- package/dist/pool/query.cjs.map +1 -1
- package/dist/pool/query.d.ts +25 -20
- package/dist/pool/query.js +20 -40
- package/dist/pool/query.js.map +1 -1
- package/dist/pool/spec.cjs +40 -47
- package/dist/pool/spec.cjs.map +1 -1
- package/dist/pool/spec.d.ts +33 -31
- package/dist/pool/spec.js +40 -45
- package/dist/pool/spec.js.map +1 -1
- package/dist/ref.cjs +51 -71
- package/dist/ref.cjs.map +1 -1
- package/dist/ref.d.ts +36 -33
- package/dist/ref.js +50 -69
- package/dist/ref.js.map +1 -1
- package/dist/utag.d.ts +18 -14
- package/dist/util.cjs +8 -7
- package/dist/util.cjs.map +1 -1
- package/dist/util.d.ts +5 -2
- package/dist/util.js +8 -6
- package/dist/util.js.map +1 -1
- package/dist/value_or_error.cjs +7 -3
- package/dist/value_or_error.cjs.map +1 -1
- package/dist/value_or_error.d.ts +9 -6
- package/dist/value_or_error.js +7 -2
- package/dist/value_or_error.js.map +1 -1
- package/package.json +8 -8
- package/dist/author_marker.d.ts.map +0 -1
- package/dist/base32_encode.d.ts +0 -8
- package/dist/base32_encode.d.ts.map +0 -1
- package/dist/base64.d.ts.map +0 -1
- package/dist/block_state.d.ts.map +0 -1
- package/dist/bmodel/block_config.d.ts.map +0 -1
- package/dist/bmodel/code.d.ts.map +0 -1
- package/dist/bmodel/container.d.ts.map +0 -1
- package/dist/bmodel/index.d.ts.map +0 -1
- package/dist/bmodel/normalization.d.ts.map +0 -1
- package/dist/bmodel/types.d.ts.map +0 -1
- package/dist/branding.d.ts.map +0 -1
- package/dist/common_types.d.ts.map +0 -1
- package/dist/driver_kit.d.ts.map +0 -1
- package/dist/drivers/ChunkedStreamReader.d.ts.map +0 -1
- package/dist/drivers/blob.d.ts.map +0 -1
- package/dist/drivers/index.d.ts.map +0 -1
- package/dist/drivers/interfaces.d.ts.map +0 -1
- package/dist/drivers/log.d.ts.map +0 -1
- package/dist/drivers/ls.d.ts.map +0 -1
- package/dist/drivers/pframe/column_filter.d.ts.map +0 -1
- package/dist/drivers/pframe/data_info.d.ts.map +0 -1
- package/dist/drivers/pframe/data_types.d.ts.map +0 -1
- package/dist/drivers/pframe/driver.d.ts.map +0 -1
- package/dist/drivers/pframe/filter_spec.d.ts.map +0 -1
- package/dist/drivers/pframe/find_columns.d.ts.map +0 -1
- package/dist/drivers/pframe/index.d.ts.map +0 -1
- package/dist/drivers/pframe/linker_columns.d.ts.map +0 -1
- package/dist/drivers/pframe/pframe.d.ts.map +0 -1
- package/dist/drivers/pframe/query/index.d.ts.map +0 -1
- package/dist/drivers/pframe/query/query_common.d.ts.map +0 -1
- package/dist/drivers/pframe/query/query_data.d.ts.map +0 -1
- package/dist/drivers/pframe/query/query_spec.d.ts.map +0 -1
- package/dist/drivers/pframe/query/utils.d.ts.map +0 -1
- package/dist/drivers/pframe/spec/anchored.d.ts.map +0 -1
- package/dist/drivers/pframe/spec/filtered_column.d.ts.map +0 -1
- package/dist/drivers/pframe/spec/ids.d.ts.map +0 -1
- package/dist/drivers/pframe/spec/index.d.ts.map +0 -1
- package/dist/drivers/pframe/spec/native_id.d.ts.map +0 -1
- package/dist/drivers/pframe/spec/selectors.d.ts.map +0 -1
- package/dist/drivers/pframe/spec/spec.d.ts.map +0 -1
- package/dist/drivers/pframe/table.d.ts.map +0 -1
- package/dist/drivers/pframe/table_calculate.d.ts.map +0 -1
- package/dist/drivers/pframe/table_common.d.ts.map +0 -1
- package/dist/drivers/pframe/type_util.d.ts +0 -5
- package/dist/drivers/pframe/type_util.d.ts.map +0 -1
- package/dist/drivers/pframe/unique_values.d.ts.map +0 -1
- package/dist/drivers/upload.d.ts.map +0 -1
- package/dist/drivers/urls.d.ts.map +0 -1
- package/dist/errors.d.ts.map +0 -1
- package/dist/flags/block_flags.d.ts.map +0 -1
- package/dist/flags/flag_utils.d.ts.map +0 -1
- package/dist/flags/index.d.ts +0 -4
- package/dist/flags/index.d.ts.map +0 -1
- package/dist/flags/type_utils.d.ts.map +0 -1
- package/dist/httpAuth.d.ts.map +0 -1
- package/dist/index.cjs.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/json.d.ts.map +0 -1
- package/dist/navigation.d.ts.map +0 -1
- package/dist/plid.d.ts.map +0 -1
- package/dist/pool/entry.d.ts.map +0 -1
- package/dist/pool/index.d.ts.map +0 -1
- package/dist/pool/query.d.ts.map +0 -1
- package/dist/pool/spec.d.ts.map +0 -1
- package/dist/ref.d.ts.map +0 -1
- package/dist/utag.d.ts.map +0 -1
- package/dist/util.d.ts.map +0 -1
- package/dist/value_or_error.d.ts.map +0 -1
|
@@ -1,89 +1,64 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
var spec = require('./spec/spec.cjs');
|
|
1
|
+
const require_spec = require('./spec/spec.cjs');
|
|
4
2
|
|
|
3
|
+
//#region src/drivers/pframe/data_types.ts
|
|
5
4
|
function isBitSet(bitVector, offset) {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
const chunkIndex = Math.floor(offset / 8);
|
|
6
|
+
const mask = 1 << 7 - offset % 8;
|
|
7
|
+
return (bitVector[chunkIndex] & mask) > 0;
|
|
9
8
|
}
|
|
10
9
|
function isValueAbsent(vector, row) {
|
|
11
|
-
|
|
10
|
+
return isBitSet(vector.absent, row);
|
|
12
11
|
}
|
|
13
12
|
function isValueNA(vector, row) {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
case spec.ValueType.Double:
|
|
27
|
-
return Number.isNaN(value);
|
|
28
|
-
case spec.ValueType.String:
|
|
29
|
-
return value === null;
|
|
30
|
-
case spec.ValueType.Bytes:
|
|
31
|
-
return value === null;
|
|
32
|
-
default:
|
|
33
|
-
throw Error(`unsupported data type: ${valueType}`);
|
|
34
|
-
}
|
|
13
|
+
if (vector.isNA) return isBitSet(vector.isNA, row);
|
|
14
|
+
const valueType = vector.type;
|
|
15
|
+
const value = vector.data[row];
|
|
16
|
+
switch (valueType) {
|
|
17
|
+
case require_spec.ValueType.Int: return value === -2147483648;
|
|
18
|
+
case require_spec.ValueType.Long: return value === -9007199254740991n;
|
|
19
|
+
case require_spec.ValueType.Float: return Number.isNaN(value);
|
|
20
|
+
case require_spec.ValueType.Double: return Number.isNaN(value);
|
|
21
|
+
case require_spec.ValueType.String: return value === null;
|
|
22
|
+
case require_spec.ValueType.Bytes: return value === null;
|
|
23
|
+
default: throw Error(`unsupported data type: ${valueType}`);
|
|
24
|
+
}
|
|
35
25
|
}
|
|
36
26
|
const PTableAbsent = { type: "absent" };
|
|
37
27
|
/** Type guard for absent value */
|
|
38
28
|
function isPTableAbsent(value) {
|
|
39
|
-
|
|
29
|
+
return typeof value === "object" && value !== null && "type" in value && value.type === "absent";
|
|
40
30
|
}
|
|
41
31
|
const PTableNA = null;
|
|
42
32
|
/** Type guard for NA value */
|
|
43
33
|
function isPTableNA(value) {
|
|
44
|
-
|
|
34
|
+
return value === PTableNA;
|
|
45
35
|
}
|
|
46
36
|
function isPTableValueAxis(value, isNA) {
|
|
47
|
-
|
|
37
|
+
return !(isNA ? isNA(value) : isPTableNA(value));
|
|
48
38
|
}
|
|
49
39
|
function pTableValueImpl(column, row, options) {
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
if (isValueNA(column, row)) {
|
|
64
|
-
return options?.na !== undefined ? options.na : PTableNA;
|
|
65
|
-
}
|
|
66
|
-
const value = column.data[row];
|
|
67
|
-
switch (valueType) {
|
|
68
|
-
case spec.ValueType.Int:
|
|
69
|
-
return value;
|
|
70
|
-
case spec.ValueType.Long:
|
|
71
|
-
return Number(value);
|
|
72
|
-
case spec.ValueType.Float:
|
|
73
|
-
return value;
|
|
74
|
-
case spec.ValueType.Double:
|
|
75
|
-
return value;
|
|
76
|
-
case spec.ValueType.String:
|
|
77
|
-
return value;
|
|
78
|
-
}
|
|
40
|
+
const valueType = column.type;
|
|
41
|
+
if (valueType === require_spec.ValueType.Bytes) throw Error("Bytes not yet supported");
|
|
42
|
+
if (options && "dataType" in options && options.dataType !== void 0 && options.dataType !== valueType) throw Error(`expected column of type ${options.dataType}, got ${valueType}`);
|
|
43
|
+
if (isValueAbsent(column, row)) return options?.absent !== void 0 ? options.absent : PTableAbsent;
|
|
44
|
+
if (isValueNA(column, row)) return options?.na !== void 0 ? options.na : PTableNA;
|
|
45
|
+
const value = column.data[row];
|
|
46
|
+
switch (valueType) {
|
|
47
|
+
case require_spec.ValueType.Int: return value;
|
|
48
|
+
case require_spec.ValueType.Long: return Number(value);
|
|
49
|
+
case require_spec.ValueType.Float: return value;
|
|
50
|
+
case require_spec.ValueType.Double: return value;
|
|
51
|
+
case require_spec.ValueType.String: return value;
|
|
52
|
+
}
|
|
79
53
|
}
|
|
80
54
|
function pTableValue(column, row, options) {
|
|
81
|
-
|
|
55
|
+
return pTableValueImpl(column, row, options);
|
|
82
56
|
}
|
|
83
57
|
function pTableValueBranded(column, row, options) {
|
|
84
|
-
|
|
58
|
+
return pTableValueImpl(column, row, options);
|
|
85
59
|
}
|
|
86
60
|
|
|
61
|
+
//#endregion
|
|
87
62
|
exports.PTableAbsent = PTableAbsent;
|
|
88
63
|
exports.PTableNA = PTableNA;
|
|
89
64
|
exports.isPTableAbsent = isPTableAbsent;
|
|
@@ -91,4 +66,4 @@ exports.isPTableNA = isPTableNA;
|
|
|
91
66
|
exports.isPTableValueAxis = isPTableValueAxis;
|
|
92
67
|
exports.pTableValue = pTableValue;
|
|
93
68
|
exports.pTableValueBranded = pTableValueBranded;
|
|
94
|
-
//# sourceMappingURL=data_types.cjs.map
|
|
69
|
+
//# sourceMappingURL=data_types.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data_types.cjs","sources":["../../../src/drivers/pframe/data_types.ts"],"sourcesContent":["import type { Branded } from \"../../branding\";\nimport { ValueType } from \"./spec/spec\";\n\nexport type PVectorDataInt = Int32Array;\nexport type PVectorDataLong = BigInt64Array;\nexport type PVectorDataFloat = Float32Array;\nexport type PVectorDataDouble = Float64Array;\nexport type PVectorDataString = (null | string)[];\nexport type PVectorDataBytes = (null | Uint8Array)[];\nexport type PVectorDataTyped<DataType extends ValueType> = DataType extends typeof ValueType.Int\n ? PVectorDataInt\n : DataType extends typeof ValueType.Long\n ? PVectorDataLong\n : DataType extends typeof ValueType.Float\n ? PVectorDataFloat\n : DataType extends typeof ValueType.Double\n ? PVectorDataDouble\n : DataType extends typeof ValueType.String\n ? PVectorDataString\n : DataType extends typeof ValueType.Bytes\n ? PVectorDataBytes\n : never;\nexport type PVectorData = PVectorDataTyped<ValueType>;\n\nexport type PTableVectorTyped<DataType extends ValueType> = {\n /** Stored data type */\n readonly type: DataType;\n\n /** Values for present positions, absent positions have NA values */\n readonly data: PVectorDataTyped<DataType>;\n\n /**\n * Encoded bit array marking some elements of this vector as NA,\n * call {@link bitSet} to read the data.\n * In old desktop versions NA values are encoded as magic values in data array.\n * */\n readonly isNA?: Uint8Array;\n\n /**\n * Encoded bit array marking some elements of this vector as absent,\n * call {@link bitSet} to read the data.\n * */\n readonly absent: Uint8Array;\n};\n/** Table column data in comparison to the data stored in a separate PColumn\n * may have some of the values \"absent\", i.e. as a result of missing record in\n * outer join operation. This information is encoded in {@link absent} field. */\nexport type PTableVector = PTableVectorTyped<ValueType>;\n\nfunction isBitSet(bitVector: Uint8Array, offset: number): boolean {\n const chunkIndex = Math.floor(offset / 8);\n const mask = 1 << (7 - (offset % 8));\n return (bitVector[chunkIndex] & mask) > 0;\n}\n\nfunction isValueAbsent(vector: PTableVector, row: number): boolean {\n return isBitSet(vector.absent, row);\n}\n\nfunction isValueNA(vector: PTableVector, row: number): boolean {\n if (vector.isNA) return isBitSet(vector.isNA, row);\n\n // Check for legacy magic values to support old desktop versions\n const valueType = vector.type;\n const value = vector.data[row];\n switch (valueType) {\n case ValueType.Int:\n return (value as PVectorDataInt[number]) === -2147483648;\n case ValueType.Long:\n return (value as PVectorDataLong[number]) === -9007199254740991n;\n case ValueType.Float:\n return Number.isNaN(value as PVectorDataFloat[number]);\n case ValueType.Double:\n return Number.isNaN(value as PVectorDataDouble[number]);\n case ValueType.String:\n return (value as PVectorDataString[number]) === null;\n case ValueType.Bytes:\n return (value as PVectorDataBytes[number]) === null;\n default:\n throw Error(`unsupported data type: ${valueType satisfies never}`);\n }\n}\n\nexport const PTableAbsent = { type: \"absent\" } as const;\nexport type PTableAbsent = typeof PTableAbsent;\n\n/** Type guard for absent value */\nexport function isPTableAbsent(value: unknown): value is PTableAbsent {\n return typeof value === \"object\" && value !== null && \"type\" in value && value.type === \"absent\";\n}\n\nexport const PTableNA = null;\nexport type PTableNA = typeof PTableNA;\n\n/** Type guard for NA value */\nexport function isPTableNA(value: unknown): value is PTableNA {\n return value === PTableNA;\n}\n\nexport type ValueTypeSupported = Exclude<ValueType, typeof ValueType.Bytes>;\n\nexport type PTableValueInt = number;\nexport type PTableValueLong = number;\nexport type PTableValueFloat = number;\nexport type PTableValueDouble = number;\nexport type PTableValueString = string;\nexport type PTableValueData<DataType extends ValueTypeSupported> =\n DataType extends typeof ValueType.Int\n ? PTableValueInt\n : DataType extends typeof ValueType.Long\n ? PTableValueLong\n : DataType extends typeof ValueType.Float\n ? PTableValueFloat\n : DataType extends typeof ValueType.Double\n ? PTableValueDouble\n : DataType extends typeof ValueType.String\n ? PTableValueString\n : never;\nexport type PTableValueDataBranded<DataType extends ValueTypeSupported> = Branded<\n PTableValueData<DataType>,\n DataType\n>;\nexport type PTableValue<\n Absent = PTableAbsent,\n NA = PTableNA,\n DataType extends ValueTypeSupported = ValueTypeSupported,\n> = Absent | NA | PTableValueData<DataType>;\nexport type PTableValueBranded<\n Absent = PTableAbsent,\n NA = PTableNA,\n DataType extends ValueTypeSupported = ValueTypeSupported,\n> = Absent | NA | PTableValueDataBranded<DataType>;\n\nexport type PTableValueAxis<\n Absent = PTableAbsent,\n DataType extends ValueTypeSupported = ValueTypeSupported,\n> = PTableValue<Absent, never, DataType>;\n\nexport function isPTableValueAxis<Absent, NA, DataType extends ValueTypeSupported>(\n value: PTableValue<Absent, NA, DataType>,\n isNA: (value: PTableValue<Absent, NA, DataType>) => value is NA,\n): value is PTableValueAxis<Absent, DataType>;\nexport function isPTableValueAxis<Absent, DataType extends ValueTypeSupported>(\n value: PTableValue<Absent, PTableNA, DataType>,\n): value is PTableValueAxis<Absent, DataType>;\nexport function isPTableValueAxis<\n Absent = PTableAbsent,\n NA = PTableNA,\n DataType extends ValueTypeSupported = ValueTypeSupported,\n>(\n value: PTableValue<Absent, NA, DataType>,\n isNA?: (value: PTableValue<Absent, NA, DataType>) => value is NA,\n): value is PTableValueAxis<Absent, DataType> {\n return !(isNA ? isNA(value) : isPTableNA(value));\n}\n\nfunction pTableValueImpl<\n FillAbsent = PTableAbsent,\n FillNA = PTableNA,\n DataType extends ValueType = ValueTypeSupported,\n>(\n column: PTableVectorTyped<ValueType>,\n row: number,\n options?: {\n absent?: FillAbsent;\n na?: FillNA;\n dataType?: DataType;\n },\n) {\n const valueType = column.type;\n if (valueType === ValueType.Bytes) {\n throw Error(\"Bytes not yet supported\");\n }\n\n if (\n options &&\n \"dataType\" in options &&\n options.dataType !== undefined &&\n options.dataType !== valueType\n ) {\n throw Error(`expected column of type ${options.dataType}, got ${valueType}`);\n }\n\n if (isValueAbsent(column, row)) {\n return options?.absent !== undefined ? options.absent : PTableAbsent;\n }\n\n if (isValueNA(column, row)) {\n return options?.na !== undefined ? options.na : PTableNA;\n }\n\n const value = column.data[row]!;\n switch (valueType) {\n case ValueType.Int:\n return value as PVectorDataInt[number];\n case ValueType.Long:\n return Number(value as PVectorDataLong[number]);\n case ValueType.Float:\n return value as PVectorDataFloat[number];\n case ValueType.Double:\n return value as PVectorDataDouble[number];\n case ValueType.String:\n return (value as PVectorDataString[number])!;\n }\n}\n\n/** Read PTableValue from PTable column at specified row */\nexport function pTableValue<DataType extends ValueType>(\n column: PTableVectorTyped<DataType>,\n row: number,\n): DataType extends ValueTypeSupported ? PTableValue<PTableAbsent, PTableNA, DataType> : never;\nexport function pTableValue<FillAbsent, DataType extends ValueType>(\n column: PTableVectorTyped<DataType>,\n row: number,\n options: {\n absent: FillAbsent;\n },\n): DataType extends ValueTypeSupported ? PTableValue<FillAbsent, PTableNA, DataType> : never;\nexport function pTableValue<FillNA, DataType extends ValueType>(\n column: PTableVectorTyped<DataType>,\n row: number,\n options: {\n na: FillNA;\n },\n): DataType extends ValueTypeSupported ? PTableValue<PTableAbsent, FillNA, DataType> : never;\nexport function pTableValue<FillNA, FillAbsent, DataType extends ValueType>(\n column: PTableVectorTyped<DataType>,\n row: number,\n options: {\n absent: FillAbsent;\n na: FillNA;\n },\n): DataType extends ValueTypeSupported ? PTableValue<FillAbsent, FillNA, DataType> : never;\nexport function pTableValue<FillAbsent, DataType extends ValueTypeSupported>(\n column: PTableVectorTyped<ValueType>,\n row: number,\n options: {\n absent: FillAbsent;\n dataType: DataType;\n },\n): PTableValue<FillAbsent, PTableNA>;\nexport function pTableValue<FillNA, DataType extends ValueTypeSupported>(\n column: PTableVectorTyped<ValueType>,\n row: number,\n options: {\n na: FillNA;\n dataType: DataType;\n },\n): PTableValue<PTableAbsent, FillNA, DataType>;\nexport function pTableValue<FillNA, FillAbsent, DataType extends ValueTypeSupported>(\n column: PTableVectorTyped<ValueType>,\n row: number,\n options: {\n absent: FillAbsent;\n na: FillNA;\n dataType: DataType;\n },\n): PTableValue<FillAbsent, FillNA, DataType>;\nexport function pTableValue<\n FillAbsent = PTableAbsent,\n FillNA = PTableNA,\n DataType extends ValueType = ValueTypeSupported,\n>(\n column: PTableVectorTyped<ValueType>,\n row: number,\n options?: {\n absent?: FillAbsent;\n na?: FillNA;\n dataType?: DataType;\n },\n) {\n return pTableValueImpl(column, row, options);\n}\n\nexport function pTableValueBranded<DataType extends ValueType>(\n column: PTableVectorTyped<DataType>,\n row: number,\n): DataType extends ValueTypeSupported\n ? PTableValueBranded<PTableAbsent, PTableNA, DataType>\n : never;\nexport function pTableValueBranded<FillAbsent, DataType extends ValueType>(\n column: PTableVectorTyped<DataType>,\n row: number,\n options: {\n absent: FillAbsent;\n },\n): DataType extends ValueTypeSupported ? PTableValueBranded<FillAbsent, PTableNA, DataType> : never;\nexport function pTableValueBranded<FillNA, DataType extends ValueType>(\n column: PTableVectorTyped<DataType>,\n row: number,\n options: {\n na: FillNA;\n },\n): DataType extends ValueTypeSupported ? PTableValueBranded<PTableAbsent, FillNA, DataType> : never;\nexport function pTableValueBranded<FillNA, FillAbsent, DataType extends ValueType>(\n column: PTableVectorTyped<DataType>,\n row: number,\n options: {\n absent: FillAbsent;\n na: FillNA;\n },\n): DataType extends ValueTypeSupported ? PTableValueBranded<FillAbsent, FillNA, DataType> : never;\nexport function pTableValueBranded<FillAbsent, DataType extends ValueTypeSupported>(\n column: PTableVectorTyped<ValueType>,\n row: number,\n options: {\n absent: FillAbsent;\n dataType: DataType;\n },\n): PTableValueBranded<FillAbsent, PTableNA>;\nexport function pTableValueBranded<FillNA, DataType extends ValueTypeSupported>(\n column: PTableVectorTyped<ValueType>,\n row: number,\n options: {\n na: FillNA;\n dataType: DataType;\n },\n): PTableValueBranded<PTableAbsent, FillNA, DataType>;\nexport function pTableValueBranded<FillNA, FillAbsent, DataType extends ValueTypeSupported>(\n column: PTableVectorTyped<ValueType>,\n row: number,\n options: {\n absent: FillAbsent;\n na: FillNA;\n dataType: DataType;\n },\n): PTableValueBranded<FillAbsent, FillNA, DataType>;\nexport function pTableValueBranded<\n FillAbsent = PTableAbsent,\n FillNA = PTableNA,\n DataType extends ValueType = ValueTypeSupported,\n>(\n column: PTableVectorTyped<ValueType>,\n row: number,\n options?: {\n absent?: FillAbsent;\n na?: FillNA;\n dataType?: DataType;\n },\n) {\n return pTableValueImpl(column, row, options);\n}\n\n/** Used in requests to partially retrieve table's data */\nexport type TableRange = {\n /** Index of the first record to retrieve */\n readonly offset: number;\n\n /** Block length */\n readonly length: number;\n};\n\n/** Unified information about table shape */\nexport type PTableShape = {\n /** Number of unified table columns, including all axes and PColumn values */\n columns: number;\n\n /** Number of rows */\n rows: number;\n};\n"],"names":["ValueType"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"data_types.cjs","names":["ValueType"],"sources":["../../../src/drivers/pframe/data_types.ts"],"sourcesContent":["import type { Branded } from \"../../branding\";\nimport { ValueType } from \"./spec/spec\";\n\nexport type PVectorDataInt = Int32Array;\nexport type PVectorDataLong = BigInt64Array;\nexport type PVectorDataFloat = Float32Array;\nexport type PVectorDataDouble = Float64Array;\nexport type PVectorDataString = (null | string)[];\nexport type PVectorDataBytes = (null | Uint8Array)[];\nexport type PVectorDataTyped<DataType extends ValueType> = DataType extends typeof ValueType.Int\n ? PVectorDataInt\n : DataType extends typeof ValueType.Long\n ? PVectorDataLong\n : DataType extends typeof ValueType.Float\n ? PVectorDataFloat\n : DataType extends typeof ValueType.Double\n ? PVectorDataDouble\n : DataType extends typeof ValueType.String\n ? PVectorDataString\n : DataType extends typeof ValueType.Bytes\n ? PVectorDataBytes\n : never;\nexport type PVectorData = PVectorDataTyped<ValueType>;\n\nexport type PTableVectorTyped<DataType extends ValueType> = {\n /** Stored data type */\n readonly type: DataType;\n\n /** Values for present positions, absent positions have NA values */\n readonly data: PVectorDataTyped<DataType>;\n\n /**\n * Encoded bit array marking some elements of this vector as NA,\n * call {@link bitSet} to read the data.\n * In old desktop versions NA values are encoded as magic values in data array.\n * */\n readonly isNA?: Uint8Array;\n\n /**\n * Encoded bit array marking some elements of this vector as absent,\n * call {@link bitSet} to read the data.\n * */\n readonly absent: Uint8Array;\n};\n/** Table column data in comparison to the data stored in a separate PColumn\n * may have some of the values \"absent\", i.e. as a result of missing record in\n * outer join operation. This information is encoded in {@link absent} field. */\nexport type PTableVector = PTableVectorTyped<ValueType>;\n\nfunction isBitSet(bitVector: Uint8Array, offset: number): boolean {\n const chunkIndex = Math.floor(offset / 8);\n const mask = 1 << (7 - (offset % 8));\n return (bitVector[chunkIndex] & mask) > 0;\n}\n\nfunction isValueAbsent(vector: PTableVector, row: number): boolean {\n return isBitSet(vector.absent, row);\n}\n\nfunction isValueNA(vector: PTableVector, row: number): boolean {\n if (vector.isNA) return isBitSet(vector.isNA, row);\n\n // Check for legacy magic values to support old desktop versions\n const valueType = vector.type;\n const value = vector.data[row];\n switch (valueType) {\n case ValueType.Int:\n return (value as PVectorDataInt[number]) === -2147483648;\n case ValueType.Long:\n return (value as PVectorDataLong[number]) === -9007199254740991n;\n case ValueType.Float:\n return Number.isNaN(value as PVectorDataFloat[number]);\n case ValueType.Double:\n return Number.isNaN(value as PVectorDataDouble[number]);\n case ValueType.String:\n return (value as PVectorDataString[number]) === null;\n case ValueType.Bytes:\n return (value as PVectorDataBytes[number]) === null;\n default:\n throw Error(`unsupported data type: ${valueType satisfies never}`);\n }\n}\n\nexport const PTableAbsent = { type: \"absent\" } as const;\nexport type PTableAbsent = typeof PTableAbsent;\n\n/** Type guard for absent value */\nexport function isPTableAbsent(value: unknown): value is PTableAbsent {\n return typeof value === \"object\" && value !== null && \"type\" in value && value.type === \"absent\";\n}\n\nexport const PTableNA = null;\nexport type PTableNA = typeof PTableNA;\n\n/** Type guard for NA value */\nexport function isPTableNA(value: unknown): value is PTableNA {\n return value === PTableNA;\n}\n\nexport type ValueTypeSupported = Exclude<ValueType, typeof ValueType.Bytes>;\n\nexport type PTableValueInt = number;\nexport type PTableValueLong = number;\nexport type PTableValueFloat = number;\nexport type PTableValueDouble = number;\nexport type PTableValueString = string;\nexport type PTableValueData<DataType extends ValueTypeSupported> =\n DataType extends typeof ValueType.Int\n ? PTableValueInt\n : DataType extends typeof ValueType.Long\n ? PTableValueLong\n : DataType extends typeof ValueType.Float\n ? PTableValueFloat\n : DataType extends typeof ValueType.Double\n ? PTableValueDouble\n : DataType extends typeof ValueType.String\n ? PTableValueString\n : never;\nexport type PTableValueDataBranded<DataType extends ValueTypeSupported> = Branded<\n PTableValueData<DataType>,\n DataType\n>;\nexport type PTableValue<\n Absent = PTableAbsent,\n NA = PTableNA,\n DataType extends ValueTypeSupported = ValueTypeSupported,\n> = Absent | NA | PTableValueData<DataType>;\nexport type PTableValueBranded<\n Absent = PTableAbsent,\n NA = PTableNA,\n DataType extends ValueTypeSupported = ValueTypeSupported,\n> = Absent | NA | PTableValueDataBranded<DataType>;\n\nexport type PTableValueAxis<\n Absent = PTableAbsent,\n DataType extends ValueTypeSupported = ValueTypeSupported,\n> = PTableValue<Absent, never, DataType>;\n\nexport function isPTableValueAxis<Absent, NA, DataType extends ValueTypeSupported>(\n value: PTableValue<Absent, NA, DataType>,\n isNA: (value: PTableValue<Absent, NA, DataType>) => value is NA,\n): value is PTableValueAxis<Absent, DataType>;\nexport function isPTableValueAxis<Absent, DataType extends ValueTypeSupported>(\n value: PTableValue<Absent, PTableNA, DataType>,\n): value is PTableValueAxis<Absent, DataType>;\nexport function isPTableValueAxis<\n Absent = PTableAbsent,\n NA = PTableNA,\n DataType extends ValueTypeSupported = ValueTypeSupported,\n>(\n value: PTableValue<Absent, NA, DataType>,\n isNA?: (value: PTableValue<Absent, NA, DataType>) => value is NA,\n): value is PTableValueAxis<Absent, DataType> {\n return !(isNA ? isNA(value) : isPTableNA(value));\n}\n\nfunction pTableValueImpl<\n FillAbsent = PTableAbsent,\n FillNA = PTableNA,\n DataType extends ValueType = ValueTypeSupported,\n>(\n column: PTableVectorTyped<ValueType>,\n row: number,\n options?: {\n absent?: FillAbsent;\n na?: FillNA;\n dataType?: DataType;\n },\n) {\n const valueType = column.type;\n if (valueType === ValueType.Bytes) {\n throw Error(\"Bytes not yet supported\");\n }\n\n if (\n options &&\n \"dataType\" in options &&\n options.dataType !== undefined &&\n options.dataType !== valueType\n ) {\n throw Error(`expected column of type ${options.dataType}, got ${valueType}`);\n }\n\n if (isValueAbsent(column, row)) {\n return options?.absent !== undefined ? options.absent : PTableAbsent;\n }\n\n if (isValueNA(column, row)) {\n return options?.na !== undefined ? options.na : PTableNA;\n }\n\n const value = column.data[row]!;\n switch (valueType) {\n case ValueType.Int:\n return value as PVectorDataInt[number];\n case ValueType.Long:\n return Number(value as PVectorDataLong[number]);\n case ValueType.Float:\n return value as PVectorDataFloat[number];\n case ValueType.Double:\n return value as PVectorDataDouble[number];\n case ValueType.String:\n return (value as PVectorDataString[number])!;\n }\n}\n\n/** Read PTableValue from PTable column at specified row */\nexport function pTableValue<DataType extends ValueType>(\n column: PTableVectorTyped<DataType>,\n row: number,\n): DataType extends ValueTypeSupported ? PTableValue<PTableAbsent, PTableNA, DataType> : never;\nexport function pTableValue<FillAbsent, DataType extends ValueType>(\n column: PTableVectorTyped<DataType>,\n row: number,\n options: {\n absent: FillAbsent;\n },\n): DataType extends ValueTypeSupported ? PTableValue<FillAbsent, PTableNA, DataType> : never;\nexport function pTableValue<FillNA, DataType extends ValueType>(\n column: PTableVectorTyped<DataType>,\n row: number,\n options: {\n na: FillNA;\n },\n): DataType extends ValueTypeSupported ? PTableValue<PTableAbsent, FillNA, DataType> : never;\nexport function pTableValue<FillNA, FillAbsent, DataType extends ValueType>(\n column: PTableVectorTyped<DataType>,\n row: number,\n options: {\n absent: FillAbsent;\n na: FillNA;\n },\n): DataType extends ValueTypeSupported ? PTableValue<FillAbsent, FillNA, DataType> : never;\nexport function pTableValue<FillAbsent, DataType extends ValueTypeSupported>(\n column: PTableVectorTyped<ValueType>,\n row: number,\n options: {\n absent: FillAbsent;\n dataType: DataType;\n },\n): PTableValue<FillAbsent, PTableNA>;\nexport function pTableValue<FillNA, DataType extends ValueTypeSupported>(\n column: PTableVectorTyped<ValueType>,\n row: number,\n options: {\n na: FillNA;\n dataType: DataType;\n },\n): PTableValue<PTableAbsent, FillNA, DataType>;\nexport function pTableValue<FillNA, FillAbsent, DataType extends ValueTypeSupported>(\n column: PTableVectorTyped<ValueType>,\n row: number,\n options: {\n absent: FillAbsent;\n na: FillNA;\n dataType: DataType;\n },\n): PTableValue<FillAbsent, FillNA, DataType>;\nexport function pTableValue<\n FillAbsent = PTableAbsent,\n FillNA = PTableNA,\n DataType extends ValueType = ValueTypeSupported,\n>(\n column: PTableVectorTyped<ValueType>,\n row: number,\n options?: {\n absent?: FillAbsent;\n na?: FillNA;\n dataType?: DataType;\n },\n) {\n return pTableValueImpl(column, row, options);\n}\n\nexport function pTableValueBranded<DataType extends ValueType>(\n column: PTableVectorTyped<DataType>,\n row: number,\n): DataType extends ValueTypeSupported\n ? PTableValueBranded<PTableAbsent, PTableNA, DataType>\n : never;\nexport function pTableValueBranded<FillAbsent, DataType extends ValueType>(\n column: PTableVectorTyped<DataType>,\n row: number,\n options: {\n absent: FillAbsent;\n },\n): DataType extends ValueTypeSupported ? PTableValueBranded<FillAbsent, PTableNA, DataType> : never;\nexport function pTableValueBranded<FillNA, DataType extends ValueType>(\n column: PTableVectorTyped<DataType>,\n row: number,\n options: {\n na: FillNA;\n },\n): DataType extends ValueTypeSupported ? PTableValueBranded<PTableAbsent, FillNA, DataType> : never;\nexport function pTableValueBranded<FillNA, FillAbsent, DataType extends ValueType>(\n column: PTableVectorTyped<DataType>,\n row: number,\n options: {\n absent: FillAbsent;\n na: FillNA;\n },\n): DataType extends ValueTypeSupported ? PTableValueBranded<FillAbsent, FillNA, DataType> : never;\nexport function pTableValueBranded<FillAbsent, DataType extends ValueTypeSupported>(\n column: PTableVectorTyped<ValueType>,\n row: number,\n options: {\n absent: FillAbsent;\n dataType: DataType;\n },\n): PTableValueBranded<FillAbsent, PTableNA>;\nexport function pTableValueBranded<FillNA, DataType extends ValueTypeSupported>(\n column: PTableVectorTyped<ValueType>,\n row: number,\n options: {\n na: FillNA;\n dataType: DataType;\n },\n): PTableValueBranded<PTableAbsent, FillNA, DataType>;\nexport function pTableValueBranded<FillNA, FillAbsent, DataType extends ValueTypeSupported>(\n column: PTableVectorTyped<ValueType>,\n row: number,\n options: {\n absent: FillAbsent;\n na: FillNA;\n dataType: DataType;\n },\n): PTableValueBranded<FillAbsent, FillNA, DataType>;\nexport function pTableValueBranded<\n FillAbsent = PTableAbsent,\n FillNA = PTableNA,\n DataType extends ValueType = ValueTypeSupported,\n>(\n column: PTableVectorTyped<ValueType>,\n row: number,\n options?: {\n absent?: FillAbsent;\n na?: FillNA;\n dataType?: DataType;\n },\n) {\n return pTableValueImpl(column, row, options);\n}\n\n/** Used in requests to partially retrieve table's data */\nexport type TableRange = {\n /** Index of the first record to retrieve */\n readonly offset: number;\n\n /** Block length */\n readonly length: number;\n};\n\n/** Unified information about table shape */\nexport type PTableShape = {\n /** Number of unified table columns, including all axes and PColumn values */\n columns: number;\n\n /** Number of rows */\n rows: number;\n};\n"],"mappings":";;;AAiDA,SAAS,SAAS,WAAuB,QAAyB;CAChE,MAAM,aAAa,KAAK,MAAM,SAAS,EAAE;CACzC,MAAM,OAAO,KAAM,IAAK,SAAS;AACjC,SAAQ,UAAU,cAAc,QAAQ;;AAG1C,SAAS,cAAc,QAAsB,KAAsB;AACjE,QAAO,SAAS,OAAO,QAAQ,IAAI;;AAGrC,SAAS,UAAU,QAAsB,KAAsB;AAC7D,KAAI,OAAO,KAAM,QAAO,SAAS,OAAO,MAAM,IAAI;CAGlD,MAAM,YAAY,OAAO;CACzB,MAAM,QAAQ,OAAO,KAAK;AAC1B,SAAQ,WAAR;EACE,KAAKA,uBAAU,IACb,QAAQ,UAAqC;EAC/C,KAAKA,uBAAU,KACb,QAAQ,UAAsC,CAAC;EACjD,KAAKA,uBAAU,MACb,QAAO,OAAO,MAAM,MAAkC;EACxD,KAAKA,uBAAU,OACb,QAAO,OAAO,MAAM,MAAmC;EACzD,KAAKA,uBAAU,OACb,QAAQ,UAAwC;EAClD,KAAKA,uBAAU,MACb,QAAQ,UAAuC;EACjD,QACE,OAAM,MAAM,0BAA0B,YAA4B;;;AAIxE,MAAa,eAAe,EAAE,MAAM,UAAU;;AAI9C,SAAgB,eAAe,OAAuC;AACpE,QAAO,OAAO,UAAU,YAAY,UAAU,QAAQ,UAAU,SAAS,MAAM,SAAS;;AAG1F,MAAa,WAAW;;AAIxB,SAAgB,WAAW,OAAmC;AAC5D,QAAO,UAAU;;AAiDnB,SAAgB,kBAKd,OACA,MAC4C;AAC5C,QAAO,EAAE,OAAO,KAAK,MAAM,GAAG,WAAW,MAAM;;AAGjD,SAAS,gBAKP,QACA,KACA,SAKA;CACA,MAAM,YAAY,OAAO;AACzB,KAAI,cAAcA,uBAAU,MAC1B,OAAM,MAAM,0BAA0B;AAGxC,KACE,WACA,cAAc,WACd,QAAQ,aAAa,UACrB,QAAQ,aAAa,UAErB,OAAM,MAAM,2BAA2B,QAAQ,SAAS,QAAQ,YAAY;AAG9E,KAAI,cAAc,QAAQ,IAAI,CAC5B,QAAO,SAAS,WAAW,SAAY,QAAQ,SAAS;AAG1D,KAAI,UAAU,QAAQ,IAAI,CACxB,QAAO,SAAS,OAAO,SAAY,QAAQ,KAAK;CAGlD,MAAM,QAAQ,OAAO,KAAK;AAC1B,SAAQ,WAAR;EACE,KAAKA,uBAAU,IACb,QAAO;EACT,KAAKA,uBAAU,KACb,QAAO,OAAO,MAAiC;EACjD,KAAKA,uBAAU,MACb,QAAO;EACT,KAAKA,uBAAU,OACb,QAAO;EACT,KAAKA,uBAAU,OACb,QAAQ;;;AAwDd,SAAgB,YAKd,QACA,KACA,SAKA;AACA,QAAO,gBAAgB,QAAQ,KAAK,QAAQ;;AAwD9C,SAAgB,mBAKd,QACA,KACA,SAKA;AACA,QAAO,gBAAgB,QAAQ,KAAK,QAAQ"}
|
|
@@ -1,118 +1,116 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { ValueType } from "./spec/spec";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
1
|
+
import { Branded } from "../../branding.js";
|
|
2
|
+
import { ValueType } from "./spec/spec.js";
|
|
3
|
+
|
|
4
|
+
//#region src/drivers/pframe/data_types.d.ts
|
|
5
|
+
type PVectorDataInt = Int32Array;
|
|
6
|
+
type PVectorDataLong = BigInt64Array;
|
|
7
|
+
type PVectorDataFloat = Float32Array;
|
|
8
|
+
type PVectorDataDouble = Float64Array;
|
|
9
|
+
type PVectorDataString = (null | string)[];
|
|
10
|
+
type PVectorDataBytes = (null | Uint8Array)[];
|
|
11
|
+
type PVectorDataTyped<DataType extends ValueType> = DataType extends typeof ValueType.Int ? PVectorDataInt : DataType extends typeof ValueType.Long ? PVectorDataLong : DataType extends typeof ValueType.Float ? PVectorDataFloat : DataType extends typeof ValueType.Double ? PVectorDataDouble : DataType extends typeof ValueType.String ? PVectorDataString : DataType extends typeof ValueType.Bytes ? PVectorDataBytes : never;
|
|
12
|
+
type PVectorData = PVectorDataTyped<ValueType>;
|
|
13
|
+
type PTableVectorTyped<DataType extends ValueType> = {
|
|
14
|
+
/** Stored data type */readonly type: DataType; /** Values for present positions, absent positions have NA values */
|
|
15
|
+
readonly data: PVectorDataTyped<DataType>;
|
|
16
|
+
/**
|
|
17
|
+
* Encoded bit array marking some elements of this vector as NA,
|
|
18
|
+
* call {@link bitSet} to read the data.
|
|
19
|
+
* In old desktop versions NA values are encoded as magic values in data array.
|
|
20
|
+
* */
|
|
21
|
+
readonly isNA?: Uint8Array;
|
|
22
|
+
/**
|
|
23
|
+
* Encoded bit array marking some elements of this vector as absent,
|
|
24
|
+
* call {@link bitSet} to read the data.
|
|
25
|
+
* */
|
|
26
|
+
readonly absent: Uint8Array;
|
|
27
27
|
};
|
|
28
28
|
/** Table column data in comparison to the data stored in a separate PColumn
|
|
29
29
|
* may have some of the values "absent", i.e. as a result of missing record in
|
|
30
30
|
* outer join operation. This information is encoded in {@link absent} field. */
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
31
|
+
type PTableVector = PTableVectorTyped<ValueType>;
|
|
32
|
+
declare const PTableAbsent: {
|
|
33
|
+
readonly type: "absent";
|
|
34
34
|
};
|
|
35
|
-
|
|
35
|
+
type PTableAbsent = typeof PTableAbsent;
|
|
36
36
|
/** Type guard for absent value */
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
37
|
+
declare function isPTableAbsent(value: unknown): value is PTableAbsent;
|
|
38
|
+
declare const PTableNA: null;
|
|
39
|
+
type PTableNA = typeof PTableNA;
|
|
40
40
|
/** Type guard for NA value */
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
41
|
+
declare function isPTableNA(value: unknown): value is PTableNA;
|
|
42
|
+
type ValueTypeSupported = Exclude<ValueType, typeof ValueType.Bytes>;
|
|
43
|
+
type PTableValueInt = number;
|
|
44
|
+
type PTableValueLong = number;
|
|
45
|
+
type PTableValueFloat = number;
|
|
46
|
+
type PTableValueDouble = number;
|
|
47
|
+
type PTableValueString = string;
|
|
48
|
+
type PTableValueData<DataType extends ValueTypeSupported> = DataType extends typeof ValueType.Int ? PTableValueInt : DataType extends typeof ValueType.Long ? PTableValueLong : DataType extends typeof ValueType.Float ? PTableValueFloat : DataType extends typeof ValueType.Double ? PTableValueDouble : DataType extends typeof ValueType.String ? PTableValueString : never;
|
|
49
|
+
type PTableValueDataBranded<DataType extends ValueTypeSupported> = Branded<PTableValueData<DataType>, DataType>;
|
|
50
|
+
type PTableValue<Absent = PTableAbsent, NA = PTableNA, DataType extends ValueTypeSupported = ValueTypeSupported> = Absent | NA | PTableValueData<DataType>;
|
|
51
|
+
type PTableValueBranded<Absent = PTableAbsent, NA = PTableNA, DataType extends ValueTypeSupported = ValueTypeSupported> = Absent | NA | PTableValueDataBranded<DataType>;
|
|
52
|
+
type PTableValueAxis<Absent = PTableAbsent, DataType extends ValueTypeSupported = ValueTypeSupported> = PTableValue<Absent, never, DataType>;
|
|
53
|
+
declare function isPTableValueAxis<Absent, NA, DataType extends ValueTypeSupported>(value: PTableValue<Absent, NA, DataType>, isNA: (value: PTableValue<Absent, NA, DataType>) => value is NA): value is PTableValueAxis<Absent, DataType>;
|
|
54
|
+
declare function isPTableValueAxis<Absent, DataType extends ValueTypeSupported>(value: PTableValue<Absent, PTableNA, DataType>): value is PTableValueAxis<Absent, DataType>;
|
|
55
55
|
/** Read PTableValue from PTable column at specified row */
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
56
|
+
declare function pTableValue<DataType extends ValueType>(column: PTableVectorTyped<DataType>, row: number): DataType extends ValueTypeSupported ? PTableValue<PTableAbsent, PTableNA, DataType> : never;
|
|
57
|
+
declare function pTableValue<FillAbsent, DataType extends ValueType>(column: PTableVectorTyped<DataType>, row: number, options: {
|
|
58
|
+
absent: FillAbsent;
|
|
59
59
|
}): DataType extends ValueTypeSupported ? PTableValue<FillAbsent, PTableNA, DataType> : never;
|
|
60
|
-
|
|
61
|
-
|
|
60
|
+
declare function pTableValue<FillNA, DataType extends ValueType>(column: PTableVectorTyped<DataType>, row: number, options: {
|
|
61
|
+
na: FillNA;
|
|
62
62
|
}): DataType extends ValueTypeSupported ? PTableValue<PTableAbsent, FillNA, DataType> : never;
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
63
|
+
declare function pTableValue<FillNA, FillAbsent, DataType extends ValueType>(column: PTableVectorTyped<DataType>, row: number, options: {
|
|
64
|
+
absent: FillAbsent;
|
|
65
|
+
na: FillNA;
|
|
66
66
|
}): DataType extends ValueTypeSupported ? PTableValue<FillAbsent, FillNA, DataType> : never;
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
67
|
+
declare function pTableValue<FillAbsent, DataType extends ValueTypeSupported>(column: PTableVectorTyped<ValueType>, row: number, options: {
|
|
68
|
+
absent: FillAbsent;
|
|
69
|
+
dataType: DataType;
|
|
70
70
|
}): PTableValue<FillAbsent, PTableNA>;
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
71
|
+
declare function pTableValue<FillNA, DataType extends ValueTypeSupported>(column: PTableVectorTyped<ValueType>, row: number, options: {
|
|
72
|
+
na: FillNA;
|
|
73
|
+
dataType: DataType;
|
|
74
74
|
}): PTableValue<PTableAbsent, FillNA, DataType>;
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
75
|
+
declare function pTableValue<FillNA, FillAbsent, DataType extends ValueTypeSupported>(column: PTableVectorTyped<ValueType>, row: number, options: {
|
|
76
|
+
absent: FillAbsent;
|
|
77
|
+
na: FillNA;
|
|
78
|
+
dataType: DataType;
|
|
79
79
|
}): PTableValue<FillAbsent, FillNA, DataType>;
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
80
|
+
declare function pTableValueBranded<DataType extends ValueType>(column: PTableVectorTyped<DataType>, row: number): DataType extends ValueTypeSupported ? PTableValueBranded<PTableAbsent, PTableNA, DataType> : never;
|
|
81
|
+
declare function pTableValueBranded<FillAbsent, DataType extends ValueType>(column: PTableVectorTyped<DataType>, row: number, options: {
|
|
82
|
+
absent: FillAbsent;
|
|
83
83
|
}): DataType extends ValueTypeSupported ? PTableValueBranded<FillAbsent, PTableNA, DataType> : never;
|
|
84
|
-
|
|
85
|
-
|
|
84
|
+
declare function pTableValueBranded<FillNA, DataType extends ValueType>(column: PTableVectorTyped<DataType>, row: number, options: {
|
|
85
|
+
na: FillNA;
|
|
86
86
|
}): DataType extends ValueTypeSupported ? PTableValueBranded<PTableAbsent, FillNA, DataType> : never;
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
87
|
+
declare function pTableValueBranded<FillNA, FillAbsent, DataType extends ValueType>(column: PTableVectorTyped<DataType>, row: number, options: {
|
|
88
|
+
absent: FillAbsent;
|
|
89
|
+
na: FillNA;
|
|
90
90
|
}): DataType extends ValueTypeSupported ? PTableValueBranded<FillAbsent, FillNA, DataType> : never;
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
91
|
+
declare function pTableValueBranded<FillAbsent, DataType extends ValueTypeSupported>(column: PTableVectorTyped<ValueType>, row: number, options: {
|
|
92
|
+
absent: FillAbsent;
|
|
93
|
+
dataType: DataType;
|
|
94
94
|
}): PTableValueBranded<FillAbsent, PTableNA>;
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
95
|
+
declare function pTableValueBranded<FillNA, DataType extends ValueTypeSupported>(column: PTableVectorTyped<ValueType>, row: number, options: {
|
|
96
|
+
na: FillNA;
|
|
97
|
+
dataType: DataType;
|
|
98
98
|
}): PTableValueBranded<PTableAbsent, FillNA, DataType>;
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
99
|
+
declare function pTableValueBranded<FillNA, FillAbsent, DataType extends ValueTypeSupported>(column: PTableVectorTyped<ValueType>, row: number, options: {
|
|
100
|
+
absent: FillAbsent;
|
|
101
|
+
na: FillNA;
|
|
102
|
+
dataType: DataType;
|
|
103
103
|
}): PTableValueBranded<FillAbsent, FillNA, DataType>;
|
|
104
104
|
/** Used in requests to partially retrieve table's data */
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
/** Block length */
|
|
109
|
-
readonly length: number;
|
|
105
|
+
type TableRange = {
|
|
106
|
+
/** Index of the first record to retrieve */readonly offset: number; /** Block length */
|
|
107
|
+
readonly length: number;
|
|
110
108
|
};
|
|
111
109
|
/** Unified information about table shape */
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
/** Number of rows */
|
|
116
|
-
rows: number;
|
|
110
|
+
type PTableShape = {
|
|
111
|
+
/** Number of unified table columns, including all axes and PColumn values */columns: number; /** Number of rows */
|
|
112
|
+
rows: number;
|
|
117
113
|
};
|
|
114
|
+
//#endregion
|
|
115
|
+
export { PTableAbsent, PTableNA, PTableShape, PTableValue, PTableValueAxis, PTableValueBranded, PTableValueData, PTableValueDataBranded, PTableValueDouble, PTableValueFloat, PTableValueInt, PTableValueLong, PTableValueString, PTableVector, PTableVectorTyped, PVectorData, PVectorDataBytes, PVectorDataDouble, PVectorDataFloat, PVectorDataInt, PVectorDataLong, PVectorDataString, PVectorDataTyped, TableRange, ValueTypeSupported, isPTableAbsent, isPTableNA, isPTableValueAxis, pTableValue, pTableValueBranded };
|
|
118
116
|
//# sourceMappingURL=data_types.d.ts.map
|
|
@@ -1,86 +1,63 @@
|
|
|
1
|
-
import { ValueType } from
|
|
1
|
+
import { ValueType } from "./spec/spec.js";
|
|
2
2
|
|
|
3
|
+
//#region src/drivers/pframe/data_types.ts
|
|
3
4
|
function isBitSet(bitVector, offset) {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
const chunkIndex = Math.floor(offset / 8);
|
|
6
|
+
const mask = 1 << 7 - offset % 8;
|
|
7
|
+
return (bitVector[chunkIndex] & mask) > 0;
|
|
7
8
|
}
|
|
8
9
|
function isValueAbsent(vector, row) {
|
|
9
|
-
|
|
10
|
+
return isBitSet(vector.absent, row);
|
|
10
11
|
}
|
|
11
12
|
function isValueNA(vector, row) {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
case ValueType.Double:
|
|
25
|
-
return Number.isNaN(value);
|
|
26
|
-
case ValueType.String:
|
|
27
|
-
return value === null;
|
|
28
|
-
case ValueType.Bytes:
|
|
29
|
-
return value === null;
|
|
30
|
-
default:
|
|
31
|
-
throw Error(`unsupported data type: ${valueType}`);
|
|
32
|
-
}
|
|
13
|
+
if (vector.isNA) return isBitSet(vector.isNA, row);
|
|
14
|
+
const valueType = vector.type;
|
|
15
|
+
const value = vector.data[row];
|
|
16
|
+
switch (valueType) {
|
|
17
|
+
case ValueType.Int: return value === -2147483648;
|
|
18
|
+
case ValueType.Long: return value === -9007199254740991n;
|
|
19
|
+
case ValueType.Float: return Number.isNaN(value);
|
|
20
|
+
case ValueType.Double: return Number.isNaN(value);
|
|
21
|
+
case ValueType.String: return value === null;
|
|
22
|
+
case ValueType.Bytes: return value === null;
|
|
23
|
+
default: throw Error(`unsupported data type: ${valueType}`);
|
|
24
|
+
}
|
|
33
25
|
}
|
|
34
26
|
const PTableAbsent = { type: "absent" };
|
|
35
27
|
/** Type guard for absent value */
|
|
36
28
|
function isPTableAbsent(value) {
|
|
37
|
-
|
|
29
|
+
return typeof value === "object" && value !== null && "type" in value && value.type === "absent";
|
|
38
30
|
}
|
|
39
31
|
const PTableNA = null;
|
|
40
32
|
/** Type guard for NA value */
|
|
41
33
|
function isPTableNA(value) {
|
|
42
|
-
|
|
34
|
+
return value === PTableNA;
|
|
43
35
|
}
|
|
44
36
|
function isPTableValueAxis(value, isNA) {
|
|
45
|
-
|
|
37
|
+
return !(isNA ? isNA(value) : isPTableNA(value));
|
|
46
38
|
}
|
|
47
39
|
function pTableValueImpl(column, row, options) {
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
if (isValueNA(column, row)) {
|
|
62
|
-
return options?.na !== undefined ? options.na : PTableNA;
|
|
63
|
-
}
|
|
64
|
-
const value = column.data[row];
|
|
65
|
-
switch (valueType) {
|
|
66
|
-
case ValueType.Int:
|
|
67
|
-
return value;
|
|
68
|
-
case ValueType.Long:
|
|
69
|
-
return Number(value);
|
|
70
|
-
case ValueType.Float:
|
|
71
|
-
return value;
|
|
72
|
-
case ValueType.Double:
|
|
73
|
-
return value;
|
|
74
|
-
case ValueType.String:
|
|
75
|
-
return value;
|
|
76
|
-
}
|
|
40
|
+
const valueType = column.type;
|
|
41
|
+
if (valueType === ValueType.Bytes) throw Error("Bytes not yet supported");
|
|
42
|
+
if (options && "dataType" in options && options.dataType !== void 0 && options.dataType !== valueType) throw Error(`expected column of type ${options.dataType}, got ${valueType}`);
|
|
43
|
+
if (isValueAbsent(column, row)) return options?.absent !== void 0 ? options.absent : PTableAbsent;
|
|
44
|
+
if (isValueNA(column, row)) return options?.na !== void 0 ? options.na : PTableNA;
|
|
45
|
+
const value = column.data[row];
|
|
46
|
+
switch (valueType) {
|
|
47
|
+
case ValueType.Int: return value;
|
|
48
|
+
case ValueType.Long: return Number(value);
|
|
49
|
+
case ValueType.Float: return value;
|
|
50
|
+
case ValueType.Double: return value;
|
|
51
|
+
case ValueType.String: return value;
|
|
52
|
+
}
|
|
77
53
|
}
|
|
78
54
|
function pTableValue(column, row, options) {
|
|
79
|
-
|
|
55
|
+
return pTableValueImpl(column, row, options);
|
|
80
56
|
}
|
|
81
57
|
function pTableValueBranded(column, row, options) {
|
|
82
|
-
|
|
58
|
+
return pTableValueImpl(column, row, options);
|
|
83
59
|
}
|
|
84
60
|
|
|
61
|
+
//#endregion
|
|
85
62
|
export { PTableAbsent, PTableNA, isPTableAbsent, isPTableNA, isPTableValueAxis, pTableValue, pTableValueBranded };
|
|
86
|
-
//# sourceMappingURL=data_types.js.map
|
|
63
|
+
//# sourceMappingURL=data_types.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data_types.js","sources":["../../../src/drivers/pframe/data_types.ts"],"sourcesContent":["import type { Branded } from \"../../branding\";\nimport { ValueType } from \"./spec/spec\";\n\nexport type PVectorDataInt = Int32Array;\nexport type PVectorDataLong = BigInt64Array;\nexport type PVectorDataFloat = Float32Array;\nexport type PVectorDataDouble = Float64Array;\nexport type PVectorDataString = (null | string)[];\nexport type PVectorDataBytes = (null | Uint8Array)[];\nexport type PVectorDataTyped<DataType extends ValueType> = DataType extends typeof ValueType.Int\n ? PVectorDataInt\n : DataType extends typeof ValueType.Long\n ? PVectorDataLong\n : DataType extends typeof ValueType.Float\n ? PVectorDataFloat\n : DataType extends typeof ValueType.Double\n ? PVectorDataDouble\n : DataType extends typeof ValueType.String\n ? PVectorDataString\n : DataType extends typeof ValueType.Bytes\n ? PVectorDataBytes\n : never;\nexport type PVectorData = PVectorDataTyped<ValueType>;\n\nexport type PTableVectorTyped<DataType extends ValueType> = {\n /** Stored data type */\n readonly type: DataType;\n\n /** Values for present positions, absent positions have NA values */\n readonly data: PVectorDataTyped<DataType>;\n\n /**\n * Encoded bit array marking some elements of this vector as NA,\n * call {@link bitSet} to read the data.\n * In old desktop versions NA values are encoded as magic values in data array.\n * */\n readonly isNA?: Uint8Array;\n\n /**\n * Encoded bit array marking some elements of this vector as absent,\n * call {@link bitSet} to read the data.\n * */\n readonly absent: Uint8Array;\n};\n/** Table column data in comparison to the data stored in a separate PColumn\n * may have some of the values \"absent\", i.e. as a result of missing record in\n * outer join operation. This information is encoded in {@link absent} field. */\nexport type PTableVector = PTableVectorTyped<ValueType>;\n\nfunction isBitSet(bitVector: Uint8Array, offset: number): boolean {\n const chunkIndex = Math.floor(offset / 8);\n const mask = 1 << (7 - (offset % 8));\n return (bitVector[chunkIndex] & mask) > 0;\n}\n\nfunction isValueAbsent(vector: PTableVector, row: number): boolean {\n return isBitSet(vector.absent, row);\n}\n\nfunction isValueNA(vector: PTableVector, row: number): boolean {\n if (vector.isNA) return isBitSet(vector.isNA, row);\n\n // Check for legacy magic values to support old desktop versions\n const valueType = vector.type;\n const value = vector.data[row];\n switch (valueType) {\n case ValueType.Int:\n return (value as PVectorDataInt[number]) === -2147483648;\n case ValueType.Long:\n return (value as PVectorDataLong[number]) === -9007199254740991n;\n case ValueType.Float:\n return Number.isNaN(value as PVectorDataFloat[number]);\n case ValueType.Double:\n return Number.isNaN(value as PVectorDataDouble[number]);\n case ValueType.String:\n return (value as PVectorDataString[number]) === null;\n case ValueType.Bytes:\n return (value as PVectorDataBytes[number]) === null;\n default:\n throw Error(`unsupported data type: ${valueType satisfies never}`);\n }\n}\n\nexport const PTableAbsent = { type: \"absent\" } as const;\nexport type PTableAbsent = typeof PTableAbsent;\n\n/** Type guard for absent value */\nexport function isPTableAbsent(value: unknown): value is PTableAbsent {\n return typeof value === \"object\" && value !== null && \"type\" in value && value.type === \"absent\";\n}\n\nexport const PTableNA = null;\nexport type PTableNA = typeof PTableNA;\n\n/** Type guard for NA value */\nexport function isPTableNA(value: unknown): value is PTableNA {\n return value === PTableNA;\n}\n\nexport type ValueTypeSupported = Exclude<ValueType, typeof ValueType.Bytes>;\n\nexport type PTableValueInt = number;\nexport type PTableValueLong = number;\nexport type PTableValueFloat = number;\nexport type PTableValueDouble = number;\nexport type PTableValueString = string;\nexport type PTableValueData<DataType extends ValueTypeSupported> =\n DataType extends typeof ValueType.Int\n ? PTableValueInt\n : DataType extends typeof ValueType.Long\n ? PTableValueLong\n : DataType extends typeof ValueType.Float\n ? PTableValueFloat\n : DataType extends typeof ValueType.Double\n ? PTableValueDouble\n : DataType extends typeof ValueType.String\n ? PTableValueString\n : never;\nexport type PTableValueDataBranded<DataType extends ValueTypeSupported> = Branded<\n PTableValueData<DataType>,\n DataType\n>;\nexport type PTableValue<\n Absent = PTableAbsent,\n NA = PTableNA,\n DataType extends ValueTypeSupported = ValueTypeSupported,\n> = Absent | NA | PTableValueData<DataType>;\nexport type PTableValueBranded<\n Absent = PTableAbsent,\n NA = PTableNA,\n DataType extends ValueTypeSupported = ValueTypeSupported,\n> = Absent | NA | PTableValueDataBranded<DataType>;\n\nexport type PTableValueAxis<\n Absent = PTableAbsent,\n DataType extends ValueTypeSupported = ValueTypeSupported,\n> = PTableValue<Absent, never, DataType>;\n\nexport function isPTableValueAxis<Absent, NA, DataType extends ValueTypeSupported>(\n value: PTableValue<Absent, NA, DataType>,\n isNA: (value: PTableValue<Absent, NA, DataType>) => value is NA,\n): value is PTableValueAxis<Absent, DataType>;\nexport function isPTableValueAxis<Absent, DataType extends ValueTypeSupported>(\n value: PTableValue<Absent, PTableNA, DataType>,\n): value is PTableValueAxis<Absent, DataType>;\nexport function isPTableValueAxis<\n Absent = PTableAbsent,\n NA = PTableNA,\n DataType extends ValueTypeSupported = ValueTypeSupported,\n>(\n value: PTableValue<Absent, NA, DataType>,\n isNA?: (value: PTableValue<Absent, NA, DataType>) => value is NA,\n): value is PTableValueAxis<Absent, DataType> {\n return !(isNA ? isNA(value) : isPTableNA(value));\n}\n\nfunction pTableValueImpl<\n FillAbsent = PTableAbsent,\n FillNA = PTableNA,\n DataType extends ValueType = ValueTypeSupported,\n>(\n column: PTableVectorTyped<ValueType>,\n row: number,\n options?: {\n absent?: FillAbsent;\n na?: FillNA;\n dataType?: DataType;\n },\n) {\n const valueType = column.type;\n if (valueType === ValueType.Bytes) {\n throw Error(\"Bytes not yet supported\");\n }\n\n if (\n options &&\n \"dataType\" in options &&\n options.dataType !== undefined &&\n options.dataType !== valueType\n ) {\n throw Error(`expected column of type ${options.dataType}, got ${valueType}`);\n }\n\n if (isValueAbsent(column, row)) {\n return options?.absent !== undefined ? options.absent : PTableAbsent;\n }\n\n if (isValueNA(column, row)) {\n return options?.na !== undefined ? options.na : PTableNA;\n }\n\n const value = column.data[row]!;\n switch (valueType) {\n case ValueType.Int:\n return value as PVectorDataInt[number];\n case ValueType.Long:\n return Number(value as PVectorDataLong[number]);\n case ValueType.Float:\n return value as PVectorDataFloat[number];\n case ValueType.Double:\n return value as PVectorDataDouble[number];\n case ValueType.String:\n return (value as PVectorDataString[number])!;\n }\n}\n\n/** Read PTableValue from PTable column at specified row */\nexport function pTableValue<DataType extends ValueType>(\n column: PTableVectorTyped<DataType>,\n row: number,\n): DataType extends ValueTypeSupported ? PTableValue<PTableAbsent, PTableNA, DataType> : never;\nexport function pTableValue<FillAbsent, DataType extends ValueType>(\n column: PTableVectorTyped<DataType>,\n row: number,\n options: {\n absent: FillAbsent;\n },\n): DataType extends ValueTypeSupported ? PTableValue<FillAbsent, PTableNA, DataType> : never;\nexport function pTableValue<FillNA, DataType extends ValueType>(\n column: PTableVectorTyped<DataType>,\n row: number,\n options: {\n na: FillNA;\n },\n): DataType extends ValueTypeSupported ? PTableValue<PTableAbsent, FillNA, DataType> : never;\nexport function pTableValue<FillNA, FillAbsent, DataType extends ValueType>(\n column: PTableVectorTyped<DataType>,\n row: number,\n options: {\n absent: FillAbsent;\n na: FillNA;\n },\n): DataType extends ValueTypeSupported ? PTableValue<FillAbsent, FillNA, DataType> : never;\nexport function pTableValue<FillAbsent, DataType extends ValueTypeSupported>(\n column: PTableVectorTyped<ValueType>,\n row: number,\n options: {\n absent: FillAbsent;\n dataType: DataType;\n },\n): PTableValue<FillAbsent, PTableNA>;\nexport function pTableValue<FillNA, DataType extends ValueTypeSupported>(\n column: PTableVectorTyped<ValueType>,\n row: number,\n options: {\n na: FillNA;\n dataType: DataType;\n },\n): PTableValue<PTableAbsent, FillNA, DataType>;\nexport function pTableValue<FillNA, FillAbsent, DataType extends ValueTypeSupported>(\n column: PTableVectorTyped<ValueType>,\n row: number,\n options: {\n absent: FillAbsent;\n na: FillNA;\n dataType: DataType;\n },\n): PTableValue<FillAbsent, FillNA, DataType>;\nexport function pTableValue<\n FillAbsent = PTableAbsent,\n FillNA = PTableNA,\n DataType extends ValueType = ValueTypeSupported,\n>(\n column: PTableVectorTyped<ValueType>,\n row: number,\n options?: {\n absent?: FillAbsent;\n na?: FillNA;\n dataType?: DataType;\n },\n) {\n return pTableValueImpl(column, row, options);\n}\n\nexport function pTableValueBranded<DataType extends ValueType>(\n column: PTableVectorTyped<DataType>,\n row: number,\n): DataType extends ValueTypeSupported\n ? PTableValueBranded<PTableAbsent, PTableNA, DataType>\n : never;\nexport function pTableValueBranded<FillAbsent, DataType extends ValueType>(\n column: PTableVectorTyped<DataType>,\n row: number,\n options: {\n absent: FillAbsent;\n },\n): DataType extends ValueTypeSupported ? PTableValueBranded<FillAbsent, PTableNA, DataType> : never;\nexport function pTableValueBranded<FillNA, DataType extends ValueType>(\n column: PTableVectorTyped<DataType>,\n row: number,\n options: {\n na: FillNA;\n },\n): DataType extends ValueTypeSupported ? PTableValueBranded<PTableAbsent, FillNA, DataType> : never;\nexport function pTableValueBranded<FillNA, FillAbsent, DataType extends ValueType>(\n column: PTableVectorTyped<DataType>,\n row: number,\n options: {\n absent: FillAbsent;\n na: FillNA;\n },\n): DataType extends ValueTypeSupported ? PTableValueBranded<FillAbsent, FillNA, DataType> : never;\nexport function pTableValueBranded<FillAbsent, DataType extends ValueTypeSupported>(\n column: PTableVectorTyped<ValueType>,\n row: number,\n options: {\n absent: FillAbsent;\n dataType: DataType;\n },\n): PTableValueBranded<FillAbsent, PTableNA>;\nexport function pTableValueBranded<FillNA, DataType extends ValueTypeSupported>(\n column: PTableVectorTyped<ValueType>,\n row: number,\n options: {\n na: FillNA;\n dataType: DataType;\n },\n): PTableValueBranded<PTableAbsent, FillNA, DataType>;\nexport function pTableValueBranded<FillNA, FillAbsent, DataType extends ValueTypeSupported>(\n column: PTableVectorTyped<ValueType>,\n row: number,\n options: {\n absent: FillAbsent;\n na: FillNA;\n dataType: DataType;\n },\n): PTableValueBranded<FillAbsent, FillNA, DataType>;\nexport function pTableValueBranded<\n FillAbsent = PTableAbsent,\n FillNA = PTableNA,\n DataType extends ValueType = ValueTypeSupported,\n>(\n column: PTableVectorTyped<ValueType>,\n row: number,\n options?: {\n absent?: FillAbsent;\n na?: FillNA;\n dataType?: DataType;\n },\n) {\n return pTableValueImpl(column, row, options);\n}\n\n/** Used in requests to partially retrieve table's data */\nexport type TableRange = {\n /** Index of the first record to retrieve */\n readonly offset: number;\n\n /** Block length */\n readonly length: number;\n};\n\n/** Unified information about table shape */\nexport type PTableShape = {\n /** Number of unified table columns, including all axes and PColumn values */\n columns: number;\n\n /** Number of rows */\n rows: number;\n};\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"data_types.js","names":[],"sources":["../../../src/drivers/pframe/data_types.ts"],"sourcesContent":["import type { Branded } from \"../../branding\";\nimport { ValueType } from \"./spec/spec\";\n\nexport type PVectorDataInt = Int32Array;\nexport type PVectorDataLong = BigInt64Array;\nexport type PVectorDataFloat = Float32Array;\nexport type PVectorDataDouble = Float64Array;\nexport type PVectorDataString = (null | string)[];\nexport type PVectorDataBytes = (null | Uint8Array)[];\nexport type PVectorDataTyped<DataType extends ValueType> = DataType extends typeof ValueType.Int\n ? PVectorDataInt\n : DataType extends typeof ValueType.Long\n ? PVectorDataLong\n : DataType extends typeof ValueType.Float\n ? PVectorDataFloat\n : DataType extends typeof ValueType.Double\n ? PVectorDataDouble\n : DataType extends typeof ValueType.String\n ? PVectorDataString\n : DataType extends typeof ValueType.Bytes\n ? PVectorDataBytes\n : never;\nexport type PVectorData = PVectorDataTyped<ValueType>;\n\nexport type PTableVectorTyped<DataType extends ValueType> = {\n /** Stored data type */\n readonly type: DataType;\n\n /** Values for present positions, absent positions have NA values */\n readonly data: PVectorDataTyped<DataType>;\n\n /**\n * Encoded bit array marking some elements of this vector as NA,\n * call {@link bitSet} to read the data.\n * In old desktop versions NA values are encoded as magic values in data array.\n * */\n readonly isNA?: Uint8Array;\n\n /**\n * Encoded bit array marking some elements of this vector as absent,\n * call {@link bitSet} to read the data.\n * */\n readonly absent: Uint8Array;\n};\n/** Table column data in comparison to the data stored in a separate PColumn\n * may have some of the values \"absent\", i.e. as a result of missing record in\n * outer join operation. This information is encoded in {@link absent} field. */\nexport type PTableVector = PTableVectorTyped<ValueType>;\n\nfunction isBitSet(bitVector: Uint8Array, offset: number): boolean {\n const chunkIndex = Math.floor(offset / 8);\n const mask = 1 << (7 - (offset % 8));\n return (bitVector[chunkIndex] & mask) > 0;\n}\n\nfunction isValueAbsent(vector: PTableVector, row: number): boolean {\n return isBitSet(vector.absent, row);\n}\n\nfunction isValueNA(vector: PTableVector, row: number): boolean {\n if (vector.isNA) return isBitSet(vector.isNA, row);\n\n // Check for legacy magic values to support old desktop versions\n const valueType = vector.type;\n const value = vector.data[row];\n switch (valueType) {\n case ValueType.Int:\n return (value as PVectorDataInt[number]) === -2147483648;\n case ValueType.Long:\n return (value as PVectorDataLong[number]) === -9007199254740991n;\n case ValueType.Float:\n return Number.isNaN(value as PVectorDataFloat[number]);\n case ValueType.Double:\n return Number.isNaN(value as PVectorDataDouble[number]);\n case ValueType.String:\n return (value as PVectorDataString[number]) === null;\n case ValueType.Bytes:\n return (value as PVectorDataBytes[number]) === null;\n default:\n throw Error(`unsupported data type: ${valueType satisfies never}`);\n }\n}\n\nexport const PTableAbsent = { type: \"absent\" } as const;\nexport type PTableAbsent = typeof PTableAbsent;\n\n/** Type guard for absent value */\nexport function isPTableAbsent(value: unknown): value is PTableAbsent {\n return typeof value === \"object\" && value !== null && \"type\" in value && value.type === \"absent\";\n}\n\nexport const PTableNA = null;\nexport type PTableNA = typeof PTableNA;\n\n/** Type guard for NA value */\nexport function isPTableNA(value: unknown): value is PTableNA {\n return value === PTableNA;\n}\n\nexport type ValueTypeSupported = Exclude<ValueType, typeof ValueType.Bytes>;\n\nexport type PTableValueInt = number;\nexport type PTableValueLong = number;\nexport type PTableValueFloat = number;\nexport type PTableValueDouble = number;\nexport type PTableValueString = string;\nexport type PTableValueData<DataType extends ValueTypeSupported> =\n DataType extends typeof ValueType.Int\n ? PTableValueInt\n : DataType extends typeof ValueType.Long\n ? PTableValueLong\n : DataType extends typeof ValueType.Float\n ? PTableValueFloat\n : DataType extends typeof ValueType.Double\n ? PTableValueDouble\n : DataType extends typeof ValueType.String\n ? PTableValueString\n : never;\nexport type PTableValueDataBranded<DataType extends ValueTypeSupported> = Branded<\n PTableValueData<DataType>,\n DataType\n>;\nexport type PTableValue<\n Absent = PTableAbsent,\n NA = PTableNA,\n DataType extends ValueTypeSupported = ValueTypeSupported,\n> = Absent | NA | PTableValueData<DataType>;\nexport type PTableValueBranded<\n Absent = PTableAbsent,\n NA = PTableNA,\n DataType extends ValueTypeSupported = ValueTypeSupported,\n> = Absent | NA | PTableValueDataBranded<DataType>;\n\nexport type PTableValueAxis<\n Absent = PTableAbsent,\n DataType extends ValueTypeSupported = ValueTypeSupported,\n> = PTableValue<Absent, never, DataType>;\n\nexport function isPTableValueAxis<Absent, NA, DataType extends ValueTypeSupported>(\n value: PTableValue<Absent, NA, DataType>,\n isNA: (value: PTableValue<Absent, NA, DataType>) => value is NA,\n): value is PTableValueAxis<Absent, DataType>;\nexport function isPTableValueAxis<Absent, DataType extends ValueTypeSupported>(\n value: PTableValue<Absent, PTableNA, DataType>,\n): value is PTableValueAxis<Absent, DataType>;\nexport function isPTableValueAxis<\n Absent = PTableAbsent,\n NA = PTableNA,\n DataType extends ValueTypeSupported = ValueTypeSupported,\n>(\n value: PTableValue<Absent, NA, DataType>,\n isNA?: (value: PTableValue<Absent, NA, DataType>) => value is NA,\n): value is PTableValueAxis<Absent, DataType> {\n return !(isNA ? isNA(value) : isPTableNA(value));\n}\n\nfunction pTableValueImpl<\n FillAbsent = PTableAbsent,\n FillNA = PTableNA,\n DataType extends ValueType = ValueTypeSupported,\n>(\n column: PTableVectorTyped<ValueType>,\n row: number,\n options?: {\n absent?: FillAbsent;\n na?: FillNA;\n dataType?: DataType;\n },\n) {\n const valueType = column.type;\n if (valueType === ValueType.Bytes) {\n throw Error(\"Bytes not yet supported\");\n }\n\n if (\n options &&\n \"dataType\" in options &&\n options.dataType !== undefined &&\n options.dataType !== valueType\n ) {\n throw Error(`expected column of type ${options.dataType}, got ${valueType}`);\n }\n\n if (isValueAbsent(column, row)) {\n return options?.absent !== undefined ? options.absent : PTableAbsent;\n }\n\n if (isValueNA(column, row)) {\n return options?.na !== undefined ? options.na : PTableNA;\n }\n\n const value = column.data[row]!;\n switch (valueType) {\n case ValueType.Int:\n return value as PVectorDataInt[number];\n case ValueType.Long:\n return Number(value as PVectorDataLong[number]);\n case ValueType.Float:\n return value as PVectorDataFloat[number];\n case ValueType.Double:\n return value as PVectorDataDouble[number];\n case ValueType.String:\n return (value as PVectorDataString[number])!;\n }\n}\n\n/** Read PTableValue from PTable column at specified row */\nexport function pTableValue<DataType extends ValueType>(\n column: PTableVectorTyped<DataType>,\n row: number,\n): DataType extends ValueTypeSupported ? PTableValue<PTableAbsent, PTableNA, DataType> : never;\nexport function pTableValue<FillAbsent, DataType extends ValueType>(\n column: PTableVectorTyped<DataType>,\n row: number,\n options: {\n absent: FillAbsent;\n },\n): DataType extends ValueTypeSupported ? PTableValue<FillAbsent, PTableNA, DataType> : never;\nexport function pTableValue<FillNA, DataType extends ValueType>(\n column: PTableVectorTyped<DataType>,\n row: number,\n options: {\n na: FillNA;\n },\n): DataType extends ValueTypeSupported ? PTableValue<PTableAbsent, FillNA, DataType> : never;\nexport function pTableValue<FillNA, FillAbsent, DataType extends ValueType>(\n column: PTableVectorTyped<DataType>,\n row: number,\n options: {\n absent: FillAbsent;\n na: FillNA;\n },\n): DataType extends ValueTypeSupported ? PTableValue<FillAbsent, FillNA, DataType> : never;\nexport function pTableValue<FillAbsent, DataType extends ValueTypeSupported>(\n column: PTableVectorTyped<ValueType>,\n row: number,\n options: {\n absent: FillAbsent;\n dataType: DataType;\n },\n): PTableValue<FillAbsent, PTableNA>;\nexport function pTableValue<FillNA, DataType extends ValueTypeSupported>(\n column: PTableVectorTyped<ValueType>,\n row: number,\n options: {\n na: FillNA;\n dataType: DataType;\n },\n): PTableValue<PTableAbsent, FillNA, DataType>;\nexport function pTableValue<FillNA, FillAbsent, DataType extends ValueTypeSupported>(\n column: PTableVectorTyped<ValueType>,\n row: number,\n options: {\n absent: FillAbsent;\n na: FillNA;\n dataType: DataType;\n },\n): PTableValue<FillAbsent, FillNA, DataType>;\nexport function pTableValue<\n FillAbsent = PTableAbsent,\n FillNA = PTableNA,\n DataType extends ValueType = ValueTypeSupported,\n>(\n column: PTableVectorTyped<ValueType>,\n row: number,\n options?: {\n absent?: FillAbsent;\n na?: FillNA;\n dataType?: DataType;\n },\n) {\n return pTableValueImpl(column, row, options);\n}\n\nexport function pTableValueBranded<DataType extends ValueType>(\n column: PTableVectorTyped<DataType>,\n row: number,\n): DataType extends ValueTypeSupported\n ? PTableValueBranded<PTableAbsent, PTableNA, DataType>\n : never;\nexport function pTableValueBranded<FillAbsent, DataType extends ValueType>(\n column: PTableVectorTyped<DataType>,\n row: number,\n options: {\n absent: FillAbsent;\n },\n): DataType extends ValueTypeSupported ? PTableValueBranded<FillAbsent, PTableNA, DataType> : never;\nexport function pTableValueBranded<FillNA, DataType extends ValueType>(\n column: PTableVectorTyped<DataType>,\n row: number,\n options: {\n na: FillNA;\n },\n): DataType extends ValueTypeSupported ? PTableValueBranded<PTableAbsent, FillNA, DataType> : never;\nexport function pTableValueBranded<FillNA, FillAbsent, DataType extends ValueType>(\n column: PTableVectorTyped<DataType>,\n row: number,\n options: {\n absent: FillAbsent;\n na: FillNA;\n },\n): DataType extends ValueTypeSupported ? PTableValueBranded<FillAbsent, FillNA, DataType> : never;\nexport function pTableValueBranded<FillAbsent, DataType extends ValueTypeSupported>(\n column: PTableVectorTyped<ValueType>,\n row: number,\n options: {\n absent: FillAbsent;\n dataType: DataType;\n },\n): PTableValueBranded<FillAbsent, PTableNA>;\nexport function pTableValueBranded<FillNA, DataType extends ValueTypeSupported>(\n column: PTableVectorTyped<ValueType>,\n row: number,\n options: {\n na: FillNA;\n dataType: DataType;\n },\n): PTableValueBranded<PTableAbsent, FillNA, DataType>;\nexport function pTableValueBranded<FillNA, FillAbsent, DataType extends ValueTypeSupported>(\n column: PTableVectorTyped<ValueType>,\n row: number,\n options: {\n absent: FillAbsent;\n na: FillNA;\n dataType: DataType;\n },\n): PTableValueBranded<FillAbsent, FillNA, DataType>;\nexport function pTableValueBranded<\n FillAbsent = PTableAbsent,\n FillNA = PTableNA,\n DataType extends ValueType = ValueTypeSupported,\n>(\n column: PTableVectorTyped<ValueType>,\n row: number,\n options?: {\n absent?: FillAbsent;\n na?: FillNA;\n dataType?: DataType;\n },\n) {\n return pTableValueImpl(column, row, options);\n}\n\n/** Used in requests to partially retrieve table's data */\nexport type TableRange = {\n /** Index of the first record to retrieve */\n readonly offset: number;\n\n /** Block length */\n readonly length: number;\n};\n\n/** Unified information about table shape */\nexport type PTableShape = {\n /** Number of unified table columns, including all axes and PColumn values */\n columns: number;\n\n /** Number of rows */\n rows: number;\n};\n"],"mappings":";;;AAiDA,SAAS,SAAS,WAAuB,QAAyB;CAChE,MAAM,aAAa,KAAK,MAAM,SAAS,EAAE;CACzC,MAAM,OAAO,KAAM,IAAK,SAAS;AACjC,SAAQ,UAAU,cAAc,QAAQ;;AAG1C,SAAS,cAAc,QAAsB,KAAsB;AACjE,QAAO,SAAS,OAAO,QAAQ,IAAI;;AAGrC,SAAS,UAAU,QAAsB,KAAsB;AAC7D,KAAI,OAAO,KAAM,QAAO,SAAS,OAAO,MAAM,IAAI;CAGlD,MAAM,YAAY,OAAO;CACzB,MAAM,QAAQ,OAAO,KAAK;AAC1B,SAAQ,WAAR;EACE,KAAK,UAAU,IACb,QAAQ,UAAqC;EAC/C,KAAK,UAAU,KACb,QAAQ,UAAsC,CAAC;EACjD,KAAK,UAAU,MACb,QAAO,OAAO,MAAM,MAAkC;EACxD,KAAK,UAAU,OACb,QAAO,OAAO,MAAM,MAAmC;EACzD,KAAK,UAAU,OACb,QAAQ,UAAwC;EAClD,KAAK,UAAU,MACb,QAAQ,UAAuC;EACjD,QACE,OAAM,MAAM,0BAA0B,YAA4B;;;AAIxE,MAAa,eAAe,EAAE,MAAM,UAAU;;AAI9C,SAAgB,eAAe,OAAuC;AACpE,QAAO,OAAO,UAAU,YAAY,UAAU,QAAQ,UAAU,SAAS,MAAM,SAAS;;AAG1F,MAAa,WAAW;;AAIxB,SAAgB,WAAW,OAAmC;AAC5D,QAAO,UAAU;;AAiDnB,SAAgB,kBAKd,OACA,MAC4C;AAC5C,QAAO,EAAE,OAAO,KAAK,MAAM,GAAG,WAAW,MAAM;;AAGjD,SAAS,gBAKP,QACA,KACA,SAKA;CACA,MAAM,YAAY,OAAO;AACzB,KAAI,cAAc,UAAU,MAC1B,OAAM,MAAM,0BAA0B;AAGxC,KACE,WACA,cAAc,WACd,QAAQ,aAAa,UACrB,QAAQ,aAAa,UAErB,OAAM,MAAM,2BAA2B,QAAQ,SAAS,QAAQ,YAAY;AAG9E,KAAI,cAAc,QAAQ,IAAI,CAC5B,QAAO,SAAS,WAAW,SAAY,QAAQ,SAAS;AAG1D,KAAI,UAAU,QAAQ,IAAI,CACxB,QAAO,SAAS,OAAO,SAAY,QAAQ,KAAK;CAGlD,MAAM,QAAQ,OAAO,KAAK;AAC1B,SAAQ,WAAR;EACE,KAAK,UAAU,IACb,QAAO;EACT,KAAK,UAAU,KACb,QAAO,OAAO,MAAiC;EACjD,KAAK,UAAU,MACb,QAAO;EACT,KAAK,UAAU,OACb,QAAO;EACT,KAAK,UAAU,OACb,QAAQ;;;AAwDd,SAAgB,YAKd,QACA,KACA,SAKA;AACA,QAAO,gBAAgB,QAAQ,KAAK,QAAQ;;AAwD9C,SAAgB,mBAKd,QACA,KACA,SAKA;AACA,QAAO,gBAAgB,QAAQ,KAAK,QAAQ"}
|