@astrale-domains/shell 0.1.7 → 0.1.8
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/dist/domain.d.ts +24 -2
- package/dist/domain.js +13 -1
- package/dist/functions/authority/roles.js +45 -30
- package/dist/functions/group/assign-member.js +6 -3
- package/dist/functions/group/change-group-membership.js +86 -39
- package/dist/functions/group/group-membership-errors.js +1 -1
- package/dist/functions/group/index.js +2 -2
- package/dist/functions/group/legacy/index.js +1 -1
- package/dist/functions/group/legacy/membership.js +21 -17
- package/dist/functions/group/membership-laws.js +5 -8
- package/dist/functions/group/unassign-member.js +6 -3
- package/dist/functions/invitation/send-invitation.js +57 -7
- package/dist/mutations/group/index.js +1 -1
- package/dist/mutations/group/set-group-membership.js +45 -13
- package/dist/mutations/invitation/write-invitation.js +19 -2
- package/dist/queries/composition/index.js +1 -1
- package/dist/queries/composition/read-role-nodes.js +48 -13
- package/dist/queries/group/index.js +1 -0
- package/dist/queries/group/legacy/index.js +1 -0
- package/dist/queries/group/legacy/read-members-of-group.js +27 -0
- package/dist/queries/group/read-group-members.js +73 -0
- package/dist/queries/invitation/index.js +1 -1
- package/dist/queries/invitation/read-invitation.js +33 -8
- package/dist/queries/role/index.js +1 -1
- package/dist/queries/role/read-role-node.js +8 -0
- package/dist/runtime.d.ts +2172 -64
- package/dist/runtime.js +3 -1
- package/dist/schema/modules/application/legacy/functions/list-entrypoints.js +5 -4
- package/dist/schema/modules/group/classes/group-profile-link.d.ts +1 -1
- package/dist/schema/modules/group/classes/group.d.ts +14 -0
- package/dist/schema/modules/group/classes/group.js +12 -2
- package/dist/schema/modules/group/functions/assign-members.js +17 -0
- package/dist/schema/modules/group/functions/index.js +2 -0
- package/dist/schema/modules/group/functions/unassign-members.js +17 -0
- package/dist/schema/modules/group/types/group-membership-input.js +8 -0
- package/dist/schema/modules/group/types/index.js +1 -1
- package/dist/schema/modules/invitation/classes/invitation.js +4 -2
- package/dist/schema/modules/role/core/roles.d.ts +2 -0
- package/dist/schema/modules/role/core/roles.js +1 -0
- package/dist/schema/schema.d.ts +95 -8
- package/package.json +2 -2
package/dist/runtime.js
CHANGED
|
@@ -2,7 +2,7 @@ import { defineRuntime } from '@astrale-os/sdk/runtime';
|
|
|
2
2
|
// L-SHELL-11: the legacy handler of listEntrypoints, through its owner's facade.
|
|
3
3
|
import { legacyListEntrypoints } from './functions/application/index.js';
|
|
4
4
|
import { disconnectDirectory } from './functions/directory/index.js';
|
|
5
|
-
import { assignMember, create as createGroup, deprovision as deprovisionGroup, provision as provisionGroup, remove as deleteGroup, unassignMember, update as updateGroup, } from './functions/group/index.js';
|
|
5
|
+
import { assignMember, assignMembers, create as createGroup, deprovision as deprovisionGroup, provision as provisionGroup, remove as deleteGroup, unassignMember, unassignMembers, update as updateGroup, } from './functions/group/index.js';
|
|
6
6
|
import { accept as acceptInvitation, cancel as cancelInvitation, resend as resendInvitation, send as sendInvitation, } from './functions/invitation/index.js';
|
|
7
7
|
import { link, rename, unlink } from './functions/namespace/index.js';
|
|
8
8
|
import { create as createUser, deactivate, deprovision as deprovisionUser, invite,
|
|
@@ -30,6 +30,8 @@ const functions = [
|
|
|
30
30
|
deleteGroup,
|
|
31
31
|
assignMember,
|
|
32
32
|
unassignMember,
|
|
33
|
+
assignMembers,
|
|
34
|
+
unassignMembers,
|
|
33
35
|
provisionGroup,
|
|
34
36
|
deprovisionGroup,
|
|
35
37
|
disconnectDirectory,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { func } from '@astrale-os/sdk/schema';
|
|
2
2
|
import { z } from 'zod';
|
|
3
3
|
import { legacyApplicationsGroup } from '../../../group/legacy/index.js';
|
|
4
|
-
import {
|
|
4
|
+
import { atomicRoles } from '../../../role/index.js';
|
|
5
5
|
import { hasRole } from '../../../../policies/index.js';
|
|
6
6
|
import { legacyEntrypointEntry } from '../entrypoint-entry.js';
|
|
7
7
|
/**
|
|
@@ -9,13 +9,14 @@ import { legacyEntrypointEntry } from '../entrypoint-entry.js';
|
|
|
9
9
|
* Shell's own authority (L-SHELL-11). Replaced by the visitor's own Query (V2). Removal: Shell major
|
|
10
10
|
* (delivery step 5) after 1Pact step 4.
|
|
11
11
|
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
12
|
+
* Whoever opens the OS view lists its applications: holders of `os.viewer`, which `workspace.member`
|
|
13
|
+
* holds through the release, so its legacy `can_use` holders keep it (AM5): Administrators and
|
|
14
|
+
* Members through their profiles (AM3), and the Applications group itself.
|
|
14
15
|
*/
|
|
15
16
|
export const legacyListEntrypoints = func({
|
|
16
17
|
description: 'List the entrypoint View and name of every installed Domain that declares one.',
|
|
17
18
|
auth: 'authorized',
|
|
18
19
|
input: z.strictObject({}),
|
|
19
20
|
output: z.object({ entrypoints: z.array(legacyEntrypointEntry) }),
|
|
20
|
-
policy: ({ anyOf, check, ref }) => anyOf(check(hasRole, ref(
|
|
21
|
+
policy: ({ anyOf, check, ref }) => anyOf(check(hasRole, ref(atomicRoles['os.viewer'])), check(hasRole, ref(legacyApplicationsGroup))),
|
|
21
22
|
});
|
|
@@ -14,7 +14,7 @@ export declare const group_profile: import("@astrale-os/sdk/schema").DirectedEdg
|
|
|
14
14
|
readonly abstract: false;
|
|
15
15
|
readonly depth: 1;
|
|
16
16
|
readonly properties: "attributes" | "description" | "directory" | "externalId" | "frozen" | "icon" | "iss" | "name" | "sub";
|
|
17
|
-
readonly methods: "assignMember" | "create" | "delete" | "deprovision" | "provision" | "unassignMember" | "update";
|
|
17
|
+
readonly methods: "assignMember" | "assignMembers" | "create" | "delete" | "deprovision" | "provision" | "unassignMember" | "unassignMembers" | "update";
|
|
18
18
|
}[];
|
|
19
19
|
readonly outgoing: "0..1";
|
|
20
20
|
};
|
|
@@ -74,6 +74,20 @@ export declare const Group: import("@astrale-os/sdk/schema").AuthoredNodeClass<{
|
|
|
74
74
|
readonly mode: 'value';
|
|
75
75
|
readonly value: Record<string, never>;
|
|
76
76
|
}, "authorized", true, false, undefined, undefined>>;
|
|
77
|
+
readonly assignMembers: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
|
|
78
|
+
members: string[];
|
|
79
|
+
group: string;
|
|
80
|
+
}, {
|
|
81
|
+
readonly mode: 'value';
|
|
82
|
+
readonly value: Record<string, never>;
|
|
83
|
+
}, "authorized", true, false, undefined, undefined>>;
|
|
84
|
+
readonly unassignMembers: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
|
|
85
|
+
members: string[];
|
|
86
|
+
group: string;
|
|
87
|
+
}, {
|
|
88
|
+
readonly mode: 'value';
|
|
89
|
+
readonly value: Record<string, never>;
|
|
90
|
+
}, "authorized", true, false, undefined, undefined>>;
|
|
77
91
|
readonly provision: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
|
|
78
92
|
directory: string;
|
|
79
93
|
externalId: string;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { classIcon, nodeClass, property } from '@astrale-os/sdk/schema';
|
|
2
2
|
import { UsersRound } from '@astrale-os/sdk/schema/icons';
|
|
3
3
|
import { attributesProperty } from '../../../types/index.js';
|
|
4
|
-
import { assignMember, create, deprovision, provision, remove, unassignMember, update, } from '../functions/index.js';
|
|
4
|
+
import { assignMember, assignMembers, create, deprovision, provision, remove, unassignMember, unassignMembers, update, } from '../functions/index.js';
|
|
5
5
|
// Seams L-SHELL-1, L-SHELL-2: the relaxations existing groups and extending Domains still need.
|
|
6
6
|
import { LEGACY_GROUP_EXTENDS, LEGACY_GROUP_INHERITANCE, LEGACY_GROUP_READ, } from '../legacy/index.js';
|
|
7
7
|
const text = { type: 'string', minLength: 1, maxLength: 200 };
|
|
@@ -28,5 +28,15 @@ export const Group = nodeClass({
|
|
|
28
28
|
read: LEGACY_GROUP_READ,
|
|
29
29
|
traverse: true,
|
|
30
30
|
},
|
|
31
|
-
methods: {
|
|
31
|
+
methods: {
|
|
32
|
+
create,
|
|
33
|
+
update,
|
|
34
|
+
delete: remove,
|
|
35
|
+
assignMember,
|
|
36
|
+
unassignMember,
|
|
37
|
+
assignMembers,
|
|
38
|
+
unassignMembers,
|
|
39
|
+
provision,
|
|
40
|
+
deprovision,
|
|
41
|
+
},
|
|
32
42
|
});
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { method } from '@astrale-os/sdk/schema';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { atomicRoles } from '../../role/index.js';
|
|
4
|
+
import { hasRole } from '../../../policies/index.js';
|
|
5
|
+
import { legacyMembershipOwnerAdmission } from '../legacy/index.js';
|
|
6
|
+
import { groupMembersInput } from '../types/index.js';
|
|
7
|
+
/** Make several accounts or groups members of this group in one call (G1-G3 checked once). */
|
|
8
|
+
export const assignMembers = method({
|
|
9
|
+
static: true,
|
|
10
|
+
description: 'Make several accounts or groups members of a group.',
|
|
11
|
+
auth: 'authorized',
|
|
12
|
+
input: groupMembersInput,
|
|
13
|
+
output: z.object({}),
|
|
14
|
+
policy: (context) => context.anyOf(context.check(hasRole, context.ref(atomicRoles['group.writer'])), context.check(hasRole, context.ref(atomicRoles['directory.provisioner'])),
|
|
15
|
+
// Seam L-SHELL-9: a Domain that extends Group manages the members of its own groups.
|
|
16
|
+
legacyMembershipOwnerAdmission(context, context.input.group)),
|
|
17
|
+
});
|
|
@@ -3,5 +3,7 @@ export { update } from './update-group.js';
|
|
|
3
3
|
export { remove } from './delete-group.js';
|
|
4
4
|
export { assignMember } from './assign-member.js';
|
|
5
5
|
export { unassignMember } from './unassign-member.js';
|
|
6
|
+
export { assignMembers } from './assign-members.js';
|
|
7
|
+
export { unassignMembers } from './unassign-members.js';
|
|
6
8
|
export { provision } from './provision-group.js';
|
|
7
9
|
export { deprovision } from './deprovision-group.js';
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { method } from '@astrale-os/sdk/schema';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { atomicRoles } from '../../role/index.js';
|
|
4
|
+
import { hasRole } from '../../../policies/index.js';
|
|
5
|
+
import { legacyMembershipOwnerAdmission } from '../legacy/index.js';
|
|
6
|
+
import { groupMembersInput } from '../types/index.js';
|
|
7
|
+
/** Withdraw several direct members from a group in one call (G2, G3 checked once). */
|
|
8
|
+
export const unassignMembers = method({
|
|
9
|
+
static: true,
|
|
10
|
+
description: 'Withdraw several accounts or groups from a group.',
|
|
11
|
+
auth: 'authorized',
|
|
12
|
+
input: groupMembersInput,
|
|
13
|
+
output: z.object({}),
|
|
14
|
+
policy: (context) => context.anyOf(context.check(hasRole, context.ref(atomicRoles['group.writer'])), context.check(hasRole, context.ref(atomicRoles['directory.provisioner'])),
|
|
15
|
+
// Seam L-SHELL-9: a Domain that extends Group manages the members of its own groups.
|
|
16
|
+
legacyMembershipOwnerAdmission(context, context.input.group)),
|
|
17
|
+
});
|
|
@@ -6,3 +6,11 @@ export const groupMembershipInput = z.object({
|
|
|
6
6
|
member: path(() => User, () => Group),
|
|
7
7
|
group: path(() => Group),
|
|
8
8
|
});
|
|
9
|
+
/**
|
|
10
|
+
* Several accounts or groups to add to or withdraw from one group, in one call. A Path is not
|
|
11
|
+
* allowed inside a list, so each member is an exact @NodeId the Action checks.
|
|
12
|
+
*/
|
|
13
|
+
export const groupMembersInput = z.object({
|
|
14
|
+
members: z.array(z.string().min(2).max(512)).min(1).max(100),
|
|
15
|
+
group: path(() => Group),
|
|
16
|
+
});
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { groupMembershipInput } from './group-membership-input.js';
|
|
1
|
+
export { groupMembersInput, groupMembershipInput } from './group-membership-input.js';
|
|
2
2
|
export { directoryId, externalId, groupDescription, groupIcon, groupName, nodeReference, } from './group.js';
|
|
@@ -5,8 +5,8 @@ import { hasRole } from '../../../policies/index.js';
|
|
|
5
5
|
import { accept, cancel, resend, send } from '../functions/index.js';
|
|
6
6
|
import { INVITATION_STATUSES } from '../types/index.js';
|
|
7
7
|
/**
|
|
8
|
-
* One invitation of an account, kept by the durable run of `Invitation.send` that it names.
|
|
9
|
-
*
|
|
8
|
+
* One invitation of an account, kept by the durable run of `Invitation.send` that it names. An
|
|
9
|
+
* account has at most one pending invitation. Only Shell writes it; `user.writer` reads it, so the pending
|
|
10
10
|
* invitations are one Query on `status`.
|
|
11
11
|
*/
|
|
12
12
|
export const Invitation = nodeClass({
|
|
@@ -21,6 +21,8 @@ export const Invitation = nodeClass({
|
|
|
21
21
|
// The durable run that keeps it, and the number of events it has received (resends).
|
|
22
22
|
execution: property({ type: 'string', minLength: 1, maxLength: 200 }),
|
|
23
23
|
round: property({ type: 'integer', minimum: 0 }),
|
|
24
|
+
// The email it was sent to, in lower case: a new invitation to the same email resends this one.
|
|
25
|
+
email: property({ type: 'string', minLength: 3, maxLength: 320 }, { required: false }),
|
|
24
26
|
},
|
|
25
27
|
policies: {
|
|
26
28
|
read: ({ check, ref }) => check(hasRole, ref(atomicRoles['user.writer'])),
|
|
@@ -19,6 +19,7 @@ export declare const atomicRoles: {
|
|
|
19
19
|
readonly 'user-profile.reader': import("@astrale-os/sdk/schema").CoreNode;
|
|
20
20
|
readonly 'user-profile.self-writer': import("@astrale-os/sdk/schema").CoreNode;
|
|
21
21
|
readonly 'group-profile.reader': import("@astrale-os/sdk/schema").CoreNode;
|
|
22
|
+
readonly 'os.viewer': import("@astrale-os/sdk/schema").CoreNode;
|
|
22
23
|
};
|
|
23
24
|
export declare const shellRoles: {
|
|
24
25
|
readonly 'workspace.member': import("@astrale-os/sdk/schema").CoreNode;
|
|
@@ -31,6 +32,7 @@ export declare const shellRoles: {
|
|
|
31
32
|
readonly 'user-profile.reader': import("@astrale-os/sdk/schema").CoreNode;
|
|
32
33
|
readonly 'user-profile.self-writer': import("@astrale-os/sdk/schema").CoreNode;
|
|
33
34
|
readonly 'group-profile.reader': import("@astrale-os/sdk/schema").CoreNode;
|
|
35
|
+
readonly 'os.viewer': import("@astrale-os/sdk/schema").CoreNode;
|
|
34
36
|
};
|
|
35
37
|
/** The profile a person is given, by its name. */
|
|
36
38
|
export type ProfileName = 'member' | 'admin';
|
|
@@ -25,6 +25,7 @@ export const atomicRoles = {
|
|
|
25
25
|
'user-profile.reader': role('user-profile.reader', 'May read the name, email and image of every person.'),
|
|
26
26
|
'user-profile.self-writer': role('user-profile.self-writer', 'May change its own name and image, never its email.'),
|
|
27
27
|
'group-profile.reader': role('group-profile.reader', 'May read the name, description and image of every group.'),
|
|
28
|
+
'os.viewer': role('os.viewer', 'Opens the OS view and lists its applications.'),
|
|
28
29
|
};
|
|
29
30
|
export const shellRoles = { ...profileRoles, ...atomicRoles };
|
|
30
31
|
export const PROFILE_NAMES = ['member', 'admin'];
|
package/dist/schema/schema.d.ts
CHANGED
|
@@ -322,6 +322,20 @@ declare const classes: {
|
|
|
322
322
|
readonly mode: 'value';
|
|
323
323
|
readonly value: Record<string, never>;
|
|
324
324
|
}, "authorized", true, false, undefined, undefined>>;
|
|
325
|
+
readonly assignMembers: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
|
|
326
|
+
members: string[];
|
|
327
|
+
group: string;
|
|
328
|
+
}, {
|
|
329
|
+
readonly mode: 'value';
|
|
330
|
+
readonly value: Record<string, never>;
|
|
331
|
+
}, "authorized", true, false, undefined, undefined>>;
|
|
332
|
+
readonly unassignMembers: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
|
|
333
|
+
members: string[];
|
|
334
|
+
group: string;
|
|
335
|
+
}, {
|
|
336
|
+
readonly mode: 'value';
|
|
337
|
+
readonly value: Record<string, never>;
|
|
338
|
+
}, "authorized", true, false, undefined, undefined>>;
|
|
325
339
|
readonly provision: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
|
|
326
340
|
directory: string;
|
|
327
341
|
externalId: string;
|
|
@@ -365,7 +379,7 @@ declare const classes: {
|
|
|
365
379
|
readonly abstract: false;
|
|
366
380
|
readonly depth: 1;
|
|
367
381
|
readonly properties: "attributes" | "description" | "directory" | "externalId" | "frozen" | "icon" | "iss" | "name" | "sub";
|
|
368
|
-
readonly methods: "assignMember" | "create" | "delete" | "deprovision" | "provision" | "unassignMember" | "update";
|
|
382
|
+
readonly methods: "assignMember" | "assignMembers" | "create" | "delete" | "deprovision" | "provision" | "unassignMember" | "unassignMembers" | "update";
|
|
369
383
|
}[];
|
|
370
384
|
readonly outgoing: "0..1";
|
|
371
385
|
};
|
|
@@ -423,6 +437,13 @@ declare const classes: {
|
|
|
423
437
|
readonly description?: string;
|
|
424
438
|
readonly immutable?: import("@astrale-os/sdk/schema").PropertyImmutability;
|
|
425
439
|
}>;
|
|
440
|
+
email: import("@astrale-os/sdk/schema").AuthoredProperty<{
|
|
441
|
+
readonly type: "string";
|
|
442
|
+
readonly minLength: 3;
|
|
443
|
+
readonly maxLength: 320;
|
|
444
|
+
}, {
|
|
445
|
+
readonly required: false;
|
|
446
|
+
}>;
|
|
426
447
|
};
|
|
427
448
|
readonly policies: {
|
|
428
449
|
readonly read: ({ check, ref }: import("@astrale-os/sdk/schema").ClassRuleContext) => import("@astrale-os/sdk/schema").PolicyCheckExpression<import("@astrale-os/sdk/schema").PolicyRef, import("@astrale-os/sdk/schema").ClassRuleObject>;
|
|
@@ -467,7 +488,7 @@ declare const classes: {
|
|
|
467
488
|
readonly kind: 'node';
|
|
468
489
|
readonly abstract: false;
|
|
469
490
|
readonly depth: 0;
|
|
470
|
-
readonly properties: "execution" | "expiresAt" | "round" | "status";
|
|
491
|
+
readonly properties: "email" | "execution" | "expiresAt" | "round" | "status";
|
|
471
492
|
readonly methods: "accept" | "cancel" | "resend" | "send";
|
|
472
493
|
}[];
|
|
473
494
|
readonly outgoing: "0..1";
|
|
@@ -905,6 +926,20 @@ declare const input: {
|
|
|
905
926
|
readonly mode: 'value';
|
|
906
927
|
readonly value: Record<string, never>;
|
|
907
928
|
}, "authorized", true, false, undefined, undefined>>;
|
|
929
|
+
readonly assignMembers: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
|
|
930
|
+
members: string[];
|
|
931
|
+
group: string;
|
|
932
|
+
}, {
|
|
933
|
+
readonly mode: 'value';
|
|
934
|
+
readonly value: Record<string, never>;
|
|
935
|
+
}, "authorized", true, false, undefined, undefined>>;
|
|
936
|
+
readonly unassignMembers: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
|
|
937
|
+
members: string[];
|
|
938
|
+
group: string;
|
|
939
|
+
}, {
|
|
940
|
+
readonly mode: 'value';
|
|
941
|
+
readonly value: Record<string, never>;
|
|
942
|
+
}, "authorized", true, false, undefined, undefined>>;
|
|
908
943
|
readonly provision: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
|
|
909
944
|
directory: string;
|
|
910
945
|
externalId: string;
|
|
@@ -948,7 +983,7 @@ declare const input: {
|
|
|
948
983
|
readonly abstract: false;
|
|
949
984
|
readonly depth: 1;
|
|
950
985
|
readonly properties: "attributes" | "description" | "directory" | "externalId" | "frozen" | "icon" | "iss" | "name" | "sub";
|
|
951
|
-
readonly methods: "assignMember" | "create" | "delete" | "deprovision" | "provision" | "unassignMember" | "update";
|
|
986
|
+
readonly methods: "assignMember" | "assignMembers" | "create" | "delete" | "deprovision" | "provision" | "unassignMember" | "unassignMembers" | "update";
|
|
952
987
|
}[];
|
|
953
988
|
readonly outgoing: "0..1";
|
|
954
989
|
};
|
|
@@ -1006,6 +1041,13 @@ declare const input: {
|
|
|
1006
1041
|
readonly description?: string;
|
|
1007
1042
|
readonly immutable?: import("@astrale-os/sdk/schema").PropertyImmutability;
|
|
1008
1043
|
}>;
|
|
1044
|
+
email: import("@astrale-os/sdk/schema").AuthoredProperty<{
|
|
1045
|
+
readonly type: "string";
|
|
1046
|
+
readonly minLength: 3;
|
|
1047
|
+
readonly maxLength: 320;
|
|
1048
|
+
}, {
|
|
1049
|
+
readonly required: false;
|
|
1050
|
+
}>;
|
|
1009
1051
|
};
|
|
1010
1052
|
readonly policies: {
|
|
1011
1053
|
readonly read: ({ check, ref }: import("@astrale-os/sdk/schema").ClassRuleContext) => import("@astrale-os/sdk/schema").PolicyCheckExpression<import("@astrale-os/sdk/schema").PolicyRef, import("@astrale-os/sdk/schema").ClassRuleObject>;
|
|
@@ -1050,7 +1092,7 @@ declare const input: {
|
|
|
1050
1092
|
readonly kind: 'node';
|
|
1051
1093
|
readonly abstract: false;
|
|
1052
1094
|
readonly depth: 0;
|
|
1053
|
-
readonly properties: "execution" | "expiresAt" | "round" | "status";
|
|
1095
|
+
readonly properties: "email" | "execution" | "expiresAt" | "round" | "status";
|
|
1054
1096
|
readonly methods: "accept" | "cancel" | "resend" | "send";
|
|
1055
1097
|
}[];
|
|
1056
1098
|
readonly outgoing: "0..1";
|
|
@@ -1230,6 +1272,7 @@ declare const input: {
|
|
|
1230
1272
|
readonly 'user-profile.reader': import("@astrale-os/sdk/schema").CoreNode;
|
|
1231
1273
|
readonly 'user-profile.self-writer': import("@astrale-os/sdk/schema").CoreNode;
|
|
1232
1274
|
readonly 'group-profile.reader': import("@astrale-os/sdk/schema").CoreNode;
|
|
1275
|
+
readonly 'os.viewer': import("@astrale-os/sdk/schema").CoreNode;
|
|
1233
1276
|
readonly admin: import("@astrale-os/sdk/schema").CoreNode;
|
|
1234
1277
|
readonly member: import("@astrale-os/sdk/schema").CoreNode;
|
|
1235
1278
|
readonly applications: import("@astrale-os/sdk/schema").CoreNode;
|
|
@@ -1564,6 +1607,20 @@ export declare const ShellSchema: import("@astrale-os/sdk/schema").AuthoredSchem
|
|
|
1564
1607
|
readonly mode: 'value';
|
|
1565
1608
|
readonly value: Record<string, never>;
|
|
1566
1609
|
}, "authorized", true, false, undefined, undefined>>;
|
|
1610
|
+
readonly assignMembers: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
|
|
1611
|
+
members: string[];
|
|
1612
|
+
group: string;
|
|
1613
|
+
}, {
|
|
1614
|
+
readonly mode: 'value';
|
|
1615
|
+
readonly value: Record<string, never>;
|
|
1616
|
+
}, "authorized", true, false, undefined, undefined>>;
|
|
1617
|
+
readonly unassignMembers: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
|
|
1618
|
+
members: string[];
|
|
1619
|
+
group: string;
|
|
1620
|
+
}, {
|
|
1621
|
+
readonly mode: 'value';
|
|
1622
|
+
readonly value: Record<string, never>;
|
|
1623
|
+
}, "authorized", true, false, undefined, undefined>>;
|
|
1567
1624
|
readonly provision: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
|
|
1568
1625
|
directory: string;
|
|
1569
1626
|
externalId: string;
|
|
@@ -1607,7 +1664,7 @@ export declare const ShellSchema: import("@astrale-os/sdk/schema").AuthoredSchem
|
|
|
1607
1664
|
readonly abstract: false;
|
|
1608
1665
|
readonly depth: 1;
|
|
1609
1666
|
readonly properties: "attributes" | "description" | "directory" | "externalId" | "frozen" | "icon" | "iss" | "name" | "sub";
|
|
1610
|
-
readonly methods: "assignMember" | "create" | "delete" | "deprovision" | "provision" | "unassignMember" | "update";
|
|
1667
|
+
readonly methods: "assignMember" | "assignMembers" | "create" | "delete" | "deprovision" | "provision" | "unassignMember" | "unassignMembers" | "update";
|
|
1611
1668
|
}[];
|
|
1612
1669
|
readonly outgoing: "0..1";
|
|
1613
1670
|
};
|
|
@@ -1665,6 +1722,13 @@ export declare const ShellSchema: import("@astrale-os/sdk/schema").AuthoredSchem
|
|
|
1665
1722
|
readonly description?: string;
|
|
1666
1723
|
readonly immutable?: import("@astrale-os/sdk/schema").PropertyImmutability;
|
|
1667
1724
|
}>;
|
|
1725
|
+
email: import("@astrale-os/sdk/schema").AuthoredProperty<{
|
|
1726
|
+
readonly type: "string";
|
|
1727
|
+
readonly minLength: 3;
|
|
1728
|
+
readonly maxLength: 320;
|
|
1729
|
+
}, {
|
|
1730
|
+
readonly required: false;
|
|
1731
|
+
}>;
|
|
1668
1732
|
};
|
|
1669
1733
|
readonly policies: {
|
|
1670
1734
|
readonly read: ({ check, ref }: import("@astrale-os/sdk/schema").ClassRuleContext) => import("@astrale-os/sdk/schema").PolicyCheckExpression<import("@astrale-os/sdk/schema").PolicyRef, import("@astrale-os/sdk/schema").ClassRuleObject>;
|
|
@@ -1709,7 +1773,7 @@ export declare const ShellSchema: import("@astrale-os/sdk/schema").AuthoredSchem
|
|
|
1709
1773
|
readonly kind: 'node';
|
|
1710
1774
|
readonly abstract: false;
|
|
1711
1775
|
readonly depth: 0;
|
|
1712
|
-
readonly properties: "execution" | "expiresAt" | "round" | "status";
|
|
1776
|
+
readonly properties: "email" | "execution" | "expiresAt" | "round" | "status";
|
|
1713
1777
|
readonly methods: "accept" | "cancel" | "resend" | "send";
|
|
1714
1778
|
}[];
|
|
1715
1779
|
readonly outgoing: "0..1";
|
|
@@ -1889,6 +1953,7 @@ export declare const ShellSchema: import("@astrale-os/sdk/schema").AuthoredSchem
|
|
|
1889
1953
|
readonly 'user-profile.reader': import("@astrale-os/sdk/schema").CoreNode;
|
|
1890
1954
|
readonly 'user-profile.self-writer': import("@astrale-os/sdk/schema").CoreNode;
|
|
1891
1955
|
readonly 'group-profile.reader': import("@astrale-os/sdk/schema").CoreNode;
|
|
1956
|
+
readonly 'os.viewer': import("@astrale-os/sdk/schema").CoreNode;
|
|
1892
1957
|
readonly admin: import("@astrale-os/sdk/schema").CoreNode;
|
|
1893
1958
|
readonly member: import("@astrale-os/sdk/schema").CoreNode;
|
|
1894
1959
|
readonly applications: import("@astrale-os/sdk/schema").CoreNode;
|
|
@@ -2225,6 +2290,20 @@ export declare const S: schema.ResolvedDomainOf<import("@astrale-os/sdk/schema")
|
|
|
2225
2290
|
readonly mode: 'value';
|
|
2226
2291
|
readonly value: Record<string, never>;
|
|
2227
2292
|
}, "authorized", true, false, undefined, undefined>>;
|
|
2293
|
+
readonly assignMembers: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
|
|
2294
|
+
members: string[];
|
|
2295
|
+
group: string;
|
|
2296
|
+
}, {
|
|
2297
|
+
readonly mode: 'value';
|
|
2298
|
+
readonly value: Record<string, never>;
|
|
2299
|
+
}, "authorized", true, false, undefined, undefined>>;
|
|
2300
|
+
readonly unassignMembers: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
|
|
2301
|
+
members: string[];
|
|
2302
|
+
group: string;
|
|
2303
|
+
}, {
|
|
2304
|
+
readonly mode: 'value';
|
|
2305
|
+
readonly value: Record<string, never>;
|
|
2306
|
+
}, "authorized", true, false, undefined, undefined>>;
|
|
2228
2307
|
readonly provision: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<{
|
|
2229
2308
|
directory: string;
|
|
2230
2309
|
externalId: string;
|
|
@@ -2268,7 +2347,7 @@ export declare const S: schema.ResolvedDomainOf<import("@astrale-os/sdk/schema")
|
|
|
2268
2347
|
readonly abstract: false;
|
|
2269
2348
|
readonly depth: 1;
|
|
2270
2349
|
readonly properties: "attributes" | "description" | "directory" | "externalId" | "frozen" | "icon" | "iss" | "name" | "sub";
|
|
2271
|
-
readonly methods: "assignMember" | "create" | "delete" | "deprovision" | "provision" | "unassignMember" | "update";
|
|
2350
|
+
readonly methods: "assignMember" | "assignMembers" | "create" | "delete" | "deprovision" | "provision" | "unassignMember" | "unassignMembers" | "update";
|
|
2272
2351
|
}[];
|
|
2273
2352
|
readonly outgoing: "0..1";
|
|
2274
2353
|
};
|
|
@@ -2326,6 +2405,13 @@ export declare const S: schema.ResolvedDomainOf<import("@astrale-os/sdk/schema")
|
|
|
2326
2405
|
readonly description?: string;
|
|
2327
2406
|
readonly immutable?: import("@astrale-os/sdk/schema").PropertyImmutability;
|
|
2328
2407
|
}>;
|
|
2408
|
+
email: import("@astrale-os/sdk/schema").AuthoredProperty<{
|
|
2409
|
+
readonly type: "string";
|
|
2410
|
+
readonly minLength: 3;
|
|
2411
|
+
readonly maxLength: 320;
|
|
2412
|
+
}, {
|
|
2413
|
+
readonly required: false;
|
|
2414
|
+
}>;
|
|
2329
2415
|
};
|
|
2330
2416
|
readonly policies: {
|
|
2331
2417
|
readonly read: ({ check, ref }: import("@astrale-os/sdk/schema").ClassRuleContext) => import("@astrale-os/sdk/schema").PolicyCheckExpression<import("@astrale-os/sdk/schema").PolicyRef, import("@astrale-os/sdk/schema").ClassRuleObject>;
|
|
@@ -2370,7 +2456,7 @@ export declare const S: schema.ResolvedDomainOf<import("@astrale-os/sdk/schema")
|
|
|
2370
2456
|
readonly kind: 'node';
|
|
2371
2457
|
readonly abstract: false;
|
|
2372
2458
|
readonly depth: 0;
|
|
2373
|
-
readonly properties: "execution" | "expiresAt" | "round" | "status";
|
|
2459
|
+
readonly properties: "email" | "execution" | "expiresAt" | "round" | "status";
|
|
2374
2460
|
readonly methods: "accept" | "cancel" | "resend" | "send";
|
|
2375
2461
|
}[];
|
|
2376
2462
|
readonly outgoing: "0..1";
|
|
@@ -2550,6 +2636,7 @@ export declare const S: schema.ResolvedDomainOf<import("@astrale-os/sdk/schema")
|
|
|
2550
2636
|
readonly 'user-profile.reader': import("@astrale-os/sdk/schema").CoreNode;
|
|
2551
2637
|
readonly 'user-profile.self-writer': import("@astrale-os/sdk/schema").CoreNode;
|
|
2552
2638
|
readonly 'group-profile.reader': import("@astrale-os/sdk/schema").CoreNode;
|
|
2639
|
+
readonly 'os.viewer': import("@astrale-os/sdk/schema").CoreNode;
|
|
2553
2640
|
readonly admin: import("@astrale-os/sdk/schema").CoreNode;
|
|
2554
2641
|
readonly member: import("@astrale-os/sdk/schema").CoreNode;
|
|
2555
2642
|
readonly applications: import("@astrale-os/sdk/schema").CoreNode;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@astrale-domains/shell",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.8",
|
|
4
4
|
"description": "Astrale Shell Domain schema and remote product implementation",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"repository": {
|
|
@@ -58,7 +58,7 @@
|
|
|
58
58
|
},
|
|
59
59
|
"devDependencies": {
|
|
60
60
|
"@astrale-os/ox": "0.1.4",
|
|
61
|
-
"@astrale-os/sdk": "0.6.0-beta.
|
|
61
|
+
"@astrale-os/sdk": "0.6.0-beta.61",
|
|
62
62
|
"@astrale-os/shell-react": "0.6.0-beta.11",
|
|
63
63
|
"@astrale-os/ui": "1.0.0-beta.37",
|
|
64
64
|
"@astrale/typescript-config": "npm:@jsr/astrale__typescript-config@~2.0.0",
|