@headless-lms/core 0.4.0 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/events.d.ts +15 -9
- package/dist/assets/file-urls.d.ts +14 -7
- package/dist/assets/file-urls.js +15 -4
- package/dist/assets/file-urls.js.map +1 -1
- package/dist/assets/index.d.ts +4 -4
- package/dist/assets/index.js +3 -3
- package/dist/assets/ports.d.ts +34 -15
- package/dist/assets/service.d.ts +30 -14
- package/dist/assets/service.js +233 -54
- package/dist/assets/service.js.map +1 -1
- package/dist/automations/actions.js.map +1 -1
- package/dist/automations/catalog.js +68 -3
- package/dist/automations/catalog.js.map +1 -1
- package/dist/automations/community-derivations.js +16 -16
- package/dist/automations/community-derivations.js.map +1 -1
- package/dist/automations/community-mail.d.ts +34 -4
- package/dist/automations/community-mail.js +32 -4
- package/dist/automations/community-mail.js.map +1 -1
- package/dist/automations/event-permissions.d.ts +12 -0
- package/dist/automations/event-permissions.js +38 -0
- package/dist/automations/event-permissions.js.map +1 -0
- package/dist/automations/index.d.ts +2 -1
- package/dist/automations/index.js +2 -1
- package/dist/automations/notifications/applicable.d.ts +8 -0
- package/dist/automations/notifications/applicable.js +12 -0
- package/dist/automations/notifications/applicable.js.map +1 -0
- package/dist/automations/notifications/debounce.js +1 -1
- package/dist/automations/notifications/debounce.js.map +1 -1
- package/dist/automations/notifications/defaults.js +33 -3
- package/dist/automations/notifications/defaults.js.map +1 -1
- package/dist/automations/notifications/processor.js +1 -1
- package/dist/automations/notifications/processor.js.map +1 -1
- package/dist/automations/notifications/rules/content.js +60 -3
- package/dist/automations/notifications/rules/content.js.map +1 -1
- package/dist/automations/notifications/rules/discussion.js +29 -29
- package/dist/automations/notifications/rules/discussion.js.map +1 -1
- package/dist/automations/notifications/rules/entitlements.js +36 -9
- package/dist/automations/notifications/rules/entitlements.js.map +1 -1
- package/dist/automations/notifications/rules/events.d.ts +9 -0
- package/dist/automations/notifications/rules/events.js +27 -0
- package/dist/automations/notifications/rules/events.js.map +1 -0
- package/dist/automations/notifications/rules/organizations.js +17 -10
- package/dist/automations/notifications/rules/organizations.js.map +1 -1
- package/dist/automations/notifications/rules/recipients.js +0 -1
- package/dist/automations/notifications/rules/recipients.js.map +1 -1
- package/dist/automations/notifications/service.d.ts +8 -6
- package/dist/automations/notifications/service.js +12 -12
- package/dist/automations/notifications/service.js.map +1 -1
- package/dist/automations/notifications/types.js +94 -7
- package/dist/automations/notifications/types.js.map +1 -1
- package/dist/automations/ports.d.ts +30 -31
- package/dist/automations/service.d.ts +20 -17
- package/dist/automations/service.js +90 -61
- package/dist/automations/service.js.map +1 -1
- package/dist/content/event-sight.d.ts +11 -0
- package/dist/content/event-sight.js +11 -0
- package/dist/content/event-sight.js.map +1 -0
- package/dist/content/events.d.ts +465 -88
- package/dist/content/events.js +34 -1
- package/dist/content/events.js.map +1 -1
- package/dist/content/index.d.ts +6 -4
- package/dist/content/index.js +3 -1
- package/dist/content/jobs.d.ts +16 -0
- package/dist/content/jobs.js +37 -0
- package/dist/content/jobs.js.map +1 -0
- package/dist/content/model.d.ts +2 -2
- package/dist/content/notification-categories.d.ts +5 -4
- package/dist/content/notification-categories.js +15 -6
- package/dist/content/notification-categories.js.map +1 -1
- package/dist/content/ports.d.ts +113 -68
- package/dist/content/service.d.ts +103 -67
- package/dist/content/service.js +739 -152
- package/dist/content/service.js.map +1 -1
- package/dist/content/titles.d.ts +6 -3
- package/dist/content/titles.js +37 -24
- package/dist/content/titles.js.map +1 -1
- package/dist/content/types.d.ts +2 -2
- package/dist/discussion/authors.d.ts +4 -2
- package/dist/discussion/authors.js +9 -5
- package/dist/discussion/authors.js.map +1 -1
- package/dist/discussion/chats.d.ts +56 -37
- package/dist/discussion/chats.js +392 -160
- package/dist/discussion/chats.js.map +1 -1
- package/dist/discussion/events.d.ts +85 -47
- package/dist/discussion/events.js +41 -3
- package/dist/discussion/events.js.map +1 -1
- package/dist/discussion/index.d.ts +8 -5
- package/dist/discussion/index.js +5 -3
- package/dist/discussion/live.d.ts +106 -0
- package/dist/discussion/live.js +642 -0
- package/dist/discussion/live.js.map +1 -0
- package/dist/discussion/mentions.js +2 -2
- package/dist/discussion/mentions.js.map +1 -1
- package/dist/discussion/ports.d.ts +182 -100
- package/dist/discussion/ports.js.map +1 -1
- package/dist/discussion/posts.d.ts +45 -39
- package/dist/discussion/posts.js +266 -152
- package/dist/discussion/posts.js.map +1 -1
- package/dist/discussion/rules.d.ts +18 -0
- package/dist/discussion/rules.js +22 -0
- package/dist/discussion/rules.js.map +1 -0
- package/dist/discussion/service.d.ts +37 -31
- package/dist/discussion/service.js +250 -186
- package/dist/discussion/service.js.map +1 -1
- package/dist/discussion/subscriptions.d.ts +8 -8
- package/dist/discussion/subscriptions.js +28 -12
- package/dist/discussion/subscriptions.js.map +1 -1
- package/dist/discussion/titles.d.ts +4 -2
- package/dist/discussion/titles.js +27 -13
- package/dist/discussion/titles.js.map +1 -1
- package/dist/entitlements/events.d.ts +58 -58
- package/dist/entitlements/index.d.ts +4 -4
- package/dist/entitlements/index.js +2 -2
- package/dist/entitlements/model.d.ts +2 -2
- package/dist/entitlements/ports.d.ts +65 -39
- package/dist/entitlements/rules.d.ts +3 -6
- package/dist/entitlements/rules.js +5 -10
- package/dist/entitlements/rules.js.map +1 -1
- package/dist/entitlements/service.d.ts +40 -28
- package/dist/entitlements/service.js +369 -162
- package/dist/entitlements/service.js.map +1 -1
- package/dist/identity/devices.d.ts +3 -3
- package/dist/identity/devices.js +6 -4
- package/dist/identity/devices.js.map +1 -1
- package/dist/identity/index.d.ts +2 -2
- package/dist/identity/index.js +2 -2
- package/dist/identity/notification-settings.d.ts +1 -1
- package/dist/identity/notification-settings.js +2 -1
- package/dist/identity/notification-settings.js.map +1 -1
- package/dist/identity/ports.d.ts +7 -7
- package/dist/identity/service.d.ts +8 -7
- package/dist/identity/service.js +16 -12
- package/dist/identity/service.js.map +1 -1
- package/dist/integrations/events.d.ts +3 -3
- package/dist/integrations/ports.d.ts +9 -8
- package/dist/integrations/service.d.ts +9 -8
- package/dist/integrations/service.js +31 -14
- package/dist/integrations/service.js.map +1 -1
- package/dist/organizations/default-roles.d.ts +22 -0
- package/dist/organizations/default-roles.js +89 -0
- package/dist/organizations/default-roles.js.map +1 -0
- package/dist/organizations/effective-permissions.d.ts +47 -0
- package/dist/organizations/effective-permissions.js +118 -0
- package/dist/organizations/effective-permissions.js.map +1 -0
- package/dist/organizations/events.d.ts +326 -181
- package/dist/organizations/events.js +90 -18
- package/dist/organizations/events.js.map +1 -1
- package/dist/organizations/index.d.ts +14 -10
- package/dist/organizations/index.js +7 -3
- package/dist/organizations/members.d.ts +66 -8
- package/dist/organizations/members.js.map +1 -1
- package/dist/organizations/model.d.ts +2 -2
- package/dist/organizations/notification-catalog.d.ts +31 -0
- package/dist/organizations/notification-catalog.js +32 -0
- package/dist/organizations/notification-catalog.js.map +1 -0
- package/dist/organizations/notification-categories.d.ts +6 -4
- package/dist/organizations/notification-categories.js +25 -10
- package/dist/organizations/notification-categories.js.map +1 -1
- package/dist/organizations/org-roles.d.ts +33 -0
- package/dist/organizations/org-roles.js +49 -0
- package/dist/organizations/org-roles.js.map +1 -0
- package/dist/organizations/permissions.d.ts +311 -0
- package/dist/organizations/permissions.js +327 -0
- package/dist/organizations/permissions.js.map +1 -0
- package/dist/organizations/ports.d.ts +187 -65
- package/dist/organizations/service.d.ts +102 -35
- package/dist/organizations/service.js +1254 -327
- package/dist/organizations/service.js.map +1 -1
- package/dist/organizations/testing.d.ts +18 -0
- package/dist/organizations/testing.js +37 -0
- package/dist/organizations/testing.js.map +1 -0
- package/dist/organizations/types.d.ts +5 -16
- package/dist/progress/events.d.ts +14 -14
- package/dist/progress/index.d.ts +2 -2
- package/dist/progress/ports.d.ts +11 -3
- package/dist/progress/service.d.ts +6 -5
- package/dist/progress/service.js +21 -6
- package/dist/progress/service.js.map +1 -1
- package/dist/reporting/admin/index.d.ts +6 -4
- package/dist/reporting/admin/model.d.ts +36 -3
- package/dist/reporting/admin/ports.d.ts +39 -14
- package/dist/reporting/admin/service.d.ts +32 -11
- package/dist/reporting/admin/service.js +102 -18
- package/dist/reporting/admin/service.js.map +1 -1
- package/dist/reporting/events/index.d.ts +27 -0
- package/dist/reporting/events/index.js +20 -0
- package/dist/reporting/events/index.js.map +1 -0
- package/dist/reporting/member/calendar.d.ts +11 -0
- package/dist/reporting/member/calendar.js +75 -0
- package/dist/reporting/member/calendar.js.map +1 -0
- package/dist/reporting/member/index.d.ts +3 -2
- package/dist/reporting/member/model.d.ts +29 -5
- package/dist/reporting/member/ports.d.ts +49 -29
- package/dist/reporting/member/service.d.ts +57 -29
- package/dist/reporting/member/service.js +345 -114
- package/dist/reporting/member/service.js.map +1 -1
- package/dist/shared/actor.d.ts +23 -3
- package/dist/shared/errors.d.ts +2 -1
- package/dist/shared/errors.js +3 -1
- package/dist/shared/errors.js.map +1 -1
- package/dist/shared/id.d.ts +4 -0
- package/dist/shared/id.js +4 -0
- package/dist/shared/id.js.map +1 -1
- package/dist/shared/logger.d.ts +2 -1
- package/dist/shared/logger.js +10 -1
- package/dist/shared/logger.js.map +1 -1
- package/dist/shared/ports.d.ts +25 -5
- package/dist/types/content.d.ts +2 -2
- package/dist/types/discussion.d.ts +4 -5
- package/dist/types/email-templates.d.ts +22 -3
- package/dist/types/entitlements.d.ts +2 -2
- package/dist/types/identity.d.ts +13 -16
- package/dist/types/index.d.ts +9 -9
- package/dist/types/index.js +2 -1
- package/dist/types/notifications.d.ts +4 -4
- package/dist/types/organizations.d.ts +3 -2
- package/dist/types/ports.d.ts +8 -1
- package/dist/types/ports.js +7 -1
- package/dist/types/ports.js.map +1 -0
- package/dist/types/schemas/assets.d.ts +5 -5
- package/dist/types/schemas/assets.js +4 -3
- package/dist/types/schemas/assets.js.map +1 -1
- package/dist/types/schemas/content.d.ts +599 -13
- package/dist/types/schemas/content.js +219 -8
- package/dist/types/schemas/content.js.map +1 -1
- package/dist/types/schemas/discussion.d.ts +280 -57
- package/dist/types/schemas/discussion.js +77 -3
- package/dist/types/schemas/discussion.js.map +1 -1
- package/dist/types/schemas/entitlements.d.ts +21 -8
- package/dist/types/schemas/entitlements.js +11 -4
- package/dist/types/schemas/entitlements.js.map +1 -1
- package/dist/types/schemas/index.d.ts +5 -5
- package/dist/types/schemas/index.js +5 -5
- package/dist/types/schemas/notifications.d.ts +11 -10
- package/dist/types/schemas/notifications.js +3 -2
- package/dist/types/schemas/notifications.js.map +1 -1
- package/dist/types/schemas/organizations.d.ts +99 -60
- package/dist/types/schemas/organizations.js +80 -27
- package/dist/types/schemas/organizations.js.map +1 -1
- package/dist/types/schemas/progress.d.ts +3 -4
- package/dist/types/schemas/progress.js +0 -1
- package/dist/types/schemas/progress.js.map +1 -1
- package/package.json +1 -1
- package/dist/organizations/access-scopes.d.ts +0 -19
- package/dist/organizations/access-scopes.js +0 -89
- package/dist/organizations/access-scopes.js.map +0 -1
- package/dist/organizations/roles.d.ts +0 -19
- package/dist/organizations/roles.js +0 -82
- package/dist/organizations/roles.js.map +0 -1
|
@@ -1,31 +1,110 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
//#region src/types/schemas/organizations.d.ts
|
|
3
|
-
declare const
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
3
|
+
declare const levelSchema: z.ZodUnion<readonly [z.ZodLiteral<"org">, z.ZodLazy<z.ZodEnum<{
|
|
4
|
+
event: "event";
|
|
5
|
+
course: "course";
|
|
6
|
+
download: "download";
|
|
7
|
+
community: "community";
|
|
8
|
+
}>>]>;
|
|
9
|
+
type Level = z.infer<typeof levelSchema>;
|
|
10
|
+
declare const PERMISSION_KEYS: readonly ["organizations:read", "organizations:write", "api_keys:read", "api_keys:write", "api_keys:delete", "notification_categories:read", "notification_categories:write", "integrations:read", "integrations:write", "integrations:delete", "analytics:read", "people:read", "people:write", "people:delete", "roles:read", "roles:write", "roles:delete", "access:read", "access:write", "bundles:read", "bundles:write", "bundles:delete", "media:read", "media:write", "media:delete", "courses:read", "courses:write", "courses:delete", "courses:moderate", "progress:read", "downloads:read", "downloads:write", "downloads:delete", "communities:read", "communities:write", "communities:delete", "communities:moderate", "events:read", "events:write", "events:delete", "automations:read", "automations:write", "automations:delete"];
|
|
11
|
+
declare const permissionSchema: z.ZodEnum<{
|
|
12
|
+
"organizations:read": "organizations:read";
|
|
13
|
+
"organizations:write": "organizations:write";
|
|
14
|
+
"api_keys:read": "api_keys:read";
|
|
15
|
+
"api_keys:write": "api_keys:write";
|
|
16
|
+
"api_keys:delete": "api_keys:delete";
|
|
17
|
+
"notification_categories:read": "notification_categories:read";
|
|
18
|
+
"notification_categories:write": "notification_categories:write";
|
|
19
|
+
"integrations:read": "integrations:read";
|
|
20
|
+
"integrations:write": "integrations:write";
|
|
21
|
+
"integrations:delete": "integrations:delete";
|
|
22
|
+
"analytics:read": "analytics:read";
|
|
23
|
+
"people:read": "people:read";
|
|
24
|
+
"people:write": "people:write";
|
|
25
|
+
"people:delete": "people:delete";
|
|
26
|
+
"roles:read": "roles:read";
|
|
27
|
+
"roles:write": "roles:write";
|
|
28
|
+
"roles:delete": "roles:delete";
|
|
29
|
+
"access:read": "access:read";
|
|
30
|
+
"access:write": "access:write";
|
|
31
|
+
"bundles:read": "bundles:read";
|
|
32
|
+
"bundles:write": "bundles:write";
|
|
33
|
+
"bundles:delete": "bundles:delete";
|
|
34
|
+
"media:read": "media:read";
|
|
35
|
+
"media:write": "media:write";
|
|
36
|
+
"media:delete": "media:delete";
|
|
37
|
+
"courses:read": "courses:read";
|
|
38
|
+
"courses:write": "courses:write";
|
|
39
|
+
"courses:delete": "courses:delete";
|
|
40
|
+
"courses:moderate": "courses:moderate";
|
|
41
|
+
"progress:read": "progress:read";
|
|
42
|
+
"downloads:read": "downloads:read";
|
|
43
|
+
"downloads:write": "downloads:write";
|
|
44
|
+
"downloads:delete": "downloads:delete";
|
|
45
|
+
"communities:read": "communities:read";
|
|
46
|
+
"communities:write": "communities:write";
|
|
47
|
+
"communities:delete": "communities:delete";
|
|
48
|
+
"communities:moderate": "communities:moderate";
|
|
49
|
+
"events:read": "events:read";
|
|
50
|
+
"events:write": "events:write";
|
|
51
|
+
"events:delete": "events:delete";
|
|
52
|
+
"automations:read": "automations:read";
|
|
53
|
+
"automations:write": "automations:write";
|
|
54
|
+
"automations:delete": "automations:delete";
|
|
9
55
|
}>;
|
|
10
|
-
type
|
|
56
|
+
type Permission = z.infer<typeof permissionSchema>;
|
|
57
|
+
declare const roleKeySchema: z.ZodString;
|
|
58
|
+
type RoleKey = z.infer<typeof roleKeySchema>;
|
|
59
|
+
declare const orgRoleRowSchema: z.ZodObject<{
|
|
60
|
+
id: z.ZodString;
|
|
61
|
+
orgId: z.ZodString;
|
|
62
|
+
key: z.ZodString;
|
|
63
|
+
name: z.ZodNullable<z.ZodString>;
|
|
64
|
+
description: z.ZodNullable<z.ZodString>;
|
|
65
|
+
base: z.ZodString;
|
|
66
|
+
levels: z.ZodNullable<z.ZodArray<z.ZodUnion<readonly [z.ZodLiteral<"org">, z.ZodLazy<z.ZodEnum<{
|
|
67
|
+
event: "event";
|
|
68
|
+
course: "course";
|
|
69
|
+
download: "download";
|
|
70
|
+
community: "community";
|
|
71
|
+
}>>]>>>;
|
|
72
|
+
permissions: z.ZodRecord<z.ZodString, z.ZodBoolean>;
|
|
73
|
+
team: z.ZodNullable<z.ZodBoolean>;
|
|
74
|
+
createdAt: z.ZodCoercedDate<unknown>;
|
|
75
|
+
updatedAt: z.ZodCoercedDate<unknown>;
|
|
76
|
+
}, z.core.$strict>;
|
|
77
|
+
type OrgRoleRow = z.output<typeof orgRoleRowSchema>;
|
|
78
|
+
declare const roleAssignmentSchema: z.ZodObject<{
|
|
79
|
+
id: z.ZodString;
|
|
80
|
+
orgId: z.ZodString;
|
|
81
|
+
orgUserId: z.ZodString;
|
|
82
|
+
roleKey: z.ZodString;
|
|
83
|
+
contentId: z.ZodNullable<z.ZodString>;
|
|
84
|
+
contentType: z.ZodNullable<z.ZodLazy<z.ZodEnum<{
|
|
85
|
+
event: "event";
|
|
86
|
+
course: "course";
|
|
87
|
+
download: "download";
|
|
88
|
+
community: "community";
|
|
89
|
+
}>>>;
|
|
90
|
+
assignedBy: z.ZodString;
|
|
91
|
+
createdAt: z.ZodCoercedDate<unknown>;
|
|
92
|
+
}, z.core.$strict>;
|
|
93
|
+
type RoleAssignment = z.output<typeof roleAssignmentSchema>;
|
|
11
94
|
declare const orgUserStatusSchema: z.ZodEnum<{
|
|
12
95
|
active: "active";
|
|
13
96
|
invited: "invited";
|
|
14
97
|
}>;
|
|
15
98
|
type OrgUserStatus = z.infer<typeof orgUserStatusSchema>;
|
|
16
|
-
declare const
|
|
17
|
-
|
|
18
|
-
instructor: "instructor";
|
|
19
|
-
moderator: "moderator";
|
|
20
|
-
student: "student";
|
|
21
|
-
}>;
|
|
22
|
-
type InviteRole = z.infer<typeof inviteRoleSchema>;
|
|
99
|
+
declare const organizationMetadataSchema: z.ZodRecord<z.ZodString, z.ZodString>;
|
|
100
|
+
type OrganizationMetadata = z.output<typeof organizationMetadataSchema>;
|
|
23
101
|
declare const organizationSchema: z.ZodObject<{
|
|
24
102
|
id: z.ZodString;
|
|
25
103
|
externalId: z.ZodNullable<z.ZodString>;
|
|
26
104
|
name: z.ZodString;
|
|
27
105
|
slug: z.ZodString;
|
|
28
106
|
ownerId: z.ZodString;
|
|
107
|
+
metadata: z.ZodRecord<z.ZodString, z.ZodString>;
|
|
29
108
|
createdAt: z.ZodCoercedDate<unknown>;
|
|
30
109
|
updatedAt: z.ZodCoercedDate<unknown>;
|
|
31
110
|
}, z.core.$strict>;
|
|
@@ -35,13 +114,6 @@ declare const orgUserSchema: z.ZodObject<{
|
|
|
35
114
|
id: z.ZodString;
|
|
36
115
|
orgId: z.ZodString;
|
|
37
116
|
userId: z.ZodString;
|
|
38
|
-
role: z.ZodEnum<{
|
|
39
|
-
owner: "owner";
|
|
40
|
-
admin: "admin";
|
|
41
|
-
instructor: "instructor";
|
|
42
|
-
moderator: "moderator";
|
|
43
|
-
student: "student";
|
|
44
|
-
}>;
|
|
45
117
|
status: z.ZodEnum<{
|
|
46
118
|
active: "active";
|
|
47
119
|
invited: "invited";
|
|
@@ -63,17 +135,12 @@ declare const inviteSchema: z.ZodObject<{
|
|
|
63
135
|
id: z.ZodString;
|
|
64
136
|
orgId: z.ZodString;
|
|
65
137
|
email: z.ZodEmail;
|
|
66
|
-
|
|
67
|
-
admin: "admin";
|
|
68
|
-
instructor: "instructor";
|
|
69
|
-
moderator: "moderator";
|
|
70
|
-
student: "student";
|
|
71
|
-
}>;
|
|
138
|
+
roleKey: z.ZodString;
|
|
72
139
|
status: z.ZodEnum<{
|
|
73
140
|
pending: "pending";
|
|
141
|
+
canceled: "canceled";
|
|
74
142
|
accepted: "accepted";
|
|
75
143
|
rejected: "rejected";
|
|
76
|
-
canceled: "canceled";
|
|
77
144
|
}>;
|
|
78
145
|
invitedBy: z.ZodString;
|
|
79
146
|
tokenHash: z.ZodNullable<z.ZodString>;
|
|
@@ -92,25 +159,11 @@ type NewOrganizationInput = z.infer<typeof newOrganizationInputSchema>;
|
|
|
92
159
|
declare const addOrgUserInputSchema: z.ZodObject<{
|
|
93
160
|
orgId: z.ZodString;
|
|
94
161
|
userId: z.ZodString;
|
|
95
|
-
role: z.ZodEnum<{
|
|
96
|
-
owner: "owner";
|
|
97
|
-
admin: "admin";
|
|
98
|
-
instructor: "instructor";
|
|
99
|
-
moderator: "moderator";
|
|
100
|
-
student: "student";
|
|
101
|
-
}>;
|
|
102
162
|
}, z.core.$strict>;
|
|
103
163
|
type AddOrgUserInput = z.infer<typeof addOrgUserInputSchema>;
|
|
104
164
|
declare const createOrgUserInputSchema: z.ZodObject<{
|
|
105
165
|
orgId: z.ZodString;
|
|
106
166
|
userId: z.ZodString;
|
|
107
|
-
role: z.ZodEnum<{
|
|
108
|
-
owner: "owner";
|
|
109
|
-
admin: "admin";
|
|
110
|
-
instructor: "instructor";
|
|
111
|
-
moderator: "moderator";
|
|
112
|
-
student: "student";
|
|
113
|
-
}>;
|
|
114
167
|
status: z.ZodOptional<z.ZodEnum<{
|
|
115
168
|
active: "active";
|
|
116
169
|
invited: "invited";
|
|
@@ -118,13 +171,6 @@ declare const createOrgUserInputSchema: z.ZodObject<{
|
|
|
118
171
|
}, z.core.$strict>;
|
|
119
172
|
type CreateOrgUserInput = z.infer<typeof createOrgUserInputSchema>;
|
|
120
173
|
declare const updateOrgUserInputSchema: z.ZodObject<{
|
|
121
|
-
role: z.ZodOptional<z.ZodEnum<{
|
|
122
|
-
owner: "owner";
|
|
123
|
-
admin: "admin";
|
|
124
|
-
instructor: "instructor";
|
|
125
|
-
moderator: "moderator";
|
|
126
|
-
student: "student";
|
|
127
|
-
}>>;
|
|
128
174
|
status: z.ZodOptional<z.ZodEnum<{
|
|
129
175
|
active: "active";
|
|
130
176
|
invited: "invited";
|
|
@@ -132,26 +178,19 @@ declare const updateOrgUserInputSchema: z.ZodObject<{
|
|
|
132
178
|
}, z.core.$strict>;
|
|
133
179
|
type UpdateOrgUserInput = z.infer<typeof updateOrgUserInputSchema>;
|
|
134
180
|
declare const createInviteInputSchema: z.ZodObject<{
|
|
135
|
-
orgId: z.ZodString;
|
|
136
181
|
email: z.ZodEmail;
|
|
137
|
-
|
|
138
|
-
admin: "admin";
|
|
139
|
-
instructor: "instructor";
|
|
140
|
-
moderator: "moderator";
|
|
141
|
-
student: "student";
|
|
142
|
-
}>;
|
|
143
|
-
inviterUserId: z.ZodString;
|
|
182
|
+
roleKey: z.ZodDefault<z.ZodString>;
|
|
144
183
|
firstName: z.ZodOptional<z.ZodString>;
|
|
145
184
|
lastName: z.ZodOptional<z.ZodString>;
|
|
146
185
|
sendEmail: z.ZodOptional<z.ZodBoolean>;
|
|
147
186
|
}, z.core.$strict>;
|
|
148
|
-
type CreateInviteInput = z.
|
|
187
|
+
type CreateInviteInput = z.input<typeof createInviteInputSchema>;
|
|
149
188
|
declare const acceptInviteInputSchema: z.ZodObject<{
|
|
150
189
|
token: z.ZodString;
|
|
151
|
-
|
|
190
|
+
authUserId: z.ZodString;
|
|
152
191
|
email: z.ZodEmail;
|
|
153
192
|
}, z.core.$strict>;
|
|
154
193
|
type AcceptInviteInput = z.infer<typeof acceptInviteInputSchema>;
|
|
155
194
|
//#endregion
|
|
156
|
-
export { AcceptInviteInput, AddOrgUserInput, CreateInviteInput, CreateOrgUserInput, Invite, InviteInput,
|
|
195
|
+
export { AcceptInviteInput, AddOrgUserInput, CreateInviteInput, CreateOrgUserInput, Invite, InviteInput, Level, NewOrganizationInput, OrgRoleRow, OrgUser, OrgUserInput, OrgUserProfile, OrgUserStatus, Organization, OrganizationInput, OrganizationMetadata, PERMISSION_KEYS, Permission, RoleAssignment, RoleKey, UpdateOrgUserInput, acceptInviteInputSchema, addOrgUserInputSchema, createInviteInputSchema, createOrgUserInputSchema, inviteSchema, levelSchema, newOrganizationInputSchema, orgRoleRowSchema, orgUserProfileSchema, orgUserSchema, orgUserStatusSchema, organizationMetadataSchema, organizationSchema, permissionSchema, roleAssignmentSchema, roleKeySchema, updateOrgUserInputSchema };
|
|
157
196
|
//# sourceMappingURL=organizations.d.ts.map
|
|
@@ -1,26 +1,87 @@
|
|
|
1
1
|
import { emailSchema, idSchema } from "./shared.js";
|
|
2
|
+
import { contentTypeSchema } from "./content.js";
|
|
2
3
|
import { z } from "zod";
|
|
3
4
|
//#region src/types/schemas/organizations.ts
|
|
4
|
-
const
|
|
5
|
-
|
|
6
|
-
"
|
|
7
|
-
"
|
|
8
|
-
"
|
|
9
|
-
"
|
|
10
|
-
|
|
5
|
+
const levelSchema = z.union([z.literal("org"), z.lazy(() => contentTypeSchema)]);
|
|
6
|
+
const PERMISSION_KEYS = [
|
|
7
|
+
"organizations:read",
|
|
8
|
+
"organizations:write",
|
|
9
|
+
"api_keys:read",
|
|
10
|
+
"api_keys:write",
|
|
11
|
+
"api_keys:delete",
|
|
12
|
+
"notification_categories:read",
|
|
13
|
+
"notification_categories:write",
|
|
14
|
+
"integrations:read",
|
|
15
|
+
"integrations:write",
|
|
16
|
+
"integrations:delete",
|
|
17
|
+
"analytics:read",
|
|
18
|
+
"people:read",
|
|
19
|
+
"people:write",
|
|
20
|
+
"people:delete",
|
|
21
|
+
"roles:read",
|
|
22
|
+
"roles:write",
|
|
23
|
+
"roles:delete",
|
|
24
|
+
"access:read",
|
|
25
|
+
"access:write",
|
|
26
|
+
"bundles:read",
|
|
27
|
+
"bundles:write",
|
|
28
|
+
"bundles:delete",
|
|
29
|
+
"media:read",
|
|
30
|
+
"media:write",
|
|
31
|
+
"media:delete",
|
|
32
|
+
"courses:read",
|
|
33
|
+
"courses:write",
|
|
34
|
+
"courses:delete",
|
|
35
|
+
"courses:moderate",
|
|
36
|
+
"progress:read",
|
|
37
|
+
"downloads:read",
|
|
38
|
+
"downloads:write",
|
|
39
|
+
"downloads:delete",
|
|
40
|
+
"communities:read",
|
|
41
|
+
"communities:write",
|
|
42
|
+
"communities:delete",
|
|
43
|
+
"communities:moderate",
|
|
44
|
+
"events:read",
|
|
45
|
+
"events:write",
|
|
46
|
+
"events:delete",
|
|
47
|
+
"automations:read",
|
|
48
|
+
"automations:write",
|
|
49
|
+
"automations:delete"
|
|
50
|
+
];
|
|
51
|
+
const permissionSchema = z.enum(PERMISSION_KEYS);
|
|
52
|
+
const roleKeySchema = z.string().trim().min(1).max(64).regex(/^[a-z][a-zA-Z0-9_]*$/, "A role key starts with a lowercase letter and holds letters, digits and underscores");
|
|
53
|
+
const orgRoleRowSchema = z.object({
|
|
54
|
+
id: idSchema,
|
|
55
|
+
orgId: idSchema,
|
|
56
|
+
key: z.string(),
|
|
57
|
+
name: z.string().nullable(),
|
|
58
|
+
description: z.string().nullable(),
|
|
59
|
+
base: z.string(),
|
|
60
|
+
levels: z.array(levelSchema).nullable(),
|
|
61
|
+
permissions: z.record(z.string(), z.boolean()),
|
|
62
|
+
team: z.boolean().nullable(),
|
|
63
|
+
createdAt: z.coerce.date(),
|
|
64
|
+
updatedAt: z.coerce.date()
|
|
65
|
+
}).strict();
|
|
66
|
+
const roleAssignmentSchema = z.object({
|
|
67
|
+
id: idSchema,
|
|
68
|
+
orgId: idSchema,
|
|
69
|
+
orgUserId: idSchema,
|
|
70
|
+
roleKey: z.string(),
|
|
71
|
+
contentId: idSchema.nullable(),
|
|
72
|
+
contentType: z.lazy(() => contentTypeSchema).nullable(),
|
|
73
|
+
assignedBy: z.string(),
|
|
74
|
+
createdAt: z.coerce.date()
|
|
75
|
+
}).strict();
|
|
11
76
|
const orgUserStatusSchema = z.enum(["invited", "active"]);
|
|
12
|
-
const
|
|
13
|
-
"admin",
|
|
14
|
-
"instructor",
|
|
15
|
-
"moderator",
|
|
16
|
-
"student"
|
|
17
|
-
]);
|
|
77
|
+
const organizationMetadataSchema = z.record(z.string(), z.string());
|
|
18
78
|
const organizationSchema = z.object({
|
|
19
79
|
id: idSchema,
|
|
20
80
|
externalId: idSchema.nullable(),
|
|
21
81
|
name: z.string(),
|
|
22
82
|
slug: z.string(),
|
|
23
83
|
ownerId: idSchema,
|
|
84
|
+
metadata: organizationMetadataSchema,
|
|
24
85
|
createdAt: z.coerce.date(),
|
|
25
86
|
updatedAt: z.coerce.date()
|
|
26
87
|
}).strict();
|
|
@@ -28,7 +89,6 @@ const orgUserSchema = z.object({
|
|
|
28
89
|
id: idSchema,
|
|
29
90
|
orgId: idSchema,
|
|
30
91
|
userId: idSchema,
|
|
31
|
-
role: roleSchema,
|
|
32
92
|
status: orgUserStatusSchema,
|
|
33
93
|
createdAt: z.coerce.date(),
|
|
34
94
|
updatedAt: z.coerce.date()
|
|
@@ -44,7 +104,7 @@ const inviteSchema = z.object({
|
|
|
44
104
|
id: idSchema,
|
|
45
105
|
orgId: idSchema,
|
|
46
106
|
email: emailSchema,
|
|
47
|
-
|
|
107
|
+
roleKey: z.string(),
|
|
48
108
|
status: z.enum([
|
|
49
109
|
"pending",
|
|
50
110
|
"accepted",
|
|
@@ -64,34 +124,27 @@ const newOrganizationInputSchema = z.object({
|
|
|
64
124
|
}).strict();
|
|
65
125
|
const addOrgUserInputSchema = z.object({
|
|
66
126
|
orgId: idSchema,
|
|
67
|
-
userId: idSchema
|
|
68
|
-
role: roleSchema
|
|
127
|
+
userId: idSchema
|
|
69
128
|
}).strict();
|
|
70
129
|
const createOrgUserInputSchema = z.object({
|
|
71
130
|
orgId: idSchema,
|
|
72
131
|
userId: idSchema,
|
|
73
|
-
role: roleSchema,
|
|
74
|
-
status: orgUserStatusSchema.optional()
|
|
75
|
-
}).strict();
|
|
76
|
-
const updateOrgUserInputSchema = z.object({
|
|
77
|
-
role: roleSchema.optional(),
|
|
78
132
|
status: orgUserStatusSchema.optional()
|
|
79
133
|
}).strict();
|
|
134
|
+
const updateOrgUserInputSchema = z.object({ status: orgUserStatusSchema.optional() }).strict();
|
|
80
135
|
const createInviteInputSchema = z.object({
|
|
81
|
-
orgId: idSchema,
|
|
82
136
|
email: emailSchema,
|
|
83
|
-
|
|
84
|
-
inviterUserId: idSchema,
|
|
137
|
+
roleKey: roleKeySchema.default("member"),
|
|
85
138
|
firstName: z.string().optional(),
|
|
86
139
|
lastName: z.string().optional(),
|
|
87
140
|
sendEmail: z.boolean().optional()
|
|
88
141
|
}).strict();
|
|
89
142
|
const acceptInviteInputSchema = z.object({
|
|
90
143
|
token: z.string().trim().min(1),
|
|
91
|
-
|
|
144
|
+
authUserId: idSchema,
|
|
92
145
|
email: emailSchema
|
|
93
146
|
}).strict();
|
|
94
147
|
//#endregion
|
|
95
|
-
export { acceptInviteInputSchema, addOrgUserInputSchema, createInviteInputSchema, createOrgUserInputSchema,
|
|
148
|
+
export { PERMISSION_KEYS, acceptInviteInputSchema, addOrgUserInputSchema, createInviteInputSchema, createOrgUserInputSchema, inviteSchema, levelSchema, newOrganizationInputSchema, orgRoleRowSchema, orgUserProfileSchema, orgUserSchema, orgUserStatusSchema, organizationMetadataSchema, organizationSchema, permissionSchema, roleAssignmentSchema, roleKeySchema, updateOrgUserInputSchema };
|
|
96
149
|
|
|
97
150
|
//# sourceMappingURL=organizations.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"organizations.js","names":[],"sources":["../../../src/types/schemas/organizations.ts"],"sourcesContent":["import { z } from 'zod';\nimport { idSchema, emailSchema } from './shared.js';\n\nexport const
|
|
1
|
+
{"version":3,"file":"organizations.js","names":[],"sources":["../../../src/types/schemas/organizations.ts"],"sourcesContent":["import { z } from 'zod';\nimport { idSchema, emailSchema } from './shared.js';\nimport { contentTypeSchema } from './content.js';\n\nexport const levelSchema = z.union([z.literal('org'), z.lazy(() => contentTypeSchema)]);\nexport type Level = z.infer<typeof levelSchema>;\n\nexport const PERMISSION_KEYS = [\n 'organizations:read',\n 'organizations:write',\n 'api_keys:read',\n 'api_keys:write',\n 'api_keys:delete',\n 'notification_categories:read',\n 'notification_categories:write',\n 'integrations:read',\n 'integrations:write',\n 'integrations:delete',\n 'analytics:read',\n 'people:read',\n 'people:write',\n 'people:delete',\n 'roles:read',\n 'roles:write',\n 'roles:delete',\n 'access:read',\n 'access:write',\n 'bundles:read',\n 'bundles:write',\n 'bundles:delete',\n 'media:read',\n 'media:write',\n 'media:delete',\n 'courses:read',\n 'courses:write',\n 'courses:delete',\n 'courses:moderate',\n 'progress:read',\n 'downloads:read',\n 'downloads:write',\n 'downloads:delete',\n 'communities:read',\n 'communities:write',\n 'communities:delete',\n 'communities:moderate',\n 'events:read',\n 'events:write',\n 'events:delete',\n 'automations:read',\n 'automations:write',\n 'automations:delete',\n] as const;\n\nexport const permissionSchema = z.enum(PERMISSION_KEYS);\nexport type Permission = z.infer<typeof permissionSchema>;\n\nexport const roleKeySchema = z\n .string()\n .trim()\n .min(1)\n .max(64)\n .regex(\n /^[a-z][a-zA-Z0-9_]*$/,\n 'A role key starts with a lowercase letter and holds letters, digits and underscores',\n );\nexport type RoleKey = z.infer<typeof roleKeySchema>;\n\nexport const orgRoleRowSchema = z\n .object({\n id: idSchema,\n orgId: idSchema,\n key: z.string(),\n name: z.string().nullable(),\n description: z.string().nullable(),\n base: z.string(),\n levels: z.array(levelSchema).nullable(),\n permissions: z.record(z.string(), z.boolean()),\n team: z.boolean().nullable(),\n createdAt: z.coerce.date(),\n updatedAt: z.coerce.date(),\n })\n .strict();\nexport type OrgRoleRow = z.output<typeof orgRoleRowSchema>;\n\nexport const roleAssignmentSchema = z\n .object({\n id: idSchema,\n orgId: idSchema,\n orgUserId: idSchema,\n roleKey: z.string(),\n contentId: idSchema.nullable(),\n contentType: z.lazy(() => contentTypeSchema).nullable(),\n assignedBy: z.string(),\n createdAt: z.coerce.date(),\n })\n .strict();\nexport type RoleAssignment = z.output<typeof roleAssignmentSchema>;\n\nexport const orgUserStatusSchema = z.enum(['invited', 'active']);\nexport type OrgUserStatus = z.infer<typeof orgUserStatusSchema>;\n\nexport const organizationMetadataSchema = z.record(z.string(), z.string());\nexport type OrganizationMetadata = z.output<typeof organizationMetadataSchema>;\n\nexport const organizationSchema = z\n .object({\n id: idSchema,\n externalId: idSchema.nullable(),\n name: z.string(),\n slug: z.string(),\n ownerId: idSchema,\n metadata: organizationMetadataSchema,\n createdAt: z.coerce.date(),\n updatedAt: z.coerce.date(),\n })\n .strict();\nexport type Organization = z.output<typeof organizationSchema>;\nexport type OrganizationInput = z.input<typeof organizationSchema>;\n\nexport const orgUserSchema = z\n .object({\n id: idSchema,\n orgId: idSchema,\n userId: idSchema,\n status: orgUserStatusSchema,\n createdAt: z.coerce.date(),\n updatedAt: z.coerce.date(),\n })\n .strict();\nexport type OrgUser = z.output<typeof orgUserSchema>;\nexport type OrgUserInput = z.input<typeof orgUserSchema>;\n\nexport const orgUserProfileSchema = z\n .object({\n id: idSchema,\n firstName: z.string().nullable(),\n lastName: z.string().nullable(),\n email: emailSchema,\n image: z.string().nullable(),\n })\n .strict();\nexport type OrgUserProfile = z.infer<typeof orgUserProfileSchema>;\n\nexport const inviteSchema = z\n .object({\n id: idSchema,\n orgId: idSchema,\n email: emailSchema,\n roleKey: z.string(),\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 updatedAt: z.coerce.date(),\n })\n .strict();\nexport type Invite = z.output<typeof inviteSchema>;\nexport type InviteInput = z.input<typeof inviteSchema>;\n\nexport const newOrganizationInputSchema = z\n .object({\n name: z.string(),\n slug: z.string(),\n logo: z.string().optional(),\n })\n .strict();\nexport type NewOrganizationInput = z.infer<typeof newOrganizationInputSchema>;\n\nexport const addOrgUserInputSchema = z\n .object({\n orgId: idSchema,\n userId: idSchema,\n })\n .strict();\nexport type AddOrgUserInput = z.infer<typeof addOrgUserInputSchema>;\n\nexport const createOrgUserInputSchema = z\n .object({\n orgId: idSchema,\n userId: idSchema,\n status: orgUserStatusSchema.optional(),\n })\n .strict();\nexport type CreateOrgUserInput = z.infer<typeof createOrgUserInputSchema>;\n\nexport const updateOrgUserInputSchema = z\n .object({\n status: orgUserStatusSchema.optional(),\n })\n .strict();\nexport type UpdateOrgUserInput = z.infer<typeof updateOrgUserInputSchema>;\n\nexport const createInviteInputSchema = z\n .object({\n email: emailSchema,\n roleKey: roleKeySchema.default('member'),\n firstName: z.string().optional(),\n lastName: z.string().optional(),\n sendEmail: z.boolean().optional(),\n })\n .strict();\nexport type CreateInviteInput = z.input<typeof createInviteInputSchema>;\n\nexport const acceptInviteInputSchema = z\n .object({\n token: z.string().trim().min(1),\n authUserId: idSchema,\n email: emailSchema,\n })\n .strict();\nexport type AcceptInviteInput = z.infer<typeof acceptInviteInputSchema>;\n"],"mappings":"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"}
|
|
@@ -2,9 +2,9 @@ import { JsonValue } from "../shared.js";
|
|
|
2
2
|
import { z } from "zod";
|
|
3
3
|
//#region src/types/schemas/progress.d.ts
|
|
4
4
|
declare const progressTargetTypeSchema: z.ZodEnum<{
|
|
5
|
+
course: "course";
|
|
5
6
|
activity: "activity";
|
|
6
7
|
module: "module";
|
|
7
|
-
course: "course";
|
|
8
8
|
}>;
|
|
9
9
|
type ProgressTargetType = z.infer<typeof progressTargetTypeSchema>;
|
|
10
10
|
declare const progressRecordSchema: z.ZodObject<{
|
|
@@ -12,9 +12,9 @@ declare const progressRecordSchema: z.ZodObject<{
|
|
|
12
12
|
orgId: z.ZodString;
|
|
13
13
|
orgUserId: z.ZodString;
|
|
14
14
|
targetType: z.ZodEnum<{
|
|
15
|
+
course: "course";
|
|
15
16
|
activity: "activity";
|
|
16
17
|
module: "module";
|
|
17
|
-
course: "course";
|
|
18
18
|
}>;
|
|
19
19
|
targetId: z.ZodString;
|
|
20
20
|
startedAt: z.ZodCoercedDate<unknown>;
|
|
@@ -28,9 +28,9 @@ type ProgressRecordInput = z.input<typeof progressRecordSchema>;
|
|
|
28
28
|
declare const progressTargetSchema: z.ZodObject<{
|
|
29
29
|
orgUserId: z.ZodString;
|
|
30
30
|
targetType: z.ZodEnum<{
|
|
31
|
+
course: "course";
|
|
31
32
|
activity: "activity";
|
|
32
33
|
module: "module";
|
|
33
|
-
course: "course";
|
|
34
34
|
}>;
|
|
35
35
|
targetId: z.ZodString;
|
|
36
36
|
}, z.core.$strict>;
|
|
@@ -41,7 +41,6 @@ declare const progressReportItemSchema: z.ZodObject<{
|
|
|
41
41
|
}, z.core.$catchall<z.ZodType<JsonValue, unknown, z.core.$ZodTypeInternals<JsonValue, unknown>>>>;
|
|
42
42
|
type ProgressReportItem = z.infer<typeof progressReportItemSchema>;
|
|
43
43
|
declare const reportProgressInputSchema: z.ZodObject<{
|
|
44
|
-
orgUserId: z.ZodString;
|
|
45
44
|
activityId: z.ZodString;
|
|
46
45
|
reports: z.ZodArray<z.ZodObject<{
|
|
47
46
|
asset: z.ZodOptional<z.ZodString>;
|
|
@@ -28,7 +28,6 @@ const progressReportItemSchema = z.object({
|
|
|
28
28
|
completed: z.boolean().optional()
|
|
29
29
|
}).catchall(jsonValueSchema);
|
|
30
30
|
const reportProgressInputSchema = z.object({
|
|
31
|
-
orgUserId: idSchema,
|
|
32
31
|
activityId: idSchema,
|
|
33
32
|
reports: z.array(progressReportItemSchema)
|
|
34
33
|
}).strict();
|
|
@@ -1 +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\n .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 createdAt: z.coerce.date(),\n updatedAt: z.coerce.date(),\n })\n .strict();\nexport type ProgressRecord = z.output<typeof progressRecordSchema>;\nexport type ProgressRecordInput = z.input<typeof progressRecordSchema>;\n\nexport const progressTargetSchema = z\n .object({\n orgUserId: idSchema,\n targetType: progressTargetTypeSchema,\n targetId: idSchema,\n })\n .strict();\nexport type ProgressTarget = z.infer<typeof progressTargetSchema>;\n\nexport const progressReportItemSchema = z\n .object({\n asset: z.string().optional(),\n completed: z.boolean().optional(),\n })\n .catchall(jsonValueSchema);\nexport type ProgressReportItem = z.infer<typeof progressReportItemSchema>;\n\nexport const reportProgressInputSchema = z\n .object({\n
|
|
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\n .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 createdAt: z.coerce.date(),\n updatedAt: z.coerce.date(),\n })\n .strict();\nexport type ProgressRecord = z.output<typeof progressRecordSchema>;\nexport type ProgressRecordInput = z.input<typeof progressRecordSchema>;\n\nexport const progressTargetSchema = z\n .object({\n orgUserId: idSchema,\n targetType: progressTargetTypeSchema,\n targetId: idSchema,\n })\n .strict();\nexport type ProgressTarget = z.infer<typeof progressTargetSchema>;\n\nexport const progressReportItemSchema = z\n .object({\n asset: z.string().optional(),\n completed: z.boolean().optional(),\n })\n .catchall(jsonValueSchema);\nexport type ProgressReportItem = z.infer<typeof progressReportItemSchema>;\n\nexport const reportProgressInputSchema = z\n .object({\n activityId: idSchema,\n reports: z.array(progressReportItemSchema),\n })\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,EACjC,OAAO;CACN,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;CACzB,WAAW,EAAE,OAAO,KAAK;AAC3B,CAAC,CAAC,CACD,OAAO;AAIV,MAAa,uBAAuB,EACjC,OAAO;CACN,WAAW;CACX,YAAY;CACZ,UAAU;AACZ,CAAC,CAAC,CACD,OAAO;AAGV,MAAa,2BAA2B,EACrC,OAAO;CACN,OAAO,EAAE,OAAO,CAAC,CAAC,SAAS;CAC3B,WAAW,EAAE,QAAQ,CAAC,CAAC,SAAS;AAClC,CAAC,CAAC,CACD,SAAS,eAAe;AAG3B,MAAa,4BAA4B,EACtC,OAAO;CACN,YAAY;CACZ,SAAS,EAAE,MAAM,wBAAwB;AAC3C,CAAC,CAAC,CACD,OAAO"}
|
package/package.json
CHANGED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { Role } from "../types/schemas/organizations.js";
|
|
2
|
-
import { Permission } from "./roles.js";
|
|
3
|
-
//#region src/organizations/access-scopes.d.ts
|
|
4
|
-
declare const ACCESS_SCOPES: readonly ["courses:read", "courses:write", "courses:delete", "downloads:read", "downloads:write", "downloads:delete", "bundles:read", "bundles:write", "bundles:delete", "media:read", "students:read", "students:invite", "access:read", "access:write", "analytics:read", "automations:read", "automations:write", "automations:delete", "comments:read", "comments:moderate", "communities:read", "communities:write", "communities:delete", "community_members:read", "community_members:write", "community_moderation:read", "community_moderation:write"];
|
|
5
|
-
type AccessScope = (typeof ACCESS_SCOPES)[number];
|
|
6
|
-
declare const SCOPE_PERMISSION: Record<AccessScope, Permission | null>;
|
|
7
|
-
type ScopeOption = {
|
|
8
|
-
scope: AccessScope;
|
|
9
|
-
allowed: boolean;
|
|
10
|
-
};
|
|
11
|
-
declare function isAccessScope(value: string): value is AccessScope;
|
|
12
|
-
declare function isDeleteScope(scope: AccessScope): boolean;
|
|
13
|
-
declare function roleHoldsScope(role: Role, scope: AccessScope): boolean;
|
|
14
|
-
declare function scopesForRole(role: Role): AccessScope[];
|
|
15
|
-
declare function scopeOptions(role: Role): ScopeOption[];
|
|
16
|
-
declare function assertRoleHoldsScopes(role: Role, scopes: readonly AccessScope[]): void;
|
|
17
|
-
//#endregion
|
|
18
|
-
export { ACCESS_SCOPES, AccessScope, SCOPE_PERMISSION, ScopeOption, assertRoleHoldsScopes, isAccessScope, isDeleteScope, roleHoldsScope, scopeOptions, scopesForRole };
|
|
19
|
-
//# sourceMappingURL=access-scopes.d.ts.map
|
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
import { ForbiddenError } from "../shared/errors.js";
|
|
2
|
-
import { capability, isStaffRole } from "./roles.js";
|
|
3
|
-
//#region src/organizations/access-scopes.ts
|
|
4
|
-
const ACCESS_SCOPES = [
|
|
5
|
-
"courses:read",
|
|
6
|
-
"courses:write",
|
|
7
|
-
"courses:delete",
|
|
8
|
-
"downloads:read",
|
|
9
|
-
"downloads:write",
|
|
10
|
-
"downloads:delete",
|
|
11
|
-
"bundles:read",
|
|
12
|
-
"bundles:write",
|
|
13
|
-
"bundles:delete",
|
|
14
|
-
"media:read",
|
|
15
|
-
"students:read",
|
|
16
|
-
"students:invite",
|
|
17
|
-
"access:read",
|
|
18
|
-
"access:write",
|
|
19
|
-
"analytics:read",
|
|
20
|
-
"automations:read",
|
|
21
|
-
"automations:write",
|
|
22
|
-
"automations:delete",
|
|
23
|
-
"comments:read",
|
|
24
|
-
"comments:moderate",
|
|
25
|
-
"communities:read",
|
|
26
|
-
"communities:write",
|
|
27
|
-
"communities:delete",
|
|
28
|
-
"community_members:read",
|
|
29
|
-
"community_members:write",
|
|
30
|
-
"community_moderation:read",
|
|
31
|
-
"community_moderation:write"
|
|
32
|
-
];
|
|
33
|
-
const SCOPE_PERMISSION = {
|
|
34
|
-
"courses:read": null,
|
|
35
|
-
"courses:write": "create_course",
|
|
36
|
-
"courses:delete": "create_course",
|
|
37
|
-
"downloads:read": null,
|
|
38
|
-
"downloads:write": "create_course",
|
|
39
|
-
"downloads:delete": "create_course",
|
|
40
|
-
"bundles:read": null,
|
|
41
|
-
"bundles:write": "create_course",
|
|
42
|
-
"bundles:delete": "create_course",
|
|
43
|
-
"media:read": null,
|
|
44
|
-
"students:read": "view_student_progress",
|
|
45
|
-
"students:invite": "manage_users",
|
|
46
|
-
"access:read": "view_student_progress",
|
|
47
|
-
"access:write": "manage_users",
|
|
48
|
-
"analytics:read": "view_student_progress",
|
|
49
|
-
"automations:read": null,
|
|
50
|
-
"automations:write": "manage_org_settings",
|
|
51
|
-
"automations:delete": "manage_org_settings",
|
|
52
|
-
"comments:read": null,
|
|
53
|
-
"comments:moderate": "edit_assigned_course",
|
|
54
|
-
"communities:read": null,
|
|
55
|
-
"communities:write": "create_course",
|
|
56
|
-
"communities:delete": "create_course",
|
|
57
|
-
"community_members:read": null,
|
|
58
|
-
"community_members:write": "moderate",
|
|
59
|
-
"community_moderation:read": null,
|
|
60
|
-
"community_moderation:write": "moderate"
|
|
61
|
-
};
|
|
62
|
-
function isAccessScope(value) {
|
|
63
|
-
return ACCESS_SCOPES.includes(value);
|
|
64
|
-
}
|
|
65
|
-
function isDeleteScope(scope) {
|
|
66
|
-
return scope.endsWith(":delete");
|
|
67
|
-
}
|
|
68
|
-
function roleHoldsScope(role, scope) {
|
|
69
|
-
if (!isStaffRole(role)) return false;
|
|
70
|
-
const permission = SCOPE_PERMISSION[scope];
|
|
71
|
-
return permission === null || capability(role, permission) === true;
|
|
72
|
-
}
|
|
73
|
-
function scopesForRole(role) {
|
|
74
|
-
return ACCESS_SCOPES.filter((scope) => roleHoldsScope(role, scope));
|
|
75
|
-
}
|
|
76
|
-
function scopeOptions(role) {
|
|
77
|
-
return ACCESS_SCOPES.map((scope) => ({
|
|
78
|
-
scope,
|
|
79
|
-
allowed: roleHoldsScope(role, scope)
|
|
80
|
-
}));
|
|
81
|
-
}
|
|
82
|
-
function assertRoleHoldsScopes(role, scopes) {
|
|
83
|
-
const missing = scopes.filter((scope) => !roleHoldsScope(role, scope));
|
|
84
|
-
if (missing.length > 0) throw new ForbiddenError(`Your role cannot grant ${missing.join(", ")}`);
|
|
85
|
-
}
|
|
86
|
-
//#endregion
|
|
87
|
-
export { ACCESS_SCOPES, SCOPE_PERMISSION, assertRoleHoldsScopes, isAccessScope, isDeleteScope, roleHoldsScope, scopeOptions, scopesForRole };
|
|
88
|
-
|
|
89
|
-
//# sourceMappingURL=access-scopes.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"access-scopes.js","names":[],"sources":["../../src/organizations/access-scopes.ts"],"sourcesContent":["import { ForbiddenError } from '../shared/errors.js';\nimport { capability, isStaffRole, type Permission, type Role } from './roles.js';\n\nexport const ACCESS_SCOPES = [\n 'courses:read',\n 'courses:write',\n 'courses:delete',\n 'downloads:read',\n 'downloads:write',\n 'downloads:delete',\n 'bundles:read',\n 'bundles:write',\n 'bundles:delete',\n 'media:read',\n 'students:read',\n 'students:invite',\n 'access:read',\n 'access:write',\n 'analytics:read',\n 'automations:read',\n 'automations:write',\n 'automations:delete',\n 'comments:read',\n 'comments:moderate',\n 'communities:read',\n 'communities:write',\n 'communities:delete',\n 'community_members:read',\n 'community_members:write',\n 'community_moderation:read',\n 'community_moderation:write',\n] as const;\n\nexport type AccessScope = (typeof ACCESS_SCOPES)[number];\n\nexport const SCOPE_PERMISSION: Record<AccessScope, Permission | null> = {\n 'courses:read': null,\n 'courses:write': 'create_course',\n 'courses:delete': 'create_course',\n 'downloads:read': null,\n 'downloads:write': 'create_course',\n 'downloads:delete': 'create_course',\n 'bundles:read': null,\n 'bundles:write': 'create_course',\n 'bundles:delete': 'create_course',\n 'media:read': null,\n 'students:read': 'view_student_progress',\n 'students:invite': 'manage_users',\n 'access:read': 'view_student_progress',\n 'access:write': 'manage_users',\n 'analytics:read': 'view_student_progress',\n 'automations:read': null,\n 'automations:write': 'manage_org_settings',\n 'automations:delete': 'manage_org_settings',\n 'comments:read': null,\n 'comments:moderate': 'edit_assigned_course',\n 'communities:read': null,\n 'communities:write': 'create_course',\n 'communities:delete': 'create_course',\n 'community_members:read': null,\n 'community_members:write': 'moderate',\n 'community_moderation:read': null,\n 'community_moderation:write': 'moderate',\n};\n\nexport type ScopeOption = { scope: AccessScope; allowed: boolean };\n\nexport function isAccessScope(value: string): value is AccessScope {\n return (ACCESS_SCOPES as readonly string[]).includes(value);\n}\n\nexport function isDeleteScope(scope: AccessScope): boolean {\n return scope.endsWith(':delete');\n}\n\nexport function roleHoldsScope(role: Role, scope: AccessScope): boolean {\n if (!isStaffRole(role)) {\n return false;\n }\n const permission = SCOPE_PERMISSION[scope];\n return permission === null || capability(role, permission) === true;\n}\n\nexport function scopesForRole(role: Role): AccessScope[] {\n return ACCESS_SCOPES.filter((scope) => roleHoldsScope(role, scope));\n}\n\nexport function scopeOptions(role: Role): ScopeOption[] {\n return ACCESS_SCOPES.map((scope) => ({ scope, allowed: roleHoldsScope(role, scope) }));\n}\n\nexport function assertRoleHoldsScopes(role: Role, scopes: readonly AccessScope[]): void {\n const missing = scopes.filter((scope) => !roleHoldsScope(role, scope));\n if (missing.length > 0) {\n throw new ForbiddenError(`Your role cannot grant ${missing.join(', ')}`);\n }\n}\n"],"mappings":";;;AAGA,MAAa,gBAAgB;CAC3B;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF;AAIA,MAAa,mBAA2D;CACtE,gBAAgB;CAChB,iBAAiB;CACjB,kBAAkB;CAClB,kBAAkB;CAClB,mBAAmB;CACnB,oBAAoB;CACpB,gBAAgB;CAChB,iBAAiB;CACjB,kBAAkB;CAClB,cAAc;CACd,iBAAiB;CACjB,mBAAmB;CACnB,eAAe;CACf,gBAAgB;CAChB,kBAAkB;CAClB,oBAAoB;CACpB,qBAAqB;CACrB,sBAAsB;CACtB,iBAAiB;CACjB,qBAAqB;CACrB,oBAAoB;CACpB,qBAAqB;CACrB,sBAAsB;CACtB,0BAA0B;CAC1B,2BAA2B;CAC3B,6BAA6B;CAC7B,8BAA8B;AAChC;AAIA,SAAgB,cAAc,OAAqC;CACjE,OAAQ,cAAoC,SAAS,KAAK;AAC5D;AAEA,SAAgB,cAAc,OAA6B;CACzD,OAAO,MAAM,SAAS,SAAS;AACjC;AAEA,SAAgB,eAAe,MAAY,OAA6B;CACtE,IAAI,CAAC,YAAY,IAAI,GACnB,OAAO;CAET,MAAM,aAAa,iBAAiB;CACpC,OAAO,eAAe,QAAQ,WAAW,MAAM,UAAU,MAAM;AACjE;AAEA,SAAgB,cAAc,MAA2B;CACvD,OAAO,cAAc,QAAQ,UAAU,eAAe,MAAM,KAAK,CAAC;AACpE;AAEA,SAAgB,aAAa,MAA2B;CACtD,OAAO,cAAc,KAAK,WAAW;EAAE;EAAO,SAAS,eAAe,MAAM,KAAK;CAAE,EAAE;AACvF;AAEA,SAAgB,sBAAsB,MAAY,QAAsC;CACtF,MAAM,UAAU,OAAO,QAAQ,UAAU,CAAC,eAAe,MAAM,KAAK,CAAC;CACrE,IAAI,QAAQ,SAAS,GACnB,MAAM,IAAI,eAAe,0BAA0B,QAAQ,KAAK,IAAI,GAAG;AAE3E"}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { Role } from "../types/schemas/organizations.js";
|
|
2
|
-
import "../types/index.js";
|
|
3
|
-
//#region src/organizations/roles.d.ts
|
|
4
|
-
declare const ROLES: readonly ["owner", "admin", "instructor", "moderator", "student"];
|
|
5
|
-
type StaffRole = 'owner' | 'admin' | 'instructor';
|
|
6
|
-
declare const STAFF_ROLES: readonly ["owner", "admin", "instructor"];
|
|
7
|
-
type TeamRole = Exclude<Role, 'student'>;
|
|
8
|
-
declare function isRole(value: string): value is Role;
|
|
9
|
-
declare function isStaffRole(value: string): value is StaffRole;
|
|
10
|
-
declare function parseRole(value: string): Role;
|
|
11
|
-
type Permission = 'manage_billing' | 'manage_org_settings' | 'manage_users' | 'create_course' | 'edit_assigned_course' | 'view_student_progress' | 'moderate' | 'consume_content';
|
|
12
|
-
type Capability = true | 'assigned' | 'enrolled';
|
|
13
|
-
declare function capability(role: Role, permission: Permission): Capability | false;
|
|
14
|
-
declare function canModerate(role: Role): boolean;
|
|
15
|
-
declare function normalizeRole(raw: string): Role;
|
|
16
|
-
declare const STUDENT_ROLE = "student";
|
|
17
|
-
//#endregion
|
|
18
|
-
export { Capability, Permission, ROLES, type Role, STAFF_ROLES, STUDENT_ROLE, StaffRole, TeamRole, canModerate, capability, isRole, isStaffRole, normalizeRole, parseRole };
|
|
19
|
-
//# sourceMappingURL=roles.d.ts.map
|