@milaboratories/ptabler-expression-js 1.2.31 → 1.2.33
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/expressions.cjs +61 -0
- package/dist/expressions.cjs.map +1 -1
- package/dist/expressions.d.ts.map +1 -1
- package/dist/expressions.js +61 -0
- package/dist/expressions.js.map +1 -1
- package/dist/functions.cjs +4 -0
- package/dist/functions.cjs.map +1 -1
- package/dist/functions.d.ts.map +1 -1
- package/dist/functions.js +4 -0
- package/dist/functions.js.map +1 -1
- package/dist/types.d.ts +1 -1
- package/package.json +4 -4
package/dist/expressions.cjs
CHANGED
|
@@ -149,6 +149,7 @@ var ExpressionImpl = class {
|
|
|
149
149
|
}
|
|
150
150
|
};
|
|
151
151
|
var ColumnExpressionImpl = class ColumnExpressionImpl extends ExpressionImpl {
|
|
152
|
+
columnName;
|
|
152
153
|
constructor(columnName) {
|
|
153
154
|
super();
|
|
154
155
|
this.columnName = columnName;
|
|
@@ -182,6 +183,8 @@ function coerceToExpression(value) {
|
|
|
182
183
|
return new LiteralExpressionImpl(value);
|
|
183
184
|
}
|
|
184
185
|
var MinMaxExpressionImpl = class MinMaxExpressionImpl extends ExpressionImpl {
|
|
186
|
+
op;
|
|
187
|
+
ops;
|
|
185
188
|
constructor(op, ops) {
|
|
186
189
|
super();
|
|
187
190
|
this.op = op;
|
|
@@ -203,6 +206,9 @@ var MinMaxExpressionImpl = class MinMaxExpressionImpl extends ExpressionImpl {
|
|
|
203
206
|
}
|
|
204
207
|
};
|
|
205
208
|
var ArithmeticExpressionImpl = class ArithmeticExpressionImpl extends ExpressionImpl {
|
|
209
|
+
operator;
|
|
210
|
+
lhs;
|
|
211
|
+
rhs;
|
|
206
212
|
constructor(operator, lhs, rhs) {
|
|
207
213
|
super();
|
|
208
214
|
this.operator = operator;
|
|
@@ -226,6 +232,9 @@ var ArithmeticExpressionImpl = class ArithmeticExpressionImpl extends Expression
|
|
|
226
232
|
}
|
|
227
233
|
};
|
|
228
234
|
var ComparisonExpressionImpl = class ComparisonExpressionImpl extends ExpressionImpl {
|
|
235
|
+
operator;
|
|
236
|
+
lhs;
|
|
237
|
+
rhs;
|
|
229
238
|
constructor(operator, lhs, rhs) {
|
|
230
239
|
super();
|
|
231
240
|
this.operator = operator;
|
|
@@ -249,6 +258,8 @@ var ComparisonExpressionImpl = class ComparisonExpressionImpl extends Expression
|
|
|
249
258
|
}
|
|
250
259
|
};
|
|
251
260
|
var LogicalExpressionImpl = class LogicalExpressionImpl extends ExpressionImpl {
|
|
261
|
+
operator;
|
|
262
|
+
operands;
|
|
252
263
|
constructor(operator, operands) {
|
|
253
264
|
super();
|
|
254
265
|
this.operator = operator;
|
|
@@ -276,6 +287,8 @@ var LogicalExpressionImpl = class LogicalExpressionImpl extends ExpressionImpl {
|
|
|
276
287
|
}
|
|
277
288
|
};
|
|
278
289
|
var UnaryArithmeticExpressionImpl = class UnaryArithmeticExpressionImpl extends ExpressionImpl {
|
|
290
|
+
operator;
|
|
291
|
+
value;
|
|
279
292
|
constructor(operator, value) {
|
|
280
293
|
super();
|
|
281
294
|
this.operator = operator;
|
|
@@ -297,6 +310,8 @@ var UnaryArithmeticExpressionImpl = class UnaryArithmeticExpressionImpl extends
|
|
|
297
310
|
}
|
|
298
311
|
};
|
|
299
312
|
var NullCheckExpressionImpl = class NullCheckExpressionImpl extends ExpressionImpl {
|
|
313
|
+
operator;
|
|
314
|
+
value;
|
|
300
315
|
constructor(operator, value) {
|
|
301
316
|
super();
|
|
302
317
|
this.operator = operator;
|
|
@@ -318,6 +333,7 @@ var NullCheckExpressionImpl = class NullCheckExpressionImpl extends ExpressionIm
|
|
|
318
333
|
}
|
|
319
334
|
};
|
|
320
335
|
var LiteralExpressionImpl = class LiteralExpressionImpl extends ExpressionImpl {
|
|
336
|
+
value;
|
|
321
337
|
constructor(value) {
|
|
322
338
|
super();
|
|
323
339
|
this.value = value;
|
|
@@ -359,6 +375,8 @@ var LiteralExpressionImpl = class LiteralExpressionImpl extends ExpressionImpl {
|
|
|
359
375
|
}
|
|
360
376
|
};
|
|
361
377
|
var FillNullExpressionImpl = class FillNullExpressionImpl extends ExpressionImpl {
|
|
378
|
+
expr;
|
|
379
|
+
fillValue;
|
|
362
380
|
constructor(expr, fillValue) {
|
|
363
381
|
super();
|
|
364
382
|
this.expr = expr;
|
|
@@ -381,6 +399,8 @@ var FillNullExpressionImpl = class FillNullExpressionImpl extends ExpressionImpl
|
|
|
381
399
|
}
|
|
382
400
|
};
|
|
383
401
|
var FillNaNExpressionImpl = class FillNaNExpressionImpl extends ExpressionImpl {
|
|
402
|
+
expr;
|
|
403
|
+
fillValue;
|
|
384
404
|
constructor(expr, fillValue) {
|
|
385
405
|
super();
|
|
386
406
|
this.expr = expr;
|
|
@@ -403,6 +423,8 @@ var FillNaNExpressionImpl = class FillNaNExpressionImpl extends ExpressionImpl {
|
|
|
403
423
|
}
|
|
404
424
|
};
|
|
405
425
|
var StringConcatExpressionImpl = class StringConcatExpressionImpl extends ExpressionImpl {
|
|
426
|
+
operands;
|
|
427
|
+
delimiter;
|
|
406
428
|
constructor(operands, delimiter = "") {
|
|
407
429
|
super();
|
|
408
430
|
this.operands = operands;
|
|
@@ -425,6 +447,9 @@ var StringConcatExpressionImpl = class StringConcatExpressionImpl extends Expres
|
|
|
425
447
|
}
|
|
426
448
|
};
|
|
427
449
|
var SubstringExpressionImpl = class SubstringExpressionImpl extends ExpressionImpl {
|
|
450
|
+
expr;
|
|
451
|
+
start;
|
|
452
|
+
length;
|
|
428
453
|
constructor(expr, start, length) {
|
|
429
454
|
super();
|
|
430
455
|
this.expr = expr;
|
|
@@ -455,6 +480,10 @@ var SubstringExpressionImpl = class SubstringExpressionImpl extends ExpressionIm
|
|
|
455
480
|
}
|
|
456
481
|
};
|
|
457
482
|
var StringReplaceExpressionImpl = class StringReplaceExpressionImpl extends ExpressionImpl {
|
|
483
|
+
expr;
|
|
484
|
+
pattern;
|
|
485
|
+
value;
|
|
486
|
+
options;
|
|
458
487
|
constructor(expr, pattern, value, options) {
|
|
459
488
|
super();
|
|
460
489
|
this.expr = expr;
|
|
@@ -482,6 +511,10 @@ var StringReplaceExpressionImpl = class StringReplaceExpressionImpl extends Expr
|
|
|
482
511
|
}
|
|
483
512
|
};
|
|
484
513
|
var StringContainsExpressionImpl = class StringContainsExpressionImpl extends ExpressionImpl {
|
|
514
|
+
expr;
|
|
515
|
+
pattern;
|
|
516
|
+
literal;
|
|
517
|
+
strict;
|
|
485
518
|
constructor(expr, pattern, literal, strict) {
|
|
486
519
|
super();
|
|
487
520
|
this.expr = expr;
|
|
@@ -508,6 +541,8 @@ var StringContainsExpressionImpl = class StringContainsExpressionImpl extends Ex
|
|
|
508
541
|
}
|
|
509
542
|
};
|
|
510
543
|
var StringCaseExpressionImpl = class StringCaseExpressionImpl extends ExpressionImpl {
|
|
544
|
+
operation;
|
|
545
|
+
expr;
|
|
511
546
|
constructor(operation, expr) {
|
|
512
547
|
super();
|
|
513
548
|
this.operation = operation;
|
|
@@ -529,6 +564,8 @@ var StringCaseExpressionImpl = class StringCaseExpressionImpl extends Expression
|
|
|
529
564
|
}
|
|
530
565
|
};
|
|
531
566
|
var StringStartsWithExpressionImpl = class StringStartsWithExpressionImpl extends ExpressionImpl {
|
|
567
|
+
expr;
|
|
568
|
+
pattern;
|
|
532
569
|
constructor(expr, pattern) {
|
|
533
570
|
super();
|
|
534
571
|
this.expr = expr;
|
|
@@ -551,6 +588,8 @@ var StringStartsWithExpressionImpl = class StringStartsWithExpressionImpl extend
|
|
|
551
588
|
}
|
|
552
589
|
};
|
|
553
590
|
var StringEndsWithExpressionImpl = class StringEndsWithExpressionImpl extends ExpressionImpl {
|
|
591
|
+
expr;
|
|
592
|
+
pattern;
|
|
554
593
|
constructor(expr, pattern) {
|
|
555
594
|
super();
|
|
556
595
|
this.expr = expr;
|
|
@@ -573,6 +612,10 @@ var StringEndsWithExpressionImpl = class StringEndsWithExpressionImpl extends Ex
|
|
|
573
612
|
}
|
|
574
613
|
};
|
|
575
614
|
var CumsumExpressionImpl = class CumsumExpressionImpl extends ExpressionImpl {
|
|
615
|
+
value;
|
|
616
|
+
additionalOrderBy;
|
|
617
|
+
partitionBy;
|
|
618
|
+
descending;
|
|
576
619
|
constructor(value, additionalOrderBy = [], partitionBy = [], descending) {
|
|
577
620
|
super();
|
|
578
621
|
this.value = value;
|
|
@@ -599,6 +642,8 @@ var CumsumExpressionImpl = class CumsumExpressionImpl extends ExpressionImpl {
|
|
|
599
642
|
}
|
|
600
643
|
};
|
|
601
644
|
var AggregationExpressionImpl = class AggregationExpressionImpl extends ExpressionImpl {
|
|
645
|
+
operation;
|
|
646
|
+
expr;
|
|
602
647
|
constructor(operation, expr) {
|
|
603
648
|
super();
|
|
604
649
|
this.operation = operation;
|
|
@@ -625,6 +670,9 @@ var AggregationExpressionImpl = class AggregationExpressionImpl extends Expressi
|
|
|
625
670
|
}
|
|
626
671
|
};
|
|
627
672
|
var WindowExpressionImpl = class WindowExpressionImpl extends ExpressionImpl {
|
|
673
|
+
expr;
|
|
674
|
+
aggregation;
|
|
675
|
+
partitionBy;
|
|
628
676
|
constructor(expr, aggregation, partitionBy) {
|
|
629
677
|
super();
|
|
630
678
|
this.expr = expr;
|
|
@@ -649,6 +697,10 @@ var WindowExpressionImpl = class WindowExpressionImpl extends ExpressionImpl {
|
|
|
649
697
|
}
|
|
650
698
|
};
|
|
651
699
|
var StringDistanceExpressionImpl = class StringDistanceExpressionImpl extends ExpressionImpl {
|
|
700
|
+
string1;
|
|
701
|
+
string2;
|
|
702
|
+
metric;
|
|
703
|
+
returnSimilarity;
|
|
652
704
|
constructor(string1, string2, metric, returnSimilarity) {
|
|
653
705
|
super();
|
|
654
706
|
this.string1 = string1;
|
|
@@ -675,6 +727,10 @@ var StringDistanceExpressionImpl = class StringDistanceExpressionImpl extends Ex
|
|
|
675
727
|
}
|
|
676
728
|
};
|
|
677
729
|
var FuzzyStringFilterExpressionImpl = class FuzzyStringFilterExpressionImpl extends ExpressionImpl {
|
|
730
|
+
expr;
|
|
731
|
+
pattern;
|
|
732
|
+
metric;
|
|
733
|
+
bound;
|
|
678
734
|
constructor(expr, pattern, metric, bound) {
|
|
679
735
|
super();
|
|
680
736
|
this.expr = expr;
|
|
@@ -701,6 +757,9 @@ var FuzzyStringFilterExpressionImpl = class FuzzyStringFilterExpressionImpl exte
|
|
|
701
757
|
}
|
|
702
758
|
};
|
|
703
759
|
var RankExpressionImpl = class RankExpressionImpl extends ExpressionImpl {
|
|
760
|
+
orderBy;
|
|
761
|
+
partitionBy;
|
|
762
|
+
descending;
|
|
704
763
|
constructor(orderBy, partitionBy, descending) {
|
|
705
764
|
super();
|
|
706
765
|
this.orderBy = orderBy;
|
|
@@ -728,6 +787,8 @@ var RankExpressionImpl = class RankExpressionImpl extends ExpressionImpl {
|
|
|
728
787
|
}
|
|
729
788
|
};
|
|
730
789
|
var WhenThenOtherwiseExpressionImpl = class WhenThenOtherwiseExpressionImpl extends ExpressionImpl {
|
|
790
|
+
conditions;
|
|
791
|
+
otherwiseValue;
|
|
731
792
|
constructor(conditions, otherwiseValue) {
|
|
732
793
|
super();
|
|
733
794
|
this.conditions = conditions;
|
package/dist/expressions.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"expressions.cjs","names":[],"sources":["../src/expressions.ts"],"sourcesContent":["/**\n * Base expressionImpl classes and interfaces for PTabler JavaScript implementation\n */\n\nimport type {\n AggregationType,\n BinaryArithmeticExpression,\n BinaryArithmeticOperator,\n BooleanLogicExpression,\n ColumnReferenceExpression,\n ComparisonExpression,\n ComparisonOperator,\n ConstantValueExpression,\n CumsumExpression,\n Expression,\n ExtendedUnaryStringExpression,\n FillNaNExpression,\n FillNullExpression,\n FuzzyFilterDistanceMetric,\n FuzzyStringFilterExpression,\n MinMaxExpression,\n MinMaxOperator,\n NotExpression,\n RankExpression,\n StringContainsExpression,\n StringDistanceExpression,\n StringDistanceMetric,\n StringJoinExpression,\n StringReplaceExpression,\n SubstringExpression,\n UnaryArithmeticExpression,\n UnaryArithmeticOperator,\n WhenThenOtherwiseExpression,\n WindowExpression,\n} from \"./types\";\n\n/**\n * Base abstract class for all expressions\n */\nexport abstract class ExpressionImpl {\n protected _alias?: string;\n\n /**\n * Convert the expressionImpl to JSON format compatible with PTabler schema\n */\n abstract toJSON(): Expression;\n\n /**\n * Get the alias for this expressionImpl (defaults to a generated name)\n */\n abstract getAlias(): string;\n\n /**\n * Set an alias for this expression\n */\n alias(name: string): ExpressionImpl {\n const cloned = this.clone();\n cloned._alias = name;\n return cloned;\n }\n\n /**\n * Clone this expression\n */\n protected abstract clone(): ExpressionImpl;\n\n // Arithmetic operations\n plus(other: ExpressionImpl | number | string): ArithmeticExpressionImpl {\n return new ArithmeticExpressionImpl(\"plus\", this, coerceToExpression(other));\n }\n\n minus(other: ExpressionImpl | number | string): ArithmeticExpressionImpl {\n return new ArithmeticExpressionImpl(\"minus\", this, coerceToExpression(other));\n }\n\n multiply(other: ExpressionImpl | number | string): ArithmeticExpressionImpl {\n return new ArithmeticExpressionImpl(\"multiply\", this, coerceToExpression(other));\n }\n\n truediv(other: ExpressionImpl | number | string): ArithmeticExpressionImpl {\n return new ArithmeticExpressionImpl(\"truediv\", this, coerceToExpression(other));\n }\n\n floordiv(other: ExpressionImpl | number | string): ArithmeticExpressionImpl {\n return new ArithmeticExpressionImpl(\"floordiv\", this, coerceToExpression(other));\n }\n\n // Comparison operations\n gt(other: ExpressionImpl | number | string): ComparisonExpressionImpl {\n return new ComparisonExpressionImpl(\"gt\", this, coerceToExpression(other));\n }\n\n ge(other: ExpressionImpl | number | string): ComparisonExpressionImpl {\n return new ComparisonExpressionImpl(\"ge\", this, coerceToExpression(other));\n }\n\n eq(other: ExpressionImpl | number | string): ComparisonExpressionImpl {\n return new ComparisonExpressionImpl(\"eq\", this, coerceToExpression(other));\n }\n\n lt(other: ExpressionImpl | number | string): ComparisonExpressionImpl {\n return new ComparisonExpressionImpl(\"lt\", this, coerceToExpression(other));\n }\n\n le(other: ExpressionImpl | number | string): ComparisonExpressionImpl {\n return new ComparisonExpressionImpl(\"le\", this, coerceToExpression(other));\n }\n\n neq(other: ExpressionImpl | number | string): ComparisonExpressionImpl {\n return new ComparisonExpressionImpl(\"neq\", this, coerceToExpression(other));\n }\n\n // Logical operations\n and(...others: ExpressionImpl[]): LogicalExpressionImpl {\n return new LogicalExpressionImpl(\"and\", [this, ...others]);\n }\n\n or(...others: ExpressionImpl[]): LogicalExpressionImpl {\n return new LogicalExpressionImpl(\"or\", [this, ...others]);\n }\n\n not(): LogicalExpressionImpl {\n return new LogicalExpressionImpl(\"not\", [this]);\n }\n\n // Unary arithmetic operations\n abs(): UnaryArithmeticExpressionImpl {\n return new UnaryArithmeticExpressionImpl(\"abs\", this);\n }\n\n sqrt(): UnaryArithmeticExpressionImpl {\n return new UnaryArithmeticExpressionImpl(\"sqrt\", this);\n }\n\n log(): UnaryArithmeticExpressionImpl {\n return new UnaryArithmeticExpressionImpl(\"log\", this);\n }\n\n log10(): UnaryArithmeticExpressionImpl {\n return new UnaryArithmeticExpressionImpl(\"log10\", this);\n }\n\n log2(): UnaryArithmeticExpressionImpl {\n return new UnaryArithmeticExpressionImpl(\"log2\", this);\n }\n\n floor(): UnaryArithmeticExpressionImpl {\n return new UnaryArithmeticExpressionImpl(\"floor\", this);\n }\n\n ceil(): UnaryArithmeticExpressionImpl {\n return new UnaryArithmeticExpressionImpl(\"ceil\", this);\n }\n\n round(): UnaryArithmeticExpressionImpl {\n return new UnaryArithmeticExpressionImpl(\"round\", this);\n }\n\n negate(): UnaryArithmeticExpressionImpl {\n return new UnaryArithmeticExpressionImpl(\"negate\", this);\n }\n\n // Null checks\n isNull(): NullCheckExpressionImpl {\n return new NullCheckExpressionImpl(\"is_na\", this);\n }\n\n isNotNull(): NullCheckExpressionImpl {\n return new NullCheckExpressionImpl(\"is_not_na\", this);\n }\n\n // Fill null/NaN\n fillNull(value: ExpressionImpl): FillNullExpressionImpl {\n return new FillNullExpressionImpl(this, coerceToExpression(value));\n }\n\n fillNaN(value: ExpressionImpl): FillNaNExpressionImpl {\n return new FillNaNExpressionImpl(this, coerceToExpression(value));\n }\n\n // String operations\n strConcat(...others: (ExpressionImpl | string)[]): StringConcatExpressionImpl {\n return new StringConcatExpressionImpl([this, ...others.map(coerceToExpression)]);\n }\n\n substring(start: number, length?: number): SubstringExpressionImpl {\n return new SubstringExpressionImpl(this, start, length);\n }\n\n strReplace(\n pattern: string,\n value: string,\n options?: Pick<StringReplaceExpression, \"replaceAll\" | \"literal\">,\n ): StringReplaceExpressionImpl {\n return new StringReplaceExpressionImpl(this, pattern, value, options);\n }\n\n strContains(\n pattern: ExpressionImpl | string,\n literal?: boolean,\n strict?: boolean,\n ): StringContainsExpressionImpl {\n return new StringContainsExpressionImpl(this, coerceToExpression(pattern), literal, strict);\n }\n\n strToUpper(): StringCaseExpressionImpl {\n return new StringCaseExpressionImpl(\"to_upper\", this);\n }\n\n strToLower(): StringCaseExpressionImpl {\n return new StringCaseExpressionImpl(\"to_lower\", this);\n }\n\n strStartsWith(pattern: ExpressionImpl | string): StringStartsWithExpressionImpl {\n return new StringStartsWithExpressionImpl(this, coerceToExpression(pattern));\n }\n\n strEndsWith(pattern: ExpressionImpl | string): StringEndsWithExpressionImpl {\n return new StringEndsWithExpressionImpl(this, coerceToExpression(pattern));\n }\n\n // Aggregation operations\n sum(): AggregationExpressionImpl {\n return new AggregationExpressionImpl(\"sum\", this);\n }\n\n mean(): AggregationExpressionImpl {\n return new AggregationExpressionImpl(\"mean\", this);\n }\n\n count(): AggregationExpressionImpl {\n return new AggregationExpressionImpl(\"count\", this);\n }\n\n min(): AggregationExpressionImpl {\n return new AggregationExpressionImpl(\"min\", this);\n }\n\n max(): AggregationExpressionImpl {\n return new AggregationExpressionImpl(\"max\", this);\n }\n\n first(): AggregationExpressionImpl {\n return new AggregationExpressionImpl(\"first\", this);\n }\n\n last(): AggregationExpressionImpl {\n return new AggregationExpressionImpl(\"last\", this);\n }\n\n cumsum(): CumsumExpressionImpl {\n return new CumsumExpressionImpl(this);\n }\n\n // Fuzzy operations\n stringDistance(\n other: ExpressionImpl | string,\n metric: StringDistanceMetric,\n returnSimilarity?: boolean,\n ): StringDistanceExpressionImpl {\n return new StringDistanceExpressionImpl(\n this,\n coerceToExpression(other),\n metric,\n returnSimilarity,\n );\n }\n\n fuzzyStringFilter(\n pattern: ExpressionImpl | string,\n metric: FuzzyFilterDistanceMetric,\n bound: number,\n ): FuzzyStringFilterExpressionImpl {\n return new FuzzyStringFilterExpressionImpl(this, coerceToExpression(pattern), metric, bound);\n }\n}\n\nexport class ColumnExpressionImpl extends ExpressionImpl {\n constructor(private readonly columnName: string) {\n super();\n }\n\n toJSON(): ColumnReferenceExpression {\n return {\n type: \"col\",\n name: this.columnName,\n };\n }\n\n getAlias(): string {\n return this._alias || this.columnName;\n }\n\n protected clone(): ExpressionImpl {\n const cloned = new ColumnExpressionImpl(this.columnName);\n cloned._alias = this._alias;\n return cloned;\n }\n\n /**\n * Get the column name\n */\n getColumnName(): string {\n return this.columnName;\n }\n}\n\n/**\n * Helper function to coerce values to expressions\n */\nexport function coerceToExpression(value: ExpressionImpl | LiteralValue): ExpressionImpl {\n if (value instanceof ExpressionImpl) {\n return value;\n }\n return new LiteralExpressionImpl(value);\n}\n\nexport class MinMaxExpressionImpl extends ExpressionImpl {\n constructor(\n private readonly op: MinMaxOperator,\n private readonly ops: ExpressionImpl[],\n ) {\n super();\n }\n\n toJSON(): MinMaxExpression {\n return {\n type: this.op,\n operands: this.ops.map((o) => o.toJSON()),\n };\n }\n\n getAlias(): string {\n return this._alias || `${this.op}_${this.ops.map((o) => o.getAlias()).join(\"_\")}`;\n }\n\n protected clone(): ExpressionImpl {\n const cloned = new MinMaxExpressionImpl(this.op, this.ops);\n cloned._alias = this._alias;\n return cloned;\n }\n}\n\n// Forward declarations for concrete expressionImpl classes\n// These will be imported from their respective modules\nexport class ArithmeticExpressionImpl extends ExpressionImpl {\n constructor(\n private readonly operator: BinaryArithmeticOperator,\n private readonly lhs: ExpressionImpl,\n private readonly rhs: ExpressionImpl,\n ) {\n super();\n }\n\n toJSON(): BinaryArithmeticExpression {\n return {\n type: this.operator,\n lhs: this.lhs.toJSON(),\n rhs: this.rhs.toJSON(),\n };\n }\n\n getAlias(): string {\n return this._alias || `${this.lhs.getAlias()}_${this.operator}_${this.rhs.getAlias()}`;\n }\n\n protected clone(): ExpressionImpl {\n const cloned = new ArithmeticExpressionImpl(this.operator, this.lhs, this.rhs);\n cloned._alias = this._alias;\n return cloned;\n }\n}\n\nexport class ComparisonExpressionImpl extends ExpressionImpl {\n constructor(\n private readonly operator: ComparisonOperator,\n private readonly lhs: ExpressionImpl,\n private readonly rhs: ExpressionImpl,\n ) {\n super();\n }\n\n toJSON(): ComparisonExpression {\n return {\n type: this.operator,\n lhs: this.lhs.toJSON(),\n rhs: this.rhs.toJSON(),\n };\n }\n\n getAlias(): string {\n return this._alias || `${this.lhs.getAlias()}_${this.operator}_${this.rhs.getAlias()}`;\n }\n\n protected clone(): ComparisonExpressionImpl {\n const cloned = new ComparisonExpressionImpl(this.operator, this.lhs, this.rhs);\n cloned._alias = this._alias;\n return cloned;\n }\n}\n\nexport class LogicalExpressionImpl extends ExpressionImpl {\n constructor(\n private readonly operator: \"and\" | \"or\" | \"not\",\n private readonly operands: ExpressionImpl[],\n ) {\n super();\n }\n\n toJSON(): NotExpression | BooleanLogicExpression {\n if (this.operator === \"not\") {\n return {\n type: \"not\",\n value: this.operands[0].toJSON(),\n };\n }\n return {\n type: this.operator,\n operands: this.operands.map((op) => op.toJSON()),\n };\n }\n\n getAlias(): string {\n if (this._alias) return this._alias;\n if (this.operator === \"not\") {\n return `not_${this.operands[0].getAlias()}`;\n }\n return this.operands.map((op) => op.getAlias()).join(`_${this.operator}_`);\n }\n\n protected clone(): ExpressionImpl {\n const cloned = new LogicalExpressionImpl(this.operator, this.operands);\n cloned._alias = this._alias;\n return cloned;\n }\n}\n\nexport class UnaryArithmeticExpressionImpl extends ExpressionImpl {\n constructor(\n private readonly operator: UnaryArithmeticOperator,\n private readonly value: ExpressionImpl,\n ) {\n super();\n }\n\n toJSON(): UnaryArithmeticExpression {\n return {\n type: this.operator,\n value: this.value.toJSON(),\n };\n }\n\n getAlias(): string {\n return this._alias || `${this.operator}_${this.value.getAlias()}`;\n }\n\n protected clone(): ExpressionImpl {\n const cloned = new UnaryArithmeticExpressionImpl(this.operator, this.value);\n cloned._alias = this._alias;\n return cloned;\n }\n}\n\nexport class NullCheckExpressionImpl extends ExpressionImpl {\n constructor(\n private readonly operator: \"is_na\" | \"is_not_na\",\n private readonly value: ExpressionImpl,\n ) {\n super();\n }\n\n toJSON(): Expression {\n return {\n type: this.operator,\n value: this.value.toJSON(),\n };\n }\n\n getAlias(): string {\n return this._alias || `${this.value.getAlias()}_${this.operator}`;\n }\n\n protected clone(): ExpressionImpl {\n const cloned = new NullCheckExpressionImpl(this.operator, this.value);\n cloned._alias = this._alias;\n return cloned;\n }\n}\n\nexport type LiteralValue = string | number | boolean | null;\n\nexport class LiteralExpressionImpl extends ExpressionImpl {\n constructor(private readonly value: LiteralValue) {\n super();\n }\n\n toJSON(): ConstantValueExpression {\n return {\n type: \"const\",\n value: this.value,\n };\n }\n\n getAlias(): string {\n return this._alias || this.generateDefaultAlias();\n }\n\n protected clone(): ExpressionImpl {\n const cloned = new LiteralExpressionImpl(this.value);\n cloned._alias = this._alias;\n return cloned;\n }\n\n /**\n * Get the literal value\n */\n getValue(): string | number | boolean | null {\n return this.value;\n }\n\n /**\n * Generate a default alias based on the value\n */\n private generateDefaultAlias(): string {\n if (this.value === null || this.value === undefined) {\n return \"null\";\n }\n if (typeof this.value === \"string\") {\n // For string values, truncate if too long and make safe for column names\n const safe = this.value.replace(/[^a-zA-Z0-9_]/g, \"_\");\n return safe.length > 20 ? safe.substring(0, 17) + \"...\" : safe;\n }\n if (typeof this.value === \"boolean\") {\n return this.value ? \"true\" : \"false\";\n }\n if (typeof this.value === \"number\") {\n return String(this.value);\n }\n if (Array.isArray(this.value)) {\n return \"array\";\n }\n if (typeof this.value === \"object\") {\n return \"object\";\n }\n return \"literal\";\n }\n}\n\nexport class FillNullExpressionImpl extends ExpressionImpl {\n constructor(\n private readonly expr: ExpressionImpl,\n private readonly fillValue: ExpressionImpl,\n ) {\n super();\n }\n\n toJSON(): FillNullExpression {\n return {\n type: \"fill_null\",\n input: this.expr.toJSON(),\n fillValue: this.fillValue.toJSON(),\n };\n }\n\n getAlias(): string {\n return this._alias || `${this.expr.getAlias()}_fill_null`;\n }\n\n protected clone(): ExpressionImpl {\n const cloned = new FillNullExpressionImpl(this.expr, this.fillValue);\n cloned._alias = this._alias;\n return cloned;\n }\n}\n\nexport class FillNaNExpressionImpl extends ExpressionImpl {\n constructor(\n private readonly expr: ExpressionImpl,\n private readonly fillValue: ExpressionImpl,\n ) {\n super();\n }\n\n toJSON(): FillNaNExpression {\n return {\n type: \"fill_nan\",\n input: this.expr.toJSON(),\n fillValue: this.fillValue.toJSON(),\n };\n }\n\n getAlias(): string {\n return this._alias || `${this.expr.getAlias()}_fill_nan`;\n }\n\n protected clone(): ExpressionImpl {\n const cloned = new FillNaNExpressionImpl(this.expr, this.fillValue);\n cloned._alias = this._alias;\n return cloned;\n }\n}\n\nexport class StringConcatExpressionImpl extends ExpressionImpl {\n constructor(\n private readonly operands: ExpressionImpl[],\n private readonly delimiter: string = \"\",\n ) {\n super();\n }\n\n toJSON(): StringJoinExpression {\n return {\n type: \"str_join\",\n operands: this.operands.map((o) => o.toJSON()),\n delimiter: this.delimiter,\n };\n }\n\n getAlias(): string {\n return this._alias || this.operands.map((o) => o.getAlias()).join(\"_\");\n }\n\n protected clone(): ExpressionImpl {\n const cloned = new StringConcatExpressionImpl(this.operands);\n cloned._alias = this._alias;\n return cloned;\n }\n}\n\nexport class SubstringExpressionImpl extends ExpressionImpl {\n constructor(\n private readonly expr: ExpressionImpl,\n private readonly start: number,\n private readonly length?: number,\n ) {\n super();\n }\n\n toJSON(): SubstringExpression {\n return {\n type: \"substring\",\n value: this.expr.toJSON(),\n start: { type: \"const\", value: this.start },\n length: this.length !== undefined ? { type: \"const\", value: this.length } : undefined,\n };\n }\n\n getAlias(): string {\n return this._alias || `${this.expr.getAlias()}_substring`;\n }\n\n protected clone(): ExpressionImpl {\n const cloned = new SubstringExpressionImpl(this.expr, this.start, this.length);\n cloned._alias = this._alias;\n return cloned;\n }\n}\n\nexport class StringReplaceExpressionImpl extends ExpressionImpl {\n constructor(\n private readonly expr: ExpressionImpl,\n private readonly pattern: string,\n private readonly value: string,\n private readonly options?: Pick<StringReplaceExpression, \"replaceAll\" | \"literal\">,\n ) {\n super();\n }\n\n toJSON(): StringReplaceExpression {\n return {\n type: \"str_replace\",\n value: this.expr.toJSON(),\n pattern: this.pattern,\n replacement: this.value,\n replaceAll: this.options?.replaceAll || false,\n literal: this.options?.literal || false,\n };\n }\n\n getAlias(): string {\n return this._alias || `${this.expr.getAlias()}_replace`;\n }\n\n protected clone(): ExpressionImpl {\n const cloned = new StringReplaceExpressionImpl(\n this.expr,\n this.pattern,\n this.value,\n this.options,\n );\n cloned._alias = this._alias;\n return cloned;\n }\n}\n\nexport class StringContainsExpressionImpl extends ExpressionImpl {\n constructor(\n private readonly expr: ExpressionImpl,\n private readonly pattern: ExpressionImpl,\n private readonly literal?: boolean,\n private readonly strict?: boolean,\n ) {\n super();\n }\n\n toJSON(): StringContainsExpression {\n return {\n type: \"str_contains\",\n value: this.expr.toJSON(),\n pattern: this.pattern.toJSON(),\n literal: this.literal || false,\n strict: this.strict !== undefined ? this.strict : true,\n };\n }\n\n getAlias(): string {\n return this._alias || `${this.expr.getAlias()}_contains`;\n }\n\n protected clone(): ExpressionImpl {\n const cloned = new StringContainsExpressionImpl(\n this.expr,\n this.pattern,\n this.literal,\n this.strict,\n );\n cloned._alias = this._alias;\n return cloned;\n }\n}\n\nexport class StringCaseExpressionImpl extends ExpressionImpl {\n constructor(\n private readonly operation: \"to_upper\" | \"to_lower\",\n private readonly expr: ExpressionImpl,\n ) {\n super();\n }\n\n toJSON(): ExtendedUnaryStringExpression {\n return {\n type: this.operation,\n value: this.expr.toJSON(),\n };\n }\n\n getAlias(): string {\n return this._alias || `${this.expr.getAlias()}_${this.operation}`;\n }\n\n protected clone(): ExpressionImpl {\n const cloned = new StringCaseExpressionImpl(this.operation, this.expr);\n cloned._alias = this._alias;\n return cloned;\n }\n}\n\nexport class StringStartsWithExpressionImpl extends ExpressionImpl {\n constructor(\n private readonly expr: ExpressionImpl,\n private readonly pattern: ExpressionImpl,\n ) {\n super();\n }\n\n toJSON(): Expression {\n return {\n type: \"str_starts_with\",\n value: this.expr.toJSON(),\n prefix: this.pattern.toJSON(),\n };\n }\n\n getAlias(): string {\n return this._alias || `${this.expr.getAlias()}_starts_with`;\n }\n\n protected clone(): ExpressionImpl {\n const cloned = new StringStartsWithExpressionImpl(this.expr, this.pattern);\n cloned._alias = this._alias;\n return cloned;\n }\n}\n\nexport class StringEndsWithExpressionImpl extends ExpressionImpl {\n constructor(\n private readonly expr: ExpressionImpl,\n private readonly pattern: ExpressionImpl,\n ) {\n super();\n }\n\n toJSON(): Expression {\n return {\n type: \"str_ends_with\",\n value: this.expr.toJSON(),\n suffix: this.pattern.toJSON(),\n };\n }\n\n getAlias(): string {\n return this._alias || `${this.expr.getAlias()}_ends_with`;\n }\n\n protected clone(): ExpressionImpl {\n const cloned = new StringEndsWithExpressionImpl(this.expr, this.pattern);\n cloned._alias = this._alias;\n return cloned;\n }\n}\n\nexport class CumsumExpressionImpl extends ExpressionImpl {\n constructor(\n private readonly value: ExpressionImpl,\n private readonly additionalOrderBy: ExpressionImpl[] = [],\n private readonly partitionBy: ExpressionImpl[] = [],\n private readonly descending?: boolean,\n ) {\n super();\n }\n\n toJSON(): CumsumExpression {\n return {\n type: \"cumsum\",\n value: this.value.toJSON(),\n additionalOrderBy: this.additionalOrderBy.map((expr) => expr.toJSON()),\n partitionBy: this.partitionBy.map((expr) => expr.toJSON()),\n descending: this.descending,\n };\n }\n\n getAlias(): string {\n return this._alias || `cumsum_${this.value.getAlias()}`;\n }\n\n protected clone(): ExpressionImpl {\n const cloned = new CumsumExpressionImpl(\n this.value,\n this.additionalOrderBy,\n this.partitionBy,\n this.descending,\n );\n cloned._alias = this._alias;\n return cloned;\n }\n}\n\nexport class AggregationExpressionImpl extends ExpressionImpl {\n constructor(\n public operation: AggregationType,\n public expr?: ExpressionImpl,\n ) {\n super();\n }\n\n toJSON(): WindowExpression {\n return {\n type: \"aggregate\",\n aggregation: this.operation,\n value: this.expr?.toJSON() || { type: \"const\", value: 1 },\n partitionBy: [],\n };\n }\n\n getAlias(): string {\n return this._alias || `${this.operation}${this.expr ? \"_\" + this.expr.getAlias() : \"\"}`;\n }\n\n protected clone(): ExpressionImpl {\n const cloned = new AggregationExpressionImpl(this.operation, this.expr);\n cloned._alias = this._alias;\n return cloned;\n }\n}\n\nexport class WindowExpressionImpl extends ExpressionImpl {\n constructor(\n private readonly expr: ExpressionImpl,\n private readonly aggregation: AggregationType,\n private readonly partitionBy: ExpressionImpl[],\n ) {\n super();\n }\n\n toJSON(): WindowExpression {\n return {\n type: \"aggregate\",\n aggregation: this.aggregation,\n value: this.expr.toJSON(),\n partitionBy: this.partitionBy.map((expr) => expr.toJSON()),\n };\n }\n\n getAlias(): string {\n return this._alias || `${this.expr.getAlias()}_window`;\n }\n\n protected clone(): ExpressionImpl {\n const cloned = new WindowExpressionImpl(this.expr, this.aggregation, this.partitionBy);\n cloned._alias = this._alias;\n return cloned;\n }\n}\n\nexport class StringDistanceExpressionImpl extends ExpressionImpl {\n constructor(\n private readonly string1: ExpressionImpl,\n private readonly string2: ExpressionImpl,\n private readonly metric: StringDistanceMetric,\n private readonly returnSimilarity?: boolean,\n ) {\n super();\n }\n\n toJSON(): StringDistanceExpression {\n return {\n type: \"string_distance\",\n metric: this.metric,\n string1: this.string1.toJSON(),\n string2: this.string2.toJSON(),\n returnSimilarity: this.returnSimilarity || false,\n };\n }\n\n getAlias(): string {\n return this._alias || `${this.string1.getAlias()}_distance_${this.string2.getAlias()}`;\n }\n\n protected clone(): ExpressionImpl {\n const cloned = new StringDistanceExpressionImpl(\n this.string1,\n this.string2,\n this.metric,\n this.returnSimilarity,\n );\n cloned._alias = this._alias;\n return cloned;\n }\n}\n\nexport class FuzzyStringFilterExpressionImpl extends ExpressionImpl {\n constructor(\n private readonly expr: ExpressionImpl,\n private readonly pattern: ExpressionImpl,\n private readonly metric: FuzzyFilterDistanceMetric,\n private readonly bound: number,\n ) {\n super();\n }\n\n toJSON(): FuzzyStringFilterExpression {\n return {\n type: \"fuzzy_string_filter\",\n metric: this.metric,\n value: this.expr.toJSON(),\n pattern: this.pattern.toJSON(),\n bound: this.bound,\n };\n }\n\n getAlias(): string {\n return this._alias || `${this.expr.getAlias()}_fuzzy_filter`;\n }\n\n protected clone(): ExpressionImpl {\n const cloned = new FuzzyStringFilterExpressionImpl(\n this.expr,\n this.pattern,\n this.metric,\n this.bound,\n );\n cloned._alias = this._alias;\n return cloned;\n }\n}\n\nexport class RankExpressionImpl extends ExpressionImpl {\n constructor(\n private readonly orderBy: ExpressionImpl[],\n private readonly partitionBy: ExpressionImpl[],\n private readonly descending: boolean,\n ) {\n super();\n }\n\n toJSON(): RankExpression {\n return {\n type: \"rank\",\n orderBy: this.orderBy.map((e) => e.toJSON()),\n partitionBy: this.partitionBy.map((e) => e.toJSON()),\n descending: this.descending || undefined,\n };\n }\n\n getAlias(): string {\n const order = this.orderBy.map((e) => e.getAlias()).join(\"_\");\n const part = this.partitionBy.map((e) => e.getAlias()).join(\"_\");\n const dir = this.descending ? \"desc\" : \"asc\";\n return this._alias || `rank_${order}${part ? `_over_${part}` : \"\"}_${dir}`;\n }\n\n protected clone(): ExpressionImpl {\n const cloned = new RankExpressionImpl(this.orderBy, this.partitionBy, this.descending);\n cloned._alias = this._alias;\n return cloned;\n }\n}\n\nexport class WhenThenOtherwiseExpressionImpl extends ExpressionImpl {\n constructor(\n private readonly conditions: Array<{ when: ExpressionImpl; then: ExpressionImpl }>,\n private readonly otherwiseValue: ExpressionImpl,\n ) {\n super();\n }\n\n toJSON(): WhenThenOtherwiseExpression {\n return {\n type: \"when_then_otherwise\",\n conditions: this.conditions.map((clause) => ({\n when: clause.when.toJSON(),\n then: clause.then.toJSON(),\n })),\n otherwise: this.otherwiseValue.toJSON(),\n };\n }\n\n getAlias(): string {\n return this._alias || \"conditional\";\n }\n\n protected clone(): ExpressionImpl {\n const cloned = new WhenThenOtherwiseExpressionImpl(this.conditions, this.otherwiseValue);\n cloned._alias = this._alias;\n return cloned;\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"expressions.cjs","names":[],"sources":["../src/expressions.ts"],"sourcesContent":["/**\n * Base expressionImpl classes and interfaces for PTabler JavaScript implementation\n */\n\nimport type {\n AggregationType,\n BinaryArithmeticExpression,\n BinaryArithmeticOperator,\n BooleanLogicExpression,\n ColumnReferenceExpression,\n ComparisonExpression,\n ComparisonOperator,\n ConstantValueExpression,\n CumsumExpression,\n Expression,\n ExtendedUnaryStringExpression,\n FillNaNExpression,\n FillNullExpression,\n FuzzyFilterDistanceMetric,\n FuzzyStringFilterExpression,\n MinMaxExpression,\n MinMaxOperator,\n NotExpression,\n RankExpression,\n StringContainsExpression,\n StringDistanceExpression,\n StringDistanceMetric,\n StringJoinExpression,\n StringReplaceExpression,\n SubstringExpression,\n UnaryArithmeticExpression,\n UnaryArithmeticOperator,\n WhenThenOtherwiseExpression,\n WindowExpression,\n} from \"./types\";\n\n/**\n * Base abstract class for all expressions\n */\nexport abstract class ExpressionImpl {\n protected _alias?: string;\n\n /**\n * Convert the expressionImpl to JSON format compatible with PTabler schema\n */\n abstract toJSON(): Expression;\n\n /**\n * Get the alias for this expressionImpl (defaults to a generated name)\n */\n abstract getAlias(): string;\n\n /**\n * Set an alias for this expression\n */\n alias(name: string): ExpressionImpl {\n const cloned = this.clone();\n cloned._alias = name;\n return cloned;\n }\n\n /**\n * Clone this expression\n */\n protected abstract clone(): ExpressionImpl;\n\n // Arithmetic operations\n plus(other: ExpressionImpl | number | string): ArithmeticExpressionImpl {\n return new ArithmeticExpressionImpl(\"plus\", this, coerceToExpression(other));\n }\n\n minus(other: ExpressionImpl | number | string): ArithmeticExpressionImpl {\n return new ArithmeticExpressionImpl(\"minus\", this, coerceToExpression(other));\n }\n\n multiply(other: ExpressionImpl | number | string): ArithmeticExpressionImpl {\n return new ArithmeticExpressionImpl(\"multiply\", this, coerceToExpression(other));\n }\n\n truediv(other: ExpressionImpl | number | string): ArithmeticExpressionImpl {\n return new ArithmeticExpressionImpl(\"truediv\", this, coerceToExpression(other));\n }\n\n floordiv(other: ExpressionImpl | number | string): ArithmeticExpressionImpl {\n return new ArithmeticExpressionImpl(\"floordiv\", this, coerceToExpression(other));\n }\n\n // Comparison operations\n gt(other: ExpressionImpl | number | string): ComparisonExpressionImpl {\n return new ComparisonExpressionImpl(\"gt\", this, coerceToExpression(other));\n }\n\n ge(other: ExpressionImpl | number | string): ComparisonExpressionImpl {\n return new ComparisonExpressionImpl(\"ge\", this, coerceToExpression(other));\n }\n\n eq(other: ExpressionImpl | number | string): ComparisonExpressionImpl {\n return new ComparisonExpressionImpl(\"eq\", this, coerceToExpression(other));\n }\n\n lt(other: ExpressionImpl | number | string): ComparisonExpressionImpl {\n return new ComparisonExpressionImpl(\"lt\", this, coerceToExpression(other));\n }\n\n le(other: ExpressionImpl | number | string): ComparisonExpressionImpl {\n return new ComparisonExpressionImpl(\"le\", this, coerceToExpression(other));\n }\n\n neq(other: ExpressionImpl | number | string): ComparisonExpressionImpl {\n return new ComparisonExpressionImpl(\"neq\", this, coerceToExpression(other));\n }\n\n // Logical operations\n and(...others: ExpressionImpl[]): LogicalExpressionImpl {\n return new LogicalExpressionImpl(\"and\", [this, ...others]);\n }\n\n or(...others: ExpressionImpl[]): LogicalExpressionImpl {\n return new LogicalExpressionImpl(\"or\", [this, ...others]);\n }\n\n not(): LogicalExpressionImpl {\n return new LogicalExpressionImpl(\"not\", [this]);\n }\n\n // Unary arithmetic operations\n abs(): UnaryArithmeticExpressionImpl {\n return new UnaryArithmeticExpressionImpl(\"abs\", this);\n }\n\n sqrt(): UnaryArithmeticExpressionImpl {\n return new UnaryArithmeticExpressionImpl(\"sqrt\", this);\n }\n\n log(): UnaryArithmeticExpressionImpl {\n return new UnaryArithmeticExpressionImpl(\"log\", this);\n }\n\n log10(): UnaryArithmeticExpressionImpl {\n return new UnaryArithmeticExpressionImpl(\"log10\", this);\n }\n\n log2(): UnaryArithmeticExpressionImpl {\n return new UnaryArithmeticExpressionImpl(\"log2\", this);\n }\n\n floor(): UnaryArithmeticExpressionImpl {\n return new UnaryArithmeticExpressionImpl(\"floor\", this);\n }\n\n ceil(): UnaryArithmeticExpressionImpl {\n return new UnaryArithmeticExpressionImpl(\"ceil\", this);\n }\n\n round(): UnaryArithmeticExpressionImpl {\n return new UnaryArithmeticExpressionImpl(\"round\", this);\n }\n\n negate(): UnaryArithmeticExpressionImpl {\n return new UnaryArithmeticExpressionImpl(\"negate\", this);\n }\n\n // Null checks\n isNull(): NullCheckExpressionImpl {\n return new NullCheckExpressionImpl(\"is_na\", this);\n }\n\n isNotNull(): NullCheckExpressionImpl {\n return new NullCheckExpressionImpl(\"is_not_na\", this);\n }\n\n // Fill null/NaN\n fillNull(value: ExpressionImpl): FillNullExpressionImpl {\n return new FillNullExpressionImpl(this, coerceToExpression(value));\n }\n\n fillNaN(value: ExpressionImpl): FillNaNExpressionImpl {\n return new FillNaNExpressionImpl(this, coerceToExpression(value));\n }\n\n // String operations\n strConcat(...others: (ExpressionImpl | string)[]): StringConcatExpressionImpl {\n return new StringConcatExpressionImpl([this, ...others.map(coerceToExpression)]);\n }\n\n substring(start: number, length?: number): SubstringExpressionImpl {\n return new SubstringExpressionImpl(this, start, length);\n }\n\n strReplace(\n pattern: string,\n value: string,\n options?: Pick<StringReplaceExpression, \"replaceAll\" | \"literal\">,\n ): StringReplaceExpressionImpl {\n return new StringReplaceExpressionImpl(this, pattern, value, options);\n }\n\n strContains(\n pattern: ExpressionImpl | string,\n literal?: boolean,\n strict?: boolean,\n ): StringContainsExpressionImpl {\n return new StringContainsExpressionImpl(this, coerceToExpression(pattern), literal, strict);\n }\n\n strToUpper(): StringCaseExpressionImpl {\n return new StringCaseExpressionImpl(\"to_upper\", this);\n }\n\n strToLower(): StringCaseExpressionImpl {\n return new StringCaseExpressionImpl(\"to_lower\", this);\n }\n\n strStartsWith(pattern: ExpressionImpl | string): StringStartsWithExpressionImpl {\n return new StringStartsWithExpressionImpl(this, coerceToExpression(pattern));\n }\n\n strEndsWith(pattern: ExpressionImpl | string): StringEndsWithExpressionImpl {\n return new StringEndsWithExpressionImpl(this, coerceToExpression(pattern));\n }\n\n // Aggregation operations\n sum(): AggregationExpressionImpl {\n return new AggregationExpressionImpl(\"sum\", this);\n }\n\n mean(): AggregationExpressionImpl {\n return new AggregationExpressionImpl(\"mean\", this);\n }\n\n count(): AggregationExpressionImpl {\n return new AggregationExpressionImpl(\"count\", this);\n }\n\n min(): AggregationExpressionImpl {\n return new AggregationExpressionImpl(\"min\", this);\n }\n\n max(): AggregationExpressionImpl {\n return new AggregationExpressionImpl(\"max\", this);\n }\n\n first(): AggregationExpressionImpl {\n return new AggregationExpressionImpl(\"first\", this);\n }\n\n last(): AggregationExpressionImpl {\n return new AggregationExpressionImpl(\"last\", this);\n }\n\n cumsum(): CumsumExpressionImpl {\n return new CumsumExpressionImpl(this);\n }\n\n // Fuzzy operations\n stringDistance(\n other: ExpressionImpl | string,\n metric: StringDistanceMetric,\n returnSimilarity?: boolean,\n ): StringDistanceExpressionImpl {\n return new StringDistanceExpressionImpl(\n this,\n coerceToExpression(other),\n metric,\n returnSimilarity,\n );\n }\n\n fuzzyStringFilter(\n pattern: ExpressionImpl | string,\n metric: FuzzyFilterDistanceMetric,\n bound: number,\n ): FuzzyStringFilterExpressionImpl {\n return new FuzzyStringFilterExpressionImpl(this, coerceToExpression(pattern), metric, bound);\n }\n}\n\nexport class ColumnExpressionImpl extends ExpressionImpl {\n constructor(private readonly columnName: string) {\n super();\n }\n\n toJSON(): ColumnReferenceExpression {\n return {\n type: \"col\",\n name: this.columnName,\n };\n }\n\n getAlias(): string {\n return this._alias || this.columnName;\n }\n\n protected clone(): ExpressionImpl {\n const cloned = new ColumnExpressionImpl(this.columnName);\n cloned._alias = this._alias;\n return cloned;\n }\n\n /**\n * Get the column name\n */\n getColumnName(): string {\n return this.columnName;\n }\n}\n\n/**\n * Helper function to coerce values to expressions\n */\nexport function coerceToExpression(value: ExpressionImpl | LiteralValue): ExpressionImpl {\n if (value instanceof ExpressionImpl) {\n return value;\n }\n return new LiteralExpressionImpl(value);\n}\n\nexport class MinMaxExpressionImpl extends ExpressionImpl {\n constructor(\n private readonly op: MinMaxOperator,\n private readonly ops: ExpressionImpl[],\n ) {\n super();\n }\n\n toJSON(): MinMaxExpression {\n return {\n type: this.op,\n operands: this.ops.map((o) => o.toJSON()),\n };\n }\n\n getAlias(): string {\n return this._alias || `${this.op}_${this.ops.map((o) => o.getAlias()).join(\"_\")}`;\n }\n\n protected clone(): ExpressionImpl {\n const cloned = new MinMaxExpressionImpl(this.op, this.ops);\n cloned._alias = this._alias;\n return cloned;\n }\n}\n\n// Forward declarations for concrete expressionImpl classes\n// These will be imported from their respective modules\nexport class ArithmeticExpressionImpl extends ExpressionImpl {\n constructor(\n private readonly operator: BinaryArithmeticOperator,\n private readonly lhs: ExpressionImpl,\n private readonly rhs: ExpressionImpl,\n ) {\n super();\n }\n\n toJSON(): BinaryArithmeticExpression {\n return {\n type: this.operator,\n lhs: this.lhs.toJSON(),\n rhs: this.rhs.toJSON(),\n };\n }\n\n getAlias(): string {\n return this._alias || `${this.lhs.getAlias()}_${this.operator}_${this.rhs.getAlias()}`;\n }\n\n protected clone(): ExpressionImpl {\n const cloned = new ArithmeticExpressionImpl(this.operator, this.lhs, this.rhs);\n cloned._alias = this._alias;\n return cloned;\n }\n}\n\nexport class ComparisonExpressionImpl extends ExpressionImpl {\n constructor(\n private readonly operator: ComparisonOperator,\n private readonly lhs: ExpressionImpl,\n private readonly rhs: ExpressionImpl,\n ) {\n super();\n }\n\n toJSON(): ComparisonExpression {\n return {\n type: this.operator,\n lhs: this.lhs.toJSON(),\n rhs: this.rhs.toJSON(),\n };\n }\n\n getAlias(): string {\n return this._alias || `${this.lhs.getAlias()}_${this.operator}_${this.rhs.getAlias()}`;\n }\n\n protected clone(): ComparisonExpressionImpl {\n const cloned = new ComparisonExpressionImpl(this.operator, this.lhs, this.rhs);\n cloned._alias = this._alias;\n return cloned;\n }\n}\n\nexport class LogicalExpressionImpl extends ExpressionImpl {\n constructor(\n private readonly operator: \"and\" | \"or\" | \"not\",\n private readonly operands: ExpressionImpl[],\n ) {\n super();\n }\n\n toJSON(): NotExpression | BooleanLogicExpression {\n if (this.operator === \"not\") {\n return {\n type: \"not\",\n value: this.operands[0].toJSON(),\n };\n }\n return {\n type: this.operator,\n operands: this.operands.map((op) => op.toJSON()),\n };\n }\n\n getAlias(): string {\n if (this._alias) return this._alias;\n if (this.operator === \"not\") {\n return `not_${this.operands[0].getAlias()}`;\n }\n return this.operands.map((op) => op.getAlias()).join(`_${this.operator}_`);\n }\n\n protected clone(): ExpressionImpl {\n const cloned = new LogicalExpressionImpl(this.operator, this.operands);\n cloned._alias = this._alias;\n return cloned;\n }\n}\n\nexport class UnaryArithmeticExpressionImpl extends ExpressionImpl {\n constructor(\n private readonly operator: UnaryArithmeticOperator,\n private readonly value: ExpressionImpl,\n ) {\n super();\n }\n\n toJSON(): UnaryArithmeticExpression {\n return {\n type: this.operator,\n value: this.value.toJSON(),\n };\n }\n\n getAlias(): string {\n return this._alias || `${this.operator}_${this.value.getAlias()}`;\n }\n\n protected clone(): ExpressionImpl {\n const cloned = new UnaryArithmeticExpressionImpl(this.operator, this.value);\n cloned._alias = this._alias;\n return cloned;\n }\n}\n\nexport class NullCheckExpressionImpl extends ExpressionImpl {\n constructor(\n private readonly operator: \"is_na\" | \"is_not_na\",\n private readonly value: ExpressionImpl,\n ) {\n super();\n }\n\n toJSON(): Expression {\n return {\n type: this.operator,\n value: this.value.toJSON(),\n };\n }\n\n getAlias(): string {\n return this._alias || `${this.value.getAlias()}_${this.operator}`;\n }\n\n protected clone(): ExpressionImpl {\n const cloned = new NullCheckExpressionImpl(this.operator, this.value);\n cloned._alias = this._alias;\n return cloned;\n }\n}\n\nexport type LiteralValue = string | number | boolean | null;\n\nexport class LiteralExpressionImpl extends ExpressionImpl {\n constructor(private readonly value: LiteralValue) {\n super();\n }\n\n toJSON(): ConstantValueExpression {\n return {\n type: \"const\",\n value: this.value,\n };\n }\n\n getAlias(): string {\n return this._alias || this.generateDefaultAlias();\n }\n\n protected clone(): ExpressionImpl {\n const cloned = new LiteralExpressionImpl(this.value);\n cloned._alias = this._alias;\n return cloned;\n }\n\n /**\n * Get the literal value\n */\n getValue(): string | number | boolean | null {\n return this.value;\n }\n\n /**\n * Generate a default alias based on the value\n */\n private generateDefaultAlias(): string {\n if (this.value === null || this.value === undefined) {\n return \"null\";\n }\n if (typeof this.value === \"string\") {\n // For string values, truncate if too long and make safe for column names\n const safe = this.value.replace(/[^a-zA-Z0-9_]/g, \"_\");\n return safe.length > 20 ? safe.substring(0, 17) + \"...\" : safe;\n }\n if (typeof this.value === \"boolean\") {\n return this.value ? \"true\" : \"false\";\n }\n if (typeof this.value === \"number\") {\n return String(this.value);\n }\n if (Array.isArray(this.value)) {\n return \"array\";\n }\n if (typeof this.value === \"object\") {\n return \"object\";\n }\n return \"literal\";\n }\n}\n\nexport class FillNullExpressionImpl extends ExpressionImpl {\n constructor(\n private readonly expr: ExpressionImpl,\n private readonly fillValue: ExpressionImpl,\n ) {\n super();\n }\n\n toJSON(): FillNullExpression {\n return {\n type: \"fill_null\",\n input: this.expr.toJSON(),\n fillValue: this.fillValue.toJSON(),\n };\n }\n\n getAlias(): string {\n return this._alias || `${this.expr.getAlias()}_fill_null`;\n }\n\n protected clone(): ExpressionImpl {\n const cloned = new FillNullExpressionImpl(this.expr, this.fillValue);\n cloned._alias = this._alias;\n return cloned;\n }\n}\n\nexport class FillNaNExpressionImpl extends ExpressionImpl {\n constructor(\n private readonly expr: ExpressionImpl,\n private readonly fillValue: ExpressionImpl,\n ) {\n super();\n }\n\n toJSON(): FillNaNExpression {\n return {\n type: \"fill_nan\",\n input: this.expr.toJSON(),\n fillValue: this.fillValue.toJSON(),\n };\n }\n\n getAlias(): string {\n return this._alias || `${this.expr.getAlias()}_fill_nan`;\n }\n\n protected clone(): ExpressionImpl {\n const cloned = new FillNaNExpressionImpl(this.expr, this.fillValue);\n cloned._alias = this._alias;\n return cloned;\n }\n}\n\nexport class StringConcatExpressionImpl extends ExpressionImpl {\n constructor(\n private readonly operands: ExpressionImpl[],\n private readonly delimiter: string = \"\",\n ) {\n super();\n }\n\n toJSON(): StringJoinExpression {\n return {\n type: \"str_join\",\n operands: this.operands.map((o) => o.toJSON()),\n delimiter: this.delimiter,\n };\n }\n\n getAlias(): string {\n return this._alias || this.operands.map((o) => o.getAlias()).join(\"_\");\n }\n\n protected clone(): ExpressionImpl {\n const cloned = new StringConcatExpressionImpl(this.operands);\n cloned._alias = this._alias;\n return cloned;\n }\n}\n\nexport class SubstringExpressionImpl extends ExpressionImpl {\n constructor(\n private readonly expr: ExpressionImpl,\n private readonly start: number,\n private readonly length?: number,\n ) {\n super();\n }\n\n toJSON(): SubstringExpression {\n return {\n type: \"substring\",\n value: this.expr.toJSON(),\n start: { type: \"const\", value: this.start },\n length: this.length !== undefined ? { type: \"const\", value: this.length } : undefined,\n };\n }\n\n getAlias(): string {\n return this._alias || `${this.expr.getAlias()}_substring`;\n }\n\n protected clone(): ExpressionImpl {\n const cloned = new SubstringExpressionImpl(this.expr, this.start, this.length);\n cloned._alias = this._alias;\n return cloned;\n }\n}\n\nexport class StringReplaceExpressionImpl extends ExpressionImpl {\n constructor(\n private readonly expr: ExpressionImpl,\n private readonly pattern: string,\n private readonly value: string,\n private readonly options?: Pick<StringReplaceExpression, \"replaceAll\" | \"literal\">,\n ) {\n super();\n }\n\n toJSON(): StringReplaceExpression {\n return {\n type: \"str_replace\",\n value: this.expr.toJSON(),\n pattern: this.pattern,\n replacement: this.value,\n replaceAll: this.options?.replaceAll || false,\n literal: this.options?.literal || false,\n };\n }\n\n getAlias(): string {\n return this._alias || `${this.expr.getAlias()}_replace`;\n }\n\n protected clone(): ExpressionImpl {\n const cloned = new StringReplaceExpressionImpl(\n this.expr,\n this.pattern,\n this.value,\n this.options,\n );\n cloned._alias = this._alias;\n return cloned;\n }\n}\n\nexport class StringContainsExpressionImpl extends ExpressionImpl {\n constructor(\n private readonly expr: ExpressionImpl,\n private readonly pattern: ExpressionImpl,\n private readonly literal?: boolean,\n private readonly strict?: boolean,\n ) {\n super();\n }\n\n toJSON(): StringContainsExpression {\n return {\n type: \"str_contains\",\n value: this.expr.toJSON(),\n pattern: this.pattern.toJSON(),\n literal: this.literal || false,\n strict: this.strict !== undefined ? this.strict : true,\n };\n }\n\n getAlias(): string {\n return this._alias || `${this.expr.getAlias()}_contains`;\n }\n\n protected clone(): ExpressionImpl {\n const cloned = new StringContainsExpressionImpl(\n this.expr,\n this.pattern,\n this.literal,\n this.strict,\n );\n cloned._alias = this._alias;\n return cloned;\n }\n}\n\nexport class StringCaseExpressionImpl extends ExpressionImpl {\n constructor(\n private readonly operation: \"to_upper\" | \"to_lower\",\n private readonly expr: ExpressionImpl,\n ) {\n super();\n }\n\n toJSON(): ExtendedUnaryStringExpression {\n return {\n type: this.operation,\n value: this.expr.toJSON(),\n };\n }\n\n getAlias(): string {\n return this._alias || `${this.expr.getAlias()}_${this.operation}`;\n }\n\n protected clone(): ExpressionImpl {\n const cloned = new StringCaseExpressionImpl(this.operation, this.expr);\n cloned._alias = this._alias;\n return cloned;\n }\n}\n\nexport class StringStartsWithExpressionImpl extends ExpressionImpl {\n constructor(\n private readonly expr: ExpressionImpl,\n private readonly pattern: ExpressionImpl,\n ) {\n super();\n }\n\n toJSON(): Expression {\n return {\n type: \"str_starts_with\",\n value: this.expr.toJSON(),\n prefix: this.pattern.toJSON(),\n };\n }\n\n getAlias(): string {\n return this._alias || `${this.expr.getAlias()}_starts_with`;\n }\n\n protected clone(): ExpressionImpl {\n const cloned = new StringStartsWithExpressionImpl(this.expr, this.pattern);\n cloned._alias = this._alias;\n return cloned;\n }\n}\n\nexport class StringEndsWithExpressionImpl extends ExpressionImpl {\n constructor(\n private readonly expr: ExpressionImpl,\n private readonly pattern: ExpressionImpl,\n ) {\n super();\n }\n\n toJSON(): Expression {\n return {\n type: \"str_ends_with\",\n value: this.expr.toJSON(),\n suffix: this.pattern.toJSON(),\n };\n }\n\n getAlias(): string {\n return this._alias || `${this.expr.getAlias()}_ends_with`;\n }\n\n protected clone(): ExpressionImpl {\n const cloned = new StringEndsWithExpressionImpl(this.expr, this.pattern);\n cloned._alias = this._alias;\n return cloned;\n }\n}\n\nexport class CumsumExpressionImpl extends ExpressionImpl {\n constructor(\n private readonly value: ExpressionImpl,\n private readonly additionalOrderBy: ExpressionImpl[] = [],\n private readonly partitionBy: ExpressionImpl[] = [],\n private readonly descending?: boolean,\n ) {\n super();\n }\n\n toJSON(): CumsumExpression {\n return {\n type: \"cumsum\",\n value: this.value.toJSON(),\n additionalOrderBy: this.additionalOrderBy.map((expr) => expr.toJSON()),\n partitionBy: this.partitionBy.map((expr) => expr.toJSON()),\n descending: this.descending,\n };\n }\n\n getAlias(): string {\n return this._alias || `cumsum_${this.value.getAlias()}`;\n }\n\n protected clone(): ExpressionImpl {\n const cloned = new CumsumExpressionImpl(\n this.value,\n this.additionalOrderBy,\n this.partitionBy,\n this.descending,\n );\n cloned._alias = this._alias;\n return cloned;\n }\n}\n\nexport class AggregationExpressionImpl extends ExpressionImpl {\n constructor(\n public operation: AggregationType,\n public expr?: ExpressionImpl,\n ) {\n super();\n }\n\n toJSON(): WindowExpression {\n return {\n type: \"aggregate\",\n aggregation: this.operation,\n value: this.expr?.toJSON() || { type: \"const\", value: 1 },\n partitionBy: [],\n };\n }\n\n getAlias(): string {\n return this._alias || `${this.operation}${this.expr ? \"_\" + this.expr.getAlias() : \"\"}`;\n }\n\n protected clone(): ExpressionImpl {\n const cloned = new AggregationExpressionImpl(this.operation, this.expr);\n cloned._alias = this._alias;\n return cloned;\n }\n}\n\nexport class WindowExpressionImpl extends ExpressionImpl {\n constructor(\n private readonly expr: ExpressionImpl,\n private readonly aggregation: AggregationType,\n private readonly partitionBy: ExpressionImpl[],\n ) {\n super();\n }\n\n toJSON(): WindowExpression {\n return {\n type: \"aggregate\",\n aggregation: this.aggregation,\n value: this.expr.toJSON(),\n partitionBy: this.partitionBy.map((expr) => expr.toJSON()),\n };\n }\n\n getAlias(): string {\n return this._alias || `${this.expr.getAlias()}_window`;\n }\n\n protected clone(): ExpressionImpl {\n const cloned = new WindowExpressionImpl(this.expr, this.aggregation, this.partitionBy);\n cloned._alias = this._alias;\n return cloned;\n }\n}\n\nexport class StringDistanceExpressionImpl extends ExpressionImpl {\n constructor(\n private readonly string1: ExpressionImpl,\n private readonly string2: ExpressionImpl,\n private readonly metric: StringDistanceMetric,\n private readonly returnSimilarity?: boolean,\n ) {\n super();\n }\n\n toJSON(): StringDistanceExpression {\n return {\n type: \"string_distance\",\n metric: this.metric,\n string1: this.string1.toJSON(),\n string2: this.string2.toJSON(),\n returnSimilarity: this.returnSimilarity || false,\n };\n }\n\n getAlias(): string {\n return this._alias || `${this.string1.getAlias()}_distance_${this.string2.getAlias()}`;\n }\n\n protected clone(): ExpressionImpl {\n const cloned = new StringDistanceExpressionImpl(\n this.string1,\n this.string2,\n this.metric,\n this.returnSimilarity,\n );\n cloned._alias = this._alias;\n return cloned;\n }\n}\n\nexport class FuzzyStringFilterExpressionImpl extends ExpressionImpl {\n constructor(\n private readonly expr: ExpressionImpl,\n private readonly pattern: ExpressionImpl,\n private readonly metric: FuzzyFilterDistanceMetric,\n private readonly bound: number,\n ) {\n super();\n }\n\n toJSON(): FuzzyStringFilterExpression {\n return {\n type: \"fuzzy_string_filter\",\n metric: this.metric,\n value: this.expr.toJSON(),\n pattern: this.pattern.toJSON(),\n bound: this.bound,\n };\n }\n\n getAlias(): string {\n return this._alias || `${this.expr.getAlias()}_fuzzy_filter`;\n }\n\n protected clone(): ExpressionImpl {\n const cloned = new FuzzyStringFilterExpressionImpl(\n this.expr,\n this.pattern,\n this.metric,\n this.bound,\n );\n cloned._alias = this._alias;\n return cloned;\n }\n}\n\nexport class RankExpressionImpl extends ExpressionImpl {\n constructor(\n private readonly orderBy: ExpressionImpl[],\n private readonly partitionBy: ExpressionImpl[],\n private readonly descending: boolean,\n ) {\n super();\n }\n\n toJSON(): RankExpression {\n return {\n type: \"rank\",\n orderBy: this.orderBy.map((e) => e.toJSON()),\n partitionBy: this.partitionBy.map((e) => e.toJSON()),\n descending: this.descending || undefined,\n };\n }\n\n getAlias(): string {\n const order = this.orderBy.map((e) => e.getAlias()).join(\"_\");\n const part = this.partitionBy.map((e) => e.getAlias()).join(\"_\");\n const dir = this.descending ? \"desc\" : \"asc\";\n return this._alias || `rank_${order}${part ? `_over_${part}` : \"\"}_${dir}`;\n }\n\n protected clone(): ExpressionImpl {\n const cloned = new RankExpressionImpl(this.orderBy, this.partitionBy, this.descending);\n cloned._alias = this._alias;\n return cloned;\n }\n}\n\nexport class WhenThenOtherwiseExpressionImpl extends ExpressionImpl {\n constructor(\n private readonly conditions: Array<{ when: ExpressionImpl; then: ExpressionImpl }>,\n private readonly otherwiseValue: ExpressionImpl,\n ) {\n super();\n }\n\n toJSON(): WhenThenOtherwiseExpression {\n return {\n type: \"when_then_otherwise\",\n conditions: this.conditions.map((clause) => ({\n when: clause.when.toJSON(),\n then: clause.then.toJSON(),\n })),\n otherwise: this.otherwiseValue.toJSON(),\n };\n }\n\n getAlias(): string {\n return this._alias || \"conditional\";\n }\n\n protected clone(): ExpressionImpl {\n const cloned = new WhenThenOtherwiseExpressionImpl(this.conditions, this.otherwiseValue);\n cloned._alias = this._alias;\n return cloned;\n }\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"expressions.d.ts","names":[],"sources":["../src/expressions.ts"],"mappings":";;;;;;uBAuCsB,cAAA;EAAA,UACV,MAAA;EA2BE;;;EAAA,SAtBH,MAAA,
|
|
1
|
+
{"version":3,"file":"expressions.d.ts","names":[],"sources":["../src/expressions.ts"],"mappings":"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"}
|
package/dist/expressions.js
CHANGED
|
@@ -149,6 +149,7 @@ var ExpressionImpl = class {
|
|
|
149
149
|
}
|
|
150
150
|
};
|
|
151
151
|
var ColumnExpressionImpl = class ColumnExpressionImpl extends ExpressionImpl {
|
|
152
|
+
columnName;
|
|
152
153
|
constructor(columnName) {
|
|
153
154
|
super();
|
|
154
155
|
this.columnName = columnName;
|
|
@@ -182,6 +183,8 @@ function coerceToExpression(value) {
|
|
|
182
183
|
return new LiteralExpressionImpl(value);
|
|
183
184
|
}
|
|
184
185
|
var MinMaxExpressionImpl = class MinMaxExpressionImpl extends ExpressionImpl {
|
|
186
|
+
op;
|
|
187
|
+
ops;
|
|
185
188
|
constructor(op, ops) {
|
|
186
189
|
super();
|
|
187
190
|
this.op = op;
|
|
@@ -203,6 +206,9 @@ var MinMaxExpressionImpl = class MinMaxExpressionImpl extends ExpressionImpl {
|
|
|
203
206
|
}
|
|
204
207
|
};
|
|
205
208
|
var ArithmeticExpressionImpl = class ArithmeticExpressionImpl extends ExpressionImpl {
|
|
209
|
+
operator;
|
|
210
|
+
lhs;
|
|
211
|
+
rhs;
|
|
206
212
|
constructor(operator, lhs, rhs) {
|
|
207
213
|
super();
|
|
208
214
|
this.operator = operator;
|
|
@@ -226,6 +232,9 @@ var ArithmeticExpressionImpl = class ArithmeticExpressionImpl extends Expression
|
|
|
226
232
|
}
|
|
227
233
|
};
|
|
228
234
|
var ComparisonExpressionImpl = class ComparisonExpressionImpl extends ExpressionImpl {
|
|
235
|
+
operator;
|
|
236
|
+
lhs;
|
|
237
|
+
rhs;
|
|
229
238
|
constructor(operator, lhs, rhs) {
|
|
230
239
|
super();
|
|
231
240
|
this.operator = operator;
|
|
@@ -249,6 +258,8 @@ var ComparisonExpressionImpl = class ComparisonExpressionImpl extends Expression
|
|
|
249
258
|
}
|
|
250
259
|
};
|
|
251
260
|
var LogicalExpressionImpl = class LogicalExpressionImpl extends ExpressionImpl {
|
|
261
|
+
operator;
|
|
262
|
+
operands;
|
|
252
263
|
constructor(operator, operands) {
|
|
253
264
|
super();
|
|
254
265
|
this.operator = operator;
|
|
@@ -276,6 +287,8 @@ var LogicalExpressionImpl = class LogicalExpressionImpl extends ExpressionImpl {
|
|
|
276
287
|
}
|
|
277
288
|
};
|
|
278
289
|
var UnaryArithmeticExpressionImpl = class UnaryArithmeticExpressionImpl extends ExpressionImpl {
|
|
290
|
+
operator;
|
|
291
|
+
value;
|
|
279
292
|
constructor(operator, value) {
|
|
280
293
|
super();
|
|
281
294
|
this.operator = operator;
|
|
@@ -297,6 +310,8 @@ var UnaryArithmeticExpressionImpl = class UnaryArithmeticExpressionImpl extends
|
|
|
297
310
|
}
|
|
298
311
|
};
|
|
299
312
|
var NullCheckExpressionImpl = class NullCheckExpressionImpl extends ExpressionImpl {
|
|
313
|
+
operator;
|
|
314
|
+
value;
|
|
300
315
|
constructor(operator, value) {
|
|
301
316
|
super();
|
|
302
317
|
this.operator = operator;
|
|
@@ -318,6 +333,7 @@ var NullCheckExpressionImpl = class NullCheckExpressionImpl extends ExpressionIm
|
|
|
318
333
|
}
|
|
319
334
|
};
|
|
320
335
|
var LiteralExpressionImpl = class LiteralExpressionImpl extends ExpressionImpl {
|
|
336
|
+
value;
|
|
321
337
|
constructor(value) {
|
|
322
338
|
super();
|
|
323
339
|
this.value = value;
|
|
@@ -359,6 +375,8 @@ var LiteralExpressionImpl = class LiteralExpressionImpl extends ExpressionImpl {
|
|
|
359
375
|
}
|
|
360
376
|
};
|
|
361
377
|
var FillNullExpressionImpl = class FillNullExpressionImpl extends ExpressionImpl {
|
|
378
|
+
expr;
|
|
379
|
+
fillValue;
|
|
362
380
|
constructor(expr, fillValue) {
|
|
363
381
|
super();
|
|
364
382
|
this.expr = expr;
|
|
@@ -381,6 +399,8 @@ var FillNullExpressionImpl = class FillNullExpressionImpl extends ExpressionImpl
|
|
|
381
399
|
}
|
|
382
400
|
};
|
|
383
401
|
var FillNaNExpressionImpl = class FillNaNExpressionImpl extends ExpressionImpl {
|
|
402
|
+
expr;
|
|
403
|
+
fillValue;
|
|
384
404
|
constructor(expr, fillValue) {
|
|
385
405
|
super();
|
|
386
406
|
this.expr = expr;
|
|
@@ -403,6 +423,8 @@ var FillNaNExpressionImpl = class FillNaNExpressionImpl extends ExpressionImpl {
|
|
|
403
423
|
}
|
|
404
424
|
};
|
|
405
425
|
var StringConcatExpressionImpl = class StringConcatExpressionImpl extends ExpressionImpl {
|
|
426
|
+
operands;
|
|
427
|
+
delimiter;
|
|
406
428
|
constructor(operands, delimiter = "") {
|
|
407
429
|
super();
|
|
408
430
|
this.operands = operands;
|
|
@@ -425,6 +447,9 @@ var StringConcatExpressionImpl = class StringConcatExpressionImpl extends Expres
|
|
|
425
447
|
}
|
|
426
448
|
};
|
|
427
449
|
var SubstringExpressionImpl = class SubstringExpressionImpl extends ExpressionImpl {
|
|
450
|
+
expr;
|
|
451
|
+
start;
|
|
452
|
+
length;
|
|
428
453
|
constructor(expr, start, length) {
|
|
429
454
|
super();
|
|
430
455
|
this.expr = expr;
|
|
@@ -455,6 +480,10 @@ var SubstringExpressionImpl = class SubstringExpressionImpl extends ExpressionIm
|
|
|
455
480
|
}
|
|
456
481
|
};
|
|
457
482
|
var StringReplaceExpressionImpl = class StringReplaceExpressionImpl extends ExpressionImpl {
|
|
483
|
+
expr;
|
|
484
|
+
pattern;
|
|
485
|
+
value;
|
|
486
|
+
options;
|
|
458
487
|
constructor(expr, pattern, value, options) {
|
|
459
488
|
super();
|
|
460
489
|
this.expr = expr;
|
|
@@ -482,6 +511,10 @@ var StringReplaceExpressionImpl = class StringReplaceExpressionImpl extends Expr
|
|
|
482
511
|
}
|
|
483
512
|
};
|
|
484
513
|
var StringContainsExpressionImpl = class StringContainsExpressionImpl extends ExpressionImpl {
|
|
514
|
+
expr;
|
|
515
|
+
pattern;
|
|
516
|
+
literal;
|
|
517
|
+
strict;
|
|
485
518
|
constructor(expr, pattern, literal, strict) {
|
|
486
519
|
super();
|
|
487
520
|
this.expr = expr;
|
|
@@ -508,6 +541,8 @@ var StringContainsExpressionImpl = class StringContainsExpressionImpl extends Ex
|
|
|
508
541
|
}
|
|
509
542
|
};
|
|
510
543
|
var StringCaseExpressionImpl = class StringCaseExpressionImpl extends ExpressionImpl {
|
|
544
|
+
operation;
|
|
545
|
+
expr;
|
|
511
546
|
constructor(operation, expr) {
|
|
512
547
|
super();
|
|
513
548
|
this.operation = operation;
|
|
@@ -529,6 +564,8 @@ var StringCaseExpressionImpl = class StringCaseExpressionImpl extends Expression
|
|
|
529
564
|
}
|
|
530
565
|
};
|
|
531
566
|
var StringStartsWithExpressionImpl = class StringStartsWithExpressionImpl extends ExpressionImpl {
|
|
567
|
+
expr;
|
|
568
|
+
pattern;
|
|
532
569
|
constructor(expr, pattern) {
|
|
533
570
|
super();
|
|
534
571
|
this.expr = expr;
|
|
@@ -551,6 +588,8 @@ var StringStartsWithExpressionImpl = class StringStartsWithExpressionImpl extend
|
|
|
551
588
|
}
|
|
552
589
|
};
|
|
553
590
|
var StringEndsWithExpressionImpl = class StringEndsWithExpressionImpl extends ExpressionImpl {
|
|
591
|
+
expr;
|
|
592
|
+
pattern;
|
|
554
593
|
constructor(expr, pattern) {
|
|
555
594
|
super();
|
|
556
595
|
this.expr = expr;
|
|
@@ -573,6 +612,10 @@ var StringEndsWithExpressionImpl = class StringEndsWithExpressionImpl extends Ex
|
|
|
573
612
|
}
|
|
574
613
|
};
|
|
575
614
|
var CumsumExpressionImpl = class CumsumExpressionImpl extends ExpressionImpl {
|
|
615
|
+
value;
|
|
616
|
+
additionalOrderBy;
|
|
617
|
+
partitionBy;
|
|
618
|
+
descending;
|
|
576
619
|
constructor(value, additionalOrderBy = [], partitionBy = [], descending) {
|
|
577
620
|
super();
|
|
578
621
|
this.value = value;
|
|
@@ -599,6 +642,8 @@ var CumsumExpressionImpl = class CumsumExpressionImpl extends ExpressionImpl {
|
|
|
599
642
|
}
|
|
600
643
|
};
|
|
601
644
|
var AggregationExpressionImpl = class AggregationExpressionImpl extends ExpressionImpl {
|
|
645
|
+
operation;
|
|
646
|
+
expr;
|
|
602
647
|
constructor(operation, expr) {
|
|
603
648
|
super();
|
|
604
649
|
this.operation = operation;
|
|
@@ -625,6 +670,9 @@ var AggregationExpressionImpl = class AggregationExpressionImpl extends Expressi
|
|
|
625
670
|
}
|
|
626
671
|
};
|
|
627
672
|
var WindowExpressionImpl = class WindowExpressionImpl extends ExpressionImpl {
|
|
673
|
+
expr;
|
|
674
|
+
aggregation;
|
|
675
|
+
partitionBy;
|
|
628
676
|
constructor(expr, aggregation, partitionBy) {
|
|
629
677
|
super();
|
|
630
678
|
this.expr = expr;
|
|
@@ -649,6 +697,10 @@ var WindowExpressionImpl = class WindowExpressionImpl extends ExpressionImpl {
|
|
|
649
697
|
}
|
|
650
698
|
};
|
|
651
699
|
var StringDistanceExpressionImpl = class StringDistanceExpressionImpl extends ExpressionImpl {
|
|
700
|
+
string1;
|
|
701
|
+
string2;
|
|
702
|
+
metric;
|
|
703
|
+
returnSimilarity;
|
|
652
704
|
constructor(string1, string2, metric, returnSimilarity) {
|
|
653
705
|
super();
|
|
654
706
|
this.string1 = string1;
|
|
@@ -675,6 +727,10 @@ var StringDistanceExpressionImpl = class StringDistanceExpressionImpl extends Ex
|
|
|
675
727
|
}
|
|
676
728
|
};
|
|
677
729
|
var FuzzyStringFilterExpressionImpl = class FuzzyStringFilterExpressionImpl extends ExpressionImpl {
|
|
730
|
+
expr;
|
|
731
|
+
pattern;
|
|
732
|
+
metric;
|
|
733
|
+
bound;
|
|
678
734
|
constructor(expr, pattern, metric, bound) {
|
|
679
735
|
super();
|
|
680
736
|
this.expr = expr;
|
|
@@ -701,6 +757,9 @@ var FuzzyStringFilterExpressionImpl = class FuzzyStringFilterExpressionImpl exte
|
|
|
701
757
|
}
|
|
702
758
|
};
|
|
703
759
|
var RankExpressionImpl = class RankExpressionImpl extends ExpressionImpl {
|
|
760
|
+
orderBy;
|
|
761
|
+
partitionBy;
|
|
762
|
+
descending;
|
|
704
763
|
constructor(orderBy, partitionBy, descending) {
|
|
705
764
|
super();
|
|
706
765
|
this.orderBy = orderBy;
|
|
@@ -728,6 +787,8 @@ var RankExpressionImpl = class RankExpressionImpl extends ExpressionImpl {
|
|
|
728
787
|
}
|
|
729
788
|
};
|
|
730
789
|
var WhenThenOtherwiseExpressionImpl = class WhenThenOtherwiseExpressionImpl extends ExpressionImpl {
|
|
790
|
+
conditions;
|
|
791
|
+
otherwiseValue;
|
|
731
792
|
constructor(conditions, otherwiseValue) {
|
|
732
793
|
super();
|
|
733
794
|
this.conditions = conditions;
|
package/dist/expressions.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"expressions.js","names":[],"sources":["../src/expressions.ts"],"sourcesContent":["/**\n * Base expressionImpl classes and interfaces for PTabler JavaScript implementation\n */\n\nimport type {\n AggregationType,\n BinaryArithmeticExpression,\n BinaryArithmeticOperator,\n BooleanLogicExpression,\n ColumnReferenceExpression,\n ComparisonExpression,\n ComparisonOperator,\n ConstantValueExpression,\n CumsumExpression,\n Expression,\n ExtendedUnaryStringExpression,\n FillNaNExpression,\n FillNullExpression,\n FuzzyFilterDistanceMetric,\n FuzzyStringFilterExpression,\n MinMaxExpression,\n MinMaxOperator,\n NotExpression,\n RankExpression,\n StringContainsExpression,\n StringDistanceExpression,\n StringDistanceMetric,\n StringJoinExpression,\n StringReplaceExpression,\n SubstringExpression,\n UnaryArithmeticExpression,\n UnaryArithmeticOperator,\n WhenThenOtherwiseExpression,\n WindowExpression,\n} from \"./types\";\n\n/**\n * Base abstract class for all expressions\n */\nexport abstract class ExpressionImpl {\n protected _alias?: string;\n\n /**\n * Convert the expressionImpl to JSON format compatible with PTabler schema\n */\n abstract toJSON(): Expression;\n\n /**\n * Get the alias for this expressionImpl (defaults to a generated name)\n */\n abstract getAlias(): string;\n\n /**\n * Set an alias for this expression\n */\n alias(name: string): ExpressionImpl {\n const cloned = this.clone();\n cloned._alias = name;\n return cloned;\n }\n\n /**\n * Clone this expression\n */\n protected abstract clone(): ExpressionImpl;\n\n // Arithmetic operations\n plus(other: ExpressionImpl | number | string): ArithmeticExpressionImpl {\n return new ArithmeticExpressionImpl(\"plus\", this, coerceToExpression(other));\n }\n\n minus(other: ExpressionImpl | number | string): ArithmeticExpressionImpl {\n return new ArithmeticExpressionImpl(\"minus\", this, coerceToExpression(other));\n }\n\n multiply(other: ExpressionImpl | number | string): ArithmeticExpressionImpl {\n return new ArithmeticExpressionImpl(\"multiply\", this, coerceToExpression(other));\n }\n\n truediv(other: ExpressionImpl | number | string): ArithmeticExpressionImpl {\n return new ArithmeticExpressionImpl(\"truediv\", this, coerceToExpression(other));\n }\n\n floordiv(other: ExpressionImpl | number | string): ArithmeticExpressionImpl {\n return new ArithmeticExpressionImpl(\"floordiv\", this, coerceToExpression(other));\n }\n\n // Comparison operations\n gt(other: ExpressionImpl | number | string): ComparisonExpressionImpl {\n return new ComparisonExpressionImpl(\"gt\", this, coerceToExpression(other));\n }\n\n ge(other: ExpressionImpl | number | string): ComparisonExpressionImpl {\n return new ComparisonExpressionImpl(\"ge\", this, coerceToExpression(other));\n }\n\n eq(other: ExpressionImpl | number | string): ComparisonExpressionImpl {\n return new ComparisonExpressionImpl(\"eq\", this, coerceToExpression(other));\n }\n\n lt(other: ExpressionImpl | number | string): ComparisonExpressionImpl {\n return new ComparisonExpressionImpl(\"lt\", this, coerceToExpression(other));\n }\n\n le(other: ExpressionImpl | number | string): ComparisonExpressionImpl {\n return new ComparisonExpressionImpl(\"le\", this, coerceToExpression(other));\n }\n\n neq(other: ExpressionImpl | number | string): ComparisonExpressionImpl {\n return new ComparisonExpressionImpl(\"neq\", this, coerceToExpression(other));\n }\n\n // Logical operations\n and(...others: ExpressionImpl[]): LogicalExpressionImpl {\n return new LogicalExpressionImpl(\"and\", [this, ...others]);\n }\n\n or(...others: ExpressionImpl[]): LogicalExpressionImpl {\n return new LogicalExpressionImpl(\"or\", [this, ...others]);\n }\n\n not(): LogicalExpressionImpl {\n return new LogicalExpressionImpl(\"not\", [this]);\n }\n\n // Unary arithmetic operations\n abs(): UnaryArithmeticExpressionImpl {\n return new UnaryArithmeticExpressionImpl(\"abs\", this);\n }\n\n sqrt(): UnaryArithmeticExpressionImpl {\n return new UnaryArithmeticExpressionImpl(\"sqrt\", this);\n }\n\n log(): UnaryArithmeticExpressionImpl {\n return new UnaryArithmeticExpressionImpl(\"log\", this);\n }\n\n log10(): UnaryArithmeticExpressionImpl {\n return new UnaryArithmeticExpressionImpl(\"log10\", this);\n }\n\n log2(): UnaryArithmeticExpressionImpl {\n return new UnaryArithmeticExpressionImpl(\"log2\", this);\n }\n\n floor(): UnaryArithmeticExpressionImpl {\n return new UnaryArithmeticExpressionImpl(\"floor\", this);\n }\n\n ceil(): UnaryArithmeticExpressionImpl {\n return new UnaryArithmeticExpressionImpl(\"ceil\", this);\n }\n\n round(): UnaryArithmeticExpressionImpl {\n return new UnaryArithmeticExpressionImpl(\"round\", this);\n }\n\n negate(): UnaryArithmeticExpressionImpl {\n return new UnaryArithmeticExpressionImpl(\"negate\", this);\n }\n\n // Null checks\n isNull(): NullCheckExpressionImpl {\n return new NullCheckExpressionImpl(\"is_na\", this);\n }\n\n isNotNull(): NullCheckExpressionImpl {\n return new NullCheckExpressionImpl(\"is_not_na\", this);\n }\n\n // Fill null/NaN\n fillNull(value: ExpressionImpl): FillNullExpressionImpl {\n return new FillNullExpressionImpl(this, coerceToExpression(value));\n }\n\n fillNaN(value: ExpressionImpl): FillNaNExpressionImpl {\n return new FillNaNExpressionImpl(this, coerceToExpression(value));\n }\n\n // String operations\n strConcat(...others: (ExpressionImpl | string)[]): StringConcatExpressionImpl {\n return new StringConcatExpressionImpl([this, ...others.map(coerceToExpression)]);\n }\n\n substring(start: number, length?: number): SubstringExpressionImpl {\n return new SubstringExpressionImpl(this, start, length);\n }\n\n strReplace(\n pattern: string,\n value: string,\n options?: Pick<StringReplaceExpression, \"replaceAll\" | \"literal\">,\n ): StringReplaceExpressionImpl {\n return new StringReplaceExpressionImpl(this, pattern, value, options);\n }\n\n strContains(\n pattern: ExpressionImpl | string,\n literal?: boolean,\n strict?: boolean,\n ): StringContainsExpressionImpl {\n return new StringContainsExpressionImpl(this, coerceToExpression(pattern), literal, strict);\n }\n\n strToUpper(): StringCaseExpressionImpl {\n return new StringCaseExpressionImpl(\"to_upper\", this);\n }\n\n strToLower(): StringCaseExpressionImpl {\n return new StringCaseExpressionImpl(\"to_lower\", this);\n }\n\n strStartsWith(pattern: ExpressionImpl | string): StringStartsWithExpressionImpl {\n return new StringStartsWithExpressionImpl(this, coerceToExpression(pattern));\n }\n\n strEndsWith(pattern: ExpressionImpl | string): StringEndsWithExpressionImpl {\n return new StringEndsWithExpressionImpl(this, coerceToExpression(pattern));\n }\n\n // Aggregation operations\n sum(): AggregationExpressionImpl {\n return new AggregationExpressionImpl(\"sum\", this);\n }\n\n mean(): AggregationExpressionImpl {\n return new AggregationExpressionImpl(\"mean\", this);\n }\n\n count(): AggregationExpressionImpl {\n return new AggregationExpressionImpl(\"count\", this);\n }\n\n min(): AggregationExpressionImpl {\n return new AggregationExpressionImpl(\"min\", this);\n }\n\n max(): AggregationExpressionImpl {\n return new AggregationExpressionImpl(\"max\", this);\n }\n\n first(): AggregationExpressionImpl {\n return new AggregationExpressionImpl(\"first\", this);\n }\n\n last(): AggregationExpressionImpl {\n return new AggregationExpressionImpl(\"last\", this);\n }\n\n cumsum(): CumsumExpressionImpl {\n return new CumsumExpressionImpl(this);\n }\n\n // Fuzzy operations\n stringDistance(\n other: ExpressionImpl | string,\n metric: StringDistanceMetric,\n returnSimilarity?: boolean,\n ): StringDistanceExpressionImpl {\n return new StringDistanceExpressionImpl(\n this,\n coerceToExpression(other),\n metric,\n returnSimilarity,\n );\n }\n\n fuzzyStringFilter(\n pattern: ExpressionImpl | string,\n metric: FuzzyFilterDistanceMetric,\n bound: number,\n ): FuzzyStringFilterExpressionImpl {\n return new FuzzyStringFilterExpressionImpl(this, coerceToExpression(pattern), metric, bound);\n }\n}\n\nexport class ColumnExpressionImpl extends ExpressionImpl {\n constructor(private readonly columnName: string) {\n super();\n }\n\n toJSON(): ColumnReferenceExpression {\n return {\n type: \"col\",\n name: this.columnName,\n };\n }\n\n getAlias(): string {\n return this._alias || this.columnName;\n }\n\n protected clone(): ExpressionImpl {\n const cloned = new ColumnExpressionImpl(this.columnName);\n cloned._alias = this._alias;\n return cloned;\n }\n\n /**\n * Get the column name\n */\n getColumnName(): string {\n return this.columnName;\n }\n}\n\n/**\n * Helper function to coerce values to expressions\n */\nexport function coerceToExpression(value: ExpressionImpl | LiteralValue): ExpressionImpl {\n if (value instanceof ExpressionImpl) {\n return value;\n }\n return new LiteralExpressionImpl(value);\n}\n\nexport class MinMaxExpressionImpl extends ExpressionImpl {\n constructor(\n private readonly op: MinMaxOperator,\n private readonly ops: ExpressionImpl[],\n ) {\n super();\n }\n\n toJSON(): MinMaxExpression {\n return {\n type: this.op,\n operands: this.ops.map((o) => o.toJSON()),\n };\n }\n\n getAlias(): string {\n return this._alias || `${this.op}_${this.ops.map((o) => o.getAlias()).join(\"_\")}`;\n }\n\n protected clone(): ExpressionImpl {\n const cloned = new MinMaxExpressionImpl(this.op, this.ops);\n cloned._alias = this._alias;\n return cloned;\n }\n}\n\n// Forward declarations for concrete expressionImpl classes\n// These will be imported from their respective modules\nexport class ArithmeticExpressionImpl extends ExpressionImpl {\n constructor(\n private readonly operator: BinaryArithmeticOperator,\n private readonly lhs: ExpressionImpl,\n private readonly rhs: ExpressionImpl,\n ) {\n super();\n }\n\n toJSON(): BinaryArithmeticExpression {\n return {\n type: this.operator,\n lhs: this.lhs.toJSON(),\n rhs: this.rhs.toJSON(),\n };\n }\n\n getAlias(): string {\n return this._alias || `${this.lhs.getAlias()}_${this.operator}_${this.rhs.getAlias()}`;\n }\n\n protected clone(): ExpressionImpl {\n const cloned = new ArithmeticExpressionImpl(this.operator, this.lhs, this.rhs);\n cloned._alias = this._alias;\n return cloned;\n }\n}\n\nexport class ComparisonExpressionImpl extends ExpressionImpl {\n constructor(\n private readonly operator: ComparisonOperator,\n private readonly lhs: ExpressionImpl,\n private readonly rhs: ExpressionImpl,\n ) {\n super();\n }\n\n toJSON(): ComparisonExpression {\n return {\n type: this.operator,\n lhs: this.lhs.toJSON(),\n rhs: this.rhs.toJSON(),\n };\n }\n\n getAlias(): string {\n return this._alias || `${this.lhs.getAlias()}_${this.operator}_${this.rhs.getAlias()}`;\n }\n\n protected clone(): ComparisonExpressionImpl {\n const cloned = new ComparisonExpressionImpl(this.operator, this.lhs, this.rhs);\n cloned._alias = this._alias;\n return cloned;\n }\n}\n\nexport class LogicalExpressionImpl extends ExpressionImpl {\n constructor(\n private readonly operator: \"and\" | \"or\" | \"not\",\n private readonly operands: ExpressionImpl[],\n ) {\n super();\n }\n\n toJSON(): NotExpression | BooleanLogicExpression {\n if (this.operator === \"not\") {\n return {\n type: \"not\",\n value: this.operands[0].toJSON(),\n };\n }\n return {\n type: this.operator,\n operands: this.operands.map((op) => op.toJSON()),\n };\n }\n\n getAlias(): string {\n if (this._alias) return this._alias;\n if (this.operator === \"not\") {\n return `not_${this.operands[0].getAlias()}`;\n }\n return this.operands.map((op) => op.getAlias()).join(`_${this.operator}_`);\n }\n\n protected clone(): ExpressionImpl {\n const cloned = new LogicalExpressionImpl(this.operator, this.operands);\n cloned._alias = this._alias;\n return cloned;\n }\n}\n\nexport class UnaryArithmeticExpressionImpl extends ExpressionImpl {\n constructor(\n private readonly operator: UnaryArithmeticOperator,\n private readonly value: ExpressionImpl,\n ) {\n super();\n }\n\n toJSON(): UnaryArithmeticExpression {\n return {\n type: this.operator,\n value: this.value.toJSON(),\n };\n }\n\n getAlias(): string {\n return this._alias || `${this.operator}_${this.value.getAlias()}`;\n }\n\n protected clone(): ExpressionImpl {\n const cloned = new UnaryArithmeticExpressionImpl(this.operator, this.value);\n cloned._alias = this._alias;\n return cloned;\n }\n}\n\nexport class NullCheckExpressionImpl extends ExpressionImpl {\n constructor(\n private readonly operator: \"is_na\" | \"is_not_na\",\n private readonly value: ExpressionImpl,\n ) {\n super();\n }\n\n toJSON(): Expression {\n return {\n type: this.operator,\n value: this.value.toJSON(),\n };\n }\n\n getAlias(): string {\n return this._alias || `${this.value.getAlias()}_${this.operator}`;\n }\n\n protected clone(): ExpressionImpl {\n const cloned = new NullCheckExpressionImpl(this.operator, this.value);\n cloned._alias = this._alias;\n return cloned;\n }\n}\n\nexport type LiteralValue = string | number | boolean | null;\n\nexport class LiteralExpressionImpl extends ExpressionImpl {\n constructor(private readonly value: LiteralValue) {\n super();\n }\n\n toJSON(): ConstantValueExpression {\n return {\n type: \"const\",\n value: this.value,\n };\n }\n\n getAlias(): string {\n return this._alias || this.generateDefaultAlias();\n }\n\n protected clone(): ExpressionImpl {\n const cloned = new LiteralExpressionImpl(this.value);\n cloned._alias = this._alias;\n return cloned;\n }\n\n /**\n * Get the literal value\n */\n getValue(): string | number | boolean | null {\n return this.value;\n }\n\n /**\n * Generate a default alias based on the value\n */\n private generateDefaultAlias(): string {\n if (this.value === null || this.value === undefined) {\n return \"null\";\n }\n if (typeof this.value === \"string\") {\n // For string values, truncate if too long and make safe for column names\n const safe = this.value.replace(/[^a-zA-Z0-9_]/g, \"_\");\n return safe.length > 20 ? safe.substring(0, 17) + \"...\" : safe;\n }\n if (typeof this.value === \"boolean\") {\n return this.value ? \"true\" : \"false\";\n }\n if (typeof this.value === \"number\") {\n return String(this.value);\n }\n if (Array.isArray(this.value)) {\n return \"array\";\n }\n if (typeof this.value === \"object\") {\n return \"object\";\n }\n return \"literal\";\n }\n}\n\nexport class FillNullExpressionImpl extends ExpressionImpl {\n constructor(\n private readonly expr: ExpressionImpl,\n private readonly fillValue: ExpressionImpl,\n ) {\n super();\n }\n\n toJSON(): FillNullExpression {\n return {\n type: \"fill_null\",\n input: this.expr.toJSON(),\n fillValue: this.fillValue.toJSON(),\n };\n }\n\n getAlias(): string {\n return this._alias || `${this.expr.getAlias()}_fill_null`;\n }\n\n protected clone(): ExpressionImpl {\n const cloned = new FillNullExpressionImpl(this.expr, this.fillValue);\n cloned._alias = this._alias;\n return cloned;\n }\n}\n\nexport class FillNaNExpressionImpl extends ExpressionImpl {\n constructor(\n private readonly expr: ExpressionImpl,\n private readonly fillValue: ExpressionImpl,\n ) {\n super();\n }\n\n toJSON(): FillNaNExpression {\n return {\n type: \"fill_nan\",\n input: this.expr.toJSON(),\n fillValue: this.fillValue.toJSON(),\n };\n }\n\n getAlias(): string {\n return this._alias || `${this.expr.getAlias()}_fill_nan`;\n }\n\n protected clone(): ExpressionImpl {\n const cloned = new FillNaNExpressionImpl(this.expr, this.fillValue);\n cloned._alias = this._alias;\n return cloned;\n }\n}\n\nexport class StringConcatExpressionImpl extends ExpressionImpl {\n constructor(\n private readonly operands: ExpressionImpl[],\n private readonly delimiter: string = \"\",\n ) {\n super();\n }\n\n toJSON(): StringJoinExpression {\n return {\n type: \"str_join\",\n operands: this.operands.map((o) => o.toJSON()),\n delimiter: this.delimiter,\n };\n }\n\n getAlias(): string {\n return this._alias || this.operands.map((o) => o.getAlias()).join(\"_\");\n }\n\n protected clone(): ExpressionImpl {\n const cloned = new StringConcatExpressionImpl(this.operands);\n cloned._alias = this._alias;\n return cloned;\n }\n}\n\nexport class SubstringExpressionImpl extends ExpressionImpl {\n constructor(\n private readonly expr: ExpressionImpl,\n private readonly start: number,\n private readonly length?: number,\n ) {\n super();\n }\n\n toJSON(): SubstringExpression {\n return {\n type: \"substring\",\n value: this.expr.toJSON(),\n start: { type: \"const\", value: this.start },\n length: this.length !== undefined ? { type: \"const\", value: this.length } : undefined,\n };\n }\n\n getAlias(): string {\n return this._alias || `${this.expr.getAlias()}_substring`;\n }\n\n protected clone(): ExpressionImpl {\n const cloned = new SubstringExpressionImpl(this.expr, this.start, this.length);\n cloned._alias = this._alias;\n return cloned;\n }\n}\n\nexport class StringReplaceExpressionImpl extends ExpressionImpl {\n constructor(\n private readonly expr: ExpressionImpl,\n private readonly pattern: string,\n private readonly value: string,\n private readonly options?: Pick<StringReplaceExpression, \"replaceAll\" | \"literal\">,\n ) {\n super();\n }\n\n toJSON(): StringReplaceExpression {\n return {\n type: \"str_replace\",\n value: this.expr.toJSON(),\n pattern: this.pattern,\n replacement: this.value,\n replaceAll: this.options?.replaceAll || false,\n literal: this.options?.literal || false,\n };\n }\n\n getAlias(): string {\n return this._alias || `${this.expr.getAlias()}_replace`;\n }\n\n protected clone(): ExpressionImpl {\n const cloned = new StringReplaceExpressionImpl(\n this.expr,\n this.pattern,\n this.value,\n this.options,\n );\n cloned._alias = this._alias;\n return cloned;\n }\n}\n\nexport class StringContainsExpressionImpl extends ExpressionImpl {\n constructor(\n private readonly expr: ExpressionImpl,\n private readonly pattern: ExpressionImpl,\n private readonly literal?: boolean,\n private readonly strict?: boolean,\n ) {\n super();\n }\n\n toJSON(): StringContainsExpression {\n return {\n type: \"str_contains\",\n value: this.expr.toJSON(),\n pattern: this.pattern.toJSON(),\n literal: this.literal || false,\n strict: this.strict !== undefined ? this.strict : true,\n };\n }\n\n getAlias(): string {\n return this._alias || `${this.expr.getAlias()}_contains`;\n }\n\n protected clone(): ExpressionImpl {\n const cloned = new StringContainsExpressionImpl(\n this.expr,\n this.pattern,\n this.literal,\n this.strict,\n );\n cloned._alias = this._alias;\n return cloned;\n }\n}\n\nexport class StringCaseExpressionImpl extends ExpressionImpl {\n constructor(\n private readonly operation: \"to_upper\" | \"to_lower\",\n private readonly expr: ExpressionImpl,\n ) {\n super();\n }\n\n toJSON(): ExtendedUnaryStringExpression {\n return {\n type: this.operation,\n value: this.expr.toJSON(),\n };\n }\n\n getAlias(): string {\n return this._alias || `${this.expr.getAlias()}_${this.operation}`;\n }\n\n protected clone(): ExpressionImpl {\n const cloned = new StringCaseExpressionImpl(this.operation, this.expr);\n cloned._alias = this._alias;\n return cloned;\n }\n}\n\nexport class StringStartsWithExpressionImpl extends ExpressionImpl {\n constructor(\n private readonly expr: ExpressionImpl,\n private readonly pattern: ExpressionImpl,\n ) {\n super();\n }\n\n toJSON(): Expression {\n return {\n type: \"str_starts_with\",\n value: this.expr.toJSON(),\n prefix: this.pattern.toJSON(),\n };\n }\n\n getAlias(): string {\n return this._alias || `${this.expr.getAlias()}_starts_with`;\n }\n\n protected clone(): ExpressionImpl {\n const cloned = new StringStartsWithExpressionImpl(this.expr, this.pattern);\n cloned._alias = this._alias;\n return cloned;\n }\n}\n\nexport class StringEndsWithExpressionImpl extends ExpressionImpl {\n constructor(\n private readonly expr: ExpressionImpl,\n private readonly pattern: ExpressionImpl,\n ) {\n super();\n }\n\n toJSON(): Expression {\n return {\n type: \"str_ends_with\",\n value: this.expr.toJSON(),\n suffix: this.pattern.toJSON(),\n };\n }\n\n getAlias(): string {\n return this._alias || `${this.expr.getAlias()}_ends_with`;\n }\n\n protected clone(): ExpressionImpl {\n const cloned = new StringEndsWithExpressionImpl(this.expr, this.pattern);\n cloned._alias = this._alias;\n return cloned;\n }\n}\n\nexport class CumsumExpressionImpl extends ExpressionImpl {\n constructor(\n private readonly value: ExpressionImpl,\n private readonly additionalOrderBy: ExpressionImpl[] = [],\n private readonly partitionBy: ExpressionImpl[] = [],\n private readonly descending?: boolean,\n ) {\n super();\n }\n\n toJSON(): CumsumExpression {\n return {\n type: \"cumsum\",\n value: this.value.toJSON(),\n additionalOrderBy: this.additionalOrderBy.map((expr) => expr.toJSON()),\n partitionBy: this.partitionBy.map((expr) => expr.toJSON()),\n descending: this.descending,\n };\n }\n\n getAlias(): string {\n return this._alias || `cumsum_${this.value.getAlias()}`;\n }\n\n protected clone(): ExpressionImpl {\n const cloned = new CumsumExpressionImpl(\n this.value,\n this.additionalOrderBy,\n this.partitionBy,\n this.descending,\n );\n cloned._alias = this._alias;\n return cloned;\n }\n}\n\nexport class AggregationExpressionImpl extends ExpressionImpl {\n constructor(\n public operation: AggregationType,\n public expr?: ExpressionImpl,\n ) {\n super();\n }\n\n toJSON(): WindowExpression {\n return {\n type: \"aggregate\",\n aggregation: this.operation,\n value: this.expr?.toJSON() || { type: \"const\", value: 1 },\n partitionBy: [],\n };\n }\n\n getAlias(): string {\n return this._alias || `${this.operation}${this.expr ? \"_\" + this.expr.getAlias() : \"\"}`;\n }\n\n protected clone(): ExpressionImpl {\n const cloned = new AggregationExpressionImpl(this.operation, this.expr);\n cloned._alias = this._alias;\n return cloned;\n }\n}\n\nexport class WindowExpressionImpl extends ExpressionImpl {\n constructor(\n private readonly expr: ExpressionImpl,\n private readonly aggregation: AggregationType,\n private readonly partitionBy: ExpressionImpl[],\n ) {\n super();\n }\n\n toJSON(): WindowExpression {\n return {\n type: \"aggregate\",\n aggregation: this.aggregation,\n value: this.expr.toJSON(),\n partitionBy: this.partitionBy.map((expr) => expr.toJSON()),\n };\n }\n\n getAlias(): string {\n return this._alias || `${this.expr.getAlias()}_window`;\n }\n\n protected clone(): ExpressionImpl {\n const cloned = new WindowExpressionImpl(this.expr, this.aggregation, this.partitionBy);\n cloned._alias = this._alias;\n return cloned;\n }\n}\n\nexport class StringDistanceExpressionImpl extends ExpressionImpl {\n constructor(\n private readonly string1: ExpressionImpl,\n private readonly string2: ExpressionImpl,\n private readonly metric: StringDistanceMetric,\n private readonly returnSimilarity?: boolean,\n ) {\n super();\n }\n\n toJSON(): StringDistanceExpression {\n return {\n type: \"string_distance\",\n metric: this.metric,\n string1: this.string1.toJSON(),\n string2: this.string2.toJSON(),\n returnSimilarity: this.returnSimilarity || false,\n };\n }\n\n getAlias(): string {\n return this._alias || `${this.string1.getAlias()}_distance_${this.string2.getAlias()}`;\n }\n\n protected clone(): ExpressionImpl {\n const cloned = new StringDistanceExpressionImpl(\n this.string1,\n this.string2,\n this.metric,\n this.returnSimilarity,\n );\n cloned._alias = this._alias;\n return cloned;\n }\n}\n\nexport class FuzzyStringFilterExpressionImpl extends ExpressionImpl {\n constructor(\n private readonly expr: ExpressionImpl,\n private readonly pattern: ExpressionImpl,\n private readonly metric: FuzzyFilterDistanceMetric,\n private readonly bound: number,\n ) {\n super();\n }\n\n toJSON(): FuzzyStringFilterExpression {\n return {\n type: \"fuzzy_string_filter\",\n metric: this.metric,\n value: this.expr.toJSON(),\n pattern: this.pattern.toJSON(),\n bound: this.bound,\n };\n }\n\n getAlias(): string {\n return this._alias || `${this.expr.getAlias()}_fuzzy_filter`;\n }\n\n protected clone(): ExpressionImpl {\n const cloned = new FuzzyStringFilterExpressionImpl(\n this.expr,\n this.pattern,\n this.metric,\n this.bound,\n );\n cloned._alias = this._alias;\n return cloned;\n }\n}\n\nexport class RankExpressionImpl extends ExpressionImpl {\n constructor(\n private readonly orderBy: ExpressionImpl[],\n private readonly partitionBy: ExpressionImpl[],\n private readonly descending: boolean,\n ) {\n super();\n }\n\n toJSON(): RankExpression {\n return {\n type: \"rank\",\n orderBy: this.orderBy.map((e) => e.toJSON()),\n partitionBy: this.partitionBy.map((e) => e.toJSON()),\n descending: this.descending || undefined,\n };\n }\n\n getAlias(): string {\n const order = this.orderBy.map((e) => e.getAlias()).join(\"_\");\n const part = this.partitionBy.map((e) => e.getAlias()).join(\"_\");\n const dir = this.descending ? \"desc\" : \"asc\";\n return this._alias || `rank_${order}${part ? `_over_${part}` : \"\"}_${dir}`;\n }\n\n protected clone(): ExpressionImpl {\n const cloned = new RankExpressionImpl(this.orderBy, this.partitionBy, this.descending);\n cloned._alias = this._alias;\n return cloned;\n }\n}\n\nexport class WhenThenOtherwiseExpressionImpl extends ExpressionImpl {\n constructor(\n private readonly conditions: Array<{ when: ExpressionImpl; then: ExpressionImpl }>,\n private readonly otherwiseValue: ExpressionImpl,\n ) {\n super();\n }\n\n toJSON(): WhenThenOtherwiseExpression {\n return {\n type: \"when_then_otherwise\",\n conditions: this.conditions.map((clause) => ({\n when: clause.when.toJSON(),\n then: clause.then.toJSON(),\n })),\n otherwise: this.otherwiseValue.toJSON(),\n };\n }\n\n getAlias(): string {\n return this._alias || \"conditional\";\n }\n\n protected clone(): ExpressionImpl {\n const cloned = new WhenThenOtherwiseExpressionImpl(this.conditions, this.otherwiseValue);\n cloned._alias = this._alias;\n return cloned;\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"expressions.js","names":[],"sources":["../src/expressions.ts"],"sourcesContent":["/**\n * Base expressionImpl classes and interfaces for PTabler JavaScript implementation\n */\n\nimport type {\n AggregationType,\n BinaryArithmeticExpression,\n BinaryArithmeticOperator,\n BooleanLogicExpression,\n ColumnReferenceExpression,\n ComparisonExpression,\n ComparisonOperator,\n ConstantValueExpression,\n CumsumExpression,\n Expression,\n ExtendedUnaryStringExpression,\n FillNaNExpression,\n FillNullExpression,\n FuzzyFilterDistanceMetric,\n FuzzyStringFilterExpression,\n MinMaxExpression,\n MinMaxOperator,\n NotExpression,\n RankExpression,\n StringContainsExpression,\n StringDistanceExpression,\n StringDistanceMetric,\n StringJoinExpression,\n StringReplaceExpression,\n SubstringExpression,\n UnaryArithmeticExpression,\n UnaryArithmeticOperator,\n WhenThenOtherwiseExpression,\n WindowExpression,\n} from \"./types\";\n\n/**\n * Base abstract class for all expressions\n */\nexport abstract class ExpressionImpl {\n protected _alias?: string;\n\n /**\n * Convert the expressionImpl to JSON format compatible with PTabler schema\n */\n abstract toJSON(): Expression;\n\n /**\n * Get the alias for this expressionImpl (defaults to a generated name)\n */\n abstract getAlias(): string;\n\n /**\n * Set an alias for this expression\n */\n alias(name: string): ExpressionImpl {\n const cloned = this.clone();\n cloned._alias = name;\n return cloned;\n }\n\n /**\n * Clone this expression\n */\n protected abstract clone(): ExpressionImpl;\n\n // Arithmetic operations\n plus(other: ExpressionImpl | number | string): ArithmeticExpressionImpl {\n return new ArithmeticExpressionImpl(\"plus\", this, coerceToExpression(other));\n }\n\n minus(other: ExpressionImpl | number | string): ArithmeticExpressionImpl {\n return new ArithmeticExpressionImpl(\"minus\", this, coerceToExpression(other));\n }\n\n multiply(other: ExpressionImpl | number | string): ArithmeticExpressionImpl {\n return new ArithmeticExpressionImpl(\"multiply\", this, coerceToExpression(other));\n }\n\n truediv(other: ExpressionImpl | number | string): ArithmeticExpressionImpl {\n return new ArithmeticExpressionImpl(\"truediv\", this, coerceToExpression(other));\n }\n\n floordiv(other: ExpressionImpl | number | string): ArithmeticExpressionImpl {\n return new ArithmeticExpressionImpl(\"floordiv\", this, coerceToExpression(other));\n }\n\n // Comparison operations\n gt(other: ExpressionImpl | number | string): ComparisonExpressionImpl {\n return new ComparisonExpressionImpl(\"gt\", this, coerceToExpression(other));\n }\n\n ge(other: ExpressionImpl | number | string): ComparisonExpressionImpl {\n return new ComparisonExpressionImpl(\"ge\", this, coerceToExpression(other));\n }\n\n eq(other: ExpressionImpl | number | string): ComparisonExpressionImpl {\n return new ComparisonExpressionImpl(\"eq\", this, coerceToExpression(other));\n }\n\n lt(other: ExpressionImpl | number | string): ComparisonExpressionImpl {\n return new ComparisonExpressionImpl(\"lt\", this, coerceToExpression(other));\n }\n\n le(other: ExpressionImpl | number | string): ComparisonExpressionImpl {\n return new ComparisonExpressionImpl(\"le\", this, coerceToExpression(other));\n }\n\n neq(other: ExpressionImpl | number | string): ComparisonExpressionImpl {\n return new ComparisonExpressionImpl(\"neq\", this, coerceToExpression(other));\n }\n\n // Logical operations\n and(...others: ExpressionImpl[]): LogicalExpressionImpl {\n return new LogicalExpressionImpl(\"and\", [this, ...others]);\n }\n\n or(...others: ExpressionImpl[]): LogicalExpressionImpl {\n return new LogicalExpressionImpl(\"or\", [this, ...others]);\n }\n\n not(): LogicalExpressionImpl {\n return new LogicalExpressionImpl(\"not\", [this]);\n }\n\n // Unary arithmetic operations\n abs(): UnaryArithmeticExpressionImpl {\n return new UnaryArithmeticExpressionImpl(\"abs\", this);\n }\n\n sqrt(): UnaryArithmeticExpressionImpl {\n return new UnaryArithmeticExpressionImpl(\"sqrt\", this);\n }\n\n log(): UnaryArithmeticExpressionImpl {\n return new UnaryArithmeticExpressionImpl(\"log\", this);\n }\n\n log10(): UnaryArithmeticExpressionImpl {\n return new UnaryArithmeticExpressionImpl(\"log10\", this);\n }\n\n log2(): UnaryArithmeticExpressionImpl {\n return new UnaryArithmeticExpressionImpl(\"log2\", this);\n }\n\n floor(): UnaryArithmeticExpressionImpl {\n return new UnaryArithmeticExpressionImpl(\"floor\", this);\n }\n\n ceil(): UnaryArithmeticExpressionImpl {\n return new UnaryArithmeticExpressionImpl(\"ceil\", this);\n }\n\n round(): UnaryArithmeticExpressionImpl {\n return new UnaryArithmeticExpressionImpl(\"round\", this);\n }\n\n negate(): UnaryArithmeticExpressionImpl {\n return new UnaryArithmeticExpressionImpl(\"negate\", this);\n }\n\n // Null checks\n isNull(): NullCheckExpressionImpl {\n return new NullCheckExpressionImpl(\"is_na\", this);\n }\n\n isNotNull(): NullCheckExpressionImpl {\n return new NullCheckExpressionImpl(\"is_not_na\", this);\n }\n\n // Fill null/NaN\n fillNull(value: ExpressionImpl): FillNullExpressionImpl {\n return new FillNullExpressionImpl(this, coerceToExpression(value));\n }\n\n fillNaN(value: ExpressionImpl): FillNaNExpressionImpl {\n return new FillNaNExpressionImpl(this, coerceToExpression(value));\n }\n\n // String operations\n strConcat(...others: (ExpressionImpl | string)[]): StringConcatExpressionImpl {\n return new StringConcatExpressionImpl([this, ...others.map(coerceToExpression)]);\n }\n\n substring(start: number, length?: number): SubstringExpressionImpl {\n return new SubstringExpressionImpl(this, start, length);\n }\n\n strReplace(\n pattern: string,\n value: string,\n options?: Pick<StringReplaceExpression, \"replaceAll\" | \"literal\">,\n ): StringReplaceExpressionImpl {\n return new StringReplaceExpressionImpl(this, pattern, value, options);\n }\n\n strContains(\n pattern: ExpressionImpl | string,\n literal?: boolean,\n strict?: boolean,\n ): StringContainsExpressionImpl {\n return new StringContainsExpressionImpl(this, coerceToExpression(pattern), literal, strict);\n }\n\n strToUpper(): StringCaseExpressionImpl {\n return new StringCaseExpressionImpl(\"to_upper\", this);\n }\n\n strToLower(): StringCaseExpressionImpl {\n return new StringCaseExpressionImpl(\"to_lower\", this);\n }\n\n strStartsWith(pattern: ExpressionImpl | string): StringStartsWithExpressionImpl {\n return new StringStartsWithExpressionImpl(this, coerceToExpression(pattern));\n }\n\n strEndsWith(pattern: ExpressionImpl | string): StringEndsWithExpressionImpl {\n return new StringEndsWithExpressionImpl(this, coerceToExpression(pattern));\n }\n\n // Aggregation operations\n sum(): AggregationExpressionImpl {\n return new AggregationExpressionImpl(\"sum\", this);\n }\n\n mean(): AggregationExpressionImpl {\n return new AggregationExpressionImpl(\"mean\", this);\n }\n\n count(): AggregationExpressionImpl {\n return new AggregationExpressionImpl(\"count\", this);\n }\n\n min(): AggregationExpressionImpl {\n return new AggregationExpressionImpl(\"min\", this);\n }\n\n max(): AggregationExpressionImpl {\n return new AggregationExpressionImpl(\"max\", this);\n }\n\n first(): AggregationExpressionImpl {\n return new AggregationExpressionImpl(\"first\", this);\n }\n\n last(): AggregationExpressionImpl {\n return new AggregationExpressionImpl(\"last\", this);\n }\n\n cumsum(): CumsumExpressionImpl {\n return new CumsumExpressionImpl(this);\n }\n\n // Fuzzy operations\n stringDistance(\n other: ExpressionImpl | string,\n metric: StringDistanceMetric,\n returnSimilarity?: boolean,\n ): StringDistanceExpressionImpl {\n return new StringDistanceExpressionImpl(\n this,\n coerceToExpression(other),\n metric,\n returnSimilarity,\n );\n }\n\n fuzzyStringFilter(\n pattern: ExpressionImpl | string,\n metric: FuzzyFilterDistanceMetric,\n bound: number,\n ): FuzzyStringFilterExpressionImpl {\n return new FuzzyStringFilterExpressionImpl(this, coerceToExpression(pattern), metric, bound);\n }\n}\n\nexport class ColumnExpressionImpl extends ExpressionImpl {\n constructor(private readonly columnName: string) {\n super();\n }\n\n toJSON(): ColumnReferenceExpression {\n return {\n type: \"col\",\n name: this.columnName,\n };\n }\n\n getAlias(): string {\n return this._alias || this.columnName;\n }\n\n protected clone(): ExpressionImpl {\n const cloned = new ColumnExpressionImpl(this.columnName);\n cloned._alias = this._alias;\n return cloned;\n }\n\n /**\n * Get the column name\n */\n getColumnName(): string {\n return this.columnName;\n }\n}\n\n/**\n * Helper function to coerce values to expressions\n */\nexport function coerceToExpression(value: ExpressionImpl | LiteralValue): ExpressionImpl {\n if (value instanceof ExpressionImpl) {\n return value;\n }\n return new LiteralExpressionImpl(value);\n}\n\nexport class MinMaxExpressionImpl extends ExpressionImpl {\n constructor(\n private readonly op: MinMaxOperator,\n private readonly ops: ExpressionImpl[],\n ) {\n super();\n }\n\n toJSON(): MinMaxExpression {\n return {\n type: this.op,\n operands: this.ops.map((o) => o.toJSON()),\n };\n }\n\n getAlias(): string {\n return this._alias || `${this.op}_${this.ops.map((o) => o.getAlias()).join(\"_\")}`;\n }\n\n protected clone(): ExpressionImpl {\n const cloned = new MinMaxExpressionImpl(this.op, this.ops);\n cloned._alias = this._alias;\n return cloned;\n }\n}\n\n// Forward declarations for concrete expressionImpl classes\n// These will be imported from their respective modules\nexport class ArithmeticExpressionImpl extends ExpressionImpl {\n constructor(\n private readonly operator: BinaryArithmeticOperator,\n private readonly lhs: ExpressionImpl,\n private readonly rhs: ExpressionImpl,\n ) {\n super();\n }\n\n toJSON(): BinaryArithmeticExpression {\n return {\n type: this.operator,\n lhs: this.lhs.toJSON(),\n rhs: this.rhs.toJSON(),\n };\n }\n\n getAlias(): string {\n return this._alias || `${this.lhs.getAlias()}_${this.operator}_${this.rhs.getAlias()}`;\n }\n\n protected clone(): ExpressionImpl {\n const cloned = new ArithmeticExpressionImpl(this.operator, this.lhs, this.rhs);\n cloned._alias = this._alias;\n return cloned;\n }\n}\n\nexport class ComparisonExpressionImpl extends ExpressionImpl {\n constructor(\n private readonly operator: ComparisonOperator,\n private readonly lhs: ExpressionImpl,\n private readonly rhs: ExpressionImpl,\n ) {\n super();\n }\n\n toJSON(): ComparisonExpression {\n return {\n type: this.operator,\n lhs: this.lhs.toJSON(),\n rhs: this.rhs.toJSON(),\n };\n }\n\n getAlias(): string {\n return this._alias || `${this.lhs.getAlias()}_${this.operator}_${this.rhs.getAlias()}`;\n }\n\n protected clone(): ComparisonExpressionImpl {\n const cloned = new ComparisonExpressionImpl(this.operator, this.lhs, this.rhs);\n cloned._alias = this._alias;\n return cloned;\n }\n}\n\nexport class LogicalExpressionImpl extends ExpressionImpl {\n constructor(\n private readonly operator: \"and\" | \"or\" | \"not\",\n private readonly operands: ExpressionImpl[],\n ) {\n super();\n }\n\n toJSON(): NotExpression | BooleanLogicExpression {\n if (this.operator === \"not\") {\n return {\n type: \"not\",\n value: this.operands[0].toJSON(),\n };\n }\n return {\n type: this.operator,\n operands: this.operands.map((op) => op.toJSON()),\n };\n }\n\n getAlias(): string {\n if (this._alias) return this._alias;\n if (this.operator === \"not\") {\n return `not_${this.operands[0].getAlias()}`;\n }\n return this.operands.map((op) => op.getAlias()).join(`_${this.operator}_`);\n }\n\n protected clone(): ExpressionImpl {\n const cloned = new LogicalExpressionImpl(this.operator, this.operands);\n cloned._alias = this._alias;\n return cloned;\n }\n}\n\nexport class UnaryArithmeticExpressionImpl extends ExpressionImpl {\n constructor(\n private readonly operator: UnaryArithmeticOperator,\n private readonly value: ExpressionImpl,\n ) {\n super();\n }\n\n toJSON(): UnaryArithmeticExpression {\n return {\n type: this.operator,\n value: this.value.toJSON(),\n };\n }\n\n getAlias(): string {\n return this._alias || `${this.operator}_${this.value.getAlias()}`;\n }\n\n protected clone(): ExpressionImpl {\n const cloned = new UnaryArithmeticExpressionImpl(this.operator, this.value);\n cloned._alias = this._alias;\n return cloned;\n }\n}\n\nexport class NullCheckExpressionImpl extends ExpressionImpl {\n constructor(\n private readonly operator: \"is_na\" | \"is_not_na\",\n private readonly value: ExpressionImpl,\n ) {\n super();\n }\n\n toJSON(): Expression {\n return {\n type: this.operator,\n value: this.value.toJSON(),\n };\n }\n\n getAlias(): string {\n return this._alias || `${this.value.getAlias()}_${this.operator}`;\n }\n\n protected clone(): ExpressionImpl {\n const cloned = new NullCheckExpressionImpl(this.operator, this.value);\n cloned._alias = this._alias;\n return cloned;\n }\n}\n\nexport type LiteralValue = string | number | boolean | null;\n\nexport class LiteralExpressionImpl extends ExpressionImpl {\n constructor(private readonly value: LiteralValue) {\n super();\n }\n\n toJSON(): ConstantValueExpression {\n return {\n type: \"const\",\n value: this.value,\n };\n }\n\n getAlias(): string {\n return this._alias || this.generateDefaultAlias();\n }\n\n protected clone(): ExpressionImpl {\n const cloned = new LiteralExpressionImpl(this.value);\n cloned._alias = this._alias;\n return cloned;\n }\n\n /**\n * Get the literal value\n */\n getValue(): string | number | boolean | null {\n return this.value;\n }\n\n /**\n * Generate a default alias based on the value\n */\n private generateDefaultAlias(): string {\n if (this.value === null || this.value === undefined) {\n return \"null\";\n }\n if (typeof this.value === \"string\") {\n // For string values, truncate if too long and make safe for column names\n const safe = this.value.replace(/[^a-zA-Z0-9_]/g, \"_\");\n return safe.length > 20 ? safe.substring(0, 17) + \"...\" : safe;\n }\n if (typeof this.value === \"boolean\") {\n return this.value ? \"true\" : \"false\";\n }\n if (typeof this.value === \"number\") {\n return String(this.value);\n }\n if (Array.isArray(this.value)) {\n return \"array\";\n }\n if (typeof this.value === \"object\") {\n return \"object\";\n }\n return \"literal\";\n }\n}\n\nexport class FillNullExpressionImpl extends ExpressionImpl {\n constructor(\n private readonly expr: ExpressionImpl,\n private readonly fillValue: ExpressionImpl,\n ) {\n super();\n }\n\n toJSON(): FillNullExpression {\n return {\n type: \"fill_null\",\n input: this.expr.toJSON(),\n fillValue: this.fillValue.toJSON(),\n };\n }\n\n getAlias(): string {\n return this._alias || `${this.expr.getAlias()}_fill_null`;\n }\n\n protected clone(): ExpressionImpl {\n const cloned = new FillNullExpressionImpl(this.expr, this.fillValue);\n cloned._alias = this._alias;\n return cloned;\n }\n}\n\nexport class FillNaNExpressionImpl extends ExpressionImpl {\n constructor(\n private readonly expr: ExpressionImpl,\n private readonly fillValue: ExpressionImpl,\n ) {\n super();\n }\n\n toJSON(): FillNaNExpression {\n return {\n type: \"fill_nan\",\n input: this.expr.toJSON(),\n fillValue: this.fillValue.toJSON(),\n };\n }\n\n getAlias(): string {\n return this._alias || `${this.expr.getAlias()}_fill_nan`;\n }\n\n protected clone(): ExpressionImpl {\n const cloned = new FillNaNExpressionImpl(this.expr, this.fillValue);\n cloned._alias = this._alias;\n return cloned;\n }\n}\n\nexport class StringConcatExpressionImpl extends ExpressionImpl {\n constructor(\n private readonly operands: ExpressionImpl[],\n private readonly delimiter: string = \"\",\n ) {\n super();\n }\n\n toJSON(): StringJoinExpression {\n return {\n type: \"str_join\",\n operands: this.operands.map((o) => o.toJSON()),\n delimiter: this.delimiter,\n };\n }\n\n getAlias(): string {\n return this._alias || this.operands.map((o) => o.getAlias()).join(\"_\");\n }\n\n protected clone(): ExpressionImpl {\n const cloned = new StringConcatExpressionImpl(this.operands);\n cloned._alias = this._alias;\n return cloned;\n }\n}\n\nexport class SubstringExpressionImpl extends ExpressionImpl {\n constructor(\n private readonly expr: ExpressionImpl,\n private readonly start: number,\n private readonly length?: number,\n ) {\n super();\n }\n\n toJSON(): SubstringExpression {\n return {\n type: \"substring\",\n value: this.expr.toJSON(),\n start: { type: \"const\", value: this.start },\n length: this.length !== undefined ? { type: \"const\", value: this.length } : undefined,\n };\n }\n\n getAlias(): string {\n return this._alias || `${this.expr.getAlias()}_substring`;\n }\n\n protected clone(): ExpressionImpl {\n const cloned = new SubstringExpressionImpl(this.expr, this.start, this.length);\n cloned._alias = this._alias;\n return cloned;\n }\n}\n\nexport class StringReplaceExpressionImpl extends ExpressionImpl {\n constructor(\n private readonly expr: ExpressionImpl,\n private readonly pattern: string,\n private readonly value: string,\n private readonly options?: Pick<StringReplaceExpression, \"replaceAll\" | \"literal\">,\n ) {\n super();\n }\n\n toJSON(): StringReplaceExpression {\n return {\n type: \"str_replace\",\n value: this.expr.toJSON(),\n pattern: this.pattern,\n replacement: this.value,\n replaceAll: this.options?.replaceAll || false,\n literal: this.options?.literal || false,\n };\n }\n\n getAlias(): string {\n return this._alias || `${this.expr.getAlias()}_replace`;\n }\n\n protected clone(): ExpressionImpl {\n const cloned = new StringReplaceExpressionImpl(\n this.expr,\n this.pattern,\n this.value,\n this.options,\n );\n cloned._alias = this._alias;\n return cloned;\n }\n}\n\nexport class StringContainsExpressionImpl extends ExpressionImpl {\n constructor(\n private readonly expr: ExpressionImpl,\n private readonly pattern: ExpressionImpl,\n private readonly literal?: boolean,\n private readonly strict?: boolean,\n ) {\n super();\n }\n\n toJSON(): StringContainsExpression {\n return {\n type: \"str_contains\",\n value: this.expr.toJSON(),\n pattern: this.pattern.toJSON(),\n literal: this.literal || false,\n strict: this.strict !== undefined ? this.strict : true,\n };\n }\n\n getAlias(): string {\n return this._alias || `${this.expr.getAlias()}_contains`;\n }\n\n protected clone(): ExpressionImpl {\n const cloned = new StringContainsExpressionImpl(\n this.expr,\n this.pattern,\n this.literal,\n this.strict,\n );\n cloned._alias = this._alias;\n return cloned;\n }\n}\n\nexport class StringCaseExpressionImpl extends ExpressionImpl {\n constructor(\n private readonly operation: \"to_upper\" | \"to_lower\",\n private readonly expr: ExpressionImpl,\n ) {\n super();\n }\n\n toJSON(): ExtendedUnaryStringExpression {\n return {\n type: this.operation,\n value: this.expr.toJSON(),\n };\n }\n\n getAlias(): string {\n return this._alias || `${this.expr.getAlias()}_${this.operation}`;\n }\n\n protected clone(): ExpressionImpl {\n const cloned = new StringCaseExpressionImpl(this.operation, this.expr);\n cloned._alias = this._alias;\n return cloned;\n }\n}\n\nexport class StringStartsWithExpressionImpl extends ExpressionImpl {\n constructor(\n private readonly expr: ExpressionImpl,\n private readonly pattern: ExpressionImpl,\n ) {\n super();\n }\n\n toJSON(): Expression {\n return {\n type: \"str_starts_with\",\n value: this.expr.toJSON(),\n prefix: this.pattern.toJSON(),\n };\n }\n\n getAlias(): string {\n return this._alias || `${this.expr.getAlias()}_starts_with`;\n }\n\n protected clone(): ExpressionImpl {\n const cloned = new StringStartsWithExpressionImpl(this.expr, this.pattern);\n cloned._alias = this._alias;\n return cloned;\n }\n}\n\nexport class StringEndsWithExpressionImpl extends ExpressionImpl {\n constructor(\n private readonly expr: ExpressionImpl,\n private readonly pattern: ExpressionImpl,\n ) {\n super();\n }\n\n toJSON(): Expression {\n return {\n type: \"str_ends_with\",\n value: this.expr.toJSON(),\n suffix: this.pattern.toJSON(),\n };\n }\n\n getAlias(): string {\n return this._alias || `${this.expr.getAlias()}_ends_with`;\n }\n\n protected clone(): ExpressionImpl {\n const cloned = new StringEndsWithExpressionImpl(this.expr, this.pattern);\n cloned._alias = this._alias;\n return cloned;\n }\n}\n\nexport class CumsumExpressionImpl extends ExpressionImpl {\n constructor(\n private readonly value: ExpressionImpl,\n private readonly additionalOrderBy: ExpressionImpl[] = [],\n private readonly partitionBy: ExpressionImpl[] = [],\n private readonly descending?: boolean,\n ) {\n super();\n }\n\n toJSON(): CumsumExpression {\n return {\n type: \"cumsum\",\n value: this.value.toJSON(),\n additionalOrderBy: this.additionalOrderBy.map((expr) => expr.toJSON()),\n partitionBy: this.partitionBy.map((expr) => expr.toJSON()),\n descending: this.descending,\n };\n }\n\n getAlias(): string {\n return this._alias || `cumsum_${this.value.getAlias()}`;\n }\n\n protected clone(): ExpressionImpl {\n const cloned = new CumsumExpressionImpl(\n this.value,\n this.additionalOrderBy,\n this.partitionBy,\n this.descending,\n );\n cloned._alias = this._alias;\n return cloned;\n }\n}\n\nexport class AggregationExpressionImpl extends ExpressionImpl {\n constructor(\n public operation: AggregationType,\n public expr?: ExpressionImpl,\n ) {\n super();\n }\n\n toJSON(): WindowExpression {\n return {\n type: \"aggregate\",\n aggregation: this.operation,\n value: this.expr?.toJSON() || { type: \"const\", value: 1 },\n partitionBy: [],\n };\n }\n\n getAlias(): string {\n return this._alias || `${this.operation}${this.expr ? \"_\" + this.expr.getAlias() : \"\"}`;\n }\n\n protected clone(): ExpressionImpl {\n const cloned = new AggregationExpressionImpl(this.operation, this.expr);\n cloned._alias = this._alias;\n return cloned;\n }\n}\n\nexport class WindowExpressionImpl extends ExpressionImpl {\n constructor(\n private readonly expr: ExpressionImpl,\n private readonly aggregation: AggregationType,\n private readonly partitionBy: ExpressionImpl[],\n ) {\n super();\n }\n\n toJSON(): WindowExpression {\n return {\n type: \"aggregate\",\n aggregation: this.aggregation,\n value: this.expr.toJSON(),\n partitionBy: this.partitionBy.map((expr) => expr.toJSON()),\n };\n }\n\n getAlias(): string {\n return this._alias || `${this.expr.getAlias()}_window`;\n }\n\n protected clone(): ExpressionImpl {\n const cloned = new WindowExpressionImpl(this.expr, this.aggregation, this.partitionBy);\n cloned._alias = this._alias;\n return cloned;\n }\n}\n\nexport class StringDistanceExpressionImpl extends ExpressionImpl {\n constructor(\n private readonly string1: ExpressionImpl,\n private readonly string2: ExpressionImpl,\n private readonly metric: StringDistanceMetric,\n private readonly returnSimilarity?: boolean,\n ) {\n super();\n }\n\n toJSON(): StringDistanceExpression {\n return {\n type: \"string_distance\",\n metric: this.metric,\n string1: this.string1.toJSON(),\n string2: this.string2.toJSON(),\n returnSimilarity: this.returnSimilarity || false,\n };\n }\n\n getAlias(): string {\n return this._alias || `${this.string1.getAlias()}_distance_${this.string2.getAlias()}`;\n }\n\n protected clone(): ExpressionImpl {\n const cloned = new StringDistanceExpressionImpl(\n this.string1,\n this.string2,\n this.metric,\n this.returnSimilarity,\n );\n cloned._alias = this._alias;\n return cloned;\n }\n}\n\nexport class FuzzyStringFilterExpressionImpl extends ExpressionImpl {\n constructor(\n private readonly expr: ExpressionImpl,\n private readonly pattern: ExpressionImpl,\n private readonly metric: FuzzyFilterDistanceMetric,\n private readonly bound: number,\n ) {\n super();\n }\n\n toJSON(): FuzzyStringFilterExpression {\n return {\n type: \"fuzzy_string_filter\",\n metric: this.metric,\n value: this.expr.toJSON(),\n pattern: this.pattern.toJSON(),\n bound: this.bound,\n };\n }\n\n getAlias(): string {\n return this._alias || `${this.expr.getAlias()}_fuzzy_filter`;\n }\n\n protected clone(): ExpressionImpl {\n const cloned = new FuzzyStringFilterExpressionImpl(\n this.expr,\n this.pattern,\n this.metric,\n this.bound,\n );\n cloned._alias = this._alias;\n return cloned;\n }\n}\n\nexport class RankExpressionImpl extends ExpressionImpl {\n constructor(\n private readonly orderBy: ExpressionImpl[],\n private readonly partitionBy: ExpressionImpl[],\n private readonly descending: boolean,\n ) {\n super();\n }\n\n toJSON(): RankExpression {\n return {\n type: \"rank\",\n orderBy: this.orderBy.map((e) => e.toJSON()),\n partitionBy: this.partitionBy.map((e) => e.toJSON()),\n descending: this.descending || undefined,\n };\n }\n\n getAlias(): string {\n const order = this.orderBy.map((e) => e.getAlias()).join(\"_\");\n const part = this.partitionBy.map((e) => e.getAlias()).join(\"_\");\n const dir = this.descending ? \"desc\" : \"asc\";\n return this._alias || `rank_${order}${part ? `_over_${part}` : \"\"}_${dir}`;\n }\n\n protected clone(): ExpressionImpl {\n const cloned = new RankExpressionImpl(this.orderBy, this.partitionBy, this.descending);\n cloned._alias = this._alias;\n return cloned;\n }\n}\n\nexport class WhenThenOtherwiseExpressionImpl extends ExpressionImpl {\n constructor(\n private readonly conditions: Array<{ when: ExpressionImpl; then: ExpressionImpl }>,\n private readonly otherwiseValue: ExpressionImpl,\n ) {\n super();\n }\n\n toJSON(): WhenThenOtherwiseExpression {\n return {\n type: \"when_then_otherwise\",\n conditions: this.conditions.map((clause) => ({\n when: clause.when.toJSON(),\n then: clause.then.toJSON(),\n })),\n otherwise: this.otherwiseValue.toJSON(),\n };\n }\n\n getAlias(): string {\n return this._alias || \"conditional\";\n }\n\n protected clone(): ExpressionImpl {\n const cloned = new WhenThenOtherwiseExpressionImpl(this.conditions, this.otherwiseValue);\n cloned._alias = this._alias;\n return cloned;\n }\n}\n"],"mappings":"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"}
|
package/dist/functions.cjs
CHANGED
|
@@ -92,6 +92,8 @@ function rank(orderBy, descending = false) {
|
|
|
92
92
|
* Builder class for when-then-otherwise conditional expressions
|
|
93
93
|
*/
|
|
94
94
|
var WhenThenBuilder = class WhenThenBuilder {
|
|
95
|
+
clauses;
|
|
96
|
+
currentWhen;
|
|
95
97
|
constructor(clauses, currentWhen) {
|
|
96
98
|
this.clauses = clauses;
|
|
97
99
|
this.currentWhen = currentWhen;
|
|
@@ -123,6 +125,8 @@ var WhenThenBuilder = class WhenThenBuilder {
|
|
|
123
125
|
}
|
|
124
126
|
};
|
|
125
127
|
var RankBuilder = class {
|
|
128
|
+
orderBy;
|
|
129
|
+
descending;
|
|
126
130
|
constructor(orderBy, descending) {
|
|
127
131
|
this.orderBy = orderBy;
|
|
128
132
|
this.descending = descending;
|
package/dist/functions.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"functions.cjs","names":["ExpressionImpl","ColumnExpressionImpl","LiteralExpressionImpl","LogicalExpressionImpl","StringConcatExpressionImpl","MinMaxExpressionImpl","WhenThenOtherwiseExpressionImpl","RankExpressionImpl"],"sources":["../src/functions.ts"],"sourcesContent":["/**\n * Factory functions for creating expressions - mirrors Tengo pt library API\n */\n\nimport type { LiteralValue } from \"./expressions\";\nimport {\n ColumnExpressionImpl,\n ExpressionImpl,\n LiteralExpressionImpl,\n LogicalExpressionImpl,\n MinMaxExpressionImpl,\n RankExpressionImpl,\n StringConcatExpressionImpl,\n WhenThenOtherwiseExpressionImpl,\n} from \"./expressions\";\n\n// Internal helpers mirroring Tengo behavior\nfunction isExpression(v: unknown): v is ExpressionImpl {\n return v instanceof ExpressionImpl;\n}\n\nfunction asExprFromString(value: string, interpretation: \"col\" | \"lit\"): ExpressionImpl {\n return interpretation === \"col\" ? col(value) : lit(value);\n}\n\nfunction coerceToExpressionList(\n items: Array<ExpressionImpl | string> | ExpressionImpl | string,\n interpretationForString: \"col\" | \"lit\",\n): ExpressionImpl[] {\n const arr = Array.isArray(items) ? items : [items];\n return arr.map((it) =>\n typeof it === \"string\" ? asExprFromString(it, interpretationForString) : it,\n );\n}\n\n/**\n * Create a column reference expression\n * @param name Column name\n */\nexport function col(name: string): ColumnExpressionImpl {\n return new ColumnExpressionImpl(name);\n}\n\n/**\n * Create a literal value expression\n * @param value Literal value (number, string, boolean, null, etc.)\n */\nexport function lit(value: LiteralValue): LiteralExpressionImpl {\n return new LiteralExpressionImpl(value);\n}\n\n/**\n * Create an AND expression with multiple operands (horizontal AND)\n * @param expressions Array of expressions to AND together\n */\nexport function allHorizontal(\n ...expressions: Array<ExpressionImpl | string>\n): LogicalExpressionImpl {\n // Interpret string args as column names. We don't flatten nested ANDs to keep implementation simple.\n const processed: ExpressionImpl[] = expressions.map((e) => (typeof e === \"string\" ? col(e) : e));\n return new LogicalExpressionImpl(\"and\", processed);\n}\n\n/**\n * Create an OR expression with multiple operands (horizontal OR)\n * @param expressions Array of expressions to OR together\n */\nexport function anyHorizontal(\n ...expressions: Array<ExpressionImpl | string>\n): LogicalExpressionImpl {\n // Interpret string args as column names. We don't flatten nested ORs to keep implementation simple.\n const processed: ExpressionImpl[] = expressions.map((e) => (typeof e === \"string\" ? col(e) : e));\n return new LogicalExpressionImpl(\"or\", processed);\n}\n\n/**\n * Create an AND expression with multiple operands\n * @param expressions Array of expressions to AND together\n */\nexport function and(...expressions: Array<ExpressionImpl | string>): LogicalExpressionImpl {\n return allHorizontal(...expressions);\n}\n\n/**\n * Create an OR expression with multiple operands\n * @param expressions Array of expressions to OR together\n */\nexport function or(...expressions: Array<ExpressionImpl | string>): LogicalExpressionImpl {\n return anyHorizontal(...expressions);\n}\n\n/**\n * Concatenate string representations with optional delimiter (Tengo: concatStr)\n * String inputs are treated as literals.\n */\nexport function concatStr(\n expressions: Array<ExpressionImpl | string>,\n options?: { delimiter?: string },\n): ExpressionImpl {\n if (!Array.isArray(expressions) || expressions.length === 0) {\n throw new Error(\"concatStr requires a non-empty array of expressions\");\n }\n const ops = coerceToExpressionList(expressions, \"lit\");\n const delimiter = options?.delimiter ?? \"\";\n return new StringConcatExpressionImpl(ops, delimiter);\n}\n\n/**\n * Element-wise min across expressions (Tengo: minHorizontal). Strings -> columns.\n */\nexport function minHorizontal(expressions: Array<ExpressionImpl | string>): ExpressionImpl {\n if (!Array.isArray(expressions) || expressions.length === 0) {\n throw new Error(\"minHorizontal requires a non-empty array of expressions\");\n }\n\n const ops = coerceToExpressionList(expressions, \"col\");\n return new MinMaxExpressionImpl(\"min\", ops);\n}\n\n/**\n * Element-wise max across expressions (Tengo: maxHorizontal). Strings -> columns.\n */\nexport function maxHorizontal(expressions: Array<ExpressionImpl | string>): ExpressionImpl {\n if (!Array.isArray(expressions) || expressions.length === 0) {\n throw new Error(\"maxHorizontal requires a non-empty array of expressions\");\n }\n const ops = coerceToExpressionList(expressions, \"col\");\n return new MinMaxExpressionImpl(\"max\", ops);\n}\n\n/**\n * Create a conditional when-then expression builder\n * @param condition Boolean expression condition\n */\nexport function when(condition: ExpressionImpl): WhenThenBuilder {\n return WhenThenBuilder.start(condition);\n}\n\n/**\n * Create a rank expression\n * @param expression Expression to rank\n * @param options Ranking options\n */\nexport function rank(\n orderBy: ExpressionImpl | string | Array<ExpressionImpl | string>,\n descending = false,\n): RankBuilder {\n const orderByList = coerceToExpressionList(orderBy, \"col\");\n return new RankBuilder(orderByList, descending);\n}\n\n/**\n * Builder class for when-then-otherwise conditional expressions\n */\nexport class WhenThenBuilder {\n private constructor(\n private readonly clauses: Array<{ when: ExpressionImpl; then: ExpressionImpl }>,\n private readonly currentWhen?: ExpressionImpl,\n ) {}\n\n static start(condition: ExpressionImpl): WhenThenBuilder {\n if (!isExpression(condition)) throw new Error(\"when() expects an Expression\");\n return new WhenThenBuilder([], condition);\n }\n\n when(condition: ExpressionImpl): WhenThenBuilder {\n if (this.currentWhen) throw new Error(\".when() must follow a .then()\");\n if (!isExpression(condition)) throw new Error(\".when() expects an Expression\");\n return new WhenThenBuilder(this.clauses, condition);\n }\n\n then(value: ExpressionImpl | LiteralValue): WhenThenBuilder {\n if (!this.currentWhen) throw new Error(\".then() must follow a .when()\");\n const expr = isExpression(value) ? value : lit(value);\n const nextClauses = this.clauses.slice();\n nextClauses.push({ when: this.currentWhen, then: expr });\n return new WhenThenBuilder(nextClauses, undefined);\n }\n\n otherwise(value: ExpressionImpl | LiteralValue): WhenThenOtherwiseExpressionImpl {\n if (this.currentWhen) throw new Error(\".otherwise() must follow a .then()\");\n if (this.clauses.length === 0) {\n throw new Error(\"At least one .when().then() clause is required before .otherwise()\");\n }\n const expr = isExpression(value) ? value : lit(value);\n return new WhenThenOtherwiseExpressionImpl(this.clauses, expr);\n }\n}\n\n// Rank builder and expression\nexport class RankBuilder {\n constructor(\n private readonly orderBy: ExpressionImpl[],\n private readonly descending: boolean,\n ) {}\n\n over(partitionBy: ExpressionImpl | string | Array<ExpressionImpl | string>): RankExpressionImpl {\n const partitionByList = coerceToExpressionList(partitionBy, \"col\");\n return new RankExpressionImpl(this.orderBy, partitionByList, this.descending);\n }\n}\n"],"mappings":";;AAiBA,SAAS,aAAa,GAAiC;
|
|
1
|
+
{"version":3,"file":"functions.cjs","names":["ExpressionImpl","ColumnExpressionImpl","LiteralExpressionImpl","LogicalExpressionImpl","StringConcatExpressionImpl","MinMaxExpressionImpl","WhenThenOtherwiseExpressionImpl","RankExpressionImpl"],"sources":["../src/functions.ts"],"sourcesContent":["/**\n * Factory functions for creating expressions - mirrors Tengo pt library API\n */\n\nimport type { LiteralValue } from \"./expressions\";\nimport {\n ColumnExpressionImpl,\n ExpressionImpl,\n LiteralExpressionImpl,\n LogicalExpressionImpl,\n MinMaxExpressionImpl,\n RankExpressionImpl,\n StringConcatExpressionImpl,\n WhenThenOtherwiseExpressionImpl,\n} from \"./expressions\";\n\n// Internal helpers mirroring Tengo behavior\nfunction isExpression(v: unknown): v is ExpressionImpl {\n return v instanceof ExpressionImpl;\n}\n\nfunction asExprFromString(value: string, interpretation: \"col\" | \"lit\"): ExpressionImpl {\n return interpretation === \"col\" ? col(value) : lit(value);\n}\n\nfunction coerceToExpressionList(\n items: Array<ExpressionImpl | string> | ExpressionImpl | string,\n interpretationForString: \"col\" | \"lit\",\n): ExpressionImpl[] {\n const arr = Array.isArray(items) ? items : [items];\n return arr.map((it) =>\n typeof it === \"string\" ? asExprFromString(it, interpretationForString) : it,\n );\n}\n\n/**\n * Create a column reference expression\n * @param name Column name\n */\nexport function col(name: string): ColumnExpressionImpl {\n return new ColumnExpressionImpl(name);\n}\n\n/**\n * Create a literal value expression\n * @param value Literal value (number, string, boolean, null, etc.)\n */\nexport function lit(value: LiteralValue): LiteralExpressionImpl {\n return new LiteralExpressionImpl(value);\n}\n\n/**\n * Create an AND expression with multiple operands (horizontal AND)\n * @param expressions Array of expressions to AND together\n */\nexport function allHorizontal(\n ...expressions: Array<ExpressionImpl | string>\n): LogicalExpressionImpl {\n // Interpret string args as column names. We don't flatten nested ANDs to keep implementation simple.\n const processed: ExpressionImpl[] = expressions.map((e) => (typeof e === \"string\" ? col(e) : e));\n return new LogicalExpressionImpl(\"and\", processed);\n}\n\n/**\n * Create an OR expression with multiple operands (horizontal OR)\n * @param expressions Array of expressions to OR together\n */\nexport function anyHorizontal(\n ...expressions: Array<ExpressionImpl | string>\n): LogicalExpressionImpl {\n // Interpret string args as column names. We don't flatten nested ORs to keep implementation simple.\n const processed: ExpressionImpl[] = expressions.map((e) => (typeof e === \"string\" ? col(e) : e));\n return new LogicalExpressionImpl(\"or\", processed);\n}\n\n/**\n * Create an AND expression with multiple operands\n * @param expressions Array of expressions to AND together\n */\nexport function and(...expressions: Array<ExpressionImpl | string>): LogicalExpressionImpl {\n return allHorizontal(...expressions);\n}\n\n/**\n * Create an OR expression with multiple operands\n * @param expressions Array of expressions to OR together\n */\nexport function or(...expressions: Array<ExpressionImpl | string>): LogicalExpressionImpl {\n return anyHorizontal(...expressions);\n}\n\n/**\n * Concatenate string representations with optional delimiter (Tengo: concatStr)\n * String inputs are treated as literals.\n */\nexport function concatStr(\n expressions: Array<ExpressionImpl | string>,\n options?: { delimiter?: string },\n): ExpressionImpl {\n if (!Array.isArray(expressions) || expressions.length === 0) {\n throw new Error(\"concatStr requires a non-empty array of expressions\");\n }\n const ops = coerceToExpressionList(expressions, \"lit\");\n const delimiter = options?.delimiter ?? \"\";\n return new StringConcatExpressionImpl(ops, delimiter);\n}\n\n/**\n * Element-wise min across expressions (Tengo: minHorizontal). Strings -> columns.\n */\nexport function minHorizontal(expressions: Array<ExpressionImpl | string>): ExpressionImpl {\n if (!Array.isArray(expressions) || expressions.length === 0) {\n throw new Error(\"minHorizontal requires a non-empty array of expressions\");\n }\n\n const ops = coerceToExpressionList(expressions, \"col\");\n return new MinMaxExpressionImpl(\"min\", ops);\n}\n\n/**\n * Element-wise max across expressions (Tengo: maxHorizontal). Strings -> columns.\n */\nexport function maxHorizontal(expressions: Array<ExpressionImpl | string>): ExpressionImpl {\n if (!Array.isArray(expressions) || expressions.length === 0) {\n throw new Error(\"maxHorizontal requires a non-empty array of expressions\");\n }\n const ops = coerceToExpressionList(expressions, \"col\");\n return new MinMaxExpressionImpl(\"max\", ops);\n}\n\n/**\n * Create a conditional when-then expression builder\n * @param condition Boolean expression condition\n */\nexport function when(condition: ExpressionImpl): WhenThenBuilder {\n return WhenThenBuilder.start(condition);\n}\n\n/**\n * Create a rank expression\n * @param expression Expression to rank\n * @param options Ranking options\n */\nexport function rank(\n orderBy: ExpressionImpl | string | Array<ExpressionImpl | string>,\n descending = false,\n): RankBuilder {\n const orderByList = coerceToExpressionList(orderBy, \"col\");\n return new RankBuilder(orderByList, descending);\n}\n\n/**\n * Builder class for when-then-otherwise conditional expressions\n */\nexport class WhenThenBuilder {\n private constructor(\n private readonly clauses: Array<{ when: ExpressionImpl; then: ExpressionImpl }>,\n private readonly currentWhen?: ExpressionImpl,\n ) {}\n\n static start(condition: ExpressionImpl): WhenThenBuilder {\n if (!isExpression(condition)) throw new Error(\"when() expects an Expression\");\n return new WhenThenBuilder([], condition);\n }\n\n when(condition: ExpressionImpl): WhenThenBuilder {\n if (this.currentWhen) throw new Error(\".when() must follow a .then()\");\n if (!isExpression(condition)) throw new Error(\".when() expects an Expression\");\n return new WhenThenBuilder(this.clauses, condition);\n }\n\n then(value: ExpressionImpl | LiteralValue): WhenThenBuilder {\n if (!this.currentWhen) throw new Error(\".then() must follow a .when()\");\n const expr = isExpression(value) ? value : lit(value);\n const nextClauses = this.clauses.slice();\n nextClauses.push({ when: this.currentWhen, then: expr });\n return new WhenThenBuilder(nextClauses, undefined);\n }\n\n otherwise(value: ExpressionImpl | LiteralValue): WhenThenOtherwiseExpressionImpl {\n if (this.currentWhen) throw new Error(\".otherwise() must follow a .then()\");\n if (this.clauses.length === 0) {\n throw new Error(\"At least one .when().then() clause is required before .otherwise()\");\n }\n const expr = isExpression(value) ? value : lit(value);\n return new WhenThenOtherwiseExpressionImpl(this.clauses, expr);\n }\n}\n\n// Rank builder and expression\nexport class RankBuilder {\n constructor(\n private readonly orderBy: ExpressionImpl[],\n private readonly descending: boolean,\n ) {}\n\n over(partitionBy: ExpressionImpl | string | Array<ExpressionImpl | string>): RankExpressionImpl {\n const partitionByList = coerceToExpressionList(partitionBy, \"col\");\n return new RankExpressionImpl(this.orderBy, partitionByList, this.descending);\n }\n}\n"],"mappings":"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"}
|
package/dist/functions.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"functions.d.ts","names":[],"sources":["../src/functions.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"functions.d.ts","names":[],"sources":["../src/functions.ts"],"mappings":";;;;;AAuCuD;AAQvD;iBARgB,GAAA,CAAI,IAAA,WAAe,oBAAoB;;;;;iBAQvC,GAAA,CAAI,KAAA,EAAO,YAAA,GAAe,qBAAqB;;AAAA;AAQ/D;;iBAAgB,aAAA,IACX,WAAA,EAAa,KAAA,CAAM,cAAA,aACrB,qBAAA;;;;;iBAUa,aAAA,IACX,WAAA,EAAa,KAAA,CAAM,cAAA,aACrB,qBAAA;;;;;iBAUa,GAAA,IAAO,WAAA,EAAa,KAAA,CAAM,cAAA,aAA2B,qBAAA;AAtB7C;AAUxB;;;AAVwB,iBA8BR,EAAA,IAAM,WAAA,EAAa,KAAA,CAAM,cAAA,aAA2B,qBAAA;;;;;iBAQpD,SAAA,CACd,WAAA,EAAa,KAAA,CAAM,cAAA,YACnB,OAAA;EAAY,SAAA;AAAA,IACX,cAAA;;;AA7BqB;iBAyCR,aAAA,CAAc,WAAA,EAAa,KAAA,CAAM,cAAA,aAA2B,cAAA;;;;iBAY5D,aAAA,CAAc,WAAA,EAAa,KAAA,CAAM,cAAA,aAA2B,cAAA;;;;;iBAY5D,IAAA,CAAK,SAAA,EAAW,cAAA,GAAiB,eAAe;;;;AAvD0B;AAQ1F;iBAwDgB,IAAA,CACd,OAAA,EAAS,cAAA,YAA0B,KAAA,CAAM,cAAA,YACzC,UAAA,aACC,WAAA;;;;cAQU,eAAA;EAAA,iBAEQ,OAAA;EAAA,iBACA,WAAA;EAAA,QAFZ,WAAA;EAAA,OAKA,KAAA,CAAM,SAAA,EAAW,cAAA,GAAiB,eAAA;EAKzC,IAAA,CAAK,SAAA,EAAW,cAAA,GAAiB,eAAA;EAMjC,IAAA,CAAK,KAAA,EAAO,cAAA,GAAiB,YAAA,GAAe,eAAA;EAQ5C,SAAA,CAAU,KAAA,EAAO,cAAA,GAAiB,YAAA,GAAe,+BAAA;AAAA;AAAA,cAWtC,WAAA;EAAA,iBAEQ,OAAA;EAAA,iBACA,UAAA;cADA,OAAA,EAAS,cAAA,IACT,UAAA;EAGnB,IAAA,CAAK,WAAA,EAAa,cAAA,YAA0B,KAAA,CAAM,cAAA,aAA2B,kBAAA;AAAA"}
|
package/dist/functions.js
CHANGED
|
@@ -92,6 +92,8 @@ function rank(orderBy, descending = false) {
|
|
|
92
92
|
* Builder class for when-then-otherwise conditional expressions
|
|
93
93
|
*/
|
|
94
94
|
var WhenThenBuilder = class WhenThenBuilder {
|
|
95
|
+
clauses;
|
|
96
|
+
currentWhen;
|
|
95
97
|
constructor(clauses, currentWhen) {
|
|
96
98
|
this.clauses = clauses;
|
|
97
99
|
this.currentWhen = currentWhen;
|
|
@@ -123,6 +125,8 @@ var WhenThenBuilder = class WhenThenBuilder {
|
|
|
123
125
|
}
|
|
124
126
|
};
|
|
125
127
|
var RankBuilder = class {
|
|
128
|
+
orderBy;
|
|
129
|
+
descending;
|
|
126
130
|
constructor(orderBy, descending) {
|
|
127
131
|
this.orderBy = orderBy;
|
|
128
132
|
this.descending = descending;
|
package/dist/functions.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"functions.js","names":[],"sources":["../src/functions.ts"],"sourcesContent":["/**\n * Factory functions for creating expressions - mirrors Tengo pt library API\n */\n\nimport type { LiteralValue } from \"./expressions\";\nimport {\n ColumnExpressionImpl,\n ExpressionImpl,\n LiteralExpressionImpl,\n LogicalExpressionImpl,\n MinMaxExpressionImpl,\n RankExpressionImpl,\n StringConcatExpressionImpl,\n WhenThenOtherwiseExpressionImpl,\n} from \"./expressions\";\n\n// Internal helpers mirroring Tengo behavior\nfunction isExpression(v: unknown): v is ExpressionImpl {\n return v instanceof ExpressionImpl;\n}\n\nfunction asExprFromString(value: string, interpretation: \"col\" | \"lit\"): ExpressionImpl {\n return interpretation === \"col\" ? col(value) : lit(value);\n}\n\nfunction coerceToExpressionList(\n items: Array<ExpressionImpl | string> | ExpressionImpl | string,\n interpretationForString: \"col\" | \"lit\",\n): ExpressionImpl[] {\n const arr = Array.isArray(items) ? items : [items];\n return arr.map((it) =>\n typeof it === \"string\" ? asExprFromString(it, interpretationForString) : it,\n );\n}\n\n/**\n * Create a column reference expression\n * @param name Column name\n */\nexport function col(name: string): ColumnExpressionImpl {\n return new ColumnExpressionImpl(name);\n}\n\n/**\n * Create a literal value expression\n * @param value Literal value (number, string, boolean, null, etc.)\n */\nexport function lit(value: LiteralValue): LiteralExpressionImpl {\n return new LiteralExpressionImpl(value);\n}\n\n/**\n * Create an AND expression with multiple operands (horizontal AND)\n * @param expressions Array of expressions to AND together\n */\nexport function allHorizontal(\n ...expressions: Array<ExpressionImpl | string>\n): LogicalExpressionImpl {\n // Interpret string args as column names. We don't flatten nested ANDs to keep implementation simple.\n const processed: ExpressionImpl[] = expressions.map((e) => (typeof e === \"string\" ? col(e) : e));\n return new LogicalExpressionImpl(\"and\", processed);\n}\n\n/**\n * Create an OR expression with multiple operands (horizontal OR)\n * @param expressions Array of expressions to OR together\n */\nexport function anyHorizontal(\n ...expressions: Array<ExpressionImpl | string>\n): LogicalExpressionImpl {\n // Interpret string args as column names. We don't flatten nested ORs to keep implementation simple.\n const processed: ExpressionImpl[] = expressions.map((e) => (typeof e === \"string\" ? col(e) : e));\n return new LogicalExpressionImpl(\"or\", processed);\n}\n\n/**\n * Create an AND expression with multiple operands\n * @param expressions Array of expressions to AND together\n */\nexport function and(...expressions: Array<ExpressionImpl | string>): LogicalExpressionImpl {\n return allHorizontal(...expressions);\n}\n\n/**\n * Create an OR expression with multiple operands\n * @param expressions Array of expressions to OR together\n */\nexport function or(...expressions: Array<ExpressionImpl | string>): LogicalExpressionImpl {\n return anyHorizontal(...expressions);\n}\n\n/**\n * Concatenate string representations with optional delimiter (Tengo: concatStr)\n * String inputs are treated as literals.\n */\nexport function concatStr(\n expressions: Array<ExpressionImpl | string>,\n options?: { delimiter?: string },\n): ExpressionImpl {\n if (!Array.isArray(expressions) || expressions.length === 0) {\n throw new Error(\"concatStr requires a non-empty array of expressions\");\n }\n const ops = coerceToExpressionList(expressions, \"lit\");\n const delimiter = options?.delimiter ?? \"\";\n return new StringConcatExpressionImpl(ops, delimiter);\n}\n\n/**\n * Element-wise min across expressions (Tengo: minHorizontal). Strings -> columns.\n */\nexport function minHorizontal(expressions: Array<ExpressionImpl | string>): ExpressionImpl {\n if (!Array.isArray(expressions) || expressions.length === 0) {\n throw new Error(\"minHorizontal requires a non-empty array of expressions\");\n }\n\n const ops = coerceToExpressionList(expressions, \"col\");\n return new MinMaxExpressionImpl(\"min\", ops);\n}\n\n/**\n * Element-wise max across expressions (Tengo: maxHorizontal). Strings -> columns.\n */\nexport function maxHorizontal(expressions: Array<ExpressionImpl | string>): ExpressionImpl {\n if (!Array.isArray(expressions) || expressions.length === 0) {\n throw new Error(\"maxHorizontal requires a non-empty array of expressions\");\n }\n const ops = coerceToExpressionList(expressions, \"col\");\n return new MinMaxExpressionImpl(\"max\", ops);\n}\n\n/**\n * Create a conditional when-then expression builder\n * @param condition Boolean expression condition\n */\nexport function when(condition: ExpressionImpl): WhenThenBuilder {\n return WhenThenBuilder.start(condition);\n}\n\n/**\n * Create a rank expression\n * @param expression Expression to rank\n * @param options Ranking options\n */\nexport function rank(\n orderBy: ExpressionImpl | string | Array<ExpressionImpl | string>,\n descending = false,\n): RankBuilder {\n const orderByList = coerceToExpressionList(orderBy, \"col\");\n return new RankBuilder(orderByList, descending);\n}\n\n/**\n * Builder class for when-then-otherwise conditional expressions\n */\nexport class WhenThenBuilder {\n private constructor(\n private readonly clauses: Array<{ when: ExpressionImpl; then: ExpressionImpl }>,\n private readonly currentWhen?: ExpressionImpl,\n ) {}\n\n static start(condition: ExpressionImpl): WhenThenBuilder {\n if (!isExpression(condition)) throw new Error(\"when() expects an Expression\");\n return new WhenThenBuilder([], condition);\n }\n\n when(condition: ExpressionImpl): WhenThenBuilder {\n if (this.currentWhen) throw new Error(\".when() must follow a .then()\");\n if (!isExpression(condition)) throw new Error(\".when() expects an Expression\");\n return new WhenThenBuilder(this.clauses, condition);\n }\n\n then(value: ExpressionImpl | LiteralValue): WhenThenBuilder {\n if (!this.currentWhen) throw new Error(\".then() must follow a .when()\");\n const expr = isExpression(value) ? value : lit(value);\n const nextClauses = this.clauses.slice();\n nextClauses.push({ when: this.currentWhen, then: expr });\n return new WhenThenBuilder(nextClauses, undefined);\n }\n\n otherwise(value: ExpressionImpl | LiteralValue): WhenThenOtherwiseExpressionImpl {\n if (this.currentWhen) throw new Error(\".otherwise() must follow a .then()\");\n if (this.clauses.length === 0) {\n throw new Error(\"At least one .when().then() clause is required before .otherwise()\");\n }\n const expr = isExpression(value) ? value : lit(value);\n return new WhenThenOtherwiseExpressionImpl(this.clauses, expr);\n }\n}\n\n// Rank builder and expression\nexport class RankBuilder {\n constructor(\n private readonly orderBy: ExpressionImpl[],\n private readonly descending: boolean,\n ) {}\n\n over(partitionBy: ExpressionImpl | string | Array<ExpressionImpl | string>): RankExpressionImpl {\n const partitionByList = coerceToExpressionList(partitionBy, \"col\");\n return new RankExpressionImpl(this.orderBy, partitionByList, this.descending);\n }\n}\n"],"mappings":";;AAiBA,SAAS,aAAa,GAAiC;
|
|
1
|
+
{"version":3,"file":"functions.js","names":[],"sources":["../src/functions.ts"],"sourcesContent":["/**\n * Factory functions for creating expressions - mirrors Tengo pt library API\n */\n\nimport type { LiteralValue } from \"./expressions\";\nimport {\n ColumnExpressionImpl,\n ExpressionImpl,\n LiteralExpressionImpl,\n LogicalExpressionImpl,\n MinMaxExpressionImpl,\n RankExpressionImpl,\n StringConcatExpressionImpl,\n WhenThenOtherwiseExpressionImpl,\n} from \"./expressions\";\n\n// Internal helpers mirroring Tengo behavior\nfunction isExpression(v: unknown): v is ExpressionImpl {\n return v instanceof ExpressionImpl;\n}\n\nfunction asExprFromString(value: string, interpretation: \"col\" | \"lit\"): ExpressionImpl {\n return interpretation === \"col\" ? col(value) : lit(value);\n}\n\nfunction coerceToExpressionList(\n items: Array<ExpressionImpl | string> | ExpressionImpl | string,\n interpretationForString: \"col\" | \"lit\",\n): ExpressionImpl[] {\n const arr = Array.isArray(items) ? items : [items];\n return arr.map((it) =>\n typeof it === \"string\" ? asExprFromString(it, interpretationForString) : it,\n );\n}\n\n/**\n * Create a column reference expression\n * @param name Column name\n */\nexport function col(name: string): ColumnExpressionImpl {\n return new ColumnExpressionImpl(name);\n}\n\n/**\n * Create a literal value expression\n * @param value Literal value (number, string, boolean, null, etc.)\n */\nexport function lit(value: LiteralValue): LiteralExpressionImpl {\n return new LiteralExpressionImpl(value);\n}\n\n/**\n * Create an AND expression with multiple operands (horizontal AND)\n * @param expressions Array of expressions to AND together\n */\nexport function allHorizontal(\n ...expressions: Array<ExpressionImpl | string>\n): LogicalExpressionImpl {\n // Interpret string args as column names. We don't flatten nested ANDs to keep implementation simple.\n const processed: ExpressionImpl[] = expressions.map((e) => (typeof e === \"string\" ? col(e) : e));\n return new LogicalExpressionImpl(\"and\", processed);\n}\n\n/**\n * Create an OR expression with multiple operands (horizontal OR)\n * @param expressions Array of expressions to OR together\n */\nexport function anyHorizontal(\n ...expressions: Array<ExpressionImpl | string>\n): LogicalExpressionImpl {\n // Interpret string args as column names. We don't flatten nested ORs to keep implementation simple.\n const processed: ExpressionImpl[] = expressions.map((e) => (typeof e === \"string\" ? col(e) : e));\n return new LogicalExpressionImpl(\"or\", processed);\n}\n\n/**\n * Create an AND expression with multiple operands\n * @param expressions Array of expressions to AND together\n */\nexport function and(...expressions: Array<ExpressionImpl | string>): LogicalExpressionImpl {\n return allHorizontal(...expressions);\n}\n\n/**\n * Create an OR expression with multiple operands\n * @param expressions Array of expressions to OR together\n */\nexport function or(...expressions: Array<ExpressionImpl | string>): LogicalExpressionImpl {\n return anyHorizontal(...expressions);\n}\n\n/**\n * Concatenate string representations with optional delimiter (Tengo: concatStr)\n * String inputs are treated as literals.\n */\nexport function concatStr(\n expressions: Array<ExpressionImpl | string>,\n options?: { delimiter?: string },\n): ExpressionImpl {\n if (!Array.isArray(expressions) || expressions.length === 0) {\n throw new Error(\"concatStr requires a non-empty array of expressions\");\n }\n const ops = coerceToExpressionList(expressions, \"lit\");\n const delimiter = options?.delimiter ?? \"\";\n return new StringConcatExpressionImpl(ops, delimiter);\n}\n\n/**\n * Element-wise min across expressions (Tengo: minHorizontal). Strings -> columns.\n */\nexport function minHorizontal(expressions: Array<ExpressionImpl | string>): ExpressionImpl {\n if (!Array.isArray(expressions) || expressions.length === 0) {\n throw new Error(\"minHorizontal requires a non-empty array of expressions\");\n }\n\n const ops = coerceToExpressionList(expressions, \"col\");\n return new MinMaxExpressionImpl(\"min\", ops);\n}\n\n/**\n * Element-wise max across expressions (Tengo: maxHorizontal). Strings -> columns.\n */\nexport function maxHorizontal(expressions: Array<ExpressionImpl | string>): ExpressionImpl {\n if (!Array.isArray(expressions) || expressions.length === 0) {\n throw new Error(\"maxHorizontal requires a non-empty array of expressions\");\n }\n const ops = coerceToExpressionList(expressions, \"col\");\n return new MinMaxExpressionImpl(\"max\", ops);\n}\n\n/**\n * Create a conditional when-then expression builder\n * @param condition Boolean expression condition\n */\nexport function when(condition: ExpressionImpl): WhenThenBuilder {\n return WhenThenBuilder.start(condition);\n}\n\n/**\n * Create a rank expression\n * @param expression Expression to rank\n * @param options Ranking options\n */\nexport function rank(\n orderBy: ExpressionImpl | string | Array<ExpressionImpl | string>,\n descending = false,\n): RankBuilder {\n const orderByList = coerceToExpressionList(orderBy, \"col\");\n return new RankBuilder(orderByList, descending);\n}\n\n/**\n * Builder class for when-then-otherwise conditional expressions\n */\nexport class WhenThenBuilder {\n private constructor(\n private readonly clauses: Array<{ when: ExpressionImpl; then: ExpressionImpl }>,\n private readonly currentWhen?: ExpressionImpl,\n ) {}\n\n static start(condition: ExpressionImpl): WhenThenBuilder {\n if (!isExpression(condition)) throw new Error(\"when() expects an Expression\");\n return new WhenThenBuilder([], condition);\n }\n\n when(condition: ExpressionImpl): WhenThenBuilder {\n if (this.currentWhen) throw new Error(\".when() must follow a .then()\");\n if (!isExpression(condition)) throw new Error(\".when() expects an Expression\");\n return new WhenThenBuilder(this.clauses, condition);\n }\n\n then(value: ExpressionImpl | LiteralValue): WhenThenBuilder {\n if (!this.currentWhen) throw new Error(\".then() must follow a .when()\");\n const expr = isExpression(value) ? value : lit(value);\n const nextClauses = this.clauses.slice();\n nextClauses.push({ when: this.currentWhen, then: expr });\n return new WhenThenBuilder(nextClauses, undefined);\n }\n\n otherwise(value: ExpressionImpl | LiteralValue): WhenThenOtherwiseExpressionImpl {\n if (this.currentWhen) throw new Error(\".otherwise() must follow a .then()\");\n if (this.clauses.length === 0) {\n throw new Error(\"At least one .when().then() clause is required before .otherwise()\");\n }\n const expr = isExpression(value) ? value : lit(value);\n return new WhenThenOtherwiseExpressionImpl(this.clauses, expr);\n }\n}\n\n// Rank builder and expression\nexport class RankBuilder {\n constructor(\n private readonly orderBy: ExpressionImpl[],\n private readonly descending: boolean,\n ) {}\n\n over(partitionBy: ExpressionImpl | string | Array<ExpressionImpl | string>): RankExpressionImpl {\n const partitionByList = coerceToExpressionList(partitionBy, \"col\");\n return new RankExpressionImpl(this.orderBy, partitionByList, this.descending);\n }\n}\n"],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@milaboratories/ptabler-expression-js",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.33",
|
|
4
4
|
"description": "JavaScript/TypeScript implementation of PTabler expression system",
|
|
5
5
|
"files": [
|
|
6
6
|
"./dist/**/*",
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
}
|
|
18
18
|
},
|
|
19
19
|
"dependencies": {
|
|
20
|
-
"@platforma-open/milaboratories.software-ptabler.schema": "1.15.
|
|
20
|
+
"@platforma-open/milaboratories.software-ptabler.schema": "1.15.17"
|
|
21
21
|
},
|
|
22
22
|
"devDependencies": {
|
|
23
23
|
"@types/node": "~24.5.2",
|
|
@@ -25,8 +25,8 @@
|
|
|
25
25
|
"typescript": "~5.9.3",
|
|
26
26
|
"vitest": "^4.1.3",
|
|
27
27
|
"@milaboratories/build-configs": "2.0.0",
|
|
28
|
-
"@milaboratories/ts-configs": "1.
|
|
29
|
-
"@milaboratories/ts-builder": "1.
|
|
28
|
+
"@milaboratories/ts-configs": "1.3.0",
|
|
29
|
+
"@milaboratories/ts-builder": "1.6.0"
|
|
30
30
|
},
|
|
31
31
|
"scripts": {
|
|
32
32
|
"build": "ts-builder build --target node",
|