@tanstack/pacer 0.21.1 → 0.23.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 (101) hide show
  1. package/README.md +21 -6
  2. package/dist/async-batcher.d.ts +11 -14
  3. package/dist/async-batcher.js +186 -132
  4. package/dist/async-debouncer.d.ts +10 -13
  5. package/dist/async-debouncer.js +187 -146
  6. package/dist/async-queuer.d.ts +12 -14
  7. package/dist/async-queuer.js +384 -259
  8. package/dist/async-rate-limiter.d.ts +9 -12
  9. package/dist/async-rate-limiter.js +198 -147
  10. package/dist/async-retryer.d.ts +10 -10
  11. package/dist/async-retryer.js +209 -188
  12. package/dist/async-throttler.d.ts +10 -13
  13. package/dist/async-throttler.js +215 -161
  14. package/dist/batcher.d.ts +5 -8
  15. package/dist/batcher.js +107 -87
  16. package/dist/debouncer.d.ts +6 -9
  17. package/dist/debouncer.js +99 -86
  18. package/dist/event-client.d.ts +8 -11
  19. package/dist/event-client.js +1 -2
  20. package/dist/index.js +1 -1
  21. package/dist/queuer.d.ts +8 -10
  22. package/dist/queuer.js +277 -207
  23. package/dist/rate-limiter.d.ts +6 -9
  24. package/dist/rate-limiter.js +127 -109
  25. package/dist/throttler.d.ts +6 -9
  26. package/dist/throttler.js +127 -90
  27. package/dist/types.d.ts +4 -6
  28. package/dist/utils.d.ts +3 -6
  29. package/dist/utils.js +1 -2
  30. package/package.json +23 -70
  31. package/dist/async-batcher.cjs +0 -337
  32. package/dist/async-batcher.cjs.map +0 -1
  33. package/dist/async-batcher.d.cts +0 -344
  34. package/dist/async-batcher.js.map +0 -1
  35. package/dist/async-debouncer.cjs +0 -330
  36. package/dist/async-debouncer.cjs.map +0 -1
  37. package/dist/async-debouncer.d.cts +0 -300
  38. package/dist/async-debouncer.js.map +0 -1
  39. package/dist/async-queuer.cjs +0 -484
  40. package/dist/async-queuer.cjs.map +0 -1
  41. package/dist/async-queuer.d.cts +0 -440
  42. package/dist/async-queuer.js.map +0 -1
  43. package/dist/async-rate-limiter.cjs +0 -373
  44. package/dist/async-rate-limiter.cjs.map +0 -1
  45. package/dist/async-rate-limiter.d.cts +0 -357
  46. package/dist/async-rate-limiter.js.map +0 -1
  47. package/dist/async-retryer.cjs +0 -374
  48. package/dist/async-retryer.cjs.map +0 -1
  49. package/dist/async-retryer.d.cts +0 -319
  50. package/dist/async-retryer.js.map +0 -1
  51. package/dist/async-throttler.cjs +0 -347
  52. package/dist/async-throttler.cjs.map +0 -1
  53. package/dist/async-throttler.d.cts +0 -320
  54. package/dist/async-throttler.js.map +0 -1
  55. package/dist/batcher.cjs +0 -200
  56. package/dist/batcher.cjs.map +0 -1
  57. package/dist/batcher.d.cts +0 -180
  58. package/dist/batcher.js.map +0 -1
  59. package/dist/debouncer.cjs +0 -203
  60. package/dist/debouncer.cjs.map +0 -1
  61. package/dist/debouncer.d.cts +0 -167
  62. package/dist/debouncer.js.map +0 -1
  63. package/dist/event-client.cjs +0 -64
  64. package/dist/event-client.cjs.map +0 -1
  65. package/dist/event-client.d.cts +0 -66
  66. package/dist/event-client.js.map +0 -1
  67. package/dist/index.cjs +0 -52
  68. package/dist/index.d.cts +0 -15
  69. package/dist/queuer.cjs +0 -401
  70. package/dist/queuer.cjs.map +0 -1
  71. package/dist/queuer.d.cts +0 -345
  72. package/dist/queuer.js.map +0 -1
  73. package/dist/rate-limiter.cjs +0 -263
  74. package/dist/rate-limiter.cjs.map +0 -1
  75. package/dist/rate-limiter.d.cts +0 -215
  76. package/dist/rate-limiter.js.map +0 -1
  77. package/dist/throttler.cjs +0 -215
  78. package/dist/throttler.cjs.map +0 -1
  79. package/dist/throttler.d.cts +0 -207
  80. package/dist/throttler.js.map +0 -1
  81. package/dist/types.cjs +0 -0
  82. package/dist/types.d.cts +0 -13
  83. package/dist/utils.cjs +0 -14
  84. package/dist/utils.cjs.map +0 -1
  85. package/dist/utils.d.cts +0 -8
  86. package/dist/utils.js.map +0 -1
  87. package/src/async-batcher.ts +0 -594
  88. package/src/async-debouncer.ts +0 -565
  89. package/src/async-queuer.ts +0 -925
  90. package/src/async-rate-limiter.ts +0 -647
  91. package/src/async-retryer.ts +0 -684
  92. package/src/async-throttler.ts +0 -633
  93. package/src/batcher.ts +0 -329
  94. package/src/debouncer.ts +0 -334
  95. package/src/event-client.ts +0 -129
  96. package/src/index.ts +0 -24
  97. package/src/queuer.ts +0 -740
  98. package/src/rate-limiter.ts +0 -429
  99. package/src/throttler.ts +0 -380
  100. package/src/types.ts +0 -12
  101. package/src/utils.ts +0 -12
@@ -1,129 +0,0 @@
1
- import { EventClient } from '@tanstack/devtools-event-client'
2
-
3
- /**
4
- * Payload on the devtools event bus must be JSON-serializable: `ClientEventBus`
5
- * always stringifies events for `emitToServer` and `BroadcastChannel`, so live
6
- * util instances (with reactive `store` graphs) cannot be sent as-is.
7
- *
8
- * Live instances are kept in {@link pacerDevtoolsInstancesByKey} for the panel.
9
- */
10
- export interface PacerDevtoolsWirePayload {
11
- key: string
12
- store: { state: unknown }
13
- options: unknown
14
- }
15
-
16
- const pacerDevtoolsInstancesByKey = new Map<string, unknown>()
17
-
18
- export function registerPacerDevtoolsInstance(
19
- key: string,
20
- instance: unknown,
21
- ): void {
22
- pacerDevtoolsInstancesByKey.set(key, instance)
23
- }
24
-
25
- export function getPacerDevtoolsInstance(key: string): unknown {
26
- return pacerDevtoolsInstancesByKey.get(key)
27
- }
28
-
29
- function cloneJsonSafe(value: unknown): unknown {
30
- if (value === undefined) {
31
- return undefined
32
- }
33
- try {
34
- return JSON.parse(JSON.stringify(value)) as unknown
35
- } catch {
36
- return null
37
- }
38
- }
39
-
40
- function readStoreSnapshot(store: {
41
- get?: () => unknown
42
- state?: unknown
43
- }): unknown {
44
- if (typeof store.get === 'function') {
45
- return store.get()
46
- }
47
- return store.state
48
- }
49
-
50
- function toPacerDevtoolsWirePayload(instance: {
51
- key: string
52
- store: { get?: () => unknown; state?: unknown }
53
- options: unknown
54
- }): PacerDevtoolsWirePayload {
55
- return {
56
- key: instance.key,
57
- store: { state: cloneJsonSafe(readStoreSnapshot(instance.store)) },
58
- options: cloneJsonSafe(instance.options),
59
- }
60
- }
61
-
62
- /**
63
- * Suffix-only keys: {@link EventClient} prepends `pluginId:` (`pacer:`) at runtime
64
- * for `emit` / `on`. Wire `type` values are `pacer:${key}`.
65
- */
66
- export interface PacerEventMap {
67
- 'd-AsyncBatcher': PacerDevtoolsWirePayload
68
- 'd-AsyncDebouncer': PacerDevtoolsWirePayload
69
- 'd-AsyncQueuer': PacerDevtoolsWirePayload
70
- 'd-AsyncRateLimiter': PacerDevtoolsWirePayload
71
- 'd-AsyncRetryer': PacerDevtoolsWirePayload
72
- 'd-AsyncThrottler': PacerDevtoolsWirePayload
73
- 'd-Batcher': PacerDevtoolsWirePayload
74
- 'd-Debouncer': PacerDevtoolsWirePayload
75
- 'd-Queuer': PacerDevtoolsWirePayload
76
- 'd-RateLimiter': PacerDevtoolsWirePayload
77
- 'd-Throttler': PacerDevtoolsWirePayload
78
- AsyncBatcher: PacerDevtoolsWirePayload
79
- AsyncDebouncer: PacerDevtoolsWirePayload
80
- AsyncQueuer: PacerDevtoolsWirePayload
81
- AsyncRateLimiter: PacerDevtoolsWirePayload
82
- AsyncRetryer: PacerDevtoolsWirePayload
83
- AsyncThrottler: PacerDevtoolsWirePayload
84
- Batcher: PacerDevtoolsWirePayload
85
- Debouncer: PacerDevtoolsWirePayload
86
- Queuer: PacerDevtoolsWirePayload
87
- RateLimiter: PacerDevtoolsWirePayload
88
- Throttler: PacerDevtoolsWirePayload
89
- }
90
-
91
- export type PacerEventName = keyof PacerEventMap
92
-
93
- type PacerUtilEmitSource = {
94
- key?: string
95
- store: { get?: () => unknown; state?: unknown }
96
- options: unknown
97
- }
98
-
99
- class PacerEventClient extends EventClient<PacerEventMap> {
100
- constructor(props?: { debug: boolean }) {
101
- super({
102
- pluginId: 'pacer',
103
- debug: props?.debug,
104
- /**
105
- * TanStack Devtools starts `ClientEventBus` inside an async dynamic import
106
- * after the first commit. Pacer utils often emit during the first render
107
- * (constructor → store sync). `EventClient` only retries `tanstack-connect`
108
- * `#maxRetries` times at `reconnectEveryMs` before it gives up and drops
109
- * all queued events permanently. Default 300ms × 5 ≈ 1.5s is often too
110
- * short; Form uses 1000ms here for the same reason.
111
- */
112
- reconnectEveryMs: 1000,
113
- })
114
- }
115
- }
116
-
117
- export const emitChange = <TEvent extends keyof PacerEventMap>(
118
- event: TEvent,
119
- instance: PacerUtilEmitSource,
120
- ) => {
121
- const key = instance.key
122
- if (!key) {
123
- return
124
- }
125
- registerPacerDevtoolsInstance(key, instance)
126
- pacerEventClient.emit(event, toPacerDevtoolsWirePayload({ ...instance, key }))
127
- }
128
-
129
- export const pacerEventClient = new PacerEventClient()
package/src/index.ts DELETED
@@ -1,24 +0,0 @@
1
- export * from './async-batcher'
2
- export * from './async-debouncer'
3
- export * from './async-queuer'
4
- export * from './async-rate-limiter'
5
- export * from './async-retryer'
6
- export * from './async-throttler'
7
- export * from './batcher'
8
- export * from './debouncer'
9
- export * from './queuer'
10
- export * from './rate-limiter'
11
- export * from './throttler'
12
- export * from './types'
13
- export * from './utils'
14
-
15
- export {
16
- emitChange,
17
- getPacerDevtoolsInstance,
18
- pacerEventClient,
19
- } from './event-client'
20
- export type {
21
- PacerDevtoolsWirePayload,
22
- PacerEventMap,
23
- PacerEventName,
24
- } from './event-client'