@headless-lms/core 0.3.0 → 0.5.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 (307) hide show
  1. package/dist/assets/events.d.ts +24 -18
  2. package/dist/assets/file-urls.d.ts +11 -7
  3. package/dist/assets/file-urls.js +14 -4
  4. package/dist/assets/file-urls.js.map +1 -1
  5. package/dist/assets/index.d.ts +5 -4
  6. package/dist/assets/index.js +4 -3
  7. package/dist/assets/jobs.d.ts +15 -0
  8. package/dist/assets/jobs.js +30 -0
  9. package/dist/assets/jobs.js.map +1 -0
  10. package/dist/assets/ports.d.ts +37 -17
  11. package/dist/assets/service.d.ts +30 -15
  12. package/dist/assets/service.js +229 -59
  13. package/dist/assets/service.js.map +1 -1
  14. package/dist/automations/actions.js +2 -63
  15. package/dist/automations/actions.js.map +1 -1
  16. package/dist/automations/catalog.d.ts +1 -2
  17. package/dist/automations/catalog.js +137 -65
  18. package/dist/automations/catalog.js.map +1 -1
  19. package/dist/automations/community-derivations.js +20 -20
  20. package/dist/automations/community-derivations.js.map +1 -1
  21. package/dist/automations/community-mail.d.ts +36 -20
  22. package/dist/automations/community-mail.js +32 -24
  23. package/dist/automations/community-mail.js.map +1 -1
  24. package/dist/automations/event-permissions.d.ts +12 -0
  25. package/dist/automations/event-permissions.js +38 -0
  26. package/dist/automations/event-permissions.js.map +1 -0
  27. package/dist/automations/events.d.ts +0 -10
  28. package/dist/automations/index.d.ts +12 -4
  29. package/dist/automations/index.js +9 -1
  30. package/dist/automations/notifications/applicable.d.ts +8 -0
  31. package/dist/automations/notifications/applicable.js +12 -0
  32. package/dist/automations/notifications/applicable.js.map +1 -0
  33. package/dist/automations/notifications/debounce.d.ts +25 -0
  34. package/dist/automations/notifications/debounce.js +93 -0
  35. package/dist/automations/notifications/debounce.js.map +1 -0
  36. package/dist/automations/notifications/defaults.d.ts +8 -0
  37. package/dist/automations/notifications/defaults.js +346 -0
  38. package/dist/automations/notifications/defaults.js.map +1 -0
  39. package/dist/automations/notifications/delivery.d.ts +28 -0
  40. package/dist/automations/notifications/delivery.js +88 -0
  41. package/dist/automations/notifications/delivery.js.map +1 -0
  42. package/dist/automations/notifications/processor.d.ts +64 -0
  43. package/dist/automations/notifications/processor.js +270 -0
  44. package/dist/automations/notifications/processor.js.map +1 -0
  45. package/dist/automations/notifications/rules/content.d.ts +6 -0
  46. package/dist/automations/notifications/rules/content.js +96 -0
  47. package/dist/automations/notifications/rules/content.js.map +1 -0
  48. package/dist/automations/notifications/rules/discussion.d.ts +7 -0
  49. package/dist/automations/notifications/rules/discussion.js +678 -0
  50. package/dist/automations/notifications/rules/discussion.js.map +1 -0
  51. package/dist/automations/notifications/rules/entitlements.d.ts +6 -0
  52. package/dist/automations/notifications/rules/entitlements.js +276 -0
  53. package/dist/automations/notifications/rules/entitlements.js.map +1 -0
  54. package/dist/automations/notifications/rules/events.d.ts +9 -0
  55. package/dist/automations/notifications/rules/events.js +27 -0
  56. package/dist/automations/notifications/rules/events.js.map +1 -0
  57. package/dist/automations/notifications/rules/index.d.ts +6 -0
  58. package/dist/automations/notifications/rules/index.js +15 -0
  59. package/dist/automations/notifications/rules/index.js.map +1 -0
  60. package/dist/automations/notifications/rules/organizations.d.ts +6 -0
  61. package/dist/automations/notifications/rules/organizations.js +35 -0
  62. package/dist/automations/notifications/rules/organizations.js.map +1 -0
  63. package/dist/automations/notifications/rules/recipients.d.ts +32 -0
  64. package/dist/automations/notifications/rules/recipients.js +98 -0
  65. package/dist/automations/notifications/rules/recipients.js.map +1 -0
  66. package/dist/automations/notifications/service.d.ts +29 -0
  67. package/dist/automations/notifications/service.js +45 -0
  68. package/dist/automations/notifications/service.js.map +1 -0
  69. package/dist/automations/notifications/types.d.ts +7 -0
  70. package/dist/automations/notifications/types.js +560 -0
  71. package/dist/automations/notifications/types.js.map +1 -0
  72. package/dist/automations/ports.d.ts +134 -21
  73. package/dist/automations/service.d.ts +30 -30
  74. package/dist/automations/service.js +111 -144
  75. package/dist/automations/service.js.map +1 -1
  76. package/dist/content/event-sight.d.ts +11 -0
  77. package/dist/content/event-sight.js +11 -0
  78. package/dist/content/event-sight.js.map +1 -0
  79. package/dist/content/events.d.ts +437 -46
  80. package/dist/content/events.js +45 -1
  81. package/dist/content/events.js.map +1 -1
  82. package/dist/content/index.d.ts +8 -4
  83. package/dist/content/index.js +5 -1
  84. package/dist/content/jobs.d.ts +16 -0
  85. package/dist/content/jobs.js +37 -0
  86. package/dist/content/jobs.js.map +1 -0
  87. package/dist/content/model.d.ts +2 -2
  88. package/dist/content/notification-categories.d.ts +37 -0
  89. package/dist/content/notification-categories.js +73 -0
  90. package/dist/content/notification-categories.js.map +1 -0
  91. package/dist/content/ports.d.ts +132 -68
  92. package/dist/content/service.d.ts +100 -68
  93. package/dist/content/service.js +703 -146
  94. package/dist/content/service.js.map +1 -1
  95. package/dist/content/titles.d.ts +25 -0
  96. package/dist/content/titles.js +82 -0
  97. package/dist/content/titles.js.map +1 -0
  98. package/dist/content/types.d.ts +2 -2
  99. package/dist/discussion/authors.d.ts +4 -2
  100. package/dist/discussion/authors.js +9 -5
  101. package/dist/discussion/authors.js.map +1 -1
  102. package/dist/discussion/chats.d.ts +63 -39
  103. package/dist/discussion/chats.js +455 -190
  104. package/dist/discussion/chats.js.map +1 -1
  105. package/dist/discussion/digests.d.ts +24 -0
  106. package/dist/discussion/digests.js +104 -0
  107. package/dist/discussion/digests.js.map +1 -0
  108. package/dist/discussion/events.d.ts +227 -23
  109. package/dist/discussion/events.js +114 -19
  110. package/dist/discussion/events.js.map +1 -1
  111. package/dist/discussion/index.d.ts +12 -4
  112. package/dist/discussion/index.js +9 -2
  113. package/dist/discussion/jobs.d.ts +16 -0
  114. package/dist/discussion/jobs.js +40 -0
  115. package/dist/discussion/jobs.js.map +1 -0
  116. package/dist/discussion/live.d.ts +106 -0
  117. package/dist/discussion/live.js +642 -0
  118. package/dist/discussion/live.js.map +1 -0
  119. package/dist/discussion/mentions.d.ts +11 -0
  120. package/dist/discussion/mentions.js +35 -0
  121. package/dist/discussion/mentions.js.map +1 -0
  122. package/dist/discussion/ports.d.ts +279 -114
  123. package/dist/discussion/ports.js.map +1 -1
  124. package/dist/discussion/posts.d.ts +60 -44
  125. package/dist/discussion/posts.js +453 -287
  126. package/dist/discussion/posts.js.map +1 -1
  127. package/dist/discussion/rules.d.ts +18 -0
  128. package/dist/discussion/rules.js +22 -0
  129. package/dist/discussion/rules.js.map +1 -0
  130. package/dist/discussion/service.d.ts +50 -35
  131. package/dist/discussion/service.js +333 -205
  132. package/dist/discussion/service.js.map +1 -1
  133. package/dist/discussion/subscriptions.d.ts +37 -0
  134. package/dist/discussion/subscriptions.js +115 -0
  135. package/dist/discussion/subscriptions.js.map +1 -0
  136. package/dist/discussion/titles.d.ts +28 -0
  137. package/dist/discussion/titles.js +98 -0
  138. package/dist/discussion/titles.js.map +1 -0
  139. package/dist/entitlements/events.d.ts +20 -20
  140. package/dist/entitlements/index.d.ts +5 -4
  141. package/dist/entitlements/index.js +3 -2
  142. package/dist/entitlements/jobs.d.ts +12 -0
  143. package/dist/entitlements/jobs.js +18 -0
  144. package/dist/entitlements/jobs.js.map +1 -0
  145. package/dist/entitlements/model.d.ts +2 -2
  146. package/dist/entitlements/ports.d.ts +68 -38
  147. package/dist/entitlements/rules.d.ts +3 -6
  148. package/dist/entitlements/rules.js +5 -10
  149. package/dist/entitlements/rules.js.map +1 -1
  150. package/dist/entitlements/service.d.ts +43 -28
  151. package/dist/entitlements/service.js +387 -160
  152. package/dist/entitlements/service.js.map +1 -1
  153. package/dist/identity/devices.d.ts +30 -0
  154. package/dist/identity/devices.js +109 -0
  155. package/dist/identity/devices.js.map +1 -0
  156. package/dist/identity/index.d.ts +6 -5
  157. package/dist/identity/index.js +4 -3
  158. package/dist/identity/model.d.ts +2 -2
  159. package/dist/identity/notification-settings.d.ts +28 -0
  160. package/dist/identity/notification-settings.js +114 -0
  161. package/dist/identity/notification-settings.js.map +1 -0
  162. package/dist/identity/ports.d.ts +80 -56
  163. package/dist/identity/service.d.ts +8 -7
  164. package/dist/identity/service.js +17 -13
  165. package/dist/identity/service.js.map +1 -1
  166. package/dist/integrations/ports.d.ts +9 -8
  167. package/dist/integrations/service.d.ts +9 -8
  168. package/dist/integrations/service.js +33 -16
  169. package/dist/integrations/service.js.map +1 -1
  170. package/dist/organizations/default-roles.d.ts +22 -0
  171. package/dist/organizations/default-roles.js +89 -0
  172. package/dist/organizations/default-roles.js.map +1 -0
  173. package/dist/organizations/effective-permissions.d.ts +45 -0
  174. package/dist/organizations/effective-permissions.js +113 -0
  175. package/dist/organizations/effective-permissions.js.map +1 -0
  176. package/dist/organizations/events.d.ts +320 -181
  177. package/dist/organizations/events.js +90 -18
  178. package/dist/organizations/events.js.map +1 -1
  179. package/dist/organizations/index.d.ts +15 -10
  180. package/dist/organizations/index.js +8 -3
  181. package/dist/organizations/members.d.ts +66 -8
  182. package/dist/organizations/members.js.map +1 -1
  183. package/dist/organizations/notification-catalog.d.ts +31 -0
  184. package/dist/organizations/notification-catalog.js +32 -0
  185. package/dist/organizations/notification-catalog.js.map +1 -0
  186. package/dist/organizations/notification-categories.d.ts +34 -0
  187. package/dist/organizations/notification-categories.js +66 -0
  188. package/dist/organizations/notification-categories.js.map +1 -0
  189. package/dist/organizations/org-roles.d.ts +33 -0
  190. package/dist/organizations/org-roles.js +49 -0
  191. package/dist/organizations/org-roles.js.map +1 -0
  192. package/dist/organizations/permissions.d.ts +311 -0
  193. package/dist/organizations/permissions.js +327 -0
  194. package/dist/organizations/permissions.js.map +1 -0
  195. package/dist/organizations/ports.d.ts +187 -65
  196. package/dist/organizations/service.d.ts +104 -35
  197. package/dist/organizations/service.js +1247 -323
  198. package/dist/organizations/service.js.map +1 -1
  199. package/dist/organizations/testing.d.ts +18 -0
  200. package/dist/organizations/testing.js +37 -0
  201. package/dist/organizations/testing.js.map +1 -0
  202. package/dist/organizations/types.d.ts +5 -16
  203. package/dist/progress/index.d.ts +2 -2
  204. package/dist/progress/ports.d.ts +11 -3
  205. package/dist/progress/service.d.ts +6 -5
  206. package/dist/progress/service.js +23 -8
  207. package/dist/progress/service.js.map +1 -1
  208. package/dist/reporting/admin/index.d.ts +6 -4
  209. package/dist/reporting/admin/model.d.ts +36 -3
  210. package/dist/reporting/admin/ports.d.ts +39 -14
  211. package/dist/reporting/admin/service.d.ts +32 -11
  212. package/dist/reporting/admin/service.js +102 -18
  213. package/dist/reporting/admin/service.js.map +1 -1
  214. package/dist/reporting/events/index.d.ts +27 -0
  215. package/dist/reporting/events/index.js +20 -0
  216. package/dist/reporting/events/index.js.map +1 -0
  217. package/dist/reporting/member/calendar.d.ts +11 -0
  218. package/dist/reporting/member/calendar.js +75 -0
  219. package/dist/reporting/member/calendar.js.map +1 -0
  220. package/dist/reporting/member/index.d.ts +3 -2
  221. package/dist/reporting/member/model.d.ts +80 -26
  222. package/dist/reporting/member/ports.d.ts +50 -28
  223. package/dist/reporting/member/service.d.ts +81 -35
  224. package/dist/reporting/member/service.js +438 -145
  225. package/dist/reporting/member/service.js.map +1 -1
  226. package/dist/shared/actor.d.ts +22 -3
  227. package/dist/shared/errors.d.ts +15 -2
  228. package/dist/shared/errors.js +21 -2
  229. package/dist/shared/errors.js.map +1 -1
  230. package/dist/shared/id.d.ts +7 -0
  231. package/dist/shared/id.js +8 -1
  232. package/dist/shared/id.js.map +1 -1
  233. package/dist/shared/logger.d.ts +2 -1
  234. package/dist/shared/logger.js +10 -1
  235. package/dist/shared/logger.js.map +1 -1
  236. package/dist/shared/mailer.d.ts +11 -1
  237. package/dist/shared/mailer.js +32 -5
  238. package/dist/shared/mailer.js.map +1 -1
  239. package/dist/shared/notification-categories.d.ts +16 -0
  240. package/dist/shared/notification-categories.js +94 -0
  241. package/dist/shared/notification-categories.js.map +1 -0
  242. package/dist/shared/notification-settings.d.ts +14 -0
  243. package/dist/shared/notification-settings.js +61 -0
  244. package/dist/shared/notification-settings.js.map +1 -0
  245. package/dist/shared/ports.d.ts +68 -2
  246. package/dist/shared/settings.d.ts +2 -1
  247. package/dist/shared/settings.js +1 -0
  248. package/dist/shared/settings.js.map +1 -1
  249. package/dist/types/automations.d.ts +8 -2
  250. package/dist/types/content.d.ts +2 -2
  251. package/dist/types/discussion.d.ts +4 -5
  252. package/dist/types/email-templates.d.ts +119 -6
  253. package/dist/types/entitlements.d.ts +2 -2
  254. package/dist/types/identity.d.ts +14 -17
  255. package/dist/types/index.d.ts +13 -12
  256. package/dist/types/index.js +2 -1
  257. package/dist/types/notifications.d.ts +157 -0
  258. package/dist/types/notifications.js +1 -0
  259. package/dist/types/organizations.d.ts +3 -2
  260. package/dist/types/ports.d.ts +8 -1
  261. package/dist/types/ports.js +7 -1
  262. package/dist/types/ports.js.map +1 -0
  263. package/dist/types/schemas/assets.d.ts +5 -5
  264. package/dist/types/schemas/assets.js +4 -3
  265. package/dist/types/schemas/assets.js.map +1 -1
  266. package/dist/types/schemas/automations.d.ts +1 -10
  267. package/dist/types/schemas/automations.js +1 -3
  268. package/dist/types/schemas/automations.js.map +1 -1
  269. package/dist/types/schemas/content.d.ts +596 -11
  270. package/dist/types/schemas/content.js +225 -9
  271. package/dist/types/schemas/content.js.map +1 -1
  272. package/dist/types/schemas/discussion.d.ts +362 -66
  273. package/dist/types/schemas/discussion.js +123 -15
  274. package/dist/types/schemas/discussion.js.map +1 -1
  275. package/dist/types/schemas/entitlements.d.ts +14 -1
  276. package/dist/types/schemas/entitlements.js +11 -4
  277. package/dist/types/schemas/entitlements.js.map +1 -1
  278. package/dist/types/schemas/identity.d.ts +1 -85
  279. package/dist/types/schemas/identity.js +1 -42
  280. package/dist/types/schemas/identity.js.map +1 -1
  281. package/dist/types/schemas/index.d.ts +8 -7
  282. package/dist/types/schemas/index.js +8 -7
  283. package/dist/types/schemas/notifications.d.ts +96 -0
  284. package/dist/types/schemas/notifications.js +57 -0
  285. package/dist/types/schemas/notifications.js.map +1 -0
  286. package/dist/types/schemas/organizations.d.ts +96 -60
  287. package/dist/types/schemas/organizations.js +78 -27
  288. package/dist/types/schemas/organizations.js.map +1 -1
  289. package/dist/types/schemas/progress.d.ts +0 -1
  290. package/dist/types/schemas/progress.js +0 -1
  291. package/dist/types/schemas/progress.js.map +1 -1
  292. package/package.json +1 -1
  293. package/dist/automations/community-notifications.d.ts +0 -16
  294. package/dist/automations/community-notifications.js +0 -84
  295. package/dist/automations/community-notifications.js.map +0 -1
  296. package/dist/automations/seeds.d.ts +0 -17
  297. package/dist/automations/seeds.js +0 -235
  298. package/dist/automations/seeds.js.map +0 -1
  299. package/dist/identity/notifications.d.ts +0 -27
  300. package/dist/identity/notifications.js +0 -101
  301. package/dist/identity/notifications.js.map +0 -1
  302. package/dist/organizations/access-scopes.d.ts +0 -19
  303. package/dist/organizations/access-scopes.js +0 -89
  304. package/dist/organizations/access-scopes.js.map +0 -1
  305. package/dist/organizations/roles.d.ts +0 -19
  306. package/dist/organizations/roles.js +0 -82
  307. package/dist/organizations/roles.js.map +0 -1
@@ -1,12 +1,20 @@
1
- import { CommentListItem, CommentReaction, CommentReportSummary, CommentSettings, CommentStatus, CommentView, CommentsConfig, ListCommentsQuery, ReactionCounts, ReactionEmoji } from "../types/schemas/discussion.js";
1
+ import { ChatLiveEvent, ChatUnreadSummary, CommentListItem, CommentReaction, CommentReportSummary, CommentSettings, CommentStatus, CommentView, CommentsConfig, ListCommentsQuery, LiveMessage, ReactionCounts, ReactionEmoji } from "../types/schemas/discussion.js";
2
2
  import { Comment, CommentAuthor, CommentReport } from "../types/discussion.js";
3
+ import "../types/index.js";
3
4
  import { Actor } from "../shared/actor.js";
4
5
  import "./model.js";
5
6
  import "./types.js";
6
- import { ActivityComments, AuthorProfileReader, AuthorRecord, AuthorRoleReader, BookmarkQuery, ChatListItem, ChatRepository, ChatService, ChatUnitOfWork, ChatWriteScope, CommentReactions, CommentWithContext, ContentAccessReader, CreatePostInput, DiscussionRepository, DiscussionService, DiscussionUnitOfWork, DiscussionWriteScope, FeedQuery, MessageQueue, MessageReactions, PageQuery, PostCommentInput, PostCommentReader, PostPatch, PostReactions, PostRepository, PostService, PostThreadsQuery, PostUnitOfWork, PostWriteScope, SendMessageInput, SpaceModerationQueue, StartDirectInput, StartGroupInput, UpdatePostInput } from "./ports.js";
7
- import { authorView } from "./authors.js";
7
+ import { ActivityComments, ActivityGetter, AuthorPermissionReader, AuthorProfileReader, AuthorRecord, BookmarkQuery, ChatInboxRow, ChatListItem, ChatListQuery, ChatLiveReads, ChatMemberState, ChatMemberStates, ChatRepository, ChatService, ChatUnitOfWork, ChatUnread, ChatWriteScope, CommentReactions, CommentWithContext, CommentWithin, CommunityAccess, ContentAccessReader, CreatePostInput, DigestRunRepository, DigestScheduleReader, DigestService, DigestUnitOfWork, DigestWriteScope, DiscussionRepository, DiscussionService, DiscussionUnitOfWork, DiscussionWriteScope, FeedQuery, ItemTitle, ItemTitles, LiveChat, MentionsRepository, MessageQueue, MessageReactions, MuteInput, OpenableSpace, PageQuery, PostCommentInput, PostCommentReader, PostGuard, PostPatch, PostReactions, PostRepository, PostService, PostThreadsQuery, PostUnitOfWork, PostWriteScope, PublishedPost, ReactionChange, SendMessageInput, SpaceModerationQueue, SpaceReader, StartDirectInput, StartGroupInput, SubscriptionInput, SubscriptionService, SubscriptionUnitOfWork, SubscriptionWriteScope, SubscriptionsRepository, UpdatePostInput } from "./ports.js";
8
+ import { NO_BADGE, ReviewedItem, TeamBadge, isTeam, skipsReview, teamBadge } from "./rules.js";
9
+ import { authorName, authorView } from "./authors.js";
10
+ import { CHAT_CHANNEL, ChatChange, ChatHub, ChatHubOptions, ChatHubParams, ChatLiveForwarder, ChatLiveForwarderParams, LiveRegistration } from "./live.js";
8
11
  import { ChatServiceImpl } from "./chats.js";
12
+ import { DigestServiceImpl, latestDueAt } from "./digests.js";
9
13
  import { DiscussionEvent, discussionEvents } from "./events.js";
10
14
  import { DEFAULT_SETTINGS, DiscussionServiceImpl } from "./service.js";
11
15
  import { PostServiceImpl } from "./posts.js";
12
- export { type ActivityComments, type Actor, type AuthorProfileReader, type AuthorRecord, type AuthorRoleReader, type BookmarkQuery, type ChatListItem, type ChatRepository, type ChatService, ChatServiceImpl, type ChatUnitOfWork, type ChatWriteScope, type Comment, type CommentAuthor, type CommentListItem, type CommentReaction, type CommentReactions, type CommentReport, type CommentReportSummary, type CommentSettings, type CommentStatus, type CommentView, type CommentWithContext, type CommentsConfig, type ContentAccessReader, type CreatePostInput, DEFAULT_SETTINGS, type DiscussionEvent, type DiscussionRepository, type DiscussionService, DiscussionServiceImpl, type DiscussionUnitOfWork, type DiscussionWriteScope, type FeedQuery, type ListCommentsQuery, type MessageQueue, type MessageReactions, type PageQuery, type PostCommentInput, type PostCommentReader, type PostPatch, type PostReactions, type PostRepository, type PostService, PostServiceImpl, type PostThreadsQuery, type PostUnitOfWork, type PostWriteScope, type ReactionCounts, type ReactionEmoji, type SendMessageInput, type SpaceModerationQueue, type StartDirectInput, type StartGroupInput, type UpdatePostInput, authorView, discussionEvents };
16
+ import { SubscriptionServiceImpl, activeSubscription } from "./subscriptions.js";
17
+ import { mentionTokens, nameMentions } from "./mentions.js";
18
+ import { DiscussionItemTitles } from "./titles.js";
19
+ import { DIGEST_OPEN_JOB, POST_PUBLISH_JOB, discussionJobs, discussionRecurringJobs } from "./jobs.js";
20
+ export { type ActivityComments, type ActivityGetter, type Actor, type AuthorPermissionReader, type AuthorProfileReader, type AuthorRecord, type BookmarkQuery, CHAT_CHANNEL, type ChatChange, ChatHub, type ChatHubOptions, type ChatHubParams, type ChatInboxRow, type ChatListItem, type ChatListQuery, type ChatLiveEvent, ChatLiveForwarder, type ChatLiveForwarderParams, type ChatLiveReads, type ChatMemberState, type ChatMemberStates, type ChatRepository, type ChatService, ChatServiceImpl, type ChatUnitOfWork, type ChatUnread, type ChatUnreadSummary, type ChatWriteScope, type Comment, type CommentAuthor, type CommentListItem, type CommentReaction, type CommentReactions, type CommentReport, type CommentReportSummary, type CommentSettings, type CommentStatus, type CommentView, type CommentWithContext, type CommentWithin, type CommentsConfig, type CommunityAccess, type ContentAccessReader, type CreatePostInput, DEFAULT_SETTINGS, DIGEST_OPEN_JOB, type DigestRunRepository, type DigestScheduleReader, type DigestService, DigestServiceImpl, type DigestUnitOfWork, type DigestWriteScope, type DiscussionEvent, DiscussionItemTitles, type DiscussionRepository, type DiscussionService, DiscussionServiceImpl, type DiscussionUnitOfWork, type DiscussionWriteScope, type FeedQuery, type ItemTitle, type ItemTitles, type ListCommentsQuery, type LiveChat, type LiveMessage, type LiveRegistration, type MentionsRepository, type MessageQueue, type MessageReactions, type MuteInput, NO_BADGE, type OpenableSpace, POST_PUBLISH_JOB, type PageQuery, type PostCommentInput, type PostCommentReader, type PostGuard, type PostPatch, type PostReactions, type PostRepository, type PostService, PostServiceImpl, type PostThreadsQuery, type PostUnitOfWork, type PostWriteScope, type PublishedPost, type ReactionChange, type ReactionCounts, type ReactionEmoji, type ReviewedItem, type SendMessageInput, type SpaceModerationQueue, type SpaceReader, type StartDirectInput, type StartGroupInput, type SubscriptionInput, type SubscriptionService, SubscriptionServiceImpl, type SubscriptionUnitOfWork, type SubscriptionWriteScope, type SubscriptionsRepository, type TeamBadge, type UpdatePostInput, activeSubscription, authorName, authorView, discussionEvents, discussionJobs, discussionRecurringJobs, isTeam, latestDueAt, mentionTokens, nameMentions, skipsReview, teamBadge };
@@ -1,6 +1,13 @@
1
1
  import { discussionEvents } from "./events.js";
2
- import { authorView } from "./authors.js";
2
+ import { authorName, authorView } from "./authors.js";
3
+ import { mentionTokens, nameMentions } from "./mentions.js";
4
+ import { NO_BADGE, isTeam, skipsReview, teamBadge } from "./rules.js";
3
5
  import { DEFAULT_SETTINGS, DiscussionServiceImpl } from "./service.js";
6
+ import { DIGEST_OPEN_JOB, POST_PUBLISH_JOB, discussionJobs, discussionRecurringJobs } from "./jobs.js";
7
+ import { SubscriptionServiceImpl, activeSubscription } from "./subscriptions.js";
4
8
  import { PostServiceImpl } from "./posts.js";
9
+ import { DigestServiceImpl, latestDueAt } from "./digests.js";
10
+ import { CHAT_CHANNEL, ChatHub, ChatLiveForwarder } from "./live.js";
5
11
  import { ChatServiceImpl } from "./chats.js";
6
- export { ChatServiceImpl, DEFAULT_SETTINGS, DiscussionServiceImpl, PostServiceImpl, authorView, discussionEvents };
12
+ import { DiscussionItemTitles } from "./titles.js";
13
+ export { CHAT_CHANNEL, ChatHub, ChatLiveForwarder, ChatServiceImpl, DEFAULT_SETTINGS, DIGEST_OPEN_JOB, DigestServiceImpl, DiscussionItemTitles, DiscussionServiceImpl, NO_BADGE, POST_PUBLISH_JOB, PostServiceImpl, SubscriptionServiceImpl, activeSubscription, authorName, authorView, discussionEvents, discussionJobs, discussionRecurringJobs, isTeam, latestDueAt, mentionTokens, nameMentions, skipsReview, teamBadge };
@@ -0,0 +1,16 @@
1
+ import { Logger } from "../types/ports.js";
2
+ import { RecurringJob, ScheduledJob } from "../shared/ports.js";
3
+ import { DigestService, PostService } from "./ports.js";
4
+ //#region src/discussion/jobs.d.ts
5
+ declare const POST_PUBLISH_JOB = "discussion.post.publish";
6
+ declare const DIGEST_OPEN_JOB = "discussion.digest.open";
7
+ interface DiscussionJobDeps {
8
+ posts: Pick<PostService, 'publishScheduled'>;
9
+ digests: Pick<DigestService, 'openDue'>;
10
+ logger?: Logger;
11
+ }
12
+ declare function discussionJobs(deps: DiscussionJobDeps): ScheduledJob[];
13
+ declare const discussionRecurringJobs: RecurringJob[];
14
+ //#endregion
15
+ export { DIGEST_OPEN_JOB, DiscussionJobDeps, POST_PUBLISH_JOB, discussionJobs, discussionRecurringJobs };
16
+ //# sourceMappingURL=jobs.d.ts.map
@@ -0,0 +1,40 @@
1
+ import { idSchema } from "../types/schemas/shared.js";
2
+ import { noopLogger } from "../shared/logger.js";
3
+ import { z } from "zod";
4
+ //#region src/discussion/jobs.ts
5
+ const POST_PUBLISH_JOB = "discussion.post.publish";
6
+ const DIGEST_OPEN_JOB = "discussion.digest.open";
7
+ const postPublishPayload = z.object({
8
+ orgId: idSchema,
9
+ postId: idSchema
10
+ }).strict();
11
+ function discussionJobs(deps) {
12
+ const logger = deps.logger ?? noopLogger;
13
+ return [{
14
+ job: POST_PUBLISH_JOB,
15
+ async run(payload, fire) {
16
+ const parsed = postPublishPayload.safeParse(payload);
17
+ if (!parsed.success) {
18
+ logger.error("scheduled post payload refused", {
19
+ job: POST_PUBLISH_JOB,
20
+ fireId: fire.id
21
+ });
22
+ return;
23
+ }
24
+ await deps.posts.publishScheduled(parsed.data.orgId, parsed.data.postId, fire.startedAt);
25
+ }
26
+ }, {
27
+ job: DIGEST_OPEN_JOB,
28
+ async run(_payload, fire) {
29
+ await deps.digests.openDue(fire.startedAt);
30
+ }
31
+ }];
32
+ }
33
+ const discussionRecurringJobs = [{
34
+ job: DIGEST_OPEN_JOB,
35
+ cron: "0 * * * *"
36
+ }];
37
+ //#endregion
38
+ export { DIGEST_OPEN_JOB, POST_PUBLISH_JOB, discussionJobs, discussionRecurringJobs };
39
+
40
+ //# sourceMappingURL=jobs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jobs.js","names":[],"sources":["../../src/discussion/jobs.ts"],"sourcesContent":["import { z } from 'zod';\nimport { idSchema } from '../types/schemas/index.js';\nimport type { Logger, RecurringJob, ScheduledJob } from '../shared/ports.js';\nimport { noopLogger } from '../shared/logger.js';\nimport type { DigestService, PostService } from './ports.js';\n\nexport const POST_PUBLISH_JOB = 'discussion.post.publish';\nexport const DIGEST_OPEN_JOB = 'discussion.digest.open';\n\nconst postPublishPayload = z.object({ orgId: idSchema, postId: idSchema }).strict();\n\nexport interface DiscussionJobDeps {\n posts: Pick<PostService, 'publishScheduled'>;\n digests: Pick<DigestService, 'openDue'>;\n logger?: Logger;\n}\n\nexport function discussionJobs(deps: DiscussionJobDeps): ScheduledJob[] {\n const logger = deps.logger ?? noopLogger;\n return [\n {\n job: POST_PUBLISH_JOB,\n async run(payload, fire) {\n const parsed = postPublishPayload.safeParse(payload);\n if (!parsed.success) {\n logger.error('scheduled post payload refused', {\n job: POST_PUBLISH_JOB,\n fireId: fire.id,\n });\n return;\n }\n await deps.posts.publishScheduled(parsed.data.orgId, parsed.data.postId, fire.startedAt);\n },\n },\n {\n job: DIGEST_OPEN_JOB,\n async run(_payload, fire) {\n await deps.digests.openDue(fire.startedAt);\n },\n },\n ];\n}\n\nexport const discussionRecurringJobs: RecurringJob[] = [\n { job: DIGEST_OPEN_JOB, cron: '0 * * * *' },\n];\n"],"mappings":";;;;AAMA,MAAa,mBAAmB;AAChC,MAAa,kBAAkB;AAE/B,MAAM,qBAAqB,EAAE,OAAO;CAAE,OAAO;CAAU,QAAQ;AAAS,CAAC,CAAC,CAAC,OAAO;AAQlF,SAAgB,eAAe,MAAyC;CACtE,MAAM,SAAS,KAAK,UAAU;CAC9B,OAAO,CACL;EACE,KAAK;EACL,MAAM,IAAI,SAAS,MAAM;GACvB,MAAM,SAAS,mBAAmB,UAAU,OAAO;GACnD,IAAI,CAAC,OAAO,SAAS;IACnB,OAAO,MAAM,kCAAkC;KAC7C,KAAK;KACL,QAAQ,KAAK;IACf,CAAC;IACD;GACF;GACA,MAAM,KAAK,MAAM,iBAAiB,OAAO,KAAK,OAAO,OAAO,KAAK,QAAQ,KAAK,SAAS;EACzF;CACF,GACA;EACE,KAAK;EACL,MAAM,IAAI,UAAU,MAAM;GACxB,MAAM,KAAK,QAAQ,QAAQ,KAAK,SAAS;EAC3C;CACF,CACF;AACF;AAEA,MAAa,0BAA0C,CACrD;CAAE,KAAK;CAAiB,MAAM;AAAY,CAC5C"}
@@ -0,0 +1,106 @@
1
+ import { Logger } from "../types/ports.js";
2
+ import { ChatLiveEvent } from "../types/schemas/discussion.js";
3
+ import "../types/index.js";
4
+ import { Actor } from "../shared/actor.js";
5
+ import { EventBus, PubSub } from "../shared/ports.js";
6
+ import { ChatLiveReads } from "./ports.js";
7
+ import { z } from "zod";
8
+ //#region src/discussion/live.d.ts
9
+ declare const CHAT_CHANNEL = "discussion.chats";
10
+ declare const TYPING = "typing";
11
+ declare const chatChangeSchema: z.ZodObject<{
12
+ event: z.ZodString;
13
+ orgId: z.ZodString;
14
+ communityId: z.ZodString;
15
+ chatId: z.ZodString;
16
+ messageId: z.ZodOptional<z.ZodString>;
17
+ orgUserId: z.ZodOptional<z.ZodString>;
18
+ members: z.ZodOptional<z.ZodArray<z.ZodString>>;
19
+ reaction: z.ZodOptional<z.ZodNullable<z.ZodString>>;
20
+ until: z.ZodOptional<z.ZodString>;
21
+ }, z.core.$strip>;
22
+ /** One chat change on the `discussion.chats` channel. It never carries a body;
23
+ * every instance reads current state itself. */
24
+ type ChatChange = z.infer<typeof chatChangeSchema>;
25
+ /** Publishes a change, logging and dropping it when the publish fails or has
26
+ * not finished within 2 s. Never throws. */
27
+ declare function publishChange(pubsub: PubSub, change: ChatChange, logger: Logger, timeoutMs?: number): Promise<void>;
28
+ type ChatLiveForwarderParams = {
29
+ pubsub: PubSub;
30
+ logger?: Logger;
31
+ timeoutMs?: number;
32
+ };
33
+ /** Publishes every chat change committed through the outbox to every instance. */
34
+ declare class ChatLiveForwarder {
35
+ private readonly pubsub;
36
+ private readonly logger;
37
+ private readonly timeoutMs;
38
+ constructor(params: ChatLiveForwarderParams);
39
+ attach(bus: EventBus): void;
40
+ }
41
+ interface ChatHubOptions {
42
+ flushMs?: number;
43
+ closeTimeoutMs?: number;
44
+ }
45
+ type ChatHubParams = ChatHubOptions & {
46
+ pubsub: PubSub;
47
+ reads: ChatLiveReads;
48
+ logger?: Logger;
49
+ };
50
+ interface LiveRegistration {
51
+ communityId: string;
52
+ actor: Actor;
53
+ }
54
+ /** This process's open chat streams, and the live delivery of every chat
55
+ * change to them. */
56
+ declare class ChatHub {
57
+ private readonly pubsub;
58
+ private readonly reads;
59
+ private readonly logger;
60
+ private readonly flushMs;
61
+ private readonly closeTimeoutMs;
62
+ private readonly streams;
63
+ private readonly byMember;
64
+ private readonly byCommunity;
65
+ private readonly queues;
66
+ private ready;
67
+ private running;
68
+ private pending;
69
+ private dirty;
70
+ private flushing;
71
+ private flushAgain;
72
+ private closing;
73
+ private unsubscribe;
74
+ private flushTimer;
75
+ constructor(params: ChatHubParams);
76
+ start(): Promise<void>;
77
+ /** Ends every stream with `closed { reason: 'shutdown' }` and waits, up to
78
+ * 2 s in all, for each to be read to its end. */
79
+ close(): Promise<void>;
80
+ /** Registers one stream. It starts with `ready`, then the member's unread. */
81
+ open(registration: LiveRegistration): AsyncIterable<ChatLiveEvent>;
82
+ private index;
83
+ private unindex;
84
+ private unregister;
85
+ private streamsOf;
86
+ private communityStreams;
87
+ private receive;
88
+ private pump;
89
+ private overflow;
90
+ private reset;
91
+ private resync;
92
+ private handle;
93
+ private participantStreams;
94
+ private onMessage;
95
+ private onReactions;
96
+ private onChat;
97
+ private onTyping;
98
+ private markDirty;
99
+ /** Pushes the `chat.state` of every dirty member and chat and the `unread`
100
+ * of every dirty member, read now. One flush runs at a time. */
101
+ private flush;
102
+ private flushGroup;
103
+ }
104
+ //#endregion
105
+ export { CHAT_CHANNEL, ChatChange, ChatHub, ChatHubOptions, ChatHubParams, ChatLiveForwarder, ChatLiveForwarderParams, LiveRegistration, TYPING, publishChange };
106
+ //# sourceMappingURL=live.d.ts.map