@stapel/workspaces-react 0.15.0 → 0.16.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/CHANGELOG.md +68 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/model/mandate.d.ts +18 -0
- package/dist/model/mandate.d.ts.map +1 -0
- package/dist/model/mandate.js +74 -0
- package/dist/model/mandate.js.map +1 -0
- package/dist/model/mutations.d.ts.map +1 -1
- package/dist/model/mutations.js +21 -0
- package/dist/model/mutations.js.map +1 -1
- package/llms.txt +1 -1
- package/manifest.json +17 -1
- package/package.json +3 -3
- package/src/analytics/generated/events.json +1 -1
- package/src/index.ts +5 -0
- package/src/model/mandate.ts +83 -0
- package/src/model/mutations.ts +21 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,73 @@
|
|
|
1
1
|
# @stapel/workspaces-react
|
|
2
2
|
|
|
3
|
+
## 0.16.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- e25e9a6: `useMandateState()`, and a `resolveNav` that consumes the surface axis.
|
|
8
|
+
|
|
9
|
+
`is_guest` has ridden the workspace-list response since stapel-workspaces
|
|
10
|
+
0.19 and had **zero readers**. `useMandateState()` is the first one: the
|
|
11
|
+
single point of truth for "does this person hold a mandate anywhere",
|
|
12
|
+
computed from two answers that already existed — the active session's status
|
|
13
|
+
(which settles anonymous and no-session without asking anyone) and the
|
|
14
|
+
server's own `is_guest` predicate. No new endpoint, and no extra request:
|
|
15
|
+
it reads the same `useWorkspaces()` a screen is already running.
|
|
16
|
+
|
|
17
|
+
The server evaluates the predicate; the hook does not re-derive it. A caller
|
|
18
|
+
can hold membership rows that grant no mandate, so `workspaces.length` is not
|
|
19
|
+
the question — it is consulted only against a backend too old to answer.
|
|
20
|
+
|
|
21
|
+
The unresolved case is the reason the hook is shaped the way it is. A list in
|
|
22
|
+
flight and a list that 502'd both resolve to `unresolved` with a reason, and
|
|
23
|
+
neither ever resolves to `guest`. The one-liner this forecloses —
|
|
24
|
+
`data?.is_guest ?? true` — turns every backend hiccup into "you are a guest",
|
|
25
|
+
locks members out of their own product, and explains nothing; there is no
|
|
26
|
+
expression of that shape available, because the pending and failed states
|
|
27
|
+
carry no principal to read. Render it with `matchMandate`: a wait, or the
|
|
28
|
+
outage stated out loud.
|
|
29
|
+
|
|
30
|
+
`resolveNav` now takes an optional `{ audience }` and every `ResolvedNavEntry`
|
|
31
|
+
carries its resolved `surface`. Omit the audience and nothing changes — the
|
|
32
|
+
scaffold-codegen call site keeps baking every route, and so does every
|
|
33
|
+
existing runtime caller. Pass one and a screen closed to that principal is
|
|
34
|
+
dropped, menu entry and route together, which is the fix: the tree a host
|
|
35
|
+
mounts from is the tree the axis filtered. A project's override file can flip
|
|
36
|
+
`menuVisible` and `order`; it deliberately cannot flip this, because a
|
|
37
|
+
per-project preference must not put a screen that will refuse the caller back
|
|
38
|
+
in front of them.
|
|
39
|
+
|
|
40
|
+
`audience` is a `MandatePrincipal`, so `"unresolved"` cannot be passed. A host
|
|
41
|
+
whose mandate has not settled has to render the wait or the error rather than
|
|
42
|
+
resolve a nav for it — the alternative is a menu that quietly empties itself
|
|
43
|
+
whenever the backend hiccups, which is "we could not ask" rendered as "you
|
|
44
|
+
may not".
|
|
45
|
+
|
|
46
|
+
## 0.15.1
|
|
47
|
+
|
|
48
|
+
### Patch Changes
|
|
49
|
+
|
|
50
|
+
- a8bd3f4: Raise the `@stapel/core` peer floor to the version that actually exports what each package imports.
|
|
51
|
+
|
|
52
|
+
`@stapel/workspaces-react` 0.15.0 shipped declaring `>=0.12.0` while importing
|
|
53
|
+
`LoadState`, which core did not export until 0.13.0. npm installed it happily;
|
|
54
|
+
the host's typecheck then failed on a type the package's own `.d.ts` referenced
|
|
55
|
+
and the host could not resolve. Nine packages were wrong the same way — most by
|
|
56
|
+
a wider margin (`recordings-react` allowed 0.3.0).
|
|
57
|
+
|
|
58
|
+
Nothing here could have caught it by building: in this monorepo every package
|
|
59
|
+
compiles against the workspace core, always the newest one, so a declared floor
|
|
60
|
+
is never the version anything is compiled against. `pnpm check:peer-floors` now
|
|
61
|
+
reads each package's imports from `@stapel/core`, asks core's own tagged history
|
|
62
|
+
which release first exported each name, and fails when the floor is older —
|
|
63
|
+
wired into CI **and** the publishing path, since a gate only on the merge path
|
|
64
|
+
does not stop a release.
|
|
65
|
+
|
|
66
|
+
Also invalidates the workspace audit query after an invite, a role change and a
|
|
67
|
+
removal: the history sits beside the roster and an admin who acts on one expects
|
|
68
|
+
to see it in the other. Its key is its own root, so the members invalidation did
|
|
69
|
+
not reach it.
|
|
70
|
+
|
|
3
71
|
## 0.15.0
|
|
4
72
|
|
|
5
73
|
### Minor Changes
|
package/dist/index.d.ts
CHANGED
|
@@ -26,6 +26,7 @@ export { WorkspaceSelectionProvider, useWorkspaceSelection, } from "./model/sele
|
|
|
26
26
|
export type { WorkspaceSelection, WorkspaceSelectionProviderProps, WorkspaceSelectionSource, WorkspaceSelectionUrlBinding, } from "./model/selection.js";
|
|
27
27
|
export { useWorkspaces, useWorkspace, useMembers, useAudit, useCanCreateWorkspace, useInvitations, useInfiniteInvitations, useRoles, useInstanceShape, useInvitationPreview, useCapabilities, useCapabilityGate, } from "./model/queries.js";
|
|
28
28
|
export type { CapabilitiesResult, CapabilityGate } from "./model/queries.js";
|
|
29
|
+
export { useMandateState } from "./model/mandate.js";
|
|
29
30
|
export { capabilityMatches, hasCapability } from "./model/capabilities.js";
|
|
30
31
|
export { BUILTIN_CAPABILITY_LEVELS, SENSITIVE_SCOPE, capabilityLevel, readVerificationEnrollment, } from "./model/stepUp.js";
|
|
31
32
|
export type { CapabilityLevel, VerificationEnrollment, } from "./model/stepUp.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,YAAY,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC5D,YAAY,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAK9C,OAAO,EAAE,iBAAiB,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AACvE,YAAY,EACV,WAAW,EACX,kBAAkB,EAClB,aAAa,EACb,SAAS,GACV,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,YAAY,EACV,gBAAgB,IAAI,0BAA0B,EAC9C,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACtE,YAAY,EACV,gBAAgB,EAChB,kBAAkB,EAClB,YAAY,GACb,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,YAAY,EACV,iBAAiB,EACjB,8BAA8B,GAC/B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,wBAAwB,EACxB,oBAAoB,EACpB,gBAAgB,EAChB,sBAAsB,GACvB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAG3D,OAAO,EACL,0BAA0B,EAC1B,qBAAqB,GACtB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EACV,kBAAkB,EAClB,+BAA+B,EAC/B,wBAAwB,EACxB,4BAA4B,GAC7B,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,aAAa,EACb,YAAY,EACZ,UAAU,EACV,QAAQ,EACR,qBAAqB,EACrB,cAAc,EACd,sBAAsB,EACtB,QAAQ,EACR,gBAAgB,EAChB,oBAAoB,EACpB,eAAe,EACf,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -25,6 +25,10 @@ export { workspacesQueryKeys } from "./model/queryKeys.js";
|
|
|
25
25
|
export { WorkspaceSelectionProvider, useWorkspaceSelection, } from "./model/selection.js";
|
|
26
26
|
// ── model (read hooks) ───────────────────────────────────────────────────────
|
|
27
27
|
export { useWorkspaces, useWorkspace, useMembers, useAudit, useCanCreateWorkspace, useInvitations, useInfiniteInvitations, useRoles, useInstanceShape, useInvitationPreview, useCapabilities, useCapabilityGate, } from "./model/queries.js";
|
|
28
|
+
// ── model (the mandate axis: anonymous / guest / member / unresolved) ────────
|
|
29
|
+
// The one reader of the wire's `is_guest`. `unresolved` is a wait or an
|
|
30
|
+
// explained error, never a hide — render it with core's `matchMandate`.
|
|
31
|
+
export { useMandateState } from "./model/mandate.js";
|
|
28
32
|
// ── model (capability matcher + email-mask ports — backend-synced utils) ─────
|
|
29
33
|
export { capabilityMatches, hasCapability } from "./model/capabilities.js";
|
|
30
34
|
export { BUILTIN_CAPABILITY_LEVELS, SENSITIVE_SCOPE, capabilityLevel, readVerificationEnrollment, } from "./model/stepUp.js";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,gFAAgF;AAChF,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAI7D,gFAAgF;AAChF,4EAA4E;AAC5E,4EAA4E;AAC5E,OAAO,EAAE,iBAAiB,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAOvE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAMrE,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAOtE,gFAAgF;AAChF,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAK7D,OAAO,EACL,wBAAwB,EACxB,oBAAoB,EACpB,gBAAgB,EAChB,sBAAsB,GACvB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAE3D,gFAAgF;AAChF,OAAO,EACL,0BAA0B,EAC1B,qBAAqB,GACtB,MAAM,sBAAsB,CAAC;AAQ9B,gFAAgF;AAChF,OAAO,EACL,aAAa,EACb,YAAY,EACZ,UAAU,EACV,QAAQ,EACR,qBAAqB,EACrB,cAAc,EACd,sBAAsB,EACtB,QAAQ,EACR,gBAAgB,EAChB,oBAAoB,EACpB,eAAe,EACf,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AAG5B,gFAAgF;AAChF,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC3E,OAAO,EACL,yBAAyB,EACzB,eAAe,EACf,eAAe,EACf,0BAA0B,GAC3B,MAAM,mBAAmB,CAAC;AAK3B,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAEnE,gFAAgF;AAChF,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,EACf,eAAe,EACf,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,EACnB,mBAAmB,EACnB,sBAAsB,EACtB,yBAAyB,EACzB,wBAAwB,EACxB,0BAA0B,GAC3B,MAAM,sBAAsB,CAAC;AA4C9B,gFAAgF;AAChF,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAE5D,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAEhD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAElE,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAExC,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAEtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAGlE,gFAAgF;AAChF,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,gBAAgB,CAAC;AAGxB,gFAAgF;AAChF,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,qBAAqB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,gFAAgF;AAChF,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAI7D,gFAAgF;AAChF,4EAA4E;AAC5E,4EAA4E;AAC5E,OAAO,EAAE,iBAAiB,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAOvE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAMrE,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAOtE,gFAAgF;AAChF,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAK7D,OAAO,EACL,wBAAwB,EACxB,oBAAoB,EACpB,gBAAgB,EAChB,sBAAsB,GACvB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAE3D,gFAAgF;AAChF,OAAO,EACL,0BAA0B,EAC1B,qBAAqB,GACtB,MAAM,sBAAsB,CAAC;AAQ9B,gFAAgF;AAChF,OAAO,EACL,aAAa,EACb,YAAY,EACZ,UAAU,EACV,QAAQ,EACR,qBAAqB,EACrB,cAAc,EACd,sBAAsB,EACtB,QAAQ,EACR,gBAAgB,EAChB,oBAAoB,EACpB,eAAe,EACf,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AAG5B,gFAAgF;AAChF,wEAAwE;AACxE,wEAAwE;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,gFAAgF;AAChF,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC3E,OAAO,EACL,yBAAyB,EACzB,eAAe,EACf,eAAe,EACf,0BAA0B,GAC3B,MAAM,mBAAmB,CAAC;AAK3B,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAEnE,gFAAgF;AAChF,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,EACf,eAAe,EACf,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,EACnB,mBAAmB,EACnB,sBAAsB,EACtB,yBAAyB,EACzB,wBAAwB,EACxB,0BAA0B,GAC3B,MAAM,sBAAsB,CAAC;AA4C9B,gFAAgF;AAChF,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAE5D,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAEhD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAElE,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAExC,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAEtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAGlE,gFAAgF;AAChF,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,gBAAgB,CAAC;AAGxB,gFAAgF;AAChF,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { MandateState } from "@stapel/core";
|
|
2
|
+
/**
|
|
3
|
+
* The caller's mandate: `anonymous` / `guest` / `member`, or `unresolved`
|
|
4
|
+
* with the reason it could not be obtained.
|
|
5
|
+
*
|
|
6
|
+
* **`unresolved` is a wait or an explained error, never a hide and never a
|
|
7
|
+
* refusal.** A host renders it with `matchMandate`, whose five required arms
|
|
8
|
+
* make that hard to get wrong. The tempting one-liner this replaces —
|
|
9
|
+
* `data?.is_guest ?? true` — turns every backend hiccup into "you are a
|
|
10
|
+
* guest", which locks members out of their own product and tells them
|
|
11
|
+
* nothing; there is no expression of that shape available here, because the
|
|
12
|
+
* failed and pending states carry no principal to read.
|
|
13
|
+
*
|
|
14
|
+
* The list read is the same `useWorkspaces()` a screen already runs, so the
|
|
15
|
+
* axis costs no extra request: TanStack serves both from one query.
|
|
16
|
+
*/
|
|
17
|
+
export declare function useMandateState(): MandateState;
|
|
18
|
+
//# sourceMappingURL=mandate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mandate.d.ts","sourceRoot":"","sources":["../../src/model/mandate.ts"],"names":[],"mappings":"AA8BA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAWjD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,eAAe,IAAI,YAAY,CA0B9C"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The mandate axis, wired to this module's wire — the single point of truth
|
|
3
|
+
* for "does this person hold a mandate anywhere".
|
|
4
|
+
*
|
|
5
|
+
* The vocabulary and the "unresolved is not a verdict" discipline live in
|
|
6
|
+
* `@stapel/core` (`mandate.ts`); this file is the only thing that knows
|
|
7
|
+
* WHERE the answer comes from, and it comes from two sources that already
|
|
8
|
+
* exist and needed no new endpoint:
|
|
9
|
+
*
|
|
10
|
+
* - the ACTIVE session's status (`@stapel/core`), which settles anonymous
|
|
11
|
+
* and no-session without asking anyone;
|
|
12
|
+
* - `is_guest` on the workspace list, which stapel-workspaces has sent
|
|
13
|
+
* since 0.19 — the wire form of the backend's own `permissions.is_guest`
|
|
14
|
+
* predicate — and which nothing on the frontend had ever read. That is
|
|
15
|
+
* why a registered, mandate-less person was handed every module's nav
|
|
16
|
+
* entry and mounted every screen, each of which then answered 403.
|
|
17
|
+
*
|
|
18
|
+
* The server evaluates the predicate; this does not re-derive it. A caller
|
|
19
|
+
* can hold membership ROWS that grant no mandate (every one suspended), so
|
|
20
|
+
* `workspaces.length` is not the question and is consulted only when talking
|
|
21
|
+
* to a backend too old to answer it.
|
|
22
|
+
*/
|
|
23
|
+
import { useMemo } from "react";
|
|
24
|
+
import { loadStateFromQuery, mandateAsking, mandateResolved, mandateUnavailable, useActiveSessionStatus, } from "@stapel/core";
|
|
25
|
+
import { useWorkspaces } from "./queries.js";
|
|
26
|
+
/** Guest per the server, falling back to "no memberships" only against a
|
|
27
|
+
* backend that predates `is_guest` (optional on the wire). Reached only with
|
|
28
|
+
* a READY response in hand — an absent list is never an empty one. */
|
|
29
|
+
function listSaysGuest(list) {
|
|
30
|
+
return list.is_guest ?? (list.workspaces ?? []).length === 0;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* The caller's mandate: `anonymous` / `guest` / `member`, or `unresolved`
|
|
34
|
+
* with the reason it could not be obtained.
|
|
35
|
+
*
|
|
36
|
+
* **`unresolved` is a wait or an explained error, never a hide and never a
|
|
37
|
+
* refusal.** A host renders it with `matchMandate`, whose five required arms
|
|
38
|
+
* make that hard to get wrong. The tempting one-liner this replaces —
|
|
39
|
+
* `data?.is_guest ?? true` — turns every backend hiccup into "you are a
|
|
40
|
+
* guest", which locks members out of their own product and tells them
|
|
41
|
+
* nothing; there is no expression of that shape available here, because the
|
|
42
|
+
* failed and pending states carry no principal to read.
|
|
43
|
+
*
|
|
44
|
+
* The list read is the same `useWorkspaces()` a screen already runs, so the
|
|
45
|
+
* axis costs no extra request: TanStack serves both from one query.
|
|
46
|
+
*/
|
|
47
|
+
export function useMandateState() {
|
|
48
|
+
const sessionStatus = useActiveSessionStatus();
|
|
49
|
+
const query = useWorkspaces();
|
|
50
|
+
const list = loadStateFromQuery(query);
|
|
51
|
+
return useMemo(() => {
|
|
52
|
+
// "We have not checked yet" — the session's own fourth state, and the
|
|
53
|
+
// same reason `useWorkspaces` is gated: answering here would be a guess.
|
|
54
|
+
if (sessionStatus === "initializing")
|
|
55
|
+
return mandateAsking();
|
|
56
|
+
// Neither carries an identity that could hold a membership, and asking
|
|
57
|
+
// the server would only spend a request to be told so.
|
|
58
|
+
if (sessionStatus === "anonymous" || sessionStatus === "unauthenticated") {
|
|
59
|
+
return mandateResolved("anonymous");
|
|
60
|
+
}
|
|
61
|
+
// Authenticated — or no session-owning module registered at all, in
|
|
62
|
+
// which case the server's answer about its own caller is the only
|
|
63
|
+
// evidence there is, and it is a better one than a local guess.
|
|
64
|
+
switch (list.status) {
|
|
65
|
+
case "loading":
|
|
66
|
+
return mandateAsking();
|
|
67
|
+
case "failed":
|
|
68
|
+
return mandateUnavailable(list.error);
|
|
69
|
+
case "ready":
|
|
70
|
+
return mandateResolved(listSaysGuest(list.data) ? "guest" : "member");
|
|
71
|
+
}
|
|
72
|
+
}, [sessionStatus, list]);
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=mandate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mandate.js","sourceRoot":"","sources":["../../src/model/mandate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,eAAe,EACf,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C;;sEAEsE;AACtE,SAAS,aAAa,CAAC,IAAmB;IACxC,OAAO,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;AAC/D,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,eAAe;IAC7B,MAAM,aAAa,GAAG,sBAAsB,EAAE,CAAC;IAC/C,MAAM,KAAK,GAAG,aAAa,EAAE,CAAC;IAC9B,MAAM,IAAI,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAEvC,OAAO,OAAO,CAAC,GAAiB,EAAE;QAChC,sEAAsE;QACtE,yEAAyE;QACzE,IAAI,aAAa,KAAK,cAAc;YAAE,OAAO,aAAa,EAAE,CAAC;QAC7D,uEAAuE;QACvE,uDAAuD;QACvD,IAAI,aAAa,KAAK,WAAW,IAAI,aAAa,KAAK,iBAAiB,EAAE,CAAC;YACzE,OAAO,eAAe,CAAC,WAAW,CAAC,CAAC;QACtC,CAAC;QACD,oEAAoE;QACpE,kEAAkE;QAClE,gEAAgE;QAChE,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC;YACpB,KAAK,SAAS;gBACZ,OAAO,aAAa,EAAE,CAAC;YACzB,KAAK,QAAQ;gBACX,OAAO,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACxC,KAAK,OAAO;gBACV,OAAO,eAAe,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QAC1E,CAAC;IACH,CAAC,EAAE,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC,CAAC;AAC5B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mutations.d.ts","sourceRoot":"","sources":["../../src/model/mutations.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAEV,iBAAiB,EAClB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,KAAK,EACV,iBAAiB,EACjB,UAAU,EACV,MAAM,EACN,YAAY,EACZ,kBAAkB,EAClB,mBAAmB,EACnB,yBAAyB,EACzB,gBAAgB,EAChB,eAAe,EACf,kBAAkB,EAClB,wBAAwB,EACxB,SAAS,EACT,eAAe,EACf,yBAAyB,EACzB,eAAe,EAChB,MAAM,iBAAiB,CAAC;AAIzB;;;;;;;;;;;GAWG;AAEH,wEAAwE;AACxE,wBAAgB,kBAAkB,IAAI,iBAAiB,CACrD,SAAS,EACT,cAAc,EACd,eAAe,CAChB,CAaA;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,WAAW,EAAE,MAAM,GAClB,iBAAiB,CAAC,SAAS,EAAE,cAAc,EAAE,eAAe,CAAC,CAiB/D;AAED,0FAA0F;AAC1F,wBAAgB,kBAAkB,IAAI,iBAAiB,CACrD,IAAI,EACJ,cAAc,EACd,MAAM,CACP,CAeA;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,WAAW,EAAE,MAAM,GAClB,iBAAiB,CAAC,kBAAkB,EAAE,cAAc,EAAE,YAAY,CAAC,
|
|
1
|
+
{"version":3,"file":"mutations.d.ts","sourceRoot":"","sources":["../../src/model/mutations.ts"],"names":[],"mappings":"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"}
|
package/dist/model/mutations.js
CHANGED
|
@@ -77,6 +77,13 @@ export function useInviteMembers(workspaceId) {
|
|
|
77
77
|
void queryClient.invalidateQueries({
|
|
78
78
|
queryKey: workspacesQueryKeys.members(workspaceId),
|
|
79
79
|
});
|
|
80
|
+
// The history beside the roster is a record OF this change: an admin
|
|
81
|
+
// who removes someone and looks down expects to see it. The audit key
|
|
82
|
+
// is its own root (queryKeys.ts), so the members invalidation above
|
|
83
|
+
// does not reach it.
|
|
84
|
+
void queryClient.invalidateQueries({
|
|
85
|
+
queryKey: workspacesQueryKeys.audit(workspaceId),
|
|
86
|
+
});
|
|
80
87
|
},
|
|
81
88
|
};
|
|
82
89
|
return useMutation(options);
|
|
@@ -95,6 +102,13 @@ export function useUpdateMemberRole(workspaceId) {
|
|
|
95
102
|
void queryClient.invalidateQueries({
|
|
96
103
|
queryKey: workspacesQueryKeys.members(workspaceId),
|
|
97
104
|
});
|
|
105
|
+
// The history beside the roster is a record OF this change: an admin
|
|
106
|
+
// who removes someone and looks down expects to see it. The audit key
|
|
107
|
+
// is its own root (queryKeys.ts), so the members invalidation above
|
|
108
|
+
// does not reach it.
|
|
109
|
+
void queryClient.invalidateQueries({
|
|
110
|
+
queryKey: workspacesQueryKeys.audit(workspaceId),
|
|
111
|
+
});
|
|
98
112
|
},
|
|
99
113
|
};
|
|
100
114
|
return useMutation(options);
|
|
@@ -112,6 +126,13 @@ export function useRemoveMember(workspaceId) {
|
|
|
112
126
|
void queryClient.invalidateQueries({
|
|
113
127
|
queryKey: workspacesQueryKeys.members(workspaceId),
|
|
114
128
|
});
|
|
129
|
+
// The history beside the roster is a record OF this change: an admin
|
|
130
|
+
// who removes someone and looks down expects to see it. The audit key
|
|
131
|
+
// is its own root (queryKeys.ts), so the members invalidation above
|
|
132
|
+
// does not reach it.
|
|
133
|
+
void queryClient.invalidateQueries({
|
|
134
|
+
queryKey: workspacesQueryKeys.audit(workspaceId),
|
|
135
|
+
});
|
|
115
136
|
},
|
|
116
137
|
};
|
|
117
138
|
return useMutation(options);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mutations.js","sourceRoot":"","sources":["../../src/model/mutations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAuBpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAErD;;;;;;;;;;;GAWG;AAEH,wEAAwE;AACxE,MAAM,UAAU,kBAAkB;IAKhC,MAAM,GAAG,GAAG,gBAAgB,EAAE,CAAC;IAC/B,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IACrC,MAAM,OAAO,GACX;QACE,UAAU,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC;QAC/C,SAAS,EAAE,GAAG,EAAE;YACd,KAAK,WAAW,CAAC,iBAAiB,CAAC;gBACjC,QAAQ,EAAE,mBAAmB,CAAC,IAAI,EAAE;aACrC,CAAC,CAAC;QACL,CAAC;KACF,CAAC;IACJ,OAAO,WAAW,CAAC,OAAO,CAAC,CAAC;AAC9B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAChC,WAAmB;IAEnB,MAAM,GAAG,GAAG,gBAAgB,EAAE,CAAC;IAC/B,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IACrC,MAAM,OAAO,GACX;QACE,UAAU,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,eAAe,CAAC,WAAW,EAAE,KAAK,CAAC;QAC9D,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE;YACrB,WAAW,CAAC,YAAY,CACtB,mBAAmB,CAAC,MAAM,CAAC,WAAW,CAAC,EACvC,OAAO,CACR,CAAC;YACF,KAAK,WAAW,CAAC,iBAAiB,CAAC;gBACjC,QAAQ,EAAE,mBAAmB,CAAC,IAAI,EAAE;aACrC,CAAC,CAAC;QACL,CAAC;KACF,CAAC;IACJ,OAAO,WAAW,CAAC,OAAO,CAAC,CAAC;AAC9B,CAAC;AAED,0FAA0F;AAC1F,MAAM,UAAU,kBAAkB;IAKhC,MAAM,GAAG,GAAG,gBAAgB,EAAE,CAAC;IAC/B,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IACrC,MAAM,OAAO,GAAqD;QAChE,UAAU,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,GAAG,CAAC,eAAe,CAAC,WAAW,CAAC;QAC7D,SAAS,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,EAAE;YAClC,WAAW,CAAC,aAAa,CAAC;gBACxB,QAAQ,EAAE,mBAAmB,CAAC,MAAM,CAAC,WAAW,CAAC;aAClD,CAAC,CAAC;YACH,KAAK,WAAW,CAAC,iBAAiB,CAAC;gBACjC,QAAQ,EAAE,mBAAmB,CAAC,IAAI,EAAE;aACrC,CAAC,CAAC;QACL,CAAC;KACF,CAAC;IACF,OAAO,WAAW,CAAC,OAAO,CAAC,CAAC;AAC9B,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAC9B,WAAmB;IAEnB,MAAM,GAAG,GAAG,gBAAgB,EAAE,CAAC;IAC/B,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IACrC,MAAM,OAAO,GAIT;QACF,UAAU,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC;QAC1D,SAAS,EAAE,GAAG,EAAE;YACd,KAAK,WAAW,CAAC,iBAAiB,CAAC;gBACjC,QAAQ,EAAE,mBAAmB,CAAC,OAAO,CAAC,WAAW,CAAC;aACnD,CAAC,CAAC;QACL,CAAC;KACF,CAAC;IACF,OAAO,WAAW,CAAC,OAAO,CAAC,CAAC;AAC9B,CAAC;AAYD;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CACjC,WAAmB;IAEnB,MAAM,GAAG,GAAG,gBAAgB,EAAE,CAAC;IAC/B,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IACrC,MAAM,OAAO,GAAiE;QAC5E,UAAU,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,CAC/B,GAAG,CAAC,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC;QACrD,SAAS,EAAE,GAAG,EAAE;YACd,KAAK,WAAW,CAAC,iBAAiB,CAAC;gBACjC,QAAQ,EAAE,mBAAmB,CAAC,OAAO,CAAC,WAAW,CAAC;aACnD,CAAC,CAAC;QACL,CAAC;KACF,CAAC;IACF,OAAO,WAAW,CAAC,OAAO,CAAC,CAAC;AAC9B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAC7B,WAAmB;IAEnB,MAAM,GAAG,GAAG,gBAAgB,EAAE,CAAC;IAC/B,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IACrC,MAAM,OAAO,GAAqD;QAChE,UAAU,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC;QAC7D,SAAS,EAAE,GAAG,EAAE;YACd,KAAK,WAAW,CAAC,iBAAiB,CAAC;gBACjC,QAAQ,EAAE,mBAAmB,CAAC,OAAO,CAAC,WAAW,CAAC;aACnD,CAAC,CAAC;QACL,CAAC;KACF,CAAC;IACF,OAAO,WAAW,CAAC,OAAO,CAAC,CAAC;AAC9B,CAAC;AAWD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,MAAM,UAAU,eAAe,CAC7B,WAAmB;IAEnB,MAAM,GAAG,GAAG,gBAAgB,EAAE,CAAC;IAC/B,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IACrC,MAAM,OAAO,GAIT;QACF,UAAU,EAAE,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,EAAE,CACtC,GAAG,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC;QACtE,SAAS,EAAE,GAAG,EAAE;YACd,KAAK,WAAW,CAAC,iBAAiB,CAAC;gBACjC,QAAQ,EAAE,mBAAmB,CAAC,UAAU,EAAE;aAC3C,CAAC,CAAC;QACL,CAAC;KACF,CAAC;IACF,OAAO,WAAW,CAAC,OAAO,CAAC,CAAC;AAC9B,CAAC;AAUD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,UAAU,mBAAmB,CACjC,WAAmB;IAEnB,MAAM,GAAG,GAAG,gBAAgB,EAAE,CAAC;IAC/B,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IACrC,MAAM,OAAO,GAIT;QACF,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,WAAW,EAAE,EAAE,EAAE,CAC5C,GAAG,CAAC,gBAAgB,CAAC,WAAW,EAAE,YAAY,EAAE;YAC9C,YAAY,EAAE,WAAW;SAC1B,CAAC;QACJ,SAAS,EAAE,GAAG,EAAE;YACd,KAAK,WAAW,CAAC,iBAAiB,CAAC;gBACjC,QAAQ,EAAE,mBAAmB,CAAC,WAAW,CAAC,WAAW,CAAC;aACvD,CAAC,CAAC;QACL,CAAC;KACF,CAAC;IACF,OAAO,WAAW,CAAC,OAAO,CAAC,CAAC;AAC9B,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,mBAAmB,CACjC,WAAmB;IAEnB,MAAM,GAAG,GAAG,gBAAgB,EAAE,CAAC;IAC/B,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IACrC,MAAM,OAAO,GAA2D;QACtE,UAAU,EAAE,CAAC,YAAY,EAAE,EAAE,CAC3B,GAAG,CAAC,gBAAgB,CAAC,WAAW,EAAE,YAAY,CAAC;QACjD,SAAS,EAAE,GAAG,EAAE;YACd,KAAK,WAAW,CAAC,iBAAiB,CAAC;gBACjC,QAAQ,EAAE,mBAAmB,CAAC,WAAW,CAAC,WAAW,CAAC;aACvD,CAAC,CAAC;YACH,KAAK,WAAW,CAAC,iBAAiB,CAAC;gBACjC,QAAQ,EAAE,mBAAmB,CAAC,OAAO,CAAC,WAAW,CAAC;aACnD,CAAC,CAAC;QACL,CAAC;KACF,CAAC;IACF,OAAO,WAAW,CAAC,OAAO,CAAC,CAAC;AAC9B,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,mBAAmB,CACjC,WAAmB;IAEnB,MAAM,GAAG,GAAG,gBAAgB,EAAE,CAAC;IAC/B,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IACrC,MAAM,OAAO,GAA2D;QACtE,UAAU,EAAE,CAAC,YAAY,EAAE,EAAE,CAC3B,GAAG,CAAC,gBAAgB,CAAC,WAAW,EAAE,YAAY,CAAC;QACjD,SAAS,EAAE,GAAG,EAAE;YACd,KAAK,WAAW,CAAC,iBAAiB,CAAC;gBACjC,QAAQ,EAAE,mBAAmB,CAAC,WAAW,CAAC,WAAW,CAAC;aACvD,CAAC,CAAC;QACL,CAAC;KACF,CAAC;IACF,OAAO,WAAW,CAAC,OAAO,CAAC,CAAC;AAC9B,CAAC;AASD;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,UAAU,sBAAsB,CACpC,WAAmB;IAMnB,MAAM,GAAG,GAAG,gBAAgB,EAAE,CAAC;IAC/B,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IACrC,MAAM,OAAO,GAIT;QACF,UAAU,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,CAC/B,GAAG,CAAC,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,CAAC;QACpD,uEAAuE;QACvE,yCAAyC;QACzC,MAAM,EAAE,CAAC;QACT,SAAS,EAAE,GAAG,EAAE;YACd,KAAK,WAAW,CAAC,iBAAiB,CAAC;gBACjC,QAAQ,EAAE,mBAAmB,CAAC,OAAO,CAAC,WAAW,CAAC;aACnD,CAAC,CAAC;QACL,CAAC;KACF,CAAC;IACF,OAAO,WAAW,CAAC,OAAO,CAAC,CAAC;AAC9B,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,UAAU,yBAAyB,CACvC,WAAmB;IAEnB,MAAM,GAAG,GAAG,gBAAgB,EAAE,CAAC;IAC/B,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IACrC,MAAM,OAAO,GAIT;QACF,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;YAC1B,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;YACpD,MAAM,QAAQ,GAAG,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,CAA4B,CAAC;YACrE,MAAM,QAAQ,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,EAAE,CAA4B,CAAC;YACzE,qEAAqE;YACrE,sDAAsD;YACtD,MAAM,EAAE,mBAAmB,EAAE,QAAQ,EAAE,GAAG,QAAQ,EAAE,GAAG;gBACrD,GAAG,QAAQ;gBACX,GAAG,KAAK;aACT,CAAC;YACF,OAAO,GAAG,CAAC,eAAe,CAAC,WAAW,EAAE;gBACtC,QAAQ,EAAE,EAAE,GAAG,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE;aAC9C,CAAC,CAAC;QACL,CAAC;QACD,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE;YACrB,WAAW,CAAC,YAAY,CACtB,mBAAmB,CAAC,MAAM,CAAC,WAAW,CAAC,EACvC,OAAO,CACR,CAAC;YACF,KAAK,WAAW,CAAC,iBAAiB,CAAC;gBACjC,QAAQ,EAAE,mBAAmB,CAAC,IAAI,EAAE;aACrC,CAAC,CAAC;YACH,qEAAqE;YACrE,uDAAuD;YACvD,KAAK,WAAW,CAAC,iBAAiB,CAAC;gBACjC,QAAQ,EAAE,mBAAmB,CAAC,OAAO,CAAC,WAAW,CAAC;aACnD,CAAC,CAAC;QACL,CAAC;KACF,CAAC;IACF,OAAO,WAAW,CAAC,OAAO,CAAC,CAAC;AAC9B,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB;IAKjC,MAAM,GAAG,GAAG,gBAAgB,EAAE,CAAC;IAC/B,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IACrC,MAAM,OAAO,GAAiE;QAC5E,UAAU,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,CAAC;QAChD,SAAS,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE;YAC3B,KAAK,WAAW,CAAC,iBAAiB,CAAC;gBACjC,QAAQ,EAAE,mBAAmB,CAAC,IAAI,EAAE;aACrC,CAAC,CAAC;YACH,mDAAmD;YACnD,KAAK,WAAW,CAAC,iBAAiB,CAAC;gBACjC,QAAQ,EAAE,mBAAmB,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC;aAC5D,CAAC,CAAC;QACL,CAAC;KACF,CAAC;IACF,OAAO,WAAW,CAAC,OAAO,CAAC,CAAC;AAC9B,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,kBAAkB;IAKhC,MAAM,GAAG,GAAG,gBAAgB,EAAE,CAAC;IAC/B,MAAM,OAAO,GAAgE;QAC3E,UAAU,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,eAAe,CAAC,KAAK,CAAC;KAClD,CAAC;IACF,OAAO,WAAW,CAAC,OAAO,CAAC,CAAC;AAC9B,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB;IAKlC,MAAM,GAAG,GAAG,gBAAgB,EAAE,CAAC;IAC/B,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IACrC,MAAM,OAAO,GAAqD;QAChE,UAAU,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,iBAAiB,CAAC,KAAK,CAAC;QACnD,SAAS,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE;YAC5B,KAAK,WAAW,CAAC,iBAAiB,CAAC;gBACjC,QAAQ,EAAE,mBAAmB,CAAC,iBAAiB,CAAC,KAAK,CAAC;aACvD,CAAC,CAAC;QACL,CAAC;KACF,CAAC;IACF,OAAO,WAAW,CAAC,OAAO,CAAC,CAAC;AAC9B,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,wBAAwB;IAKtC,MAAM,GAAG,GAAG,gBAAgB,EAAE,CAAC;IAC/B,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IACrC,MAAM,OAAO,GAIT;QACF,UAAU,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,qBAAqB,CAAC,IAAI,CAAC;QACrD,SAAS,EAAE,GAAG,EAAE;YACd,KAAK,WAAW,CAAC,iBAAiB,CAAC;gBACjC,QAAQ,EAAE,mBAAmB,CAAC,IAAI,EAAE;aACrC,CAAC,CAAC;QACL,CAAC;KACF,CAAC;IACF,OAAO,WAAW,CAAC,OAAO,CAAC,CAAC;AAC9B,CAAC;AAED;+EAC+E;AAC/E,MAAM,UAAU,0BAA0B;IAKxC,MAAM,GAAG,GAAG,gBAAgB,EAAE,CAAC;IAC/B,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IACrC,MAAM,OAAO,GAIT;QACF,UAAU,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,uBAAuB,EAAE;QAC/C,SAAS,EAAE,GAAG,EAAE;YACd,KAAK,WAAW,CAAC,iBAAiB,CAAC;gBACjC,QAAQ,EAAE,mBAAmB,CAAC,IAAI,EAAE;aACrC,CAAC,CAAC;QACL,CAAC;KACF,CAAC;IACF,OAAO,WAAW,CAAC,OAAO,CAAC,CAAC;AAC9B,CAAC"}
|
|
1
|
+
{"version":3,"file":"mutations.js","sourceRoot":"","sources":["../../src/model/mutations.ts"],"names":[],"mappings":"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"}
|
package/llms.txt
CHANGED
package/manifest.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$generated": "by scripts/gen-manifest.mjs — do not edit; drift-gated (pnpm gen:manifest:check)",
|
|
3
3
|
"package": "@stapel/workspaces-react",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.16.0",
|
|
5
5
|
"backend": {
|
|
6
6
|
"module": "stapel-workspaces",
|
|
7
7
|
"contract": ">=0.24 <0.25"
|
|
@@ -315,6 +315,11 @@
|
|
|
315
315
|
"kind": "mutation",
|
|
316
316
|
"operation": "inviteMembers",
|
|
317
317
|
"invalidates": [
|
|
318
|
+
[
|
|
319
|
+
"workspaces",
|
|
320
|
+
"audit",
|
|
321
|
+
"{workspaceId}"
|
|
322
|
+
],
|
|
318
323
|
[
|
|
319
324
|
"workspaces",
|
|
320
325
|
"members",
|
|
@@ -336,6 +341,11 @@
|
|
|
336
341
|
"kind": "mutation",
|
|
337
342
|
"operation": "removeMember",
|
|
338
343
|
"invalidates": [
|
|
344
|
+
[
|
|
345
|
+
"workspaces",
|
|
346
|
+
"audit",
|
|
347
|
+
"{workspaceId}"
|
|
348
|
+
],
|
|
339
349
|
[
|
|
340
350
|
"workspaces",
|
|
341
351
|
"members",
|
|
@@ -424,6 +434,11 @@
|
|
|
424
434
|
"kind": "mutation",
|
|
425
435
|
"operation": "updateMemberRole",
|
|
426
436
|
"invalidates": [
|
|
437
|
+
[
|
|
438
|
+
"workspaces",
|
|
439
|
+
"audit",
|
|
440
|
+
"{workspaceId}"
|
|
441
|
+
],
|
|
427
442
|
[
|
|
428
443
|
"workspaces",
|
|
429
444
|
"members",
|
|
@@ -1163,6 +1178,7 @@
|
|
|
1163
1178
|
"useInvitationPreview",
|
|
1164
1179
|
"useInvitations",
|
|
1165
1180
|
"useInviteMembers",
|
|
1181
|
+
"useMandateState",
|
|
1166
1182
|
"useMembers",
|
|
1167
1183
|
"useRemoveMember",
|
|
1168
1184
|
"useRenameInvitation",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@stapel/workspaces-react",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.16.0",
|
|
4
4
|
"description": "Headless React flow pair for stapel-workspaces: typed API client, TanStack Query hooks, flow machines, headless components, and i18n keys. Zero visual opinion.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -67,7 +67,7 @@
|
|
|
67
67
|
}
|
|
68
68
|
],
|
|
69
69
|
"peerDependencies": {
|
|
70
|
-
"@stapel/core": ">=0.
|
|
70
|
+
"@stapel/core": ">=0.14.0 <1.0.0",
|
|
71
71
|
"@tanstack/react-query": "^5.0.0",
|
|
72
72
|
"antd": ">=5.20.0 <7",
|
|
73
73
|
"react": ">=19"
|
|
@@ -91,7 +91,7 @@
|
|
|
91
91
|
"size-limit": "^11.2.0",
|
|
92
92
|
"typescript": "^5.8.3",
|
|
93
93
|
"vitest": "^3.2.4",
|
|
94
|
-
"@stapel/core": "^0.
|
|
94
|
+
"@stapel/core": "^0.14.0",
|
|
95
95
|
"@stapel/showcase": "^0.2.0",
|
|
96
96
|
"@stapel/tokens": "^0.5.0"
|
|
97
97
|
},
|
package/src/index.ts
CHANGED
|
@@ -81,6 +81,11 @@ export {
|
|
|
81
81
|
} from "./model/queries.js";
|
|
82
82
|
export type { CapabilitiesResult, CapabilityGate } from "./model/queries.js";
|
|
83
83
|
|
|
84
|
+
// ── model (the mandate axis: anonymous / guest / member / unresolved) ────────
|
|
85
|
+
// The one reader of the wire's `is_guest`. `unresolved` is a wait or an
|
|
86
|
+
// explained error, never a hide — render it with core's `matchMandate`.
|
|
87
|
+
export { useMandateState } from "./model/mandate.js";
|
|
88
|
+
|
|
84
89
|
// ── model (capability matcher + email-mask ports — backend-synced utils) ─────
|
|
85
90
|
export { capabilityMatches, hasCapability } from "./model/capabilities.js";
|
|
86
91
|
export {
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The mandate axis, wired to this module's wire — the single point of truth
|
|
3
|
+
* for "does this person hold a mandate anywhere".
|
|
4
|
+
*
|
|
5
|
+
* The vocabulary and the "unresolved is not a verdict" discipline live in
|
|
6
|
+
* `@stapel/core` (`mandate.ts`); this file is the only thing that knows
|
|
7
|
+
* WHERE the answer comes from, and it comes from two sources that already
|
|
8
|
+
* exist and needed no new endpoint:
|
|
9
|
+
*
|
|
10
|
+
* - the ACTIVE session's status (`@stapel/core`), which settles anonymous
|
|
11
|
+
* and no-session without asking anyone;
|
|
12
|
+
* - `is_guest` on the workspace list, which stapel-workspaces has sent
|
|
13
|
+
* since 0.19 — the wire form of the backend's own `permissions.is_guest`
|
|
14
|
+
* predicate — and which nothing on the frontend had ever read. That is
|
|
15
|
+
* why a registered, mandate-less person was handed every module's nav
|
|
16
|
+
* entry and mounted every screen, each of which then answered 403.
|
|
17
|
+
*
|
|
18
|
+
* The server evaluates the predicate; this does not re-derive it. A caller
|
|
19
|
+
* can hold membership ROWS that grant no mandate (every one suspended), so
|
|
20
|
+
* `workspaces.length` is not the question and is consulted only when talking
|
|
21
|
+
* to a backend too old to answer it.
|
|
22
|
+
*/
|
|
23
|
+
import { useMemo } from "react";
|
|
24
|
+
import {
|
|
25
|
+
loadStateFromQuery,
|
|
26
|
+
mandateAsking,
|
|
27
|
+
mandateResolved,
|
|
28
|
+
mandateUnavailable,
|
|
29
|
+
useActiveSessionStatus,
|
|
30
|
+
} from "@stapel/core";
|
|
31
|
+
import type { MandateState } from "@stapel/core";
|
|
32
|
+
import type { WorkspaceList } from "../api/types.js";
|
|
33
|
+
import { useWorkspaces } from "./queries.js";
|
|
34
|
+
|
|
35
|
+
/** Guest per the server, falling back to "no memberships" only against a
|
|
36
|
+
* backend that predates `is_guest` (optional on the wire). Reached only with
|
|
37
|
+
* a READY response in hand — an absent list is never an empty one. */
|
|
38
|
+
function listSaysGuest(list: WorkspaceList): boolean {
|
|
39
|
+
return list.is_guest ?? (list.workspaces ?? []).length === 0;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* The caller's mandate: `anonymous` / `guest` / `member`, or `unresolved`
|
|
44
|
+
* with the reason it could not be obtained.
|
|
45
|
+
*
|
|
46
|
+
* **`unresolved` is a wait or an explained error, never a hide and never a
|
|
47
|
+
* refusal.** A host renders it with `matchMandate`, whose five required arms
|
|
48
|
+
* make that hard to get wrong. The tempting one-liner this replaces —
|
|
49
|
+
* `data?.is_guest ?? true` — turns every backend hiccup into "you are a
|
|
50
|
+
* guest", which locks members out of their own product and tells them
|
|
51
|
+
* nothing; there is no expression of that shape available here, because the
|
|
52
|
+
* failed and pending states carry no principal to read.
|
|
53
|
+
*
|
|
54
|
+
* The list read is the same `useWorkspaces()` a screen already runs, so the
|
|
55
|
+
* axis costs no extra request: TanStack serves both from one query.
|
|
56
|
+
*/
|
|
57
|
+
export function useMandateState(): MandateState {
|
|
58
|
+
const sessionStatus = useActiveSessionStatus();
|
|
59
|
+
const query = useWorkspaces();
|
|
60
|
+
const list = loadStateFromQuery(query);
|
|
61
|
+
|
|
62
|
+
return useMemo((): MandateState => {
|
|
63
|
+
// "We have not checked yet" — the session's own fourth state, and the
|
|
64
|
+
// same reason `useWorkspaces` is gated: answering here would be a guess.
|
|
65
|
+
if (sessionStatus === "initializing") return mandateAsking();
|
|
66
|
+
// Neither carries an identity that could hold a membership, and asking
|
|
67
|
+
// the server would only spend a request to be told so.
|
|
68
|
+
if (sessionStatus === "anonymous" || sessionStatus === "unauthenticated") {
|
|
69
|
+
return mandateResolved("anonymous");
|
|
70
|
+
}
|
|
71
|
+
// Authenticated — or no session-owning module registered at all, in
|
|
72
|
+
// which case the server's answer about its own caller is the only
|
|
73
|
+
// evidence there is, and it is a better one than a local guess.
|
|
74
|
+
switch (list.status) {
|
|
75
|
+
case "loading":
|
|
76
|
+
return mandateAsking();
|
|
77
|
+
case "failed":
|
|
78
|
+
return mandateUnavailable(list.error);
|
|
79
|
+
case "ready":
|
|
80
|
+
return mandateResolved(listSaysGuest(list.data) ? "guest" : "member");
|
|
81
|
+
}
|
|
82
|
+
}, [sessionStatus, list]);
|
|
83
|
+
}
|
package/src/model/mutations.ts
CHANGED
|
@@ -125,6 +125,13 @@ export function useInviteMembers(
|
|
|
125
125
|
void queryClient.invalidateQueries({
|
|
126
126
|
queryKey: workspacesQueryKeys.members(workspaceId),
|
|
127
127
|
});
|
|
128
|
+
// The history beside the roster is a record OF this change: an admin
|
|
129
|
+
// who removes someone and looks down expects to see it. The audit key
|
|
130
|
+
// is its own root (queryKeys.ts), so the members invalidation above
|
|
131
|
+
// does not reach it.
|
|
132
|
+
void queryClient.invalidateQueries({
|
|
133
|
+
queryKey: workspacesQueryKeys.audit(workspaceId),
|
|
134
|
+
});
|
|
128
135
|
},
|
|
129
136
|
};
|
|
130
137
|
return useMutation(options);
|
|
@@ -157,6 +164,13 @@ export function useUpdateMemberRole(
|
|
|
157
164
|
void queryClient.invalidateQueries({
|
|
158
165
|
queryKey: workspacesQueryKeys.members(workspaceId),
|
|
159
166
|
});
|
|
167
|
+
// The history beside the roster is a record OF this change: an admin
|
|
168
|
+
// who removes someone and looks down expects to see it. The audit key
|
|
169
|
+
// is its own root (queryKeys.ts), so the members invalidation above
|
|
170
|
+
// does not reach it.
|
|
171
|
+
void queryClient.invalidateQueries({
|
|
172
|
+
queryKey: workspacesQueryKeys.audit(workspaceId),
|
|
173
|
+
});
|
|
160
174
|
},
|
|
161
175
|
};
|
|
162
176
|
return useMutation(options);
|
|
@@ -177,6 +191,13 @@ export function useRemoveMember(
|
|
|
177
191
|
void queryClient.invalidateQueries({
|
|
178
192
|
queryKey: workspacesQueryKeys.members(workspaceId),
|
|
179
193
|
});
|
|
194
|
+
// The history beside the roster is a record OF this change: an admin
|
|
195
|
+
// who removes someone and looks down expects to see it. The audit key
|
|
196
|
+
// is its own root (queryKeys.ts), so the members invalidation above
|
|
197
|
+
// does not reach it.
|
|
198
|
+
void queryClient.invalidateQueries({
|
|
199
|
+
queryKey: workspacesQueryKeys.audit(workspaceId),
|
|
200
|
+
});
|
|
180
201
|
},
|
|
181
202
|
};
|
|
182
203
|
return useMutation(options);
|