@alistt69/create-api 0.2.10 → 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 +68 -2
  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
@@ -21,8 +21,9 @@
21
21
 
22
22
  ## 🚀 Demo
23
23
 
24
- - _[Live Demo](https://create-api-demo.vercel.app/)_
25
- - _Sandbox is coming soon..._
24
+ _[Live Demo](https://create-api-demo.vercel.app/)_
25
+ <br />
26
+ _Sandbox is coming soon..._
26
27
 
27
28
  ## ✨ Overview
28
29
 
@@ -165,6 +166,71 @@ api.util.updateQueryData('getPost', '1', (prev) => ({
165
166
  }));
166
167
  ```
167
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
+
168
234
  ## 📄 License
169
235
 
170
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"}