@emeryld/rrroutes-client 2.2.7 → 2.2.8
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.
- package/dist/index.cjs +57 -26
- package/dist/index.cjs.map +1 -1
- package/dist/index.mjs +57 -26
- package/dist/index.mjs.map +1 -1
- package/dist/routesV3.client.types.d.ts +11 -10
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -68,19 +68,9 @@ var defaultFetcher = async (req) => {
|
|
|
68
68
|
};
|
|
69
69
|
|
|
70
70
|
// src/routesV3.client.index.ts
|
|
71
|
+
var import_react = require("react");
|
|
71
72
|
var import_react_query = require("@tanstack/react-query");
|
|
72
73
|
var import_rrroutes_contract = require("@emeryld/rrroutes-contract");
|
|
73
|
-
function splitUseEndpointArgs(useArgs, expectsArgs) {
|
|
74
|
-
if (useArgs.length === 0) return { args: void 0, options: void 0 };
|
|
75
|
-
if (!expectsArgs) {
|
|
76
|
-
return { args: void 0, options: useArgs[0] };
|
|
77
|
-
}
|
|
78
|
-
const [maybeArgs, maybeOptions] = useArgs;
|
|
79
|
-
return {
|
|
80
|
-
args: maybeArgs,
|
|
81
|
-
options: useArgs.length > 1 ? maybeOptions : void 0
|
|
82
|
-
};
|
|
83
|
-
}
|
|
84
74
|
var toUpper = (m) => m.toUpperCase();
|
|
85
75
|
function zParse(value, schema) {
|
|
86
76
|
return schema ? schema.parse(value) : value;
|
|
@@ -332,14 +322,31 @@ function createRouteClient(opts) {
|
|
|
332
322
|
};
|
|
333
323
|
if (isGet && isFeed) {
|
|
334
324
|
const useEndpoint2 = (...useArgs) => {
|
|
335
|
-
const
|
|
325
|
+
const args = useArgs[0];
|
|
336
326
|
emit({ type: "useEndpoint", leaf: leafLabel, variant: "infiniteGet" });
|
|
337
327
|
const tuple = toArgsTuple(args);
|
|
338
328
|
const params = args?.params;
|
|
339
329
|
const query = args?.query;
|
|
340
330
|
const buildOptions = rqOpts ?? {};
|
|
331
|
+
const listenersRef = (0, import_react.useRef)(/* @__PURE__ */ new Set());
|
|
332
|
+
const notifyOnReceive = (0, import_react.useCallback)(
|
|
333
|
+
(data) => {
|
|
334
|
+
buildOptions?.onReceive?.(data);
|
|
335
|
+
listenersRef.current.forEach((listener) => listener(data));
|
|
336
|
+
},
|
|
337
|
+
[]
|
|
338
|
+
);
|
|
339
|
+
const registerOnReceive = (0, import_react.useCallback)(
|
|
340
|
+
(listener) => {
|
|
341
|
+
listenersRef.current.add(listener);
|
|
342
|
+
return () => {
|
|
343
|
+
listenersRef.current.delete(listener);
|
|
344
|
+
};
|
|
345
|
+
},
|
|
346
|
+
[]
|
|
347
|
+
);
|
|
341
348
|
const { normalizedQuery, normalizedParams } = buildUrl(leaf, baseUrl, params, query);
|
|
342
|
-
|
|
349
|
+
const queryResult = (0, import_react_query.useInfiniteQuery)({
|
|
343
350
|
...buildOptions,
|
|
344
351
|
queryKey: getQueryKeys(...tuple),
|
|
345
352
|
initialPageParam: void 0,
|
|
@@ -352,14 +359,12 @@ function createRouteClient(opts) {
|
|
|
352
359
|
};
|
|
353
360
|
return fetchEndpoint(tuple, {
|
|
354
361
|
queryOverride: pageQuery,
|
|
355
|
-
onReceive:
|
|
356
|
-
buildOptions?.onReceive?.(data);
|
|
357
|
-
options?.onReceive?.(data);
|
|
358
|
-
}
|
|
362
|
+
onReceive: notifyOnReceive
|
|
359
363
|
});
|
|
360
364
|
}
|
|
361
365
|
// NOTE: TData is InfiniteData<T>, so we don't need a select here.
|
|
362
366
|
}, queryClient);
|
|
367
|
+
return { ...queryResult, onReceive: registerOnReceive };
|
|
363
368
|
};
|
|
364
369
|
return {
|
|
365
370
|
getQueryKeys,
|
|
@@ -371,24 +376,39 @@ function createRouteClient(opts) {
|
|
|
371
376
|
}
|
|
372
377
|
if (isGet) {
|
|
373
378
|
const useEndpoint2 = (...useArgs) => {
|
|
374
|
-
const
|
|
379
|
+
const args = useArgs[0];
|
|
375
380
|
emit({ type: "useEndpoint", leaf: leafLabel, variant: "get" });
|
|
376
381
|
const tuple = toArgsTuple(args);
|
|
377
382
|
const params = args?.params;
|
|
378
383
|
const query = args?.query;
|
|
379
384
|
const buildOptions = rqOpts ?? {};
|
|
385
|
+
const listenersRef = (0, import_react.useRef)(/* @__PURE__ */ new Set());
|
|
386
|
+
const notifyOnReceive = (0, import_react.useCallback)(
|
|
387
|
+
(data) => {
|
|
388
|
+
buildOptions?.onReceive?.(data);
|
|
389
|
+
listenersRef.current.forEach((listener) => listener(data));
|
|
390
|
+
},
|
|
391
|
+
[]
|
|
392
|
+
);
|
|
393
|
+
const registerOnReceive = (0, import_react.useCallback)(
|
|
394
|
+
(listener) => {
|
|
395
|
+
listenersRef.current.add(listener);
|
|
396
|
+
return () => {
|
|
397
|
+
listenersRef.current.delete(listener);
|
|
398
|
+
};
|
|
399
|
+
},
|
|
400
|
+
[]
|
|
401
|
+
);
|
|
380
402
|
buildUrl(leaf, baseUrl, params, query);
|
|
381
|
-
|
|
403
|
+
const queryResult = (0, import_react_query.useQuery)({
|
|
382
404
|
...buildOptions,
|
|
383
405
|
queryKey: getQueryKeys(...tuple),
|
|
384
406
|
placeholderData: import_react_query.keepPreviousData,
|
|
385
407
|
queryFn: () => fetchEndpoint(tuple, {
|
|
386
|
-
onReceive:
|
|
387
|
-
buildOptions?.onReceive?.(data);
|
|
388
|
-
options?.onReceive?.(data);
|
|
389
|
-
}
|
|
408
|
+
onReceive: notifyOnReceive
|
|
390
409
|
})
|
|
391
410
|
}, queryClient);
|
|
411
|
+
return { ...queryResult, onReceive: registerOnReceive };
|
|
392
412
|
};
|
|
393
413
|
return {
|
|
394
414
|
getQueryKeys,
|
|
@@ -414,18 +434,29 @@ function createRouteClient(opts) {
|
|
|
414
434
|
return result;
|
|
415
435
|
};
|
|
416
436
|
const useEndpoint = (...useArgs) => {
|
|
417
|
-
const
|
|
437
|
+
const args = useArgs[0];
|
|
418
438
|
emit({ type: "useEndpoint", leaf: leafLabel, variant: "mutation" });
|
|
419
439
|
const tuple = toArgsTuple(args);
|
|
420
|
-
|
|
440
|
+
const listenersRef = (0, import_react.useRef)(/* @__PURE__ */ new Set());
|
|
441
|
+
const notifyListeners = (0, import_react.useCallback)((data) => {
|
|
442
|
+
listenersRef.current.forEach((listener) => listener(data));
|
|
443
|
+
}, []);
|
|
444
|
+
const registerOnReceive = (0, import_react.useCallback)((listener) => {
|
|
445
|
+
listenersRef.current.add(listener);
|
|
446
|
+
return () => {
|
|
447
|
+
listenersRef.current.delete(listener);
|
|
448
|
+
};
|
|
449
|
+
}, []);
|
|
450
|
+
const mutationResult = (0, import_react_query.useMutation)({
|
|
421
451
|
...mutationBuildOptions,
|
|
422
452
|
mutationKey: getQueryKeys(...tuple),
|
|
423
453
|
mutationFn: async (body) => {
|
|
424
454
|
const result = await fetchMutation(...[...tuple, body]);
|
|
425
|
-
|
|
455
|
+
notifyListeners(result);
|
|
426
456
|
return result;
|
|
427
457
|
}
|
|
428
458
|
}, queryClient);
|
|
459
|
+
return { ...mutationResult, onReceive: registerOnReceive };
|
|
429
460
|
};
|
|
430
461
|
return {
|
|
431
462
|
getQueryKeys,
|