quetch 0.2.1 → 0.3.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 (264) hide show
  1. package/dist/errors/RequestError.d.ts +3 -3
  2. package/dist/errors.d.ts +1 -1
  3. package/dist/errors.js +1 -1
  4. package/dist/errors.js.map +1 -1
  5. package/dist/middlewares/aggregate.d.ts +3 -3
  6. package/dist/middlewares/aggregate.js +1 -1
  7. package/dist/middlewares/aggregate.js.map +1 -1
  8. package/dist/middlewares/cache.d.ts +4 -4
  9. package/dist/middlewares/cache.js +3 -3
  10. package/dist/middlewares/cache.js.map +1 -1
  11. package/dist/middlewares.d.ts +9 -9
  12. package/dist/middlewares.js +9 -9
  13. package/dist/middlewares.js.map +1 -1
  14. package/dist/tools/cork.d.ts +5 -0
  15. package/dist/tools/cork.js +5 -0
  16. package/dist/tools/cork.js.map +1 -0
  17. package/dist/tools/defineCheckQuery.d.ts +12 -7
  18. package/dist/tools/defineCheckQuery.js +5 -0
  19. package/dist/tools/defineCheckQuery.js.map +1 -1
  20. package/dist/tools/defineCustomFetch.d.ts +26 -18
  21. package/dist/tools/defineCustomFetch.js +9 -3
  22. package/dist/tools/defineCustomFetch.js.map +1 -1
  23. package/dist/tools/defineGenericFetch.d.ts +14 -0
  24. package/dist/tools/defineGenericFetch.js +12 -0
  25. package/dist/tools/defineGenericFetch.js.map +1 -0
  26. package/dist/tools/queryItemList.js +3 -3
  27. package/dist/tools/queryItemList.js.map +1 -1
  28. package/dist/tools/sortItemList.js +3 -3
  29. package/dist/tools/sortItemList.js.map +1 -1
  30. package/dist/tools.d.ts +9 -8
  31. package/dist/tools.js +9 -8
  32. package/dist/tools.js.map +1 -1
  33. package/dist/types/AggregateFunction.d.ts +9 -0
  34. package/dist/types/AggregateFunction.js +2 -0
  35. package/dist/types/AggregateFunction.js.map +1 -0
  36. package/dist/types/AggregateFunctionOperator.d.ts +2 -0
  37. package/dist/types/AggregateFunctionOperator.js +2 -0
  38. package/dist/types/AggregateFunctionOperator.js.map +1 -0
  39. package/dist/types/Any.d.ts +1 -0
  40. package/dist/types/Any.js +2 -0
  41. package/dist/types/Any.js.map +1 -0
  42. package/dist/types/Context.d.ts +3 -0
  43. package/dist/types/Context.js +2 -0
  44. package/dist/types/Context.js.map +1 -0
  45. package/dist/types/CustomFieldAggregateMap.d.ts +2 -0
  46. package/dist/types/CustomFieldAggregateMap.js +2 -0
  47. package/dist/types/CustomFieldAggregateMap.js.map +1 -0
  48. package/dist/types/CustomFieldMap.d.ts +2 -0
  49. package/dist/types/CustomFieldMap.js +2 -0
  50. package/dist/types/CustomFieldMap.js.map +1 -0
  51. package/dist/types/CustomRequest.d.ts +16 -0
  52. package/dist/types/CustomRequest.js +2 -0
  53. package/dist/types/CustomRequest.js.map +1 -0
  54. package/dist/types/FieldFunction.d.ts +3 -0
  55. package/dist/types/FieldFunction.js +2 -0
  56. package/dist/types/FieldFunction.js.map +1 -0
  57. package/dist/types/FieldFunctionCustom.d.ts +7 -0
  58. package/dist/types/FieldFunctionCustom.js +2 -0
  59. package/dist/types/FieldFunctionCustom.js.map +1 -0
  60. package/dist/types/FieldFunctionFormatDate.d.ts +9 -0
  61. package/dist/types/FieldFunctionFormatDate.js +2 -0
  62. package/dist/types/FieldFunctionFormatDate.js.map +1 -0
  63. package/dist/types/FieldFunctionReturn.d.ts +6 -0
  64. package/dist/types/FieldFunctionReturn.js +2 -0
  65. package/dist/types/FieldFunctionReturn.js.map +1 -0
  66. package/dist/types/Filter.d.ts +12 -0
  67. package/dist/types/Filter.js +2 -0
  68. package/dist/types/Filter.js.map +1 -0
  69. package/dist/types/FilterArray.d.ts +10 -0
  70. package/dist/types/FilterArray.js +2 -0
  71. package/dist/types/FilterArray.js.map +1 -0
  72. package/dist/types/FilterBoolean.d.ts +9 -0
  73. package/dist/types/FilterBoolean.js +2 -0
  74. package/dist/types/FilterBoolean.js.map +1 -0
  75. package/dist/types/FilterField.d.ts +7 -0
  76. package/dist/types/FilterField.js +2 -0
  77. package/dist/types/FilterField.js.map +1 -0
  78. package/dist/types/FilterKeys.d.ts +6 -0
  79. package/dist/types/FilterKeys.js +2 -0
  80. package/dist/types/FilterKeys.js.map +1 -0
  81. package/dist/types/FilterNumber.d.ts +9 -0
  82. package/dist/types/FilterNumber.js +2 -0
  83. package/dist/types/FilterNumber.js.map +1 -0
  84. package/dist/types/FilterOperator.d.ts +2 -0
  85. package/dist/types/FilterOperator.js +2 -0
  86. package/dist/types/FilterOperator.js.map +1 -0
  87. package/dist/types/FilterSequence.d.ts +23 -0
  88. package/dist/types/FilterSequence.js +2 -0
  89. package/dist/types/FilterSequence.js.map +1 -0
  90. package/dist/types/FilterString.d.ts +9 -0
  91. package/dist/types/FilterString.js +2 -0
  92. package/dist/types/FilterString.js.map +1 -0
  93. package/dist/types/FilterStringIntersect.d.ts +9 -0
  94. package/dist/types/FilterStringIntersect.js +2 -0
  95. package/dist/types/FilterStringIntersect.js.map +1 -0
  96. package/dist/types/FilterStringMatch.d.ts +29 -0
  97. package/dist/types/FilterStringMatch.js +2 -0
  98. package/dist/types/FilterStringMatch.js.map +1 -0
  99. package/dist/types/Get.d.ts +6 -0
  100. package/dist/types/Get.js +2 -0
  101. package/dist/types/Get.js.map +1 -0
  102. package/dist/types/Group.d.ts +8 -0
  103. package/dist/types/Group.js +2 -0
  104. package/dist/types/Group.js.map +1 -0
  105. package/dist/types/Handler.d.ts +5 -0
  106. package/dist/types/Handler.js +2 -0
  107. package/dist/types/Handler.js.map +1 -0
  108. package/dist/types/Immutable.d.ts +3 -0
  109. package/dist/types/Immutable.js +2 -0
  110. package/dist/types/Immutable.js.map +1 -0
  111. package/dist/types/InjectCustomFields.d.ts +9 -0
  112. package/dist/types/InjectCustomFields.js +2 -0
  113. package/dist/types/InjectCustomFields.js.map +1 -0
  114. package/dist/types/Item.d.ts +4 -0
  115. package/dist/types/Item.js +2 -0
  116. package/dist/types/Item.js.map +1 -0
  117. package/dist/types/Key.d.ts +1 -0
  118. package/dist/types/Key.js +2 -0
  119. package/dist/types/Key.js.map +1 -0
  120. package/dist/types/Mutable.d.ts +3 -0
  121. package/dist/types/Mutable.js +2 -0
  122. package/dist/types/Mutable.js.map +1 -0
  123. package/dist/types/NextHandler.d.ts +4 -0
  124. package/dist/types/NextHandler.js +2 -0
  125. package/dist/types/NextHandler.js.map +1 -0
  126. package/dist/types/Order.d.ts +7 -0
  127. package/dist/types/Order.js +2 -0
  128. package/dist/types/Order.js.map +1 -0
  129. package/dist/types/Query.d.ts +23 -0
  130. package/dist/types/Query.js +2 -0
  131. package/dist/types/Query.js.map +1 -0
  132. package/dist/types/QueryAggregate.d.ts +10 -0
  133. package/dist/types/QueryAggregate.js +2 -0
  134. package/dist/types/QueryAggregate.js.map +1 -0
  135. package/dist/types/QueryAny.d.ts +7 -0
  136. package/dist/types/QueryAny.js +2 -0
  137. package/dist/types/QueryAny.js.map +1 -0
  138. package/dist/types/QueryCreate.d.ts +7 -0
  139. package/dist/types/QueryCreate.js +2 -0
  140. package/dist/types/QueryCreate.js.map +1 -0
  141. package/dist/types/QueryCreateMultiple.d.ts +8 -0
  142. package/dist/types/QueryCreateMultiple.js +2 -0
  143. package/dist/types/QueryCreateMultiple.js.map +1 -0
  144. package/dist/types/QueryDelete.d.ts +10 -0
  145. package/dist/types/QueryDelete.js +2 -0
  146. package/dist/types/QueryDelete.js.map +1 -0
  147. package/dist/types/QueryDeleteMultiple.d.ts +11 -0
  148. package/dist/types/QueryDeleteMultiple.js +2 -0
  149. package/dist/types/QueryDeleteMultiple.js.map +1 -0
  150. package/dist/types/QueryMethod.d.ts +5 -0
  151. package/dist/types/QueryMethod.js +2 -0
  152. package/dist/types/QueryMethod.js.map +1 -0
  153. package/dist/types/QueryRead.d.ts +23 -0
  154. package/dist/types/QueryRead.js +2 -0
  155. package/dist/types/QueryRead.js.map +1 -0
  156. package/dist/types/QueryReadMultiple.d.ts +34 -0
  157. package/dist/types/QueryReadMultiple.js +2 -0
  158. package/dist/types/QueryReadMultiple.js.map +1 -0
  159. package/dist/types/QueryUpdate.d.ts +18 -0
  160. package/dist/types/QueryUpdate.js +2 -0
  161. package/dist/types/QueryUpdate.js.map +1 -0
  162. package/dist/types/QueryUpdateMultiple.d.ts +26 -0
  163. package/dist/types/QueryUpdateMultiple.js +2 -0
  164. package/dist/types/QueryUpdateMultiple.js.map +1 -0
  165. package/dist/types/Result.d.ts +25 -0
  166. package/dist/types/Result.js +2 -0
  167. package/dist/types/Result.js.map +1 -0
  168. package/dist/types/Store.d.ts +6 -0
  169. package/dist/types/Store.js +2 -0
  170. package/dist/types/Store.js.map +1 -0
  171. package/dist/types.d.ts +46 -396
  172. package/doc/README.md +533 -219
  173. package/lib/errors/RequestError.ts +2 -2
  174. package/lib/errors.ts +1 -1
  175. package/lib/middlewares/aggregate.ts +5 -5
  176. package/lib/middlewares/cache.ts +7 -12
  177. package/lib/middlewares.ts +9 -9
  178. package/lib/tools/cork.ts +6 -0
  179. package/lib/tools/defineCheckQuery.ts +20 -15
  180. package/lib/tools/defineCustomFetch.ts +40 -62
  181. package/lib/tools/defineGenericFetch.ts +33 -0
  182. package/lib/tools/queryItemList.test.ts +6 -6
  183. package/lib/tools/queryItemList.ts +3 -3
  184. package/lib/tools/sortItemList.ts +3 -3
  185. package/lib/tools.ts +9 -8
  186. package/lib/types/AggregateFunction.ts +17 -0
  187. package/lib/types/AggregateFunctionOperator.ts +6 -0
  188. package/lib/types/Any.ts +10 -0
  189. package/lib/types/Context.ts +3 -0
  190. package/lib/types/CustomFieldAggregateMap.ts +6 -0
  191. package/lib/types/CustomFieldMap.ts +3 -0
  192. package/lib/types/CustomRequest.ts +21 -0
  193. package/lib/types/FieldFunction.ts +6 -0
  194. package/lib/types/FieldFunctionCustom.ts +7 -0
  195. package/lib/types/FieldFunctionFormatDate.ts +10 -0
  196. package/lib/types/FieldFunctionReturn.ts +6 -0
  197. package/lib/types/Filter.ts +20 -0
  198. package/lib/types/FilterArray.ts +11 -0
  199. package/lib/types/FilterBoolean.ts +10 -0
  200. package/lib/types/FilterField.ts +7 -0
  201. package/lib/types/FilterKeys.ts +6 -0
  202. package/lib/types/FilterNumber.ts +16 -0
  203. package/lib/types/FilterOperator.ts +3 -0
  204. package/lib/types/FilterSequence.ts +26 -0
  205. package/lib/types/FilterString.ts +19 -0
  206. package/lib/types/FilterStringIntersect.ts +10 -0
  207. package/lib/types/FilterStringMatch.ts +30 -0
  208. package/lib/types/Get.ts +8 -0
  209. package/lib/types/Group.ts +11 -0
  210. package/lib/types/Handler.ts +9 -0
  211. package/lib/types/Immutable.ts +3 -0
  212. package/lib/types/InjectCustomFields.ts +23 -0
  213. package/lib/types/Item.ts +8 -0
  214. package/lib/types/Key.ts +1 -0
  215. package/lib/types/Mutable.ts +3 -0
  216. package/lib/types/NextHandler.ts +4 -0
  217. package/lib/types/Order.ts +9 -0
  218. package/lib/types/Query.ts +36 -0
  219. package/lib/types/QueryAggregate.ts +11 -0
  220. package/lib/types/QueryAny.ts +8 -0
  221. package/lib/types/QueryCreate.ts +7 -0
  222. package/lib/types/QueryCreateMultiple.ts +8 -0
  223. package/lib/types/QueryDelete.ts +11 -0
  224. package/lib/types/QueryDeleteMultiple.ts +12 -0
  225. package/lib/types/QueryMethod.ts +6 -0
  226. package/lib/types/QueryRead.ts +24 -0
  227. package/lib/types/QueryReadMultiple.ts +36 -0
  228. package/lib/types/QueryUpdate.ts +19 -0
  229. package/lib/types/QueryUpdateMultiple.ts +27 -0
  230. package/lib/types/Result.ts +38 -0
  231. package/lib/types/Store.ts +7 -0
  232. package/lib/types.ts +47 -562
  233. package/package.json +3 -3
  234. package/dist/errors/QueryError.d.ts +0 -5
  235. package/dist/errors/QueryError.js +0 -23
  236. package/dist/errors/QueryError.js.map +0 -1
  237. package/dist/middlewares/concurrent.d.ts +0 -2
  238. package/dist/middlewares/concurrent.js +0 -20
  239. package/dist/middlewares/concurrent.js.map +0 -1
  240. package/dist/middlewares/fetch.d.ts +0 -2
  241. package/dist/middlewares/fetch.js +0 -20
  242. package/dist/middlewares/fetch.js.map +0 -1
  243. package/dist/middlewares/logQuery.d.ts +0 -2
  244. package/dist/middlewares/logQuery.js +0 -25
  245. package/dist/middlewares/logQuery.js.map +0 -1
  246. package/dist/tools/add.d.ts +0 -8
  247. package/dist/tools/add.js +0 -11
  248. package/dist/tools/add.js.map +0 -1
  249. package/dist/tools/add.test.d.ts +0 -1
  250. package/dist/tools/add.test.js +0 -6
  251. package/dist/tools/add.test.js.map +0 -1
  252. package/dist/tools/filterItem.test.d.ts +0 -1
  253. package/dist/tools/filterItem.test.js +0 -86
  254. package/dist/tools/filterItem.test.js.map +0 -1
  255. package/dist/tools/impasse.d.ts +0 -2
  256. package/dist/tools/impasse.js +0 -2
  257. package/dist/tools/impasse.js.map +0 -1
  258. package/dist/tools/queryItemList.test.d.ts +0 -1
  259. package/dist/tools/queryItemList.test.js +0 -181
  260. package/dist/tools/queryItemList.test.js.map +0 -1
  261. package/dist/tools/sortItemList.test.d.ts +0 -1
  262. package/dist/tools/sortItemList.test.js +0 -47
  263. package/dist/tools/sortItemList.test.js.map +0 -1
  264. package/lib/tools/impasse.ts +0 -3
package/doc/README.md CHANGED
@@ -9,43 +9,48 @@ quetch
9
9
  - [AggregateFunction](README.md#aggregatefunction)
10
10
  - [AggregateFunctionOperator](README.md#aggregatefunctionoperator)
11
11
  - [Any](README.md#any)
12
- - [AnyQuery](README.md#anyquery)
13
- - [AnyQueryExternal](README.md#anyqueryexternal)
14
- - [AnyQueryLocal](README.md#anyquerylocal)
15
12
  - [Context](README.md#context)
13
+ - [CustomFieldAggregateMap](README.md#customfieldaggregatemap)
16
14
  - [CustomFieldMap](README.md#customfieldmap)
17
- - [EntityItem](README.md#entityitem)
15
+ - [CustomRequest](README.md#customrequest)
18
16
  - [FieldFunction](README.md#fieldfunction)
19
17
  - [FieldFunctionCustom](README.md#fieldfunctioncustom)
20
18
  - [FieldFunctionFormatDate](README.md#fieldfunctionformatdate)
21
- - [FieldFunctionOperator](README.md#fieldfunctionoperator)
22
19
  - [FieldFunctionReturn](README.md#fieldfunctionreturn)
23
20
  - [Filter](README.md#filter)
24
21
  - [FilterArray](README.md#filterarray)
25
22
  - [FilterBoolean](README.md#filterboolean)
26
23
  - [FilterField](README.md#filterfield)
27
24
  - [FilterKeys](README.md#filterkeys)
28
- - [FilterList](README.md#filterlist)
29
25
  - [FilterNumber](README.md#filternumber)
30
26
  - [FilterOperator](README.md#filteroperator)
27
+ - [FilterSequence](README.md#filtersequence)
31
28
  - [FilterString](README.md#filterstring)
32
29
  - [FilterStringIntersect](README.md#filterstringintersect)
33
30
  - [FilterStringMatch](README.md#filterstringmatch)
31
+ - [Get](README.md#get)
32
+ - [Group](README.md#group)
34
33
  - [Handler](README.md#handler)
34
+ - [Immutable](README.md#immutable)
35
+ - [InjectCustomFields](README.md#injectcustomfields)
36
+ - [Item](README.md#item)
37
+ - [Key](README.md#key)
38
+ - [Mutable](README.md#mutable)
35
39
  - [NextHandler](README.md#nexthandler)
36
40
  - [Order](README.md#order)
37
41
  - [Query](README.md#query)
38
42
  - [QueryAggregate](README.md#queryaggregate)
39
- - [QueryBase](README.md#querybase)
43
+ - [QueryAny](README.md#queryany)
40
44
  - [QueryCreate](README.md#querycreate)
41
45
  - [QueryCreateMultiple](README.md#querycreatemultiple)
42
46
  - [QueryDelete](README.md#querydelete)
43
47
  - [QueryDeleteMultiple](README.md#querydeletemultiple)
44
- - [QueryGet](README.md#queryget)
45
- - [QueryGetMultiple](README.md#querygetmultiple)
46
48
  - [QueryMethod](README.md#querymethod)
49
+ - [QueryRead](README.md#queryread)
50
+ - [QueryReadMultiple](README.md#queryreadmultiple)
47
51
  - [QueryUpdate](README.md#queryupdate)
48
52
  - [QueryUpdateMultiple](README.md#queryupdatemultiple)
53
+ - [Result](README.md#result)
49
54
  - [Store](README.md#store)
50
55
 
51
56
  ### Functions
@@ -54,14 +59,15 @@ quetch
54
59
  - [branch](README.md#branch)
55
60
  - [cache](README.md#cache)
56
61
  - [combine](README.md#combine)
62
+ - [cork](README.md#cork)
57
63
  - [defineCheckQuery](README.md#definecheckquery)
58
64
  - [defineCustomFetch](README.md#definecustomfetch)
65
+ - [defineGenericFetch](README.md#definegenericfetch)
59
66
  - [fetchExternal](README.md#fetchexternal)
60
67
  - [fetchLocal](README.md#fetchlocal)
61
68
  - [filterFromContext](README.md#filterfromcontext)
62
69
  - [filterItem](README.md#filteritem)
63
70
  - [identity](README.md#identity)
64
- - [impasse](README.md#impasse)
65
71
  - [log](README.md#log)
66
72
  - [normalizeOrder](README.md#normalizeorder)
67
73
  - [queryItemList](README.md#queryitemlist)
@@ -84,7 +90,7 @@ Aggregation function.
84
90
 
85
91
  #### Defined in
86
92
 
87
- [lib/types.ts:387](https://github.com/nevoland/quetch/blob/3a78cd1/lib/types.ts#L387)
93
+ [lib/types/AggregateFunction.ts:4](https://github.com/nevoland/quetch/blob/f8fb38a/lib/types/AggregateFunction.ts#L4)
88
94
 
89
95
  ___
90
96
 
@@ -94,7 +100,7 @@ ___
94
100
 
95
101
  #### Defined in
96
102
 
97
- [lib/types.ts:402](https://github.com/nevoland/quetch/blob/3a78cd1/lib/types.ts#L402)
103
+ [lib/types/AggregateFunctionOperator.ts:3](https://github.com/nevoland/quetch/blob/f8fb38a/lib/types/AggregateFunctionOperator.ts#L3)
98
104
 
99
105
  ___
100
106
 
@@ -104,43 +110,29 @@ ___
104
110
 
105
111
  #### Defined in
106
112
 
107
- [lib/types.ts:1](https://github.com/nevoland/quetch/blob/3a78cd1/lib/types.ts#L1)
113
+ [lib/types/Any.ts:1](https://github.com/nevoland/quetch/blob/f8fb38a/lib/types/Any.ts#L1)
108
114
 
109
115
  ___
110
116
 
111
- ### AnyQuery
112
-
113
- Ƭ **AnyQuery**: [`Query`](README.md#query)<`any`, `any`\>
114
-
115
- #### Defined in
116
-
117
- [lib/types.ts:92](https://github.com/nevoland/quetch/blob/3a78cd1/lib/types.ts#L92)
118
-
119
- ___
120
-
121
- ### AnyQueryExternal
122
-
123
- Ƭ **AnyQueryExternal**: `Omit`<[`Query`](README.md#query)<`any`, `any`\>, ``"type"``\> & { `type`: `string` }
124
-
125
- #### Defined in
126
-
127
- [lib/types.ts:94](https://github.com/nevoland/quetch/blob/3a78cd1/lib/types.ts#L94)
117
+ ### Context
128
118
 
129
- ___
119
+ Ƭ **Context**<`T`\>: { [K in keyof T]?: T[K] }
130
120
 
131
- ### AnyQueryLocal
121
+ #### Type parameters
132
122
 
133
- Ƭ **AnyQueryLocal**: `Omit`<[`Query`](README.md#query)<`any`, `any`\>, ``"type"``\> & { `type`: `object`[] }
123
+ | Name | Type |
124
+ | :------ | :------ |
125
+ | `T` | extends `object` |
134
126
 
135
127
  #### Defined in
136
128
 
137
- [lib/types.ts:96](https://github.com/nevoland/quetch/blob/3a78cd1/lib/types.ts#L96)
129
+ [lib/types/Context.ts:1](https://github.com/nevoland/quetch/blob/f8fb38a/lib/types/Context.ts#L1)
138
130
 
139
131
  ___
140
132
 
141
- ### Context
133
+ ### CustomFieldAggregateMap
142
134
 
143
- Ƭ **Context**<`T`\>: { [K in keyof T]?: T[K] }
135
+ Ƭ **CustomFieldAggregateMap**<`T`\>: `Record`<`string`, [`AggregateFunction`](README.md#aggregatefunction)<`T`\>\>
144
136
 
145
137
  #### Type parameters
146
138
 
@@ -150,7 +142,7 @@ ___
150
142
 
151
143
  #### Defined in
152
144
 
153
- [lib/types.ts:98](https://github.com/nevoland/quetch/blob/3a78cd1/lib/types.ts#L98)
145
+ [lib/types/CustomFieldAggregateMap.ts:3](https://github.com/nevoland/quetch/blob/f8fb38a/lib/types/CustomFieldAggregateMap.ts#L3)
154
146
 
155
147
  ___
156
148
 
@@ -166,27 +158,33 @@ ___
166
158
 
167
159
  #### Defined in
168
160
 
169
- [lib/types.ts:382](https://github.com/nevoland/quetch/blob/3a78cd1/lib/types.ts#L382)
161
+ [lib/types/CustomFieldMap.ts:3](https://github.com/nevoland/quetch/blob/f8fb38a/lib/types/CustomFieldMap.ts#L3)
170
162
 
171
163
  ___
172
164
 
173
- ### EntityItem
174
-
175
- Ƭ **EntityItem**<`E`, `C`, `Q`\>: `Q` extends { `customFields`: [`CustomFieldMap`](README.md#customfieldmap)<`E`\> } ? { readonly [K in ArrayItem<Get<Q, "fields", undefined\>, keyof E \| keyof Q["customFields"]\>]: K extends keyof E ? E[K] : K extends keyof Q["customFields"] ? Q["customFields"][K] extends FieldFunctionCustom<E\> ? ReturnType<Q["customFields"][K]["value"]\> : Q["customFields"][K]["operator"] extends keyof FieldFunctionReturn ? FieldFunctionReturn[Q["customFields"][K]["operator"]] : never : never } : { readonly [K in ArrayItem<Get<Q, "fields", undefined\>, keyof E\>]: K extends keyof E ? E[K] : never }
165
+ ### CustomRequest
176
166
 
177
- Entity type for a given query.
167
+ Ƭ **CustomRequest**<`T`, `Q`, `C`\>: `Object`
178
168
 
179
169
  #### Type parameters
180
170
 
181
171
  | Name | Type |
182
172
  | :------ | :------ |
183
- | `E` | extends `object` |
184
- | `C` | extends [`CustomFieldMap`](README.md#customfieldmap)<`E`\> |
185
- | `Q` | extends [`Query`](README.md#query)<`E`, `C`\> |
173
+ | `T` | extends `object` |
174
+ | `Q` | extends [`Query`](README.md#query)<`T`, `C`\> |
175
+ | `C` | extends [`CustomFieldMap`](README.md#customfieldmap)<`T`\> |
176
+
177
+ #### Type declaration
178
+
179
+ | Name | Type | Description |
180
+ | :------ | :------ | :------ |
181
+ | `data` | `T` | Entity being queried. |
182
+ | `query` | `Q` | Query. |
183
+ | `signal?` | `AbortSignal` | Abort signal to abort the request. |
186
184
 
187
185
  #### Defined in
188
186
 
189
- [lib/types.ts:49](https://github.com/nevoland/quetch/blob/3a78cd1/lib/types.ts#L49)
187
+ [lib/types/CustomRequest.ts:4](https://github.com/nevoland/quetch/blob/f8fb38a/lib/types/CustomRequest.ts#L4)
190
188
 
191
189
  ___
192
190
 
@@ -202,7 +200,7 @@ ___
202
200
 
203
201
  #### Defined in
204
202
 
205
- [lib/types.ts:349](https://github.com/nevoland/quetch/blob/3a78cd1/lib/types.ts#L349)
203
+ [lib/types/FieldFunction.ts:4](https://github.com/nevoland/quetch/blob/f8fb38a/lib/types/FieldFunction.ts#L4)
206
204
 
207
205
  ___
208
206
 
@@ -227,7 +225,7 @@ Applies a custom field transform function.
227
225
 
228
226
  #### Defined in
229
227
 
230
- [lib/types.ts:356](https://github.com/nevoland/quetch/blob/3a78cd1/lib/types.ts#L356)
228
+ [lib/types/FieldFunctionCustom.ts:4](https://github.com/nevoland/quetch/blob/f8fb38a/lib/types/FieldFunctionCustom.ts#L4)
231
229
 
232
230
  ___
233
231
 
@@ -253,19 +251,7 @@ Formats the date found in a given field, which can be an ISO string date or a ti
253
251
 
254
252
  #### Defined in
255
253
 
256
- [lib/types.ts:364](https://github.com/nevoland/quetch/blob/3a78cd1/lib/types.ts#L364)
257
-
258
- ___
259
-
260
- ### FieldFunctionOperator
261
-
262
- Ƭ **FieldFunctionOperator**: [`FieldFunction`](README.md#fieldfunction)<`never`\>[``"operator"``]
263
-
264
- Possible field function operators.
265
-
266
- #### Defined in
267
-
268
- [lib/types.ts:373](https://github.com/nevoland/quetch/blob/3a78cd1/lib/types.ts#L373)
254
+ [lib/types/FieldFunctionFormatDate.ts:6](https://github.com/nevoland/quetch/blob/f8fb38a/lib/types/FieldFunctionFormatDate.ts#L6)
269
255
 
270
256
  ___
271
257
 
@@ -283,13 +269,13 @@ Return types of custom field functions.
283
269
 
284
270
  #### Defined in
285
271
 
286
- [lib/types.ts:378](https://github.com/nevoland/quetch/blob/3a78cd1/lib/types.ts#L378)
272
+ [lib/types/FieldFunctionReturn.ts:4](https://github.com/nevoland/quetch/blob/f8fb38a/lib/types/FieldFunctionReturn.ts#L4)
287
273
 
288
274
  ___
289
275
 
290
276
  ### Filter
291
277
 
292
- Ƭ **Filter**<`T`\>: [`FilterList`](README.md#filterlist)<`T`\> \| [`FilterField`](README.md#filterfield)<`T`\> \| [`FilterBoolean`](README.md#filterboolean)<`T`\> \| [`FilterString`](README.md#filterstring)<`T`\> \| [`FilterStringMatch`](README.md#filterstringmatch)<`T`\> \| [`FilterStringIntersect`](README.md#filterstringintersect)<`T`\> \| [`FilterNumber`](README.md#filternumber)<`T`\> \| [`FilterArray`](README.md#filterarray)<`T`\>
278
+ Ƭ **Filter**<`T`\>: [`FilterSequence`](README.md#filtersequence)<`T`\> \| [`FilterField`](README.md#filterfield)<`T`\> \| [`FilterBoolean`](README.md#filterboolean)<`T`\> \| [`FilterString`](README.md#filterstring)<`T`\> \| [`FilterStringMatch`](README.md#filterstringmatch)<`T`\> \| [`FilterStringIntersect`](README.md#filterstringintersect)<`T`\> \| [`FilterNumber`](README.md#filternumber)<`T`\> \| [`FilterArray`](README.md#filterarray)<`T`\>
293
279
 
294
280
  Describes a predicate for filtering items.
295
281
 
@@ -301,7 +287,7 @@ Describes a predicate for filtering items.
301
287
 
302
288
  #### Defined in
303
289
 
304
- [lib/types.ts:422](https://github.com/nevoland/quetch/blob/3a78cd1/lib/types.ts#L422)
290
+ [lib/types/Filter.ts:12](https://github.com/nevoland/quetch/blob/f8fb38a/lib/types/Filter.ts#L12)
305
291
 
306
292
  ___
307
293
 
@@ -328,7 +314,7 @@ Checks if a given array field matches a given array value according to a given o
328
314
 
329
315
  #### Defined in
330
316
 
331
- [lib/types.ts:550](https://github.com/nevoland/quetch/blob/3a78cd1/lib/types.ts#L550)
317
+ [lib/types/FilterArray.ts:7](https://github.com/nevoland/quetch/blob/f8fb38a/lib/types/FilterArray.ts#L7)
332
318
 
333
319
  ___
334
320
 
@@ -354,7 +340,7 @@ Checks if a given boolean field is `true` or `false`.
354
340
 
355
341
  #### Defined in
356
342
 
357
- [lib/types.ts:470](https://github.com/nevoland/quetch/blob/3a78cd1/lib/types.ts#L470)
343
+ [lib/types/FilterBoolean.ts:6](https://github.com/nevoland/quetch/blob/f8fb38a/lib/types/FilterBoolean.ts#L6)
358
344
 
359
345
  ___
360
346
 
@@ -379,7 +365,7 @@ Checks if a given field exists.
379
365
 
380
366
  #### Defined in
381
367
 
382
- [lib/types.ts:462](https://github.com/nevoland/quetch/blob/3a78cd1/lib/types.ts#L462)
368
+ [lib/types/FilterField.ts:4](https://github.com/nevoland/quetch/blob/f8fb38a/lib/types/FilterField.ts#L4)
383
369
 
384
370
  ___
385
371
 
@@ -387,34 +373,18 @@ ___
387
373
 
388
374
  Ƭ **FilterKeys**<`T`, `P`\>: { [K in keyof T]-?: T[K] extends P ? K : never }[keyof `T`]
389
375
 
390
- #### Type parameters
391
-
392
- | Name | Type |
393
- | :------ | :------ |
394
- | `T` | extends `object` |
395
- | `P` | `P` |
396
-
397
- #### Defined in
398
-
399
- [lib/types.ts:345](https://github.com/nevoland/quetch/blob/3a78cd1/lib/types.ts#L345)
400
-
401
- ___
402
-
403
- ### FilterList
404
-
405
- Ƭ **FilterList**<`T`\>: { `operator`: ``"all"`` ; `value`: [`Filter`](README.md#filter)<`T`\>[] } \| { `operator`: ``"any"`` \| ``"none"`` ; `value?`: [`Filter`](README.md#filter)<`T`\>[] }
406
-
407
- Joins a list of filters with a specific boolean operator.
376
+ Returns object type with field extending the provided `P` type.
408
377
 
409
378
  #### Type parameters
410
379
 
411
380
  | Name | Type |
412
381
  | :------ | :------ |
413
382
  | `T` | extends `object` |
383
+ | `P` | `P` |
414
384
 
415
385
  #### Defined in
416
386
 
417
- [lib/types.ts:437](https://github.com/nevoland/quetch/blob/3a78cd1/lib/types.ts#L437)
387
+ [lib/types/FilterKeys.ts:4](https://github.com/nevoland/quetch/blob/f8fb38a/lib/types/FilterKeys.ts#L4)
418
388
 
419
389
  ___
420
390
 
@@ -440,7 +410,7 @@ Checks if a given number field matches a given number value according to a given
440
410
 
441
411
  #### Defined in
442
412
 
443
- [lib/types.ts:535](https://github.com/nevoland/quetch/blob/3a78cd1/lib/types.ts#L535)
413
+ [lib/types/FilterNumber.ts:6](https://github.com/nevoland/quetch/blob/f8fb38a/lib/types/FilterNumber.ts#L6)
444
414
 
445
415
  ___
446
416
 
@@ -450,7 +420,25 @@ ___
450
420
 
451
421
  #### Defined in
452
422
 
453
- [lib/types.ts:432](https://github.com/nevoland/quetch/blob/3a78cd1/lib/types.ts#L432)
423
+ [lib/types/FilterOperator.ts:3](https://github.com/nevoland/quetch/blob/f8fb38a/lib/types/FilterOperator.ts#L3)
424
+
425
+ ___
426
+
427
+ ### FilterSequence
428
+
429
+ Ƭ **FilterSequence**<`T`\>: { `operator`: ``"all"`` ; `value`: [`Filter`](README.md#filter)<`T`\>[] } \| { `operator`: ``"any"`` \| ``"none"`` ; `value?`: [`Filter`](README.md#filter)<`T`\>[] }
430
+
431
+ Joins a list of filters with a specific boolean operator.
432
+
433
+ #### Type parameters
434
+
435
+ | Name | Type |
436
+ | :------ | :------ |
437
+ | `T` | extends `object` |
438
+
439
+ #### Defined in
440
+
441
+ [lib/types/FilterSequence.ts:6](https://github.com/nevoland/quetch/blob/f8fb38a/lib/types/FilterSequence.ts#L6)
454
442
 
455
443
  ___
456
444
 
@@ -476,7 +464,7 @@ Checks if a given string field matches a given string value according to a given
476
464
 
477
465
  #### Defined in
478
466
 
479
- [lib/types.ts:479](https://github.com/nevoland/quetch/blob/3a78cd1/lib/types.ts#L479)
467
+ [lib/types/FilterString.ts:6](https://github.com/nevoland/quetch/blob/f8fb38a/lib/types/FilterString.ts#L6)
480
468
 
481
469
  ___
482
470
 
@@ -502,7 +490,7 @@ Checks if a given string field has any of the provided values.
502
490
 
503
491
  #### Defined in
504
492
 
505
- [lib/types.ts:526](https://github.com/nevoland/quetch/blob/3a78cd1/lib/types.ts#L526)
493
+ [lib/types/FilterStringIntersect.ts:6](https://github.com/nevoland/quetch/blob/f8fb38a/lib/types/FilterStringIntersect.ts#L6)
506
494
 
507
495
  ___
508
496
 
@@ -532,7 +520,45 @@ Checks if a given string field matches a given regular expression.
532
520
 
533
521
  #### Defined in
534
522
 
535
- [lib/types.ts:497](https://github.com/nevoland/quetch/blob/3a78cd1/lib/types.ts#L497)
523
+ [lib/types/FilterStringMatch.ts:6](https://github.com/nevoland/quetch/blob/f8fb38a/lib/types/FilterStringMatch.ts#L6)
524
+
525
+ ___
526
+
527
+ ### Get
528
+
529
+ Ƭ **Get**<`T`, `K`, `D`\>: `T` extends { [key in K]: any } ? `T`[`K`] : `D`
530
+
531
+ Returns the type of the property at the specified `K` key.
532
+
533
+ #### Type parameters
534
+
535
+ | Name | Type |
536
+ | :------ | :------ |
537
+ | `T` | extends `object` |
538
+ | `K` | extends `string` |
539
+ | `D` | `D` |
540
+
541
+ #### Defined in
542
+
543
+ [lib/types/Get.ts:4](https://github.com/nevoland/quetch/blob/f8fb38a/lib/types/Get.ts#L4)
544
+
545
+ ___
546
+
547
+ ### Group
548
+
549
+ Ƭ **Group**<`T`\>: keyof `T` \| { `customFields?`: [`CustomFieldAggregateMap`](README.md#customfieldaggregatemap)<`T`\> ; `field`: keyof `T` }
550
+
551
+ Specifies how items should be grouped.
552
+
553
+ #### Type parameters
554
+
555
+ | Name | Type |
556
+ | :------ | :------ |
557
+ | `T` | extends `object` |
558
+
559
+ #### Defined in
560
+
561
+ [lib/types/Group.ts:6](https://github.com/nevoland/quetch/blob/f8fb38a/lib/types/Group.ts#L6)
536
562
 
537
563
  ___
538
564
 
@@ -568,7 +594,87 @@ Handles an `input` query and returns an `output` promise, eventually using the `
568
594
 
569
595
  #### Defined in
570
596
 
571
- [lib/types.ts:23](https://github.com/nevoland/quetch/blob/3a78cd1/lib/types.ts#L23)
597
+ [lib/types/Handler.ts:6](https://github.com/nevoland/quetch/blob/f8fb38a/lib/types/Handler.ts#L6)
598
+
599
+ ___
600
+
601
+ ### Immutable
602
+
603
+ Ƭ **Immutable**<`T`\>: { readonly [K in keyof T]: T[K] }
604
+
605
+ #### Type parameters
606
+
607
+ | Name | Type |
608
+ | :------ | :------ |
609
+ | `T` | extends `object` |
610
+
611
+ #### Defined in
612
+
613
+ [lib/types/Immutable.ts:1](https://github.com/nevoland/quetch/blob/f8fb38a/lib/types/Immutable.ts#L1)
614
+
615
+ ___
616
+
617
+ ### InjectCustomFields
618
+
619
+ Ƭ **InjectCustomFields**<`T`, `C`\>: `C` extends [`CustomFieldMap`](README.md#customfieldmap)<`T`\> ? { readonly [K in keyof T \| keyof C]: K extends keyof T ? T[K] : K extends keyof C ? C[K] extends FieldFunctionCustom<T\> ? ReturnType<C[K]["value"]\> : C[K]["operator"] extends keyof FieldFunctionReturn ? FieldFunctionReturn[C[K]["operator"]] : never : never } : `T`
620
+
621
+ Injects the custom fields into the entity type.
622
+
623
+ #### Type parameters
624
+
625
+ | Name | Type |
626
+ | :------ | :------ |
627
+ | `T` | extends `object` |
628
+ | `C` | extends [`CustomFieldMap`](README.md#customfieldmap)<`T`\> \| `undefined` |
629
+
630
+ #### Defined in
631
+
632
+ [lib/types/InjectCustomFields.ts:8](https://github.com/nevoland/quetch/blob/f8fb38a/lib/types/InjectCustomFields.ts#L8)
633
+
634
+ ___
635
+
636
+ ### Item
637
+
638
+ Ƭ **Item**<`T`, `S`\>: `T` extends infer I[] ? `I` : `T` extends `ReadonlyArray`<infer I\> ? `I` : `S`
639
+
640
+ Returns the inferred item type of an array, or an alternative type if it is something else (e.g., `undefined`).
641
+
642
+ #### Type parameters
643
+
644
+ | Name | Type |
645
+ | :------ | :------ |
646
+ | `T` | `T` |
647
+ | `S` | `undefined` |
648
+
649
+ #### Defined in
650
+
651
+ [lib/types/Item.ts:4](https://github.com/nevoland/quetch/blob/f8fb38a/lib/types/Item.ts#L4)
652
+
653
+ ___
654
+
655
+ ### Key
656
+
657
+ Ƭ **Key**: `string` \| `number` \| `symbol`
658
+
659
+ #### Defined in
660
+
661
+ [lib/types/Key.ts:1](https://github.com/nevoland/quetch/blob/f8fb38a/lib/types/Key.ts#L1)
662
+
663
+ ___
664
+
665
+ ### Mutable
666
+
667
+ Ƭ **Mutable**<`T`\>: { -readonly [K in keyof T]: T[K] }
668
+
669
+ #### Type parameters
670
+
671
+ | Name | Type |
672
+ | :------ | :------ |
673
+ | `T` | extends `object` |
674
+
675
+ #### Defined in
676
+
677
+ [lib/types/Mutable.ts:1](https://github.com/nevoland/quetch/blob/f8fb38a/lib/types/Mutable.ts#L1)
572
678
 
573
679
  ___
574
680
 
@@ -601,7 +707,7 @@ Handles an `input` query and returns an `output` promise.
601
707
 
602
708
  #### Defined in
603
709
 
604
- [lib/types.ts:31](https://github.com/nevoland/quetch/blob/3a78cd1/lib/types.ts#L31)
710
+ [lib/types/NextHandler.ts:4](https://github.com/nevoland/quetch/blob/f8fb38a/lib/types/NextHandler.ts#L4)
605
711
 
606
712
  ___
607
713
 
@@ -619,13 +725,13 @@ Order item.
619
725
 
620
726
  #### Defined in
621
727
 
622
- [lib/types.ts:338](https://github.com/nevoland/quetch/blob/3a78cd1/lib/types.ts#L338)
728
+ [lib/types/Order.ts:4](https://github.com/nevoland/quetch/blob/f8fb38a/lib/types/Order.ts#L4)
623
729
 
624
730
  ___
625
731
 
626
732
  ### Query
627
733
 
628
- Ƭ **Query**<`T`, `C`\>: [`QueryGet`](README.md#queryget)<`T`, `C`\> \| [`QueryGetMultiple`](README.md#querygetmultiple)<`T`, `C`\> \| [`QueryCreate`](README.md#querycreate)<`T`\> \| [`QueryCreateMultiple`](README.md#querycreatemultiple)<`T`\> \| [`QueryUpdate`](README.md#queryupdate)<`T`, `C`\> \| [`QueryUpdateMultiple`](README.md#queryupdatemultiple)<`T`, `C`\> \| [`QueryDelete`](README.md#querydelete)<`T`\> \| [`QueryDeleteMultiple`](README.md#querydeletemultiple)<`T`\> \| [`QueryAggregate`](README.md#queryaggregate)<`T`\>
734
+ Ƭ **Query**<`T`, `C`\>: `QueryBase`<[`InjectCustomFields`](README.md#injectcustomfields)<`T`, `C`\>\> & { `context?`: [`Context`](README.md#context)<`T`\> }
629
735
 
630
736
  Query that fetches or mutates an entity.
631
737
 
@@ -634,17 +740,17 @@ Query that fetches or mutates an entity.
634
740
  | Name | Type |
635
741
  | :------ | :------ |
636
742
  | `T` | extends `object` |
637
- | `C` | extends [`CustomFieldMap`](README.md#customfieldmap)<`T`\> |
743
+ | `C` | extends [`CustomFieldMap`](README.md#customfieldmap)<`T`\> \| `undefined` |
638
744
 
639
745
  #### Defined in
640
746
 
641
- [lib/types.ts:80](https://github.com/nevoland/quetch/blob/3a78cd1/lib/types.ts#L80)
747
+ [lib/types/Query.ts:28](https://github.com/nevoland/quetch/blob/f8fb38a/lib/types/Query.ts#L28)
642
748
 
643
749
  ___
644
750
 
645
751
  ### QueryAggregate
646
752
 
647
- Ƭ **QueryAggregate**<`T`\>: [`QueryBase`](README.md#querybase)<`T`\> & { `aggregator`: [`AggregateFunction`](README.md#aggregatefunction)<`T`\> ; `filter?`: [`Filter`](README.md#filter)<`T`\> ; `method`: ``"aggregate"`` }
753
+ Ƭ **QueryAggregate**<`T`\>: `Object`
648
754
 
649
755
  Query for computing an aggregated value.
650
756
 
@@ -654,39 +760,33 @@ Query for computing an aggregated value.
654
760
  | :------ | :------ |
655
761
  | `T` | extends `object` |
656
762
 
657
- #### Defined in
658
-
659
- [lib/types.ts:329](https://github.com/nevoland/quetch/blob/3a78cd1/lib/types.ts#L329)
660
-
661
- ___
763
+ #### Type declaration
662
764
 
663
- ### QueryBase
765
+ | Name | Type |
766
+ | :------ | :------ |
767
+ | `aggregator` | [`AggregateFunction`](README.md#aggregatefunction)<`T`\> |
768
+ | `filter?` | [`Filter`](README.md#filter)<`T`\> |
769
+ | `method` | ``"aggregate"`` |
664
770
 
665
- Ƭ **QueryBase**<`T`\>: `Object`
771
+ #### Defined in
666
772
 
667
- #### Type parameters
773
+ [lib/types/QueryAggregate.ts:7](https://github.com/nevoland/quetch/blob/f8fb38a/lib/types/QueryAggregate.ts#L7)
668
774
 
669
- | Name | Type |
670
- | :------ | :------ |
671
- | `T` | extends `object` |
775
+ ___
672
776
 
673
- #### Type declaration
777
+ ### QueryAny
674
778
 
675
- | Name | Type | Description |
676
- | :------ | :------ | :------ |
677
- | `context?` | [`Context`](README.md#context)<`T`\> | Common item properties to use for identifying the item. **`Example`** ```typescript { context: { id: "000001" } } { context: { organisation: "World Company" } } ``` |
678
- | `signal?` | `AbortSignal` | Abort signal to abort the request. |
679
- | `type` | `string` \| `T`[] | - |
779
+ Ƭ **QueryAny**: [`Query`](README.md#query)<`any`, `any`\> & { `customFields?`: [`CustomFieldMap`](README.md#customfieldmap)<`any`\> ; `type`: [`Key`](README.md#key) \| `any`[] }
680
780
 
681
781
  #### Defined in
682
782
 
683
- [lib/types.ts:102](https://github.com/nevoland/quetch/blob/3a78cd1/lib/types.ts#L102)
783
+ [lib/types/QueryAny.ts:5](https://github.com/nevoland/quetch/blob/f8fb38a/lib/types/QueryAny.ts#L5)
684
784
 
685
785
  ___
686
786
 
687
787
  ### QueryCreate
688
788
 
689
- Ƭ **QueryCreate**<`T`\>: [`QueryBase`](README.md#querybase)<`T`\> & { `method`: ``"create"`` ; `value`: `Partial`<`T`\> }
789
+ Ƭ **QueryCreate**<`T`\>: `Object`
690
790
 
691
791
  Query for creating an item.
692
792
 
@@ -696,15 +796,22 @@ Query for creating an item.
696
796
  | :------ | :------ |
697
797
  | `T` | extends `object` |
698
798
 
799
+ #### Type declaration
800
+
801
+ | Name | Type |
802
+ | :------ | :------ |
803
+ | `method` | ``"create"`` |
804
+ | `value` | `Partial`<`T`\> |
805
+
699
806
  #### Defined in
700
807
 
701
- [lib/types.ts:244](https://github.com/nevoland/quetch/blob/3a78cd1/lib/types.ts#L244)
808
+ [lib/types/QueryCreate.ts:4](https://github.com/nevoland/quetch/blob/f8fb38a/lib/types/QueryCreate.ts#L4)
702
809
 
703
810
  ___
704
811
 
705
812
  ### QueryCreateMultiple
706
813
 
707
- Ƭ **QueryCreateMultiple**<`T`\>: [`QueryBase`](README.md#querybase)<`T`\> & { `method`: ``"create"`` ; `multiple`: ``true`` ; `value`: `Partial`<`T`\>[] }
814
+ Ƭ **QueryCreateMultiple**<`T`\>: `Object`
708
815
 
709
816
  Query for creating multiple items.
710
817
 
@@ -714,15 +821,23 @@ Query for creating multiple items.
714
821
  | :------ | :------ |
715
822
  | `T` | extends `object` |
716
823
 
824
+ #### Type declaration
825
+
826
+ | Name | Type |
827
+ | :------ | :------ |
828
+ | `method` | ``"create"`` |
829
+ | `multiple` | ``true`` |
830
+ | `value` | `Partial`<`T`\>[] |
831
+
717
832
  #### Defined in
718
833
 
719
- [lib/types.ts:252](https://github.com/nevoland/quetch/blob/3a78cd1/lib/types.ts#L252)
834
+ [lib/types/QueryCreateMultiple.ts:4](https://github.com/nevoland/quetch/blob/f8fb38a/lib/types/QueryCreateMultiple.ts#L4)
720
835
 
721
836
  ___
722
837
 
723
838
  ### QueryDelete
724
839
 
725
- Ƭ **QueryDelete**<`T`\>: [`QueryBase`](README.md#querybase)<`T`\> & { `filter?`: [`Filter`](README.md#filter)<`T`\> ; `method`: ``"delete"`` }
840
+ Ƭ **QueryDelete**<`T`\>: `Object`
726
841
 
727
842
  Query for deleting an item.
728
843
 
@@ -732,15 +847,23 @@ Query for deleting an item.
732
847
  | :------ | :------ |
733
848
  | `T` | extends `object` |
734
849
 
850
+ #### Type declaration
851
+
852
+ | Name | Type |
853
+ | :------ | :------ |
854
+ | `customFields?` | [`CustomFieldMap`](README.md#customfieldmap)<`T`\> |
855
+ | `filter?` | [`Filter`](README.md#filter)<`T`\> |
856
+ | `method` | ``"delete"`` |
857
+
735
858
  #### Defined in
736
859
 
737
- [lib/types.ts:312](https://github.com/nevoland/quetch/blob/3a78cd1/lib/types.ts#L312)
860
+ [lib/types/QueryDelete.ts:7](https://github.com/nevoland/quetch/blob/f8fb38a/lib/types/QueryDelete.ts#L7)
738
861
 
739
862
  ___
740
863
 
741
864
  ### QueryDeleteMultiple
742
865
 
743
- Ƭ **QueryDeleteMultiple**<`T`\>: [`QueryBase`](README.md#querybase)<`T`\> & { `filter?`: [`Filter`](README.md#filter)<`T`\> ; `method`: ``"delete"`` ; `multiple`: ``true`` }
866
+ Ƭ **QueryDeleteMultiple**<`T`\>: `Object`
744
867
 
745
868
  Query for deleting multiple items.
746
869
 
@@ -750,34 +873,66 @@ Query for deleting multiple items.
750
873
  | :------ | :------ |
751
874
  | `T` | extends `object` |
752
875
 
876
+ #### Type declaration
877
+
878
+ | Name | Type |
879
+ | :------ | :------ |
880
+ | `customFields?` | [`CustomFieldMap`](README.md#customfieldmap)<`T`\> |
881
+ | `filter?` | [`Filter`](README.md#filter)<`T`\> |
882
+ | `method` | ``"delete"`` |
883
+ | `multiple` | ``true`` |
884
+
885
+ #### Defined in
886
+
887
+ [lib/types/QueryDeleteMultiple.ts:7](https://github.com/nevoland/quetch/blob/f8fb38a/lib/types/QueryDeleteMultiple.ts#L7)
888
+
889
+ ___
890
+
891
+ ### QueryMethod
892
+
893
+ Ƭ **QueryMethod**: `Exclude`<[`Query`](README.md#query)<`never`, `never`\>[``"method"``], `undefined`\>
894
+
895
+ Available query methods.
896
+
753
897
  #### Defined in
754
898
 
755
- [lib/types.ts:320](https://github.com/nevoland/quetch/blob/3a78cd1/lib/types.ts#L320)
899
+ [lib/types/QueryMethod.ts:6](https://github.com/nevoland/quetch/blob/f8fb38a/lib/types/QueryMethod.ts#L6)
756
900
 
757
901
  ___
758
902
 
759
- ### QueryGet
903
+ ### QueryRead
760
904
 
761
- Ƭ **QueryGet**<`T`, `C`\>: [`QueryBase`](README.md#querybase)<`T`\> & { `groupBy?`: `never` ; `method?`: ``"get"`` ; `multiple?`: ``false`` ; `offset?`: `never` ; `orderBy?`: `never` } & { `customFields`: `C` ; `fields?`: readonly keyof `InjectCustomField`<`T`, `C`\>[] ; `filter?`: [`Filter`](README.md#filter)<`InjectCustomField`<`T`, `C`\>\> } \| { `customFields?`: `never` ; `fields?`: readonly keyof `T`[] ; `filter?`: [`Filter`](README.md#filter)<`T`\> }
905
+ Ƭ **QueryRead**<`T`\>: `Object`
762
906
 
763
- Query for getting a single item.
907
+ Query for reading a single item.
764
908
 
765
909
  #### Type parameters
766
910
 
767
911
  | Name | Type |
768
912
  | :------ | :------ |
769
913
  | `T` | extends `object` |
770
- | `C` | extends [`CustomFieldMap`](README.md#customfieldmap)<`T`\> |
914
+
915
+ #### Type declaration
916
+
917
+ | Name | Type | Description |
918
+ | :------ | :------ | :------ |
919
+ | `fields?` | readonly keyof `T`[] | Item fields to pick. If omitted, all fields are picked. |
920
+ | `filter?` | [`Filter`](README.md#filter)<`T`\> | Filter for finding the item, if it cannot be found based on the `context`. |
921
+ | `group?` | `never` | - |
922
+ | `method?` | ``"read"`` | - |
923
+ | `multiple?` | ``false`` | - |
924
+ | `offset?` | `never` | - |
925
+ | `order?` | [`Order`](README.md#order)<`T`\>[] | Order by which the items should be sorted. |
771
926
 
772
927
  #### Defined in
773
928
 
774
- [lib/types.ts:143](https://github.com/nevoland/quetch/blob/3a78cd1/lib/types.ts#L143)
929
+ [lib/types/QueryRead.ts:7](https://github.com/nevoland/quetch/blob/f8fb38a/lib/types/QueryRead.ts#L7)
775
930
 
776
931
  ___
777
932
 
778
- ### QueryGetMultiple
933
+ ### QueryReadMultiple
779
934
 
780
- Ƭ **QueryGetMultiple**<`T`, `C`\>: [`QueryBase`](README.md#querybase)<`T`\> & { `limit?`: `number` ; `method?`: ``"get"`` ; `multiple`: ``true`` ; `offset?`: `number` } & { `customFields`: `C` ; `fields?`: readonly keyof `InjectCustomField`<`T`, `C`\>[] ; `filter?`: [`Filter`](README.md#filter)<`InjectCustomField`<`T`, `C`\>\> ; `groupBy?`: `Group`<`InjectCustomField`<`T`, `C`\>\>[] ; `orderBy?`: [`Order`](README.md#order)<`InjectCustomField`<`T`, `C`\>\>[] } \| { `customFields?`: `never` ; `fields?`: readonly keyof `T`[] ; `filter?`: [`Filter`](README.md#filter)<`T`\> ; `groupBy?`: `Group`<`T`\>[] ; `orderBy?`: [`Order`](README.md#order)<`T`\>[] }
935
+ Ƭ **QueryReadMultiple**<`T`\>: `Object`
781
936
 
782
937
  Query for getting a list of items.
783
938
 
@@ -786,61 +941,101 @@ Query for getting a list of items.
786
941
  | Name | Type |
787
942
  | :------ | :------ |
788
943
  | `T` | extends `object` |
789
- | `C` | extends [`CustomFieldMap`](README.md#customfieldmap)<`T`\> |
944
+
945
+ #### Type declaration
946
+
947
+ | Name | Type | Description |
948
+ | :------ | :------ | :------ |
949
+ | `fields?` | readonly keyof `T`[] | Item fields to pick. If omitted, all fields are picked. |
950
+ | `filter?` | [`Filter`](README.md#filter)<`T`\> | Filter that picks the items. |
951
+ | `group?` | [`Group`](README.md#group)<`T`\>[] | Groups items by specified fields. |
952
+ | `limit?` | `number` | Upper bound of the number of items to return. |
953
+ | `method?` | ``"read"`` | - |
954
+ | `multiple` | ``true`` | - |
955
+ | `offset?` | `number` | Offset of the first matching item. |
956
+ | `order?` | [`Order`](README.md#order)<`T`\>[] | Order by which the items should be sorted. |
790
957
 
791
958
  #### Defined in
792
959
 
793
- [lib/types.ts:183](https://github.com/nevoland/quetch/blob/3a78cd1/lib/types.ts#L183)
960
+ [lib/types/QueryReadMultiple.ts:8](https://github.com/nevoland/quetch/blob/f8fb38a/lib/types/QueryReadMultiple.ts#L8)
794
961
 
795
962
  ___
796
963
 
797
- ### QueryMethod
964
+ ### QueryUpdate
798
965
 
799
- Ƭ **QueryMethod**: `Exclude`<[`Query`](README.md#query)<`never`, `never`\>[``"method"``], `undefined`\>
966
+ Ƭ **QueryUpdate**<`T`\>: `Object`
800
967
 
801
- Available query methods.
968
+ Query for updating an item.
969
+
970
+ #### Type parameters
971
+
972
+ | Name | Type |
973
+ | :------ | :------ |
974
+ | `T` | extends `object` |
975
+
976
+ #### Type declaration
977
+
978
+ | Name | Type | Description |
979
+ | :------ | :------ | :------ |
980
+ | `filter?` | [`Filter`](README.md#filter)<`T`\> | Filter for finding the item, if it cannot be found based on the `context`. |
981
+ | `group?` | `never` | - |
982
+ | `method` | ``"update"`` | - |
983
+ | `offset?` | `never` | - |
984
+ | `order` | `never` | - |
985
+ | `value` | `Partial`<`T`\> | Partial property values to update. |
802
986
 
803
987
  #### Defined in
804
988
 
805
- [lib/types.ts:123](https://github.com/nevoland/quetch/blob/3a78cd1/lib/types.ts#L123)
989
+ [lib/types/QueryUpdate.ts:6](https://github.com/nevoland/quetch/blob/f8fb38a/lib/types/QueryUpdate.ts#L6)
806
990
 
807
991
  ___
808
992
 
809
- ### QueryUpdate
993
+ ### QueryUpdateMultiple
810
994
 
811
- Ƭ **QueryUpdate**<`T`, `C`\>: [`QueryBase`](README.md#querybase)<`T`\> & { `customFields?`: `C` ; `filter?`: [`Filter`](README.md#filter)<`InjectCustomField`<`T`, `C`\>\> ; `groupBy?`: `never` ; `method`: ``"update"`` ; `offset?`: `never` ; `orderBy`: `never` ; `value`: `Partial`<`T`\> }
995
+ Ƭ **QueryUpdateMultiple**<`T`\>: `Object`
812
996
 
813
- Query for updating an item.
997
+ Query for updating multiple items.
814
998
 
815
999
  #### Type parameters
816
1000
 
817
1001
  | Name | Type |
818
1002
  | :------ | :------ |
819
1003
  | `T` | extends `object` |
820
- | `C` | extends [`CustomFieldMap`](README.md#customfieldmap)<`T`\> |
1004
+
1005
+ #### Type declaration
1006
+
1007
+ | Name | Type | Description |
1008
+ | :------ | :------ | :------ |
1009
+ | `filter?` | [`Filter`](README.md#filter)<`T`\> | - |
1010
+ | `limit?` | `number` | Sets the upper bound of the number of items to update. |
1011
+ | `method` | ``"update"`` | - |
1012
+ | `multiple` | ``true`` | - |
1013
+ | `offset?` | `number` | Offset of the first matching item to update. |
1014
+ | `order?` | [`Order`](README.md#order)<`T`\>[] | Order by which the items should be sorted. |
1015
+ | `value` | `Partial`<`T`\>[] | Partial property values to update. |
821
1016
 
822
1017
  #### Defined in
823
1018
 
824
- [lib/types.ts:261](https://github.com/nevoland/quetch/blob/3a78cd1/lib/types.ts#L261)
1019
+ [lib/types/QueryUpdateMultiple.ts:7](https://github.com/nevoland/quetch/blob/f8fb38a/lib/types/QueryUpdateMultiple.ts#L7)
825
1020
 
826
1021
  ___
827
1022
 
828
- ### QueryUpdateMultiple
829
-
830
- Ƭ **QueryUpdateMultiple**<`T`, `C`\>: [`QueryBase`](README.md#querybase)<`T`\> & { `customFields?`: `C` ; `filter?`: [`Filter`](README.md#filter)<`T`\> ; `limit?`: `number` ; `method`: ``"update"`` ; `multiple`: ``true`` ; `offset?`: `number` ; `orderBy?`: [`Order`](README.md#order)<`InjectCustomField`<`T`, `C`\>\>[] ; `value`: `Partial`<`T`\>[] }
1023
+ ### Result
831
1024
 
832
- Query for updating multiple items.
1025
+ Ƭ **Result**<`T`, `Q`, `C`, `U`\>: [`Q`] extends [{ `method`: ``"read"`` }] ? [`Q`] extends [{ `multiple`: ``true`` }] ? `ResultRead`<`T`, `Q`, `C`, `U`\>[] : `ResultRead`<`T`, `Q`, `C`, `U`\> : [`Q`] extends [{ `method`: ``"aggregate"`` }] ? `number` : [`Q`] extends [{ `multiple`: ``true`` }] ? `ResultRead`<`T`, `Q`, `C`, `U`\>[] : `ResultRead`<`T`, `Q`, `C`, `U`\>
833
1026
 
834
1027
  #### Type parameters
835
1028
 
836
1029
  | Name | Type |
837
1030
  | :------ | :------ |
838
1031
  | `T` | extends `object` |
1032
+ | `Q` | extends [`Query`](README.md#query)<`T`, `C`\> |
839
1033
  | `C` | extends [`CustomFieldMap`](README.md#customfieldmap)<`T`\> |
1034
+ | `U` | extends [`InjectCustomFields`](README.md#injectcustomfields)<`T`, `C`\> = [`InjectCustomFields`](README.md#injectcustomfields)<`T`, `C`\> |
840
1035
 
841
1036
  #### Defined in
842
1037
 
843
- [lib/types.ts:283](https://github.com/nevoland/quetch/blob/3a78cd1/lib/types.ts#L283)
1038
+ [lib/types/Result.ts:25](https://github.com/nevoland/quetch/blob/f8fb38a/lib/types/Result.ts#L25)
844
1039
 
845
1040
  ___
846
1041
 
@@ -865,7 +1060,7 @@ ___
865
1060
 
866
1061
  #### Defined in
867
1062
 
868
- [lib/types.ts:13](https://github.com/nevoland/quetch/blob/3a78cd1/lib/types.ts#L13)
1063
+ [lib/types/Store.ts:2](https://github.com/nevoland/quetch/blob/f8fb38a/lib/types/Store.ts#L2)
869
1064
 
870
1065
  ## Functions
871
1066
 
@@ -883,9 +1078,9 @@ If a query occurs twice, `mergeQuery(query, currentQuery)` is called and the out
883
1078
 
884
1079
  | Name | Type |
885
1080
  | :------ | :------ |
886
- | `I` | extends [`AnyQuery`](README.md#anyquery) |
1081
+ | `I` | extends [`QueryAny`](README.md#queryany) |
887
1082
  | `O` | `O` |
888
- | `In` | extends [`AnyQuery`](README.md#anyquery) |
1083
+ | `In` | extends [`QueryAny`](README.md#queryany) |
889
1084
  | `On` | `On` |
890
1085
 
891
1086
  #### Parameters
@@ -895,7 +1090,7 @@ If a query occurs twice, `mergeQuery(query, currentQuery)` is called and the out
895
1090
  | `options` | `Object` |
896
1091
  | `options.delay?` | `number` |
897
1092
  | `options.mergeQuery?` | (`query`: `I`, `currentQuery`: `I`) => `I` |
898
- | `options.queryForGroup` | (`queryList`: `I`[], `group`: `string`) => [`AnyQuery`](README.md#anyquery) |
1093
+ | `options.queryForGroup` | (`queryList`: `I`[], `group`: `string`) => [`QueryAny`](README.md#queryany) |
899
1094
  | `options.queryGroupId?` | (`query`: `I`) => `undefined` \| `string` |
900
1095
  | `options.queryId?` | (`query`: `I`) => `undefined` \| `string` |
901
1096
  | `options.resultForQuery` | (`resultList`: `O`[], `query`: `I`) => `O` |
@@ -906,7 +1101,7 @@ If a query occurs twice, `mergeQuery(query, currentQuery)` is called and the out
906
1101
 
907
1102
  #### Defined in
908
1103
 
909
- [lib/middlewares/aggregate.ts:16](https://github.com/nevoland/quetch/blob/3a78cd1/lib/middlewares/aggregate.ts#L16)
1104
+ [lib/middlewares/aggregate.ts:16](https://github.com/nevoland/quetch/blob/f8fb38a/lib/middlewares/aggregate.ts#L16)
910
1105
 
911
1106
  ___
912
1107
 
@@ -948,7 +1143,7 @@ const customFetch = combine(
948
1143
 
949
1144
  #### Defined in
950
1145
 
951
- [lib/middlewares/branch.ts:21](https://github.com/nevoland/quetch/blob/3a78cd1/lib/middlewares/branch.ts#L21)
1146
+ [lib/middlewares/branch.ts:21](https://github.com/nevoland/quetch/blob/f8fb38a/lib/middlewares/branch.ts#L21)
952
1147
 
953
1148
  ___
954
1149
 
@@ -960,9 +1155,9 @@ ___
960
1155
 
961
1156
  | Name | Type |
962
1157
  | :------ | :------ |
963
- | `I` | extends [`AnyQueryExternal`](README.md#anyqueryexternal) |
1158
+ | `I` | extends [`QueryAny`](README.md#queryany) |
964
1159
  | `O` | `O` |
965
- | `In` | extends [`AnyQueryExternal`](README.md#anyqueryexternal) |
1160
+ | `In` | extends [`QueryAny`](README.md#queryany) |
966
1161
  | `On` | `On` |
967
1162
 
968
1163
  #### Parameters
@@ -977,7 +1172,7 @@ ___
977
1172
 
978
1173
  #### Defined in
979
1174
 
980
- [lib/middlewares/cache.ts:39](https://github.com/nevoland/quetch/blob/3a78cd1/lib/middlewares/cache.ts#L39)
1175
+ [lib/middlewares/cache.ts:39](https://github.com/nevoland/quetch/blob/f8fb38a/lib/middlewares/cache.ts#L39)
981
1176
 
982
1177
  ___
983
1178
 
@@ -1050,60 +1245,86 @@ Handler that combines all provided handlers.
1050
1245
 
1051
1246
  #### Defined in
1052
1247
 
1053
- [lib/middlewares/combine.ts:801](https://github.com/nevoland/quetch/blob/3a78cd1/lib/middlewares/combine.ts#L801)
1248
+ [lib/middlewares/combine.ts:801](https://github.com/nevoland/quetch/blob/f8fb38a/lib/middlewares/combine.ts#L801)
1249
+
1250
+ ___
1251
+
1252
+ ### cork
1253
+
1254
+ ▸ **cork**(`input`): `Promise`<`never`\>
1255
+
1256
+ Uncallable handler used to terminate a sequence of handlers combined with `combine`.
1257
+
1258
+ #### Parameters
1259
+
1260
+ | Name | Type |
1261
+ | :------ | :------ |
1262
+ | `input` | `never` |
1263
+
1264
+ #### Returns
1265
+
1266
+ `Promise`<`never`\>
1267
+
1268
+ #### Defined in
1269
+
1270
+ [lib/types/NextHandler.ts:4](https://github.com/nevoland/quetch/blob/f8fb38a/lib/types/NextHandler.ts#L4)
1054
1271
 
1055
1272
  ___
1056
1273
 
1057
1274
  ### defineCheckQuery
1058
1275
 
1059
- ▸ **defineCheckQuery**<`Entities`\>(): <E, C, Q\>(`query`: `Q` & { `customFields?`: `C` ; `type`: `E`[] }) => typeof `query`<T, E, C, Q\>(`query`: `Q` & { `customFields?`: `C` ; `type`: `T` }) => typeof `query`
1276
+ ▸ **defineCheckQuery**<`M`\>(): <T, C, Q\>(`query`: `Q` & { `customFields?`: `C` ; `type`: `T`[] }) => typeof `query`<K, T, C, Q\>(`query`: `Q` & { `customFields?`: `C` ; `type`: `K` }) => typeof `query`
1277
+
1278
+ Returns a function that checks queries. This is useful to prevent the query to have its type being narrowed if declared outside of a custom fetcher function argument.
1060
1279
 
1061
1280
  #### Type parameters
1062
1281
 
1063
1282
  | Name | Type |
1064
1283
  | :------ | :------ |
1065
- | `Entities` | extends `Record`<`string`, `object`\> |
1284
+ | `M` | extends `Record`<`string`, `object`\> |
1066
1285
 
1067
1286
  #### Returns
1068
1287
 
1069
1288
  `fn`
1070
1289
 
1071
- <`E`, `C`, `Q`\>(`query`): typeof `query`
1290
+ Function that checks queries.
1291
+
1292
+ ▸ <`T`, `C`, `Q`\>(`query`): typeof `query`
1072
1293
 
1073
1294
  ##### Type parameters
1074
1295
 
1075
1296
  | Name | Type |
1076
1297
  | :------ | :------ |
1077
- | `E` | extends `object` |
1078
- | `C` | extends [`CustomFieldMap`](README.md#customfieldmap)<`E`\> |
1079
- | `Q` | extends [`Query`](README.md#query)<`E`, `C`\> |
1298
+ | `T` | extends `object` |
1299
+ | `C` | extends [`CustomFieldMap`](README.md#customfieldmap)<`T`\> |
1300
+ | `Q` | extends [`Query`](README.md#query)<`T`, `C`\> |
1080
1301
 
1081
1302
  ##### Parameters
1082
1303
 
1083
1304
  | Name | Type |
1084
1305
  | :------ | :------ |
1085
- | `query` | `Q` & { `customFields?`: `C` ; `type`: `E`[] } |
1306
+ | `query` | `Q` & { `customFields?`: `C` ; `type`: `T`[] } |
1086
1307
 
1087
1308
  ##### Returns
1088
1309
 
1089
1310
  typeof `query`
1090
1311
 
1091
- ▸ <`T`, `E`, `C`, `Q`\>(`query`): typeof `query`
1312
+ ▸ <`K`, `T`, `C`, `Q`\>(`query`): typeof `query`
1092
1313
 
1093
1314
  ##### Type parameters
1094
1315
 
1095
1316
  | Name | Type |
1096
1317
  | :------ | :------ |
1097
- | `T` | extends `string` \| `number` \| `symbol` |
1098
- | `E` | extends `object` |
1099
- | `C` | extends [`CustomFieldMap`](README.md#customfieldmap)<`E`\> |
1100
- | `Q` | extends [`Query`](README.md#query)<`E`, `C`\> |
1318
+ | `K` | extends `string` \| `number` \| `symbol` |
1319
+ | `T` | extends `object` |
1320
+ | `C` | extends [`CustomFieldMap`](README.md#customfieldmap)<`T`\> |
1321
+ | `Q` | extends [`Query`](README.md#query)<`T`, `C`\> |
1101
1322
 
1102
1323
  ##### Parameters
1103
1324
 
1104
1325
  | Name | Type |
1105
1326
  | :------ | :------ |
1106
- | `query` | `Q` & { `customFields?`: `C` ; `type`: `T` } |
1327
+ | `query` | `Q` & { `customFields?`: `C` ; `type`: `K` } |
1107
1328
 
1108
1329
  ##### Returns
1109
1330
 
@@ -1111,13 +1332,13 @@ typeof `query`
1111
1332
 
1112
1333
  #### Defined in
1113
1334
 
1114
- [lib/tools/defineCheckQuery.ts:3](https://github.com/nevoland/quetch/blob/3a78cd1/lib/tools/defineCheckQuery.ts#L3)
1335
+ [lib/tools/defineCheckQuery.ts:8](https://github.com/nevoland/quetch/blob/f8fb38a/lib/tools/defineCheckQuery.ts#L8)
1115
1336
 
1116
1337
  ___
1117
1338
 
1118
1339
  ### defineCustomFetch
1119
1340
 
1120
- ▸ **defineCustomFetch**<`M`\>(`handler`): <E, C, Q\>(`input`: `Q` & { `customFields?`: `C` ; `type`: `E`[] }) => `Promise`<`Q`[``"method"``] extends ``"get"`` ? `Q` extends { `multiple`: ``true`` } ? [`EntityItem`](README.md#entityitem)<`E`, `C`, `Q`\>[] : [`EntityItem`](README.md#entityitem)<`E`, `C`, `Q`\> : `Q`[``"method"``] extends ``"aggregate"`` ? `number` : `Q` extends { `multiple`: ``true`` } ? [`EntityItem`](README.md#entityitem)<`E`, `C`, `Q`\>[] : [`EntityItem`](README.md#entityitem)<`E`, `C`, `Q`\>\><T, E, C, Q\>(`input`: `Q` & { `customFields?`: `C` ; `type`: `T` }) => `Promise`<`Q`[``"method"``] extends ``"get"`` ? `Q` extends { `multiple`: ``true`` } ? [`EntityItem`](README.md#entityitem)<`E`, `C`, `Q`\>[] : [`EntityItem`](README.md#entityitem)<`E`, `C`, `Q`\> : `Q`[``"method"``] extends ``"aggregate"`` ? `number` : `Q` extends { `multiple`: ``true`` } ? [`EntityItem`](README.md#entityitem)<`E`, `C`, `Q`\>[] : [`EntityItem`](README.md#entityitem)<`E`, `C`, `Q`\>\>
1341
+ ▸ **defineCustomFetch**<`M`\>(`handler`): <K, T, Q\>(`query`: `Q` & { `customFields?`: `undefined` ; `type`: `K` }) => `Promise`<[`Result`](README.md#result)<`T`, `Q`, {}\>\><K, T, Q, C\>(`query`: `Q` & { `customFields`: `C` ; `type`: `K` }) => `Promise`<[`Result`](README.md#result)<`T`, `Q`, `C`\>\><T, Q\>(`type`: `T`[], `query`: `Q` & { `customFields?`: `undefined` }) => `Promise`<[`Result`](README.md#result)<`T`, `Q`, {}\>\><T, Q, C\>(`query`: `Q` & { `customFields`: `C` ; `type`: `T`[] }) => `Promise`<[`Result`](README.md#result)<`T`, `Q`, `C`\>\>
1121
1342
 
1122
1343
  #### Type parameters
1123
1344
 
@@ -1129,56 +1350,171 @@ ___
1129
1350
 
1130
1351
  | Name | Type |
1131
1352
  | :------ | :------ |
1132
- | `handler` | [`Handler`](README.md#handler)<[`AnyQuery`](README.md#anyquery), `any`, `never`, `never`\> |
1353
+ | `handler` | [`Handler`](README.md#handler)<`Object`, `any`, `never`, `never`\> |
1354
+
1355
+ #### Returns
1356
+
1357
+ `fn`
1358
+
1359
+ ▸ <`K`, `T`, `Q`\>(`query`): `Promise`<[`Result`](README.md#result)<`T`, `Q`, {}\>\>
1360
+
1361
+ ##### Type parameters
1362
+
1363
+ | Name | Type |
1364
+ | :------ | :------ |
1365
+ | `K` | extends `string` \| `number` \| `symbol` |
1366
+ | `T` | extends `object` |
1367
+ | `Q` | extends [`Query`](README.md#query)<`T`, {}\> |
1368
+
1369
+ ##### Parameters
1370
+
1371
+ | Name | Type |
1372
+ | :------ | :------ |
1373
+ | `query` | `Q` & { `customFields?`: `undefined` ; `type`: `K` } |
1374
+
1375
+ ##### Returns
1376
+
1377
+ `Promise`<[`Result`](README.md#result)<`T`, `Q`, {}\>\>
1378
+
1379
+ ▸ <`K`, `T`, `Q`, `C`\>(`query`): `Promise`<[`Result`](README.md#result)<`T`, `Q`, `C`\>\>
1380
+
1381
+ ##### Type parameters
1382
+
1383
+ | Name | Type |
1384
+ | :------ | :------ |
1385
+ | `K` | extends `string` \| `number` \| `symbol` |
1386
+ | `T` | extends `object` |
1387
+ | `Q` | extends [`Query`](README.md#query)<`T`, `C`\> |
1388
+ | `C` | extends [`CustomFieldMap`](README.md#customfieldmap)<`T`\> |
1389
+
1390
+ ##### Parameters
1391
+
1392
+ | Name | Type |
1393
+ | :------ | :------ |
1394
+ | `query` | `Q` & { `customFields`: `C` ; `type`: `K` } |
1395
+
1396
+ ##### Returns
1397
+
1398
+ `Promise`<[`Result`](README.md#result)<`T`, `Q`, `C`\>\>
1399
+
1400
+ ▸ <`T`, `Q`\>(`type`, `query`): `Promise`<[`Result`](README.md#result)<`T`, `Q`, {}\>\>
1401
+
1402
+ ##### Type parameters
1403
+
1404
+ | Name | Type |
1405
+ | :------ | :------ |
1406
+ | `T` | extends `object` |
1407
+ | `Q` | extends [`Query`](README.md#query)<`T`, {}\> |
1408
+
1409
+ ##### Parameters
1410
+
1411
+ | Name | Type |
1412
+ | :------ | :------ |
1413
+ | `type` | `T`[] |
1414
+ | `query` | `Q` & { `customFields?`: `undefined` } |
1415
+
1416
+ ##### Returns
1417
+
1418
+ `Promise`<[`Result`](README.md#result)<`T`, `Q`, {}\>\>
1419
+
1420
+ ▸ <`T`, `Q`, `C`\>(`query`): `Promise`<[`Result`](README.md#result)<`T`, `Q`, `C`\>\>
1421
+
1422
+ ##### Type parameters
1423
+
1424
+ | Name | Type |
1425
+ | :------ | :------ |
1426
+ | `T` | extends `object` |
1427
+ | `Q` | extends [`Query`](README.md#query)<`T`, `C`\> |
1428
+ | `C` | extends [`CustomFieldMap`](README.md#customfieldmap)<`T`\> |
1429
+
1430
+ ##### Parameters
1431
+
1432
+ | Name | Type |
1433
+ | :------ | :------ |
1434
+ | `query` | `Q` & { `customFields`: `C` ; `type`: `T`[] } |
1435
+
1436
+ ##### Returns
1437
+
1438
+ `Promise`<[`Result`](README.md#result)<`T`, `Q`, `C`\>\>
1439
+
1440
+ #### Defined in
1441
+
1442
+ [lib/tools/defineCustomFetch.ts:11](https://github.com/nevoland/quetch/blob/f8fb38a/lib/tools/defineCustomFetch.ts#L11)
1443
+
1444
+ ___
1445
+
1446
+ ### defineGenericFetch
1447
+
1448
+ ▸ **defineGenericFetch**<`K`\>(`handler`): <T\>() => <Q\>(`query`: `Q` & { `customFields?`: `undefined` ; `type`: `K` \| `T`[] }) => `Promise`<[`Result`](README.md#result)<`T`, `Q`, {}\>\><Q, C\>(`query`: `Q` & { `customFields`: `C` ; `type`: `K` \| `T`[] }) => `Promise`<[`Result`](README.md#result)<`T`, `Q`, `C`\>\>
1449
+
1450
+ #### Type parameters
1451
+
1452
+ | Name | Type |
1453
+ | :------ | :------ |
1454
+ | `K` | extends `string` |
1455
+
1456
+ #### Parameters
1457
+
1458
+ | Name | Type |
1459
+ | :------ | :------ |
1460
+ | `handler` | [`Handler`](README.md#handler)<`Object`, `any`, `never`, `never`\> |
1133
1461
 
1134
1462
  #### Returns
1135
1463
 
1136
1464
  `fn`
1137
1465
 
1138
- ▸ <`E`, `C`, `Q`\>(`input`): `Promise`<`Q`[``"method"``] extends ``"get"`` ? `Q` extends { `multiple`: ``true`` } ? [`EntityItem`](README.md#entityitem)<`E`, `C`, `Q`\>[] : [`EntityItem`](README.md#entityitem)<`E`, `C`, `Q`\> : `Q`[``"method"``] extends ``"aggregate"`` ? `number` : `Q` extends { `multiple`: ``true`` } ? [`EntityItem`](README.md#entityitem)<`E`, `C`, `Q`\>[] : [`EntityItem`](README.md#entityitem)<`E`, `C`, `Q`\>\>
1466
+ ▸ <`T`\>(): <Q\>(`query`: `Q` & { `customFields?`: `undefined` ; `type`: `K` \| `T`[] }) => `Promise`<[`Result`](README.md#result)<`T`, `Q`, {}\>\><Q, C\>(`query`: `Q` & { `customFields`: `C` ; `type`: `K` \| `T`[] }) => `Promise`<[`Result`](README.md#result)<`T`, `Q`, `C`\>\>
1467
+
1468
+ ##### Type parameters
1469
+
1470
+ | Name | Type |
1471
+ | :------ | :------ |
1472
+ | `T` | extends `object` |
1473
+
1474
+ ##### Returns
1475
+
1476
+ `fn`
1477
+
1478
+ ▸ <`Q`\>(`query`): `Promise`<[`Result`](README.md#result)<`T`, `Q`, {}\>\>
1139
1479
 
1140
1480
  ##### Type parameters
1141
1481
 
1142
1482
  | Name | Type |
1143
1483
  | :------ | :------ |
1144
- | `E` | extends `object` |
1145
- | `C` | extends [`CustomFieldMap`](README.md#customfieldmap)<`E`\> |
1146
- | `Q` | extends [`Query`](README.md#query)<`E`, `C`\> |
1484
+ | `Q` | extends [`Query`](README.md#query)<`T`, {}\> |
1147
1485
 
1148
1486
  ##### Parameters
1149
1487
 
1150
1488
  | Name | Type |
1151
1489
  | :------ | :------ |
1152
- | `input` | `Q` & { `customFields?`: `C` ; `type`: `E`[] } |
1490
+ | `query` | `Q` & { `customFields?`: `undefined` ; `type`: `K` \| `T`[] } |
1153
1491
 
1154
1492
  ##### Returns
1155
1493
 
1156
- `Promise`<`Q`[``"method"``] extends ``"get"`` ? `Q` extends { `multiple`: ``true`` } ? [`EntityItem`](README.md#entityitem)<`E`, `C`, `Q`\>[] : [`EntityItem`](README.md#entityitem)<`E`, `C`, `Q`\> : `Q`[``"method"``] extends ``"aggregate"`` ? `number` : `Q` extends { `multiple`: ``true`` } ? [`EntityItem`](README.md#entityitem)<`E`, `C`, `Q`\>[] : [`EntityItem`](README.md#entityitem)<`E`, `C`, `Q`\>\>
1494
+ `Promise`<[`Result`](README.md#result)<`T`, `Q`, {}\>\>
1157
1495
 
1158
- ▸ <`T`, `E`, `C`, `Q`\>(`input`): `Promise`<`Q`[``"method"``] extends ``"get"`` ? `Q` extends { `multiple`: ``true`` } ? [`EntityItem`](README.md#entityitem)<`E`, `C`, `Q`\>[] : [`EntityItem`](README.md#entityitem)<`E`, `C`, `Q`\> : `Q`[``"method"``] extends ``"aggregate"`` ? `number` : `Q` extends { `multiple`: ``true`` } ? [`EntityItem`](README.md#entityitem)<`E`, `C`, `Q`\>[] : [`EntityItem`](README.md#entityitem)<`E`, `C`, `Q`\>\>
1496
+ ▸ <`Q`, `C`\>(`query`): `Promise`<[`Result`](README.md#result)<`T`, `Q`, `C`\>\>
1159
1497
 
1160
1498
  ##### Type parameters
1161
1499
 
1162
1500
  | Name | Type |
1163
1501
  | :------ | :------ |
1164
- | `T` | extends `string` \| `number` \| `symbol` |
1165
- | `E` | extends `object` |
1166
- | `C` | extends [`CustomFieldMap`](README.md#customfieldmap)<`E`\> |
1167
- | `Q` | extends [`Query`](README.md#query)<`E`, `C`\> |
1502
+ | `Q` | extends [`Query`](README.md#query)<`T`, `C`\> |
1503
+ | `C` | extends [`CustomFieldMap`](README.md#customfieldmap)<`T`\> |
1168
1504
 
1169
1505
  ##### Parameters
1170
1506
 
1171
1507
  | Name | Type |
1172
1508
  | :------ | :------ |
1173
- | `input` | `Q` & { `customFields?`: `C` ; `type`: `T` } |
1509
+ | `query` | `Q` & { `customFields`: `C` ; `type`: `K` \| `T`[] } |
1174
1510
 
1175
1511
  ##### Returns
1176
1512
 
1177
- `Promise`<`Q`[``"method"``] extends ``"get"`` ? `Q` extends { `multiple`: ``true`` } ? [`EntityItem`](README.md#entityitem)<`E`, `C`, `Q`\>[] : [`EntityItem`](README.md#entityitem)<`E`, `C`, `Q`\> : `Q`[``"method"``] extends ``"aggregate"`` ? `number` : `Q` extends { `multiple`: ``true`` } ? [`EntityItem`](README.md#entityitem)<`E`, `C`, `Q`\>[] : [`EntityItem`](README.md#entityitem)<`E`, `C`, `Q`\>\>
1513
+ `Promise`<[`Result`](README.md#result)<`T`, `Q`, `C`\>\>
1178
1514
 
1179
1515
  #### Defined in
1180
1516
 
1181
- [lib/tools/defineCustomFetch.ts:11](https://github.com/nevoland/quetch/blob/3a78cd1/lib/tools/defineCustomFetch.ts#L11)
1517
+ [lib/tools/defineGenericFetch.ts:5](https://github.com/nevoland/quetch/blob/f8fb38a/lib/tools/defineGenericFetch.ts#L5)
1182
1518
 
1183
1519
  ___
1184
1520
 
@@ -1202,7 +1538,7 @@ Handler that returns a promise that resolves to the response.
1202
1538
 
1203
1539
  #### Defined in
1204
1540
 
1205
- [lib/middlewares/fetchExternal.ts:12](https://github.com/nevoland/quetch/blob/3a78cd1/lib/middlewares/fetchExternal.ts#L12)
1541
+ [lib/middlewares/fetchExternal.ts:12](https://github.com/nevoland/quetch/blob/f8fb38a/lib/middlewares/fetchExternal.ts#L12)
1206
1542
 
1207
1543
  ___
1208
1544
 
@@ -1227,7 +1563,7 @@ Promise that resolves to the response.
1227
1563
 
1228
1564
  #### Defined in
1229
1565
 
1230
- [lib/middlewares/fetchLocal.ts:9](https://github.com/nevoland/quetch/blob/3a78cd1/lib/middlewares/fetchLocal.ts#L9)
1566
+ [lib/middlewares/fetchLocal.ts:9](https://github.com/nevoland/quetch/blob/f8fb38a/lib/middlewares/fetchLocal.ts#L9)
1231
1567
 
1232
1568
  ___
1233
1569
 
@@ -1253,7 +1589,7 @@ ___
1253
1589
 
1254
1590
  #### Defined in
1255
1591
 
1256
- [lib/tools/filterFromContext.ts:5](https://github.com/nevoland/quetch/blob/3a78cd1/lib/tools/filterFromContext.ts#L5)
1592
+ [lib/tools/filterFromContext.ts:5](https://github.com/nevoland/quetch/blob/f8fb38a/lib/tools/filterFromContext.ts#L5)
1257
1593
 
1258
1594
  ___
1259
1595
 
@@ -1284,7 +1620,7 @@ Checks wether the provided `value` matches the `filter` or not.
1284
1620
 
1285
1621
  #### Defined in
1286
1622
 
1287
- [lib/tools/filterItem.ts:12](https://github.com/nevoland/quetch/blob/3a78cd1/lib/tools/filterItem.ts#L12)
1623
+ [lib/tools/filterItem.ts:12](https://github.com/nevoland/quetch/blob/f8fb38a/lib/tools/filterItem.ts#L12)
1288
1624
 
1289
1625
  ___
1290
1626
 
@@ -1314,29 +1650,7 @@ ___
1314
1650
 
1315
1651
  #### Defined in
1316
1652
 
1317
- [lib/middlewares/identity.ts:3](https://github.com/nevoland/quetch/blob/3a78cd1/lib/middlewares/identity.ts#L3)
1318
-
1319
- ___
1320
-
1321
- ### impasse
1322
-
1323
- ▸ **impasse**(`input`): `Promise`<`never`\>
1324
-
1325
- Handles an `input` query and returns an `output` promise.
1326
-
1327
- #### Parameters
1328
-
1329
- | Name | Type |
1330
- | :------ | :------ |
1331
- | `input` | `never` |
1332
-
1333
- #### Returns
1334
-
1335
- `Promise`<`never`\>
1336
-
1337
- #### Defined in
1338
-
1339
- [lib/types.ts:31](https://github.com/nevoland/quetch/blob/3a78cd1/lib/types.ts#L31)
1653
+ [lib/middlewares/identity.ts:3](https://github.com/nevoland/quetch/blob/f8fb38a/lib/middlewares/identity.ts#L3)
1340
1654
 
1341
1655
  ___
1342
1656
 
@@ -1369,7 +1683,7 @@ Query handler
1369
1683
 
1370
1684
  #### Defined in
1371
1685
 
1372
- [lib/middlewares/log.ts:11](https://github.com/nevoland/quetch/blob/3a78cd1/lib/middlewares/log.ts#L11)
1686
+ [lib/middlewares/log.ts:11](https://github.com/nevoland/quetch/blob/f8fb38a/lib/middlewares/log.ts#L11)
1373
1687
 
1374
1688
  ___
1375
1689
 
@@ -1400,7 +1714,7 @@ ___
1400
1714
 
1401
1715
  #### Defined in
1402
1716
 
1403
- [lib/tools/normalizeOrder.ts:3](https://github.com/nevoland/quetch/blob/3a78cd1/lib/tools/normalizeOrder.ts#L3)
1717
+ [lib/tools/normalizeOrder.ts:3](https://github.com/nevoland/quetch/blob/f8fb38a/lib/tools/normalizeOrder.ts#L3)
1404
1718
 
1405
1719
  ___
1406
1720
 
@@ -1427,7 +1741,7 @@ ___
1427
1741
 
1428
1742
  #### Defined in
1429
1743
 
1430
- [lib/tools/queryItemList.ts:41](https://github.com/nevoland/quetch/blob/3a78cd1/lib/tools/queryItemList.ts#L41)
1744
+ [lib/tools/queryItemList.ts:41](https://github.com/nevoland/quetch/blob/f8fb38a/lib/tools/queryItemList.ts#L41)
1431
1745
 
1432
1746
  ___
1433
1747
 
@@ -1456,7 +1770,7 @@ Handler
1456
1770
 
1457
1771
  #### Defined in
1458
1772
 
1459
- [lib/middlewares/retry.ts:15](https://github.com/nevoland/quetch/blob/3a78cd1/lib/middlewares/retry.ts#L15)
1773
+ [lib/middlewares/retry.ts:15](https://github.com/nevoland/quetch/blob/f8fb38a/lib/middlewares/retry.ts#L15)
1460
1774
 
1461
1775
  ___
1462
1776
 
@@ -1487,4 +1801,4 @@ The same array sorted in place.
1487
1801
 
1488
1802
  #### Defined in
1489
1803
 
1490
- [lib/tools/sortItemList.ts:12](https://github.com/nevoland/quetch/blob/3a78cd1/lib/tools/sortItemList.ts#L12)
1804
+ [lib/tools/sortItemList.ts:12](https://github.com/nevoland/quetch/blob/f8fb38a/lib/tools/sortItemList.ts#L12)