@lls/common 24.10.0 → 24.11.0-12c25fff

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 (2) hide show
  1. package/lib/index.js +220 -0
  2. 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.10.0",
3
+ "version": "24.11.0-12c25fff",
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.10.0"
37
+ "@lls/vitescripts": "24.11.0-12c25fff"
34
38
  },
35
39
  "dependencies": {},
36
40
  "scripts": {