df-script 1.5.0 → 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (133) hide show
  1. package/README.md +124 -8
  2. package/dist/api.d.ts +1 -1
  3. package/dist/columnExpressions/ColumnExpr.d.ts +2 -2
  4. package/dist/columnExpressions/functions/coalesce.d.ts +2 -2
  5. package/dist/columnExpressions/functions/element.d.ts +1 -1
  6. package/dist/columnExpressions/functions/when.d.ts +2 -2
  7. package/dist/columnExpressions/index.d.ts +1 -1
  8. package/dist/columnExpressions/mixins/AggregationExpr.d.ts +2 -2
  9. package/dist/columnExpressions/mixins/ArithmeticExpr.d.ts +11 -10
  10. package/dist/columnExpressions/mixins/ArrayExpr.d.ts +39 -0
  11. package/dist/columnExpressions/mixins/ListExpr.d.ts +2 -2
  12. package/dist/columnExpressions/mixins/StringExpr.d.ts +2 -2
  13. package/dist/columnExpressions/types.d.ts +1 -0
  14. package/dist/constants.d.ts +11 -0
  15. package/dist/dataframe/dataframe.d.ts +1 -1
  16. package/dist/datatypes/index.d.ts +3 -2
  17. package/dist/datatypes/types.d.ts +7 -7
  18. package/dist/index.js +6 -6
  19. package/dist/types.d.ts +4 -2
  20. package/dist/utils/array.d.ts +217 -0
  21. package/dist/utils/binary.d.ts +3 -0
  22. package/dist/utils/date.d.ts +21 -35
  23. package/dist/utils/guards.d.ts +11 -10
  24. package/dist/utils/index.d.ts +3 -2
  25. package/dist/utils/list.d.ts +23 -1
  26. package/dist/utils/number.d.ts +14 -29
  27. package/dist/utils/object.d.ts +26 -0
  28. package/dist/utils/string.d.ts +3 -5
  29. package/package.json +2 -2
  30. package/dist/api.js +0 -26
  31. package/dist/bundle.min.js +0 -1
  32. package/dist/columnExpressions/ColumnExpr.js +0 -219
  33. package/dist/columnExpressions/ExprBase.js +0 -92
  34. package/dist/columnExpressions/constants.js +0 -7
  35. package/dist/columnExpressions/functions/all.js +0 -11
  36. package/dist/columnExpressions/functions/coalesce.js +0 -44
  37. package/dist/columnExpressions/functions/element.js +0 -11
  38. package/dist/columnExpressions/functions/exclude.js +0 -13
  39. package/dist/columnExpressions/functions/implode.js +0 -7
  40. package/dist/columnExpressions/functions/lit.js +0 -17
  41. package/dist/columnExpressions/functions/repeat.d.ts +0 -47
  42. package/dist/columnExpressions/functions/repeat.js +0 -131
  43. package/dist/columnExpressions/functions/seq_range.js +0 -91
  44. package/dist/columnExpressions/functions/when.js +0 -85
  45. package/dist/columnExpressions/index.js +0 -38
  46. package/dist/columnExpressions/mixins/AggregationExpr.js +0 -76
  47. package/dist/columnExpressions/mixins/ArithmeticExpr.js +0 -131
  48. package/dist/columnExpressions/mixins/BooleanExpr.d.ts +0 -40
  49. package/dist/columnExpressions/mixins/BooleanExpr.js +0 -67
  50. package/dist/columnExpressions/mixins/ComparisonExpr.js +0 -250
  51. package/dist/columnExpressions/mixins/ListExpr.js +0 -224
  52. package/dist/columnExpressions/mixins/LogicalExpr.js +0 -53
  53. package/dist/columnExpressions/mixins/ManipulationExpr.js +0 -71
  54. package/dist/columnExpressions/mixins/NumericExpr.d.ts +0 -92
  55. package/dist/columnExpressions/mixins/NumericExpr.js +0 -259
  56. package/dist/columnExpressions/mixins/StringExpr.js +0 -237
  57. package/dist/columnExpressions/mixins/StructExpr.js +0 -139
  58. package/dist/columnExpressions/mixins/TemporalExpr.js +0 -126
  59. package/dist/columnExpressions/mixins/WindowExpr.js +0 -151
  60. package/dist/columnExpressions/types.js +0 -2
  61. package/dist/columnExpressions/utils.js +0 -45
  62. package/dist/dataframe/constants.js +0 -7
  63. package/dist/dataframe/dataframe.js +0 -990
  64. package/dist/dataframe/grouped/grouped.js +0 -114
  65. package/dist/dataframe/index.js +0 -20
  66. package/dist/dataframe/types.js +0 -2
  67. package/dist/dataframe/utils.js +0 -307
  68. package/dist/datatypes/DataType.js +0 -76
  69. package/dist/datatypes/index.js +0 -46
  70. package/dist/datatypes/types/Binary.d.ts +0 -9
  71. package/dist/datatypes/types/Binary.js +0 -18
  72. package/dist/datatypes/types/Boolean.d.ts +0 -9
  73. package/dist/datatypes/types/Boolean.js +0 -19
  74. package/dist/datatypes/types/Date.d.ts +0 -8
  75. package/dist/datatypes/types/Date.js +0 -21
  76. package/dist/datatypes/types/Datetime.d.ts +0 -8
  77. package/dist/datatypes/types/Datetime.js +0 -17
  78. package/dist/datatypes/types/Decimal.d.ts +0 -10
  79. package/dist/datatypes/types/Decimal.js +0 -28
  80. package/dist/datatypes/types/Duration.d.ts +0 -8
  81. package/dist/datatypes/types/Duration.js +0 -17
  82. package/dist/datatypes/types/Float32.d.ts +0 -8
  83. package/dist/datatypes/types/Float32.js +0 -17
  84. package/dist/datatypes/types/Float64.d.ts +0 -8
  85. package/dist/datatypes/types/Float64.js +0 -17
  86. package/dist/datatypes/types/Int16.d.ts +0 -8
  87. package/dist/datatypes/types/Int16.js +0 -17
  88. package/dist/datatypes/types/Int32.d.ts +0 -8
  89. package/dist/datatypes/types/Int32.js +0 -17
  90. package/dist/datatypes/types/Int64.d.ts +0 -8
  91. package/dist/datatypes/types/Int64.js +0 -17
  92. package/dist/datatypes/types/Int8.d.ts +0 -8
  93. package/dist/datatypes/types/Int8.js +0 -17
  94. package/dist/datatypes/types/List.d.ts +0 -10
  95. package/dist/datatypes/types/List.js +0 -31
  96. package/dist/datatypes/types/Null.d.ts +0 -9
  97. package/dist/datatypes/types/Null.js +0 -17
  98. package/dist/datatypes/types/Object.d.ts +0 -9
  99. package/dist/datatypes/types/Object.js +0 -17
  100. package/dist/datatypes/types/Struct.d.ts +0 -14
  101. package/dist/datatypes/types/Struct.js +0 -39
  102. package/dist/datatypes/types/Time.d.ts +0 -8
  103. package/dist/datatypes/types/Time.js +0 -29
  104. package/dist/datatypes/types/UInt16.d.ts +0 -8
  105. package/dist/datatypes/types/UInt16.js +0 -17
  106. package/dist/datatypes/types/UInt32.d.ts +0 -8
  107. package/dist/datatypes/types/UInt32.js +0 -17
  108. package/dist/datatypes/types/UInt64.d.ts +0 -8
  109. package/dist/datatypes/types/UInt64.js +0 -17
  110. package/dist/datatypes/types/UInt8.d.ts +0 -8
  111. package/dist/datatypes/types/UInt8.js +0 -17
  112. package/dist/datatypes/types/Utf8.d.ts +0 -10
  113. package/dist/datatypes/types/Utf8.js +0 -20
  114. package/dist/datatypes/types.js +0 -290
  115. package/dist/exceptions/index.js +0 -46
  116. package/dist/exceptions/utils.js +0 -28
  117. package/dist/functions/concat.js +0 -260
  118. package/dist/functions/index.js +0 -9
  119. package/dist/functions/read_csv.js +0 -53
  120. package/dist/functions/read_json.js +0 -21
  121. package/dist/functions/transpose.d.ts +0 -7
  122. package/dist/functions/transpose.js +0 -84
  123. package/dist/types.js +0 -2
  124. package/dist/utils/boolean.d.ts +0 -1
  125. package/dist/utils/boolean.js +0 -18
  126. package/dist/utils/csv.js +0 -313
  127. package/dist/utils/date.js +0 -348
  128. package/dist/utils/guards.js +0 -112
  129. package/dist/utils/index.js +0 -23
  130. package/dist/utils/json.js +0 -217
  131. package/dist/utils/list.js +0 -361
  132. package/dist/utils/number.js +0 -401
  133. package/dist/utils/string.js +0 -209
@@ -1,250 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ComparisonExpr = void 0;
4
- const ExprBase_1 = require("../ExprBase");
5
- const utils_1 = require("../utils");
6
- const utils_2 = require("../../utils");
7
- function computeIsIn(vArray, columns, values, invert) {
8
- const height = vArray.length;
9
- const result = new Array(height);
10
- if (values && typeof values === 'object' && 'evaluate' in values) {
11
- const resolved = values.evaluate(columns, height);
12
- for (let i = 0; i < height; i++) {
13
- const v = vArray[i];
14
- if (v == null) {
15
- result[i] = null;
16
- }
17
- else {
18
- const candidates = resolved[i];
19
- const set = new Set();
20
- if ((0, utils_2.isArrayOrTypedArray)(candidates)) {
21
- const cLen = candidates.length;
22
- for (let j = 0; j < cLen; j++) {
23
- set.add((0, utils_2.toCanonicalString)(candidates[j]));
24
- }
25
- }
26
- else {
27
- set.add((0, utils_2.toCanonicalString)(candidates));
28
- }
29
- const hasVal = set.has((0, utils_2.toCanonicalString)(v));
30
- result[i] = invert ? !hasVal : hasVal;
31
- }
32
- }
33
- }
34
- else {
35
- const arr = (0, utils_2.isArrayOrTypedArray)(values) ? values : [];
36
- const set = new Set();
37
- const arrLen = arr.length;
38
- for (let j = 0; j < arrLen; j++) {
39
- set.add((0, utils_2.toCanonicalString)(arr[j]));
40
- }
41
- for (let i = 0; i < height; i++) {
42
- const v = vArray[i];
43
- if (v == null) {
44
- result[i] = null;
45
- }
46
- else {
47
- const hasVal = set.has((0, utils_2.toCanonicalString)(v));
48
- result[i] = invert ? !hasVal : hasVal;
49
- }
50
- }
51
- }
52
- return result;
53
- }
54
- function evaluateDuplication(vArray, checkDuplicate) {
55
- const { frequencies } = (0, utils_2.getUniqueListStats)(vArray, { strict: true });
56
- const height = vArray.length;
57
- const result = new Array(height);
58
- for (let i = 0; i < height; i++) {
59
- const count = frequencies.get(vArray[i]) || 0;
60
- result[i] = checkDuplicate ? count > 1 : count === 1;
61
- }
62
- return result;
63
- }
64
- function compareMissing(vArray, rResolved, invert) {
65
- const height = vArray.length;
66
- const result = new Array(height);
67
- if ((0, utils_2.isArrayOrTypedArray)(rResolved)) {
68
- for (let i = 0; i < height; i++) {
69
- const v = vArray[i];
70
- const r = rResolved[i];
71
- if (v == null && r == null) {
72
- result[i] = !invert;
73
- }
74
- else if (v == null || r == null) {
75
- result[i] = invert;
76
- }
77
- else {
78
- result[i] = invert ? v !== r : v === r;
79
- }
80
- }
81
- }
82
- else {
83
- for (let i = 0; i < height; i++) {
84
- const v = vArray[i];
85
- if (v == null && rResolved == null) {
86
- result[i] = !invert;
87
- }
88
- else if (v == null || rResolved == null) {
89
- result[i] = invert;
90
- }
91
- else {
92
- result[i] = invert ? v !== rResolved : v === rResolved;
93
- }
94
- }
95
- }
96
- return result;
97
- }
98
- class ComparisonExpr extends ExprBase_1.ExprBase {
99
- between(lower, upper, closed = "both") {
100
- return (0, ExprBase_1.derive)(this, (vArray, columns) => {
101
- const height = vArray.length;
102
- const lResolved = this._resolve(lower, columns, height);
103
- const uResolved = this._resolve(upper, columns, height);
104
- const result = new Array(height);
105
- const isLArray = (0, utils_2.isArrayOrTypedArray)(lResolved);
106
- const isUArray = (0, utils_2.isArrayOrTypedArray)(uResolved);
107
- for (let i = 0; i < height; i++) {
108
- const v = vArray[i];
109
- const l = isLArray ? lResolved[i] : lResolved;
110
- const u = isUArray ? uResolved[i] : uResolved;
111
- if (v == null || l == null || u == null) {
112
- result[i] = null;
113
- }
114
- else {
115
- const geLower = closed === "both" || closed === "left" ? v >= l : v > l;
116
- const leUpper = closed === "both" || closed === "right" ? v <= u : v < u;
117
- result[i] = geLower && leUpper;
118
- }
119
- }
120
- return result;
121
- });
122
- }
123
- eq(val) {
124
- return (0, ExprBase_1.derive)(this, (0, utils_1.kleeneBinary)(this, val, (v, r) => v === r));
125
- }
126
- eq_missing(val) {
127
- return (0, ExprBase_1.derive)(this, (vArray, columns) => {
128
- const rResolved = this._resolve(val, columns, vArray.length);
129
- return compareMissing(vArray, rResolved, false);
130
- });
131
- }
132
- ge(val) {
133
- return (0, ExprBase_1.derive)(this, (0, utils_1.kleeneBinary)(this, val, (v, r) => v >= r));
134
- }
135
- gt(val) {
136
- return (0, ExprBase_1.derive)(this, (0, utils_1.kleeneBinary)(this, val, (v, r) => v > r));
137
- }
138
- has_nulls() {
139
- return this._deriveAgg((v) => {
140
- for (let i = 0; i < v.length; i++) {
141
- if (v[i] == null)
142
- return true;
143
- }
144
- return false;
145
- });
146
- }
147
- is_close(other, { abs_tol = 1e-8, rel_tol = 1e-8, nans_equal = false } = {}) {
148
- return (0, ExprBase_1.derive)(this, (vArray, columns) => {
149
- const height = vArray.length;
150
- const otherVal = this._resolve(other, columns, height);
151
- const isOtherArray = (0, utils_2.isArrayOrTypedArray)(otherVal);
152
- const result = new Array(height);
153
- for (let i = 0; i < height; i++) {
154
- const v = vArray[i];
155
- const o = isOtherArray ? otherVal[i] : otherVal;
156
- if (v == null || o == null) {
157
- result[i] = null;
158
- }
159
- else if ((0, utils_2.isValidNumber)(v) && (0, utils_2.isValidNumber)(o)) {
160
- const absDiff = Math.abs(v - o);
161
- const threshold = Math.max(rel_tol * Math.max(Math.abs(v), Math.abs(o)), abs_tol);
162
- result[i] = absDiff <= threshold;
163
- }
164
- else if (Number.isNaN(v) && Number.isNaN(o)) {
165
- result[i] = nans_equal;
166
- }
167
- else {
168
- result[i] = (v === o);
169
- }
170
- }
171
- return result;
172
- });
173
- }
174
- is_duplicated() {
175
- return (0, ExprBase_1.derive)(this, (vArray) => evaluateDuplication(vArray, true));
176
- }
177
- is_empty({ ignoreNulls = false } = {}) {
178
- return (0, ExprBase_1.derive)(this, (0, utils_1.kleeneUnary)((v) => {
179
- if (typeof v === "string") {
180
- return v.length === 0;
181
- }
182
- if ((0, utils_2.isArrayOrTypedArray)(v)) {
183
- if (ignoreNulls) {
184
- return (0, utils_2.isArrayOfType)(v, "nullish", {
185
- mode: "every"
186
- });
187
- }
188
- return v.length === 0;
189
- }
190
- return null;
191
- }));
192
- }
193
- is_finite() {
194
- return (0, ExprBase_1.derive)(this, (0, utils_1.kleeneUnary)(Number.isFinite));
195
- }
196
- is_in(values) {
197
- return (0, ExprBase_1.derive)(this, (vArray, columns) => computeIsIn(vArray, columns, values, false));
198
- }
199
- is_infinite() {
200
- return (0, ExprBase_1.derive)(this, (0, utils_1.kleeneUnary)((v) => v === Infinity || v === -Infinity));
201
- }
202
- is_nan() {
203
- return (0, ExprBase_1.derive)(this, (0, utils_1.kleeneUnary)(Number.isNaN));
204
- }
205
- is_not_nan() {
206
- return (0, ExprBase_1.derive)(this, (0, utils_1.kleeneUnary)((v) => !Number.isNaN(v)));
207
- }
208
- is_not_null() {
209
- return (0, ExprBase_1.derive)(this, (vArray) => {
210
- const height = vArray.length;
211
- const result = new Array(height);
212
- for (let i = 0; i < height; i++) {
213
- result[i] = vArray[i] != null;
214
- }
215
- return result;
216
- });
217
- }
218
- is_null() {
219
- return (0, ExprBase_1.derive)(this, (vArray) => {
220
- const height = vArray.length;
221
- const result = new Array(height);
222
- for (let i = 0; i < height; i++) {
223
- result[i] = vArray[i] == null;
224
- }
225
- return result;
226
- });
227
- }
228
- is_unique() {
229
- return (0, ExprBase_1.derive)(this, (vArray) => evaluateDuplication(vArray, false));
230
- }
231
- le(val) {
232
- return (0, ExprBase_1.derive)(this, (0, utils_1.kleeneBinary)(this, val, (v, r) => v <= r));
233
- }
234
- lt(val) {
235
- return (0, ExprBase_1.derive)(this, (0, utils_1.kleeneBinary)(this, val, (v, r) => v < r));
236
- }
237
- ne(val) {
238
- return (0, ExprBase_1.derive)(this, (0, utils_1.kleeneBinary)(this, val, (v, r) => v !== r));
239
- }
240
- ne_missing(val) {
241
- return (0, ExprBase_1.derive)(this, (vArray, columns) => {
242
- const rResolved = this._resolve(val, columns, vArray.length);
243
- return compareMissing(vArray, rResolved, true);
244
- });
245
- }
246
- not_in(values) {
247
- return (0, ExprBase_1.derive)(this, (vArray, columns) => computeIsIn(vArray, columns, values, true));
248
- }
249
- }
250
- exports.ComparisonExpr = ComparisonExpr;
@@ -1,224 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ListExpr = exports.ListExprNamespace = void 0;
4
- const ExprBase_1 = require("../ExprBase");
5
- const utils_1 = require("../utils");
6
- const utils_2 = require("../../utils");
7
- const exceptions_1 = require("../../exceptions");
8
- const constants_1 = require("../constants");
9
- class ListExprNamespace {
10
- expr;
11
- constructor(expr) {
12
- this.expr = expr;
13
- }
14
- _deriveList(fn) {
15
- return (0, ExprBase_1.derive)(this.expr, (0, utils_1.kleeneUnary)((v) => {
16
- return (0, utils_2.isArrayOrTypedArray)(v) ? fn(v) : null;
17
- }));
18
- }
19
- all() {
20
- return this._deriveList((arr) => (0, utils_2.isArrayOfType)(arr, (x) => !!x, { mode: "every" }));
21
- }
22
- any() {
23
- return this._deriveList((arr) => (0, utils_2.isArrayOfType)(arr, (x) => !!x, { mode: "some" }));
24
- }
25
- contains(item) {
26
- return this._deriveList((arr) => arr.includes(item));
27
- }
28
- contains_all(items) {
29
- return this._deriveList((arr) => (0, utils_2.isArrayOfType)(items, (x) => arr.includes(x), { mode: "every" }));
30
- }
31
- contains_any(items) {
32
- return this._deriveList((arr) => (0, utils_2.isArrayOfType)(items, (x) => arr.includes(x), { mode: "some" }));
33
- }
34
- count_matches(item) {
35
- return this._deriveList((arr) => {
36
- let count = 0;
37
- const len = arr.length;
38
- for (let i = 0; i < len; i++) {
39
- if (arr[i] === item) {
40
- count++;
41
- }
42
- }
43
- return count;
44
- });
45
- }
46
- drop_nulls() {
47
- return this._deriveList((arr) => {
48
- const len = arr.length;
49
- const result = [];
50
- for (let i = 0; i < len; i++) {
51
- if (arr[i] != null)
52
- result.push(arr[i]);
53
- }
54
- return result;
55
- });
56
- }
57
- explode({ empty_as_null = true, keep_nulls = true } = {}) {
58
- return (0, ExprBase_1.derive)(this.expr, (vArray) => {
59
- const height = vArray.length;
60
- let newHeight = 0;
61
- for (let i = 0; i < height; i++) {
62
- const val = vArray[i];
63
- if ((0, utils_2.isArrayOrTypedArray)(val)) {
64
- newHeight += val.length || (empty_as_null ? 1 : 0);
65
- continue;
66
- }
67
- if (val != null) {
68
- newHeight += 1;
69
- continue;
70
- }
71
- if (keep_nulls) {
72
- newHeight += 1;
73
- }
74
- }
75
- const res = new Array(newHeight);
76
- const rowMap = new Int32Array(newHeight);
77
- let idx = 0;
78
- for (let i = 0; i < height; i++) {
79
- const val = vArray[i];
80
- if ((0, utils_2.isArrayOrTypedArray)(val)) {
81
- const len = val.length;
82
- if (len > 0) {
83
- for (let j = 0; j < len; j++) {
84
- rowMap[idx] = i;
85
- res[idx++] = val[j];
86
- }
87
- continue;
88
- }
89
- if (empty_as_null) {
90
- rowMap[idx] = i;
91
- res[idx++] = null;
92
- }
93
- continue;
94
- }
95
- if (val != null) {
96
- rowMap[idx] = i;
97
- res[idx++] = val;
98
- continue;
99
- }
100
- if (keep_nulls) {
101
- rowMap[idx] = i;
102
- res[idx++] = null;
103
- }
104
- }
105
- res.rowMap = rowMap;
106
- return res;
107
- });
108
- }
109
- first(null_on_oob = true) {
110
- return this.get(0, null_on_oob);
111
- }
112
- gather(indices, null_on_oob = true) {
113
- return this._deriveList((arr) => {
114
- const len = arr.length;
115
- const idxs = (0, utils_2.isArrayOrTypedArray)(indices) ? indices : [indices];
116
- const numIndices = idxs.length;
117
- const res = new Array(numIndices);
118
- for (let i = 0; i < numIndices; i++) {
119
- const index = idxs[i];
120
- const val = arr.at(index);
121
- if (val === undefined && !null_on_oob) {
122
- throw new exceptions_1.ComputeError(`Index ${index} is out of bounds for list of length ${len}`);
123
- }
124
- res[i] = val ?? null;
125
- }
126
- return res;
127
- });
128
- }
129
- gather_every(options = {}) {
130
- return this._deriveList((arr) => (0, utils_2.stepSliceList)(arr, options));
131
- }
132
- get(index, null_on_oob = true) {
133
- return this._deriveList((arr) => {
134
- const val = arr.at(index);
135
- if (val === undefined && !null_on_oob) {
136
- throw new exceptions_1.ComputeError(`Index ${index} is out of bounds for list of length ${arr.length}`);
137
- }
138
- return val ?? null;
139
- });
140
- }
141
- join(separator = ",", options = {}) {
142
- return this._deriveList((arr) => (0, utils_2.joinList)(arr, separator, options));
143
- }
144
- last(null_on_oob = true) {
145
- return this.get(-1, null_on_oob);
146
- }
147
- len() {
148
- return this.lengths();
149
- }
150
- lengths() {
151
- return this._deriveList((arr) => arr.length);
152
- }
153
- max() {
154
- return this._deriveList((arr) => (0, utils_2.getListStats)(arr).max);
155
- }
156
- mean() {
157
- return this._deriveList((arr) => (0, utils_2.getListStats)(arr).mean);
158
- }
159
- median() {
160
- return this._deriveList((arr) => (0, utils_2.computeMedian)(arr));
161
- }
162
- min() {
163
- return this._deriveList((arr) => (0, utils_2.getListStats)(arr).min);
164
- }
165
- mode() {
166
- return this._deriveList((arr) => (0, utils_2.computeMode)(arr));
167
- }
168
- n_unique(options = {}) {
169
- return this._deriveList((arr) => (0, utils_2.getUniqueListStats)(arr, options).count);
170
- }
171
- reverse() {
172
- return this._deriveList((arr) => arr.slice().reverse());
173
- }
174
- slice(offset, length) {
175
- return this._deriveList((arr) => {
176
- const len = arr.length;
177
- const start = offset < 0 ? Math.max(0, len + offset) : offset;
178
- const end = length !== undefined ? start + length : len;
179
- return arr.slice(start, end);
180
- });
181
- }
182
- sort(descending = false) {
183
- return this._deriveList((arr) => (0, utils_2.sortList)(arr, descending));
184
- }
185
- sum() {
186
- return this._deriveList((arr) => (0, utils_2.getListStats)(arr).sum);
187
- }
188
- unique(options = {}) {
189
- return this._deriveList((arr) => (0, utils_2.getUniqueListStats)(arr, options).values);
190
- }
191
- eval(expr) {
192
- return (0, ExprBase_1.derive)(this.expr, (vArray, columns) => {
193
- const height = vArray.length;
194
- const result = new Array(height);
195
- for (let i = 0; i < height; i++) {
196
- const val = vArray[i];
197
- if (!(0, utils_2.isArrayOrTypedArray)(val)) {
198
- result[i] = null;
199
- continue;
200
- }
201
- const subHeight = val.length;
202
- const subColumns = { ...columns, [constants_1.ELEMENT_MARKER]: val };
203
- const isGlobalAgg = expr.aggFn != null && (expr.partitionBy == null || expr.partitionBy.length === 0);
204
- if (isGlobalAgg) {
205
- const preOpsIdx = expr.groupingOpsIndex !== undefined ? expr.groupingOpsIndex : expr.ops.length;
206
- const preVal = expr.evaluatePre(preOpsIdx, subColumns, subHeight);
207
- const aggVal = expr.aggFn(Array.from(preVal));
208
- result[i] = expr.evaluatePost(preOpsIdx, [aggVal], subColumns);
209
- }
210
- else {
211
- result[i] = (0, utils_1.evaluateExpression)(expr, subColumns, subHeight);
212
- }
213
- }
214
- return result;
215
- });
216
- }
217
- }
218
- exports.ListExprNamespace = ListExprNamespace;
219
- class ListExpr extends ExprBase_1.ExprBase {
220
- get list() {
221
- return new ListExprNamespace(this);
222
- }
223
- }
224
- exports.ListExpr = ListExpr;
@@ -1,53 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.LogicalExpr = void 0;
4
- const ExprBase_1 = require("../ExprBase");
5
- const utils_1 = require("../utils");
6
- const utils_2 = require("../../utils");
7
- class LogicalExpr extends ExprBase_1.ExprBase {
8
- and(other) {
9
- return (0, ExprBase_1.derive)(this, (vArray, columns) => {
10
- const height = vArray.length;
11
- const otherVal = this._resolve(other, columns, height);
12
- const isOtherArray = (0, utils_2.isArrayOrTypedArray)(otherVal);
13
- const result = new Array(height);
14
- for (let i = 0; i < height; i++) {
15
- const v = vArray[i];
16
- const w = isOtherArray ? otherVal[i] : otherVal;
17
- if (v === false || w === false)
18
- result[i] = false;
19
- else if (v == null || w == null)
20
- result[i] = null;
21
- else
22
- result[i] = true;
23
- }
24
- return result;
25
- });
26
- }
27
- not() {
28
- return (0, ExprBase_1.derive)(this, (0, utils_1.kleeneUnary)((v) => !v));
29
- }
30
- or(other) {
31
- return (0, ExprBase_1.derive)(this, (vArray, columns) => {
32
- const height = vArray.length;
33
- const otherVal = this._resolve(other, columns, height);
34
- const isOtherArray = (0, utils_2.isArrayOrTypedArray)(otherVal);
35
- const result = new Array(height);
36
- for (let i = 0; i < height; i++) {
37
- const v = vArray[i];
38
- const w = isOtherArray ? otherVal[i] : otherVal;
39
- if (v === true || w === true)
40
- result[i] = true;
41
- else if (v == null || w == null)
42
- result[i] = null;
43
- else
44
- result[i] = false;
45
- }
46
- return result;
47
- });
48
- }
49
- xor(other) {
50
- return (0, ExprBase_1.derive)(this, (0, utils_1.kleeneBinary)(this, other, (v, w) => !!v !== !!w));
51
- }
52
- }
53
- exports.LogicalExpr = LogicalExpr;
@@ -1,71 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ManipulationExpr = void 0;
4
- const ExprBase_1 = require("../ExprBase");
5
- const utils_1 = require("../../utils");
6
- class ManipulationExpr extends ExprBase_1.ExprBase {
7
- fill_null({ value = undefined, strategy = undefined, limit = undefined } = {}) {
8
- return (0, ExprBase_1.derive)(this, (vArray, columns) => {
9
- const height = vArray.length;
10
- const result = Array.from(vArray);
11
- if (strategy !== undefined) {
12
- if (strategy === "zero" || strategy === "one" || strategy === "min" || strategy === "max" || strategy === "mean") {
13
- let fillVal;
14
- if (strategy === "zero") {
15
- fillVal = 0;
16
- }
17
- else if (strategy === "one") {
18
- fillVal = 1;
19
- }
20
- else {
21
- const stats = (0, utils_1.getListStats)(vArray);
22
- fillVal = stats[strategy];
23
- }
24
- (0, utils_1.fillSequence)(result, fillVal, {
25
- mode: "constant",
26
- condition: (v) => v == null
27
- });
28
- }
29
- else if (strategy === "forward" || strategy === "backward") {
30
- const isForward = strategy === "forward";
31
- let lastVal = null;
32
- let consecCount = 0;
33
- (0, utils_1.fillSequence)(result, null, {
34
- mode: "independent",
35
- reverse: !isForward,
36
- step: ({ originalValue }) => {
37
- if (originalValue != null) {
38
- lastVal = originalValue;
39
- consecCount = 0;
40
- return originalValue;
41
- }
42
- if (lastVal !== null && (limit === undefined || consecCount < limit)) {
43
- consecCount++;
44
- return lastVal;
45
- }
46
- return null;
47
- }
48
- });
49
- }
50
- else {
51
- throw new Error(`Unsupported fill_null strategy: "${strategy}"`);
52
- }
53
- }
54
- else {
55
- const resolved = this._resolve(value, columns, height);
56
- const isArr = (0, utils_1.isArrayOrTypedArray)(resolved);
57
- (0, utils_1.fillSequence)(result, null, {
58
- mode: "independent",
59
- step: ({ index, originalValue }) => originalValue == null ? (isArr ? resolved[index] : resolved) : originalValue
60
- });
61
- }
62
- return result;
63
- });
64
- }
65
- reverse() {
66
- return (0, ExprBase_1.derive)(this, (vArray) => {
67
- return vArray.slice().reverse();
68
- });
69
- }
70
- }
71
- exports.ManipulationExpr = ManipulationExpr;
@@ -1,92 +0,0 @@
1
- import type { IExpr } from "../../types";
2
- import type { ExprConstructor, RandomOptions } from "../types";
3
- export declare const NumericExpr: <TBase extends ExprConstructor>(Base: TBase) => {
4
- new (...args: any[]): {
5
- abs(): /*elided*/ any;
6
- acos(): /*elided*/ any;
7
- acosh(): /*elided*/ any;
8
- add(val: number | IExpr | null): /*elided*/ any;
9
- asin(): /*elided*/ any;
10
- asinh(): /*elided*/ any;
11
- atan(): /*elided*/ any;
12
- atanh(): /*elided*/ any;
13
- cbrt(): /*elided*/ any;
14
- ceil(): /*elided*/ any;
15
- clip(lower?: number | null, upper?: number | null): /*elided*/ any;
16
- cos(): /*elided*/ any;
17
- cosh(): /*elided*/ any;
18
- degrees(): /*elided*/ any;
19
- div(val: number | IExpr | null): /*elided*/ any;
20
- exp(): /*elided*/ any;
21
- expm1(): /*elided*/ any;
22
- floor(): /*elided*/ any;
23
- floordiv(val: number | IExpr | null): /*elided*/ any;
24
- hypot(val: number | IExpr | null): /*elided*/ any;
25
- log(base?: number): /*elided*/ any;
26
- log1p(): /*elided*/ any;
27
- mod(val: number | IExpr | null): /*elided*/ any;
28
- mul(val: number | IExpr | null): /*elided*/ any;
29
- negate(): /*elided*/ any;
30
- pow(val: number | IExpr | null): /*elided*/ any;
31
- radians(): /*elided*/ any;
32
- rand(seed?: number, { min, max, integer }?: RandomOptions): /*elided*/ any;
33
- round(decimals?: number): /*elided*/ any;
34
- sign(): /*elided*/ any;
35
- sin(): /*elided*/ any;
36
- sinh(): /*elided*/ any;
37
- sqrt(): /*elided*/ any;
38
- sub(val: number | IExpr | null): /*elided*/ any;
39
- tan(): /*elided*/ any;
40
- tanh(): /*elided*/ any;
41
- trunc(): /*elided*/ any;
42
- avg(): /*elided*/ any;
43
- mean(): /*elided*/ any;
44
- sum(): /*elided*/ any;
45
- std(): /*elided*/ any;
46
- min(): /*elided*/ any;
47
- max(): /*elided*/ any;
48
- median(): /*elided*/ any;
49
- quantile(q: number): /*elided*/ any;
50
- count(options?: {
51
- includeNulls?: boolean;
52
- }): /*elided*/ any;
53
- cum_max(reverse?: boolean): /*elided*/ any;
54
- cum_min(reverse?: boolean): /*elided*/ any;
55
- cum_prod(reverse?: boolean): /*elided*/ any;
56
- cum_sum(reverse?: boolean): /*elided*/ any;
57
- rolling_max(windowSize: number): /*elided*/ any;
58
- rolling_mean(windowSize: number): /*elided*/ any;
59
- rolling_median(windowSize: number): /*elided*/ any;
60
- rolling_min(windowSize: number): /*elided*/ any;
61
- rolling_quantile(quantile: number, windowSize: number): /*elided*/ any;
62
- rolling_std(windowSize: number): /*elided*/ any;
63
- rolling_sum(windowSize: number): /*elided*/ any;
64
- ops: import("../../types").OpFn[];
65
- colName?: string;
66
- outputName?: string;
67
- isLiteral?: boolean;
68
- literalValue?: any;
69
- aggFn?: import("../../types").AggFn<any> | null;
70
- groupingOpsIndex?: number;
71
- partitionOpsIndex?: number;
72
- partitionBy?: (string | IExpr)[] | null;
73
- windowOp?: {
74
- type: string;
75
- [key: string]: any;
76
- } | null;
77
- isWindow?: boolean;
78
- alias(name: string): /*elided*/ any;
79
- cast(dataType: import("../../types").RegisteredDataType): /*elided*/ any;
80
- _resolve(val: any, columns: import("../../types").ColumnDict, height: number): import("../../types").ColumnData | any;
81
- evaluate(columns: import("../../types").ColumnDict, height: number): import("../../types").ColumnData;
82
- evaluatePreGrouping(columns: import("../../types").ColumnDict, height: number): import("../../types").ColumnData;
83
- evaluatePostGrouping(aggregatedArray: any[], columns: import("../../types").ColumnDict): import("../../types").ColumnData;
84
- evaluatePrePartition(columns: import("../../types").ColumnDict, height: number): import("../../types").ColumnData;
85
- evaluatePostPartition(aggregatedArray: any[], columns: import("../../types").ColumnDict): import("../../types").ColumnData;
86
- evaluateWindow?(groupPreValues: any[], partitionIndices: number[], currentIndex: number): any;
87
- debug(label?: string): /*elided*/ any;
88
- _window(evaluateWindow: (this: IExpr, groupPreValues: any[], partitionIndices: number[], currentIndex: number) => any): /*elided*/ any;
89
- _rolling(windowSize: number, aggFn: (vals: any[]) => any): /*elided*/ any;
90
- _deriveAgg(fn: import("../../types").AggFn<any>): /*elided*/ any;
91
- };
92
- } & TBase;