@spoosh/angular 0.6.0 → 0.6.2
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/README.md +1 -1
- package/dist/index.d.mts +133 -128
- package/dist/index.d.ts +133 -128
- package/dist/index.js +26 -3
- package/dist/index.mjs +26 -3
- package/package.json +7 -5
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Angular signals integration for Spoosh - `injectRead`, `injectWrite`, and `injectInfiniteRead`.
|
|
4
4
|
|
|
5
|
-
**[Documentation](https://spoosh.dev/docs/
|
|
5
|
+
**[Documentation](https://spoosh.dev/docs/angular)** · **Requirements:** TypeScript >= 5.0, Angular >= 16.0
|
|
6
6
|
|
|
7
7
|
## Installation
|
|
8
8
|
|
package/dist/index.d.mts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as _spoosh_core from '@spoosh/core';
|
|
2
|
-
import { PluginArray, StateManager, EventEmitter, PluginExecutor,
|
|
2
|
+
import { PluginArray, StateManager, EventEmitter, PluginExecutor, MethodOptionsMap, CoreRequestOptionsBase, ReadClient, TagOptions, SpooshPlugin, PluginTypeConfig, SpooshResponse, InfiniteRequestOptions, ResolveTypes, ResolverContext, WriteClient, ResolveResultTypes, MergePluginInstanceApi } from '@spoosh/core';
|
|
3
3
|
import { Signal } from '@angular/core';
|
|
4
4
|
|
|
5
5
|
interface SpooshInstanceShape<TApi, TSchema, TDefaultError, TPlugins extends PluginArray> {
|
|
@@ -14,33 +14,10 @@ interface SpooshInstanceShape<TApi, TSchema, TDefaultError, TPlugins extends Plu
|
|
|
14
14
|
};
|
|
15
15
|
}
|
|
16
16
|
type EnabledOption = boolean | (() => boolean);
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
force?: boolean;
|
|
22
|
-
}> {
|
|
23
|
-
data: Signal<TData | undefined>;
|
|
24
|
-
error: Signal<TError | undefined>;
|
|
25
|
-
loading: Signal<boolean>;
|
|
26
|
-
fetching: Signal<boolean>;
|
|
27
|
-
meta: Signal<TPluginResult>;
|
|
28
|
-
abort: () => void;
|
|
29
|
-
/**
|
|
30
|
-
* Manually trigger a fetch.
|
|
31
|
-
*
|
|
32
|
-
* @param options - Optional override options (query, body, params) to use for this specific request
|
|
33
|
-
*/
|
|
34
|
-
trigger: (options?: TTriggerOptions) => Promise<SpooshResponse<TData, TError>>;
|
|
35
|
-
}
|
|
36
|
-
interface BaseWriteResult<TData, TError, TOptions, TPluginResult = Record<string, unknown>> {
|
|
37
|
-
trigger: (options?: TOptions) => Promise<SpooshResponse<TData, TError>>;
|
|
38
|
-
data: Signal<TData | undefined>;
|
|
39
|
-
error: Signal<TError | undefined>;
|
|
40
|
-
loading: Signal<boolean>;
|
|
41
|
-
meta: Signal<TPluginResult>;
|
|
42
|
-
abort: () => void;
|
|
43
|
-
}
|
|
17
|
+
type QueryRequestOptions = CoreRequestOptionsBase;
|
|
18
|
+
type MutationRequestOptions = CoreRequestOptionsBase;
|
|
19
|
+
type AngularOptionsMap = MethodOptionsMap<QueryRequestOptions, MutationRequestOptions>;
|
|
20
|
+
|
|
44
21
|
type PageContext<TData, TRequest> = {
|
|
45
22
|
response: TData | undefined;
|
|
46
23
|
allResponses: TData[];
|
|
@@ -70,32 +47,54 @@ interface BaseInfiniteReadResult<TData, TError, TItem, TPluginResult = Record<st
|
|
|
70
47
|
trigger: () => Promise<void>;
|
|
71
48
|
abort: () => void;
|
|
72
49
|
}
|
|
73
|
-
type
|
|
74
|
-
|
|
75
|
-
type
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
} : {
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
}
|
|
50
|
+
type InfiniteReadApiClient<TSchema, TDefaultError> = ReadClient<TSchema, TDefaultError>;
|
|
51
|
+
|
|
52
|
+
type AnyInfiniteRequestOptions = InfiniteRequestOptions;
|
|
53
|
+
declare function createInjectInfiniteRead<TSchema, TDefaultError, TPlugins extends readonly SpooshPlugin<PluginTypeConfig>[]>(options: Omit<SpooshInstanceShape<unknown, TSchema, TDefaultError, TPlugins>, "_types">): <TReadFn extends (api: InfiniteReadApiClient<TSchema, TDefaultError>) => Promise<SpooshResponse<unknown, unknown>>, TRequest extends AnyInfiniteRequestOptions = AnyInfiniteRequestOptions, TItem = unknown>(readFn: TReadFn, readOptions: BaseInfiniteReadOptions<TReadFn extends (...args: never[]) => infer R ? Extract<Awaited<R>, {
|
|
54
|
+
data: unknown;
|
|
55
|
+
error?: undefined;
|
|
56
|
+
}> extends {
|
|
57
|
+
data: infer D;
|
|
58
|
+
} ? D : unknown : unknown, TItem, TRequest> & ResolveTypes<((TPlugins[number] extends infer T_3 ? T_3 extends TPlugins[number] ? T_3 extends SpooshPlugin<infer Types_1 extends PluginTypeConfig> ? Types_1 extends {
|
|
59
|
+
readOptions: infer R_3;
|
|
60
|
+
} ? 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 {
|
|
61
|
+
readOptions: infer R_3;
|
|
62
|
+
} ? 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>, {
|
|
63
|
+
data: unknown;
|
|
64
|
+
error?: undefined;
|
|
65
|
+
}> extends {
|
|
66
|
+
data: infer D;
|
|
67
|
+
} ? D : unknown : unknown, [TReadFn extends (...args: never[]) => infer R_1 ? Extract<Awaited<R_1>, {
|
|
68
|
+
error: unknown;
|
|
69
|
+
data?: undefined;
|
|
70
|
+
}> extends {
|
|
71
|
+
error: infer E;
|
|
72
|
+
} ? E : unknown : unknown] extends [unknown] ? TDefaultError : TReadFn extends (...args: never[]) => infer R_1 ? Extract<Awaited<R_1>, {
|
|
73
|
+
error: unknown;
|
|
74
|
+
data?: undefined;
|
|
75
|
+
}> extends {
|
|
76
|
+
error: infer E;
|
|
77
|
+
} ? E : unknown : unknown>>) => BaseInfiniteReadResult<TReadFn extends (...args: never[]) => infer R ? Extract<Awaited<R>, {
|
|
78
|
+
data: unknown;
|
|
79
|
+
error?: undefined;
|
|
80
|
+
}> extends {
|
|
81
|
+
data: infer D;
|
|
82
|
+
} ? D : unknown : unknown, [TReadFn extends (...args: never[]) => infer R_1 ? Extract<Awaited<R_1>, {
|
|
83
|
+
error: unknown;
|
|
84
|
+
data?: undefined;
|
|
85
|
+
}> extends {
|
|
86
|
+
error: infer E;
|
|
87
|
+
} ? E : unknown : unknown] extends [unknown] ? TDefaultError : TReadFn extends (...args: never[]) => infer R_1 ? Extract<Awaited<R_1>, {
|
|
88
|
+
error: unknown;
|
|
89
|
+
data?: undefined;
|
|
90
|
+
}> extends {
|
|
91
|
+
error: infer E;
|
|
92
|
+
} ? E : unknown : unknown, TItem, ((TPlugins[number] extends infer T ? T extends TPlugins[number] ? T extends SpooshPlugin<infer Types extends PluginTypeConfig> ? Types extends {
|
|
93
|
+
readResult: infer R_2;
|
|
94
|
+
} ? 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 {
|
|
95
|
+
readResult: infer R_2;
|
|
96
|
+
} ? R_2 : object : object : never : never) ? T_1 extends unknown ? (x: T_1) => void : never : never : never) extends (x: infer I) => void ? I : never>;
|
|
97
|
+
|
|
99
98
|
type OptionalQueryField<TQuery> = [TQuery] extends [never] ? object : undefined extends TQuery ? {
|
|
100
99
|
query?: Exclude<TQuery, undefined>;
|
|
101
100
|
} : {
|
|
@@ -115,6 +114,16 @@ type InputFields<TQuery, TBody, TParamNames extends string> = OptionalQueryField
|
|
|
115
114
|
type WriteResponseInputFields<TQuery, TBody, TParamNames extends string> = [TQuery, TBody, TParamNames] extends [never, never, never] ? object : {
|
|
116
115
|
input: Signal<InputFields<TQuery, TBody, TParamNames> | undefined>;
|
|
117
116
|
};
|
|
117
|
+
interface BaseWriteResult<TData, TError, TOptions, TPluginResult = Record<string, unknown>> {
|
|
118
|
+
trigger: (options?: TOptions) => Promise<SpooshResponse<TData, TError>>;
|
|
119
|
+
data: Signal<TData | undefined>;
|
|
120
|
+
error: Signal<TError | undefined>;
|
|
121
|
+
loading: Signal<boolean>;
|
|
122
|
+
meta: Signal<TPluginResult>;
|
|
123
|
+
abort: () => void;
|
|
124
|
+
}
|
|
125
|
+
type WriteApiClient<TSchema, TDefaultError> = WriteClient<TSchema, TDefaultError>;
|
|
126
|
+
|
|
118
127
|
type SuccessResponse<T> = Extract<T, {
|
|
119
128
|
data: unknown;
|
|
120
129
|
error?: undefined;
|
|
@@ -147,33 +156,6 @@ type ExtractResponseParamNames<T> = SuccessReturnType<T> extends {
|
|
|
147
156
|
params: Record<infer K, unknown>;
|
|
148
157
|
};
|
|
149
158
|
} ? K extends string ? K : never : never;
|
|
150
|
-
type AwaitedReturnTypeTrigger<T> = T extends (...args: never[]) => infer R ? Awaited<R> : never;
|
|
151
|
-
type ExtractInputFromResponse<T> = T extends {
|
|
152
|
-
input: infer I;
|
|
153
|
-
} ? I : never;
|
|
154
|
-
type ExtractTriggerQuery<I> = I extends {
|
|
155
|
-
query: infer Q;
|
|
156
|
-
} ? {
|
|
157
|
-
query?: Q;
|
|
158
|
-
} : unknown;
|
|
159
|
-
type ExtractTriggerBody<I> = I extends {
|
|
160
|
-
body: infer B;
|
|
161
|
-
} ? {
|
|
162
|
-
body?: B;
|
|
163
|
-
} : unknown;
|
|
164
|
-
type ExtractTriggerParams<I> = I extends {
|
|
165
|
-
params: infer P;
|
|
166
|
-
} ? {
|
|
167
|
-
params?: P;
|
|
168
|
-
} : unknown;
|
|
169
|
-
type TriggerOptions<T> = ExtractInputFromResponse<AwaitedReturnTypeTrigger<T>> extends infer I ? [I] extends [never] ? {
|
|
170
|
-
force?: boolean;
|
|
171
|
-
} : ExtractTriggerQuery<I> & ExtractTriggerBody<I> & ExtractTriggerParams<I> & {
|
|
172
|
-
/** Force refetch even if data is cached */
|
|
173
|
-
force?: boolean;
|
|
174
|
-
} : {
|
|
175
|
-
force?: boolean;
|
|
176
|
-
};
|
|
177
159
|
type ExtractMethodQuery<T> = ExtractMethodOptions<T> extends {
|
|
178
160
|
query: infer Q;
|
|
179
161
|
} ? Q : never;
|
|
@@ -181,52 +163,6 @@ type ExtractMethodBody<T> = ExtractMethodOptions<T> extends {
|
|
|
181
163
|
body: infer B;
|
|
182
164
|
} ? B : never;
|
|
183
165
|
|
|
184
|
-
type AnyInfiniteRequestOptions = InfiniteRequestOptions;
|
|
185
|
-
declare function createInjectInfiniteRead<TSchema, TDefaultError, TPlugins extends readonly SpooshPlugin<PluginTypeConfig>[]>(options: Omit<SpooshInstanceShape<unknown, TSchema, TDefaultError, TPlugins>, "_types">): <TReadFn extends (api: ReadApiClient<TSchema, TDefaultError>) => Promise<SpooshResponse<unknown, unknown>>, TRequest extends AnyInfiniteRequestOptions = AnyInfiniteRequestOptions, TItem = unknown>(readFn: TReadFn, readOptions: BaseInfiniteReadOptions<TReadFn extends (...args: never[]) => infer R ? Extract<Awaited<R>, {
|
|
186
|
-
data: unknown;
|
|
187
|
-
error?: undefined;
|
|
188
|
-
}> extends {
|
|
189
|
-
data: infer D;
|
|
190
|
-
} ? D : unknown : unknown, TItem, TRequest> & ResolveTypes<((TPlugins[number] extends infer T_3 ? T_3 extends TPlugins[number] ? T_3 extends SpooshPlugin<infer Types_1 extends PluginTypeConfig> ? Types_1 extends {
|
|
191
|
-
readOptions: infer R_3;
|
|
192
|
-
} ? 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 {
|
|
193
|
-
readOptions: infer R_3;
|
|
194
|
-
} ? 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>, {
|
|
195
|
-
data: unknown;
|
|
196
|
-
error?: undefined;
|
|
197
|
-
}> extends {
|
|
198
|
-
data: infer D;
|
|
199
|
-
} ? D : unknown : unknown, [TReadFn extends (...args: never[]) => infer R_1 ? Extract<Awaited<R_1>, {
|
|
200
|
-
error: unknown;
|
|
201
|
-
data?: undefined;
|
|
202
|
-
}> extends {
|
|
203
|
-
error: infer E;
|
|
204
|
-
} ? E : unknown : unknown] extends [unknown] ? TDefaultError : TReadFn extends (...args: never[]) => infer R_1 ? Extract<Awaited<R_1>, {
|
|
205
|
-
error: unknown;
|
|
206
|
-
data?: undefined;
|
|
207
|
-
}> extends {
|
|
208
|
-
error: infer E;
|
|
209
|
-
} ? E : unknown : unknown>>) => BaseInfiniteReadResult<TReadFn extends (...args: never[]) => infer R ? Extract<Awaited<R>, {
|
|
210
|
-
data: unknown;
|
|
211
|
-
error?: undefined;
|
|
212
|
-
}> extends {
|
|
213
|
-
data: infer D;
|
|
214
|
-
} ? D : unknown : unknown, [TReadFn extends (...args: never[]) => infer R_1 ? Extract<Awaited<R_1>, {
|
|
215
|
-
error: unknown;
|
|
216
|
-
data?: undefined;
|
|
217
|
-
}> extends {
|
|
218
|
-
error: infer E;
|
|
219
|
-
} ? E : unknown : unknown] extends [unknown] ? TDefaultError : TReadFn extends (...args: never[]) => infer R_1 ? Extract<Awaited<R_1>, {
|
|
220
|
-
error: unknown;
|
|
221
|
-
data?: undefined;
|
|
222
|
-
}> extends {
|
|
223
|
-
error: infer E;
|
|
224
|
-
} ? E : unknown : unknown, TItem, ((TPlugins[number] extends infer T ? T extends TPlugins[number] ? T extends SpooshPlugin<infer Types extends PluginTypeConfig> ? Types extends {
|
|
225
|
-
readResult: infer R_2;
|
|
226
|
-
} ? 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 {
|
|
227
|
-
readResult: infer R_2;
|
|
228
|
-
} ? R_2 : object : object : never : never) ? T_1 extends unknown ? (x: T_1) => void : never : never : never) extends (x: infer I) => void ? I : never>;
|
|
229
|
-
|
|
230
166
|
declare function createInjectWrite<TSchema, TDefaultError, TPlugins extends readonly SpooshPlugin<PluginTypeConfig>[]>(options: Omit<SpooshInstanceShape<unknown, TSchema, TDefaultError, TPlugins>, "_types">): <TMethod extends (...args: never[]) => Promise<SpooshResponse<unknown, unknown>>, TWriteOpts extends (TMethod extends (...args: infer A) => unknown ? A[0] : never) & _spoosh_core.ResolveTypes<((TPlugins[number] extends infer T_3 ? T_3 extends TPlugins[number] ? T_3 extends SpooshPlugin<infer Types_1 extends PluginTypeConfig> ? Types_1 extends {
|
|
231
167
|
writeOptions: infer W_1;
|
|
232
168
|
} ? W_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 {
|
|
@@ -286,6 +222,75 @@ declare function createInjectWrite<TSchema, TDefaultError, TPlugins extends read
|
|
|
286
222
|
writeResult: infer W;
|
|
287
223
|
} ? W : object : object : never : never) ? T_1 extends unknown ? (x: T_1) => void : never : never : never) extends (x: infer I) => void ? I : never, TWriteOpts>> & WriteResponseInputFields<ExtractResponseQuery<TMethod>, ExtractResponseBody<TMethod>, ExtractResponseParamNames<TMethod>>;
|
|
288
224
|
|
|
225
|
+
interface BaseReadOptions extends TagOptions {
|
|
226
|
+
enabled?: EnabledOption;
|
|
227
|
+
}
|
|
228
|
+
type QueryField<TQuery> = [TQuery] extends [never] ? object : undefined extends TQuery ? {
|
|
229
|
+
query?: Exclude<TQuery, undefined>;
|
|
230
|
+
} : {
|
|
231
|
+
query: TQuery;
|
|
232
|
+
};
|
|
233
|
+
type BodyField<TBody> = [TBody] extends [never] ? object : undefined extends TBody ? {
|
|
234
|
+
body?: Exclude<TBody, undefined>;
|
|
235
|
+
} : {
|
|
236
|
+
body: TBody;
|
|
237
|
+
};
|
|
238
|
+
type ParamsField<TParamNames extends string> = [TParamNames] extends [never] ? object : {
|
|
239
|
+
params: Record<TParamNames, string | number>;
|
|
240
|
+
};
|
|
241
|
+
type ReadInputFields<TQuery, TBody, TParamNames extends string> = QueryField<TQuery> & BodyField<TBody> & ParamsField<TParamNames>;
|
|
242
|
+
type ResponseInputFields<TQuery, TBody, TParamNames extends string> = [
|
|
243
|
+
TQuery,
|
|
244
|
+
TBody,
|
|
245
|
+
TParamNames
|
|
246
|
+
] extends [never, never, never] ? object : {
|
|
247
|
+
input: ReadInputFields<TQuery, TBody, TParamNames>;
|
|
248
|
+
};
|
|
249
|
+
type AwaitedReturnTypeTrigger<T> = T extends (...args: never[]) => infer R ? Awaited<R> : never;
|
|
250
|
+
type ExtractInputFromResponse<T> = T extends {
|
|
251
|
+
input: infer I;
|
|
252
|
+
} ? I : never;
|
|
253
|
+
type ExtractTriggerQuery<I> = I extends {
|
|
254
|
+
query: infer Q;
|
|
255
|
+
} ? {
|
|
256
|
+
query?: Q;
|
|
257
|
+
} : unknown;
|
|
258
|
+
type ExtractTriggerBody<I> = I extends {
|
|
259
|
+
body: infer B;
|
|
260
|
+
} ? {
|
|
261
|
+
body?: B;
|
|
262
|
+
} : unknown;
|
|
263
|
+
type ExtractTriggerParams<I> = I extends {
|
|
264
|
+
params: infer P;
|
|
265
|
+
} ? {
|
|
266
|
+
params?: P;
|
|
267
|
+
} : unknown;
|
|
268
|
+
type TriggerOptions<T> = ExtractInputFromResponse<AwaitedReturnTypeTrigger<T>> extends infer I ? [I] extends [never] ? {
|
|
269
|
+
force?: boolean;
|
|
270
|
+
} : ExtractTriggerQuery<I> & ExtractTriggerBody<I> & ExtractTriggerParams<I> & {
|
|
271
|
+
/** Force refetch even if data is cached */
|
|
272
|
+
force?: boolean;
|
|
273
|
+
} : {
|
|
274
|
+
force?: boolean;
|
|
275
|
+
};
|
|
276
|
+
interface BaseReadResult<TData, TError, TPluginResult = Record<string, unknown>, TTriggerOptions = {
|
|
277
|
+
force?: boolean;
|
|
278
|
+
}> {
|
|
279
|
+
data: Signal<TData | undefined>;
|
|
280
|
+
error: Signal<TError | undefined>;
|
|
281
|
+
loading: Signal<boolean>;
|
|
282
|
+
fetching: Signal<boolean>;
|
|
283
|
+
meta: Signal<TPluginResult>;
|
|
284
|
+
abort: () => void;
|
|
285
|
+
/**
|
|
286
|
+
* Manually trigger a fetch.
|
|
287
|
+
*
|
|
288
|
+
* @param options - Optional override options (query, body, params) to use for this specific request
|
|
289
|
+
*/
|
|
290
|
+
trigger: (options?: TTriggerOptions) => Promise<SpooshResponse<TData, TError>>;
|
|
291
|
+
}
|
|
292
|
+
type ReadApiClient<TSchema, TDefaultError> = ReadClient<TSchema, TDefaultError>;
|
|
293
|
+
|
|
289
294
|
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<{
|
|
290
295
|
data?: unknown;
|
|
291
296
|
error?: unknown;
|
|
@@ -356,4 +361,4 @@ type SpooshAngularFunctions<TDefaultError, TSchema, TPlugins extends PluginArray
|
|
|
356
361
|
|
|
357
362
|
declare function createAngularSpoosh<TSchema, TDefaultError, TPlugins extends PluginArray, TApi>(instance: SpooshInstanceShape<TApi, TSchema, TDefaultError, TPlugins>): SpooshAngularFunctions<TDefaultError, TSchema, TPlugins>;
|
|
358
363
|
|
|
359
|
-
export { type AngularOptionsMap, type BaseInfiniteReadOptions, type BaseInfiniteReadResult, 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 PageContext, type ReadApiClient, type ResponseInputFields, type SpooshInstanceShape, type TriggerOptions, type WriteApiClient, type WriteResponseInputFields, createAngularSpoosh };
|
|
364
|
+
export { type AngularOptionsMap, type BaseInfiniteReadOptions, type BaseInfiniteReadResult, 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 InfiniteReadApiClient, type PageContext, type ReadApiClient, type ResponseInputFields, type SpooshInstanceShape, type TriggerOptions, type WriteApiClient, type WriteResponseInputFields, createAngularSpoosh };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as _spoosh_core from '@spoosh/core';
|
|
2
|
-
import { PluginArray, StateManager, EventEmitter, PluginExecutor,
|
|
2
|
+
import { PluginArray, StateManager, EventEmitter, PluginExecutor, MethodOptionsMap, CoreRequestOptionsBase, ReadClient, TagOptions, SpooshPlugin, PluginTypeConfig, SpooshResponse, InfiniteRequestOptions, ResolveTypes, ResolverContext, WriteClient, ResolveResultTypes, MergePluginInstanceApi } from '@spoosh/core';
|
|
3
3
|
import { Signal } from '@angular/core';
|
|
4
4
|
|
|
5
5
|
interface SpooshInstanceShape<TApi, TSchema, TDefaultError, TPlugins extends PluginArray> {
|
|
@@ -14,33 +14,10 @@ interface SpooshInstanceShape<TApi, TSchema, TDefaultError, TPlugins extends Plu
|
|
|
14
14
|
};
|
|
15
15
|
}
|
|
16
16
|
type EnabledOption = boolean | (() => boolean);
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
force?: boolean;
|
|
22
|
-
}> {
|
|
23
|
-
data: Signal<TData | undefined>;
|
|
24
|
-
error: Signal<TError | undefined>;
|
|
25
|
-
loading: Signal<boolean>;
|
|
26
|
-
fetching: Signal<boolean>;
|
|
27
|
-
meta: Signal<TPluginResult>;
|
|
28
|
-
abort: () => void;
|
|
29
|
-
/**
|
|
30
|
-
* Manually trigger a fetch.
|
|
31
|
-
*
|
|
32
|
-
* @param options - Optional override options (query, body, params) to use for this specific request
|
|
33
|
-
*/
|
|
34
|
-
trigger: (options?: TTriggerOptions) => Promise<SpooshResponse<TData, TError>>;
|
|
35
|
-
}
|
|
36
|
-
interface BaseWriteResult<TData, TError, TOptions, TPluginResult = Record<string, unknown>> {
|
|
37
|
-
trigger: (options?: TOptions) => Promise<SpooshResponse<TData, TError>>;
|
|
38
|
-
data: Signal<TData | undefined>;
|
|
39
|
-
error: Signal<TError | undefined>;
|
|
40
|
-
loading: Signal<boolean>;
|
|
41
|
-
meta: Signal<TPluginResult>;
|
|
42
|
-
abort: () => void;
|
|
43
|
-
}
|
|
17
|
+
type QueryRequestOptions = CoreRequestOptionsBase;
|
|
18
|
+
type MutationRequestOptions = CoreRequestOptionsBase;
|
|
19
|
+
type AngularOptionsMap = MethodOptionsMap<QueryRequestOptions, MutationRequestOptions>;
|
|
20
|
+
|
|
44
21
|
type PageContext<TData, TRequest> = {
|
|
45
22
|
response: TData | undefined;
|
|
46
23
|
allResponses: TData[];
|
|
@@ -70,32 +47,54 @@ interface BaseInfiniteReadResult<TData, TError, TItem, TPluginResult = Record<st
|
|
|
70
47
|
trigger: () => Promise<void>;
|
|
71
48
|
abort: () => void;
|
|
72
49
|
}
|
|
73
|
-
type
|
|
74
|
-
|
|
75
|
-
type
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
} : {
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
}
|
|
50
|
+
type InfiniteReadApiClient<TSchema, TDefaultError> = ReadClient<TSchema, TDefaultError>;
|
|
51
|
+
|
|
52
|
+
type AnyInfiniteRequestOptions = InfiniteRequestOptions;
|
|
53
|
+
declare function createInjectInfiniteRead<TSchema, TDefaultError, TPlugins extends readonly SpooshPlugin<PluginTypeConfig>[]>(options: Omit<SpooshInstanceShape<unknown, TSchema, TDefaultError, TPlugins>, "_types">): <TReadFn extends (api: InfiniteReadApiClient<TSchema, TDefaultError>) => Promise<SpooshResponse<unknown, unknown>>, TRequest extends AnyInfiniteRequestOptions = AnyInfiniteRequestOptions, TItem = unknown>(readFn: TReadFn, readOptions: BaseInfiniteReadOptions<TReadFn extends (...args: never[]) => infer R ? Extract<Awaited<R>, {
|
|
54
|
+
data: unknown;
|
|
55
|
+
error?: undefined;
|
|
56
|
+
}> extends {
|
|
57
|
+
data: infer D;
|
|
58
|
+
} ? D : unknown : unknown, TItem, TRequest> & ResolveTypes<((TPlugins[number] extends infer T_3 ? T_3 extends TPlugins[number] ? T_3 extends SpooshPlugin<infer Types_1 extends PluginTypeConfig> ? Types_1 extends {
|
|
59
|
+
readOptions: infer R_3;
|
|
60
|
+
} ? 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 {
|
|
61
|
+
readOptions: infer R_3;
|
|
62
|
+
} ? 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>, {
|
|
63
|
+
data: unknown;
|
|
64
|
+
error?: undefined;
|
|
65
|
+
}> extends {
|
|
66
|
+
data: infer D;
|
|
67
|
+
} ? D : unknown : unknown, [TReadFn extends (...args: never[]) => infer R_1 ? Extract<Awaited<R_1>, {
|
|
68
|
+
error: unknown;
|
|
69
|
+
data?: undefined;
|
|
70
|
+
}> extends {
|
|
71
|
+
error: infer E;
|
|
72
|
+
} ? E : unknown : unknown] extends [unknown] ? TDefaultError : TReadFn extends (...args: never[]) => infer R_1 ? Extract<Awaited<R_1>, {
|
|
73
|
+
error: unknown;
|
|
74
|
+
data?: undefined;
|
|
75
|
+
}> extends {
|
|
76
|
+
error: infer E;
|
|
77
|
+
} ? E : unknown : unknown>>) => BaseInfiniteReadResult<TReadFn extends (...args: never[]) => infer R ? Extract<Awaited<R>, {
|
|
78
|
+
data: unknown;
|
|
79
|
+
error?: undefined;
|
|
80
|
+
}> extends {
|
|
81
|
+
data: infer D;
|
|
82
|
+
} ? D : unknown : unknown, [TReadFn extends (...args: never[]) => infer R_1 ? Extract<Awaited<R_1>, {
|
|
83
|
+
error: unknown;
|
|
84
|
+
data?: undefined;
|
|
85
|
+
}> extends {
|
|
86
|
+
error: infer E;
|
|
87
|
+
} ? E : unknown : unknown] extends [unknown] ? TDefaultError : TReadFn extends (...args: never[]) => infer R_1 ? Extract<Awaited<R_1>, {
|
|
88
|
+
error: unknown;
|
|
89
|
+
data?: undefined;
|
|
90
|
+
}> extends {
|
|
91
|
+
error: infer E;
|
|
92
|
+
} ? E : unknown : unknown, TItem, ((TPlugins[number] extends infer T ? T extends TPlugins[number] ? T extends SpooshPlugin<infer Types extends PluginTypeConfig> ? Types extends {
|
|
93
|
+
readResult: infer R_2;
|
|
94
|
+
} ? 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 {
|
|
95
|
+
readResult: infer R_2;
|
|
96
|
+
} ? R_2 : object : object : never : never) ? T_1 extends unknown ? (x: T_1) => void : never : never : never) extends (x: infer I) => void ? I : never>;
|
|
97
|
+
|
|
99
98
|
type OptionalQueryField<TQuery> = [TQuery] extends [never] ? object : undefined extends TQuery ? {
|
|
100
99
|
query?: Exclude<TQuery, undefined>;
|
|
101
100
|
} : {
|
|
@@ -115,6 +114,16 @@ type InputFields<TQuery, TBody, TParamNames extends string> = OptionalQueryField
|
|
|
115
114
|
type WriteResponseInputFields<TQuery, TBody, TParamNames extends string> = [TQuery, TBody, TParamNames] extends [never, never, never] ? object : {
|
|
116
115
|
input: Signal<InputFields<TQuery, TBody, TParamNames> | undefined>;
|
|
117
116
|
};
|
|
117
|
+
interface BaseWriteResult<TData, TError, TOptions, TPluginResult = Record<string, unknown>> {
|
|
118
|
+
trigger: (options?: TOptions) => Promise<SpooshResponse<TData, TError>>;
|
|
119
|
+
data: Signal<TData | undefined>;
|
|
120
|
+
error: Signal<TError | undefined>;
|
|
121
|
+
loading: Signal<boolean>;
|
|
122
|
+
meta: Signal<TPluginResult>;
|
|
123
|
+
abort: () => void;
|
|
124
|
+
}
|
|
125
|
+
type WriteApiClient<TSchema, TDefaultError> = WriteClient<TSchema, TDefaultError>;
|
|
126
|
+
|
|
118
127
|
type SuccessResponse<T> = Extract<T, {
|
|
119
128
|
data: unknown;
|
|
120
129
|
error?: undefined;
|
|
@@ -147,33 +156,6 @@ type ExtractResponseParamNames<T> = SuccessReturnType<T> extends {
|
|
|
147
156
|
params: Record<infer K, unknown>;
|
|
148
157
|
};
|
|
149
158
|
} ? K extends string ? K : never : never;
|
|
150
|
-
type AwaitedReturnTypeTrigger<T> = T extends (...args: never[]) => infer R ? Awaited<R> : never;
|
|
151
|
-
type ExtractInputFromResponse<T> = T extends {
|
|
152
|
-
input: infer I;
|
|
153
|
-
} ? I : never;
|
|
154
|
-
type ExtractTriggerQuery<I> = I extends {
|
|
155
|
-
query: infer Q;
|
|
156
|
-
} ? {
|
|
157
|
-
query?: Q;
|
|
158
|
-
} : unknown;
|
|
159
|
-
type ExtractTriggerBody<I> = I extends {
|
|
160
|
-
body: infer B;
|
|
161
|
-
} ? {
|
|
162
|
-
body?: B;
|
|
163
|
-
} : unknown;
|
|
164
|
-
type ExtractTriggerParams<I> = I extends {
|
|
165
|
-
params: infer P;
|
|
166
|
-
} ? {
|
|
167
|
-
params?: P;
|
|
168
|
-
} : unknown;
|
|
169
|
-
type TriggerOptions<T> = ExtractInputFromResponse<AwaitedReturnTypeTrigger<T>> extends infer I ? [I] extends [never] ? {
|
|
170
|
-
force?: boolean;
|
|
171
|
-
} : ExtractTriggerQuery<I> & ExtractTriggerBody<I> & ExtractTriggerParams<I> & {
|
|
172
|
-
/** Force refetch even if data is cached */
|
|
173
|
-
force?: boolean;
|
|
174
|
-
} : {
|
|
175
|
-
force?: boolean;
|
|
176
|
-
};
|
|
177
159
|
type ExtractMethodQuery<T> = ExtractMethodOptions<T> extends {
|
|
178
160
|
query: infer Q;
|
|
179
161
|
} ? Q : never;
|
|
@@ -181,52 +163,6 @@ type ExtractMethodBody<T> = ExtractMethodOptions<T> extends {
|
|
|
181
163
|
body: infer B;
|
|
182
164
|
} ? B : never;
|
|
183
165
|
|
|
184
|
-
type AnyInfiniteRequestOptions = InfiniteRequestOptions;
|
|
185
|
-
declare function createInjectInfiniteRead<TSchema, TDefaultError, TPlugins extends readonly SpooshPlugin<PluginTypeConfig>[]>(options: Omit<SpooshInstanceShape<unknown, TSchema, TDefaultError, TPlugins>, "_types">): <TReadFn extends (api: ReadApiClient<TSchema, TDefaultError>) => Promise<SpooshResponse<unknown, unknown>>, TRequest extends AnyInfiniteRequestOptions = AnyInfiniteRequestOptions, TItem = unknown>(readFn: TReadFn, readOptions: BaseInfiniteReadOptions<TReadFn extends (...args: never[]) => infer R ? Extract<Awaited<R>, {
|
|
186
|
-
data: unknown;
|
|
187
|
-
error?: undefined;
|
|
188
|
-
}> extends {
|
|
189
|
-
data: infer D;
|
|
190
|
-
} ? D : unknown : unknown, TItem, TRequest> & ResolveTypes<((TPlugins[number] extends infer T_3 ? T_3 extends TPlugins[number] ? T_3 extends SpooshPlugin<infer Types_1 extends PluginTypeConfig> ? Types_1 extends {
|
|
191
|
-
readOptions: infer R_3;
|
|
192
|
-
} ? 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 {
|
|
193
|
-
readOptions: infer R_3;
|
|
194
|
-
} ? 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>, {
|
|
195
|
-
data: unknown;
|
|
196
|
-
error?: undefined;
|
|
197
|
-
}> extends {
|
|
198
|
-
data: infer D;
|
|
199
|
-
} ? D : unknown : unknown, [TReadFn extends (...args: never[]) => infer R_1 ? Extract<Awaited<R_1>, {
|
|
200
|
-
error: unknown;
|
|
201
|
-
data?: undefined;
|
|
202
|
-
}> extends {
|
|
203
|
-
error: infer E;
|
|
204
|
-
} ? E : unknown : unknown] extends [unknown] ? TDefaultError : TReadFn extends (...args: never[]) => infer R_1 ? Extract<Awaited<R_1>, {
|
|
205
|
-
error: unknown;
|
|
206
|
-
data?: undefined;
|
|
207
|
-
}> extends {
|
|
208
|
-
error: infer E;
|
|
209
|
-
} ? E : unknown : unknown>>) => BaseInfiniteReadResult<TReadFn extends (...args: never[]) => infer R ? Extract<Awaited<R>, {
|
|
210
|
-
data: unknown;
|
|
211
|
-
error?: undefined;
|
|
212
|
-
}> extends {
|
|
213
|
-
data: infer D;
|
|
214
|
-
} ? D : unknown : unknown, [TReadFn extends (...args: never[]) => infer R_1 ? Extract<Awaited<R_1>, {
|
|
215
|
-
error: unknown;
|
|
216
|
-
data?: undefined;
|
|
217
|
-
}> extends {
|
|
218
|
-
error: infer E;
|
|
219
|
-
} ? E : unknown : unknown] extends [unknown] ? TDefaultError : TReadFn extends (...args: never[]) => infer R_1 ? Extract<Awaited<R_1>, {
|
|
220
|
-
error: unknown;
|
|
221
|
-
data?: undefined;
|
|
222
|
-
}> extends {
|
|
223
|
-
error: infer E;
|
|
224
|
-
} ? E : unknown : unknown, TItem, ((TPlugins[number] extends infer T ? T extends TPlugins[number] ? T extends SpooshPlugin<infer Types extends PluginTypeConfig> ? Types extends {
|
|
225
|
-
readResult: infer R_2;
|
|
226
|
-
} ? 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 {
|
|
227
|
-
readResult: infer R_2;
|
|
228
|
-
} ? R_2 : object : object : never : never) ? T_1 extends unknown ? (x: T_1) => void : never : never : never) extends (x: infer I) => void ? I : never>;
|
|
229
|
-
|
|
230
166
|
declare function createInjectWrite<TSchema, TDefaultError, TPlugins extends readonly SpooshPlugin<PluginTypeConfig>[]>(options: Omit<SpooshInstanceShape<unknown, TSchema, TDefaultError, TPlugins>, "_types">): <TMethod extends (...args: never[]) => Promise<SpooshResponse<unknown, unknown>>, TWriteOpts extends (TMethod extends (...args: infer A) => unknown ? A[0] : never) & _spoosh_core.ResolveTypes<((TPlugins[number] extends infer T_3 ? T_3 extends TPlugins[number] ? T_3 extends SpooshPlugin<infer Types_1 extends PluginTypeConfig> ? Types_1 extends {
|
|
231
167
|
writeOptions: infer W_1;
|
|
232
168
|
} ? W_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 {
|
|
@@ -286,6 +222,75 @@ declare function createInjectWrite<TSchema, TDefaultError, TPlugins extends read
|
|
|
286
222
|
writeResult: infer W;
|
|
287
223
|
} ? W : object : object : never : never) ? T_1 extends unknown ? (x: T_1) => void : never : never : never) extends (x: infer I) => void ? I : never, TWriteOpts>> & WriteResponseInputFields<ExtractResponseQuery<TMethod>, ExtractResponseBody<TMethod>, ExtractResponseParamNames<TMethod>>;
|
|
288
224
|
|
|
225
|
+
interface BaseReadOptions extends TagOptions {
|
|
226
|
+
enabled?: EnabledOption;
|
|
227
|
+
}
|
|
228
|
+
type QueryField<TQuery> = [TQuery] extends [never] ? object : undefined extends TQuery ? {
|
|
229
|
+
query?: Exclude<TQuery, undefined>;
|
|
230
|
+
} : {
|
|
231
|
+
query: TQuery;
|
|
232
|
+
};
|
|
233
|
+
type BodyField<TBody> = [TBody] extends [never] ? object : undefined extends TBody ? {
|
|
234
|
+
body?: Exclude<TBody, undefined>;
|
|
235
|
+
} : {
|
|
236
|
+
body: TBody;
|
|
237
|
+
};
|
|
238
|
+
type ParamsField<TParamNames extends string> = [TParamNames] extends [never] ? object : {
|
|
239
|
+
params: Record<TParamNames, string | number>;
|
|
240
|
+
};
|
|
241
|
+
type ReadInputFields<TQuery, TBody, TParamNames extends string> = QueryField<TQuery> & BodyField<TBody> & ParamsField<TParamNames>;
|
|
242
|
+
type ResponseInputFields<TQuery, TBody, TParamNames extends string> = [
|
|
243
|
+
TQuery,
|
|
244
|
+
TBody,
|
|
245
|
+
TParamNames
|
|
246
|
+
] extends [never, never, never] ? object : {
|
|
247
|
+
input: ReadInputFields<TQuery, TBody, TParamNames>;
|
|
248
|
+
};
|
|
249
|
+
type AwaitedReturnTypeTrigger<T> = T extends (...args: never[]) => infer R ? Awaited<R> : never;
|
|
250
|
+
type ExtractInputFromResponse<T> = T extends {
|
|
251
|
+
input: infer I;
|
|
252
|
+
} ? I : never;
|
|
253
|
+
type ExtractTriggerQuery<I> = I extends {
|
|
254
|
+
query: infer Q;
|
|
255
|
+
} ? {
|
|
256
|
+
query?: Q;
|
|
257
|
+
} : unknown;
|
|
258
|
+
type ExtractTriggerBody<I> = I extends {
|
|
259
|
+
body: infer B;
|
|
260
|
+
} ? {
|
|
261
|
+
body?: B;
|
|
262
|
+
} : unknown;
|
|
263
|
+
type ExtractTriggerParams<I> = I extends {
|
|
264
|
+
params: infer P;
|
|
265
|
+
} ? {
|
|
266
|
+
params?: P;
|
|
267
|
+
} : unknown;
|
|
268
|
+
type TriggerOptions<T> = ExtractInputFromResponse<AwaitedReturnTypeTrigger<T>> extends infer I ? [I] extends [never] ? {
|
|
269
|
+
force?: boolean;
|
|
270
|
+
} : ExtractTriggerQuery<I> & ExtractTriggerBody<I> & ExtractTriggerParams<I> & {
|
|
271
|
+
/** Force refetch even if data is cached */
|
|
272
|
+
force?: boolean;
|
|
273
|
+
} : {
|
|
274
|
+
force?: boolean;
|
|
275
|
+
};
|
|
276
|
+
interface BaseReadResult<TData, TError, TPluginResult = Record<string, unknown>, TTriggerOptions = {
|
|
277
|
+
force?: boolean;
|
|
278
|
+
}> {
|
|
279
|
+
data: Signal<TData | undefined>;
|
|
280
|
+
error: Signal<TError | undefined>;
|
|
281
|
+
loading: Signal<boolean>;
|
|
282
|
+
fetching: Signal<boolean>;
|
|
283
|
+
meta: Signal<TPluginResult>;
|
|
284
|
+
abort: () => void;
|
|
285
|
+
/**
|
|
286
|
+
* Manually trigger a fetch.
|
|
287
|
+
*
|
|
288
|
+
* @param options - Optional override options (query, body, params) to use for this specific request
|
|
289
|
+
*/
|
|
290
|
+
trigger: (options?: TTriggerOptions) => Promise<SpooshResponse<TData, TError>>;
|
|
291
|
+
}
|
|
292
|
+
type ReadApiClient<TSchema, TDefaultError> = ReadClient<TSchema, TDefaultError>;
|
|
293
|
+
|
|
289
294
|
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<{
|
|
290
295
|
data?: unknown;
|
|
291
296
|
error?: unknown;
|
|
@@ -356,4 +361,4 @@ type SpooshAngularFunctions<TDefaultError, TSchema, TPlugins extends PluginArray
|
|
|
356
361
|
|
|
357
362
|
declare function createAngularSpoosh<TSchema, TDefaultError, TPlugins extends PluginArray, TApi>(instance: SpooshInstanceShape<TApi, TSchema, TDefaultError, TPlugins>): SpooshAngularFunctions<TDefaultError, TSchema, TPlugins>;
|
|
358
363
|
|
|
359
|
-
export { type AngularOptionsMap, type BaseInfiniteReadOptions, type BaseInfiniteReadResult, 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 PageContext, type ReadApiClient, type ResponseInputFields, type SpooshInstanceShape, type TriggerOptions, type WriteApiClient, type WriteResponseInputFields, createAngularSpoosh };
|
|
364
|
+
export { type AngularOptionsMap, type BaseInfiniteReadOptions, type BaseInfiniteReadResult, 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 InfiniteReadApiClient, type PageContext, type ReadApiClient, type ResponseInputFields, type SpooshInstanceShape, type TriggerOptions, type WriteApiClient, type WriteResponseInputFields, createAngularSpoosh };
|
package/dist/index.js
CHANGED
|
@@ -121,7 +121,7 @@ function createInjectRead(options) {
|
|
|
121
121
|
return response;
|
|
122
122
|
} catch (err) {
|
|
123
123
|
errorSignal.set(err);
|
|
124
|
-
|
|
124
|
+
return { error: err };
|
|
125
125
|
} finally {
|
|
126
126
|
loadingSignal.set(false);
|
|
127
127
|
fetchingSignal.set(false);
|
|
@@ -256,9 +256,17 @@ function createInjectRead(options) {
|
|
|
256
256
|
}
|
|
257
257
|
}
|
|
258
258
|
);
|
|
259
|
+
const unsubRefetchAll = eventEmitter.on("refetchAll", () => {
|
|
260
|
+
if (currentController) {
|
|
261
|
+
(0, import_core.untracked)(() => {
|
|
262
|
+
executeWithTracking(currentController, true);
|
|
263
|
+
});
|
|
264
|
+
}
|
|
265
|
+
});
|
|
259
266
|
return () => {
|
|
260
267
|
unsubRefetch();
|
|
261
268
|
unsubInvalidate();
|
|
269
|
+
unsubRefetchAll();
|
|
262
270
|
};
|
|
263
271
|
},
|
|
264
272
|
{ allowSignalWrites: true }
|
|
@@ -275,7 +283,7 @@ function createInjectRead(options) {
|
|
|
275
283
|
currentController?.abort();
|
|
276
284
|
};
|
|
277
285
|
const trigger = async (triggerOptions) => {
|
|
278
|
-
const { force =
|
|
286
|
+
const { force = true, ...overrideOptions } = triggerOptions ?? {};
|
|
279
287
|
const hasOverrides = Object.keys(overrideOptions).length > 0;
|
|
280
288
|
if (!hasOverrides) {
|
|
281
289
|
if (!currentController) {
|
|
@@ -432,7 +440,7 @@ function createInjectWrite(options) {
|
|
|
432
440
|
return response;
|
|
433
441
|
} catch (err) {
|
|
434
442
|
errorSignal.set(err);
|
|
435
|
-
|
|
443
|
+
return { error: err };
|
|
436
444
|
} finally {
|
|
437
445
|
loadingSignal.set(false);
|
|
438
446
|
}
|
|
@@ -529,6 +537,7 @@ function createInjectInfiniteRead(options) {
|
|
|
529
537
|
let prevContext = null;
|
|
530
538
|
let isMounted = false;
|
|
531
539
|
let unsubInvalidate = null;
|
|
540
|
+
let unsubRefetchAll = null;
|
|
532
541
|
const updateSignalsFromState = () => {
|
|
533
542
|
if (!currentController) return;
|
|
534
543
|
const state = currentController.getState();
|
|
@@ -563,6 +572,9 @@ function createInjectInfiniteRead(options) {
|
|
|
563
572
|
if (unsubInvalidate) {
|
|
564
573
|
unsubInvalidate();
|
|
565
574
|
}
|
|
575
|
+
if (unsubRefetchAll) {
|
|
576
|
+
unsubRefetchAll();
|
|
577
|
+
}
|
|
566
578
|
const requestOptions = capturedCall.options;
|
|
567
579
|
const pathSegments = capturedCall.path.split("/").filter(Boolean);
|
|
568
580
|
const baseOptionsForKey = {
|
|
@@ -635,6 +647,14 @@ function createInjectInfiniteRead(options) {
|
|
|
635
647
|
}
|
|
636
648
|
}
|
|
637
649
|
);
|
|
650
|
+
unsubRefetchAll = eventEmitter.on("refetchAll", () => {
|
|
651
|
+
if (!getEnabled() || !currentController) return;
|
|
652
|
+
loadingSignal.set(true);
|
|
653
|
+
currentController.refetch().finally(() => {
|
|
654
|
+
updateSignalsFromState();
|
|
655
|
+
loadingSignal.set(false);
|
|
656
|
+
});
|
|
657
|
+
});
|
|
638
658
|
return controller;
|
|
639
659
|
};
|
|
640
660
|
const initialCapturedCall = captureSelector();
|
|
@@ -725,6 +745,9 @@ function createInjectInfiniteRead(options) {
|
|
|
725
745
|
if (unsubInvalidate) {
|
|
726
746
|
unsubInvalidate();
|
|
727
747
|
}
|
|
748
|
+
if (unsubRefetchAll) {
|
|
749
|
+
unsubRefetchAll();
|
|
750
|
+
}
|
|
728
751
|
if (currentSubscription) {
|
|
729
752
|
currentSubscription();
|
|
730
753
|
}
|
package/dist/index.mjs
CHANGED
|
@@ -106,7 +106,7 @@ function createInjectRead(options) {
|
|
|
106
106
|
return response;
|
|
107
107
|
} catch (err) {
|
|
108
108
|
errorSignal.set(err);
|
|
109
|
-
|
|
109
|
+
return { error: err };
|
|
110
110
|
} finally {
|
|
111
111
|
loadingSignal.set(false);
|
|
112
112
|
fetchingSignal.set(false);
|
|
@@ -241,9 +241,17 @@ function createInjectRead(options) {
|
|
|
241
241
|
}
|
|
242
242
|
}
|
|
243
243
|
);
|
|
244
|
+
const unsubRefetchAll = eventEmitter.on("refetchAll", () => {
|
|
245
|
+
if (currentController) {
|
|
246
|
+
untracked(() => {
|
|
247
|
+
executeWithTracking(currentController, true);
|
|
248
|
+
});
|
|
249
|
+
}
|
|
250
|
+
});
|
|
244
251
|
return () => {
|
|
245
252
|
unsubRefetch();
|
|
246
253
|
unsubInvalidate();
|
|
254
|
+
unsubRefetchAll();
|
|
247
255
|
};
|
|
248
256
|
},
|
|
249
257
|
{ allowSignalWrites: true }
|
|
@@ -260,7 +268,7 @@ function createInjectRead(options) {
|
|
|
260
268
|
currentController?.abort();
|
|
261
269
|
};
|
|
262
270
|
const trigger = async (triggerOptions) => {
|
|
263
|
-
const { force =
|
|
271
|
+
const { force = true, ...overrideOptions } = triggerOptions ?? {};
|
|
264
272
|
const hasOverrides = Object.keys(overrideOptions).length > 0;
|
|
265
273
|
if (!hasOverrides) {
|
|
266
274
|
if (!currentController) {
|
|
@@ -422,7 +430,7 @@ function createInjectWrite(options) {
|
|
|
422
430
|
return response;
|
|
423
431
|
} catch (err) {
|
|
424
432
|
errorSignal.set(err);
|
|
425
|
-
|
|
433
|
+
return { error: err };
|
|
426
434
|
} finally {
|
|
427
435
|
loadingSignal.set(false);
|
|
428
436
|
}
|
|
@@ -531,6 +539,7 @@ function createInjectInfiniteRead(options) {
|
|
|
531
539
|
let prevContext = null;
|
|
532
540
|
let isMounted = false;
|
|
533
541
|
let unsubInvalidate = null;
|
|
542
|
+
let unsubRefetchAll = null;
|
|
534
543
|
const updateSignalsFromState = () => {
|
|
535
544
|
if (!currentController) return;
|
|
536
545
|
const state = currentController.getState();
|
|
@@ -565,6 +574,9 @@ function createInjectInfiniteRead(options) {
|
|
|
565
574
|
if (unsubInvalidate) {
|
|
566
575
|
unsubInvalidate();
|
|
567
576
|
}
|
|
577
|
+
if (unsubRefetchAll) {
|
|
578
|
+
unsubRefetchAll();
|
|
579
|
+
}
|
|
568
580
|
const requestOptions = capturedCall.options;
|
|
569
581
|
const pathSegments = capturedCall.path.split("/").filter(Boolean);
|
|
570
582
|
const baseOptionsForKey = {
|
|
@@ -637,6 +649,14 @@ function createInjectInfiniteRead(options) {
|
|
|
637
649
|
}
|
|
638
650
|
}
|
|
639
651
|
);
|
|
652
|
+
unsubRefetchAll = eventEmitter.on("refetchAll", () => {
|
|
653
|
+
if (!getEnabled() || !currentController) return;
|
|
654
|
+
loadingSignal.set(true);
|
|
655
|
+
currentController.refetch().finally(() => {
|
|
656
|
+
updateSignalsFromState();
|
|
657
|
+
loadingSignal.set(false);
|
|
658
|
+
});
|
|
659
|
+
});
|
|
640
660
|
return controller;
|
|
641
661
|
};
|
|
642
662
|
const initialCapturedCall = captureSelector();
|
|
@@ -727,6 +747,9 @@ function createInjectInfiniteRead(options) {
|
|
|
727
747
|
if (unsubInvalidate) {
|
|
728
748
|
unsubInvalidate();
|
|
729
749
|
}
|
|
750
|
+
if (unsubRefetchAll) {
|
|
751
|
+
unsubRefetchAll();
|
|
752
|
+
}
|
|
730
753
|
if (currentSubscription) {
|
|
731
754
|
currentSubscription();
|
|
732
755
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@spoosh/angular",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.2",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"description": "Angular signals integration for Spoosh API client",
|
|
6
6
|
"keywords": [
|
|
@@ -13,13 +13,13 @@
|
|
|
13
13
|
],
|
|
14
14
|
"repository": {
|
|
15
15
|
"type": "git",
|
|
16
|
-
"url": "git+https://github.com/
|
|
16
|
+
"url": "git+https://github.com/spooshdev/spoosh.git",
|
|
17
17
|
"directory": "packages/angular"
|
|
18
18
|
},
|
|
19
19
|
"bugs": {
|
|
20
|
-
"url": "https://github.com/
|
|
20
|
+
"url": "https://github.com/spooshdev/spoosh/issues"
|
|
21
21
|
},
|
|
22
|
-
"homepage": "https://spoosh.dev/angular
|
|
22
|
+
"homepage": "https://spoosh.dev/docs/angular",
|
|
23
23
|
"publishConfig": {
|
|
24
24
|
"access": "public"
|
|
25
25
|
},
|
|
@@ -38,7 +38,9 @@
|
|
|
38
38
|
"@angular/core": ">=16.0.0"
|
|
39
39
|
},
|
|
40
40
|
"devDependencies": {
|
|
41
|
-
"@
|
|
41
|
+
"@angular/core": "^19.0.0",
|
|
42
|
+
"@spoosh/core": "0.10.0",
|
|
43
|
+
"@spoosh/test-utils": "0.1.5"
|
|
42
44
|
},
|
|
43
45
|
"scripts": {
|
|
44
46
|
"dev": "tsup --watch",
|