@learnpack/learnpack 5.0.270 → 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.
Files changed (77) hide show
  1. package/README.md +409 -409
  2. package/lib/commands/audit.js +15 -15
  3. package/lib/commands/breakToken.js +19 -19
  4. package/lib/commands/clean.js +3 -3
  5. package/lib/commands/init.js +41 -41
  6. package/lib/commands/logout.js +3 -3
  7. package/lib/commands/serve.js +48 -20
  8. package/lib/creatorDist/assets/{index-CQXTTbaZ.js → index-BfLyIQVh.js} +11535 -11409
  9. package/lib/creatorDist/assets/{index-B4khtb0r.css → index-C39zeF3W.css} +3 -3
  10. package/lib/creatorDist/index.html +2 -2
  11. package/lib/managers/config/index.js +77 -77
  12. package/lib/models/creator.d.ts +1 -0
  13. package/lib/utils/api.js +1 -0
  14. package/lib/utils/creatorUtilities.js +14 -14
  15. package/package.json +1 -1
  16. package/src/commands/audit.ts +487 -487
  17. package/src/commands/breakToken.ts +67 -67
  18. package/src/commands/clean.ts +30 -30
  19. package/src/commands/init.ts +650 -650
  20. package/src/commands/logout.ts +38 -38
  21. package/src/commands/publish.ts +522 -522
  22. package/src/commands/serve.ts +64 -33
  23. package/src/commands/start.ts +333 -333
  24. package/src/commands/translate.ts +123 -123
  25. package/src/creator/README.md +54 -54
  26. package/src/creator/eslint.config.js +28 -28
  27. package/src/creator/src/components/syllabus/ContentIndex.tsx +1 -1
  28. package/src/creator/src/components/syllabus/SyllabusEditor.tsx +3 -1
  29. package/src/creator/src/i18n.ts +28 -28
  30. package/src/creator/src/index.css +217 -217
  31. package/src/creator/src/locales/en.json +1 -0
  32. package/src/creator/src/locales/es.json +1 -0
  33. package/src/creator/src/utils/configTypes.ts +122 -122
  34. package/src/creator/src/utils/constants.ts +13 -13
  35. package/src/creator/src/utils/creatorUtils.ts +46 -46
  36. package/src/creator/src/utils/eventBus.ts +2 -2
  37. package/src/creator/src/utils/lib.ts +468 -468
  38. package/src/creator/src/utils/rigo.ts +26 -26
  39. package/src/creator/src/utils/socket.ts +61 -61
  40. package/src/creator/src/utils/store.ts +222 -222
  41. package/src/creator/src/vite-env.d.ts +1 -1
  42. package/src/creator/vite.config.ts +13 -13
  43. package/src/creatorDist/assets/{index-CQXTTbaZ.js → index-BfLyIQVh.js} +11535 -11409
  44. package/src/creatorDist/assets/{index-B4khtb0r.css → index-C39zeF3W.css} +3 -3
  45. package/src/creatorDist/index.html +2 -2
  46. package/src/managers/config/defaults.ts +49 -49
  47. package/src/managers/config/exercise.ts +364 -364
  48. package/src/managers/config/index.ts +775 -775
  49. package/src/managers/file.ts +236 -236
  50. package/src/managers/server/routes.ts +554 -554
  51. package/src/managers/session.ts +182 -182
  52. package/src/managers/telemetry.ts +188 -188
  53. package/src/models/action.ts +13 -13
  54. package/src/models/config-manager.ts +28 -28
  55. package/src/models/config.ts +106 -106
  56. package/src/models/creator.ts +40 -39
  57. package/src/models/exercise-obj.ts +30 -30
  58. package/src/models/session.ts +39 -39
  59. package/src/models/socket.ts +61 -61
  60. package/src/models/status.ts +16 -16
  61. package/src/ui/_app/app.css +1 -1
  62. package/src/ui/_app/app.js +435 -414
  63. package/src/ui/_app/learnpack.svg +7 -7
  64. package/src/ui/app.tar.gz +0 -0
  65. package/src/utils/BaseCommand.ts +56 -56
  66. package/src/utils/api.ts +31 -30
  67. package/src/utils/audit.ts +392 -392
  68. package/src/utils/checkNotInstalled.ts +267 -267
  69. package/src/utils/configBuilder.ts +82 -82
  70. package/src/utils/convertCreds.js +34 -34
  71. package/src/utils/creatorUtilities.ts +504 -504
  72. package/src/utils/incrementVersion.js +74 -74
  73. package/src/utils/misc.ts +58 -58
  74. package/src/utils/rigoActions.ts +500 -500
  75. package/src/utils/sidebarGenerator.ts +195 -195
  76. package/src/utils/templates/isolated/exercises/01-hello-world/README.es.md +26 -26
  77. 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
+ }