@alistt69/create-api 0.1.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 (55) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +87 -0
  3. package/dist/index.d.ts +3 -0
  4. package/dist/index.d.ts.map +1 -0
  5. package/dist/index.js +3 -0
  6. package/dist/index.js.map +1 -0
  7. package/dist/lib/createApi.d.ts +23 -0
  8. package/dist/lib/createApi.d.ts.map +1 -0
  9. package/dist/lib/createApi.js +38 -0
  10. package/dist/lib/createApi.js.map +1 -0
  11. package/dist/lib/createApi.test.d.ts +2 -0
  12. package/dist/lib/createApi.test.d.ts.map +1 -0
  13. package/dist/lib/createApi.test.js +231 -0
  14. package/dist/lib/createApi.test.js.map +1 -0
  15. package/dist/lib/getHookName.d.ts +3 -0
  16. package/dist/lib/getHookName.d.ts.map +1 -0
  17. package/dist/lib/getHookName.js +5 -0
  18. package/dist/lib/getHookName.js.map +1 -0
  19. package/dist/lib/makeLazyQueryHook.d.ts +10 -0
  20. package/dist/lib/makeLazyQueryHook.d.ts.map +1 -0
  21. package/dist/lib/makeLazyQueryHook.js +161 -0
  22. package/dist/lib/makeLazyQueryHook.js.map +1 -0
  23. package/dist/lib/makeMutationHook.d.ts +9 -0
  24. package/dist/lib/makeMutationHook.d.ts.map +1 -0
  25. package/dist/lib/makeMutationHook.js +82 -0
  26. package/dist/lib/makeMutationHook.js.map +1 -0
  27. package/dist/lib/makeQueryHook.d.ts +11 -0
  28. package/dist/lib/makeQueryHook.d.ts.map +1 -0
  29. package/dist/lib/makeQueryHook.js +117 -0
  30. package/dist/lib/makeQueryHook.js.map +1 -0
  31. package/dist/lib/typedCapitalize.d.ts +2 -0
  32. package/dist/lib/typedCapitalize.d.ts.map +1 -0
  33. package/dist/lib/typedCapitalize.js +4 -0
  34. package/dist/lib/typedCapitalize.js.map +1 -0
  35. package/dist/lib/typedObjectKeys.d.ts +2 -0
  36. package/dist/lib/typedObjectKeys.d.ts.map +1 -0
  37. package/dist/lib/typedObjectKeys.js +10 -0
  38. package/dist/lib/typedObjectKeys.js.map +1 -0
  39. package/dist/model/mutation.d.ts +5 -0
  40. package/dist/model/mutation.d.ts.map +1 -0
  41. package/dist/model/mutation.js +11 -0
  42. package/dist/model/mutation.js.map +1 -0
  43. package/dist/model/query.d.ts +5 -0
  44. package/dist/model/query.d.ts.map +1 -0
  45. package/dist/model/query.js +13 -0
  46. package/dist/model/query.js.map +1 -0
  47. package/dist/model/queryStore.d.ts +53 -0
  48. package/dist/model/queryStore.d.ts.map +1 -0
  49. package/dist/model/queryStore.js +276 -0
  50. package/dist/model/queryStore.js.map +1 -0
  51. package/dist/model/types.d.ts +187 -0
  52. package/dist/model/types.d.ts.map +1 -0
  53. package/dist/model/types.js +2 -0
  54. package/dist/model/types.js.map +1 -0
  55. package/package.json +53 -0
@@ -0,0 +1,276 @@
1
+ export const querySubscriptionsCount = new Map();
2
+ export const queryEndpointByKey = new Map();
3
+ export const queryGcTimeouts = new Map();
4
+ export function incrementQuerySubscriptions(key) {
5
+ const currentCount = querySubscriptionsCount.get(key) ?? 0;
6
+ const nextCount = currentCount + 1;
7
+ querySubscriptionsCount.set(key, nextCount);
8
+ return nextCount;
9
+ }
10
+ export function decrementQuerySubscriptions(key) {
11
+ const currentCount = querySubscriptionsCount.get(key) ?? 0;
12
+ const nextCount = Math.max(0, currentCount - 1);
13
+ querySubscriptionsCount.set(key, nextCount);
14
+ return nextCount;
15
+ }
16
+ export const queryKeySerializers = new Map();
17
+ export function setQueryKeySerializer(endpointName, serializer) {
18
+ queryKeySerializers.set(endpointName, serializer);
19
+ }
20
+ export function getQueryKeyByEndpointArg(endpointName, arg) {
21
+ const serializer = queryKeySerializers.get(endpointName);
22
+ const serializedArg = serializer ? serializer(arg) : JSON.stringify(arg);
23
+ return `${endpointName}::${serializedArg}`;
24
+ }
25
+ export function getQueryData(endpointName, arg) {
26
+ const key = getQueryKeyByEndpointArg(endpointName, arg);
27
+ return getQueryState(key)?.data;
28
+ }
29
+ export function setQueryData(endpointName, arg, data) {
30
+ const key = getQueryKeyByEndpointArg(endpointName, arg);
31
+ updateQueryState(key, (prevState) => ({
32
+ ...prevState,
33
+ data,
34
+ error: undefined,
35
+ isLoading: false,
36
+ isFetching: false,
37
+ fulfilledAt: prevState.fulfilledAt ?? Date.now(),
38
+ }));
39
+ const tags = getQueryTagsForData(endpointName, data, arg);
40
+ setTagsForQueryKey(key, tags);
41
+ }
42
+ export const queryListeners = new Map();
43
+ export function subscribeToQuery(key, listener, keepUnusedDataFor) {
44
+ if (!queryListeners.has(key)) {
45
+ queryListeners.set(key, []);
46
+ }
47
+ incrementQuerySubscriptions(key);
48
+ const gcTimeout = queryGcTimeouts.get(key);
49
+ if (gcTimeout) {
50
+ clearTimeout(gcTimeout);
51
+ queryGcTimeouts.delete(key);
52
+ }
53
+ queryListeners.get(key).push(listener);
54
+ return function unsubscribe() {
55
+ const listeners = queryListeners.get(key);
56
+ if (listeners) {
57
+ queryListeners.set(key, listeners.filter((currentListener) => currentListener !== listener));
58
+ }
59
+ const nextCount = decrementQuerySubscriptions(key);
60
+ if (nextCount === 0) {
61
+ scheduleCleanupIfUnused(key, keepUnusedDataFor);
62
+ }
63
+ };
64
+ }
65
+ export function notifyQueryListeners(key) {
66
+ const listeners = queryListeners.get(key) ?? [];
67
+ listeners.forEach((listener) => {
68
+ listener();
69
+ });
70
+ }
71
+ export const queryStore = new Map();
72
+ export function getQueryState(key) {
73
+ return queryStore.get(key);
74
+ }
75
+ export function setQueryState(key, state) {
76
+ queryStore.set(key, state);
77
+ notifyQueryListeners(key);
78
+ }
79
+ export function getQueryKey(endpointName, args) {
80
+ return `${endpointName}::${JSON.stringify(args)}`;
81
+ }
82
+ export function initQueryState(key) {
83
+ if (!queryStore.has(key)) {
84
+ const newValue = {
85
+ data: undefined,
86
+ isLoading: false,
87
+ isFetching: false,
88
+ error: undefined,
89
+ fulfilledAt: undefined,
90
+ };
91
+ queryStore.set(key, newValue);
92
+ }
93
+ return queryStore.get(key);
94
+ }
95
+ export function updateQueryState(key, updater) {
96
+ const newState = updater(initQueryState(key));
97
+ queryStore.set(key, newState);
98
+ notifyQueryListeners(key);
99
+ return newState;
100
+ }
101
+ export const inFlightQueries = new Map();
102
+ export function getInFlightQuery(key) {
103
+ return inFlightQueries.get(key);
104
+ }
105
+ export function setInFlightQuery(key, promise) {
106
+ inFlightQueries.set(key, promise);
107
+ }
108
+ export function clearInFlightQuery(key, promise) {
109
+ if (promise && inFlightQueries.get(key) !== promise) {
110
+ return;
111
+ }
112
+ inFlightQueries.delete(key);
113
+ }
114
+ export const queryRunners = new Map();
115
+ export function setQueryRunner(key, runner) {
116
+ queryRunners.set(key, runner);
117
+ }
118
+ export function getQueryRunner(key) {
119
+ return queryRunners.get(key);
120
+ }
121
+ export function refetchQueryByKey(key) {
122
+ const runner = queryRunners.get(key);
123
+ return runner?.();
124
+ }
125
+ export function refetchQueriesByEndpoint(endpointName) {
126
+ const keys = queryKeysByEndpoint.get(endpointName);
127
+ if (!keys) {
128
+ return [];
129
+ }
130
+ return Array.from(keys)
131
+ .map((key) => refetchQueryByKey(key))
132
+ .filter((value) => value !== undefined);
133
+ }
134
+ export function clearQueryRunner(key) {
135
+ queryRunners.delete(key);
136
+ }
137
+ export const queryKeysByEndpoint = new Map();
138
+ export function registerQueryKey(endpointName, key) {
139
+ if (!queryKeysByEndpoint.has(endpointName)) {
140
+ queryKeysByEndpoint.set(endpointName, new Set());
141
+ }
142
+ queryEndpointByKey.set(key, endpointName);
143
+ queryKeysByEndpoint.get(endpointName)?.add(key);
144
+ }
145
+ export function unregisterQueryKey(endpointName, key) {
146
+ const keys = queryKeysByEndpoint.get(endpointName);
147
+ if (!keys) {
148
+ return;
149
+ }
150
+ keys.delete(key);
151
+ queryEndpointByKey.delete(key);
152
+ if (keys.size === 0) {
153
+ queryKeysByEndpoint.delete(endpointName);
154
+ }
155
+ }
156
+ export function cleanupQuery(key) {
157
+ abortQueryByKey(key);
158
+ clearTagsForQueryKey(key);
159
+ const endpointName = queryEndpointByKey.get(key);
160
+ if (endpointName) {
161
+ const keys = queryKeysByEndpoint.get(endpointName);
162
+ if (keys) {
163
+ keys.delete(key);
164
+ if (keys.size === 0) {
165
+ queryKeysByEndpoint.delete(endpointName);
166
+ }
167
+ }
168
+ queryEndpointByKey.delete(key);
169
+ }
170
+ queryStore.delete(key);
171
+ inFlightQueries.delete(key);
172
+ queryListeners.delete(key);
173
+ queryRunners.delete(key);
174
+ queryGcTimeouts.delete(key);
175
+ querySubscriptionsCount.delete(key);
176
+ }
177
+ export const queryKeysByTag = new Map();
178
+ export const queryTagsByKey = new Map();
179
+ export function clearTagsForQueryKey(key) {
180
+ const tags = queryTagsByKey.get(key);
181
+ if (!tags) {
182
+ return;
183
+ }
184
+ tags.forEach((tag) => {
185
+ const keys = queryKeysByTag.get(tag);
186
+ if (!keys) {
187
+ return;
188
+ }
189
+ keys.delete(key);
190
+ if (keys.size === 0) {
191
+ queryKeysByTag.delete(tag);
192
+ }
193
+ });
194
+ queryTagsByKey.delete(key);
195
+ }
196
+ export function setTagsForQueryKey(key, tags) {
197
+ clearTagsForQueryKey(key);
198
+ const uniqueTags = new Set(tags);
199
+ queryTagsByKey.set(key, uniqueTags);
200
+ uniqueTags.forEach((tag) => {
201
+ if (!queryKeysByTag.has(tag)) {
202
+ queryKeysByTag.set(tag, new Set());
203
+ }
204
+ queryKeysByTag.get(tag).add(key);
205
+ });
206
+ }
207
+ export function getQueryKeysByTag(tag) {
208
+ return Array.from(queryKeysByTag.get(tag) ?? []);
209
+ }
210
+ export const queryTagResolvers = new Map();
211
+ export function setQueryTagResolver(endpointName, resolver) {
212
+ if (!resolver) {
213
+ queryTagResolvers.delete(endpointName);
214
+ return;
215
+ }
216
+ queryTagResolvers.set(endpointName, resolver);
217
+ }
218
+ export function getQueryTagsForData(endpointName, data, arg) {
219
+ const resolver = queryTagResolvers.get(endpointName);
220
+ if (!resolver) {
221
+ return [];
222
+ }
223
+ return resolver(data, arg);
224
+ }
225
+ export function updateQueryData(endpointName, arg, updater) {
226
+ const key = getQueryKeyByEndpointArg(endpointName, arg);
227
+ const prevData = getQueryState(key)?.data;
228
+ const nextData = updater(prevData);
229
+ updateQueryState(key, (prevState) => ({
230
+ ...prevState,
231
+ data: nextData,
232
+ error: undefined,
233
+ isLoading: false,
234
+ isFetching: false,
235
+ fulfilledAt: prevState.fulfilledAt ?? Date.now(),
236
+ }));
237
+ const tags = getQueryTagsForData(endpointName, nextData, arg);
238
+ setTagsForQueryKey(key, tags);
239
+ return nextData;
240
+ }
241
+ export const queryAbortControllers = new Map();
242
+ export function setQueryAbortController(key, controller) {
243
+ queryAbortControllers.set(key, controller);
244
+ }
245
+ export function getQueryAbortController(key) {
246
+ return queryAbortControllers.get(key);
247
+ }
248
+ export function clearQueryAbortController(key, controller) {
249
+ if (controller && queryAbortControllers.get(key) !== controller) {
250
+ return;
251
+ }
252
+ queryAbortControllers.delete(key);
253
+ }
254
+ export function abortQueryByKey(key) {
255
+ const controller = queryAbortControllers.get(key);
256
+ if (!controller) {
257
+ return;
258
+ }
259
+ controller.abort();
260
+ queryAbortControllers.delete(key);
261
+ }
262
+ export function scheduleCleanupIfUnused(key, keepUnusedDataFor) {
263
+ const subscriptionsCount = querySubscriptionsCount.get(key) ?? 0;
264
+ if (subscriptionsCount > 0) {
265
+ return;
266
+ }
267
+ const existingTimeout = queryGcTimeouts.get(key);
268
+ if (existingTimeout) {
269
+ clearTimeout(existingTimeout);
270
+ }
271
+ const timeout = setTimeout(() => {
272
+ cleanupQuery(key);
273
+ }, keepUnusedDataFor);
274
+ queryGcTimeouts.set(key, timeout);
275
+ }
276
+ //# sourceMappingURL=queryStore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queryStore.js","sourceRoot":"","sources":["../../src/model/queryStore.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,MAAM,uBAAuB,GAAG,IAAI,GAAG,EAAkB,CAAC;AAEjE,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAkB,CAAC;AAE5D,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,GAAG,EAAyC,CAAC;AAEhF,MAAM,UAAU,2BAA2B,CAAC,GAAW;IACnD,MAAM,YAAY,GAAG,uBAAuB,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC3D,MAAM,SAAS,GAAG,YAAY,GAAG,CAAC,CAAC;IAEnC,uBAAuB,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IAE5C,OAAO,SAAS,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,GAAW;IACnD,MAAM,YAAY,GAAG,uBAAuB,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC3D,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,GAAG,CAAC,CAAC,CAAC;IAEhD,uBAAuB,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IAE5C,OAAO,SAAS,CAAC;AACrB,CAAC;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAAoC,CAAC;AAE/E,MAAM,UAAU,qBAAqB,CACjC,YAAoB,EACpB,UAAoC;IAEpC,mBAAmB,CAAC,GAAG,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,YAAoB,EAAE,GAAY;IACvE,MAAM,UAAU,GAAG,mBAAmB,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IACzD,MAAM,aAAa,GAAG,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAEzE,OAAO,GAAG,YAAY,KAAK,aAAa,EAAE,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,YAAY,CAAI,YAAoB,EAAE,GAAY;IAC9D,MAAM,GAAG,GAAG,wBAAwB,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;IAExD,OAAO,aAAa,CAAC,GAAG,CAAC,EAAE,IAAqB,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,YAAY,CAAI,YAAoB,EAAE,GAAY,EAAE,IAAO;IACvE,MAAM,GAAG,GAAG,wBAAwB,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;IAExD,gBAAgB,CAAC,GAAG,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QAClC,GAAG,SAAS;QACZ,IAAI;QACJ,KAAK,EAAE,SAAS;QAChB,SAAS,EAAE,KAAK;QAChB,UAAU,EAAE,KAAK;QACjB,WAAW,EAAE,SAAS,CAAC,WAAW,IAAI,IAAI,CAAC,GAAG,EAAE;KACnD,CAAC,CAAC,CAAC;IAEJ,MAAM,IAAI,GAAG,mBAAmB,CAAC,YAAY,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;IAC1D,kBAAkB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AAClC,CAAC;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,GAAG,EAA0B,CAAC;AAEhE,MAAM,UAAU,gBAAgB,CAAC,GAAW,EAAE,QAAoB,EAAE,iBAAyB;IACzF,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;QAC3B,cAAc,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAChC,CAAC;IAED,2BAA2B,CAAC,GAAG,CAAC,CAAC;IAEjC,MAAM,SAAS,GAAG,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAE3C,IAAI,SAAS,EAAE,CAAC;QACZ,YAAY,CAAC,SAAS,CAAC,CAAC;QACxB,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC;IAED,cAAc,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAExC,OAAO,SAAS,WAAW;QACvB,MAAM,SAAS,GAAG,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAE1C,IAAI,SAAS,EAAE,CAAC;YACZ,cAAc,CAAC,GAAG,CACd,GAAG,EACH,SAAS,CAAC,MAAM,CAAC,CAAC,eAAe,EAAE,EAAE,CAAC,eAAe,KAAK,QAAQ,CAAC,CACtE,CAAC;QACN,CAAC;QAED,MAAM,SAAS,GAAG,2BAA2B,CAAC,GAAG,CAAC,CAAC;QAEnD,IAAI,SAAS,KAAK,CAAC,EAAE,CAAC;YAClB,uBAAuB,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC;QACpD,CAAC;IACL,CAAC,CAAC;AACN,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,GAAW;IAC5C,MAAM,SAAS,GAAG,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;IAEhD,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;QAC3B,QAAQ,EAAE,CAAC;IACf,CAAC,CAAC,CAAC;AACP,CAAC;AAED,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,GAAG,EAAsB,CAAC;AAExD,MAAM,UAAU,aAAa,CAAC,GAAW;IACrC,OAAO,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,GAAW,EAAE,KAAiB;IACxD,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC3B,oBAAoB,CAAC,GAAG,CAAC,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,YAAoB,EAAE,IAAa;IAC3D,OAAO,GAAG,YAAY,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,GAAW;IACtC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,QAAQ,GAAsC;YAChD,IAAI,EAAE,SAAS;YACf,SAAS,EAAE,KAAK;YAChB,UAAU,EAAE,KAAK;YACjB,KAAK,EAAE,SAAS;YAChB,WAAW,EAAE,SAAS;SACzB,CAAC;QAEF,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IAClC,CAAC;IAED,OAAO,UAAU,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC5B,GAAW,EACX,OAA8C;IAE9C,MAAM,QAAQ,GAAG,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;IAE9C,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IAC9B,oBAAoB,CAAC,GAAG,CAAC,CAAC;IAE1B,OAAO,QAAQ,CAAC;AACpB,CAAC;AAED,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,GAAG,EAA4B,CAAC;AAEnE,MAAM,UAAU,gBAAgB,CAAc,GAAW;IACrD,OAAO,eAAe,CAAC,GAAG,CAAC,GAAG,CAA2B,CAAC;AAC9D,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAc,GAAW,EAAE,OAAmB;IAC1E,eAAe,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,GAAW,EAAE,OAA0B;IACtE,IAAI,OAAO,IAAI,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,OAAO,EAAE,CAAC;QAClD,OAAO;IACX,CAAC;IAED,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAChC,CAAC;AAID,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,GAAG,EAAuB,CAAC;AAE3D,MAAM,UAAU,cAAc,CAAC,GAAW,EAAE,MAAmB;IAC3D,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,GAAW;IACtC,OAAO,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,GAAW;IACzC,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAErC,OAAO,MAAM,EAAE,EAAE,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,YAAoB;IACzD,MAAM,IAAI,GAAG,mBAAmB,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAEnD,IAAI,CAAC,IAAI,EAAE,CAAC;QACR,OAAO,EAAE,CAAC;IACd,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;SAClB,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;SACpC,MAAM,CAAC,CAAC,KAAK,EAA6B,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC;AAC3E,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,GAAW;IACxC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC7B,CAAC;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAAuB,CAAC;AAElE,MAAM,UAAU,gBAAgB,CAAC,YAAoB,EAAE,GAAW;IAC9D,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC;QACzC,mBAAmB,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;IACrD,CAAC;IAED,kBAAkB,CAAC,GAAG,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;IAC1C,mBAAmB,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,YAAoB,EAAE,GAAW;IAChE,MAAM,IAAI,GAAG,mBAAmB,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAEnD,IAAI,CAAC,IAAI,EAAE,CAAC;QACR,OAAO;IACX,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACjB,kBAAkB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAE/B,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QAClB,mBAAmB,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IAC7C,CAAC;AACL,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,GAAW;IACpC,eAAe,CAAC,GAAG,CAAC,CAAC;IACrB,oBAAoB,CAAC,GAAG,CAAC,CAAC;IAE1B,MAAM,YAAY,GAAG,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAEjD,IAAI,YAAY,EAAE,CAAC;QACf,MAAM,IAAI,GAAG,mBAAmB,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAEnD,IAAI,IAAI,EAAE,CAAC;YACP,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAEjB,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;gBAClB,mBAAmB,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YAC7C,CAAC;QACL,CAAC;QAED,kBAAkB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACnC,CAAC;IAED,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACvB,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC5B,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC3B,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACzB,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC5B,uBAAuB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,GAAG,EAAuB,CAAC;AAC7D,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,GAAG,EAAuB,CAAC;AAE7D,MAAM,UAAU,oBAAoB,CAAC,GAAW;IAC5C,MAAM,IAAI,GAAG,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAErC,IAAI,CAAC,IAAI,EAAE,CAAC;QACR,OAAO;IACX,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;QACjB,MAAM,IAAI,GAAG,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAErC,IAAI,CAAC,IAAI,EAAE,CAAC;YACR,OAAO;QACX,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAEjB,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YAClB,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC/B,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,GAAW,EAAE,IAAc;IAC1D,oBAAoB,CAAC,GAAG,CAAC,CAAC;IAE1B,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;IACjC,cAAc,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IAEpC,UAAU,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;QACvB,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAC3B,cAAc,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;QACvC,CAAC;QAED,cAAc,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;AACP,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,GAAW;IACzC,OAAO,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;AACrD,CAAC;AAED,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAqD,CAAC;AAE9F,MAAM,UAAU,mBAAmB,CAC/B,YAAoB,EACpB,QAAoD;IAEpD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACZ,iBAAiB,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QACvC,OAAO;IACX,CAAC;IAED,iBAAiB,CAAC,GAAG,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,YAAoB,EAAE,IAAa,EAAE,GAAY;IACjF,MAAM,QAAQ,GAAG,iBAAiB,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAErD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACZ,OAAO,EAAE,CAAC;IACd,CAAC;IAED,OAAO,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,eAAe,CAC3B,YAAoB,EACpB,GAAY,EACZ,OAAuC;IAEvC,MAAM,GAAG,GAAG,wBAAwB,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;IACxD,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,EAAE,IAAqB,CAAC;IAC3D,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAEnC,gBAAgB,CAAC,GAAG,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QAClC,GAAG,SAAS;QACZ,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,SAAS;QAChB,SAAS,EAAE,KAAK;QAChB,UAAU,EAAE,KAAK;QACjB,WAAW,EAAE,SAAS,CAAC,WAAW,IAAI,IAAI,CAAC,GAAG,EAAE;KACnD,CAAC,CAAC,CAAC;IAEJ,MAAM,IAAI,GAAG,mBAAmB,CAAC,YAAY,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;IAC9D,kBAAkB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAE9B,OAAO,QAAQ,CAAC;AACpB,CAAC;AAED,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,GAAG,EAA2B,CAAC;AAExE,MAAM,UAAU,uBAAuB,CAAC,GAAW,EAAE,UAA2B;IAC5E,qBAAqB,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,GAAW;IAC/C,OAAO,qBAAqB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,GAAW,EAAE,UAA4B;IAC/E,IAAI,UAAU,IAAI,qBAAqB,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,UAAU,EAAE,CAAC;QAC9D,OAAO;IACX,CAAC;IAED,qBAAqB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,GAAW;IACvC,MAAM,UAAU,GAAG,qBAAqB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAElD,IAAI,CAAC,UAAU,EAAE,CAAC;QACd,OAAO;IACX,CAAC;IAED,UAAU,CAAC,KAAK,EAAE,CAAC;IACnB,qBAAqB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,GAAW,EAAE,iBAAyB;IAC1E,MAAM,kBAAkB,GAAG,uBAAuB,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAEjE,IAAI,kBAAkB,GAAG,CAAC,EAAE,CAAC;QACzB,OAAO;IACX,CAAC;IAED,MAAM,eAAe,GAAG,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAEjD,IAAI,eAAe,EAAE,CAAC;QAClB,YAAY,CAAC,eAAe,CAAC,CAAC;IAClC,CAAC;IAED,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;QAC5B,YAAY,CAAC,GAAG,CAAC,CAAC;IACtB,CAAC,EAAE,iBAAiB,CAAC,CAAC;IAEtB,eAAe,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AACtC,CAAC"}
@@ -0,0 +1,187 @@
1
+ import { BaseQueryArgs } from '../lib/createApi.js';
2
+ export type RequiredWithUndefined<T> = {
3
+ [K in keyof Required<T>]: T[K] extends undefined ? T[K] : T[K];
4
+ };
5
+ export type EndpointType = 'query' | 'mutation';
6
+ export type HookName<K extends string, T extends EndpointType, L extends string = ''> = `use${L}${Capitalize<K>}${Capitalize<T>}`;
7
+ export type LazyQueryHook<R, A> = () => readonly [
8
+ (arg: A) => Promise<R>,
9
+ InferQueryState<R> & LazyQueryManagers<R>
10
+ ];
11
+ export interface CreateApiUtil {
12
+ getQueryData: <R>(endpointName: string, arg: unknown) => R | undefined;
13
+ setQueryData: <R>(endpointName: string, arg: unknown, data: R) => void;
14
+ updateQueryData: <R>(endpointName: string, arg: unknown, updater: (prevData: R | undefined) => R) => R;
15
+ }
16
+ export type CreateApiResult<T extends Record<string, GeneralDefinition<unknown, unknown>>> = {
17
+ [K in keyof T as HookName<K & string, T[K]['type']>]: InferHook<T[K]>;
18
+ } & {
19
+ [K in keyof T as T[K]['type'] extends 'query' ? HookName<K & string, 'query', 'Lazy'> : never]: T[K] extends QueryBuilderDefinition<infer R, infer A, infer _Raw> ? LazyQueryHook<R, A> : never;
20
+ } & {
21
+ util: CreateApiUtil;
22
+ };
23
+ export type InferHook<Def> = Def extends QueryBuilderDefinition<infer R, infer A, infer _Raw> ? QueryHook<R, A> : Def extends MutationBuilderDefinition<infer R, infer A, infer _Raw> ? MutationHook<R, A> : never;
24
+ export type QueryTagsResolver<R, A> = (result: R, arg: A) => string[];
25
+ /**
26
+ * Query endpoint definition.
27
+ *
28
+ * @template R Final result type that will be exposed in hook `data`
29
+ * after `transformResponse` is applied.
30
+ * @template A Query argument type passed into the generated hook and `query`.
31
+ * @template Raw Raw response type returned by `baseQuery` before transformation.
32
+ */
33
+ export interface QueryBuilderDefinition<R, A, Raw = R> {
34
+ /**
35
+ * Internal endpoint kind discriminator.
36
+ */
37
+ type: 'query';
38
+ /**
39
+ * Builds request config for `baseQuery` from query arguments.
40
+ *
41
+ * Receives hook arguments and returns a transport-level request description.
42
+ */
43
+ query: (args: A) => BaseQueryArgs;
44
+ /**
45
+ * Custom query key serializer.
46
+ *
47
+ * Used to build cache key for shared store, dedupe, stale checks and refetching.
48
+ * If omitted, a default serialization strategy is used.
49
+ */
50
+ serializeArgs?: (args: A) => string;
51
+ /**
52
+ * Time in milliseconds during which cached data is considered fresh.
53
+ *
54
+ * While data is fresh, automatic refetch on mount is skipped.
55
+ * Manual `refetch()` should still work.
56
+ *
57
+ * @default 0
58
+ */
59
+ staleTime?: number;
60
+ /**
61
+ * Time in milliseconds to keep unused cached data after the last subscriber unmounts.
62
+ *
63
+ * When the last subscriber disappears, cache entry is scheduled for garbage collection.
64
+ * If a new subscriber appears before timeout expires, cleanup is cancelled.
65
+ *
66
+ * @default 0
67
+ */
68
+ keepUnusedDataFor?: number;
69
+ /**
70
+ * Declares which tags this query provides after a successful request.
71
+ *
72
+ * These tags are later used by mutations through `invalidatesTags`
73
+ * to determine which cached queries should be refetched.
74
+ */
75
+ providesTags?: QueryTagsResolver<R, A>;
76
+ /**
77
+ * Transforms raw `baseQuery` response into final hook result.
78
+ *
79
+ * Use this when transport response shape differs from the desired `data` shape.
80
+ * The returned value becomes cached query data and is exposed by the hook.
81
+ */
82
+ transformResponse?: (response: Raw, arg: A) => R;
83
+ /**
84
+ * Transforms query error before it is written into hook state.
85
+ *
86
+ * Useful for normalizing transport errors into a shape convenient for UI.
87
+ */
88
+ transformErrorResponse?: (error: unknown, arg: A) => unknown;
89
+ }
90
+ export type MutationTagsResolver<R, A> = (result: R, arg: A) => string[];
91
+ /**
92
+ * Mutation endpoint definition.
93
+ *
94
+ * @template R Final result type returned by mutation trigger and exposed in mutation state
95
+ * after `transformResponse` is applied.
96
+ * @template A Mutation argument type passed into trigger and `query`.
97
+ * @template Raw Raw response type returned by `baseQuery` before transformation.
98
+ */
99
+ export interface MutationBuilderDefinition<R, A, Raw = R> {
100
+ /**
101
+ * Internal endpoint kind discriminator.
102
+ */
103
+ type: 'mutation';
104
+ /**
105
+ * Builds request config for `baseQuery` from mutation arguments.
106
+ *
107
+ * Receives trigger arguments and returns a transport-level request description.
108
+ */
109
+ query: (args: A) => BaseQueryArgs;
110
+ /**
111
+ * Endpoint names that should be refetched after a successful mutation.
112
+ *
113
+ * This is a coarse invalidation mechanism: all active queries of listed endpoints
114
+ * will be refetched.
115
+ */
116
+ invalidates?: string[];
117
+ /**
118
+ * Tags that should be invalidated after a successful mutation.
119
+ *
120
+ * This is a more precise invalidation mechanism than `invalidates`.
121
+ * Matching cached queries that provided these tags will be refetched.
122
+ */
123
+ invalidatesTags?: MutationTagsResolver<R, A>;
124
+ /**
125
+ * Transforms raw `baseQuery` response into final mutation result.
126
+ *
127
+ * The returned value becomes the resolved trigger result and mutation `data`.
128
+ */
129
+ transformResponse?: (response: Raw, arg: A) => R;
130
+ /**
131
+ * Transforms mutation error before it is written into mutation state
132
+ * and rethrown from trigger.
133
+ */
134
+ transformErrorResponse?: (error: unknown, arg: A) => unknown;
135
+ }
136
+ export type GeneralDefinition<R = any, A = any, Raw = R> = (MutationBuilderDefinition<R, A, Raw> | QueryBuilderDefinition<R, A, Raw>);
137
+ export interface InferMutationState<R> {
138
+ data?: R;
139
+ isLoading: boolean;
140
+ error?: unknown;
141
+ }
142
+ export interface InferQueryState<R> {
143
+ data?: R;
144
+ isLoading: boolean;
145
+ isFetching: boolean;
146
+ error?: unknown;
147
+ fulfilledAt?: number;
148
+ }
149
+ export interface QueryManagers<R> {
150
+ refetch: () => Promise<R>;
151
+ }
152
+ export interface LazyQueryManagers<R> {
153
+ refetch: () => Promise<R> | undefined;
154
+ }
155
+ export interface MutationManagers {
156
+ reset: () => void;
157
+ }
158
+ export interface QueryHookOptions {
159
+ /**
160
+ * Enables or disables automatic query execution.
161
+ *
162
+ * When `false`, the hook does not automatically start a request on mount
163
+ * and does not react to stale data policy.
164
+ * Manual `refetch()` is still allowed.
165
+ *
166
+ * @default true
167
+ */
168
+ enabled?: boolean;
169
+ /**
170
+ * Controls whether the hook should automatically refetch cached data on mount.
171
+ *
172
+ * - `true` — refetch on mount only if cached data is stale
173
+ * - `false` — do not refetch on mount if cached data already exists
174
+ *
175
+ * If there is no cached data yet, the initial request is still executed
176
+ * regardless of this option.
177
+ *
178
+ * @default true
179
+ */
180
+ refetchOnMount?: boolean;
181
+ }
182
+ export type QueryHook<R, A> = (arg: A, options?: QueryHookOptions) => (InferQueryState<R> & QueryManagers<R>);
183
+ export type MutationHook<R, A> = () => readonly [
184
+ (arg: A) => Promise<R>,
185
+ InferMutationState<R> & MutationManagers
186
+ ];
187
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/model/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/model/types.ts"],"names":[],"mappings":""}
package/package.json ADDED
@@ -0,0 +1,53 @@
1
+ {
2
+ "name": "@alistt69/create-api",
3
+ "version": "0.1.0",
4
+ "description": "Lightweight createApi with query/mutation/lazy hooks",
5
+ "type": "module",
6
+ "sideEffects": false,
7
+ "files": ["dist"],
8
+ "main": "./dist/index.js",
9
+ "types": "./dist/index.d.ts",
10
+ "exports": {
11
+ ".": {
12
+ "types": "./dist/index.d.ts",
13
+ "import": "./dist/index.js"
14
+ }
15
+ },
16
+ "peerDependencies": {
17
+ "react": ">=16.8"
18
+ },
19
+ "dependencies": {
20
+ "use-sync-external-store": "^1.6.0"
21
+ },
22
+ "devDependencies": {
23
+ "@testing-library/react": "^16.3.2",
24
+ "@types/node": "^24.0.0",
25
+ "@types/react": "^19.2.14",
26
+ "@types/react-dom": "^19.2.3",
27
+ "@types/use-sync-external-store": "^1.5.0",
28
+ "jsdom": "^29.0.2",
29
+ "react": "^19.2.5",
30
+ "react-dom": "^19.2.5",
31
+ "typescript": "^5.9.0",
32
+ "vitest": "^3.2.4"
33
+ },
34
+ "scripts": {
35
+ "build": "tsc -p tsconfig.build.json",
36
+ "typecheck": "tsc -p tsconfig.build.json --noEmit",
37
+ "test": "vitest run --environment jsdom",
38
+ "prepack": "npm run typecheck && npm run test && npm run build"
39
+ },
40
+ "publishConfig": {
41
+ "access": "public"
42
+ },
43
+ "repository": {
44
+ "type": "git",
45
+ "url": "git+https://github.com/alistt69/alistt69-create-api.git"
46
+ },
47
+ "homepage": "https://github.com/alistt69/alistt69-create-api#readme",
48
+ "bugs": {
49
+ "url": "https://github.com/alistt69/alistt69-create-api/issues"
50
+ },
51
+ "keywords": ["react", "typescript", "api", "query", "mutation", "rtk-query", "data-fetching"],
52
+ "license": "MIT"
53
+ }