@milaboratories/ptabler-expression-js 1.2.31 → 1.2.32

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.
@@ -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;
@@ -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":";;;;AAuCA,IAAsB,iBAAtB,MAAqC;CACnC;;;;CAeA,MAAM,MAA8B;EAClC,MAAM,SAAS,KAAK,MAAM;EAC1B,OAAO,SAAS;EAChB,OAAO;CACT;CAQA,KAAK,OAAmE;EACtE,OAAO,IAAI,yBAAyB,QAAQ,MAAM,mBAAmB,KAAK,CAAC;CAC7E;CAEA,MAAM,OAAmE;EACvE,OAAO,IAAI,yBAAyB,SAAS,MAAM,mBAAmB,KAAK,CAAC;CAC9E;CAEA,SAAS,OAAmE;EAC1E,OAAO,IAAI,yBAAyB,YAAY,MAAM,mBAAmB,KAAK,CAAC;CACjF;CAEA,QAAQ,OAAmE;EACzE,OAAO,IAAI,yBAAyB,WAAW,MAAM,mBAAmB,KAAK,CAAC;CAChF;CAEA,SAAS,OAAmE;EAC1E,OAAO,IAAI,yBAAyB,YAAY,MAAM,mBAAmB,KAAK,CAAC;CACjF;CAGA,GAAG,OAAmE;EACpE,OAAO,IAAI,yBAAyB,MAAM,MAAM,mBAAmB,KAAK,CAAC;CAC3E;CAEA,GAAG,OAAmE;EACpE,OAAO,IAAI,yBAAyB,MAAM,MAAM,mBAAmB,KAAK,CAAC;CAC3E;CAEA,GAAG,OAAmE;EACpE,OAAO,IAAI,yBAAyB,MAAM,MAAM,mBAAmB,KAAK,CAAC;CAC3E;CAEA,GAAG,OAAmE;EACpE,OAAO,IAAI,yBAAyB,MAAM,MAAM,mBAAmB,KAAK,CAAC;CAC3E;CAEA,GAAG,OAAmE;EACpE,OAAO,IAAI,yBAAyB,MAAM,MAAM,mBAAmB,KAAK,CAAC;CAC3E;CAEA,IAAI,OAAmE;EACrE,OAAO,IAAI,yBAAyB,OAAO,MAAM,mBAAmB,KAAK,CAAC;CAC5E;CAGA,IAAI,GAAG,QAAiD;EACtD,OAAO,IAAI,sBAAsB,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;CAC3D;CAEA,GAAG,GAAG,QAAiD;EACrD,OAAO,IAAI,sBAAsB,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;CAC1D;CAEA,MAA6B;EAC3B,OAAO,IAAI,sBAAsB,OAAO,CAAC,IAAI,CAAC;CAChD;CAGA,MAAqC;EACnC,OAAO,IAAI,8BAA8B,OAAO,IAAI;CACtD;CAEA,OAAsC;EACpC,OAAO,IAAI,8BAA8B,QAAQ,IAAI;CACvD;CAEA,MAAqC;EACnC,OAAO,IAAI,8BAA8B,OAAO,IAAI;CACtD;CAEA,QAAuC;EACrC,OAAO,IAAI,8BAA8B,SAAS,IAAI;CACxD;CAEA,OAAsC;EACpC,OAAO,IAAI,8BAA8B,QAAQ,IAAI;CACvD;CAEA,QAAuC;EACrC,OAAO,IAAI,8BAA8B,SAAS,IAAI;CACxD;CAEA,OAAsC;EACpC,OAAO,IAAI,8BAA8B,QAAQ,IAAI;CACvD;CAEA,QAAuC;EACrC,OAAO,IAAI,8BAA8B,SAAS,IAAI;CACxD;CAEA,SAAwC;EACtC,OAAO,IAAI,8BAA8B,UAAU,IAAI;CACzD;CAGA,SAAkC;EAChC,OAAO,IAAI,wBAAwB,SAAS,IAAI;CAClD;CAEA,YAAqC;EACnC,OAAO,IAAI,wBAAwB,aAAa,IAAI;CACtD;CAGA,SAAS,OAA+C;EACtD,OAAO,IAAI,uBAAuB,MAAM,mBAAmB,KAAK,CAAC;CACnE;CAEA,QAAQ,OAA8C;EACpD,OAAO,IAAI,sBAAsB,MAAM,mBAAmB,KAAK,CAAC;CAClE;CAGA,UAAU,GAAG,QAAiE;EAC5E,OAAO,IAAI,2BAA2B,CAAC,MAAM,GAAG,OAAO,IAAI,kBAAkB,CAAC,CAAC;CACjF;CAEA,UAAU,OAAe,QAA0C;EACjE,OAAO,IAAI,wBAAwB,MAAM,OAAO,MAAM;CACxD;CAEA,WACE,SACA,OACA,SAC6B;EAC7B,OAAO,IAAI,4BAA4B,MAAM,SAAS,OAAO,OAAO;CACtE;CAEA,YACE,SACA,SACA,QAC8B;EAC9B,OAAO,IAAI,6BAA6B,MAAM,mBAAmB,OAAO,GAAG,SAAS,MAAM;CAC5F;CAEA,aAAuC;EACrC,OAAO,IAAI,yBAAyB,YAAY,IAAI;CACtD;CAEA,aAAuC;EACrC,OAAO,IAAI,yBAAyB,YAAY,IAAI;CACtD;CAEA,cAAc,SAAkE;EAC9E,OAAO,IAAI,+BAA+B,MAAM,mBAAmB,OAAO,CAAC;CAC7E;CAEA,YAAY,SAAgE;EAC1E,OAAO,IAAI,6BAA6B,MAAM,mBAAmB,OAAO,CAAC;CAC3E;CAGA,MAAiC;EAC/B,OAAO,IAAI,0BAA0B,OAAO,IAAI;CAClD;CAEA,OAAkC;EAChC,OAAO,IAAI,0BAA0B,QAAQ,IAAI;CACnD;CAEA,QAAmC;EACjC,OAAO,IAAI,0BAA0B,SAAS,IAAI;CACpD;CAEA,MAAiC;EAC/B,OAAO,IAAI,0BAA0B,OAAO,IAAI;CAClD;CAEA,MAAiC;EAC/B,OAAO,IAAI,0BAA0B,OAAO,IAAI;CAClD;CAEA,QAAmC;EACjC,OAAO,IAAI,0BAA0B,SAAS,IAAI;CACpD;CAEA,OAAkC;EAChC,OAAO,IAAI,0BAA0B,QAAQ,IAAI;CACnD;CAEA,SAA+B;EAC7B,OAAO,IAAI,qBAAqB,IAAI;CACtC;CAGA,eACE,OACA,QACA,kBAC8B;EAC9B,OAAO,IAAI,6BACT,MACA,mBAAmB,KAAK,GACxB,QACA,gBACF;CACF;CAEA,kBACE,SACA,QACA,OACiC;EACjC,OAAO,IAAI,gCAAgC,MAAM,mBAAmB,OAAO,GAAG,QAAQ,KAAK;CAC7F;AACF;AAEA,IAAa,uBAAb,MAAa,6BAA6B,eAAe;CAC1B;CAA7B,YAAY,YAAqC;EAC/C,MAAM;EADqB,KAAA,aAAA;CAE7B;CAEA,SAAoC;EAClC,OAAO;GACL,MAAM;GACN,MAAM,KAAK;EACb;CACF;CAEA,WAAmB;EACjB,OAAO,KAAK,UAAU,KAAK;CAC7B;CAEA,QAAkC;EAChC,MAAM,SAAS,IAAI,qBAAqB,KAAK,UAAU;EACvD,OAAO,SAAS,KAAK;EACrB,OAAO;CACT;;;;CAKA,gBAAwB;EACtB,OAAO,KAAK;CACd;AACF;;;;AAKA,SAAgB,mBAAmB,OAAsD;CACvF,IAAI,iBAAiB,gBACnB,OAAO;CAET,OAAO,IAAI,sBAAsB,KAAK;AACxC;AAEA,IAAa,uBAAb,MAAa,6BAA6B,eAAe;CAEpC;CACA;CAFnB,YACE,IACA,KACA;EACA,MAAM;EAHW,KAAA,KAAA;EACA,KAAA,MAAA;CAGnB;CAEA,SAA2B;EACzB,OAAO;GACL,MAAM,KAAK;GACX,UAAU,KAAK,IAAI,KAAK,MAAM,EAAE,OAAO,CAAC;EAC1C;CACF;CAEA,WAAmB;EACjB,OAAO,KAAK,UAAU,GAAG,KAAK,GAAG,GAAG,KAAK,IAAI,KAAK,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,KAAK,GAAG;CAChF;CAEA,QAAkC;EAChC,MAAM,SAAS,IAAI,qBAAqB,KAAK,IAAI,KAAK,GAAG;EACzD,OAAO,SAAS,KAAK;EACrB,OAAO;CACT;AACF;AAIA,IAAa,2BAAb,MAAa,iCAAiC,eAAe;CAExC;CACA;CACA;CAHnB,YACE,UACA,KACA,KACA;EACA,MAAM;EAJW,KAAA,WAAA;EACA,KAAA,MAAA;EACA,KAAA,MAAA;CAGnB;CAEA,SAAqC;EACnC,OAAO;GACL,MAAM,KAAK;GACX,KAAK,KAAK,IAAI,OAAO;GACrB,KAAK,KAAK,IAAI,OAAO;EACvB;CACF;CAEA,WAAmB;EACjB,OAAO,KAAK,UAAU,GAAG,KAAK,IAAI,SAAS,EAAE,GAAG,KAAK,SAAS,GAAG,KAAK,IAAI,SAAS;CACrF;CAEA,QAAkC;EAChC,MAAM,SAAS,IAAI,yBAAyB,KAAK,UAAU,KAAK,KAAK,KAAK,GAAG;EAC7E,OAAO,SAAS,KAAK;EACrB,OAAO;CACT;AACF;AAEA,IAAa,2BAAb,MAAa,iCAAiC,eAAe;CAExC;CACA;CACA;CAHnB,YACE,UACA,KACA,KACA;EACA,MAAM;EAJW,KAAA,WAAA;EACA,KAAA,MAAA;EACA,KAAA,MAAA;CAGnB;CAEA,SAA+B;EAC7B,OAAO;GACL,MAAM,KAAK;GACX,KAAK,KAAK,IAAI,OAAO;GACrB,KAAK,KAAK,IAAI,OAAO;EACvB;CACF;CAEA,WAAmB;EACjB,OAAO,KAAK,UAAU,GAAG,KAAK,IAAI,SAAS,EAAE,GAAG,KAAK,SAAS,GAAG,KAAK,IAAI,SAAS;CACrF;CAEA,QAA4C;EAC1C,MAAM,SAAS,IAAI,yBAAyB,KAAK,UAAU,KAAK,KAAK,KAAK,GAAG;EAC7E,OAAO,SAAS,KAAK;EACrB,OAAO;CACT;AACF;AAEA,IAAa,wBAAb,MAAa,8BAA8B,eAAe;CAErC;CACA;CAFnB,YACE,UACA,UACA;EACA,MAAM;EAHW,KAAA,WAAA;EACA,KAAA,WAAA;CAGnB;CAEA,SAAiD;EAC/C,IAAI,KAAK,aAAa,OACpB,OAAO;GACL,MAAM;GACN,OAAO,KAAK,SAAS,EAAE,CAAC,OAAO;EACjC;EAEF,OAAO;GACL,MAAM,KAAK;GACX,UAAU,KAAK,SAAS,KAAK,OAAO,GAAG,OAAO,CAAC;EACjD;CACF;CAEA,WAAmB;EACjB,IAAI,KAAK,QAAQ,OAAO,KAAK;EAC7B,IAAI,KAAK,aAAa,OACpB,OAAO,OAAO,KAAK,SAAS,EAAE,CAAC,SAAS;EAE1C,OAAO,KAAK,SAAS,KAAK,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,KAAK,IAAI,KAAK,SAAS,EAAE;CAC3E;CAEA,QAAkC;EAChC,MAAM,SAAS,IAAI,sBAAsB,KAAK,UAAU,KAAK,QAAQ;EACrE,OAAO,SAAS,KAAK;EACrB,OAAO;CACT;AACF;AAEA,IAAa,gCAAb,MAAa,sCAAsC,eAAe;CAE7C;CACA;CAFnB,YACE,UACA,OACA;EACA,MAAM;EAHW,KAAA,WAAA;EACA,KAAA,QAAA;CAGnB;CAEA,SAAoC;EAClC,OAAO;GACL,MAAM,KAAK;GACX,OAAO,KAAK,MAAM,OAAO;EAC3B;CACF;CAEA,WAAmB;EACjB,OAAO,KAAK,UAAU,GAAG,KAAK,SAAS,GAAG,KAAK,MAAM,SAAS;CAChE;CAEA,QAAkC;EAChC,MAAM,SAAS,IAAI,8BAA8B,KAAK,UAAU,KAAK,KAAK;EAC1E,OAAO,SAAS,KAAK;EACrB,OAAO;CACT;AACF;AAEA,IAAa,0BAAb,MAAa,gCAAgC,eAAe;CAEvC;CACA;CAFnB,YACE,UACA,OACA;EACA,MAAM;EAHW,KAAA,WAAA;EACA,KAAA,QAAA;CAGnB;CAEA,SAAqB;EACnB,OAAO;GACL,MAAM,KAAK;GACX,OAAO,KAAK,MAAM,OAAO;EAC3B;CACF;CAEA,WAAmB;EACjB,OAAO,KAAK,UAAU,GAAG,KAAK,MAAM,SAAS,EAAE,GAAG,KAAK;CACzD;CAEA,QAAkC;EAChC,MAAM,SAAS,IAAI,wBAAwB,KAAK,UAAU,KAAK,KAAK;EACpE,OAAO,SAAS,KAAK;EACrB,OAAO;CACT;AACF;AAIA,IAAa,wBAAb,MAAa,8BAA8B,eAAe;CAC3B;CAA7B,YAAY,OAAsC;EAChD,MAAM;EADqB,KAAA,QAAA;CAE7B;CAEA,SAAkC;EAChC,OAAO;GACL,MAAM;GACN,OAAO,KAAK;EACd;CACF;CAEA,WAAmB;EACjB,OAAO,KAAK,UAAU,KAAK,qBAAqB;CAClD;CAEA,QAAkC;EAChC,MAAM,SAAS,IAAI,sBAAsB,KAAK,KAAK;EACnD,OAAO,SAAS,KAAK;EACrB,OAAO;CACT;;;;CAKA,WAA6C;EAC3C,OAAO,KAAK;CACd;;;;CAKA,uBAAuC;EACrC,IAAI,KAAK,UAAU,QAAQ,KAAK,UAAU,KAAA,GACxC,OAAO;EAET,IAAI,OAAO,KAAK,UAAU,UAAU;GAElC,MAAM,OAAO,KAAK,MAAM,QAAQ,kBAAkB,GAAG;GACrD,OAAO,KAAK,SAAS,KAAK,KAAK,UAAU,GAAG,EAAE,IAAI,QAAQ;EAC5D;EACA,IAAI,OAAO,KAAK,UAAU,WACxB,OAAO,KAAK,QAAQ,SAAS;EAE/B,IAAI,OAAO,KAAK,UAAU,UACxB,OAAO,OAAO,KAAK,KAAK;EAE1B,IAAI,MAAM,QAAQ,KAAK,KAAK,GAC1B,OAAO;EAET,IAAI,OAAO,KAAK,UAAU,UACxB,OAAO;EAET,OAAO;CACT;AACF;AAEA,IAAa,yBAAb,MAAa,+BAA+B,eAAe;CAEtC;CACA;CAFnB,YACE,MACA,WACA;EACA,MAAM;EAHW,KAAA,OAAA;EACA,KAAA,YAAA;CAGnB;CAEA,SAA6B;EAC3B,OAAO;GACL,MAAM;GACN,OAAO,KAAK,KAAK,OAAO;GACxB,WAAW,KAAK,UAAU,OAAO;EACnC;CACF;CAEA,WAAmB;EACjB,OAAO,KAAK,UAAU,GAAG,KAAK,KAAK,SAAS,EAAE;CAChD;CAEA,QAAkC;EAChC,MAAM,SAAS,IAAI,uBAAuB,KAAK,MAAM,KAAK,SAAS;EACnE,OAAO,SAAS,KAAK;EACrB,OAAO;CACT;AACF;AAEA,IAAa,wBAAb,MAAa,8BAA8B,eAAe;CAErC;CACA;CAFnB,YACE,MACA,WACA;EACA,MAAM;EAHW,KAAA,OAAA;EACA,KAAA,YAAA;CAGnB;CAEA,SAA4B;EAC1B,OAAO;GACL,MAAM;GACN,OAAO,KAAK,KAAK,OAAO;GACxB,WAAW,KAAK,UAAU,OAAO;EACnC;CACF;CAEA,WAAmB;EACjB,OAAO,KAAK,UAAU,GAAG,KAAK,KAAK,SAAS,EAAE;CAChD;CAEA,QAAkC;EAChC,MAAM,SAAS,IAAI,sBAAsB,KAAK,MAAM,KAAK,SAAS;EAClE,OAAO,SAAS,KAAK;EACrB,OAAO;CACT;AACF;AAEA,IAAa,6BAAb,MAAa,mCAAmC,eAAe;CAE1C;CACA;CAFnB,YACE,UACA,YAAqC,IACrC;EACA,MAAM;EAHW,KAAA,WAAA;EACA,KAAA,YAAA;CAGnB;CAEA,SAA+B;EAC7B,OAAO;GACL,MAAM;GACN,UAAU,KAAK,SAAS,KAAK,MAAM,EAAE,OAAO,CAAC;GAC7C,WAAW,KAAK;EAClB;CACF;CAEA,WAAmB;EACjB,OAAO,KAAK,UAAU,KAAK,SAAS,KAAK,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,KAAK,GAAG;CACvE;CAEA,QAAkC;EAChC,MAAM,SAAS,IAAI,2BAA2B,KAAK,QAAQ;EAC3D,OAAO,SAAS,KAAK;EACrB,OAAO;CACT;AACF;AAEA,IAAa,0BAAb,MAAa,gCAAgC,eAAe;CAEvC;CACA;CACA;CAHnB,YACE,MACA,OACA,QACA;EACA,MAAM;EAJW,KAAA,OAAA;EACA,KAAA,QAAA;EACA,KAAA,SAAA;CAGnB;CAEA,SAA8B;EAC5B,OAAO;GACL,MAAM;GACN,OAAO,KAAK,KAAK,OAAO;GACxB,OAAO;IAAE,MAAM;IAAS,OAAO,KAAK;GAAM;GAC1C,QAAQ,KAAK,WAAW,KAAA,IAAY;IAAE,MAAM;IAAS,OAAO,KAAK;GAAO,IAAI,KAAA;EAC9E;CACF;CAEA,WAAmB;EACjB,OAAO,KAAK,UAAU,GAAG,KAAK,KAAK,SAAS,EAAE;CAChD;CAEA,QAAkC;EAChC,MAAM,SAAS,IAAI,wBAAwB,KAAK,MAAM,KAAK,OAAO,KAAK,MAAM;EAC7E,OAAO,SAAS,KAAK;EACrB,OAAO;CACT;AACF;AAEA,IAAa,8BAAb,MAAa,oCAAoC,eAAe;CAE3C;CACA;CACA;CACA;CAJnB,YACE,MACA,SACA,OACA,SACA;EACA,MAAM;EALW,KAAA,OAAA;EACA,KAAA,UAAA;EACA,KAAA,QAAA;EACA,KAAA,UAAA;CAGnB;CAEA,SAAkC;EAChC,OAAO;GACL,MAAM;GACN,OAAO,KAAK,KAAK,OAAO;GACxB,SAAS,KAAK;GACd,aAAa,KAAK;GAClB,YAAY,KAAK,SAAS,cAAc;GACxC,SAAS,KAAK,SAAS,WAAW;EACpC;CACF;CAEA,WAAmB;EACjB,OAAO,KAAK,UAAU,GAAG,KAAK,KAAK,SAAS,EAAE;CAChD;CAEA,QAAkC;EAChC,MAAM,SAAS,IAAI,4BACjB,KAAK,MACL,KAAK,SACL,KAAK,OACL,KAAK,OACP;EACA,OAAO,SAAS,KAAK;EACrB,OAAO;CACT;AACF;AAEA,IAAa,+BAAb,MAAa,qCAAqC,eAAe;CAE5C;CACA;CACA;CACA;CAJnB,YACE,MACA,SACA,SACA,QACA;EACA,MAAM;EALW,KAAA,OAAA;EACA,KAAA,UAAA;EACA,KAAA,UAAA;EACA,KAAA,SAAA;CAGnB;CAEA,SAAmC;EACjC,OAAO;GACL,MAAM;GACN,OAAO,KAAK,KAAK,OAAO;GACxB,SAAS,KAAK,QAAQ,OAAO;GAC7B,SAAS,KAAK,WAAW;GACzB,QAAQ,KAAK,WAAW,KAAA,IAAY,KAAK,SAAS;EACpD;CACF;CAEA,WAAmB;EACjB,OAAO,KAAK,UAAU,GAAG,KAAK,KAAK,SAAS,EAAE;CAChD;CAEA,QAAkC;EAChC,MAAM,SAAS,IAAI,6BACjB,KAAK,MACL,KAAK,SACL,KAAK,SACL,KAAK,MACP;EACA,OAAO,SAAS,KAAK;EACrB,OAAO;CACT;AACF;AAEA,IAAa,2BAAb,MAAa,iCAAiC,eAAe;CAExC;CACA;CAFnB,YACE,WACA,MACA;EACA,MAAM;EAHW,KAAA,YAAA;EACA,KAAA,OAAA;CAGnB;CAEA,SAAwC;EACtC,OAAO;GACL,MAAM,KAAK;GACX,OAAO,KAAK,KAAK,OAAO;EAC1B;CACF;CAEA,WAAmB;EACjB,OAAO,KAAK,UAAU,GAAG,KAAK,KAAK,SAAS,EAAE,GAAG,KAAK;CACxD;CAEA,QAAkC;EAChC,MAAM,SAAS,IAAI,yBAAyB,KAAK,WAAW,KAAK,IAAI;EACrE,OAAO,SAAS,KAAK;EACrB,OAAO;CACT;AACF;AAEA,IAAa,iCAAb,MAAa,uCAAuC,eAAe;CAE9C;CACA;CAFnB,YACE,MACA,SACA;EACA,MAAM;EAHW,KAAA,OAAA;EACA,KAAA,UAAA;CAGnB;CAEA,SAAqB;EACnB,OAAO;GACL,MAAM;GACN,OAAO,KAAK,KAAK,OAAO;GACxB,QAAQ,KAAK,QAAQ,OAAO;EAC9B;CACF;CAEA,WAAmB;EACjB,OAAO,KAAK,UAAU,GAAG,KAAK,KAAK,SAAS,EAAE;CAChD;CAEA,QAAkC;EAChC,MAAM,SAAS,IAAI,+BAA+B,KAAK,MAAM,KAAK,OAAO;EACzE,OAAO,SAAS,KAAK;EACrB,OAAO;CACT;AACF;AAEA,IAAa,+BAAb,MAAa,qCAAqC,eAAe;CAE5C;CACA;CAFnB,YACE,MACA,SACA;EACA,MAAM;EAHW,KAAA,OAAA;EACA,KAAA,UAAA;CAGnB;CAEA,SAAqB;EACnB,OAAO;GACL,MAAM;GACN,OAAO,KAAK,KAAK,OAAO;GACxB,QAAQ,KAAK,QAAQ,OAAO;EAC9B;CACF;CAEA,WAAmB;EACjB,OAAO,KAAK,UAAU,GAAG,KAAK,KAAK,SAAS,EAAE;CAChD;CAEA,QAAkC;EAChC,MAAM,SAAS,IAAI,6BAA6B,KAAK,MAAM,KAAK,OAAO;EACvE,OAAO,SAAS,KAAK;EACrB,OAAO;CACT;AACF;AAEA,IAAa,uBAAb,MAAa,6BAA6B,eAAe;CAEpC;CACA;CACA;CACA;CAJnB,YACE,OACA,oBAAuD,CAAC,GACxD,cAAiD,CAAC,GAClD,YACA;EACA,MAAM;EALW,KAAA,QAAA;EACA,KAAA,oBAAA;EACA,KAAA,cAAA;EACA,KAAA,aAAA;CAGnB;CAEA,SAA2B;EACzB,OAAO;GACL,MAAM;GACN,OAAO,KAAK,MAAM,OAAO;GACzB,mBAAmB,KAAK,kBAAkB,KAAK,SAAS,KAAK,OAAO,CAAC;GACrE,aAAa,KAAK,YAAY,KAAK,SAAS,KAAK,OAAO,CAAC;GACzD,YAAY,KAAK;EACnB;CACF;CAEA,WAAmB;EACjB,OAAO,KAAK,UAAU,UAAU,KAAK,MAAM,SAAS;CACtD;CAEA,QAAkC;EAChC,MAAM,SAAS,IAAI,qBACjB,KAAK,OACL,KAAK,mBACL,KAAK,aACL,KAAK,UACP;EACA,OAAO,SAAS,KAAK;EACrB,OAAO;CACT;AACF;AAEA,IAAa,4BAAb,MAAa,kCAAkC,eAAe;CAEnD;CACA;CAFT,YACE,WACA,MACA;EACA,MAAM;EAHC,KAAA,YAAA;EACA,KAAA,OAAA;CAGT;CAEA,SAA2B;EACzB,OAAO;GACL,MAAM;GACN,aAAa,KAAK;GAClB,OAAO,KAAK,MAAM,OAAO,KAAK;IAAE,MAAM;IAAS,OAAO;GAAE;GACxD,aAAa,CAAC;EAChB;CACF;CAEA,WAAmB;EACjB,OAAO,KAAK,UAAU,GAAG,KAAK,YAAY,KAAK,OAAO,MAAM,KAAK,KAAK,SAAS,IAAI;CACrF;CAEA,QAAkC;EAChC,MAAM,SAAS,IAAI,0BAA0B,KAAK,WAAW,KAAK,IAAI;EACtE,OAAO,SAAS,KAAK;EACrB,OAAO;CACT;AACF;AAEA,IAAa,uBAAb,MAAa,6BAA6B,eAAe;CAEpC;CACA;CACA;CAHnB,YACE,MACA,aACA,aACA;EACA,MAAM;EAJW,KAAA,OAAA;EACA,KAAA,cAAA;EACA,KAAA,cAAA;CAGnB;CAEA,SAA2B;EACzB,OAAO;GACL,MAAM;GACN,aAAa,KAAK;GAClB,OAAO,KAAK,KAAK,OAAO;GACxB,aAAa,KAAK,YAAY,KAAK,SAAS,KAAK,OAAO,CAAC;EAC3D;CACF;CAEA,WAAmB;EACjB,OAAO,KAAK,UAAU,GAAG,KAAK,KAAK,SAAS,EAAE;CAChD;CAEA,QAAkC;EAChC,MAAM,SAAS,IAAI,qBAAqB,KAAK,MAAM,KAAK,aAAa,KAAK,WAAW;EACrF,OAAO,SAAS,KAAK;EACrB,OAAO;CACT;AACF;AAEA,IAAa,+BAAb,MAAa,qCAAqC,eAAe;CAE5C;CACA;CACA;CACA;CAJnB,YACE,SACA,SACA,QACA,kBACA;EACA,MAAM;EALW,KAAA,UAAA;EACA,KAAA,UAAA;EACA,KAAA,SAAA;EACA,KAAA,mBAAA;CAGnB;CAEA,SAAmC;EACjC,OAAO;GACL,MAAM;GACN,QAAQ,KAAK;GACb,SAAS,KAAK,QAAQ,OAAO;GAC7B,SAAS,KAAK,QAAQ,OAAO;GAC7B,kBAAkB,KAAK,oBAAoB;EAC7C;CACF;CAEA,WAAmB;EACjB,OAAO,KAAK,UAAU,GAAG,KAAK,QAAQ,SAAS,EAAE,YAAY,KAAK,QAAQ,SAAS;CACrF;CAEA,QAAkC;EAChC,MAAM,SAAS,IAAI,6BACjB,KAAK,SACL,KAAK,SACL,KAAK,QACL,KAAK,gBACP;EACA,OAAO,SAAS,KAAK;EACrB,OAAO;CACT;AACF;AAEA,IAAa,kCAAb,MAAa,wCAAwC,eAAe;CAE/C;CACA;CACA;CACA;CAJnB,YACE,MACA,SACA,QACA,OACA;EACA,MAAM;EALW,KAAA,OAAA;EACA,KAAA,UAAA;EACA,KAAA,SAAA;EACA,KAAA,QAAA;CAGnB;CAEA,SAAsC;EACpC,OAAO;GACL,MAAM;GACN,QAAQ,KAAK;GACb,OAAO,KAAK,KAAK,OAAO;GACxB,SAAS,KAAK,QAAQ,OAAO;GAC7B,OAAO,KAAK;EACd;CACF;CAEA,WAAmB;EACjB,OAAO,KAAK,UAAU,GAAG,KAAK,KAAK,SAAS,EAAE;CAChD;CAEA,QAAkC;EAChC,MAAM,SAAS,IAAI,gCACjB,KAAK,MACL,KAAK,SACL,KAAK,QACL,KAAK,KACP;EACA,OAAO,SAAS,KAAK;EACrB,OAAO;CACT;AACF;AAEA,IAAa,qBAAb,MAAa,2BAA2B,eAAe;CAElC;CACA;CACA;CAHnB,YACE,SACA,aACA,YACA;EACA,MAAM;EAJW,KAAA,UAAA;EACA,KAAA,cAAA;EACA,KAAA,aAAA;CAGnB;CAEA,SAAyB;EACvB,OAAO;GACL,MAAM;GACN,SAAS,KAAK,QAAQ,KAAK,MAAM,EAAE,OAAO,CAAC;GAC3C,aAAa,KAAK,YAAY,KAAK,MAAM,EAAE,OAAO,CAAC;GACnD,YAAY,KAAK,cAAc,KAAA;EACjC;CACF;CAEA,WAAmB;EACjB,MAAM,QAAQ,KAAK,QAAQ,KAAK,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,KAAK,GAAG;EAC5D,MAAM,OAAO,KAAK,YAAY,KAAK,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,KAAK,GAAG;EAC/D,MAAM,MAAM,KAAK,aAAa,SAAS;EACvC,OAAO,KAAK,UAAU,QAAQ,QAAQ,OAAO,SAAS,SAAS,GAAG,GAAG;CACvE;CAEA,QAAkC;EAChC,MAAM,SAAS,IAAI,mBAAmB,KAAK,SAAS,KAAK,aAAa,KAAK,UAAU;EACrF,OAAO,SAAS,KAAK;EACrB,OAAO;CACT;AACF;AAEA,IAAa,kCAAb,MAAa,wCAAwC,eAAe;CAE/C;CACA;CAFnB,YACE,YACA,gBACA;EACA,MAAM;EAHW,KAAA,aAAA;EACA,KAAA,iBAAA;CAGnB;CAEA,SAAsC;EACpC,OAAO;GACL,MAAM;GACN,YAAY,KAAK,WAAW,KAAK,YAAY;IAC3C,MAAM,OAAO,KAAK,OAAO;IACzB,MAAM,OAAO,KAAK,OAAO;GAC3B,EAAE;GACF,WAAW,KAAK,eAAe,OAAO;EACxC;CACF;CAEA,WAAmB;EACjB,OAAO,KAAK,UAAU;CACxB;CAEA,QAAkC;EAChC,MAAM,SAAS,IAAI,gCAAgC,KAAK,YAAY,KAAK,cAAc;EACvF,OAAO,SAAS,KAAK;EACrB,OAAO;CACT;AACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"expressions.d.ts","names":[],"sources":["../src/expressions.ts"],"mappings":"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"}
1
+ {"version":3,"file":"expressions.d.ts","names":[],"sources":["../src/expressions.ts"],"mappings":"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"}
@@ -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;
@@ -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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"}
@@ -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;
@@ -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":"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"}
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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"}
@@ -1 +1 @@
1
- {"version":3,"file":"functions.d.ts","names":[],"sources":["../src/functions.ts"],"mappings":";;;;;;AA+CA;iBARgB,GAAA,CAAI,IAAA,WAAe,oBAAA;;;;;iBAQnB,GAAA,CAAI,KAAA,EAAO,YAAA,GAAe,qBAAA;;;AAQ1C;;iBAAgB,aAAA,CAAA,GACX,WAAA,EAAa,KAAA,CAAM,cAAA,aACrB,qBAAA;;;;;iBAUa,aAAA,CAAA,GACX,WAAA,EAAa,KAAA,CAAM,cAAA,aACrB,qBAAA;;;;;iBAUa,GAAA,CAAA,GAAO,WAAA,EAAa,KAAA,CAAM,cAAA,aAA2B,qBAAA;;AAZrE;;;iBAoBgB,EAAA,CAAA,GAAM,WAAA,EAAa,KAAA,CAAM,cAAA,aAA2B,qBAAA;;;;;iBAQpD,SAAA,CACd,WAAA,EAAa,KAAA,CAAM,cAAA,YACnB,OAAA;EAAY,SAAA;AAAA,IACX,cAAA;;;;iBAYa,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,eAAA;;;;;AA/CjD;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,CAAA;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"}
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;
@@ -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":"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"}
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
@@ -1,4 +1,4 @@
1
- export * from "@platforma-open/milaboratories.software-ptabler.schema";
1
+ export type * from "@platforma-open/milaboratories.software-ptabler.schema";
2
2
 
3
3
  //#region src/types.d.ts
4
4
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@milaboratories/ptabler-expression-js",
3
- "version": "1.2.31",
3
+ "version": "1.2.32",
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.15"
20
+ "@platforma-open/milaboratories.software-ptabler.schema": "1.15.16"
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.2.3",
29
- "@milaboratories/ts-builder": "1.5.2"
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",