@headless-lms/core 0.4.0 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (249) hide show
  1. package/dist/assets/events.d.ts +15 -9
  2. package/dist/assets/file-urls.d.ts +14 -7
  3. package/dist/assets/file-urls.js +15 -4
  4. package/dist/assets/file-urls.js.map +1 -1
  5. package/dist/assets/index.d.ts +4 -4
  6. package/dist/assets/index.js +3 -3
  7. package/dist/assets/ports.d.ts +34 -15
  8. package/dist/assets/service.d.ts +30 -14
  9. package/dist/assets/service.js +233 -54
  10. package/dist/assets/service.js.map +1 -1
  11. package/dist/automations/actions.js.map +1 -1
  12. package/dist/automations/catalog.js +68 -3
  13. package/dist/automations/catalog.js.map +1 -1
  14. package/dist/automations/community-derivations.js +16 -16
  15. package/dist/automations/community-derivations.js.map +1 -1
  16. package/dist/automations/community-mail.d.ts +34 -4
  17. package/dist/automations/community-mail.js +32 -4
  18. package/dist/automations/community-mail.js.map +1 -1
  19. package/dist/automations/event-permissions.d.ts +12 -0
  20. package/dist/automations/event-permissions.js +38 -0
  21. package/dist/automations/event-permissions.js.map +1 -0
  22. package/dist/automations/index.d.ts +2 -1
  23. package/dist/automations/index.js +2 -1
  24. package/dist/automations/notifications/applicable.d.ts +8 -0
  25. package/dist/automations/notifications/applicable.js +12 -0
  26. package/dist/automations/notifications/applicable.js.map +1 -0
  27. package/dist/automations/notifications/debounce.js +1 -1
  28. package/dist/automations/notifications/debounce.js.map +1 -1
  29. package/dist/automations/notifications/defaults.js +33 -3
  30. package/dist/automations/notifications/defaults.js.map +1 -1
  31. package/dist/automations/notifications/processor.js +1 -1
  32. package/dist/automations/notifications/processor.js.map +1 -1
  33. package/dist/automations/notifications/rules/content.js +60 -3
  34. package/dist/automations/notifications/rules/content.js.map +1 -1
  35. package/dist/automations/notifications/rules/discussion.js +29 -29
  36. package/dist/automations/notifications/rules/discussion.js.map +1 -1
  37. package/dist/automations/notifications/rules/entitlements.js +36 -9
  38. package/dist/automations/notifications/rules/entitlements.js.map +1 -1
  39. package/dist/automations/notifications/rules/events.d.ts +9 -0
  40. package/dist/automations/notifications/rules/events.js +27 -0
  41. package/dist/automations/notifications/rules/events.js.map +1 -0
  42. package/dist/automations/notifications/rules/organizations.js +17 -10
  43. package/dist/automations/notifications/rules/organizations.js.map +1 -1
  44. package/dist/automations/notifications/rules/recipients.js +0 -1
  45. package/dist/automations/notifications/rules/recipients.js.map +1 -1
  46. package/dist/automations/notifications/service.d.ts +8 -6
  47. package/dist/automations/notifications/service.js +12 -12
  48. package/dist/automations/notifications/service.js.map +1 -1
  49. package/dist/automations/notifications/types.js +94 -7
  50. package/dist/automations/notifications/types.js.map +1 -1
  51. package/dist/automations/ports.d.ts +30 -31
  52. package/dist/automations/service.d.ts +20 -17
  53. package/dist/automations/service.js +90 -61
  54. package/dist/automations/service.js.map +1 -1
  55. package/dist/content/event-sight.d.ts +11 -0
  56. package/dist/content/event-sight.js +11 -0
  57. package/dist/content/event-sight.js.map +1 -0
  58. package/dist/content/events.d.ts +465 -88
  59. package/dist/content/events.js +34 -1
  60. package/dist/content/events.js.map +1 -1
  61. package/dist/content/index.d.ts +6 -4
  62. package/dist/content/index.js +3 -1
  63. package/dist/content/jobs.d.ts +16 -0
  64. package/dist/content/jobs.js +37 -0
  65. package/dist/content/jobs.js.map +1 -0
  66. package/dist/content/model.d.ts +2 -2
  67. package/dist/content/notification-categories.d.ts +5 -4
  68. package/dist/content/notification-categories.js +15 -6
  69. package/dist/content/notification-categories.js.map +1 -1
  70. package/dist/content/ports.d.ts +113 -68
  71. package/dist/content/service.d.ts +103 -67
  72. package/dist/content/service.js +739 -152
  73. package/dist/content/service.js.map +1 -1
  74. package/dist/content/titles.d.ts +6 -3
  75. package/dist/content/titles.js +37 -24
  76. package/dist/content/titles.js.map +1 -1
  77. package/dist/content/types.d.ts +2 -2
  78. package/dist/discussion/authors.d.ts +4 -2
  79. package/dist/discussion/authors.js +9 -5
  80. package/dist/discussion/authors.js.map +1 -1
  81. package/dist/discussion/chats.d.ts +56 -37
  82. package/dist/discussion/chats.js +392 -160
  83. package/dist/discussion/chats.js.map +1 -1
  84. package/dist/discussion/events.d.ts +85 -47
  85. package/dist/discussion/events.js +41 -3
  86. package/dist/discussion/events.js.map +1 -1
  87. package/dist/discussion/index.d.ts +8 -5
  88. package/dist/discussion/index.js +5 -3
  89. package/dist/discussion/live.d.ts +106 -0
  90. package/dist/discussion/live.js +642 -0
  91. package/dist/discussion/live.js.map +1 -0
  92. package/dist/discussion/mentions.js +2 -2
  93. package/dist/discussion/mentions.js.map +1 -1
  94. package/dist/discussion/ports.d.ts +182 -100
  95. package/dist/discussion/ports.js.map +1 -1
  96. package/dist/discussion/posts.d.ts +45 -39
  97. package/dist/discussion/posts.js +266 -152
  98. package/dist/discussion/posts.js.map +1 -1
  99. package/dist/discussion/rules.d.ts +18 -0
  100. package/dist/discussion/rules.js +22 -0
  101. package/dist/discussion/rules.js.map +1 -0
  102. package/dist/discussion/service.d.ts +37 -31
  103. package/dist/discussion/service.js +250 -186
  104. package/dist/discussion/service.js.map +1 -1
  105. package/dist/discussion/subscriptions.d.ts +8 -8
  106. package/dist/discussion/subscriptions.js +28 -12
  107. package/dist/discussion/subscriptions.js.map +1 -1
  108. package/dist/discussion/titles.d.ts +4 -2
  109. package/dist/discussion/titles.js +27 -13
  110. package/dist/discussion/titles.js.map +1 -1
  111. package/dist/entitlements/events.d.ts +58 -58
  112. package/dist/entitlements/index.d.ts +4 -4
  113. package/dist/entitlements/index.js +2 -2
  114. package/dist/entitlements/model.d.ts +2 -2
  115. package/dist/entitlements/ports.d.ts +65 -39
  116. package/dist/entitlements/rules.d.ts +3 -6
  117. package/dist/entitlements/rules.js +5 -10
  118. package/dist/entitlements/rules.js.map +1 -1
  119. package/dist/entitlements/service.d.ts +40 -28
  120. package/dist/entitlements/service.js +369 -162
  121. package/dist/entitlements/service.js.map +1 -1
  122. package/dist/identity/devices.d.ts +3 -3
  123. package/dist/identity/devices.js +6 -4
  124. package/dist/identity/devices.js.map +1 -1
  125. package/dist/identity/index.d.ts +2 -2
  126. package/dist/identity/index.js +2 -2
  127. package/dist/identity/notification-settings.d.ts +1 -1
  128. package/dist/identity/notification-settings.js +2 -1
  129. package/dist/identity/notification-settings.js.map +1 -1
  130. package/dist/identity/ports.d.ts +7 -7
  131. package/dist/identity/service.d.ts +8 -7
  132. package/dist/identity/service.js +16 -12
  133. package/dist/identity/service.js.map +1 -1
  134. package/dist/integrations/events.d.ts +3 -3
  135. package/dist/integrations/ports.d.ts +9 -8
  136. package/dist/integrations/service.d.ts +9 -8
  137. package/dist/integrations/service.js +31 -14
  138. package/dist/integrations/service.js.map +1 -1
  139. package/dist/organizations/default-roles.d.ts +22 -0
  140. package/dist/organizations/default-roles.js +89 -0
  141. package/dist/organizations/default-roles.js.map +1 -0
  142. package/dist/organizations/effective-permissions.d.ts +47 -0
  143. package/dist/organizations/effective-permissions.js +118 -0
  144. package/dist/organizations/effective-permissions.js.map +1 -0
  145. package/dist/organizations/events.d.ts +326 -181
  146. package/dist/organizations/events.js +90 -18
  147. package/dist/organizations/events.js.map +1 -1
  148. package/dist/organizations/index.d.ts +14 -10
  149. package/dist/organizations/index.js +7 -3
  150. package/dist/organizations/members.d.ts +66 -8
  151. package/dist/organizations/members.js.map +1 -1
  152. package/dist/organizations/model.d.ts +2 -2
  153. package/dist/organizations/notification-catalog.d.ts +31 -0
  154. package/dist/organizations/notification-catalog.js +32 -0
  155. package/dist/organizations/notification-catalog.js.map +1 -0
  156. package/dist/organizations/notification-categories.d.ts +6 -4
  157. package/dist/organizations/notification-categories.js +25 -10
  158. package/dist/organizations/notification-categories.js.map +1 -1
  159. package/dist/organizations/org-roles.d.ts +33 -0
  160. package/dist/organizations/org-roles.js +49 -0
  161. package/dist/organizations/org-roles.js.map +1 -0
  162. package/dist/organizations/permissions.d.ts +311 -0
  163. package/dist/organizations/permissions.js +327 -0
  164. package/dist/organizations/permissions.js.map +1 -0
  165. package/dist/organizations/ports.d.ts +187 -65
  166. package/dist/organizations/service.d.ts +102 -35
  167. package/dist/organizations/service.js +1254 -327
  168. package/dist/organizations/service.js.map +1 -1
  169. package/dist/organizations/testing.d.ts +18 -0
  170. package/dist/organizations/testing.js +37 -0
  171. package/dist/organizations/testing.js.map +1 -0
  172. package/dist/organizations/types.d.ts +5 -16
  173. package/dist/progress/events.d.ts +14 -14
  174. package/dist/progress/index.d.ts +2 -2
  175. package/dist/progress/ports.d.ts +11 -3
  176. package/dist/progress/service.d.ts +6 -5
  177. package/dist/progress/service.js +21 -6
  178. package/dist/progress/service.js.map +1 -1
  179. package/dist/reporting/admin/index.d.ts +6 -4
  180. package/dist/reporting/admin/model.d.ts +36 -3
  181. package/dist/reporting/admin/ports.d.ts +39 -14
  182. package/dist/reporting/admin/service.d.ts +32 -11
  183. package/dist/reporting/admin/service.js +102 -18
  184. package/dist/reporting/admin/service.js.map +1 -1
  185. package/dist/reporting/events/index.d.ts +27 -0
  186. package/dist/reporting/events/index.js +20 -0
  187. package/dist/reporting/events/index.js.map +1 -0
  188. package/dist/reporting/member/calendar.d.ts +11 -0
  189. package/dist/reporting/member/calendar.js +75 -0
  190. package/dist/reporting/member/calendar.js.map +1 -0
  191. package/dist/reporting/member/index.d.ts +3 -2
  192. package/dist/reporting/member/model.d.ts +29 -5
  193. package/dist/reporting/member/ports.d.ts +49 -29
  194. package/dist/reporting/member/service.d.ts +57 -29
  195. package/dist/reporting/member/service.js +345 -114
  196. package/dist/reporting/member/service.js.map +1 -1
  197. package/dist/shared/actor.d.ts +23 -3
  198. package/dist/shared/errors.d.ts +2 -1
  199. package/dist/shared/errors.js +3 -1
  200. package/dist/shared/errors.js.map +1 -1
  201. package/dist/shared/id.d.ts +4 -0
  202. package/dist/shared/id.js +4 -0
  203. package/dist/shared/id.js.map +1 -1
  204. package/dist/shared/logger.d.ts +2 -1
  205. package/dist/shared/logger.js +10 -1
  206. package/dist/shared/logger.js.map +1 -1
  207. package/dist/shared/ports.d.ts +25 -5
  208. package/dist/types/content.d.ts +2 -2
  209. package/dist/types/discussion.d.ts +4 -5
  210. package/dist/types/email-templates.d.ts +22 -3
  211. package/dist/types/entitlements.d.ts +2 -2
  212. package/dist/types/identity.d.ts +13 -16
  213. package/dist/types/index.d.ts +9 -9
  214. package/dist/types/index.js +2 -1
  215. package/dist/types/notifications.d.ts +4 -4
  216. package/dist/types/organizations.d.ts +3 -2
  217. package/dist/types/ports.d.ts +8 -1
  218. package/dist/types/ports.js +7 -1
  219. package/dist/types/ports.js.map +1 -0
  220. package/dist/types/schemas/assets.d.ts +5 -5
  221. package/dist/types/schemas/assets.js +4 -3
  222. package/dist/types/schemas/assets.js.map +1 -1
  223. package/dist/types/schemas/content.d.ts +599 -13
  224. package/dist/types/schemas/content.js +219 -8
  225. package/dist/types/schemas/content.js.map +1 -1
  226. package/dist/types/schemas/discussion.d.ts +280 -57
  227. package/dist/types/schemas/discussion.js +77 -3
  228. package/dist/types/schemas/discussion.js.map +1 -1
  229. package/dist/types/schemas/entitlements.d.ts +21 -8
  230. package/dist/types/schemas/entitlements.js +11 -4
  231. package/dist/types/schemas/entitlements.js.map +1 -1
  232. package/dist/types/schemas/index.d.ts +5 -5
  233. package/dist/types/schemas/index.js +5 -5
  234. package/dist/types/schemas/notifications.d.ts +11 -10
  235. package/dist/types/schemas/notifications.js +3 -2
  236. package/dist/types/schemas/notifications.js.map +1 -1
  237. package/dist/types/schemas/organizations.d.ts +99 -60
  238. package/dist/types/schemas/organizations.js +80 -27
  239. package/dist/types/schemas/organizations.js.map +1 -1
  240. package/dist/types/schemas/progress.d.ts +3 -4
  241. package/dist/types/schemas/progress.js +0 -1
  242. package/dist/types/schemas/progress.js.map +1 -1
  243. package/package.json +1 -1
  244. package/dist/organizations/access-scopes.d.ts +0 -19
  245. package/dist/organizations/access-scopes.js +0 -89
  246. package/dist/organizations/access-scopes.js.map +0 -1
  247. package/dist/organizations/roles.d.ts +0 -19
  248. package/dist/organizations/roles.js +0 -82
  249. package/dist/organizations/roles.js.map +0 -1
@@ -2,17 +2,17 @@ import { Page } from "../types/shared.js";
2
2
  import { Logger } from "../types/ports.js";
3
3
  import { ContentType, Space } from "../types/schemas/content.js";
4
4
  import { Entitlement, EntitlementsQuery, GrantEntitlementInput, SpaceMember } from "../types/schemas/entitlements.js";
5
- import "../shared/ports.js";
6
5
  import { Actor } from "../shared/actor.js";
7
- import { CommunityReader } from "../content/ports.js";
6
+ import "../shared/ports.js";
8
7
  import "../content/index.js";
9
8
  import "./model.js";
10
- import { EntitlementsRepository, EntitlementsService, EntitlementsUnitOfWork, GrantTarget, OpenableSpace } from "./ports.js";
9
+ import { ContentReader, EntitlementsRepository, EntitlementsService, EntitlementsUnitOfWork, GrantTarget, OpenableSpace, PermissionHolders, RevokeGrantInput } from "./ports.js";
11
10
  //#region src/entitlements/service.d.ts
12
11
  type EntitlementsServiceParams = {
13
12
  /** Read-only access (list) — runs outside any transaction. */
14
13
  repo: EntitlementsRepository;
15
- content: CommunityReader;
14
+ content: ContentReader;
15
+ permissions: PermissionHolders;
16
16
  /** Atomic write scope: tx-bound repo + outbox appender. */
17
17
  uow: EntitlementsUnitOfWork;
18
18
  logger?: Logger;
@@ -20,52 +20,64 @@ type EntitlementsServiceParams = {
20
20
  declare class EntitlementsServiceImpl implements EntitlementsService {
21
21
  private readonly repo;
22
22
  private readonly content;
23
+ private readonly permissions;
23
24
  private readonly uow;
24
25
  private readonly logger;
25
26
  constructor(params: EntitlementsServiceParams);
26
- list(orgId: string, query: EntitlementsQuery): Promise<Page<Entitlement>>;
27
- grant(orgId: string, input: GrantEntitlementInput): Promise<Entitlement>;
28
- ensureGrant(orgId: string, input: GrantEntitlementInput): Promise<Entitlement>;
29
- setStatus(orgId: string, id: string, status: 'active' | 'revoked'): Promise<Entitlement | null>;
27
+ list(query: EntitlementsQuery, actor: Actor): Promise<Page<Entitlement>>;
28
+ grant(input: GrantEntitlementInput, actor: Actor): Promise<Entitlement>;
29
+ revoke(input: RevokeGrantInput, actor: Actor): Promise<Entitlement>;
30
+ private grantEvent;
31
+ private assertCanRegister;
32
+ private requireAttendeeManager;
33
+ private assertPlace;
34
+ private sourceOf;
35
+ private actorMetadata;
30
36
  hasAccess(orgId: string, orgUserId: string, contentId: string): Promise<boolean>;
31
37
  listAccessibleContent(orgId: string, orgUserId: string, type?: ContentType): Promise<string[]>;
32
- isCommunityMember(orgId: string, actor: Actor, communityId: string): Promise<boolean>;
33
- canOpenSpace(orgId: string, actor: Actor, spaceId: string): Promise<boolean>;
34
- canOpen(orgId: string, actor: Actor, space: OpenableSpace): Promise<boolean>;
35
- spaceStandings(orgId: string, actor: Actor, communityId: string): Promise<Record<string, SpaceMember['status']>>;
36
- openSpacesFor(orgId: string, actor: Actor, communityId: string): Promise<Space[]>;
37
- openSpaceIds(orgId: string, actor: Actor, communityId: string): Promise<string[]>;
38
+ holdsAnyGrant(orgId: string, orgUserId: string): Promise<boolean>;
39
+ opensEverySpace(actor: Actor, communityId: string): Promise<boolean>;
40
+ isCommunityMember(communityId: string, actor: Actor): Promise<boolean>;
41
+ canOpenSpace(spaceId: string, actor: Actor): Promise<boolean>;
42
+ canOpen(space: OpenableSpace, actor: Actor): Promise<boolean>;
43
+ spaceStandings(communityId: string, actor: Actor): Promise<Record<string, SpaceMember['status']>>;
44
+ openSpacesFor(communityId: string, actor: Actor): Promise<Space[]>;
45
+ openSpaceIds(communityId: string, actor: Actor): Promise<string[]>;
38
46
  communityMembersAmong(orgId: string, communityId: string, orgUserIds: string[]): Promise<string[]>;
39
47
  spaceOpenersAmong(orgId: string, spaceId: string, orgUserIds: string[]): Promise<string[]>;
40
48
  spaceOpeners(orgId: string, spaceId: string): Promise<string[]>;
41
49
  communitiesOpenedBy(orgId: string, grant: GrantTarget): Promise<string[]>;
42
50
  communityModeratorIds(orgId: string, communityId: string): Promise<string[]>;
43
51
  communityIdsOpenedFor(orgId: string, orgUserId: string): Promise<string[]>;
44
- openCommunityIds(orgId: string, actor: Actor): Promise<string[]>;
52
+ openCommunityIds(actor: Actor): Promise<string[]>;
45
53
  communityMemberIds(orgId: string, communityId: string): Promise<string[]>;
46
- contentHolderIds(orgId: string, contentId: string): Promise<string[]>;
54
+ grantedOrgUserIds(orgId: string, contentId: string): Promise<string[]>;
47
55
  countActiveSpaceMembers(orgId: string, spaceId: string): Promise<number>;
48
- requestJoin(orgId: string, actor: Actor, communityId: string, spaceId: string): Promise<SpaceMember>;
49
- invite(orgId: string, actor: Actor, communityId: string, spaceId: string, orgUserId: string): Promise<SpaceMember>;
50
- addSpaceMember(orgId: string, actor: Actor, communityId: string, spaceId: string, orgUserId: string): Promise<SpaceMember>;
51
- accept(orgId: string, actor: Actor, communityId: string, spaceId: string): Promise<SpaceMember>;
52
- approve(orgId: string, actor: Actor, communityId: string, spaceId: string, orgUserId: string): Promise<SpaceMember>;
53
- decline(orgId: string, actor: Actor, communityId: string, spaceId: string, orgUserId: string): Promise<SpaceMember>;
54
- refuse(orgId: string, actor: Actor, communityId: string, spaceId: string): Promise<SpaceMember>;
55
- leave(orgId: string, actor: Actor, communityId: string, spaceId: string): Promise<SpaceMember>;
56
- remove(orgId: string, actor: Actor, communityId: string, spaceId: string, orgUserId: string): Promise<SpaceMember>;
57
- listSpaceMembers(orgId: string, actor: Actor, communityId: string, spaceId: string, query: {
56
+ everySpaceOpeners(orgId: string, communityId: string): Promise<string[]>;
57
+ requestJoin(communityId: string, spaceId: string, actor: Actor): Promise<SpaceMember>;
58
+ invite(communityId: string, spaceId: string, orgUserId: string, actor: Actor): Promise<SpaceMember>;
59
+ addSpaceMember(communityId: string, spaceId: string, orgUserId: string, actor: Actor): Promise<SpaceMember>;
60
+ accept(communityId: string, spaceId: string, actor: Actor): Promise<SpaceMember>;
61
+ approve(communityId: string, spaceId: string, orgUserId: string, actor: Actor): Promise<SpaceMember>;
62
+ decline(communityId: string, spaceId: string, orgUserId: string, actor: Actor): Promise<SpaceMember>;
63
+ refuse(communityId: string, spaceId: string, actor: Actor): Promise<SpaceMember>;
64
+ leave(communityId: string, spaceId: string, actor: Actor): Promise<SpaceMember>;
65
+ remove(communityId: string, spaceId: string, orgUserId: string, actor: Actor): Promise<SpaceMember>;
66
+ listSpaceMembers(communityId: string, spaceId: string, query: {
58
67
  page: number;
59
68
  pageSize: number;
60
- }): Promise<Page<SpaceMember>>;
69
+ }, actor: Actor): Promise<Page<SpaceMember>>;
61
70
  expireDueGrants(now: Date): Promise<void>;
62
71
  private expireDueIn;
72
+ private system;
73
+ private teamOf;
74
+ private standingOf;
63
75
  private requireSpaceIn;
64
76
  private requireVisibleSpaceIn;
65
77
  private assertHasMembers;
66
78
  private assertRule;
67
79
  private assertHolder;
68
- private assertGrant;
80
+ private assertMember;
69
81
  private assertHolds;
70
82
  private assertCanManage;
71
83
  private accessOf;