quetch 0.1.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 (125) hide show
  1. package/README.md +29 -0
  2. package/dist/errors/QueryError.d.ts +5 -0
  3. package/dist/errors/QueryError.js +23 -0
  4. package/dist/errors/QueryError.js.map +1 -0
  5. package/dist/errors/RequestError.d.ts +11 -0
  6. package/dist/errors/RequestError.js +33 -0
  7. package/dist/errors/RequestError.js.map +1 -0
  8. package/dist/errors.d.ts +1 -0
  9. package/dist/errors.js +3 -0
  10. package/dist/errors.js.map +1 -0
  11. package/dist/main.d.ts +3 -0
  12. package/dist/main.js +3 -0
  13. package/dist/main.js.map +1 -0
  14. package/dist/middlewares/aggregate.d.ts +19 -0
  15. package/dist/middlewares/aggregate.js +86 -0
  16. package/dist/middlewares/aggregate.js.map +1 -0
  17. package/dist/middlewares/branch.d.ts +18 -0
  18. package/dist/middlewares/branch.js +21 -0
  19. package/dist/middlewares/branch.js.map +1 -0
  20. package/dist/middlewares/cache.d.ts +37 -0
  21. package/dist/middlewares/cache.js +40 -0
  22. package/dist/middlewares/cache.js.map +1 -0
  23. package/dist/middlewares/combine.d.ts +318 -0
  24. package/dist/middlewares/combine.js +20 -0
  25. package/dist/middlewares/combine.js.map +1 -0
  26. package/dist/middlewares/concurrent.d.ts +2 -0
  27. package/dist/middlewares/concurrent.js +20 -0
  28. package/dist/middlewares/concurrent.js.map +1 -0
  29. package/dist/middlewares/fetch.d.ts +2 -0
  30. package/dist/middlewares/fetch.js +20 -0
  31. package/dist/middlewares/fetch.js.map +1 -0
  32. package/dist/middlewares/fetchExternal.d.ts +8 -0
  33. package/dist/middlewares/fetchExternal.js +29 -0
  34. package/dist/middlewares/fetchExternal.js.map +1 -0
  35. package/dist/middlewares/fetchLocal.d.ts +9 -0
  36. package/dist/middlewares/fetchLocal.js +10 -0
  37. package/dist/middlewares/fetchLocal.js.map +1 -0
  38. package/dist/middlewares/identity.d.ts +4 -0
  39. package/dist/middlewares/identity.js +8 -0
  40. package/dist/middlewares/identity.js.map +1 -0
  41. package/dist/middlewares/log.d.ts +8 -0
  42. package/dist/middlewares/log.js +30 -0
  43. package/dist/middlewares/log.js.map +1 -0
  44. package/dist/middlewares/logQuery.d.ts +2 -0
  45. package/dist/middlewares/logQuery.js +25 -0
  46. package/dist/middlewares/logQuery.js.map +1 -0
  47. package/dist/middlewares/retry.d.ts +14 -0
  48. package/dist/middlewares/retry.js +38 -0
  49. package/dist/middlewares/retry.js.map +1 -0
  50. package/dist/middlewares.d.ts +9 -0
  51. package/dist/middlewares.js +11 -0
  52. package/dist/middlewares.js.map +1 -0
  53. package/dist/tools/add.d.ts +8 -0
  54. package/dist/tools/add.js +11 -0
  55. package/dist/tools/add.js.map +1 -0
  56. package/dist/tools/add.test.d.ts +1 -0
  57. package/dist/tools/add.test.js +6 -0
  58. package/dist/tools/add.test.js.map +1 -0
  59. package/dist/tools/defineCheckQuery.d.ts +17 -0
  60. package/dist/tools/defineCheckQuery.js +7 -0
  61. package/dist/tools/defineCheckQuery.js.map +1 -0
  62. package/dist/tools/defineCustomFetch.d.ts +19 -0
  63. package/dist/tools/defineCustomFetch.js +8 -0
  64. package/dist/tools/defineCustomFetch.js.map +1 -0
  65. package/dist/tools/filterFromContext.d.ts +2 -0
  66. package/dist/tools/filterFromContext.js +12 -0
  67. package/dist/tools/filterFromContext.js.map +1 -0
  68. package/dist/tools/filterItem.d.ts +9 -0
  69. package/dist/tools/filterItem.js +101 -0
  70. package/dist/tools/filterItem.js.map +1 -0
  71. package/dist/tools/filterItem.test.d.ts +1 -0
  72. package/dist/tools/filterItem.test.js +86 -0
  73. package/dist/tools/filterItem.test.js.map +1 -0
  74. package/dist/tools/impasse.d.ts +2 -0
  75. package/dist/tools/impasse.js +2 -0
  76. package/dist/tools/impasse.js.map +1 -0
  77. package/dist/tools/normalizeOrder.d.ts +5 -0
  78. package/dist/tools/normalizeOrder.js +10 -0
  79. package/dist/tools/normalizeOrder.js.map +1 -0
  80. package/dist/tools/queryItemList.d.ts +4 -0
  81. package/dist/tools/queryItemList.js +77 -0
  82. package/dist/tools/queryItemList.js.map +1 -0
  83. package/dist/tools/queryItemList.test.d.ts +1 -0
  84. package/dist/tools/queryItemList.test.js +141 -0
  85. package/dist/tools/queryItemList.test.js.map +1 -0
  86. package/dist/tools/sortItemList.d.ts +9 -0
  87. package/dist/tools/sortItemList.js +28 -0
  88. package/dist/tools/sortItemList.js.map +1 -0
  89. package/dist/tools/sortItemList.test.d.ts +1 -0
  90. package/dist/tools/sortItemList.test.js +47 -0
  91. package/dist/tools/sortItemList.test.js.map +1 -0
  92. package/dist/tools.d.ts +8 -0
  93. package/dist/tools.js +10 -0
  94. package/dist/tools.js.map +1 -0
  95. package/dist/types.d.ts +396 -0
  96. package/dist/types.js +2 -0
  97. package/dist/types.js.map +1 -0
  98. package/doc/README.md +1472 -0
  99. package/lib/errors/RequestError.ts +16 -0
  100. package/lib/errors.ts +2 -0
  101. package/lib/main.ts +4 -0
  102. package/lib/middlewares/aggregate.ts +113 -0
  103. package/lib/middlewares/branch.ts +27 -0
  104. package/lib/middlewares/cache.ts +89 -0
  105. package/lib/middlewares/combine.ts +959 -0
  106. package/lib/middlewares/fetchExternal.ts +38 -0
  107. package/lib/middlewares/fetchLocal.ts +14 -0
  108. package/lib/middlewares/identity.ts +20 -0
  109. package/lib/middlewares/log.ts +31 -0
  110. package/lib/middlewares/retry.ts +45 -0
  111. package/lib/middlewares.ts +10 -0
  112. package/lib/tools/defineCheckQuery.ts +24 -0
  113. package/lib/tools/defineCustomFetch.ts +70 -0
  114. package/lib/tools/filterFromContext.ts +16 -0
  115. package/lib/tools/filterItem.test.ts +203 -0
  116. package/lib/tools/filterItem.ts +113 -0
  117. package/lib/tools/impasse.ts +3 -0
  118. package/lib/tools/normalizeOrder.ts +13 -0
  119. package/lib/tools/queryItemList.test.ts +169 -0
  120. package/lib/tools/queryItemList.ts +108 -0
  121. package/lib/tools/sortItemList.test.ts +63 -0
  122. package/lib/tools/sortItemList.ts +33 -0
  123. package/lib/tools.ts +9 -0
  124. package/lib/types.ts +554 -0
  125. package/package.json +72 -0
package/doc/README.md ADDED
@@ -0,0 +1,1472 @@
1
+ quetch
2
+
3
+ # quetch
4
+
5
+ ## Table of contents
6
+
7
+ ### Type Aliases
8
+
9
+ - [AggregateFunction](README.md#aggregatefunction)
10
+ - [AggregateFunctionOperator](README.md#aggregatefunctionoperator)
11
+ - [Any](README.md#any)
12
+ - [AnyQuery](README.md#anyquery)
13
+ - [AnyQueryExternal](README.md#anyqueryexternal)
14
+ - [AnyQueryLocal](README.md#anyquerylocal)
15
+ - [Context](README.md#context)
16
+ - [CustomFieldMap](README.md#customfieldmap)
17
+ - [EntityItem](README.md#entityitem)
18
+ - [FieldFunction](README.md#fieldfunction)
19
+ - [FieldFunctionCustom](README.md#fieldfunctioncustom)
20
+ - [FieldFunctionFormatDate](README.md#fieldfunctionformatdate)
21
+ - [FieldFunctionOperator](README.md#fieldfunctionoperator)
22
+ - [FieldFunctionReturn](README.md#fieldfunctionreturn)
23
+ - [Filter](README.md#filter)
24
+ - [FilterArray](README.md#filterarray)
25
+ - [FilterBoolean](README.md#filterboolean)
26
+ - [FilterField](README.md#filterfield)
27
+ - [FilterList](README.md#filterlist)
28
+ - [FilterNumber](README.md#filternumber)
29
+ - [FilterOperator](README.md#filteroperator)
30
+ - [FilterString](README.md#filterstring)
31
+ - [FilterStringInclude](README.md#filterstringinclude)
32
+ - [FilterStringMatch](README.md#filterstringmatch)
33
+ - [Handler](README.md#handler)
34
+ - [NextHandler](README.md#nexthandler)
35
+ - [Order](README.md#order)
36
+ - [Query](README.md#query)
37
+ - [QueryAggregate](README.md#queryaggregate)
38
+ - [QueryBase](README.md#querybase)
39
+ - [QueryCreate](README.md#querycreate)
40
+ - [QueryCreateMultiple](README.md#querycreatemultiple)
41
+ - [QueryDelete](README.md#querydelete)
42
+ - [QueryDeleteMultiple](README.md#querydeletemultiple)
43
+ - [QueryGet](README.md#queryget)
44
+ - [QueryGetMultiple](README.md#querygetmultiple)
45
+ - [QueryMethod](README.md#querymethod)
46
+ - [QueryUpdate](README.md#queryupdate)
47
+ - [QueryUpdateMultiple](README.md#queryupdatemultiple)
48
+ - [Store](README.md#store)
49
+
50
+ ### Functions
51
+
52
+ - [aggregate](README.md#aggregate)
53
+ - [branch](README.md#branch)
54
+ - [cache](README.md#cache)
55
+ - [combine](README.md#combine)
56
+ - [defineCheckQuery](README.md#definecheckquery)
57
+ - [defineCustomFetch](README.md#definecustomfetch)
58
+ - [fetchExternal](README.md#fetchexternal)
59
+ - [fetchLocal](README.md#fetchlocal)
60
+ - [filterFromContext](README.md#filterfromcontext)
61
+ - [filterItem](README.md#filteritem)
62
+ - [identity](README.md#identity)
63
+ - [impasse](README.md#impasse)
64
+ - [log](README.md#log)
65
+ - [normalizeOrder](README.md#normalizeorder)
66
+ - [queryItemList](README.md#queryitemlist)
67
+ - [retry](README.md#retry)
68
+ - [sortItemList](README.md#sortitemlist)
69
+
70
+ ## Type Aliases
71
+
72
+ ### AggregateFunction
73
+
74
+ Ƭ **AggregateFunction**<`T`\>: ``"length"`` \| { `operator`: ``"length"`` } \| { `field`: keyof `T` ; `operator`: ``"median"`` \| ``"standardDeviation"`` \| ``"mean"`` \| ``"minimum"`` \| ``"maximum"`` \| ``"variance"`` \| ``"mode"`` }
75
+
76
+ Aggregation function.
77
+
78
+ #### Type parameters
79
+
80
+ | Name | Type |
81
+ | :------ | :------ |
82
+ | `T` | extends `object` |
83
+
84
+ #### Defined in
85
+
86
+ [lib/types.ts:387](https://github.com/nevoland/quetch/blob/93a058c/lib/types.ts#L387)
87
+
88
+ ___
89
+
90
+ ### AggregateFunctionOperator
91
+
92
+ Ƭ **AggregateFunctionOperator**: `Exclude`<[`AggregateFunction`](README.md#aggregatefunction)<{}\>, `string`\>[``"operator"``]
93
+
94
+ #### Defined in
95
+
96
+ [lib/types.ts:402](https://github.com/nevoland/quetch/blob/93a058c/lib/types.ts#L402)
97
+
98
+ ___
99
+
100
+ ### Any
101
+
102
+ Ƭ **Any**: `boolean` \| `string` \| `number` \| `object` \| `symbol` \| ``null`` \| `undefined` \| `any`[] \| (...`args`: `any`[]) => `any`
103
+
104
+ #### Defined in
105
+
106
+ [lib/types.ts:1](https://github.com/nevoland/quetch/blob/93a058c/lib/types.ts#L1)
107
+
108
+ ___
109
+
110
+ ### AnyQuery
111
+
112
+ Ƭ **AnyQuery**: [`Query`](README.md#query)<`any`, `any`\>
113
+
114
+ #### Defined in
115
+
116
+ [lib/types.ts:92](https://github.com/nevoland/quetch/blob/93a058c/lib/types.ts#L92)
117
+
118
+ ___
119
+
120
+ ### AnyQueryExternal
121
+
122
+ Ƭ **AnyQueryExternal**: `Omit`<[`Query`](README.md#query)<`any`, `any`\>, ``"type"``\> & { `type`: `string` }
123
+
124
+ #### Defined in
125
+
126
+ [lib/types.ts:94](https://github.com/nevoland/quetch/blob/93a058c/lib/types.ts#L94)
127
+
128
+ ___
129
+
130
+ ### AnyQueryLocal
131
+
132
+ Ƭ **AnyQueryLocal**: `Omit`<[`Query`](README.md#query)<`any`, `any`\>, ``"type"``\> & { `type`: `object`[] }
133
+
134
+ #### Defined in
135
+
136
+ [lib/types.ts:96](https://github.com/nevoland/quetch/blob/93a058c/lib/types.ts#L96)
137
+
138
+ ___
139
+
140
+ ### Context
141
+
142
+ Ƭ **Context**<`T`\>: { [K in keyof T]?: T[K] }
143
+
144
+ #### Type parameters
145
+
146
+ | Name | Type |
147
+ | :------ | :------ |
148
+ | `T` | extends `object` |
149
+
150
+ #### Defined in
151
+
152
+ [lib/types.ts:98](https://github.com/nevoland/quetch/blob/93a058c/lib/types.ts#L98)
153
+
154
+ ___
155
+
156
+ ### CustomFieldMap
157
+
158
+ Ƭ **CustomFieldMap**<`T`\>: `Record`<`string`, [`FieldFunction`](README.md#fieldfunction)<`T`\>\>
159
+
160
+ #### Type parameters
161
+
162
+ | Name | Type |
163
+ | :------ | :------ |
164
+ | `T` | extends `object` |
165
+
166
+ #### Defined in
167
+
168
+ [lib/types.ts:382](https://github.com/nevoland/quetch/blob/93a058c/lib/types.ts#L382)
169
+
170
+ ___
171
+
172
+ ### EntityItem
173
+
174
+ Ƭ **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 }
175
+
176
+ Entity type for a given query.
177
+
178
+ #### Type parameters
179
+
180
+ | Name | Type |
181
+ | :------ | :------ |
182
+ | `E` | extends `object` |
183
+ | `C` | extends [`CustomFieldMap`](README.md#customfieldmap)<`E`\> |
184
+ | `Q` | extends [`Query`](README.md#query)<`E`, `C`\> |
185
+
186
+ #### Defined in
187
+
188
+ [lib/types.ts:49](https://github.com/nevoland/quetch/blob/93a058c/lib/types.ts#L49)
189
+
190
+ ___
191
+
192
+ ### FieldFunction
193
+
194
+ Ƭ **FieldFunction**<`T`\>: [`FieldFunctionCustom`](README.md#fieldfunctioncustom)<`T`\> \| [`FieldFunctionFormatDate`](README.md#fieldfunctionformatdate)<`T`\>
195
+
196
+ #### Type parameters
197
+
198
+ | Name | Type |
199
+ | :------ | :------ |
200
+ | `T` | extends `object` |
201
+
202
+ #### Defined in
203
+
204
+ [lib/types.ts:349](https://github.com/nevoland/quetch/blob/93a058c/lib/types.ts#L349)
205
+
206
+ ___
207
+
208
+ ### FieldFunctionCustom
209
+
210
+ Ƭ **FieldFunctionCustom**<`T`\>: `Object`
211
+
212
+ Applies a custom field transform function.
213
+
214
+ #### Type parameters
215
+
216
+ | Name | Type |
217
+ | :------ | :------ |
218
+ | `T` | extends `object` |
219
+
220
+ #### Type declaration
221
+
222
+ | Name | Type |
223
+ | :------ | :------ |
224
+ | `operator` | ``"custom"`` |
225
+ | `value` | (`item`: `T`) => `any` |
226
+
227
+ #### Defined in
228
+
229
+ [lib/types.ts:356](https://github.com/nevoland/quetch/blob/93a058c/lib/types.ts#L356)
230
+
231
+ ___
232
+
233
+ ### FieldFunctionFormatDate
234
+
235
+ Ƭ **FieldFunctionFormatDate**<`T`\>: `Object`
236
+
237
+ Formats the date found in a given field, which can be an ISO string date or a timestamp.
238
+
239
+ #### Type parameters
240
+
241
+ | Name | Type |
242
+ | :------ | :------ |
243
+ | `T` | extends `object` |
244
+
245
+ #### Type declaration
246
+
247
+ | Name | Type |
248
+ | :------ | :------ |
249
+ | `field` | `FilterKeys`<`T`, `string` \| `number`\> |
250
+ | `format` | `string` |
251
+ | `operator` | ``"formatDate"`` |
252
+
253
+ #### Defined in
254
+
255
+ [lib/types.ts:364](https://github.com/nevoland/quetch/blob/93a058c/lib/types.ts#L364)
256
+
257
+ ___
258
+
259
+ ### FieldFunctionOperator
260
+
261
+ Ƭ **FieldFunctionOperator**: [`FieldFunction`](README.md#fieldfunction)<`never`\>[``"operator"``]
262
+
263
+ Possible field function operators.
264
+
265
+ #### Defined in
266
+
267
+ [lib/types.ts:373](https://github.com/nevoland/quetch/blob/93a058c/lib/types.ts#L373)
268
+
269
+ ___
270
+
271
+ ### FieldFunctionReturn
272
+
273
+ Ƭ **FieldFunctionReturn**: `Object`
274
+
275
+ Return types of custom field functions.
276
+
277
+ #### Type declaration
278
+
279
+ | Name | Type |
280
+ | :------ | :------ |
281
+ | `formatDate` | `string` |
282
+
283
+ #### Defined in
284
+
285
+ [lib/types.ts:378](https://github.com/nevoland/quetch/blob/93a058c/lib/types.ts#L378)
286
+
287
+ ___
288
+
289
+ ### Filter
290
+
291
+ Ƭ **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`\> \| [`FilterStringInclude`](README.md#filterstringinclude)<`T`\> \| [`FilterNumber`](README.md#filternumber)<`T`\> \| [`FilterArray`](README.md#filterarray)<`T`\>
292
+
293
+ Describes a predicate for filtering items.
294
+
295
+ #### Type parameters
296
+
297
+ | Name | Type |
298
+ | :------ | :------ |
299
+ | `T` | extends `object` |
300
+
301
+ #### Defined in
302
+
303
+ [lib/types.ts:422](https://github.com/nevoland/quetch/blob/93a058c/lib/types.ts#L422)
304
+
305
+ ___
306
+
307
+ ### FilterArray
308
+
309
+ Ƭ **FilterArray**<`T`, `P`\>: `Object`
310
+
311
+ Checks if a given array field matches a given array value according to a given operator.
312
+
313
+ #### Type parameters
314
+
315
+ | Name | Type |
316
+ | :------ | :------ |
317
+ | `T` | extends `object` |
318
+ | `P` | [`Any`](README.md#any) |
319
+
320
+ #### Type declaration
321
+
322
+ | Name | Type |
323
+ | :------ | :------ |
324
+ | `field` | `FilterKeys`<`T`, `P`[]\> |
325
+ | `operator` | ``"equal"`` \| ``"include"`` \| ``"intersect"`` |
326
+ | `value` | `P`[] |
327
+
328
+ #### Defined in
329
+
330
+ [lib/types.ts:550](https://github.com/nevoland/quetch/blob/93a058c/lib/types.ts#L550)
331
+
332
+ ___
333
+
334
+ ### FilterBoolean
335
+
336
+ Ƭ **FilterBoolean**<`T`\>: `Object`
337
+
338
+ Checks if a given boolean field is `true` or `false`.
339
+
340
+ #### Type parameters
341
+
342
+ | Name | Type |
343
+ | :------ | :------ |
344
+ | `T` | extends `object` |
345
+
346
+ #### Type declaration
347
+
348
+ | Name | Type |
349
+ | :------ | :------ |
350
+ | `field` | `FilterKeys`<`T`, `boolean`\> |
351
+ | `operator` | ``"equal"`` \| ``"notEqual"`` |
352
+ | `value` | `boolean` |
353
+
354
+ #### Defined in
355
+
356
+ [lib/types.ts:470](https://github.com/nevoland/quetch/blob/93a058c/lib/types.ts#L470)
357
+
358
+ ___
359
+
360
+ ### FilterField
361
+
362
+ Ƭ **FilterField**<`T`\>: `Object`
363
+
364
+ Checks if a given field exists.
365
+
366
+ #### Type parameters
367
+
368
+ | Name | Type |
369
+ | :------ | :------ |
370
+ | `T` | extends `object` |
371
+
372
+ #### Type declaration
373
+
374
+ | Name | Type |
375
+ | :------ | :------ |
376
+ | `field` | keyof `T` |
377
+ | `operator` | ``"exist"`` |
378
+
379
+ #### Defined in
380
+
381
+ [lib/types.ts:462](https://github.com/nevoland/quetch/blob/93a058c/lib/types.ts#L462)
382
+
383
+ ___
384
+
385
+ ### FilterList
386
+
387
+ Ƭ **FilterList**<`T`\>: { `operator`: ``"all"`` ; `value`: [`Filter`](README.md#filter)<`T`\>[] } \| { `operator`: ``"any"`` \| ``"none"`` ; `value?`: [`Filter`](README.md#filter)<`T`\>[] }
388
+
389
+ Joins a list of filters with a specific boolean operator.
390
+
391
+ #### Type parameters
392
+
393
+ | Name | Type |
394
+ | :------ | :------ |
395
+ | `T` | extends `object` |
396
+
397
+ #### Defined in
398
+
399
+ [lib/types.ts:437](https://github.com/nevoland/quetch/blob/93a058c/lib/types.ts#L437)
400
+
401
+ ___
402
+
403
+ ### FilterNumber
404
+
405
+ Ƭ **FilterNumber**<`T`\>: `Object`
406
+
407
+ Checks if a given number field matches a given number value according to a given operator.
408
+
409
+ #### Type parameters
410
+
411
+ | Name | Type |
412
+ | :------ | :------ |
413
+ | `T` | extends `object` |
414
+
415
+ #### Type declaration
416
+
417
+ | Name | Type |
418
+ | :------ | :------ |
419
+ | `field` | `FilterKeys`<`T`, `number`\> |
420
+ | `operator` | ``"equal"`` \| ``"notEqual"`` \| ``"greaterThan"`` \| ``"greaterThanOrEqual"`` \| ``"lowerThan"`` \| ``"lowerThanOrEqual"`` |
421
+ | `value` | `number` |
422
+
423
+ #### Defined in
424
+
425
+ [lib/types.ts:535](https://github.com/nevoland/quetch/blob/93a058c/lib/types.ts#L535)
426
+
427
+ ___
428
+
429
+ ### FilterOperator
430
+
431
+ Ƭ **FilterOperator**: [`Filter`](README.md#filter)<`never`\>[``"operator"``]
432
+
433
+ #### Defined in
434
+
435
+ [lib/types.ts:432](https://github.com/nevoland/quetch/blob/93a058c/lib/types.ts#L432)
436
+
437
+ ___
438
+
439
+ ### FilterString
440
+
441
+ Ƭ **FilterString**<`T`\>: `Object`
442
+
443
+ Checks if a given string field matches a given string value according to a given operator.
444
+
445
+ #### Type parameters
446
+
447
+ | Name | Type |
448
+ | :------ | :------ |
449
+ | `T` | extends `object` |
450
+
451
+ #### Type declaration
452
+
453
+ | Name | Type |
454
+ | :------ | :------ |
455
+ | `field` | `FilterKeys`<`T`, `string`\> |
456
+ | `operator` | ``"equal"`` \| ``"notEqual"`` \| ``"startWith"`` \| ``"endWith"`` \| ``"include"`` \| ``"greaterThan"`` \| ``"greaterThanOrEqual"`` \| ``"lowerThan"`` \| ``"lowerThanOrEqual"`` |
457
+ | `value` | `string` |
458
+
459
+ #### Defined in
460
+
461
+ [lib/types.ts:479](https://github.com/nevoland/quetch/blob/93a058c/lib/types.ts#L479)
462
+
463
+ ___
464
+
465
+ ### FilterStringInclude
466
+
467
+ Ƭ **FilterStringInclude**<`T`\>: `Object`
468
+
469
+ Checks if a given string field has any of the provided values.
470
+
471
+ #### Type parameters
472
+
473
+ | Name | Type |
474
+ | :------ | :------ |
475
+ | `T` | extends `object` |
476
+
477
+ #### Type declaration
478
+
479
+ | Name | Type |
480
+ | :------ | :------ |
481
+ | `field` | `FilterKeys`<`T`, `string`\> |
482
+ | `operator` | ``"intersect"`` |
483
+ | `value` | `string`[] |
484
+
485
+ #### Defined in
486
+
487
+ [lib/types.ts:526](https://github.com/nevoland/quetch/blob/93a058c/lib/types.ts#L526)
488
+
489
+ ___
490
+
491
+ ### FilterStringMatch
492
+
493
+ Ƭ **FilterStringMatch**<`T`\>: `Object`
494
+
495
+ Checks if a given string field matches a given regular expression.
496
+
497
+ #### Type parameters
498
+
499
+ | Name | Type |
500
+ | :------ | :------ |
501
+ | `T` | extends `object` |
502
+
503
+ #### Type declaration
504
+
505
+ | Name | Type | Description |
506
+ | :------ | :------ | :------ |
507
+ | `field` | `FilterKeys`<`T`, `string`\> | - |
508
+ | `operator` | ``"match"`` | - |
509
+ | `options?` | { `dotAll?`: `boolean` ; `ignoreCase?`: `boolean` } | Regular expression options. |
510
+ | `options.dotAll?` | `boolean` | Allows . to match newlines. |
511
+ | `options.ignoreCase?` | `boolean` | When matching, casing differences are ignored. |
512
+ | `regularExpression?` | `RegExp` | Compiled regular expression generated by the `testFilter` function. |
513
+ | `value` | `string` | Raw regular expression string. |
514
+
515
+ #### Defined in
516
+
517
+ [lib/types.ts:497](https://github.com/nevoland/quetch/blob/93a058c/lib/types.ts#L497)
518
+
519
+ ___
520
+
521
+ ### Handler
522
+
523
+ Ƭ **Handler**<`I`, `O`, `NI`, `No`\>: (`input`: `I`, `next`: [`NextHandler`](README.md#nexthandler)<`NI`, `No`\>) => `Promise`<`O`\>
524
+
525
+ #### Type parameters
526
+
527
+ | Name |
528
+ | :------ |
529
+ | `I` |
530
+ | `O` |
531
+ | `NI` |
532
+ | `No` |
533
+
534
+ #### Type declaration
535
+
536
+ ▸ (`input`, `next`): `Promise`<`O`\>
537
+
538
+ Handles an `input` query and returns an `output` promise, eventually using the `next` handler.
539
+
540
+ ##### Parameters
541
+
542
+ | Name | Type |
543
+ | :------ | :------ |
544
+ | `input` | `I` |
545
+ | `next` | [`NextHandler`](README.md#nexthandler)<`NI`, `No`\> |
546
+
547
+ ##### Returns
548
+
549
+ `Promise`<`O`\>
550
+
551
+ #### Defined in
552
+
553
+ [lib/types.ts:23](https://github.com/nevoland/quetch/blob/93a058c/lib/types.ts#L23)
554
+
555
+ ___
556
+
557
+ ### NextHandler
558
+
559
+ Ƭ **NextHandler**<`I`, `R`\>: (`input`: `I`) => `Promise`<`R`\>
560
+
561
+ #### Type parameters
562
+
563
+ | Name |
564
+ | :------ |
565
+ | `I` |
566
+ | `R` |
567
+
568
+ #### Type declaration
569
+
570
+ ▸ (`input`): `Promise`<`R`\>
571
+
572
+ Handles an `input` query and returns an `output` promise.
573
+
574
+ ##### Parameters
575
+
576
+ | Name | Type |
577
+ | :------ | :------ |
578
+ | `input` | `I` |
579
+
580
+ ##### Returns
581
+
582
+ `Promise`<`R`\>
583
+
584
+ #### Defined in
585
+
586
+ [lib/types.ts:31](https://github.com/nevoland/quetch/blob/93a058c/lib/types.ts#L31)
587
+
588
+ ___
589
+
590
+ ### Order
591
+
592
+ Ƭ **Order**<`T`\>: keyof `T` \| { `descending?`: `boolean` ; `field`: keyof `T` }
593
+
594
+ Order item.
595
+
596
+ #### Type parameters
597
+
598
+ | Name | Type |
599
+ | :------ | :------ |
600
+ | `T` | extends `object` |
601
+
602
+ #### Defined in
603
+
604
+ [lib/types.ts:338](https://github.com/nevoland/quetch/blob/93a058c/lib/types.ts#L338)
605
+
606
+ ___
607
+
608
+ ### Query
609
+
610
+ Ƭ **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`\>
611
+
612
+ Query that fetches or mutates an entity.
613
+
614
+ #### Type parameters
615
+
616
+ | Name | Type |
617
+ | :------ | :------ |
618
+ | `T` | extends `object` |
619
+ | `C` | extends [`CustomFieldMap`](README.md#customfieldmap)<`T`\> |
620
+
621
+ #### Defined in
622
+
623
+ [lib/types.ts:80](https://github.com/nevoland/quetch/blob/93a058c/lib/types.ts#L80)
624
+
625
+ ___
626
+
627
+ ### QueryAggregate
628
+
629
+ Ƭ **QueryAggregate**<`T`\>: [`QueryBase`](README.md#querybase)<`T`\> & { `aggregator`: [`AggregateFunction`](README.md#aggregatefunction)<`T`\> ; `filter?`: [`Filter`](README.md#filter)<`T`\> ; `method`: ``"aggregate"`` }
630
+
631
+ Query for computing an aggregated value.
632
+
633
+ #### Type parameters
634
+
635
+ | Name | Type |
636
+ | :------ | :------ |
637
+ | `T` | extends `object` |
638
+
639
+ #### Defined in
640
+
641
+ [lib/types.ts:329](https://github.com/nevoland/quetch/blob/93a058c/lib/types.ts#L329)
642
+
643
+ ___
644
+
645
+ ### QueryBase
646
+
647
+ Ƭ **QueryBase**<`T`\>: `Object`
648
+
649
+ #### Type parameters
650
+
651
+ | Name | Type |
652
+ | :------ | :------ |
653
+ | `T` | extends `object` |
654
+
655
+ #### Type declaration
656
+
657
+ | Name | Type | Description |
658
+ | :------ | :------ | :------ |
659
+ | `context?` | [`Context`](README.md#context)<`T`\> | Common item properties to use for identifying the item. **`Example`** ```typescript { context: { id: "000001" } } { context: { organisation: "World Company" } } ``` |
660
+ | `signal?` | `AbortSignal` | Abort signal to abort the request. |
661
+ | `type` | `string` \| `T`[] | - |
662
+
663
+ #### Defined in
664
+
665
+ [lib/types.ts:102](https://github.com/nevoland/quetch/blob/93a058c/lib/types.ts#L102)
666
+
667
+ ___
668
+
669
+ ### QueryCreate
670
+
671
+ Ƭ **QueryCreate**<`T`\>: [`QueryBase`](README.md#querybase)<`T`\> & { `method`: ``"create"`` ; `value`: `Partial`<`T`\> }
672
+
673
+ Query for creating an item.
674
+
675
+ #### Type parameters
676
+
677
+ | Name | Type |
678
+ | :------ | :------ |
679
+ | `T` | extends `object` |
680
+
681
+ #### Defined in
682
+
683
+ [lib/types.ts:244](https://github.com/nevoland/quetch/blob/93a058c/lib/types.ts#L244)
684
+
685
+ ___
686
+
687
+ ### QueryCreateMultiple
688
+
689
+ Ƭ **QueryCreateMultiple**<`T`\>: [`QueryBase`](README.md#querybase)<`T`\> & { `method`: ``"create"`` ; `multiple`: ``true`` ; `value`: `Partial`<`T`\>[] }
690
+
691
+ Query for creating multiple items.
692
+
693
+ #### Type parameters
694
+
695
+ | Name | Type |
696
+ | :------ | :------ |
697
+ | `T` | extends `object` |
698
+
699
+ #### Defined in
700
+
701
+ [lib/types.ts:252](https://github.com/nevoland/quetch/blob/93a058c/lib/types.ts#L252)
702
+
703
+ ___
704
+
705
+ ### QueryDelete
706
+
707
+ Ƭ **QueryDelete**<`T`\>: [`QueryBase`](README.md#querybase)<`T`\> & { `filter?`: [`Filter`](README.md#filter)<`T`\> ; `method`: ``"delete"`` }
708
+
709
+ Query for deleting an item.
710
+
711
+ #### Type parameters
712
+
713
+ | Name | Type |
714
+ | :------ | :------ |
715
+ | `T` | extends `object` |
716
+
717
+ #### Defined in
718
+
719
+ [lib/types.ts:312](https://github.com/nevoland/quetch/blob/93a058c/lib/types.ts#L312)
720
+
721
+ ___
722
+
723
+ ### QueryDeleteMultiple
724
+
725
+ Ƭ **QueryDeleteMultiple**<`T`\>: [`QueryBase`](README.md#querybase)<`T`\> & { `filter?`: [`Filter`](README.md#filter)<`T`\> ; `method`: ``"delete"`` ; `multiple`: ``true`` }
726
+
727
+ Query for deleting multiple items.
728
+
729
+ #### Type parameters
730
+
731
+ | Name | Type |
732
+ | :------ | :------ |
733
+ | `T` | extends `object` |
734
+
735
+ #### Defined in
736
+
737
+ [lib/types.ts:320](https://github.com/nevoland/quetch/blob/93a058c/lib/types.ts#L320)
738
+
739
+ ___
740
+
741
+ ### QueryGet
742
+
743
+ Ƭ **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`\> }
744
+
745
+ Query for getting a single item.
746
+
747
+ #### Type parameters
748
+
749
+ | Name | Type |
750
+ | :------ | :------ |
751
+ | `T` | extends `object` |
752
+ | `C` | extends [`CustomFieldMap`](README.md#customfieldmap)<`T`\> |
753
+
754
+ #### Defined in
755
+
756
+ [lib/types.ts:143](https://github.com/nevoland/quetch/blob/93a058c/lib/types.ts#L143)
757
+
758
+ ___
759
+
760
+ ### QueryGetMultiple
761
+
762
+ Ƭ **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`\>[] }
763
+
764
+ Query for getting a list of items.
765
+
766
+ #### Type parameters
767
+
768
+ | Name | Type |
769
+ | :------ | :------ |
770
+ | `T` | extends `object` |
771
+ | `C` | extends [`CustomFieldMap`](README.md#customfieldmap)<`T`\> |
772
+
773
+ #### Defined in
774
+
775
+ [lib/types.ts:183](https://github.com/nevoland/quetch/blob/93a058c/lib/types.ts#L183)
776
+
777
+ ___
778
+
779
+ ### QueryMethod
780
+
781
+ Ƭ **QueryMethod**: `Exclude`<[`Query`](README.md#query)<`never`, `never`\>[``"method"``], `undefined`\>
782
+
783
+ Available query methods.
784
+
785
+ #### Defined in
786
+
787
+ [lib/types.ts:123](https://github.com/nevoland/quetch/blob/93a058c/lib/types.ts#L123)
788
+
789
+ ___
790
+
791
+ ### QueryUpdate
792
+
793
+ Ƭ **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`\> }
794
+
795
+ Query for updating an item.
796
+
797
+ #### Type parameters
798
+
799
+ | Name | Type |
800
+ | :------ | :------ |
801
+ | `T` | extends `object` |
802
+ | `C` | extends [`CustomFieldMap`](README.md#customfieldmap)<`T`\> |
803
+
804
+ #### Defined in
805
+
806
+ [lib/types.ts:261](https://github.com/nevoland/quetch/blob/93a058c/lib/types.ts#L261)
807
+
808
+ ___
809
+
810
+ ### QueryUpdateMultiple
811
+
812
+ Ƭ **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`\>[] }
813
+
814
+ Query for updating multiple items.
815
+
816
+ #### Type parameters
817
+
818
+ | Name | Type |
819
+ | :------ | :------ |
820
+ | `T` | extends `object` |
821
+ | `C` | extends [`CustomFieldMap`](README.md#customfieldmap)<`T`\> |
822
+
823
+ #### Defined in
824
+
825
+ [lib/types.ts:283](https://github.com/nevoland/quetch/blob/93a058c/lib/types.ts#L283)
826
+
827
+ ___
828
+
829
+ ### Store
830
+
831
+ Ƭ **Store**<`T`\>: `Object`
832
+
833
+ #### Type parameters
834
+
835
+ | Name | Type |
836
+ | :------ | :------ |
837
+ | `T` | `any` |
838
+
839
+ #### Type declaration
840
+
841
+ | Name | Type |
842
+ | :------ | :------ |
843
+ | `delete` | (`key`: `string`) => `Promise`<`void`\> |
844
+ | `get` | (`key`: `string`) => `Promise`<`T`\> |
845
+ | `has` | (`key`: `string`) => `Promise`<`boolean`\> |
846
+ | `set` | (`key`: `string`, `value`: `T`) => `Promise`<`void`\> |
847
+
848
+ #### Defined in
849
+
850
+ [lib/types.ts:13](https://github.com/nevoland/quetch/blob/93a058c/lib/types.ts#L13)
851
+
852
+ ## Functions
853
+
854
+ ### aggregate
855
+
856
+ ▸ **aggregate**<`I`, `O`, `In`, `On`\>(`options`): [`Handler`](README.md#handler)<`I`, `O`, `In`, `On`\>
857
+
858
+ Aggregates multiple incoming query calls into one query.
859
+ Queries are grouped according to the string key returned by `queryGroupId(query)`. Inside a group, each query is identified with `queryId(query)`.
860
+ The aggregated query is built from the object returned by `queryForGroup(queryList, groupId)`, after at least `delay` milliseconds after the first non-aggregated aggregatable query call.
861
+ When the aggregated query resolves, the result is dispatched back to each aggregatable query call of the category by dispatching the result for each query returned by `resultForQuery(result, query)`.
862
+ If a query occurs twice, `mergeQuery(query, currentQuery)` is called and the output replaces the previous query.
863
+
864
+ #### Type parameters
865
+
866
+ | Name | Type |
867
+ | :------ | :------ |
868
+ | `I` | extends [`AnyQuery`](README.md#anyquery) |
869
+ | `O` | `O` |
870
+ | `In` | extends [`AnyQuery`](README.md#anyquery) |
871
+ | `On` | `On` |
872
+
873
+ #### Parameters
874
+
875
+ | Name | Type |
876
+ | :------ | :------ |
877
+ | `options` | `Object` |
878
+ | `options.delay?` | `number` |
879
+ | `options.mergeQuery?` | (`query`: `I`, `currentQuery`: `I`) => `I` |
880
+ | `options.queryForGroup` | (`queryList`: `I`[], `group`: `string`) => [`AnyQuery`](README.md#anyquery) |
881
+ | `options.queryGroupId?` | (`query`: `I`) => `undefined` \| `string` |
882
+ | `options.queryId?` | (`query`: `I`) => `undefined` \| `string` |
883
+ | `options.resultForQuery` | (`resultList`: `O`[], `query`: `I`) => `O` |
884
+
885
+ #### Returns
886
+
887
+ [`Handler`](README.md#handler)<`I`, `O`, `In`, `On`\>
888
+
889
+ #### Defined in
890
+
891
+ [lib/middlewares/aggregate.ts:16](https://github.com/nevoland/quetch/blob/93a058c/lib/middlewares/aggregate.ts#L16)
892
+
893
+ ___
894
+
895
+ ### branch
896
+
897
+ ▸ **branch**<`I`, `O`, `In`, `On`\>(`condition`, `left`, `right?`): [`Handler`](README.md#handler)<`I`, `O`, `In`, `On`\>
898
+
899
+ Dispatches an incoming query to `left` if `condition(query)` returns a truthy value, `right` otherwise. This is helpful for sending queries to different resolvers.
900
+
901
+ #### Type parameters
902
+
903
+ | Name |
904
+ | :------ |
905
+ | `I` |
906
+ | `O` |
907
+ | `In` |
908
+ | `On` |
909
+
910
+ #### Parameters
911
+
912
+ | Name | Type |
913
+ | :------ | :------ |
914
+ | `condition` | (`input`: `I`) => `boolean` |
915
+ | `left` | [`Handler`](README.md#handler)<`I`, `O`, `In`, `On`\> |
916
+ | `right` | [`Handler`](README.md#handler)<`I`, `O`, `In`, `On`\> |
917
+
918
+ #### Returns
919
+
920
+ [`Handler`](README.md#handler)<`I`, `O`, `In`, `On`\>
921
+
922
+ **`Example`**
923
+
924
+ ```typescript
925
+ const customFetch = combine(
926
+ branch(query => query.protocol === 'gql', gqlHandlers),
927
+ restHandlers,
928
+ )
929
+ ```
930
+
931
+ #### Defined in
932
+
933
+ [lib/middlewares/branch.ts:21](https://github.com/nevoland/quetch/blob/93a058c/lib/middlewares/branch.ts#L21)
934
+
935
+ ___
936
+
937
+ ### cache
938
+
939
+ ▸ **cache**<`I`, `O`, `In`, `On`\>(`«destructured»`): [`Handler`](README.md#handler)<`I`, `O`, `In`, `On`\>
940
+
941
+ #### Type parameters
942
+
943
+ | Name | Type |
944
+ | :------ | :------ |
945
+ | `I` | extends [`AnyQueryExternal`](README.md#anyqueryexternal) |
946
+ | `O` | `O` |
947
+ | `In` | extends [`AnyQueryExternal`](README.md#anyqueryexternal) |
948
+ | `On` | `On` |
949
+
950
+ #### Parameters
951
+
952
+ | Name | Type |
953
+ | :------ | :------ |
954
+ | `«destructured»` | `CacheOptions`<`I`\> |
955
+
956
+ #### Returns
957
+
958
+ [`Handler`](README.md#handler)<`I`, `O`, `In`, `On`\>
959
+
960
+ #### Defined in
961
+
962
+ [lib/middlewares/cache.ts:39](https://github.com/nevoland/quetch/blob/93a058c/lib/middlewares/cache.ts#L39)
963
+
964
+ ___
965
+
966
+ ### combine
967
+
968
+ ▸ **combine**<`I0`, `O0`, `I1`, `O1`, `I2`, `O2`, `I3`, `O3`, `I4`, `O4`, `I5`, `O5`, `I6`, `O6`, `I7`, `O7`, `I8`, `O8`, `I9`, `O9`, `I10`, `O10`, `I11`, `O11`, `I12`, `O12`, `I13`, `O13`, `I14`, `O14`, `I15`, `O15`, `I16`, `O16`, `I17`, `O17`, `I18`, `O18`, `I19`, `O19`, `I20`, `O20`, `I21`, `O21`\>(`...handlerList`): [`Handler`](README.md#handler)<`I0`, `O0`, `I21`, `O21`\>
969
+
970
+ Combines the provided handler into a single handler.
971
+
972
+ #### Type parameters
973
+
974
+ | Name |
975
+ | :------ |
976
+ | `I0` |
977
+ | `O0` |
978
+ | `I1` |
979
+ | `O1` |
980
+ | `I2` |
981
+ | `O2` |
982
+ | `I3` |
983
+ | `O3` |
984
+ | `I4` |
985
+ | `O4` |
986
+ | `I5` |
987
+ | `O5` |
988
+ | `I6` |
989
+ | `O6` |
990
+ | `I7` |
991
+ | `O7` |
992
+ | `I8` |
993
+ | `O8` |
994
+ | `I9` |
995
+ | `O9` |
996
+ | `I10` |
997
+ | `O10` |
998
+ | `I11` |
999
+ | `O11` |
1000
+ | `I12` |
1001
+ | `O12` |
1002
+ | `I13` |
1003
+ | `O13` |
1004
+ | `I14` |
1005
+ | `O14` |
1006
+ | `I15` |
1007
+ | `O15` |
1008
+ | `I16` |
1009
+ | `O16` |
1010
+ | `I17` |
1011
+ | `O17` |
1012
+ | `I18` |
1013
+ | `O18` |
1014
+ | `I19` |
1015
+ | `O19` |
1016
+ | `I20` |
1017
+ | `O20` |
1018
+ | `I21` |
1019
+ | `O21` |
1020
+
1021
+ #### Parameters
1022
+
1023
+ | Name | Type | Description |
1024
+ | :------ | :------ | :------ |
1025
+ | `...handlerList` | readonly [[`Handler`](README.md#handler)<`I0`, `O0`, `I1`, `O1`\>, [`Handler`](README.md#handler)<`I1`, `O1`, `I2`, `O2`\>, `undefined` \| [`Handler`](README.md#handler)<`I2`, `O2`, `I3`, `O3`\>, `undefined` \| [`Handler`](README.md#handler)<`I3`, `O3`, `I4`, `O4`\>, `undefined` \| [`Handler`](README.md#handler)<`I4`, `O4`, `I5`, `O5`\>, `undefined` \| [`Handler`](README.md#handler)<`I5`, `O5`, `I6`, `O6`\>, `undefined` \| [`Handler`](README.md#handler)<`I6`, `O6`, `I7`, `O7`\>, `undefined` \| [`Handler`](README.md#handler)<`I7`, `O7`, `I8`, `O8`\>, `undefined` \| [`Handler`](README.md#handler)<`I8`, `O8`, `I9`, `O9`\>, `undefined` \| [`Handler`](README.md#handler)<`I9`, `O9`, `I10`, `O10`\>, `undefined` \| [`Handler`](README.md#handler)<`I10`, `O10`, `I11`, `O11`\>, `undefined` \| [`Handler`](README.md#handler)<`I11`, `O11`, `I12`, `O12`\>, `undefined` \| [`Handler`](README.md#handler)<`I12`, `O12`, `I13`, `O13`\>, `undefined` \| [`Handler`](README.md#handler)<`I13`, `O13`, `I14`, `O14`\>, `undefined` \| [`Handler`](README.md#handler)<`I14`, `O14`, `I15`, `O15`\>, `undefined` \| [`Handler`](README.md#handler)<`I15`, `O15`, `I16`, `O16`\>, `undefined` \| [`Handler`](README.md#handler)<`I16`, `O16`, `I17`, `O17`\>, `undefined` \| [`Handler`](README.md#handler)<`I17`, `O17`, `I18`, `O18`\>, `undefined` \| [`Handler`](README.md#handler)<`I18`, `O18`, `I19`, `O19`\>, `undefined` \| [`Handler`](README.md#handler)<`I19`, `O19`, `I20`, `O20`\>, `undefined` \| [`Handler`](README.md#handler)<`I20`, `O20`, `I21`, `O21`\>] | List of handlers to combine. |
1026
+
1027
+ #### Returns
1028
+
1029
+ [`Handler`](README.md#handler)<`I0`, `O0`, `I21`, `O21`\>
1030
+
1031
+ Handler that combines all provided handlers.
1032
+
1033
+ #### Defined in
1034
+
1035
+ [lib/middlewares/combine.ts:801](https://github.com/nevoland/quetch/blob/93a058c/lib/middlewares/combine.ts#L801)
1036
+
1037
+ ___
1038
+
1039
+ ### defineCheckQuery
1040
+
1041
+ ▸ **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`
1042
+
1043
+ #### Type parameters
1044
+
1045
+ | Name | Type |
1046
+ | :------ | :------ |
1047
+ | `Entities` | extends `Record`<`string`, `object`\> |
1048
+
1049
+ #### Returns
1050
+
1051
+ `fn`
1052
+
1053
+ ▸ <`E`, `C`, `Q`\>(`query`): typeof `query`
1054
+
1055
+ ##### Type parameters
1056
+
1057
+ | Name | Type |
1058
+ | :------ | :------ |
1059
+ | `E` | extends `object` |
1060
+ | `C` | extends [`CustomFieldMap`](README.md#customfieldmap)<`E`\> |
1061
+ | `Q` | extends [`Query`](README.md#query)<`E`, `C`\> |
1062
+
1063
+ ##### Parameters
1064
+
1065
+ | Name | Type |
1066
+ | :------ | :------ |
1067
+ | `query` | `Q` & { `customFields?`: `C` ; `type`: `E`[] } |
1068
+
1069
+ ##### Returns
1070
+
1071
+ typeof `query`
1072
+
1073
+ ▸ <`T`, `E`, `C`, `Q`\>(`query`): typeof `query`
1074
+
1075
+ ##### Type parameters
1076
+
1077
+ | Name | Type |
1078
+ | :------ | :------ |
1079
+ | `T` | extends `string` \| `number` \| `symbol` |
1080
+ | `E` | extends `object` |
1081
+ | `C` | extends [`CustomFieldMap`](README.md#customfieldmap)<`E`\> |
1082
+ | `Q` | extends [`Query`](README.md#query)<`E`, `C`\> |
1083
+
1084
+ ##### Parameters
1085
+
1086
+ | Name | Type |
1087
+ | :------ | :------ |
1088
+ | `query` | `Q` & { `customFields?`: `C` ; `type`: `T` } |
1089
+
1090
+ ##### Returns
1091
+
1092
+ typeof `query`
1093
+
1094
+ #### Defined in
1095
+
1096
+ [lib/tools/defineCheckQuery.ts:3](https://github.com/nevoland/quetch/blob/93a058c/lib/tools/defineCheckQuery.ts#L3)
1097
+
1098
+ ___
1099
+
1100
+ ### defineCustomFetch
1101
+
1102
+ ▸ **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`\>\>
1103
+
1104
+ #### Type parameters
1105
+
1106
+ | Name | Type |
1107
+ | :------ | :------ |
1108
+ | `M` | extends `Record`<`string`, `object`\> |
1109
+
1110
+ #### Parameters
1111
+
1112
+ | Name | Type |
1113
+ | :------ | :------ |
1114
+ | `handler` | [`Handler`](README.md#handler)<[`AnyQuery`](README.md#anyquery), `any`, `never`, `never`\> |
1115
+
1116
+ #### Returns
1117
+
1118
+ `fn`
1119
+
1120
+ ▸ <`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`\>\>
1121
+
1122
+ ##### Type parameters
1123
+
1124
+ | Name | Type |
1125
+ | :------ | :------ |
1126
+ | `E` | extends `object` |
1127
+ | `C` | extends [`CustomFieldMap`](README.md#customfieldmap)<`E`\> |
1128
+ | `Q` | extends [`Query`](README.md#query)<`E`, `C`\> |
1129
+
1130
+ ##### Parameters
1131
+
1132
+ | Name | Type |
1133
+ | :------ | :------ |
1134
+ | `input` | `Q` & { `customFields?`: `C` ; `type`: `E`[] } |
1135
+
1136
+ ##### Returns
1137
+
1138
+ `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`\>\>
1139
+
1140
+ ▸ <`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`\>\>
1141
+
1142
+ ##### Type parameters
1143
+
1144
+ | Name | Type |
1145
+ | :------ | :------ |
1146
+ | `T` | extends `string` \| `number` \| `symbol` |
1147
+ | `E` | extends `object` |
1148
+ | `C` | extends [`CustomFieldMap`](README.md#customfieldmap)<`E`\> |
1149
+ | `Q` | extends [`Query`](README.md#query)<`E`, `C`\> |
1150
+
1151
+ ##### Parameters
1152
+
1153
+ | Name | Type |
1154
+ | :------ | :------ |
1155
+ | `input` | `Q` & { `customFields?`: `C` ; `type`: `T` } |
1156
+
1157
+ ##### Returns
1158
+
1159
+ `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`\>\>
1160
+
1161
+ #### Defined in
1162
+
1163
+ [lib/tools/defineCustomFetch.ts:11](https://github.com/nevoland/quetch/blob/93a058c/lib/tools/defineCustomFetch.ts#L11)
1164
+
1165
+ ___
1166
+
1167
+ ### fetchExternal
1168
+
1169
+ ▸ **fetchExternal**(`fetch?`): [`Handler`](README.md#handler)<`Request`, `Response`, `never`, `never`\>
1170
+
1171
+ Calls the provided `fetch` function, which defaults to the DOM `fetch` function, with the incoming `query`.
1172
+
1173
+ #### Parameters
1174
+
1175
+ | Name | Type | Description |
1176
+ | :------ | :------ | :------ |
1177
+ | `fetch` | (`input`: `RequestInfo` \| `URL`, `init?`: `RequestInit`) => `Promise`<`Response`\> | [MDN Reference](https://developer.mozilla.org/docs/Web/API/fetch) |
1178
+
1179
+ #### Returns
1180
+
1181
+ [`Handler`](README.md#handler)<`Request`, `Response`, `never`, `never`\>
1182
+
1183
+ Handler that returns a promise that resolves to the response.
1184
+
1185
+ #### Defined in
1186
+
1187
+ [lib/middlewares/fetchExternal.ts:12](https://github.com/nevoland/quetch/blob/93a058c/lib/middlewares/fetchExternal.ts#L12)
1188
+
1189
+ ___
1190
+
1191
+ ### fetchLocal
1192
+
1193
+ ▸ **fetchLocal**<`T`, `C`\>(): [`Handler`](README.md#handler)<[`Query`](README.md#query)<`T`, `C`\> & { `type`: `T`[] }, `any`, `never`, `never`\>
1194
+
1195
+ Performs the fetch query on local data.
1196
+
1197
+ #### Type parameters
1198
+
1199
+ | Name | Type |
1200
+ | :------ | :------ |
1201
+ | `T` | extends `object` |
1202
+ | `C` | extends [`CustomFieldMap`](README.md#customfieldmap)<`T`\> |
1203
+
1204
+ #### Returns
1205
+
1206
+ [`Handler`](README.md#handler)<[`Query`](README.md#query)<`T`, `C`\> & { `type`: `T`[] }, `any`, `never`, `never`\>
1207
+
1208
+ Promise that resolves to the response.
1209
+
1210
+ #### Defined in
1211
+
1212
+ [lib/middlewares/fetchLocal.ts:9](https://github.com/nevoland/quetch/blob/93a058c/lib/middlewares/fetchLocal.ts#L9)
1213
+
1214
+ ___
1215
+
1216
+ ### filterFromContext
1217
+
1218
+ ▸ **filterFromContext**<`T`\>(`context`): [`Filter`](README.md#filter)<`T`\>
1219
+
1220
+ #### Type parameters
1221
+
1222
+ | Name | Type |
1223
+ | :------ | :------ |
1224
+ | `T` | extends `object` |
1225
+
1226
+ #### Parameters
1227
+
1228
+ | Name | Type |
1229
+ | :------ | :------ |
1230
+ | `context` | [`Context`](README.md#context)<`T`\> |
1231
+
1232
+ #### Returns
1233
+
1234
+ [`Filter`](README.md#filter)<`T`\>
1235
+
1236
+ #### Defined in
1237
+
1238
+ lib/tools/filterFromContext.ts:5
1239
+
1240
+ ___
1241
+
1242
+ ### filterItem
1243
+
1244
+ ▸ **filterItem**<`T`\>(`filter`, `value`): `boolean`
1245
+
1246
+ Checks wether the provided `value` matches the `filter` or not.
1247
+
1248
+ #### Type parameters
1249
+
1250
+ | Name | Type |
1251
+ | :------ | :------ |
1252
+ | `T` | extends `object` |
1253
+
1254
+ #### Parameters
1255
+
1256
+ | Name | Type | Description |
1257
+ | :------ | :------ | :------ |
1258
+ | `filter` | `undefined` \| [`Filter`](README.md#filter)<`T`\> | The filter to apply. |
1259
+ | `value` | `undefined` \| `T` | The value to check. |
1260
+
1261
+ #### Returns
1262
+
1263
+ `boolean`
1264
+
1265
+ `true` if the `value` matches the `filter` and `false` otherwise.
1266
+
1267
+ #### Defined in
1268
+
1269
+ lib/tools/filterItem.ts:12
1270
+
1271
+ ___
1272
+
1273
+ ### identity
1274
+
1275
+ ▸ **identity**<`I`, `O`, `In`, `On`\>(`input`, `next`): `Promise`<`O`\>
1276
+
1277
+ #### Type parameters
1278
+
1279
+ | Name |
1280
+ | :------ |
1281
+ | `I` |
1282
+ | `O` |
1283
+ | `In` |
1284
+ | `On` |
1285
+
1286
+ #### Parameters
1287
+
1288
+ | Name | Type |
1289
+ | :------ | :------ |
1290
+ | `input` | `I` |
1291
+ | `next` | [`NextHandler`](README.md#nexthandler)<`In`, `On`\> |
1292
+
1293
+ #### Returns
1294
+
1295
+ `Promise`<`O`\>
1296
+
1297
+ #### Defined in
1298
+
1299
+ [lib/middlewares/identity.ts:3](https://github.com/nevoland/quetch/blob/93a058c/lib/middlewares/identity.ts#L3)
1300
+
1301
+ ___
1302
+
1303
+ ### impasse
1304
+
1305
+ ▸ **impasse**(`input`): `Promise`<`never`\>
1306
+
1307
+ Handles an `input` query and returns an `output` promise.
1308
+
1309
+ #### Parameters
1310
+
1311
+ | Name | Type |
1312
+ | :------ | :------ |
1313
+ | `input` | `never` |
1314
+
1315
+ #### Returns
1316
+
1317
+ `Promise`<`never`\>
1318
+
1319
+ #### Defined in
1320
+
1321
+ [lib/types.ts:31](https://github.com/nevoland/quetch/blob/93a058c/lib/types.ts#L31)
1322
+
1323
+ ___
1324
+
1325
+ ### log
1326
+
1327
+ ▸ **log**<`I`, `O`, `In`, `On`\>(`title?`): [`Handler`](README.md#handler)<`I`, `O`, `In`, `On`\>
1328
+
1329
+ Logs the outgoing query and the incoming result or the error.
1330
+
1331
+ #### Type parameters
1332
+
1333
+ | Name |
1334
+ | :------ |
1335
+ | `I` |
1336
+ | `O` |
1337
+ | `In` |
1338
+ | `On` |
1339
+
1340
+ #### Parameters
1341
+
1342
+ | Name | Type | Default value |
1343
+ | :------ | :------ | :------ |
1344
+ | `title` | `string` | `"Query"` |
1345
+
1346
+ #### Returns
1347
+
1348
+ [`Handler`](README.md#handler)<`I`, `O`, `In`, `On`\>
1349
+
1350
+ Query handler
1351
+
1352
+ #### Defined in
1353
+
1354
+ [lib/middlewares/log.ts:11](https://github.com/nevoland/quetch/blob/93a058c/lib/middlewares/log.ts#L11)
1355
+
1356
+ ___
1357
+
1358
+ ### normalizeOrder
1359
+
1360
+ ▸ **normalizeOrder**<`T`\>(`order`): `Object`
1361
+
1362
+ #### Type parameters
1363
+
1364
+ | Name | Type |
1365
+ | :------ | :------ |
1366
+ | `T` | extends `object` |
1367
+
1368
+ #### Parameters
1369
+
1370
+ | Name | Type |
1371
+ | :------ | :------ |
1372
+ | `order` | [`Order`](README.md#order)<`T`\> |
1373
+
1374
+ #### Returns
1375
+
1376
+ `Object`
1377
+
1378
+ | Name | Type |
1379
+ | :------ | :------ |
1380
+ | `descending?` | `boolean` |
1381
+ | `field` | keyof `T` |
1382
+
1383
+ #### Defined in
1384
+
1385
+ lib/tools/normalizeOrder.ts:3
1386
+
1387
+ ___
1388
+
1389
+ ### queryItemList
1390
+
1391
+ ▸ **queryItemList**<`T`, `C`\>(`query`): `number` \| `T` \| `T`[]
1392
+
1393
+ #### Type parameters
1394
+
1395
+ | Name | Type |
1396
+ | :------ | :------ |
1397
+ | `T` | extends `object` |
1398
+ | `C` | extends [`CustomFieldMap`](README.md#customfieldmap)<`T`\> |
1399
+
1400
+ #### Parameters
1401
+
1402
+ | Name | Type |
1403
+ | :------ | :------ |
1404
+ | `query` | `Object` |
1405
+
1406
+ #### Returns
1407
+
1408
+ `number` \| `T` \| `T`[]
1409
+
1410
+ #### Defined in
1411
+
1412
+ lib/tools/queryItemList.ts:41
1413
+
1414
+ ___
1415
+
1416
+ ### retry
1417
+
1418
+ ▸ **retry**(`options?`): [`Handler`](README.md#handler)<`Request`, `Response`, `Request`, `Response`\>
1419
+
1420
+ Retries a failed query call up to `amount` times, with a given `delay` in milliseconds at ±`delayDelta` milliseconds.
1421
+ Note that an `amount` set to `Infinity` results in indefinitely trying to resolve a query call.
1422
+ Only instances of `RequestError` that do not result in a `500` status error will result in new tries. Other errors will propagate immediately.
1423
+
1424
+ #### Parameters
1425
+
1426
+ | Name | Type |
1427
+ | :------ | :------ |
1428
+ | `options` | `Object` |
1429
+ | `options.amount` | `undefined` \| `number` |
1430
+ | `options.delay` | `undefined` \| `number` |
1431
+ | `options.delayDelta` | `undefined` \| `number` |
1432
+
1433
+ #### Returns
1434
+
1435
+ [`Handler`](README.md#handler)<`Request`, `Response`, `Request`, `Response`\>
1436
+
1437
+ Handler
1438
+
1439
+ #### Defined in
1440
+
1441
+ [lib/middlewares/retry.ts:15](https://github.com/nevoland/quetch/blob/93a058c/lib/middlewares/retry.ts#L15)
1442
+
1443
+ ___
1444
+
1445
+ ### sortItemList
1446
+
1447
+ ▸ **sortItemList**<`T`\>(`orderList`, `value`): `T`[]
1448
+
1449
+ Sorts provided `value` array *in place* according to the `orderList`.
1450
+
1451
+ #### Type parameters
1452
+
1453
+ | Name | Type |
1454
+ | :------ | :------ |
1455
+ | `T` | extends `object` |
1456
+
1457
+ #### Parameters
1458
+
1459
+ | Name | Type | Description |
1460
+ | :------ | :------ | :------ |
1461
+ | `orderList` | `undefined` \| [`Order`](README.md#order)<`T`\>[] | The order to use for sorting. |
1462
+ | `value` | `T`[] | The array to sort. |
1463
+
1464
+ #### Returns
1465
+
1466
+ `T`[]
1467
+
1468
+ The same array sorted in place.
1469
+
1470
+ #### Defined in
1471
+
1472
+ lib/tools/sortItemList.ts:12