@spoosh/angular 0.10.2 → 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -1,11 +1,146 @@
1
- import * as _spoosh_core from '@spoosh/core';
2
- import { QueueSelectorClient, SpooshResponse, QueueItem, QueueStats, SpooshBody, PluginArray, StateManager, EventEmitter, PluginExecutor, MethodOptionsMap, CoreRequestOptionsBase, SpooshPlugin, PluginTypeConfig, ResolveTypes, ResolverContext, ResolveResultTypes, ReadClient, TagOptions, InfiniteNextContext, InfinitePrevContext, InfinitePage, ExtractTriggerQuery as ExtractTriggerQuery$2, ExtractTriggerBody as ExtractTriggerBody$2, ExtractTriggerParams as ExtractTriggerParams$2, InfiniteRequestOptions, WriteSelectorClient, MergePluginInstanceApi } from '@spoosh/core';
1
+ import { PluginArray, StateManager, EventEmitter, PluginExecutor, MethodOptionsMap, CoreRequestOptionsBase, ReadClient, TagOptions, SpooshResponse, ExtractTriggerQuery as ExtractTriggerQuery$2, ExtractTriggerBody as ExtractTriggerBody$2, ExtractTriggerParams as ExtractTriggerParams$2, WriteSelectorClient, SpooshBody, QueueSelectorClient, QueueItem, QueueStats, InfiniteNextContext, InfinitePrevContext, InfinitePage, ResolveTypes, MergePluginOptions, ResolverContext, ResolveResultTypes, MergePluginResults, InfiniteRequestOptions, MergePluginApi } from '@spoosh/core';
3
2
  import { Signal } from '@angular/core';
4
3
 
5
- type TriggerAwaitedReturn$2<T> = T extends (...args: any[]) => infer R ? Awaited<R> : never;
4
+ interface SpooshInstanceShape<TApi, TSchema, TDefaultError, TPlugins extends PluginArray> {
5
+ api: TApi;
6
+ stateManager: StateManager;
7
+ eventEmitter: EventEmitter;
8
+ pluginExecutor: PluginExecutor;
9
+ _types: {
10
+ schema: TSchema;
11
+ defaultError: TDefaultError;
12
+ plugins: TPlugins;
13
+ };
14
+ }
15
+ type EnabledOption = boolean | (() => boolean);
16
+ type QueryRequestOptions = CoreRequestOptionsBase;
17
+ type MutationRequestOptions = CoreRequestOptionsBase;
18
+ type AngularOptionsMap = MethodOptionsMap<QueryRequestOptions, MutationRequestOptions>;
19
+
20
+ type SuccessResponse<T> = Extract<T, {
21
+ data: unknown;
22
+ error?: undefined;
23
+ }>;
24
+ type ErrorResponse<T> = Extract<T, {
25
+ error: unknown;
26
+ data?: undefined;
27
+ }>;
28
+ type ExtractMethodData<T> = T extends (...args: never[]) => infer R ? SuccessResponse<Awaited<R>> extends {
29
+ data: infer D;
30
+ } ? D : unknown : unknown;
31
+ type ExtractMethodError<T> = T extends (...args: never[]) => infer R ? ErrorResponse<Awaited<R>> extends {
32
+ error: infer E;
33
+ } ? E : unknown : unknown;
34
+ type ExtractMethodOptions<T> = T extends (options?: infer O) => Promise<unknown> ? O : never;
35
+ type AwaitedReturnType<T> = T extends (...args: never[]) => infer R ? Awaited<R> : never;
36
+ type SuccessReturnType<T> = SuccessResponse<AwaitedReturnType<T>>;
37
+ type ExtractResponseQuery<T> = SuccessReturnType<T> extends {
38
+ input: {
39
+ query: infer Q;
40
+ };
41
+ } ? Q : never;
42
+ type ExtractResponseBody<T> = SuccessReturnType<T> extends {
43
+ input: {
44
+ body: infer B;
45
+ };
46
+ } ? B : never;
47
+ type ExtractResponseParamNames<T> = SuccessReturnType<T> extends {
48
+ input: {
49
+ params: Record<infer K, unknown>;
50
+ };
51
+ } ? K extends string ? K : never : never;
52
+ type ExtractMethodQuery<T> = ExtractMethodOptions<T> extends {
53
+ query: infer Q;
54
+ } ? Q : never;
55
+ type ExtractMethodBody<T> = ExtractMethodOptions<T> extends {
56
+ body: infer B;
57
+ } ? B : never;
58
+
59
+ interface BaseReadOptions extends TagOptions {
60
+ enabled?: EnabledOption;
61
+ }
62
+ type QueryField<TQuery> = [TQuery] extends [never] ? object : undefined extends TQuery ? {
63
+ query?: Exclude<TQuery, undefined>;
64
+ } : {
65
+ query: TQuery;
66
+ };
67
+ type BodyField<TBody> = [TBody] extends [never] ? object : undefined extends TBody ? {
68
+ body?: Exclude<TBody, undefined>;
69
+ } : {
70
+ body: TBody;
71
+ };
72
+ type ParamsField<TParamNames extends string> = [TParamNames] extends [never] ? object : {
73
+ params: Record<TParamNames, string | number>;
74
+ };
75
+ type ReadInputFields<TQuery, TBody, TParamNames extends string> = QueryField<TQuery> & BodyField<TBody> & ParamsField<TParamNames>;
76
+ type ResponseInputFields<TQuery, TBody, TParamNames extends string> = [
77
+ TQuery,
78
+ TBody,
79
+ TParamNames
80
+ ] extends [never, never, never] ? object : {
81
+ input: ReadInputFields<TQuery, TBody, TParamNames>;
82
+ };
83
+ type AwaitedReturnTypeTrigger<T> = T extends (...args: never[]) => infer R ? Awaited<R> : never;
6
84
  type ExtractInputFromResponse$3<T> = T extends {
7
85
  input: infer I;
8
86
  } ? I : never;
87
+ type TriggerOptions<T> = ExtractInputFromResponse$3<AwaitedReturnTypeTrigger<T>> extends infer I ? [I] extends [never] ? {
88
+ force?: boolean;
89
+ } : ExtractTriggerQuery$2<I> & ExtractTriggerBody$2<I> & ExtractTriggerParams$2<I> & {
90
+ /** Force refetch even if data is cached */
91
+ force?: boolean;
92
+ } : {
93
+ force?: boolean;
94
+ };
95
+ interface BaseReadResult<TData, TError, TPluginResult = Record<string, unknown>, TTriggerOptions = {
96
+ force?: boolean;
97
+ }> {
98
+ data: Signal<TData | undefined>;
99
+ error: Signal<TError | undefined>;
100
+ loading: Signal<boolean>;
101
+ fetching: Signal<boolean>;
102
+ meta: Signal<TPluginResult>;
103
+ abort: () => void;
104
+ /**
105
+ * Manually trigger a fetch.
106
+ *
107
+ * @param options - Optional override options (query, body, params) to use for this specific request
108
+ */
109
+ trigger: (options?: TTriggerOptions) => Promise<SpooshResponse<TData, TError>>;
110
+ }
111
+ type ReadApiClient<TSchema, TDefaultError> = ReadClient<TSchema, TDefaultError>;
112
+
113
+ type OptionalQueryField<TQuery> = [TQuery] extends [never] ? object : undefined extends TQuery ? {
114
+ query?: Exclude<TQuery, undefined>;
115
+ } : {
116
+ query: TQuery;
117
+ };
118
+ type OptionalBodyField<TBody> = [TBody] extends [never] ? object : undefined extends TBody ? {
119
+ body?: Exclude<TBody, undefined>;
120
+ } : {
121
+ body: TBody;
122
+ };
123
+ type OptionalParamsField<TParamNames extends string> = [TParamNames] extends [
124
+ never
125
+ ] ? object : {
126
+ params: Record<TParamNames, string | number>;
127
+ };
128
+ type InputFields<TQuery, TBody, TParamNames extends string> = OptionalQueryField<TQuery> & OptionalBodyField<TBody> & OptionalParamsField<TParamNames>;
129
+ type WriteResponseInputFields<TQuery, TBody, TParamNames extends string> = [TQuery, TBody, TParamNames] extends [never, never, never] ? object : {
130
+ input: Signal<InputFields<TQuery, TBody, TParamNames> | undefined>;
131
+ };
132
+ interface BaseWriteResult<TData, TError, TOptions, TPluginResult = Record<string, unknown>> {
133
+ trigger: (options?: TOptions) => Promise<SpooshResponse<TData, TError>>;
134
+ data: Signal<TData | undefined>;
135
+ error: Signal<TError | undefined>;
136
+ loading: Signal<boolean>;
137
+ meta: Signal<TPluginResult>;
138
+ abort: () => void;
139
+ }
140
+ type TriggerAwaitedReturn$2<T> = T extends (...args: any[]) => infer R ? Awaited<R> : never;
141
+ type ExtractInputFromResponse$2<T> = T extends {
142
+ input: infer I;
143
+ } ? I : never;
9
144
  type ExtractTriggerQuery$1<I> = I extends {
10
145
  query: infer Q;
11
146
  } ? undefined extends Q ? {
@@ -25,11 +160,37 @@ type ExtractTriggerParams$1<I> = I extends {
25
160
  } ? {
26
161
  params: P;
27
162
  } : unknown;
163
+ type WriteTriggerInput<T> = ExtractInputFromResponse$2<TriggerAwaitedReturn$2<T>> extends infer I ? [I] extends [never] ? object : ExtractTriggerQuery$1<I> & ExtractTriggerBody$1<I> & ExtractTriggerParams$1<I> : object;
164
+ type WriteApiClient<TSchema, TDefaultError> = WriteSelectorClient<TSchema, TDefaultError>;
165
+
166
+ type TriggerAwaitedReturn$1<T> = T extends (...args: any[]) => infer R ? Awaited<R> : never;
167
+ type ExtractInputFromResponse$1<T> = T extends {
168
+ input: infer I;
169
+ } ? I : never;
170
+ type ExtractTriggerQuery<I> = I extends {
171
+ query: infer Q;
172
+ } ? undefined extends Q ? {
173
+ query?: Exclude<Q, undefined>;
174
+ } : {
175
+ query: Q;
176
+ } : unknown;
177
+ type ExtractTriggerBody<I> = I extends {
178
+ body: infer B;
179
+ } ? undefined extends B ? {
180
+ body?: Exclude<B, undefined> | SpooshBody<Exclude<B, undefined>>;
181
+ } : {
182
+ body: B | SpooshBody<B>;
183
+ } : unknown;
184
+ type ExtractTriggerParams<I> = I extends {
185
+ params: infer P;
186
+ } ? {
187
+ params: P;
188
+ } : unknown;
28
189
  type QueueTriggerBase = {
29
190
  /** Custom ID for this queue item. If not provided, one will be auto-generated. */
30
191
  id?: string;
31
192
  };
32
- type QueueTriggerInput<T> = ExtractInputFromResponse$3<TriggerAwaitedReturn$2<T>> extends infer I ? [I] extends [never] ? QueueTriggerBase : QueueTriggerBase & ExtractTriggerQuery$1<I> & ExtractTriggerBody$1<I> & ExtractTriggerParams$1<I> : QueueTriggerBase;
193
+ type QueueTriggerInput<T> = ExtractInputFromResponse$1<TriggerAwaitedReturn$1<T>> extends infer I ? [I] extends [never] ? QueueTriggerBase : QueueTriggerBase & ExtractTriggerQuery<I> & ExtractTriggerBody<I> & ExtractTriggerParams<I> : QueueTriggerBase;
33
194
  /**
34
195
  * Options for injectQueue.
35
196
  */
@@ -71,148 +232,15 @@ interface BaseQueueResult<TData, TError, TTriggerInput, TMeta = object> {
71
232
  */
72
233
  type QueueApiClient<TSchema, TDefaultError> = QueueSelectorClient<TSchema, TDefaultError>;
73
234
 
74
- type SuccessResponse<T> = Extract<T, {
75
- data: unknown;
76
- error?: undefined;
77
- }>;
78
- type ErrorResponse<T> = Extract<T, {
79
- error: unknown;
80
- data?: undefined;
81
- }>;
82
- type ExtractMethodData<T> = T extends (...args: never[]) => infer R ? SuccessResponse<Awaited<R>> extends {
83
- data: infer D;
84
- } ? D : unknown : unknown;
85
- type ExtractMethodError<T> = T extends (...args: never[]) => infer R ? ErrorResponse<Awaited<R>> extends {
86
- error: infer E;
87
- } ? E : unknown : unknown;
88
- type ExtractMethodOptions<T> = T extends (options?: infer O) => Promise<unknown> ? O : never;
89
- type AwaitedReturnType<T> = T extends (...args: never[]) => infer R ? Awaited<R> : never;
90
- type SuccessReturnType<T> = SuccessResponse<AwaitedReturnType<T>>;
91
- type ExtractResponseQuery<T> = SuccessReturnType<T> extends {
92
- input: {
93
- query: infer Q;
94
- };
95
- } ? Q : never;
96
- type ExtractResponseBody<T> = SuccessReturnType<T> extends {
97
- input: {
98
- body: infer B;
99
- };
100
- } ? B : never;
101
- type ExtractResponseParamNames<T> = SuccessReturnType<T> extends {
102
- input: {
103
- params: Record<infer K, unknown>;
104
- };
105
- } ? K extends string ? K : never : never;
106
- type ExtractMethodQuery<T> = ExtractMethodOptions<T> extends {
107
- query: infer Q;
108
- } ? Q : never;
109
- type ExtractMethodBody<T> = ExtractMethodOptions<T> extends {
110
- body: infer B;
111
- } ? B : never;
112
-
113
- interface SpooshInstanceShape<TApi, TSchema, TDefaultError, TPlugins extends PluginArray> {
114
- api: TApi;
115
- stateManager: StateManager;
116
- eventEmitter: EventEmitter;
117
- pluginExecutor: PluginExecutor;
118
- _types: {
119
- schema: TSchema;
120
- defaultError: TDefaultError;
121
- plugins: TPlugins;
122
- };
123
- }
124
- type EnabledOption = boolean | (() => boolean);
125
- type QueryRequestOptions = CoreRequestOptionsBase;
126
- type MutationRequestOptions = CoreRequestOptionsBase;
127
- type AngularOptionsMap = MethodOptionsMap<QueryRequestOptions, MutationRequestOptions>;
128
-
129
- declare function createInjectQueue<TSchema, TDefaultError, TPlugins extends readonly SpooshPlugin<PluginTypeConfig>[]>(options: Omit<SpooshInstanceShape<unknown, TSchema, TDefaultError, TPlugins>, "_types">): <TQueueFn extends (api: QueueApiClient<TSchema, TDefaultError>) => Promise<SpooshResponse<unknown, unknown>>>(queueFn: TQueueFn, queueOptions?: ResolveTypes<((TPlugins[number] extends infer T ? T extends TPlugins[number] ? T extends SpooshPlugin<infer Types extends PluginTypeConfig> ? Types extends {
130
- queueOptions: infer Q;
131
- } ? Q : object : object : never : never) extends infer T_1 ? T_1 extends (TPlugins[number] extends infer T_2 ? T_2 extends TPlugins[number] ? T_2 extends SpooshPlugin<infer Types extends PluginTypeConfig> ? Types extends {
132
- queueOptions: infer Q;
133
- } ? Q : object : object : never : never) ? T_1 extends unknown ? (x: T_1) => void : never : never : never) extends (x: infer I) => void ? I : never, ResolverContext<TSchema, TQueueFn extends (...args: any[]) => infer R ? Extract<Awaited<R>, {
134
- data: unknown;
135
- error?: undefined;
136
- }> extends {
137
- data: infer D;
138
- } ? D : unknown : unknown, unknown extends (TQueueFn extends (...args: any[]) => infer R_1 ? Extract<Awaited<R_1>, {
139
- error: unknown;
140
- data?: undefined;
141
- }> extends {
142
- error: infer E;
143
- } ? E : unknown : unknown) ? TDefaultError : TQueueFn extends (...args: any[]) => infer R_1 ? Extract<Awaited<R_1>, {
144
- error: unknown;
145
- data?: undefined;
146
- }> extends {
147
- error: infer E;
148
- } ? E : unknown : unknown, ExtractMethodQuery<TQueueFn>, ExtractMethodBody<TQueueFn>, ExtractResponseParamNames<TQueueFn> extends never ? never : Record<ExtractResponseParamNames<TQueueFn>, string | number>>> & InjectQueueOptions) => BaseQueueResult<TQueueFn extends (...args: any[]) => infer R ? Extract<Awaited<R>, {
149
- data: unknown;
150
- error?: undefined;
151
- }> extends {
152
- data: infer D;
153
- } ? D : unknown : unknown, unknown extends (TQueueFn extends (...args: any[]) => infer R_1 ? Extract<Awaited<R_1>, {
154
- error: unknown;
155
- data?: undefined;
156
- }> extends {
157
- error: infer E;
158
- } ? E : unknown : unknown) ? TDefaultError : TQueueFn extends (...args: any[]) => infer R_1 ? Extract<Awaited<R_1>, {
159
- error: unknown;
160
- data?: undefined;
161
- }> extends {
162
- error: infer E;
163
- } ? E : unknown : unknown, QueueTriggerInput<TQueueFn> & ResolveTypes<((TPlugins[number] extends infer T_3 ? T_3 extends TPlugins[number] ? T_3 extends SpooshPlugin<infer Types_1 extends PluginTypeConfig> ? Types_1 extends {
164
- queueTriggerOptions: infer Q_1;
165
- } ? Q_1 : object : object : never : never) extends infer T_4 ? T_4 extends (TPlugins[number] extends infer T_5 ? T_5 extends TPlugins[number] ? T_5 extends SpooshPlugin<infer Types_1 extends PluginTypeConfig> ? Types_1 extends {
166
- queueTriggerOptions: infer Q_1;
167
- } ? Q_1 : object : object : never : never) ? T_4 extends unknown ? (x: T_4) => void : never : never : never) extends (x: infer I) => void ? I : never, ResolverContext<TSchema, TQueueFn extends (...args: any[]) => infer R ? Extract<Awaited<R>, {
168
- data: unknown;
169
- error?: undefined;
170
- }> extends {
171
- data: infer D;
172
- } ? D : unknown : unknown, unknown extends (TQueueFn extends (...args: any[]) => infer R_1 ? Extract<Awaited<R_1>, {
173
- error: unknown;
174
- data?: undefined;
175
- }> extends {
176
- error: infer E;
177
- } ? E : unknown : unknown) ? TDefaultError : TQueueFn extends (...args: any[]) => infer R_1 ? Extract<Awaited<R_1>, {
178
- error: unknown;
179
- data?: undefined;
180
- }> extends {
181
- error: infer E;
182
- } ? E : unknown : unknown, ExtractMethodQuery<TQueueFn>, ExtractMethodBody<TQueueFn>, ExtractResponseParamNames<TQueueFn> extends never ? never : Record<ExtractResponseParamNames<TQueueFn>, string | number>>>, ResolveResultTypes<((TPlugins[number] extends infer T_6 ? T_6 extends TPlugins[number] ? T_6 extends SpooshPlugin<infer Types_2 extends PluginTypeConfig> ? Types_2 extends {
183
- queueResult: infer Q_2;
184
- } ? Q_2 : object : object : never : never) extends infer T_7 ? T_7 extends (TPlugins[number] extends infer T_8 ? T_8 extends TPlugins[number] ? T_8 extends SpooshPlugin<infer Types_2 extends PluginTypeConfig> ? Types_2 extends {
185
- queueResult: infer Q_2;
186
- } ? Q_2 : object : object : never : never) ? T_7 extends unknown ? (x: T_7) => void : never : never : never) extends (x: infer I) => void ? I : never, ResolveTypes<((TPlugins[number] extends infer T_9 ? T_9 extends TPlugins[number] ? T_9 extends SpooshPlugin<infer Types extends PluginTypeConfig> ? Types extends {
187
- queueOptions: infer Q;
188
- } ? Q : object : object : never : never) extends infer T_10 ? T_10 extends (TPlugins[number] extends infer T_11 ? T_11 extends TPlugins[number] ? T_11 extends SpooshPlugin<infer Types extends PluginTypeConfig> ? Types extends {
189
- queueOptions: infer Q;
190
- } ? Q : object : object : never : never) ? T_10 extends unknown ? (x: T_10) => void : never : never : never) extends (x: infer I) => void ? I : never, ResolverContext<TSchema, TQueueFn extends (...args: any[]) => infer R ? Extract<Awaited<R>, {
191
- data: unknown;
192
- error?: undefined;
193
- }> extends {
194
- data: infer D;
195
- } ? D : unknown : unknown, unknown extends (TQueueFn extends (...args: any[]) => infer R_1 ? Extract<Awaited<R_1>, {
196
- error: unknown;
197
- data?: undefined;
198
- }> extends {
199
- error: infer E;
200
- } ? E : unknown : unknown) ? TDefaultError : TQueueFn extends (...args: any[]) => infer R_1 ? Extract<Awaited<R_1>, {
201
- error: unknown;
202
- data?: undefined;
203
- }> extends {
204
- error: infer E;
205
- } ? E : unknown : unknown, ExtractMethodQuery<TQueueFn>, ExtractMethodBody<TQueueFn>, ExtractResponseParamNames<TQueueFn> extends never ? never : Record<ExtractResponseParamNames<TQueueFn>, string | number>>> & InjectQueueOptions>>;
206
-
207
- type TriggerAwaitedReturn$1<T> = T extends (...args: never[]) => infer R ? Awaited<R> : never;
208
- type ExtractInputFromResponse$2<T> = T extends {
235
+ type TriggerAwaitedReturn<T> = T extends (...args: never[]) => infer R ? Awaited<R> : never;
236
+ type ExtractInputFromResponse<T> = T extends {
209
237
  input: infer I;
210
238
  } ? I : never;
211
239
  type BaseTriggerOptions = {
212
240
  /** Bypass cache and force refetch. Default: true */
213
241
  force?: boolean;
214
242
  };
215
- type PagesTriggerOptions<TReadFn> = ExtractInputFromResponse$2<TriggerAwaitedReturn$1<TReadFn>> extends infer I ? [I] extends [never] ? BaseTriggerOptions : ExtractTriggerQuery$2<I> & ExtractTriggerBody$2<I> & ExtractTriggerParams$2<I> & BaseTriggerOptions : BaseTriggerOptions;
243
+ type PagesTriggerOptions<TReadFn> = ExtractInputFromResponse<TriggerAwaitedReturn<TReadFn>> extends infer I ? [I] extends [never] ? BaseTriggerOptions : ExtractTriggerQuery$2<I> & ExtractTriggerBody$2<I> & ExtractTriggerParams$2<I> & BaseTriggerOptions : BaseTriggerOptions;
216
244
  /**
217
245
  * Options for `injectPages`.
218
246
  *
@@ -310,319 +338,38 @@ interface BasePagesResult<TData, TError, TItem, TPluginResult = Record<string, u
310
338
  }
311
339
  type PagesApiClient<TSchema, TDefaultError> = ReadClient<TSchema, TDefaultError>;
312
340
 
313
- declare function createInjectPages<TSchema, TDefaultError, TPlugins extends readonly SpooshPlugin<PluginTypeConfig>[]>(options: Omit<SpooshInstanceShape<unknown, TSchema, TDefaultError, TPlugins>, "_types">): <TReadFn extends (api: PagesApiClient<TSchema, TDefaultError>) => Promise<SpooshResponse<unknown, unknown>>, TRequest extends InfiniteRequestOptions = InfiniteRequestOptions, TItem = unknown>(readFn: TReadFn, readOptions: BasePagesOptions<TReadFn extends (...args: never[]) => infer R ? Extract<Awaited<R>, {
314
- data: unknown;
315
- error?: undefined;
316
- }> extends {
317
- data: infer D;
318
- } ? D : unknown : unknown, TItem, unknown extends (TReadFn extends (...args: never[]) => infer R_1 ? Extract<Awaited<R_1>, {
319
- error: unknown;
320
- data?: undefined;
321
- }> extends {
322
- error: infer E;
323
- } ? E : unknown : unknown) ? TDefaultError : TReadFn extends (...args: never[]) => infer R_1 ? Extract<Awaited<R_1>, {
324
- error: unknown;
325
- data?: undefined;
326
- }> extends {
327
- error: infer E;
328
- } ? E : unknown : unknown, TRequest, ((TPlugins[number] extends infer T_3 ? T_3 extends TPlugins[number] ? T_3 extends SpooshPlugin<infer Types extends PluginTypeConfig> ? Types extends {
329
- readResult: infer R_2;
330
- } ? R_2 : object : object : never : never) extends infer T_4 ? T_4 extends (TPlugins[number] extends infer T_5 ? T_5 extends TPlugins[number] ? T_5 extends SpooshPlugin<infer Types extends PluginTypeConfig> ? Types extends {
331
- readResult: infer R_2;
332
- } ? R_2 : object : object : never : never) ? T_4 extends unknown ? (x: T_4) => void : never : never : never) extends (x: infer I) => void ? I : never> & ResolveTypes<((TPlugins[number] extends infer T_6 ? T_6 extends TPlugins[number] ? T_6 extends SpooshPlugin<infer Types_1 extends PluginTypeConfig> ? Types_1 extends {
333
- pagesOptions: infer I_1;
334
- } ? I_1 : object : object : never : never) extends infer T_7 ? T_7 extends (TPlugins[number] extends infer T_8 ? T_8 extends TPlugins[number] ? T_8 extends SpooshPlugin<infer Types_1 extends PluginTypeConfig> ? Types_1 extends {
335
- pagesOptions: infer I_1;
336
- } ? I_1 : object : object : never : never) ? T_7 extends unknown ? (x: T_7) => void : never : never : never) extends (x: infer I) => void ? I : never, ResolverContext<TSchema, TReadFn extends (...args: never[]) => infer R ? Extract<Awaited<R>, {
337
- data: unknown;
338
- error?: undefined;
339
- }> extends {
340
- data: infer D;
341
- } ? D : unknown : unknown, unknown extends (TReadFn extends (...args: never[]) => infer R_1 ? Extract<Awaited<R_1>, {
342
- error: unknown;
343
- data?: undefined;
344
- }> extends {
345
- error: infer E;
346
- } ? E : unknown : unknown) ? TDefaultError : TReadFn extends (...args: never[]) => infer R_1 ? Extract<Awaited<R_1>, {
347
- error: unknown;
348
- data?: undefined;
349
- }> extends {
350
- error: infer E;
351
- } ? E : unknown : unknown>>) => BasePagesResult<TReadFn extends (...args: never[]) => infer R ? Extract<Awaited<R>, {
352
- data: unknown;
353
- error?: undefined;
354
- }> extends {
355
- data: infer D;
356
- } ? D : unknown : unknown, unknown extends (TReadFn extends (...args: never[]) => infer R_1 ? Extract<Awaited<R_1>, {
357
- error: unknown;
358
- data?: undefined;
359
- }> extends {
360
- error: infer E;
361
- } ? E : unknown : unknown) ? TDefaultError : TReadFn extends (...args: never[]) => infer R_1 ? Extract<Awaited<R_1>, {
362
- error: unknown;
363
- data?: undefined;
364
- }> extends {
365
- error: infer E;
366
- } ? E : unknown : unknown, TItem, ((TPlugins[number] extends infer T ? T extends TPlugins[number] ? T extends SpooshPlugin<infer Types extends PluginTypeConfig> ? Types extends {
367
- readResult: infer R_2;
368
- } ? R_2 : object : object : never : never) extends infer T_1 ? T_1 extends (TPlugins[number] extends infer T_2 ? T_2 extends TPlugins[number] ? T_2 extends SpooshPlugin<infer Types extends PluginTypeConfig> ? Types extends {
369
- readResult: infer R_2;
370
- } ? R_2 : object : object : never : never) ? T_1 extends unknown ? (x: T_1) => void : never : never : never) extends (x: infer I) => void ? I : never, PagesTriggerOptions<TReadFn>>;
371
-
372
- type OptionalQueryField<TQuery> = [TQuery] extends [never] ? object : undefined extends TQuery ? {
373
- query?: Exclude<TQuery, undefined>;
374
- } : {
375
- query: TQuery;
376
- };
377
- type OptionalBodyField<TBody> = [TBody] extends [never] ? object : undefined extends TBody ? {
378
- body?: Exclude<TBody, undefined>;
379
- } : {
380
- body: TBody;
381
- };
382
- type OptionalParamsField<TParamNames extends string> = [TParamNames] extends [
383
- never
384
- ] ? object : {
385
- params: Record<TParamNames, string | number>;
386
- };
387
- type InputFields<TQuery, TBody, TParamNames extends string> = OptionalQueryField<TQuery> & OptionalBodyField<TBody> & OptionalParamsField<TParamNames>;
388
- type WriteResponseInputFields<TQuery, TBody, TParamNames extends string> = [TQuery, TBody, TParamNames] extends [never, never, never] ? object : {
389
- input: Signal<InputFields<TQuery, TBody, TParamNames> | undefined>;
390
- };
391
- interface BaseWriteResult<TData, TError, TOptions, TPluginResult = Record<string, unknown>> {
392
- trigger: (options?: TOptions) => Promise<SpooshResponse<TData, TError>>;
393
- data: Signal<TData | undefined>;
394
- error: Signal<TError | undefined>;
395
- loading: Signal<boolean>;
396
- meta: Signal<TPluginResult>;
397
- abort: () => void;
398
- }
399
- type TriggerAwaitedReturn<T> = T extends (...args: any[]) => infer R ? Awaited<R> : never;
400
- type ExtractInputFromResponse$1<T> = T extends {
401
- input: infer I;
402
- } ? I : never;
403
- type ExtractTriggerQuery<I> = I extends {
404
- query: infer Q;
405
- } ? undefined extends Q ? {
406
- query?: Exclude<Q, undefined>;
407
- } : {
408
- query: Q;
409
- } : unknown;
410
- type ExtractTriggerBody<I> = I extends {
411
- body: infer B;
412
- } ? undefined extends B ? {
413
- body?: Exclude<B, undefined> | SpooshBody<Exclude<B, undefined>>;
414
- } : {
415
- body: B | SpooshBody<B>;
416
- } : unknown;
417
- type ExtractTriggerParams<I> = I extends {
418
- params: infer P;
419
- } ? {
420
- params: P;
421
- } : unknown;
422
- type WriteTriggerInput<T> = ExtractInputFromResponse$1<TriggerAwaitedReturn<T>> extends infer I ? [I] extends [never] ? object : ExtractTriggerQuery<I> & ExtractTriggerBody<I> & ExtractTriggerParams<I> : object;
423
- type WriteApiClient<TSchema, TDefaultError> = WriteSelectorClient<TSchema, TDefaultError>;
424
-
425
- declare function createInjectWrite<TSchema, TDefaultError, TPlugins extends readonly SpooshPlugin<PluginTypeConfig>[]>(options: Omit<SpooshInstanceShape<unknown, TSchema, TDefaultError, TPlugins>, "_types">): <TWriteFn extends (api: WriteApiClient<TSchema, TDefaultError>) => Promise<SpooshResponse<unknown, unknown>>, TWriteOpts extends _spoosh_core.ResolveTypes<((TPlugins[number] extends infer T ? T extends TPlugins[number] ? T extends SpooshPlugin<infer Types extends PluginTypeConfig> ? Types extends {
426
- writeOptions: infer W;
427
- } ? W : object : object : never : never) extends infer T_1 ? T_1 extends (TPlugins[number] extends infer T_2 ? T_2 extends TPlugins[number] ? T_2 extends SpooshPlugin<infer Types extends PluginTypeConfig> ? Types extends {
428
- writeOptions: infer W;
429
- } ? W : object : object : never : never) ? T_1 extends unknown ? (x: T_1) => void : never : never : never) extends (x: infer I) => void ? I : never, ResolverContext<TSchema, TWriteFn extends (...args: any[]) => infer R ? Extract<Awaited<R>, {
430
- data: unknown;
431
- error?: undefined;
432
- }> extends {
433
- data: infer D;
434
- } ? D : unknown : unknown, unknown extends (TWriteFn extends (...args: any[]) => infer R_1 ? Extract<Awaited<R_1>, {
435
- error: unknown;
436
- data?: undefined;
437
- }> extends {
438
- error: infer E;
439
- } ? E : unknown : unknown) ? TDefaultError : TWriteFn extends (...args: any[]) => infer R_1 ? Extract<Awaited<R_1>, {
440
- error: unknown;
441
- data?: undefined;
442
- }> extends {
443
- error: infer E;
444
- } ? E : unknown : unknown, ExtractMethodQuery<TWriteFn>, ExtractMethodBody<TWriteFn>, ExtractResponseParamNames<TWriteFn> extends never ? never : Record<ExtractResponseParamNames<TWriteFn>, string | number>>> = _spoosh_core.ResolveTypes<((TPlugins[number] extends infer T_3 ? T_3 extends TPlugins[number] ? T_3 extends SpooshPlugin<infer Types extends PluginTypeConfig> ? Types extends {
445
- writeOptions: infer W;
446
- } ? W : object : object : never : never) extends infer T_4 ? T_4 extends (TPlugins[number] extends infer T_5 ? T_5 extends TPlugins[number] ? T_5 extends SpooshPlugin<infer Types extends PluginTypeConfig> ? Types extends {
447
- writeOptions: infer W;
448
- } ? W : object : object : never : never) ? T_4 extends unknown ? (x: T_4) => void : never : never : never) extends (x: infer I) => void ? I : never, ResolverContext<TSchema, TWriteFn extends (...args: any[]) => infer R ? Extract<Awaited<R>, {
449
- data: unknown;
450
- error?: undefined;
451
- }> extends {
452
- data: infer D;
453
- } ? D : unknown : unknown, unknown extends (TWriteFn extends (...args: any[]) => infer R_1 ? Extract<Awaited<R_1>, {
454
- error: unknown;
455
- data?: undefined;
456
- }> extends {
457
- error: infer E;
458
- } ? E : unknown : unknown) ? TDefaultError : TWriteFn extends (...args: any[]) => infer R_1 ? Extract<Awaited<R_1>, {
459
- error: unknown;
460
- data?: undefined;
461
- }> extends {
462
- error: infer E;
463
- } ? E : unknown : unknown, ExtractMethodQuery<TWriteFn>, ExtractMethodBody<TWriteFn>, ExtractResponseParamNames<TWriteFn> extends never ? never : Record<ExtractResponseParamNames<TWriteFn>, string | number>>>>(writeFn: TWriteFn, writeOptions?: TWriteOpts) => BaseWriteResult<TWriteFn extends (...args: any[]) => infer R ? Extract<Awaited<R>, {
464
- data: unknown;
465
- error?: undefined;
466
- }> extends {
467
- data: infer D;
468
- } ? D : unknown : unknown, unknown extends (TWriteFn extends (...args: any[]) => infer R_1 ? Extract<Awaited<R_1>, {
469
- error: unknown;
470
- data?: undefined;
471
- }> extends {
472
- error: infer E;
473
- } ? E : unknown : unknown) ? TDefaultError : TWriteFn extends (...args: any[]) => infer R_1 ? Extract<Awaited<R_1>, {
474
- error: unknown;
475
- data?: undefined;
476
- }> extends {
477
- error: infer E;
478
- } ? E : unknown : unknown, WriteTriggerInput<TWriteFn> & _spoosh_core.ResolveTypes<((TPlugins[number] extends infer T_6 ? T_6 extends TPlugins[number] ? T_6 extends SpooshPlugin<infer Types_1 extends PluginTypeConfig> ? Types_1 extends {
479
- writeTriggerOptions: infer W_1;
480
- } ? W_1 : object : object : never : never) extends infer T_7 ? T_7 extends (TPlugins[number] extends infer T_8 ? T_8 extends TPlugins[number] ? T_8 extends SpooshPlugin<infer Types_1 extends PluginTypeConfig> ? Types_1 extends {
481
- writeTriggerOptions: infer W_1;
482
- } ? W_1 : object : object : never : never) ? T_7 extends unknown ? (x: T_7) => void : never : never : never) extends (x: infer I) => void ? I : never, ResolverContext<TSchema, TWriteFn extends (...args: any[]) => infer R ? Extract<Awaited<R>, {
483
- data: unknown;
484
- error?: undefined;
485
- }> extends {
486
- data: infer D;
487
- } ? D : unknown : unknown, unknown extends (TWriteFn extends (...args: any[]) => infer R_1 ? Extract<Awaited<R_1>, {
488
- error: unknown;
489
- data?: undefined;
490
- }> extends {
491
- error: infer E;
492
- } ? E : unknown : unknown) ? TDefaultError : TWriteFn extends (...args: any[]) => infer R_1 ? Extract<Awaited<R_1>, {
493
- error: unknown;
494
- data?: undefined;
495
- }> extends {
496
- error: infer E;
497
- } ? E : unknown : unknown, ExtractMethodQuery<TWriteFn>, ExtractMethodBody<TWriteFn>, ExtractResponseParamNames<TWriteFn> extends never ? never : Record<ExtractResponseParamNames<TWriteFn>, string | number>>>, ResolveResultTypes<((TPlugins[number] extends infer T_9 ? T_9 extends TPlugins[number] ? T_9 extends SpooshPlugin<infer Types_2 extends PluginTypeConfig> ? Types_2 extends {
498
- writeResult: infer W_2;
499
- } ? W_2 : object : object : never : never) extends infer T_10 ? T_10 extends (TPlugins[number] extends infer T_11 ? T_11 extends TPlugins[number] ? T_11 extends SpooshPlugin<infer Types_2 extends PluginTypeConfig> ? Types_2 extends {
500
- writeResult: infer W_2;
501
- } ? W_2 : object : object : never : never) ? T_10 extends unknown ? (x: T_10) => void : never : never : never) extends (x: infer I) => void ? I : never, TWriteOpts>> & WriteResponseInputFields<ExtractResponseQuery<TWriteFn>, ExtractResponseBody<TWriteFn>, ExtractResponseParamNames<TWriteFn>>;
502
-
503
- interface BaseReadOptions extends TagOptions {
504
- enabled?: EnabledOption;
505
- }
506
- type QueryField<TQuery> = [TQuery] extends [never] ? object : undefined extends TQuery ? {
507
- query?: Exclude<TQuery, undefined>;
508
- } : {
509
- query: TQuery;
341
+ type InferError<T, TDefaultError> = unknown extends T ? TDefaultError : T;
342
+ type StrictOptions<TOptions, TAllowed> = TOptions & {
343
+ [K in keyof TOptions as K extends keyof TAllowed ? never : K]: never;
510
344
  };
511
- type BodyField<TBody> = [TBody] extends [never] ? object : undefined extends TBody ? {
512
- body?: Exclude<TBody, undefined>;
513
- } : {
514
- body: TBody;
515
- };
516
- type ParamsField<TParamNames extends string> = [TParamNames] extends [never] ? object : {
517
- params: Record<TParamNames, string | number>;
345
+ type ReadResolverContext<TSchema, TReadFn, TDefaultError> = ResolverContext<TSchema, ExtractMethodData<TReadFn>, InferError<ExtractMethodError<TReadFn>, TDefaultError>, ExtractResponseQuery<TReadFn>, ExtractResponseBody<TReadFn>, ExtractResponseParamNames<TReadFn> extends never ? never : Record<ExtractResponseParamNames<TReadFn>, string | number>>;
346
+ type ResolvedReadOptions<TSchema, TPlugins extends PluginArray, TReadFn, TDefaultError> = BaseReadOptions & ResolveTypes<MergePluginOptions<TPlugins>["read"], ReadResolverContext<TSchema, TReadFn, TDefaultError>>;
347
+ type WriteResolverContext<TSchema, TMethod, TDefaultError> = ResolverContext<TSchema, ExtractMethodData<TMethod>, InferError<ExtractMethodError<TMethod>, TDefaultError>, ExtractMethodQuery<TMethod>, ExtractMethodBody<TMethod>, ExtractResponseParamNames<TMethod> extends never ? never : Record<ExtractResponseParamNames<TMethod>, string | number>>;
348
+ type ResolvedWriteOptions<TSchema, TPlugins extends PluginArray, TMethod, TDefaultError> = ResolveTypes<MergePluginOptions<TPlugins>["write"], WriteResolverContext<TSchema, TMethod, TDefaultError>>;
349
+ type ResolvedWriteTriggerOptions<TSchema, TPlugins extends PluginArray, TMethod, TDefaultError> = ResolveTypes<MergePluginOptions<TPlugins>["writeTrigger"], WriteResolverContext<TSchema, TMethod, TDefaultError>>;
350
+ type QueueResolverContext<TSchema, TMethod, TDefaultError> = ResolverContext<TSchema, ExtractMethodData<TMethod>, InferError<ExtractMethodError<TMethod>, TDefaultError>, ExtractMethodQuery<TMethod>, ExtractMethodBody<TMethod>, ExtractResponseParamNames<TMethod> extends never ? never : Record<ExtractResponseParamNames<TMethod>, string | number>>;
351
+ type ResolvedQueueOptions<TSchema, TPlugins extends PluginArray, TMethod, TDefaultError> = ResolveTypes<MergePluginOptions<TPlugins>["queue"], QueueResolverContext<TSchema, TMethod, TDefaultError>>;
352
+ type ResolvedQueueTriggerOptions<TSchema, TPlugins extends PluginArray, TMethod, TDefaultError> = ResolveTypes<MergePluginOptions<TPlugins>["queueTrigger"], QueueResolverContext<TSchema, TMethod, TDefaultError>>;
353
+ type PagesResolverContext<TSchema, TReadFn, TDefaultError> = ResolverContext<TSchema, ExtractMethodData<TReadFn>, InferError<ExtractMethodError<TReadFn>, TDefaultError>, ExtractResponseQuery<TReadFn>, ExtractResponseBody<TReadFn>, ExtractResponseParamNames<TReadFn> extends never ? never : Record<ExtractResponseParamNames<TReadFn>, string | number>>;
354
+ type InjectReadFn<TDefaultError, TSchema, TPlugins extends PluginArray> = {
355
+ <TReadFn extends (api: ReadApiClient<TSchema, TDefaultError>) => Promise<SpooshResponse<unknown, unknown>>, TReadOpts extends ResolvedReadOptions<TSchema, TPlugins, TReadFn, TDefaultError>>(readFn: TReadFn, readOptions: StrictOptions<TReadOpts, ResolvedReadOptions<TSchema, TPlugins, TReadFn, TDefaultError>>): BaseReadResult<ExtractMethodData<TReadFn>, InferError<ExtractMethodError<TReadFn>, TDefaultError>, ResolveResultTypes<MergePluginResults<TPlugins>["read"], TReadOpts>, TriggerOptions<TReadFn>> & ResponseInputFields<ExtractResponseQuery<TReadFn>, ExtractResponseBody<TReadFn>, ExtractResponseParamNames<TReadFn>>;
356
+ <TReadFn extends (api: ReadApiClient<TSchema, TDefaultError>) => Promise<SpooshResponse<unknown, unknown>>>(readFn: TReadFn): BaseReadResult<ExtractMethodData<TReadFn>, InferError<ExtractMethodError<TReadFn>, TDefaultError>, MergePluginResults<TPlugins>["read"], TriggerOptions<TReadFn>> & ResponseInputFields<ExtractResponseQuery<TReadFn>, ExtractResponseBody<TReadFn>, ExtractResponseParamNames<TReadFn>>;
518
357
  };
519
- type ReadInputFields<TQuery, TBody, TParamNames extends string> = QueryField<TQuery> & BodyField<TBody> & ParamsField<TParamNames>;
520
- type ResponseInputFields<TQuery, TBody, TParamNames extends string> = [
521
- TQuery,
522
- TBody,
523
- TParamNames
524
- ] extends [never, never, never] ? object : {
525
- input: ReadInputFields<TQuery, TBody, TParamNames>;
358
+ type InjectWriteFn<TDefaultError, TSchema, TPlugins extends PluginArray> = {
359
+ <TWriteFn extends (api: WriteApiClient<TSchema, TDefaultError>) => Promise<SpooshResponse<unknown, unknown>>, TWriteOpts extends ResolvedWriteOptions<TSchema, TPlugins, TWriteFn, TDefaultError>>(writeFn: TWriteFn, writeOptions: StrictOptions<TWriteOpts, ResolvedWriteOptions<TSchema, TPlugins, TWriteFn, TDefaultError>>): BaseWriteResult<ExtractMethodData<TWriteFn>, InferError<ExtractMethodError<TWriteFn>, TDefaultError>, WriteTriggerInput<TWriteFn> & ResolvedWriteTriggerOptions<TSchema, TPlugins, TWriteFn, TDefaultError>, ResolveResultTypes<MergePluginResults<TPlugins>["write"], TWriteOpts>> & WriteResponseInputFields<ExtractResponseQuery<TWriteFn>, ExtractResponseBody<TWriteFn>, ExtractResponseParamNames<TWriteFn>>;
360
+ <TWriteFn extends (api: WriteApiClient<TSchema, TDefaultError>) => Promise<SpooshResponse<unknown, unknown>>>(writeFn: TWriteFn): BaseWriteResult<ExtractMethodData<TWriteFn>, InferError<ExtractMethodError<TWriteFn>, TDefaultError>, WriteTriggerInput<TWriteFn> & ResolvedWriteTriggerOptions<TSchema, TPlugins, TWriteFn, TDefaultError>, MergePluginResults<TPlugins>["write"]> & WriteResponseInputFields<ExtractResponseQuery<TWriteFn>, ExtractResponseBody<TWriteFn>, ExtractResponseParamNames<TWriteFn>>;
526
361
  };
527
- type AwaitedReturnTypeTrigger<T> = T extends (...args: never[]) => infer R ? Awaited<R> : never;
528
- type ExtractInputFromResponse<T> = T extends {
529
- input: infer I;
530
- } ? I : never;
531
- type TriggerOptions<T> = ExtractInputFromResponse<AwaitedReturnTypeTrigger<T>> extends infer I ? [I] extends [never] ? {
532
- force?: boolean;
533
- } : ExtractTriggerQuery$2<I> & ExtractTriggerBody$2<I> & ExtractTriggerParams$2<I> & {
534
- /** Force refetch even if data is cached */
535
- force?: boolean;
536
- } : {
537
- force?: boolean;
362
+ type InjectQueueFn<TDefaultError, TSchema, TPlugins extends PluginArray> = {
363
+ <TQueueFn extends (api: QueueApiClient<TSchema, TDefaultError>) => Promise<SpooshResponse<unknown, unknown>>>(queueFn: TQueueFn, queueOptions?: ResolvedQueueOptions<TSchema, TPlugins, TQueueFn, TDefaultError> & InjectQueueOptions): BaseQueueResult<ExtractMethodData<TQueueFn>, InferError<ExtractMethodError<TQueueFn>, TDefaultError>, QueueTriggerInput<TQueueFn> & ResolvedQueueTriggerOptions<TSchema, TPlugins, TQueueFn, TDefaultError>, ResolveResultTypes<MergePluginResults<TPlugins>["queue"], ResolvedQueueOptions<TSchema, TPlugins, TQueueFn, TDefaultError> & InjectQueueOptions>>;
538
364
  };
539
- interface BaseReadResult<TData, TError, TPluginResult = Record<string, unknown>, TTriggerOptions = {
540
- force?: boolean;
541
- }> {
542
- data: Signal<TData | undefined>;
543
- error: Signal<TError | undefined>;
544
- loading: Signal<boolean>;
545
- fetching: Signal<boolean>;
546
- meta: Signal<TPluginResult>;
547
- abort: () => void;
548
- /**
549
- * Manually trigger a fetch.
550
- *
551
- * @param options - Optional override options (query, body, params) to use for this specific request
552
- */
553
- trigger: (options?: TTriggerOptions) => Promise<SpooshResponse<TData, TError>>;
554
- }
555
- type ReadApiClient<TSchema, TDefaultError> = ReadClient<TSchema, TDefaultError>;
556
-
557
- declare function createInjectRead<TSchema, TDefaultError, TPlugins extends readonly SpooshPlugin<PluginTypeConfig>[]>(options: Omit<SpooshInstanceShape<unknown, TSchema, TDefaultError, TPlugins>, "_types">): <TReadFn extends (api: ReadApiClient<TSchema, TDefaultError>) => Promise<{
558
- data?: unknown;
559
- error?: unknown;
560
- }>, TReadOpts extends BaseReadOptions & ResolveTypes<((TPlugins[number] extends infer T_3 ? T_3 extends TPlugins[number] ? T_3 extends SpooshPlugin<infer Types_1 extends PluginTypeConfig> ? Types_1 extends {
561
- readOptions: infer R_3;
562
- } ? R_3 : object : object : never : never) extends infer T_4 ? T_4 extends (TPlugins[number] extends infer T_5 ? T_5 extends TPlugins[number] ? T_5 extends SpooshPlugin<infer Types_1 extends PluginTypeConfig> ? Types_1 extends {
563
- readOptions: infer R_3;
564
- } ? R_3 : object : object : never : never) ? T_4 extends unknown ? (x: T_4) => void : never : never : never) extends (x: infer I) => void ? I : never, ResolverContext<TSchema, TReadFn extends (...args: never[]) => infer R ? Extract<Awaited<R>, {
565
- data: unknown;
566
- error?: undefined;
567
- }> extends {
568
- data: infer D;
569
- } ? D : unknown : unknown, unknown extends (TReadFn extends (...args: never[]) => infer R_1 ? Extract<Awaited<R_1>, {
570
- error: unknown;
571
- data?: undefined;
572
- }> extends {
573
- error: infer E;
574
- } ? E : unknown : unknown) ? TDefaultError : TReadFn extends (...args: never[]) => infer R_1 ? Extract<Awaited<R_1>, {
575
- error: unknown;
576
- data?: undefined;
577
- }> extends {
578
- error: infer E;
579
- } ? E : unknown : unknown>> = BaseReadOptions & ResolveTypes<((TPlugins[number] extends infer T_6 ? T_6 extends TPlugins[number] ? T_6 extends SpooshPlugin<infer Types_1 extends PluginTypeConfig> ? Types_1 extends {
580
- readOptions: infer R_3;
581
- } ? R_3 : object : object : never : never) extends infer T_7 ? T_7 extends (TPlugins[number] extends infer T_8 ? T_8 extends TPlugins[number] ? T_8 extends SpooshPlugin<infer Types_1 extends PluginTypeConfig> ? Types_1 extends {
582
- readOptions: infer R_3;
583
- } ? R_3 : object : object : never : never) ? T_7 extends unknown ? (x: T_7) => void : never : never : never) extends (x: infer I) => void ? I : never, ResolverContext<TSchema, TReadFn extends (...args: never[]) => infer R ? Extract<Awaited<R>, {
584
- data: unknown;
585
- error?: undefined;
586
- }> extends {
587
- data: infer D;
588
- } ? D : unknown : unknown, unknown extends (TReadFn extends (...args: never[]) => infer R_1 ? Extract<Awaited<R_1>, {
589
- error: unknown;
590
- data?: undefined;
591
- }> extends {
592
- error: infer E;
593
- } ? E : unknown : unknown) ? TDefaultError : TReadFn extends (...args: never[]) => infer R_1 ? Extract<Awaited<R_1>, {
594
- error: unknown;
595
- data?: undefined;
596
- }> extends {
597
- error: infer E;
598
- } ? E : unknown : unknown>>>(readFn: TReadFn, readOptions?: TReadOpts) => BaseReadResult<TReadFn extends (...args: never[]) => infer R ? Extract<Awaited<R>, {
599
- data: unknown;
600
- error?: undefined;
601
- }> extends {
602
- data: infer D;
603
- } ? D : unknown : unknown, unknown extends (TReadFn extends (...args: never[]) => infer R_1 ? Extract<Awaited<R_1>, {
604
- error: unknown;
605
- data?: undefined;
606
- }> extends {
607
- error: infer E;
608
- } ? E : unknown : unknown) ? TDefaultError : TReadFn extends (...args: never[]) => infer R_1 ? Extract<Awaited<R_1>, {
609
- error: unknown;
610
- data?: undefined;
611
- }> extends {
612
- error: infer E;
613
- } ? E : unknown : unknown, ResolveResultTypes<((TPlugins[number] extends infer T ? T extends TPlugins[number] ? T extends SpooshPlugin<infer Types extends PluginTypeConfig> ? Types extends {
614
- readResult: infer R_2;
615
- } ? R_2 : object : object : never : never) extends infer T_1 ? T_1 extends (TPlugins[number] extends infer T_2 ? T_2 extends TPlugins[number] ? T_2 extends SpooshPlugin<infer Types extends PluginTypeConfig> ? Types extends {
616
- readResult: infer R_2;
617
- } ? R_2 : object : object : never : never) ? T_1 extends unknown ? (x: T_1) => void : never : never : never) extends (x: infer I) => void ? I : never, TReadOpts>, TriggerOptions<TReadFn>> & ResponseInputFields<ExtractResponseQuery<TReadFn>, ExtractResponseBody<TReadFn>, ExtractResponseParamNames<TReadFn>>;
618
-
365
+ type InjectPagesFn<TDefaultError, TSchema, TPlugins extends PluginArray> = <TReadFn extends (api: PagesApiClient<TSchema, TDefaultError>) => Promise<SpooshResponse<unknown, unknown>>, TRequest extends InfiniteRequestOptions = InfiniteRequestOptions, TItem = unknown>(readFn: TReadFn, readOptions: BasePagesOptions<ExtractMethodData<TReadFn>, TItem, InferError<ExtractMethodError<TReadFn>, TDefaultError>, TRequest, MergePluginResults<TPlugins>["read"]> & ResolveTypes<MergePluginOptions<TPlugins>["pages"], PagesResolverContext<TSchema, TReadFn, TDefaultError>>) => BasePagesResult<ExtractMethodData<TReadFn>, InferError<ExtractMethodError<TReadFn>, TDefaultError>, TItem, MergePluginResults<TPlugins>["read"], PagesTriggerOptions<TReadFn>>;
619
366
  type SpooshAngularFunctions<TDefaultError, TSchema, TPlugins extends PluginArray> = {
620
- injectRead: ReturnType<typeof createInjectRead<TSchema, TDefaultError, TPlugins>>;
621
- injectWrite: ReturnType<typeof createInjectWrite<TSchema, TDefaultError, TPlugins>>;
622
- injectPages: ReturnType<typeof createInjectPages<TSchema, TDefaultError, TPlugins>>;
623
- injectQueue: ReturnType<typeof createInjectQueue<TSchema, TDefaultError, TPlugins>>;
624
- } & MergePluginInstanceApi<TPlugins, TSchema>;
367
+ injectRead: InjectReadFn<TDefaultError, TSchema, TPlugins>;
368
+ injectWrite: InjectWriteFn<TDefaultError, TSchema, TPlugins>;
369
+ injectPages: InjectPagesFn<TDefaultError, TSchema, TPlugins>;
370
+ injectQueue: InjectQueueFn<TDefaultError, TSchema, TPlugins>;
371
+ } & MergePluginApi<TPlugins, TSchema>;
625
372
 
626
373
  declare function create<TSchema, TDefaultError, TPlugins extends PluginArray, TApi>(instance: SpooshInstanceShape<TApi, TSchema, TDefaultError, TPlugins>): SpooshAngularFunctions<TDefaultError, TSchema, TPlugins>;
627
374
 
628
- export { type AngularOptionsMap, type BasePagesOptions, type BasePagesResult, type BaseQueueResult, type BaseReadOptions, type BaseReadResult, type BaseWriteResult, type EnabledOption, type ExtractMethodBody, type ExtractMethodData, type ExtractMethodError, type ExtractMethodOptions, type ExtractMethodQuery, type ExtractResponseBody, type ExtractResponseParamNames, type ExtractResponseQuery, type InjectQueueOptions, type PagesApiClient, type PagesTriggerOptions, type QueueApiClient, type QueueTriggerInput, type ReadApiClient, type ResponseInputFields, type SpooshInstanceShape, type TriggerOptions, type WriteApiClient, type WriteResponseInputFields, create };
375
+ export { type AngularOptionsMap, type BasePagesOptions, type BasePagesResult, type BaseQueueResult, type BaseReadOptions, type BaseReadResult, type BaseWriteResult, type EnabledOption, type ExtractMethodBody, type ExtractMethodData, type ExtractMethodError, type ExtractMethodOptions, type ExtractMethodQuery, type ExtractResponseBody, type ExtractResponseParamNames, type ExtractResponseQuery, type InjectQueueOptions, type PagesApiClient, type PagesTriggerOptions, type QueueApiClient, type QueueTriggerInput, type ReadApiClient, type ResponseInputFields, type SpooshInstanceShape, type TriggerOptions, type WriteApiClient, type WriteResponseInputFields, type WriteTriggerInput, create };