@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.
Files changed (60) hide show
  1. package/README.md +65 -0
  2. package/dist/controller.d.ts +3 -0
  3. package/dist/controller.d.ts.map +1 -0
  4. package/dist/controller.js +2 -0
  5. package/dist/controller.js.map +1 -0
  6. package/dist/index.d.ts +3 -3
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/index.js +2 -3
  9. package/dist/index.js.map +1 -1
  10. package/dist/lib/createApi.d.ts +1 -1
  11. package/dist/lib/createApi.d.ts.map +1 -1
  12. package/dist/lib/createApi.js +22 -2
  13. package/dist/lib/createApi.js.map +1 -1
  14. package/dist/lib/createController.d.ts +4 -0
  15. package/dist/lib/createController.d.ts.map +1 -0
  16. package/dist/lib/createController.js +113 -0
  17. package/dist/lib/createController.js.map +1 -0
  18. package/dist/lib/createRequestId.d.ts +2 -0
  19. package/dist/lib/createRequestId.d.ts.map +1 -0
  20. package/dist/lib/createRequestId.js +6 -0
  21. package/dist/lib/createRequestId.js.map +1 -0
  22. package/dist/lib/fetchBaseQuery.d.ts +1 -1
  23. package/dist/lib/fetchBaseQuery.d.ts.map +1 -1
  24. package/dist/lib/getHookName.d.ts +1 -1
  25. package/dist/lib/getHookName.d.ts.map +1 -1
  26. package/dist/lib/initiateMutation.d.ts +7 -0
  27. package/dist/lib/initiateMutation.d.ts.map +1 -0
  28. package/dist/lib/initiateMutation.js +47 -0
  29. package/dist/lib/initiateMutation.js.map +1 -0
  30. package/dist/lib/initiateQuery.d.ts +4 -0
  31. package/dist/lib/initiateQuery.d.ts.map +1 -0
  32. package/dist/lib/initiateQuery.js +35 -0
  33. package/dist/lib/initiateQuery.js.map +1 -0
  34. package/dist/lib/makeLazyQueryHook.d.ts +8 -8
  35. package/dist/lib/makeLazyQueryHook.d.ts.map +1 -1
  36. package/dist/lib/makeLazyQueryHook.js +10 -87
  37. package/dist/lib/makeLazyQueryHook.js.map +1 -1
  38. package/dist/lib/makeMutationHook.d.ts +1 -1
  39. package/dist/lib/makeMutationHook.d.ts.map +1 -1
  40. package/dist/lib/makeMutationHook.js +2 -6
  41. package/dist/lib/makeMutationHook.js.map +1 -1
  42. package/dist/lib/makeQueryHook.d.ts +9 -8
  43. package/dist/lib/makeQueryHook.d.ts.map +1 -1
  44. package/dist/lib/makeQueryHook.js +8 -79
  45. package/dist/lib/makeQueryHook.js.map +1 -1
  46. package/dist/lib/runQuery.d.ts +11 -0
  47. package/dist/lib/runQuery.d.ts.map +1 -0
  48. package/dist/lib/runQuery.js +83 -0
  49. package/dist/lib/runQuery.js.map +1 -0
  50. package/dist/model/mutation.d.ts +1 -1
  51. package/dist/model/mutation.d.ts.map +1 -1
  52. package/dist/model/query.d.ts +1 -1
  53. package/dist/model/query.d.ts.map +1 -1
  54. package/dist/model/queryStore.d.ts +10 -5
  55. package/dist/model/queryStore.d.ts.map +1 -1
  56. package/dist/model/queryStore.js +46 -8
  57. package/dist/model/queryStore.js.map +1 -1
  58. package/dist/model/types.d.ts +63 -6
  59. package/dist/model/types.d.ts.map +1 -1
  60. 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,3 @@
1
+ export { createController } from './lib/createController.js';
2
+ export type { ApiEndpointMutation, ApiEndpointQuery, MutationController, QueryController, } from './model/types.js';
3
+ //# sourceMappingURL=controller.d.ts.map
@@ -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,2 @@
1
+ export { createController } from './lib/createController.js';
2
+ //# sourceMappingURL=controller.js.map
@@ -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
- import { createApi } from './lib/createApi.js';
2
- import { fetchBaseQuery } from './lib/fetchBaseQuery.js';
3
- export { createApi, fetchBaseQuery };
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
@@ -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;AAEzD,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,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
- import { createApi } from './lib/createApi.js';
2
- import { fetchBaseQuery } from './lib/fetchBaseQuery.js';
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;AAEzD,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,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"}
@@ -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;AAQ1C,OAAO,EAAE,WAAW,EAAE,eAAe,EAAiB,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAOnG,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,CAgDzC"}
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"}
@@ -1,15 +1,18 @@
1
1
  import { mutation } from '../model/mutation.js';
2
2
  import { query } from '../model/query.js';
3
- import { getQueryData, setQueryData, updateQueryData, setQueryTagResolver, setQueryKeySerializer, } from '../model/queryStore.js';
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,eAAe,EACf,mBAAmB,EACnB,qBAAqB,GACxB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAevD,MAAM,UAAU,SAAS,CAA8C,EACnE,SAAS,EACT,SAAS,GACQ;IACjB,MAAM,oBAAoB,GAAG,SAAS,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;IAE5D,MAAM,IAAI,GAAG,eAAe,CAAC,oBAAoB,CAAC,CAAC;IACnD,MAAM,SAAS,GAA4B,EAAE,CAAC;IAE9C,IAAI,CAAC,OAAO,CAAC,CAAC,YAAY,EAAE,EAAE;QAC1B,MAAM,UAAU,GAAG,oBAAoB,CAAC,YAAY,CAAC,CAAC;QAEtD,MAAM,aAAa,GAAG;YAClB,SAAS;YACT,YAAY;YACZ,GAAG,UAAU;SAChB,CAAC;QAEF,IAAI,UAAU,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAC9B,qBAAqB,CACjB,YAAY,EACZ,CAAC,GAAG,EAAE,EAAE,CAAC,UAAU,CAAC,aAAa;gBAC7B,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC,GAAG,CAAC;gBAC/B,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAC5B,CAAC;YAEF,mBAAmB,CACf,YAAY,EACZ,UAAU,CAAC,YAAY;gBACnB,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE;gBAC3D,CAAC,CAAC,SAAS,CAClB,CAAC;YAEF,SAAS,CAAC,WAAW,CAAC,YAAY,EAAE,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,GAAG,iBAAiB,CAAC,aAAa,CAAC,CAAC;QACrG,CAAC;QAED,SAAS,CAAC,WAAW,CAAC,YAAY,EAAE,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,GAAG,UAAU,CAAC,IAAI,KAAK,OAAO;YACnF,CAAC,CAAC,CACE,aAAa,CAAC,aAAa,CAAC,CAC/B,CAAC,CAAC,CAAC,CACA,gBAAgB,CAAC,aAAa,CAAC,CAClC,CAAC;IACV,CAAC,CAAC,CAAC;IAEH,MAAM,IAAI,GAAkB;QACxB,YAAY;QACZ,YAAY;QACZ,eAAe;KAClB,CAAC;IAEF,OAAO,EAAE,GAAG,SAAS,EAAE,IAAI,EAAwB,CAAC;AACxD,CAAC"}
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,2 @@
1
+ export declare function createRequestId(): string;
2
+ //# sourceMappingURL=createRequestId.d.ts.map
@@ -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,6 @@
1
+ let nextRequestId = 0;
2
+ export function createRequestId() {
3
+ nextRequestId += 1;
4
+ return `request-${nextRequestId}`;
5
+ }
6
+ //# sourceMappingURL=createRequestId.js.map
@@ -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,EACX,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,qBAAqB,EACxB,MAAM,mBAAmB,CAAC;AAqF3B,wBAAgB,cAAc,CAC1B,OAAO,GAAE,qBAA0B,GACpC,WAAW,CAAC,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,kBAAkB,CAAC,CAoInF"}
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;AAG3D,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"}
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 { BaseQueryFn, QueryBuilderDefinition } from '../model/types.js';
2
- type MakeLazyQueryHookProps<R, A, Raw = R> = {
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 error?: unknown;
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":"AAgBA,OAAO,EAAE,WAAW,EAAmB,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAEzF,KAAK,sBAAsB,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,IAAI;IACzC,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;CAC/B,GAAG,IAAI,CAAC,sBAAsB,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;AAEpD,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,EAC7C,KAAK,EACL,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,iBAAiB,EACjB,iBAAqB,EACrB,sBAAsB,GACzB,EAAE,sBAAsB,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,yBAqJM,CAAC;;;;;;;GA8C1C"}
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"}