@nulledexp/translatable-criteria 1.0.3 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/README.md +1 -0
  2. package/dist/criteria/criteria.d.ts +15 -4
  3. package/dist/criteria/criteria.d.ts.map +1 -1
  4. package/dist/criteria/criteria.js +15 -5
  5. package/dist/criteria/criteria.js.map +1 -1
  6. package/dist/criteria/cursor.d.ts +31 -0
  7. package/dist/criteria/cursor.d.ts.map +1 -1
  8. package/dist/criteria/cursor.js +32 -4
  9. package/dist/criteria/cursor.js.map +1 -1
  10. package/dist/criteria/filter/filter-utils.d.ts +6 -0
  11. package/dist/criteria/filter/filter-utils.d.ts.map +1 -1
  12. package/dist/criteria/filter/filter-utils.js +29 -9
  13. package/dist/criteria/filter/filter-utils.js.map +1 -1
  14. package/dist/criteria/filter/filter.d.ts +3 -0
  15. package/dist/criteria/filter/filter.d.ts.map +1 -1
  16. package/dist/criteria/filter/filter.js +62 -35
  17. package/dist/criteria/filter/filter.js.map +1 -1
  18. package/dist/criteria/filter/types/filter-primitive.types.d.ts +8 -11
  19. package/dist/criteria/filter/types/filter-primitive.types.d.ts.map +1 -1
  20. package/dist/criteria/index.d.ts +2 -2
  21. package/dist/criteria/index.d.ts.map +1 -1
  22. package/dist/criteria/index.js +2 -0
  23. package/dist/criteria/index.js.map +1 -1
  24. package/dist/criteria/order/order.d.ts +49 -0
  25. package/dist/criteria/order/order.d.ts.map +1 -1
  26. package/dist/criteria/order/order.js +39 -0
  27. package/dist/criteria/order/order.js.map +1 -1
  28. package/dist/criteria/types/criteria.interface.d.ts +6 -4
  29. package/dist/criteria/types/criteria.interface.d.ts.map +1 -1
  30. package/dist/criteria/types/filter-expression.interface.d.ts +12 -0
  31. package/dist/criteria/types/filter-expression.interface.d.ts.map +1 -1
  32. package/dist/criteria/types/operator.types.d.ts +44 -7
  33. package/dist/criteria/types/operator.types.d.ts.map +1 -1
  34. package/dist/criteria/types/operator.types.js +44 -8
  35. package/dist/criteria/types/operator.types.js.map +1 -1
  36. package/package.json +1 -1
package/README.md CHANGED
@@ -4,6 +4,7 @@
4
4
  ![NPM Downloads](https://img.shields.io/npm/dw/%40nulledexp%2Ftranslatable-criteria)
5
5
  [![Development Stage](https://img.shields.io/badge/Development-Active%20Development-green)]()
6
6
  [![Documentation](https://img.shields.io/badge/Documentation-EN/ES-blue)](./src/docs/introduction/en.md)
7
+ [![CI](https://github.com/Techscq/translatable-criteria/actions/workflows/ci.yml/badge.svg)](https://github.com/Techscq/translatable-criteria/actions/workflows/ci.yml)
7
8
 
8
9
  A TypeScript library for building data-source agnostic, translatable query criteria. Define complex filtering, ordering, and join logic in a structured, type-safe way, then translate it to your specific data source using custom translators.
9
10
 
@@ -32,6 +32,15 @@ export declare abstract class Criteria<TSchema extends CriteriaSchema, CurrentAl
32
32
  get alias(): CurrentAlias;
33
33
  setTake(amount: number): this;
34
34
  setSkip(amount: number): this;
35
+ /**
36
+ * Asserts that a given field name is defined within the current criteria's schema.
37
+ * This is a protected utility method used internally to validate field names
38
+ * before they are used in filters, ordering, or selections.
39
+ *
40
+ * @protected
41
+ * @param {FieldOfSchema<TSchema>} field - The field name to validate.
42
+ * @throws {Error} If the field is not defined in the schema.
43
+ */
35
44
  protected assetFieldOnSchema(field: FieldOfSchema<TSchema>): void;
36
45
  orderBy(field: FieldOfSchema<TSchema>, direction: OrderDirection): this;
37
46
  where<Operator extends FilterOperator>(filterPrimitive: FilterPrimitive<FieldOfSchema<TSchema>, Operator>): this;
@@ -40,9 +49,11 @@ export declare abstract class Criteria<TSchema extends CriteriaSchema, CurrentAl
40
49
  join<TJoinSchema extends CriteriaSchema, TJoinedCriteriaAlias extends SelectedAliasOf<TJoinSchema>, TMatchingJoinConfig extends SpecificMatchingJoinConfig<TSchema, TJoinedCriteriaAlias>>(criteriaToJoin: JoinCriteriaParameterType<TSchema, TJoinSchema, TJoinedCriteriaAlias, TMatchingJoinConfig>, joinParameter: JoinParameterType<TSchema, TJoinSchema, TMatchingJoinConfig>): this;
41
50
  private assertIsValidJoinOptions;
42
51
  get cursor(): Cursor<FieldOfSchema<TSchema>, FilterOperator.GREATER_THAN | FilterOperator.LESS_THAN> | undefined;
43
- setCursor(cursorFilters: [
44
- Omit<FilterPrimitive<FieldOfSchema<TSchema>, FilterOperator.GREATER_THAN | FilterOperator.LESS_THAN>, 'operator'>,
45
- Omit<FilterPrimitive<FieldOfSchema<TSchema>, FilterOperator.GREATER_THAN | FilterOperator.LESS_THAN>, 'operator'>
46
- ], operator: FilterOperator.GREATER_THAN | FilterOperator.LESS_THAN, order: OrderDirection): this;
52
+ setCursor<Operator extends FilterOperator.GREATER_THAN | FilterOperator.LESS_THAN>(filterPrimitives: readonly [
53
+ Omit<FilterPrimitive<FieldOfSchema<TSchema>, Operator>, 'operator'>
54
+ ] | readonly [
55
+ Omit<FilterPrimitive<FieldOfSchema<TSchema>, Operator>, 'operator'>,
56
+ Omit<FilterPrimitive<FieldOfSchema<TSchema>, Operator>, 'operator'>
57
+ ], operator: Operator, order: OrderDirection): ICriteriaBase<TSchema, CurrentAlias>;
47
58
  }
48
59
  //# sourceMappingURL=criteria.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"criteria.d.ts","sourceRoot":"","sources":["../../src/criteria/criteria.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,aAAa,EAEb,eAAe,EAChB,MAAM,yBAAyB,CAAC;AAIjC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAC;AAChF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,KAAK,EACV,yBAAyB,EACzB,iBAAiB,EACjB,0BAA0B,EAC3B,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAM3D,8BAAsB,QAAQ,CAC5B,OAAO,SAAS,cAAc,EAC9B,YAAY,SAAS,eAAe,CAAC,OAAO,CAAC,GAAG,eAAe,CAAC,OAAO,CAAC,CACxE,YAAW,aAAa,CAAC,OAAO,EAAE,YAAY,CAAC;IAgB7C,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO;IAClC,SAAS,CAAC,MAAM,EAAE,YAAY;IAfhC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAwC;IACvE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAsC;IACnE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAyB;IACtD,OAAO,CAAC,KAAK,CAAa;IAC1B,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAe;IAC7D,OAAO,CAAC,UAAU,CAAiB;IACnC,SAAS,CAAC,OAAO,EACb,MAAM,CACJ,aAAa,CAAC,OAAO,CAAC,EACtB,cAAc,CAAC,YAAY,GAAG,cAAc,CAAC,SAAS,CACvD,GACD,SAAS,CAAC;gBAGO,MAAM,EAAE,OAAO,EACxB,MAAM,EAAE,YAAY;IAShC,IAAI,MAAM,6BAKT;IAED,QAAQ,CAAC,aAAa,IAAI,aAAa,CAAC,OAAO,EAAE,YAAY,CAAC;IAC9D,WAAW;IAMX,IAAI,SAAS,YAEZ;IAED,SAAS,CAAC,YAAY,EAAE,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAWrD,IAAI,IAAI,WAEP;IAED,OAAO,CAAC,KAAK,CAAa;IAE1B,IAAI,IAAI,WAEP;IAED,OAAO,CAAC,OAAO,CAA4C;IAE3D,IAAI,MAAM,IAAI,aAAa,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAEzD;IAED,IAAI,KAAK,yEAER;IAED,IAAI,eAAe,6CAElB;IAED,IAAI,UAAU,2BAEb;IAED,IAAI,KAAK,iBAER;IAED,OAAO,CAAC,MAAM,EAAE,MAAM;IAOtB,OAAO,CAAC,MAAM,EAAE,MAAM;IAQtB,SAAS,CAAC,kBAAkB,CAAC,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC;IAM1D,OAAO,CAAC,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,cAAc;IAMhE,KAAK,CAAC,QAAQ,SAAS,cAAc,EACnC,eAAe,EAAE,eAAe,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC;IAOpE,QAAQ,CAAC,QAAQ,SAAS,cAAc,EACtC,eAAe,EAAE,eAAe,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC;IAOpE,OAAO,CAAC,QAAQ,SAAS,cAAc,EACrC,eAAe,EAAE,eAAe,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC;IAOpE,IAAI,CACF,WAAW,SAAS,cAAc,EAClC,oBAAoB,SAAS,eAAe,CAAC,WAAW,CAAC,EACzD,mBAAmB,SAAS,0BAA0B,CACpD,OAAO,EACP,oBAAoB,CACrB,EAED,cAAc,EAAE,yBAAyB,CACvC,OAAO,EACP,WAAW,EACX,oBAAoB,EACpB,mBAAmB,CACpB,EACD,aAAa,EAAE,iBAAiB,CAAC,OAAO,EAAE,WAAW,EAAE,mBAAmB,CAAC;IA+B7E,OAAO,CAAC,wBAAwB;IAqChC,IAAI,MAAM,uGAET;IAED,SAAS,CACP,aAAa,EAAE;QACb,IAAI,CACF,eAAe,CACb,aAAa,CAAC,OAAO,CAAC,EACtB,cAAc,CAAC,YAAY,GAAG,cAAc,CAAC,SAAS,CACvD,EACD,UAAU,CACX;QACD,IAAI,CACF,eAAe,CACb,aAAa,CAAC,OAAO,CAAC,EACtB,cAAc,CAAC,YAAY,GAAG,cAAc,CAAC,SAAS,CACvD,EACD,UAAU,CACX;KACF,EACD,QAAQ,EAAE,cAAc,CAAC,YAAY,GAAG,cAAc,CAAC,SAAS,EAChE,KAAK,EAAE,cAAc;CAWxB"}
1
+ {"version":3,"file":"criteria.d.ts","sourceRoot":"","sources":["../../src/criteria/criteria.ts"],"names":[],"mappings":"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"}
@@ -81,6 +81,15 @@ export class Criteria {
81
81
  this._skip = amount;
82
82
  return this;
83
83
  }
84
+ /**
85
+ * Asserts that a given field name is defined within the current criteria's schema.
86
+ * This is a protected utility method used internally to validate field names
87
+ * before they are used in filters, ordering, or selections.
88
+ *
89
+ * @protected
90
+ * @param {FieldOfSchema<TSchema>} field - The field name to validate.
91
+ * @throws {Error} If the field is not defined in the schema.
92
+ */
84
93
  assetFieldOnSchema(field) {
85
94
  if (!this.schema.fields.includes(field))
86
95
  throw new Error(`The field '${String(field)}' is not defined in the schema '${this.schema.source_name}'.`);
@@ -149,13 +158,14 @@ export class Criteria {
149
158
  get cursor() {
150
159
  return this._cursor;
151
160
  }
152
- setCursor(cursorFilters, operator, order) {
153
- if (cursorFilters.length !== 2)
154
- throw new Error(`The cursor must have exactly 2 elements`);
155
- for (const filterPrimitive of cursorFilters) {
161
+ setCursor(filterPrimitives, operator, order) {
162
+ if (filterPrimitives.length !== 1 && filterPrimitives.length !== 2) {
163
+ throw new Error('The cursor must have exactly 1 or 2 elements');
164
+ }
165
+ for (const filterPrimitive of filterPrimitives) {
156
166
  this.assetFieldOnSchema(filterPrimitive.field);
157
167
  }
158
- this._cursor = new Cursor(cursorFilters, operator, order);
168
+ this._cursor = new Cursor(filterPrimitives, operator, order);
159
169
  return this;
160
170
  }
161
171
  }
@@ -1 +1 @@
1
- {"version":3,"file":"criteria.js","sourceRoot":"","sources":["../../src/criteria/criteria.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"criteria.js","sourceRoot":"","sources":["../../src/criteria/criteria.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAQzD,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAM3D,MAAM,OAAgB,QAAQ;IAmBP;IACT;IAfK,cAAc,GAAG,IAAI,qBAAqB,EAAW,CAAC;IACtD,YAAY,GAAG,IAAI,mBAAmB,EAAW,CAAC;IAClD,YAAY,CAAyB;IAC9C,KAAK,GAAW,CAAC,CAAC,CAAC,eAAe;IAChC,OAAO,GAAgC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC;IACrD,UAAU,GAAY,IAAI,CAAC;IACzB,OAAO,CAKH;IAEd,YACqB,MAAe,EACxB,MAAoB;QADX,WAAM,GAAN,MAAM,CAAS;QACxB,WAAM,GAAN,MAAM,CAAc;QAE9B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;YACrC,MAAM,IAAI,KAAK,CACb,oBAAoB,IAAI,CAAC,MAAM,eAAe,MAAM,CAAC,WAAW,EAAE,CACnE,CAAC;QAEJ,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,WAAW,CAAC;IACzC,CAAC;IACD,IAAI,MAAM;QACR,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAkC,CAAC;QAClE,CAAC;QACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAClC,CAAC;IAGD,WAAW;QACT,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED,SAAS,CAAC,YAA2C;QACnD,KAAK,MAAM,KAAK,IAAI,YAAY,EAAE,CAAC;YACjC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC;QACD,IAAI,YAAY,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACtD,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YACxB,IAAI,CAAC,OAAO,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,CAAC;QACvC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAEO,KAAK,GAAW,CAAC,CAAC;IAE1B,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAEO,OAAO,GAAyC,EAAE,CAAC;IAE3D,IAAI,MAAM;QACR,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC;IAED,IAAI,KAAK;QACP,OAAO,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC3C,CAAC;IAED,IAAI,eAAe;QACjB,OAAO,IAAI,CAAC,cAAc,CAAC,kBAAkB,EAAE,CAAC;IAClD,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,OAAO,CAAC,MAAc;QACpB,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;QACjD,CAAC;QACD,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC;QACpB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,CAAC,MAAc;QACpB,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;QACjD,CAAC;QACD,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC;QACpB,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;OAQG;IACO,kBAAkB,CAAC,KAA6B;QACxD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;YACrC,MAAM,IAAI,KAAK,CACb,cAAc,MAAM,CAAC,KAAK,CAAC,mCAAmC,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,CAC1F,CAAC;IACN,CAAC;IACD,OAAO,CAAC,KAA6B,EAAE,SAAyB;QAC9D,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAC/B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;QAC/C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CACH,eAAkE;QAElE,IAAI,CAAC,kBAAkB,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAC/C,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;QAC3C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,QAAQ,CACN,eAAkE;QAElE,IAAI,CAAC,kBAAkB,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAC/C,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;QAC9C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CACL,eAAkE;QAElE,IAAI,CAAC,kBAAkB,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAC/C,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;QAC7C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAQF,cAKC,EACD,aAA2E;QAE3E,IAAI,OAAO,cAAc,KAAK,QAAQ,EAAE,CAAC;YACvC,MAAM,IAAI,KAAK,CAAC,2BAA2B,cAAc,EAAE,CAAC,CAAC;QAC/D,CAAC;QAED,OAAO,aAAa,CAAC,YAAY,KAAK,QAAQ;YAC5C,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,YAAY,CAAC,SAAS,CAAC;YAC/D,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;QAExD,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CACvC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,KAAK,cAAc,CAAC,KAAK,CAC9C,CAAC;QACF,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CACb,iCAAiC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,0BAA0B,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,CACnH,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,wBAAwB,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;QAEzD,MAAM,kBAAkB,GAAG;YACzB,GAAG,aAAa;YAChB,YAAY,EAAE,IAAI,CAAC,KAAK;YACxB,kBAAkB,EAAE,IAAI,CAAC,UAAU;YACnC,4BAA4B,EAAE,UAAU,CAAC,kBAAkB;SAC5D,CAAC;QACF,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;QAC9D,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,wBAAwB,CAC9B,UAA+B,EAC/B,aAEyC;QAEzC,MAAM,kBAAkB,GAAG,CACzB,KAAU,EAC2C,EAAE;YACvD,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;gBACzB,KAAK,KAAK,IAAI;gBACd,aAAa,IAAI,KAAK;gBACtB,WAAW,IAAI,KAAK,CACrB,CAAC;QACJ,CAAC,CAAC;QACF,IAAI,UAAU,CAAC,kBAAkB,KAAK,cAAc,EAAE,CAAC;YACrD,IACE,CAAC,kBAAkB,CAAC,aAAa,CAAC,YAAY,CAAC;gBAC/C,CAAC,kBAAkB,CAAC,aAAa,CAAC,UAAU,CAAC,EAC7C,CAAC;gBACD,MAAM,IAAI,KAAK,CACb,0JAA0J,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CACtL,CAAC;YACJ,CAAC;QACH,CAAC;aAAM,CAAC;YACN,IACE,OAAO,aAAa,CAAC,YAAY,KAAK,QAAQ;gBAC9C,OAAO,aAAa,CAAC,UAAU,KAAK,QAAQ,EAC5C,CAAC;gBACD,MAAM,IAAI,KAAK,CACb,4BAA4B,UAAU,CAAC,kBAAkB,uEAAuE,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAC5J,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,SAAS,CAGP,gBAOK,EACL,QAAkB,EAClB,KAAqB;QAErB,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnE,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;QAClE,CAAC;QAED,KAAK,MAAM,eAAe,IAAI,gBAAgB,EAAE,CAAC;YAC/C,IAAI,CAAC,kBAAkB,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QACjD,CAAC;QACD,IAAI,CAAC,OAAO,GAAG,IAAI,MAAM,CAAC,gBAAgB,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;QAC7D,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
@@ -2,9 +2,40 @@ import { Filter } from './filter/filter.js';
2
2
  import { OrderDirection } from './order/order.js';
3
3
  import type { FilterPrimitive } from './filter/types/filter-primitive.types.js';
4
4
  import { FilterOperator } from './types/operator.types.js';
5
+ /**
6
+ * Represents the configuration for cursor-based pagination.
7
+ * A cursor defines a point in a sorted dataset from which to fetch
8
+ * the next or previous set of results.
9
+ *
10
+ * @template TFields - A string literal type representing valid field names for cursor filters.
11
+ * @template Operator - The specific comparison operator for the cursor (GREATER_THAN or LESS_THAN).
12
+ */
5
13
  export declare class Cursor<TFields extends string, Operator extends FilterOperator.GREATER_THAN | FilterOperator.LESS_THAN> {
14
+ /**
15
+ * An array of one or two {@link Filter} instances that define the cursor's position.
16
+ * - A single filter is used for simple cursor pagination (e.g., based on `created_at`).
17
+ * - Two filters are used for composite cursor pagination (e.g., based on `created_at` and `uuid`).
18
+ * @readonly
19
+ */
6
20
  readonly filters: [Filter<TFields, Operator>, Filter<TFields, Operator>] | [Filter<TFields, Operator>];
21
+ /**
22
+ * The primary {@link OrderDirection} associated with the cursor.
23
+ * This should align with the main sort order of the query being paginated.
24
+ * @readonly
25
+ */
7
26
  readonly order: OrderDirection;
27
+ /**
28
+ * Creates an instance of Cursor.
29
+ * @param {readonly [Omit<FilterPrimitive<TFields, Operator>, 'operator'>] | readonly [Omit<FilterPrimitive<TFields, Operator>, 'operator'>, Omit<FilterPrimitive<TFields, Operator>, 'operator'>]} filterPrimitive -
30
+ * An array of one or two filter primitives (without the 'operator' property)
31
+ * that define the cursor's fields and values.
32
+ * @param {Operator} operator - The comparison operator (GREATER_THAN or LESS_THAN) to apply.
33
+ * @param {OrderDirection} order - The primary order direction for pagination.
34
+ * @throws {Error} If any cursor field is not defined.
35
+ * @throws {Error} If any cursor value is null or undefined.
36
+ * @throws {Error} If two cursor fields are provided and they are identical.
37
+ * @throws {Error} If no filter primitives are provided.
38
+ */
8
39
  constructor(filterPrimitive: readonly [
9
40
  Omit<FilterPrimitive<TFields, Operator>, 'operator'>,
10
41
  Omit<FilterPrimitive<TFields, Operator>, 'operator'>
@@ -1 +1 @@
1
- {"version":3,"file":"cursor.d.ts","sourceRoot":"","sources":["../../src/criteria/cursor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAC;AAChF,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAE3D,qBAAa,MAAM,CACjB,OAAO,SAAS,MAAM,EACtB,QAAQ,SAAS,cAAc,CAAC,YAAY,GAAG,cAAc,CAAC,SAAS;IAEvE,QAAQ,CAAC,OAAO,EACZ,CAAC,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,GACtD,CAAC,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;IAChC,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAC;gBAG7B,eAAe,EACX,SAAS;QACP,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,UAAU,CAAC;QACpD,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,UAAU,CAAC;KACrD,GACD,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,UAAU,CAAC,CAAC,EACnE,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,cAAc;CAgCxB"}
1
+ {"version":3,"file":"cursor.d.ts","sourceRoot":"","sources":["../../src/criteria/cursor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAC;AAChF,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D;;;;;;;GAOG;AACH,qBAAa,MAAM,CACjB,OAAO,SAAS,MAAM,EACtB,QAAQ,SAAS,cAAc,CAAC,YAAY,GAAG,cAAc,CAAC,SAAS;IAEvE;;;;;OAKG;IACH,QAAQ,CAAC,OAAO,EACZ,CAAC,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,GACtD,CAAC,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;IAChC;;;;OAIG;IACH,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAC;IAC/B;;;;;;;;;;;OAWG;gBAED,eAAe,EACX,SAAS;QACP,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,UAAU,CAAC;QACpD,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,UAAU,CAAC;KACrD,GACD,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,UAAU,CAAC,CAAC,EACnE,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,cAAc;CA6BxB"}
@@ -1,9 +1,40 @@
1
1
  import { Filter } from './filter/filter.js';
2
2
  import { OrderDirection } from './order/order.js';
3
3
  import { FilterOperator } from './types/operator.types.js';
4
+ /**
5
+ * Represents the configuration for cursor-based pagination.
6
+ * A cursor defines a point in a sorted dataset from which to fetch
7
+ * the next or previous set of results.
8
+ *
9
+ * @template TFields - A string literal type representing valid field names for cursor filters.
10
+ * @template Operator - The specific comparison operator for the cursor (GREATER_THAN or LESS_THAN).
11
+ */
4
12
  export class Cursor {
13
+ /**
14
+ * An array of one or two {@link Filter} instances that define the cursor's position.
15
+ * - A single filter is used for simple cursor pagination (e.g., based on `created_at`).
16
+ * - Two filters are used for composite cursor pagination (e.g., based on `created_at` and `uuid`).
17
+ * @readonly
18
+ */
5
19
  filters;
20
+ /**
21
+ * The primary {@link OrderDirection} associated with the cursor.
22
+ * This should align with the main sort order of the query being paginated.
23
+ * @readonly
24
+ */
6
25
  order;
26
+ /**
27
+ * Creates an instance of Cursor.
28
+ * @param {readonly [Omit<FilterPrimitive<TFields, Operator>, 'operator'>] | readonly [Omit<FilterPrimitive<TFields, Operator>, 'operator'>, Omit<FilterPrimitive<TFields, Operator>, 'operator'>]} filterPrimitive -
29
+ * An array of one or two filter primitives (without the 'operator' property)
30
+ * that define the cursor's fields and values.
31
+ * @param {Operator} operator - The comparison operator (GREATER_THAN or LESS_THAN) to apply.
32
+ * @param {OrderDirection} order - The primary order direction for pagination.
33
+ * @throws {Error} If any cursor field is not defined.
34
+ * @throws {Error} If any cursor value is null or undefined.
35
+ * @throws {Error} If two cursor fields are provided and they are identical.
36
+ * @throws {Error} If no filter primitives are provided.
37
+ */
7
38
  constructor(filterPrimitive, operator, order) {
8
39
  for (const filter of filterPrimitive) {
9
40
  if (!filter.field) {
@@ -21,10 +52,7 @@ export class Cursor {
21
52
  if (!filterArray[0]) {
22
53
  throw new Error('Cursor filters must be defined');
23
54
  }
24
- this.filters = [filterArray[0]];
25
- if (filterArray[1]) {
26
- this.filters.push(filterArray[1]);
27
- }
55
+ this.filters = filterArray;
28
56
  this.order = order;
29
57
  }
30
58
  }
@@ -1 +1 @@
1
- {"version":3,"file":"cursor.js","sourceRoot":"","sources":["../../src/criteria/cursor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAE3D,MAAM,OAAO,MAAM;IAIR,OAAO,CAEgB;IACvB,KAAK,CAAiB;IAE/B,YACE,eAKmE,EACnE,QAAkB,EAClB,KAAqB;QAErB,KAAK,MAAM,MAAM,IAAI,eAAe,EAAE,CAAC;YACrC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;gBAClB,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;YAClD,CAAC;YACD,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,IAAI,MAAM,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;gBACxD,MAAM,IAAI,KAAK,CACb,0BAA0B,MAAM,CAAC,KAAK,kBAAkB,CACzD,CAAC;YACJ,CAAC;QACH,CAAC;QAED,IACE,eAAe,CAAC,MAAM,KAAK,CAAC;YAC5B,eAAe,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,eAAe,CAAC,CAAC,CAAC,EAAE,KAAK,EACtD,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;QAC5E,CAAC;QAED,MAAM,WAAW,GAAG,eAAe,CAAC,GAAG,CACrC,CAAC,eAAe,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,EAAE,GAAG,eAAe,EAAE,QAAQ,EAAE,CAAC,CAClE,CAAC;QACF,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;QACpD,CAAC;QACD,IAAI,CAAC,OAAO,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;QAChC,IAAI,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;YACnB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;QACpC,CAAC;QACD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;CACF"}
1
+ {"version":3,"file":"cursor.js","sourceRoot":"","sources":["../../src/criteria/cursor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D;;;;;;;GAOG;AACH,MAAM,OAAO,MAAM;IAIjB;;;;;OAKG;IACM,OAAO,CAEgB;IAChC;;;;OAIG;IACM,KAAK,CAAiB;IAC/B;;;;;;;;;;;OAWG;IACH,YACE,eAKmE,EACnE,QAAkB,EAClB,KAAqB;QAErB,KAAK,MAAM,MAAM,IAAI,eAAe,EAAE,CAAC;YACrC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;gBAClB,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;YAClD,CAAC;YACD,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,IAAI,MAAM,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;gBACxD,MAAM,IAAI,KAAK,CACb,0BAA0B,MAAM,CAAC,KAAK,kBAAkB,CACzD,CAAC;YACJ,CAAC;QACH,CAAC;QAED,IACE,eAAe,CAAC,MAAM,KAAK,CAAC;YAC5B,eAAe,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,eAAe,CAAC,CAAC,CAAC,EAAE,KAAK,EACtD,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;QAC5E,CAAC;QAED,MAAM,WAAW,GAAG,eAAe,CAAC,GAAG,CACrC,CAAC,eAAe,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,EAAE,GAAG,eAAe,EAAE,QAAQ,EAAE,CAAC,CAClE,CAAC;QACF,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;QACpD,CAAC;QACD,IAAI,CAAC,OAAO,GAAG,WAAkC,CAAC;QAClD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;CACF"}
@@ -1,4 +1,10 @@
1
1
  import type { FilterGroupPrimitive } from './types/filter-primitive.types.js';
2
+ /**
3
+ * Utility class for normalizing filter group structures.
4
+ * Normalization helps in simplifying complex filter groups by flattening
5
+ * redundant nested groups and removing empty ones, leading to a more
6
+ * canonical and easier-to-process filter structure.
7
+ */
2
8
  export declare class FilterNormalizer {
3
9
  static normalizeGroup<T extends string = string>(group: FilterGroupPrimitive<T>): FilterGroupPrimitive<T>;
4
10
  }
@@ -1 +1 @@
1
- {"version":3,"file":"filter-utils.d.ts","sourceRoot":"","sources":["../../../src/criteria/filter/filter-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EAErB,MAAM,mCAAmC,CAAC;AAG3C,qBAAa,gBAAgB;IAC3B,MAAM,CAAC,cAAc,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,EAC7C,KAAK,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAC7B,oBAAoB,CAAC,CAAC,CAAC;CAqF3B"}
1
+ {"version":3,"file":"filter-utils.d.ts","sourceRoot":"","sources":["../../../src/criteria/filter/filter-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EAErB,MAAM,mCAAmC,CAAC;AAE3C;;;;;GAKG;AACH,qBAAa,gBAAgB;IAC3B,MAAM,CAAC,cAAc,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,EAC7C,KAAK,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAC7B,oBAAoB,CAAC,CAAC,CAAC;CAkG3B"}
@@ -1,20 +1,40 @@
1
1
  import { FilterOperator, LogicalOperator } from '../types/operator.types.js';
2
+ /**
3
+ * Utility class for normalizing filter group structures.
4
+ * Normalization helps in simplifying complex filter groups by flattening
5
+ * redundant nested groups and removing empty ones, leading to a more
6
+ * canonical and easier-to-process filter structure.
7
+ */
2
8
  export class FilterNormalizer {
3
9
  static normalizeGroup(group) {
4
10
  const normalizeCache = new WeakMap();
5
- const normalizeInternal = (current) => {
6
- const cached = normalizeCache.get(current);
11
+ /**
12
+ * Normalizes a given filter group primitive.
13
+ * This process involves:
14
+ * - Recursively normalizing child filter groups.
15
+ * - Flattening nested groups if they use the same logical operator as their parent.
16
+ * - Removing empty child groups.
17
+ * - Simplifying groups that end up with a single item (either by lifting the item
18
+ * if it's a group, or by ensuring the single filter is wrapped in a group
19
+ * with the original logical operator).
20
+ *
21
+ * @template T - A string literal type representing valid field names. Defaults to `string`.
22
+ * @param {FilterGroupPrimitive<T>} group - The filter group primitive to normalize.
23
+ * @returns {FilterGroupPrimitive<T>} The normalized filter group primitive.
24
+ */
25
+ const normalizeInternal = (group) => {
26
+ const cached = normalizeCache.get(group);
7
27
  if (cached)
8
28
  return cached;
9
- if (!current.items?.length) {
29
+ if (!group.items?.length) {
10
30
  const result = {
11
31
  logicalOperator: LogicalOperator.AND, // Default to AND for empty groups
12
32
  items: [],
13
33
  };
14
- normalizeCache.set(current, result);
34
+ normalizeCache.set(group, result);
15
35
  return result;
16
36
  }
17
- const normalizedItems = current.items.reduce((acc, item) => {
37
+ const normalizedItems = group.items.reduce((acc, item) => {
18
38
  if (!('logicalOperator' in item)) {
19
39
  acc.push(item);
20
40
  return acc;
@@ -26,7 +46,7 @@ export class FilterNormalizer {
26
46
  return acc;
27
47
  }
28
48
  // If child's operator is same as current's, flatten its items
29
- if (normalizedChild.logicalOperator === current.logicalOperator) {
49
+ if (normalizedChild.logicalOperator === group.logicalOperator) {
30
50
  acc.push(...normalizedChild.items);
31
51
  }
32
52
  else {
@@ -53,7 +73,7 @@ export class FilterNormalizer {
53
73
  else {
54
74
  // If it's a single filter, wrap it in a group with the current operator
55
75
  result = {
56
- logicalOperator: current.logicalOperator,
76
+ logicalOperator: group.logicalOperator,
57
77
  items: [singleItem],
58
78
  };
59
79
  }
@@ -61,11 +81,11 @@ export class FilterNormalizer {
61
81
  else {
62
82
  // Multiple items remain, form a group with the current operator
63
83
  result = {
64
- logicalOperator: current.logicalOperator,
84
+ logicalOperator: group.logicalOperator,
65
85
  items: normalizedItems,
66
86
  };
67
87
  }
68
- normalizeCache.set(current, result);
88
+ normalizeCache.set(group, result);
69
89
  return result;
70
90
  };
71
91
  return normalizeInternal(group);
@@ -1 +1 @@
1
- {"version":3,"file":"filter-utils.js","sourceRoot":"","sources":["../../../src/criteria/filter/filter-utils.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAE7E,MAAM,OAAO,gBAAgB;IAC3B,MAAM,CAAC,cAAc,CACnB,KAA8B;QAE9B,MAAM,cAAc,GAAG,IAAI,OAAO,EAG/B,CAAC;QAEJ,MAAM,iBAAiB,GAAG,CACxB,OAAgC,EACP,EAAE;YAC3B,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAC3C,IAAI,MAAM;gBAAE,OAAO,MAAM,CAAC;YAE1B,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC;gBAC3B,MAAM,MAAM,GAAG;oBACb,eAAe,EAAE,eAAe,CAAC,GAAG,EAAE,kCAAkC;oBACxE,KAAK,EAAE,EAAE;iBACV,CAAC;gBACF,cAAc,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;gBACpC,OAAO,MAAM,CAAC;YAChB,CAAC;YAED,MAAM,eAAe,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAE1C,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;gBACd,IAAI,CAAC,CAAC,iBAAiB,IAAI,IAAI,CAAC,EAAE,CAAC;oBACjC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACf,OAAO,GAAG,CAAC;gBACb,CAAC;gBAED,wDAAwD;gBACxD,MAAM,eAAe,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;gBAEhD,IAAI,eAAe,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACvC,0BAA0B;oBAC1B,OAAO,GAAG,CAAC;gBACb,CAAC;gBAED,8DAA8D;gBAC9D,IAAI,eAAe,CAAC,eAAe,KAAK,OAAO,CAAC,eAAe,EAAE,CAAC;oBAChE,GAAG,CAAC,IAAI,CAAC,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;gBACrC,CAAC;qBAAM,CAAC;oBACN,kDAAkD;oBAClD,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;gBAC5B,CAAC;gBAED,OAAO,GAAG,CAAC;YACb,CAAC,EAAE,EAAE,CAAC,CAAC;YAEP,IAAI,MAA+B,CAAC;YAEpC,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACjC,MAAM,GAAG;oBACP,mDAAmD;oBACnD,eAAe,EAAE,eAAe,CAAC,GAAG;oBACpC,KAAK,EAAE,EAAE;iBACV,CAAC;YACJ,CAAC;iBAAM,IACL,eAAe,CAAC,MAAM,KAAK,CAAC;gBAC5B,eAAe,CAAC,CAAC,CAAC,KAAK,SAAS,EAChC,CAAC;gBACD,MAAM,UAAU,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;gBACtC,mFAAmF;gBACnF,IAAI,iBAAiB,IAAI,UAAU,EAAE,CAAC;oBACpC,MAAM,GAAG,UAAqC,CAAC;gBACjD,CAAC;qBAAM,CAAC;oBACN,wEAAwE;oBACxE,MAAM,GAAG;wBACP,eAAe,EAAE,OAAO,CAAC,eAAe;wBACxC,KAAK,EAAE,CAAC,UAAU,CAAC;qBACpB,CAAC;gBACJ,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,gEAAgE;gBAChE,MAAM,GAAG;oBACP,eAAe,EAAE,OAAO,CAAC,eAAe;oBACxC,KAAK,EAAE,eAAe;iBACvB,CAAC;YACJ,CAAC;YAED,cAAc,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YACpC,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC;QAEF,OAAO,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC;CACF"}
1
+ {"version":3,"file":"filter-utils.js","sourceRoot":"","sources":["../../../src/criteria/filter/filter-utils.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7E;;;;;GAKG;AACH,MAAM,OAAO,gBAAgB;IAC3B,MAAM,CAAC,cAAc,CACnB,KAA8B;QAE9B,MAAM,cAAc,GAAG,IAAI,OAAO,EAG/B,CAAC;QACJ;;;;;;;;;;;;;WAaG;QACH,MAAM,iBAAiB,GAAG,CACxB,KAA8B,EACL,EAAE;YAC3B,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACzC,IAAI,MAAM;gBAAE,OAAO,MAAM,CAAC;YAE1B,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC;gBACzB,MAAM,MAAM,GAAG;oBACb,eAAe,EAAE,eAAe,CAAC,GAAG,EAAE,kCAAkC;oBACxE,KAAK,EAAE,EAAE;iBACV,CAAC;gBACF,cAAc,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;gBAClC,OAAO,MAAM,CAAC;YAChB,CAAC;YAED,MAAM,eAAe,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAExC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;gBACd,IAAI,CAAC,CAAC,iBAAiB,IAAI,IAAI,CAAC,EAAE,CAAC;oBACjC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACf,OAAO,GAAG,CAAC;gBACb,CAAC;gBAED,wDAAwD;gBACxD,MAAM,eAAe,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;gBAEhD,IAAI,eAAe,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACvC,0BAA0B;oBAC1B,OAAO,GAAG,CAAC;gBACb,CAAC;gBAED,8DAA8D;gBAC9D,IAAI,eAAe,CAAC,eAAe,KAAK,KAAK,CAAC,eAAe,EAAE,CAAC;oBAC9D,GAAG,CAAC,IAAI,CAAC,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;gBACrC,CAAC;qBAAM,CAAC;oBACN,kDAAkD;oBAClD,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;gBAC5B,CAAC;gBAED,OAAO,GAAG,CAAC;YACb,CAAC,EAAE,EAAE,CAAC,CAAC;YAEP,IAAI,MAA+B,CAAC;YAEpC,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACjC,MAAM,GAAG;oBACP,mDAAmD;oBACnD,eAAe,EAAE,eAAe,CAAC,GAAG;oBACpC,KAAK,EAAE,EAAE;iBACV,CAAC;YACJ,CAAC;iBAAM,IACL,eAAe,CAAC,MAAM,KAAK,CAAC;gBAC5B,eAAe,CAAC,CAAC,CAAC,KAAK,SAAS,EAChC,CAAC;gBACD,MAAM,UAAU,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;gBACtC,mFAAmF;gBACnF,IAAI,iBAAiB,IAAI,UAAU,EAAE,CAAC;oBACpC,MAAM,GAAG,UAAqC,CAAC;gBACjD,CAAC;qBAAM,CAAC;oBACN,wEAAwE;oBACxE,MAAM,GAAG;wBACP,eAAe,EAAE,KAAK,CAAC,eAAe;wBACtC,KAAK,EAAE,CAAC,UAAU,CAAC;qBACpB,CAAC;gBACJ,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,gEAAgE;gBAChE,MAAM,GAAG;oBACP,eAAe,EAAE,KAAK,CAAC,eAAe;oBACtC,KAAK,EAAE,eAAe;iBACvB,CAAC;YACJ,CAAC;YAED,cAAc,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YAClC,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC;QAEF,OAAO,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC;CACF"}
@@ -13,7 +13,10 @@ export declare class Filter<T extends string, Operator extends FilterOperator> i
13
13
  private isString;
14
14
  private isNumber;
15
15
  private isBoolean;
16
+ private isValidSingleKeyObjectWithValue;
17
+ private validatePrimitiveValueForOperator;
16
18
  private isArrayOfPrimitives;
19
+ private isTupleOfTwoPrimitives;
17
20
  private isObject;
18
21
  private isNull;
19
22
  private isUndefined;
@@ -1 +1 @@
1
- {"version":3,"file":"filter.d.ts","sourceRoot":"","sources":["../../../src/criteria/filter/filter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yCAAyC,CAAC;AACjF,OAAO,KAAK,EACV,eAAe,EACf,WAAW,EAEZ,MAAM,mCAAmC,CAAC;AAC3C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AAE5E,qBAAa,MAAM,CAAC,CAAC,SAAS,MAAM,EAAE,QAAQ,SAAS,cAAc,CACnE,YAAW,iBAAiB;IAEhB,OAAO,CAAC,QAAQ,CAAC,SAAS;gBAAT,SAAS,EAAE,eAAe,CAAC,CAAC,EAAE,QAAQ,CAAC;IAsFpE,IAAI,KAAK,IAAI,CAAC,CAEb;IAED,IAAI,QAAQ,IAAI,QAAQ,CAEvB;IAED,IAAI,KAAK,IAAI,WAAW,CAAC,QAAQ,CAAC,CAEjC;IAED,MAAM,CACJ,kBAAkB,EAClB,iBAAiB,GAAG,kBAAkB,EACtC,oBAAoB,SAAS,GAAG,GAAG,GAAG,EAEtC,OAAO,EAAE,gBAAgB,CACvB,kBAAkB,EAClB,iBAAiB,EACjB,oBAAoB,CACrB,EACD,YAAY,EAAE,MAAM,GACnB,oBAAoB;IAIvB,WAAW,IAAI,eAAe,CAAC,CAAC,EAAE,QAAQ,CAAC;IAG3C,OAAO,CAAC,QAAQ;IAGhB,OAAO,CAAC,QAAQ;IAGhB,OAAO,CAAC,SAAS;IAGjB,OAAO,CAAC,mBAAmB;IAe3B,OAAO,CAAC,QAAQ;IAQhB,OAAO,CAAC,MAAM;IAGd,OAAO,CAAC,WAAW;IAGnB,OAAO,CAAC,sBAAsB;IAS9B,OAAO,CAAC,QAAQ;CAQjB"}
1
+ {"version":3,"file":"filter.d.ts","sourceRoot":"","sources":["../../../src/criteria/filter/filter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yCAAyC,CAAC;AACjF,OAAO,KAAK,EACV,eAAe,EACf,WAAW,EAEZ,MAAM,mCAAmC,CAAC;AAC3C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AAE5E,qBAAa,MAAM,CAAC,CAAC,SAAS,MAAM,EAAE,QAAQ,SAAS,cAAc,CACnE,YAAW,iBAAiB;IAEhB,OAAO,CAAC,QAAQ,CAAC,SAAS;gBAAT,SAAS,EAAE,eAAe,CAAC,CAAC,EAAE,QAAQ,CAAC;IAIpE,IAAI,KAAK,IAAI,CAAC,CAEb;IAED,IAAI,QAAQ,IAAI,QAAQ,CAEvB;IAED,IAAI,KAAK,IAAI,WAAW,CAAC,QAAQ,CAAC,CAEjC;IAED,MAAM,CACJ,kBAAkB,EAClB,iBAAiB,GAAG,kBAAkB,EACtC,oBAAoB,SAAS,GAAG,GAAG,GAAG,EAEtC,OAAO,EAAE,gBAAgB,CACvB,kBAAkB,EAClB,iBAAiB,EACjB,oBAAoB,CACrB,EACD,YAAY,EAAE,MAAM,GACnB,oBAAoB;IAIvB,WAAW,IAAI,eAAe,CAAC,CAAC,EAAE,QAAQ,CAAC;IAG3C,OAAO,CAAC,QAAQ;IAGhB,OAAO,CAAC,QAAQ;IAGhB,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,+BAA+B;IAWvC,OAAO,CAAC,iCAAiC;IAqGzC,OAAO,CAAC,mBAAmB;IAgB3B,OAAO,CAAC,sBAAsB;IAkB9B,OAAO,CAAC,QAAQ;IAShB,OAAO,CAAC,MAAM;IAId,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,sBAAsB;IAU9B,OAAO,CAAC,QAAQ;CAQjB"}
@@ -3,7 +3,39 @@ export class Filter {
3
3
  primitive;
4
4
  constructor(primitive) {
5
5
  this.primitive = primitive;
6
- switch (primitive.operator) {
6
+ this.validatePrimitiveValueForOperator(primitive.operator);
7
+ }
8
+ get field() {
9
+ return this.primitive.field;
10
+ }
11
+ get operator() {
12
+ return this.primitive.operator;
13
+ }
14
+ get value() {
15
+ return this.primitive.value;
16
+ }
17
+ accept(visitor, currentAlias) {
18
+ return visitor.visitFilter(this, currentAlias);
19
+ }
20
+ toPrimitive() {
21
+ return this.primitive;
22
+ }
23
+ isString(value) {
24
+ return typeof value === 'string';
25
+ }
26
+ isNumber(value) {
27
+ return typeof value === 'number';
28
+ }
29
+ isBoolean(value) {
30
+ return typeof value === 'boolean';
31
+ }
32
+ isValidSingleKeyObjectWithValue(objectValue, valueValidator) {
33
+ return (this.isObject(objectValue) &&
34
+ Object.keys(objectValue).length === 1 &&
35
+ valueValidator(Object.values(objectValue)[0]));
36
+ }
37
+ validatePrimitiveValueForOperator(operator) {
38
+ switch (operator) {
7
39
  case FilterOperator.LIKE:
8
40
  case FilterOperator.NOT_LIKE:
9
41
  case FilterOperator.CONTAINS:
@@ -12,8 +44,11 @@ export class Filter {
12
44
  case FilterOperator.ENDS_WITH:
13
45
  case FilterOperator.SET_CONTAINS:
14
46
  case FilterOperator.SET_NOT_CONTAINS:
47
+ case FilterOperator.MATCHES_REGEX:
48
+ case FilterOperator.ILIKE:
49
+ case FilterOperator.NOT_ILIKE:
15
50
  if (!this.isString(this.value)) {
16
- throw new Error('Filter value must be a string type');
51
+ throw new Error(`Filter value for operator ${operator} must be a string type`);
17
52
  }
18
53
  break;
19
54
  case FilterOperator.EQUALS:
@@ -23,13 +58,11 @@ export class Filter {
23
58
  case FilterOperator.LESS_THAN:
24
59
  case FilterOperator.LESS_THAN_OR_EQUALS:
25
60
  if (!this.isPrimitiveFilterValue(this.value))
26
- throw new Error('Filter value must be a string | number | boolean | Date | null type');
61
+ throw new Error(`Filter value for operator ${operator} must be a string | number | boolean | Date | null type`);
27
62
  break;
28
63
  case FilterOperator.ARRAY_CONTAINS_ELEMENT:
29
64
  if (!this.isPrimitiveFilterValue(this.value) &&
30
- !(this.isObject(this.value) &&
31
- Object.keys(this.value).length === 1 &&
32
- this.isPrimitiveFilterValue(Object.values(this.value)[0]))) {
65
+ !this.isValidSingleKeyObjectWithValue(this.value, (val) => this.isPrimitiveFilterValue(val))) {
33
66
  throw new Error('For ARRAY_CONTAINS_ELEMENT, value must be a PrimitiveFilterValue or an object like { "path.to.array": elementValue }');
34
67
  }
35
68
  break;
@@ -37,21 +70,27 @@ export class Filter {
37
70
  case FilterOperator.ARRAY_CONTAINS_ANY_ELEMENT:
38
71
  case FilterOperator.ARRAY_EQUALS:
39
72
  if (!this.isArrayOfPrimitives(this.value) &&
40
- !(this.isObject(this.value) &&
41
- Object.keys(this.value).length === 1 &&
42
- this.isArrayOfPrimitives(Object.values(this.value)[0]))) {
73
+ !this.isValidSingleKeyObjectWithValue(this.value, (val) => this.isArrayOfPrimitives(val))) {
43
74
  throw new Error('For ARRAY_CONTAINS_ALL/ANY/EQUALS, value must be an Array<Primitive> or an object like { "path.to.array": [elements] }');
44
75
  }
45
76
  break;
46
77
  case FilterOperator.IN:
47
78
  case FilterOperator.NOT_IN:
79
+ case FilterOperator.SET_CONTAINS_ANY:
80
+ case FilterOperator.SET_CONTAINS_ALL:
48
81
  if (!this.isArrayOfPrimitives(this.value))
49
- throw new Error('Filter value must be an array of string, number, boolean, Date');
82
+ throw new Error(`Filter value for operator ${operator} must be an array of string, number, boolean, Date`);
83
+ break;
84
+ case FilterOperator.BETWEEN:
85
+ case FilterOperator.NOT_BETWEEN:
86
+ if (!this.isTupleOfTwoPrimitives(this.value)) {
87
+ throw new Error(`Filter value for operator ${operator} must be a tuple of two primitive values: [min, max]`);
88
+ }
50
89
  break;
51
90
  case FilterOperator.IS_NULL:
52
91
  case FilterOperator.IS_NOT_NULL:
53
92
  if (!this.isNull(this.value) && !this.isUndefined(this.value))
54
- throw new Error('Filter value must be null or undefined');
93
+ throw new Error(`Filter value for operator ${operator} must be null or undefined`);
55
94
  break;
56
95
  case FilterOperator.JSON_CONTAINS:
57
96
  case FilterOperator.JSON_NOT_CONTAINS:
@@ -62,32 +101,10 @@ export class Filter {
62
101
  throw new Error('Filter value must be an object where each value is a string, number, boolean, Date, null, an Array, or a Record<string,any>');
63
102
  }
64
103
  break;
104
+ default:
105
+ throw new Error(`Unhandled filter operator: ${operator}`);
65
106
  }
66
107
  }
67
- get field() {
68
- return this.primitive.field;
69
- }
70
- get operator() {
71
- return this.primitive.operator;
72
- }
73
- get value() {
74
- return this.primitive.value;
75
- }
76
- accept(visitor, currentAlias) {
77
- return visitor.visitFilter(this, currentAlias);
78
- }
79
- toPrimitive() {
80
- return this.primitive;
81
- }
82
- isString(value) {
83
- return typeof value === 'string';
84
- }
85
- isNumber(value) {
86
- return typeof value === 'number';
87
- }
88
- isBoolean(value) {
89
- return typeof value === 'boolean';
90
- }
91
108
  isArrayOfPrimitives(value) {
92
109
  return (Array.isArray(value) &&
93
110
  value.every((item) => {
@@ -97,6 +114,16 @@ export class Filter {
97
114
  this.isBoolean(item));
98
115
  }));
99
116
  }
117
+ isTupleOfTwoPrimitives(value) {
118
+ return (Array.isArray(value) &&
119
+ value.length === 2 &&
120
+ this.isPrimitiveFilterValue(value[0]) &&
121
+ !this.isNull(value[0]) &&
122
+ !this.isUndefined(value[0]) &&
123
+ this.isPrimitiveFilterValue(value[1]) &&
124
+ !this.isNull(value[1]) &&
125
+ !this.isUndefined(value[1]));
126
+ }
100
127
  isObject(value) {
101
128
  return (typeof value === 'object' &&
102
129
  !Array.isArray(value) &&
@@ -1 +1 @@
1
- {"version":3,"file":"filter.js","sourceRoot":"","sources":["../../../src/criteria/filter/filter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAS5D,MAAM,OAAO,MAAM;IAGY;IAA7B,YAA6B,SAAuC;QAAvC,cAAS,GAAT,SAAS,CAA8B;QAClE,QAAQ,SAAS,CAAC,QAAQ,EAAE,CAAC;YAC3B,KAAK,cAAc,CAAC,IAAI,CAAC;YACzB,KAAK,cAAc,CAAC,QAAQ,CAAC;YAC7B,KAAK,cAAc,CAAC,QAAQ,CAAC;YAC7B,KAAK,cAAc,CAAC,YAAY,CAAC;YACjC,KAAK,cAAc,CAAC,WAAW,CAAC;YAChC,KAAK,cAAc,CAAC,SAAS,CAAC;YAC9B,KAAK,cAAc,CAAC,YAAY,CAAC;YACjC,KAAK,cAAc,CAAC,gBAAgB;gBAClC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC/B,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;gBACxD,CAAC;gBACD,MAAM;YACR,KAAK,cAAc,CAAC,MAAM,CAAC;YAC3B,KAAK,cAAc,CAAC,UAAU,CAAC;YAC/B,KAAK,cAAc,CAAC,YAAY,CAAC;YACjC,KAAK,cAAc,CAAC,sBAAsB,CAAC;YAC3C,KAAK,cAAc,CAAC,SAAS,CAAC;YAC9B,KAAK,cAAc,CAAC,mBAAmB;gBACrC,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC;oBAC1C,MAAM,IAAI,KAAK,CACb,qEAAqE,CACtE,CAAC;gBACJ,MAAM;YACR,KAAK,cAAc,CAAC,sBAAsB;gBACxC,IACE,CAAC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC;oBACxC,CAAC,CACC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;wBACzB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC;wBACpC,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CACpE,EACD,CAAC;oBACD,MAAM,IAAI,KAAK,CACb,sHAAsH,CACvH,CAAC;gBACJ,CAAC;gBACD,MAAM;YACR,KAAK,cAAc,CAAC,2BAA2B,CAAC;YAChD,KAAK,cAAc,CAAC,0BAA0B,CAAC;YAC/C,KAAK,cAAc,CAAC,YAAY;gBAC9B,IACE,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC;oBACrC,CAAC,CACC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;wBACzB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC;wBACpC,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CACjE,EACD,CAAC;oBACD,MAAM,IAAI,KAAK,CACb,wHAAwH,CACzH,CAAC;gBACJ,CAAC;gBACD,MAAM;YACR,KAAK,cAAc,CAAC,EAAE,CAAC;YACvB,KAAK,cAAc,CAAC,MAAM;gBACxB,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC;oBACvC,MAAM,IAAI,KAAK,CACb,gEAAgE,CACjE,CAAC;gBACJ,MAAM;YACR,KAAK,cAAc,CAAC,OAAO,CAAC;YAC5B,KAAK,cAAc,CAAC,WAAW;gBAC7B,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;oBAC3D,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;gBAC5D,MAAM;YACR,KAAK,cAAc,CAAC,aAAa,CAAC;YAClC,KAAK,cAAc,CAAC,iBAAiB;gBACnC,IACE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;oBAC1B,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAC9B,CAAC,GAAG,EAAE,EAAE,CACN,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC;wBAChC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;wBAClB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CACrB,EACD,CAAC;oBACD,MAAM,IAAI,KAAK,CACb,6HAA6H,CAC9H,CAAC;gBACJ,CAAC;gBACD,MAAM;QACV,CAAC;IACH,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;IAC9B,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;IACjC,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;IAC9B,CAAC;IAED,MAAM,CAKJ,OAIC,EACD,YAAoB;QAEpB,OAAO,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IACjD,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IACO,QAAQ,CAAC,KAAU;QACzB,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC;IACnC,CAAC;IACO,QAAQ,CAAC,KAAU;QACzB,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC;IACnC,CAAC;IACO,SAAS,CAAC,KAAU;QAC1B,OAAO,OAAO,KAAK,KAAK,SAAS,CAAC;IACpC,CAAC;IACO,mBAAmB,CACzB,KAAU;QAEV,OAAO,CACL,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;YACpB,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE;gBACnB,OAAO,CACL,IAAI,YAAY,IAAI;oBACpB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;oBACnB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;oBACnB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CACrB,CAAC;YACJ,CAAC,CAAC,CACH,CAAC;IACJ,CAAC;IACO,QAAQ,CAAC,KAAU;QACzB,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;YACzB,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;YACrB,KAAK,KAAK,IAAI;YACd,KAAK,KAAK,SAAS,CACpB,CAAC;IACJ,CAAC;IACO,MAAM,CAAC,KAAU;QACvB,OAAO,KAAK,KAAK,IAAI,CAAC;IACxB,CAAC;IACO,WAAW,CAAC,KAAU;QAC5B,OAAO,KAAK,KAAK,SAAS,CAAC;IAC7B,CAAC;IACO,sBAAsB,CAAC,KAAU;QACvC,OAAO,CACL,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;YACpB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;YACpB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;YACrB,KAAK,YAAY,IAAI;YACrB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CACnB,CAAC;IACJ,CAAC;IACO,QAAQ,CAAC,KAAU;QACzB,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;YACzB,KAAK,KAAK,IAAI;YACd,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;YACrB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAC,CAC3D,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"filter.js","sourceRoot":"","sources":["../../../src/criteria/filter/filter.ts"],"names":[],"mappings":"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"}
@@ -9,25 +9,22 @@ export type PrimitiveFilterValue = string | number | boolean | Date | null;
9
9
  * Represents the value associated with a filter, strongly typed based on the {@link FilterOperator}.
10
10
  * @template Operator - The specific filter operator.
11
11
  */
12
- export type FilterValue<Operator extends FilterOperator> = Operator extends FilterOperator.LIKE | FilterOperator.NOT_LIKE | FilterOperator.CONTAINS | FilterOperator.NOT_CONTAINS | FilterOperator.STARTS_WITH | FilterOperator.ENDS_WITH | FilterOperator.SET_CONTAINS | FilterOperator.SET_NOT_CONTAINS ? string : Operator extends FilterOperator.EQUALS | FilterOperator.NOT_EQUALS | FilterOperator.GREATER_THAN | FilterOperator.GREATER_THAN_OR_EQUALS | FilterOperator.LESS_THAN | FilterOperator.LESS_THAN_OR_EQUALS ? PrimitiveFilterValue : Operator extends FilterOperator.IN | FilterOperator.NOT_IN ? Array<Exclude<PrimitiveFilterValue, null | undefined>> : Operator extends FilterOperator.ARRAY_CONTAINS_ELEMENT ? /**
12
+ export type FilterValue<Operator extends FilterOperator> = Operator extends FilterOperator.LIKE | FilterOperator.NOT_LIKE | FilterOperator.CONTAINS | FilterOperator.NOT_CONTAINS | FilterOperator.STARTS_WITH | FilterOperator.ENDS_WITH | FilterOperator.SET_CONTAINS | FilterOperator.SET_NOT_CONTAINS | FilterOperator.MATCHES_REGEX | FilterOperator.ILIKE | FilterOperator.NOT_ILIKE ? string : Operator extends FilterOperator.EQUALS | FilterOperator.NOT_EQUALS | FilterOperator.GREATER_THAN | FilterOperator.GREATER_THAN_OR_EQUALS | FilterOperator.LESS_THAN | FilterOperator.LESS_THAN_OR_EQUALS ? PrimitiveFilterValue : Operator extends FilterOperator.IN | FilterOperator.NOT_IN | FilterOperator.SET_CONTAINS_ANY | FilterOperator.SET_CONTAINS_ALL ? Array<Exclude<PrimitiveFilterValue, null | undefined>> : Operator extends FilterOperator.BETWEEN | FilterOperator.NOT_BETWEEN ? [
13
+ Exclude<PrimitiveFilterValue, null | undefined>,
14
+ Exclude<PrimitiveFilterValue, null | undefined>
15
+ ] : Operator extends FilterOperator.ARRAY_CONTAINS_ELEMENT ? /**
13
16
  * Expected value:
14
17
  * 1. A primitive value for direct array column comparison.
15
18
  * 2. An object `{ [jsonPath: string]: PrimitiveFilterValue }` for checking an element
16
19
  * within an array at a specific path inside a JSON column.
17
- * Example: `{ "tags": "admin" }` or `{ "$.tags": "admin" }`
18
- * Only one path-element pair is expected.
19
20
  */ PrimitiveFilterValue | {
20
21
  [key: string]: PrimitiveFilterValue;
21
22
  } : Operator extends FilterOperator.ARRAY_CONTAINS_ALL_ELEMENTS | FilterOperator.ARRAY_CONTAINS_ANY_ELEMENT | FilterOperator.ARRAY_EQUALS ? Array<Exclude<PrimitiveFilterValue, null | undefined>> | {
22
23
  [key: string]: Array<Exclude<PrimitiveFilterValue, null | undefined>>;
23
- } : Operator extends FilterOperator.IS_NULL | FilterOperator.IS_NOT_NULL ? /** Expected value: `null` or `undefined`. The actual value is often ignored by the translator for these operators. */ null | undefined : Operator extends FilterOperator.JSON_CONTAINS | FilterOperator.JSON_NOT_CONTAINS ? {
24
- [key: string]: PrimitiveFilterValue | Array<any> | Record<string, any>;
25
- } :
26
- /** Indicates an operator that is not explicitly handled by the FilterValue type definition.
27
- * This should ideally not be reached if all operators are covered.
28
- * A runtime error for unsupported operators should be handled by the translator.
29
- */
30
- never;
24
+ } : Operator extends FilterOperator.IS_NULL | FilterOperator.IS_NOT_NULL ? /** Expected value: `null` or `undefined`. The actual value is often ignored by the translator. */ null | undefined : Operator extends FilterOperator.JSON_CONTAINS | FilterOperator.JSON_NOT_CONTAINS ? {
25
+ [key: string]: // JSON path
26
+ PrimitiveFilterValue | Array<any> | Record<string, any>;
27
+ } : never;
31
28
  /**
32
29
  * Defines the structure for a single filter condition.
33
30
  * It specifies the field to filter on, the operator to use, and the value to compare against.
@@ -1 +1 @@
1
- {"version":3,"file":"filter-primitive.types.d.ts","sourceRoot":"","sources":["../../../../src/criteria/filter/types/filter-primitive.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChF,OAAO,KAAK,EACV,cAAc,EACd,aAAa,EACd,MAAM,6BAA6B,CAAC;AAErC;;;GAGG;AACH,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,IAAI,CAAC;AAE3E;;;GAGG;AACH,MAAM,MAAM,WAAW,CAAC,QAAQ,SAAS,cAAc,IAErD,QAAQ,SACJ,cAAc,CAAC,IAAI,GACnB,cAAc,CAAC,QAAQ,GACvB,cAAc,CAAC,QAAQ,GACvB,cAAc,CAAC,YAAY,GAC3B,cAAc,CAAC,WAAW,GAC1B,cAAc,CAAC,SAAS,GACxB,cAAc,CAAC,YAAY,GAC3B,cAAc,CAAC,gBAAgB,GAE/B,MAAM,GAEN,QAAQ,SACF,cAAc,CAAC,MAAM,GACrB,cAAc,CAAC,UAAU,GACzB,cAAc,CAAC,YAAY,GAC3B,cAAc,CAAC,sBAAsB,GACrC,cAAc,CAAC,SAAS,GACxB,cAAc,CAAC,mBAAmB,GAEtC,oBAAoB,GAEpB,QAAQ,SAAS,cAAc,CAAC,EAAE,GAAG,cAAc,CAAC,MAAM,GAExD,KAAK,CAAC,OAAO,CAAC,oBAAoB,EAAE,IAAI,GAAG,SAAS,CAAC,CAAC,GACtD,QAAQ,SAAS,cAAc,CAAC,sBAAsB,GASpD,AARA;;;;;;;KAOG,CACH,oBAAoB,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,oBAAoB,CAAA;CAAE,GAC9D,QAAQ,SACF,cAAc,CAAC,2BAA2B,GAC1C,cAAc,CAAC,0BAA0B,GACzC,cAAc,CAAC,YAAY,GAS7B,KAAK,CAAC,OAAO,CAAC,oBAAoB,EAAE,IAAI,GAAG,SAAS,CAAC,CAAC,GACpD;IACE,CAAC,GAAG,EAAE,MAAM,GAAG,KAAK,CAClB,OAAO,CAAC,oBAAoB,EAAE,IAAI,GAAG,SAAS,CAAC,CAChD,CAAC;CACH,GAEL,QAAQ,SACF,cAAc,CAAC,OAAO,GACtB,cAAc,CAAC,WAAW,GAE9B,AADA,sHAAsH,CACtH,IAAI,GAAG,SAAS,GAEhB,QAAQ,SACF,cAAc,CAAC,aAAa,GAC5B,cAAc,CAAC,iBAAiB,GAOpC;IACE,CACE,GAAG,EAAE,MAAM,GAEX,oBAAoB,GAClB,KAAK,CAAC,GAAG,CAAC,GACV,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CACzB;AAED;;;GAGG;AACH,KAAK,CAAC;AAExB;;;;;;GAMG;AACH,MAAM,WAAW,eAAe,CAC9B,KAAK,SAAS,aAAa,CAAC,cAAc,CAAC,EAC3C,QAAQ,SAAS,cAAc;IAE/B,oDAAoD;IACpD,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,qDAAqD;IACrD,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,gIAAgI;IAChI,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;CACvC;AAED;;;;;GAKG;AACH,KAAK,UAAU,CAAC,KAAK,SAAS,MAAM,IAChC,eAAe,CAAC,KAAK,EAAE,cAAc,CAAC,GACtC,oBAAoB,CAAC,KAAK,CAAC,CAAC;AAEhC;;;;;GAKG;AACH,MAAM,WAAW,oBAAoB,CACnC,KAAK,SAAS,MAAM,GAAG,aAAa,CAAC,cAAc,CAAC;IAEpD,6EAA6E;IAC7E,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAC;IAC1C,yFAAyF;IACzF,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;CAClD"}
1
+ {"version":3,"file":"filter-primitive.types.d.ts","sourceRoot":"","sources":["../../../../src/criteria/filter/types/filter-primitive.types.ts"],"names":[],"mappings":"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"}
@@ -13,8 +13,8 @@ export type { CriteriaSchema, FieldOfSchema, SelectedAliasOf, JoinRelationType,
13
13
  export type { Cursor } from './cursor.js';
14
14
  export type { FilterPrimitive, FilterGroupPrimitive, FilterValue, PrimitiveFilterValue, } from './filter/types/filter-primitive.types.js';
15
15
  export type { IFilterExpression } from './types/filter-expression.interface.js';
16
- export type { Filter } from './filter/filter.js';
17
- export type { FilterGroup } from './filter/filter-group.js';
16
+ export { Filter } from './filter/filter.js';
17
+ export { FilterGroup } from './filter/filter-group.js';
18
18
  export type { OrderByPrimitive } from './order/order.js';
19
19
  export type { Order } from './order/order.js';
20
20
  export type { PivotJoinInput, SimpleJoinInput, } from './types/join-input.types.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/criteria/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACzE,YAAY,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAGnE,YAAY,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAG3E,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAG5E,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,YAAY,EACV,cAAc,EACd,aAAa,EACb,eAAe,EACf,gBAAgB,EAChB,WAAW,GACZ,MAAM,yBAAyB,CAAC;AACjC,YAAY,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C,YAAY,EACV,eAAe,EACf,oBAAoB,EACpB,WAAW,EACX,oBAAoB,GACrB,MAAM,0CAA0C,CAAC;AAClD,YAAY,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAChF,YAAY,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,YAAY,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAE5D,YAAY,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACzD,YAAY,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAG9C,YAAY,EACV,cAAc,EACd,eAAe,GAChB,MAAM,6BAA6B,CAAC;AACrC,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC7E,YAAY,EACV,iBAAiB,EACjB,eAAe,EACf,yBAAyB,EACzB,iBAAiB,EACjB,0BAA0B,GAC3B,MAAM,+BAA+B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/criteria/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACzE,YAAY,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAGnE,YAAY,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAG3E,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAG5E,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,YAAY,EACV,cAAc,EACd,aAAa,EACb,eAAe,EACf,gBAAgB,EAChB,WAAW,GACZ,MAAM,yBAAyB,CAAC;AACjC,YAAY,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C,YAAY,EACV,eAAe,EACf,oBAAoB,EACpB,WAAW,EACX,oBAAoB,GACrB,MAAM,0CAA0C,CAAC;AAClD,YAAY,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAChF,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvD,YAAY,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACzD,YAAY,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAG9C,YAAY,EACV,cAAc,EACd,eAAe,GAChB,MAAM,6BAA6B,CAAC;AACrC,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC7E,YAAY,EACV,iBAAiB,EACjB,eAAe,EACf,yBAAyB,EACzB,iBAAiB,EACjB,0BAA0B,GAC3B,MAAM,+BAA+B,CAAC"}
@@ -10,4 +10,6 @@ export { OrderDirection } from './order/order.js';
10
10
  export { FilterOperator, LogicalOperator } from './types/operator.types.js';
11
11
  // --- Schema Definition Types & Helpers ---
12
12
  export { GetTypedCriteriaSchema } from './types/schema.types.js';
13
+ export { Filter } from './filter/filter.js';
14
+ export { FilterGroup } from './filter/filter-group.js';
13
15
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/criteria/index.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAMzE,4BAA4B;AAC5B,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAE5E,4CAA4C;AAC5C,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/criteria/index.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAMzE,4BAA4B;AAC5B,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAE5E,4CAA4C;AAC5C,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAiBjE,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC"}
@@ -1,20 +1,69 @@
1
+ /**
2
+ * Defines the possible directions for ordering query results.
3
+ */
1
4
  export declare const OrderDirection: {
5
+ /** Sorts results in ascending order. */
2
6
  readonly ASC: "ASC";
7
+ /** Sorts results in descending order. */
3
8
  readonly DESC: "DESC";
4
9
  };
10
+ /**
11
+ * Represents the direction of an order clause, either 'ASC' or 'DESC'.
12
+ */
5
13
  export type OrderDirection = keyof typeof OrderDirection;
14
+ /**
15
+ * Represents the primitive structure of an order by clause,
16
+ * specifying the field and direction.
17
+ * @template T - A string literal type representing valid field names for ordering. Defaults to `string`.
18
+ */
6
19
  export type OrderByPrimitive<T extends string = string> = {
20
+ /** The direction of the sort (ASC or DESC). */
7
21
  direction: OrderDirection;
22
+ /** The name of the field to order by. */
8
23
  field: T;
9
24
  };
25
+ /**
26
+ * Represents a single ordering rule for a query.
27
+ * It includes the field to order by, the direction (ASC/DESC),
28
+ * and an internal sequence ID to maintain stable sorting when multiple
29
+ * order rules are applied.
30
+ * @template T - A string literal type representing valid field names for ordering. Defaults to `string`.
31
+ */
10
32
  export declare class Order<T extends string = string> {
11
33
  protected readonly _direction: OrderDirection;
12
34
  protected readonly _field: T;
35
+ /**
36
+ * A unique, globally incrementing ID to ensure stable sorting order
37
+ * when multiple Order instances are created.
38
+ * @protected
39
+ */
13
40
  protected _sequenceId: number;
41
+ /**
42
+ * Creates an instance of Order.
43
+ * @param {OrderDirection} _direction - The direction of the sort (ASC or DESC).
44
+ * @param {T} _field - The name of the field to order by.
45
+ */
14
46
  constructor(_direction: OrderDirection, _field: T);
47
+ /**
48
+ * Gets the unique sequence ID of this order rule.
49
+ * Used to maintain a stable sort order when multiple orders are applied.
50
+ * @returns {number} The sequence ID.
51
+ */
15
52
  get sequenceId(): number;
53
+ /**
54
+ * Gets the name of the field to order by.
55
+ * @returns {T} The field name.
56
+ */
16
57
  get field(): T;
58
+ /**
59
+ * Gets the direction of the sort.
60
+ * @returns {OrderDirection} The order direction (ASC or DESC).
61
+ */
17
62
  get direction(): OrderDirection;
63
+ /**
64
+ * Converts the Order instance to its primitive representation.
65
+ * @returns {OrderByPrimitive<T>} The primitive object representing this order rule.
66
+ */
18
67
  toPrimitive(): OrderByPrimitive<T>;
19
68
  }
20
69
  //# sourceMappingURL=order.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"order.d.ts","sourceRoot":"","sources":["../../../src/criteria/order/order.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,cAAc;;;CAGjB,CAAC;AACX,MAAM,MAAM,cAAc,GAAG,MAAM,OAAO,cAAc,CAAC;AAGzD,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,IAAI;IACxD,SAAS,EAAE,cAAc,CAAC;IAC1B,KAAK,EAAE,CAAC,CAAC;CACV,CAAC;AAEF,qBAAa,KAAK,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM;IAGxC,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,cAAc;IAC7C,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;IAH9B,SAAS,CAAC,WAAW,EAAE,MAAM,CAAC;gBAET,UAAU,EAAE,cAAc,EAC1B,MAAM,EAAE,CAAC;IAM9B,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,IAAI,KAAK,IAAI,CAAC,CAEb;IAED,IAAI,SAAS,IAAI,cAAc,CAE9B;IAED,WAAW,IAAI,gBAAgB,CAAC,CAAC,CAAC;CAMnC"}
1
+ {"version":3,"file":"order.d.ts","sourceRoot":"","sources":["../../../src/criteria/order/order.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,cAAc;IACzB,wCAAwC;;IAExC,yCAAyC;;CAEjC,CAAC;AAEX;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,OAAO,cAAc,CAAC;AAIzD;;;;GAIG;AACH,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,IAAI;IACxD,+CAA+C;IAC/C,SAAS,EAAE,cAAc,CAAC;IAC1B,yCAAyC;IACzC,KAAK,EAAE,CAAC,CAAC;CACV,CAAC;AAEF;;;;;;GAMG;AACH,qBAAa,KAAK,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM;IAcxC,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,cAAc;IAC7C,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;IAd9B;;;;OAIG;IACH,SAAS,CAAC,WAAW,EAAE,MAAM,CAAC;IAE9B;;;;OAIG;gBAEkB,UAAU,EAAE,cAAc,EAC1B,MAAM,EAAE,CAAC;IAM9B;;;;OAIG;IACH,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED;;;OAGG;IACH,IAAI,KAAK,IAAI,CAAC,CAEb;IAED;;;OAGG;IACH,IAAI,SAAS,IAAI,cAAc,CAE9B;IAED;;;OAGG;IACH,WAAW,IAAI,gBAAgB,CAAC,CAAC,CAAC;CAMnC"}
@@ -1,27 +1,66 @@
1
+ /**
2
+ * Defines the possible directions for ordering query results.
3
+ */
1
4
  export const OrderDirection = {
5
+ /** Sorts results in ascending order. */
2
6
  ASC: 'ASC',
7
+ /** Sorts results in descending order. */
3
8
  DESC: 'DESC',
4
9
  };
5
10
  let globalOrderSequence = 0;
11
+ /**
12
+ * Represents a single ordering rule for a query.
13
+ * It includes the field to order by, the direction (ASC/DESC),
14
+ * and an internal sequence ID to maintain stable sorting when multiple
15
+ * order rules are applied.
16
+ * @template T - A string literal type representing valid field names for ordering. Defaults to `string`.
17
+ */
6
18
  export class Order {
7
19
  _direction;
8
20
  _field;
21
+ /**
22
+ * A unique, globally incrementing ID to ensure stable sorting order
23
+ * when multiple Order instances are created.
24
+ * @protected
25
+ */
9
26
  _sequenceId;
27
+ /**
28
+ * Creates an instance of Order.
29
+ * @param {OrderDirection} _direction - The direction of the sort (ASC or DESC).
30
+ * @param {T} _field - The name of the field to order by.
31
+ */
10
32
  constructor(_direction, _field) {
11
33
  this._direction = _direction;
12
34
  this._field = _field;
13
35
  globalOrderSequence++;
14
36
  this._sequenceId = globalOrderSequence;
15
37
  }
38
+ /**
39
+ * Gets the unique sequence ID of this order rule.
40
+ * Used to maintain a stable sort order when multiple orders are applied.
41
+ * @returns {number} The sequence ID.
42
+ */
16
43
  get sequenceId() {
17
44
  return this._sequenceId;
18
45
  }
46
+ /**
47
+ * Gets the name of the field to order by.
48
+ * @returns {T} The field name.
49
+ */
19
50
  get field() {
20
51
  return this._field;
21
52
  }
53
+ /**
54
+ * Gets the direction of the sort.
55
+ * @returns {OrderDirection} The order direction (ASC or DESC).
56
+ */
22
57
  get direction() {
23
58
  return this._direction;
24
59
  }
60
+ /**
61
+ * Converts the Order instance to its primitive representation.
62
+ * @returns {OrderByPrimitive<T>} The primitive object representing this order rule.
63
+ */
25
64
  toPrimitive() {
26
65
  return {
27
66
  direction: this._direction,
@@ -1 +1 @@
1
- {"version":3,"file":"order.js","sourceRoot":"","sources":["../../../src/criteria/order/order.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,GAAG,EAAE,KAAK;IACV,IAAI,EAAE,MAAM;CACJ,CAAC;AAGX,IAAI,mBAAmB,GAAW,CAAC,CAAC;AAMpC,MAAM,OAAO,KAAK;IAGK;IACA;IAHX,WAAW,CAAS;IAC9B,YACqB,UAA0B,EAC1B,MAAS;QADT,eAAU,GAAV,UAAU,CAAgB;QAC1B,WAAM,GAAN,MAAM,CAAG;QAE5B,mBAAmB,EAAE,CAAC;QACtB,IAAI,CAAC,WAAW,GAAG,mBAAmB,CAAC;IACzC,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED,WAAW;QACT,OAAO;YACL,SAAS,EAAE,IAAI,CAAC,UAAU;YAC1B,KAAK,EAAE,IAAI,CAAC,MAAM;SACnB,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"order.js","sourceRoot":"","sources":["../../../src/criteria/order/order.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,wCAAwC;IACxC,GAAG,EAAE,KAAK;IACV,yCAAyC;IACzC,IAAI,EAAE,MAAM;CACJ,CAAC;AAOX,IAAI,mBAAmB,GAAW,CAAC,CAAC;AAcpC;;;;;;GAMG;AACH,MAAM,OAAO,KAAK;IAcK;IACA;IAdrB;;;;OAIG;IACO,WAAW,CAAS;IAE9B;;;;OAIG;IACH,YACqB,UAA0B,EAC1B,MAAS;QADT,eAAU,GAAV,UAAU,CAAgB;QAC1B,WAAM,GAAN,MAAM,CAAG;QAE5B,mBAAmB,EAAE,CAAC;QACtB,IAAI,CAAC,WAAW,GAAG,mBAAmB,CAAC;IACzC,CAAC;IAED;;;;OAIG;IACH,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED;;;OAGG;IACH,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED;;;OAGG;IACH,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED;;;OAGG;IACH,WAAW;QACT,OAAO;YACL,SAAS,EAAE,IAAI,CAAC,UAAU;YAC1B,KAAK,EAAE,IAAI,CAAC,MAAM;SACnB,CAAC;IACJ,CAAC;CACF"}
@@ -25,8 +25,8 @@ export interface ICriteriaBase<TSchema extends CriteriaSchema, CurrentAlias exte
25
25
  * the next or previous set of results. It typically uses a combination of
26
26
  * unique and ordered fields.
27
27
  *
28
- * @param {Array<Omit<FilterPrimitive<FieldOfSchema<TSchema>>, 'operator'>>} filterPrimitive -
29
- * An array of exactly two filter primitives (without the operator)
28
+ * @param {Array<Omit<FilterPrimitive<FieldOfSchema<TSchema>>, 'operator'>>} filterPrimitives -
29
+ * An array of exactly one or two filter primitives (without the operator)
30
30
  * defining the fields and their values for the cursor.
31
31
  * Example: `[{ field: 'created_at', value: '2023-10-26T10:00:00Z' }, { field: 'uuid', value: 'some-uuid' }]`
32
32
  * @param {FilterOperator.GREATER_THAN | FilterOperator.LESS_THAN} operator -
@@ -36,12 +36,14 @@ export interface ICriteriaBase<TSchema extends CriteriaSchema, CurrentAlias exte
36
36
  * If operator is GREATER_THAN, order should typically be ASC.
37
37
  * If operator is LESS_THAN, order should typically be DESC.
38
38
  * @returns {ICriteriaBase<TSchema, CurrentAlias>} The current criteria instance for chaining.
39
- * @throws {Error} If filterPrimitive does not contain exactly 2 elements.
39
+ * @throws {Error} If filterPrimitive does not contain exactly 1 or 2 elements.
40
40
  * @throws {Error} If any cursor field is not defined in the schema.
41
41
  * @throws {Error} If any cursor value is null or undefined.
42
42
  * @throws {Error} If the two cursor fields are identical.
43
43
  */
44
- setCursor<Operator extends FilterOperator.GREATER_THAN | FilterOperator.LESS_THAN>(filterPrimitive: [
44
+ setCursor<Operator extends FilterOperator.GREATER_THAN | FilterOperator.LESS_THAN>(filterPrimitives: readonly [
45
+ Omit<FilterPrimitive<FieldOfSchema<TSchema>, Operator>, 'operator'>
46
+ ] | readonly [
45
47
  Omit<FilterPrimitive<FieldOfSchema<TSchema>, Operator>, 'operator'>,
46
48
  Omit<FilterPrimitive<FieldOfSchema<TSchema>, Operator>, 'operator'>
47
49
  ], operator: Operator, order: OrderDirection): ICriteriaBase<TSchema, CurrentAlias>;
@@ -1 +1 @@
1
- {"version":3,"file":"criteria.interface.d.ts","sourceRoot":"","sources":["../../../src/criteria/types/criteria.interface.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"criteria.interface.d.ts","sourceRoot":"","sources":["../../../src/criteria/types/criteria.interface.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,19 @@
1
1
  import type { FilterGroupPrimitive, FilterPrimitive } from '../filter/types/filter-primitive.types.js';
2
2
  import type { CriteriaSchema, FieldOfSchema } from './schema.types.js';
3
3
  import type { FilterOperator } from './operator.types.js';
4
+ /**
5
+ * Represents an expression that can be part of a filter query,
6
+ * such as an individual filter ({@link Filter}) or a group of filters ({@link FilterGroup}).
7
+ * This interface ensures that any filter expression can be converted
8
+ * to its primitive, serializable representation.
9
+ */
4
10
  export interface IFilterExpression {
11
+ /**
12
+ * Converts the filter expression instance to its primitive, serializable representation.
13
+ * This is useful for debugging, logging, or potentially storing criteria definitions.
14
+ * @returns {FilterPrimitive<FieldOfSchema<CriteriaSchema>, FilterOperator> | FilterGroupPrimitive}
15
+ * The primitive object representing this filter expression.
16
+ */
5
17
  toPrimitive(): FilterPrimitive<FieldOfSchema<CriteriaSchema>, FilterOperator> | FilterGroupPrimitive;
6
18
  }
7
19
  //# sourceMappingURL=filter-expression.interface.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"filter-expression.interface.d.ts","sourceRoot":"","sources":["../../../src/criteria/types/filter-expression.interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,eAAe,EAChB,MAAM,2CAA2C,CAAC;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D,MAAM,WAAW,iBAAiB;IAChC,WAAW,IACP,eAAe,CAAC,aAAa,CAAC,cAAc,CAAC,EAAE,cAAc,CAAC,GAC9D,oBAAoB,CAAC;CAC1B"}
1
+ {"version":3,"file":"filter-expression.interface.d.ts","sourceRoot":"","sources":["../../../src/criteria/types/filter-expression.interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,eAAe,EAChB,MAAM,2CAA2C,CAAC;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;;;OAKG;IACH,WAAW,IACP,eAAe,CAAC,aAAa,CAAC,cAAc,CAAC,EAAE,cAAc,CAAC,GAC9D,oBAAoB,CAAC;CAC1B"}
@@ -35,18 +35,55 @@ export declare enum FilterOperator {
35
35
  /** Checks if a string value does not contain a specific substring. */
36
36
  NOT_CONTAINS = "NOT_CONTAINS",
37
37
  /**
38
- * Checks if a field, representing a collection of predefined choices
39
- * (where multiple can be selected), contains a specific choice.
40
- * The specific database implementation might vary (e.g., MySQL SET type,
41
- * a text field with delimited values, or a JSON array).
38
+ * Checks if a field, representing a collection of values (e.g., MySQL SET type
39
+ * or a text field with comma-delimited values), contains a specific value.
40
+ * Expects a single value.
42
41
  */
43
42
  SET_CONTAINS = "SET_CONTAINS",
44
43
  /**
45
- * Checks if a field, representing a collection of predefined choices
46
- * (where multiple can be selected), does NOT contain a specific choice.
47
- * The specific database implementation might vary.
44
+ * Checks if a field, representing a collection of values (e.g., MySQL SET type
45
+ * or a text field with comma-delimited values), does NOT contain a specific value.
46
+ * Expects a single value.
48
47
  */
49
48
  SET_NOT_CONTAINS = "SET_NOT_CONTAINS",
49
+ /**
50
+ * Checks if a field, representing a collection of values (e.g., MySQL SET type
51
+ * or a text field with comma-delimited values), contains AT LEAST ONE of the specified values.
52
+ * Expects an array of values.
53
+ */
54
+ SET_CONTAINS_ANY = "SET_CONTAINS_ANY",
55
+ /**
56
+ * Checks if a field, representing a collection of values (e.g., MySQL SET type
57
+ * or a text field with comma-delimited values), contains ALL of the specified values.
58
+ * Expects an array of values.
59
+ */
60
+ SET_CONTAINS_ALL = "SET_CONTAINS_ALL",
61
+ /**
62
+ * Checks if a value is within a specified range (inclusive).
63
+ * Expects an array or tuple of two values: [min, max].
64
+ */
65
+ BETWEEN = "BETWEEN",
66
+ /**
67
+ * Checks if a value is outside a specified range (inclusive).
68
+ * Expects an array or tuple of two values: [min, max].
69
+ */
70
+ NOT_BETWEEN = "NOT_BETWEEN",
71
+ /**
72
+ * Checks if a string value matches a regular expression pattern.
73
+ * The specific regex syntax may depend on the database.
74
+ * Expects a string representing the regular expression.
75
+ */
76
+ MATCHES_REGEX = "MATCHES_REGEX",
77
+ /**
78
+ * Checks if a string value matches a pattern (case-insensitive).
79
+ * Expects a string for the pattern.
80
+ */
81
+ ILIKE = "ILIKE",
82
+ /**
83
+ * Checks if a string value does not match a pattern (case-insensitive).
84
+ * Expects a string for the pattern.
85
+ */
86
+ NOT_ILIKE = "NOT_ILIKE",
50
87
  /**
51
88
  * Checks if a JSON column contains a specific value or path.
52
89
  * The specific implementation depends on the database (e.g., JSON_CONTAINS in MySQL, @> in PostgreSQL for JSONB).
@@ -1 +1 @@
1
- {"version":3,"file":"operator.types.d.ts","sourceRoot":"","sources":["../../../src/criteria/types/operator.types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,oBAAY,cAAc;IACxB,2BAA2B;IAC3B,MAAM,MAAM;IACZ,6BAA6B;IAC7B,UAAU,OAAO;IACjB,iDAAiD;IACjD,YAAY,MAAM;IAClB,6DAA6D;IAC7D,sBAAsB,OAAO;IAC7B,8CAA8C;IAC9C,SAAS,MAAM;IACf,0DAA0D;IAC1D,mBAAmB,OAAO;IAC1B,wFAAwF;IACxF,IAAI,SAAS;IACb,yDAAyD;IACzD,QAAQ,aAAa;IACrB,6DAA6D;IAC7D,EAAE,OAAO;IACT,iEAAiE;IACjE,MAAM,WAAW;IACjB,iCAAiC;IACjC,OAAO,YAAY;IACnB,qCAAqC;IACrC,WAAW,gBAAgB;IAC3B,sGAAsG;IACtG,QAAQ,aAAa;IACrB,iEAAiE;IACjE,WAAW,gBAAgB;IAC3B,+DAA+D;IAC/D,SAAS,cAAc;IACvB,sEAAsE;IACtE,YAAY,iBAAiB;IAC7B;;;;;OAKG;IACH,YAAY,iBAAiB;IAC7B;;;;OAIG;IACH,gBAAgB,qBAAqB;IAErC;;;OAGG;IACH,aAAa,kBAAkB;IAC/B;;;OAGG;IACH,iBAAiB,sBAAsB;IAGvC;;;;OAIG;IACH,sBAAsB,2BAA2B;IACjD;;;OAGG;IACH,2BAA2B,gCAAgC;IAC3D;;;OAGG;IACH,0BAA0B,+BAA+B;IACzD;;;;OAIG;IACH,YAAY,iBAAiB;CAC9B;AAED;;GAEG;AACH,oBAAY,eAAe;IACzB,2EAA2E;IAC3E,GAAG,QAAQ;IACX,kFAAkF;IAClF,EAAE,OAAO;CACV"}
1
+ {"version":3,"file":"operator.types.d.ts","sourceRoot":"","sources":["../../../src/criteria/types/operator.types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,oBAAY,cAAc;IACxB,2BAA2B;IAC3B,MAAM,MAAM;IACZ,6BAA6B;IAC7B,UAAU,OAAO;IACjB,iDAAiD;IACjD,YAAY,MAAM;IAClB,6DAA6D;IAC7D,sBAAsB,OAAO;IAC7B,8CAA8C;IAC9C,SAAS,MAAM;IACf,0DAA0D;IAC1D,mBAAmB,OAAO;IAC1B,wFAAwF;IACxF,IAAI,SAAS;IACb,yDAAyD;IACzD,QAAQ,aAAa;IACrB,6DAA6D;IAC7D,EAAE,OAAO;IACT,iEAAiE;IACjE,MAAM,WAAW;IACjB,iCAAiC;IACjC,OAAO,YAAY;IACnB,qCAAqC;IACrC,WAAW,gBAAgB;IAC3B,sGAAsG;IACtG,QAAQ,aAAa;IACrB,iEAAiE;IACjE,WAAW,gBAAgB;IAC3B,+DAA+D;IAC/D,SAAS,cAAc;IACvB,sEAAsE;IACtE,YAAY,iBAAiB;IAC7B;;;;OAIG;IACH,YAAY,iBAAiB;IAC7B;;;;OAIG;IACH,gBAAgB,qBAAqB;IACrC;;;;OAIG;IACH,gBAAgB,qBAAqB;IACrC;;;;OAIG;IACH,gBAAgB,qBAAqB;IACrC;;;OAGG;IACH,OAAO,YAAY;IACnB;;;OAGG;IACH,WAAW,gBAAgB;IAC3B;;;;OAIG;IACH,aAAa,kBAAkB;IAC/B;;;OAGG;IACH,KAAK,UAAU;IACf;;;OAGG;IACH,SAAS,cAAc;IACvB;;;OAGG;IACH,aAAa,kBAAkB;IAC/B;;;OAGG;IACH,iBAAiB,sBAAsB;IACvC;;;;OAIG;IACH,sBAAsB,2BAA2B;IACjD;;;OAGG;IACH,2BAA2B,gCAAgC;IAC3D;;;OAGG;IACH,0BAA0B,+BAA+B;IACzD;;;;OAIG;IACH,YAAY,iBAAiB;CAC9B;AAED;;GAEG;AACH,oBAAY,eAAe;IACzB,2EAA2E;IAC3E,GAAG,QAAQ;IACX,kFAAkF;IAClF,EAAE,OAAO;CACV"}
@@ -36,18 +36,55 @@ export var FilterOperator;
36
36
  /** Checks if a string value does not contain a specific substring. */
37
37
  FilterOperator["NOT_CONTAINS"] = "NOT_CONTAINS";
38
38
  /**
39
- * Checks if a field, representing a collection of predefined choices
40
- * (where multiple can be selected), contains a specific choice.
41
- * The specific database implementation might vary (e.g., MySQL SET type,
42
- * a text field with delimited values, or a JSON array).
39
+ * Checks if a field, representing a collection of values (e.g., MySQL SET type
40
+ * or a text field with comma-delimited values), contains a specific value.
41
+ * Expects a single value.
43
42
  */
44
43
  FilterOperator["SET_CONTAINS"] = "SET_CONTAINS";
45
44
  /**
46
- * Checks if a field, representing a collection of predefined choices
47
- * (where multiple can be selected), does NOT contain a specific choice.
48
- * The specific database implementation might vary.
45
+ * Checks if a field, representing a collection of values (e.g., MySQL SET type
46
+ * or a text field with comma-delimited values), does NOT contain a specific value.
47
+ * Expects a single value.
49
48
  */
50
49
  FilterOperator["SET_NOT_CONTAINS"] = "SET_NOT_CONTAINS";
50
+ /**
51
+ * Checks if a field, representing a collection of values (e.g., MySQL SET type
52
+ * or a text field with comma-delimited values), contains AT LEAST ONE of the specified values.
53
+ * Expects an array of values.
54
+ */
55
+ FilterOperator["SET_CONTAINS_ANY"] = "SET_CONTAINS_ANY";
56
+ /**
57
+ * Checks if a field, representing a collection of values (e.g., MySQL SET type
58
+ * or a text field with comma-delimited values), contains ALL of the specified values.
59
+ * Expects an array of values.
60
+ */
61
+ FilterOperator["SET_CONTAINS_ALL"] = "SET_CONTAINS_ALL";
62
+ /**
63
+ * Checks if a value is within a specified range (inclusive).
64
+ * Expects an array or tuple of two values: [min, max].
65
+ */
66
+ FilterOperator["BETWEEN"] = "BETWEEN";
67
+ /**
68
+ * Checks if a value is outside a specified range (inclusive).
69
+ * Expects an array or tuple of two values: [min, max].
70
+ */
71
+ FilterOperator["NOT_BETWEEN"] = "NOT_BETWEEN";
72
+ /**
73
+ * Checks if a string value matches a regular expression pattern.
74
+ * The specific regex syntax may depend on the database.
75
+ * Expects a string representing the regular expression.
76
+ */
77
+ FilterOperator["MATCHES_REGEX"] = "MATCHES_REGEX";
78
+ /**
79
+ * Checks if a string value matches a pattern (case-insensitive).
80
+ * Expects a string for the pattern.
81
+ */
82
+ FilterOperator["ILIKE"] = "ILIKE";
83
+ /**
84
+ * Checks if a string value does not match a pattern (case-insensitive).
85
+ * Expects a string for the pattern.
86
+ */
87
+ FilterOperator["NOT_ILIKE"] = "NOT_ILIKE";
51
88
  /**
52
89
  * Checks if a JSON column contains a specific value or path.
53
90
  * The specific implementation depends on the database (e.g., JSON_CONTAINS in MySQL, @> in PostgreSQL for JSONB).
@@ -58,7 +95,6 @@ export var FilterOperator;
58
95
  * The specific implementation depends on the database.
59
96
  */
60
97
  FilterOperator["JSON_NOT_CONTAINS"] = "JSON_NOT_CONTAINS";
61
- // --- Array Operators ---
62
98
  /**
63
99
  * Checks if a column representing an array contains a specific element.
64
100
  * The underlying column could be a native array type (e.g., PostgreSQL)
@@ -1 +1 @@
1
- {"version":3,"file":"operator.types.js","sourceRoot":"","sources":["../../../src/criteria/types/operator.types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAN,IAAY,cAiFX;AAjFD,WAAY,cAAc;IACxB,2BAA2B;IAC3B,8BAAY,CAAA;IACZ,6BAA6B;IAC7B,mCAAiB,CAAA;IACjB,iDAAiD;IACjD,oCAAkB,CAAA;IAClB,6DAA6D;IAC7D,+CAA6B,CAAA;IAC7B,8CAA8C;IAC9C,iCAAe,CAAA;IACf,0DAA0D;IAC1D,4CAA0B,CAAA;IAC1B,wFAAwF;IACxF,+BAAa,CAAA;IACb,yDAAyD;IACzD,uCAAqB,CAAA;IACrB,6DAA6D;IAC7D,2BAAS,CAAA;IACT,iEAAiE;IACjE,mCAAiB,CAAA;IACjB,iCAAiC;IACjC,qCAAmB,CAAA;IACnB,qCAAqC;IACrC,6CAA2B,CAAA;IAC3B,sGAAsG;IACtG,uCAAqB,CAAA;IACrB,iEAAiE;IACjE,6CAA2B,CAAA;IAC3B,+DAA+D;IAC/D,yCAAuB,CAAA;IACvB,sEAAsE;IACtE,+CAA6B,CAAA;IAC7B;;;;;OAKG;IACH,+CAA6B,CAAA;IAC7B;;;;OAIG;IACH,uDAAqC,CAAA;IAErC;;;OAGG;IACH,iDAA+B,CAAA;IAC/B;;;OAGG;IACH,yDAAuC,CAAA;IAEvC,0BAA0B;IAC1B;;;;OAIG;IACH,mEAAiD,CAAA;IACjD;;;OAGG;IACH,6EAA2D,CAAA;IAC3D;;;OAGG;IACH,2EAAyD,CAAA;IACzD;;;;OAIG;IACH,+CAA6B,CAAA;AAC/B,CAAC,EAjFW,cAAc,KAAd,cAAc,QAiFzB;AAED;;GAEG;AACH,MAAM,CAAN,IAAY,eAKX;AALD,WAAY,eAAe;IACzB,2EAA2E;IAC3E,8BAAW,CAAA;IACX,kFAAkF;IAClF,4BAAS,CAAA;AACX,CAAC,EALW,eAAe,KAAf,eAAe,QAK1B"}
1
+ {"version":3,"file":"operator.types.js","sourceRoot":"","sources":["../../../src/criteria/types/operator.types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAN,IAAY,cAmHX;AAnHD,WAAY,cAAc;IACxB,2BAA2B;IAC3B,8BAAY,CAAA;IACZ,6BAA6B;IAC7B,mCAAiB,CAAA;IACjB,iDAAiD;IACjD,oCAAkB,CAAA;IAClB,6DAA6D;IAC7D,+CAA6B,CAAA;IAC7B,8CAA8C;IAC9C,iCAAe,CAAA;IACf,0DAA0D;IAC1D,4CAA0B,CAAA;IAC1B,wFAAwF;IACxF,+BAAa,CAAA;IACb,yDAAyD;IACzD,uCAAqB,CAAA;IACrB,6DAA6D;IAC7D,2BAAS,CAAA;IACT,iEAAiE;IACjE,mCAAiB,CAAA;IACjB,iCAAiC;IACjC,qCAAmB,CAAA;IACnB,qCAAqC;IACrC,6CAA2B,CAAA;IAC3B,sGAAsG;IACtG,uCAAqB,CAAA;IACrB,iEAAiE;IACjE,6CAA2B,CAAA;IAC3B,+DAA+D;IAC/D,yCAAuB,CAAA;IACvB,sEAAsE;IACtE,+CAA6B,CAAA;IAC7B;;;;OAIG;IACH,+CAA6B,CAAA;IAC7B;;;;OAIG;IACH,uDAAqC,CAAA;IACrC;;;;OAIG;IACH,uDAAqC,CAAA;IACrC;;;;OAIG;IACH,uDAAqC,CAAA;IACrC;;;OAGG;IACH,qCAAmB,CAAA;IACnB;;;OAGG;IACH,6CAA2B,CAAA;IAC3B;;;;OAIG;IACH,iDAA+B,CAAA;IAC/B;;;OAGG;IACH,iCAAe,CAAA;IACf;;;OAGG;IACH,yCAAuB,CAAA;IACvB;;;OAGG;IACH,iDAA+B,CAAA;IAC/B;;;OAGG;IACH,yDAAuC,CAAA;IACvC;;;;OAIG;IACH,mEAAiD,CAAA;IACjD;;;OAGG;IACH,6EAA2D,CAAA;IAC3D;;;OAGG;IACH,2EAAyD,CAAA;IACzD;;;;OAIG;IACH,+CAA6B,CAAA;AAC/B,CAAC,EAnHW,cAAc,KAAd,cAAc,QAmHzB;AAED;;GAEG;AACH,MAAM,CAAN,IAAY,eAKX;AALD,WAAY,eAAe;IACzB,2EAA2E;IAC3E,8BAAW,CAAA;IACX,kFAAkF;IAClF,4BAAS,CAAA;AACX,CAAC,EALW,eAAe,KAAf,eAAe,QAK1B"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nulledexp/translatable-criteria",
3
- "version": "1.0.3",
3
+ "version": "1.1.0",
4
4
  "license": "MIT",
5
5
  "description": "A TypeScript library for building data-source agnostic, translatable query criteria. Define complex filtering, ordering, and join logic in a structured, type-safe way, then translate it to your specific data source using custom translators.",
6
6
  "keywords": [