querier-ts 2.1.0 → 2.2.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 (55) hide show
  1. package/README.md +17 -2
  2. package/lib/core/errors/invalid-argument-error.d.ts +1 -12
  3. package/lib/core/errors/invalid-argument-error.d.ts.map +1 -1
  4. package/lib/core/errors/invalid-argument-error.js +2 -8
  5. package/lib/core/errors/invalid-argument-error.js.map +1 -1
  6. package/lib/core/types/nullable-condition.d.ts +2 -0
  7. package/lib/core/types/nullable-condition.d.ts.map +1 -0
  8. package/lib/core/types/nullable-condition.js +2 -0
  9. package/lib/core/types/nullable-condition.js.map +1 -0
  10. package/lib/core/types/query-conditions-group-nullable.d.ts +2 -1
  11. package/lib/core/types/query-conditions-group-nullable.d.ts.map +1 -1
  12. package/lib/core/types/validation-options.d.ts +4 -0
  13. package/lib/core/types/validation-options.d.ts.map +1 -0
  14. package/lib/core/types/validation-options.js +2 -0
  15. package/lib/core/types/validation-options.js.map +1 -0
  16. package/lib/core/validation/decorators/number-validaton.d.ts.map +1 -1
  17. package/lib/core/validation/decorators/number-validaton.js +6 -18
  18. package/lib/core/validation/decorators/number-validaton.js.map +1 -1
  19. package/lib/core/validation/query-row-validator.d.ts +6 -40
  20. package/lib/core/validation/query-row-validator.d.ts.map +1 -1
  21. package/lib/core/validation/query-row-validator.js +22 -44
  22. package/lib/core/validation/query-row-validator.js.map +1 -1
  23. package/lib/query.d.ts +29 -20
  24. package/lib/query.d.ts.map +1 -1
  25. package/lib/query.js +60 -68
  26. package/lib/query.js.map +1 -1
  27. package/lib/utils/functions/type-guards/is-function.d.ts +2 -1
  28. package/lib/utils/functions/type-guards/is-function.d.ts.map +1 -1
  29. package/lib/utils/functions/type-guards/is-function.js +2 -0
  30. package/lib/utils/functions/type-guards/is-function.js.map +1 -1
  31. package/package.json +15 -13
  32. package/lib/__tests__/query.spec.d.ts +0 -1
  33. package/lib/__tests__/query.spec.js +0 -165
  34. package/lib/core/errors/__tests__/invalid-argument-error.spec.d.ts +0 -1
  35. package/lib/core/errors/__tests__/invalid-argument-error.spec.js +0 -54
  36. package/lib/core/validation/__tests__/query-row-validator.spec.d.ts +0 -1
  37. package/lib/core/validation/__tests__/query-row-validator.spec.js +0 -195
  38. package/lib/core/validation/decorators/__tests__/number-validation.spec.d.ts +0 -1
  39. package/lib/core/validation/decorators/__tests__/number-validation.spec.js +0 -114
  40. package/lib/utils/functions/generic/__tests__/compare-arrays.spec.d.ts +0 -1
  41. package/lib/utils/functions/generic/__tests__/compare-arrays.spec.js +0 -21
  42. package/lib/utils/functions/generic/__tests__/deep-equal.spec.d.ts +0 -1
  43. package/lib/utils/functions/generic/__tests__/deep-equal.spec.js +0 -82
  44. package/lib/utils/functions/generic/__tests__/get-entries.spec.d.ts +0 -1
  45. package/lib/utils/functions/generic/__tests__/get-entries.spec.js +0 -55
  46. package/lib/utils/functions/sort/__tests__/sort-by-properties.spec.d.ts +0 -1
  47. package/lib/utils/functions/sort/__tests__/sort-by-properties.spec.js +0 -69
  48. package/lib/utils/functions/sort/__tests__/sort-by-property.spec.d.ts +0 -1
  49. package/lib/utils/functions/sort/__tests__/sort-by-property.spec.js +0 -63
  50. package/lib/utils/functions/type-guards/__tests__/is-function.spec.d.ts +0 -1
  51. package/lib/utils/functions/type-guards/__tests__/is-function.spec.js +0 -38
  52. package/lib/utils/functions/type-guards/__tests__/is-number.spec.d.ts +0 -1
  53. package/lib/utils/functions/type-guards/__tests__/is-number.spec.js +0 -35
  54. package/lib/utils/functions/type-guards/__tests__/is-object.spec.d.ts +0 -1
  55. package/lib/utils/functions/type-guards/__tests__/is-object.spec.js +0 -38
package/README.md CHANGED
@@ -108,7 +108,7 @@ const authorsWithFirstPostQuery = Query.from(authors)
108
108
  }));
109
109
  ```
110
110
 
111
- When dealing with simples scenarios, prefer `select()`:
111
+ When dealing with simple scenarios, prefer `select()`:
112
112
 
113
113
  ```ts
114
114
  // ⚠️ More verbose than necessary
@@ -276,4 +276,19 @@ Example output:
276
276
  [1, 'john@icloud.com'],
277
277
  [2, 'mary@gmail.com']
278
278
  ]
279
- ```
279
+ ```
280
+
281
+ ---
282
+
283
+ #### `groupBy(key)`
284
+
285
+ Groups the items by the specified property and returns the result as a `Map`.
286
+
287
+ - `key`: The property name to group by.
288
+
289
+ The returned `Map` uses the property values as keys and arrays of matching items as values.
290
+
291
+ ```ts
292
+ const usersByActiveStatus = Query.from(users).groupBy('active');
293
+ // Map<boolean, User[]>
294
+ ```
@@ -1,15 +1,4 @@
1
- interface InvalidArgumentErrorConfig {
2
- method: string;
3
- param: string | number;
4
- argument: unknown;
5
- expected: string;
6
- }
7
1
  export declare class InvalidArgumentError extends Error {
8
- readonly method: string;
9
- readonly param: string | number;
10
- readonly argument: unknown;
11
- readonly expected: string;
12
- constructor({ method, param, argument, expected, }: InvalidArgumentErrorConfig);
2
+ constructor(message: string);
13
3
  }
14
- export {};
15
4
  //# sourceMappingURL=invalid-argument-error.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"invalid-argument-error.d.ts","sourceRoot":"","sources":["../../../src/core/errors/invalid-argument-error.ts"],"names":[],"mappings":"AAAA,UAAU,0BAA0B;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,oBAAqB,SAAQ,KAAK;IAC7C,SAAgB,MAAM,EAAE,MAAM,CAAC;IAC/B,SAAgB,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACvC,SAAgB,QAAQ,EAAE,OAAO,CAAC;IAClC,SAAgB,QAAQ,EAAE,MAAM,CAAC;gBAErB,EACV,MAAM,EACN,KAAK,EACL,QAAQ,EACR,QAAQ,GACT,EAAE,0BAA0B;CAc9B"}
1
+ {"version":3,"file":"invalid-argument-error.d.ts","sourceRoot":"","sources":["../../../src/core/errors/invalid-argument-error.ts"],"names":[],"mappings":"AAAA,qBAAa,oBAAqB,SAAQ,KAAK;gBACjC,OAAO,EAAE,MAAM;CAI5B"}
@@ -1,13 +1,7 @@
1
1
  export class InvalidArgumentError extends Error {
2
- constructor({ method, param, argument, expected, }) {
3
- super(`${String(argument)} is not a valid argument to param ${param} on ${method}(). ` +
4
- `It should be ${expected}.`);
2
+ constructor(message) {
3
+ super(message);
5
4
  this.name = 'InvalidArgumentError';
6
- this.method = method;
7
- this.param = param;
8
- this.argument = argument;
9
- this.expected = expected;
10
- Object.setPrototypeOf(this, new.target.prototype);
11
5
  }
12
6
  }
13
7
  //# sourceMappingURL=invalid-argument-error.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"invalid-argument-error.js","sourceRoot":"","sources":["../../../src/core/errors/invalid-argument-error.ts"],"names":[],"mappings":"AAOA,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IAM7C,YAAY,EACV,MAAM,EACN,KAAK,EACL,QAAQ,EACR,QAAQ,GACmB;QAC3B,KAAK,CACH,GAAG,MAAM,CAAC,QAAQ,CAAC,qCAAqC,KAAK,OAAO,MAAM,MAAM;YAC9E,gBAAgB,QAAQ,GAAG,CAC9B,CAAC;QAEF,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;QACnC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAEzB,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACpD,CAAC;CACF"}
1
+ {"version":3,"file":"invalid-argument-error.js","sourceRoot":"","sources":["../../../src/core/errors/invalid-argument-error.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IAC7C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;IACrC,CAAC;CACF"}
@@ -0,0 +1,2 @@
1
+ export type NullableCondition<T> = T | ((value: T) => boolean) | null | undefined;
2
+ //# sourceMappingURL=nullable-condition.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nullable-condition.d.ts","sourceRoot":"","sources":["../../../src/core/types/nullable-condition.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,iBAAiB,CAAC,CAAC,IAC3B,CAAC,GACD,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,CAAC,GACvB,IAAI,GACJ,SAAS,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=nullable-condition.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nullable-condition.js","sourceRoot":"","sources":["../../../src/core/types/nullable-condition.ts"],"names":[],"mappings":""}
@@ -1,5 +1,6 @@
1
1
  import type { PropertyOnly } from '../../utils/types';
2
+ import type { NullableCondition } from './nullable-condition';
2
3
  export type QueryConditionsGroupNullable<T extends object> = {
3
- [P in keyof PropertyOnly<T>]?: T[P] extends object ? QueryConditionsGroupNullable<T[P]> : T[P] | ((value: T[P]) => boolean) | null;
4
+ [P in keyof PropertyOnly<T>]?: T[P] extends object ? QueryConditionsGroupNullable<T[P]> : NullableCondition<T[P]>;
4
5
  };
5
6
  //# sourceMappingURL=query-conditions-group-nullable.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"query-conditions-group-nullable.d.ts","sourceRoot":"","sources":["../../../src/core/types/query-conditions-group-nullable.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD,MAAM,MAAM,4BAA4B,CAAC,CAAC,SAAS,MAAM,IAAI;KAC1D,CAAC,IAAI,MAAM,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,GAC9C,4BAA4B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAClC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,GAAG,IAAI;CAC7C,CAAC"}
1
+ {"version":3,"file":"query-conditions-group-nullable.d.ts","sourceRoot":"","sources":["../../../src/core/types/query-conditions-group-nullable.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAE9D,MAAM,MAAM,4BAA4B,CAAC,CAAC,SAAS,MAAM,IAAI;KAC1D,CAAC,IAAI,MAAM,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,GAC9C,4BAA4B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAClC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAC5B,CAAC"}
@@ -0,0 +1,4 @@
1
+ export interface ValidationOptions {
2
+ ignoreNullValues: boolean;
3
+ }
4
+ //# sourceMappingURL=validation-options.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation-options.d.ts","sourceRoot":"","sources":["../../../src/core/types/validation-options.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,iBAAiB;IAChC,gBAAgB,EAAE,OAAO,CAAC;CAC3B"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=validation-options.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation-options.js","sourceRoot":"","sources":["../../../src/core/types/validation-options.ts"],"names":[],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"number-validaton.d.ts","sourceRoot":"","sources":["../../../../src/core/validation/decorators/number-validaton.ts"],"names":[],"mappings":"AAiCA,wBAAgB,GAAG,CAAC,KAAK,EAAE,MAAM,IAE7B,QAAQ,MAAM,EACd,aAAa,MAAM,GAAG,MAAM,EAC5B,OAAO,MAAM,KACZ,IAAI,CAWR;AAED,wBAAgB,GAAG,CAAC,KAAK,EAAE,MAAM,IAE7B,QAAQ,MAAM,EACd,aAAa,MAAM,GAAG,MAAM,EAC5B,OAAO,MAAM,KACZ,IAAI,CAWR;AAED,wBAAgB,OAAO,CACrB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,GAAG,MAAM,EAC5B,KAAK,EAAE,MAAM,GACZ,IAAI,CAUN;AAED,wBAAgB,eAAe,CAC7B,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,EAEnB,UAAU,EAAE,uBAAuB,CAAC,GAAG,CAAC,GACvC,IAAI,CAgDN"}
1
+ {"version":3,"file":"number-validaton.d.ts","sourceRoot":"","sources":["../../../../src/core/validation/decorators/number-validaton.ts"],"names":[],"mappings":"AAiCA,wBAAgB,GAAG,CAAC,KAAK,EAAE,MAAM,IAE7B,QAAQ,MAAM,EACd,aAAa,MAAM,GAAG,MAAM,EAC5B,OAAO,MAAM,KACZ,IAAI,CAWR;AAED,wBAAgB,GAAG,CAAC,KAAK,EAAE,MAAM,IAE7B,QAAQ,MAAM,EACd,aAAa,MAAM,GAAG,MAAM,EAC5B,OAAO,MAAM,KACZ,IAAI,CAWR;AAED,wBAAgB,OAAO,CACrB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,GAAG,MAAM,EAC5B,KAAK,EAAE,MAAM,GACZ,IAAI,CAUN;AAED,wBAAgB,eAAe,CAC7B,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,EAEnB,UAAU,EAAE,uBAAuB,CAAC,GAAG,CAAC,GACvC,IAAI,CA0CN"}
@@ -59,34 +59,22 @@ descriptor) {
59
59
  // MIN
60
60
  if (rule.min !== undefined) {
61
61
  if (!isNumber(value) || value < rule.min) {
62
- throw new InvalidArgumentError({
63
- method: propertyKey,
64
- param: rule.index,
65
- argument: value,
66
- expected: `equal or greater than ${rule.min}`,
67
- });
62
+ throw new InvalidArgumentError(`${String(value)} is not a valid argument to param ${rule.index} on ${propertyKey}(). ` +
63
+ `Expected value to be equal or greater than ${rule.min}.`);
68
64
  }
69
65
  }
70
66
  // MAX
71
67
  if (rule.max !== undefined) {
72
68
  if (!isNumber(value) || value > rule.max) {
73
- throw new InvalidArgumentError({
74
- method: propertyKey,
75
- param: rule.index,
76
- argument: value,
77
- expected: `equal or less than ${rule.max}`,
78
- });
69
+ throw new InvalidArgumentError(`${String(value)} is not a valid argument to param ${rule.index} on ${propertyKey}(). ` +
70
+ `Expected value to be equal or less than ${rule.max}.`);
79
71
  }
80
72
  }
81
73
  // INTEGER
82
74
  if (rule.integer) {
83
75
  if (!Number.isSafeInteger(value)) {
84
- throw new InvalidArgumentError({
85
- method: propertyKey,
86
- param: rule.index,
87
- argument: value,
88
- expected: 'an integer',
89
- });
76
+ throw new InvalidArgumentError(`${String(value)} is not a valid argument to param ${rule.index} on ${propertyKey}(). ` +
77
+ `Expected value to be an integer.`);
90
78
  }
91
79
  }
92
80
  }
@@ -1 +1 @@
1
- {"version":3,"file":"number-validaton.js","sourceRoot":"","sources":["../../../../src/core/validation/decorators/number-validaton.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"number-validaton.js","sourceRoot":"","sources":["../../../../src/core/validation/decorators/number-validaton.ts"],"names":[],"mappings":"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"}
@@ -1,41 +1,16 @@
1
- import type { QueryRowValidatorInitializer } from '../types';
1
+ import type { QueryConditionsGroupNullable } from '../types';
2
+ import type { ValidationOptions } from '../types/validation-options';
2
3
  /**
3
4
  * Validates a row in the query.
4
5
  */
5
- export declare class QueryRowValidator<T extends object> {
6
- /**
7
- * Row to be validated.
8
- */
9
- private row;
10
- /**
11
- * Conditions to be applied to the row.
12
- */
13
- private conditionsObject;
14
- /**
15
- * Indicates whether conditions with `null` and `undefined` values should be
16
- * skipped.
17
- */
18
- private ignoreNullValues;
19
- /**
20
- * Initializes the validator.
21
- *
22
- * @param row Row to validated.
23
- * @param config Validator configuration.
24
- */
25
- private constructor();
26
- /**
27
- * Validates a row.
28
- *
29
- * @param row Row to validated.
30
- * @param config Validator configuration.
31
- */
32
- static validate<T extends object>(row: T, config: QueryRowValidatorInitializer<T>): boolean;
6
+ export declare class QueryRowValidator {
7
+ #private;
33
8
  /**
34
9
  * Validates all conditions of the row.
35
10
  *
36
11
  * @returns Validation result.
37
12
  */
38
- private validate;
13
+ static validate<T extends object>(row: T, condition: QueryConditionsGroupNullable<T>, options?: ValidationOptions): boolean;
39
14
  /**
40
15
  * Validate a condition to a specific column.
41
16
  *
@@ -44,15 +19,6 @@ export declare class QueryRowValidator<T extends object> {
44
19
  *
45
20
  * @returns Validation result.
46
21
  */
47
- private validateColumnCondition;
48
- /**
49
- * Validates an object inside the row.
50
- *
51
- * @param obj Object to validated.
52
- * @param conditionsObject Conditions to be applied to the object.
53
- *
54
- * @returns Validation result.
55
- */
56
- private validateInnerObject;
22
+ private static validateColumnCondition;
57
23
  }
58
24
  //# sourceMappingURL=query-row-validator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"query-row-validator.d.ts","sourceRoot":"","sources":["../../../src/core/validation/query-row-validator.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAGV,4BAA4B,EAC7B,MAAM,UAAU,CAAC;AAGlB;;GAEG;AACH,qBAAa,iBAAiB,CAAC,CAAC,SAAS,MAAM;IAC7C;;OAEG;IACH,OAAO,CAAC,GAAG,CAAK;IAEhB;;OAEG;IACH,OAAO,CAAC,gBAAgB,CAAkC;IAE1D;;;OAGG;IACH,OAAO,CAAC,gBAAgB,CAAU;IAElC;;;;;OAKG;IACH,OAAO;IAMP;;;;;OAKG;IACH,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,MAAM,EAC9B,GAAG,EAAE,CAAC,EACN,MAAM,EAAE,4BAA4B,CAAC,CAAC,CAAC,GACtC,OAAO;IAMV;;;;OAIG;IACH,OAAO,CAAC,QAAQ;IAQhB;;;;;;;OAOG;IACH,OAAO,CAAC,uBAAuB;IAgC/B;;;;;;;OAOG;IACH,OAAO,CAAC,mBAAmB;CAS5B"}
1
+ {"version":3,"file":"query-row-validator.d.ts","sourceRoot":"","sources":["../../../src/core/validation/query-row-validator.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAEV,4BAA4B,EAC7B,MAAM,UAAU,CAAC;AAElB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAErE;;GAEG;AACH,qBAAa,iBAAiB;;IAK5B;;;;OAIG;IACH,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,MAAM,EAC9B,GAAG,EAAE,CAAC,EACN,SAAS,EAAE,4BAA4B,CAAC,CAAC,CAAC,EAC1C,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO;IAiBV;;;;;;;OAOG;IACH,OAAO,CAAC,MAAM,CAAC,uBAAuB;CAkCvC"}
@@ -1,38 +1,28 @@
1
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
2
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
3
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
4
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
5
+ };
6
+ var _a, _QueryRowValidator_defaultOptions;
1
7
  import { compareArrays, getEntries } from '../../utils/functions/generic';
2
8
  import { isFunction, isObject } from '../../utils/functions/type-guards';
3
9
  /**
4
10
  * Validates a row in the query.
5
11
  */
6
12
  export class QueryRowValidator {
7
- /**
8
- * Initializes the validator.
9
- *
10
- * @param row Row to validated.
11
- * @param config Validator configuration.
12
- */
13
- constructor(row, config) {
14
- this.row = row;
15
- this.conditionsObject = config.conditionsObject;
16
- this.ignoreNullValues = config.ignoreNullValues;
17
- }
18
- /**
19
- * Validates a row.
20
- *
21
- * @param row Row to validated.
22
- * @param config Validator configuration.
23
- */
24
- static validate(row, config) {
25
- const validator = new QueryRowValidator(row, config);
26
- return validator.validate();
27
- }
28
13
  /**
29
14
  * Validates all conditions of the row.
30
15
  *
31
16
  * @returns Validation result.
32
17
  */
33
- validate() {
34
- const conditionsEntries = getEntries(this.conditionsObject);
35
- return conditionsEntries.every(([columnName, condition]) => this.validateColumnCondition(columnName, condition));
18
+ static validate(row, condition, options) {
19
+ for (const [column, columnCondition] of getEntries(condition)) {
20
+ const validated = this.validateColumnCondition(row, column, columnCondition, options ?? __classPrivateFieldGet(this, _a, "f", _QueryRowValidator_defaultOptions));
21
+ if (!validated) {
22
+ return false;
23
+ }
24
+ }
25
+ return true;
36
26
  }
37
27
  /**
38
28
  * Validate a condition to a specific column.
@@ -42,12 +32,12 @@ export class QueryRowValidator {
42
32
  *
43
33
  * @returns Validation result.
44
34
  */
45
- validateColumnCondition(columnName, condition) {
46
- if (this.ignoreNullValues &&
35
+ static validateColumnCondition(row, column, condition, options) {
36
+ if (options.ignoreNullValues &&
47
37
  (condition === null || condition === undefined)) {
48
38
  return true;
49
39
  }
50
- const cellValue = this.row[columnName];
40
+ const cellValue = row[column];
51
41
  if (isFunction(condition)) {
52
42
  return condition(cellValue);
53
43
  }
@@ -57,25 +47,13 @@ export class QueryRowValidator {
57
47
  : false;
58
48
  }
59
49
  if (isObject(condition)) {
60
- return isObject(cellValue)
61
- ? this.validateInnerObject(cellValue, condition)
62
- : false;
50
+ return isObject(cellValue) ? this.validate(cellValue, condition) : false;
63
51
  }
64
52
  return cellValue === condition;
65
53
  }
66
- /**
67
- * Validates an object inside the row.
68
- *
69
- * @param obj Object to validated.
70
- * @param conditionsObject Conditions to be applied to the object.
71
- *
72
- * @returns Validation result.
73
- */
74
- validateInnerObject(obj, conditionsObject) {
75
- return QueryRowValidator.validate(obj, {
76
- conditionsObject,
77
- ignoreNullValues: this.ignoreNullValues,
78
- });
79
- }
80
54
  }
55
+ _a = QueryRowValidator;
56
+ _QueryRowValidator_defaultOptions = { value: {
57
+ ignoreNullValues: false,
58
+ } };
81
59
  //# sourceMappingURL=query-row-validator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"query-row-validator.js","sourceRoot":"","sources":["../../../src/core/validation/query-row-validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC1E,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAC;AAQzE;;GAEG;AACH,MAAM,OAAO,iBAAiB;IAiB5B;;;;;OAKG;IACH,YAAoB,GAAM,EAAE,MAAuC;QACjE,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;QAChD,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;IAClD,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,QAAQ,CACb,GAAM,EACN,MAAuC;QAEvC,MAAM,SAAS,GAAG,IAAI,iBAAiB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAErD,OAAO,SAAS,CAAC,QAAQ,EAAE,CAAC;IAC9B,CAAC;IAED;;;;OAIG;IACK,QAAQ;QACd,MAAM,iBAAiB,GAAG,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAE5D,OAAO,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,EAAE,SAAS,CAAC,EAAE,EAAE,CACzD,IAAI,CAAC,uBAAuB,CAAC,UAAU,EAAE,SAAS,CAAC,CACpD,CAAC;IACJ,CAAC;IAED;;;;;;;OAOG;IACK,uBAAuB,CAC7B,UAAa,EACb,SAAgC;QAEhC,IACE,IAAI,CAAC,gBAAgB;YACrB,CAAC,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,SAAS,CAAC,EAC/C,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAEvC,IAAI,UAAU,CAAoC,SAAS,CAAC,EAAE,CAAC;YAC7D,OAAO,SAAS,CAAC,SAAS,CAAC,CAAC;QAC9B,CAAC;QAED,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7B,OAAO,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC;gBAC7B,CAAC,CAAC,aAAa,CAAC,SAAS,EAAE,SAAS,CAAC;gBACrC,CAAC,CAAC,KAAK,CAAC;QACZ,CAAC;QAED,IAAI,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YACxB,OAAO,QAAQ,CAAC,SAAS,CAAC;gBACxB,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,SAAS,EAAE,SAAS,CAAC;gBAChD,CAAC,CAAC,KAAK,CAAC;QACZ,CAAC;QAED,OAAO,SAAS,KAAK,SAAS,CAAC;IACjC,CAAC;IAED;;;;;;;OAOG;IACK,mBAAmB,CACzB,GAAM,EACN,gBAAiD;QAEjD,OAAO,iBAAiB,CAAC,QAAQ,CAAC,GAAG,EAAE;YACrC,gBAAgB;YAChB,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;SACxC,CAAC,CAAC;IACL,CAAC;CACF"}
1
+ {"version":3,"file":"query-row-validator.js","sourceRoot":"","sources":["../../../src/core/validation/query-row-validator.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC1E,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAC;AAQzE;;GAEG;AACH,MAAM,OAAO,iBAAiB;IAK5B;;;;OAIG;IACH,MAAM,CAAC,QAAQ,CACb,GAAM,EACN,SAA0C,EAC1C,OAA2B;QAE3B,KAAK,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC9D,MAAM,SAAS,GAAG,IAAI,CAAC,uBAAuB,CAC5C,GAAG,EACH,MAAM,EACN,eAAe,EACf,OAAO,IAAI,uBAAA,IAAI,6CAAgB,CAChC,CAAC;YAEF,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;OAOG;IACK,MAAM,CAAC,uBAAuB,CAIpC,GAAM,EACN,MAAe,EACf,SAAsC,EACtC,OAA0B;QAE1B,IACE,OAAO,CAAC,gBAAgB;YACxB,CAAC,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,SAAS,CAAC,EAC/C,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,SAAS,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QAE9B,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC1B,OAAQ,SAAqD,CAAC,SAAS,CAAC,CAAC;QAC3E,CAAC;QAED,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7B,OAAO,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC;gBAC7B,CAAC,CAAC,aAAa,CAAC,SAAS,EAAE,SAAS,CAAC;gBACrC,CAAC,CAAC,KAAK,CAAC;QACZ,CAAC;QAED,IAAI,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YACxB,OAAO,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QAC3E,CAAC;QAED,OAAO,SAAS,KAAK,SAAS,CAAC;IACjC,CAAC;;;AAvEM,6CAAqC;QAC1C,gBAAgB,EAAE,KAAK;KACxB,EAFqB,CAEpB"}
package/lib/query.d.ts CHANGED
@@ -49,11 +49,6 @@ import type { PropOf } from './utils/types';
49
49
  */
50
50
  export declare class Query<T extends object> {
51
51
  #private;
52
- /**
53
- * Indicates whether conditions with `null` and `undefined` values should be
54
- * skipped.
55
- */
56
- private ignoreNullValues;
57
52
  /**
58
53
  * Initializes the query.
59
54
  *
@@ -78,6 +73,13 @@ export declare class Query<T extends object> {
78
73
  select<TColumns extends PropOf<T>[]>(...columns: TColumns): Query<{
79
74
  [P in TColumns[number]]: T[P];
80
75
  }>;
76
+ /**
77
+ * Maps each row to a new object and returns a new query.
78
+ *
79
+ * @param callback Function to be called for each row.
80
+ * @returns New query with the mapped rows.
81
+ */
82
+ map<TReturn extends object>(callback: (obj: T) => TReturn): Query<TReturn>;
81
83
  /**
82
84
  * Applies conditions to the query.
83
85
  *
@@ -130,13 +132,21 @@ export declare class Query<T extends object> {
130
132
  */
131
133
  orderBy(...columns: OrderingColumn<T>[]): this;
132
134
  /**
133
- * Groups the results by a specific key.
135
+ * Groups the results by a specific key or callback.
134
136
  *
135
- * @param key The key to group the results by.
137
+ * @param key Key to group by.
136
138
  *
137
- * @returns A map with the grouped results.
139
+ * @returns Grouped results.
138
140
  */
139
141
  groupBy<K extends keyof T>(key: K): Map<T[K], T[]>;
142
+ /**
143
+ * Groups the results by a specific key or callback.
144
+ *
145
+ * @param callback Callback to group by.
146
+ *
147
+ * @returns Grouped results.
148
+ */
149
+ groupBy<TGrouper>(callback: (row: T) => TGrouper): Map<TGrouper, T[]>;
140
150
  /**
141
151
  * Returns the current number of rows.
142
152
  *
@@ -176,6 +186,8 @@ export declare class Query<T extends object> {
176
186
  /**
177
187
  * Returns the values of the first (selected) column of all rows.
178
188
  *
189
+ * @param column (Optional) The column to get the values from.
190
+ *
179
191
  * @returns Values from the first (selected) column.
180
192
  */
181
193
  column(): T[PropOf<T>][];
@@ -209,11 +221,11 @@ export declare class Query<T extends object> {
209
221
  */
210
222
  limit(limit: number): this;
211
223
  /**
212
- * Returns the rows that should be used in the final results.
224
+ * Filters the rows according to the given conditions.
213
225
  *
214
- * @returns Rows within the specified limit.
226
+ * @param condition Object or callback function.
215
227
  */
216
- private getLimitedRows;
228
+ private filterRows;
217
229
  /**
218
230
  * Returns the first selected column or the first key of some row.
219
231
  *
@@ -221,19 +233,16 @@ export declare class Query<T extends object> {
221
233
  */
222
234
  private getFirstColumn;
223
235
  /**
224
- * Filters the rows according to the given conditions.
236
+ * Returns the rows that should be used in the final results.
225
237
  *
226
- * @param condition Object or callback function.
238
+ * @returns Rows within the specified limit.
227
239
  */
228
- private filterRows;
240
+ private getLimitedRows;
229
241
  /**
230
- * Validates a row based on the given conditions object.
231
- *
232
- * @param row Row to validate.
233
- * @param condition Conditions object.
242
+ * Copies the state of the current query into the given query.
234
243
  *
235
- * @returns {boolean} Validation result.
244
+ * @param query Query to copy the state into.
236
245
  */
237
- private validateRow;
246
+ private cloneStateInto;
238
247
  }
239
248
  //# sourceMappingURL=query.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../src/query.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,4BAA4B,EAC7B,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAMnE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAE5C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,qBAAa,KAAK,CAAC,CAAC,SAAS,MAAM;;IAqBjC;;;OAGG;IACH,OAAO,CAAC,gBAAgB,CAAkB;IAE1C;;;;OAIG;IACH,OAAO;IAIP;;;;;;OAMG;IACH,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC;IAIlD;;;;;;OAMG;IACH,MAAM,CAAC,QAAQ,SAAS,MAAM,CAAC,CAAC,CAAC,EAAE,EACjC,GAAG,OAAO,EAAE,QAAQ,GACnB,KAAK,CAAC;SAAG,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;KAAE,CAAC;IAmD3C;;;;;;;;;;;;OAYG;IACH,KAAK,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,OAAO,CAAC,GAAG,IAAI;IAMvE;;;;;;;;;;OAUG;IACH,WAAW,CAAC,SAAS,EAAE,4BAA4B,CAAC,CAAC,CAAC,GAAG,IAAI;IAQ7D;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,OAAO,CAAC,GAAG,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI;IAM9C;;;;;;OAMG;IACH,OAAO,CAAC,CAAC,SAAS,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;IAiBlD;;;;OAIG;IACH,KAAK,IAAI,MAAM;IAIf;;;;OAIG;IACH,MAAM,IAAI,OAAO;IAIjB;;;;OAIG;IACH,KAAK,IAAI,CAAC,GAAG,IAAI;IAMjB;;;;OAIG;IACH,IAAI,IAAI,CAAC,GAAG,IAAI;IAMhB;;;;OAIG;IACH,GAAG,IAAI,CAAC,EAAE;IAIV;;;;OAIG;IACH,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK;IAO9B;;;;OAIG;IACH,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;IACxB,MAAM,CAAC,OAAO,SAAS,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE;IAehE;;;;;OAKG;IACH,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;IAM1B;;;;;;;;;OASG;IAEH,IAAI,CAAkB,YAAY,EAAE,MAAM,GAAG,IAAI;IAMjD;;;;;;;;OAQG;IAEH,KAAK,CAAkB,KAAK,EAAE,MAAM,GAAG,IAAI;IAM3C;;;;OAIG;IACH,OAAO,CAAC,cAAc;IAUtB;;;;OAIG;IACH,OAAO,CAAC,cAAc;IAgBtB;;;;OAIG;IACH,OAAO,CAAC,UAAU;IAUlB;;;;;;;OAOG;IACH,OAAO,CAAC,WAAW;CASpB"}
1
+ {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../src/query.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,4BAA4B,EAC7B,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAOnE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAE5C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,qBAAa,KAAK,CAAC,CAAC,SAAS,MAAM;;IAgBjC;;;;OAIG;IACH,OAAO;IAIP;;;;;;OAMG;IACH,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC;IAIlD;;;;;;OAMG;IACH,MAAM,CAAC,QAAQ,SAAS,MAAM,CAAC,CAAC,CAAC,EAAE,EACjC,GAAG,OAAO,EAAE,QAAQ,GACnB,KAAK,CAAC;SAAG,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;KAAE,CAAC;IAuB3C;;;;;OAKG;IACH,GAAG,CAAC,OAAO,SAAS,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;IAe1E;;;;;;;;;;;;OAYG;IACH,KAAK,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,OAAO,CAAC,GAAG,IAAI;IAMvE;;;;;;;;;;OAUG;IACH,WAAW,CAAC,SAAS,EAAE,4BAA4B,CAAC,CAAC,CAAC,GAAG,IAAI;IAM7D;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,OAAO,CAAC,GAAG,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI;IAM9C;;;;;;OAMG;IACH,OAAO,CAAC,CAAC,SAAS,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;IAClD;;;;;;OAMG;IACH,OAAO,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,QAAQ,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC;IAmBrE;;;;OAIG;IACH,KAAK,IAAI,MAAM;IAIf;;;;OAIG;IACH,MAAM,IAAI,OAAO;IAIjB;;;;OAIG;IACH,KAAK,IAAI,CAAC,GAAG,IAAI;IAMjB;;;;OAIG;IACH,IAAI,IAAI,CAAC,GAAG,IAAI;IAMhB;;;;OAIG;IACH,GAAG,IAAI,CAAC,EAAE;IAIV;;;;OAIG;IACH,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK;IAO9B;;;;;;OAMG;IACH,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;IACxB,MAAM,CAAC,OAAO,SAAS,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE;IAehE;;;;;OAKG;IACH,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;IAY1B;;;;;;;;;OASG;IAEH,IAAI,CAAkB,YAAY,EAAE,MAAM,GAAG,IAAI;IAMjD;;;;;;;;OAQG;IAEH,KAAK,CAAkB,KAAK,EAAE,MAAM,GAAG,IAAI;IAM3C;;;;OAIG;IACH,OAAO,CAAC,UAAU;IA4BlB;;;;OAIG;IACH,OAAO,CAAC,cAAc;IAgBtB;;;;OAIG;IACH,OAAO,CAAC,cAAc;IAStB;;;;OAIG;IACH,OAAO,CAAC,cAAc;CAIvB"}