df-script 1.4.0 → 1.5.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 (95) hide show
  1. package/README.md +83 -34
  2. package/dist/api.d.ts +16 -8
  3. package/dist/api.js +11 -3
  4. package/dist/columnExpressions/ColumnExpr.d.ts +26 -364
  5. package/dist/columnExpressions/ColumnExpr.js +199 -3
  6. package/dist/columnExpressions/ExprBase.d.ts +8 -11
  7. package/dist/columnExpressions/ExprBase.js +20 -61
  8. package/dist/columnExpressions/constants.d.ts +2 -0
  9. package/dist/columnExpressions/constants.js +3 -1
  10. package/dist/columnExpressions/functions/coalesce.js +8 -4
  11. package/dist/columnExpressions/functions/element.d.ts +5 -0
  12. package/dist/columnExpressions/functions/element.js +11 -0
  13. package/dist/columnExpressions/functions/implode.d.ts +3 -0
  14. package/dist/columnExpressions/functions/implode.js +7 -0
  15. package/dist/columnExpressions/functions/lit.d.ts +3 -1
  16. package/dist/columnExpressions/functions/lit.js +8 -13
  17. package/dist/columnExpressions/functions/repeat.d.ts +47 -0
  18. package/dist/columnExpressions/functions/repeat.js +131 -0
  19. package/dist/columnExpressions/functions/seq_range.d.ts +31 -0
  20. package/dist/columnExpressions/functions/seq_range.js +91 -0
  21. package/dist/columnExpressions/functions/when.js +8 -4
  22. package/dist/columnExpressions/index.d.ts +5 -2
  23. package/dist/columnExpressions/index.js +5 -48
  24. package/dist/columnExpressions/mixins/AggregationExpr.d.ts +25 -50
  25. package/dist/columnExpressions/mixins/AggregationExpr.js +69 -165
  26. package/dist/columnExpressions/mixins/ArithmeticExpr.d.ts +41 -66
  27. package/dist/columnExpressions/mixins/ArithmeticExpr.js +126 -138
  28. package/dist/columnExpressions/mixins/BooleanExpr.d.ts +40 -0
  29. package/dist/columnExpressions/mixins/BooleanExpr.js +67 -0
  30. package/dist/columnExpressions/mixins/ComparisonExpr.d.ts +31 -60
  31. package/dist/columnExpressions/mixins/ComparisonExpr.js +231 -370
  32. package/dist/columnExpressions/mixins/ListExpr.d.ts +15 -39
  33. package/dist/columnExpressions/mixins/ListExpr.js +124 -148
  34. package/dist/columnExpressions/mixins/LogicalExpr.d.ts +7 -33
  35. package/dist/columnExpressions/mixins/LogicalExpr.js +48 -49
  36. package/dist/columnExpressions/mixins/ManipulationExpr.d.ts +6 -31
  37. package/dist/columnExpressions/mixins/ManipulationExpr.js +61 -25
  38. package/dist/columnExpressions/mixins/NumericExpr.d.ts +92 -0
  39. package/dist/columnExpressions/mixins/NumericExpr.js +259 -0
  40. package/dist/columnExpressions/mixins/StringExpr.d.ts +5 -30
  41. package/dist/columnExpressions/mixins/StringExpr.js +37 -49
  42. package/dist/columnExpressions/mixins/StructExpr.d.ts +16 -0
  43. package/dist/columnExpressions/mixins/StructExpr.js +139 -0
  44. package/dist/columnExpressions/mixins/TemporalExpr.d.ts +4 -30
  45. package/dist/columnExpressions/mixins/TemporalExpr.js +28 -29
  46. package/dist/columnExpressions/mixins/WindowExpr.d.ts +27 -49
  47. package/dist/columnExpressions/mixins/WindowExpr.js +144 -274
  48. package/dist/columnExpressions/utils.d.ts +4 -0
  49. package/dist/columnExpressions/utils.js +45 -0
  50. package/dist/dataframe/constants.d.ts +3 -0
  51. package/dist/dataframe/constants.js +4 -1
  52. package/dist/dataframe/dataframe.d.ts +27 -10
  53. package/dist/dataframe/dataframe.js +461 -220
  54. package/dist/dataframe/grouped/grouped.d.ts +2 -3
  55. package/dist/dataframe/grouped/grouped.js +17 -16
  56. package/dist/dataframe/types.d.ts +65 -1
  57. package/dist/dataframe/utils.d.ts +11 -3
  58. package/dist/dataframe/utils.js +101 -9
  59. package/dist/datatypes/DataType.d.ts +2 -1
  60. package/dist/datatypes/DataType.js +29 -0
  61. package/dist/datatypes/index.d.ts +2 -2
  62. package/dist/datatypes/types.d.ts +37 -36
  63. package/dist/datatypes/types.js +15 -11
  64. package/dist/exceptions/index.d.ts +2 -0
  65. package/dist/exceptions/index.js +4 -1
  66. package/dist/exceptions/utils.d.ts +1 -0
  67. package/dist/exceptions/utils.js +19 -0
  68. package/dist/functions/concat.d.ts +1 -2
  69. package/dist/functions/concat.js +24 -12
  70. package/dist/functions/index.d.ts +3 -1
  71. package/dist/functions/index.js +7 -15
  72. package/dist/functions/read_csv.d.ts +8 -0
  73. package/dist/functions/read_csv.js +53 -0
  74. package/dist/functions/read_json.d.ts +10 -0
  75. package/dist/functions/read_json.js +21 -0
  76. package/dist/functions/transpose.d.ts +7 -0
  77. package/dist/functions/transpose.js +84 -0
  78. package/dist/index.js +6 -1
  79. package/dist/types.d.ts +31 -5
  80. package/dist/utils/csv.d.ts +77 -0
  81. package/dist/utils/csv.js +313 -0
  82. package/dist/utils/date.js +5 -6
  83. package/dist/utils/guards.d.ts +0 -2
  84. package/dist/utils/guards.js +0 -31
  85. package/dist/utils/index.d.ts +2 -0
  86. package/dist/utils/index.js +2 -0
  87. package/dist/utils/json.d.ts +120 -2
  88. package/dist/utils/json.js +204 -20
  89. package/dist/utils/list.d.ts +173 -1
  90. package/dist/utils/list.js +255 -22
  91. package/dist/utils/number.d.ts +61 -28
  92. package/dist/utils/number.js +248 -70
  93. package/dist/utils/string.d.ts +5 -0
  94. package/dist/utils/string.js +89 -0
  95. package/package.json +5 -1
@@ -2,31 +2,30 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.StringExpr = exports.StringExprNamespace = void 0;
4
4
  const ExprBase_1 = require("../ExprBase");
5
- const utils_1 = require("../../utils");
5
+ const utils_1 = require("../utils");
6
+ const utils_2 = require("../../utils");
6
7
  class StringExprNamespace {
7
8
  expr;
8
9
  constructor(expr) {
9
10
  this.expr = expr;
10
11
  }
11
12
  _deriveString(fn) {
12
- return (0, ExprBase_1.derive)(this.expr, (0, ExprBase_1.kleeneUnary)((v) => fn(String(v))));
13
+ return (0, ExprBase_1.derive)(this.expr, (0, utils_1.kleeneUnary)((v) => fn(String(v))));
13
14
  }
14
- concat(other) {
15
- return (0, ExprBase_1.derive)(this.expr, (0, ExprBase_1.kleeneBinary)(this.expr, other, (v, o) => String(v) + String(o)));
16
- }
17
- contains(pattern) {
15
+ _patternGuard(pattern, fn) {
18
16
  if (pattern == null) {
19
17
  return (0, ExprBase_1.derive)(this.expr, (vArray) => new Array(vArray.length).fill(null));
20
18
  }
21
- return this._deriveString((str) => {
22
- return pattern instanceof RegExp ? pattern.test(str) : str.includes(pattern);
23
- });
19
+ return fn();
20
+ }
21
+ concat(other) {
22
+ return (0, ExprBase_1.derive)(this.expr, (0, utils_1.kleeneBinary)(this.expr, other, (v, o) => String(v) + String(o)));
23
+ }
24
+ contains(pattern) {
25
+ return this._patternGuard(pattern, () => this._deriveString((str) => pattern instanceof RegExp ? pattern.test(str) : str.includes(pattern)));
24
26
  }
25
27
  count_matches(pattern) {
26
- if (pattern == null) {
27
- return (0, ExprBase_1.derive)(this.expr, (vArray) => new Array(vArray.length).fill(null));
28
- }
29
- return this._deriveString((str) => {
28
+ return this._patternGuard(pattern, () => this._deriveString((str) => {
30
29
  if (pattern instanceof RegExp) {
31
30
  const regex = pattern.global
32
31
  ? pattern
@@ -43,7 +42,7 @@ class StringExprNamespace {
43
42
  }
44
43
  return count;
45
44
  }
46
- });
45
+ }));
47
46
  }
48
47
  decode_uri_component() {
49
48
  return this._deriveString((str) => {
@@ -72,15 +71,12 @@ class StringExprNamespace {
72
71
  return this._deriveString((str) => str.split(""));
73
72
  }
74
73
  extract(pattern, group = 0) {
75
- if (pattern == null) {
76
- return (0, ExprBase_1.derive)(this.expr, (vArray) => new Array(vArray.length).fill(null));
77
- }
78
- return this._deriveString((str) => {
74
+ return this._patternGuard(pattern, () => this._deriveString((str) => {
79
75
  const match = str.match(pattern);
80
76
  if (!match)
81
77
  return null;
82
78
  return match[group] !== undefined ? match[group] : null;
83
- });
79
+ }));
84
80
  }
85
81
  len() {
86
82
  return this.len_chars();
@@ -104,16 +100,10 @@ class StringExprNamespace {
104
100
  return this.lpad(width, fill);
105
101
  }
106
102
  replace(pattern, replacement) {
107
- if (pattern == null) {
108
- return (0, ExprBase_1.derive)(this.expr, (vArray) => new Array(vArray.length).fill(null));
109
- }
110
- return this._deriveString((str) => str.replace(pattern, replacement));
103
+ return this._patternGuard(pattern, () => this._deriveString((str) => str.replace(pattern, replacement)));
111
104
  }
112
105
  replace_all(pattern, replacement) {
113
- if (pattern == null) {
114
- return (0, ExprBase_1.derive)(this.expr, (vArray) => new Array(vArray.length).fill(null));
115
- }
116
- return this._deriveString((str) => {
106
+ return this._patternGuard(pattern, () => this._deriveString((str) => {
117
107
  if (pattern instanceof RegExp) {
118
108
  const regex = pattern.global
119
109
  ? pattern
@@ -121,7 +111,7 @@ class StringExprNamespace {
121
111
  return str.replace(regex, replacement);
122
112
  }
123
113
  return str.replaceAll(pattern, replacement);
124
- });
114
+ }));
125
115
  }
126
116
  reverse() {
127
117
  return this._deriveString((str) => str.split("").reverse().join(""));
@@ -146,17 +136,17 @@ class StringExprNamespace {
146
136
  return this._deriveString((str) => str.startsWith(prefix));
147
137
  }
148
138
  strip_chars(characters, options) {
149
- return this._deriveString((str) => (0, utils_1.stripChars)(str, characters, { mode: "both", ...options }));
139
+ return this._deriveString((str) => (0, utils_2.stripChars)(str, characters, { mode: "both", ...options }));
150
140
  }
151
141
  strip_chars_end(characters, options) {
152
- return this._deriveString((str) => (0, utils_1.stripChars)(str, characters, { mode: "end", ...options }));
142
+ return this._deriveString((str) => (0, utils_2.stripChars)(str, characters, { mode: "end", ...options }));
153
143
  }
154
144
  strip_chars_start(characters, options) {
155
- return this._deriveString((str) => (0, utils_1.stripChars)(str, characters, { mode: "start", ...options }));
145
+ return this._deriveString((str) => (0, utils_2.stripChars)(str, characters, { mode: "start", ...options }));
156
146
  }
157
147
  strip_prefix(prefix) {
158
148
  return this._deriveString((str) => {
159
- return (0, utils_1.stripChars)(str, prefix, {
149
+ return (0, utils_2.stripChars)(str, prefix, {
160
150
  mode: "start",
161
151
  maxScanStart: 1,
162
152
  maxMatchesStart: 1,
@@ -167,7 +157,7 @@ class StringExprNamespace {
167
157
  }
168
158
  strip_suffix(suffix) {
169
159
  return this._deriveString((str) => {
170
- return (0, utils_1.stripChars)(str, suffix, {
160
+ return (0, utils_2.stripChars)(str, suffix, {
171
161
  mode: "end",
172
162
  maxScanEnd: 1,
173
163
  maxMatchesEnd: 1,
@@ -177,11 +167,11 @@ class StringExprNamespace {
177
167
  });
178
168
  }
179
169
  strptime(format, strict = true) {
180
- return this._deriveString((str) => (0, utils_1.strptime)(str, format, strict));
170
+ return this._deriveString((str) => (0, utils_2.strptime)(str, format, strict));
181
171
  }
182
172
  to_date() {
183
173
  return this._deriveString((str) => {
184
- const d = (0, utils_1.toValidDate)(str);
174
+ const d = (0, utils_2.toValidDate)(str);
185
175
  if (!d)
186
176
  return null;
187
177
  const copy = new Date(d);
@@ -190,26 +180,26 @@ class StringExprNamespace {
190
180
  });
191
181
  }
192
182
  to_datetime() {
193
- return this._deriveString(utils_1.toValidDate);
183
+ return this._deriveString(utils_2.toValidDate);
194
184
  }
195
185
  to_decimal(precision, scale) {
196
- return this._deriveString((str) => (0, utils_1.toValidDecimal)(str, { precision, scale }));
186
+ return this._deriveString((str) => (0, utils_2.toValidDecimal)(str, { precision, scale }));
197
187
  }
198
188
  to_integer() {
199
- return this._deriveString((str) => (0, utils_1.toValidInt)(str));
189
+ return this._deriveString((str) => (0, utils_2.toValidInt)(str));
200
190
  }
201
191
  to_lowercase() {
202
192
  return this.lower();
203
193
  }
204
194
  to_time() {
205
195
  return this._deriveString((str) => {
206
- const d = (0, utils_1.toValidDate)(str);
196
+ const d = (0, utils_2.toValidDate)(str);
207
197
  if (d)
208
198
  return d.toISOString().split("T")[1].slice(0, 12);
209
199
  const trimmed = str.trim();
210
- if (utils_1.TIME_PREFIX_REGEX.test(trimmed)) {
211
- const td = new Date(`1970-01-01T${trimmed}${utils_1.ZONE_OFFSET_REGEX.test(trimmed) ? "" : "Z"}`);
212
- if ((0, utils_1.isValidDateObj)(td)) {
200
+ if (utils_2.TIME_PREFIX_REGEX.test(trimmed)) {
201
+ const td = new Date(`1970-01-01T${trimmed}${utils_2.ZONE_OFFSET_REGEX.test(trimmed) ? "" : "Z"}`);
202
+ if ((0, utils_2.isValidDateObj)(td)) {
213
203
  return td.toISOString().split("T")[1].slice(0, 12);
214
204
  }
215
205
  }
@@ -239,11 +229,9 @@ class StringExprNamespace {
239
229
  }
240
230
  }
241
231
  exports.StringExprNamespace = StringExprNamespace;
242
- const StringExpr = (Base) => {
243
- return class extends Base {
244
- get str() {
245
- return new StringExprNamespace(this);
246
- }
247
- };
248
- };
232
+ class StringExpr extends ExprBase_1.ExprBase {
233
+ get str() {
234
+ return new StringExprNamespace(this);
235
+ }
236
+ }
249
237
  exports.StringExpr = StringExpr;
@@ -0,0 +1,16 @@
1
+ import { ExprBase } from "../ExprBase";
2
+ import type { IntoExpr, IExpr } from "../../types";
3
+ export declare class StructExprNamespace {
4
+ expr: IExpr;
5
+ constructor(expr: IExpr);
6
+ field(name: string): IExpr;
7
+ rename_fields(mapping: Record<string, string>): IExpr;
8
+ with_fields(fields: IntoExpr[] | Record<string, IntoExpr>): IExpr;
9
+ unnest(): IExpr;
10
+ }
11
+ export interface StructExprNamespace {
12
+ [key: string]: any;
13
+ }
14
+ export declare class StructExpr extends ExprBase {
15
+ get struct(): StructExprNamespace;
16
+ }
@@ -0,0 +1,139 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.StructExpr = exports.StructExprNamespace = void 0;
4
+ const ExprBase_1 = require("../ExprBase");
5
+ let ColumnExprClass = null;
6
+ function toColExpr(col) {
7
+ if (col == null) {
8
+ throw new Error("Column reference cannot be null or undefined.");
9
+ }
10
+ if (!ColumnExprClass) {
11
+ ColumnExprClass = require("../ColumnExpr").ColumnExpr;
12
+ }
13
+ return ColumnExprClass.isColExpr(col) ? col : new ColumnExprClass(col);
14
+ }
15
+ class StructExprNamespace {
16
+ expr;
17
+ constructor(expr) {
18
+ this.expr = expr;
19
+ return new Proxy(this, {
20
+ get(target, prop, receiver) {
21
+ if (prop in target) {
22
+ return Reflect.get(target, prop, receiver);
23
+ }
24
+ if (typeof prop === "string") {
25
+ return target.field(prop);
26
+ }
27
+ return Reflect.get(target, prop, receiver);
28
+ }
29
+ });
30
+ }
31
+ field(name) {
32
+ return (0, ExprBase_1.derive)(this.expr, (vArray) => {
33
+ const height = vArray.length;
34
+ const result = new Array(height);
35
+ for (let i = 0; i < height; i++) {
36
+ const v = vArray[i];
37
+ result[i] = (v != null && typeof v === "object") ? v[name] : null;
38
+ }
39
+ return result;
40
+ }).alias(name);
41
+ }
42
+ rename_fields(mapping) {
43
+ return (0, ExprBase_1.derive)(this.expr, (vArray) => {
44
+ const height = vArray.length;
45
+ const result = new Array(height);
46
+ const keys = Object.keys(mapping);
47
+ const keysLen = keys.length;
48
+ for (let i = 0; i < height; i++) {
49
+ const v = vArray[i];
50
+ if (v == null || typeof v !== "object") {
51
+ result[i] = null;
52
+ continue;
53
+ }
54
+ const newObj = {};
55
+ const origKeys = Object.keys(v);
56
+ const origLen = origKeys.length;
57
+ for (let k = 0; k < origLen; k++) {
58
+ const key = origKeys[k];
59
+ newObj[key] = v[key];
60
+ }
61
+ for (let j = 0; j < keysLen; j++) {
62
+ const oldKey = keys[j];
63
+ if (oldKey in newObj) {
64
+ const newKey = mapping[oldKey];
65
+ newObj[newKey] = newObj[oldKey];
66
+ delete newObj[oldKey];
67
+ }
68
+ }
69
+ result[i] = newObj;
70
+ }
71
+ return result;
72
+ });
73
+ }
74
+ with_fields(fields) {
75
+ return (0, ExprBase_1.derive)(this.expr, (vArray, columns) => {
76
+ const height = vArray.length;
77
+ const result = new Array(height);
78
+ const resolved = [];
79
+ if (Array.isArray(fields)) {
80
+ const fieldsLen = fields.length;
81
+ for (let j = 0; j < fieldsLen; j++) {
82
+ const f = fields[j];
83
+ const expr = toColExpr(f);
84
+ const name = expr.outputName || expr.colName;
85
+ if (!name) {
86
+ throw new Error("Expressions passed to struct.with_fields must have a name/alias.");
87
+ }
88
+ resolved.push({ name, expr });
89
+ }
90
+ }
91
+ else if (fields && typeof fields === "object") {
92
+ const keys = Object.keys(fields);
93
+ const keysLen = keys.length;
94
+ for (let j = 0; j < keysLen; j++) {
95
+ const name = keys[j];
96
+ const expr = toColExpr(fields[name]);
97
+ resolved.push({ name, expr });
98
+ }
99
+ }
100
+ const resolvedLen = resolved.length;
101
+ const fieldValues = new Array(resolvedLen);
102
+ for (let j = 0; j < resolvedLen; j++) {
103
+ fieldValues[j] = resolved[j].expr.evaluate(columns, height);
104
+ }
105
+ for (let i = 0; i < height; i++) {
106
+ const v = vArray[i];
107
+ if (v == null || typeof v !== "object") {
108
+ result[i] = null;
109
+ continue;
110
+ }
111
+ const newObj = {};
112
+ const origKeys = Object.keys(v);
113
+ const origLen = origKeys.length;
114
+ for (let k = 0; k < origLen; k++) {
115
+ const key = origKeys[k];
116
+ newObj[key] = v[key];
117
+ }
118
+ for (let j = 0; j < resolvedLen; j++) {
119
+ newObj[resolved[j].name] = fieldValues[j][i];
120
+ }
121
+ result[i] = newObj;
122
+ }
123
+ return result;
124
+ });
125
+ }
126
+ unnest() {
127
+ const newInst = (0, ExprBase_1.derive)(this.expr);
128
+ newInst.isUnnest = true;
129
+ newInst.baseExpr = this.expr;
130
+ return newInst;
131
+ }
132
+ }
133
+ exports.StructExprNamespace = StructExprNamespace;
134
+ class StructExpr extends ExprBase_1.ExprBase {
135
+ get struct() {
136
+ return new StructExprNamespace(this);
137
+ }
138
+ }
139
+ exports.StructExpr = StructExpr;
@@ -1,5 +1,5 @@
1
1
  import type { TimeUnit } from "../../types";
2
- import type { ExprConstructor } from "../types";
2
+ import { ExprBase } from "../ExprBase";
3
3
  export declare class DateTimeExprNamespace {
4
4
  expr: any;
5
5
  constructor(expr: any);
@@ -38,32 +38,6 @@ export declare class DateTimeExprNamespace {
38
38
  weekday(): any;
39
39
  year(): any;
40
40
  }
41
- export declare const TemporalExpr: <TBase extends ExprConstructor>(Base: TBase) => {
42
- new (...args: any[]): {
43
- get dt(): DateTimeExprNamespace;
44
- ops: import("../../types").OpFn[];
45
- colName?: string;
46
- outputName?: string;
47
- isLiteral?: boolean;
48
- literalValue?: any;
49
- aggFn?: import("../../types").AggFn<any> | null;
50
- groupingOpsIndex?: number;
51
- partitionOpsIndex?: number;
52
- partitionBy?: (string | import("../../types").IExpr)[] | null;
53
- windowOp?: {
54
- type: string;
55
- [key: string]: any;
56
- } | null;
57
- isWindow?: boolean;
58
- alias(name: string): /*elided*/ any;
59
- cast(dataType: any): /*elided*/ any;
60
- _resolve(val: any, columns: import("../../types").ColumnDict, height: number): import("../../types").ColumnData | any;
61
- evaluate(columns: import("../../types").ColumnDict, height: number): import("../../types").ColumnData;
62
- evaluatePreGrouping(columns: import("../../types").ColumnDict, height: number): import("../../types").ColumnData;
63
- evaluatePostGrouping(aggregatedArray: any[], columns: import("../../types").ColumnDict): import("../../types").ColumnData;
64
- evaluatePrePartition(columns: import("../../types").ColumnDict, height: number): import("../../types").ColumnData;
65
- evaluatePostPartition(aggregatedArray: any[], columns: import("../../types").ColumnDict): import("../../types").ColumnData;
66
- evaluateWindow?(groupPreValues: any[], partitionIndices: number[], currentIndex: number): any;
67
- debug(label?: string): /*elided*/ any;
68
- };
69
- } & TBase;
41
+ export declare class TemporalExpr extends ExprBase {
42
+ get dt(): DateTimeExprNamespace;
43
+ }
@@ -2,25 +2,26 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.TemporalExpr = exports.DateTimeExprNamespace = void 0;
4
4
  const ExprBase_1 = require("../ExprBase");
5
- const utils_1 = require("../../utils");
5
+ const utils_1 = require("../utils");
6
+ const utils_2 = require("../../utils");
6
7
  class DateTimeExprNamespace {
7
8
  expr;
8
9
  constructor(expr) {
9
10
  this.expr = expr;
10
11
  }
11
12
  _deriveDate(fn) {
12
- return (0, ExprBase_1.derive)(this.expr, (0, ExprBase_1.kleeneUnary)((v) => {
13
- const d = (0, utils_1.toValidDate)(v);
13
+ return (0, ExprBase_1.derive)(this.expr, (0, utils_1.kleeneUnary)((v) => {
14
+ const d = (0, utils_2.toValidDate)(v);
14
15
  return d ? fn(d) : null;
15
16
  }));
16
17
  }
17
18
  _deriveDuration(fn) {
18
- return (0, ExprBase_1.derive)(this.expr, (0, ExprBase_1.kleeneUnary)((v) => {
19
+ return (0, ExprBase_1.derive)(this.expr, (0, utils_1.kleeneUnary)((v) => {
19
20
  return typeof v === "number" ? fn(v) : null;
20
21
  }));
21
22
  }
22
23
  century() {
23
- return this._deriveDate(utils_1.getCentury);
24
+ return this._deriveDate(utils_2.getCentury);
24
25
  }
25
26
  date() {
26
27
  return this._deriveDate((d) => new Date(Date.UTC(d.getUTCFullYear(), d.getUTCMonth(), d.getUTCDate())));
@@ -32,19 +33,19 @@ class DateTimeExprNamespace {
32
33
  return this._deriveDate((d) => d.getUTCDate());
33
34
  }
34
35
  epoch(unit = "ms") {
35
- return this._deriveDate((d) => (0, utils_1.toEpoch)(d, unit));
36
+ return this._deriveDate((d) => (0, utils_2.toEpoch)(d, unit));
36
37
  }
37
38
  hour() {
38
39
  return this._deriveDate((d) => d.getUTCHours());
39
40
  }
40
41
  is_leap_year() {
41
- return this._deriveDate(utils_1.isLeapYear);
42
+ return this._deriveDate(utils_2.isLeapYear);
42
43
  }
43
44
  microsecond() {
44
- return this._deriveDate((d) => d.getUTCMilliseconds() * utils_1.US_PER_MS);
45
+ return this._deriveDate((d) => d.getUTCMilliseconds() * utils_2.US_PER_MS);
45
46
  }
46
47
  millennium() {
47
- return this._deriveDate(utils_1.getMillennium);
48
+ return this._deriveDate(utils_2.getMillennium);
48
49
  }
49
50
  millisecond() {
50
51
  return this._deriveDate((d) => d.getUTCMilliseconds());
@@ -56,25 +57,25 @@ class DateTimeExprNamespace {
56
57
  return this._deriveDate((d) => d.getUTCMonth() + 1);
57
58
  }
58
59
  month_end() {
59
- return this._deriveDate((d) => (0, utils_1.getMonthOffset)(d, 1, 0));
60
+ return this._deriveDate((d) => (0, utils_2.getMonthOffset)(d, 1, 0));
60
61
  }
61
62
  month_start() {
62
- return this._deriveDate((d) => (0, utils_1.getMonthOffset)(d, 0, 1));
63
+ return this._deriveDate((d) => (0, utils_2.getMonthOffset)(d, 0, 1));
63
64
  }
64
65
  nanosecond() {
65
- return this._deriveDate((d) => d.getUTCMilliseconds() * utils_1.NS_PER_MS);
66
+ return this._deriveDate((d) => d.getUTCMilliseconds() * utils_2.NS_PER_MS);
66
67
  }
67
68
  ordinal_day() {
68
- return this._deriveDate(utils_1.getOrdinalDay);
69
+ return this._deriveDate(utils_2.getOrdinalDay);
69
70
  }
70
71
  quarter() {
71
- return this._deriveDate(utils_1.getQuarter);
72
+ return this._deriveDate(utils_2.getQuarter);
72
73
  }
73
74
  second() {
74
75
  return this._deriveDate((d) => d.getUTCSeconds());
75
76
  }
76
77
  strftime(format, locale) {
77
- return this._deriveDate((d) => (0, utils_1.strftime)(d, format, locale));
78
+ return this._deriveDate((d) => (0, utils_2.strftime)(d, format, locale));
78
79
  }
79
80
  time() {
80
81
  return this._deriveDate((d) => d.toISOString().split("T")[1].slice(0, 12));
@@ -86,28 +87,28 @@ class DateTimeExprNamespace {
86
87
  return this.strftime(format, locale);
87
88
  }
88
89
  total_days() {
89
- return this._deriveDuration((v) => v / utils_1.MS_PER_DAY);
90
+ return this._deriveDuration((v) => v / utils_2.MS_PER_DAY);
90
91
  }
91
92
  total_hours() {
92
- return this._deriveDuration((v) => v / utils_1.MS_PER_HOUR);
93
+ return this._deriveDuration((v) => v / utils_2.MS_PER_HOUR);
93
94
  }
94
95
  total_microseconds() {
95
- return this._deriveDuration((v) => v * utils_1.US_PER_MS);
96
+ return this._deriveDuration((v) => v * utils_2.US_PER_MS);
96
97
  }
97
98
  total_milliseconds() {
98
99
  return this._deriveDuration((v) => v);
99
100
  }
100
101
  total_minutes() {
101
- return this._deriveDuration((v) => v / utils_1.MS_PER_MINUTE);
102
+ return this._deriveDuration((v) => v / utils_2.MS_PER_MINUTE);
102
103
  }
103
104
  total_nanoseconds() {
104
- return this._deriveDuration((v) => v * utils_1.NS_PER_MS);
105
+ return this._deriveDuration((v) => v * utils_2.NS_PER_MS);
105
106
  }
106
107
  total_seconds() {
107
- return this._deriveDuration((v) => v / utils_1.MS_PER_SECOND);
108
+ return this._deriveDuration((v) => v / utils_2.MS_PER_SECOND);
108
109
  }
109
110
  week() {
110
- return this._deriveDate(utils_1.getISOWeek);
111
+ return this._deriveDate(utils_2.getISOWeek);
111
112
  }
112
113
  weekday() {
113
114
  return this._deriveDate((d) => d.getUTCDay() || 7);
@@ -117,11 +118,9 @@ class DateTimeExprNamespace {
117
118
  }
118
119
  }
119
120
  exports.DateTimeExprNamespace = DateTimeExprNamespace;
120
- const TemporalExpr = (Base) => {
121
- return class extends Base {
122
- get dt() {
123
- return new DateTimeExprNamespace(this);
124
- }
125
- };
126
- };
121
+ class TemporalExpr extends ExprBase_1.ExprBase {
122
+ get dt() {
123
+ return new DateTimeExprNamespace(this);
124
+ }
125
+ }
127
126
  exports.TemporalExpr = TemporalExpr;
@@ -1,50 +1,28 @@
1
1
  import type { IExpr } from "../../types";
2
- import type { ExprConstructor } from "../types";
3
- export declare const WindowExpr: <TBase extends ExprConstructor>(Base: TBase) => {
4
- new (...args: any[]): {
5
- partitionBy: (string | IExpr)[] | null;
6
- _rolling(windowSize: number, aggFn: (vals: any[]) => any): /*elided*/ any;
7
- get isWindow(): boolean;
8
- cum_count(reverse?: boolean): /*elided*/ any;
9
- cum_max(reverse?: boolean): /*elided*/ any;
10
- cum_min(reverse?: boolean): /*elided*/ any;
11
- cum_prod(reverse?: boolean): /*elided*/ any;
12
- cum_sum(reverse?: boolean): /*elided*/ any;
13
- dense_rank(): /*elided*/ any;
14
- lag(offset?: number, defaultVal?: any): /*elided*/ any;
15
- lead(offset?: number, defaultVal?: any): /*elided*/ any;
16
- over(columns: string | IExpr | (string | IExpr)[]): /*elided*/ any;
17
- rank(): /*elided*/ any;
18
- rolling_max(windowSize: number): /*elided*/ any;
19
- rolling_mean(windowSize: number): /*elided*/ any;
20
- rolling_median(windowSize: number): /*elided*/ any;
21
- rolling_min(windowSize: number): /*elided*/ any;
22
- rolling_quantile(quantile: number, windowSize: number): /*elided*/ any;
23
- rolling_rank(windowSize: number): /*elided*/ any;
24
- rolling_std(windowSize: number): /*elided*/ any;
25
- rolling_sum(windowSize: number): /*elided*/ any;
26
- row_number(): /*elided*/ any;
27
- ops: import("../../types").OpFn[];
28
- colName?: string;
29
- outputName?: string;
30
- isLiteral?: boolean;
31
- literalValue?: any;
32
- aggFn?: import("../../types").AggFn<any> | null;
33
- groupingOpsIndex?: number;
34
- partitionOpsIndex?: number;
35
- windowOp?: {
36
- type: string;
37
- [key: string]: any;
38
- } | null;
39
- alias(name: string): /*elided*/ any;
40
- cast(dataType: any): /*elided*/ any;
41
- _resolve(val: any, columns: import("../../types").ColumnDict, height: number): import("../../types").ColumnData | any;
42
- evaluate(columns: import("../../types").ColumnDict, height: number): import("../../types").ColumnData;
43
- evaluatePreGrouping(columns: import("../../types").ColumnDict, height: number): import("../../types").ColumnData;
44
- evaluatePostGrouping(aggregatedArray: any[], columns: import("../../types").ColumnDict): import("../../types").ColumnData;
45
- evaluatePrePartition(columns: import("../../types").ColumnDict, height: number): import("../../types").ColumnData;
46
- evaluatePostPartition(aggregatedArray: any[], columns: import("../../types").ColumnDict): import("../../types").ColumnData;
47
- evaluateWindow?(groupPreValues: any[], partitionIndices: number[], currentIndex: number): any;
48
- debug(label?: string): /*elided*/ any;
49
- };
50
- } & TBase;
2
+ import { ExprBase } from "../ExprBase";
3
+ export declare class WindowExpr extends ExprBase {
4
+ partitionBy: (string | IExpr)[] | null;
5
+ _window(evaluateWindow: (this: IExpr, groupPreValues: any[], partitionIndices: number[], currentIndex: number) => any): this;
6
+ _rolling(windowSize: number, aggFn: (vals: any[]) => any): this;
7
+ _cum(reverse: boolean, initialVal: any, stepFn: (acc: any, val: any) => any, postFn?: (acc: any, hasValid: boolean) => any): this;
8
+ get isWindow(): boolean;
9
+ cum_count(reverse?: boolean): this;
10
+ cum_max(reverse?: boolean): this;
11
+ cum_min(reverse?: boolean): this;
12
+ cum_prod(reverse?: boolean): this;
13
+ cum_sum(reverse?: boolean): this;
14
+ dense_rank(): this;
15
+ lag(offset?: number, defaultVal?: any): this;
16
+ lead(offset?: number, defaultVal?: any): this;
17
+ over(columns: string | IExpr | (string | IExpr)[]): this;
18
+ rank(): this;
19
+ rolling_max(windowSize: number): this;
20
+ rolling_mean(windowSize: number): this;
21
+ rolling_median(windowSize: number): this;
22
+ rolling_min(windowSize: number): this;
23
+ rolling_quantile(quantile: number, windowSize: number): this;
24
+ rolling_rank(windowSize: number): this;
25
+ rolling_std(windowSize: number): this;
26
+ rolling_sum(windowSize: number): this;
27
+ row_number(): this;
28
+ }