@orpc/react 0.10.0 → 0.12.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/dist/index.js +0 -1
  2. package/dist/src/general-hooks.d.ts +0 -1
  3. package/dist/src/general-utils.d.ts +0 -1
  4. package/dist/src/index.d.ts +0 -1
  5. package/dist/src/orpc-path.d.ts +0 -1
  6. package/dist/src/procedure-hooks.d.ts +0 -1
  7. package/dist/src/procedure-utils.d.ts +0 -1
  8. package/dist/src/react-context.d.ts +0 -1
  9. package/dist/src/react-hooks.d.ts +0 -1
  10. package/dist/src/react-utils.d.ts +0 -1
  11. package/dist/src/react.d.ts +0 -1
  12. package/dist/src/tanstack-key.d.ts +0 -1
  13. package/dist/src/tanstack-query.d.ts +0 -1
  14. package/dist/src/types.d.ts +0 -1
  15. package/dist/src/use-queries/builder.d.ts +0 -1
  16. package/dist/src/use-queries/builders.d.ts +0 -1
  17. package/dist/src/use-queries/hook.d.ts +0 -1
  18. package/package.json +12 -16
  19. package/dist/index.js.map +0 -1
  20. package/dist/src/general-hooks.d.ts.map +0 -1
  21. package/dist/src/general-utils.d.ts.map +0 -1
  22. package/dist/src/index.d.ts.map +0 -1
  23. package/dist/src/orpc-path.d.ts.map +0 -1
  24. package/dist/src/procedure-hooks.d.ts.map +0 -1
  25. package/dist/src/procedure-utils.d.ts.map +0 -1
  26. package/dist/src/react-context.d.ts.map +0 -1
  27. package/dist/src/react-hooks.d.ts.map +0 -1
  28. package/dist/src/react-utils.d.ts.map +0 -1
  29. package/dist/src/react.d.ts.map +0 -1
  30. package/dist/src/tanstack-key.d.ts.map +0 -1
  31. package/dist/src/tanstack-query.d.ts.map +0 -1
  32. package/dist/src/types.d.ts.map +0 -1
  33. package/dist/src/use-queries/builder.d.ts.map +0 -1
  34. package/dist/src/use-queries/builders.d.ts.map +0 -1
  35. package/dist/src/use-queries/hook.d.ts.map +0 -1
  36. package/dist/tsconfig.tsbuildinfo +0 -1
  37. package/src/general-hooks.test-d.ts +0 -151
  38. package/src/general-hooks.test.tsx +0 -232
  39. package/src/general-hooks.ts +0 -101
  40. package/src/general-utils.test-d.ts +0 -454
  41. package/src/general-utils.test.tsx +0 -818
  42. package/src/general-utils.ts +0 -393
  43. package/src/index.ts +0 -8
  44. package/src/orpc-path.test-d.ts +0 -13
  45. package/src/orpc-path.test.ts +0 -12
  46. package/src/orpc-path.ts +0 -24
  47. package/src/procedure-hooks.test-d.ts +0 -321
  48. package/src/procedure-hooks.test.tsx +0 -388
  49. package/src/procedure-hooks.ts +0 -271
  50. package/src/procedure-utils.test-d.ts +0 -476
  51. package/src/procedure-utils.test.tsx +0 -330
  52. package/src/procedure-utils.ts +0 -312
  53. package/src/react-context.ts +0 -43
  54. package/src/react-hooks.ts +0 -94
  55. package/src/react-utils.ts +0 -98
  56. package/src/react.test-d.ts +0 -89
  57. package/src/react.test.tsx +0 -102
  58. package/src/react.tsx +0 -81
  59. package/src/tanstack-key.test-d.ts +0 -35
  60. package/src/tanstack-key.test.ts +0 -62
  61. package/src/tanstack-key.ts +0 -64
  62. package/src/tanstack-query.ts +0 -27
  63. package/src/types.ts +0 -7
  64. package/src/use-queries/builder.test-d.ts +0 -29
  65. package/src/use-queries/builder.test.ts +0 -25
  66. package/src/use-queries/builder.ts +0 -71
  67. package/src/use-queries/builders.test-d.ts +0 -30
  68. package/src/use-queries/builders.test.tsx +0 -29
  69. package/src/use-queries/builders.ts +0 -101
  70. package/src/use-queries/hook.test-d.ts +0 -64
  71. package/src/use-queries/hook.test.tsx +0 -89
  72. 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
- })