@learnpack/learnpack 5.0.272 → 5.0.274
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/README.md +409 -409
- package/lib/commands/audit.js +15 -15
- package/lib/commands/breakToken.js +19 -19
- package/lib/commands/clean.js +3 -3
- package/lib/commands/init.js +41 -41
- package/lib/commands/logout.js +3 -3
- package/lib/commands/serve.js +32 -17
- package/lib/creatorDist/assets/{index-C1pv1wUb.js → index-BfLyIQVh.js} +10351 -10227
- package/lib/creatorDist/assets/{index-B4khtb0r.css → index-C39zeF3W.css} +3 -3
- package/lib/creatorDist/index.html +2 -2
- package/lib/managers/config/index.js +77 -77
- package/lib/utils/api.js +1 -0
- package/lib/utils/creatorUtilities.js +14 -14
- package/package.json +1 -1
- package/src/commands/audit.ts +487 -487
- package/src/commands/breakToken.ts +67 -67
- package/src/commands/clean.ts +30 -30
- package/src/commands/init.ts +650 -650
- package/src/commands/logout.ts +38 -38
- package/src/commands/publish.ts +522 -522
- package/src/commands/serve.ts +38 -28
- package/src/commands/start.ts +333 -333
- package/src/commands/translate.ts +123 -123
- package/src/creator/README.md +54 -54
- package/src/creator/eslint.config.js +28 -28
- package/src/creator/src/components/syllabus/ContentIndex.tsx +1 -1
- package/src/creator/src/i18n.ts +28 -28
- package/src/creator/src/index.css +217 -217
- package/src/creator/src/locales/en.json +1 -0
- package/src/creator/src/locales/es.json +1 -0
- package/src/creator/src/utils/configTypes.ts +122 -122
- package/src/creator/src/utils/constants.ts +13 -13
- package/src/creator/src/utils/creatorUtils.ts +46 -46
- package/src/creator/src/utils/eventBus.ts +2 -2
- package/src/creator/src/utils/lib.ts +468 -468
- package/src/creator/src/utils/rigo.ts +26 -26
- package/src/creator/src/utils/socket.ts +61 -61
- package/src/creator/src/utils/store.ts +222 -222
- package/src/creator/src/vite-env.d.ts +1 -1
- package/src/creator/vite.config.ts +13 -13
- package/src/creatorDist/assets/{index-C1pv1wUb.js → index-BfLyIQVh.js} +10351 -10227
- package/src/creatorDist/assets/{index-B4khtb0r.css → index-C39zeF3W.css} +3 -3
- package/src/creatorDist/index.html +2 -2
- package/src/managers/config/defaults.ts +49 -49
- package/src/managers/config/exercise.ts +364 -364
- package/src/managers/config/index.ts +775 -775
- package/src/managers/file.ts +236 -236
- package/src/managers/server/routes.ts +554 -554
- package/src/managers/session.ts +182 -182
- package/src/managers/telemetry.ts +188 -188
- package/src/models/action.ts +13 -13
- package/src/models/config-manager.ts +28 -28
- package/src/models/config.ts +106 -106
- package/src/models/creator.ts +40 -40
- package/src/models/exercise-obj.ts +30 -30
- package/src/models/session.ts +39 -39
- package/src/models/socket.ts +61 -61
- package/src/models/status.ts +16 -16
- package/src/ui/_app/app.css +1 -1
- package/src/ui/_app/app.js +435 -414
- package/src/ui/_app/learnpack.svg +7 -7
- package/src/ui/app.tar.gz +0 -0
- package/src/utils/BaseCommand.ts +56 -56
- package/src/utils/api.ts +31 -30
- package/src/utils/audit.ts +392 -392
- package/src/utils/checkNotInstalled.ts +267 -267
- package/src/utils/configBuilder.ts +82 -82
- package/src/utils/convertCreds.js +34 -34
- package/src/utils/creatorUtilities.ts +504 -504
- package/src/utils/incrementVersion.js +74 -74
- package/src/utils/misc.ts +58 -58
- package/src/utils/rigoActions.ts +500 -500
- package/src/utils/sidebarGenerator.ts +195 -195
- package/src/utils/templates/isolated/exercises/01-hello-world/README.es.md +26 -26
- package/src/utils/templates/isolated/exercises/01-hello-world/README.md +26 -26
@@ -1,217 +1,217 @@
|
|
1
|
-
@import "tailwindcss";
|
2
|
-
|
3
|
-
:root {
|
4
|
-
font-family: system-ui, Avenir, Helvetica, Arial, sans-serif;
|
5
|
-
line-height: 1.5;
|
6
|
-
font-weight: 400;
|
7
|
-
|
8
|
-
color-scheme: light dark;
|
9
|
-
color: #213547;
|
10
|
-
|
11
|
-
font-synthesis: none;
|
12
|
-
text-rendering: optimizeLegibility;
|
13
|
-
-webkit-font-smoothing: antialiased;
|
14
|
-
-moz-osx-font-smoothing: grayscale;
|
15
|
-
|
16
|
-
--four-geeks-blue: #0097cf;
|
17
|
-
--soft-blue: #f3fafd;
|
18
|
-
--gray-text: #6883b4;
|
19
|
-
--learnpack-blue: #02a9ea;
|
20
|
-
--learnpack-light-blue: #c7f3fd;
|
21
|
-
}
|
22
|
-
|
23
|
-
a {
|
24
|
-
font-weight: 500;
|
25
|
-
color: var(--learnpack-blue);
|
26
|
-
text-decoration: inherit;
|
27
|
-
}
|
28
|
-
a:hover {
|
29
|
-
color: var(--learnpack-blue);
|
30
|
-
}
|
31
|
-
|
32
|
-
body {
|
33
|
-
margin: 0;
|
34
|
-
min-height: 100vh;
|
35
|
-
background-color: #f4f9fe;
|
36
|
-
}
|
37
|
-
|
38
|
-
.bg-learnpack-blue {
|
39
|
-
background-color: var(--soft-blue);
|
40
|
-
}
|
41
|
-
|
42
|
-
.bg-learnpack {
|
43
|
-
background-color: var(--learnpack-blue);
|
44
|
-
}
|
45
|
-
|
46
|
-
.bg-gray-blue {
|
47
|
-
background-color: #e7f1ff;
|
48
|
-
}
|
49
|
-
|
50
|
-
.index-circle {
|
51
|
-
width: 30px;
|
52
|
-
height: 30px;
|
53
|
-
font-size: 16px;
|
54
|
-
font-weight: 600;
|
55
|
-
border-radius: 50%;
|
56
|
-
color: var(--four-geeks-blue);
|
57
|
-
background-color: var(--soft-blue);
|
58
|
-
display: flex;
|
59
|
-
align-items: center;
|
60
|
-
justify-content: center;
|
61
|
-
}
|
62
|
-
.text-gray {
|
63
|
-
color: var(--gray-text);
|
64
|
-
}
|
65
|
-
|
66
|
-
.scrollbar-hide {
|
67
|
-
scrollbar-width: none !important;
|
68
|
-
}
|
69
|
-
|
70
|
-
.loader {
|
71
|
-
display: flex;
|
72
|
-
/* flex-direction: column; */
|
73
|
-
align-items: center;
|
74
|
-
gap: 10px;
|
75
|
-
justify-content: center;
|
76
|
-
animation: glowing 1000ms linear infinite;
|
77
|
-
}
|
78
|
-
@keyframes spin {
|
79
|
-
from {
|
80
|
-
transform: rotate(0deg);
|
81
|
-
}
|
82
|
-
to {
|
83
|
-
transform: rotate(360deg);
|
84
|
-
}
|
85
|
-
}
|
86
|
-
|
87
|
-
.loader-icon {
|
88
|
-
width: 40px;
|
89
|
-
height: 40px;
|
90
|
-
position: relative;
|
91
|
-
display: flex;
|
92
|
-
align-items: center;
|
93
|
-
justify-content: center;
|
94
|
-
}
|
95
|
-
/* .loader-icon::after {
|
96
|
-
content: "";
|
97
|
-
display: block;
|
98
|
-
width: 100%;
|
99
|
-
top: 0;
|
100
|
-
left: 0;
|
101
|
-
position: absolute;
|
102
|
-
height: 100%;
|
103
|
-
border: 2px solid var(--gray-text);
|
104
|
-
border-top: 2px solid var(--learnpack-blue);
|
105
|
-
|
106
|
-
border-radius: 50%;
|
107
|
-
animation: spin 2s linear infinite;
|
108
|
-
} */
|
109
|
-
|
110
|
-
@keyframes glowing {
|
111
|
-
0% {
|
112
|
-
opacity: 0.6;
|
113
|
-
}
|
114
|
-
100% {
|
115
|
-
opacity: 1;
|
116
|
-
}
|
117
|
-
}
|
118
|
-
|
119
|
-
.blue-on-hover:hover {
|
120
|
-
svg {
|
121
|
-
fill: var(--learnpack-blue);
|
122
|
-
|
123
|
-
path {
|
124
|
-
fill: var(--learnpack-blue);
|
125
|
-
}
|
126
|
-
}
|
127
|
-
}
|
128
|
-
|
129
|
-
.border-learnpack-blue {
|
130
|
-
border-color: var(--learnpack-blue);
|
131
|
-
}
|
132
|
-
|
133
|
-
.red-ball {
|
134
|
-
width: 16px;
|
135
|
-
height: 16px;
|
136
|
-
border: 2px solid white;
|
137
|
-
background-color: #eb5757;
|
138
|
-
border-radius: 50%;
|
139
|
-
position: absolute;
|
140
|
-
top: -10px;
|
141
|
-
left: 10px;
|
142
|
-
}
|
143
|
-
|
144
|
-
.fluid-svg {
|
145
|
-
> svg {
|
146
|
-
width: 100%;
|
147
|
-
height: 100%;
|
148
|
-
}
|
149
|
-
}
|
150
|
-
|
151
|
-
.outline-blue:focus {
|
152
|
-
outline: 1px solid #51b3e5;
|
153
|
-
}
|
154
|
-
|
155
|
-
.border-C8DBFC {
|
156
|
-
border-color: #c8dbfc;
|
157
|
-
}
|
158
|
-
|
159
|
-
.markdown-renderer {
|
160
|
-
& ul {
|
161
|
-
padding-left: 0;
|
162
|
-
list-style-position: inside;
|
163
|
-
list-style-type: disc;
|
164
|
-
}
|
165
|
-
|
166
|
-
& ol {
|
167
|
-
padding-left: 0;
|
168
|
-
list-style-position: inside;
|
169
|
-
list-style-type: decimal;
|
170
|
-
}
|
171
|
-
}
|
172
|
-
|
173
|
-
.appear {
|
174
|
-
animation: appear 0.5s ease-in-out forwards;
|
175
|
-
transform-origin: top center; /* o donde quieras que crezca */
|
176
|
-
opacity: 0;
|
177
|
-
transform: scaleY(0) translateY(20px);
|
178
|
-
}
|
179
|
-
|
180
|
-
@keyframes appear {
|
181
|
-
from {
|
182
|
-
opacity: 0;
|
183
|
-
transform: scaleY(0) translateY(20px);
|
184
|
-
}
|
185
|
-
to {
|
186
|
-
opacity: 1;
|
187
|
-
transform: scaleY(1) translateY(0);
|
188
|
-
}
|
189
|
-
}
|
190
|
-
|
191
|
-
.bg-heavy-blue {
|
192
|
-
background-color: #9fbdf0;
|
193
|
-
}
|
194
|
-
|
195
|
-
.border-heavy-blue {
|
196
|
-
border-color: #9fbdf0;
|
197
|
-
&:focus {
|
198
|
-
outline: 1px solid #9fbdf0;
|
199
|
-
}
|
200
|
-
}
|
201
|
-
|
202
|
-
.cloudy {
|
203
|
-
opacity: 0;
|
204
|
-
transition: opacity 0.5s ease-in-out;
|
205
|
-
animation: fadeIn 0.5s ease-in-out forwards;
|
206
|
-
}
|
207
|
-
|
208
|
-
@keyframes fadeIn {
|
209
|
-
from {
|
210
|
-
opacity: 0;
|
211
|
-
transform: translateY(20px);
|
212
|
-
}
|
213
|
-
to {
|
214
|
-
opacity: 1;
|
215
|
-
transform: translateY(0);
|
216
|
-
}
|
217
|
-
}
|
1
|
+
@import "tailwindcss";
|
2
|
+
|
3
|
+
:root {
|
4
|
+
font-family: system-ui, Avenir, Helvetica, Arial, sans-serif;
|
5
|
+
line-height: 1.5;
|
6
|
+
font-weight: 400;
|
7
|
+
|
8
|
+
color-scheme: light dark;
|
9
|
+
color: #213547;
|
10
|
+
|
11
|
+
font-synthesis: none;
|
12
|
+
text-rendering: optimizeLegibility;
|
13
|
+
-webkit-font-smoothing: antialiased;
|
14
|
+
-moz-osx-font-smoothing: grayscale;
|
15
|
+
|
16
|
+
--four-geeks-blue: #0097cf;
|
17
|
+
--soft-blue: #f3fafd;
|
18
|
+
--gray-text: #6883b4;
|
19
|
+
--learnpack-blue: #02a9ea;
|
20
|
+
--learnpack-light-blue: #c7f3fd;
|
21
|
+
}
|
22
|
+
|
23
|
+
a {
|
24
|
+
font-weight: 500;
|
25
|
+
color: var(--learnpack-blue);
|
26
|
+
text-decoration: inherit;
|
27
|
+
}
|
28
|
+
a:hover {
|
29
|
+
color: var(--learnpack-blue);
|
30
|
+
}
|
31
|
+
|
32
|
+
body {
|
33
|
+
margin: 0;
|
34
|
+
min-height: 100vh;
|
35
|
+
background-color: #f4f9fe;
|
36
|
+
}
|
37
|
+
|
38
|
+
.bg-learnpack-blue {
|
39
|
+
background-color: var(--soft-blue);
|
40
|
+
}
|
41
|
+
|
42
|
+
.bg-learnpack {
|
43
|
+
background-color: var(--learnpack-blue);
|
44
|
+
}
|
45
|
+
|
46
|
+
.bg-gray-blue {
|
47
|
+
background-color: #e7f1ff;
|
48
|
+
}
|
49
|
+
|
50
|
+
.index-circle {
|
51
|
+
width: 30px;
|
52
|
+
height: 30px;
|
53
|
+
font-size: 16px;
|
54
|
+
font-weight: 600;
|
55
|
+
border-radius: 50%;
|
56
|
+
color: var(--four-geeks-blue);
|
57
|
+
background-color: var(--soft-blue);
|
58
|
+
display: flex;
|
59
|
+
align-items: center;
|
60
|
+
justify-content: center;
|
61
|
+
}
|
62
|
+
.text-gray {
|
63
|
+
color: var(--gray-text);
|
64
|
+
}
|
65
|
+
|
66
|
+
.scrollbar-hide {
|
67
|
+
scrollbar-width: none !important;
|
68
|
+
}
|
69
|
+
|
70
|
+
.loader {
|
71
|
+
display: flex;
|
72
|
+
/* flex-direction: column; */
|
73
|
+
align-items: center;
|
74
|
+
gap: 10px;
|
75
|
+
justify-content: center;
|
76
|
+
animation: glowing 1000ms linear infinite;
|
77
|
+
}
|
78
|
+
@keyframes spin {
|
79
|
+
from {
|
80
|
+
transform: rotate(0deg);
|
81
|
+
}
|
82
|
+
to {
|
83
|
+
transform: rotate(360deg);
|
84
|
+
}
|
85
|
+
}
|
86
|
+
|
87
|
+
.loader-icon {
|
88
|
+
width: 40px;
|
89
|
+
height: 40px;
|
90
|
+
position: relative;
|
91
|
+
display: flex;
|
92
|
+
align-items: center;
|
93
|
+
justify-content: center;
|
94
|
+
}
|
95
|
+
/* .loader-icon::after {
|
96
|
+
content: "";
|
97
|
+
display: block;
|
98
|
+
width: 100%;
|
99
|
+
top: 0;
|
100
|
+
left: 0;
|
101
|
+
position: absolute;
|
102
|
+
height: 100%;
|
103
|
+
border: 2px solid var(--gray-text);
|
104
|
+
border-top: 2px solid var(--learnpack-blue);
|
105
|
+
|
106
|
+
border-radius: 50%;
|
107
|
+
animation: spin 2s linear infinite;
|
108
|
+
} */
|
109
|
+
|
110
|
+
@keyframes glowing {
|
111
|
+
0% {
|
112
|
+
opacity: 0.6;
|
113
|
+
}
|
114
|
+
100% {
|
115
|
+
opacity: 1;
|
116
|
+
}
|
117
|
+
}
|
118
|
+
|
119
|
+
.blue-on-hover:hover {
|
120
|
+
svg {
|
121
|
+
fill: var(--learnpack-blue);
|
122
|
+
|
123
|
+
path {
|
124
|
+
fill: var(--learnpack-blue);
|
125
|
+
}
|
126
|
+
}
|
127
|
+
}
|
128
|
+
|
129
|
+
.border-learnpack-blue {
|
130
|
+
border-color: var(--learnpack-blue);
|
131
|
+
}
|
132
|
+
|
133
|
+
.red-ball {
|
134
|
+
width: 16px;
|
135
|
+
height: 16px;
|
136
|
+
border: 2px solid white;
|
137
|
+
background-color: #eb5757;
|
138
|
+
border-radius: 50%;
|
139
|
+
position: absolute;
|
140
|
+
top: -10px;
|
141
|
+
left: 10px;
|
142
|
+
}
|
143
|
+
|
144
|
+
.fluid-svg {
|
145
|
+
> svg {
|
146
|
+
width: 100%;
|
147
|
+
height: 100%;
|
148
|
+
}
|
149
|
+
}
|
150
|
+
|
151
|
+
.outline-blue:focus {
|
152
|
+
outline: 1px solid #51b3e5;
|
153
|
+
}
|
154
|
+
|
155
|
+
.border-C8DBFC {
|
156
|
+
border-color: #c8dbfc;
|
157
|
+
}
|
158
|
+
|
159
|
+
.markdown-renderer {
|
160
|
+
& ul {
|
161
|
+
padding-left: 0;
|
162
|
+
list-style-position: inside;
|
163
|
+
list-style-type: disc;
|
164
|
+
}
|
165
|
+
|
166
|
+
& ol {
|
167
|
+
padding-left: 0;
|
168
|
+
list-style-position: inside;
|
169
|
+
list-style-type: decimal;
|
170
|
+
}
|
171
|
+
}
|
172
|
+
|
173
|
+
.appear {
|
174
|
+
animation: appear 0.5s ease-in-out forwards;
|
175
|
+
transform-origin: top center; /* o donde quieras que crezca */
|
176
|
+
opacity: 0;
|
177
|
+
transform: scaleY(0) translateY(20px);
|
178
|
+
}
|
179
|
+
|
180
|
+
@keyframes appear {
|
181
|
+
from {
|
182
|
+
opacity: 0;
|
183
|
+
transform: scaleY(0) translateY(20px);
|
184
|
+
}
|
185
|
+
to {
|
186
|
+
opacity: 1;
|
187
|
+
transform: scaleY(1) translateY(0);
|
188
|
+
}
|
189
|
+
}
|
190
|
+
|
191
|
+
.bg-heavy-blue {
|
192
|
+
background-color: #9fbdf0;
|
193
|
+
}
|
194
|
+
|
195
|
+
.border-heavy-blue {
|
196
|
+
border-color: #9fbdf0;
|
197
|
+
&:focus {
|
198
|
+
outline: 1px solid #9fbdf0;
|
199
|
+
}
|
200
|
+
}
|
201
|
+
|
202
|
+
.cloudy {
|
203
|
+
opacity: 0;
|
204
|
+
transition: opacity 0.5s ease-in-out;
|
205
|
+
animation: fadeIn 0.5s ease-in-out forwards;
|
206
|
+
}
|
207
|
+
|
208
|
+
@keyframes fadeIn {
|
209
|
+
from {
|
210
|
+
opacity: 0;
|
211
|
+
transform: translateY(20px);
|
212
|
+
}
|
213
|
+
to {
|
214
|
+
opacity: 1;
|
215
|
+
transform: translateY(0);
|
216
|
+
}
|
217
|
+
}
|
@@ -90,6 +90,7 @@
|
|
90
90
|
"creatingCourseAs": "Creating the course as {{name}}",
|
91
91
|
"loginAsSomeoneElse": "Login as someone else",
|
92
92
|
"continueScrolling": "Continue scrolling",
|
93
|
+
"noLessons": "The content could not be generated, please talk with Rigobot to give it more context.",
|
93
94
|
"okMessage": "If you're satisfied, type 'OK' in the chat.",
|
94
95
|
"instructionsMessage": "If not, what would you like me to change? You can say things like:\n - Add more exercises\n - Make it more difficult\n - Remove step 1.1 and replace it with a new step that explains the concept of X "
|
95
96
|
},
|
@@ -90,6 +90,7 @@
|
|
90
90
|
"creatingCourseAs": "Creando el curso como {{name}}",
|
91
91
|
"loginAsSomeoneElse": "Iniciar sesión como alguien más",
|
92
92
|
"continueScrolling": "Continuar desplazando",
|
93
|
+
"noLessons": "El contenido no pudo ser generado, por favor habla con Rigobot para darle más contexto.",
|
93
94
|
"okMessage": "Si estás satisfecho, escribe 'OK' en el chat.",
|
94
95
|
"instructionsMessage": "Si no, ¿qué te gustaría que cambiara? Puedes decir cosas como:\n - Añadir más ejercicios\n - Hacerlo más difícil\n - Eliminar el paso 1.1 y reemplazarlo con un nuevo paso que explique el concepto de X "
|
95
96
|
},
|
@@ -1,122 +1,122 @@
|
|
1
|
-
export interface IFile {
|
2
|
-
path: string
|
3
|
-
name: string
|
4
|
-
hidden: boolean
|
5
|
-
}
|
6
|
-
|
7
|
-
export interface IExercise {
|
8
|
-
position?: number
|
9
|
-
files: Array<IFile>
|
10
|
-
slug: string
|
11
|
-
path: string
|
12
|
-
done: boolean
|
13
|
-
language?: string | null
|
14
|
-
entry?: string | null
|
15
|
-
graded?: boolean
|
16
|
-
translations?: { [key: string]: string }
|
17
|
-
title: string
|
18
|
-
}
|
19
|
-
|
20
|
-
export type TGrading = "isolated" | "incremental" | "no-grading"
|
21
|
-
|
22
|
-
export type TMode = "preview" | "extension"
|
23
|
-
|
24
|
-
export type TConfigAction = "test" | "build" | "tutorial" | "reset" | "generate"
|
25
|
-
|
26
|
-
export type TConfigObjAttributes = "config" | "exercises" | "grading"
|
27
|
-
|
28
|
-
export type TCompiler =
|
29
|
-
| "webpack"
|
30
|
-
| "vanillajs"
|
31
|
-
| "react"
|
32
|
-
| "html"
|
33
|
-
| "node"
|
34
|
-
| "python"
|
35
|
-
| "css"
|
36
|
-
|
37
|
-
export interface IConfigPath {
|
38
|
-
base: string
|
39
|
-
}
|
40
|
-
|
41
|
-
export interface IEditor {
|
42
|
-
mode?: TMode
|
43
|
-
version?: string
|
44
|
-
agent?: TAgent
|
45
|
-
hideTerminal?: boolean
|
46
|
-
}
|
47
|
-
|
48
|
-
export interface TEntries {
|
49
|
-
python3?: string
|
50
|
-
html?: string
|
51
|
-
node?: string
|
52
|
-
react?: string
|
53
|
-
java?: string
|
54
|
-
}
|
55
|
-
|
56
|
-
export interface IConfig {
|
57
|
-
// os: string
|
58
|
-
// port?: string
|
59
|
-
// repository?: string
|
60
|
-
description?: string
|
61
|
-
slug?: string
|
62
|
-
// dirPath: string
|
63
|
-
// preview?: string // Picture thumbnail
|
64
|
-
// entries: TEntries
|
65
|
-
grading: TGrading
|
66
|
-
// configPath: string
|
67
|
-
translations: Array<string>
|
68
|
-
// outputPath?: string
|
69
|
-
// editor: IEditor
|
70
|
-
language: string
|
71
|
-
title: string
|
72
|
-
duration: number
|
73
|
-
difficulty?: string
|
74
|
-
exercisesPath: string
|
75
|
-
disableGrading: boolean // TODO: Deprecate
|
76
|
-
actions: Array<string> // TODO: Deprecate
|
77
|
-
autoPlay: boolean
|
78
|
-
projectType?: string
|
79
|
-
// TODO: nameExerciseValidation
|
80
|
-
contact?: string
|
81
|
-
disabledActions?: Array<TConfigAction>
|
82
|
-
compiler: TCompiler
|
83
|
-
compilers: Array<TCompiler>
|
84
|
-
publicPath: string
|
85
|
-
publicUrl?: string
|
86
|
-
bugsLink?: string
|
87
|
-
videoSolutions?: boolean
|
88
|
-
skills: Array<string>
|
89
|
-
// telemetry?: TTelemetryUrls
|
90
|
-
variables?: TVariables
|
91
|
-
suggestions: TSuggestions
|
92
|
-
warnings: TWarnings
|
93
|
-
runHook: (...agrs: Array<any>) => void
|
94
|
-
testingFinishedCallback: (arg: any | undefined) => void
|
95
|
-
}
|
96
|
-
export type TAgent = "os" | "vscode" | null
|
97
|
-
|
98
|
-
export type TSuggestions = {
|
99
|
-
agent: TAgent
|
100
|
-
}
|
101
|
-
|
102
|
-
type TWarnings = {
|
103
|
-
agent?: string
|
104
|
-
extension?: string
|
105
|
-
}
|
106
|
-
|
107
|
-
type TVariable = {
|
108
|
-
type: "command" | "string"
|
109
|
-
source: string
|
110
|
-
}
|
111
|
-
type TVariables = {
|
112
|
-
[key: string]: TVariable | string
|
113
|
-
}
|
114
|
-
|
115
|
-
export interface IConfigObj {
|
116
|
-
session?: number
|
117
|
-
currentExercise?: any
|
118
|
-
config?: IConfig
|
119
|
-
exercises?: Array<IExercise>
|
120
|
-
confPath?: IConfigPath
|
121
|
-
address?: string // Maybe
|
122
|
-
}
|
1
|
+
export interface IFile {
|
2
|
+
path: string
|
3
|
+
name: string
|
4
|
+
hidden: boolean
|
5
|
+
}
|
6
|
+
|
7
|
+
export interface IExercise {
|
8
|
+
position?: number
|
9
|
+
files: Array<IFile>
|
10
|
+
slug: string
|
11
|
+
path: string
|
12
|
+
done: boolean
|
13
|
+
language?: string | null
|
14
|
+
entry?: string | null
|
15
|
+
graded?: boolean
|
16
|
+
translations?: { [key: string]: string }
|
17
|
+
title: string
|
18
|
+
}
|
19
|
+
|
20
|
+
export type TGrading = "isolated" | "incremental" | "no-grading"
|
21
|
+
|
22
|
+
export type TMode = "preview" | "extension"
|
23
|
+
|
24
|
+
export type TConfigAction = "test" | "build" | "tutorial" | "reset" | "generate"
|
25
|
+
|
26
|
+
export type TConfigObjAttributes = "config" | "exercises" | "grading"
|
27
|
+
|
28
|
+
export type TCompiler =
|
29
|
+
| "webpack"
|
30
|
+
| "vanillajs"
|
31
|
+
| "react"
|
32
|
+
| "html"
|
33
|
+
| "node"
|
34
|
+
| "python"
|
35
|
+
| "css"
|
36
|
+
|
37
|
+
export interface IConfigPath {
|
38
|
+
base: string
|
39
|
+
}
|
40
|
+
|
41
|
+
export interface IEditor {
|
42
|
+
mode?: TMode
|
43
|
+
version?: string
|
44
|
+
agent?: TAgent
|
45
|
+
hideTerminal?: boolean
|
46
|
+
}
|
47
|
+
|
48
|
+
export interface TEntries {
|
49
|
+
python3?: string
|
50
|
+
html?: string
|
51
|
+
node?: string
|
52
|
+
react?: string
|
53
|
+
java?: string
|
54
|
+
}
|
55
|
+
|
56
|
+
export interface IConfig {
|
57
|
+
// os: string
|
58
|
+
// port?: string
|
59
|
+
// repository?: string
|
60
|
+
description?: string
|
61
|
+
slug?: string
|
62
|
+
// dirPath: string
|
63
|
+
// preview?: string // Picture thumbnail
|
64
|
+
// entries: TEntries
|
65
|
+
grading: TGrading
|
66
|
+
// configPath: string
|
67
|
+
translations: Array<string>
|
68
|
+
// outputPath?: string
|
69
|
+
// editor: IEditor
|
70
|
+
language: string
|
71
|
+
title: string
|
72
|
+
duration: number
|
73
|
+
difficulty?: string
|
74
|
+
exercisesPath: string
|
75
|
+
disableGrading: boolean // TODO: Deprecate
|
76
|
+
actions: Array<string> // TODO: Deprecate
|
77
|
+
autoPlay: boolean
|
78
|
+
projectType?: string
|
79
|
+
// TODO: nameExerciseValidation
|
80
|
+
contact?: string
|
81
|
+
disabledActions?: Array<TConfigAction>
|
82
|
+
compiler: TCompiler
|
83
|
+
compilers: Array<TCompiler>
|
84
|
+
publicPath: string
|
85
|
+
publicUrl?: string
|
86
|
+
bugsLink?: string
|
87
|
+
videoSolutions?: boolean
|
88
|
+
skills: Array<string>
|
89
|
+
// telemetry?: TTelemetryUrls
|
90
|
+
variables?: TVariables
|
91
|
+
suggestions: TSuggestions
|
92
|
+
warnings: TWarnings
|
93
|
+
runHook: (...agrs: Array<any>) => void
|
94
|
+
testingFinishedCallback: (arg: any | undefined) => void
|
95
|
+
}
|
96
|
+
export type TAgent = "os" | "vscode" | null
|
97
|
+
|
98
|
+
export type TSuggestions = {
|
99
|
+
agent: TAgent
|
100
|
+
}
|
101
|
+
|
102
|
+
type TWarnings = {
|
103
|
+
agent?: string
|
104
|
+
extension?: string
|
105
|
+
}
|
106
|
+
|
107
|
+
type TVariable = {
|
108
|
+
type: "command" | "string"
|
109
|
+
source: string
|
110
|
+
}
|
111
|
+
type TVariables = {
|
112
|
+
[key: string]: TVariable | string
|
113
|
+
}
|
114
|
+
|
115
|
+
export interface IConfigObj {
|
116
|
+
session?: number
|
117
|
+
currentExercise?: any
|
118
|
+
config?: IConfig
|
119
|
+
exercises?: Array<IExercise>
|
120
|
+
confPath?: IConfigPath
|
121
|
+
address?: string // Maybe
|
122
|
+
}
|