Commit 968e7aa
committed
feat: accessInfo cache + monitor.onAccessUpdated + socket auto-bust (Plan 66)
Follow-up to Phase H. Wires the server's Plan 66 `accessUpdated`
fine-grained event into a useful SDK-side cache + helper.
connection.accessInfo now memoizes
- First call fetches from `/access-info` and caches the result in
`this._accessInfoCache`. Subsequent calls return the cached object
reference in O(1).
- New optional arg `forceRefresh` (default `false`); pass `true` to
bypass + refresh the cache. A failed fetch leaves any prior cached
value intact.
- Cached object reference is stable so consumers can do reference
equality across calls.
connection.socket auto-busts the cache
- When the server emits `accessUpdated` after `connection.socket.open()`,
SocketIO automatically calls `this.connection.accessInfo(true)` so
the cache reflects the new permissions / serial on the next read.
Best-effort — a failed refresh is swallowed and leaves the cache
alone.
- `'accessUpdated'` is added to the SocketIO EVENTS allow-list so
`socket.on('accessUpdated', handler)` is now a valid subscription.
monitor.onAccessUpdated(handler) helper
- Convenience on the Monitor instance that subscribes to the same
`accessUpdated` event, re-emitted by `Monitor.UpdateMethod.Socket`
on the Monitor itself. Requires the Socket update method (the
event is server-pushed via socket.io; polling-based update methods
never fire it).
- Returns `this` for chaining.
Type definitions
- `Connection.accessInfo(forceRefresh?)` updated in components/pryv
/src/index.d.ts. `updateAccess` + `getAccessWithHistory` also added.
- `Monitor.onAccessUpdated(handler)` declared in
components/pryv-monitor/src/index.d.ts.
Tests
- 2 new Connection.test.js cases — `[CAIC]` memoize-returns-same-ref
and `[CAID]` forceRefresh-replaces-cache. Both passing.
- Full pryv test suite: 173 passing, 0 failing, 2 pending (matches
prior baseline; no regression).1 parent a7bd786 commit 968e7aa
8 files changed
Lines changed: 101 additions & 6 deletions
File tree
- components
- pryv-monitor/src
- UpdateMethod
- pryv-socket.io/src
- pryv
- src
- test
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
12 | 12 | | |
13 | 13 | | |
14 | 14 | | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
15 | 19 | | |
16 | 20 | | |
17 | 21 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
163 | 163 | | |
164 | 164 | | |
165 | 165 | | |
| 166 | + | |
| 167 | + | |
| 168 | + | |
| 169 | + | |
| 170 | + | |
| 171 | + | |
| 172 | + | |
| 173 | + | |
| 174 | + | |
| 175 | + | |
| 176 | + | |
| 177 | + | |
| 178 | + | |
| 179 | + | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
166 | 190 | | |
167 | 191 | | |
168 | 192 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
23 | 23 | | |
24 | 24 | | |
25 | 25 | | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
26 | 35 | | |
27 | 36 | | |
28 | 37 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
96 | 96 | | |
97 | 97 | | |
98 | 98 | | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
99 | 107 | | |
100 | 108 | | |
101 | 109 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
5 | 5 | | |
6 | 6 | | |
7 | 7 | | |
8 | | - | |
| 8 | + | |
9 | 9 | | |
10 | 10 | | |
11 | 11 | | |
| |||
84 | 84 | | |
85 | 85 | | |
86 | 86 | | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
87 | 95 | | |
88 | 96 | | |
89 | 97 | | |
| |||
105 | 113 | | |
106 | 114 | | |
107 | 115 | | |
108 | | - | |
| 116 | + | |
109 | 117 | | |
110 | 118 | | |
111 | 119 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
72 | 72 | | |
73 | 73 | | |
74 | 74 | | |
75 | | - | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
76 | 84 | | |
77 | 85 | | |
78 | | - | |
79 | | - | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
80 | 91 | | |
81 | 92 | | |
82 | 93 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
723 | 723 | | |
724 | 724 | | |
725 | 725 | | |
726 | | - | |
| 726 | + | |
| 727 | + | |
| 728 | + | |
| 729 | + | |
| 730 | + | |
| 731 | + | |
727 | 732 | | |
728 | 733 | | |
729 | 734 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
499 | 499 | | |
500 | 500 | | |
501 | 501 | | |
| 502 | + | |
| 503 | + | |
| 504 | + | |
| 505 | + | |
| 506 | + | |
| 507 | + | |
| 508 | + | |
| 509 | + | |
| 510 | + | |
| 511 | + | |
| 512 | + | |
| 513 | + | |
| 514 | + | |
| 515 | + | |
| 516 | + | |
| 517 | + | |
| 518 | + | |
| 519 | + | |
| 520 | + | |
| 521 | + | |
| 522 | + | |
| 523 | + | |
| 524 | + | |
| 525 | + | |
| 526 | + | |
| 527 | + | |
502 | 528 | | |
503 | 529 | | |
0 commit comments