quetch 0.30.0 → 0.31.1

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 (171) hide show
  1. package/dist/tools/comparatorFieldValues.d.ts +8 -0
  2. package/dist/tools/comparatorFieldValues.js +26 -0
  3. package/dist/tools/comparatorFieldValues.js.map +1 -0
  4. package/dist/tools/filterChildren.d.ts +2 -1
  5. package/dist/tools/filterChildren.js +3 -2
  6. package/dist/tools/filterChildren.js.map +1 -1
  7. package/dist/tools/get.d.ts +4 -4
  8. package/dist/tools/get.js +6 -2
  9. package/dist/tools/get.js.map +1 -1
  10. package/dist/tools/querySettings.d.ts +8 -0
  11. package/dist/tools/querySettings.js +16 -0
  12. package/dist/tools/querySettings.js.map +1 -0
  13. package/dist/tools/sortItemList.d.ts +4 -4
  14. package/dist/tools/sortItemList.js +17 -24
  15. package/dist/tools/sortItemList.js.map +1 -1
  16. package/dist/tools/testFilter.js +1 -2
  17. package/dist/tools/testFilter.js.map +1 -1
  18. package/dist/tools/transformerFilterChildren.d.ts +2 -22
  19. package/dist/tools/transformerFilterChildren.js +2 -5
  20. package/dist/tools/transformerFilterChildren.js.map +1 -1
  21. package/dist/tools.d.ts +2 -0
  22. package/dist/tools.js +2 -0
  23. package/dist/tools.js.map +1 -1
  24. package/dist/types/CombineUnion.d.ts +1 -1
  25. package/dist/types/Decrement.d.ts +4 -0
  26. package/dist/types/Decrement.js +1 -0
  27. package/dist/types/Decrement.js.map +1 -0
  28. package/dist/types/DepthLimit.d.ts +1 -0
  29. package/dist/types/DepthLimit.js +1 -0
  30. package/dist/types/DepthLimit.js.map +1 -0
  31. package/dist/types/FieldKey.d.ts +2 -1
  32. package/dist/types/Get.d.ts +3 -1
  33. package/dist/types/KeyFiltered.d.ts +1 -1
  34. package/dist/types/NormalizedPathFieldSettings.d.ts +24 -0
  35. package/dist/types/NormalizedPathFieldSettings.js +1 -0
  36. package/dist/types/NormalizedPathFieldSettings.js.map +1 -0
  37. package/dist/types/Path.d.ts +4 -3
  38. package/dist/types/PathFiltered.d.ts +4 -3
  39. package/dist/types/QuerySettings.d.ts +12 -17
  40. package/dist/types.d.ts +3 -1
  41. package/doc/README.md +5 -1
  42. package/doc/classes/RequestError.md +5 -5
  43. package/doc/functions/aggregate.md +1 -1
  44. package/doc/functions/branch.md +1 -1
  45. package/doc/functions/cache.md +1 -1
  46. package/doc/functions/combine.md +1 -1
  47. package/doc/functions/comparatorFieldValues.md +33 -0
  48. package/doc/functions/cork.md +1 -1
  49. package/doc/functions/defineCheckQuery.md +1 -1
  50. package/doc/functions/defineCustomFetch.md +1 -1
  51. package/doc/functions/defineGenericFetch.md +1 -1
  52. package/doc/functions/escapeRegex.md +1 -1
  53. package/doc/functions/fetchExternal.md +1 -1
  54. package/doc/functions/fetchLocal.md +1 -1
  55. package/doc/functions/fieldListFromFilter.md +1 -1
  56. package/doc/functions/filterChildren.md +8 -2
  57. package/doc/functions/filterFromValue.md +1 -1
  58. package/doc/functions/get.md +2 -2
  59. package/doc/functions/groupFilters.md +1 -1
  60. package/doc/functions/identity.md +1 -1
  61. package/doc/functions/intrinsicFilter.md +1 -1
  62. package/doc/functions/isFilterGroup.md +1 -1
  63. package/doc/functions/log.md +1 -1
  64. package/doc/functions/normalizeOrder.md +1 -1
  65. package/doc/functions/queryItemList.md +1 -1
  66. package/doc/functions/querySettings.md +33 -0
  67. package/doc/functions/retry.md +1 -1
  68. package/doc/functions/reverseOrder.md +1 -1
  69. package/doc/functions/sameField.md +1 -1
  70. package/doc/functions/sortItemList.md +2 -2
  71. package/doc/functions/splitPath.md +2 -2
  72. package/doc/functions/testFilter.md +1 -1
  73. package/doc/functions/transformerFilterChildren.md +2 -2
  74. package/doc/interfaces/CustomFetch.md +1 -1
  75. package/doc/type-aliases/AggregateFunction.md +1 -1
  76. package/doc/type-aliases/AggregateFunctionOperator.md +1 -1
  77. package/doc/type-aliases/CombineUnion.md +2 -2
  78. package/doc/type-aliases/Context.md +1 -1
  79. package/doc/type-aliases/CustomFieldAggregateMap.md +1 -1
  80. package/doc/type-aliases/CustomFieldMap.md +1 -1
  81. package/doc/type-aliases/Decrement.md +17 -0
  82. package/doc/type-aliases/DepthLimit.md +13 -0
  83. package/doc/type-aliases/Field.md +1 -1
  84. package/doc/type-aliases/FieldFiltered.md +1 -1
  85. package/doc/type-aliases/FieldFunction.md +1 -1
  86. package/doc/type-aliases/FieldFunctionCustom.md +1 -1
  87. package/doc/type-aliases/FieldFunctionFormatDate.md +1 -1
  88. package/doc/type-aliases/FieldFunctionReturn.md +1 -1
  89. package/doc/type-aliases/FieldKey.md +2 -2
  90. package/doc/type-aliases/FieldMap.md +1 -1
  91. package/doc/type-aliases/Filter.md +1 -1
  92. package/doc/type-aliases/FilterArray.md +1 -1
  93. package/doc/type-aliases/FilterBoolean.md +1 -1
  94. package/doc/type-aliases/FilterChildren.md +1 -1
  95. package/doc/type-aliases/FilterCustom.md +1 -1
  96. package/doc/type-aliases/FilterField.md +1 -1
  97. package/doc/type-aliases/FilterGroup.md +1 -1
  98. package/doc/type-aliases/FilterNumber.md +1 -1
  99. package/doc/type-aliases/FilterOperator.md +1 -1
  100. package/doc/type-aliases/FilterString.md +1 -1
  101. package/doc/type-aliases/FilterStringIntersect.md +1 -1
  102. package/doc/type-aliases/FilterStringMatch.md +1 -1
  103. package/doc/type-aliases/Get.md +5 -3
  104. package/doc/type-aliases/Group.md +1 -1
  105. package/doc/type-aliases/Handler.md +1 -1
  106. package/doc/type-aliases/Immutable.md +1 -1
  107. package/doc/type-aliases/InjectCustomFields.md +1 -1
  108. package/doc/type-aliases/IntersectUnion.md +1 -1
  109. package/doc/type-aliases/IntrinsicFilter.md +1 -1
  110. package/doc/type-aliases/Item.md +1 -1
  111. package/doc/type-aliases/Join.md +1 -1
  112. package/doc/type-aliases/Key.md +1 -1
  113. package/doc/type-aliases/KeyFiltered.md +2 -2
  114. package/doc/type-aliases/KeyFromUnion.md +1 -1
  115. package/doc/type-aliases/Locale.md +1 -1
  116. package/doc/type-aliases/NextHandler.md +1 -1
  117. package/doc/type-aliases/NormalizedPathFieldSettings.md +57 -0
  118. package/doc/type-aliases/Order.md +1 -1
  119. package/doc/type-aliases/OrderNormalized.md +1 -1
  120. package/doc/type-aliases/Parameters.md +1 -1
  121. package/doc/type-aliases/Path.md +3 -3
  122. package/doc/type-aliases/PathFiltered.md +3 -3
  123. package/doc/type-aliases/Primitive.md +1 -1
  124. package/doc/type-aliases/PrimitiveObject.md +1 -1
  125. package/doc/type-aliases/Query.md +1 -1
  126. package/doc/type-aliases/QueryAggregate.md +1 -1
  127. package/doc/type-aliases/QueryCreate.md +1 -1
  128. package/doc/type-aliases/QueryCreateMultiple.md +1 -1
  129. package/doc/type-aliases/QueryDelete.md +1 -1
  130. package/doc/type-aliases/QueryDeleteMultiple.md +1 -1
  131. package/doc/type-aliases/QueryMethod.md +1 -1
  132. package/doc/type-aliases/QueryRead.md +1 -1
  133. package/doc/type-aliases/QueryReadMultiple.md +1 -1
  134. package/doc/type-aliases/QuerySettings.md +36 -30
  135. package/doc/type-aliases/QueryUpdate.md +1 -1
  136. package/doc/type-aliases/QueryUpdateMultiple.md +1 -1
  137. package/doc/type-aliases/Result.md +1 -1
  138. package/doc/type-aliases/Store.md +1 -1
  139. package/doc/type-aliases/Value.md +1 -1
  140. package/doc/type-aliases/ValueMap.md +1 -1
  141. package/doc/variables/CACHE.md +1 -1
  142. package/doc/variables/FILTER_ANY.md +1 -1
  143. package/doc/variables/FILTER_NONE.md +1 -1
  144. package/doc/variables/SELF.md +1 -1
  145. package/lib/tools/comparatorFieldValues.ts +46 -0
  146. package/lib/tools/filterChildren.ts +3 -1
  147. package/lib/tools/get.ts +9 -4
  148. package/lib/tools/querySettings.ts +20 -0
  149. package/lib/tools/sortItemList.test.ts +31 -8
  150. package/lib/tools/sortItemList.ts +21 -41
  151. package/lib/tools/testFilter.test.ts +35 -12
  152. package/lib/tools/testFilter.ts +1 -2
  153. package/lib/tools/transformerFilterChildren.ts +4 -26
  154. package/lib/tools.ts +2 -0
  155. package/lib/types/CombineUnion.ts +12 -10
  156. package/lib/types/Decrement.ts +5 -0
  157. package/lib/types/DepthLimit.ts +1 -0
  158. package/lib/types/FieldKey.ts +6 -1
  159. package/lib/types/Get.ts +17 -9
  160. package/lib/types/KeyFiltered.ts +14 -10
  161. package/lib/types/NormalizedPathFieldSettings.ts +25 -0
  162. package/lib/types/Path.ts +18 -15
  163. package/lib/types/PathFiltered.ts +20 -17
  164. package/lib/types/QuerySettings.ts +16 -17
  165. package/lib/types.ts +3 -1
  166. package/package.json +2 -2
  167. package/dist/types/Increment.d.ts +0 -4
  168. package/dist/types/Increment.js +0 -1
  169. package/dist/types/Increment.js.map +0 -1
  170. package/doc/type-aliases/Increment.md +0 -17
  171. package/lib/types/Increment.ts +0 -5
@@ -1,20 +1,23 @@
1
- import type { Increment } from "./Increment";
1
+ import type { Decrement } from "./Decrement";
2
+ import type { DepthLimit } from "./DepthLimit";
2
3
  import type { Key } from "./Key";
3
4
 
4
- export type PathFiltered<T, P, D = 7> = [0] extends [1 & T]
5
+ export type PathFiltered<T, P, D = DepthLimit> = [unknown] extends [T]
5
6
  ? readonly (Key | never)[]
6
- : D extends -1
7
- ? never
8
- : T extends P
9
- ? readonly never[]
10
- : T extends ReadonlyArray<infer I>
11
- ? Extract<I, P> extends never
12
- ? readonly [number, ...PathFiltered<I, P, Increment<D>>]
13
- : readonly [number]
14
- : T extends object
15
- ? {
16
- [K in keyof T]: Extract<T[K], P> extends never
17
- ? readonly [K, ...PathFiltered<T[K], P, Increment<D>>]
18
- : readonly [K];
19
- }[keyof T]
20
- : never;
7
+ : [0] extends [1 & T]
8
+ ? readonly (Key | never)[]
9
+ : D extends -1
10
+ ? never
11
+ : T extends P
12
+ ? readonly never[]
13
+ : T extends ReadonlyArray<infer I>
14
+ ? Extract<I, P> extends never
15
+ ? readonly [number, ...PathFiltered<I, P, Decrement<D>>]
16
+ : readonly [number]
17
+ : T extends object
18
+ ? {
19
+ [K in keyof T]: Extract<T[K], P> extends never
20
+ ? readonly [K, ...PathFiltered<T[K], P, Decrement<D>>]
21
+ : readonly [K];
22
+ }[keyof T]
23
+ : never;
@@ -1,4 +1,4 @@
1
- import type { FieldFiltered } from "./FieldFiltered";
1
+ import type { Field } from "./Field";
2
2
  import type { FilterChildren } from "./FilterChildren";
3
3
  import type { IntrinsicFilter } from "./IntrinsicFilter";
4
4
 
@@ -6,22 +6,6 @@ import type { IntrinsicFilter } from "./IntrinsicFilter";
6
6
  * Settings to use when doing a query.
7
7
  */
8
8
  export type QuerySettings<T> = {
9
- /**
10
- * Path to the field that contains the path value of an item, used for displaying items in a tree.
11
- */
12
- pathField?: FieldFiltered<T, string>;
13
- /**
14
- * String used to escape the separator.
15
- *
16
- * @default "\\"
17
- */
18
- pathFieldSeparatorEscape?: string;
19
- /**
20
- * Maps path fields to a string used to separate the path nodes of a field value.
21
- *
22
- * @default "/"
23
- */
24
- pathFieldSeparator?: string;
25
9
  /**
26
10
  * Returns a filter that captures the items expressed by the provided `FilterChildren`. The return filter cannot use filters of type `FilterChildren` or `FilterContext`.
27
11
  *
@@ -29,6 +13,21 @@ export type QuerySettings<T> = {
29
13
  * @returns A filter that captures the items expressed by the provided `FilterChildren`.
30
14
  */
31
15
  transformFilterChildren?: (filter: FilterChildren<T>) => IntrinsicFilter<T>;
16
+ /**
17
+ * Compares two values of a field for sorting purposes. If not provided, values are compared using the default comparison operators (`>`, `<`, `===`).
18
+ *
19
+ * This function is called only when both `a` and `b` are defined and different. If it returns `undefined`, the default comparison operators are used as a fallback.
20
+ *
21
+ * @param a - The first value to compare.
22
+ * @param b - The second value to compare.
23
+ * @param field - The field for which the values are compared.
24
+ * @returns `-1` if `a` should be sorted before `b`, `1` if `a` should be sorted after `b`, `0` if they are considered equal, or `undefined` to use the default comparison operators.
25
+ */
26
+ compareFieldValues?<T>(
27
+ field: Field<T>,
28
+ a: NonNullable<any>,
29
+ b: NonNullable<any>,
30
+ ): -1 | 0 | 1 | undefined;
32
31
  /**
33
32
  * Abort signal to abort the query.
34
33
  */
package/lib/types.ts CHANGED
@@ -6,6 +6,8 @@ export type { Context } from "./types/Context";
6
6
  export type { CustomFetch } from "./types/CustomFetch";
7
7
  export type { CustomFieldAggregateMap } from "./types/CustomFieldAggregateMap";
8
8
  export type { CustomFieldMap } from "./types/CustomFieldMap";
9
+ export type { Decrement } from "./types/Decrement";
10
+ export type { DepthLimit } from "./types/DepthLimit";
9
11
  export type { Field } from "./types/Field";
10
12
  export type { FieldFiltered } from "./types/FieldFiltered";
11
13
  export type { FieldFunction } from "./types/FieldFunction";
@@ -30,7 +32,6 @@ export type { Get } from "./types/Get";
30
32
  export type { Group } from "./types/Group";
31
33
  export type { Handler } from "./types/Handler";
32
34
  export type { Immutable } from "./types/Immutable";
33
- export type { Increment } from "./types/Increment";
34
35
  export type { InjectCustomFields } from "./types/InjectCustomFields";
35
36
  export type { IntersectUnion } from "./types/IntersectUnion";
36
37
  export type { IntrinsicFilter } from "./types/IntrinsicFilter";
@@ -41,6 +42,7 @@ export type { KeyFiltered } from "./types/KeyFiltered";
41
42
  export type { KeyFromUnion } from "./types/KeyFromUnion";
42
43
  export type { Locale } from "./types/Locale";
43
44
  export type { NextHandler } from "./types/NextHandler";
45
+ export type { NormalizedPathFieldSettings } from "./types/NormalizedPathFieldSettings";
44
46
  export type { Order } from "./types/Order";
45
47
  export type { OrderNormalized } from "./types/OrderNormalized";
46
48
  export type { Parameters } from "./types/Parameters";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "quetch",
3
- "version": "0.30.0",
3
+ "version": "0.31.1",
4
4
  "type": "module",
5
5
  "main": "./dist/main.js",
6
6
  "exports": {
@@ -39,7 +39,7 @@
39
39
  "lint": "npm run lint:ts",
40
40
  "lint:fix": "npm run lint:ts:fix",
41
41
  "lint:ts": "eslint . && tsc --project tsconfig.package.json --noEmit",
42
- "lint:types": "tsc --project tsconfig.package.json --noEmit",
42
+ "lint:types:trace": "tsc --project tsconfig.package.json --noEmit --generateTrace ./trace",
43
43
  "lint:ts:fix": "eslint --fix .",
44
44
  "release:init": "npm publish --access=public",
45
45
  "release:patch": "npm version patch && git push origin --follow-tags && npm publish",
@@ -1,4 +0,0 @@
1
- type Digit = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9;
2
- type NextDigit = [1, 2, 3, 4, 5, 6, 7, 8, 9, -1];
3
- export type Increment<D> = D extends Digit ? NextDigit[D] : -1;
4
- export {};
@@ -1 +0,0 @@
1
- //# sourceMappingURL=Increment.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Increment.js","sourceRoot":"","sources":["../../lib/types/Increment.ts"],"names":[],"mappings":""}
@@ -1,17 +0,0 @@
1
- [**quetch**](../README.md)
2
-
3
- ***
4
-
5
- [quetch](../README.md) / Increment
6
-
7
- # Type Alias: Increment\<D\>
8
-
9
- > **Increment**\<`D`\>: `D` *extends* `Digit` ? `NextDigit`\[`D`\] : `-1`
10
-
11
- ## Type Parameters
12
-
13
- • **D**
14
-
15
- ## Defined in
16
-
17
- [lib/types/Increment.ts:5](https://github.com/nevoland/quetch/blob/94f546831241bf41f83cf97787b7e923c8cf7824/lib/types/Increment.ts#L5)
@@ -1,5 +0,0 @@
1
- type Digit = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9;
2
-
3
- type NextDigit = [1, 2, 3, 4, 5, 6, 7, 8, 9, -1];
4
-
5
- export type Increment<D> = D extends Digit ? NextDigit[D] : -1;