df-script 1.4.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 (142) hide show
  1. package/README.md +203 -38
  2. package/dist/api.d.ts +16 -8
  3. package/dist/columnExpressions/ColumnExpr.d.ts +26 -364
  4. package/dist/columnExpressions/ExprBase.d.ts +8 -11
  5. package/dist/columnExpressions/constants.d.ts +2 -0
  6. package/dist/columnExpressions/functions/coalesce.d.ts +2 -2
  7. package/dist/columnExpressions/functions/element.d.ts +5 -0
  8. package/dist/columnExpressions/functions/implode.d.ts +3 -0
  9. package/dist/columnExpressions/functions/lit.d.ts +3 -1
  10. package/dist/columnExpressions/functions/seq_range.d.ts +31 -0
  11. package/dist/columnExpressions/functions/when.d.ts +2 -2
  12. package/dist/columnExpressions/index.d.ts +6 -3
  13. package/dist/columnExpressions/mixins/AggregationExpr.d.ts +25 -50
  14. package/dist/columnExpressions/mixins/ArithmeticExpr.d.ts +43 -67
  15. package/dist/columnExpressions/mixins/ArrayExpr.d.ts +39 -0
  16. package/dist/columnExpressions/mixins/ComparisonExpr.d.ts +31 -60
  17. package/dist/columnExpressions/mixins/ListExpr.d.ts +16 -40
  18. package/dist/columnExpressions/mixins/LogicalExpr.d.ts +7 -33
  19. package/dist/columnExpressions/mixins/ManipulationExpr.d.ts +6 -31
  20. package/dist/columnExpressions/mixins/StringExpr.d.ts +7 -32
  21. package/dist/columnExpressions/mixins/StructExpr.d.ts +16 -0
  22. package/dist/columnExpressions/mixins/TemporalExpr.d.ts +4 -30
  23. package/dist/columnExpressions/mixins/WindowExpr.d.ts +27 -49
  24. package/dist/columnExpressions/types.d.ts +1 -0
  25. package/dist/columnExpressions/utils.d.ts +4 -0
  26. package/dist/constants.d.ts +11 -0
  27. package/dist/dataframe/constants.d.ts +3 -0
  28. package/dist/dataframe/dataframe.d.ts +28 -11
  29. package/dist/dataframe/grouped/grouped.d.ts +2 -3
  30. package/dist/dataframe/types.d.ts +65 -1
  31. package/dist/dataframe/utils.d.ts +11 -3
  32. package/dist/datatypes/DataType.d.ts +2 -1
  33. package/dist/datatypes/index.d.ts +4 -3
  34. package/dist/datatypes/types.d.ts +42 -41
  35. package/dist/exceptions/index.d.ts +2 -0
  36. package/dist/exceptions/utils.d.ts +1 -0
  37. package/dist/functions/concat.d.ts +1 -2
  38. package/dist/functions/index.d.ts +3 -1
  39. package/dist/functions/read_csv.d.ts +8 -0
  40. package/dist/functions/read_json.d.ts +10 -0
  41. package/dist/index.js +6 -1
  42. package/dist/types.d.ts +34 -6
  43. package/dist/utils/array.d.ts +217 -0
  44. package/dist/utils/binary.d.ts +3 -0
  45. package/dist/utils/csv.d.ts +77 -0
  46. package/dist/utils/date.d.ts +21 -35
  47. package/dist/utils/guards.d.ts +11 -12
  48. package/dist/utils/index.d.ts +5 -2
  49. package/dist/utils/json.d.ts +120 -2
  50. package/dist/utils/list.d.ts +196 -2
  51. package/dist/utils/number.d.ts +47 -29
  52. package/dist/utils/object.d.ts +26 -0
  53. package/dist/utils/string.d.ts +7 -4
  54. package/package.json +6 -2
  55. package/dist/api.js +0 -18
  56. package/dist/bundle.min.js +0 -1
  57. package/dist/columnExpressions/ColumnExpr.js +0 -23
  58. package/dist/columnExpressions/ExprBase.js +0 -133
  59. package/dist/columnExpressions/constants.js +0 -5
  60. package/dist/columnExpressions/functions/all.js +0 -11
  61. package/dist/columnExpressions/functions/coalesce.js +0 -40
  62. package/dist/columnExpressions/functions/exclude.js +0 -13
  63. package/dist/columnExpressions/functions/lit.js +0 -22
  64. package/dist/columnExpressions/functions/when.js +0 -81
  65. package/dist/columnExpressions/index.js +0 -81
  66. package/dist/columnExpressions/mixins/AggregationExpr.js +0 -172
  67. package/dist/columnExpressions/mixins/ArithmeticExpr.js +0 -143
  68. package/dist/columnExpressions/mixins/ComparisonExpr.js +0 -389
  69. package/dist/columnExpressions/mixins/ListExpr.js +0 -248
  70. package/dist/columnExpressions/mixins/LogicalExpr.js +0 -54
  71. package/dist/columnExpressions/mixins/ManipulationExpr.js +0 -35
  72. package/dist/columnExpressions/mixins/StringExpr.js +0 -249
  73. package/dist/columnExpressions/mixins/TemporalExpr.js +0 -127
  74. package/dist/columnExpressions/mixins/WindowExpr.js +0 -281
  75. package/dist/columnExpressions/types.js +0 -2
  76. package/dist/dataframe/constants.js +0 -4
  77. package/dist/dataframe/dataframe.js +0 -749
  78. package/dist/dataframe/grouped/grouped.js +0 -113
  79. package/dist/dataframe/index.js +0 -20
  80. package/dist/dataframe/types.js +0 -2
  81. package/dist/dataframe/utils.js +0 -215
  82. package/dist/datatypes/DataType.js +0 -47
  83. package/dist/datatypes/index.js +0 -46
  84. package/dist/datatypes/types/Binary.d.ts +0 -9
  85. package/dist/datatypes/types/Binary.js +0 -18
  86. package/dist/datatypes/types/Boolean.d.ts +0 -9
  87. package/dist/datatypes/types/Boolean.js +0 -19
  88. package/dist/datatypes/types/Date.d.ts +0 -8
  89. package/dist/datatypes/types/Date.js +0 -21
  90. package/dist/datatypes/types/Datetime.d.ts +0 -8
  91. package/dist/datatypes/types/Datetime.js +0 -17
  92. package/dist/datatypes/types/Decimal.d.ts +0 -10
  93. package/dist/datatypes/types/Decimal.js +0 -28
  94. package/dist/datatypes/types/Duration.d.ts +0 -8
  95. package/dist/datatypes/types/Duration.js +0 -17
  96. package/dist/datatypes/types/Float32.d.ts +0 -8
  97. package/dist/datatypes/types/Float32.js +0 -17
  98. package/dist/datatypes/types/Float64.d.ts +0 -8
  99. package/dist/datatypes/types/Float64.js +0 -17
  100. package/dist/datatypes/types/Int16.d.ts +0 -8
  101. package/dist/datatypes/types/Int16.js +0 -17
  102. package/dist/datatypes/types/Int32.d.ts +0 -8
  103. package/dist/datatypes/types/Int32.js +0 -17
  104. package/dist/datatypes/types/Int64.d.ts +0 -8
  105. package/dist/datatypes/types/Int64.js +0 -17
  106. package/dist/datatypes/types/Int8.d.ts +0 -8
  107. package/dist/datatypes/types/Int8.js +0 -17
  108. package/dist/datatypes/types/List.d.ts +0 -10
  109. package/dist/datatypes/types/List.js +0 -31
  110. package/dist/datatypes/types/Null.d.ts +0 -9
  111. package/dist/datatypes/types/Null.js +0 -17
  112. package/dist/datatypes/types/Object.d.ts +0 -9
  113. package/dist/datatypes/types/Object.js +0 -17
  114. package/dist/datatypes/types/Struct.d.ts +0 -14
  115. package/dist/datatypes/types/Struct.js +0 -39
  116. package/dist/datatypes/types/Time.d.ts +0 -8
  117. package/dist/datatypes/types/Time.js +0 -29
  118. package/dist/datatypes/types/UInt16.d.ts +0 -8
  119. package/dist/datatypes/types/UInt16.js +0 -17
  120. package/dist/datatypes/types/UInt32.d.ts +0 -8
  121. package/dist/datatypes/types/UInt32.js +0 -17
  122. package/dist/datatypes/types/UInt64.d.ts +0 -8
  123. package/dist/datatypes/types/UInt64.js +0 -17
  124. package/dist/datatypes/types/UInt8.d.ts +0 -8
  125. package/dist/datatypes/types/UInt8.js +0 -17
  126. package/dist/datatypes/types/Utf8.d.ts +0 -10
  127. package/dist/datatypes/types/Utf8.js +0 -20
  128. package/dist/datatypes/types.js +0 -286
  129. package/dist/exceptions/index.js +0 -43
  130. package/dist/exceptions/utils.js +0 -9
  131. package/dist/functions/concat.js +0 -248
  132. package/dist/functions/index.js +0 -17
  133. package/dist/types.js +0 -2
  134. package/dist/utils/boolean.d.ts +0 -1
  135. package/dist/utils/boolean.js +0 -18
  136. package/dist/utils/date.js +0 -349
  137. package/dist/utils/guards.js +0 -143
  138. package/dist/utils/index.js +0 -21
  139. package/dist/utils/json.js +0 -33
  140. package/dist/utils/list.js +0 -128
  141. package/dist/utils/number.js +0 -223
  142. package/dist/utils/string.js +0 -120
@@ -1,248 +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 exceptions_1 = require("../../exceptions");
7
- class ListExprNamespace {
8
- expr;
9
- constructor(expr) {
10
- this.expr = expr;
11
- }
12
- _deriveList(fn) {
13
- return (0, ExprBase_1.derive)(this.expr, (0, ExprBase_1.kleeneUnary)((v) => {
14
- return (0, utils_1.isArrayOrTypedArray)(v) ? fn(v) : null;
15
- }));
16
- }
17
- all() {
18
- return this._deriveList((arr) => {
19
- const list = Array.from(arr);
20
- for (let i = 0; i < list.length; i++) {
21
- if (!list[i])
22
- return false;
23
- }
24
- return true;
25
- });
26
- }
27
- any() {
28
- return this._deriveList((arr) => {
29
- const list = Array.from(arr);
30
- for (let i = 0; i < list.length; i++) {
31
- if (list[i])
32
- return true;
33
- }
34
- return false;
35
- });
36
- }
37
- contains(item) {
38
- return this._deriveList((arr) => {
39
- return Array.from(arr).includes(item);
40
- });
41
- }
42
- contains_all(items) {
43
- return this._deriveList((arr) => {
44
- const list = Array.from(arr);
45
- for (let i = 0; i < items.length; i++) {
46
- if (!list.includes(items[i]))
47
- return false;
48
- }
49
- return true;
50
- });
51
- }
52
- contains_any(items) {
53
- return this._deriveList((arr) => {
54
- const list = Array.from(arr);
55
- for (let i = 0; i < items.length; i++) {
56
- if (list.includes(items[i]))
57
- return true;
58
- }
59
- return false;
60
- });
61
- }
62
- count_matches(item) {
63
- return this._deriveList((arr) => {
64
- const list = Array.from(arr);
65
- let count = 0;
66
- for (const val of list) {
67
- if (val === item) {
68
- count++;
69
- }
70
- }
71
- return count;
72
- });
73
- }
74
- drop_nulls() {
75
- return this._deriveList((arr) => {
76
- const list = Array.from(arr);
77
- const result = [];
78
- for (let i = 0; i < list.length; i++) {
79
- if (list[i] != null)
80
- result.push(list[i]);
81
- }
82
- return result;
83
- });
84
- }
85
- first(null_on_oob = true) {
86
- return this.get(0, null_on_oob);
87
- }
88
- gather(indices, null_on_oob = true) {
89
- const idxs = Array.isArray(indices) ? indices : [indices];
90
- return this._deriveList((arr) => {
91
- const len = arr.length;
92
- const res = new Array(idxs.length);
93
- for (let i = 0; i < idxs.length; i++) {
94
- const index = idxs[i];
95
- const val = arr.at(index);
96
- if (val === undefined && !null_on_oob) {
97
- throw new exceptions_1.ComputeError(`Index ${index} is out of bounds for list of length ${len}`);
98
- }
99
- res[i] = val ?? null;
100
- }
101
- return res;
102
- });
103
- }
104
- gather_every(n, offset = 0) {
105
- if (n <= 0) {
106
- throw new exceptions_1.ComputeError("Step size n must be positive");
107
- }
108
- return this._deriveList((arr) => {
109
- const len = arr.length;
110
- const res = [];
111
- for (let i = offset; i < len; i += n) {
112
- res.push(arr[i]);
113
- }
114
- return res;
115
- });
116
- }
117
- get(index, null_on_oob = true) {
118
- return this._deriveList((arr) => {
119
- const val = arr.at(index);
120
- if (val === undefined && !null_on_oob) {
121
- throw new exceptions_1.ComputeError(`Index ${index} is out of bounds for list of length ${arr.length}`);
122
- }
123
- return val ?? null;
124
- });
125
- }
126
- join(separator, { ignoreNulls = false } = {}) {
127
- return this._deriveList((arr) => {
128
- const list = Array.from(arr);
129
- const strList = [];
130
- for (let i = 0; i < list.length; i++) {
131
- const x = list[i];
132
- if (x != null) {
133
- strList.push(String(x));
134
- }
135
- else if (!ignoreNulls) {
136
- strList.push("");
137
- }
138
- }
139
- return strList.join(separator);
140
- });
141
- }
142
- last(null_on_oob = true) {
143
- return this.get(-1, null_on_oob);
144
- }
145
- len() {
146
- return this.lengths();
147
- }
148
- lengths() {
149
- return this._deriveList((arr) => arr.length);
150
- }
151
- max() {
152
- return this._deriveList((arr) => (0, utils_1.getListStats)(arr).max);
153
- }
154
- mean() {
155
- return this._deriveList((arr) => {
156
- const { sum, count } = (0, utils_1.getListStats)(arr);
157
- return sum !== null && count > 0 ? sum / count : null;
158
- });
159
- }
160
- median() {
161
- return this._deriveList((arr) => {
162
- if (!(0, utils_1.isArrayOfType)(arr, "number", { allowNulls: true }))
163
- return null;
164
- const len = arr.length;
165
- const nums = [];
166
- for (let i = 0; i < len; i++) {
167
- const val = arr[i];
168
- if (val != null) {
169
- nums.push(val);
170
- }
171
- }
172
- const numsLen = nums.length;
173
- if (numsLen === 0)
174
- return null;
175
- nums.sort((a, b) => a - b);
176
- const mid = Math.floor(numsLen / 2);
177
- return numsLen % 2 !== 0
178
- ? nums[mid]
179
- : (nums[mid - 1] + nums[mid]) / 2;
180
- });
181
- }
182
- min() {
183
- return this._deriveList((arr) => (0, utils_1.getListStats)(arr).min);
184
- }
185
- mode() {
186
- return this._deriveList((arr) => {
187
- const len = arr.length;
188
- const counts = new Map();
189
- let maxCount = 0;
190
- for (let i = 0; i < len; i++) {
191
- const val = arr[i];
192
- if (val == null)
193
- continue;
194
- const c = (counts.get(val) ?? 0) + 1;
195
- counts.set(val, c);
196
- if (c > maxCount)
197
- maxCount = c;
198
- }
199
- if (maxCount === 0)
200
- return [];
201
- const modes = [];
202
- for (const [val, c] of counts.entries()) {
203
- if (c === maxCount) {
204
- modes.push(val);
205
- }
206
- }
207
- return (0, utils_1.sortList)(modes);
208
- });
209
- }
210
- n_unique() {
211
- return this._deriveList((arr) => {
212
- return new Set(Array.from(arr)).size;
213
- });
214
- }
215
- reverse() {
216
- return this._deriveList((arr) => {
217
- return Array.from(arr).reverse();
218
- });
219
- }
220
- slice(offset, length) {
221
- return this._deriveList((arr) => {
222
- const list = Array.from(arr);
223
- const start = offset < 0 ? Math.max(0, list.length + offset) : offset;
224
- const end = length !== undefined ? start + length : list.length;
225
- return list.slice(start, end);
226
- });
227
- }
228
- sort(descending = false) {
229
- return this._deriveList((arr) => (0, utils_1.sortList)(arr, descending));
230
- }
231
- sum() {
232
- return this._deriveList((arr) => (0, utils_1.getListStats)(arr).sum);
233
- }
234
- unique() {
235
- return this._deriveList((arr) => {
236
- return Array.from(new Set(arr));
237
- });
238
- }
239
- }
240
- exports.ListExprNamespace = ListExprNamespace;
241
- const ListExpr = (Base) => {
242
- return class extends Base {
243
- get list() {
244
- return new ListExprNamespace(this);
245
- }
246
- };
247
- };
248
- exports.ListExpr = ListExpr;
@@ -1,54 +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 LogicalExpr = (Base) => {
7
- return class extends Base {
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_1.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, ExprBase_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_1.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, ExprBase_1.kleeneBinary)(this, other, (v, w) => !!v !== !!w));
51
- }
52
- };
53
- };
54
- exports.LogicalExpr = LogicalExpr;
@@ -1,35 +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
- const ManipulationExpr = (Base) => {
7
- return class extends Base {
8
- fill_null(value) {
9
- return (0, ExprBase_1.derive)(this, (vArray, columns) => {
10
- const height = vArray.length;
11
- const resolved = this._resolve(value, columns, height);
12
- const result = new Array(height);
13
- if ((0, utils_1.isArrayOrTypedArray)(resolved)) {
14
- for (let i = 0; i < height; i++) {
15
- const v = vArray[i];
16
- result[i] = v == null ? resolved[i] : v;
17
- }
18
- }
19
- else {
20
- for (let i = 0; i < height; i++) {
21
- const v = vArray[i];
22
- result[i] = v == null ? resolved : v;
23
- }
24
- }
25
- return result;
26
- });
27
- }
28
- reverse() {
29
- return (0, ExprBase_1.derive)(this, (vArray) => {
30
- return vArray.slice().reverse();
31
- });
32
- }
33
- };
34
- };
35
- exports.ManipulationExpr = ManipulationExpr;
@@ -1,249 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.StringExpr = exports.StringExprNamespace = void 0;
4
- const ExprBase_1 = require("../ExprBase");
5
- const utils_1 = require("../../utils");
6
- class StringExprNamespace {
7
- expr;
8
- constructor(expr) {
9
- this.expr = expr;
10
- }
11
- _deriveString(fn) {
12
- return (0, ExprBase_1.derive)(this.expr, (0, ExprBase_1.kleeneUnary)((v) => fn(String(v))));
13
- }
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) {
18
- if (pattern == null) {
19
- return (0, ExprBase_1.derive)(this.expr, (vArray) => new Array(vArray.length).fill(null));
20
- }
21
- return this._deriveString((str) => {
22
- return pattern instanceof RegExp ? pattern.test(str) : str.includes(pattern);
23
- });
24
- }
25
- 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) => {
30
- if (pattern instanceof RegExp) {
31
- const regex = pattern.global
32
- ? pattern
33
- : new RegExp(pattern.source, pattern.flags + "g");
34
- const matches = str.match(regex);
35
- return matches ? matches.length : 0;
36
- }
37
- else {
38
- let count = 0;
39
- let pos = str.indexOf(pattern);
40
- while (pos !== -1) {
41
- count++;
42
- pos = str.indexOf(pattern, pos + pattern.length);
43
- }
44
- return count;
45
- }
46
- });
47
- }
48
- decode_uri_component() {
49
- return this._deriveString((str) => {
50
- try {
51
- return decodeURIComponent(str);
52
- }
53
- catch {
54
- return str;
55
- }
56
- });
57
- }
58
- encode_uri_component() {
59
- return this._deriveString((str) => {
60
- try {
61
- return encodeURIComponent(str);
62
- }
63
- catch {
64
- return str;
65
- }
66
- });
67
- }
68
- ends_with(suffix) {
69
- return this._deriveString((str) => str.endsWith(suffix));
70
- }
71
- explode() {
72
- return this._deriveString((str) => str.split(""));
73
- }
74
- 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) => {
79
- const match = str.match(pattern);
80
- if (!match)
81
- return null;
82
- return match[group] !== undefined ? match[group] : null;
83
- });
84
- }
85
- len() {
86
- return this.len_chars();
87
- }
88
- len_bytes() {
89
- return this._deriveString((str) => new TextEncoder().encode(str).length);
90
- }
91
- len_chars() {
92
- return this._deriveString((str) => str.length);
93
- }
94
- lower() {
95
- return this._deriveString((str) => str.toLowerCase());
96
- }
97
- lpad(width, fill = " ") {
98
- return this._deriveString((str) => str.padStart(width, fill));
99
- }
100
- pad_end(width, fill = " ") {
101
- return this.rpad(width, fill);
102
- }
103
- pad_start(width, fill = " ") {
104
- return this.lpad(width, fill);
105
- }
106
- 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));
111
- }
112
- 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) => {
117
- if (pattern instanceof RegExp) {
118
- const regex = pattern.global
119
- ? pattern
120
- : new RegExp(pattern.source, pattern.flags + "g");
121
- return str.replace(regex, replacement);
122
- }
123
- return str.replaceAll(pattern, replacement);
124
- });
125
- }
126
- reverse() {
127
- return this._deriveString((str) => str.split("").reverse().join(""));
128
- }
129
- rpad(width, fill = " ") {
130
- return this._deriveString((str) => str.padEnd(width, fill));
131
- }
132
- slice(offset, length) {
133
- return this._deriveString((str) => {
134
- const start = offset < 0 ? str.length + offset : offset;
135
- const end = length !== undefined ? start + length : undefined;
136
- return str.slice(start, end);
137
- });
138
- }
139
- slice_str(offset, length) {
140
- return this.slice(offset, length);
141
- }
142
- split(delimiter) {
143
- return this._deriveString((str) => str.split(delimiter));
144
- }
145
- starts_with(prefix) {
146
- return this._deriveString((str) => str.startsWith(prefix));
147
- }
148
- strip_chars(characters, options) {
149
- return this._deriveString((str) => (0, utils_1.stripChars)(str, characters, { mode: "both", ...options }));
150
- }
151
- strip_chars_end(characters, options) {
152
- return this._deriveString((str) => (0, utils_1.stripChars)(str, characters, { mode: "end", ...options }));
153
- }
154
- strip_chars_start(characters, options) {
155
- return this._deriveString((str) => (0, utils_1.stripChars)(str, characters, { mode: "start", ...options }));
156
- }
157
- strip_prefix(prefix) {
158
- return this._deriveString((str) => {
159
- return (0, utils_1.stripChars)(str, prefix, {
160
- mode: "start",
161
- maxScanStart: 1,
162
- maxMatchesStart: 1,
163
- returnStringOnNull: true,
164
- stringOptions: { literal: true }
165
- });
166
- });
167
- }
168
- strip_suffix(suffix) {
169
- return this._deriveString((str) => {
170
- return (0, utils_1.stripChars)(str, suffix, {
171
- mode: "end",
172
- maxScanEnd: 1,
173
- maxMatchesEnd: 1,
174
- returnStringOnNull: true,
175
- stringOptions: { literal: true }
176
- });
177
- });
178
- }
179
- strptime(format, strict = true) {
180
- return this._deriveString((str) => (0, utils_1.strptime)(str, format, strict));
181
- }
182
- to_date() {
183
- return this._deriveString((str) => {
184
- const d = (0, utils_1.toValidDate)(str);
185
- if (!d)
186
- return null;
187
- const copy = new Date(d);
188
- copy.setUTCHours(0, 0, 0, 0);
189
- return copy;
190
- });
191
- }
192
- to_datetime() {
193
- return this._deriveString(utils_1.toValidDate);
194
- }
195
- to_decimal(precision, scale) {
196
- return this._deriveString((str) => (0, utils_1.toValidDecimal)(str, { precision, scale }));
197
- }
198
- to_integer() {
199
- return this._deriveString((str) => (0, utils_1.toValidInt)(str));
200
- }
201
- to_lowercase() {
202
- return this.lower();
203
- }
204
- to_time() {
205
- return this._deriveString((str) => {
206
- const d = (0, utils_1.toValidDate)(str);
207
- if (d)
208
- return d.toISOString().split("T")[1].slice(0, 12);
209
- 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)) {
213
- return td.toISOString().split("T")[1].slice(0, 12);
214
- }
215
- }
216
- return null;
217
- });
218
- }
219
- to_titlecase() {
220
- return this._deriveString((str) => str.replace(/\b\w/g, c => c.toUpperCase()));
221
- }
222
- to_uppercase() {
223
- return this.upper();
224
- }
225
- trim() {
226
- return this.strip_chars();
227
- }
228
- trim_end() {
229
- return this.strip_chars_end();
230
- }
231
- trim_start() {
232
- return this.strip_chars_start();
233
- }
234
- upper() {
235
- return this._deriveString((str) => str.toUpperCase());
236
- }
237
- zfill(width) {
238
- return this._deriveString((str) => str.padStart(width, "0"));
239
- }
240
- }
241
- exports.StringExprNamespace = StringExprNamespace;
242
- const StringExpr = (Base) => {
243
- return class extends Base {
244
- get str() {
245
- return new StringExprNamespace(this);
246
- }
247
- };
248
- };
249
- exports.StringExpr = StringExpr;