@nulledexp/translatable-criteria 1.2.0 → 2.0.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 (71) hide show
  1. package/README.md +89 -85
  2. package/dist/criteria/criteria-factory.d.ts +6 -5
  3. package/dist/criteria/criteria-factory.d.ts.map +1 -1
  4. package/dist/criteria/criteria-factory.js +8 -8
  5. package/dist/criteria/criteria-factory.js.map +1 -1
  6. package/dist/criteria/criteria-join-manager.js.map +1 -1
  7. package/dist/criteria/criteria.d.ts +45 -35
  8. package/dist/criteria/criteria.d.ts.map +1 -1
  9. package/dist/criteria/criteria.js +80 -69
  10. package/dist/criteria/criteria.js.map +1 -1
  11. package/dist/criteria/cursor.d.ts +15 -0
  12. package/dist/criteria/cursor.d.ts.map +1 -1
  13. package/dist/criteria/cursor.js +22 -0
  14. package/dist/criteria/cursor.js.map +1 -1
  15. package/dist/criteria/filter/filter-group.d.ts +7 -1
  16. package/dist/criteria/filter/filter-group.d.ts.map +1 -1
  17. package/dist/criteria/filter/filter-group.js +12 -3
  18. package/dist/criteria/filter/filter-group.js.map +1 -1
  19. package/dist/criteria/filter/filter.d.ts +3 -3
  20. package/dist/criteria/filter/filter.d.ts.map +1 -1
  21. package/dist/criteria/filter/filter.js +37 -14
  22. package/dist/criteria/filter/filter.js.map +1 -1
  23. package/dist/criteria/filter/types/filter-primitive.types.d.ts +16 -6
  24. package/dist/criteria/filter/types/filter-primitive.types.d.ts.map +1 -1
  25. package/dist/criteria/index.d.ts +2 -2
  26. package/dist/criteria/index.d.ts.map +1 -1
  27. package/dist/criteria/index.js.map +1 -1
  28. package/dist/criteria/join/inner.join-criteria.d.ts +10 -17
  29. package/dist/criteria/join/inner.join-criteria.d.ts.map +1 -1
  30. package/dist/criteria/join/inner.join-criteria.js +11 -18
  31. package/dist/criteria/join/inner.join-criteria.js.map +1 -1
  32. package/dist/criteria/join/left.join-criteria.d.ts +4 -4
  33. package/dist/criteria/join/left.join-criteria.d.ts.map +1 -1
  34. package/dist/criteria/join/left.join-criteria.js +5 -5
  35. package/dist/criteria/join/left.join-criteria.js.map +1 -1
  36. package/dist/criteria/join/outer.join-criteria.d.ts +13 -16
  37. package/dist/criteria/join/outer.join-criteria.d.ts.map +1 -1
  38. package/dist/criteria/join/outer.join-criteria.js +14 -17
  39. package/dist/criteria/join/outer.join-criteria.js.map +1 -1
  40. package/dist/criteria/order/order.d.ts +18 -1
  41. package/dist/criteria/order/order.d.ts.map +1 -1
  42. package/dist/criteria/order/order.js +21 -1
  43. package/dist/criteria/order/order.js.map +1 -1
  44. package/dist/criteria/root.criteria.d.ts +6 -16
  45. package/dist/criteria/root.criteria.d.ts.map +1 -1
  46. package/dist/criteria/root.criteria.js +4 -14
  47. package/dist/criteria/root.criteria.js.map +1 -1
  48. package/dist/criteria/translator/criteria-translator.d.ts +23 -32
  49. package/dist/criteria/translator/criteria-translator.d.ts.map +1 -1
  50. package/dist/criteria/translator/criteria-translator.js +5 -24
  51. package/dist/criteria/translator/criteria-translator.js.map +1 -1
  52. package/dist/criteria/types/criteria.interface.d.ts +35 -22
  53. package/dist/criteria/types/criteria.interface.d.ts.map +1 -1
  54. package/dist/criteria/types/criteria.interface.js.map +1 -1
  55. package/dist/criteria/types/join-parameter.types.d.ts +20 -4
  56. package/dist/criteria/types/join-parameter.types.d.ts.map +1 -1
  57. package/dist/criteria/types/join-utility.types.d.ts +25 -31
  58. package/dist/criteria/types/join-utility.types.d.ts.map +1 -1
  59. package/dist/criteria/types/manager.interface.d.ts +3 -3
  60. package/dist/criteria/types/manager.interface.d.ts.map +1 -1
  61. package/dist/criteria/types/operator.types.d.ts +92 -86
  62. package/dist/criteria/types/operator.types.d.ts.map +1 -1
  63. package/dist/criteria/types/operator.types.js +91 -85
  64. package/dist/criteria/types/operator.types.js.map +1 -1
  65. package/dist/criteria/types/schema.types.d.ts +107 -41
  66. package/dist/criteria/types/schema.types.d.ts.map +1 -1
  67. package/dist/criteria/types/schema.types.js +38 -11
  68. package/dist/criteria/types/schema.types.js.map +1 -1
  69. package/dist/criteria/types/visitor-interface.types.d.ts +33 -12
  70. package/dist/criteria/types/visitor-interface.types.d.ts.map +1 -1
  71. package/package.json +1 -1
@@ -9,11 +9,8 @@ import { FilterOperator } from './types/operator.types.js';
9
9
  * Concrete criteria types (e.g., RootCriteria, JoinCriteria) will extend this class.
10
10
  *
11
11
  * @template TSchema - The schema definition for the entity this criteria operates on.
12
- * @template CurrentAlias - The selected alias for the entity from its schema.
13
12
  */
14
13
  export class Criteria {
15
- schema;
16
- _alias;
17
14
  _filterManager = new CriteriaFilterManager();
18
15
  _joinManager = new CriteriaJoinManager();
19
16
  _source_name;
@@ -30,24 +27,46 @@ export class Criteria {
30
27
  * @protected
31
28
  */
32
29
  _cursor;
30
+ _schema;
33
31
  /**
34
32
  * Initializes a new instance of the Criteria class.
35
- * @param {TSchema} schema - The schema definition for the entity.
36
- * @param {CurrentAlias} _alias - The alias to use for this entity in the query.
37
- * @throws {Error} If the provided alias is not supported by the schema.
33
+ * @param {ValidSchema<TSchema>} schema - The schema definition for the entity.
34
+ * @throws {Error} If the schema's identifier_field is not one of its defined fields.
38
35
  * @protected
39
36
  */
40
- constructor(schema, _alias) {
41
- this.schema = schema;
42
- this._alias = _alias;
43
- if (!schema.alias.includes(this._alias))
44
- throw new Error(`Unsupported alia ${this._alias} for schema ${schema.source_name}`);
37
+ constructor(schema) {
38
+ if (typeof schema === 'string') {
39
+ throw new Error(`Invalid Schema: ${schema}`);
40
+ }
41
+ if (!schema.fields.includes(schema.identifier_field)) {
42
+ throw new Error(`Schema identifier_field '${String(schema.identifier_field)}' must be one of the schema's defined fields. Schema: ${schema.source_name}`);
43
+ }
44
+ this._schema = schema;
45
45
  this._source_name = schema.source_name;
46
46
  }
47
+ get schema() {
48
+ return { ...this._schema };
49
+ }
50
+ /**
51
+ * Gets the metadata associated with the root schema of this criteria.
52
+ * @returns {TSchema['metadata']} The metadata object from the schema, which can be undefined.
53
+ * @remarks This is intended primarily for use by translators.
54
+ */
55
+ get schemaMetadata() {
56
+ return this.schema.metadata;
57
+ }
58
+ /**
59
+ * Gets the name of the identifier field for the current schema.
60
+ * @returns {FieldOfSchema<TSchema>} The name of the identifier field.
61
+ */
62
+ get identifierField() {
63
+ return this.schema.identifier_field;
64
+ }
47
65
  /**
48
66
  * Gets the currently selected fields.
49
- * If `_selectAll` is true, it returns all fields from the schema.
50
- * Otherwise, it returns the fields explicitly set via `setSelect`.
67
+ * If `_selectAll` is true (default or after `resetSelect()`), it returns all fields from the schema.
68
+ * If `_selectAll` is false (after `setSelect()`), it returns the fields explicitly set by the user,
69
+ * plus the schema's `identifier_field` (which is added implicitly by `setSelect`).
51
70
  * @returns {Array<FieldOfSchema<TSchema>>} An array of selected field names.
52
71
  */
53
72
  get select() {
@@ -58,7 +77,7 @@ export class Criteria {
58
77
  }
59
78
  /**
60
79
  * Resets the selection to include all fields from the schema.
61
- * Subsequent calls to `get select()` will return all schema fields
80
+ * Later calls to `get select()` will return all schema fields
62
81
  * until `setSelect()` is called again.
63
82
  * @returns {this} The current criteria instance for chaining.
64
83
  */
@@ -77,6 +96,9 @@ export class Criteria {
77
96
  /**
78
97
  * Specifies which fields to select for the entity.
79
98
  * Calling this method sets `selectAll` to false.
99
+ * The schema's `identifier_field` will always be included in the selection
100
+ * if it's not already present in `selectFields`.
101
+ * If `selectFields` is empty, only the `identifier_field` will be selected.
80
102
  * @param {Array<FieldOfSchema<TSchema>>} selectFields - An array of field names to select.
81
103
  * @returns {this} The current criteria instance for chaining.
82
104
  * @throws {Error} If any of the specified fields are not defined in the schema.
@@ -85,10 +107,9 @@ export class Criteria {
85
107
  for (const field of selectFields) {
86
108
  this.assetFieldOnSchema(field);
87
109
  }
88
- if (selectFields.length !== this.schema.fields.length) {
89
- this._selectAll = false;
90
- this._select = new Set(selectFields);
91
- }
110
+ this._selectAll = false;
111
+ this._select = new Set(selectFields);
112
+ this._select.add(this.schema.identifier_field);
92
113
  return this;
93
114
  }
94
115
  /**
@@ -140,7 +161,7 @@ export class Criteria {
140
161
  * @returns {CurrentAlias} The alias string.
141
162
  */
142
163
  get alias() {
143
- return this._alias;
164
+ return this.schema.alias;
144
165
  }
145
166
  /**
146
167
  * Sets the maximum number of records to return (LIMIT).
@@ -186,12 +207,13 @@ export class Criteria {
186
207
  * Multiple calls will append new ordering rules.
187
208
  * @param {FieldOfSchema<TSchema>} field - The field to order by.
188
209
  * @param {OrderDirection} direction - The direction of the ordering (ASC or DESC).
210
+ * @param {boolean} [nullFirst=false] - If true, null values will be ordered first.
189
211
  * @returns {this} The current criteria instance for chaining.
190
212
  * @throws {Error} If the specified field is not defined in the schema.
191
213
  */
192
- orderBy(field, direction) {
214
+ orderBy(field, direction, nullFirst = false) {
193
215
  this.assetFieldOnSchema(field);
194
- this._orders.push(new Order(direction, field));
216
+ this._orders.push(new Order(direction, field, nullFirst));
195
217
  return this;
196
218
  }
197
219
  /**
@@ -236,68 +258,57 @@ export class Criteria {
236
258
  return this;
237
259
  }
238
260
  /**
239
- * Adds a join to another criteria.
261
+ * Adds a join to another criteria. This method is fully type-safe.
262
+ * The `joinAlias` argument provides autocompletion for all valid relation aliases defined in the schema.
263
+ * The `criteriaToJoin` argument is then validated to ensure its `source_name` matches the one
264
+ * configured for the chosen `joinAlias`, providing clear, compile-time error messages if they mismatch.
265
+ *
240
266
  * @template TJoinSchema - The schema of the entity to join.
241
- * @template TJoinedCriteriaAlias - The alias for the joined entity.
242
- * @template TMatchingJoinConfig - The specific join configuration from the parent schema that matches the joined
243
- * alias.
244
- * @param {JoinCriteriaParameterType<TSchema, TJoinSchema, TJoinedCriteriaAlias, TMatchingJoinConfig>} criteriaToJoin
245
- * The criteria instance representing the entity to join (e.g., `InnerJoinCriteria`, `LeftJoinCriteria`).
246
- * @param {JoinParameterType<TSchema, TJoinSchema, TMatchingJoinConfig>} joinParameter
247
- * The parameters defining how the join should be performed (e.g., fields for simple join, pivot table details for
248
- * many-to-many).
267
+ * @template SpecificRelationAlias - The literal type of the relation alias being used for the join.
268
+ * @param {SpecificRelationAlias} joinAlias - The specific alias defined in the parent schema's `relations` array for
269
+ * this relation.
270
+ * @param {JoinCriteriaType<TSchema, TJoinSchema, SpecificRelationAlias>} criteriaToJoin - The criteria instance
271
+ * representing the entity to join (e.g., `InnerJoinCriteria`).
272
+ * @param {boolean} [withSelect=true] - If true (default), the joined entity's fields will be included in the final
273
+ * selection. If false, the join will only be used for filtering and its fields will not be selected.
249
274
  * @returns {this} The current criteria instance for chaining.
250
- * @throws {Error} If `criteriaToJoin` is a string (which is invalid).
251
- * @throws {Error} If `parent_field` in `joinParameter` (or `parent_field.reference` for pivot joins) is not defined
252
- * in the parent schema.
253
- * @throws {Error} If the join configuration for the given `criteriaToJoin.alias` is not found in the parent schema's
254
- * `joins` array.
255
- * @throws {Error} If `joinParameter` is invalid for the `relation_type` defined in the schema (e.g., using
256
- * simple join input for many-to-many or vice-versa).
257
275
  */
258
- join(criteriaToJoin, joinParameter) {
276
+ join(joinAlias, criteriaToJoin, withSelect = true) {
259
277
  if (typeof criteriaToJoin === 'string') {
260
278
  throw new Error(`Invalid criteriaToJoin: ${criteriaToJoin}`);
261
279
  }
262
- typeof joinParameter.parent_field === 'object'
263
- ? this.assetFieldOnSchema(joinParameter.parent_field.reference)
264
- : this.assetFieldOnSchema(joinParameter.parent_field);
265
- const joinConfig = this.schema.joins.find((join) => join.alias === criteriaToJoin.alias);
266
- if (!joinConfig) {
267
- throw new Error(`Join configuration for alias '${String(criteriaToJoin.alias)}' not found in schema '${this.schema.source_name}'.`);
280
+ const relation = this.schema.relations.find((r) => r.relation_alias === joinAlias);
281
+ if (!relation) {
282
+ throw new Error(`Join configuration for '${String(joinAlias)}' not found in schema '${this.schema.source_name}'.`);
268
283
  }
269
- this.assertIsValidJoinOptions(joinConfig, joinParameter);
270
- const fullJoinParameters = {
271
- ...joinParameter,
284
+ const baseParameters = {
285
+ with_select: withSelect,
272
286
  parent_alias: this.alias,
273
287
  parent_source_name: this.sourceName,
274
- relation_type: joinConfig.relation_type,
275
- join_metadata: this.schema.joins.find((join) => join.alias === criteriaToJoin.alias)
276
- ?.metadata ?? {},
288
+ relation_alias: relation.relation_alias,
289
+ parent_identifier: this.identifierField,
290
+ relation_type: relation.relation_type,
291
+ join_metadata: relation.metadata ?? {},
277
292
  parent_schema_metadata: this.schema.metadata ?? {},
278
293
  };
279
- this._joinManager.addJoin(criteriaToJoin, fullJoinParameters);
280
- return this;
281
- }
282
- assertIsValidJoinOptions(joinConfig, joinParameter) {
283
- const isPivotFieldObject = (field) => {
284
- return (typeof field === 'object' &&
285
- field !== null &&
286
- 'pivot_field' in field &&
287
- 'reference' in field);
288
- };
289
- if (joinConfig.relation_type === 'many_to_many') {
290
- if (!isPivotFieldObject(joinParameter.parent_field) ||
291
- !isPivotFieldObject(joinParameter.join_field)) {
292
- throw new Error(`Invalid JoinOptions for 'many_to_many' join. Expected parent_field and join_field to be objects with 'pivot_field' and 'reference' properties. Alias: '${String(joinConfig.alias)}'`);
293
- }
294
+ let fullJoinParameters;
295
+ if (relation.relation_type === 'many_to_many') {
296
+ fullJoinParameters = {
297
+ ...baseParameters,
298
+ pivot_source_name: relation.pivot_source_name,
299
+ local_field: relation.local_field,
300
+ relation_field: relation.relation_field,
301
+ };
294
302
  }
295
303
  else {
296
- if (typeof joinParameter.parent_field !== 'string' ||
297
- typeof joinParameter.join_field !== 'string') {
298
- throw new Error(`Invalid JoinOptions for '${joinConfig.relation_type}' join. Expected parent_field and join_field to be strings. Alias: '${String(joinConfig.alias)}'`);
299
- }
304
+ fullJoinParameters = {
305
+ ...baseParameters,
306
+ local_field: relation.local_field,
307
+ relation_field: relation.relation_field,
308
+ };
300
309
  }
310
+ this._joinManager.addJoin(criteriaToJoin, fullJoinParameters);
311
+ return this;
301
312
  }
302
313
  /**
303
314
  * Gets the current cursor configuration, if set.
@@ -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":"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"}
@@ -11,6 +11,13 @@ import { FilterOperator } from './types/operator.types.js';
11
11
  * @template Operator - The specific comparison operator for the cursor (GREATER_THAN or LESS_THAN).
12
12
  */
13
13
  export declare class Cursor<TFields extends string, Operator extends FilterOperator.GREATER_THAN | FilterOperator.LESS_THAN> {
14
+ /**
15
+ * A unique, globally incrementing ID. This is used by translators to maintain
16
+ * a stable sort order when merging cursor logic from multiple `Criteria`
17
+ * instances (e.g., a root criteria and its joins).
18
+ * @protected
19
+ */
20
+ protected _sequenceId: number;
14
21
  /**
15
22
  * An array of one or two {@link Filter} instances that define the cursor's position.
16
23
  * - A single filter is used for simple cursor pagination (e.g., based on `created_at`).
@@ -40,5 +47,13 @@ export declare class Cursor<TFields extends string, Operator extends FilterOpera
40
47
  Omit<FilterPrimitive<TFields, Operator>, 'operator'>,
41
48
  Omit<FilterPrimitive<TFields, Operator>, 'operator'>
42
49
  ] | readonly [Omit<FilterPrimitive<TFields, Operator>, 'operator'>], operator: Operator, order: OrderDirection);
50
+ /**
51
+ * Gets the unique sequence ID of this cursor configuration.
52
+ * This ID is used to maintain a stable application order when cursor
53
+ * logic is defined across multiple related criteria (e.g., in joins).
54
+ * @returns {number} The sequence ID.
55
+ */
56
+ get sequenceId(): number;
57
+ get operator(): Operator;
43
58
  }
44
59
  //# sourceMappingURL=cursor.d.ts.map
@@ -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;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
+ {"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;AAG3D;;;;;;;GAOG;AACH,qBAAa,MAAM,CACjB,OAAO,SAAS,MAAM,EACtB,QAAQ,SAAS,cAAc,CAAC,YAAY,GAAG,cAAc,CAAC,SAAS;IAEvE;;;;;OAKG;IACH,SAAS,CAAC,WAAW,EAAE,MAAM,CAAC;IAC9B;;;;;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;IAkCvB;;;;;OAKG;IACH,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,IAAI,QAAQ,aAEX;CACF"}
@@ -1,6 +1,7 @@
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
+ let globalCursorSequence = 0;
4
5
  /**
5
6
  * Represents the configuration for cursor-based pagination.
6
7
  * A cursor defines a point in a sorted dataset from which to fetch
@@ -10,6 +11,13 @@ import { FilterOperator } from './types/operator.types.js';
10
11
  * @template Operator - The specific comparison operator for the cursor (GREATER_THAN or LESS_THAN).
11
12
  */
12
13
  export class Cursor {
14
+ /**
15
+ * A unique, globally incrementing ID. This is used by translators to maintain
16
+ * a stable sort order when merging cursor logic from multiple `Criteria`
17
+ * instances (e.g., a root criteria and its joins).
18
+ * @protected
19
+ */
20
+ _sequenceId;
13
21
  /**
14
22
  * An array of one or two {@link Filter} instances that define the cursor's position.
15
23
  * - A single filter is used for simple cursor pagination (e.g., based on `created_at`).
@@ -52,8 +60,22 @@ export class Cursor {
52
60
  if (!filterArray[0]) {
53
61
  throw new Error('Cursor filters must be defined');
54
62
  }
63
+ globalCursorSequence++;
64
+ this._sequenceId = globalCursorSequence;
55
65
  this.filters = filterArray;
56
66
  this.order = order;
57
67
  }
68
+ /**
69
+ * Gets the unique sequence ID of this cursor configuration.
70
+ * This ID is used to maintain a stable application order when cursor
71
+ * logic is defined across multiple related criteria (e.g., in joins).
72
+ * @returns {number} The sequence ID.
73
+ */
74
+ get sequenceId() {
75
+ return this._sequenceId;
76
+ }
77
+ get operator() {
78
+ return this.filters[0].operator;
79
+ }
58
80
  }
59
81
  //# sourceMappingURL=cursor.js.map
@@ -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;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,EAAE,CAAC;gBAC/B,MAAM,IAAI,KAAK,CACb,0BAA0B,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,8DAA8D,CAC7G,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
+ {"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,IAAI,oBAAoB,GAAW,CAAC,CAAC;AACrC;;;;;;;GAOG;AACH,MAAM,OAAO,MAAM;IAIjB;;;;;OAKG;IACO,WAAW,CAAS;IAC9B;;;;;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,EAAE,CAAC;gBAC/B,MAAM,IAAI,KAAK,CACb,0BAA0B,MAAM,CAC9B,MAAM,CAAC,KAAK,CACb,8DAA8D,CAChE,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,oBAAoB,EAAE,CAAC;QACvB,IAAI,CAAC,WAAW,GAAG,oBAAoB,CAAC;QACxC,IAAI,CAAC,OAAO,GAAG,WAAkC,CAAC;QAClD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED;;;;;OAKG;IACH,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;IAClC,CAAC;CACF"}
@@ -13,6 +13,12 @@ export declare class FilterGroup<T extends string = string> implements IFilterEx
13
13
  toPrimitive(): FilterGroupPrimitive<T>;
14
14
  addAnd(filterPrimitive: FilterPrimitive<T, FilterOperator>): FilterGroup<T>;
15
15
  addOr(filterPrimitive: FilterPrimitive<T, FilterOperator>): FilterGroup<T>;
16
- accept<TranslationContext, TranslationOutput = TranslationContext>(visitor: ICriteriaVisitor<TranslationContext, TranslationOutput>, currentAlias: string, context: TranslationContext): TranslationOutput;
16
+ /**
17
+ * Accepts a visitor and calls the appropriate visit method based on the logical operator.
18
+ * @param visitor The visitor implementation.
19
+ * @param currentAlias The alias of the current entity being processed.
20
+ * @param context The mutable context object for the translation.
21
+ */
22
+ accept<TranslationContext>(visitor: ICriteriaVisitor<TranslationContext>, currentAlias: string, context: TranslationContext): void;
17
23
  }
18
24
  //# sourceMappingURL=filter-group.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"filter-group.d.ts","sourceRoot":"","sources":["../../../src/criteria/filter/filter-group.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7E,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yCAAyC,CAAC;AACjF,OAAO,KAAK,EACV,oBAAoB,EACpB,eAAe,EAChB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AAE5E,qBAAa,WAAW,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,CAChD,YAAW,iBAAiB;IAE5B,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAkB;IACnD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAErB;gBAEU,oBAAoB,EAAE,oBAAoB,CAAC,CAAC,CAAC;IAYzD,IAAI,KAAK,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC,EAAE,cAAc,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,CAErE;IAED,IAAI,eAAe,IAAI,eAAe,CAErC;IAED,MAAM,CAAC,aAAa,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,EAC5C,eAAe,EAAE,eAAe,CAAC,CAAC,EAAE,cAAc,CAAC,GAClD,WAAW,CAAC,CAAC,CAAC;IAOjB,WAAW,IAAI,oBAAoB,CAAC,CAAC,CAAC;IAOtC,MAAM,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC,EAAE,cAAc,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC;IAoC3E,KAAK,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC,EAAE,cAAc,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC;IAmC1E,MAAM,CAAC,kBAAkB,EAAE,iBAAiB,GAAG,kBAAkB,EAC/D,OAAO,EAAE,gBAAgB,CAAC,kBAAkB,EAAE,iBAAiB,CAAC,EAChE,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,kBAAkB,GAC1B,iBAAiB;CAKrB"}
1
+ {"version":3,"file":"filter-group.d.ts","sourceRoot":"","sources":["../../../src/criteria/filter/filter-group.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7E,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yCAAyC,CAAC;AACjF,OAAO,KAAK,EACV,oBAAoB,EACpB,eAAe,EAChB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AAE5E,qBAAa,WAAW,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,CAChD,YAAW,iBAAiB;IAE5B,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAkB;IACnD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAErB;gBAEU,oBAAoB,EAAE,oBAAoB,CAAC,CAAC,CAAC;IAYzD,IAAI,KAAK,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC,EAAE,cAAc,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,CAErE;IAED,IAAI,eAAe,IAAI,eAAe,CAErC;WAEa,aAAa,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,EACnD,eAAe,EAAE,eAAe,CAAC,CAAC,EAAE,cAAc,CAAC,GAClD,WAAW,CAAC,CAAC,CAAC;IAOV,WAAW,IAAI,oBAAoB,CAAC,CAAC,CAAC;IAOtC,MAAM,CACX,eAAe,EAAE,eAAe,CAAC,CAAC,EAAE,cAAc,CAAC,GAClD,WAAW,CAAC,CAAC,CAAC;IAoCV,KAAK,CACV,eAAe,EAAE,eAAe,CAAC,CAAC,EAAE,cAAc,CAAC,GAClD,WAAW,CAAC,CAAC,CAAC;IAmCjB;;;;;OAKG;IACI,MAAM,CAAC,kBAAkB,EAC9B,OAAO,EAAE,gBAAgB,CAAC,kBAAkB,CAAC,EAC7C,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,kBAAkB,GAC1B,IAAI;CAOR"}
@@ -95,10 +95,19 @@ export class FilterGroup {
95
95
  ],
96
96
  });
97
97
  }
98
+ /**
99
+ * Accepts a visitor and calls the appropriate visit method based on the logical operator.
100
+ * @param visitor The visitor implementation.
101
+ * @param currentAlias The alias of the current entity being processed.
102
+ * @param context The mutable context object for the translation.
103
+ */
98
104
  accept(visitor, currentAlias, context) {
99
- return this.logicalOperator === LogicalOperator.AND
100
- ? visitor.visitAndGroup(this, currentAlias, context)
101
- : visitor.visitOrGroup(this, currentAlias, context);
105
+ if (this.logicalOperator === LogicalOperator.AND) {
106
+ visitor.visitAndGroup(this, currentAlias, context);
107
+ }
108
+ else {
109
+ visitor.visitOrGroup(this, currentAlias, context);
110
+ }
102
111
  }
103
112
  }
104
113
  //# sourceMappingURL=filter-group.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"filter-group.js","sourceRoot":"","sources":["../../../src/criteria/filter/filter-group.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"filter-group.js","sourceRoot":"","sources":["../../../src/criteria/filter/filter-group.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7E,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAQrD,MAAM,OAAO,WAAW;IAGL,gBAAgB,CAAkB;IAClC,MAAM,CAErB;IAEF,YAAY,oBAA6C;QACvD,MAAM,eAAe,GACnB,gBAAgB,CAAC,cAAc,CAAC,oBAAoB,CAAC,CAAC;QACxD,IAAI,CAAC,gBAAgB,GAAG,eAAe,CAAC,eAAe,CAAC;QACxD,IAAI,CAAC,MAAM,GAAG,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YAC/C,IAAI,iBAAiB,IAAI,IAAI,EAAE,CAAC;gBAC9B,OAAO,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC;YAC/B,CAAC;YACD,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC,CAAC,CAAC;IACL,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,IAAI,eAAe;QACjB,OAAO,IAAI,CAAC,gBAAgB,CAAC;IAC/B,CAAC;IAEM,MAAM,CAAC,aAAa,CACzB,eAAmD;QAEnD,OAAO,IAAI,WAAW,CAAC;YACrB,eAAe,EAAE,eAAe,CAAC,GAAG;YACpC,KAAK,EAAE,CAAC,eAAe,CAAC;SACzB,CAAC,CAAC;IACL,CAAC;IAEM,WAAW;QAChB,OAAO;YACL,eAAe,EAAE,IAAI,CAAC,gBAAgB;YACtC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;SACrD,CAAC;IACJ,CAAC;IAEM,MAAM,CACX,eAAmD;QAEnD,IAAI,IAAI,CAAC,gBAAgB,KAAK,eAAe,CAAC,GAAG,EAAE,CAAC;YAClD,OAAO,IAAI,WAAW,CAAC;gBACrB,eAAe,EAAE,eAAe,CAAC,GAAG;gBACpC,KAAK,EAAE;oBACL,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;oBAChD,eAAe;iBAChB;aACF,CAAC,CAAC;QACL,CAAC;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QACnE,MAAM,QAAQ,GAAG,YAAY,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAEvD,IACE,CAAC,QAAQ;YACT,CAAC,CAAC,iBAAiB,IAAI,QAAQ,CAAC;YAChC,QAAQ,CAAC,eAAe,KAAK,eAAe,CAAC,GAAG,EAChD,CAAC;YACD,YAAY,CAAC,IAAI,CAAC;gBAChB,eAAe,EAAE,eAAe,CAAC,GAAG;gBACpC,KAAK,EAAE,CAAC,eAAe,CAAC;aACzB,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,YAAY,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG;gBACtC,eAAe,EAAE,eAAe,CAAC,GAAG;gBACpC,KAAK,EAAE,CAAC,GAAG,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC;aAC5C,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,WAAW,CAAC;YACrB,eAAe,EAAE,eAAe,CAAC,EAAE;YACnC,KAAK,EAAE,YAAY;SACpB,CAAC,CAAC;IACL,CAAC;IAEM,KAAK,CACV,eAAmD;QAEnD,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QAEnE,IAAI,IAAI,CAAC,gBAAgB,KAAK,eAAe,CAAC,GAAG,EAAE,CAAC;YAClD,OAAO,IAAI,WAAW,CAAC;gBACrB,eAAe,EAAE,eAAe,CAAC,EAAE;gBACnC,KAAK,EAAE;oBACL,GAAG,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC;wBACzB,CAAC,CAAC;4BACE;gCACE,eAAe,EAAE,eAAe,CAAC,GAAG;gCACpC,KAAK,EAAE,YAAY;6BACpB;yBACF;wBACH,CAAC,CAAC,EAAE,CAAC;oBACP;wBACE,eAAe,EAAE,eAAe,CAAC,GAAG;wBACpC,KAAK,EAAE,CAAC,eAAe,CAAC;qBACzB;iBACF;aACF,CAAC,CAAC;QACL,CAAC;QAED,OAAO,IAAI,WAAW,CAAC;YACrB,eAAe,EAAE,eAAe,CAAC,EAAE;YACnC,KAAK,EAAE;gBACL,GAAG,YAAY;gBACf;oBACE,eAAe,EAAE,eAAe,CAAC,GAAG;oBACpC,KAAK,EAAE,CAAC,eAAe,CAAC;iBACzB;aACF;SACF,CAAC,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACI,MAAM,CACX,OAA6C,EAC7C,YAAoB,EACpB,OAA2B;QAE3B,IAAI,IAAI,CAAC,eAAe,KAAK,eAAe,CAAC,GAAG,EAAE,CAAC;YACjD,OAAO,CAAC,aAAa,CAAC,IAAI,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;QACrD,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;CACF"}
@@ -3,12 +3,12 @@ import type { IFilterExpression } from '../types/filter-expression.interface.js'
3
3
  import type { FilterPrimitive, FilterValue } from './types/filter-primitive.types.js';
4
4
  import type { ICriteriaVisitor } from '../types/visitor-interface.types.js';
5
5
  export declare class Filter<T extends string, Operator extends FilterOperator> implements IFilterExpression {
6
- private readonly primitive;
6
+ protected readonly primitive: FilterPrimitive<T, Operator>;
7
7
  constructor(primitive: FilterPrimitive<T, Operator>);
8
8
  get field(): T;
9
9
  get operator(): Operator;
10
10
  get value(): FilterValue<Operator>;
11
- accept<TranslationContext, TranslationOutput = TranslationContext, TFilterVisitorOutput extends any = any>(visitor: ICriteriaVisitor<TranslationContext, TranslationOutput, TFilterVisitorOutput>, currentAlias: string): TFilterVisitorOutput;
11
+ accept<TranslationContext, TFilterVisitorOutput extends any>(visitor: ICriteriaVisitor<TranslationContext, TFilterVisitorOutput>, currentAlias: string, context: TranslationContext): TFilterVisitorOutput;
12
12
  toPrimitive(): FilterPrimitive<T, Operator>;
13
13
  private isString;
14
14
  private isNumber;
@@ -21,6 +21,6 @@ export declare class Filter<T extends string, Operator extends FilterOperator> i
21
21
  private isNull;
22
22
  private isUndefined;
23
23
  private isPrimitiveFilterValue;
24
- private isRecord;
24
+ private isJsonValue;
25
25
  }
26
26
  //# sourceMappingURL=filter.d.ts.map
@@ -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;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"}
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;IAE5B,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;gBAC/C,SAAS,EAAE,eAAe,CAAC,CAAC,EAAE,QAAQ,CAAC;IAKnD,IAAI,KAAK,IAAI,CAAC,CAEb;IAED,IAAI,QAAQ,IAAI,QAAQ,CAEvB;IAED,IAAI,KAAK,IAAI,WAAW,CAAC,QAAQ,CAAC,CAEjC;IAEM,MAAM,CAAC,kBAAkB,EAAE,oBAAoB,SAAS,GAAG,EAChE,OAAO,EAAE,gBAAgB,CAAC,kBAAkB,EAAE,oBAAoB,CAAC,EACnE,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,kBAAkB,GAC1B,oBAAoB;IAIhB,WAAW,IAAI,eAAe,CAAC,CAAC,EAAE,QAAQ,CAAC;IAIlD,OAAO,CAAC,QAAQ;IAGhB,OAAO,CAAC,QAAQ;IAGhB,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,+BAA+B;IAWvC,OAAO,CAAC,iCAAiC;IA0HzC,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,WAAW;CAYpB"}
@@ -2,7 +2,7 @@ import { FilterOperator } from '../types/operator.types.js';
2
2
  export class Filter {
3
3
  primitive;
4
4
  constructor(primitive) {
5
- this.primitive = primitive;
5
+ this.primitive = { ...primitive };
6
6
  this.validatePrimitiveValueForOperator(primitive.operator);
7
7
  }
8
8
  get field() {
@@ -14,8 +14,8 @@ export class Filter {
14
14
  get value() {
15
15
  return this.primitive.value;
16
16
  }
17
- accept(visitor, currentAlias) {
18
- return visitor.visitFilter(this, currentAlias);
17
+ accept(visitor, currentAlias, context) {
18
+ return visitor.visitFilter(this, currentAlias, context);
19
19
  }
20
20
  toPrimitive() {
21
21
  return this.primitive;
@@ -61,23 +61,31 @@ export class Filter {
61
61
  throw new Error(`Filter value for operator ${operator} must be a string | number | boolean | Date | null type`);
62
62
  break;
63
63
  case FilterOperator.ARRAY_CONTAINS_ELEMENT:
64
+ case FilterOperator.ARRAY_NOT_CONTAINS_ELEMENT:
64
65
  if (!this.isPrimitiveFilterValue(this.value) &&
65
66
  !this.isValidSingleKeyObjectWithValue(this.value, (val) => this.isPrimitiveFilterValue(val))) {
66
- throw new Error('For ARRAY_CONTAINS_ELEMENT, value must be a PrimitiveFilterValue or an object like { "path.to.array": elementValue }');
67
+ throw new Error(`For operator ${operator}, value must be a PrimitiveFilterValue or an object like { "path.to.array": elementValue }`);
67
68
  }
68
69
  break;
69
70
  case FilterOperator.ARRAY_CONTAINS_ALL_ELEMENTS:
70
71
  case FilterOperator.ARRAY_CONTAINS_ANY_ELEMENT:
71
72
  case FilterOperator.ARRAY_EQUALS:
73
+ case FilterOperator.ARRAY_NOT_EQUALS:
74
+ case FilterOperator.ARRAY_EQUALS_STRICT:
75
+ case FilterOperator.ARRAY_NOT_EQUALS_STRICT:
76
+ case FilterOperator.ARRAY_NOT_CONTAINS_ALL_ELEMENTS:
77
+ case FilterOperator.ARRAY_NOT_CONTAINS_ANY_ELEMENT:
72
78
  if (!this.isArrayOfPrimitives(this.value) &&
73
79
  !this.isValidSingleKeyObjectWithValue(this.value, (val) => this.isArrayOfPrimitives(val))) {
74
- throw new Error('For ARRAY_CONTAINS_ALL/ANY/EQUALS, value must be an Array<Primitive> or an object like { "path.to.array": [elements] }');
80
+ throw new Error(`For operator ${operator}, value must be an Array<Primitive> or an object like { "path.to.array": [elements] }`);
75
81
  }
76
82
  break;
77
83
  case FilterOperator.IN:
78
84
  case FilterOperator.NOT_IN:
79
85
  case FilterOperator.SET_CONTAINS_ANY:
80
86
  case FilterOperator.SET_CONTAINS_ALL:
87
+ case FilterOperator.SET_NOT_CONTAINS_ANY:
88
+ case FilterOperator.SET_NOT_CONTAINS_ALL:
81
89
  if (!this.isArrayOfPrimitives(this.value))
82
90
  throw new Error(`Filter value for operator ${operator} must be an array of string, number, boolean, Date`);
83
91
  break;
@@ -92,13 +100,22 @@ export class Filter {
92
100
  if (!this.isNull(this.value) && !this.isUndefined(this.value))
93
101
  throw new Error(`Filter value for operator ${operator} must be null or undefined`);
94
102
  break;
103
+ case FilterOperator.JSON_PATH_VALUE_EQUALS:
104
+ case FilterOperator.JSON_PATH_VALUE_NOT_EQUALS:
95
105
  case FilterOperator.JSON_CONTAINS:
96
106
  case FilterOperator.JSON_NOT_CONTAINS:
97
107
  if (!this.isObject(this.value) ||
98
- !Object.values(this.value).every((val) => this.isPrimitiveFilterValue(val) ||
99
- Array.isArray(val) ||
100
- this.isRecord(val))) {
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>');
108
+ !Object.values(this.value).every((val) => this.isJsonValue(val))) {
109
+ throw new Error(`Filter value for operator ${operator} must be an object where each value is a valid JSON structure (primitive, object, or array).`);
110
+ }
111
+ break;
112
+ case FilterOperator.JSON_CONTAINS_ANY:
113
+ case FilterOperator.JSON_CONTAINS_ALL:
114
+ case FilterOperator.JSON_NOT_CONTAINS_ANY:
115
+ case FilterOperator.JSON_NOT_CONTAINS_ALL:
116
+ if (!this.isObject(this.value) ||
117
+ !Object.values(this.value).every((val) => Array.isArray(val) && val.every((item) => this.isJsonValue(item)))) {
118
+ throw new Error(`Filter value for operator ${operator} must be an object where each value is an array of valid JSON structures.`);
102
119
  }
103
120
  break;
104
121
  default:
@@ -143,11 +160,17 @@ export class Filter {
143
160
  value instanceof Date ||
144
161
  this.isNull(value));
145
162
  }
146
- isRecord(value) {
147
- return (typeof value === 'object' &&
148
- value !== null &&
149
- !Array.isArray(value) &&
150
- Object.keys(value).every((key) => typeof key === 'string'));
163
+ isJsonValue(value) {
164
+ if (this.isPrimitiveFilterValue(value)) {
165
+ return true;
166
+ }
167
+ if (Array.isArray(value)) {
168
+ return value.every((item) => this.isJsonValue(item));
169
+ }
170
+ if (this.isObject(value)) {
171
+ return Object.values(value).every((item) => this.isJsonValue(item));
172
+ }
173
+ return false;
151
174
  }
152
175
  }
153
176
  //# sourceMappingURL=filter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"filter.js","sourceRoot":"","sources":["../../../src/criteria/filter/filter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"filter.js","sourceRoot":"","sources":["../../../src/criteria/filter/filter.ts"],"names":[],"mappings":"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"}