@alistt69/create-api 0.2.11 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +65 -0
- package/dist/controller.d.ts +3 -0
- package/dist/controller.d.ts.map +1 -0
- package/dist/controller.js +2 -0
- package/dist/controller.js.map +1 -0
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -3
- package/dist/index.js.map +1 -1
- package/dist/lib/createApi.d.ts +1 -1
- package/dist/lib/createApi.d.ts.map +1 -1
- package/dist/lib/createApi.js +22 -2
- package/dist/lib/createApi.js.map +1 -1
- package/dist/lib/createController.d.ts +4 -0
- package/dist/lib/createController.d.ts.map +1 -0
- package/dist/lib/createController.js +113 -0
- package/dist/lib/createController.js.map +1 -0
- package/dist/lib/createRequestId.d.ts +2 -0
- package/dist/lib/createRequestId.d.ts.map +1 -0
- package/dist/lib/createRequestId.js +6 -0
- package/dist/lib/createRequestId.js.map +1 -0
- package/dist/lib/fetchBaseQuery.d.ts +1 -1
- package/dist/lib/fetchBaseQuery.d.ts.map +1 -1
- package/dist/lib/getHookName.d.ts +1 -1
- package/dist/lib/getHookName.d.ts.map +1 -1
- package/dist/lib/initiateMutation.d.ts +7 -0
- package/dist/lib/initiateMutation.d.ts.map +1 -0
- package/dist/lib/initiateMutation.js +47 -0
- package/dist/lib/initiateMutation.js.map +1 -0
- package/dist/lib/initiateQuery.d.ts +4 -0
- package/dist/lib/initiateQuery.d.ts.map +1 -0
- package/dist/lib/initiateQuery.js +35 -0
- package/dist/lib/initiateQuery.js.map +1 -0
- package/dist/lib/makeLazyQueryHook.d.ts +8 -8
- package/dist/lib/makeLazyQueryHook.d.ts.map +1 -1
- package/dist/lib/makeLazyQueryHook.js +10 -87
- package/dist/lib/makeLazyQueryHook.js.map +1 -1
- package/dist/lib/makeMutationHook.d.ts +1 -1
- package/dist/lib/makeMutationHook.d.ts.map +1 -1
- package/dist/lib/makeMutationHook.js +2 -6
- package/dist/lib/makeMutationHook.js.map +1 -1
- package/dist/lib/makeQueryHook.d.ts +9 -8
- package/dist/lib/makeQueryHook.d.ts.map +1 -1
- package/dist/lib/makeQueryHook.js +8 -79
- package/dist/lib/makeQueryHook.js.map +1 -1
- package/dist/lib/runQuery.d.ts +11 -0
- package/dist/lib/runQuery.d.ts.map +1 -0
- package/dist/lib/runQuery.js +83 -0
- package/dist/lib/runQuery.js.map +1 -0
- package/dist/model/mutation.d.ts +1 -1
- package/dist/model/mutation.d.ts.map +1 -1
- package/dist/model/query.d.ts +1 -1
- package/dist/model/query.d.ts.map +1 -1
- package/dist/model/queryStore.d.ts +10 -5
- package/dist/model/queryStore.d.ts.map +1 -1
- package/dist/model/queryStore.js +46 -8
- package/dist/model/queryStore.js.map +1 -1
- package/dist/model/types.d.ts +63 -6
- package/dist/model/types.d.ts.map +1 -1
- package/package.json +5 -1
package/README.md
CHANGED
|
@@ -166,6 +166,71 @@ api.util.updateQueryData('getPost', '1', (prev) => ({
|
|
|
166
166
|
}));
|
|
167
167
|
```
|
|
168
168
|
|
|
169
|
+
## 🧩 Imperative endpoints
|
|
170
|
+
|
|
171
|
+
Each endpoint also exposes a small imperative API:
|
|
172
|
+
|
|
173
|
+
```typescript
|
|
174
|
+
// query
|
|
175
|
+
const request = api.endpoints.getPost.initiate('1');
|
|
176
|
+
|
|
177
|
+
const data = await request.unwrap();
|
|
178
|
+
|
|
179
|
+
request.refetch();
|
|
180
|
+
request.unsubscribe();
|
|
181
|
+
request.abort();
|
|
182
|
+
|
|
183
|
+
// mutation
|
|
184
|
+
const state = api.endpoints.getPost.select('1');
|
|
185
|
+
|
|
186
|
+
const mutation = api.endpoints.editPost.initiate({
|
|
187
|
+
id: '1',
|
|
188
|
+
title: 'Updated',
|
|
189
|
+
});
|
|
190
|
+
|
|
191
|
+
await mutation.unwrap();
|
|
192
|
+
mutation.abort();
|
|
193
|
+
|
|
194
|
+
```
|
|
195
|
+
This is useful when query lifecycle should live outside React components, for example in MobX stores or other controller-style state layers.
|
|
196
|
+
|
|
197
|
+
## ⛓️💥 Controller
|
|
198
|
+
For store-based usage you can import a small controller helper from the controller subpath:
|
|
199
|
+
```typescript
|
|
200
|
+
import { createController } from '@alistt69/create-api/controller';
|
|
201
|
+
|
|
202
|
+
class TicketStore {
|
|
203
|
+
private ticket = createController(api.endpoints.getTicketById);
|
|
204
|
+
private editTicket = createController(api.endpoints.editTicket);
|
|
205
|
+
|
|
206
|
+
load(id: string) {
|
|
207
|
+
return this.ticket.run(id);
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
save(id: string, title: string) {
|
|
211
|
+
return this.editTicket.run({ id, title });
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
get ticketData() {
|
|
215
|
+
return this.ticket.state.data;
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
get isLoadingTicket() {
|
|
219
|
+
return this.ticket.state.isLoading;
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
get isSavingTicket() {
|
|
223
|
+
return this.editTicket.state.isLoading;
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
destroy() {
|
|
227
|
+
this.ticket.dispose();
|
|
228
|
+
this.editTicket.dispose();
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
```
|
|
232
|
+
The controller keeps endpoint state outside React, subscribes to cache updates, and releases its subscription with dispose().
|
|
233
|
+
|
|
169
234
|
## 📄 License
|
|
170
235
|
|
|
171
236
|
MIT — free and open for everyone.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../src/controller.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,YAAY,EACR,mBAAmB,EACnB,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,GAClB,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"controller.js","sourceRoot":"","sources":["../src/controller.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
export {
|
|
1
|
+
export { createApi } from './lib/createApi.js';
|
|
2
|
+
export { fetchBaseQuery } from './lib/fetchBaseQuery.js';
|
|
3
|
+
export type { BaseQueryFn, BaseQueryResult, FetchBaseQueryArgs, FetchBaseQueryError, FetchBaseQueryMeta, FetchBaseQueryOptions, InferQueryState, QueryHookOptions, QueryInitiateResult, TagDescription, } from './model/types.js';
|
|
4
4
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,YAAY,EACR,WAAW,EACX,eAAe,EACf,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,qBAAqB,EACrB,eAAe,EACf,gBAAgB,EAChB,mBAAmB,EACnB,cAAc,GACjB,MAAM,kBAAkB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
export { createApi, fetchBaseQuery };
|
|
1
|
+
export { createApi } from './lib/createApi.js';
|
|
2
|
+
export { fetchBaseQuery } from './lib/fetchBaseQuery.js';
|
|
4
3
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC"}
|
package/dist/lib/createApi.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { mutation } from '../model/mutation.js';
|
|
2
2
|
import { query } from '../model/query.js';
|
|
3
|
-
import { BaseQueryFn, CreateApiResult, GeneralDefinition } from '../model/types.js';
|
|
3
|
+
import { type BaseQueryFn, type CreateApiResult, type GeneralDefinition } from '../model/types.js';
|
|
4
4
|
export interface BaseQueryArgs {
|
|
5
5
|
url: string;
|
|
6
6
|
body?: unknown;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createApi.d.ts","sourceRoot":"","sources":["../../src/lib/createApi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"createApi.d.ts","sourceRoot":"","sources":["../../src/lib/createApi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAY1C,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,eAAe,EAAsB,KAAK,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AASvH,MAAM,WAAW,aAAa;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,UAAU,eAAe,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC;IACjE,SAAS,EAAE,WAAW,CAAC;IACvB,SAAS,EAAE,CAAC,OAAO,EAAE;QAAE,KAAK,EAAE,OAAO,KAAK,CAAC;QAAC,QAAQ,EAAE,OAAO,QAAQ,CAAA;KAAE,KAAK,CAAC,CAAC;CACjF;AAED,wBAAgB,SAAS,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,EAAE,EACnE,SAAS,EACT,SAAS,GACZ,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,CAwEzC"}
|
package/dist/lib/createApi.js
CHANGED
|
@@ -1,15 +1,18 @@
|
|
|
1
1
|
import { mutation } from '../model/mutation.js';
|
|
2
2
|
import { query } from '../model/query.js';
|
|
3
|
-
import { getQueryData, setQueryData,
|
|
3
|
+
import { getQueryData, getQueryKeyByEndpointArg, invalidateTags, selectQueryState, setQueryData, setQueryKeySerializer, setQueryTagResolver, subscribeToQuery, updateQueryData, } from '../model/queryStore.js';
|
|
4
4
|
import { getHookName } from './getHookName.js';
|
|
5
|
+
import { initiateQuery } from './initiateQuery.js';
|
|
5
6
|
import { makeLazyQueryHook } from './makeLazyQueryHook.js';
|
|
6
7
|
import { makeMutationHook } from './makeMutationHook.js';
|
|
7
8
|
import { makeQueryHook } from './makeQueryHook.js';
|
|
8
9
|
import { typedObjectKeys } from './typedObjectKeys.js';
|
|
10
|
+
import { initiateMutation } from './initiateMutation.js';
|
|
9
11
|
export function createApi({ endpoints, baseQuery, }) {
|
|
10
12
|
const transformedEndpoints = endpoints({ query, mutation });
|
|
11
13
|
const keys = typedObjectKeys(transformedEndpoints);
|
|
12
14
|
const apiResult = {};
|
|
15
|
+
const localEndpoints = {};
|
|
13
16
|
keys.forEach((endpointName) => {
|
|
14
17
|
const definition = transformedEndpoints[endpointName];
|
|
15
18
|
const makeHookProps = {
|
|
@@ -17,6 +20,22 @@ export function createApi({ endpoints, baseQuery, }) {
|
|
|
17
20
|
endpointName,
|
|
18
21
|
...definition,
|
|
19
22
|
};
|
|
23
|
+
if (definition.type === 'query') {
|
|
24
|
+
localEndpoints[endpointName] = {
|
|
25
|
+
name: endpointName,
|
|
26
|
+
type: definition.type,
|
|
27
|
+
select: (arg) => selectQueryState(endpointName, arg),
|
|
28
|
+
initiate: (arg) => initiateQuery(makeHookProps, arg),
|
|
29
|
+
subscribe: (arg, listener) => subscribeToQuery(getQueryKeyByEndpointArg(endpointName, arg), listener, definition.keepUnusedDataFor ?? 0),
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
if (definition.type === 'mutation') {
|
|
33
|
+
localEndpoints[endpointName] = {
|
|
34
|
+
name: endpointName,
|
|
35
|
+
type: definition.type,
|
|
36
|
+
initiate: (arg) => initiateMutation(makeHookProps, arg),
|
|
37
|
+
};
|
|
38
|
+
}
|
|
20
39
|
if (definition.type === 'query') {
|
|
21
40
|
setQueryKeySerializer(endpointName, (arg) => definition.serializeArgs
|
|
22
41
|
? definition.serializeArgs(arg)
|
|
@@ -33,7 +52,8 @@ export function createApi({ endpoints, baseQuery, }) {
|
|
|
33
52
|
getQueryData,
|
|
34
53
|
setQueryData,
|
|
35
54
|
updateQueryData,
|
|
55
|
+
invalidateTags,
|
|
36
56
|
};
|
|
37
|
-
return { ...apiResult, util };
|
|
57
|
+
return { ...apiResult, endpoints: localEndpoints, util };
|
|
38
58
|
}
|
|
39
59
|
//# sourceMappingURL=createApi.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createApi.js","sourceRoot":"","sources":["../../src/lib/createApi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EACH,YAAY,EACZ,YAAY,EACZ,
|
|
1
|
+
{"version":3,"file":"createApi.js","sourceRoot":"","sources":["../../src/lib/createApi.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { type ApiEndpointMutation, type ApiEndpointQuery, type MutationController, type QueryController } from '../model/types.js';
|
|
2
|
+
export declare function createController<R, A>(endpoint: ApiEndpointQuery<R, A>): QueryController<R, A>;
|
|
3
|
+
export declare function createController<R, A>(endpoint: ApiEndpointMutation<R, A>): MutationController<R, A>;
|
|
4
|
+
//# sourceMappingURL=createController.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createController.d.ts","sourceRoot":"","sources":["../../src/lib/createController.ts"],"names":[],"mappings":"AACA,OAAO,EACH,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EAGrB,KAAK,kBAAkB,EAEvB,KAAK,eAAe,EAEvB,MAAM,mBAAmB,CAAC;AAE3B,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,CAAC,EACjC,QAAQ,EAAE,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,GACjC,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAEzB,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,CAAC,EACjC,QAAQ,EAAE,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,GACpC,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { getInitialQueryState } from '../model/queryStore.js';
|
|
2
|
+
export function createController(endpoint) {
|
|
3
|
+
if (endpoint.type === 'query') {
|
|
4
|
+
return createQueryController(endpoint);
|
|
5
|
+
}
|
|
6
|
+
return createMutationController(endpoint);
|
|
7
|
+
}
|
|
8
|
+
function createQueryController(endpoint) {
|
|
9
|
+
let currentArg;
|
|
10
|
+
let currentRequest;
|
|
11
|
+
let unsubscribeFromEndpoint;
|
|
12
|
+
let state = getInitialQueryState();
|
|
13
|
+
const syncState = () => {
|
|
14
|
+
if (currentArg === undefined) {
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
state = endpoint.select(currentArg);
|
|
18
|
+
};
|
|
19
|
+
const disposeSubscription = () => {
|
|
20
|
+
unsubscribeFromEndpoint?.();
|
|
21
|
+
unsubscribeFromEndpoint = undefined;
|
|
22
|
+
};
|
|
23
|
+
return {
|
|
24
|
+
get state() {
|
|
25
|
+
return state;
|
|
26
|
+
},
|
|
27
|
+
run(arg) {
|
|
28
|
+
currentArg = arg;
|
|
29
|
+
disposeSubscription();
|
|
30
|
+
currentRequest?.unsubscribe();
|
|
31
|
+
currentRequest = endpoint.initiate(arg);
|
|
32
|
+
state = endpoint.select(arg);
|
|
33
|
+
unsubscribeFromEndpoint = endpoint.subscribe(arg, syncState);
|
|
34
|
+
return currentRequest.unwrap();
|
|
35
|
+
},
|
|
36
|
+
refetch() {
|
|
37
|
+
return currentRequest?.refetch();
|
|
38
|
+
},
|
|
39
|
+
abort() {
|
|
40
|
+
currentRequest?.abort();
|
|
41
|
+
},
|
|
42
|
+
dispose() {
|
|
43
|
+
disposeSubscription();
|
|
44
|
+
currentRequest?.unsubscribe();
|
|
45
|
+
currentRequest = undefined;
|
|
46
|
+
currentArg = undefined;
|
|
47
|
+
state = getInitialQueryState();
|
|
48
|
+
},
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
function getInitialMutationState() {
|
|
52
|
+
return {
|
|
53
|
+
data: undefined,
|
|
54
|
+
error: undefined,
|
|
55
|
+
isLoading: false,
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
function createMutationController(endpoint) {
|
|
59
|
+
let currentRequest;
|
|
60
|
+
let currentRequestId;
|
|
61
|
+
let state = getInitialMutationState();
|
|
62
|
+
const reset = () => {
|
|
63
|
+
currentRequestId = undefined;
|
|
64
|
+
state = getInitialMutationState();
|
|
65
|
+
};
|
|
66
|
+
return {
|
|
67
|
+
get state() {
|
|
68
|
+
return state;
|
|
69
|
+
},
|
|
70
|
+
async run(arg) {
|
|
71
|
+
currentRequest?.abort();
|
|
72
|
+
currentRequest = endpoint.initiate(arg);
|
|
73
|
+
currentRequestId = currentRequest.requestId;
|
|
74
|
+
const requestId = currentRequest.requestId;
|
|
75
|
+
state = {
|
|
76
|
+
data: undefined,
|
|
77
|
+
error: undefined,
|
|
78
|
+
isLoading: true,
|
|
79
|
+
};
|
|
80
|
+
try {
|
|
81
|
+
const data = await currentRequest.unwrap();
|
|
82
|
+
if (currentRequestId === requestId) {
|
|
83
|
+
state = {
|
|
84
|
+
data,
|
|
85
|
+
error: undefined,
|
|
86
|
+
isLoading: false,
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
return data;
|
|
90
|
+
}
|
|
91
|
+
catch (error) {
|
|
92
|
+
if (currentRequestId === requestId) {
|
|
93
|
+
state = {
|
|
94
|
+
data: undefined,
|
|
95
|
+
error,
|
|
96
|
+
isLoading: false,
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
throw error;
|
|
100
|
+
}
|
|
101
|
+
},
|
|
102
|
+
abort() {
|
|
103
|
+
currentRequest?.abort();
|
|
104
|
+
},
|
|
105
|
+
reset,
|
|
106
|
+
dispose() {
|
|
107
|
+
currentRequest?.abort();
|
|
108
|
+
currentRequest = undefined;
|
|
109
|
+
reset();
|
|
110
|
+
},
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=createController.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createController.js","sourceRoot":"","sources":["../../src/lib/createController.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createRequestId.d.ts","sourceRoot":"","sources":["../../src/lib/createRequestId.ts"],"names":[],"mappings":"AAEA,wBAAgB,eAAe,IAAI,MAAM,CAIxC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createRequestId.js","sourceRoot":"","sources":["../../src/lib/createRequestId.ts"],"names":[],"mappings":"AAAA,IAAI,aAAa,GAAG,CAAC,CAAC;AAEtB,MAAM,UAAU,eAAe;IAC3B,aAAa,IAAI,CAAC,CAAC;IAEnB,OAAO,WAAW,aAAa,EAAE,CAAC;AACtC,CAAC"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { BaseQueryFn, FetchBaseQueryArgs, FetchBaseQueryError, FetchBaseQueryMeta, FetchBaseQueryOptions } from '../model/types.js';
|
|
1
|
+
import { type BaseQueryFn, type FetchBaseQueryArgs, type FetchBaseQueryError, type FetchBaseQueryMeta, type FetchBaseQueryOptions } from '../model/types.js';
|
|
2
2
|
export declare function fetchBaseQuery(options?: FetchBaseQueryOptions): BaseQueryFn<unknown, FetchBaseQueryError, FetchBaseQueryMeta, FetchBaseQueryArgs>;
|
|
3
3
|
//# sourceMappingURL=fetchBaseQuery.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetchBaseQuery.d.ts","sourceRoot":"","sources":["../../src/lib/fetchBaseQuery.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,WAAW,
|
|
1
|
+
{"version":3,"file":"fetchBaseQuery.d.ts","sourceRoot":"","sources":["../../src/lib/fetchBaseQuery.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,KAAK,WAAW,EAChB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,qBAAqB,EAC7B,MAAM,mBAAmB,CAAC;AAqF3B,wBAAgB,cAAc,CAC1B,OAAO,GAAE,qBAA0B,GACpC,WAAW,CAAC,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,kBAAkB,CAAC,CAoInF"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { EndpointType, HookName } from '../model/types.js';
|
|
1
|
+
import { type EndpointType, type HookName } from '../model/types.js';
|
|
2
2
|
export declare function getHookName<K extends string, T extends EndpointType, L extends string = ''>(key: K, type: T, lazy: L): HookName<K, T, L>;
|
|
3
3
|
//# sourceMappingURL=getHookName.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getHookName.d.ts","sourceRoot":"","sources":["../../src/lib/getHookName.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"getHookName.d.ts","sourceRoot":"","sources":["../../src/lib/getHookName.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAGrE,wBAAgB,WAAW,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,YAAY,EAAE,CAAC,SAAS,MAAM,GAAG,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAExI"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { type BaseQueryFn, type MutationBuilderDefinition, type MutationInitiateResult } from '../model/types.js';
|
|
2
|
+
type InitiateMutationProps<R, A, Raw = R> = {
|
|
3
|
+
baseQuery: BaseQueryFn<Raw>;
|
|
4
|
+
} & Omit<MutationBuilderDefinition<R, A, Raw>, 'type'>;
|
|
5
|
+
export declare function initiateMutation<R, A, Raw = R>({ query, baseQuery, invalidates, invalidatesTags, transformResponse, transformErrorResponse, }: InitiateMutationProps<R, A, Raw>, arg: A): MutationInitiateResult<R, A>;
|
|
6
|
+
export {};
|
|
7
|
+
//# sourceMappingURL=initiateMutation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"initiateMutation.d.ts","sourceRoot":"","sources":["../../src/lib/initiateMutation.ts"],"names":[],"mappings":"AACA,OAAO,EACH,KAAK,WAAW,EAChB,KAAK,yBAAyB,EAC9B,KAAK,sBAAsB,EAC9B,MAAM,mBAAmB,CAAC;AAG3B,KAAK,qBAAqB,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,IAAI;IACxC,SAAS,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;CAC/B,GAAG,IAAI,CAAC,yBAAyB,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;AAEvD,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,EAC1C,EACI,KAAK,EACL,SAAS,EACT,WAAW,EACX,eAAe,EACf,iBAAiB,EACjB,sBAAsB,GACzB,EAAE,qBAAqB,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EACnC,GAAG,EAAE,CAAC,GACP,sBAAsB,CAAC,CAAC,EAAE,CAAC,CAAC,CAqD9B"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { invalidateTags, refetchQueriesByEndpoint } from '../model/queryStore.js';
|
|
2
|
+
import { createRequestId } from './createRequestId.js';
|
|
3
|
+
export function initiateMutation({ query, baseQuery, invalidates, invalidatesTags, transformResponse, transformErrorResponse, }, arg) {
|
|
4
|
+
const requestId = createRequestId();
|
|
5
|
+
const controller = new AbortController();
|
|
6
|
+
const promise = (async () => {
|
|
7
|
+
try {
|
|
8
|
+
const request = query(arg);
|
|
9
|
+
const result = await baseQuery({
|
|
10
|
+
...request,
|
|
11
|
+
signal: controller.signal,
|
|
12
|
+
});
|
|
13
|
+
if ('error' in result) {
|
|
14
|
+
const transformedError = transformErrorResponse
|
|
15
|
+
? transformErrorResponse(result.error, arg)
|
|
16
|
+
: result.error;
|
|
17
|
+
throw transformedError;
|
|
18
|
+
}
|
|
19
|
+
const raw = result.data;
|
|
20
|
+
const data = transformResponse ? transformResponse(raw, arg) : raw;
|
|
21
|
+
invalidates?.forEach((endpointName) => {
|
|
22
|
+
refetchQueriesByEndpoint(endpointName);
|
|
23
|
+
});
|
|
24
|
+
if (invalidatesTags) {
|
|
25
|
+
invalidateTags(invalidatesTags(data, arg));
|
|
26
|
+
}
|
|
27
|
+
return data;
|
|
28
|
+
}
|
|
29
|
+
catch (error) {
|
|
30
|
+
if (controller.signal.aborted) {
|
|
31
|
+
throw error;
|
|
32
|
+
}
|
|
33
|
+
throw error;
|
|
34
|
+
}
|
|
35
|
+
})();
|
|
36
|
+
promise.catch(() => undefined);
|
|
37
|
+
return {
|
|
38
|
+
requestId,
|
|
39
|
+
arg,
|
|
40
|
+
promise,
|
|
41
|
+
unwrap: () => promise,
|
|
42
|
+
abort: () => {
|
|
43
|
+
controller.abort();
|
|
44
|
+
},
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=initiateMutation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"initiateMutation.js","sourceRoot":"","sources":["../../src/lib/initiateMutation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAMlF,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAMvD,MAAM,UAAU,gBAAgB,CAC5B,EACI,KAAK,EACL,SAAS,EACT,WAAW,EACX,eAAe,EACf,iBAAiB,EACjB,sBAAsB,GACS,EACnC,GAAM;IAEN,MAAM,SAAS,GAAG,eAAe,EAAE,CAAC;IACpC,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IAEzC,MAAM,OAAO,GAAG,CAAC,KAAK,IAAI,EAAE;QACxB,IAAI,CAAC;YACD,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;YAC3B,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC;gBAC3B,GAAG,OAAO;gBACV,MAAM,EAAE,UAAU,CAAC,MAAM;aAC5B,CAAC,CAAC;YAEH,IAAI,OAAO,IAAI,MAAM,EAAE,CAAC;gBACpB,MAAM,gBAAgB,GAAG,sBAAsB;oBAC3C,CAAC,CAAC,sBAAsB,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC;oBAC3C,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;gBAEnB,MAAM,gBAAgB,CAAC;YAC3B,CAAC;YAED,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC;YACxB,MAAM,IAAI,GAAG,iBAAiB,CAAC,CAAC,CAAC,iBAAiB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAmB,CAAC;YAEnF,WAAW,EAAE,OAAO,CAAC,CAAC,YAAY,EAAE,EAAE;gBAClC,wBAAwB,CAAC,YAAY,CAAC,CAAC;YAC3C,CAAC,CAAC,CAAC;YAEH,IAAI,eAAe,EAAE,CAAC;gBAClB,cAAc,CAAC,eAAe,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;YAC/C,CAAC;YAED,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,OAAO,KAAK,EAAE,CAAC;YACX,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBAC5B,MAAM,KAAK,CAAC;YAChB,CAAC;YAED,MAAM,KAAK,CAAC;QAChB,CAAC;IACL,CAAC,CAAC,EAAE,CAAC;IAEL,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IAE/B,OAAO;QACH,SAAS;QACT,GAAG;QACH,OAAO;QACP,MAAM,EAAE,GAAG,EAAE,CAAC,OAAO;QACrB,KAAK,EAAE,GAAG,EAAE;YACR,UAAU,CAAC,KAAK,EAAE,CAAC;QACvB,CAAC;KACJ,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { type QueryInitiateResult } from '../model/types.js';
|
|
2
|
+
import { type RunQueryProps } from './runQuery.js';
|
|
3
|
+
export declare function initiateQuery<R, A, Raw = R>(props: RunQueryProps<R, A, Raw>, arg: A): QueryInitiateResult<R, A>;
|
|
4
|
+
//# sourceMappingURL=initiateQuery.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"initiateQuery.d.ts","sourceRoot":"","sources":["../../src/lib/initiateQuery.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAE7D,OAAO,EAAY,KAAK,aAAa,EAAE,MAAM,eAAe,CAAC;AAE7D,wBAAgB,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,EACvC,KAAK,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAC/B,GAAG,EAAE,CAAC,GACP,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,CAyC3B"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { abortQueryByKey, getQueryKeyByEndpointArg, registerQueryKey, setQueryRunner, subscribeToQuery, } from '../model/queryStore.js';
|
|
2
|
+
import { createRequestId } from './createRequestId.js';
|
|
3
|
+
import { runQuery } from './runQuery.js';
|
|
4
|
+
export function initiateQuery(props, arg) {
|
|
5
|
+
const { endpointName, keepUnusedDataFor = 0, } = props;
|
|
6
|
+
const key = getQueryKeyByEndpointArg(endpointName, arg);
|
|
7
|
+
const requestId = createRequestId();
|
|
8
|
+
registerQueryKey(endpointName, key);
|
|
9
|
+
setQueryRunner(key, () => runQuery(props, arg, {
|
|
10
|
+
key,
|
|
11
|
+
requestId: createRequestId(),
|
|
12
|
+
}));
|
|
13
|
+
const unsubscribeFromQuery = subscribeToQuery(key, () => undefined, keepUnusedDataFor);
|
|
14
|
+
const promise = runQuery(props, arg, { key, requestId });
|
|
15
|
+
let didUnsubscribe = false;
|
|
16
|
+
const unsubscribe = () => {
|
|
17
|
+
if (didUnsubscribe) {
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
didUnsubscribe = true;
|
|
21
|
+
unsubscribeFromQuery();
|
|
22
|
+
};
|
|
23
|
+
return {
|
|
24
|
+
requestId,
|
|
25
|
+
arg,
|
|
26
|
+
promise,
|
|
27
|
+
unwrap: () => promise,
|
|
28
|
+
abort: () => {
|
|
29
|
+
abortQueryByKey(key);
|
|
30
|
+
},
|
|
31
|
+
unsubscribe,
|
|
32
|
+
refetch: () => runQuery(props, arg, { key, requestId: createRequestId() }),
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=initiateQuery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"initiateQuery.js","sourceRoot":"","sources":["../../src/lib/initiateQuery.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,eAAe,EACf,wBAAwB,EACxB,gBAAgB,EAChB,cAAc,EACd,gBAAgB,GACnB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAsB,MAAM,eAAe,CAAC;AAE7D,MAAM,UAAU,aAAa,CACzB,KAA+B,EAC/B,GAAM;IAEN,MAAM,EACF,YAAY,EACZ,iBAAiB,GAAG,CAAC,GACxB,GAAG,KAAK,CAAC;IAEV,MAAM,GAAG,GAAG,wBAAwB,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;IACxD,MAAM,SAAS,GAAG,eAAe,EAAE,CAAC;IAEpC,gBAAgB,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;IAEpC,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE;QAC3C,GAAG;QACH,SAAS,EAAE,eAAe,EAAE;KAC/B,CAAC,CAAC,CAAC;IAEJ,MAAM,oBAAoB,GAAG,gBAAgB,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;IACvF,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC;IAEzD,IAAI,cAAc,GAAG,KAAK,CAAC;IAE3B,MAAM,WAAW,GAAG,GAAG,EAAE;QACrB,IAAI,cAAc,EAAE,CAAC;YACjB,OAAO;QACX,CAAC;QAED,cAAc,GAAG,IAAI,CAAC;QACtB,oBAAoB,EAAE,CAAC;IAC3B,CAAC,CAAC;IAEF,OAAO;QACH,SAAS;QACT,GAAG;QACH,OAAO;QACP,MAAM,EAAE,GAAG,EAAE,CAAC,OAAO;QACrB,KAAK,EAAE,GAAG,EAAE;YACR,eAAe,CAAC,GAAG,CAAC,CAAC;QACzB,CAAC;QACD,WAAW;QACX,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,eAAe,EAAE,EAAE,CAAC;KAC7E,CAAC;AACN,CAAC"}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
endpointName: string;
|
|
4
|
-
baseQuery: BaseQueryFn<Raw>;
|
|
5
|
-
} & Omit<QueryBuilderDefinition<R, A, Raw>, 'type'>;
|
|
6
|
-
export declare function makeLazyQueryHook<R, A, Raw = R>({ query, baseQuery, endpointName, providesTags, serializeArgs, transformResponse, keepUnusedDataFor, transformErrorResponse, }: MakeLazyQueryHookProps<R, A, Raw>): () => readonly [(arg: A) => Promise<R>, {
|
|
1
|
+
import { type RunQueryProps } from './runQuery.js';
|
|
2
|
+
export declare function makeLazyQueryHook<R, A, Raw = R>(props: RunQueryProps<R, A, Raw>): () => readonly [(arg: A) => Promise<R>, {
|
|
7
3
|
readonly refetch: () => Promise<R> | undefined;
|
|
8
4
|
readonly data?: unknown;
|
|
5
|
+
readonly error?: unknown;
|
|
6
|
+
readonly status: import("../model/types.js").QueryStatus;
|
|
7
|
+
readonly isUninitialized: boolean;
|
|
9
8
|
readonly isLoading: boolean;
|
|
10
9
|
readonly isFetching: boolean;
|
|
11
|
-
readonly
|
|
10
|
+
readonly isSuccess: boolean;
|
|
11
|
+
readonly isError: boolean;
|
|
12
12
|
readonly fulfilledAt?: number;
|
|
13
|
+
readonly requestId?: string;
|
|
13
14
|
}];
|
|
14
|
-
export {};
|
|
15
15
|
//# sourceMappingURL=makeLazyQueryHook.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"makeLazyQueryHook.d.ts","sourceRoot":"","sources":["../../src/lib/makeLazyQueryHook.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"makeLazyQueryHook.d.ts","sourceRoot":"","sources":["../../src/lib/makeLazyQueryHook.ts"],"names":[],"mappings":"AAUA,OAAO,EAAY,KAAK,aAAa,EAAE,MAAM,eAAe,CAAC;AAE7D,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,EAC3C,KAAK,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,yBA+DO,CAAC;;;;;;;;;;;;GA8C1C"}
|