@headless-lms/server 0.4.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 (223) hide show
  1. package/README.md +14 -0
  2. package/dist/app/community-mail.d.ts +5 -3
  3. package/dist/app/community-mail.js +60 -12
  4. package/dist/app/community-mail.js.map +1 -1
  5. package/dist/app/container.d.ts +24 -3
  6. package/dist/app/container.js +102 -38
  7. package/dist/app/container.js.map +1 -1
  8. package/dist/app/notification-channels.js +1 -0
  9. package/dist/app/notification-channels.js.map +1 -1
  10. package/dist/app/notification-reads.d.ts +3 -3
  11. package/dist/app/notification-reads.js +7 -28
  12. package/dist/app/notification-reads.js.map +1 -1
  13. package/dist/app/platform.d.ts +14 -0
  14. package/dist/app/platform.js +14 -0
  15. package/dist/app/platform.js.map +1 -0
  16. package/dist/http/config.d.ts +4 -0
  17. package/dist/http/errors.js +9 -4
  18. package/dist/http/errors.js.map +1 -1
  19. package/dist/http/fastify.d.ts +8 -0
  20. package/dist/http/mcp/catalogue.d.ts +11 -9
  21. package/dist/http/mcp/catalogue.js +15 -21
  22. package/dist/http/mcp/catalogue.js.map +1 -1
  23. package/dist/http/mcp/challenge.js +3 -3
  24. package/dist/http/mcp/challenge.js.map +1 -1
  25. package/dist/http/mcp/route.js +7 -7
  26. package/dist/http/mcp/route.js.map +1 -1
  27. package/dist/http/mcp/test-support.d.ts +6 -5
  28. package/dist/http/mcp/test-support.js +32 -11
  29. package/dist/http/mcp/test-support.js.map +1 -1
  30. package/dist/http/mcp/tool.d.ts +3 -9
  31. package/dist/http/mcp/tool.js +14 -6
  32. package/dist/http/mcp/tool.js.map +1 -1
  33. package/dist/http/mcp/tools/automations.js +10 -20
  34. package/dist/http/mcp/tools/automations.js.map +1 -1
  35. package/dist/http/mcp/tools/catalog.js +25 -42
  36. package/dist/http/mcp/tools/catalog.js.map +1 -1
  37. package/dist/http/mcp/tools/comments.js +9 -19
  38. package/dist/http/mcp/tools/comments.js.map +1 -1
  39. package/dist/http/mcp/tools/communities.js +16 -31
  40. package/dist/http/mcp/tools/communities.js.map +1 -1
  41. package/dist/http/mcp/tools/community-members.js +9 -16
  42. package/dist/http/mcp/tools/community-members.js.map +1 -1
  43. package/dist/http/mcp/tools/community-moderation.js +13 -25
  44. package/dist/http/mcp/tools/community-moderation.js.map +1 -1
  45. package/dist/http/mcp/tools/courses.js +11 -21
  46. package/dist/http/mcp/tools/courses.js.map +1 -1
  47. package/dist/http/mcp/tools/events.d.ts +6 -0
  48. package/dist/http/mcp/tools/events.js +170 -0
  49. package/dist/http/mcp/tools/events.js.map +1 -0
  50. package/dist/http/mcp/tools/index.d.ts +5 -1
  51. package/dist/http/mcp/tools/index.js +45 -10
  52. package/dist/http/mcp/tools/index.js.map +1 -1
  53. package/dist/http/mcp/tools/organization.d.ts +6 -0
  54. package/dist/http/mcp/tools/organization.js +214 -0
  55. package/dist/http/mcp/tools/organization.js.map +1 -0
  56. package/dist/http/mcp/tools/people.js +30 -49
  57. package/dist/http/mcp/tools/people.js.map +1 -1
  58. package/dist/http/plugins/auth.js +37 -8
  59. package/dist/http/plugins/auth.js.map +1 -1
  60. package/dist/http/plugins/error-handler.d.ts +5 -1
  61. package/dist/http/plugins/error-handler.js +10 -2
  62. package/dist/http/plugins/error-handler.js.map +1 -1
  63. package/dist/http/plugins/openapi.js +18 -2
  64. package/dist/http/plugins/openapi.js.map +1 -1
  65. package/dist/http/plugins/platform.d.ts +7 -0
  66. package/dist/http/plugins/platform.js +13 -0
  67. package/dist/http/plugins/platform.js.map +1 -0
  68. package/dist/http/routes/access.js +54 -36
  69. package/dist/http/routes/access.js.map +1 -1
  70. package/dist/http/routes/activities.js +45 -45
  71. package/dist/http/routes/activities.js.map +1 -1
  72. package/dist/http/routes/assets.js +30 -65
  73. package/dist/http/routes/assets.js.map +1 -1
  74. package/dist/http/routes/automations.js +37 -42
  75. package/dist/http/routes/automations.js.map +1 -1
  76. package/dist/http/routes/bundles.js +33 -36
  77. package/dist/http/routes/bundles.js.map +1 -1
  78. package/dist/http/routes/communities.js +93 -145
  79. package/dist/http/routes/communities.js.map +1 -1
  80. package/dist/http/routes/community-moderation.js +83 -137
  81. package/dist/http/routes/community-moderation.js.map +1 -1
  82. package/dist/http/routes/course-analytics.js +32 -15
  83. package/dist/http/routes/course-analytics.js.map +1 -1
  84. package/dist/http/routes/courses.js +25 -32
  85. package/dist/http/routes/courses.js.map +1 -1
  86. package/dist/http/routes/dashboard.js +9 -9
  87. package/dist/http/routes/dashboard.js.map +1 -1
  88. package/dist/http/routes/discussion.js +21 -39
  89. package/dist/http/routes/discussion.js.map +1 -1
  90. package/dist/http/routes/downloads.js +41 -47
  91. package/dist/http/routes/downloads.js.map +1 -1
  92. package/dist/http/routes/entitlements.js +19 -23
  93. package/dist/http/routes/entitlements.js.map +1 -1
  94. package/dist/http/routes/events.d.ts +7 -0
  95. package/dist/http/routes/events.js +333 -0
  96. package/dist/http/routes/events.js.map +1 -0
  97. package/dist/http/routes/integrations.js +40 -73
  98. package/dist/http/routes/integrations.js.map +1 -1
  99. package/dist/http/routes/member/assets.js +10 -13
  100. package/dist/http/routes/member/assets.js.map +1 -1
  101. package/dist/http/routes/member/chats.js +170 -47
  102. package/dist/http/routes/member/chats.js.map +1 -1
  103. package/dist/http/routes/member/comments.js +65 -26
  104. package/dist/http/routes/member/comments.js.map +1 -1
  105. package/dist/http/routes/member/community.js +45 -52
  106. package/dist/http/routes/member/community.js.map +1 -1
  107. package/dist/http/routes/member/courses.js +12 -19
  108. package/dist/http/routes/member/courses.js.map +1 -1
  109. package/dist/http/routes/member/devices.js +9 -10
  110. package/dist/http/routes/member/devices.js.map +1 -1
  111. package/dist/http/routes/member/downloads.js +6 -9
  112. package/dist/http/routes/member/downloads.js.map +1 -1
  113. package/dist/http/routes/member/events.d.ts +7 -0
  114. package/dist/http/routes/member/events.js +386 -0
  115. package/dist/http/routes/member/events.js.map +1 -0
  116. package/dist/http/routes/member/files.js +71 -46
  117. package/dist/http/routes/member/files.js.map +1 -1
  118. package/dist/http/routes/member/index.js +2 -0
  119. package/dist/http/routes/member/index.js.map +1 -1
  120. package/dist/http/routes/member/notification-settings.js +15 -23
  121. package/dist/http/routes/member/notification-settings.js.map +1 -1
  122. package/dist/http/routes/member/notifications.js +16 -16
  123. package/dist/http/routes/member/notifications.js.map +1 -1
  124. package/dist/http/routes/member/org.js +5 -15
  125. package/dist/http/routes/member/org.js.map +1 -1
  126. package/dist/http/routes/member/posts.js +67 -68
  127. package/dist/http/routes/member/posts.js.map +1 -1
  128. package/dist/http/routes/member/profile.js +15 -6
  129. package/dist/http/routes/member/profile.js.map +1 -1
  130. package/dist/http/routes/member/progress.js +7 -11
  131. package/dist/http/routes/member/progress.js.map +1 -1
  132. package/dist/http/routes/organizations.js +319 -135
  133. package/dist/http/routes/organizations.js.map +1 -1
  134. package/dist/http/routes/platform.d.ts +7 -0
  135. package/dist/http/routes/platform.js +61 -0
  136. package/dist/http/routes/platform.js.map +1 -0
  137. package/dist/http/routes/students.js +12 -75
  138. package/dist/http/routes/students.js.map +1 -1
  139. package/dist/http/routes/webhooks.js +30 -39
  140. package/dist/http/routes/webhooks.js.map +1 -1
  141. package/dist/http/routes.js +9 -0
  142. package/dist/http/routes.js.map +1 -1
  143. package/dist/http/schemas/access.d.ts +346 -64
  144. package/dist/http/schemas/access.js +39 -12
  145. package/dist/http/schemas/access.js.map +1 -1
  146. package/dist/http/schemas/assets.d.ts +19 -14
  147. package/dist/http/schemas/assets.js +6 -5
  148. package/dist/http/schemas/assets.js.map +1 -1
  149. package/dist/http/schemas/automations.d.ts +4 -4
  150. package/dist/http/schemas/chats.d.ts +211 -32
  151. package/dist/http/schemas/chats.js +13 -4
  152. package/dist/http/schemas/chats.js.map +1 -1
  153. package/dist/http/schemas/community.d.ts +91 -44
  154. package/dist/http/schemas/community.js +21 -8
  155. package/dist/http/schemas/community.js.map +1 -1
  156. package/dist/http/schemas/course-analytics.d.ts +51 -1
  157. package/dist/http/schemas/course-analytics.js +19 -1
  158. package/dist/http/schemas/course-analytics.js.map +1 -1
  159. package/dist/http/schemas/dashboard.d.ts +1 -0
  160. package/dist/http/schemas/dashboard.js +2 -1
  161. package/dist/http/schemas/dashboard.js.map +1 -1
  162. package/dist/http/schemas/discussion.d.ts +22 -72
  163. package/dist/http/schemas/discussion.js +2 -2
  164. package/dist/http/schemas/discussion.js.map +1 -1
  165. package/dist/http/schemas/entitlements.d.ts +9 -12
  166. package/dist/http/schemas/entitlements.js +11 -5
  167. package/dist/http/schemas/entitlements.js.map +1 -1
  168. package/dist/http/schemas/events.d.ts +527 -0
  169. package/dist/http/schemas/events.js +64 -0
  170. package/dist/http/schemas/events.js.map +1 -0
  171. package/dist/http/schemas/files.d.ts +15 -5
  172. package/dist/http/schemas/files.js +10 -2
  173. package/dist/http/schemas/files.js.map +1 -1
  174. package/dist/http/schemas/index.d.ts +11 -9
  175. package/dist/http/schemas/index.js +11 -9
  176. package/dist/http/schemas/integrations.d.ts +4 -4
  177. package/dist/http/schemas/invites.d.ts +3 -47
  178. package/dist/http/schemas/invites.js +4 -25
  179. package/dist/http/schemas/invites.js.map +1 -1
  180. package/dist/http/schemas/member.d.ts +94 -7
  181. package/dist/http/schemas/member.js +7 -3
  182. package/dist/http/schemas/member.js.map +1 -1
  183. package/dist/http/schemas/members.d.ts +333 -69
  184. package/dist/http/schemas/members.js +67 -25
  185. package/dist/http/schemas/members.js.map +1 -1
  186. package/dist/http/schemas/notifications.d.ts +57 -53
  187. package/dist/http/schemas/platform.d.ts +37 -0
  188. package/dist/http/schemas/platform.js +19 -0
  189. package/dist/http/schemas/platform.js.map +1 -0
  190. package/dist/http/schemas/posts.d.ts +55 -35
  191. package/dist/http/schemas/posts.js +4 -4
  192. package/dist/http/schemas/posts.js.map +1 -1
  193. package/dist/http/schemas/profile.d.ts +1 -1
  194. package/dist/http/schemas/shared.d.ts +1 -11
  195. package/dist/http/schemas/shared.js +1 -10
  196. package/dist/http/schemas/shared.js.map +1 -1
  197. package/dist/http/schemas/students.d.ts +25 -3
  198. package/dist/http/schemas/students.js +3 -1
  199. package/dist/http/schemas/students.js.map +1 -1
  200. package/dist/http/scope.d.ts +9 -13
  201. package/dist/http/scope.js +29 -40
  202. package/dist/http/scope.js.map +1 -1
  203. package/dist/http/server.js +9 -0
  204. package/dist/http/server.js.map +1 -1
  205. package/dist/http/shutdown.d.ts +11 -0
  206. package/dist/http/shutdown.js +40 -0
  207. package/dist/http/shutdown.js.map +1 -0
  208. package/dist/http/sse.d.ts +19 -0
  209. package/dist/http/sse.js +104 -0
  210. package/dist/http/sse.js.map +1 -0
  211. package/dist/http/test-caller.d.ts +13 -0
  212. package/dist/http/test-caller.js +14 -0
  213. package/dist/http/test-caller.js.map +1 -0
  214. package/dist/http/well-known.js +2 -2
  215. package/dist/http/well-known.js.map +1 -1
  216. package/dist/index.d.ts +4 -2
  217. package/dist/index.js +4 -2
  218. package/dist/index.js.map +1 -1
  219. package/dist/packages/server/package.js +1 -1
  220. package/package.json +7 -6
  221. package/dist/http/routes/member/actor.d.ts +0 -14
  222. package/dist/http/routes/member/actor.js +0 -11
  223. package/dist/http/routes/member/actor.js.map +0 -1
@@ -1,33 +1,50 @@
1
1
  import { z } from "zod";
2
2
  //#region src/http/schemas/members.d.ts
3
- /** Org-scoped roles, mirrored from better-auth's organization plugin. */
4
- declare const Role: z.ZodEnum<{
5
- owner: "owner";
6
- admin: "admin";
7
- instructor: "instructor";
8
- moderator: "moderator";
9
- }>;
10
- type Role = z.infer<typeof Role>;
11
3
  declare const MemberStatus: z.ZodEnum<{
12
- active: "active";
13
4
  invited: "invited";
5
+ active: "active";
14
6
  }>;
15
7
  type MemberStatus = z.infer<typeof MemberStatus>;
8
+ declare const RoleRef: z.ZodObject<{
9
+ key: z.ZodString;
10
+ name: z.ZodString;
11
+ }, z.core.$strip>;
12
+ declare const ItemRole: z.ZodObject<{
13
+ contentId: z.ZodString;
14
+ contentType: z.ZodEnum<{
15
+ community: "community";
16
+ course: "course";
17
+ download: "download";
18
+ event: "event";
19
+ }>;
20
+ roleKey: z.ZodString;
21
+ roleName: z.ZodString;
22
+ }, z.core.$strip>;
16
23
  declare const Member: z.ZodObject<{
17
24
  id: z.ZodString;
18
25
  firstName: z.ZodNullable<z.ZodString>;
19
26
  lastName: z.ZodNullable<z.ZodString>;
20
27
  email: z.ZodString;
21
28
  image: z.ZodNullable<z.ZodString>;
22
- role: z.ZodEnum<{
23
- owner: "owner";
24
- admin: "admin";
25
- instructor: "instructor";
26
- moderator: "moderator";
27
- }>;
29
+ orgRole: z.ZodObject<{
30
+ key: z.ZodString;
31
+ name: z.ZodString;
32
+ }, z.core.$strip>;
33
+ isOwner: z.ZodBoolean;
34
+ items: z.ZodArray<z.ZodObject<{
35
+ contentId: z.ZodString;
36
+ contentType: z.ZodEnum<{
37
+ community: "community";
38
+ course: "course";
39
+ download: "download";
40
+ event: "event";
41
+ }>;
42
+ roleKey: z.ZodString;
43
+ roleName: z.ZodString;
44
+ }, z.core.$strip>>;
28
45
  status: z.ZodEnum<{
29
- active: "active";
30
46
  invited: "invited";
47
+ active: "active";
31
48
  }>;
32
49
  joinedAt: z.ZodNullable<z.ZodString>;
33
50
  invitedAt: z.ZodNullable<z.ZodString>;
@@ -38,15 +55,10 @@ declare const MembersQuery: z.ZodObject<{
38
55
  pageSize: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
39
56
  search: z.ZodOptional<z.ZodString>;
40
57
  sort: z.ZodOptional<z.ZodString>;
41
- role: z.ZodOptional<z.ZodEnum<{
42
- owner: "owner";
43
- admin: "admin";
44
- instructor: "instructor";
45
- moderator: "moderator";
46
- }>>;
58
+ roleKey: z.ZodOptional<z.ZodString>;
47
59
  status: z.ZodOptional<z.ZodEnum<{
48
- active: "active";
49
60
  invited: "invited";
61
+ active: "active";
50
62
  }>>;
51
63
  }, z.core.$strip>;
52
64
  type MembersQuery = z.infer<typeof MembersQuery>;
@@ -57,15 +69,25 @@ declare const MembersPage: z.ZodObject<{
57
69
  lastName: z.ZodNullable<z.ZodString>;
58
70
  email: z.ZodString;
59
71
  image: z.ZodNullable<z.ZodString>;
60
- role: z.ZodEnum<{
61
- owner: "owner";
62
- admin: "admin";
63
- instructor: "instructor";
64
- moderator: "moderator";
65
- }>;
72
+ orgRole: z.ZodObject<{
73
+ key: z.ZodString;
74
+ name: z.ZodString;
75
+ }, z.core.$strip>;
76
+ isOwner: z.ZodBoolean;
77
+ items: z.ZodArray<z.ZodObject<{
78
+ contentId: z.ZodString;
79
+ contentType: z.ZodEnum<{
80
+ community: "community";
81
+ course: "course";
82
+ download: "download";
83
+ event: "event";
84
+ }>;
85
+ roleKey: z.ZodString;
86
+ roleName: z.ZodString;
87
+ }, z.core.$strip>>;
66
88
  status: z.ZodEnum<{
67
- active: "active";
68
89
  invited: "invited";
90
+ active: "active";
69
91
  }>;
70
92
  joinedAt: z.ZodNullable<z.ZodString>;
71
93
  invitedAt: z.ZodNullable<z.ZodString>;
@@ -75,47 +97,289 @@ declare const MembersPage: z.ZodObject<{
75
97
  pageSize: z.ZodNumber;
76
98
  }, z.core.$strip>;
77
99
  type MembersPage = z.infer<typeof MembersPage>;
78
- declare const AssignableRole: z.ZodEnum<{
79
- admin: "admin";
80
- instructor: "instructor";
81
- moderator: "moderator";
82
- student: "student";
83
- }>;
84
- type AssignableRole = z.infer<typeof AssignableRole>;
85
- declare const UpdateMemberRole: z.ZodObject<{
86
- role: z.ZodEnum<{
87
- admin: "admin";
88
- instructor: "instructor";
89
- moderator: "moderator";
90
- student: "student";
91
- }>;
100
+ declare const OrgUserIdParam: z.ZodObject<{
101
+ orgUserId: z.ZodString;
92
102
  }, z.core.$strip>;
93
- type UpdateMemberRole = z.infer<typeof UpdateMemberRole>;
94
- declare const MemberRoleChange: z.ZodObject<{
95
- id: z.ZodString;
96
- firstName: z.ZodNullable<z.ZodString>;
97
- lastName: z.ZodNullable<z.ZodString>;
98
- email: z.ZodString;
99
- image: z.ZodNullable<z.ZodString>;
100
- status: z.ZodEnum<{
101
- active: "active";
102
- invited: "invited";
103
- }>;
104
- joinedAt: z.ZodNullable<z.ZodString>;
105
- invitedAt: z.ZodNullable<z.ZodString>;
106
- role: z.ZodEnum<{
107
- owner: "owner";
108
- admin: "admin";
109
- instructor: "instructor";
110
- moderator: "moderator";
111
- student: "student";
112
- }>;
103
+ declare const OrgUserContentParam: z.ZodObject<{
104
+ orgUserId: z.ZodString;
105
+ contentId: z.ZodString;
113
106
  }, z.core.$strip>;
114
- type MemberRoleChange = z.infer<typeof MemberRoleChange>;
115
- declare const MemberIdParam: z.ZodObject<{
116
- id: z.ZodString;
107
+ declare const ContentIdParam: z.ZodObject<{
108
+ contentId: z.ZodString;
109
+ }, z.core.$strip>;
110
+ declare const RoleKeyParam: z.ZodObject<{
111
+ key: z.ZodString;
112
+ }, z.core.$strip>;
113
+ declare const Assignment: z.ZodObject<{
114
+ orgUserId: z.ZodString;
115
+ roleKey: z.ZodString;
116
+ roleName: z.ZodString;
117
+ contentId: z.ZodNullable<z.ZodString>;
118
+ contentType: z.ZodNullable<z.ZodEnum<{
119
+ community: "community";
120
+ course: "course";
121
+ download: "download";
122
+ event: "event";
123
+ }>>;
117
124
  }, z.core.$strip>;
118
- type MemberIdParam = z.infer<typeof MemberIdParam>;
125
+ declare const AssignmentList: z.ZodArray<z.ZodObject<{
126
+ orgUserId: z.ZodString;
127
+ roleKey: z.ZodString;
128
+ roleName: z.ZodString;
129
+ contentId: z.ZodNullable<z.ZodString>;
130
+ contentType: z.ZodNullable<z.ZodEnum<{
131
+ community: "community";
132
+ course: "course";
133
+ download: "download";
134
+ event: "event";
135
+ }>>;
136
+ }, z.core.$strip>>;
137
+ declare const SetRole: z.ZodObject<{
138
+ roleKey: z.ZodString;
139
+ }, z.core.$strip>;
140
+ declare const OrgRoleView: z.ZodObject<{
141
+ key: z.ZodString;
142
+ name: z.ZodString;
143
+ description: z.ZodString;
144
+ base: z.ZodString;
145
+ levels: z.ZodArray<z.ZodUnion<readonly [z.ZodLiteral<"org">, z.ZodLazy<z.ZodEnum<{
146
+ community: "community";
147
+ course: "course";
148
+ download: "download";
149
+ event: "event";
150
+ }>>]>>;
151
+ team: z.ZodBoolean;
152
+ permissions: z.ZodArray<z.ZodEnum<{
153
+ "organizations:read": "organizations:read";
154
+ "organizations:write": "organizations:write";
155
+ "api_keys:read": "api_keys:read";
156
+ "api_keys:write": "api_keys:write";
157
+ "api_keys:delete": "api_keys:delete";
158
+ "notification_categories:read": "notification_categories:read";
159
+ "notification_categories:write": "notification_categories:write";
160
+ "integrations:read": "integrations:read";
161
+ "integrations:write": "integrations:write";
162
+ "integrations:delete": "integrations:delete";
163
+ "analytics:read": "analytics:read";
164
+ "people:read": "people:read";
165
+ "people:write": "people:write";
166
+ "people:delete": "people:delete";
167
+ "roles:read": "roles:read";
168
+ "roles:write": "roles:write";
169
+ "roles:delete": "roles:delete";
170
+ "access:read": "access:read";
171
+ "access:write": "access:write";
172
+ "bundles:read": "bundles:read";
173
+ "bundles:write": "bundles:write";
174
+ "bundles:delete": "bundles:delete";
175
+ "media:read": "media:read";
176
+ "media:write": "media:write";
177
+ "media:delete": "media:delete";
178
+ "courses:read": "courses:read";
179
+ "courses:write": "courses:write";
180
+ "courses:delete": "courses:delete";
181
+ "courses:moderate": "courses:moderate";
182
+ "progress:read": "progress:read";
183
+ "downloads:read": "downloads:read";
184
+ "downloads:write": "downloads:write";
185
+ "downloads:delete": "downloads:delete";
186
+ "communities:read": "communities:read";
187
+ "communities:write": "communities:write";
188
+ "communities:delete": "communities:delete";
189
+ "communities:moderate": "communities:moderate";
190
+ "events:read": "events:read";
191
+ "events:write": "events:write";
192
+ "events:delete": "events:delete";
193
+ "automations:read": "automations:read";
194
+ "automations:write": "automations:write";
195
+ "automations:delete": "automations:delete";
196
+ }>>;
197
+ system: z.ZodBoolean;
198
+ added: z.ZodBoolean;
199
+ customized: z.ZodBoolean;
200
+ holders: z.ZodNumber;
201
+ givable: z.ZodBoolean;
202
+ }, z.core.$strip>;
203
+ declare const OrgRoleList: z.ZodArray<z.ZodObject<{
204
+ key: z.ZodString;
205
+ name: z.ZodString;
206
+ description: z.ZodString;
207
+ base: z.ZodString;
208
+ levels: z.ZodArray<z.ZodUnion<readonly [z.ZodLiteral<"org">, z.ZodLazy<z.ZodEnum<{
209
+ community: "community";
210
+ course: "course";
211
+ download: "download";
212
+ event: "event";
213
+ }>>]>>;
214
+ team: z.ZodBoolean;
215
+ permissions: z.ZodArray<z.ZodEnum<{
216
+ "organizations:read": "organizations:read";
217
+ "organizations:write": "organizations:write";
218
+ "api_keys:read": "api_keys:read";
219
+ "api_keys:write": "api_keys:write";
220
+ "api_keys:delete": "api_keys:delete";
221
+ "notification_categories:read": "notification_categories:read";
222
+ "notification_categories:write": "notification_categories:write";
223
+ "integrations:read": "integrations:read";
224
+ "integrations:write": "integrations:write";
225
+ "integrations:delete": "integrations:delete";
226
+ "analytics:read": "analytics:read";
227
+ "people:read": "people:read";
228
+ "people:write": "people:write";
229
+ "people:delete": "people:delete";
230
+ "roles:read": "roles:read";
231
+ "roles:write": "roles:write";
232
+ "roles:delete": "roles:delete";
233
+ "access:read": "access:read";
234
+ "access:write": "access:write";
235
+ "bundles:read": "bundles:read";
236
+ "bundles:write": "bundles:write";
237
+ "bundles:delete": "bundles:delete";
238
+ "media:read": "media:read";
239
+ "media:write": "media:write";
240
+ "media:delete": "media:delete";
241
+ "courses:read": "courses:read";
242
+ "courses:write": "courses:write";
243
+ "courses:delete": "courses:delete";
244
+ "courses:moderate": "courses:moderate";
245
+ "progress:read": "progress:read";
246
+ "downloads:read": "downloads:read";
247
+ "downloads:write": "downloads:write";
248
+ "downloads:delete": "downloads:delete";
249
+ "communities:read": "communities:read";
250
+ "communities:write": "communities:write";
251
+ "communities:delete": "communities:delete";
252
+ "communities:moderate": "communities:moderate";
253
+ "events:read": "events:read";
254
+ "events:write": "events:write";
255
+ "events:delete": "events:delete";
256
+ "automations:read": "automations:read";
257
+ "automations:write": "automations:write";
258
+ "automations:delete": "automations:delete";
259
+ }>>;
260
+ system: z.ZodBoolean;
261
+ added: z.ZodBoolean;
262
+ customized: z.ZodBoolean;
263
+ holders: z.ZodNumber;
264
+ givable: z.ZodBoolean;
265
+ }, z.core.$strip>>;
266
+ declare const UpdateRole: z.ZodObject<{
267
+ name: z.ZodOptional<z.ZodString>;
268
+ description: z.ZodOptional<z.ZodString>;
269
+ levels: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodLiteral<"org">, z.ZodLazy<z.ZodEnum<{
270
+ community: "community";
271
+ course: "course";
272
+ download: "download";
273
+ event: "event";
274
+ }>>]>>>;
275
+ team: z.ZodOptional<z.ZodBoolean>;
276
+ permissions: z.ZodOptional<z.ZodRecord<z.ZodEnum<{
277
+ "organizations:read": "organizations:read";
278
+ "organizations:write": "organizations:write";
279
+ "api_keys:read": "api_keys:read";
280
+ "api_keys:write": "api_keys:write";
281
+ "api_keys:delete": "api_keys:delete";
282
+ "notification_categories:read": "notification_categories:read";
283
+ "notification_categories:write": "notification_categories:write";
284
+ "integrations:read": "integrations:read";
285
+ "integrations:write": "integrations:write";
286
+ "integrations:delete": "integrations:delete";
287
+ "analytics:read": "analytics:read";
288
+ "people:read": "people:read";
289
+ "people:write": "people:write";
290
+ "people:delete": "people:delete";
291
+ "roles:read": "roles:read";
292
+ "roles:write": "roles:write";
293
+ "roles:delete": "roles:delete";
294
+ "access:read": "access:read";
295
+ "access:write": "access:write";
296
+ "bundles:read": "bundles:read";
297
+ "bundles:write": "bundles:write";
298
+ "bundles:delete": "bundles:delete";
299
+ "media:read": "media:read";
300
+ "media:write": "media:write";
301
+ "media:delete": "media:delete";
302
+ "courses:read": "courses:read";
303
+ "courses:write": "courses:write";
304
+ "courses:delete": "courses:delete";
305
+ "courses:moderate": "courses:moderate";
306
+ "progress:read": "progress:read";
307
+ "downloads:read": "downloads:read";
308
+ "downloads:write": "downloads:write";
309
+ "downloads:delete": "downloads:delete";
310
+ "communities:read": "communities:read";
311
+ "communities:write": "communities:write";
312
+ "communities:delete": "communities:delete";
313
+ "communities:moderate": "communities:moderate";
314
+ "events:read": "events:read";
315
+ "events:write": "events:write";
316
+ "events:delete": "events:delete";
317
+ "automations:read": "automations:read";
318
+ "automations:write": "automations:write";
319
+ "automations:delete": "automations:delete";
320
+ }> & z.core.$partial, z.ZodBoolean>>;
321
+ }, z.core.$strict>;
322
+ declare const CreateRole: z.ZodObject<{
323
+ base: z.ZodString;
324
+ name: z.ZodString;
325
+ description: z.ZodOptional<z.ZodString>;
326
+ levels: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodLiteral<"org">, z.ZodLazy<z.ZodEnum<{
327
+ community: "community";
328
+ course: "course";
329
+ download: "download";
330
+ event: "event";
331
+ }>>]>>>;
332
+ team: z.ZodOptional<z.ZodBoolean>;
333
+ permissions: z.ZodOptional<z.ZodRecord<z.ZodEnum<{
334
+ "organizations:read": "organizations:read";
335
+ "organizations:write": "organizations:write";
336
+ "api_keys:read": "api_keys:read";
337
+ "api_keys:write": "api_keys:write";
338
+ "api_keys:delete": "api_keys:delete";
339
+ "notification_categories:read": "notification_categories:read";
340
+ "notification_categories:write": "notification_categories:write";
341
+ "integrations:read": "integrations:read";
342
+ "integrations:write": "integrations:write";
343
+ "integrations:delete": "integrations:delete";
344
+ "analytics:read": "analytics:read";
345
+ "people:read": "people:read";
346
+ "people:write": "people:write";
347
+ "people:delete": "people:delete";
348
+ "roles:read": "roles:read";
349
+ "roles:write": "roles:write";
350
+ "roles:delete": "roles:delete";
351
+ "access:read": "access:read";
352
+ "access:write": "access:write";
353
+ "bundles:read": "bundles:read";
354
+ "bundles:write": "bundles:write";
355
+ "bundles:delete": "bundles:delete";
356
+ "media:read": "media:read";
357
+ "media:write": "media:write";
358
+ "media:delete": "media:delete";
359
+ "courses:read": "courses:read";
360
+ "courses:write": "courses:write";
361
+ "courses:delete": "courses:delete";
362
+ "courses:moderate": "courses:moderate";
363
+ "progress:read": "progress:read";
364
+ "downloads:read": "downloads:read";
365
+ "downloads:write": "downloads:write";
366
+ "downloads:delete": "downloads:delete";
367
+ "communities:read": "communities:read";
368
+ "communities:write": "communities:write";
369
+ "communities:delete": "communities:delete";
370
+ "communities:moderate": "communities:moderate";
371
+ "events:read": "events:read";
372
+ "events:write": "events:write";
373
+ "events:delete": "events:delete";
374
+ "automations:read": "automations:read";
375
+ "automations:write": "automations:write";
376
+ "automations:delete": "automations:delete";
377
+ }> & z.core.$partial, z.ZodBoolean>>;
378
+ }, z.core.$strict>;
379
+ declare const TransferOwnership: z.ZodObject<{
380
+ newOwnerOrgUserId: z.ZodString;
381
+ previousOwnerRoleKey: z.ZodOptional<z.ZodString>;
382
+ }, z.core.$strict>;
119
383
  //#endregion
120
- export { AssignableRole, Member, MemberIdParam, MemberRoleChange, MemberStatus, MembersPage, MembersQuery, Role, UpdateMemberRole };
384
+ export { Assignment, AssignmentList, ContentIdParam, CreateRole, ItemRole, Member, MemberStatus, MembersPage, MembersQuery, OrgRoleList, OrgRoleView, OrgUserContentParam, OrgUserIdParam, RoleKeyParam, RoleRef, SetRole, TransferOwnership, UpdateRole };
121
385
  //# sourceMappingURL=members.d.ts.map
@@ -1,41 +1,83 @@
1
1
  import { ListQuery, OrgUserProfileSchema, paginated } from "./shared.js";
2
2
  import { z } from "zod";
3
+ import { contentTypeSchema, levelSchema, permissionSchema, roleKeySchema } from "@headless-lms/core/schemas";
3
4
  //#region src/http/schemas/members.ts
4
- /** Org-scoped roles, mirrored from better-auth's organization plugin. */
5
- const Role = z.enum([
6
- "owner",
7
- "admin",
8
- "instructor",
9
- "moderator"
10
- ]);
11
5
  const MemberStatus = z.enum(["active", "invited"]);
6
+ const RoleRef = z.object({
7
+ key: z.string(),
8
+ name: z.string()
9
+ });
10
+ const ItemRole = z.object({
11
+ contentId: z.string(),
12
+ contentType: contentTypeSchema,
13
+ roleKey: z.string(),
14
+ roleName: z.string()
15
+ });
12
16
  const Member = OrgUserProfileSchema.extend({
13
- role: Role,
17
+ orgRole: RoleRef,
18
+ isOwner: z.boolean(),
19
+ items: z.array(ItemRole),
14
20
  status: MemberStatus,
15
21
  joinedAt: z.string().nullable(),
16
22
  invitedAt: z.string().nullable()
17
23
  });
18
24
  const MembersQuery = ListQuery.extend({
19
- role: Role.optional(),
25
+ roleKey: z.string().optional(),
20
26
  status: MemberStatus.optional()
21
27
  });
22
28
  const MembersPage = paginated(Member);
23
- const AssignableRole = z.enum([
24
- "admin",
25
- "instructor",
26
- "moderator",
27
- "student"
28
- ]);
29
- const UpdateMemberRole = z.object({ role: AssignableRole });
30
- const MemberRoleChange = Member.extend({ role: z.enum([
31
- "owner",
32
- "admin",
33
- "instructor",
34
- "moderator",
35
- "student"
36
- ]) });
37
- const MemberIdParam = z.object({ id: z.string() });
29
+ const OrgUserIdParam = z.object({ orgUserId: z.string() });
30
+ const OrgUserContentParam = z.object({
31
+ orgUserId: z.string(),
32
+ contentId: z.string()
33
+ });
34
+ const ContentIdParam = z.object({ contentId: z.string() });
35
+ const RoleKeyParam = z.object({ key: z.string() });
36
+ const Assignment = z.object({
37
+ orgUserId: z.string(),
38
+ roleKey: z.string(),
39
+ roleName: z.string(),
40
+ contentId: z.string().nullable(),
41
+ contentType: contentTypeSchema.nullable()
42
+ });
43
+ const AssignmentList = z.array(Assignment);
44
+ const SetRole = z.object({ roleKey: roleKeySchema });
45
+ const OrgRoleView = z.object({
46
+ key: z.string(),
47
+ name: z.string(),
48
+ description: z.string(),
49
+ base: z.string(),
50
+ levels: z.array(levelSchema),
51
+ team: z.boolean(),
52
+ permissions: z.array(permissionSchema),
53
+ system: z.boolean(),
54
+ added: z.boolean(),
55
+ customized: z.boolean(),
56
+ holders: z.number().int(),
57
+ givable: z.boolean().describe("Whether the role can be given. False for the owner role, which moves only by transfer.")
58
+ });
59
+ const OrgRoleList = z.array(OrgRoleView);
60
+ const PermissionChoices = z.partialRecord(permissionSchema, z.boolean());
61
+ const UpdateRole = z.object({
62
+ name: z.string().trim().min(1).max(60).optional(),
63
+ description: z.string().trim().max(240).optional(),
64
+ levels: z.array(levelSchema).min(1).optional(),
65
+ team: z.boolean().optional(),
66
+ permissions: PermissionChoices.optional()
67
+ }).strict();
68
+ const CreateRole = z.object({
69
+ base: roleKeySchema,
70
+ name: z.string().trim().min(1).max(60),
71
+ description: z.string().trim().max(240).optional(),
72
+ levels: z.array(levelSchema).min(1).optional(),
73
+ team: z.boolean().optional(),
74
+ permissions: PermissionChoices.optional()
75
+ }).strict();
76
+ const TransferOwnership = z.object({
77
+ newOwnerOrgUserId: z.string().min(1),
78
+ previousOwnerRoleKey: roleKeySchema.optional()
79
+ }).strict();
38
80
  //#endregion
39
- export { AssignableRole, Member, MemberIdParam, MemberRoleChange, MemberStatus, MembersPage, MembersQuery, Role, UpdateMemberRole };
81
+ export { Assignment, AssignmentList, ContentIdParam, CreateRole, ItemRole, Member, MemberStatus, MembersPage, MembersQuery, OrgRoleList, OrgRoleView, OrgUserContentParam, OrgUserIdParam, RoleKeyParam, RoleRef, SetRole, TransferOwnership, UpdateRole };
40
82
 
41
83
  //# sourceMappingURL=members.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"members.js","names":[],"sources":["../../../src/http/schemas/members.ts"],"sourcesContent":["// Team (org members) resource schemas.\nimport { z } from 'zod';\nimport { ListQuery, paginated, OrgUserProfileSchema } from './shared.js';\n\n/** Org-scoped roles, mirrored from better-auth's organization plugin. */\nexport const Role = z.enum(['owner', 'admin', 'instructor', 'moderator']);\nexport type Role = z.infer<typeof Role>;\n\nexport const MemberStatus = z.enum(['active', 'invited']);\nexport type MemberStatus = z.infer<typeof MemberStatus>;\n\nexport const Member = OrgUserProfileSchema.extend({\n role: Role,\n status: MemberStatus,\n joinedAt: z.string().nullable(),\n invitedAt: z.string().nullable(),\n});\nexport type Member = z.infer<typeof Member>;\n\nexport const MembersQuery = ListQuery.extend({\n role: Role.optional(),\n status: MemberStatus.optional(),\n});\nexport type MembersQuery = z.infer<typeof MembersQuery>;\n\nexport const MembersPage = paginated(Member);\nexport type MembersPage = z.infer<typeof MembersPage>;\n\nexport const AssignableRole = z.enum(['admin', 'instructor', 'moderator', 'student']);\nexport type AssignableRole = z.infer<typeof AssignableRole>;\n\nexport const UpdateMemberRole = z.object({ role: AssignableRole });\nexport type UpdateMemberRole = z.infer<typeof UpdateMemberRole>;\n\nexport const MemberRoleChange = Member.extend({\n role: z.enum(['owner', 'admin', 'instructor', 'moderator', 'student']),\n});\nexport type MemberRoleChange = z.infer<typeof MemberRoleChange>;\n\nexport const MemberIdParam = z.object({ id: z.string() });\nexport type MemberIdParam = z.infer<typeof MemberIdParam>;\n"],"mappings":";;;;AAKA,MAAa,OAAO,EAAE,KAAK;CAAC;CAAS;CAAS;CAAc;AAAW,CAAC;AAGxE,MAAa,eAAe,EAAE,KAAK,CAAC,UAAU,SAAS,CAAC;AAGxD,MAAa,SAAS,qBAAqB,OAAO;CAChD,MAAM;CACN,QAAQ;CACR,UAAU,EAAE,OAAO,CAAC,CAAC,SAAS;CAC9B,WAAW,EAAE,OAAO,CAAC,CAAC,SAAS;AACjC,CAAC;AAGD,MAAa,eAAe,UAAU,OAAO;CAC3C,MAAM,KAAK,SAAS;CACpB,QAAQ,aAAa,SAAS;AAChC,CAAC;AAGD,MAAa,cAAc,UAAU,MAAM;AAG3C,MAAa,iBAAiB,EAAE,KAAK;CAAC;CAAS;CAAc;CAAa;AAAS,CAAC;AAGpF,MAAa,mBAAmB,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAGjE,MAAa,mBAAmB,OAAO,OAAO,EAC5C,MAAM,EAAE,KAAK;CAAC;CAAS;CAAS;CAAc;CAAa;AAAS,CAAC,EACvE,CAAC;AAGD,MAAa,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC"}
1
+ {"version":3,"file":"members.js","names":[],"sources":["../../../src/http/schemas/members.ts"],"sourcesContent":["import { z } from 'zod';\nimport {\n contentTypeSchema,\n levelSchema,\n permissionSchema,\n roleKeySchema,\n} from '@headless-lms/core/schemas';\nimport { ListQuery, paginated, OrgUserProfileSchema } from './shared.js';\n\nexport const MemberStatus = z.enum(['active', 'invited']);\nexport type MemberStatus = z.infer<typeof MemberStatus>;\n\nexport const RoleRef = z.object({ key: z.string(), name: z.string() });\n\nexport const ItemRole = z.object({\n contentId: z.string(),\n contentType: contentTypeSchema,\n roleKey: z.string(),\n roleName: z.string(),\n});\n\nexport const Member = OrgUserProfileSchema.extend({\n orgRole: RoleRef,\n isOwner: z.boolean(),\n items: z.array(ItemRole),\n status: MemberStatus,\n joinedAt: z.string().nullable(),\n invitedAt: z.string().nullable(),\n});\nexport type Member = z.infer<typeof Member>;\n\nexport const MembersQuery = ListQuery.extend({\n roleKey: z.string().optional(),\n status: MemberStatus.optional(),\n});\nexport type MembersQuery = z.infer<typeof MembersQuery>;\n\nexport const MembersPage = paginated(Member);\nexport type MembersPage = z.infer<typeof MembersPage>;\n\nexport const OrgUserIdParam = z.object({ orgUserId: z.string() });\nexport const OrgUserContentParam = z.object({ orgUserId: z.string(), contentId: z.string() });\nexport const ContentIdParam = z.object({ contentId: z.string() });\nexport const RoleKeyParam = z.object({ key: z.string() });\n\nexport const Assignment = z.object({\n orgUserId: z.string(),\n roleKey: z.string(),\n roleName: z.string(),\n contentId: z.string().nullable(),\n contentType: contentTypeSchema.nullable(),\n});\nexport const AssignmentList = z.array(Assignment);\n\nexport const SetRole = z.object({ roleKey: roleKeySchema });\n\nexport const OrgRoleView = z.object({\n key: z.string(),\n name: z.string(),\n description: z.string(),\n base: z.string(),\n levels: z.array(levelSchema),\n team: z.boolean(),\n permissions: z.array(permissionSchema),\n system: z.boolean(),\n added: z.boolean(),\n customized: z.boolean(),\n holders: z.number().int(),\n givable: z\n .boolean()\n .describe(\n 'Whether the role can be given. False for the owner role, which moves only by transfer.',\n ),\n});\nexport const OrgRoleList = z.array(OrgRoleView);\n\nconst PermissionChoices = z.partialRecord(permissionSchema, z.boolean());\n\nexport const UpdateRole = z\n .object({\n name: z.string().trim().min(1).max(60).optional(),\n description: z.string().trim().max(240).optional(),\n levels: z.array(levelSchema).min(1).optional(),\n team: z.boolean().optional(),\n permissions: PermissionChoices.optional(),\n })\n .strict();\n\nexport const CreateRole = z\n .object({\n base: roleKeySchema,\n name: z.string().trim().min(1).max(60),\n description: z.string().trim().max(240).optional(),\n levels: z.array(levelSchema).min(1).optional(),\n team: z.boolean().optional(),\n permissions: PermissionChoices.optional(),\n })\n .strict();\n\nexport const TransferOwnership = z\n .object({\n newOwnerOrgUserId: z.string().min(1),\n previousOwnerRoleKey: roleKeySchema.optional(),\n })\n .strict();\n"],"mappings":"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"}