@selvajs/platform 0.18.0 → 0.19.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/README.md +10 -10
- package/dist/access/index.d.ts +2 -2
- package/dist/access/index.d.ts.map +1 -1
- package/dist/access/index.js +1 -1
- package/dist/access/index.js.map +1 -1
- package/dist/access/rules.d.ts +31 -2
- package/dist/access/rules.d.ts.map +1 -1
- package/dist/access/rules.js +28 -3
- package/dist/access/rules.js.map +1 -1
- package/dist/computeServer/index.d.ts +1 -1
- package/dist/computeServer/index.d.ts.map +1 -1
- package/dist/computeServer/index.js +1 -1
- package/dist/computeServer/index.js.map +1 -1
- package/dist/computeServer/interface.d.ts +17 -4
- package/dist/computeServer/interface.d.ts.map +1 -1
- package/dist/computeServer/utils.d.ts +10 -0
- package/dist/computeServer/utils.d.ts.map +1 -1
- package/dist/computeServer/utils.js +21 -0
- package/dist/computeServer/utils.js.map +1 -1
- package/dist/context.d.ts +20 -0
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +18 -0
- package/dist/context.js.map +1 -1
- package/dist/events/interface.d.ts +30 -0
- package/dist/events/interface.d.ts.map +1 -1
- package/dist/events/interface.js.map +1 -1
- package/dist/index.d.ts +5 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/invites/interface.d.ts +15 -0
- package/dist/invites/interface.d.ts.map +1 -1
- package/dist/permissions/interface.d.ts +17 -0
- package/dist/permissions/interface.d.ts.map +1 -1
- package/dist/shareLinks/index.d.ts +1 -1
- package/dist/shareLinks/index.d.ts.map +1 -1
- package/dist/shareLinks/interface.d.ts +14 -1
- package/dist/shareLinks/interface.d.ts.map +1 -1
- package/dist/shareLinks/types.d.ts +17 -0
- package/dist/shareLinks/types.d.ts.map +1 -1
- package/dist/shareLinks/types.js.map +1 -1
- package/dist/testing/suites/inviteStoreSuite.d.ts.map +1 -1
- package/dist/testing/suites/inviteStoreSuite.js +47 -0
- package/dist/testing/suites/inviteStoreSuite.js.map +1 -1
- package/dist/testing/suites/platformPermissionStoreSuite.d.ts +1 -1
- package/dist/testing/suites/platformPermissionStoreSuite.d.ts.map +1 -1
- package/dist/testing/suites/platformPermissionStoreSuite.js +120 -0
- package/dist/testing/suites/platformPermissionStoreSuite.js.map +1 -1
- package/dist/testing/suites/shareLinkStoreSuite.d.ts +8 -0
- package/dist/testing/suites/shareLinkStoreSuite.d.ts.map +1 -1
- package/dist/testing/suites/shareLinkStoreSuite.js +78 -3
- package/dist/testing/suites/shareLinkStoreSuite.js.map +1 -1
- package/dist/testing/suites/userProfileStoreSuite.js +1 -1
- package/dist/testing/suites/userProfileStoreSuite.js.map +1 -1
- package/package.json +6 -4
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# @selvajs/platform
|
|
2
2
|
|
|
3
|
-
Pure TypeScript interfaces defining Selva's contract with its backends — no runtime dependency on a specific database, storage, or auth service. Concrete adapters
|
|
3
|
+
Pure TypeScript interfaces defining Selva's contract with its backends — no runtime dependency on a specific database, storage, or auth service. Concrete adapters live in their own packages: `@selvajs/local-provider`, `@selvajs/supabase-provider`, `@selvajs/header-auth-provider`.
|
|
4
4
|
|
|
5
5
|
This README is the contract. Read it before writing an adapter.
|
|
6
6
|
|
|
@@ -22,7 +22,7 @@ This README is the contract. Read it before writing an adapter.
|
|
|
22
22
|
| `IComputeServerStore` | Global + per-org compute-server config. | No — not tenant-scoped. |
|
|
23
23
|
| `IStorageProvider` | Path-based blob storage. Authorization is the caller's responsibility. | No — callers pass already-authorized paths. |
|
|
24
24
|
|
|
25
|
-
`IDataProvider` composes every store, plus optional `auditQuery` / `events` hooks and
|
|
25
|
+
`IDataProvider` composes every store, plus optional `auditQuery` / `events` hooks, an optional `verifySchemaVersion` handshake (for adapters whose schema migrates out-of-band), and the `ensureUser` / `onUserDeleted` lifecycle methods. An adapter typically implements one class per store and aggregates them.
|
|
26
26
|
|
|
27
27
|
---
|
|
28
28
|
|
|
@@ -31,7 +31,7 @@ This README is the contract. Read it before writing an adapter.
|
|
|
31
31
|
`RequestContext` carries the caller's identity and active scope. Built once per HTTP request in `hooks.server.ts` from the authenticated session.
|
|
32
32
|
|
|
33
33
|
1. **The query is the security boundary.** Adapters MUST filter reads and writes by `ctx`. An unauthorized caller gets an empty page, `null`, or a `ProviderError` — never someone else's data.
|
|
34
|
-
2. **Never trust a caller's pre-flight check.**
|
|
34
|
+
2. **Never trust a caller's pre-flight check.** The predicates in [`access/rules.ts`](src/access/rules.ts) gate the UI and the route layer. A mutating store method must remain safe even if the caller skipped them.
|
|
35
35
|
3. **Extend `RequestContext`, not method signatures.** Add a field to the interface for new dimensions (e.g. `tenantId`); don't thread it through every call.
|
|
36
36
|
4. **`SYSTEM_CONTEXT` is for trusted server code only.** Bootstrap, scheduled janitors, migrations, test setup. Never derive it from a user session.
|
|
37
37
|
|
|
@@ -39,7 +39,7 @@ This README is the contract. Read it before writing an adapter.
|
|
|
39
39
|
|
|
40
40
|
## Transaction ordering rules
|
|
41
41
|
|
|
42
|
-
Providers are two-phase: a metadata store (`IDataProvider`) and a blob store (`IStorageProvider`) with no shared transaction.
|
|
42
|
+
Providers are two-phase: a metadata store (`IDataProvider`) and a blob store (`IStorageProvider`) with no shared transaction. The definition service in [`@selvajs/server/definitions`](../server/src/definitions/definition-service.ts) composes them with fixed ordering so partial failure is recoverable.
|
|
43
43
|
|
|
44
44
|
**Create — metadata-first, `pending` → `draft`:**
|
|
45
45
|
|
|
@@ -78,7 +78,7 @@ export class MyDefinitionStore implements IDefinitionStore {
|
|
|
78
78
|
}
|
|
79
79
|
```
|
|
80
80
|
|
|
81
|
-
|
|
81
|
+
The Selva app normally picks bundled providers from `SELVA_AUTH_PROVIDER` / `SELVA_DATA_PROVIDER` / `SELVA_STORAGE_PROVIDER`. For an adapter that isn't bundled, export a `defineConfig({ auth, data, storage, … })` result from a `.js` file and point `SELVA_CONFIG_PATH` at it — see [config.ts](src/config.ts) for the full `SelvaConfig` shape (tenancy, flags, branding, event/metric sinks, binding resolver).
|
|
82
82
|
|
|
83
83
|
---
|
|
84
84
|
|
|
@@ -96,7 +96,7 @@ runDefinitionStoreConformance({
|
|
|
96
96
|
});
|
|
97
97
|
```
|
|
98
98
|
|
|
99
|
-
|
|
99
|
+
A suite exists per store, plus auth, email-link auth, storage, event sink, and solve-metric sink. They cover `ctx` scoping, `pending` filtering, `includePending` opt-in, and `ProviderError` shapes; they do not cover performance or concurrency.
|
|
100
100
|
|
|
101
101
|
---
|
|
102
102
|
|
|
@@ -108,13 +108,13 @@ Throw `ProviderError` for user-facing failures (`new ProviderError('...', 404)`)
|
|
|
108
108
|
|
|
109
109
|
## Data privacy
|
|
110
110
|
|
|
111
|
-
Identity and credentials belong to whichever `IAuthProvider` is configured — for Supabase that's a separate service; for the local provider, Selva itself is the auth provider and holds
|
|
111
|
+
Identity and credentials belong to whichever `IAuthProvider` is configured — for Supabase that's a separate service; for the local provider, Selva itself is the auth provider and holds email addresses and password hashes on disk. This package's own stores hold user IDs, authorization metadata, display names, invite email addresses, and audit payloads. **The operator is the data controller.** See [data privacy](../../docs/self-hosting/concepts/data-privacy.md) for the full inventory and what erasure reaches, plus [providers](../../docs/self-hosting/providers/overview.md) and [security & limits](../../docs/self-hosting/concepts/security-and-limits.md).
|
|
112
112
|
|
|
113
113
|
---
|
|
114
114
|
|
|
115
115
|
## What not to put in this package
|
|
116
116
|
|
|
117
117
|
- No runtime dependencies on databases, ORMs, auth SDKs, or HTTP frameworks.
|
|
118
|
-
- No concrete adapters
|
|
119
|
-
- No service orchestration. Multi-step workflows
|
|
120
|
-
- No HTTP-boundary concerns. Zod request schemas and
|
|
118
|
+
- No concrete adapters — they live in their own packages.
|
|
119
|
+
- No service orchestration. Multi-step workflows composing data + storage live in `@selvajs/server`.
|
|
120
|
+
- No HTTP-boundary concerns. Zod request schemas and route gating belong in the app's handlers.
|
package/dist/access/index.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export type { ProjectAccessInput, DefinitionAccessInput, VisibilityChangeInput, ReclaimAccessInput, CreateProjectAccessInput, OwnerRemovalInput, OwnerRemovalCheck } from './rules.js';
|
|
2
|
-
export { canView, canSolve, canEdit, canManage, canEditProjectSettings, canChangeVisibilityToPublic, canEditDefinition, canReclaim, canCreateProject, checkOwnerRemoval, withAdminBypass } from './rules.js';
|
|
1
|
+
export type { ProjectAccessInput, DefinitionAccessInput, VisibilityChangeInput, ReclaimAccessInput, CreateProjectAccessInput, OrgOwnerAuthorityInput, OwnerRemovalInput, OwnerRemovalCheck } from './rules.js';
|
|
2
|
+
export { canView, canSolve, canEdit, canManage, canEditProjectSettings, canChangeVisibilityToPublic, canEditDefinition, canReclaim, canCreateProject, canChangeOrgRole, checkOwnerRemoval, withAdminBypass } from './rules.js';
|
|
3
3
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/access/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACX,kBAAkB,EAClB,qBAAqB,EACrB,qBAAqB,EACrB,kBAAkB,EAClB,wBAAwB,EACxB,iBAAiB,EACjB,iBAAiB,EACjB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACN,OAAO,EACP,QAAQ,EACR,OAAO,EACP,SAAS,EACT,sBAAsB,EACtB,2BAA2B,EAC3B,iBAAiB,EACjB,UAAU,EACV,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,MAAM,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/access/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACX,kBAAkB,EAClB,qBAAqB,EACrB,qBAAqB,EACrB,kBAAkB,EAClB,wBAAwB,EACxB,sBAAsB,EACtB,iBAAiB,EACjB,iBAAiB,EACjB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACN,OAAO,EACP,QAAQ,EACR,OAAO,EACP,SAAS,EACT,sBAAsB,EACtB,2BAA2B,EAC3B,iBAAiB,EACjB,UAAU,EACV,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,MAAM,YAAY,CAAC"}
|
package/dist/access/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { canView, canSolve, canEdit, canManage, canEditProjectSettings, canChangeVisibilityToPublic, canEditDefinition, canReclaim, canCreateProject, checkOwnerRemoval, withAdminBypass } from './rules.js';
|
|
1
|
+
export { canView, canSolve, canEdit, canManage, canEditProjectSettings, canChangeVisibilityToPublic, canEditDefinition, canReclaim, canCreateProject, canChangeOrgRole, checkOwnerRemoval, withAdminBypass } from './rules.js';
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/dist/access/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/access/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/access/index.ts"],"names":[],"mappings":"AAWA,OAAO,EACN,OAAO,EACP,QAAQ,EACR,OAAO,EACP,SAAS,EACT,sBAAsB,EACtB,2BAA2B,EAC3B,iBAAiB,EACjB,UAAU,EACV,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,MAAM,YAAY,CAAC"}
|
package/dist/access/rules.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { PlatformPermission } from '../permissions/types.js';
|
|
2
|
-
import type { OrgPermission } from '../organizations/schemas.js';
|
|
2
|
+
import type { OrgPermission, OrgRole } from '../organizations/schemas.js';
|
|
3
3
|
import type { Project, ProjectMember } from '../projects/types.js';
|
|
4
4
|
import type { OrgMember } from '../organizations/types.js';
|
|
5
5
|
import type { DefinitionRecord } from '../definitions/types.js';
|
|
@@ -67,6 +67,13 @@ export interface DefinitionAccessInput {
|
|
|
67
67
|
project: Project | null;
|
|
68
68
|
definition: DefinitionRecord | null;
|
|
69
69
|
member: ProjectMember | null;
|
|
70
|
+
/**
|
|
71
|
+
* The actor's membership in the project's parent org, used only by the
|
|
72
|
+
* commons branch below. `null` means "not a member of this org" — which on a
|
|
73
|
+
* commons project is what separates a current contributor from a departed
|
|
74
|
+
* one.
|
|
75
|
+
*/
|
|
76
|
+
orgMember: OrgMember | null;
|
|
70
77
|
userId: string;
|
|
71
78
|
platformPermissions: readonly PlatformPermission[];
|
|
72
79
|
/**
|
|
@@ -79,7 +86,8 @@ export interface DefinitionAccessInput {
|
|
|
79
86
|
/**
|
|
80
87
|
* For platform projects: `instance_admin` only.
|
|
81
88
|
* For all other projects: project editor/owner can always edit (moderation).
|
|
82
|
-
* On commons projects (`autoJoinOnUpload=true`) the definition owner can edit
|
|
89
|
+
* On commons projects (`autoJoinOnUpload=true`) the definition owner can edit
|
|
90
|
+
* their own, as long as they still belong to the project's org.
|
|
83
91
|
*/
|
|
84
92
|
export declare function canEditDefinition(input: DefinitionAccessInput): boolean;
|
|
85
93
|
export interface ReclaimAccessInput {
|
|
@@ -110,6 +118,27 @@ export interface CreateProjectAccessInput {
|
|
|
110
118
|
* gated on `instance_admin` — this rule isn't consulted for them.
|
|
111
119
|
*/
|
|
112
120
|
export declare function canCreateProject(input: CreateProjectAccessInput): boolean;
|
|
121
|
+
export interface OrgOwnerAuthorityInput {
|
|
122
|
+
/** The acting user's own membership row, not the org's `ownerId` column. */
|
|
123
|
+
actorMember: OrgMember | null;
|
|
124
|
+
/** The role being granted, or the role the target already holds. */
|
|
125
|
+
role: OrgRole;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Whether the actor may hand out or take away org `owner`/`admin` standing (§3).
|
|
129
|
+
*
|
|
130
|
+
* Three routes decide this — inviting someone as owner/admin, changing an
|
|
131
|
+
* existing member's role, and removing an owner — and all three had written it
|
|
132
|
+
* out longhand. Two of them had drifted by the time the access audit found
|
|
133
|
+
* them: the invite route let an admin mint an `owner` invite for themselves,
|
|
134
|
+
* and DELETE let an admin remove an owner that PATCH would not let them demote.
|
|
135
|
+
* They are one rule, so they read it from one place.
|
|
136
|
+
*
|
|
137
|
+
* Reads the actor's **membership row**. `Organization.ownerId` is a separate
|
|
138
|
+
* field that can disagree with it — see the sole-`instance_admin` finding — and
|
|
139
|
+
* is not authority for this decision.
|
|
140
|
+
*/
|
|
141
|
+
export declare function canChangeOrgRole(input: OrgOwnerAuthorityInput): boolean;
|
|
113
142
|
/**
|
|
114
143
|
* Pre-flight check for project-owner removal, run after `canManage`.
|
|
115
144
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rules.d.ts","sourceRoot":"","sources":["../../src/access/rules.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"rules.d.ts","sourceRoot":"","sources":["../../src/access/rules.ts"],"names":[],"mappings":"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"}
|
package/dist/access/rules.js
CHANGED
|
@@ -106,10 +106,11 @@ export function canChangeVisibilityToPublic(input) {
|
|
|
106
106
|
/**
|
|
107
107
|
* For platform projects: `instance_admin` only.
|
|
108
108
|
* For all other projects: project editor/owner can always edit (moderation).
|
|
109
|
-
* On commons projects (`autoJoinOnUpload=true`) the definition owner can edit
|
|
109
|
+
* On commons projects (`autoJoinOnUpload=true`) the definition owner can edit
|
|
110
|
+
* their own, as long as they still belong to the project's org.
|
|
110
111
|
*/
|
|
111
112
|
export function canEditDefinition(input) {
|
|
112
|
-
const { project, definition, member, userId, platformPermissions, enablePlatformProjects } = input;
|
|
113
|
+
const { project, definition, member, orgMember, userId, platformPermissions, enablePlatformProjects } = input;
|
|
113
114
|
if (!project || !definition)
|
|
114
115
|
return false;
|
|
115
116
|
if (project.visibility === 'platform') {
|
|
@@ -119,7 +120,12 @@ export function canEditDefinition(input) {
|
|
|
119
120
|
}
|
|
120
121
|
if (member?.role === 'owner' || member?.role === 'editor')
|
|
121
122
|
return true;
|
|
122
|
-
|
|
123
|
+
// Commons grants edit on top of belonging, not instead of it. `ownerId` is
|
|
124
|
+
// stamped at upload and never revisited, so without the org-membership test
|
|
125
|
+
// a departed uploader keeps edit/delete/share-link authority on everything
|
|
126
|
+
// they ever uploaded — and flipping `autoJoinOnUpload` on hands it back to
|
|
127
|
+
// them retroactively, with no action taken against them.
|
|
128
|
+
if (project.autoJoinOnUpload && userId === definition.ownerId && orgMember)
|
|
123
129
|
return true;
|
|
124
130
|
return false;
|
|
125
131
|
}
|
|
@@ -159,6 +165,25 @@ export function canCreateProject(input) {
|
|
|
159
165
|
return true;
|
|
160
166
|
return false;
|
|
161
167
|
}
|
|
168
|
+
/**
|
|
169
|
+
* Whether the actor may hand out or take away org `owner`/`admin` standing (§3).
|
|
170
|
+
*
|
|
171
|
+
* Three routes decide this — inviting someone as owner/admin, changing an
|
|
172
|
+
* existing member's role, and removing an owner — and all three had written it
|
|
173
|
+
* out longhand. Two of them had drifted by the time the access audit found
|
|
174
|
+
* them: the invite route let an admin mint an `owner` invite for themselves,
|
|
175
|
+
* and DELETE let an admin remove an owner that PATCH would not let them demote.
|
|
176
|
+
* They are one rule, so they read it from one place.
|
|
177
|
+
*
|
|
178
|
+
* Reads the actor's **membership row**. `Organization.ownerId` is a separate
|
|
179
|
+
* field that can disagree with it — see the sole-`instance_admin` finding — and
|
|
180
|
+
* is not authority for this decision.
|
|
181
|
+
*/
|
|
182
|
+
export function canChangeOrgRole(input) {
|
|
183
|
+
if (input.role === 'member')
|
|
184
|
+
return true;
|
|
185
|
+
return input.actorMember?.role === 'owner';
|
|
186
|
+
}
|
|
162
187
|
export function checkOwnerRemoval(input) {
|
|
163
188
|
if (input.target.role !== 'owner')
|
|
164
189
|
return 'ok';
|
package/dist/access/rules.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rules.js","sourceRoot":"","sources":["../../src/access/rules.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"rules.js","sourceRoot":"","sources":["../../src/access/rules.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,5 +4,5 @@ export type { IComputeServerStore, GetConfigOptions } from './interface.js';
|
|
|
4
4
|
export { isEncryptedSecret, encryptSecret, decryptSecret, decodeSecretKey } from './secrets.js';
|
|
5
5
|
export type { SecretVerificationReport, SecretVerificationFailure, SecretVerificationFailureReason } from './secrets.js';
|
|
6
6
|
export type { ResolveOptions } from './utils.js';
|
|
7
|
-
export { serversVisibleTo, defaultServerIdFor, resolveServerForOrg, findServerById, platformServers, orgServersFor } from './utils.js';
|
|
7
|
+
export { serversVisibleTo, defaultServerIdFor, resolveServerForOrg, findServerById, platformServers, orgServersFor, scopeConfigToOrg } from './utils.js';
|
|
8
8
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/computeServer/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACX,mBAAmB,EACnB,aAAa,EACb,qBAAqB,EACrB,gBAAgB,EAChB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC3D,YAAY,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAM5E,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAChG,YAAY,EACX,wBAAwB,EACxB,yBAAyB,EACzB,+BAA+B,EAC/B,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EACN,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,EACnB,cAAc,EACd,eAAe,EACf,aAAa,EACb,MAAM,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/computeServer/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACX,mBAAmB,EACnB,aAAa,EACb,qBAAqB,EACrB,gBAAgB,EAChB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC3D,YAAY,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAM5E,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAChG,YAAY,EACX,wBAAwB,EACxB,yBAAyB,EACzB,+BAA+B,EAC/B,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EACN,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,EACnB,cAAc,EACd,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,MAAM,YAAY,CAAC"}
|
|
@@ -5,5 +5,5 @@ export { isPlatformServer, isOrgServer } from './types.js';
|
|
|
5
5
|
// `@selvajs/platform/computeServer` in server code. The report TYPES are erased
|
|
6
6
|
// at build, so they also stay re-exported from the root barrel for convenience.
|
|
7
7
|
export { isEncryptedSecret, encryptSecret, decryptSecret, decodeSecretKey } from './secrets.js';
|
|
8
|
-
export { serversVisibleTo, defaultServerIdFor, resolveServerForOrg, findServerById, platformServers, orgServersFor } from './utils.js';
|
|
8
|
+
export { serversVisibleTo, defaultServerIdFor, resolveServerForOrg, findServerById, platformServers, orgServersFor, scopeConfigToOrg } from './utils.js';
|
|
9
9
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/computeServer/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE3D,6EAA6E;AAC7E,4EAA4E;AAC5E,wEAAwE;AACxE,gFAAgF;AAChF,gFAAgF;AAChF,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAOhG,OAAO,EACN,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,EACnB,cAAc,EACd,eAAe,EACf,aAAa,EACb,MAAM,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/computeServer/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE3D,6EAA6E;AAC7E,4EAA4E;AAC5E,wEAAwE;AACxE,gFAAgF;AAChF,gFAAgF;AAChF,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAOhG,OAAO,EACN,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,EACnB,cAAc,EACd,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,MAAM,YAAY,CAAC"}
|
|
@@ -21,13 +21,26 @@ export interface GetConfigOptions {
|
|
|
21
21
|
* `getServerApiKey` for just that one.
|
|
22
22
|
*/
|
|
23
23
|
includeApiKeys?: boolean;
|
|
24
|
+
/**
|
|
25
|
+
* Narrow the result to what this org may see: `serversVisibleTo(orgId)`,
|
|
26
|
+
* `orgDefaults` reduced to this org's entry, and `defaultServerId` blanked
|
|
27
|
+
* when the global default is not among them.
|
|
28
|
+
*
|
|
29
|
+
* Org-facing surfaces must pass this. Without it the store hands back every
|
|
30
|
+
* platform server and every *other* org's private servers, leaving each
|
|
31
|
+
* caller to re-apply a filter it can silently forget — the global
|
|
32
|
+
* `defaultServerId` in particular passed straight through before this
|
|
33
|
+
* existed. Admin surfaces, boot health and the save-diff handlers omit it
|
|
34
|
+
* deliberately; they act instance-wide.
|
|
35
|
+
*/
|
|
36
|
+
scopeToOrgId?: string;
|
|
24
37
|
}
|
|
25
38
|
export interface IComputeServerStore {
|
|
26
39
|
/**
|
|
27
|
-
* Reads the
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
*
|
|
40
|
+
* Reads the config. Instance-wide by default — the same row set is needed at
|
|
41
|
+
* different scopes (admin manage vs. org manage vs. solve). Pass
|
|
42
|
+
* `scopeToOrgId` on any org-facing surface so the narrowing happens here
|
|
43
|
+
* rather than in each caller.
|
|
31
44
|
*
|
|
32
45
|
* Servers come back with `apiKey: undefined` unless `includeApiKeys` is
|
|
33
46
|
* set, so a returned server says nothing about whether a key is *stored*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../../src/computeServer/interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,KAAK,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACrE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AAE7D;;;;;;GAMG;AACH,MAAM,WAAW,gBAAgB;IAChC;;;;;;;;;;OAUG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../../src/computeServer/interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,KAAK,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACrE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AAE7D;;;;;;GAMG;AACH,MAAM,WAAW,gBAAgB;IAChC;;;;;;;;;;OAUG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB;;;;;;;;;;;OAWG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,mBAAmB;IACnC;;;;;;;;;OASG;IACH,SAAS,CAAC,GAAG,EAAE,cAAc,EAAE,IAAI,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IAEhF;;;;;;;;OAQG;IACH,eAAe,CAAC,GAAG,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAEpF,iIAAiI;IACjI,mBAAmB,CAClB,GAAG,EAAE,cAAc,EACnB,OAAO,EAAE,mBAAmB,EAAE,EAC9B,eAAe,EAAE,MAAM,GAAG,SAAS,GACjC,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjB;;;;;;OAMG;IACH,cAAc,CACb,GAAG,EAAE,cAAc,EACnB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,mBAAmB,EAAE,EAC9B,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,GAC7B,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjB;;;;OAIG;IACH,aAAa,CAAC,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE1F;;;;;;OAMG;IACH,WAAW,CAAC,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE/D;;;;;;OAMG;IACH,aAAa,CAAC,IAAI,OAAO,CAAC,wBAAwB,CAAC,CAAC;CACpD"}
|
|
@@ -23,6 +23,16 @@ export interface ResolveOptions {
|
|
|
23
23
|
definitionPin?: string | null;
|
|
24
24
|
}
|
|
25
25
|
export declare function resolveServerForOrg(config: ComputeConfig, orgId: string | null | undefined, opts?: ResolveOptions): ComputeServerConfig;
|
|
26
|
+
/**
|
|
27
|
+
* The config as one org may see it: visible servers only, `orgDefaults` reduced
|
|
28
|
+
* to this org's own entry, and `defaultServerId` dropped when the global default
|
|
29
|
+
* is not visible here.
|
|
30
|
+
*
|
|
31
|
+
* Applied inside `getConfig` when `scopeToOrgId` is passed, so an org-facing
|
|
32
|
+
* caller cannot forget the filter and leak other orgs' server URLs or the
|
|
33
|
+
* instance's default choice.
|
|
34
|
+
*/
|
|
35
|
+
export declare function scopeConfigToOrg(config: ComputeConfig, orgId: string): ComputeConfig;
|
|
26
36
|
/** Lookup by id, ignoring scope or visibility — for admin contexts that display a server outside the visibility filter. */
|
|
27
37
|
export declare function findServerById(config: ComputeConfig, id: string): ComputeServerConfig | undefined;
|
|
28
38
|
export declare function platformServers(config: ComputeConfig): import("./types.js").PlatformComputeServer[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/computeServer/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAGN,KAAK,aAAa,EAClB,KAAK,mBAAmB,EACxB,MAAM,YAAY,CAAC;AAEpB;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC/B,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAC9B,mBAAmB,EAAE,CAWvB;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CACjC,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAC9B,MAAM,GAAG,SAAS,CAYpB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,cAAc;IAC9B,iEAAiE;IACjE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED,wBAAgB,mBAAmB,CAClC,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAChC,IAAI,GAAE,cAAmB,GACvB,mBAAmB,CAoBrB;AAED,2HAA2H;AAC3H,wBAAgB,cAAc,CAAC,MAAM,EAAE,aAAa,EAAE,EAAE,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS,CAEjG;AAMD,wBAAgB,eAAe,CAAC,MAAM,EAAE,aAAa,gDAEpD;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,yBAEjE"}
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/computeServer/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAGN,KAAK,aAAa,EAClB,KAAK,mBAAmB,EACxB,MAAM,YAAY,CAAC;AAEpB;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC/B,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAC9B,mBAAmB,EAAE,CAWvB;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CACjC,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAC9B,MAAM,GAAG,SAAS,CAYpB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,cAAc;IAC9B,iEAAiE;IACjE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED,wBAAgB,mBAAmB,CAClC,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAChC,IAAI,GAAE,cAAmB,GACvB,mBAAmB,CAoBrB;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,GAAG,aAAa,CAapF;AAED,2HAA2H;AAC3H,wBAAgB,cAAc,CAAC,MAAM,EAAE,aAAa,EAAE,EAAE,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS,CAEjG;AAMD,wBAAgB,eAAe,CAAC,MAAM,EAAE,aAAa,gDAEpD;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,yBAEjE"}
|
|
@@ -56,6 +56,27 @@ export function resolveServerForOrg(config, orgId, opts = {}) {
|
|
|
56
56
|
// Last resort: first visible server. Mainly hit in tests and initial setup before a default is chosen.
|
|
57
57
|
return visible[0];
|
|
58
58
|
}
|
|
59
|
+
/**
|
|
60
|
+
* The config as one org may see it: visible servers only, `orgDefaults` reduced
|
|
61
|
+
* to this org's own entry, and `defaultServerId` dropped when the global default
|
|
62
|
+
* is not visible here.
|
|
63
|
+
*
|
|
64
|
+
* Applied inside `getConfig` when `scopeToOrgId` is passed, so an org-facing
|
|
65
|
+
* caller cannot forget the filter and leak other orgs' server URLs or the
|
|
66
|
+
* instance's default choice.
|
|
67
|
+
*/
|
|
68
|
+
export function scopeConfigToOrg(config, orgId) {
|
|
69
|
+
const servers = serversVisibleTo(config, orgId);
|
|
70
|
+
const visibleIds = new Set(servers.map((s) => s.id));
|
|
71
|
+
const orgDefault = config.orgDefaults?.[orgId];
|
|
72
|
+
return {
|
|
73
|
+
servers,
|
|
74
|
+
defaultServerId: config.defaultServerId && visibleIds.has(config.defaultServerId)
|
|
75
|
+
? config.defaultServerId
|
|
76
|
+
: undefined,
|
|
77
|
+
orgDefaults: orgDefault ? { [orgId]: orgDefault } : {}
|
|
78
|
+
};
|
|
79
|
+
}
|
|
59
80
|
/** Lookup by id, ignoring scope or visibility — for admin contexts that display a server outside the visibility filter. */
|
|
60
81
|
export function findServerById(config, id) {
|
|
61
82
|
return config.servers.find((s) => s.id === id);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/computeServer/utils.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/computeServer/utils.ts"],"names":[],"mappings":"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"}
|
package/dist/context.d.ts
CHANGED
|
@@ -21,6 +21,14 @@ export interface RequestContext {
|
|
|
21
21
|
orgPermissions: OrgPermission[];
|
|
22
22
|
/** Never derive from a user session. */
|
|
23
23
|
system?: true;
|
|
24
|
+
/**
|
|
25
|
+
* Set when `system` was granted by a share-link token rather than by a
|
|
26
|
+
* trusted server flow. The token holder is anonymous, so `system` here means
|
|
27
|
+
* only "use the service-role client" (no user JWT exists to scope RLS) — it
|
|
28
|
+
* must never read as "authorized". `assertNotShareContext` is how a store
|
|
29
|
+
* guard refuses.
|
|
30
|
+
*/
|
|
31
|
+
shareLinkId?: string;
|
|
24
32
|
/** Opaque adapter payload — the Supabase adapter passes the user JWT through for RLS; local ignores it. */
|
|
25
33
|
adapterContext?: unknown;
|
|
26
34
|
}
|
|
@@ -32,6 +40,18 @@ export declare const SYSTEM_CONTEXT: RequestContext;
|
|
|
32
40
|
* `actingOrgId` returns false unless `instance_admin` or `system`.
|
|
33
41
|
*/
|
|
34
42
|
export declare function hasPermission(ctx: RequestContext, permission: PlatformPermission | OrgPermission): boolean;
|
|
43
|
+
/**
|
|
44
|
+
* An anonymous share-link holder. `system` is true on these contexts for adapter
|
|
45
|
+
* dispatch only — a guard that treats `system` as "fully authorized" must
|
|
46
|
+
* exclude them first.
|
|
47
|
+
*/
|
|
48
|
+
export declare function isShareContext(ctx: RequestContext): boolean;
|
|
49
|
+
/**
|
|
50
|
+
* Refuse a privileged operation to a share-link context. Call at the top of any
|
|
51
|
+
* guard whose first line is `if (ctx.system) return` — the token grants one
|
|
52
|
+
* definition on one channel, never instance authority.
|
|
53
|
+
*/
|
|
54
|
+
export declare function assertNotShareContext(ctx: RequestContext, what: string): void;
|
|
35
55
|
/**
|
|
36
56
|
* Returns the org the caller is acting as, or throws `ProviderError(403)`.
|
|
37
57
|
* Centralizes this guard so every store that scopes rows to an acting org fails
|
package/dist/context.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAEjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAIhE;;;;;;;;;;GAUG;AACH,MAAM,WAAW,cAAc;IAC9B,wCAAwC;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,oEAAoE;IACpE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mBAAmB,EAAE,kBAAkB,EAAE,CAAC;IAC1C,6CAA6C;IAC7C,cAAc,EAAE,aAAa,EAAE,CAAC;IAChC,wCAAwC;IACxC,MAAM,CAAC,EAAE,IAAI,CAAC;IACd,2GAA2G;IAC3G,cAAc,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,iGAAiG;AACjG,eAAO,MAAM,cAAc,EAAE,cAK5B,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,aAAa,CAC5B,GAAG,EAAE,cAAc,EACnB,UAAU,EAAE,kBAAkB,GAAG,aAAa,GAC5C,OAAO,CAOT;AAQD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,cAAc,GAAG,MAAM,CAK5D"}
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAEjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAIhE;;;;;;;;;;GAUG;AACH,MAAM,WAAW,cAAc;IAC9B,wCAAwC;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,oEAAoE;IACpE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mBAAmB,EAAE,kBAAkB,EAAE,CAAC;IAC1C,6CAA6C;IAC7C,cAAc,EAAE,aAAa,EAAE,CAAC;IAChC,wCAAwC;IACxC,MAAM,CAAC,EAAE,IAAI,CAAC;IACd;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,2GAA2G;IAC3G,cAAc,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,iGAAiG;AACjG,eAAO,MAAM,cAAc,EAAE,cAK5B,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,aAAa,CAC5B,GAAG,EAAE,cAAc,EACnB,UAAU,EAAE,kBAAkB,GAAG,aAAa,GAC5C,OAAO,CAOT;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAE3D;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAI7E;AAQD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,cAAc,GAAG,MAAM,CAK5D"}
|
package/dist/context.js
CHANGED
|
@@ -23,6 +23,24 @@ export function hasPermission(ctx, permission) {
|
|
|
23
23
|
}
|
|
24
24
|
return ctx.orgPermissions.includes(permission);
|
|
25
25
|
}
|
|
26
|
+
/**
|
|
27
|
+
* An anonymous share-link holder. `system` is true on these contexts for adapter
|
|
28
|
+
* dispatch only — a guard that treats `system` as "fully authorized" must
|
|
29
|
+
* exclude them first.
|
|
30
|
+
*/
|
|
31
|
+
export function isShareContext(ctx) {
|
|
32
|
+
return ctx.shareLinkId !== undefined;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Refuse a privileged operation to a share-link context. Call at the top of any
|
|
36
|
+
* guard whose first line is `if (ctx.system) return` — the token grants one
|
|
37
|
+
* definition on one channel, never instance authority.
|
|
38
|
+
*/
|
|
39
|
+
export function assertNotShareContext(ctx, what) {
|
|
40
|
+
if (isShareContext(ctx)) {
|
|
41
|
+
throw new ProviderError(`Forbidden: a share link cannot ${what}`, 403);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
26
44
|
const PLATFORM_PERMISSION_VALUES = new Set(ALL_PLATFORM_PERMISSIONS);
|
|
27
45
|
function isPlatformPermission(p) {
|
|
28
46
|
return PLATFORM_PERMISSION_VALUES.has(p);
|
package/dist/context.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAElE,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAElE,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAmC5C,iGAAiG;AACjG,MAAM,CAAC,MAAM,cAAc,GAAmB;IAC7C,MAAM,EAAE,EAAE;IACV,mBAAmB,EAAE,CAAC,GAAG,wBAAwB,CAAC;IAClD,cAAc,EAAE,CAAC,GAAG,mBAAmB,CAAC;IACxC,MAAM,EAAE,IAAI;CACZ,CAAC;AAEF;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAC5B,GAAmB,EACnB,UAA8C;IAE9C,IAAI,GAAG,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAC5B,IAAI,GAAG,CAAC,mBAAmB,CAAC,QAAQ,CAAC,gBAAgB,CAAC;QAAE,OAAO,IAAI,CAAC;IACpE,IAAI,oBAAoB,CAAC,UAAU,CAAC,EAAE,CAAC;QACtC,OAAO,GAAG,CAAC,mBAAmB,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IACrD,CAAC;IACD,OAAO,GAAG,CAAC,cAAc,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;AAChD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,GAAmB;IACjD,OAAO,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC;AACtC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CAAC,GAAmB,EAAE,IAAY;IACtE,IAAI,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,aAAa,CAAC,kCAAkC,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC;IACxE,CAAC;AACF,CAAC;AAED,MAAM,0BAA0B,GAAG,IAAI,GAAG,CAAS,wBAAwB,CAAC,CAAC;AAE7E,SAAS,oBAAoB,CAAC,CAAS;IACtC,OAAO,0BAA0B,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC1C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,GAAmB;IACnD,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;QACtB,MAAM,IAAI,aAAa,CAAC,mCAAmC,EAAE,GAAG,CAAC,CAAC;IACnE,CAAC;IACD,OAAO,GAAG,CAAC,WAAW,CAAC;AACxB,CAAC"}
|
|
@@ -16,6 +16,12 @@ export type DomainEvent = {
|
|
|
16
16
|
orgId: string;
|
|
17
17
|
userId: string;
|
|
18
18
|
actorId: string;
|
|
19
|
+
} | {
|
|
20
|
+
type: 'org_member.removed_orphaning_projects';
|
|
21
|
+
orgId: string;
|
|
22
|
+
userId: string;
|
|
23
|
+
projectIds: readonly string[];
|
|
24
|
+
actorId: string;
|
|
19
25
|
} | {
|
|
20
26
|
type: 'org_member.role_changed';
|
|
21
27
|
orgId: string;
|
|
@@ -42,6 +48,12 @@ export type DomainEvent = {
|
|
|
42
48
|
projectId: string;
|
|
43
49
|
userId: string;
|
|
44
50
|
actorId: string;
|
|
51
|
+
} | {
|
|
52
|
+
type: 'project.reclaimed';
|
|
53
|
+
projectId: string;
|
|
54
|
+
orgId: string;
|
|
55
|
+
actorId: string;
|
|
56
|
+
priorVisibility: string;
|
|
45
57
|
} | {
|
|
46
58
|
type: 'project_member.removed';
|
|
47
59
|
projectId: string;
|
|
@@ -103,6 +115,24 @@ export type DomainEvent = {
|
|
|
103
115
|
inviteId: string;
|
|
104
116
|
orgId: string;
|
|
105
117
|
actorId: string;
|
|
118
|
+
} | {
|
|
119
|
+
type: 'user.created';
|
|
120
|
+
userId: string;
|
|
121
|
+
actorId: string;
|
|
122
|
+
} | {
|
|
123
|
+
type: 'user.deleted';
|
|
124
|
+
userId: string;
|
|
125
|
+
actorId: string;
|
|
126
|
+
} | {
|
|
127
|
+
type: 'user.disabled';
|
|
128
|
+
userId: string;
|
|
129
|
+
actorId: string;
|
|
130
|
+
} | {
|
|
131
|
+
type: 'platform_permissions.changed';
|
|
132
|
+
userId: string;
|
|
133
|
+
/** Post-change set. The prior set is not recorded — read the preceding event of this type. */
|
|
134
|
+
permissions: readonly string[];
|
|
135
|
+
actorId: string;
|
|
106
136
|
} | {
|
|
107
137
|
type: 'system.update.started';
|
|
108
138
|
channel: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../../src/events/interface.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,GACpB;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACvD;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACvD;IAAE,IAAI,EAAE,kBAAkB,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAC5E;IAAE,IAAI,EAAE,oBAAoB,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,
|
|
1
|
+
{"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../../src/events/interface.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interface.js","sourceRoot":"","sources":["../../src/events/interface.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"interface.js","sourceRoot":"","sources":["../../src/events/interface.ts"],"names":[],"mappings":"AAkHA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC;AAoBrC;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAC,GAAyC;IAClE,OAAO,GAAG,CAAC,MAAM,IAAI,QAAQ,CAAC;AAC/B,CAAC;AAED,uEAAuE;AACvE,MAAM,OAAO,aAAa;IACzB,KAAK,CAAC,IAAI,CAAC,MAAmB,IAAkB,CAAC;CACjD"}
|
package/dist/index.d.ts
CHANGED
|
@@ -27,7 +27,7 @@ export { GH_EXTENSIONS, COVER_IMAGE_EXTENSIONS, ALLOWED_UPLOAD_EXTENSIONS, COVER
|
|
|
27
27
|
export { definitionPaths } from './definitions/paths.js';
|
|
28
28
|
export type { UpdateMetadataInput } from './definitions/schemas.js';
|
|
29
29
|
export { DefinitionChannelSchema, PublishVersionInputSchema, CreateDefinitionInputSchema, UpdateMetadataInputSchema, GuidSchema, UUID_REGEX } from './definitions/schemas.js';
|
|
30
|
-
export type { ShareLink } from './shareLinks/types.js';
|
|
30
|
+
export type { OrgShareLink, ShareLink } from './shareLinks/types.js';
|
|
31
31
|
export type { IShareLinkStore } from './shareLinks/interface.js';
|
|
32
32
|
export { DEFAULT_SHARE_LINK_MAX_SOLVES } from './shareLinks/types.js';
|
|
33
33
|
export type { CreateShareLinkInput } from './shareLinks/schemas.js';
|
|
@@ -45,9 +45,9 @@ export { isPlatformServer, isOrgServer } from './computeServer/types.js';
|
|
|
45
45
|
export type { IComputeServerStore, GetConfigOptions } from './computeServer/interface.js';
|
|
46
46
|
export type { SecretVerificationReport, SecretVerificationFailure, SecretVerificationFailureReason } from './computeServer/secrets.js';
|
|
47
47
|
export type { ResolveOptions } from './computeServer/utils.js';
|
|
48
|
-
export { serversVisibleTo, defaultServerIdFor, resolveServerForOrg, findServerById, platformServers, orgServersFor } from './computeServer/utils.js';
|
|
49
|
-
export type { ProjectAccessInput, DefinitionAccessInput, VisibilityChangeInput, ReclaimAccessInput, CreateProjectAccessInput, OwnerRemovalInput, OwnerRemovalCheck } from './access/rules.js';
|
|
50
|
-
export { canView, canSolve, canEdit, canManage, canEditProjectSettings, canChangeVisibilityToPublic, canEditDefinition, canReclaim, canCreateProject, checkOwnerRemoval, withAdminBypass } from './access/rules.js';
|
|
48
|
+
export { serversVisibleTo, defaultServerIdFor, resolveServerForOrg, findServerById, platformServers, orgServersFor, scopeConfigToOrg } from './computeServer/utils.js';
|
|
49
|
+
export type { ProjectAccessInput, DefinitionAccessInput, VisibilityChangeInput, ReclaimAccessInput, CreateProjectAccessInput, OrgOwnerAuthorityInput, OwnerRemovalInput, OwnerRemovalCheck } from './access/rules.js';
|
|
50
|
+
export { canView, canSolve, canEdit, canManage, canEditProjectSettings, canChangeVisibilityToPublic, canEditDefinition, canReclaim, canCreateProject, canChangeOrgRole, checkOwnerRemoval, withAdminBypass } from './access/rules.js';
|
|
51
51
|
export type { DomainEvent, DomainEventType, IEventSink } from './events/interface.js';
|
|
52
52
|
export { actorFrom, NoopEventSink, AUDIT_EVENT_VERSION } from './events/interface.js';
|
|
53
53
|
export type { AuditEventRow, AuditCursor, AuditQueryFilters, AuditQueryResult, IAuditQuery } from './events/audit.js';
|
|
@@ -64,7 +64,7 @@ export { NoopBindingResolver } from './bindings/interface.js';
|
|
|
64
64
|
export type { AuditUpdate, AuditSoftDelete } from './utils/audit.js';
|
|
65
65
|
export { auditUpdate, auditSoftDelete } from './utils/audit.js';
|
|
66
66
|
export type { RequestContext } from './context.js';
|
|
67
|
-
export { SYSTEM_CONTEXT, hasPermission, requireActingOrg } from './context.js';
|
|
67
|
+
export { SYSTEM_CONTEXT, hasPermission, requireActingOrg, isShareContext, assertNotShareContext } from './context.js';
|
|
68
68
|
export type { ListOptions, DefinitionListOptions, Page } from './pagination.js';
|
|
69
69
|
export { DEFAULT_PAGE_LIMIT, MAX_PAGE_LIMIT } from './pagination.js';
|
|
70
70
|
export type { TenancyMode, SelvaFlags, SelvaBranding, SelvaConfig, SelvaConfigFactory } from './config.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,YAAY,EAAE,QAAQ,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnF,YAAY,EACX,aAAa,EACb,UAAU,EACV,eAAe,EACf,aAAa,EACb,cAAc,EACd,UAAU,EACV,MAAM,qBAAqB,CAAC;AAK7B,YAAY,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAC5F,YAAY,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAG3E,YAAY,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AACpE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAGtD,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACnF,YAAY,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,YAAY,EACX,OAAO,EACP,aAAa,EACb,YAAY,EACZ,cAAc,EACd,cAAc,EACd,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACN,aAAa,EACb,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EACnB,UAAU,EACV,OAAO,EACP,cAAc,EACd,eAAe,EACf,eAAe,EACf,mBAAmB,EACnB,uBAAuB,EACvB,4BAA4B,EAC5B,6BAA6B,EAC7B,MAAM,4BAA4B,CAAC;AAGpC,YAAY,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,YAAY,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAG3D,YAAY,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAClE,YAAY,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC7D,YAAY,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAC5E,OAAO,EACN,uBAAuB,EACvB,iBAAiB,EACjB,oBAAoB,EACpB,MAAM,uBAAuB,CAAC;AAG/B,YAAY,EAAE,oBAAoB,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AACpG,YAAY,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAClF,OAAO,EACN,0BAA0B,EAC1B,gCAAgC,EAChC,MAAM,+BAA+B,CAAC;AAGvC,YAAY,EACX,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,qBAAqB,EACrB,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,MAAM,wBAAwB,CAAC;AAChC,YAAY,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AACnE,YAAY,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EACN,aAAa,EACb,sBAAsB,EACtB,yBAAyB,EACzB,yBAAyB,EACzB,oBAAoB,EACpB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,YAAY,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EACN,uBAAuB,EACvB,yBAAyB,EACzB,2BAA2B,EAC3B,yBAAyB,EACzB,UAAU,EACV,UAAU,EACV,MAAM,0BAA0B,CAAC;AAKlC,YAAY,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|