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