@geekmidas/client 0.4.0 → 1.0.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 (72) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/dist/auth-fetcher.cjs +0 -1
  3. package/dist/auth-fetcher.cjs.map +1 -1
  4. package/dist/auth-fetcher.d.cts +1 -1
  5. package/dist/auth-fetcher.d.cts.map +1 -1
  6. package/dist/auth-fetcher.d.mts +1 -1
  7. package/dist/auth-fetcher.d.mts.map +1 -1
  8. package/dist/auth-fetcher.mjs +0 -1
  9. package/dist/auth-fetcher.mjs.map +1 -1
  10. package/dist/endpoint-hooks.cjs +10 -5
  11. package/dist/endpoint-hooks.cjs.map +1 -1
  12. package/dist/endpoint-hooks.d.cts +2 -2
  13. package/dist/endpoint-hooks.d.cts.map +1 -1
  14. package/dist/endpoint-hooks.d.mts +2 -2
  15. package/dist/endpoint-hooks.d.mts.map +1 -1
  16. package/dist/endpoint-hooks.mjs +10 -5
  17. package/dist/endpoint-hooks.mjs.map +1 -1
  18. package/dist/fetcher-5fnBE7Dk.mjs.map +1 -1
  19. package/dist/fetcher-CgLEaIAC.cjs.map +1 -1
  20. package/dist/fetcher.d.cts +1 -1
  21. package/dist/fetcher.d.cts.map +1 -1
  22. package/dist/fetcher.d.mts +1 -1
  23. package/dist/fetcher.d.mts.map +1 -1
  24. package/dist/infer.d.cts.map +1 -1
  25. package/dist/infer.d.mts.map +1 -1
  26. package/dist/openapi-hooks.cjs.map +1 -1
  27. package/dist/openapi-hooks.d.cts +2 -2
  28. package/dist/openapi-hooks.d.cts.map +1 -1
  29. package/dist/openapi-hooks.d.mts +5 -5
  30. package/dist/openapi-hooks.d.mts.map +1 -1
  31. package/dist/openapi-hooks.mjs.map +1 -1
  32. package/dist/openapi-types.d.cts.map +1 -1
  33. package/dist/openapi-types.d.mts.map +1 -1
  34. package/dist/openapi.cjs.map +1 -1
  35. package/dist/openapi.mjs.map +1 -1
  36. package/dist/react-query.cjs.map +1 -1
  37. package/dist/react-query.d.cts +1 -1
  38. package/dist/react-query.d.cts.map +1 -1
  39. package/dist/react-query.d.mts +8 -8
  40. package/dist/react-query.d.mts.map +1 -1
  41. package/dist/react-query.mjs.map +1 -1
  42. package/dist/{types-FxummKaL.d.mts → types-4K4N-Fl1.d.cts} +2 -2
  43. package/dist/types-4K4N-Fl1.d.cts.map +1 -0
  44. package/dist/{types-vutATyWv.d.cts → types-hhkZWjQn.d.mts} +2 -2
  45. package/dist/types-hhkZWjQn.d.mts.map +1 -0
  46. package/dist/types.d.cts +1 -1
  47. package/dist/types.d.mts +1 -1
  48. package/package.json +5 -5
  49. package/src/__tests__/auth-fetcher.spec.ts +476 -476
  50. package/src/__tests__/endpoint-hooks.spec.tsx +348 -348
  51. package/src/__tests__/fetcher.spec.ts +403 -403
  52. package/src/__tests__/infer.integration.spec.ts +171 -171
  53. package/src/__tests__/infer.spec.ts +182 -182
  54. package/src/__tests__/method-restrictions.spec.tsx +165 -165
  55. package/src/__tests__/openapi-hooks.spec.tsx +536 -536
  56. package/src/__tests__/react-query-infinite.spec.tsx +989 -989
  57. package/src/__tests__/react-query-invalidation.spec.tsx +223 -222
  58. package/src/__tests__/react-query.spec.tsx +567 -567
  59. package/src/__tests__/setup.ts +260 -260
  60. package/src/__tests__/types.spec.ts +127 -127
  61. package/src/__tests__/url-parsing.spec.ts +191 -191
  62. package/src/auth-fetcher.ts +160 -162
  63. package/src/endpoint-hooks.ts +151 -156
  64. package/src/fetcher.ts +163 -163
  65. package/src/infer.ts +64 -63
  66. package/src/openapi-hooks.ts +146 -146
  67. package/src/openapi-types.d.ts +428 -428
  68. package/src/openapi.json +593 -593
  69. package/src/react-query.ts +281 -281
  70. package/src/types.ts +121 -124
  71. package/dist/types-FxummKaL.d.mts.map +0 -1
  72. package/dist/types-vutATyWv.d.cts.map +0 -1
@@ -11,70 +11,70 @@ import { createTypedQueryClient } from '../react-query';
11
11
  import './setup';
12
12
 
13
13
  describe('Method Restrictions', () => {
14
- const queryClient = new QueryClient({
15
- defaultOptions: {
16
- queries: {
17
- retry: false,
18
- },
19
- },
20
- });
21
-
22
- const wrapper = ({ children }: { children: React.ReactNode }) => (
23
- <QueryClientProvider client={queryClient}>{children}</QueryClientProvider>
24
- );
25
-
26
- describe('useQuery', () => {
27
- it('should accept GET endpoints', () => {
28
- const typedClient = createTypedQueryClient<paths>({
29
- baseURL: 'https://api.example.com',
30
- });
31
-
32
- // This should compile - GET endpoints are allowed
33
- const { result } = renderHook(() => typedClient.useQuery('GET /users'), {
34
- wrapper,
35
- });
36
-
37
- expect(result.current).toBeDefined();
38
- });
39
-
40
- it('should accept GET endpoints with parameters', () => {
41
- const typedClient = createTypedQueryClient<paths>({
42
- baseURL: 'https://api.example.com',
43
- });
44
-
45
- // This should compile - GET endpoints with params are allowed
46
- const { result } = renderHook(
47
- () =>
48
- typedClient.useQuery('GET /users/{id}', {
49
- params: { id: '123' },
50
- }),
51
- { wrapper },
52
- );
53
-
54
- expect(result.current).toBeDefined();
55
- });
56
-
57
- it('should accept GET endpoints with query parameters', () => {
58
- const typedClient = createTypedQueryClient<paths>({
59
- baseURL: 'https://api.example.com',
60
- });
61
-
62
- // This should compile - GET endpoints with query params are allowed
63
- const { result } = renderHook(
64
- () =>
65
- typedClient.useQuery('GET /posts', {
66
- query: { page: 1, limit: 10 },
67
- }),
68
- { wrapper },
69
- );
70
-
71
- expect(result.current).toBeDefined();
72
- });
73
-
74
- // The following tests would fail TypeScript compilation if uncommented
75
- // They are left here as documentation of what should NOT work
76
-
77
- /*
14
+ const queryClient = new QueryClient({
15
+ defaultOptions: {
16
+ queries: {
17
+ retry: false,
18
+ },
19
+ },
20
+ });
21
+
22
+ const wrapper = ({ children }: { children: React.ReactNode }) => (
23
+ <QueryClientProvider client={queryClient}>{children}</QueryClientProvider>
24
+ );
25
+
26
+ describe('useQuery', () => {
27
+ it('should accept GET endpoints', () => {
28
+ const typedClient = createTypedQueryClient<paths>({
29
+ baseURL: 'https://api.example.com',
30
+ });
31
+
32
+ // This should compile - GET endpoints are allowed
33
+ const { result } = renderHook(() => typedClient.useQuery('GET /users'), {
34
+ wrapper,
35
+ });
36
+
37
+ expect(result.current).toBeDefined();
38
+ });
39
+
40
+ it('should accept GET endpoints with parameters', () => {
41
+ const typedClient = createTypedQueryClient<paths>({
42
+ baseURL: 'https://api.example.com',
43
+ });
44
+
45
+ // This should compile - GET endpoints with params are allowed
46
+ const { result } = renderHook(
47
+ () =>
48
+ typedClient.useQuery('GET /users/{id}', {
49
+ params: { id: '123' },
50
+ }),
51
+ { wrapper },
52
+ );
53
+
54
+ expect(result.current).toBeDefined();
55
+ });
56
+
57
+ it('should accept GET endpoints with query parameters', () => {
58
+ const typedClient = createTypedQueryClient<paths>({
59
+ baseURL: 'https://api.example.com',
60
+ });
61
+
62
+ // This should compile - GET endpoints with query params are allowed
63
+ const { result } = renderHook(
64
+ () =>
65
+ typedClient.useQuery('GET /posts', {
66
+ query: { page: 1, limit: 10 },
67
+ }),
68
+ { wrapper },
69
+ );
70
+
71
+ expect(result.current).toBeDefined();
72
+ });
73
+
74
+ // The following tests would fail TypeScript compilation if uncommented
75
+ // They are left here as documentation of what should NOT work
76
+
77
+ /*
78
78
  it('should NOT accept POST endpoints', () => {
79
79
  const typedClient = createTypedQueryClient<paths>({
80
80
  baseURL: 'https://api.example.com',
@@ -111,55 +111,55 @@ describe('Method Restrictions', () => {
111
111
  );
112
112
  });
113
113
  */
114
- });
115
-
116
- describe('useMutation', () => {
117
- it('should accept POST endpoints', () => {
118
- const typedClient = createTypedQueryClient<paths>({
119
- baseURL: 'https://api.example.com',
120
- });
121
-
122
- // This should compile - POST endpoints are allowed
123
- const { result } = renderHook(
124
- () => typedClient.useMutation('POST /users'),
125
- { wrapper },
126
- );
127
-
128
- expect(result.current).toBeDefined();
129
- });
130
-
131
- it('should accept PUT endpoints', () => {
132
- const typedClient = createTypedQueryClient<paths>({
133
- baseURL: 'https://api.example.com',
134
- });
135
-
136
- // This should compile - PUT endpoints are allowed
137
- const { result } = renderHook(
138
- () => typedClient.useMutation('PUT /users/{id}'),
139
- { wrapper },
140
- );
141
-
142
- expect(result.current).toBeDefined();
143
- });
144
-
145
- it('should accept DELETE endpoints', () => {
146
- const typedClient = createTypedQueryClient<paths>({
147
- baseURL: 'https://api.example.com',
148
- });
149
-
150
- // This should compile - DELETE endpoints are allowed
151
- const { result } = renderHook(
152
- () => typedClient.useMutation('DELETE /users/{id}'),
153
- { wrapper },
154
- );
155
-
156
- expect(result.current).toBeDefined();
157
- });
158
-
159
- // The following test would fail TypeScript compilation if uncommented
160
- // It is left here as documentation of what should NOT work
161
-
162
- /*
114
+ });
115
+
116
+ describe('useMutation', () => {
117
+ it('should accept POST endpoints', () => {
118
+ const typedClient = createTypedQueryClient<paths>({
119
+ baseURL: 'https://api.example.com',
120
+ });
121
+
122
+ // This should compile - POST endpoints are allowed
123
+ const { result } = renderHook(
124
+ () => typedClient.useMutation('POST /users'),
125
+ { wrapper },
126
+ );
127
+
128
+ expect(result.current).toBeDefined();
129
+ });
130
+
131
+ it('should accept PUT endpoints', () => {
132
+ const typedClient = createTypedQueryClient<paths>({
133
+ baseURL: 'https://api.example.com',
134
+ });
135
+
136
+ // This should compile - PUT endpoints are allowed
137
+ const { result } = renderHook(
138
+ () => typedClient.useMutation('PUT /users/{id}'),
139
+ { wrapper },
140
+ );
141
+
142
+ expect(result.current).toBeDefined();
143
+ });
144
+
145
+ it('should accept DELETE endpoints', () => {
146
+ const typedClient = createTypedQueryClient<paths>({
147
+ baseURL: 'https://api.example.com',
148
+ });
149
+
150
+ // This should compile - DELETE endpoints are allowed
151
+ const { result } = renderHook(
152
+ () => typedClient.useMutation('DELETE /users/{id}'),
153
+ { wrapper },
154
+ );
155
+
156
+ expect(result.current).toBeDefined();
157
+ });
158
+
159
+ // The following test would fail TypeScript compilation if uncommented
160
+ // It is left here as documentation of what should NOT work
161
+
162
+ /*
163
163
  it('should NOT accept GET endpoints', () => {
164
164
  const typedClient = createTypedQueryClient<paths>({
165
165
  baseURL: 'https://api.example.com',
@@ -172,56 +172,56 @@ describe('Method Restrictions', () => {
172
172
  );
173
173
  });
174
174
  */
175
- });
176
-
177
- describe('Type inference', () => {
178
- it('should correctly infer response types for GET requests', () => {
179
- const typedClient = createTypedQueryClient<paths>({
180
- baseURL: 'https://api.example.com',
181
- });
182
-
183
- const { result } = renderHook(() => typedClient.useQuery('GET /users'), {
184
- wrapper,
185
- });
186
-
187
- // TypeScript should infer this type correctly
188
- type ResponseType = typeof result.current.data;
189
- type ExpectedType =
190
- | { users: Array<{ id: string; name: string; email: string }> }
191
- | undefined;
192
-
193
- // This assertion validates that the types match at compile time
194
- const _typeCheck: ResponseType extends ExpectedType ? true : false = true;
195
- const _typeCheck2: ExpectedType extends ResponseType ? true : false =
196
- true;
197
-
198
- expect(_typeCheck).toBe(true);
199
- expect(_typeCheck2).toBe(true);
200
- });
201
-
202
- it('should correctly infer response types for POST requests', () => {
203
- const typedClient = createTypedQueryClient<paths>({
204
- baseURL: 'https://api.example.com',
205
- });
206
-
207
- const { result } = renderHook(
208
- () => typedClient.useMutation('POST /users'),
209
- { wrapper },
210
- );
211
-
212
- // TypeScript should infer this type correctly
213
- type ResponseType = typeof result.current.data;
214
- type ExpectedType =
215
- | { id: string; name: string; email: string }
216
- | undefined;
217
-
218
- // This assertion validates that the types match at compile time
219
- const _typeCheck: ResponseType extends ExpectedType ? true : false = true;
220
- const _typeCheck2: ExpectedType extends ResponseType ? true : false =
221
- true;
222
-
223
- expect(_typeCheck).toBe(true);
224
- expect(_typeCheck2).toBe(true);
225
- });
226
- });
175
+ });
176
+
177
+ describe('Type inference', () => {
178
+ it('should correctly infer response types for GET requests', () => {
179
+ const typedClient = createTypedQueryClient<paths>({
180
+ baseURL: 'https://api.example.com',
181
+ });
182
+
183
+ const { result } = renderHook(() => typedClient.useQuery('GET /users'), {
184
+ wrapper,
185
+ });
186
+
187
+ // TypeScript should infer this type correctly
188
+ type ResponseType = typeof result.current.data;
189
+ type ExpectedType =
190
+ | { users: Array<{ id: string; name: string; email: string }> }
191
+ | undefined;
192
+
193
+ // This assertion validates that the types match at compile time
194
+ const _typeCheck: ResponseType extends ExpectedType ? true : false = true;
195
+ const _typeCheck2: ExpectedType extends ResponseType ? true : false =
196
+ true;
197
+
198
+ expect(_typeCheck).toBe(true);
199
+ expect(_typeCheck2).toBe(true);
200
+ });
201
+
202
+ it('should correctly infer response types for POST requests', () => {
203
+ const typedClient = createTypedQueryClient<paths>({
204
+ baseURL: 'https://api.example.com',
205
+ });
206
+
207
+ const { result } = renderHook(
208
+ () => typedClient.useMutation('POST /users'),
209
+ { wrapper },
210
+ );
211
+
212
+ // TypeScript should infer this type correctly
213
+ type ResponseType = typeof result.current.data;
214
+ type ExpectedType =
215
+ | { id: string; name: string; email: string }
216
+ | undefined;
217
+
218
+ // This assertion validates that the types match at compile time
219
+ const _typeCheck: ResponseType extends ExpectedType ? true : false = true;
220
+ const _typeCheck2: ExpectedType extends ResponseType ? true : false =
221
+ true;
222
+
223
+ expect(_typeCheck).toBe(true);
224
+ expect(_typeCheck2).toBe(true);
225
+ });
226
+ });
227
227
  });