@headless-lms/core 0.1.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 (261) hide show
  1. package/LICENSE +21 -0
  2. package/dist/assets/events.d.ts +81 -0
  3. package/dist/assets/events.js +24 -0
  4. package/dist/assets/events.js.map +1 -0
  5. package/dist/assets/index.d.ts +7 -0
  6. package/dist/assets/index.js +3 -0
  7. package/dist/assets/model.d.ts +4 -0
  8. package/dist/assets/model.js +1 -0
  9. package/dist/assets/ports.d.ts +34 -0
  10. package/dist/assets/ports.js +1 -0
  11. package/dist/assets/service.d.ts +29 -0
  12. package/dist/assets/service.js +130 -0
  13. package/dist/assets/service.js.map +1 -0
  14. package/dist/automations/actions.d.ts +24 -0
  15. package/dist/automations/actions.js +59 -0
  16. package/dist/automations/actions.js.map +1 -0
  17. package/dist/automations/catalog.d.ts +12 -0
  18. package/dist/automations/catalog.js +224 -0
  19. package/dist/automations/catalog.js.map +1 -0
  20. package/dist/automations/events.d.ts +264 -0
  21. package/dist/automations/events.js +54 -0
  22. package/dist/automations/events.js.map +1 -0
  23. package/dist/automations/index.d.ts +9 -0
  24. package/dist/automations/index.js +4 -0
  25. package/dist/automations/model.d.ts +12 -0
  26. package/dist/automations/model.js +14 -0
  27. package/dist/automations/model.js.map +1 -0
  28. package/dist/automations/ports.d.ts +56 -0
  29. package/dist/automations/ports.js +1 -0
  30. package/dist/automations/service.d.ts +53 -0
  31. package/dist/automations/service.js +225 -0
  32. package/dist/automations/service.js.map +1 -0
  33. package/dist/automations/types.d.ts +3 -0
  34. package/dist/automations/types.js +1 -0
  35. package/dist/content/events.d.ts +410 -0
  36. package/dist/content/events.js +105 -0
  37. package/dist/content/events.js.map +1 -0
  38. package/dist/content/index.d.ts +8 -0
  39. package/dist/content/index.js +3 -0
  40. package/dist/content/model.d.ts +3 -0
  41. package/dist/content/model.js +1 -0
  42. package/dist/content/ports.d.ts +85 -0
  43. package/dist/content/ports.js +1 -0
  44. package/dist/content/service.d.ts +54 -0
  45. package/dist/content/service.js +479 -0
  46. package/dist/content/service.js.map +1 -0
  47. package/dist/content/types.d.ts +4 -0
  48. package/dist/content/types.js +1 -0
  49. package/dist/discussion/events.d.ts +101 -0
  50. package/dist/discussion/events.js +29 -0
  51. package/dist/discussion/events.js.map +1 -0
  52. package/dist/discussion/index.d.ts +8 -0
  53. package/dist/discussion/index.js +3 -0
  54. package/dist/discussion/model.d.ts +5 -0
  55. package/dist/discussion/model.js +1 -0
  56. package/dist/discussion/ports.d.ts +112 -0
  57. package/dist/discussion/ports.js +1 -0
  58. package/dist/discussion/service.d.ts +67 -0
  59. package/dist/discussion/service.js +343 -0
  60. package/dist/discussion/service.js.map +1 -0
  61. package/dist/discussion/types.d.ts +4 -0
  62. package/dist/discussion/types.js +1 -0
  63. package/dist/entitlements/events.d.ts +89 -0
  64. package/dist/entitlements/events.js +29 -0
  65. package/dist/entitlements/events.js.map +1 -0
  66. package/dist/entitlements/index.d.ts +7 -0
  67. package/dist/entitlements/index.js +3 -0
  68. package/dist/entitlements/model.d.ts +4 -0
  69. package/dist/entitlements/model.js +1 -0
  70. package/dist/entitlements/ports.d.ts +34 -0
  71. package/dist/entitlements/ports.js +1 -0
  72. package/dist/entitlements/service.d.ts +27 -0
  73. package/dist/entitlements/service.js +60 -0
  74. package/dist/entitlements/service.js.map +1 -0
  75. package/dist/identity/events.d.ts +63 -0
  76. package/dist/identity/events.js +24 -0
  77. package/dist/identity/events.js.map +1 -0
  78. package/dist/identity/index.d.ts +8 -0
  79. package/dist/identity/index.js +3 -0
  80. package/dist/identity/model.d.ts +3 -0
  81. package/dist/identity/model.js +1 -0
  82. package/dist/identity/ports.d.ts +58 -0
  83. package/dist/identity/ports.js +1 -0
  84. package/dist/identity/service.d.ts +38 -0
  85. package/dist/identity/service.js +79 -0
  86. package/dist/identity/service.js.map +1 -0
  87. package/dist/identity/types.d.ts +4 -0
  88. package/dist/identity/types.js +1 -0
  89. package/dist/integrations/events.d.ts +70 -0
  90. package/dist/integrations/events.js +24 -0
  91. package/dist/integrations/events.js.map +1 -0
  92. package/dist/integrations/index.d.ts +9 -0
  93. package/dist/integrations/index.js +6 -0
  94. package/dist/integrations/model.d.ts +28 -0
  95. package/dist/integrations/model.js +45 -0
  96. package/dist/integrations/model.js.map +1 -0
  97. package/dist/integrations/ports.d.ts +62 -0
  98. package/dist/integrations/ports.js +1 -0
  99. package/dist/integrations/registry.d.ts +7 -0
  100. package/dist/integrations/registry.js +16 -0
  101. package/dist/integrations/registry.js.map +1 -0
  102. package/dist/integrations/service.d.ts +47 -0
  103. package/dist/integrations/service.js +184 -0
  104. package/dist/integrations/service.js.map +1 -0
  105. package/dist/integrations/zod.d.ts +29 -0
  106. package/dist/integrations/zod.js +40 -0
  107. package/dist/integrations/zod.js.map +1 -0
  108. package/dist/organizations/events.d.ts +197 -0
  109. package/dist/organizations/events.js +59 -0
  110. package/dist/organizations/events.js.map +1 -0
  111. package/dist/organizations/index.d.ts +11 -0
  112. package/dist/organizations/index.js +5 -0
  113. package/dist/organizations/members.d.ts +32 -0
  114. package/dist/organizations/members.js +12 -0
  115. package/dist/organizations/members.js.map +1 -0
  116. package/dist/organizations/model.d.ts +3 -0
  117. package/dist/organizations/model.js +1 -0
  118. package/dist/organizations/ports.d.ts +127 -0
  119. package/dist/organizations/ports.js +1 -0
  120. package/dist/organizations/roles.d.ts +23 -0
  121. package/dist/organizations/roles.js +70 -0
  122. package/dist/organizations/roles.js.map +1 -0
  123. package/dist/organizations/service.d.ts +58 -0
  124. package/dist/organizations/service.js +359 -0
  125. package/dist/organizations/service.js.map +1 -0
  126. package/dist/organizations/types.d.ts +39 -0
  127. package/dist/organizations/types.js +1 -0
  128. package/dist/progress/events.d.ts +55 -0
  129. package/dist/progress/events.js +19 -0
  130. package/dist/progress/events.js.map +1 -0
  131. package/dist/progress/index.d.ts +8 -0
  132. package/dist/progress/index.js +3 -0
  133. package/dist/progress/model.d.ts +3 -0
  134. package/dist/progress/model.js +1 -0
  135. package/dist/progress/ports.d.ts +37 -0
  136. package/dist/progress/ports.js +1 -0
  137. package/dist/progress/service.d.ts +33 -0
  138. package/dist/progress/service.js +181 -0
  139. package/dist/progress/service.js.map +1 -0
  140. package/dist/progress/types.d.ts +4 -0
  141. package/dist/progress/types.js +1 -0
  142. package/dist/reporting/dashboard/index.d.ts +4 -0
  143. package/dist/reporting/dashboard/index.js +2 -0
  144. package/dist/reporting/dashboard/model.d.ts +14 -0
  145. package/dist/reporting/dashboard/model.js +1 -0
  146. package/dist/reporting/dashboard/ports.d.ts +13 -0
  147. package/dist/reporting/dashboard/ports.js +1 -0
  148. package/dist/reporting/dashboard/service.d.ts +19 -0
  149. package/dist/reporting/dashboard/service.js +20 -0
  150. package/dist/reporting/dashboard/service.js.map +1 -0
  151. package/dist/reporting/learn/index.d.ts +5 -0
  152. package/dist/reporting/learn/index.js +2 -0
  153. package/dist/reporting/learn/model.d.ts +23 -0
  154. package/dist/reporting/learn/model.js +1 -0
  155. package/dist/reporting/learn/ports.d.ts +42 -0
  156. package/dist/reporting/learn/ports.js +1 -0
  157. package/dist/reporting/learn/service.d.ts +48 -0
  158. package/dist/reporting/learn/service.js +111 -0
  159. package/dist/reporting/learn/service.js.map +1 -0
  160. package/dist/reporting/students/index.d.ts +4 -0
  161. package/dist/reporting/students/index.js +2 -0
  162. package/dist/reporting/students/model.d.ts +31 -0
  163. package/dist/reporting/students/model.js +1 -0
  164. package/dist/reporting/students/ports.d.ts +13 -0
  165. package/dist/reporting/students/ports.js +1 -0
  166. package/dist/reporting/students/service.d.ts +19 -0
  167. package/dist/reporting/students/service.js +20 -0
  168. package/dist/reporting/students/service.js.map +1 -0
  169. package/dist/shared/errors.d.ts +22 -0
  170. package/dist/shared/errors.js +34 -0
  171. package/dist/shared/errors.js.map +1 -0
  172. package/dist/shared/events.d.ts +31 -0
  173. package/dist/shared/events.js +75 -0
  174. package/dist/shared/events.js.map +1 -0
  175. package/dist/shared/id.d.ts +44 -0
  176. package/dist/shared/id.js +53 -0
  177. package/dist/shared/id.js.map +1 -0
  178. package/dist/shared/invite-token.d.ts +9 -0
  179. package/dist/shared/invite-token.js +16 -0
  180. package/dist/shared/invite-token.js.map +1 -0
  181. package/dist/shared/logger.d.ts +19 -0
  182. package/dist/shared/logger.js +44 -0
  183. package/dist/shared/logger.js.map +1 -0
  184. package/dist/shared/mailer.d.ts +23 -0
  185. package/dist/shared/mailer.js +27 -0
  186. package/dist/shared/mailer.js.map +1 -0
  187. package/dist/shared/ports.d.ts +62 -0
  188. package/dist/shared/ports.js +2 -0
  189. package/dist/shared/settings.d.ts +25 -0
  190. package/dist/shared/settings.js +21 -0
  191. package/dist/shared/settings.js.map +1 -0
  192. package/dist/types/assets.d.ts +2 -0
  193. package/dist/types/assets.js +1 -0
  194. package/dist/types/automations.d.ts +23 -0
  195. package/dist/types/automations.js +1 -0
  196. package/dist/types/content.d.ts +2 -0
  197. package/dist/types/content.js +1 -0
  198. package/dist/types/discussion.d.ts +36 -0
  199. package/dist/types/discussion.js +1 -0
  200. package/dist/types/email-templates.d.ts +57 -0
  201. package/dist/types/email-templates.js +1 -0
  202. package/dist/types/entitlements.d.ts +3 -0
  203. package/dist/types/entitlements.js +1 -0
  204. package/dist/types/events.d.ts +25 -0
  205. package/dist/types/events.js +1 -0
  206. package/dist/types/identity.d.ts +37 -0
  207. package/dist/types/identity.js +1 -0
  208. package/dist/types/index.d.ts +23 -0
  209. package/dist/types/index.js +1 -0
  210. package/dist/types/integrations.d.ts +45 -0
  211. package/dist/types/integrations.js +1 -0
  212. package/dist/types/organizations.d.ts +15 -0
  213. package/dist/types/organizations.js +1 -0
  214. package/dist/types/ports.d.ts +57 -0
  215. package/dist/types/ports.js +1 -0
  216. package/dist/types/progress.d.ts +6 -0
  217. package/dist/types/progress.js +1 -0
  218. package/dist/types/schemas/assets.d.ts +109 -0
  219. package/dist/types/schemas/assets.js +49 -0
  220. package/dist/types/schemas/assets.js.map +1 -0
  221. package/dist/types/schemas/automations.d.ts +118 -0
  222. package/dist/types/schemas/automations.js +73 -0
  223. package/dist/types/schemas/automations.js.map +1 -0
  224. package/dist/types/schemas/content.d.ts +216 -0
  225. package/dist/types/schemas/content.js +138 -0
  226. package/dist/types/schemas/content.js.map +1 -0
  227. package/dist/types/schemas/credentials.d.ts +15 -0
  228. package/dist/types/schemas/credentials.js +15 -0
  229. package/dist/types/schemas/credentials.js.map +1 -0
  230. package/dist/types/schemas/discussion.d.ts +192 -0
  231. package/dist/types/schemas/discussion.js +100 -0
  232. package/dist/types/schemas/discussion.js.map +1 -0
  233. package/dist/types/schemas/entitlements.d.ts +50 -0
  234. package/dist/types/schemas/entitlements.js +38 -0
  235. package/dist/types/schemas/entitlements.js.map +1 -0
  236. package/dist/types/schemas/identity.d.ts +37 -0
  237. package/dist/types/schemas/identity.js +34 -0
  238. package/dist/types/schemas/identity.js.map +1 -0
  239. package/dist/types/schemas/index.d.ts +14 -0
  240. package/dist/types/schemas/index.js +14 -0
  241. package/dist/types/schemas/integrations.d.ts +36 -0
  242. package/dist/types/schemas/integrations.js +30 -0
  243. package/dist/types/schemas/integrations.js.map +1 -0
  244. package/dist/types/schemas/organizations.d.ts +135 -0
  245. package/dist/types/schemas/organizations.js +90 -0
  246. package/dist/types/schemas/organizations.js.map +1 -0
  247. package/dist/types/schemas/outbox.d.ts +19 -0
  248. package/dist/types/schemas/outbox.js +18 -0
  249. package/dist/types/schemas/outbox.js.map +1 -0
  250. package/dist/types/schemas/progress.d.ts +53 -0
  251. package/dist/types/schemas/progress.js +37 -0
  252. package/dist/types/schemas/progress.js.map +1 -0
  253. package/dist/types/schemas/settings.d.ts +16 -0
  254. package/dist/types/schemas/settings.js +15 -0
  255. package/dist/types/schemas/settings.js.map +1 -0
  256. package/dist/types/schemas/shared.d.ts +13 -0
  257. package/dist/types/schemas/shared.js +28 -0
  258. package/dist/types/schemas/shared.js.map +1 -0
  259. package/dist/types/shared.d.ts +25 -0
  260. package/dist/types/shared.js +1 -0
  261. package/package.json +61 -0
@@ -0,0 +1,135 @@
1
+ import { z } from "zod";
2
+ //#region src/types/schemas/organizations.d.ts
3
+ declare const roleSchema: z.ZodEnum<{
4
+ owner: "owner";
5
+ admin: "admin";
6
+ instructor: "instructor";
7
+ student: "student";
8
+ }>;
9
+ type Role = z.infer<typeof roleSchema>;
10
+ declare const orgUserStatusSchema: z.ZodEnum<{
11
+ active: "active";
12
+ invited: "invited";
13
+ }>;
14
+ type OrgUserStatus = z.infer<typeof orgUserStatusSchema>;
15
+ declare const inviteRoleSchema: z.ZodEnum<{
16
+ admin: "admin";
17
+ instructor: "instructor";
18
+ student: "student";
19
+ }>;
20
+ type InviteRole = z.infer<typeof inviteRoleSchema>;
21
+ declare const organizationSchema: z.ZodObject<{
22
+ id: z.ZodString;
23
+ externalId: z.ZodNullable<z.ZodString>;
24
+ name: z.ZodString;
25
+ slug: z.ZodString;
26
+ ownerId: z.ZodString;
27
+ createdAt: z.ZodCoercedDate<unknown>;
28
+ updatedAt: z.ZodCoercedDate<unknown>;
29
+ }, z.core.$strict>;
30
+ type Organization = z.output<typeof organizationSchema>;
31
+ type OrganizationInput = z.input<typeof organizationSchema>;
32
+ declare const orgUserSchema: z.ZodObject<{
33
+ id: z.ZodString;
34
+ orgId: z.ZodString;
35
+ userId: z.ZodString;
36
+ role: z.ZodEnum<{
37
+ owner: "owner";
38
+ admin: "admin";
39
+ instructor: "instructor";
40
+ student: "student";
41
+ }>;
42
+ status: z.ZodEnum<{
43
+ active: "active";
44
+ invited: "invited";
45
+ }>;
46
+ createdAt: z.ZodCoercedDate<unknown>;
47
+ updatedAt: z.ZodCoercedDate<unknown>;
48
+ }, z.core.$strict>;
49
+ type OrgUser = z.output<typeof orgUserSchema>;
50
+ type OrgUserInput = z.input<typeof orgUserSchema>;
51
+ declare const orgUserProfileSchema: z.ZodObject<{
52
+ id: z.ZodString;
53
+ firstName: z.ZodNullable<z.ZodString>;
54
+ lastName: z.ZodNullable<z.ZodString>;
55
+ email: z.ZodString;
56
+ image: z.ZodNullable<z.ZodString>;
57
+ }, z.core.$strict>;
58
+ type OrgUserProfile = z.infer<typeof orgUserProfileSchema>;
59
+ declare const inviteSchema: z.ZodObject<{
60
+ id: z.ZodString;
61
+ orgId: z.ZodString;
62
+ email: z.ZodString;
63
+ role: z.ZodEnum<{
64
+ admin: "admin";
65
+ instructor: "instructor";
66
+ student: "student";
67
+ }>;
68
+ status: z.ZodEnum<{
69
+ pending: "pending";
70
+ accepted: "accepted";
71
+ rejected: "rejected";
72
+ canceled: "canceled";
73
+ }>;
74
+ invitedBy: z.ZodString;
75
+ tokenHash: z.ZodNullable<z.ZodString>;
76
+ expiresAt: z.ZodNullable<z.ZodCoercedDate<unknown>>;
77
+ createdAt: z.ZodCoercedDate<unknown>;
78
+ }, z.core.$strict>;
79
+ type Invite = z.output<typeof inviteSchema>;
80
+ type InviteInput = z.input<typeof inviteSchema>;
81
+ declare const newOrganizationInputSchema: z.ZodObject<{
82
+ name: z.ZodString;
83
+ slug: z.ZodString;
84
+ logo: z.ZodOptional<z.ZodString>;
85
+ }, z.core.$strict>;
86
+ type NewOrganizationInput = z.infer<typeof newOrganizationInputSchema>;
87
+ declare const addOrgUserInputSchema: z.ZodObject<{
88
+ orgId: z.ZodString;
89
+ userId: z.ZodString;
90
+ role: z.ZodEnum<{
91
+ owner: "owner";
92
+ admin: "admin";
93
+ instructor: "instructor";
94
+ student: "student";
95
+ }>;
96
+ }, z.core.$strict>;
97
+ type AddOrgUserInput = z.infer<typeof addOrgUserInputSchema>;
98
+ declare const createOrgUserInputSchema: z.ZodObject<{
99
+ orgId: z.ZodString;
100
+ userId: z.ZodString;
101
+ role: z.ZodEnum<{
102
+ owner: "owner";
103
+ admin: "admin";
104
+ instructor: "instructor";
105
+ student: "student";
106
+ }>;
107
+ status: z.ZodOptional<z.ZodEnum<{
108
+ active: "active";
109
+ invited: "invited";
110
+ }>>;
111
+ }, z.core.$strict>;
112
+ type CreateOrgUserInput = z.infer<typeof createOrgUserInputSchema>;
113
+ declare const createInviteInputSchema: z.ZodObject<{
114
+ orgId: z.ZodString;
115
+ email: z.ZodString;
116
+ role: z.ZodEnum<{
117
+ admin: "admin";
118
+ instructor: "instructor";
119
+ student: "student";
120
+ }>;
121
+ inviterUserId: z.ZodString;
122
+ firstName: z.ZodOptional<z.ZodString>;
123
+ lastName: z.ZodOptional<z.ZodString>;
124
+ sendEmail: z.ZodOptional<z.ZodBoolean>;
125
+ }, z.core.$strict>;
126
+ type CreateInviteInput = z.infer<typeof createInviteInputSchema>;
127
+ declare const acceptInviteInputSchema: z.ZodObject<{
128
+ token: z.ZodString;
129
+ userId: z.ZodString;
130
+ email: z.ZodString;
131
+ }, z.core.$strict>;
132
+ type AcceptInviteInput = z.infer<typeof acceptInviteInputSchema>;
133
+ //#endregion
134
+ export { AcceptInviteInput, AddOrgUserInput, CreateInviteInput, CreateOrgUserInput, Invite, InviteInput, InviteRole, NewOrganizationInput, OrgUser, OrgUserInput, OrgUserProfile, OrgUserStatus, Organization, OrganizationInput, Role, acceptInviteInputSchema, addOrgUserInputSchema, createInviteInputSchema, createOrgUserInputSchema, inviteRoleSchema, inviteSchema, newOrganizationInputSchema, orgUserProfileSchema, orgUserSchema, orgUserStatusSchema, organizationSchema, roleSchema };
135
+ //# sourceMappingURL=organizations.d.ts.map
@@ -0,0 +1,90 @@
1
+ import { idSchema } from "./shared.js";
2
+ import { z } from "zod";
3
+ //#region src/types/schemas/organizations.ts
4
+ const roleSchema = z.enum([
5
+ "owner",
6
+ "admin",
7
+ "instructor",
8
+ "student"
9
+ ]);
10
+ const orgUserStatusSchema = z.enum(["invited", "active"]);
11
+ const inviteRoleSchema = z.enum([
12
+ "admin",
13
+ "instructor",
14
+ "student"
15
+ ]);
16
+ const organizationSchema = z.object({
17
+ id: idSchema,
18
+ externalId: idSchema.nullable(),
19
+ name: z.string(),
20
+ slug: z.string(),
21
+ ownerId: idSchema,
22
+ createdAt: z.coerce.date(),
23
+ updatedAt: z.coerce.date()
24
+ }).strict();
25
+ const orgUserSchema = z.object({
26
+ id: idSchema,
27
+ orgId: idSchema,
28
+ userId: idSchema,
29
+ role: roleSchema,
30
+ status: orgUserStatusSchema,
31
+ createdAt: z.coerce.date(),
32
+ updatedAt: z.coerce.date()
33
+ }).strict();
34
+ const orgUserProfileSchema = z.object({
35
+ id: idSchema,
36
+ firstName: z.string().nullable(),
37
+ lastName: z.string().nullable(),
38
+ email: z.string().email(),
39
+ image: z.string().nullable()
40
+ }).strict();
41
+ const inviteSchema = z.object({
42
+ id: idSchema,
43
+ orgId: idSchema,
44
+ email: z.string().email(),
45
+ role: inviteRoleSchema,
46
+ status: z.enum([
47
+ "pending",
48
+ "accepted",
49
+ "rejected",
50
+ "canceled"
51
+ ]),
52
+ invitedBy: idSchema,
53
+ tokenHash: z.string().nullable(),
54
+ expiresAt: z.coerce.date().nullable(),
55
+ createdAt: z.coerce.date()
56
+ }).strict();
57
+ const newOrganizationInputSchema = z.object({
58
+ name: z.string(),
59
+ slug: z.string(),
60
+ logo: z.string().optional()
61
+ }).strict();
62
+ const addOrgUserInputSchema = z.object({
63
+ orgId: idSchema,
64
+ userId: idSchema,
65
+ role: roleSchema
66
+ }).strict();
67
+ const createOrgUserInputSchema = z.object({
68
+ orgId: idSchema,
69
+ userId: idSchema,
70
+ role: roleSchema,
71
+ status: orgUserStatusSchema.optional()
72
+ }).strict();
73
+ const createInviteInputSchema = z.object({
74
+ orgId: idSchema,
75
+ email: z.string().email(),
76
+ role: inviteRoleSchema,
77
+ inviterUserId: idSchema,
78
+ firstName: z.string().optional(),
79
+ lastName: z.string().optional(),
80
+ sendEmail: z.boolean().optional()
81
+ }).strict();
82
+ const acceptInviteInputSchema = z.object({
83
+ token: z.string().trim().min(1),
84
+ userId: idSchema,
85
+ email: z.string().email()
86
+ }).strict();
87
+ //#endregion
88
+ export { acceptInviteInputSchema, addOrgUserInputSchema, createInviteInputSchema, createOrgUserInputSchema, inviteRoleSchema, inviteSchema, newOrganizationInputSchema, orgUserProfileSchema, orgUserSchema, orgUserStatusSchema, organizationSchema, roleSchema };
89
+
90
+ //# sourceMappingURL=organizations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"organizations.js","names":[],"sources":["../../../src/types/schemas/organizations.ts"],"sourcesContent":["import { z } from \"zod\";\nimport { idSchema } from \"./shared.js\";\n\nexport const roleSchema = z.enum([\"owner\", \"admin\", \"instructor\", \"student\"]);\nexport type Role = z.infer<typeof roleSchema>;\n\nexport const orgUserStatusSchema = z.enum([\"invited\", \"active\"]);\nexport type OrgUserStatus = z.infer<typeof orgUserStatusSchema>;\n\nexport const inviteRoleSchema = z.enum([\"admin\", \"instructor\", \"student\"]);\nexport type InviteRole = z.infer<typeof inviteRoleSchema>;\n\nexport const organizationSchema = z.object({\n id: idSchema,\n externalId: idSchema.nullable(),\n name: z.string(),\n slug: z.string(),\n ownerId: idSchema,\n createdAt: z.coerce.date(),\n updatedAt: z.coerce.date(),\n}).strict();\nexport type Organization = z.output<typeof organizationSchema>;\nexport type OrganizationInput = z.input<typeof organizationSchema>;\n\nexport const orgUserSchema = z.object({\n id: idSchema,\n orgId: idSchema,\n userId: idSchema,\n role: roleSchema,\n status: orgUserStatusSchema,\n createdAt: z.coerce.date(),\n updatedAt: z.coerce.date(),\n}).strict();\nexport type OrgUser = z.output<typeof orgUserSchema>;\nexport type OrgUserInput = z.input<typeof orgUserSchema>;\n\nexport const orgUserProfileSchema = z.object({\n id: idSchema,\n firstName: z.string().nullable(),\n lastName: z.string().nullable(),\n email: z.string().email(),\n image: z.string().nullable(),\n}).strict();\nexport type OrgUserProfile = z.infer<typeof orgUserProfileSchema>;\n\nexport const inviteSchema = z.object({\n id: idSchema,\n orgId: idSchema,\n email: z.string().email(),\n role: inviteRoleSchema,\n status: z.enum([\"pending\", \"accepted\", \"rejected\", \"canceled\"]),\n invitedBy: idSchema,\n tokenHash: z.string().nullable(),\n expiresAt: z.coerce.date().nullable(),\n createdAt: z.coerce.date(),\n}).strict();\nexport type Invite = z.output<typeof inviteSchema>;\nexport type InviteInput = z.input<typeof inviteSchema>;\n\nexport const newOrganizationInputSchema = z.object({\n name: z.string(),\n slug: z.string(),\n logo: z.string().optional(),\n}).strict();\nexport type NewOrganizationInput = z.infer<typeof newOrganizationInputSchema>;\n\nexport const addOrgUserInputSchema = z.object({\n orgId: idSchema,\n userId: idSchema,\n role: roleSchema,\n}).strict();\nexport type AddOrgUserInput = z.infer<typeof addOrgUserInputSchema>;\n\nexport const createOrgUserInputSchema = z.object({\n orgId: idSchema,\n userId: idSchema,\n role: roleSchema,\n status: orgUserStatusSchema.optional(),\n}).strict();\nexport type CreateOrgUserInput = z.infer<typeof createOrgUserInputSchema>;\n\nexport const createInviteInputSchema = z.object({\n orgId: idSchema,\n email: z.string().email(),\n role: inviteRoleSchema,\n inviterUserId: idSchema,\n firstName: z.string().optional(),\n lastName: z.string().optional(),\n sendEmail: z.boolean().optional(),\n}).strict();\nexport type CreateInviteInput = z.infer<typeof createInviteInputSchema>;\n\nexport const acceptInviteInputSchema = z.object({\n token: z.string().trim().min(1),\n userId: idSchema,\n email: z.string().email(),\n}).strict();\nexport type AcceptInviteInput = z.infer<typeof acceptInviteInputSchema>;\n"],"mappings":";;;AAGA,MAAa,aAAa,EAAE,KAAK;CAAC;CAAS;CAAS;CAAc;AAAS,CAAC;AAG5E,MAAa,sBAAsB,EAAE,KAAK,CAAC,WAAW,QAAQ,CAAC;AAG/D,MAAa,mBAAmB,EAAE,KAAK;CAAC;CAAS;CAAc;AAAS,CAAC;AAGzE,MAAa,qBAAqB,EAAE,OAAO;CACzC,IAAI;CACJ,YAAY,SAAS,SAAS;CAC9B,MAAM,EAAE,OAAO;CACf,MAAM,EAAE,OAAO;CACf,SAAS;CACT,WAAW,EAAE,OAAO,KAAK;CACzB,WAAW,EAAE,OAAO,KAAK;AAC3B,CAAC,CAAC,CAAC,OAAO;AAIV,MAAa,gBAAgB,EAAE,OAAO;CACpC,IAAI;CACJ,OAAO;CACP,QAAQ;CACR,MAAM;CACN,QAAQ;CACR,WAAW,EAAE,OAAO,KAAK;CACzB,WAAW,EAAE,OAAO,KAAK;AAC3B,CAAC,CAAC,CAAC,OAAO;AAIV,MAAa,uBAAuB,EAAE,OAAO;CAC3C,IAAI;CACJ,WAAW,EAAE,OAAO,CAAC,CAAC,SAAS;CAC/B,UAAU,EAAE,OAAO,CAAC,CAAC,SAAS;CAC9B,OAAO,EAAE,OAAO,CAAC,CAAC,MAAM;CACxB,OAAO,EAAE,OAAO,CAAC,CAAC,SAAS;AAC7B,CAAC,CAAC,CAAC,OAAO;AAGV,MAAa,eAAe,EAAE,OAAO;CACnC,IAAI;CACJ,OAAO;CACP,OAAO,EAAE,OAAO,CAAC,CAAC,MAAM;CACxB,MAAM;CACN,QAAQ,EAAE,KAAK;EAAC;EAAW;EAAY;EAAY;CAAU,CAAC;CAC9D,WAAW;CACX,WAAW,EAAE,OAAO,CAAC,CAAC,SAAS;CAC/B,WAAW,EAAE,OAAO,KAAK,CAAC,CAAC,SAAS;CACpC,WAAW,EAAE,OAAO,KAAK;AAC3B,CAAC,CAAC,CAAC,OAAO;AAIV,MAAa,6BAA6B,EAAE,OAAO;CACjD,MAAM,EAAE,OAAO;CACf,MAAM,EAAE,OAAO;CACf,MAAM,EAAE,OAAO,CAAC,CAAC,SAAS;AAC5B,CAAC,CAAC,CAAC,OAAO;AAGV,MAAa,wBAAwB,EAAE,OAAO;CAC5C,OAAO;CACP,QAAQ;CACR,MAAM;AACR,CAAC,CAAC,CAAC,OAAO;AAGV,MAAa,2BAA2B,EAAE,OAAO;CAC/C,OAAO;CACP,QAAQ;CACR,MAAM;CACN,QAAQ,oBAAoB,SAAS;AACvC,CAAC,CAAC,CAAC,OAAO;AAGV,MAAa,0BAA0B,EAAE,OAAO;CAC9C,OAAO;CACP,OAAO,EAAE,OAAO,CAAC,CAAC,MAAM;CACxB,MAAM;CACN,eAAe;CACf,WAAW,EAAE,OAAO,CAAC,CAAC,SAAS;CAC/B,UAAU,EAAE,OAAO,CAAC,CAAC,SAAS;CAC9B,WAAW,EAAE,QAAQ,CAAC,CAAC,SAAS;AAClC,CAAC,CAAC,CAAC,OAAO;AAGV,MAAa,0BAA0B,EAAE,OAAO;CAC9C,OAAO,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC;CAC9B,QAAQ;CACR,OAAO,EAAE,OAAO,CAAC,CAAC,MAAM;AAC1B,CAAC,CAAC,CAAC,OAAO"}
@@ -0,0 +1,19 @@
1
+ import { JsonValue } from "../shared.js";
2
+ import { z } from "zod";
3
+ //#region src/types/schemas/outbox.d.ts
4
+ declare const eventOutboxSchema: z.ZodObject<{
5
+ orgId: z.ZodString;
6
+ id: z.ZodString;
7
+ type: z.ZodString;
8
+ payload: z.ZodRecord<z.ZodString, z.ZodType<JsonValue, unknown, z.core.$ZodTypeInternals<JsonValue, unknown>>>;
9
+ attempts: z.ZodNumber;
10
+ nextAttemptAt: z.ZodCoercedDate<unknown>;
11
+ lastError: z.ZodNullable<z.ZodString>;
12
+ createdAt: z.ZodCoercedDate<unknown>;
13
+ processedAt: z.ZodNullable<z.ZodCoercedDate<unknown>>;
14
+ }, z.core.$strict>;
15
+ type EventOutbox = z.output<typeof eventOutboxSchema>;
16
+ type EventOutboxInput = z.input<typeof eventOutboxSchema>;
17
+ //#endregion
18
+ export { EventOutbox, EventOutboxInput, eventOutboxSchema };
19
+ //# sourceMappingURL=outbox.d.ts.map
@@ -0,0 +1,18 @@
1
+ import { idSchema, jsonRecordSchema } from "./shared.js";
2
+ import { z } from "zod";
3
+ //#region src/types/schemas/outbox.ts
4
+ const eventOutboxSchema = z.object({
5
+ orgId: idSchema,
6
+ id: idSchema,
7
+ type: z.string(),
8
+ payload: jsonRecordSchema,
9
+ attempts: z.number().int(),
10
+ nextAttemptAt: z.coerce.date(),
11
+ lastError: z.string().nullable(),
12
+ createdAt: z.coerce.date(),
13
+ processedAt: z.coerce.date().nullable()
14
+ }).strict();
15
+ //#endregion
16
+ export { eventOutboxSchema };
17
+
18
+ //# sourceMappingURL=outbox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"outbox.js","names":[],"sources":["../../../src/types/schemas/outbox.ts"],"sourcesContent":["import { z } from \"zod\";\nimport { idSchema, jsonRecordSchema } from \"./shared.js\";\n\nexport const eventOutboxSchema = z.object({\n orgId: idSchema,\n id: idSchema,\n type: z.string(),\n payload: jsonRecordSchema,\n attempts: z.number().int(),\n nextAttemptAt: z.coerce.date(),\n lastError: z.string().nullable(),\n createdAt: z.coerce.date(),\n processedAt: z.coerce.date().nullable(),\n}).strict();\nexport type EventOutbox = z.output<typeof eventOutboxSchema>;\nexport type EventOutboxInput = z.input<typeof eventOutboxSchema>;\n"],"mappings":";;;AAGA,MAAa,oBAAoB,EAAE,OAAO;CACxC,OAAO;CACP,IAAI;CACJ,MAAM,EAAE,OAAO;CACf,SAAS;CACT,UAAU,EAAE,OAAO,CAAC,CAAC,IAAI;CACzB,eAAe,EAAE,OAAO,KAAK;CAC7B,WAAW,EAAE,OAAO,CAAC,CAAC,SAAS;CAC/B,WAAW,EAAE,OAAO,KAAK;CACzB,aAAa,EAAE,OAAO,KAAK,CAAC,CAAC,SAAS;AACxC,CAAC,CAAC,CAAC,OAAO"}
@@ -0,0 +1,53 @@
1
+ import { JsonValue } from "../shared.js";
2
+ import { z } from "zod";
3
+ //#region src/types/schemas/progress.d.ts
4
+ declare const progressTargetTypeSchema: z.ZodEnum<{
5
+ course: "course";
6
+ activity: "activity";
7
+ module: "module";
8
+ }>;
9
+ type ProgressTargetType = z.infer<typeof progressTargetTypeSchema>;
10
+ declare const progressRecordSchema: z.ZodObject<{
11
+ id: z.ZodString;
12
+ orgId: z.ZodString;
13
+ orgUserId: z.ZodString;
14
+ targetType: z.ZodEnum<{
15
+ course: "course";
16
+ activity: "activity";
17
+ module: "module";
18
+ }>;
19
+ targetId: z.ZodString;
20
+ startedAt: z.ZodCoercedDate<unknown>;
21
+ position: z.ZodNullable<z.ZodType<JsonValue, unknown, z.core.$ZodTypeInternals<JsonValue, unknown>>>;
22
+ completedAt: z.ZodNullable<z.ZodCoercedDate<unknown>>;
23
+ updatedAt: z.ZodCoercedDate<unknown>;
24
+ }, z.core.$strict>;
25
+ type ProgressRecord = z.output<typeof progressRecordSchema>;
26
+ type ProgressRecordInput = z.input<typeof progressRecordSchema>;
27
+ declare const progressTargetSchema: z.ZodObject<{
28
+ orgUserId: z.ZodString;
29
+ targetType: z.ZodEnum<{
30
+ course: "course";
31
+ activity: "activity";
32
+ module: "module";
33
+ }>;
34
+ targetId: z.ZodString;
35
+ }, z.core.$strict>;
36
+ type ProgressTarget = z.infer<typeof progressTargetSchema>;
37
+ declare const progressReportItemSchema: z.ZodObject<{
38
+ asset: z.ZodOptional<z.ZodString>;
39
+ completed: z.ZodOptional<z.ZodBoolean>;
40
+ }, z.core.$catchall<z.ZodType<JsonValue, unknown, z.core.$ZodTypeInternals<JsonValue, unknown>>>>;
41
+ type ProgressReportItem = z.infer<typeof progressReportItemSchema>;
42
+ declare const reportProgressInputSchema: z.ZodObject<{
43
+ orgUserId: z.ZodString;
44
+ activityId: z.ZodString;
45
+ reports: z.ZodArray<z.ZodObject<{
46
+ asset: z.ZodOptional<z.ZodString>;
47
+ completed: z.ZodOptional<z.ZodBoolean>;
48
+ }, z.core.$catchall<z.ZodType<JsonValue, unknown, z.core.$ZodTypeInternals<JsonValue, unknown>>>>>;
49
+ }, z.core.$strict>;
50
+ type ReportProgressInput = z.infer<typeof reportProgressInputSchema>;
51
+ //#endregion
52
+ export { ProgressRecord, ProgressRecordInput, ProgressReportItem, ProgressTarget, ProgressTargetType, ReportProgressInput, progressRecordSchema, progressReportItemSchema, progressTargetSchema, progressTargetTypeSchema, reportProgressInputSchema };
53
+ //# sourceMappingURL=progress.d.ts.map
@@ -0,0 +1,37 @@
1
+ import { idSchema, jsonValueSchema } from "./shared.js";
2
+ import { z } from "zod";
3
+ //#region src/types/schemas/progress.ts
4
+ const progressTargetTypeSchema = z.enum([
5
+ "activity",
6
+ "module",
7
+ "course"
8
+ ]);
9
+ const progressRecordSchema = z.object({
10
+ id: idSchema,
11
+ orgId: idSchema,
12
+ orgUserId: idSchema,
13
+ targetType: progressTargetTypeSchema,
14
+ targetId: idSchema,
15
+ startedAt: z.coerce.date(),
16
+ position: jsonValueSchema.nullable(),
17
+ completedAt: z.coerce.date().nullable(),
18
+ updatedAt: z.coerce.date()
19
+ }).strict();
20
+ const progressTargetSchema = z.object({
21
+ orgUserId: idSchema,
22
+ targetType: progressTargetTypeSchema,
23
+ targetId: idSchema
24
+ }).strict();
25
+ const progressReportItemSchema = z.object({
26
+ asset: z.string().optional(),
27
+ completed: z.boolean().optional()
28
+ }).catchall(jsonValueSchema);
29
+ const reportProgressInputSchema = z.object({
30
+ orgUserId: idSchema,
31
+ activityId: idSchema,
32
+ reports: z.array(progressReportItemSchema)
33
+ }).strict();
34
+ //#endregion
35
+ export { progressRecordSchema, progressReportItemSchema, progressTargetSchema, progressTargetTypeSchema, reportProgressInputSchema };
36
+
37
+ //# sourceMappingURL=progress.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"progress.js","names":[],"sources":["../../../src/types/schemas/progress.ts"],"sourcesContent":["import { z } from \"zod\";\nimport { idSchema, jsonValueSchema } from \"./shared.js\";\n\nexport const progressTargetTypeSchema = z.enum([\"activity\", \"module\", \"course\"]);\nexport type ProgressTargetType = z.infer<typeof progressTargetTypeSchema>;\n\nexport const progressRecordSchema = z.object({\n id: idSchema,\n orgId: idSchema,\n orgUserId: idSchema,\n targetType: progressTargetTypeSchema,\n targetId: idSchema,\n startedAt: z.coerce.date(),\n position: jsonValueSchema.nullable(),\n completedAt: z.coerce.date().nullable(),\n updatedAt: z.coerce.date(),\n}).strict();\nexport type ProgressRecord = z.output<typeof progressRecordSchema>;\nexport type ProgressRecordInput = z.input<typeof progressRecordSchema>;\n\nexport const progressTargetSchema = z.object({\n orgUserId: idSchema,\n targetType: progressTargetTypeSchema,\n targetId: idSchema,\n}).strict();\nexport type ProgressTarget = z.infer<typeof progressTargetSchema>;\n\nexport const progressReportItemSchema = z.object({\n asset: z.string().optional(),\n completed: z.boolean().optional(),\n}).catchall(jsonValueSchema);\nexport type ProgressReportItem = z.infer<typeof progressReportItemSchema>;\n\nexport const reportProgressInputSchema = z.object({\n orgUserId: idSchema,\n activityId: idSchema,\n reports: z.array(progressReportItemSchema),\n}).strict();\nexport type ReportProgressInput = z.infer<typeof reportProgressInputSchema>;\n"],"mappings":";;;AAGA,MAAa,2BAA2B,EAAE,KAAK;CAAC;CAAY;CAAU;AAAQ,CAAC;AAG/E,MAAa,uBAAuB,EAAE,OAAO;CAC3C,IAAI;CACJ,OAAO;CACP,WAAW;CACX,YAAY;CACZ,UAAU;CACV,WAAW,EAAE,OAAO,KAAK;CACzB,UAAU,gBAAgB,SAAS;CACnC,aAAa,EAAE,OAAO,KAAK,CAAC,CAAC,SAAS;CACtC,WAAW,EAAE,OAAO,KAAK;AAC3B,CAAC,CAAC,CAAC,OAAO;AAIV,MAAa,uBAAuB,EAAE,OAAO;CAC3C,WAAW;CACX,YAAY;CACZ,UAAU;AACZ,CAAC,CAAC,CAAC,OAAO;AAGV,MAAa,2BAA2B,EAAE,OAAO;CAC/C,OAAO,EAAE,OAAO,CAAC,CAAC,SAAS;CAC3B,WAAW,EAAE,QAAQ,CAAC,CAAC,SAAS;AAClC,CAAC,CAAC,CAAC,SAAS,eAAe;AAG3B,MAAa,4BAA4B,EAAE,OAAO;CAChD,WAAW;CACX,YAAY;CACZ,SAAS,EAAE,MAAM,wBAAwB;AAC3C,CAAC,CAAC,CAAC,OAAO"}
@@ -0,0 +1,16 @@
1
+ import { JsonValue } from "../shared.js";
2
+ import { z } from "zod";
3
+ //#region src/types/schemas/settings.d.ts
4
+ declare const settingSchema: z.ZodObject<{
5
+ orgId: z.ZodString;
6
+ namespace: z.ZodString;
7
+ scopeId: z.ZodString;
8
+ value: z.ZodRecord<z.ZodString, z.ZodType<JsonValue, unknown, z.core.$ZodTypeInternals<JsonValue, unknown>>>;
9
+ createdAt: z.ZodCoercedDate<unknown>;
10
+ updatedAt: z.ZodCoercedDate<unknown>;
11
+ }, z.core.$strict>;
12
+ type Setting = z.output<typeof settingSchema>;
13
+ type SettingInput = z.input<typeof settingSchema>;
14
+ //#endregion
15
+ export { Setting, SettingInput, settingSchema };
16
+ //# sourceMappingURL=settings.d.ts.map
@@ -0,0 +1,15 @@
1
+ import { idSchema, jsonRecordSchema } from "./shared.js";
2
+ import { z } from "zod";
3
+ //#region src/types/schemas/settings.ts
4
+ const settingSchema = z.object({
5
+ orgId: idSchema,
6
+ namespace: z.string(),
7
+ scopeId: idSchema,
8
+ value: jsonRecordSchema,
9
+ createdAt: z.coerce.date(),
10
+ updatedAt: z.coerce.date()
11
+ }).strict();
12
+ //#endregion
13
+ export { settingSchema };
14
+
15
+ //# sourceMappingURL=settings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settings.js","names":[],"sources":["../../../src/types/schemas/settings.ts"],"sourcesContent":["import { z } from \"zod\";\nimport { idSchema, jsonRecordSchema } from \"./shared.js\";\n\nexport const settingSchema = z.object({\n orgId: idSchema,\n namespace: z.string(),\n scopeId: idSchema,\n value: jsonRecordSchema,\n createdAt: z.coerce.date(),\n updatedAt: z.coerce.date(),\n}).strict();\nexport type Setting = z.output<typeof settingSchema>;\nexport type SettingInput = z.input<typeof settingSchema>;\n"],"mappings":";;;AAGA,MAAa,gBAAgB,EAAE,OAAO;CACpC,OAAO;CACP,WAAW,EAAE,OAAO;CACpB,SAAS;CACT,OAAO;CACP,WAAW,EAAE,OAAO,KAAK;CACzB,WAAW,EAAE,OAAO,KAAK;AAC3B,CAAC,CAAC,CAAC,OAAO"}
@@ -0,0 +1,13 @@
1
+ import { DomainEvent, EventMetadata, JsonValue } from "../shared.js";
2
+ import { z } from "zod";
3
+ //#region src/types/schemas/shared.d.ts
4
+ declare const idSchema: z.ZodString;
5
+ declare const isoDateStringSchema: z.ZodString;
6
+ declare const serializableDateSchema: z.ZodUnion<readonly [z.ZodPipe<z.ZodCoercedDate<unknown>, z.ZodTransform<string, Date>>, z.ZodString]>;
7
+ declare const jsonValueSchema: z.ZodType<JsonValue, unknown>;
8
+ declare const jsonRecordSchema: z.ZodRecord<z.ZodString, z.ZodType<JsonValue, unknown, z.core.$ZodTypeInternals<JsonValue, unknown>>>;
9
+ declare const eventMetadataSchema: z.ZodType<EventMetadata>;
10
+ declare const domainEventSchema: z.ZodType<DomainEvent>;
11
+ //#endregion
12
+ export { domainEventSchema, eventMetadataSchema, idSchema, isoDateStringSchema, jsonRecordSchema, jsonValueSchema, serializableDateSchema };
13
+ //# sourceMappingURL=shared.d.ts.map
@@ -0,0 +1,28 @@
1
+ import { z } from "zod";
2
+ //#region src/types/schemas/shared.ts
3
+ const idSchema = z.string().trim().min(1);
4
+ const isoDateStringSchema = z.string().trim().min(1);
5
+ const serializableDateSchema = z.union([z.coerce.date().transform((value) => value.toISOString()), isoDateStringSchema]);
6
+ const jsonValueSchema = z.lazy(() => z.union([
7
+ z.null(),
8
+ z.string(),
9
+ z.number().finite(),
10
+ z.boolean(),
11
+ z.array(jsonValueSchema),
12
+ z.record(z.string(), jsonValueSchema)
13
+ ]));
14
+ const jsonRecordSchema = z.record(z.string(), jsonValueSchema);
15
+ const eventMetadataSchema = z.record(z.string(), jsonValueSchema);
16
+ const domainEventSchema = z.object({
17
+ type: z.string().trim().min(1),
18
+ version: z.number().int().positive(),
19
+ id: idSchema,
20
+ orgId: idSchema,
21
+ occurredAt: isoDateStringSchema,
22
+ data: jsonValueSchema,
23
+ metadata: eventMetadataSchema.optional()
24
+ }).strict();
25
+ //#endregion
26
+ export { domainEventSchema, eventMetadataSchema, idSchema, isoDateStringSchema, jsonRecordSchema, jsonValueSchema, serializableDateSchema };
27
+
28
+ //# sourceMappingURL=shared.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.js","names":[],"sources":["../../../src/types/schemas/shared.ts"],"sourcesContent":["import { z } from \"zod\";\nimport type { DomainEvent, EventMetadata, JsonValue } from \"../shared.js\";\n\nexport const idSchema: z.ZodString = z.string().trim().min(1);\n\nexport const isoDateStringSchema = z.string().trim().min(1);\n\nexport const serializableDateSchema = z.union([\n z.coerce.date().transform((value) => value.toISOString()),\n isoDateStringSchema,\n]);\n\nexport const jsonValueSchema: z.ZodType<JsonValue, unknown> = z.lazy(() =>\n z.union([\n z.null(),\n z.string(),\n z.number().finite(),\n z.boolean(),\n z.array(jsonValueSchema),\n z.record(z.string(), jsonValueSchema),\n ]),\n);\n\nexport const jsonRecordSchema = z.record(z.string(), jsonValueSchema);\n\nexport const eventMetadataSchema: z.ZodType<EventMetadata> = z.record(z.string(), jsonValueSchema);\n\nexport const domainEventSchema: z.ZodType<DomainEvent> = z.object({\n type: z.string().trim().min(1),\n version: z.number().int().positive(),\n id: idSchema,\n orgId: idSchema,\n occurredAt: isoDateStringSchema,\n data: jsonValueSchema,\n metadata: eventMetadataSchema.optional(),\n}).strict();\n"],"mappings":";;AAGA,MAAa,WAAwB,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC;AAE5D,MAAa,sBAAsB,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC;AAE1D,MAAa,yBAAyB,EAAE,MAAM,CAC5C,EAAE,OAAO,KAAK,CAAC,CAAC,WAAW,UAAU,MAAM,YAAY,CAAC,GACxD,mBACF,CAAC;AAED,MAAa,kBAAiD,EAAE,WAC9D,EAAE,MAAM;CACN,EAAE,KAAK;CACP,EAAE,OAAO;CACT,EAAE,OAAO,CAAC,CAAC,OAAO;CAClB,EAAE,QAAQ;CACV,EAAE,MAAM,eAAe;CACvB,EAAE,OAAO,EAAE,OAAO,GAAG,eAAe;AACtC,CAAC,CACH;AAEA,MAAa,mBAAmB,EAAE,OAAO,EAAE,OAAO,GAAG,eAAe;AAEpE,MAAa,sBAAgD,EAAE,OAAO,EAAE,OAAO,GAAG,eAAe;AAEjG,MAAa,oBAA4C,EAAE,OAAO;CAChE,MAAM,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC;CAC7B,SAAS,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS;CACnC,IAAI;CACJ,OAAO;CACP,YAAY;CACZ,MAAM;CACN,UAAU,oBAAoB,SAAS;AACzC,CAAC,CAAC,CAAC,OAAO"}
@@ -0,0 +1,25 @@
1
+ //#region src/types/shared.d.ts
2
+ type JsonValue = null | string | number | boolean | JsonValue[] | {
3
+ readonly [key: string]: JsonValue;
4
+ };
5
+ type EventMetadata = Readonly<Record<string, JsonValue>>;
6
+ interface DomainEvent<TData = unknown, TType extends string = string, TVersion extends number = number> {
7
+ readonly type: TType;
8
+ readonly id: string;
9
+ readonly orgId: string;
10
+ readonly version: TVersion;
11
+ readonly occurredAt: string;
12
+ readonly data: TData;
13
+ readonly metadata?: EventMetadata | undefined;
14
+ }
15
+ type ContractNewDomainEvent<E extends DomainEvent = DomainEvent> = Omit<E, "id" | "occurredAt">;
16
+ type NewDomainEvent<E extends DomainEvent = DomainEvent> = ContractNewDomainEvent<E>;
17
+ interface Page<T> {
18
+ rows: T[];
19
+ total: number;
20
+ page: number;
21
+ pageSize: number;
22
+ }
23
+ //#endregion
24
+ export { ContractNewDomainEvent, DomainEvent, EventMetadata, JsonValue, NewDomainEvent, Page };
25
+ //# sourceMappingURL=shared.d.ts.map
@@ -0,0 +1 @@
1
+ export {};
package/package.json ADDED
@@ -0,0 +1,61 @@
1
+ {
2
+ "name": "@headless-lms/core",
3
+ "version": "0.1.0",
4
+ "type": "module",
5
+ "sideEffects": false,
6
+ "exports": {
7
+ "./types": {
8
+ "types": "./dist/types/index.d.ts",
9
+ "default": "./dist/types/index.js"
10
+ },
11
+ "./schemas": {
12
+ "types": "./dist/types/schemas/index.d.ts",
13
+ "default": "./dist/types/schemas/index.js"
14
+ },
15
+ "./shared/*": {
16
+ "types": "./dist/shared/*.d.ts",
17
+ "default": "./dist/shared/*.js"
18
+ },
19
+ "./reporting/*": {
20
+ "types": "./dist/reporting/*/index.d.ts",
21
+ "default": "./dist/reporting/*/index.js"
22
+ },
23
+ "./*": {
24
+ "types": "./dist/*/index.d.ts",
25
+ "default": "./dist/*/index.js"
26
+ }
27
+ },
28
+ "files": [
29
+ "dist"
30
+ ],
31
+ "dependencies": {
32
+ "ksuid": "^3.0.0",
33
+ "zod": "4.4.3"
34
+ },
35
+ "devDependencies": {
36
+ "@types/node": "^22.10.2",
37
+ "tsdown": "^0.22.9",
38
+ "typescript": "^5.7.2",
39
+ "vitest": "^2.1.8"
40
+ },
41
+ "description": "Framework-agnostic domain core for the headless LMS",
42
+ "license": "MIT",
43
+ "repository": {
44
+ "type": "git",
45
+ "url": "git+https://github.com/mdwt/headless-lms.git",
46
+ "directory": "packages/core"
47
+ },
48
+ "homepage": "https://github.com/mdwt/headless-lms#readme",
49
+ "bugs": {
50
+ "url": "https://github.com/mdwt/headless-lms/issues"
51
+ },
52
+ "publishConfig": {
53
+ "access": "public"
54
+ },
55
+ "scripts": {
56
+ "build": "tsdown",
57
+ "test": "vitest run",
58
+ "lint": "eslint src",
59
+ "typecheck": "tsc -p tsconfig.json --noEmit"
60
+ }
61
+ }