@brendanbank/atrium-host-bundle-utils 0.17.0 → 0.19.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.
- package/README.md +5 -5
- package/dist/react/index.d.ts +65 -20
- package/dist/react/index.d.ts.map +1 -1
- package/dist/react/index.js +100 -13
- package/dist/react/index.js.map +1 -1
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -87,9 +87,9 @@ function App() {
|
|
|
87
87
|
}
|
|
88
88
|
```
|
|
89
89
|
|
|
90
|
-
The hooks fetch atrium's fixed same-origin `/users/me/context`
|
|
91
|
-
endpoint — no path is configurable, since a host
|
|
92
|
-
atrium's SPA and hits the same origin. `<AtriumProvider>` reads from
|
|
90
|
+
The hooks fetch atrium's fixed same-origin `/api/users/me/context`
|
|
91
|
+
endpoint (atrium >= 0.19) — no path is configurable, since a host
|
|
92
|
+
bundle loads inside atrium's SPA and hits the same origin. `<AtriumProvider>` reads from
|
|
93
93
|
your existing `<QueryClientProvider>` by default — no second
|
|
94
94
|
QueryClient. Pass `client={hostQueryClient}` to wrap one inline; pass
|
|
95
95
|
`fetchUserContext={...}` to inject a custom fetcher (useful for tests
|
|
@@ -97,8 +97,8 @@ or hosts that want axios-shaped retry).
|
|
|
97
97
|
|
|
98
98
|
## Versioning
|
|
99
99
|
|
|
100
|
-
The package version tracks atrium's image version. Pin `^0.
|
|
101
|
-
"compatible with atrium 0.
|
|
100
|
+
The package version tracks atrium's image version. Pin `^0.19` for
|
|
101
|
+
"compatible with atrium 0.19.x"; bump together with the atrium image
|
|
102
102
|
to pick up new registry slots and SDK helpers.
|
|
103
103
|
|
|
104
104
|
## See also
|
package/dist/react/index.d.ts
CHANGED
|
@@ -2,27 +2,29 @@
|
|
|
2
2
|
* React hooks + provider for atrium host bundles.
|
|
3
3
|
*
|
|
4
4
|
* One TanStack Query subscription serves the whole host tree:
|
|
5
|
-
* `useMe()` fetches `/users/me/context` once and shares the
|
|
6
|
-
* with every `usePerm()`, `useRole()`, and `useUserContext()`
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
* by
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
5
|
+
* `useMe()` fetches `/api/users/me/context` once and shares the
|
|
6
|
+
* result with every `usePerm()`, `useRole()`, and `useUserContext()`
|
|
7
|
+
* caller.
|
|
8
|
+
*
|
|
9
|
+
* The endpoint path is fixed by atrium — it's mounted under
|
|
10
|
+
* `/api/...` (atrium >= 0.19) and served from the same origin as the
|
|
11
|
+
* bundle. There's no `apiBase` prop because there's nothing for the
|
|
12
|
+
* host to configure: a host bundle that loads inside atrium's SPA
|
|
13
|
+
* fetches a same-origin relative path. Hosts that want to layer
|
|
14
|
+
* their own retry / headers / mock can pass `fetchUserContext`.
|
|
15
|
+
*
|
|
16
|
+
* The hooks reuse the host's enclosing `<QueryClientProvider>` if
|
|
17
|
+
* one is already mounted; pass `client={hostQueryClient}` to
|
|
17
18
|
* `<AtriumProvider>` only if you want this provider to wrap the
|
|
18
19
|
* QueryClient too. Two QueryClients (atrium's + the host's) is the
|
|
19
|
-
* intended state — atrium clears its cache on logout via
|
|
20
|
-
* and a shared client would lose host queries the user
|
|
20
|
+
* intended state — atrium clears its cache on logout via
|
|
21
|
+
* `qc.clear()`, and a shared client would lose host queries the user
|
|
22
|
+
* still wants.
|
|
21
23
|
*/
|
|
22
24
|
import { type ReactNode } from 'react';
|
|
23
25
|
import { type QueryClient, type UseQueryResult } from '@tanstack/react-query';
|
|
24
|
-
import type { UserContext } from '@brendanbank/atrium-host-types';
|
|
25
|
-
export type { UserContext } from '@brendanbank/atrium-host-types';
|
|
26
|
+
import type { AtriumUserChangeDetail, UserContext } from '@brendanbank/atrium-host-types';
|
|
27
|
+
export type { AtriumUserChangeDetail, UserContext, } from '@brendanbank/atrium-host-types';
|
|
26
28
|
export { __atrium_t__ } from '../i18n';
|
|
27
29
|
interface AtriumContextValue {
|
|
28
30
|
fetchUserContext: () => Promise<UserContext | null>;
|
|
@@ -33,10 +35,10 @@ export interface AtriumProviderProps {
|
|
|
33
35
|
* inherit the caller's enclosing one. Use this only when the host
|
|
34
36
|
* hasn't already set up its own provider. */
|
|
35
37
|
client?: QueryClient;
|
|
36
|
-
/** Override the fetcher for `/users/me/context`. Useful for
|
|
37
|
-
* and for hosts that want to layer an axios interceptor or
|
|
38
|
-
* headers on top. The default uses `fetch` with
|
|
39
|
-
* 'include'`. */
|
|
38
|
+
/** Override the fetcher for `/api/users/me/context`. Useful for
|
|
39
|
+
* tests and for hosts that want to layer an axios interceptor or
|
|
40
|
+
* extra headers on top. The default uses `fetch` with
|
|
41
|
+
* `credentials: 'include'`. */
|
|
40
42
|
fetchUserContext?: () => Promise<UserContext | null>;
|
|
41
43
|
children: ReactNode;
|
|
42
44
|
}
|
|
@@ -198,4 +200,47 @@ export declare function useAtriumNavigate(): (href: string, opts?: {
|
|
|
198
200
|
* `window.location` fresh. Production code never calls this — the
|
|
199
201
|
* cache is updated by the event subscription. */
|
|
200
202
|
export declare function __resetAtriumLocationCacheForTests(): void;
|
|
203
|
+
/** Subscribe to atrium's identity transitions from inside a host
|
|
204
|
+
* bundle's React tree. Returns the most recent `atrium:userchange`
|
|
205
|
+
* detail — `{previous, current, nonce}` — or a zeroed sentinel
|
|
206
|
+
* (`{previous: null, current: null, nonce: 0}`) before any event has
|
|
207
|
+
* fired. The hook does NOT report the initial signed-in state on
|
|
208
|
+
* mount; use `useUserContext()` for that.
|
|
209
|
+
*
|
|
210
|
+
* Bridges the `atrium:userchange` CustomEvent atrium dispatches on
|
|
211
|
+
* `window` through `useSyncExternalStore`, so multiple subscribers in
|
|
212
|
+
* the same tree share one event listener and the snapshot is
|
|
213
|
+
* referentially stable when nothing has changed.
|
|
214
|
+
*
|
|
215
|
+
* The canonical use is wiping a host's own QueryClient when the user
|
|
216
|
+
* swaps — without it, user A's host cache renders for user B until
|
|
217
|
+
* staleness forces a refetch:
|
|
218
|
+
*
|
|
219
|
+
* ```tsx
|
|
220
|
+
* function HostCacheGuard({ client }: { client: QueryClient }) {
|
|
221
|
+
* const { nonce } = useAtriumUser();
|
|
222
|
+
* useEffect(() => {
|
|
223
|
+
* // nonce > 0 means at least one transition has fired; on the
|
|
224
|
+
* // first paint we skip (the host already loaded against the
|
|
225
|
+
* // current user).
|
|
226
|
+
* if (nonce > 0) client.clear();
|
|
227
|
+
* }, [nonce, client]);
|
|
228
|
+
* return null;
|
|
229
|
+
* }
|
|
230
|
+
* ```
|
|
231
|
+
*
|
|
232
|
+
* Hosts that don't use React (or want to clear the cache from outside
|
|
233
|
+
* any component) can subscribe directly:
|
|
234
|
+
* `window.addEventListener('atrium:userchange', () => client.clear())`.
|
|
235
|
+
*
|
|
236
|
+
* Available on atrium 0.18+. On older atrium images the event is
|
|
237
|
+
* never dispatched, so the hook stays at the zeroed sentinel — host
|
|
238
|
+
* bundles that need to support pre-0.18 atrium can read
|
|
239
|
+
* `window.__ATRIUM_VERSION__` and fall back to the in-component
|
|
240
|
+
* watch-`useUserContext` workaround. */
|
|
241
|
+
export declare function useAtriumUser(): AtriumUserChangeDetail;
|
|
242
|
+
/** Test-only: drop the cached snapshot so the next `getSnapshot`
|
|
243
|
+
* returns the zeroed sentinel. Production code never calls this — the
|
|
244
|
+
* cache is updated by the event subscription. */
|
|
245
|
+
export declare function __resetAtriumUserCacheForTests(): void;
|
|
201
246
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"AAGA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,OAAO,EAOL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AACf,OAAO,EAGL,KAAK,WAAW,EAChB,KAAK,cAAc,EACpB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,KAAK,EACV,sBAAsB,EACtB,WAAW,EACZ,MAAM,gCAAgC,CAAC;AAExC,YAAY,EACV,sBAAsB,EACtB,WAAW,GACZ,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,UAAU,kBAAkB;IAC1B,gBAAgB,EAAE,MAAM,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;CACrD;AAmBD,MAAM,WAAW,mBAAmB;IAClC;;;kDAG8C;IAC9C,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB;;;oCAGgC;IAChC,gBAAgB,CAAC,EAAE,MAAM,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IACrD,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED;;;qCAGqC;AACrC,wBAAgB,cAAc,CAAC,EAC7B,MAAM,EACN,gBAAgB,EAChB,QAAQ,GACT,EAAE,mBAAmB,2MAYrB;AAED;;iEAEiE;AACjE,eAAO,MAAM,YAAY,2BAA4B,CAAC;AAmBtD;;;;;;;;8BAQ8B;AAC9B,wBAAgB,KAAK,IAAI,cAAc,CAAC,WAAW,GAAG,IAAI,CAAC,CAQ1D;AAED;;iBAEiB;AACjB,wBAAgB,cAAc,IAAI,cAAc,CAAC,WAAW,GAAG,IAAI,CAAC,CAEnE;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,OAAO,IAAI,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAMnD;AAED;sEACsE;AACtE,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAG7C;AAED;;;qBAGqB;AACrB,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb;;;;;;;;uCAQmC;IACnC,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAoEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aA6Ca;AACb,wBAAgB,iBAAiB,IAAI,cAAc,CAMlD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qEAyCqE;AACrE,wBAAgB,iBAAiB,IAAI,CACnC,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,KACzB,IAAI,CAeR;AAED;;kDAEkD;AAClD,wBAAgB,kCAAkC,IAAI,IAAI,CAEzD;AAkDD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yCAqCyC;AACzC,wBAAgB,aAAa,IAAI,sBAAsB,CAMtD;AAED;;kDAEkD;AAClD,wBAAgB,8BAA8B,IAAI,IAAI,CAErD"}
|
package/dist/react/index.js
CHANGED
|
@@ -4,27 +4,29 @@
|
|
|
4
4
|
* React hooks + provider for atrium host bundles.
|
|
5
5
|
*
|
|
6
6
|
* One TanStack Query subscription serves the whole host tree:
|
|
7
|
-
* `useMe()` fetches `/users/me/context` once and shares the
|
|
8
|
-
* with every `usePerm()`, `useRole()`, and `useUserContext()`
|
|
7
|
+
* `useMe()` fetches `/api/users/me/context` once and shares the
|
|
8
|
+
* result with every `usePerm()`, `useRole()`, and `useUserContext()`
|
|
9
|
+
* caller.
|
|
9
10
|
*
|
|
10
|
-
* The endpoint path is fixed by atrium — it's mounted
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
11
|
+
* The endpoint path is fixed by atrium — it's mounted under
|
|
12
|
+
* `/api/...` (atrium >= 0.19) and served from the same origin as the
|
|
13
|
+
* bundle. There's no `apiBase` prop because there's nothing for the
|
|
14
|
+
* host to configure: a host bundle that loads inside atrium's SPA
|
|
15
|
+
* fetches a same-origin relative path. Hosts that want to layer
|
|
16
|
+
* their own retry / headers / mock can pass `fetchUserContext`.
|
|
16
17
|
*
|
|
17
|
-
* The hooks reuse the host's enclosing `<QueryClientProvider>` if
|
|
18
|
-
* is already mounted; pass `client={hostQueryClient}` to
|
|
18
|
+
* The hooks reuse the host's enclosing `<QueryClientProvider>` if
|
|
19
|
+
* one is already mounted; pass `client={hostQueryClient}` to
|
|
19
20
|
* `<AtriumProvider>` only if you want this provider to wrap the
|
|
20
21
|
* QueryClient too. Two QueryClients (atrium's + the host's) is the
|
|
21
|
-
* intended state — atrium clears its cache on logout via
|
|
22
|
-
* and a shared client would lose host queries the user
|
|
22
|
+
* intended state — atrium clears its cache on logout via
|
|
23
|
+
* `qc.clear()`, and a shared client would lose host queries the user
|
|
24
|
+
* still wants.
|
|
23
25
|
*/
|
|
24
26
|
import { createContext, createElement, useCallback, useContext, useMemo, useSyncExternalStore, } from 'react';
|
|
25
27
|
import { QueryClientProvider, useQuery, } from '@tanstack/react-query';
|
|
26
28
|
export { __atrium_t__ } from '../i18n';
|
|
27
|
-
const ME_CONTEXT_PATH = '/users/me/context';
|
|
29
|
+
const ME_CONTEXT_PATH = '/api/users/me/context';
|
|
28
30
|
async function defaultFetchUserContext() {
|
|
29
31
|
const res = await fetch(ME_CONTEXT_PATH, {
|
|
30
32
|
credentials: 'include',
|
|
@@ -296,4 +298,89 @@ export function useAtriumNavigate() {
|
|
|
296
298
|
export function __resetAtriumLocationCacheForTests() {
|
|
297
299
|
cachedLocation = null;
|
|
298
300
|
}
|
|
301
|
+
// ---------------------------------------------------------------------------
|
|
302
|
+
// Identity transitions — `atrium:userchange`
|
|
303
|
+
// ---------------------------------------------------------------------------
|
|
304
|
+
const ATRIUM_USERCHANGE_EVENT = 'atrium:userchange';
|
|
305
|
+
const NO_USERCHANGE = {
|
|
306
|
+
previous: null,
|
|
307
|
+
current: null,
|
|
308
|
+
nonce: 0,
|
|
309
|
+
};
|
|
310
|
+
// Module-level cache so `useSyncExternalStore.getSnapshot` returns a
|
|
311
|
+
// referentially-stable object across renders. Updated only when an
|
|
312
|
+
// `atrium:userchange` event lands; `null` until the first event.
|
|
313
|
+
let cachedUserChange = null;
|
|
314
|
+
function getUserChangeSnapshot() {
|
|
315
|
+
return cachedUserChange ?? NO_USERCHANGE;
|
|
316
|
+
}
|
|
317
|
+
function getServerUserChangeSnapshot() {
|
|
318
|
+
return NO_USERCHANGE;
|
|
319
|
+
}
|
|
320
|
+
function subscribeUserChange(onChange) {
|
|
321
|
+
if (typeof window === 'undefined')
|
|
322
|
+
return () => { };
|
|
323
|
+
const handler = (e) => {
|
|
324
|
+
const detail = e.detail;
|
|
325
|
+
if (detail &&
|
|
326
|
+
(detail.previous === null || typeof detail.previous === 'number') &&
|
|
327
|
+
(detail.current === null || typeof detail.current === 'number')) {
|
|
328
|
+
cachedUserChange = {
|
|
329
|
+
previous: detail.previous,
|
|
330
|
+
current: detail.current,
|
|
331
|
+
nonce: typeof detail.nonce === 'number' ? detail.nonce : 0,
|
|
332
|
+
};
|
|
333
|
+
onChange();
|
|
334
|
+
}
|
|
335
|
+
};
|
|
336
|
+
window.addEventListener(ATRIUM_USERCHANGE_EVENT, handler);
|
|
337
|
+
return () => window.removeEventListener(ATRIUM_USERCHANGE_EVENT, handler);
|
|
338
|
+
}
|
|
339
|
+
/** Subscribe to atrium's identity transitions from inside a host
|
|
340
|
+
* bundle's React tree. Returns the most recent `atrium:userchange`
|
|
341
|
+
* detail — `{previous, current, nonce}` — or a zeroed sentinel
|
|
342
|
+
* (`{previous: null, current: null, nonce: 0}`) before any event has
|
|
343
|
+
* fired. The hook does NOT report the initial signed-in state on
|
|
344
|
+
* mount; use `useUserContext()` for that.
|
|
345
|
+
*
|
|
346
|
+
* Bridges the `atrium:userchange` CustomEvent atrium dispatches on
|
|
347
|
+
* `window` through `useSyncExternalStore`, so multiple subscribers in
|
|
348
|
+
* the same tree share one event listener and the snapshot is
|
|
349
|
+
* referentially stable when nothing has changed.
|
|
350
|
+
*
|
|
351
|
+
* The canonical use is wiping a host's own QueryClient when the user
|
|
352
|
+
* swaps — without it, user A's host cache renders for user B until
|
|
353
|
+
* staleness forces a refetch:
|
|
354
|
+
*
|
|
355
|
+
* ```tsx
|
|
356
|
+
* function HostCacheGuard({ client }: { client: QueryClient }) {
|
|
357
|
+
* const { nonce } = useAtriumUser();
|
|
358
|
+
* useEffect(() => {
|
|
359
|
+
* // nonce > 0 means at least one transition has fired; on the
|
|
360
|
+
* // first paint we skip (the host already loaded against the
|
|
361
|
+
* // current user).
|
|
362
|
+
* if (nonce > 0) client.clear();
|
|
363
|
+
* }, [nonce, client]);
|
|
364
|
+
* return null;
|
|
365
|
+
* }
|
|
366
|
+
* ```
|
|
367
|
+
*
|
|
368
|
+
* Hosts that don't use React (or want to clear the cache from outside
|
|
369
|
+
* any component) can subscribe directly:
|
|
370
|
+
* `window.addEventListener('atrium:userchange', () => client.clear())`.
|
|
371
|
+
*
|
|
372
|
+
* Available on atrium 0.18+. On older atrium images the event is
|
|
373
|
+
* never dispatched, so the hook stays at the zeroed sentinel — host
|
|
374
|
+
* bundles that need to support pre-0.18 atrium can read
|
|
375
|
+
* `window.__ATRIUM_VERSION__` and fall back to the in-component
|
|
376
|
+
* watch-`useUserContext` workaround. */
|
|
377
|
+
export function useAtriumUser() {
|
|
378
|
+
return useSyncExternalStore(subscribeUserChange, getUserChangeSnapshot, getServerUserChangeSnapshot);
|
|
379
|
+
}
|
|
380
|
+
/** Test-only: drop the cached snapshot so the next `getSnapshot`
|
|
381
|
+
* returns the zeroed sentinel. Production code never calls this — the
|
|
382
|
+
* cache is updated by the event subscription. */
|
|
383
|
+
export function __resetAtriumUserCacheForTests() {
|
|
384
|
+
cachedUserChange = null;
|
|
385
|
+
}
|
|
299
386
|
//# sourceMappingURL=index.js.map
|
package/dist/react/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"AAAA,kCAAkC;AAClC,wCAAwC;AAExC
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@brendanbank/atrium-host-bundle-utils",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "Runtime helpers, Vite preset, and React hooks for atrium host bundles. Wraps the dual-tree mount pattern, the host-bundle Vite library config, and the /users/me/context hook so a host's main.tsx is ~10 lines of registration calls.",
|
|
3
|
+
"version": "0.19.0",
|
|
4
|
+
"description": "Runtime helpers, Vite preset, and React hooks for atrium host bundles. Wraps the dual-tree mount pattern, the host-bundle Vite library config, and the /api/users/me/context hook so a host's main.tsx is ~10 lines of registration calls.",
|
|
5
5
|
"license": "BSD-2-Clause",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"files": [
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
}
|
|
26
26
|
},
|
|
27
27
|
"dependencies": {
|
|
28
|
-
"@brendanbank/atrium-host-types": "0.
|
|
28
|
+
"@brendanbank/atrium-host-types": "0.19.0"
|
|
29
29
|
},
|
|
30
30
|
"peerDependencies": {
|
|
31
31
|
"@tanstack/react-query": "^5.0.0",
|