@geekmidas/client 0.3.0 → 0.5.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 (80) hide show
  1. package/dist/auth-fetcher.cjs +2 -3
  2. package/dist/auth-fetcher.cjs.map +1 -1
  3. package/dist/auth-fetcher.d.cts +2 -1
  4. package/dist/auth-fetcher.d.cts.map +1 -0
  5. package/dist/auth-fetcher.d.mts +2 -1
  6. package/dist/auth-fetcher.d.mts.map +1 -0
  7. package/dist/auth-fetcher.mjs +2 -3
  8. package/dist/auth-fetcher.mjs.map +1 -1
  9. package/dist/endpoint-hooks.cjs +10 -5
  10. package/dist/endpoint-hooks.cjs.map +1 -1
  11. package/dist/endpoint-hooks.d.cts +2 -2
  12. package/dist/endpoint-hooks.d.cts.map +1 -0
  13. package/dist/endpoint-hooks.d.mts +2 -2
  14. package/dist/endpoint-hooks.d.mts.map +1 -0
  15. package/dist/endpoint-hooks.mjs +10 -5
  16. package/dist/endpoint-hooks.mjs.map +1 -1
  17. package/dist/{fetcher-DLDD_7Sa.mjs → fetcher-5fnBE7Dk.mjs} +2 -2
  18. package/dist/fetcher-5fnBE7Dk.mjs.map +1 -0
  19. package/dist/{fetcher-KdwHgdAl.cjs → fetcher-CgLEaIAC.cjs} +2 -2
  20. package/dist/fetcher-CgLEaIAC.cjs.map +1 -0
  21. package/dist/fetcher.cjs +1 -1
  22. package/dist/fetcher.d.cts +3 -1
  23. package/dist/fetcher.d.cts.map +1 -0
  24. package/dist/fetcher.d.mts +3 -1
  25. package/dist/fetcher.d.mts.map +1 -0
  26. package/dist/fetcher.mjs +1 -1
  27. package/dist/infer.d.cts.map +1 -0
  28. package/dist/infer.d.mts.map +1 -0
  29. package/dist/openapi-hooks.cjs +3 -5
  30. package/dist/openapi-hooks.cjs.map +1 -1
  31. package/dist/openapi-hooks.d.cts +3 -3
  32. package/dist/openapi-hooks.d.cts.map +1 -0
  33. package/dist/openapi-hooks.d.mts +6 -6
  34. package/dist/openapi-hooks.d.mts.map +1 -0
  35. package/dist/openapi-hooks.mjs +3 -5
  36. package/dist/openapi-hooks.mjs.map +1 -1
  37. package/dist/openapi-types.d.cts.map +1 -0
  38. package/dist/openapi-types.d.mts.map +1 -0
  39. package/dist/openapi.cjs.map +1 -1
  40. package/dist/openapi.mjs.map +1 -1
  41. package/dist/react-query.cjs +1 -1
  42. package/dist/react-query.cjs.map +1 -1
  43. package/dist/react-query.d.cts +3 -1
  44. package/dist/react-query.d.cts.map +1 -0
  45. package/dist/react-query.d.mts +10 -8
  46. package/dist/react-query.d.mts.map +1 -0
  47. package/dist/react-query.mjs +1 -1
  48. package/dist/react-query.mjs.map +1 -1
  49. package/dist/{types-D4OSWveN.d.cts → types-4K4N-Fl1.d.cts} +8 -6
  50. package/dist/types-4K4N-Fl1.d.cts.map +1 -0
  51. package/dist/{types-Cdv1XAWr.d.mts → types-hhkZWjQn.d.mts} +8 -6
  52. package/dist/types-hhkZWjQn.d.mts.map +1 -0
  53. package/dist/types.d.cts +1 -1
  54. package/dist/types.d.mts +1 -1
  55. package/package.json +6 -5
  56. package/src/__tests__/auth-fetcher.spec.ts +505 -0
  57. package/src/__tests__/endpoint-hooks.spec.tsx +348 -348
  58. package/src/__tests__/fetcher.spec.ts +403 -403
  59. package/src/__tests__/infer.integration.spec.ts +171 -171
  60. package/src/__tests__/infer.spec.ts +182 -182
  61. package/src/__tests__/method-restrictions.spec.tsx +165 -165
  62. package/src/__tests__/openapi-hooks.spec.tsx +536 -537
  63. package/src/__tests__/react-query-infinite.spec.tsx +989 -989
  64. package/src/__tests__/react-query-invalidation.spec.tsx +223 -222
  65. package/src/__tests__/react-query.spec.tsx +567 -567
  66. package/src/__tests__/setup.ts +260 -260
  67. package/src/__tests__/types.spec.ts +127 -127
  68. package/src/__tests__/url-parsing.spec.ts +191 -191
  69. package/src/auth-fetcher.ts +160 -162
  70. package/src/endpoint-hooks.ts +151 -150
  71. package/src/fetcher.ts +163 -163
  72. package/src/infer.ts +64 -63
  73. package/src/openapi-hooks.ts +146 -146
  74. package/src/openapi-types.d.ts +428 -428
  75. package/src/openapi.json +593 -593
  76. package/src/react-query.ts +281 -281
  77. package/src/types.ts +124 -125
  78. package/tsconfig.json +12 -0
  79. package/dist/fetcher-DLDD_7Sa.mjs.map +0 -1
  80. package/dist/fetcher-KdwHgdAl.cjs.map +0 -1
@@ -4,185 +4,185 @@ import { z } from 'zod';
4
4
  import type { InferOpenApi } from '../infer';
5
5
 
6
6
  describe('InferOpenApi - TypedFetcher Integration', () => {
7
- it('should generate paths structure compatible with TypedFetcher', () => {
8
- // Define some endpoints
9
- const getUserEndpoint = e
10
- .get('/users/{id}')
11
- .params(z.object({ id: z.string() }))
12
- .output(z.object({ id: z.string(), name: z.string(), email: z.string() }))
13
- .handle(async ({ params }) => ({
14
- id: params.id,
15
- name: 'John Doe',
16
- email: 'john@example.com',
17
- }));
7
+ it('should generate paths structure compatible with TypedFetcher', () => {
8
+ // Define some endpoints
9
+ const getUserEndpoint = e
10
+ .get('/users/{id}')
11
+ .params(z.object({ id: z.string() }))
12
+ .output(z.object({ id: z.string(), name: z.string(), email: z.string() }))
13
+ .handle(async ({ params }) => ({
14
+ id: params.id,
15
+ name: 'John Doe',
16
+ email: 'john@example.com',
17
+ }));
18
18
 
19
- const createUserEndpoint = e
20
- .post('/users')
21
- .body(z.object({ name: z.string(), email: z.string() }))
22
- .output(z.object({ id: z.string(), name: z.string(), email: z.string() }))
23
- .handle(async ({ body }) => ({
24
- id: '123',
25
- name: body.name,
26
- email: body.email,
27
- }));
19
+ const createUserEndpoint = e
20
+ .post('/users')
21
+ .body(z.object({ name: z.string(), email: z.string() }))
22
+ .output(z.object({ id: z.string(), name: z.string(), email: z.string() }))
23
+ .handle(async ({ body }) => ({
24
+ id: '123',
25
+ name: body.name,
26
+ email: body.email,
27
+ }));
28
28
 
29
- const listUsersEndpoint = e
30
- .get('/users')
31
- .query(z.object({ page: z.coerce.number().optional() }))
32
- .output(
33
- z.object({
34
- users: z.array(
35
- z.object({ id: z.string(), name: z.string(), email: z.string() }),
36
- ),
37
- }),
38
- )
39
- .handle(async ({ query }) => ({
40
- users: [],
41
- }));
29
+ const listUsersEndpoint = e
30
+ .get('/users')
31
+ .query(z.object({ page: z.coerce.number().optional() }))
32
+ .output(
33
+ z.object({
34
+ users: z.array(
35
+ z.object({ id: z.string(), name: z.string(), email: z.string() }),
36
+ ),
37
+ }),
38
+ )
39
+ .handle(async ({ query }) => ({
40
+ users: [],
41
+ }));
42
42
 
43
- // Infer paths from endpoints
44
- const endpoints = [
45
- getUserEndpoint,
46
- createUserEndpoint,
47
- listUsersEndpoint,
48
- ] as const;
49
- type Paths = InferOpenApi<typeof endpoints>['paths'];
43
+ // Infer paths from endpoints
44
+ const endpoints = [
45
+ getUserEndpoint,
46
+ createUserEndpoint,
47
+ listUsersEndpoint,
48
+ ] as const;
49
+ type Paths = InferOpenApi<typeof endpoints>['paths'];
50
50
 
51
- // Verify the structure matches TypedFetcher expectations
52
- expectTypeOf<Paths>().toMatchTypeOf<{
53
- '/users/{id}': {
54
- get: {
55
- parameters: {
56
- path: { id: string };
57
- };
58
- responses: {
59
- 200: {
60
- content: {
61
- 'application/json': {
62
- id: string;
63
- name: string;
64
- email: string;
65
- };
66
- };
67
- };
68
- };
69
- };
70
- };
71
- '/users': {
72
- get: {
73
- parameters: {
74
- query: { page?: number };
75
- };
76
- responses: {
77
- 200: {
78
- content: {
79
- 'application/json': {
80
- users: Array<{ id: string; name: string; email: string }>;
81
- };
82
- };
83
- };
84
- };
85
- };
86
- post: {
87
- requestBody: {
88
- content: {
89
- 'application/json': {
90
- name: string;
91
- email: string;
92
- };
93
- };
94
- };
95
- responses: {
96
- 200: {
97
- content: {
98
- 'application/json': {
99
- id: string;
100
- name: string;
101
- email: string;
102
- };
103
- };
104
- };
105
- };
106
- };
107
- };
108
- }>();
109
- });
51
+ // Verify the structure matches TypedFetcher expectations
52
+ expectTypeOf<Paths>().toMatchTypeOf<{
53
+ '/users/{id}': {
54
+ get: {
55
+ parameters: {
56
+ path: { id: string };
57
+ };
58
+ responses: {
59
+ 200: {
60
+ content: {
61
+ 'application/json': {
62
+ id: string;
63
+ name: string;
64
+ email: string;
65
+ };
66
+ };
67
+ };
68
+ };
69
+ };
70
+ };
71
+ '/users': {
72
+ get: {
73
+ parameters: {
74
+ query: { page?: number };
75
+ };
76
+ responses: {
77
+ 200: {
78
+ content: {
79
+ 'application/json': {
80
+ users: Array<{ id: string; name: string; email: string }>;
81
+ };
82
+ };
83
+ };
84
+ };
85
+ };
86
+ post: {
87
+ requestBody: {
88
+ content: {
89
+ 'application/json': {
90
+ name: string;
91
+ email: string;
92
+ };
93
+ };
94
+ };
95
+ responses: {
96
+ 200: {
97
+ content: {
98
+ 'application/json': {
99
+ id: string;
100
+ name: string;
101
+ email: string;
102
+ };
103
+ };
104
+ };
105
+ };
106
+ };
107
+ };
108
+ }>();
109
+ });
110
110
 
111
- it('should handle endpoints with multiple parameter types', () => {
112
- const updateUserEndpoint = e
113
- .put('/users/{id}')
114
- .params(z.object({ id: z.string() }))
115
- .query(z.object({ notify: z.coerce.boolean().optional() }))
116
- .body(z.object({ name: z.string() }))
117
- .output(z.object({ id: z.string(), name: z.string() }))
118
- .handle(async ({ params, query, body }) => ({
119
- id: params.id,
120
- name: body.name,
121
- }));
111
+ it('should handle endpoints with multiple parameter types', () => {
112
+ const updateUserEndpoint = e
113
+ .put('/users/{id}')
114
+ .params(z.object({ id: z.string() }))
115
+ .query(z.object({ notify: z.coerce.boolean().optional() }))
116
+ .body(z.object({ name: z.string() }))
117
+ .output(z.object({ id: z.string(), name: z.string() }))
118
+ .handle(async ({ params, query, body }) => ({
119
+ id: params.id,
120
+ name: body.name,
121
+ }));
122
122
 
123
- type Paths = InferOpenApi<[typeof updateUserEndpoint]>['paths'];
123
+ type Paths = InferOpenApi<[typeof updateUserEndpoint]>['paths'];
124
124
 
125
- // Verify all parameter types are present
126
- expectTypeOf<Paths>().toMatchTypeOf<{
127
- '/users/{id}': {
128
- parameters: {
129
- path: { id: string };
130
- query: { notify?: boolean };
131
- };
132
- put: {
133
- parameters: {
134
- path: { id: string };
135
- query: { notify?: boolean };
136
- };
137
- requestBody: {
138
- content: {
139
- 'application/json': {
140
- name: string;
141
- };
142
- };
143
- };
144
- responses: {
145
- 200: {
146
- content: {
147
- 'application/json': {
148
- id: string;
149
- name: string;
150
- };
151
- };
152
- };
153
- };
154
- };
155
- };
156
- }>();
157
- });
125
+ // Verify all parameter types are present
126
+ expectTypeOf<Paths>().toMatchTypeOf<{
127
+ '/users/{id}': {
128
+ parameters: {
129
+ path: { id: string };
130
+ query: { notify?: boolean };
131
+ };
132
+ put: {
133
+ parameters: {
134
+ path: { id: string };
135
+ query: { notify?: boolean };
136
+ };
137
+ requestBody: {
138
+ content: {
139
+ 'application/json': {
140
+ name: string;
141
+ };
142
+ };
143
+ };
144
+ responses: {
145
+ 200: {
146
+ content: {
147
+ 'application/json': {
148
+ id: string;
149
+ name: string;
150
+ };
151
+ };
152
+ };
153
+ };
154
+ };
155
+ };
156
+ }>();
157
+ });
158
158
 
159
- it('should handle endpoints without output schema', () => {
160
- const deleteUserEndpoint = e
161
- .delete('/users/{id}')
162
- .params(z.object({ id: z.string() }))
163
- .handle(async ({ params }) => {
164
- // No return value
165
- });
159
+ it('should handle endpoints without output schema', () => {
160
+ const deleteUserEndpoint = e
161
+ .delete('/users/{id}')
162
+ .params(z.object({ id: z.string() }))
163
+ .handle(async ({ params }) => {
164
+ // No return value
165
+ });
166
166
 
167
- type Paths = InferOpenApi<[typeof deleteUserEndpoint]>['paths'];
167
+ type Paths = InferOpenApi<[typeof deleteUserEndpoint]>['paths'];
168
168
 
169
- // Verify response content is never when no output schema
170
- expectTypeOf<Paths>().toMatchTypeOf<{
171
- '/users/{id}': {
172
- parameters: {
173
- path: { id: string };
174
- };
175
- delete: {
176
- parameters: {
177
- path: { id: string };
178
- };
179
- responses: {
180
- 200: {
181
- content: never;
182
- };
183
- };
184
- };
185
- };
186
- }>();
187
- });
169
+ // Verify response content is never when no output schema
170
+ expectTypeOf<Paths>().toMatchTypeOf<{
171
+ '/users/{id}': {
172
+ parameters: {
173
+ path: { id: string };
174
+ };
175
+ delete: {
176
+ parameters: {
177
+ path: { id: string };
178
+ };
179
+ responses: {
180
+ 200: {
181
+ content: never;
182
+ };
183
+ };
184
+ };
185
+ };
186
+ }>();
187
+ });
188
188
  });