@lls/common 24.10.0 → 24.11.0-076370c6
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/lib/index.js +220 -0
- package/package.json +7 -3
package/lib/index.js
ADDED
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
// src/constants/right.ts
|
|
2
|
+
var FEATURE_EXPORT = "export";
|
|
3
|
+
var FEATURE_CUSTOMIZATION = "customization";
|
|
4
|
+
var FEATURE_VIDEO_PROJECTION = "video_projection";
|
|
5
|
+
var FEATURE_SHARE = "share";
|
|
6
|
+
var FEATURE_CLASSROOM = "classroom";
|
|
7
|
+
var FEATURE_DIGITAL_VIEW = "digital_view";
|
|
8
|
+
var FEATURE_HOMOTHETIC_VIEW = "homothetic_view";
|
|
9
|
+
var FEATURE_CONNECTOR = "connector";
|
|
10
|
+
var FEATURE_DYS_ACCESSIBILITY = "dys_accessibility";
|
|
11
|
+
var FEATURE_IMAGE_ZOOM = "image_zoom";
|
|
12
|
+
var FEATURE_FULLSCREEN_DISPLAY = "fullscreen_display";
|
|
13
|
+
var FEATURE_SIDE_BY_SIDE_PRESENTATION = "side_by_side_presentation";
|
|
14
|
+
var FEATURE_ANNOTATION = "annotation";
|
|
15
|
+
var FEATURE_FILL_RESPONSE_FIELDS = "fill_response_fields";
|
|
16
|
+
var FEATURE_DISPLAY_CORRECTIONS = "display_corrections";
|
|
17
|
+
var FEATURE_TEXT_TO_SPEECH = "text_to_speech";
|
|
18
|
+
var FEATURE_SHARING = "sharing";
|
|
19
|
+
var FEATURE_REVISION_SESSION = "revision_session";
|
|
20
|
+
var FEATURE_INTERNAL_ADDITIONAL_CONTENT = "internal_additional_content";
|
|
21
|
+
var FEATURE_EXTERNAL_ADDITIONAL_CONTENT = "external_additional_content";
|
|
22
|
+
var FEATURE_DIGITAL_MANUAL_ENRICHMENT = "digital_manual_enrichment";
|
|
23
|
+
var FEATURE_DASHBOARD = "dashboard";
|
|
24
|
+
var FEATURE_PROFILE = "profile";
|
|
25
|
+
var FEATURES = {
|
|
26
|
+
FEATURE_EXPORT,
|
|
27
|
+
FEATURE_CUSTOMIZATION,
|
|
28
|
+
FEATURE_VIDEO_PROJECTION,
|
|
29
|
+
FEATURE_SHARE,
|
|
30
|
+
FEATURE_CLASSROOM,
|
|
31
|
+
FEATURE_DIGITAL_VIEW,
|
|
32
|
+
FEATURE_HOMOTHETIC_VIEW,
|
|
33
|
+
FEATURE_CONNECTOR,
|
|
34
|
+
FEATURE_DYS_ACCESSIBILITY,
|
|
35
|
+
FEATURE_IMAGE_ZOOM,
|
|
36
|
+
FEATURE_FULLSCREEN_DISPLAY,
|
|
37
|
+
FEATURE_SIDE_BY_SIDE_PRESENTATION,
|
|
38
|
+
FEATURE_ANNOTATION,
|
|
39
|
+
FEATURE_FILL_RESPONSE_FIELDS,
|
|
40
|
+
FEATURE_DISPLAY_CORRECTIONS,
|
|
41
|
+
FEATURE_TEXT_TO_SPEECH,
|
|
42
|
+
FEATURE_SHARING,
|
|
43
|
+
FEATURE_REVISION_SESSION,
|
|
44
|
+
FEATURE_INTERNAL_ADDITIONAL_CONTENT,
|
|
45
|
+
FEATURE_EXTERNAL_ADDITIONAL_CONTENT,
|
|
46
|
+
FEATURE_DIGITAL_MANUAL_ENRICHMENT,
|
|
47
|
+
FEATURE_DASHBOARD,
|
|
48
|
+
FEATURE_PROFILE
|
|
49
|
+
};
|
|
50
|
+
var PLANS = {
|
|
51
|
+
CONNECTED_PLAN: "connected",
|
|
52
|
+
ANONYMOUS_PLAN: "anonymous",
|
|
53
|
+
TEACHER_PLAN: "teacher",
|
|
54
|
+
CLASSROOM_PLAN: "classroom"
|
|
55
|
+
};
|
|
56
|
+
var PLANS_RIGHTS = {
|
|
57
|
+
[PLANS.ANONYMOUS_PLAN]: {
|
|
58
|
+
[FEATURES.FEATURE_EXPORT]: false,
|
|
59
|
+
[FEATURES.FEATURE_CUSTOMIZATION]: false,
|
|
60
|
+
[FEATURES.FEATURE_VIDEO_PROJECTION]: false,
|
|
61
|
+
[FEATURES.FEATURE_SHARE]: false,
|
|
62
|
+
[FEATURES.FEATURE_CLASSROOM]: false,
|
|
63
|
+
[FEATURES.FEATURE_DIGITAL_VIEW]: true,
|
|
64
|
+
[FEATURES.FEATURE_HOMOTHETIC_VIEW]: false,
|
|
65
|
+
[FEATURES.FEATURE_CONNECTOR]: false,
|
|
66
|
+
[FEATURES.FEATURE_DYS_ACCESSIBILITY]: false,
|
|
67
|
+
[FEATURES.FEATURE_IMAGE_ZOOM]: false,
|
|
68
|
+
[FEATURES.FEATURE_FULLSCREEN_DISPLAY]: false,
|
|
69
|
+
[FEATURES.FEATURE_SIDE_BY_SIDE_PRESENTATION]: false,
|
|
70
|
+
[FEATURES.FEATURE_ANNOTATION]: false,
|
|
71
|
+
[FEATURES.FEATURE_FILL_RESPONSE_FIELDS]: false,
|
|
72
|
+
[FEATURES.FEATURE_DISPLAY_CORRECTIONS]: false,
|
|
73
|
+
[FEATURES.FEATURE_TEXT_TO_SPEECH]: false,
|
|
74
|
+
[FEATURES.FEATURE_SHARING]: false,
|
|
75
|
+
[FEATURES.FEATURE_REVISION_SESSION]: false,
|
|
76
|
+
[FEATURES.FEATURE_INTERNAL_ADDITIONAL_CONTENT]: false,
|
|
77
|
+
[FEATURES.FEATURE_EXTERNAL_ADDITIONAL_CONTENT]: false,
|
|
78
|
+
[FEATURES.FEATURE_DIGITAL_MANUAL_ENRICHMENT]: false,
|
|
79
|
+
[FEATURES.FEATURE_DASHBOARD]: false,
|
|
80
|
+
[FEATURES.FEATURE_PROFILE]: false
|
|
81
|
+
},
|
|
82
|
+
[PLANS.CONNECTED_PLAN]: {
|
|
83
|
+
[FEATURES.FEATURE_EXPORT]: false,
|
|
84
|
+
[FEATURES.FEATURE_CUSTOMIZATION]: false,
|
|
85
|
+
[FEATURES.FEATURE_VIDEO_PROJECTION]: false,
|
|
86
|
+
[FEATURES.FEATURE_SHARE]: false,
|
|
87
|
+
[FEATURES.FEATURE_CLASSROOM]: false,
|
|
88
|
+
[FEATURES.FEATURE_DIGITAL_VIEW]: true,
|
|
89
|
+
[FEATURES.FEATURE_HOMOTHETIC_VIEW]: false,
|
|
90
|
+
[FEATURES.FEATURE_CONNECTOR]: false,
|
|
91
|
+
[FEATURES.FEATURE_DYS_ACCESSIBILITY]: true,
|
|
92
|
+
[FEATURES.FEATURE_IMAGE_ZOOM]: true,
|
|
93
|
+
[FEATURES.FEATURE_FULLSCREEN_DISPLAY]: false,
|
|
94
|
+
[FEATURES.FEATURE_SIDE_BY_SIDE_PRESENTATION]: false,
|
|
95
|
+
[FEATURES.FEATURE_ANNOTATION]: false,
|
|
96
|
+
[FEATURES.FEATURE_FILL_RESPONSE_FIELDS]: false,
|
|
97
|
+
[FEATURES.FEATURE_DISPLAY_CORRECTIONS]: false,
|
|
98
|
+
[FEATURES.FEATURE_TEXT_TO_SPEECH]: false,
|
|
99
|
+
[FEATURES.FEATURE_SHARING]: false,
|
|
100
|
+
[FEATURES.FEATURE_REVISION_SESSION]: false,
|
|
101
|
+
[FEATURES.FEATURE_INTERNAL_ADDITIONAL_CONTENT]: false,
|
|
102
|
+
[FEATURES.FEATURE_EXTERNAL_ADDITIONAL_CONTENT]: false,
|
|
103
|
+
[FEATURES.FEATURE_DIGITAL_MANUAL_ENRICHMENT]: false,
|
|
104
|
+
[FEATURES.FEATURE_DASHBOARD]: true,
|
|
105
|
+
[FEATURES.FEATURE_PROFILE]: true
|
|
106
|
+
},
|
|
107
|
+
[PLANS.CLASSROOM_PLAN]: {
|
|
108
|
+
[FEATURES.FEATURE_EXPORT]: true,
|
|
109
|
+
[FEATURES.FEATURE_CUSTOMIZATION]: true,
|
|
110
|
+
[FEATURES.FEATURE_VIDEO_PROJECTION]: true,
|
|
111
|
+
[FEATURES.FEATURE_SHARE]: true,
|
|
112
|
+
[FEATURES.FEATURE_CLASSROOM]: true,
|
|
113
|
+
[FEATURES.FEATURE_DIGITAL_VIEW]: true,
|
|
114
|
+
[FEATURES.FEATURE_HOMOTHETIC_VIEW]: true,
|
|
115
|
+
[FEATURES.FEATURE_CONNECTOR]: true,
|
|
116
|
+
[FEATURES.FEATURE_DYS_ACCESSIBILITY]: true,
|
|
117
|
+
[FEATURES.FEATURE_IMAGE_ZOOM]: true,
|
|
118
|
+
[FEATURES.FEATURE_FULLSCREEN_DISPLAY]: true,
|
|
119
|
+
[FEATURES.FEATURE_SIDE_BY_SIDE_PRESENTATION]: true,
|
|
120
|
+
[FEATURES.FEATURE_ANNOTATION]: true,
|
|
121
|
+
[FEATURES.FEATURE_FILL_RESPONSE_FIELDS]: true,
|
|
122
|
+
[FEATURES.FEATURE_DISPLAY_CORRECTIONS]: true,
|
|
123
|
+
[FEATURES.FEATURE_TEXT_TO_SPEECH]: true,
|
|
124
|
+
[FEATURES.FEATURE_SHARING]: true,
|
|
125
|
+
[FEATURES.FEATURE_REVISION_SESSION]: true,
|
|
126
|
+
[FEATURES.FEATURE_INTERNAL_ADDITIONAL_CONTENT]: true,
|
|
127
|
+
[FEATURES.FEATURE_EXTERNAL_ADDITIONAL_CONTENT]: true,
|
|
128
|
+
[FEATURES.FEATURE_DIGITAL_MANUAL_ENRICHMENT]: true,
|
|
129
|
+
[FEATURES.FEATURE_DASHBOARD]: true,
|
|
130
|
+
[FEATURES.FEATURE_PROFILE]: true
|
|
131
|
+
},
|
|
132
|
+
[PLANS.TEACHER_PLAN]: {
|
|
133
|
+
[FEATURES.FEATURE_EXPORT]: true,
|
|
134
|
+
[FEATURES.FEATURE_CUSTOMIZATION]: true,
|
|
135
|
+
[FEATURES.FEATURE_VIDEO_PROJECTION]: true,
|
|
136
|
+
[FEATURES.FEATURE_SHARE]: false,
|
|
137
|
+
[FEATURES.FEATURE_CLASSROOM]: false,
|
|
138
|
+
[FEATURES.FEATURE_DIGITAL_VIEW]: true,
|
|
139
|
+
[FEATURES.FEATURE_HOMOTHETIC_VIEW]: true,
|
|
140
|
+
[FEATURES.FEATURE_CONNECTOR]: true,
|
|
141
|
+
[FEATURES.FEATURE_DYS_ACCESSIBILITY]: true,
|
|
142
|
+
[FEATURES.FEATURE_IMAGE_ZOOM]: true,
|
|
143
|
+
[FEATURES.FEATURE_FULLSCREEN_DISPLAY]: true,
|
|
144
|
+
[FEATURES.FEATURE_SIDE_BY_SIDE_PRESENTATION]: true,
|
|
145
|
+
[FEATURES.FEATURE_ANNOTATION]: true,
|
|
146
|
+
[FEATURES.FEATURE_FILL_RESPONSE_FIELDS]: true,
|
|
147
|
+
[FEATURES.FEATURE_DISPLAY_CORRECTIONS]: true,
|
|
148
|
+
[FEATURES.FEATURE_TEXT_TO_SPEECH]: true,
|
|
149
|
+
[FEATURES.FEATURE_SHARING]: true,
|
|
150
|
+
[FEATURES.FEATURE_REVISION_SESSION]: true,
|
|
151
|
+
[FEATURES.FEATURE_INTERNAL_ADDITIONAL_CONTENT]: true,
|
|
152
|
+
[FEATURES.FEATURE_EXTERNAL_ADDITIONAL_CONTENT]: false,
|
|
153
|
+
[FEATURES.FEATURE_DIGITAL_MANUAL_ENRICHMENT]: false,
|
|
154
|
+
[FEATURES.FEATURE_DASHBOARD]: true,
|
|
155
|
+
[FEATURES.FEATURE_PROFILE]: true
|
|
156
|
+
}
|
|
157
|
+
};
|
|
158
|
+
|
|
159
|
+
// src/utils/right.ts
|
|
160
|
+
var getPlanRights = ({ user, bookUri }) => {
|
|
161
|
+
if (!user) {
|
|
162
|
+
return PLANS_RIGHTS[PLANS.ANONYMOUS_PLAN];
|
|
163
|
+
}
|
|
164
|
+
const plans = user?.plans ?? {};
|
|
165
|
+
if (!Object.keys(plans)?.length) {
|
|
166
|
+
return PLANS_RIGHTS[PLANS.CONNECTED_PLAN];
|
|
167
|
+
}
|
|
168
|
+
if (bookUri && plans[PLANS.TEACHER_PLAN]?.includes(bookUri)) {
|
|
169
|
+
return PLANS_RIGHTS[PLANS.TEACHER_PLAN];
|
|
170
|
+
}
|
|
171
|
+
if (bookUri && plans[PLANS.CLASSROOM_PLAN]?.includes(bookUri)) {
|
|
172
|
+
return PLANS_RIGHTS[PLANS.CLASSROOM_PLAN];
|
|
173
|
+
}
|
|
174
|
+
return PLANS_RIGHTS[PLANS.CONNECTED_PLAN];
|
|
175
|
+
};
|
|
176
|
+
var hasFeatureAccess = ({ feature, user, bookUri }) => {
|
|
177
|
+
if (!feature) return false;
|
|
178
|
+
if (feature === FEATURES.FEATURE_CLASSROOM && user?.plans?.[PLANS.CLASSROOM_PLAN]?.length) {
|
|
179
|
+
return true;
|
|
180
|
+
}
|
|
181
|
+
const planRights = getPlanRights({ user, bookUri });
|
|
182
|
+
if (feature in planRights) return planRights[feature] ?? false;
|
|
183
|
+
return false;
|
|
184
|
+
};
|
|
185
|
+
var getFeaturesAccessByBook = ({
|
|
186
|
+
user,
|
|
187
|
+
bookUri
|
|
188
|
+
}) => {
|
|
189
|
+
return getPlanRights({ user, bookUri });
|
|
190
|
+
};
|
|
191
|
+
export {
|
|
192
|
+
FEATURES,
|
|
193
|
+
FEATURE_ANNOTATION,
|
|
194
|
+
FEATURE_CLASSROOM,
|
|
195
|
+
FEATURE_CONNECTOR,
|
|
196
|
+
FEATURE_CUSTOMIZATION,
|
|
197
|
+
FEATURE_DASHBOARD,
|
|
198
|
+
FEATURE_DIGITAL_MANUAL_ENRICHMENT,
|
|
199
|
+
FEATURE_DIGITAL_VIEW,
|
|
200
|
+
FEATURE_DISPLAY_CORRECTIONS,
|
|
201
|
+
FEATURE_DYS_ACCESSIBILITY,
|
|
202
|
+
FEATURE_EXPORT,
|
|
203
|
+
FEATURE_EXTERNAL_ADDITIONAL_CONTENT,
|
|
204
|
+
FEATURE_FILL_RESPONSE_FIELDS,
|
|
205
|
+
FEATURE_FULLSCREEN_DISPLAY,
|
|
206
|
+
FEATURE_HOMOTHETIC_VIEW,
|
|
207
|
+
FEATURE_IMAGE_ZOOM,
|
|
208
|
+
FEATURE_INTERNAL_ADDITIONAL_CONTENT,
|
|
209
|
+
FEATURE_PROFILE,
|
|
210
|
+
FEATURE_REVISION_SESSION,
|
|
211
|
+
FEATURE_SHARE,
|
|
212
|
+
FEATURE_SHARING,
|
|
213
|
+
FEATURE_SIDE_BY_SIDE_PRESENTATION,
|
|
214
|
+
FEATURE_TEXT_TO_SPEECH,
|
|
215
|
+
FEATURE_VIDEO_PROJECTION,
|
|
216
|
+
PLANS,
|
|
217
|
+
PLANS_RIGHTS,
|
|
218
|
+
getFeaturesAccessByBook,
|
|
219
|
+
hasFeatureAccess
|
|
220
|
+
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lls/common",
|
|
3
|
-
"version": "24.
|
|
3
|
+
"version": "24.11.0-076370c6",
|
|
4
4
|
"description": "utils and constants shared between front and backend",
|
|
5
5
|
"main": "./lib/index.js",
|
|
6
6
|
"module": "./lib/index.js",
|
|
@@ -25,12 +25,16 @@
|
|
|
25
25
|
"url": "https://github.com/lelivrescolaire/monorepo/issues"
|
|
26
26
|
},
|
|
27
27
|
"homepage": "https://github.com/lelivrescolaire/monorepo/libs/common#readme",
|
|
28
|
-
"peerDependencies": {
|
|
28
|
+
"peerDependencies": {
|
|
29
|
+
"lodash": "*"
|
|
30
|
+
},
|
|
29
31
|
"devDependencies": {
|
|
30
32
|
"@biomejs/biome": "1.9.4",
|
|
33
|
+
"@types/lodash": "4.17.13",
|
|
34
|
+
"lodash": "4.17.21",
|
|
31
35
|
"esbuild": "0.24.0",
|
|
32
36
|
"typescript": "5.6.3",
|
|
33
|
-
"@lls/vitescripts": "24.
|
|
37
|
+
"@lls/vitescripts": "24.11.0-076370c6"
|
|
34
38
|
},
|
|
35
39
|
"dependencies": {},
|
|
36
40
|
"scripts": {
|