@raf-query/core 0.11.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 (71) hide show
  1. package/CHANGELOG.md +18 -2
  2. package/README.md +28 -18
  3. package/dist/client.d.mts +132 -119
  4. package/dist/client.mjs +59 -162
  5. package/dist/entry.d.mts +67 -148
  6. package/dist/entry.mjs +303 -474
  7. package/dist/features/focus-refetch/focus-refetch.d.mts +15 -0
  8. package/dist/features/focus-refetch/focus-refetch.mjs +18 -0
  9. package/dist/features/polling/polling.d.mts +12 -0
  10. package/dist/features/polling/polling.mjs +35 -0
  11. package/dist/features/reconnect-refetch/reconnect-refetch.d.mts +15 -0
  12. package/dist/features/reconnect-refetch/reconnect-refetch.mjs +14 -0
  13. package/dist/features/shared.mjs +13 -0
  14. package/dist/guards.mjs +23 -0
  15. package/dist/hydration/hydration.d.mts +73 -0
  16. package/dist/hydration/hydration.mjs +128 -0
  17. package/dist/index.d.mts +18 -13
  18. package/dist/index.mjs +15 -13
  19. package/dist/infinite/infinite.d.mts +71 -0
  20. package/dist/infinite/infinite.mjs +88 -0
  21. package/dist/internal.d.mts +13 -0
  22. package/dist/internal.mjs +7 -0
  23. package/dist/keys/keys.d.mts +46 -0
  24. package/dist/keys/keys.mjs +53 -0
  25. package/dist/keys/targets.d.mts +56 -0
  26. package/dist/keys/targets.mjs +85 -0
  27. package/dist/links/retry/retry.d.mts +26 -0
  28. package/dist/links/retry/retry.mjs +51 -0
  29. package/dist/links/timeout/timeout.d.mts +9 -0
  30. package/dist/links/timeout/timeout.mjs +27 -0
  31. package/dist/load.d.mts +124 -0
  32. package/dist/load.mjs +165 -0
  33. package/dist/options.d.mts +112 -338
  34. package/dist/options.mjs +25 -36
  35. package/dist/presets.d.mts +29 -0
  36. package/dist/presets.mjs +25 -0
  37. package/dist/root.d.mts +82 -0
  38. package/dist/structural-sharing/structural-sharing.mjs +32 -0
  39. package/dist/subscribe.d.mts +15 -0
  40. package/dist/subscribe.mjs +29 -0
  41. package/dist/thenable.d.mts +13 -17
  42. package/dist/thenable.mjs +25 -6
  43. package/dist/verbs.d.mts +109 -0
  44. package/dist/verbs.mjs +87 -0
  45. package/package.json +13 -9
  46. package/dist/_virtual/_rolldown/runtime.mjs +0 -13
  47. package/dist/all-keyed.d.mts +0 -18
  48. package/dist/all-keyed.mjs +0 -19
  49. package/dist/binding.d.mts +0 -92
  50. package/dist/binding.mjs +0 -186
  51. package/dist/cache.d.mts +0 -164
  52. package/dist/cache.mjs +0 -184
  53. package/dist/controls.d.mts +0 -93
  54. package/dist/controls.mjs +0 -69
  55. package/dist/hydration.d.mts +0 -84
  56. package/dist/hydration.mjs +0 -148
  57. package/dist/infinite.d.mts +0 -5
  58. package/dist/infinite.mjs +0 -103
  59. package/dist/key.d.mts +0 -18
  60. package/dist/key.mjs +0 -36
  61. package/dist/listen.mjs +0 -19
  62. package/dist/notify.mjs +0 -21
  63. package/dist/observer.d.mts +0 -110
  64. package/dist/observer.mjs +0 -300
  65. package/dist/platform.d.mts +0 -27
  66. package/dist/platform.mjs +0 -44
  67. package/dist/query.d.mts +0 -137
  68. package/dist/query.mjs +0 -147
  69. package/dist/request.mjs +0 -47
  70. package/dist/retry.mjs +0 -25
  71. package/dist/share.mjs +0 -40
package/dist/request.mjs DELETED
@@ -1,47 +0,0 @@
1
- import { Context, Effect, Scope } from "effect";
2
- //#region src/request.ts
3
- function isEffectResult(result) {
4
- return Effect.isEffect(result);
5
- }
6
- /**
7
- * One `queryFn` call as an Effect. The signal it gets aborts when the fiber
8
- * is interrupted; a returned Effect runs in the same fiber, so interrupting
9
- * the request interrupts it. Plain values settle like promises, a microtask
10
- * later. A `queryFn` that throws instead of returning is a defect, as in
11
- * `Effect.sync`.
12
- */
13
- function fromQueryFn(call) {
14
- return Effect.callback((resume, signal) => {
15
- let result;
16
- try {
17
- result = call(signal);
18
- } catch (error) {
19
- resume(Effect.die(error));
20
- return;
21
- }
22
- if (isEffectResult(result)) {
23
- resume(result);
24
- return;
25
- }
26
- Promise.resolve(result).then((value) => resume(Effect.succeed(value)), (error) => resume(Effect.fail(error)));
27
- });
28
- }
29
- /**
30
- * The services a request runs with: the cache's, under those of the verb
31
- * that last called for the entry. The caller's `Scope` is left out: a
32
- * request outlives the call that started it.
33
- */
34
- function requestServices(cache, caller) {
35
- return Context.merge(cache, Context.omit(Scope.Scope)(caller));
36
- }
37
- /**
38
- * A request as it runs: in a `raf-query.request` span, with `services`,
39
- * which hold what its `queryFn` Effect needs (entries erase that type with
40
- * the data's). Typed failures become the query's error; defects are logged
41
- * too, since nothing else reports them.
42
- */
43
- function runRequest(request, hash, services) {
44
- return request.pipe(Effect.tapDefect((defect) => Effect.logError("raf-query: queryFn died", defect)), Effect.withSpan("raf-query.request", { attributes: { "raf_query.hash": hash } }), Effect.provideContext(services));
45
- }
46
- //#endregion
47
- export { fromQueryFn, requestServices, runRequest };
package/dist/retry.mjs DELETED
@@ -1,25 +0,0 @@
1
- import { Effect, Predicate, Schedule } from "effect";
2
- //#region src/retry.ts
3
- /** Doubling from 1 s, at most 30 s. */
4
- const defaultDelays = /*#__PURE__*/ Schedule.min([Schedule.exponential("1 second"), Schedule.spaced("30 seconds")]);
5
- function delays(retryDelay) {
6
- if (retryDelay === void 0) return defaultDelays;
7
- if (Predicate.isNumber(retryDelay)) return Schedule.spaced(retryDelay);
8
- return Schedule.forever.pipe(Schedule.modifyDelay((step) => Effect.succeed(retryDelay(step.attempt, step.input))));
9
- }
10
- /**
11
- * A query's retry options as one `Schedule`, or `undefined` when it doesn't
12
- * retry. `retryDelay` sets the delays; a count or predicate in `retry` stops
13
- * the schedule, given the attempt number (1 after the first failure) and the
14
- * error.
15
- */
16
- function retrySchedule(behavior, isServer) {
17
- const retry = behavior.retry ?? (isServer ? 0 : 3);
18
- if (Schedule.isSchedule(retry)) return retry;
19
- if (retry === false || retry === 0) return;
20
- const schedule = delays(behavior.retryDelay);
21
- if (retry === true) return schedule;
22
- return schedule.pipe(Schedule.while((step) => Predicate.isNumber(retry) ? step.attempt <= retry : retry(step.attempt, step.input)));
23
- }
24
- //#endregion
25
- export { retrySchedule };
package/dist/share.mjs DELETED
@@ -1,40 +0,0 @@
1
- import { isPlainRecord } from "./key.mjs";
2
- //#region src/share.ts
3
- function isPlainArray(value) {
4
- return Array.isArray(value) && value.length === Object.keys(value).length;
5
- }
6
- function share(previous, next, depth) {
7
- if (previous === next || depth > 500) return next;
8
- if (isPlainArray(previous) && isPlainArray(next)) {
9
- let equal = previous.length === next.length;
10
- const copy = next.map((item, index) => {
11
- const shared = share(previous[index], item, depth + 1);
12
- equal &&= shared === previous[index];
13
- return shared;
14
- });
15
- return equal ? previous : copy;
16
- }
17
- if (isPlainRecord(previous) && isPlainRecord(next)) {
18
- const names = Object.keys(next);
19
- let equal = names.length === Object.keys(previous).length;
20
- const copy = {};
21
- for (const name of names) {
22
- const shared = share(previous[name], next[name], depth + 1);
23
- equal &&= shared === previous[name] && Object.hasOwn(previous, name);
24
- copy[name] = shared;
25
- }
26
- return equal ? previous : copy;
27
- }
28
- return next;
29
- }
30
- /**
31
- * `next`, reusing every part of `previous` that is deeply equal to it: all
32
- * of `previous` when nothing changed, else a copy of `next` whose unchanged
33
- * subtrees are `previous`'s. Only plain objects and arrays are compared;
34
- * anything else is taken from `next`. TanStack Query's `replaceEqualDeep`.
35
- */
36
- function replaceEqualDeep(previous, next) {
37
- return share(previous, next, 0);
38
- }
39
- //#endregion
40
- export { replaceEqualDeep };