@astrale-domains/shell 0.1.0-beta.9 → 0.1.2

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.
Files changed (244) hide show
  1. package/README.md +264 -64
  2. package/dist/domain.d.ts +225 -0
  3. package/dist/domain.js +99 -0
  4. package/dist/functions/application/index.js +1 -0
  5. package/dist/functions/application/list-entrypoints.js +6 -0
  6. package/dist/functions/group/assign-member-to-group.js +4 -0
  7. package/dist/functions/group/change-group-membership.js +34 -0
  8. package/dist/functions/group/group-membership-errors.js +23 -0
  9. package/dist/functions/group/index.js +2 -0
  10. package/dist/functions/group/unassign-member-from-group.js +4 -0
  11. package/dist/functions/namespace/index.js +3 -0
  12. package/dist/functions/namespace/link.js +30 -0
  13. package/dist/functions/namespace/namespace-errors.js +28 -0
  14. package/dist/functions/namespace/namespace-name.js +13 -0
  15. package/dist/functions/namespace/rename.js +31 -0
  16. package/dist/functions/namespace/unlink.js +21 -0
  17. package/dist/functions/user/index.js +2 -0
  18. package/dist/functions/user/invite-user.js +39 -0
  19. package/dist/functions/user/record-profile.js +18 -0
  20. package/dist/functions/view-access/assign-views.js +86 -0
  21. package/dist/functions/view-access/index.js +1 -0
  22. package/dist/functions/view-access/view-access-errors.js +28 -0
  23. package/dist/index.d.ts +1 -3
  24. package/dist/index.js +1 -3
  25. package/dist/integrations/index.d.ts +1 -0
  26. package/dist/integrations/index.js +1 -0
  27. package/dist/integrations/integrations.d.ts +9 -0
  28. package/dist/integrations/integrations.js +2 -0
  29. package/dist/integrations/user-invitation/index.d.ts +4 -0
  30. package/dist/integrations/user-invitation/index.js +3 -0
  31. package/dist/integrations/user-invitation/invitation-request-failure.d.ts +5 -0
  32. package/dist/integrations/user-invitation/invitation-request-failure.js +9 -0
  33. package/dist/integrations/user-invitation/invite-user-request.d.ts +6 -0
  34. package/dist/integrations/user-invitation/invite-user-request.js +1 -0
  35. package/dist/integrations/user-invitation/request-user-invitation.d.ts +8 -0
  36. package/dist/integrations/user-invitation/request-user-invitation.js +9 -0
  37. package/dist/mutations/group/index.js +1 -1
  38. package/dist/mutations/group/set-group-membership.js +29 -0
  39. package/dist/mutations/namespace/alias-write.js +22 -0
  40. package/dist/mutations/namespace/index.js +3 -0
  41. package/dist/mutations/namespace/link-alias.js +15 -0
  42. package/dist/mutations/namespace/rename-alias.js +13 -0
  43. package/dist/mutations/namespace/unlink-alias.js +13 -0
  44. package/dist/mutations/user/index.js +1 -1
  45. package/dist/mutations/user/record-user-profile.js +13 -0
  46. package/dist/mutations/view-access/index.js +1 -0
  47. package/dist/mutations/view-access/set-view-access.js +29 -0
  48. package/dist/providers/admin-enrollment/create-admin-enrollment-provider.js +78 -0
  49. package/dist/providers/admin-enrollment/decode-admin-invitation-response.js +20 -0
  50. package/dist/providers/admin-enrollment/index.js +1 -0
  51. package/dist/providers/admin-enrollment/read-enrollment-response.js +34 -0
  52. package/dist/queries/application/index.js +1 -0
  53. package/dist/queries/application/read-installed-entrypoints.js +28 -0
  54. package/dist/queries/group/index.js +2 -0
  55. package/dist/queries/group/read-group-membership-endpoints.js +18 -0
  56. package/dist/queries/group/read-group-membership.js +35 -0
  57. package/dist/queries/namespace/index.js +2 -0
  58. package/dist/queries/namespace/read-designated-node.js +12 -0
  59. package/dist/queries/namespace/read-view-aliases.js +46 -0
  60. package/dist/queries/user/index.js +1 -5
  61. package/dist/queries/user/read-user-profile.js +9 -0
  62. package/dist/queries/view-access/index.js +1 -0
  63. package/dist/queries/view-access/read-view-access.js +35 -0
  64. package/dist/runtime.d.ts +1603 -6784
  65. package/dist/runtime.js +24 -14
  66. package/dist/schema/index.d.ts +7 -6
  67. package/dist/schema/index.js +6 -6
  68. package/dist/schema/modules/application/functions/index.d.ts +1 -0
  69. package/dist/schema/modules/application/functions/index.js +1 -0
  70. package/dist/schema/modules/application/functions/list-entrypoints.d.ts +15 -0
  71. package/dist/schema/modules/application/functions/list-entrypoints.js +16 -0
  72. package/dist/schema/modules/application/index.d.ts +2 -0
  73. package/dist/schema/modules/application/index.js +2 -0
  74. package/dist/schema/modules/application/types/entrypoint-entry.d.ts +8 -0
  75. package/dist/schema/modules/application/types/entrypoint-entry.js +7 -0
  76. package/dist/schema/modules/application/types/index.d.ts +1 -0
  77. package/dist/schema/modules/application/types/index.js +1 -0
  78. package/dist/schema/modules/group/classes/group.d.ts +24 -0
  79. package/dist/schema/modules/group/classes/group.js +11 -0
  80. package/dist/schema/modules/group/classes/index.d.ts +2 -0
  81. package/dist/schema/modules/group/classes/index.js +2 -0
  82. package/dist/schema/modules/group/classes/member-of-group.d.ts +30 -0
  83. package/dist/schema/modules/group/classes/member-of-group.js +12 -0
  84. package/dist/schema/modules/group/core/administrators-group.d.ts +1 -0
  85. package/dist/schema/modules/group/core/administrators-group.js +6 -0
  86. package/dist/schema/modules/group/core/applications-group.d.ts +1 -0
  87. package/dist/schema/modules/group/core/applications-group.js +6 -0
  88. package/dist/schema/modules/group/core/index.d.ts +3 -0
  89. package/dist/schema/modules/group/core/index.js +3 -0
  90. package/dist/schema/modules/group/core/members-group.d.ts +1 -0
  91. package/dist/schema/modules/group/core/members-group.js +6 -0
  92. package/dist/schema/modules/group/functions/assign-member-to-group.js +11 -0
  93. package/dist/schema/modules/group/functions/index.js +2 -0
  94. package/dist/schema/modules/group/functions/unassign-member-from-group.js +11 -0
  95. package/dist/schema/modules/group/index.d.ts +3 -0
  96. package/dist/schema/modules/group/index.js +3 -0
  97. package/dist/schema/modules/group/policies/belongs-to-group.d.ts +1 -0
  98. package/dist/schema/modules/group/policies/belongs-to-group.js +5 -0
  99. package/dist/schema/modules/group/policies/index.d.ts +1 -0
  100. package/dist/schema/modules/group/policies/index.js +1 -0
  101. package/dist/schema/modules/group/types/group-membership-input.js +8 -0
  102. package/dist/schema/modules/group/types/index.js +1 -0
  103. package/dist/schema/modules/namespace/classes/alias.d.ts +31 -0
  104. package/dist/schema/modules/namespace/classes/alias.js +13 -0
  105. package/dist/schema/modules/namespace/classes/index.d.ts +2 -0
  106. package/dist/schema/modules/namespace/classes/index.js +2 -0
  107. package/dist/schema/modules/namespace/classes/namespace.d.ts +31 -0
  108. package/dist/schema/modules/namespace/classes/namespace.js +10 -0
  109. package/dist/schema/modules/namespace/core/index.d.ts +1 -0
  110. package/dist/schema/modules/namespace/core/index.js +1 -0
  111. package/dist/schema/modules/namespace/core/views-namespace.d.ts +2 -0
  112. package/dist/schema/modules/namespace/core/views-namespace.js +7 -0
  113. package/dist/schema/modules/namespace/functions/index.js +3 -0
  114. package/dist/schema/modules/namespace/functions/link.js +11 -0
  115. package/dist/schema/modules/namespace/functions/rename.js +11 -0
  116. package/dist/schema/modules/namespace/functions/unlink.js +11 -0
  117. package/dist/schema/modules/namespace/index.d.ts +2 -0
  118. package/dist/schema/modules/namespace/index.js +2 -0
  119. package/dist/schema/modules/namespace/types/index.js +1 -0
  120. package/dist/schema/modules/namespace/types/namespace-name.js +7 -0
  121. package/dist/schema/modules/user/classes/index.d.ts +1 -0
  122. package/dist/schema/modules/user/classes/index.js +1 -0
  123. package/dist/schema/modules/user/classes/user.d.ts +34 -0
  124. package/dist/schema/modules/user/classes/user.js +21 -0
  125. package/dist/schema/modules/user/functions/index.js +2 -0
  126. package/dist/schema/modules/user/functions/invite-user.js +12 -0
  127. package/dist/schema/modules/user/functions/record-profile.js +14 -0
  128. package/dist/schema/modules/user/index.d.ts +2 -0
  129. package/dist/schema/modules/user/index.js +2 -0
  130. package/dist/schema/modules/user/types/index.d.ts +2 -0
  131. package/dist/schema/modules/user/types/index.js +2 -0
  132. package/dist/schema/modules/user/types/invitation-summary.d.ts +16 -0
  133. package/dist/schema/modules/user/types/invitation-summary.js +15 -0
  134. package/dist/schema/modules/user/types/user-profile.d.ts +7 -0
  135. package/dist/schema/modules/user/types/user-profile.js +7 -0
  136. package/dist/schema/modules/view-access/classes/index.d.ts +1 -0
  137. package/dist/schema/modules/view-access/classes/index.js +1 -0
  138. package/dist/schema/modules/view-access/classes/view-access.d.ts +32 -0
  139. package/dist/schema/modules/view-access/classes/view-access.js +18 -0
  140. package/dist/schema/modules/view-access/core/index.d.ts +1 -0
  141. package/dist/schema/modules/view-access/core/index.js +1 -0
  142. package/dist/schema/modules/view-access/core/view-only-group.d.ts +5 -0
  143. package/dist/schema/modules/view-access/core/view-only-group.js +10 -0
  144. package/dist/schema/modules/view-access/functions/assign-views.d.ts +16 -0
  145. package/dist/schema/modules/view-access/functions/assign-views.js +17 -0
  146. package/dist/schema/modules/view-access/functions/index.d.ts +1 -0
  147. package/dist/schema/modules/view-access/functions/index.js +1 -0
  148. package/dist/schema/modules/view-access/index.d.ts +3 -0
  149. package/dist/schema/modules/view-access/index.js +3 -0
  150. package/dist/schema/modules/view-access/types/index.js +1 -0
  151. package/dist/schema/modules/view-access/types/view-assignment.js +16 -0
  152. package/dist/schema/policies/administers-shell-class.js +11 -0
  153. package/dist/schema/policies/index.js +4 -0
  154. package/dist/schema/policies/is-self.js +5 -0
  155. package/dist/schema/policies/owns-class.js +7 -0
  156. package/dist/schema/policies/uses-function.js +5 -0
  157. package/dist/schema/schema.d.ts +833 -0
  158. package/dist/schema/schema.js +35 -0
  159. package/dist/schema/views/application-view.js +4 -0
  160. package/dist/schema/views/index.js +1 -0
  161. package/dist/utils/canonical-node-path/index.js +1 -0
  162. package/dist/utils/canonical-node-path/parse-canonical-node-path.js +8 -0
  163. package/package.json +49 -9
  164. package/dist/actions/index.js +0 -1
  165. package/dist/actions/user/index.js +0 -1
  166. package/dist/actions/user/resolve-home.js +0 -19
  167. package/dist/application.d.ts +0 -9809
  168. package/dist/application.js +0 -29
  169. package/dist/mutations/group/membership.js +0 -19
  170. package/dist/mutations/space/access.js +0 -23
  171. package/dist/mutations/space/default.js +0 -23
  172. package/dist/mutations/space/index.js +0 -2
  173. package/dist/mutations/user/repair.js +0 -83
  174. package/dist/queries/space/access.js +0 -12
  175. package/dist/queries/space/admin.js +0 -20
  176. package/dist/queries/space/index.js +0 -3
  177. package/dist/queries/space/member.js +0 -17
  178. package/dist/queries/user/groups.js +0 -17
  179. package/dist/queries/user/home.js +0 -21
  180. package/dist/queries/user/owned-spaces.js +0 -17
  181. package/dist/queries/user/profile.js +0 -14
  182. package/dist/queries/user/setup.js +0 -16
  183. package/dist/schema/domain/index.d.ts +0 -1665
  184. package/dist/schema/domain/index.js +0 -39
  185. package/dist/schema/group/class.d.ts +0 -323
  186. package/dist/schema/group/class.js +0 -7
  187. package/dist/schema/group/core.d.ts +0 -10
  188. package/dist/schema/group/core.js +0 -14
  189. package/dist/schema/group/index.d.ts +0 -6
  190. package/dist/schema/group/index.js +0 -6
  191. package/dist/schema/group/methods.d.ts +0 -13
  192. package/dist/schema/group/methods.js +0 -22
  193. package/dist/schema/group/policies.d.ts +0 -1
  194. package/dist/schema/group/policies.js +0 -6
  195. package/dist/schema/group/relationships.d.ts +0 -16
  196. package/dist/schema/group/relationships.js +0 -8
  197. package/dist/schema/group/view.d.ts +0 -1
  198. package/dist/schema/group/view.js +0 -6
  199. package/dist/schema/home/index.d.ts +0 -1
  200. package/dist/schema/home/index.js +0 -1
  201. package/dist/schema/home/view.d.ts +0 -1
  202. package/dist/schema/home/view.js +0 -4
  203. package/dist/schema/setup/functions.d.ts +0 -28
  204. package/dist/schema/setup/functions.js +0 -27
  205. package/dist/schema/setup/index.d.ts +0 -1
  206. package/dist/schema/setup/index.js +0 -1
  207. package/dist/schema/space/class.d.ts +0 -80
  208. package/dist/schema/space/class.js +0 -11
  209. package/dist/schema/space/core.d.ts +0 -8
  210. package/dist/schema/space/core.js +0 -15
  211. package/dist/schema/space/index.d.ts +0 -6
  212. package/dist/schema/space/index.js +0 -6
  213. package/dist/schema/space/methods.d.ts +0 -18
  214. package/dist/schema/space/methods.js +0 -32
  215. package/dist/schema/space/policies.d.ts +0 -4
  216. package/dist/schema/space/policies.js +0 -21
  217. package/dist/schema/space/relationships.d.ts +0 -64
  218. package/dist/schema/space/relationships.js +0 -24
  219. package/dist/schema/space/view.d.ts +0 -1
  220. package/dist/schema/space/view.js +0 -6
  221. package/dist/schema/user/class.d.ts +0 -278
  222. package/dist/schema/user/class.js +0 -11
  223. package/dist/schema/user/index.d.ts +0 -3
  224. package/dist/schema/user/index.js +0 -3
  225. package/dist/schema/user/methods.d.ts +0 -7
  226. package/dist/schema/user/methods.js +0 -11
  227. package/dist/schema/user/view.d.ts +0 -1
  228. package/dist/schema/user/view.js +0 -6
  229. package/dist/workflows/group/assign.js +0 -3
  230. package/dist/workflows/group/change.js +0 -31
  231. package/dist/workflows/group/index.js +0 -3
  232. package/dist/workflows/group/unassign.js +0 -3
  233. package/dist/workflows/index.js +0 -3
  234. package/dist/workflows/setup/admin.js +0 -3
  235. package/dist/workflows/setup/index.js +0 -5
  236. package/dist/workflows/setup/member.js +0 -3
  237. package/dist/workflows/setup/plan.js +0 -88
  238. package/dist/workflows/setup/provision.js +0 -57
  239. package/dist/workflows/setup/run.js +0 -74
  240. package/dist/workflows/space/access.js +0 -41
  241. package/dist/workflows/space/add.js +0 -3
  242. package/dist/workflows/space/default.js +0 -37
  243. package/dist/workflows/space/index.js +0 -4
  244. package/dist/workflows/space/remove.js +0 -3
@@ -1,29 +0,0 @@
1
- import { defineApplication, defineFrontend, external, requirements, } from '@astrale-os/sdk/application';
2
- import { K } from '@astrale-os/sdk/schema';
3
- import runtime from './runtime.js';
4
- import { ShellSchema } from './schema/index.js';
5
- export const frontend = defineFrontend({
6
- schema: ShellSchema,
7
- source: external('https://app.astrale.ai'),
8
- routes: {
9
- group: '/groups',
10
- home: '/',
11
- space: '/spaces',
12
- user: '/users',
13
- },
14
- entrypoint: 'home',
15
- });
16
- export const application = defineApplication({
17
- schema: ShellSchema,
18
- runtime,
19
- frontend,
20
- requirements: requirements({
21
- callables: [
22
- K.classes.Identity.static.methods.whois,
23
- K.functions.provision,
24
- K.functions.query,
25
- K.functions.mutate,
26
- ],
27
- }),
28
- });
29
- export default application;
@@ -1,19 +0,0 @@
1
- import { Path } from '@astrale-os/sdk/graph/path';
2
- import { defineMutation } from '@astrale-os/sdk/mutation';
3
- export const changeGroupMembership = defineMutation()((domain) => ({
4
- id: 'shell.group.membership',
5
- build(change, mutation) {
6
- mutation.expect.query(change.guard);
7
- const edge = {
8
- class: domain.classes.member_of_group,
9
- source: Path.parse(change.user),
10
- target: Path.id(change.group),
11
- };
12
- if (change.present)
13
- mutation.createEdge(edge);
14
- else
15
- mutation.deleteEdge(edge);
16
- },
17
- project: () => Object.freeze({ ok: true }),
18
- reject: (failure) => Object.freeze({ ok: false, code: failure.code, outcomeKnown: failure.outcomeKnown }),
19
- }));
@@ -1,23 +0,0 @@
1
- import { Path } from '@astrale-os/sdk/graph/path';
2
- import { defineMutation } from '@astrale-os/sdk/mutation';
3
- export const changeSpaceAccess = defineMutation()((domain) => ({
4
- id: 'shell.space.access',
5
- build(change, mutation) {
6
- mutation.expect.query(change.guards.member);
7
- mutation.expect.query(change.guards.admin);
8
- const source = Path.parse(change.user);
9
- const target = Path.id(change.space);
10
- const member = { class: domain.classes.member_of_space, source, target };
11
- const admin = { class: domain.classes.administers_space, source, target };
12
- if (change.removeMember)
13
- mutation.deleteEdge(member);
14
- if (change.removeAdmin)
15
- mutation.deleteEdge(admin);
16
- if (change.addMember)
17
- mutation.createEdge(member);
18
- if (change.addAdmin)
19
- mutation.createEdge(admin);
20
- },
21
- project: () => Object.freeze({ ok: true }),
22
- reject: (failure) => Object.freeze({ ok: false, code: failure.code, outcomeKnown: failure.outcomeKnown }),
23
- }));
@@ -1,23 +0,0 @@
1
- import { Path } from '@astrale-os/sdk/graph/path';
2
- import { defineMutation } from '@astrale-os/sdk/mutation';
3
- export const changeDefaultSpace = defineMutation()((domain) => ({
4
- id: 'shell.space.default',
5
- build(change, mutation) {
6
- mutation.expect.query(change.guard);
7
- const source = Path.id(change.user);
8
- if (change.previous !== undefined) {
9
- mutation.deleteEdge({
10
- class: domain.classes.default_space,
11
- source,
12
- target: Path.id(change.previous),
13
- });
14
- }
15
- mutation.createEdge({
16
- class: domain.classes.default_space,
17
- source,
18
- target: Path.id(change.next),
19
- });
20
- },
21
- project: () => Object.freeze({ ok: true }),
22
- reject: (failure) => Object.freeze({ ok: false, code: failure.code, outcomeKnown: failure.outcomeKnown }),
23
- }));
@@ -1,2 +0,0 @@
1
- export { changeSpaceAccess, } from './access.js';
2
- export { changeDefaultSpace, } from './default.js';
@@ -1,83 +0,0 @@
1
- import { LocalBinding } from '@astrale-os/sdk/graph';
2
- import { Path } from '@astrale-os/sdk/graph/path';
3
- import { defineMutation } from '@astrale-os/sdk/mutation';
4
- const personalSpace = LocalBinding('personalSpace');
5
- export const repairUser = defineMutation()((domain) => ({
6
- id: 'shell.user.repair',
7
- build(repair, mutation) {
8
- mutation.expect.query(repair.guards.home);
9
- mutation.expect.query(repair.guards.ownedSpaces);
10
- mutation.expect.query(repair.guards.groups);
11
- mutation.expect.node({
12
- node: Path.id(repair.userId),
13
- class: domain.classes.User,
14
- props: repair.currentDisplayName === undefined
15
- ? { absent: ['displayName'] }
16
- : { equals: { displayName: repair.currentDisplayName } },
17
- });
18
- if (repair.displayName !== undefined) {
19
- mutation.updateNode({
20
- node: Path.id(repair.userId),
21
- class: domain.classes.User,
22
- props: { set: { displayName: repair.displayName } },
23
- });
24
- }
25
- const home = repair.home.kind === 'create'
26
- ? mutation.createNode({
27
- as: personalSpace,
28
- class: domain.classes.Space,
29
- props: { name: repair.home.name },
30
- })
31
- : Path.id(repair.home.id);
32
- if (repair.home.kind === 'existing' && repair.home.name !== undefined) {
33
- mutation.expect.node({
34
- node: Path.id(repair.home.id),
35
- class: domain.classes.Space,
36
- props: { equals: { name: repair.home.currentName } },
37
- });
38
- mutation.updateNode({
39
- node: Path.id(repair.home.id),
40
- class: domain.classes.Space,
41
- props: { set: { name: repair.home.name } },
42
- });
43
- }
44
- if (repair.addOwnership) {
45
- mutation.createEdge({
46
- class: domain.classes.owns_space,
47
- source: Path.id(repair.userId),
48
- target: home,
49
- });
50
- }
51
- if (repair.addDefault) {
52
- mutation.createEdge({
53
- class: domain.classes.default_space,
54
- source: Path.id(repair.userId),
55
- target: home,
56
- });
57
- }
58
- if (repair.addMember) {
59
- mutation.createEdge({
60
- class: domain.classes.member_of_group,
61
- source: Path.id(repair.userId),
62
- target: Path.project(domain.core.nodes.member.ref),
63
- });
64
- }
65
- if (repair.addAdmin) {
66
- mutation.createEdge({
67
- class: domain.classes.member_of_group,
68
- source: Path.id(repair.userId),
69
- target: Path.project(domain.core.nodes.admin.ref),
70
- });
71
- }
72
- },
73
- project(result, repair) {
74
- const personalSpaceId = repair.home.kind === 'existing' ? repair.home.id : result.createdNodes[personalSpace];
75
- if (personalSpaceId === undefined) {
76
- throw new TypeError('Shell User repair omitted its created personal Space identity.');
77
- }
78
- return Object.freeze({ ok: true, personalSpaceId });
79
- },
80
- reject(failure) {
81
- return Object.freeze({ ok: false, code: failure.code, outcomeKnown: failure.outcomeKnown });
82
- },
83
- }));
@@ -1,12 +0,0 @@
1
- import { defineCompositeQuery } from '@astrale-os/sdk/query';
2
- import { observeAdminSpaces } from './admin.js';
3
- import { observeMemberSpaces } from './member.js';
4
- export const observeDirectSpaceAccess = defineCompositeQuery()(() => ({
5
- id: 'shell.space.direct-access',
6
- compose({ combine, query }, user) {
7
- return combine({
8
- admin: query('admin', observeAdminSpaces, user),
9
- member: query('member', observeMemberSpaces, user),
10
- });
11
- },
12
- }));
@@ -1,20 +0,0 @@
1
- import { Path } from '@astrale-os/sdk/graph/path';
2
- import { Query, defineQuery, queryResult } from '@astrale-os/sdk/query';
3
- export const observeAdminSpaces = defineQuery()((domain) => ({
4
- id: 'shell.space.admin-access',
5
- build(user) {
6
- const source = Query.from({ nodes: [Path.parse(user)] });
7
- const spaces = source.expand({
8
- via: [domain.classes.administers_space],
9
- direction: 'outgoing',
10
- });
11
- return spaces.select({ kind: 'nodes', binding: spaces.node, projection: { kind: 'value' } });
12
- },
13
- pagination: { maximumPages: 64 },
14
- project(pages, _user, { ast, complete }) {
15
- return Object.freeze({
16
- spaces: queryResult.completeNodeValues(pages, 'direct administered Spaces'),
17
- guard: Object.freeze({ query: ast, equals: complete }),
18
- });
19
- },
20
- }));
@@ -1,3 +0,0 @@
1
- export { observeAdminSpaces } from './admin.js';
2
- export { observeDirectSpaceAccess } from './access.js';
3
- export { observeMemberSpaces } from './member.js';
@@ -1,17 +0,0 @@
1
- import { Path } from '@astrale-os/sdk/graph/path';
2
- import { Query, defineQuery, queryResult } from '@astrale-os/sdk/query';
3
- export const observeMemberSpaces = defineQuery()((domain) => ({
4
- id: 'shell.space.member-access',
5
- build(user) {
6
- const source = Query.from({ nodes: [Path.parse(user)] });
7
- const spaces = source.expand({ via: [domain.classes.member_of_space], direction: 'outgoing' });
8
- return spaces.select({ kind: 'nodes', binding: spaces.node, projection: { kind: 'value' } });
9
- },
10
- pagination: { maximumPages: 64 },
11
- project(pages, _user, { ast, complete }) {
12
- return Object.freeze({
13
- spaces: queryResult.completeNodeValues(pages, 'direct member Spaces'),
14
- guard: Object.freeze({ query: ast, equals: complete }),
15
- });
16
- },
17
- }));
@@ -1,17 +0,0 @@
1
- import { Path } from '@astrale-os/sdk/graph/path';
2
- import { Query, defineQuery, queryResult } from '@astrale-os/sdk/query';
3
- export const observeUserGroups = defineQuery()((domain) => ({
4
- id: 'shell.user.groups',
5
- build(user) {
6
- const source = Query.from({ nodes: [Path.parse(user)] });
7
- const groups = source.expand({ via: [domain.classes.member_of_group], direction: 'outgoing' });
8
- return groups.select({ kind: 'nodes', binding: groups.node, projection: { kind: 'value' } });
9
- },
10
- pagination: { maximumPages: 64 },
11
- project(pages, _user, { ast, complete }) {
12
- return Object.freeze({
13
- groups: queryResult.completeNodeValues(pages, 'Shell User Groups'),
14
- guard: Object.freeze({ query: ast, equals: complete }),
15
- });
16
- },
17
- }));
@@ -1,21 +0,0 @@
1
- import { Path } from '@astrale-os/sdk/graph/path';
2
- import { Query, defineQuery, queryResult } from '@astrale-os/sdk/query';
3
- export const observeHome = defineQuery()((domain) => ({
4
- id: 'shell.user.home',
5
- build(user) {
6
- const source = Query.from({ nodes: [Path.parse(user)] });
7
- const spaces = source.expand({
8
- via: [domain.classes.default_space],
9
- direction: 'outgoing',
10
- });
11
- return spaces.select({ kind: 'nodes', binding: spaces.node, projection: { kind: 'value' } });
12
- },
13
- page: { size: 2 },
14
- pagination: { maximumPages: 2 },
15
- project(pages, _user, { ast, complete }) {
16
- return Object.freeze({
17
- spaces: queryResult.completeNodeValues(pages, 'Shell User home'),
18
- guard: Object.freeze({ query: ast, equals: complete }),
19
- });
20
- },
21
- }));
@@ -1,17 +0,0 @@
1
- import { Path } from '@astrale-os/sdk/graph/path';
2
- import { Query, defineQuery, queryResult } from '@astrale-os/sdk/query';
3
- export const observeOwnedSpaces = defineQuery()((domain) => ({
4
- id: 'shell.user.owned-spaces',
5
- build(user) {
6
- const source = Query.from({ nodes: [Path.parse(user)] });
7
- const spaces = source.expand({ via: [domain.classes.owns_space], direction: 'outgoing' });
8
- return spaces.select({ kind: 'nodes', binding: spaces.node, projection: { kind: 'value' } });
9
- },
10
- pagination: { maximumPages: 64 },
11
- project(pages, _user, { ast, complete }) {
12
- return Object.freeze({
13
- spaces: queryResult.completeNodeValues(pages, 'Shell User owned Spaces'),
14
- guard: Object.freeze({ query: ast, equals: complete }),
15
- });
16
- },
17
- }));
@@ -1,14 +0,0 @@
1
- import { Path } from '@astrale-os/sdk/graph/path';
2
- import { Query, defineQuery, queryResult } from '@astrale-os/sdk/query';
3
- export const readUserProfile = defineQuery()(() => ({
4
- id: 'shell.user.profile',
5
- build(user) {
6
- return Query.from({ nodes: [Path.parse(user)] }).select({
7
- kind: 'nodes',
8
- projection: { kind: 'value' },
9
- });
10
- },
11
- project(result) {
12
- return queryResult.exactlyOneNode(result, 'Shell User profile');
13
- },
14
- }));
@@ -1,16 +0,0 @@
1
- import { defineCompositeQuery } from '@astrale-os/sdk/query';
2
- import { observeUserGroups } from './groups.js';
3
- import { observeHome } from './home.js';
4
- import { observeOwnedSpaces } from './owned-spaces.js';
5
- import { readUserProfile } from './profile.js';
6
- export const observeUserSetup = defineCompositeQuery()(() => ({
7
- id: 'shell.user.setup',
8
- compose({ combine, query }, userId) {
9
- return combine({
10
- profile: query('profile', readUserProfile, userId),
11
- home: query('home', observeHome, userId),
12
- ownedSpaces: query('owned-spaces', observeOwnedSpaces, userId),
13
- groups: query('groups', observeUserGroups, userId),
14
- });
15
- },
16
- }));