@orpc/react 0.0.0-next.e9dc36e → 0.0.0-next.eaf61c7

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 (79) hide show
  1. package/README.md +151 -0
  2. package/dist/hooks/index.d.mts +69 -0
  3. package/dist/hooks/index.d.ts +69 -0
  4. package/dist/hooks/index.mjs +77 -0
  5. package/dist/index.d.mts +19 -0
  6. package/dist/index.d.ts +19 -0
  7. package/dist/index.mjs +28 -0
  8. package/package.json +24 -24
  9. package/dist/index.js +0 -674
  10. package/dist/index.js.map +0 -1
  11. package/dist/src/general-hooks.d.ts +0 -24
  12. package/dist/src/general-hooks.d.ts.map +0 -1
  13. package/dist/src/general-utils.d.ts +0 -41
  14. package/dist/src/general-utils.d.ts.map +0 -1
  15. package/dist/src/index.d.ts +0 -9
  16. package/dist/src/index.d.ts.map +0 -1
  17. package/dist/src/orpc-path.d.ts +0 -5
  18. package/dist/src/orpc-path.d.ts.map +0 -1
  19. package/dist/src/procedure-hooks.d.ts +0 -31
  20. package/dist/src/procedure-hooks.d.ts.map +0 -1
  21. package/dist/src/procedure-utils.d.ts +0 -35
  22. package/dist/src/procedure-utils.d.ts.map +0 -1
  23. package/dist/src/react-context.d.ts +0 -13
  24. package/dist/src/react-context.d.ts.map +0 -1
  25. package/dist/src/react-hooks.d.ts +0 -22
  26. package/dist/src/react-hooks.d.ts.map +0 -1
  27. package/dist/src/react-utils.d.ts +0 -22
  28. package/dist/src/react-utils.d.ts.map +0 -1
  29. package/dist/src/react.d.ts +0 -21
  30. package/dist/src/react.d.ts.map +0 -1
  31. package/dist/src/tanstack-key.d.ts +0 -15
  32. package/dist/src/tanstack-key.d.ts.map +0 -1
  33. package/dist/src/tanstack-query.d.ts +0 -19
  34. package/dist/src/tanstack-query.d.ts.map +0 -1
  35. package/dist/src/types.d.ts +0 -5
  36. package/dist/src/types.d.ts.map +0 -1
  37. package/dist/src/use-queries/builder.d.ts +0 -20
  38. package/dist/src/use-queries/builder.d.ts.map +0 -1
  39. package/dist/src/use-queries/builders.d.ts +0 -19
  40. package/dist/src/use-queries/builders.d.ts.map +0 -1
  41. package/dist/src/use-queries/hook.d.ts +0 -16
  42. package/dist/src/use-queries/hook.d.ts.map +0 -1
  43. package/dist/tsconfig.tsbuildinfo +0 -1
  44. package/src/general-hooks.test-d.ts +0 -151
  45. package/src/general-hooks.test.tsx +0 -232
  46. package/src/general-hooks.ts +0 -101
  47. package/src/general-utils.test-d.ts +0 -454
  48. package/src/general-utils.test.tsx +0 -818
  49. package/src/general-utils.ts +0 -393
  50. package/src/index.ts +0 -8
  51. package/src/orpc-path.test-d.ts +0 -13
  52. package/src/orpc-path.test.ts +0 -12
  53. package/src/orpc-path.ts +0 -24
  54. package/src/procedure-hooks.test-d.ts +0 -321
  55. package/src/procedure-hooks.test.tsx +0 -388
  56. package/src/procedure-hooks.ts +0 -271
  57. package/src/procedure-utils.test-d.ts +0 -476
  58. package/src/procedure-utils.test.tsx +0 -330
  59. package/src/procedure-utils.ts +0 -312
  60. package/src/react-context.ts +0 -43
  61. package/src/react-hooks.ts +0 -94
  62. package/src/react-utils.ts +0 -98
  63. package/src/react.test-d.ts +0 -89
  64. package/src/react.test.tsx +0 -102
  65. package/src/react.tsx +0 -81
  66. package/src/tanstack-key.test-d.ts +0 -35
  67. package/src/tanstack-key.test.ts +0 -62
  68. package/src/tanstack-key.ts +0 -64
  69. package/src/tanstack-query.ts +0 -27
  70. package/src/types.ts +0 -7
  71. package/src/use-queries/builder.test-d.ts +0 -29
  72. package/src/use-queries/builder.test.ts +0 -25
  73. package/src/use-queries/builder.ts +0 -71
  74. package/src/use-queries/builders.test-d.ts +0 -30
  75. package/src/use-queries/builders.test.tsx +0 -29
  76. package/src/use-queries/builders.ts +0 -101
  77. package/src/use-queries/hook.test-d.ts +0 -64
  78. package/src/use-queries/hook.test.tsx +0 -89
  79. package/src/use-queries/hook.ts +0 -57
@@ -1,101 +0,0 @@
1
- import type { Schema, SchemaInput, SchemaOutput } from '@orpc/contract'
2
- import type { PartialDeep, SetOptional } from '@orpc/shared'
3
- import type { ORPCQueryFilters } from './tanstack-query'
4
- import {
5
- type DefaultError,
6
- type Mutation,
7
- type MutationFilters,
8
- type MutationState,
9
- useIsFetching,
10
- useIsMutating,
11
- useMutationState,
12
- } from '@tanstack/react-query'
13
- import { type ORPCContext, useORPCContext } from './react-context'
14
- import { getMutationKeyFromPath, getQueryKeyFromPath } from './tanstack-key'
15
-
16
- export interface GeneralHooks<
17
- TInputSchema extends Schema,
18
- TOutputSchema extends Schema,
19
- TFuncOutput extends SchemaOutput<TOutputSchema>,
20
- > {
21
- useIsFetching: (
22
- filers?: ORPCQueryFilters<PartialDeep<SchemaInput<TInputSchema>>>,
23
- ) => number
24
- useIsMutating: (filters?: SetOptional<MutationFilters, 'mutationKey'>) => number
25
-
26
- useMutationState: <
27
- UResult = MutationState<
28
- SchemaOutput<TOutputSchema, TFuncOutput>,
29
- DefaultError,
30
- SchemaInput<TInputSchema>
31
- >,
32
- >(options?: {
33
- filters?: SetOptional<MutationFilters, 'mutationKey'>
34
- select?: (
35
- mutation: Mutation<
36
- SchemaOutput<TOutputSchema, TFuncOutput>,
37
- DefaultError,
38
- SchemaInput<TInputSchema>
39
- >,
40
- ) => UResult
41
- }
42
- ) => UResult[]
43
- }
44
-
45
- export interface CreateGeneralHooksOptions {
46
- context: ORPCContext<any>
47
-
48
- /**
49
- * The path of the router or procedure on server.
50
- *
51
- * @internal
52
- */
53
- path: string[]
54
- }
55
-
56
- export function createGeneralHooks<
57
- TInputSchema extends Schema = undefined,
58
- TOutputSchema extends Schema = undefined,
59
- TFuncOutput extends
60
- SchemaOutput<TOutputSchema> = SchemaOutput<TOutputSchema>,
61
- >(
62
- options: CreateGeneralHooksOptions,
63
- ): GeneralHooks<TInputSchema, TOutputSchema, TFuncOutput> {
64
- return {
65
- useIsFetching(filters) {
66
- const { queryType, input, ...rest } = filters ?? {}
67
- const context = useORPCContext(options.context)
68
- return useIsFetching(
69
- {
70
- queryKey: getQueryKeyFromPath(options.path, {
71
- input,
72
- type: queryType,
73
- }),
74
- ...rest,
75
- },
76
- context.queryClient,
77
- )
78
- },
79
- useIsMutating(filters) {
80
- const context = useORPCContext(options.context)
81
- return useIsMutating(
82
- { mutationKey: getMutationKeyFromPath(options.path), ...filters },
83
- context.queryClient,
84
- )
85
- },
86
-
87
- useMutationState(options_) {
88
- const context = useORPCContext(options.context)
89
- return useMutationState(
90
- {
91
- ...(options_ as any),
92
- filters: {
93
- mutationKey: getMutationKeyFromPath(options.path),
94
- ...options_?.filters,
95
- },
96
- },
97
- context.queryClient,
98
- )
99
- },
100
- }
101
- }
@@ -1,454 +0,0 @@
1
- import type { SchemaOutput } from '@orpc/contract'
2
- import type { Promisable } from '@orpc/shared'
3
- import type { InfiniteData } from '@tanstack/react-query'
4
- import {
5
- queryClient,
6
- type UserCreateInputSchema,
7
- type UserFindInputSchema,
8
- type UserListInputSchema,
9
- type UserListOutputSchema,
10
- type UserSchema,
11
- } from '../tests/orpc'
12
- import { createGeneralUtils } from './general-utils'
13
-
14
- const user_utils = createGeneralUtils({
15
- queryClient,
16
- path: ['user'],
17
- })
18
-
19
- const user_find_utils = createGeneralUtils<
20
- typeof UserFindInputSchema,
21
- typeof UserSchema,
22
- SchemaOutput<typeof UserSchema>
23
- >({
24
- queryClient,
25
- path: ['user', 'find'],
26
- })
27
-
28
- const user_list_utils = createGeneralUtils<
29
- typeof UserListInputSchema,
30
- typeof UserListOutputSchema,
31
- SchemaOutput<typeof UserListOutputSchema>
32
- >({
33
- queryClient,
34
- path: ['user', 'list'],
35
- })
36
-
37
- const user_create_utils = createGeneralUtils<
38
- typeof UserCreateInputSchema,
39
- typeof UserSchema,
40
- SchemaOutput<typeof UserSchema>
41
- >({
42
- queryClient,
43
- path: ['user', 'create'],
44
- })
45
-
46
- describe('getQueriesData', () => {
47
- it('simple', () => {
48
- expectTypeOf(user_utils.getQueriesData()).toMatchTypeOf(
49
- queryClient.getQueriesData<unknown>({}),
50
- )
51
-
52
- expectTypeOf(user_find_utils.getQueriesData()).toMatchTypeOf(
53
- queryClient.getQueriesData<SchemaOutput<typeof UserSchema>>({}),
54
- )
55
- })
56
-
57
- it('with filters', () => {
58
- user_find_utils.getQueriesData({ input: { id: '1' } })
59
- // @ts-expect-error invalid input
60
- user_find_utils.getQueriesData({ input: { id: 1 } })
61
- })
62
- })
63
-
64
- describe('getInfiniteQueriesData', () => {
65
- it('simple', () => {
66
- expectTypeOf(user_utils.getInfiniteQueriesData()).toMatchTypeOf(
67
- queryClient.getQueriesData<InfiniteData<unknown>>({}),
68
- )
69
-
70
- expectTypeOf(user_list_utils.getInfiniteQueriesData()).toMatchTypeOf(
71
- queryClient.getQueriesData<
72
- InfiniteData<SchemaOutput<typeof UserListOutputSchema>>
73
- >({}),
74
- )
75
- })
76
-
77
- it('with filters', () => {
78
- user_list_utils.getQueriesData({ input: { keyword: '1' } })
79
- // @ts-expect-error invalid input
80
- user_list_utils.getQueriesData({ input: { keyword: 1 } })
81
- })
82
- })
83
-
84
- describe('setQueriesData', () => {
85
- it('simple', () => {
86
- user_utils.setQueriesData({}, (old: unknown) => {
87
- expectTypeOf(old).toMatchTypeOf<unknown | undefined>()
88
-
89
- return 'can return any value'
90
- })
91
-
92
- user_find_utils.setQueriesData({}, (old) => {
93
- expectTypeOf(old).toEqualTypeOf<
94
- SchemaOutput<typeof UserSchema> | undefined
95
- >()
96
-
97
- return old
98
- })
99
- })
100
-
101
- it('with filters', () => {
102
- user_find_utils.setQueriesData({ input: { id: '1' } }, undefined, {
103
- updatedAt: 12344,
104
- })
105
- // @ts-expect-error invalid input
106
- user_find_utils.setQueriesData({ input: { id: 1 } }, undefined)
107
- })
108
- })
109
-
110
- describe('setInfiniteQueriesData', () => {
111
- it('simple', () => {
112
- user_utils.setInfiniteQueriesData({}, (old) => {
113
- expectTypeOf(old).toEqualTypeOf<InfiniteData<unknown> | undefined>()
114
-
115
- return {
116
- pageParams: [],
117
- pages: [],
118
- }
119
- })
120
-
121
- user_list_utils.setInfiniteQueriesData({}, (old) => {
122
- expectTypeOf(old).toEqualTypeOf<
123
- | InfiniteData<
124
- SchemaOutput<typeof UserListOutputSchema>,
125
- number | undefined
126
- >
127
- | undefined
128
- >()
129
-
130
- return old
131
- })
132
- })
133
-
134
- it('with filters', () => {
135
- user_list_utils.setInfiniteQueriesData(
136
- { input: { keyword: '1' } },
137
- undefined,
138
- {
139
- updatedAt: 12344,
140
- },
141
- )
142
- // @ts-expect-error invalid input
143
- user_list_utils.setInfiniteQueriesData({ input: { keyword: 1 } }, undefined)
144
- })
145
- })
146
-
147
- it('invalidate', () => {
148
- user_utils.invalidate()
149
- user_utils.invalidate({
150
- input: 'anything',
151
- })
152
- user_utils.invalidate({
153
- queryType: 'infinite' /** only invalidate infinite */,
154
- })
155
-
156
- user_find_utils.invalidate({
157
- input: { id: '12' },
158
- })
159
- user_find_utils.invalidate({
160
- // @ts-expect-error invalid input
161
- input: { id: 12 },
162
- })
163
-
164
- const result = user_find_utils.invalidate({}, { throwOnError: true })
165
-
166
- expectTypeOf(result).toEqualTypeOf<Promise<void>>()
167
- })
168
-
169
- it('refetch', () => {
170
- user_utils.refetch()
171
- user_utils.refetch({
172
- input: 'anything',
173
- })
174
- user_utils.refetch({
175
- queryType: 'infinite' /** only refetch infinite */,
176
- })
177
-
178
- user_find_utils.refetch({
179
- input: { id: '12' },
180
- })
181
- user_find_utils.refetch({
182
- // @ts-expect-error invalid input
183
- input: { id: 12 },
184
- })
185
-
186
- const result = user_find_utils.refetch({}, { throwOnError: true })
187
-
188
- expectTypeOf(result).toEqualTypeOf<Promise<void>>()
189
- })
190
-
191
- it('cancel', () => {
192
- user_utils.cancel()
193
- user_utils.cancel({
194
- input: 'anything',
195
- })
196
- user_utils.cancel({
197
- queryType: 'infinite' /** only cancel infinite */,
198
- })
199
-
200
- user_find_utils.cancel({
201
- input: { id: '12' },
202
- })
203
- user_find_utils.cancel({
204
- // @ts-expect-error invalid input
205
- input: { id: 12 },
206
- })
207
-
208
- const result = user_find_utils.cancel({}, { revert: true })
209
-
210
- expectTypeOf(result).toEqualTypeOf<Promise<void>>()
211
- })
212
-
213
- it('remove', () => {
214
- user_utils.remove()
215
- user_utils.remove({
216
- input: 'anything',
217
- })
218
- user_utils.remove({
219
- queryType: 'infinite' /** only remove infinite */,
220
- })
221
-
222
- user_find_utils.remove({
223
- input: { id: '12' },
224
- })
225
- user_find_utils.remove({
226
- // @ts-expect-error invalid input
227
- input: { id: 12 },
228
- })
229
-
230
- const result = user_find_utils.remove({})
231
-
232
- expectTypeOf(result).toEqualTypeOf<void>()
233
- })
234
-
235
- it('reset', () => {
236
- user_utils.reset()
237
- user_utils.reset({
238
- input: 'anything',
239
- })
240
- user_utils.reset({
241
- queryType: 'infinite' /** only reset infinite */,
242
- })
243
-
244
- user_find_utils.reset({
245
- input: { id: '12' },
246
- })
247
- user_find_utils.reset({
248
- // @ts-expect-error invalid input
249
- input: { id: 12 },
250
- })
251
-
252
- const result = user_find_utils.reset({}, { throwOnError: true })
253
-
254
- expectTypeOf(result).toEqualTypeOf<Promise<void>>()
255
- })
256
-
257
- it('isFetching', () => {
258
- user_utils.isFetching()
259
- user_utils.isFetching({
260
- input: 'anything',
261
- })
262
- user_utils.isFetching({
263
- queryType: 'infinite' /** only isFetching infinite */,
264
- })
265
-
266
- user_find_utils.isFetching({
267
- input: { id: '12' },
268
- })
269
- user_find_utils.isFetching({
270
- // @ts-expect-error invalid input
271
- input: { id: 12 },
272
- })
273
-
274
- const result = user_find_utils.isFetching({})
275
-
276
- expectTypeOf(result).toEqualTypeOf<number>()
277
- })
278
-
279
- it('isMutating', () => {
280
- user_utils.isMutating()
281
-
282
- const result = user_find_utils.isMutating({})
283
-
284
- expectTypeOf(result).toEqualTypeOf<number>()
285
- })
286
-
287
- it('getQueryDefaults', () => {
288
- const r1 = user_utils.getQueryDefaults()
289
-
290
- if (typeof r1.queryFn === 'function') {
291
- expectTypeOf<ReturnType<typeof r1.queryFn>>().toMatchTypeOf<
292
- Promisable<unknown>
293
- >()
294
- }
295
-
296
- user_utils.getQueryDefaults({
297
- input: 'anything',
298
- })
299
-
300
- user_find_utils.getQueryDefaults({
301
- input: { id: '12' },
302
- })
303
- user_find_utils.getQueryDefaults({
304
- // @ts-expect-error invalid input
305
- input: { id: 12 },
306
- })
307
-
308
- const r2 = user_find_utils.getQueryDefaults({})
309
-
310
- if (typeof r2.queryFn === 'function') {
311
- expectTypeOf<ReturnType<typeof r2.queryFn>>().toMatchTypeOf<
312
- Promisable<SchemaOutput<typeof UserSchema>>
313
- >()
314
- }
315
- })
316
-
317
- it('getInfiniteQueryDefaults', () => {
318
- const r1 = user_utils.getInfiniteQueryDefaults()
319
- if (typeof r1.queryFn === 'function') {
320
- expectTypeOf<ReturnType<typeof r1.queryFn>>().toMatchTypeOf<
321
- Promisable<unknown>
322
- >()
323
- }
324
-
325
- user_utils.getInfiniteQueryDefaults({
326
- input: {},
327
- })
328
-
329
- user_find_utils.getInfiniteQueryDefaults({
330
- input: { id: '12' },
331
- })
332
- user_find_utils.getInfiniteQueryDefaults({
333
- // @ts-expect-error invalid input
334
- input: { id: 12 },
335
- })
336
-
337
- const r2 = user_find_utils.getInfiniteQueryDefaults({})
338
-
339
- if (typeof r2.queryFn === 'function') {
340
- expectTypeOf<ReturnType<typeof r2.queryFn>>().toMatchTypeOf<
341
- Promisable<SchemaOutput<typeof UserSchema>>
342
- >()
343
- }
344
- })
345
-
346
- it('setQueryDefaults', () => {
347
- user_utils.setQueryDefaults({
348
- queryFn() {
349
- return 'anything'
350
- },
351
- enabled(query) {
352
- expectTypeOf(query.state.data).toEqualTypeOf<unknown>()
353
-
354
- return true
355
- },
356
- })
357
-
358
- user_utils.setQueryDefaults(
359
- {},
360
- {
361
- input: 'anything',
362
- },
363
- )
364
-
365
- user_find_utils.setQueryDefaults(
366
- {},
367
- {
368
- input: { id: '12' },
369
- },
370
- )
371
- user_find_utils.setQueryDefaults(
372
- {},
373
- {
374
- // @ts-expect-error invalid input
375
- input: { id: 12 },
376
- },
377
- )
378
-
379
- user_find_utils.setQueryDefaults({
380
- queryFn() {
381
- return { id: '1233', name: 'name' }
382
- },
383
- enabled(query) {
384
- expectTypeOf(query.state.data).toEqualTypeOf<
385
- SchemaOutput<typeof UserSchema> | undefined
386
- >()
387
-
388
- return true
389
- },
390
- })
391
-
392
- user_find_utils.setQueryDefaults({
393
- // @ts-expect-error invalid
394
- queryFn() {
395
- return 'invalid'
396
- },
397
- })
398
- })
399
-
400
- it('setInfiniteQueryDefaults', () => {
401
- user_utils.setInfiniteQueryDefaults({
402
- queryFn() {
403
- return 'anything'
404
- },
405
- enabled(query) {
406
- expectTypeOf(query.state.data).toEqualTypeOf<
407
- InfiniteData<unknown> | undefined
408
- >()
409
-
410
- return true
411
- },
412
- })
413
-
414
- user_utils.setInfiniteQueryDefaults(
415
- {},
416
- {
417
- input: 'anything',
418
- },
419
- )
420
-
421
- user_find_utils.setInfiniteQueryDefaults(
422
- {},
423
- {
424
- input: { id: '12' },
425
- },
426
- )
427
- user_find_utils.setInfiniteQueryDefaults(
428
- {},
429
- {
430
- // @ts-expect-error invalid input
431
- input: { id: 12 },
432
- },
433
- )
434
-
435
- user_find_utils.setInfiniteQueryDefaults({
436
- queryFn() {
437
- return { id: '1233', name: 'name' }
438
- },
439
- enabled(query) {
440
- expectTypeOf(query.state.data).toEqualTypeOf<
441
- InfiniteData<SchemaOutput<typeof UserSchema>> | undefined
442
- >()
443
-
444
- return true
445
- },
446
- })
447
-
448
- user_find_utils.setInfiniteQueryDefaults({
449
- // @ts-expect-error invalid
450
- queryFn() {
451
- return 'invalid'
452
- },
453
- })
454
- })