quetch 0.30.0 → 0.31.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.
- package/dist/tools/comparatorFieldValues.d.ts +8 -0
- package/dist/tools/comparatorFieldValues.js +26 -0
- package/dist/tools/comparatorFieldValues.js.map +1 -0
- package/dist/tools/get.d.ts +4 -4
- package/dist/tools/get.js +6 -2
- package/dist/tools/get.js.map +1 -1
- package/dist/tools/querySettings.d.ts +8 -0
- package/dist/tools/querySettings.js +16 -0
- package/dist/tools/querySettings.js.map +1 -0
- package/dist/tools/sortItemList.d.ts +4 -4
- package/dist/tools/sortItemList.js +17 -24
- package/dist/tools/sortItemList.js.map +1 -1
- package/dist/tools/transformerFilterChildren.d.ts +2 -22
- package/dist/tools/transformerFilterChildren.js +1 -4
- package/dist/tools/transformerFilterChildren.js.map +1 -1
- package/dist/tools.d.ts +2 -0
- package/dist/tools.js +2 -0
- package/dist/tools.js.map +1 -1
- package/dist/types/CombineUnion.d.ts +1 -1
- package/dist/types/Decrement.d.ts +4 -0
- package/dist/types/Decrement.js +1 -0
- package/dist/types/Decrement.js.map +1 -0
- package/dist/types/DepthLimit.d.ts +1 -0
- package/dist/types/DepthLimit.js +1 -0
- package/dist/types/DepthLimit.js.map +1 -0
- package/dist/types/FieldKey.d.ts +2 -1
- package/dist/types/Get.d.ts +3 -1
- package/dist/types/KeyFiltered.d.ts +1 -1
- package/dist/types/NormalizedPathFieldSettings.d.ts +24 -0
- package/dist/types/NormalizedPathFieldSettings.js +1 -0
- package/dist/types/NormalizedPathFieldSettings.js.map +1 -0
- package/dist/types/Path.d.ts +4 -3
- package/dist/types/PathFiltered.d.ts +4 -3
- package/dist/types/QuerySettings.d.ts +12 -17
- package/dist/types.d.ts +3 -1
- package/doc/README.md +5 -1
- package/doc/classes/RequestError.md +5 -5
- package/doc/functions/aggregate.md +1 -1
- package/doc/functions/branch.md +1 -1
- package/doc/functions/cache.md +1 -1
- package/doc/functions/combine.md +1 -1
- package/doc/functions/comparatorFieldValues.md +33 -0
- package/doc/functions/cork.md +1 -1
- package/doc/functions/defineCheckQuery.md +1 -1
- package/doc/functions/defineCustomFetch.md +1 -1
- package/doc/functions/defineGenericFetch.md +1 -1
- package/doc/functions/escapeRegex.md +1 -1
- package/doc/functions/fetchExternal.md +1 -1
- package/doc/functions/fetchLocal.md +1 -1
- package/doc/functions/fieldListFromFilter.md +1 -1
- package/doc/functions/filterChildren.md +1 -1
- package/doc/functions/filterFromValue.md +1 -1
- package/doc/functions/get.md +2 -2
- package/doc/functions/groupFilters.md +1 -1
- package/doc/functions/identity.md +1 -1
- package/doc/functions/intrinsicFilter.md +1 -1
- package/doc/functions/isFilterGroup.md +1 -1
- package/doc/functions/log.md +1 -1
- package/doc/functions/normalizeOrder.md +1 -1
- package/doc/functions/queryItemList.md +1 -1
- package/doc/functions/querySettings.md +33 -0
- package/doc/functions/retry.md +1 -1
- package/doc/functions/reverseOrder.md +1 -1
- package/doc/functions/sameField.md +1 -1
- package/doc/functions/sortItemList.md +2 -2
- package/doc/functions/splitPath.md +2 -2
- package/doc/functions/testFilter.md +1 -1
- package/doc/functions/transformerFilterChildren.md +2 -2
- package/doc/interfaces/CustomFetch.md +1 -1
- package/doc/type-aliases/AggregateFunction.md +1 -1
- package/doc/type-aliases/AggregateFunctionOperator.md +1 -1
- package/doc/type-aliases/CombineUnion.md +2 -2
- package/doc/type-aliases/Context.md +1 -1
- package/doc/type-aliases/CustomFieldAggregateMap.md +1 -1
- package/doc/type-aliases/CustomFieldMap.md +1 -1
- package/doc/type-aliases/Decrement.md +17 -0
- package/doc/type-aliases/DepthLimit.md +13 -0
- package/doc/type-aliases/Field.md +1 -1
- package/doc/type-aliases/FieldFiltered.md +1 -1
- package/doc/type-aliases/FieldFunction.md +1 -1
- package/doc/type-aliases/FieldFunctionCustom.md +1 -1
- package/doc/type-aliases/FieldFunctionFormatDate.md +1 -1
- package/doc/type-aliases/FieldFunctionReturn.md +1 -1
- package/doc/type-aliases/FieldKey.md +2 -2
- package/doc/type-aliases/FieldMap.md +1 -1
- package/doc/type-aliases/Filter.md +1 -1
- package/doc/type-aliases/FilterArray.md +1 -1
- package/doc/type-aliases/FilterBoolean.md +1 -1
- package/doc/type-aliases/FilterChildren.md +1 -1
- package/doc/type-aliases/FilterCustom.md +1 -1
- package/doc/type-aliases/FilterField.md +1 -1
- package/doc/type-aliases/FilterGroup.md +1 -1
- package/doc/type-aliases/FilterNumber.md +1 -1
- package/doc/type-aliases/FilterOperator.md +1 -1
- package/doc/type-aliases/FilterString.md +1 -1
- package/doc/type-aliases/FilterStringIntersect.md +1 -1
- package/doc/type-aliases/FilterStringMatch.md +1 -1
- package/doc/type-aliases/Get.md +5 -3
- package/doc/type-aliases/Group.md +1 -1
- package/doc/type-aliases/Handler.md +1 -1
- package/doc/type-aliases/Immutable.md +1 -1
- package/doc/type-aliases/InjectCustomFields.md +1 -1
- package/doc/type-aliases/IntersectUnion.md +1 -1
- package/doc/type-aliases/IntrinsicFilter.md +1 -1
- package/doc/type-aliases/Item.md +1 -1
- package/doc/type-aliases/Join.md +1 -1
- package/doc/type-aliases/Key.md +1 -1
- package/doc/type-aliases/KeyFiltered.md +2 -2
- package/doc/type-aliases/KeyFromUnion.md +1 -1
- package/doc/type-aliases/Locale.md +1 -1
- package/doc/type-aliases/NextHandler.md +1 -1
- package/doc/type-aliases/NormalizedPathFieldSettings.md +57 -0
- package/doc/type-aliases/Order.md +1 -1
- package/doc/type-aliases/OrderNormalized.md +1 -1
- package/doc/type-aliases/Parameters.md +1 -1
- package/doc/type-aliases/Path.md +3 -3
- package/doc/type-aliases/PathFiltered.md +3 -3
- package/doc/type-aliases/Primitive.md +1 -1
- package/doc/type-aliases/PrimitiveObject.md +1 -1
- package/doc/type-aliases/Query.md +1 -1
- package/doc/type-aliases/QueryAggregate.md +1 -1
- package/doc/type-aliases/QueryCreate.md +1 -1
- package/doc/type-aliases/QueryCreateMultiple.md +1 -1
- package/doc/type-aliases/QueryDelete.md +1 -1
- package/doc/type-aliases/QueryDeleteMultiple.md +1 -1
- package/doc/type-aliases/QueryMethod.md +1 -1
- package/doc/type-aliases/QueryRead.md +1 -1
- package/doc/type-aliases/QueryReadMultiple.md +1 -1
- package/doc/type-aliases/QuerySettings.md +36 -30
- package/doc/type-aliases/QueryUpdate.md +1 -1
- package/doc/type-aliases/QueryUpdateMultiple.md +1 -1
- package/doc/type-aliases/Result.md +1 -1
- package/doc/type-aliases/Store.md +1 -1
- package/doc/type-aliases/Value.md +1 -1
- package/doc/type-aliases/ValueMap.md +1 -1
- package/doc/variables/CACHE.md +1 -1
- package/doc/variables/FILTER_ANY.md +1 -1
- package/doc/variables/FILTER_NONE.md +1 -1
- package/doc/variables/SELF.md +1 -1
- package/lib/tools/comparatorFieldValues.ts +46 -0
- package/lib/tools/get.ts +9 -4
- package/lib/tools/querySettings.ts +20 -0
- package/lib/tools/sortItemList.test.ts +31 -8
- package/lib/tools/sortItemList.ts +21 -41
- package/lib/tools/testFilter.test.ts +35 -12
- package/lib/tools/transformerFilterChildren.ts +3 -26
- package/lib/tools.ts +2 -0
- package/lib/types/CombineUnion.ts +12 -10
- package/lib/types/Decrement.ts +5 -0
- package/lib/types/DepthLimit.ts +1 -0
- package/lib/types/FieldKey.ts +6 -1
- package/lib/types/Get.ts +17 -9
- package/lib/types/KeyFiltered.ts +14 -10
- package/lib/types/NormalizedPathFieldSettings.ts +25 -0
- package/lib/types/Path.ts +18 -15
- package/lib/types/PathFiltered.ts +20 -17
- package/lib/types/QuerySettings.ts +16 -17
- package/lib/types.ts +3 -1
- package/package.json +2 -2
- package/dist/types/Increment.d.ts +0 -4
- package/dist/types/Increment.js +0 -1
- package/dist/types/Increment.js.map +0 -1
- package/doc/type-aliases/Increment.md +0 -17
- package/lib/types/Increment.ts +0 -5
|
@@ -16,4 +16,4 @@ Filter that does not rely on query settings, and thus can be evaluated directly
|
|
|
16
16
|
|
|
17
17
|
## Defined in
|
|
18
18
|
|
|
19
|
-
[lib/types/IntrinsicFilter.ts:6](https://github.com/nevoland/quetch/blob/
|
|
19
|
+
[lib/types/IntrinsicFilter.ts:6](https://github.com/nevoland/quetch/blob/1cf615b166541d2a753e34c0a2dd4a9474026d7a/lib/types/IntrinsicFilter.ts#L6)
|
package/doc/type-aliases/Item.md
CHANGED
|
@@ -18,4 +18,4 @@ Returns the inferred item type of an array, or an alternative type if it is some
|
|
|
18
18
|
|
|
19
19
|
## Defined in
|
|
20
20
|
|
|
21
|
-
[lib/types/Item.ts:4](https://github.com/nevoland/quetch/blob/
|
|
21
|
+
[lib/types/Item.ts:4](https://github.com/nevoland/quetch/blob/1cf615b166541d2a753e34c0a2dd4a9474026d7a/lib/types/Item.ts#L4)
|
package/doc/type-aliases/Join.md
CHANGED
|
@@ -16,4 +16,4 @@
|
|
|
16
16
|
|
|
17
17
|
## Defined in
|
|
18
18
|
|
|
19
|
-
[lib/types/Join.ts:1](https://github.com/nevoland/quetch/blob/
|
|
19
|
+
[lib/types/Join.ts:1](https://github.com/nevoland/quetch/blob/1cf615b166541d2a753e34c0a2dd4a9474026d7a/lib/types/Join.ts#L1)
|
package/doc/type-aliases/Key.md
CHANGED
|
@@ -10,4 +10,4 @@
|
|
|
10
10
|
|
|
11
11
|
## Defined in
|
|
12
12
|
|
|
13
|
-
[lib/types/Key.ts:1](https://github.com/nevoland/quetch/blob/
|
|
13
|
+
[lib/types/Key.ts:1](https://github.com/nevoland/quetch/blob/1cf615b166541d2a753e34c0a2dd4a9474026d7a/lib/types/Key.ts#L1)
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
# Type Alias: KeyFiltered\<T, P\>
|
|
8
8
|
|
|
9
|
-
> **KeyFiltered**\<`T`, `P`\>: [`0`] *extends* [`1` & `T`] ? [`Key`](Key.md) \| `SymbolSelf` : `T` *extends* `string` \| `number` \| `boolean` \| `bigint` \| `symbol` ? `T` *extends* `P` ? `SymbolSelf` : `never` : `T` *extends* `object` ? keyof `{ [K in keyof T as Extract<T[K], P> extends never ? never : K]-?: T[K] }` : `never`
|
|
9
|
+
> **KeyFiltered**\<`T`, `P`\>: [`unknown`] *extends* [`T`] ? [`Key`](Key.md) \| `SymbolSelf` : [`0`] *extends* [`1` & `T`] ? [`Key`](Key.md) \| `SymbolSelf` : `T` *extends* `string` \| `number` \| `boolean` \| `bigint` \| `symbol` ? `T` *extends* `P` ? `SymbolSelf` : `never` : `T` *extends* `object` ? keyof `{ [K in keyof T as Extract<T[K], P> extends never ? never : K]-?: T[K] }` : `never`
|
|
10
10
|
|
|
11
11
|
Returns union of keys whose mapped value extend the provided `P` type.
|
|
12
12
|
|
|
@@ -18,4 +18,4 @@ Returns union of keys whose mapped value extend the provided `P` type.
|
|
|
18
18
|
|
|
19
19
|
## Defined in
|
|
20
20
|
|
|
21
|
-
[lib/types/KeyFiltered.ts:10](https://github.com/nevoland/quetch/blob/
|
|
21
|
+
[lib/types/KeyFiltered.ts:10](https://github.com/nevoland/quetch/blob/1cf615b166541d2a753e34c0a2dd4a9474026d7a/lib/types/KeyFiltered.ts#L10)
|
|
@@ -14,4 +14,4 @@
|
|
|
14
14
|
|
|
15
15
|
## Defined in
|
|
16
16
|
|
|
17
|
-
[lib/types/KeyFromUnion.ts:1](https://github.com/nevoland/quetch/blob/
|
|
17
|
+
[lib/types/KeyFromUnion.ts:1](https://github.com/nevoland/quetch/blob/1cf615b166541d2a753e34c0a2dd4a9474026d7a/lib/types/KeyFromUnion.ts#L1)
|
|
@@ -10,4 +10,4 @@
|
|
|
10
10
|
|
|
11
11
|
## Defined in
|
|
12
12
|
|
|
13
|
-
[lib/types/Locale.ts:1](https://github.com/nevoland/quetch/blob/
|
|
13
|
+
[lib/types/Locale.ts:1](https://github.com/nevoland/quetch/blob/1cf615b166541d2a753e34c0a2dd4a9474026d7a/lib/types/Locale.ts#L1)
|
|
@@ -28,4 +28,4 @@ Handles an `input` query and returns an `output` promise.
|
|
|
28
28
|
|
|
29
29
|
## Defined in
|
|
30
30
|
|
|
31
|
-
[lib/types/NextHandler.ts:4](https://github.com/nevoland/quetch/blob/
|
|
31
|
+
[lib/types/NextHandler.ts:4](https://github.com/nevoland/quetch/blob/1cf615b166541d2a753e34c0a2dd4a9474026d7a/lib/types/NextHandler.ts#L4)
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
[**quetch**](../README.md)
|
|
2
|
+
|
|
3
|
+
***
|
|
4
|
+
|
|
5
|
+
[quetch](../README.md) / NormalizedPathFieldSettings
|
|
6
|
+
|
|
7
|
+
# Type Alias: NormalizedPathFieldSettings\<T\>
|
|
8
|
+
|
|
9
|
+
> **NormalizedPathFieldSettings**\<`T`\>: `object`
|
|
10
|
+
|
|
11
|
+
Settings for fields that contain path values of items, used for displaying items in a tree.
|
|
12
|
+
|
|
13
|
+
## Type Parameters
|
|
14
|
+
|
|
15
|
+
• **T**
|
|
16
|
+
|
|
17
|
+
## Type declaration
|
|
18
|
+
|
|
19
|
+
### pathField?
|
|
20
|
+
|
|
21
|
+
> `optional` **pathField**: [`FieldFiltered`](FieldFiltered.md)\<`T`, `string`\>
|
|
22
|
+
|
|
23
|
+
Path to the field that contains the path value of an item, used for displaying items in a tree.
|
|
24
|
+
|
|
25
|
+
#### Default
|
|
26
|
+
|
|
27
|
+
```ts
|
|
28
|
+
"path"
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
### pathFieldSeparator?
|
|
32
|
+
|
|
33
|
+
> `optional` **pathFieldSeparator**: `string`
|
|
34
|
+
|
|
35
|
+
Maps path fields to a string used to separate the path nodes of a field value.
|
|
36
|
+
|
|
37
|
+
#### Default
|
|
38
|
+
|
|
39
|
+
```ts
|
|
40
|
+
"/"
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
### pathFieldSeparatorEscape?
|
|
44
|
+
|
|
45
|
+
> `optional` **pathFieldSeparatorEscape**: `string`
|
|
46
|
+
|
|
47
|
+
String used to escape the separator.
|
|
48
|
+
|
|
49
|
+
#### Default
|
|
50
|
+
|
|
51
|
+
```ts
|
|
52
|
+
"\\"
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## Defined in
|
|
56
|
+
|
|
57
|
+
[lib/types/NormalizedPathFieldSettings.ts:6](https://github.com/nevoland/quetch/blob/1cf615b166541d2a753e34c0a2dd4a9474026d7a/lib/types/NormalizedPathFieldSettings.ts#L6)
|
|
@@ -16,4 +16,4 @@ Order item.
|
|
|
16
16
|
|
|
17
17
|
## Defined in
|
|
18
18
|
|
|
19
|
-
[lib/types/Order.ts:6](https://github.com/nevoland/quetch/blob/
|
|
19
|
+
[lib/types/Order.ts:6](https://github.com/nevoland/quetch/blob/1cf615b166541d2a753e34c0a2dd4a9474026d7a/lib/types/Order.ts#L6)
|
|
@@ -24,4 +24,4 @@
|
|
|
24
24
|
|
|
25
25
|
## Defined in
|
|
26
26
|
|
|
27
|
-
[lib/types/OrderNormalized.ts:3](https://github.com/nevoland/quetch/blob/
|
|
27
|
+
[lib/types/OrderNormalized.ts:3](https://github.com/nevoland/quetch/blob/1cf615b166541d2a753e34c0a2dd4a9474026d7a/lib/types/OrderNormalized.ts#L3)
|
|
@@ -10,4 +10,4 @@
|
|
|
10
10
|
|
|
11
11
|
## Defined in
|
|
12
12
|
|
|
13
|
-
[lib/types/Parameters.ts:1](https://github.com/nevoland/quetch/blob/
|
|
13
|
+
[lib/types/Parameters.ts:1](https://github.com/nevoland/quetch/blob/1cf615b166541d2a753e34c0a2dd4a9474026d7a/lib/types/Parameters.ts#L1)
|
package/doc/type-aliases/Path.md
CHANGED
|
@@ -6,14 +6,14 @@
|
|
|
6
6
|
|
|
7
7
|
# Type Alias: Path\<T, D\>
|
|
8
8
|
|
|
9
|
-
> **Path**\<`T`, `D`\>: [`0`] *extends* [`1` & `T`] ? readonly ([`Key`](Key.md) \| `never`)[] : `D` *extends* `-1` ? `never` : `T` *extends* [`Primitive`](Primitive.md) ? readonly `never`[] : `T` *extends* infer P[] ? readonly [`number`] \| readonly [`number`, `...Path<P,
|
|
9
|
+
> **Path**\<`T`, `D`\>: [`unknown`] *extends* [`T`] ? readonly ([`Key`](Key.md) \| `never`)[] : [`0`] *extends* [`1` & `T`] ? readonly ([`Key`](Key.md) \| `never`)[] : `D` *extends* `-1` ? `never` : `T` *extends* [`Primitive`](Primitive.md) ? readonly `never`[] : `T` *extends* infer P[] ? readonly [`number`] \| readonly [`number`, `...Path<P, Decrement<(...)>>`] : `T` *extends* `object` ? \{ \[K in keyof T\]: readonly \[(...)\] \| readonly \[(...), (...)\] \}\[keyof `T`\] : `never`
|
|
10
10
|
|
|
11
11
|
## Type Parameters
|
|
12
12
|
|
|
13
13
|
• **T**
|
|
14
14
|
|
|
15
|
-
• **D** = `
|
|
15
|
+
• **D** = [`DepthLimit`](DepthLimit.md)
|
|
16
16
|
|
|
17
17
|
## Defined in
|
|
18
18
|
|
|
19
|
-
[lib/types/Path.ts:
|
|
19
|
+
[lib/types/Path.ts:6](https://github.com/nevoland/quetch/blob/1cf615b166541d2a753e34c0a2dd4a9474026d7a/lib/types/Path.ts#L6)
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
# Type Alias: PathFiltered\<T, P, D\>
|
|
8
8
|
|
|
9
|
-
> **PathFiltered**\<`T`, `P`, `D`\>: [`0`] *extends* [`1` & `T`] ? readonly ([`Key`](Key.md) \| `never`)[] : `D` *extends* `-1` ? `never` : `T` *extends* `P` ? readonly `never`[] : `T` *extends* `ReadonlyArray`\<infer I\> ? `Extract`\<`I`, `P`\> *extends* `never` ? readonly [`number`, `...PathFiltered<I, P,
|
|
9
|
+
> **PathFiltered**\<`T`, `P`, `D`\>: [`unknown`] *extends* [`T`] ? readonly ([`Key`](Key.md) \| `never`)[] : [`0`] *extends* [`1` & `T`] ? readonly ([`Key`](Key.md) \| `never`)[] : `D` *extends* `-1` ? `never` : `T` *extends* `P` ? readonly `never`[] : `T` *extends* `ReadonlyArray`\<infer I\> ? `Extract`\<`I`, `P`\> *extends* `never` ? readonly [`number`, `...PathFiltered<I, P, Decrement<(...)>>`] : readonly [`number`] : `T` *extends* `object` ? `{ [K in keyof T]: Extract<(...)[(...)], P> extends never ? readonly [(...), (...)] : readonly [(...)] }`\[keyof `T`\] : `never`
|
|
10
10
|
|
|
11
11
|
## Type Parameters
|
|
12
12
|
|
|
@@ -14,8 +14,8 @@
|
|
|
14
14
|
|
|
15
15
|
• **P**
|
|
16
16
|
|
|
17
|
-
• **D** = `
|
|
17
|
+
• **D** = [`DepthLimit`](DepthLimit.md)
|
|
18
18
|
|
|
19
19
|
## Defined in
|
|
20
20
|
|
|
21
|
-
[lib/types/PathFiltered.ts:
|
|
21
|
+
[lib/types/PathFiltered.ts:5](https://github.com/nevoland/quetch/blob/1cf615b166541d2a753e34c0a2dd4a9474026d7a/lib/types/PathFiltered.ts#L5)
|
|
@@ -10,4 +10,4 @@
|
|
|
10
10
|
|
|
11
11
|
## Defined in
|
|
12
12
|
|
|
13
|
-
[lib/types/Primitive.ts:1](https://github.com/nevoland/quetch/blob/
|
|
13
|
+
[lib/types/Primitive.ts:1](https://github.com/nevoland/quetch/blob/1cf615b166541d2a753e34c0a2dd4a9474026d7a/lib/types/Primitive.ts#L1)
|
|
@@ -10,4 +10,4 @@
|
|
|
10
10
|
|
|
11
11
|
## Defined in
|
|
12
12
|
|
|
13
|
-
[lib/types/PrimitiveObject.ts:1](https://github.com/nevoland/quetch/blob/
|
|
13
|
+
[lib/types/PrimitiveObject.ts:1](https://github.com/nevoland/quetch/blob/1cf615b166541d2a753e34c0a2dd4a9474026d7a/lib/types/PrimitiveObject.ts#L1)
|
|
@@ -16,4 +16,4 @@ Query that fetches or mutates an entity.
|
|
|
16
16
|
|
|
17
17
|
## Defined in
|
|
18
18
|
|
|
19
|
-
[lib/types/Query.ts:14](https://github.com/nevoland/quetch/blob/
|
|
19
|
+
[lib/types/Query.ts:14](https://github.com/nevoland/quetch/blob/1cf615b166541d2a753e34c0a2dd4a9474026d7a/lib/types/Query.ts#L14)
|
|
@@ -68,4 +68,4 @@ Query settings.
|
|
|
68
68
|
|
|
69
69
|
## Defined in
|
|
70
70
|
|
|
71
|
-
[lib/types/QueryAggregate.ts:11](https://github.com/nevoland/quetch/blob/
|
|
71
|
+
[lib/types/QueryAggregate.ts:11](https://github.com/nevoland/quetch/blob/1cf615b166541d2a753e34c0a2dd4a9474026d7a/lib/types/QueryAggregate.ts#L11)
|
|
@@ -50,4 +50,4 @@ Value properties of the item to create.
|
|
|
50
50
|
|
|
51
51
|
## Defined in
|
|
52
52
|
|
|
53
|
-
[lib/types/QueryCreate.ts:8](https://github.com/nevoland/quetch/blob/
|
|
53
|
+
[lib/types/QueryCreate.ts:8](https://github.com/nevoland/quetch/blob/1cf615b166541d2a753e34c0a2dd4a9474026d7a/lib/types/QueryCreate.ts#L8)
|
|
@@ -48,4 +48,4 @@ Query settings.
|
|
|
48
48
|
|
|
49
49
|
## Defined in
|
|
50
50
|
|
|
51
|
-
[lib/types/QueryCreateMultiple.ts:8](https://github.com/nevoland/quetch/blob/
|
|
51
|
+
[lib/types/QueryCreateMultiple.ts:8](https://github.com/nevoland/quetch/blob/1cf615b166541d2a753e34c0a2dd4a9474026d7a/lib/types/QueryCreateMultiple.ts#L8)
|
|
@@ -60,4 +60,4 @@ Query settings.
|
|
|
60
60
|
|
|
61
61
|
## Defined in
|
|
62
62
|
|
|
63
|
-
[lib/types/QueryDelete.ts:9](https://github.com/nevoland/quetch/blob/
|
|
63
|
+
[lib/types/QueryDelete.ts:9](https://github.com/nevoland/quetch/blob/1cf615b166541d2a753e34c0a2dd4a9474026d7a/lib/types/QueryDelete.ts#L9)
|
|
@@ -62,4 +62,4 @@ Query settings.
|
|
|
62
62
|
|
|
63
63
|
## Defined in
|
|
64
64
|
|
|
65
|
-
[lib/types/QueryDeleteMultiple.ts:9](https://github.com/nevoland/quetch/blob/
|
|
65
|
+
[lib/types/QueryDeleteMultiple.ts:9](https://github.com/nevoland/quetch/blob/1cf615b166541d2a753e34c0a2dd4a9474026d7a/lib/types/QueryDeleteMultiple.ts#L9)
|
|
@@ -12,4 +12,4 @@ Available query methods.
|
|
|
12
12
|
|
|
13
13
|
## Defined in
|
|
14
14
|
|
|
15
|
-
[lib/types/QueryMethod.ts:6](https://github.com/nevoland/quetch/blob/
|
|
15
|
+
[lib/types/QueryMethod.ts:6](https://github.com/nevoland/quetch/blob/1cf615b166541d2a753e34c0a2dd4a9474026d7a/lib/types/QueryMethod.ts#L6)
|
|
@@ -76,4 +76,4 @@ Query settings.
|
|
|
76
76
|
|
|
77
77
|
## Defined in
|
|
78
78
|
|
|
79
|
-
[lib/types/QueryRead.ts:10](https://github.com/nevoland/quetch/blob/
|
|
79
|
+
[lib/types/QueryRead.ts:10](https://github.com/nevoland/quetch/blob/1cf615b166541d2a753e34c0a2dd4a9474026d7a/lib/types/QueryRead.ts#L10)
|
|
@@ -80,4 +80,4 @@ Query settings.
|
|
|
80
80
|
|
|
81
81
|
## Defined in
|
|
82
82
|
|
|
83
|
-
[lib/types/QueryReadMultiple.ts:11](https://github.com/nevoland/quetch/blob/
|
|
83
|
+
[lib/types/QueryReadMultiple.ts:11](https://github.com/nevoland/quetch/blob/1cf615b166541d2a753e34c0a2dd4a9474026d7a/lib/types/QueryReadMultiple.ts#L11)
|
|
@@ -22,62 +22,68 @@ Settings to use when doing a query.
|
|
|
22
22
|
|
|
23
23
|
Abort controller to abort the query.
|
|
24
24
|
|
|
25
|
-
###
|
|
26
|
-
|
|
27
|
-
> `optional` **pathField**: [`FieldFiltered`](FieldFiltered.md)\<`T`, `string`\>
|
|
25
|
+
### signal?
|
|
28
26
|
|
|
29
|
-
|
|
27
|
+
> `optional` **signal**: `AbortSignal`
|
|
30
28
|
|
|
31
|
-
|
|
29
|
+
Abort signal to abort the query.
|
|
32
30
|
|
|
33
|
-
|
|
31
|
+
### transformFilterChildren()?
|
|
34
32
|
|
|
35
|
-
|
|
33
|
+
> `optional` **transformFilterChildren**: (`filter`) => [`IntrinsicFilter`](IntrinsicFilter.md)\<`T`\>
|
|
36
34
|
|
|
37
|
-
|
|
35
|
+
Returns a filter that captures the items expressed by the provided `FilterChildren`. The return filter cannot use filters of type `FilterChildren` or `FilterContext`.
|
|
38
36
|
|
|
39
|
-
|
|
40
|
-
"/"
|
|
41
|
-
```
|
|
37
|
+
#### Parameters
|
|
42
38
|
|
|
43
|
-
|
|
39
|
+
##### filter
|
|
44
40
|
|
|
45
|
-
|
|
41
|
+
[`FilterChildren`](FilterChildren.md)\<`T`\>
|
|
46
42
|
|
|
47
|
-
|
|
43
|
+
The provided `FilterChildren` to express.
|
|
48
44
|
|
|
49
|
-
####
|
|
45
|
+
#### Returns
|
|
50
46
|
|
|
51
|
-
|
|
52
|
-
"\\"
|
|
53
|
-
```
|
|
47
|
+
[`IntrinsicFilter`](IntrinsicFilter.md)\<`T`\>
|
|
54
48
|
|
|
55
|
-
|
|
49
|
+
A filter that captures the items expressed by the provided `FilterChildren`.
|
|
56
50
|
|
|
57
|
-
|
|
51
|
+
### compareFieldValues()?
|
|
58
52
|
|
|
59
|
-
|
|
53
|
+
Compares two values of a field for sorting purposes. If not provided, values are compared using the default comparison operators (`>`, `<`, `===`).
|
|
60
54
|
|
|
61
|
-
|
|
55
|
+
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.
|
|
62
56
|
|
|
63
|
-
|
|
57
|
+
#### Type Parameters
|
|
64
58
|
|
|
65
|
-
|
|
59
|
+
• **T**
|
|
66
60
|
|
|
67
61
|
#### Parameters
|
|
68
62
|
|
|
69
|
-
#####
|
|
63
|
+
##### field
|
|
70
64
|
|
|
71
|
-
[`
|
|
65
|
+
[`Field`](Field.md)\<`T`\>
|
|
72
66
|
|
|
73
|
-
The
|
|
67
|
+
The field for which the values are compared.
|
|
68
|
+
|
|
69
|
+
##### a
|
|
70
|
+
|
|
71
|
+
`any`
|
|
72
|
+
|
|
73
|
+
The first value to compare.
|
|
74
|
+
|
|
75
|
+
##### b
|
|
76
|
+
|
|
77
|
+
`any`
|
|
78
|
+
|
|
79
|
+
The second value to compare.
|
|
74
80
|
|
|
75
81
|
#### Returns
|
|
76
82
|
|
|
77
|
-
|
|
83
|
+
`undefined` \| `0` \| `1` \| `-1`
|
|
78
84
|
|
|
79
|
-
|
|
85
|
+
`-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.
|
|
80
86
|
|
|
81
87
|
## Defined in
|
|
82
88
|
|
|
83
|
-
[lib/types/QuerySettings.ts:8](https://github.com/nevoland/quetch/blob/
|
|
89
|
+
[lib/types/QuerySettings.ts:8](https://github.com/nevoland/quetch/blob/1cf615b166541d2a753e34c0a2dd4a9474026d7a/lib/types/QuerySettings.ts#L8)
|
|
@@ -68,4 +68,4 @@ Partial property values to update.
|
|
|
68
68
|
|
|
69
69
|
## Defined in
|
|
70
70
|
|
|
71
|
-
[lib/types/QueryUpdate.ts:9](https://github.com/nevoland/quetch/blob/
|
|
71
|
+
[lib/types/QueryUpdate.ts:9](https://github.com/nevoland/quetch/blob/1cf615b166541d2a753e34c0a2dd4a9474026d7a/lib/types/QueryUpdate.ts#L9)
|
|
@@ -74,4 +74,4 @@ Partial property values to update.
|
|
|
74
74
|
|
|
75
75
|
## Defined in
|
|
76
76
|
|
|
77
|
-
[lib/types/QueryUpdateMultiple.ts:10](https://github.com/nevoland/quetch/blob/
|
|
77
|
+
[lib/types/QueryUpdateMultiple.ts:10](https://github.com/nevoland/quetch/blob/1cf615b166541d2a753e34c0a2dd4a9474026d7a/lib/types/QueryUpdateMultiple.ts#L10)
|
|
@@ -16,4 +16,4 @@
|
|
|
16
16
|
|
|
17
17
|
## Defined in
|
|
18
18
|
|
|
19
|
-
[lib/types/Result.ts:20](https://github.com/nevoland/quetch/blob/
|
|
19
|
+
[lib/types/Result.ts:20](https://github.com/nevoland/quetch/blob/1cf615b166541d2a753e34c0a2dd4a9474026d7a/lib/types/Result.ts#L20)
|
|
@@ -68,4 +68,4 @@
|
|
|
68
68
|
|
|
69
69
|
## Defined in
|
|
70
70
|
|
|
71
|
-
[lib/types/Store.ts:2](https://github.com/nevoland/quetch/blob/
|
|
71
|
+
[lib/types/Store.ts:2](https://github.com/nevoland/quetch/blob/1cf615b166541d2a753e34c0a2dd4a9474026d7a/lib/types/Store.ts#L2)
|
|
@@ -36,4 +36,4 @@ Path leading to the value.
|
|
|
36
36
|
|
|
37
37
|
## Defined in
|
|
38
38
|
|
|
39
|
-
[lib/types/Value.ts:6](https://github.com/nevoland/quetch/blob/
|
|
39
|
+
[lib/types/Value.ts:6](https://github.com/nevoland/quetch/blob/1cf615b166541d2a753e34c0a2dd4a9474026d7a/lib/types/Value.ts#L6)
|
|
@@ -18,4 +18,4 @@ Maps the properties of the provided value `T` to a specific value `V`.
|
|
|
18
18
|
|
|
19
19
|
## Defined in
|
|
20
20
|
|
|
21
|
-
[lib/types/ValueMap.ts:6](https://github.com/nevoland/quetch/blob/
|
|
21
|
+
[lib/types/ValueMap.ts:6](https://github.com/nevoland/quetch/blob/1cf615b166541d2a753e34c0a2dd4a9474026d7a/lib/types/ValueMap.ts#L6)
|
package/doc/variables/CACHE.md
CHANGED
|
@@ -10,4 +10,4 @@
|
|
|
10
10
|
|
|
11
11
|
## Defined in
|
|
12
12
|
|
|
13
|
-
[lib/constants/CACHE.ts:1](https://github.com/nevoland/quetch/blob/
|
|
13
|
+
[lib/constants/CACHE.ts:1](https://github.com/nevoland/quetch/blob/1cf615b166541d2a753e34c0a2dd4a9474026d7a/lib/constants/CACHE.ts#L1)
|
|
@@ -16,4 +16,4 @@
|
|
|
16
16
|
|
|
17
17
|
## Defined in
|
|
18
18
|
|
|
19
|
-
[lib/constants/FILTER\_ANY.ts:1](https://github.com/nevoland/quetch/blob/
|
|
19
|
+
[lib/constants/FILTER\_ANY.ts:1](https://github.com/nevoland/quetch/blob/1cf615b166541d2a753e34c0a2dd4a9474026d7a/lib/constants/FILTER_ANY.ts#L1)
|
|
@@ -16,4 +16,4 @@
|
|
|
16
16
|
|
|
17
17
|
## Defined in
|
|
18
18
|
|
|
19
|
-
[lib/constants/FILTER\_NONE.ts:1](https://github.com/nevoland/quetch/blob/
|
|
19
|
+
[lib/constants/FILTER\_NONE.ts:1](https://github.com/nevoland/quetch/blob/1cf615b166541d2a753e34c0a2dd4a9474026d7a/lib/constants/FILTER_NONE.ts#L1)
|
package/doc/variables/SELF.md
CHANGED
|
@@ -10,4 +10,4 @@
|
|
|
10
10
|
|
|
11
11
|
## Defined in
|
|
12
12
|
|
|
13
|
-
[lib/constants/SELF.ts:1](https://github.com/nevoland/quetch/blob/
|
|
13
|
+
[lib/constants/SELF.ts:1](https://github.com/nevoland/quetch/blob/1cf615b166541d2a753e34c0a2dd4a9474026d7a/lib/constants/SELF.ts#L1)
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { EMPTY_OBJECT } from "unchangeable";
|
|
2
|
+
|
|
3
|
+
import type {
|
|
4
|
+
FieldFiltered,
|
|
5
|
+
NormalizedPathFieldSettings,
|
|
6
|
+
QuerySettings,
|
|
7
|
+
} from "../types";
|
|
8
|
+
|
|
9
|
+
import { escapeRegex } from "./escapeRegex.js";
|
|
10
|
+
import { sameField } from "./sameField.js";
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Returns a function that transforms a `FilterChildren` into a `FilterStringMatch`.
|
|
14
|
+
*
|
|
15
|
+
* @param options - Options for the transformer.
|
|
16
|
+
* @returns A function that takes a `FilterChildren` and returns a `FilterStringMatch` that matches the paths of the children of the item specified in the `FilterChildren`.
|
|
17
|
+
*/
|
|
18
|
+
export function comparatorFieldValues<T>({
|
|
19
|
+
pathField = "path" as FieldFiltered<T, string>,
|
|
20
|
+
pathFieldSeparator = "/",
|
|
21
|
+
pathFieldSeparatorEscape = "\\",
|
|
22
|
+
}: NormalizedPathFieldSettings<T> = EMPTY_OBJECT): QuerySettings<T>["compareFieldValues"] {
|
|
23
|
+
const fieldSeparatorRegexp = new RegExp(
|
|
24
|
+
!pathFieldSeparatorEscape
|
|
25
|
+
? escapeRegex(pathFieldSeparator)
|
|
26
|
+
: `(?<!${escapeRegex(pathFieldSeparatorEscape)})${escapeRegex(pathFieldSeparator)}`,
|
|
27
|
+
"g",
|
|
28
|
+
);
|
|
29
|
+
return (field, a, b) => {
|
|
30
|
+
if (!sameField(field, pathField)) {
|
|
31
|
+
return undefined;
|
|
32
|
+
}
|
|
33
|
+
const normalizedA = (a as string).replaceAll?.(
|
|
34
|
+
fieldSeparatorRegexp,
|
|
35
|
+
"\x00",
|
|
36
|
+
);
|
|
37
|
+
const normalizedB = (b as string).replaceAll?.(
|
|
38
|
+
fieldSeparatorRegexp,
|
|
39
|
+
"\x00",
|
|
40
|
+
);
|
|
41
|
+
if (normalizedA > normalizedB) {
|
|
42
|
+
return 1;
|
|
43
|
+
}
|
|
44
|
+
return -1;
|
|
45
|
+
};
|
|
46
|
+
}
|
package/lib/tools/get.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { SELF } from "../constants/SELF.js";
|
|
2
|
-
import type {
|
|
2
|
+
import type { Field, Get } from "../types";
|
|
3
|
+
|
|
4
|
+
const { isArray } = Array;
|
|
3
5
|
|
|
4
6
|
/**
|
|
5
7
|
* Gets the property value of the given `value` at the specified `path` (an array of object property names or array indexes).
|
|
@@ -7,11 +9,11 @@ import type { Get, Path } from "../types";
|
|
|
7
9
|
* If the `path` is a string, it is considered as a path with one item.
|
|
8
10
|
* If the `path` leads to an unknown property, returns `undefined`.
|
|
9
11
|
*
|
|
10
|
-
* @param value The value from which to get the property value.
|
|
11
|
-
* @param path The path leading to the property value or a property name or `undefined`.
|
|
12
|
+
* @param value - The value from which to get the property value.
|
|
13
|
+
* @param path - The path leading to the property value or a property name or `undefined`.
|
|
12
14
|
* @returns The property value found at the given path, or `undefined` if it cannot be found.
|
|
13
15
|
*/
|
|
14
|
-
export function get<const T, const P extends
|
|
16
|
+
export function get<const T, const P extends Field<T>>(
|
|
15
17
|
value: T,
|
|
16
18
|
path?: P,
|
|
17
19
|
): Get<T, P> {
|
|
@@ -24,6 +26,9 @@ export function get<const T, const P extends Path<T> | keyof T>(
|
|
|
24
26
|
case "symbol":
|
|
25
27
|
return (value as any)?.[path];
|
|
26
28
|
default: {
|
|
29
|
+
if (!isArray(path)) {
|
|
30
|
+
return value as any;
|
|
31
|
+
}
|
|
27
32
|
switch (path.length as number) {
|
|
28
33
|
case 0:
|
|
29
34
|
return value as any;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { EMPTY_OBJECT } from "unchangeable";
|
|
2
|
+
|
|
3
|
+
import type { NormalizedPathFieldSettings, QuerySettings } from "../types";
|
|
4
|
+
|
|
5
|
+
import { comparatorFieldValues } from "./comparatorFieldValues.js";
|
|
6
|
+
import { transformerFilterChildren } from "./transformerFilterChildren.js";
|
|
7
|
+
/**
|
|
8
|
+
* Returns query settings for path fields.
|
|
9
|
+
*
|
|
10
|
+
* @param settings - Settings for normalizing path fields.
|
|
11
|
+
* @returns Query settings for path fields.
|
|
12
|
+
*/
|
|
13
|
+
export function querySettings<T>(
|
|
14
|
+
settings: NormalizedPathFieldSettings<T> = EMPTY_OBJECT,
|
|
15
|
+
): QuerySettings<T> {
|
|
16
|
+
return {
|
|
17
|
+
compareFieldValues: comparatorFieldValues(settings),
|
|
18
|
+
transformFilterChildren: transformerFilterChildren(settings),
|
|
19
|
+
};
|
|
20
|
+
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { expect, test } from "vitest";
|
|
2
2
|
|
|
3
|
+
import { querySettings } from "./querySettings.js";
|
|
3
4
|
import { sortItemList } from "./sortItemList.js";
|
|
4
5
|
|
|
5
6
|
test("sorts items", () => {
|
|
@@ -76,10 +77,7 @@ test("sorts items with separator setting", () => {
|
|
|
76
77
|
{ path: "a\\/b.c" },
|
|
77
78
|
{ path: "a.b/c" },
|
|
78
79
|
],
|
|
79
|
-
|
|
80
|
-
pathField: "path",
|
|
81
|
-
pathFieldSeparator: "/",
|
|
82
|
-
},
|
|
80
|
+
querySettings(),
|
|
83
81
|
),
|
|
84
82
|
).toEqual([
|
|
85
83
|
{ path: "a" },
|
|
@@ -104,10 +102,7 @@ test("sorts items with separator setting", () => {
|
|
|
104
102
|
{ path: "a\\/b.c" },
|
|
105
103
|
{ path: "a.b/c" },
|
|
106
104
|
],
|
|
107
|
-
|
|
108
|
-
pathField: "path",
|
|
109
|
-
pathFieldSeparator: "/",
|
|
110
|
-
},
|
|
105
|
+
querySettings(),
|
|
111
106
|
),
|
|
112
107
|
).toEqual([
|
|
113
108
|
{ path: "a" },
|
|
@@ -119,4 +114,32 @@ test("sorts items with separator setting", () => {
|
|
|
119
114
|
{ path: "a.b.c" },
|
|
120
115
|
{ path: "a\\/b.c" },
|
|
121
116
|
]);
|
|
117
|
+
|
|
118
|
+
expect(
|
|
119
|
+
sortItemList(
|
|
120
|
+
[{ descending: false, field: "path" }],
|
|
121
|
+
[
|
|
122
|
+
{ path: "a" },
|
|
123
|
+
{ path: "a/b" },
|
|
124
|
+
{ path: "a.b" },
|
|
125
|
+
{ path: "a/b/c" },
|
|
126
|
+
{ path: "a.b.c" },
|
|
127
|
+
{ path: "a/b.c" },
|
|
128
|
+
{ path: "a\\.b.c" },
|
|
129
|
+
{ path: "a.b/c" },
|
|
130
|
+
],
|
|
131
|
+
querySettings({
|
|
132
|
+
pathFieldSeparator: ".",
|
|
133
|
+
}),
|
|
134
|
+
),
|
|
135
|
+
).toEqual([
|
|
136
|
+
{ path: "a" },
|
|
137
|
+
{ path: "a.b" },
|
|
138
|
+
{ path: "a.b.c" },
|
|
139
|
+
{ path: "a.b/c" },
|
|
140
|
+
{ path: "a/b" },
|
|
141
|
+
{ path: "a/b.c" },
|
|
142
|
+
{ path: "a/b/c" },
|
|
143
|
+
{ path: "a\\.b.c" },
|
|
144
|
+
]);
|
|
122
145
|
});
|