@lls/common 24.11.0-87cbd20e → 24.11.0-9405fed2

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 +201 -6
  2. package/package.json +7 -3
package/lib/index.js CHANGED
@@ -1,9 +1,204 @@
1
- // src/constants/grant.ts
2
- var features = [{ role: "ok" }];
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 PACKS = {
51
+ CONNECTED_PACK: "connected",
52
+ ANONYMOUS_PACK: "anonymous",
53
+ TEACHER_PACK: "teacher",
54
+ CLASSROOM_PACK: "classroom"
55
+ };
56
+ var PACKS_RIGHTS = {
57
+ [PACKS.ANONYMOUS_PACK]: {
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
+ [PACKS.CONNECTED_PACK]: {
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
+ [PACKS.CLASSROOM_PACK]: {
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
+ [PACKS.TEACHER_PACK]: {
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
+ };
3
158
 
4
- // src/utils/grant.ts
5
- var hello = () => features;
159
+ // src/utils/right.ts
160
+ var hasFeatureAccess = ({ feature, user, bookUri }) => {
161
+ if (!user) {
162
+ return PACKS_RIGHTS[PACKS.ANONYMOUS_PACK][feature];
163
+ }
164
+ const packs = user?.packs ?? {};
165
+ if (!Object.keys(packs)?.length) {
166
+ return PACKS_RIGHTS[PACKS.CONNECTED_PACK][feature];
167
+ }
168
+ if (packs?.[PACKS.TEACHER_PACK]?.includes(bookUri)) {
169
+ return PACKS_RIGHTS[PACKS.TEACHER_PACK][feature];
170
+ }
171
+ if (packs?.[PACKS.CLASSROOM_PACK]?.includes(bookUri)) {
172
+ return PACKS_RIGHTS[PACKS.CLASSROOM_PACK][feature];
173
+ }
174
+ return PACKS_RIGHTS[PACKS.CONNECTED_PACK][feature];
175
+ };
6
176
  export {
7
- features,
8
- hello
177
+ FEATURES,
178
+ FEATURE_ANNOTATION,
179
+ FEATURE_CLASSROOM,
180
+ FEATURE_CONNECTOR,
181
+ FEATURE_CUSTOMIZATION,
182
+ FEATURE_DASHBOARD,
183
+ FEATURE_DIGITAL_MANUAL_ENRICHMENT,
184
+ FEATURE_DIGITAL_VIEW,
185
+ FEATURE_DISPLAY_CORRECTIONS,
186
+ FEATURE_DYS_ACCESSIBILITY,
187
+ FEATURE_EXPORT,
188
+ FEATURE_EXTERNAL_ADDITIONAL_CONTENT,
189
+ FEATURE_FILL_RESPONSE_FIELDS,
190
+ FEATURE_FULLSCREEN_DISPLAY,
191
+ FEATURE_HOMOTHETIC_VIEW,
192
+ FEATURE_IMAGE_ZOOM,
193
+ FEATURE_INTERNAL_ADDITIONAL_CONTENT,
194
+ FEATURE_PROFILE,
195
+ FEATURE_REVISION_SESSION,
196
+ FEATURE_SHARE,
197
+ FEATURE_SHARING,
198
+ FEATURE_SIDE_BY_SIDE_PRESENTATION,
199
+ FEATURE_TEXT_TO_SPEECH,
200
+ FEATURE_VIDEO_PROJECTION,
201
+ PACKS,
202
+ PACKS_RIGHTS,
203
+ hasFeatureAccess
9
204
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lls/common",
3
- "version": "24.11.0-87cbd20e",
3
+ "version": "24.11.0-9405fed2",
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.11.0-87cbd20e"
37
+ "@lls/vitescripts": "24.11.0-9405fed2"
34
38
  },
35
39
  "dependencies": {},
36
40
  "scripts": {