@beacon-build/sdk 1.42.0 → 1.43.1
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 +23 -0
- package/dist/clients/admin/organizations.client.d.ts +8 -0
- package/dist/clients/admin/organizations.client.d.ts.map +1 -1
- package/dist/clients/admin/organizations.client.js +7 -0
- package/dist/clients/admin/organizations.client.js.map +1 -1
- package/dist/factory/ops-sdk.d.ts +5 -2
- package/dist/factory/ops-sdk.d.ts.map +1 -1
- package/dist/factory/ops-sdk.js +18 -4
- package/dist/factory/ops-sdk.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/permissions.d.ts +19 -0
- package/dist/permissions.d.ts.map +1 -0
- package/dist/permissions.js +35 -0
- package/dist/permissions.js.map +1 -0
- package/dist/react/index.d.ts +1 -0
- package/dist/react/index.d.ts.map +1 -1
- package/dist/react/index.js +3 -0
- package/dist/react/index.js.map +1 -1
- package/dist/react/usePermissions.d.ts +3 -0
- package/dist/react/usePermissions.d.ts.map +1 -0
- package/dist/react/usePermissions.js +15 -0
- package/dist/react/usePermissions.js.map +1 -0
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,28 @@
|
|
|
1
1
|
# @beacon-build/sdk Changelog
|
|
2
2
|
|
|
3
|
+
## 1.43.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- @beacon-build/core@1.43.1
|
|
8
|
+
|
|
9
|
+
## 1.43.0
|
|
10
|
+
|
|
11
|
+
### Minor Changes
|
|
12
|
+
|
|
13
|
+
- 55e21a8: F430: real recursive Hub-Spoke cascade for nested organizations — Organization.parentId cycle-prevention (app-level + DB trigger backstop), Organization.isolated subtree seal, a real ancestor-chain resolver wired into getVisibleProjects, N-level org-ancestor config cascade (SettingsService), ancestor/descendant hierarchy API + CRUD parentId/isolated, and a tree-view management UI.
|
|
14
|
+
|
|
15
|
+
### Patch Changes
|
|
16
|
+
|
|
17
|
+
- b1abf24: F437: retire the OPS_API_KEY god-key. honoAuthGuard's static-key synthetic-principal bypass is deleted; honoOpsAuthGuard gains a JWT-with-system-role branch (Argus agent-JWT) ahead of its dual-accept static-key safety net, with allowStaticKey permanently true only on the /v1/agent-token mint boundary. All automation consumers (mcp/agent, Janitor, mcp-core remote-ops clients, project-db/project-logs/beacon-ops MCP adapters, the IDE sidecar) now mint-and-cache an Argus agent-JWT instead of sending the raw OPS_API_KEY as a bearer. honoRequireRole grants a system-role actor the same bypass as vendor/admin, matching ADR-030.
|
|
18
|
+
- e7b92b0: F148: add computePermissions/usePermissions Scoped Permissions API for SDK consumers (root + /react subpath), mirroring apps/platform's F121 usePermissions hook.
|
|
19
|
+
- Updated dependencies [8ce9b76]
|
|
20
|
+
- Updated dependencies [f34a76a]
|
|
21
|
+
- Updated dependencies [fd24b45]
|
|
22
|
+
- Updated dependencies [55e21a8]
|
|
23
|
+
- Updated dependencies [73a5ac2]
|
|
24
|
+
- @beacon-build/core@1.43.0
|
|
25
|
+
|
|
3
26
|
## 1.42.0
|
|
4
27
|
|
|
5
28
|
### Patch Changes
|
|
@@ -3,9 +3,15 @@ import type { HttpClient } from '../../transport/http-client.js';
|
|
|
3
3
|
export interface CreateOrganizationInput {
|
|
4
4
|
slug: string;
|
|
5
5
|
name: string;
|
|
6
|
+
/** F430/AC-7: optional parent org — omitted/null creates a root org. */
|
|
7
|
+
parentId?: string | null;
|
|
6
8
|
}
|
|
7
9
|
export interface UpdateOrganizationInput {
|
|
8
10
|
name?: string;
|
|
11
|
+
/** F430/AC-7: reparent (null clears to root). */
|
|
12
|
+
parentId?: string | null;
|
|
13
|
+
/** F430/AC-3/AC-7: toggle the subtree seal. */
|
|
14
|
+
isolated?: boolean;
|
|
9
15
|
}
|
|
10
16
|
export interface AddMemberInput {
|
|
11
17
|
userId: string;
|
|
@@ -21,5 +27,7 @@ export declare class AdminOrganizationsClient {
|
|
|
21
27
|
delete(slug: string): Promise<void>;
|
|
22
28
|
addMember(slug: string, input: AddMemberInput): Promise<OrganizationMemberDto>;
|
|
23
29
|
removeMember(slug: string, userId: string): Promise<void>;
|
|
30
|
+
getAncestors(id: string): Promise<OrganizationDto[]>;
|
|
31
|
+
getDescendants(id: string): Promise<OrganizationDto[]>;
|
|
24
32
|
}
|
|
25
33
|
//# sourceMappingURL=organizations.client.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"organizations.client.d.ts","sourceRoot":"","sources":["../../../src/clients/admin/organizations.client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,eAAe,EACf,wBAAwB,EACxB,0BAA0B,EAC1B,qBAAqB,EACxB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAA;AAEhE,MAAM,WAAW,uBAAuB;IACpC,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"organizations.client.d.ts","sourceRoot":"","sources":["../../../src/clients/admin/organizations.client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,eAAe,EACf,wBAAwB,EACxB,0BAA0B,EAC1B,qBAAqB,EACxB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAA;AAEhE,MAAM,WAAW,uBAAuB;IACpC,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,wEAAwE;IACxE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAC3B;AAED,MAAM,WAAW,uBAAuB;IACpC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,iDAAiD;IACjD,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,OAAO,CAAA;CACrB;AAED,MAAM,WAAW,cAAc;IAC3B,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,qBAAa,wBAAwB;IACrB,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,UAAU;IAEvC,IAAI,IAAI,OAAO,CAAC,wBAAwB,EAAE,CAAC;IAI3C,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,0BAA0B,GAAG,IAAI,CAAC;IAU7D,MAAM,CAAC,KAAK,EAAE,uBAAuB,GAAG,OAAO,CAAC,eAAe,CAAC;IAIhE,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,uBAAuB,GAAG,OAAO,CAAC,eAAe,CAAC;IAI9E,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAInC,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAO9E,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQzD,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAMpD,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;CAK/D"}
|
|
@@ -29,5 +29,12 @@ export class AdminOrganizationsClient {
|
|
|
29
29
|
async removeMember(slug, userId) {
|
|
30
30
|
await this.http.delete(`/organizations/${encodeURIComponent(slug)}/members/${encodeURIComponent(userId)}`);
|
|
31
31
|
}
|
|
32
|
+
// ── F430/AC-8: hierarchy reads ─────────────────────────────────────────────────────
|
|
33
|
+
async getAncestors(id) {
|
|
34
|
+
return this.http.get(`/organizations/${encodeURIComponent(id)}/ancestors`);
|
|
35
|
+
}
|
|
36
|
+
async getDescendants(id) {
|
|
37
|
+
return this.http.get(`/organizations/${encodeURIComponent(id)}/descendants`);
|
|
38
|
+
}
|
|
32
39
|
}
|
|
33
40
|
//# sourceMappingURL=organizations.client.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"organizations.client.js","sourceRoot":"","sources":["../../../src/clients/admin/organizations.client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"organizations.client.js","sourceRoot":"","sources":["../../../src/clients/admin/organizations.client.ts"],"names":[],"mappings":"AA4BA,MAAM,OAAO,wBAAwB;IACJ;IAA7B,YAA6B,IAAgB;QAAhB,SAAI,GAAJ,IAAI,CAAY;IAAG,CAAC;IAEjD,KAAK,CAAC,IAAI;QACN,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAA6B,gBAAgB,CAAC,CAAA;IACtE,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,IAAY;QAClB,IAAI,CAAC;YACD,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CACtB,kBAAkB,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAC/C,CAAA;QACL,CAAC;QAAC,MAAM,CAAC;YACL,OAAO,IAAI,CAAA;QACf,CAAC;IACL,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAA8B;QACvC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAkB,gBAAgB,EAAE,KAAK,CAAC,CAAA;IACnE,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAAY,EAAE,KAA8B;QACrD,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAkB,kBAAkB,kBAAkB,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,CAAA;IAChG,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAAY;QACrB,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,kBAAkB,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACxE,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,IAAY,EAAE,KAAqB;QAC/C,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CACjB,kBAAkB,kBAAkB,CAAC,IAAI,CAAC,UAAU,EACpD,KAAK,CACR,CAAA;IACL,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,IAAY,EAAE,MAAc;QAC3C,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAClB,kBAAkB,kBAAkB,CAAC,IAAI,CAAC,YAAY,kBAAkB,CAAC,MAAM,CAAC,EAAE,CACrF,CAAA;IACL,CAAC;IAED,sFAAsF;IAEtF,KAAK,CAAC,YAAY,CAAC,EAAU;QACzB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAChB,kBAAkB,kBAAkB,CAAC,EAAE,CAAC,YAAY,CACvD,CAAA;IACL,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,EAAU;QAC3B,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAChB,kBAAkB,kBAAkB,CAAC,EAAE,CAAC,cAAc,CACzD,CAAA;IACL,CAAC;CACJ"}
|
|
@@ -16,8 +16,11 @@ import { OpsWorkersClient } from '../clients/ops/ops-workers.client.js';
|
|
|
16
16
|
export interface OpsSdkConfig {
|
|
17
17
|
/** Base URL for the beacon API (e.g. 'https://api.beacon.build') */
|
|
18
18
|
baseUrl: string;
|
|
19
|
-
/** OPS_API_KEY */
|
|
20
|
-
apiKey
|
|
19
|
+
/** OPS_API_KEY. F437: optional when `jwt` is supplied — at least one is required. */
|
|
20
|
+
apiKey?: string;
|
|
21
|
+
/** F437/AC-8: a minted Argus (or other) agent-JWT — takes precedence over `apiKey`
|
|
22
|
+
* when both are set (C434's `jwt ?? apiKey` rule, same as `OpsApiClient`). */
|
|
23
|
+
jwt?: string;
|
|
21
24
|
/** Max retry attempts for 5xx/network errors (default: 3) */
|
|
22
25
|
retries?: number;
|
|
23
26
|
/** Base delay ms for exponential backoff (default: 100) */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ops-sdk.d.ts","sourceRoot":"","sources":["../../src/factory/ops-sdk.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAA;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAA;AACzE,OAAO,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAA;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAA;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAA;AAC3E,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAA;AACzE,OAAO,EAAE,6BAA6B,EAAE,MAAM,oDAAoD,CAAA;AAClG,OAAO,EAAE,uBAAuB,EAAE,MAAM,8CAA8C,CAAA;AACtF,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAA;AACzE,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAA;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAA;AACvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,yCAAyC,CAAA;AAC7E,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAA;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAA;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAA;AAEvE,MAAM,WAAW,YAAY;IACzB,oEAAoE;IACpE,OAAO,EAAE,MAAM,CAAA;IACf,
|
|
1
|
+
{"version":3,"file":"ops-sdk.d.ts","sourceRoot":"","sources":["../../src/factory/ops-sdk.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAA;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAA;AACzE,OAAO,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAA;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAA;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAA;AAC3E,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAA;AACzE,OAAO,EAAE,6BAA6B,EAAE,MAAM,oDAAoD,CAAA;AAClG,OAAO,EAAE,uBAAuB,EAAE,MAAM,8CAA8C,CAAA;AACtF,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAA;AACzE,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAA;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAA;AACvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,yCAAyC,CAAA;AAC7E,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAA;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAA;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAA;AAEvE,MAAM,WAAW,YAAY;IACzB,oEAAoE;IACpE,OAAO,EAAE,MAAM,CAAA;IACf,qFAAqF;IACrF,MAAM,CAAC,EAAE,MAAM,CAAA;IACf;mFAC+E;IAC/E,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,6DAA6D;IAC7D,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,2DAA2D;IAC3D,WAAW,CAAC,EAAE,MAAM,CAAA;CACvB;AAED,MAAM,WAAW,MAAM;IACnB,KAAK,EAAE,cAAc,CAAA;IACrB,QAAQ,EAAE,iBAAiB,CAAA;IAC3B,MAAM,EAAE,eAAe,CAAA;IACvB,QAAQ,EAAE,iBAAiB,CAAA;IAC3B,SAAS,EAAE,kBAAkB,CAAA;IAC7B,QAAQ,EAAE,iBAAiB,CAAA;IAC3B,oBAAoB,EAAE,6BAA6B,CAAA;IACnD,cAAc,EAAE,uBAAuB,CAAA;IACvC,QAAQ,EAAE,iBAAiB,CAAA;IAC3B,EAAE,EAAE,WAAW,CAAA;IACf,OAAO,EAAE,gBAAgB,CAAA;IACzB,UAAU,EAAE,mBAAmB,CAAA;IAC/B,EAAE,EAAE,WAAW,CAAA;IACf,IAAI,EAAE,aAAa,CAAA;IACnB,OAAO,EAAE,gBAAgB,CAAA;CAC5B;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAmD5D"}
|
package/dist/factory/ops-sdk.js
CHANGED
|
@@ -24,16 +24,30 @@ import { OpsWorkersClient } from '../clients/ops/ops-workers.client.js';
|
|
|
24
24
|
* INV-9: no onUnauthorized hook — Ops keys are rotated via secrets_sync, not interactively.
|
|
25
25
|
*/
|
|
26
26
|
export function createOpsClient(config) {
|
|
27
|
+
// Copilot review finding on PR #634: with neither credential set, the old code silently
|
|
28
|
+
// built a client whose getAuthToken() returns '' — every sub-client then sends an empty
|
|
29
|
+
// Bearer token and gets a confusing 401 instead of a clear configuration error at the
|
|
30
|
+
// point of misuse. Fail fast here instead (matches the doc comment's "at least one is
|
|
31
|
+
// required" contract).
|
|
32
|
+
if (!config.apiKey?.trim() && !config.jwt?.trim()) {
|
|
33
|
+
throw new Error('createOpsClient: at least one of apiKey or jwt must be provided');
|
|
34
|
+
}
|
|
27
35
|
const api = new OpsApiClient({
|
|
28
36
|
baseUrl: config.baseUrl,
|
|
29
37
|
apiKey: config.apiKey,
|
|
38
|
+
jwt: config.jwt,
|
|
30
39
|
retries: config.retries,
|
|
31
40
|
retryBaseMs: config.retryBaseMs,
|
|
32
41
|
});
|
|
42
|
+
// F437/AC-8: the EFFECTIVE bearer (jwt when present, else apiKey — C434's rule,
|
|
43
|
+
// `OpsApiClient.getAuthToken()`) for the sub-clients below that build their own raw
|
|
44
|
+
// fetch/SSE requests outside `api`'s `executeWithRetry` and so need the token value
|
|
45
|
+
// directly, not just an `OpsApiClient` instance.
|
|
46
|
+
const authToken = api.getAuthToken();
|
|
33
47
|
const multipart = new MultipartClient({
|
|
34
48
|
baseUrl: config.baseUrl,
|
|
35
49
|
basePath: '/api/v1',
|
|
36
|
-
getAuthHeader: async () => `Bearer ${
|
|
50
|
+
getAuthHeader: async () => `Bearer ${authToken}`,
|
|
37
51
|
});
|
|
38
52
|
return {
|
|
39
53
|
tasks: new TasksOpsClient(api),
|
|
@@ -45,9 +59,9 @@ export function createOpsClient(config) {
|
|
|
45
59
|
conversationMessages: new ConversationMessagesOpsClient(api),
|
|
46
60
|
usageWorkflows: new UsageWorkflowsOpsClient(api),
|
|
47
61
|
realtime: new RealtimeOpsClient(api),
|
|
48
|
-
db: new OpsDbClient(api,
|
|
49
|
-
storage: new OpsStorageClient(api, multipart,
|
|
50
|
-
northflank: new OpsNorthflankClient(api,
|
|
62
|
+
db: new OpsDbClient(api, authToken),
|
|
63
|
+
storage: new OpsStorageClient(api, multipart, authToken),
|
|
64
|
+
northflank: new OpsNorthflankClient(api, authToken),
|
|
51
65
|
mq: new OpsMqClient(api),
|
|
52
66
|
logs: new OpsLogsClient(api),
|
|
53
67
|
// OpsApiClient uses full /api/v1/* paths and does not unwrap the { data }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ops-sdk.js","sourceRoot":"","sources":["../../src/factory/ops-sdk.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAA;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAA;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAA;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAA;AACzE,OAAO,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAA;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAA;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAA;AAC3E,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAA;AACzE,OAAO,EAAE,6BAA6B,EAAE,MAAM,oDAAoD,CAAA;AAClG,OAAO,EAAE,uBAAuB,EAAE,MAAM,8CAA8C,CAAA;AACtF,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAA;AACzE,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAA;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAA;AACvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,yCAAyC,CAAA;AAC7E,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAA;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAA;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAA;
|
|
1
|
+
{"version":3,"file":"ops-sdk.js","sourceRoot":"","sources":["../../src/factory/ops-sdk.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -17,6 +17,7 @@ export { createAgentClient, type AgentSdk, type AgentSdkConfig } from './factory
|
|
|
17
17
|
export { createOpsClient, type OpsSdk, type OpsSdkConfig } from './factory/ops-sdk.js';
|
|
18
18
|
export { createAuthClient, type AuthClient, type LoginResult, type RegisterResult, type RefreshResult, type MeResult, } from './clients/auth.client.js';
|
|
19
19
|
export { RealtimeSdkClient, type RealtimeSdkClientConfig } from './realtime/realtime.client.js';
|
|
20
|
+
export { computePermissions, type Permissions, type RoleRow } from './permissions.js';
|
|
20
21
|
export { SdkError, type SdkErrorCode } from './transport/errors.js';
|
|
21
22
|
export { OpsApiClient, type OpsApiClientConfig } from './transport/ops-api-client.js';
|
|
22
23
|
export { HttpClient, type HttpClientConfig } from './transport/http-client.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,EAAE,iBAAiB,EAAE,KAAK,QAAQ,EAAE,KAAK,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAC9F,OAAO,EAAE,iBAAiB,EAAE,KAAK,QAAQ,EAAE,KAAK,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAC9F,OAAO,EAAE,eAAe,EAAE,KAAK,MAAM,EAAE,KAAK,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAGtF,OAAO,EACH,gBAAgB,EAChB,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,QAAQ,GAChB,MAAM,0BAA0B,CAAA;AAGjC,OAAO,EAAE,iBAAiB,EAAE,KAAK,uBAAuB,EAAE,MAAM,+BAA+B,CAAA;AAG/F,OAAO,EAAE,kBAAkB,EAAE,KAAK,WAAW,EAAE,KAAK,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAGrF,OAAO,EAAE,QAAQ,EAAE,KAAK,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAGnE,OAAO,EAAE,YAAY,EAAE,KAAK,kBAAkB,EAAE,MAAM,+BAA+B,CAAA;AACrF,OAAO,EAAE,UAAU,EAAE,KAAK,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAC9E,OAAO,EAAE,eAAe,EAAE,KAAK,qBAAqB,EAAE,MAAM,iCAAiC,CAAA;AAG7F,OAAO,EACH,YAAY,EACZ,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,GAC5B,MAAM,8BAA8B,CAAA;AAErC,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAA;AAGlE,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAA;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAA;AAClE,YAAY,EACR,mBAAmB,EACnB,aAAa,EACb,eAAe,EACf,cAAc,EACd,wBAAwB,EACxB,kBAAkB,EAClB,oBAAoB,EACpB,eAAe,EACf,YAAY,EACZ,WAAW,EACX,cAAc,EACd,kBAAkB,EAClB,eAAe,EACf,iBAAiB,GACpB,MAAM,iCAAiC,CAAA;AACxC,YAAY,EAAE,YAAY,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAA;AAChG,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAA;AACpE,OAAO,EACH,qBAAqB,EACrB,KAAK,sBAAsB,GAC9B,MAAM,sCAAsC,CAAA;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAA;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAA;AACxE,OAAO,EAAE,sBAAsB,EAAE,MAAM,wCAAwC,CAAA;AAC/E,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAA;AAClE,YAAY,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAA;AAC/F,OAAO,EAAE,wBAAwB,EAAE,MAAM,yCAAyC,CAAA;AAGlF,OAAO,EACH,YAAY,EACZ,iBAAiB,EACjB,KAAK,aAAa,EAClB,KAAK,qBAAqB,EAC1B,KAAK,WAAW,GACnB,MAAM,eAAe,CAAA;AAMtB,OAAO,EAAE,eAAe,IAAI,cAAc,EAAE,MAAM,oCAAoC,CAAA;AACtF,OAAO,EAAE,iBAAiB,IAAI,gBAAgB,EAAE,MAAM,sCAAsC,CAAA;AAC5F,OAAO,EAAE,cAAc,IAAI,gBAAgB,EAAE,MAAM,mCAAmC,CAAA;AACtF,OAAO,EAAE,wBAAwB,EAAE,MAAM,0CAA0C,CAAA;AACnF,YAAY,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAA;AAC1E,YAAY,EACR,iBAAiB,IAAI,cAAc,EACnC,mBAAmB,GACtB,MAAM,sCAAsC,CAAA;AAG7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAA;AACtE,YAAY,EACR,eAAe,EACf,YAAY,EACZ,YAAY,IAAI,eAAe,EAC/B,iBAAiB,EACjB,gBAAgB,IAAI,mBAAmB,EACvC,UAAU,IAAI,aAAa,EAC3B,cAAc,IAAI,iBAAiB,EACnC,WAAW,IAAI,cAAc,EAC7B,qBAAqB,IAAI,wBAAwB,EACjD,mBAAmB,IAAI,sBAAsB,EAE7C,eAAe,IAAI,kBAAkB,EACrC,oBAAoB,IAAI,uBAAuB,GAClD,MAAM,qCAAqC,CAAA;AAG5C,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAA;AACnE,YAAY,EACR,YAAY,EACZ,eAAe,EACf,oBAAoB,GACvB,MAAM,oCAAoC,CAAA;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAA;AACzE,YAAY,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAA;AAGhF,YAAY,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAA;AAC5E,YAAY,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAA;AAC7E,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAA;AACpE,YAAY,EACR,UAAU,IAAI,aAAa,EAC3B,kBAAkB,IAAI,qBAAqB,EAC3C,oBAAoB,IAAI,uBAAuB,EAC/C,qBAAqB,GACxB,MAAM,kCAAkC,CAAA;AAGzC,YAAY,EAER,OAAO,EACP,aAAa,EACb,UAAU,EACV,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,cAAc,EAEd,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAEhB,MAAM,EACN,UAAU,EACV,WAAW,EACX,iBAAiB,EAEjB,QAAQ,EACR,eAAe,EACf,eAAe,EAEf,OAAO,EAEP,eAAe,EACf,wBAAwB,EACxB,0BAA0B,EAC1B,qBAAqB,EAErB,cAAc,EAEd,QAAQ,EAER,KAAK,EAEL,QAAQ,EACR,gBAAgB,EAEhB,sBAAsB,EACtB,kBAAkB,EAClB,gBAAgB,EAEhB,WAAW,EACX,kBAAkB,EAElB,WAAW,EACX,YAAY,EACZ,WAAW,EACX,YAAY,EAEZ,eAAe,EACf,eAAe,EACf,iBAAiB,EAEjB,WAAW,EAEX,YAAY,EAEZ,UAAU,EACV,eAAe,EACf,sBAAsB,EACtB,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,YAAY,GACf,MAAM,oBAAoB,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -20,6 +20,8 @@ export { createOpsClient } from './factory/ops-sdk.js';
|
|
|
20
20
|
export { createAuthClient, } from './clients/auth.client.js';
|
|
21
21
|
// ── Realtime (implemented in F141) ────────────────────────────────────────────
|
|
22
22
|
export { RealtimeSdkClient } from './realtime/realtime.client.js';
|
|
23
|
+
// ── Permissions (F148) — Scoped Permissions API for SDK consumers ─────────────
|
|
24
|
+
export { computePermissions } from './permissions.js';
|
|
23
25
|
// ── Errors ────────────────────────────────────────────────────────────────────
|
|
24
26
|
export { SdkError } from './transport/errors.js';
|
|
25
27
|
// ── Transport (for advanced consumers) ───────────────────────────────────────
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,kFAAkF;AAClF,OAAO,EAAE,iBAAiB,EAAsC,MAAM,wBAAwB,CAAA;AAC9F,OAAO,EAAE,iBAAiB,EAAsC,MAAM,wBAAwB,CAAA;AAC9F,OAAO,EAAE,eAAe,EAAkC,MAAM,sBAAsB,CAAA;AAEtF,kFAAkF;AAClF,OAAO,EACH,gBAAgB,GAMnB,MAAM,0BAA0B,CAAA;AAEjC,iFAAiF;AACjF,OAAO,EAAE,iBAAiB,EAAgC,MAAM,+BAA+B,CAAA;AAE/F,iFAAiF;AACjF,OAAO,EAAE,QAAQ,EAAqB,MAAM,uBAAuB,CAAA;AAEnE,gFAAgF;AAChF,OAAO,EAAE,YAAY,EAA2B,MAAM,+BAA+B,CAAA;AACrF,OAAO,EAAE,UAAU,EAAyB,MAAM,4BAA4B,CAAA;AAC9E,OAAO,EAAE,eAAe,EAA8B,MAAM,iCAAiC,CAAA;AAC7F,wFAAwF;AACxF,iFAAiF;AACjF,OAAO,EACH,YAAY,GAGf,MAAM,8BAA8B,CAAA;AACrC,uFAAuF;AACvF,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAA;AAElE,iFAAiF;AACjF,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAA;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAA;AAkBlE,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAA;AACpE,OAAO,EACH,qBAAqB,GAExB,MAAM,sCAAsC,CAAA;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAA;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAA;AACxE,OAAO,EAAE,sBAAsB,EAAE,MAAM,wCAAwC,CAAA;AAC/E,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAA;AAElE,OAAO,EAAE,wBAAwB,EAAE,MAAM,yCAAyC,CAAA;AAElF,iFAAiF;AACjF,OAAO,EACH,YAAY,EACZ,iBAAiB,GAIpB,MAAM,eAAe,CAAA;AAEtB,iFAAiF;AACjF,6DAA6D;AAC7D,2FAA2F;AAC3F,gFAAgF;AAChF,OAAO,EAAE,eAAe,IAAI,cAAc,EAAE,MAAM,oCAAoC,CAAA;AACtF,OAAO,EAAE,iBAAiB,IAAI,gBAAgB,EAAE,MAAM,sCAAsC,CAAA;AAC5F,OAAO,EAAE,cAAc,IAAI,gBAAgB,EAAE,MAAM,mCAAmC,CAAA;AACtF,OAAO,EAAE,wBAAwB,EAAE,MAAM,0CAA0C,CAAA;AAOnF,8CAA8C;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAA;AAiBtE,uBAAuB;AACvB,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAA;AAMnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAA;AAMzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,kFAAkF;AAClF,OAAO,EAAE,iBAAiB,EAAsC,MAAM,wBAAwB,CAAA;AAC9F,OAAO,EAAE,iBAAiB,EAAsC,MAAM,wBAAwB,CAAA;AAC9F,OAAO,EAAE,eAAe,EAAkC,MAAM,sBAAsB,CAAA;AAEtF,kFAAkF;AAClF,OAAO,EACH,gBAAgB,GAMnB,MAAM,0BAA0B,CAAA;AAEjC,iFAAiF;AACjF,OAAO,EAAE,iBAAiB,EAAgC,MAAM,+BAA+B,CAAA;AAE/F,iFAAiF;AACjF,OAAO,EAAE,kBAAkB,EAAkC,MAAM,kBAAkB,CAAA;AAErF,iFAAiF;AACjF,OAAO,EAAE,QAAQ,EAAqB,MAAM,uBAAuB,CAAA;AAEnE,gFAAgF;AAChF,OAAO,EAAE,YAAY,EAA2B,MAAM,+BAA+B,CAAA;AACrF,OAAO,EAAE,UAAU,EAAyB,MAAM,4BAA4B,CAAA;AAC9E,OAAO,EAAE,eAAe,EAA8B,MAAM,iCAAiC,CAAA;AAC7F,wFAAwF;AACxF,iFAAiF;AACjF,OAAO,EACH,YAAY,GAGf,MAAM,8BAA8B,CAAA;AACrC,uFAAuF;AACvF,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAA;AAElE,iFAAiF;AACjF,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAA;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAA;AAkBlE,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAA;AACpE,OAAO,EACH,qBAAqB,GAExB,MAAM,sCAAsC,CAAA;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAA;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAA;AACxE,OAAO,EAAE,sBAAsB,EAAE,MAAM,wCAAwC,CAAA;AAC/E,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAA;AAElE,OAAO,EAAE,wBAAwB,EAAE,MAAM,yCAAyC,CAAA;AAElF,iFAAiF;AACjF,OAAO,EACH,YAAY,EACZ,iBAAiB,GAIpB,MAAM,eAAe,CAAA;AAEtB,iFAAiF;AACjF,6DAA6D;AAC7D,2FAA2F;AAC3F,gFAAgF;AAChF,OAAO,EAAE,eAAe,IAAI,cAAc,EAAE,MAAM,oCAAoC,CAAA;AACtF,OAAO,EAAE,iBAAiB,IAAI,gBAAgB,EAAE,MAAM,sCAAsC,CAAA;AAC5F,OAAO,EAAE,cAAc,IAAI,gBAAgB,EAAE,MAAM,mCAAmC,CAAA;AACtF,OAAO,EAAE,wBAAwB,EAAE,MAAM,0CAA0C,CAAA;AAOnF,8CAA8C;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAA;AAiBtE,uBAAuB;AACvB,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAA;AAMnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAA;AAMzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAA"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { RoleRow } from '@beacon-build/core/browser';
|
|
2
|
+
export type { RoleRow };
|
|
3
|
+
export interface Permissions {
|
|
4
|
+
/** Global vendor (role 'vendor', no orgId). */
|
|
5
|
+
isVendor: boolean;
|
|
6
|
+
/** Admin of `orgId` (vendor bypass). Omit `orgId` to ask "admin of ANY org". */
|
|
7
|
+
isOrgAdmin: (orgId?: string | null) => boolean;
|
|
8
|
+
/** Member (any role) of `orgId` (vendor bypass). Omit `orgId` to ask "member of ANY org". */
|
|
9
|
+
isOrgMember: (orgId?: string | null) => boolean;
|
|
10
|
+
/** Vendor or admin of at least one org. */
|
|
11
|
+
canManageUsers: boolean;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Pure — computes Permissions from a role list. `roles` is typically
|
|
15
|
+
* `MeResult.roles` from `createAuthClient().me(token)`, or any other
|
|
16
|
+
* RoleRow[]-shaped source (structurally compatible, no conversion needed).
|
|
17
|
+
*/
|
|
18
|
+
export declare function computePermissions(roles: RoleRow[]): Permissions;
|
|
19
|
+
//# sourceMappingURL=permissions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"permissions.d.ts","sourceRoot":"","sources":["../src/permissions.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AAEzD,YAAY,EAAE,OAAO,EAAE,CAAA;AAEvB,MAAM,WAAW,WAAW;IACxB,+CAA+C;IAC/C,QAAQ,EAAE,OAAO,CAAA;IACjB,gFAAgF;IAChF,UAAU,EAAE,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,KAAK,OAAO,CAAA;IAC9C,6FAA6F;IAC7F,WAAW,EAAE,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,KAAK,OAAO,CAAA;IAC/C,2CAA2C;IAC3C,cAAc,EAAE,OAAO,CAAA;CAC1B;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,WAAW,CAWhE"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* F148 — Scoped Permissions API for @beacon-build/sdk consumers.
|
|
3
|
+
*
|
|
4
|
+
* Exposes the SAME org-scoped RBAC predicates apps/platform's internal
|
|
5
|
+
* usePermissions() hook (F121/AC-8) already bundles — but at the SDK layer, so
|
|
6
|
+
* a consumer that is NOT apps/platform (its own frontend, a Node script, a
|
|
7
|
+
* server-side render) can compute the same permission gates without a direct
|
|
8
|
+
* @beacon-build/core dependency and without re-implementing the logic.
|
|
9
|
+
*
|
|
10
|
+
* Pure UI/consumer visibility only (F121 INV-2) — this is NOT a security
|
|
11
|
+
* boundary. The real authorization boundary stays server-side
|
|
12
|
+
* (assertVendor/assertOrgAdminOrVendor/assertOrgMembership, CON-5 "Check at
|
|
13
|
+
* API boundary. Never trust the frontend for auth decisions").
|
|
14
|
+
*
|
|
15
|
+
* Deliberately generic/app-agnostic: this does NOT include apps/platform-
|
|
16
|
+
* specific derived gates (e.g. canAccessProjectWorkspace) — a consumer needing
|
|
17
|
+
* an app-specific derived gate composes it from these primitives itself.
|
|
18
|
+
*/
|
|
19
|
+
import { isVendor, isOrgAdmin, isOrgMember } from '@beacon-build/core/browser';
|
|
20
|
+
/**
|
|
21
|
+
* Pure — computes Permissions from a role list. `roles` is typically
|
|
22
|
+
* `MeResult.roles` from `createAuthClient().me(token)`, or any other
|
|
23
|
+
* RoleRow[]-shaped source (structurally compatible, no conversion needed).
|
|
24
|
+
*/
|
|
25
|
+
export function computePermissions(roles) {
|
|
26
|
+
const vendor = isVendor(roles);
|
|
27
|
+
const adminOrgIds = roles.filter((r) => r.role === 'admin' && r.orgId).map((r) => r.orgId);
|
|
28
|
+
return {
|
|
29
|
+
isVendor: vendor,
|
|
30
|
+
isOrgAdmin: (orgId) => orgId ? isOrgAdmin(roles, orgId) : vendor || adminOrgIds.length > 0,
|
|
31
|
+
isOrgMember: (orgId) => (orgId ? isOrgMember(roles, orgId) : vendor || roles.length > 0),
|
|
32
|
+
canManageUsers: vendor || adminOrgIds.length > 0,
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=permissions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"permissions.js","sourceRoot":"","sources":["../src/permissions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AAgB9E;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAgB;IAC/C,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC9B,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;IAE1F,OAAO;QACH,QAAQ,EAAE,MAAM;QAChB,UAAU,EAAE,CAAC,KAAK,EAAE,EAAE,CAClB,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC;QACvE,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QACxF,cAAc,EAAE,MAAM,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC;KACnD,CAAA;AACL,CAAC"}
|
package/dist/react/index.d.ts
CHANGED
|
@@ -2,4 +2,5 @@ export { RealtimeProvider, useRealtimeContext, RealtimeProviderNotFoundError, }
|
|
|
2
2
|
export type { RealtimeProviderProps, RealtimeContextValue } from './RealtimeProvider.js';
|
|
3
3
|
export { useRealtime } from './useRealtime.js';
|
|
4
4
|
export type { UseRealtimeOptions, UseRealtimeResult } from './useRealtime.js';
|
|
5
|
+
export { usePermissions } from './usePermissions.js';
|
|
5
6
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,gBAAgB,EAChB,kBAAkB,EAClB,6BAA6B,GAChC,MAAM,uBAAuB,CAAA;AAC9B,YAAY,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAA;AAExF,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,gBAAgB,EAChB,kBAAkB,EAClB,6BAA6B,GAChC,MAAM,uBAAuB,CAAA;AAC9B,YAAY,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAA;AAExF,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAI7E,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA"}
|
package/dist/react/index.js
CHANGED
|
@@ -4,4 +4,7 @@
|
|
|
4
4
|
// Consumers should import directly from @beacon-build/sdk.
|
|
5
5
|
export { RealtimeProvider, useRealtimeContext, RealtimeProviderNotFoundError, } from './RealtimeProvider.js';
|
|
6
6
|
export { useRealtime } from './useRealtime.js';
|
|
7
|
+
// F148: Scoped Permissions API — usePermissions() for SDK consumers (no Provider needed,
|
|
8
|
+
// pure/stateless — unlike useRealtime, which needs a live connection's Provider).
|
|
9
|
+
export { usePermissions } from './usePermissions.js';
|
|
7
10
|
//# 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,iFAAiF;AACjF,EAAE;AACF,wEAAwE;AACxE,2DAA2D;AAE3D,OAAO,EACH,gBAAgB,EAChB,kBAAkB,EAClB,6BAA6B,GAChC,MAAM,uBAAuB,CAAA;AAG9B,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,EAAE;AACF,wEAAwE;AACxE,2DAA2D;AAE3D,OAAO,EACH,gBAAgB,EAChB,kBAAkB,EAClB,6BAA6B,GAChC,MAAM,uBAAuB,CAAA;AAG9B,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAG9C,yFAAyF;AACzF,kFAAkF;AAClF,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usePermissions.d.ts","sourceRoot":"","sources":["../../src/react/usePermissions.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAE7D,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,WAAW,CAE5D"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* usePermissions — F148
|
|
3
|
+
*
|
|
4
|
+
* Thin React wrapper over computePermissions (../permissions.js). Unlike
|
|
5
|
+
* useRealtime (F141), this needs NO Provider/context — permissions
|
|
6
|
+
* computation is pure/stateless, not a live connection. The caller supplies
|
|
7
|
+
* its own `roles` (e.g. from createAuthClient().me(token) → MeResult.roles,
|
|
8
|
+
* or any other RoleRow[]-shaped source).
|
|
9
|
+
*/
|
|
10
|
+
import { useMemo } from 'react';
|
|
11
|
+
import { computePermissions } from '../permissions.js';
|
|
12
|
+
export function usePermissions(roles) {
|
|
13
|
+
return useMemo(() => computePermissions(roles), [roles]);
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=usePermissions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usePermissions.js","sourceRoot":"","sources":["../../src/react/usePermissions.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAC/B,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAGtD,MAAM,UAAU,cAAc,CAAC,KAAgB;IAC3C,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAA;AAC5D,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@beacon-build/sdk",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.43.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
"@types/react": "^19.2.0",
|
|
27
27
|
"@types/react-dom": "^19.2.0",
|
|
28
28
|
"event-source-polyfill": "^1.0.31",
|
|
29
|
-
"@beacon-build/core": "1.
|
|
29
|
+
"@beacon-build/core": "1.43.1"
|
|
30
30
|
},
|
|
31
31
|
"devDependencies": {
|
|
32
32
|
"@testing-library/react": "^16.3.2",
|