@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.mts DELETED
@@ -1,628 +0,0 @@
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';
3
- import { Signal } from '@angular/core';
4
-
5
- type TriggerAwaitedReturn$2<T> = T extends (...args: any[]) => infer R ? Awaited<R> : never;
6
- type ExtractInputFromResponse$3<T> = T extends {
7
- input: infer I;
8
- } ? I : never;
9
- type ExtractTriggerQuery$1<I> = I extends {
10
- query: infer Q;
11
- } ? undefined extends Q ? {
12
- query?: Exclude<Q, undefined>;
13
- } : {
14
- query: Q;
15
- } : unknown;
16
- type ExtractTriggerBody$1<I> = I extends {
17
- body: infer B;
18
- } ? undefined extends B ? {
19
- body?: Exclude<B, undefined> | SpooshBody<Exclude<B, undefined>>;
20
- } : {
21
- body: B | SpooshBody<B>;
22
- } : unknown;
23
- type ExtractTriggerParams$1<I> = I extends {
24
- params: infer P;
25
- } ? {
26
- params: P;
27
- } : unknown;
28
- type QueueTriggerBase = {
29
- /** Custom ID for this queue item. If not provided, one will be auto-generated. */
30
- id?: string;
31
- };
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;
33
- /**
34
- * Options for injectQueue.
35
- */
36
- interface InjectQueueOptions {
37
- /** Maximum concurrent operations. Defaults to 3. */
38
- concurrency?: number;
39
- }
40
- /**
41
- * Result returned by injectQueue.
42
- *
43
- * @template TData - The response data type
44
- * @template TError - The error type
45
- * @template TTriggerInput - The trigger input type
46
- * @template TMeta - Plugin-contributed metadata on queue items
47
- */
48
- interface BaseQueueResult<TData, TError, TTriggerInput, TMeta = object> {
49
- /** Add item to queue and execute. Returns promise for this item. */
50
- trigger: (input?: TTriggerInput) => Promise<SpooshResponse<TData, TError>>;
51
- /** All tasks in queue with their current status */
52
- tasks: Signal<QueueItem<TData, TError, TMeta>[]>;
53
- /** Queue statistics (pending/running/settled/success/failed/total/percentage) */
54
- stats: Signal<QueueStats>;
55
- /** Abort task by ID, or all tasks if no ID */
56
- abort: (id?: string) => void;
57
- /** Retry failed task by ID, or all failed if no ID */
58
- retry: (id?: string) => Promise<void>;
59
- /** Remove specific task by ID (aborts if active) */
60
- remove: (id: string) => void;
61
- /** Remove all settled tasks (success, error, aborted). Keeps pending/running. */
62
- removeSettled: () => void;
63
- /** Abort all and clear queue */
64
- clear: () => void;
65
- /** Update concurrency limit */
66
- setConcurrency: (concurrency: number) => void;
67
- }
68
- /**
69
- * API client type for queue selector.
70
- * Supports all HTTP methods (GET, POST, PUT, PATCH, DELETE).
71
- */
72
- type QueueApiClient<TSchema, TDefaultError> = QueueSelectorClient<TSchema, TDefaultError>;
73
-
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 {
209
- input: infer I;
210
- } ? I : never;
211
- type BaseTriggerOptions = {
212
- /** Bypass cache and force refetch. Default: true */
213
- force?: boolean;
214
- };
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;
216
- /**
217
- * Options for `injectPages`.
218
- *
219
- * @template TData - The response data type for each page
220
- * @template TItem - The item type after merging all pages
221
- * @template TError - The error type
222
- * @template TRequest - The request options type
223
- * @template TMeta - Plugin metadata type
224
- */
225
- interface BasePagesOptions<TData, TItem, TError = unknown, TRequest = object, TMeta = Record<string, unknown>> extends TagOptions {
226
- enabled?: EnabledOption;
227
- /**
228
- * Callback to determine if there's a next page to fetch.
229
- * Receives the last page to check for pagination indicators.
230
- * Default: `() => false` (no next page fetching)
231
- *
232
- * @example
233
- * ```ts
234
- * canFetchNext: ({ lastPage }) => lastPage?.data?.nextCursor != null
235
- * ```
236
- */
237
- canFetchNext?: (ctx: InfiniteNextContext<TData, TError, TRequest, TMeta>) => boolean;
238
- /**
239
- * Callback to determine if there's a previous page to fetch.
240
- * Receives the first page to check for pagination indicators.
241
- * Default: `() => false` (no previous page fetching)
242
- */
243
- canFetchPrev?: (ctx: InfinitePrevContext<TData, TError, TRequest, TMeta>) => boolean;
244
- /**
245
- * Callback to build the request options for the next page.
246
- * Return only the fields that change - they will be **merged** with the initial request.
247
- * Default: `() => ({})` (no changes to request)
248
- *
249
- * @example
250
- * ```ts
251
- * // Initial: { query: { cursor: 0, limit: 10 } }
252
- * // Only return cursor - limit is preserved automatically
253
- * nextPageRequest: ({ lastPage }) => ({
254
- * query: { cursor: lastPage?.data?.nextCursor }
255
- * })
256
- * ```
257
- */
258
- nextPageRequest?: (ctx: InfiniteNextContext<TData, TError, TRequest, TMeta>) => Partial<TRequest>;
259
- /**
260
- * Callback to build the request options for the previous page.
261
- * Return only the fields that change - they will be **merged** with the initial request.
262
- */
263
- prevPageRequest?: (ctx: InfinitePrevContext<TData, TError, TRequest, TMeta>) => Partial<TRequest>;
264
- /**
265
- * Callback to merge all pages into a single array of items.
266
- *
267
- * @example
268
- * ```ts
269
- * merger: (pages) => pages.flatMap(p => p.data?.items ?? [])
270
- * ```
271
- */
272
- merger: (pages: InfinitePage<TData, TError, TMeta>[]) => TItem[];
273
- }
274
- /**
275
- * Result returned by `injectPages`.
276
- *
277
- * @template TData - The response data type for each page
278
- * @template TError - The error type
279
- * @template TItem - The item type after merging all pages
280
- * @template TPluginResult - Plugin-provided result fields
281
- * @template TTriggerOptions - Options that can be passed to trigger()
282
- */
283
- interface BasePagesResult<TData, TError, TItem, TPluginResult = Record<string, unknown>, TTriggerOptions = object> {
284
- /** Merged items from all fetched pages */
285
- data: Signal<TItem[] | undefined>;
286
- /** Array of all pages with status, data, error, and meta per page */
287
- pages: Signal<InfinitePage<TData, TError, TPluginResult>[]>;
288
- /** Error from the last failed request */
289
- error: Signal<TError | undefined>;
290
- /** True during the initial load (no data yet) */
291
- loading: Signal<boolean>;
292
- /** True during any fetch operation */
293
- fetching: Signal<boolean>;
294
- /** True while fetching the next page */
295
- fetchingNext: Signal<boolean>;
296
- /** True while fetching the previous page */
297
- fetchingPrev: Signal<boolean>;
298
- /** Whether there's a next page available to fetch */
299
- canFetchNext: Signal<boolean>;
300
- /** Whether there's a previous page available to fetch */
301
- canFetchPrev: Signal<boolean>;
302
- /** Fetch the next page */
303
- fetchNext: () => Promise<void>;
304
- /** Fetch the previous page */
305
- fetchPrev: () => Promise<void>;
306
- /** Trigger refetch of all pages from the beginning, optionally with new request options */
307
- trigger: (options?: TTriggerOptions) => Promise<void>;
308
- /** Abort the current fetch operation */
309
- abort: () => void;
310
- }
311
- type PagesApiClient<TSchema, TDefaultError> = ReadClient<TSchema, TDefaultError>;
312
-
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;
510
- };
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>;
518
- };
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>;
526
- };
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;
538
- };
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
-
619
- 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>;
625
-
626
- declare function create<TSchema, TDefaultError, TPlugins extends PluginArray, TApi>(instance: SpooshInstanceShape<TApi, TSchema, TDefaultError, TPlugins>): SpooshAngularFunctions<TDefaultError, TSchema, TPlugins>;
627
-
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 };