@learnpack/learnpack 5.0.7 → 5.0.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (70) hide show
  1. package/README.md +17 -17
  2. package/bin/run +17 -17
  3. package/bin/run.cmd +3 -3
  4. package/lib/commands/audit.js +34 -22
  5. package/lib/commands/clean.js +3 -3
  6. package/lib/commands/download.js +3 -3
  7. package/lib/commands/login.js +3 -3
  8. package/lib/commands/logout.js +3 -3
  9. package/lib/managers/config/index.d.ts +10 -0
  10. package/lib/managers/config/index.js +3 -1
  11. package/oclif.manifest.json +1 -1
  12. package/package.json +152 -152
  13. package/src/commands/audit.ts +449 -443
  14. package/src/commands/clean.ts +29 -29
  15. package/src/commands/download.ts +61 -61
  16. package/src/commands/login.ts +42 -42
  17. package/src/commands/logout.ts +43 -43
  18. package/src/commands/publish.ts +249 -249
  19. package/src/commands/test.ts +85 -85
  20. package/src/index.ts +1 -1
  21. package/src/managers/config/allowed_files.ts +29 -29
  22. package/src/managers/config/index.ts +6 -4
  23. package/src/managers/gitpod.ts +84 -84
  24. package/src/managers/server/index.ts +78 -78
  25. package/src/managers/telemetry.ts +353 -353
  26. package/src/managers/test.ts +83 -83
  27. package/src/models/audit.ts +16 -16
  28. package/src/models/config-manager.ts +23 -23
  29. package/src/models/counter.ts +11 -11
  30. package/src/models/errors.ts +22 -22
  31. package/src/models/exercise-obj.ts +29 -29
  32. package/src/models/file.ts +5 -5
  33. package/src/models/findings.ts +18 -18
  34. package/src/models/flags.ts +10 -10
  35. package/src/models/front-matter.ts +11 -11
  36. package/src/models/gitpod-data.ts +19 -19
  37. package/src/models/language.ts +4 -4
  38. package/src/models/package.ts +7 -7
  39. package/src/models/plugin-config.ts +17 -17
  40. package/src/models/success-types.ts +1 -1
  41. package/src/plugin/command/compile.ts +17 -17
  42. package/src/plugin/command/test.ts +30 -30
  43. package/src/plugin/index.ts +6 -6
  44. package/src/plugin/plugin.ts +94 -94
  45. package/src/plugin/utils.ts +87 -87
  46. package/src/types/node-fetch.d.ts +1 -1
  47. package/src/ui/download.ts +71 -71
  48. package/src/utils/BaseCommand.ts +48 -48
  49. package/src/utils/SessionCommand.ts +43 -43
  50. package/src/utils/audit.ts +393 -393
  51. package/src/utils/errors.ts +117 -117
  52. package/src/utils/exercisesQueue.ts +51 -51
  53. package/src/utils/fileQueue.ts +199 -199
  54. package/src/utils/misc.ts +23 -23
  55. package/src/utils/osOperations.ts +79 -79
  56. package/src/utils/templates/gitignore.txt +19 -19
  57. package/src/utils/templates/incremental/.learn/exercises/01-hello-world/README.es.md +24 -24
  58. package/src/utils/templates/incremental/.learn/exercises/01-hello-world/README.md +24 -24
  59. package/src/utils/templates/incremental/.vscode/schema.json +121 -121
  60. package/src/utils/templates/incremental/.vscode/settings.json +13 -13
  61. package/src/utils/templates/incremental/README.ejs +4 -4
  62. package/src/utils/templates/incremental/README.es.ejs +4 -4
  63. package/src/utils/templates/isolated/.vscode/schema.json +121 -121
  64. package/src/utils/templates/isolated/.vscode/settings.json +13 -13
  65. package/src/utils/templates/isolated/README.ejs +4 -4
  66. package/src/utils/templates/isolated/README.es.ejs +4 -4
  67. package/src/utils/templates/no-grading/README.ejs +4 -4
  68. package/src/utils/templates/no-grading/README.es.ejs +4 -4
  69. package/src/utils/validators.ts +18 -18
  70. package/src/utils/watcher.ts +27 -27
@@ -1,24 +1,24 @@
1
- # `01` Hello World
2
-
3
- Puedes tener un archivo README el cual será como una página de un libro, sin archivos de código.
4
-
5
- También puedes agregar un archivo `README.[lenguaje].md` para traducciones, por ejemplo `README.es.md` para español.
6
-
7
- ## Inserta videos
8
-
9
- Si quieres incluir algún video introductorio para cada ejercicio, agrega la propiedad `intro` en el inicio del README.md para ese ejercicio en particular:
10
-
11
- ```markdown
12
- ---
13
- intro: "https://www.youtube.com/watch?v=YkgkThdzX-8"
14
- ---
15
- ```
16
-
17
- Tambien puedes agregar un video explicando la solución para cada ejercicio agregando la propiedad `tutorial` al inicio del markdown del README.md correspondiente:
18
-
19
- ```markdown
20
- ---
21
- intro: "https://www.youtube.com/watch?v=YkgkThdzX-8"
22
- tutorial: "https://www.youtube.com/watch?v=YkgkThdzX-8"
23
- ---
24
- ```
1
+ # `01` Hello World
2
+
3
+ Puedes tener un archivo README el cual será como una página de un libro, sin archivos de código.
4
+
5
+ También puedes agregar un archivo `README.[lenguaje].md` para traducciones, por ejemplo `README.es.md` para español.
6
+
7
+ ## Inserta videos
8
+
9
+ Si quieres incluir algún video introductorio para cada ejercicio, agrega la propiedad `intro` en el inicio del README.md para ese ejercicio en particular:
10
+
11
+ ```markdown
12
+ ---
13
+ intro: "https://www.youtube.com/watch?v=YkgkThdzX-8"
14
+ ---
15
+ ```
16
+
17
+ Tambien puedes agregar un video explicando la solución para cada ejercicio agregando la propiedad `tutorial` al inicio del markdown del README.md correspondiente:
18
+
19
+ ```markdown
20
+ ---
21
+ intro: "https://www.youtube.com/watch?v=YkgkThdzX-8"
22
+ tutorial: "https://www.youtube.com/watch?v=YkgkThdzX-8"
23
+ ---
24
+ ```
@@ -1,24 +1,24 @@
1
- # `01` Hello World
2
-
3
- You can have just a README file and it will be like a page in a book, no code files.
4
-
5
- You can also add a `README.[lang].md` file for translations, for example: `README.es.md` for spanish.
6
-
7
- ## Video compatibility
8
-
9
- If you want to include some video introduction for each exercise, add a `intro` property in the markdown frontmatter of the README.md for that particular exercise:
10
-
11
- ```markdown
12
- ---
13
- intro: "https://www.youtube.com/watch?v=YkgkThdzX-8"
14
- ---
15
- ```
16
-
17
- You can also add a video solution for each exercise by adding a `tutorial` property on the markdown frontmatter of it's README.md:
18
-
19
- ```markdown
20
- ---
21
- intro: "https://www.youtube.com/watch?v=YkgkThdzX-8"
22
- tutorial: "https://www.youtube.com/watch?v=YkgkThdzX-8"
23
- ---
24
- ```
1
+ # `01` Hello World
2
+
3
+ You can have just a README file and it will be like a page in a book, no code files.
4
+
5
+ You can also add a `README.[lang].md` file for translations, for example: `README.es.md` for spanish.
6
+
7
+ ## Video compatibility
8
+
9
+ If you want to include some video introduction for each exercise, add a `intro` property in the markdown frontmatter of the README.md for that particular exercise:
10
+
11
+ ```markdown
12
+ ---
13
+ intro: "https://www.youtube.com/watch?v=YkgkThdzX-8"
14
+ ---
15
+ ```
16
+
17
+ You can also add a video solution for each exercise by adding a `tutorial` property on the markdown frontmatter of it's README.md:
18
+
19
+ ```markdown
20
+ ---
21
+ intro: "https://www.youtube.com/watch?v=YkgkThdzX-8"
22
+ tutorial: "https://www.youtube.com/watch?v=YkgkThdzX-8"
23
+ ---
24
+ ```
@@ -1,121 +1,121 @@
1
- {
2
- "$schema": "http://json-schema.org/draft-07/schema#",
3
- "type": "object",
4
- "properties": {
5
- "language": {
6
- "type": "string",
7
- "enum": ["react", "auto", "html", "python", "node", "dom"]
8
- },
9
- "slug": {
10
- "type": "string"
11
- },
12
- "title": {
13
- "type": "object",
14
- "properties": {
15
- "us": {
16
- "type": "string"
17
- },
18
- "es": {
19
- "type": "string"
20
- }
21
- },
22
- "required": ["us"]
23
- },
24
- "repository": {
25
- "type": "string",
26
- "format": "uri"
27
- },
28
- "preview": {
29
- "type": "string",
30
- "format": "uri"
31
- },
32
- "description": {
33
- "type": "object",
34
- "properties": {
35
- "us": {
36
- "type": "string"
37
- },
38
- "es": {
39
- "type": "string"
40
- }
41
- },
42
- "required": ["us"]
43
- },
44
- "duration": {
45
- "type": "integer"
46
- },
47
- "projectType": {
48
- "type": "string",
49
- "enum": ["tutorial", "project"]
50
- },
51
- "difficulty": {
52
- "type": "string",
53
- "enum": ["easy","beginner", "medium", "hard"]
54
- },
55
- "videoSolutions": {
56
- "type": "boolean"
57
- },
58
- "bugsLink": {
59
- "type": "string",
60
- "format": "uri"
61
- },
62
- "grading": {
63
- "type": ["string", "null"],
64
- "enum": ["isolated", "incremental", null]
65
- },
66
- "editor": {
67
- "type": "object",
68
- "properties": {
69
- "version": {
70
- "type": "string"
71
- },
72
- "mode": {
73
- "type": "string",
74
- "enum": ["extension", "preview"]
75
- },
76
- "agent": {
77
- "type": "string",
78
- "enum": ["vscode", "os"]
79
- }
80
- },
81
- "required": ["version"]
82
- },
83
- "telemetry": {
84
- "type": "object",
85
- "properties": {
86
- "batch": {
87
- "type": "string",
88
- "format": "uri"
89
- }
90
- },
91
- "required": ["batch"]
92
- },
93
- "video": {
94
- "type": "object",
95
- "properties": {
96
- "intro": {
97
- "type": "object",
98
- "properties": {
99
- "us": {
100
- "type": "string",
101
- "format": "uri"
102
- },
103
- "es": {
104
- "type": "string",
105
- "format": "uri"
106
- }
107
- }
108
- }
109
- },
110
- "required": ["intro"]
111
- }
112
- },
113
- "required": [
114
- "slug",
115
- "title",
116
- "description",
117
- "duration",
118
- "difficulty",
119
- "grading"
120
- ]
121
- }
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "type": "object",
4
+ "properties": {
5
+ "language": {
6
+ "type": "string",
7
+ "enum": ["react", "auto", "html", "python", "node", "dom"]
8
+ },
9
+ "slug": {
10
+ "type": "string"
11
+ },
12
+ "title": {
13
+ "type": "object",
14
+ "properties": {
15
+ "us": {
16
+ "type": "string"
17
+ },
18
+ "es": {
19
+ "type": "string"
20
+ }
21
+ },
22
+ "required": ["us"]
23
+ },
24
+ "repository": {
25
+ "type": "string",
26
+ "format": "uri"
27
+ },
28
+ "preview": {
29
+ "type": "string",
30
+ "format": "uri"
31
+ },
32
+ "description": {
33
+ "type": "object",
34
+ "properties": {
35
+ "us": {
36
+ "type": "string"
37
+ },
38
+ "es": {
39
+ "type": "string"
40
+ }
41
+ },
42
+ "required": ["us"]
43
+ },
44
+ "duration": {
45
+ "type": "integer"
46
+ },
47
+ "projectType": {
48
+ "type": "string",
49
+ "enum": ["tutorial", "project"]
50
+ },
51
+ "difficulty": {
52
+ "type": "string",
53
+ "enum": ["easy","beginner", "medium", "hard"]
54
+ },
55
+ "videoSolutions": {
56
+ "type": "boolean"
57
+ },
58
+ "bugsLink": {
59
+ "type": "string",
60
+ "format": "uri"
61
+ },
62
+ "grading": {
63
+ "type": ["string", "null"],
64
+ "enum": ["isolated", "incremental", null]
65
+ },
66
+ "editor": {
67
+ "type": "object",
68
+ "properties": {
69
+ "version": {
70
+ "type": "string"
71
+ },
72
+ "mode": {
73
+ "type": "string",
74
+ "enum": ["extension", "preview"]
75
+ },
76
+ "agent": {
77
+ "type": "string",
78
+ "enum": ["vscode", "os"]
79
+ }
80
+ },
81
+ "required": ["version"]
82
+ },
83
+ "telemetry": {
84
+ "type": "object",
85
+ "properties": {
86
+ "batch": {
87
+ "type": "string",
88
+ "format": "uri"
89
+ }
90
+ },
91
+ "required": ["batch"]
92
+ },
93
+ "video": {
94
+ "type": "object",
95
+ "properties": {
96
+ "intro": {
97
+ "type": "object",
98
+ "properties": {
99
+ "us": {
100
+ "type": "string",
101
+ "format": "uri"
102
+ },
103
+ "es": {
104
+ "type": "string",
105
+ "format": "uri"
106
+ }
107
+ }
108
+ }
109
+ },
110
+ "required": ["intro"]
111
+ }
112
+ },
113
+ "required": [
114
+ "slug",
115
+ "title",
116
+ "description",
117
+ "duration",
118
+ "difficulty",
119
+ "grading"
120
+ ]
121
+ }
@@ -1,14 +1,14 @@
1
- {
2
- "files.autoSave": "afterDelay",
3
- "files.autoSaveDelay": 700,
4
- "editor.minimap.enabled": false,
5
- "workbench.editorAssociations": {
6
- "*.md": "vscode.markdown.preview.editor"
7
- },
8
- "json.schemas": [
9
- {
10
- "fileMatch": ["learn.json"],
11
- "url": "./.vscode/schema.json"
12
- }
13
- ]
1
+ {
2
+ "files.autoSave": "afterDelay",
3
+ "files.autoSaveDelay": 700,
4
+ "editor.minimap.enabled": false,
5
+ "workbench.editorAssociations": {
6
+ "*.md": "vscode.markdown.preview.editor"
7
+ },
8
+ "json.schemas": [
9
+ {
10
+ "fileMatch": ["learn.json"],
11
+ "url": "./.vscode/schema.json"
12
+ }
13
+ ]
14
14
  }
@@ -1,5 +1,5 @@
1
- # Welcome to <%= it.title %>
2
-
3
- You have initialized the exercises with grading=`incremental`; meaning that your students will complete one single tutorial with clear and autograded steps from beginning to end.
4
-
1
+ # Welcome to <%= it.title %>
2
+
3
+ You have initialized the exercises with grading=`incremental`; meaning that your students will complete one single tutorial with clear and autograded steps from beginning to end.
4
+
5
5
  Type `$ learnpack start` in your terminal to start the exercises.
@@ -1,5 +1,5 @@
1
- # Bienvenido a <%= it.title %>
2
-
3
- Has inicializado los ejercicios con grading=`incremental`; esto signigica que tus estudiantes completarán un solo tutorial con pasos claros e incrementales, desde el comienzo hasta el final.
4
-
1
+ # Bienvenido a <%= it.title %>
2
+
3
+ Has inicializado los ejercicios con grading=`incremental`; esto signigica que tus estudiantes completarán un solo tutorial con pasos claros e incrementales, desde el comienzo hasta el final.
4
+
5
5
  Ejecuta `$ learnpack start` en la terminal para comenzar con los ejercicios.
@@ -1,122 +1,122 @@
1
- {
2
- "$schema": "http://json-schema.org/draft-07/schema#",
3
- "type": "object",
4
- "properties": {
5
- "language": {
6
- "type": "string",
7
- "enum": ["react", "auto", "html", "python", "node", "dom"]
8
- },
9
- "slug": {
10
- "type": "string"
11
- },
12
- "title": {
13
- "type": "object",
14
- "properties": {
15
- "us": {
16
- "type": "string"
17
- },
18
- "es": {
19
- "type": "string"
20
- }
21
- },
22
- "required": ["us"]
23
- },
24
- "repository": {
25
- "type": "string",
26
- "format": "uri"
27
- },
28
- "preview": {
29
- "type": "string",
30
- "format": "uri"
31
- },
32
- "description": {
33
- "type": "object",
34
- "properties": {
35
- "us": {
36
- "type": "string"
37
- },
38
- "es": {
39
- "type": "string"
40
- }
41
- },
42
- "required": ["us"]
43
- },
44
- "duration": {
45
- "type": "integer"
46
- },
47
- "projectType": {
48
- "type": "string",
49
- "enum": ["tutorial", "project"]
50
- },
51
- "difficulty": {
52
- "type": "string",
53
- "enum": ["easy","beginner", "medium", "hard"]
54
- },
55
- "videoSolutions": {
56
- "type": "boolean"
57
- },
58
- "bugsLink": {
59
- "type": "string",
60
- "format": "uri"
61
- },
62
- "grading": {
63
- "type": ["string", "null"],
64
- "enum": ["isolated", "incremental", null]
65
- },
66
- "editor": {
67
- "type": "object",
68
- "properties": {
69
- "version": {
70
- "type": "string"
71
- },
72
- "mode": {
73
- "type": "string",
74
- "enum": ["extension", "preview"]
75
- },
76
- "agent": {
77
- "type": "string",
78
- "enum": ["vscode", "os"]
79
- }
80
- },
81
- "required": ["version"]
82
- },
83
- "telemetry": {
84
- "type": "object",
85
- "properties": {
86
- "batch": {
87
- "type": "string",
88
- "format": "uri"
89
- }
90
- },
91
- "required": ["batch"]
92
- },
93
- "video": {
94
- "type": "object",
95
- "properties": {
96
- "intro": {
97
- "type": "object",
98
- "properties": {
99
- "us": {
100
- "type": "string",
101
- "format": "uri"
102
- },
103
- "es": {
104
- "type": "string",
105
- "format": "uri"
106
- }
107
- }
108
- }
109
- },
110
- "required": ["intro"]
111
- }
112
- },
113
- "required": [
114
- "slug",
115
- "title",
116
- "description",
117
- "duration",
118
- "difficulty",
119
- "grading"
120
- ]
121
- }
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "type": "object",
4
+ "properties": {
5
+ "language": {
6
+ "type": "string",
7
+ "enum": ["react", "auto", "html", "python", "node", "dom"]
8
+ },
9
+ "slug": {
10
+ "type": "string"
11
+ },
12
+ "title": {
13
+ "type": "object",
14
+ "properties": {
15
+ "us": {
16
+ "type": "string"
17
+ },
18
+ "es": {
19
+ "type": "string"
20
+ }
21
+ },
22
+ "required": ["us"]
23
+ },
24
+ "repository": {
25
+ "type": "string",
26
+ "format": "uri"
27
+ },
28
+ "preview": {
29
+ "type": "string",
30
+ "format": "uri"
31
+ },
32
+ "description": {
33
+ "type": "object",
34
+ "properties": {
35
+ "us": {
36
+ "type": "string"
37
+ },
38
+ "es": {
39
+ "type": "string"
40
+ }
41
+ },
42
+ "required": ["us"]
43
+ },
44
+ "duration": {
45
+ "type": "integer"
46
+ },
47
+ "projectType": {
48
+ "type": "string",
49
+ "enum": ["tutorial", "project"]
50
+ },
51
+ "difficulty": {
52
+ "type": "string",
53
+ "enum": ["easy","beginner", "medium", "hard"]
54
+ },
55
+ "videoSolutions": {
56
+ "type": "boolean"
57
+ },
58
+ "bugsLink": {
59
+ "type": "string",
60
+ "format": "uri"
61
+ },
62
+ "grading": {
63
+ "type": ["string", "null"],
64
+ "enum": ["isolated", "incremental", null]
65
+ },
66
+ "editor": {
67
+ "type": "object",
68
+ "properties": {
69
+ "version": {
70
+ "type": "string"
71
+ },
72
+ "mode": {
73
+ "type": "string",
74
+ "enum": ["extension", "preview"]
75
+ },
76
+ "agent": {
77
+ "type": "string",
78
+ "enum": ["vscode", "os"]
79
+ }
80
+ },
81
+ "required": ["version"]
82
+ },
83
+ "telemetry": {
84
+ "type": "object",
85
+ "properties": {
86
+ "batch": {
87
+ "type": "string",
88
+ "format": "uri"
89
+ }
90
+ },
91
+ "required": ["batch"]
92
+ },
93
+ "video": {
94
+ "type": "object",
95
+ "properties": {
96
+ "intro": {
97
+ "type": "object",
98
+ "properties": {
99
+ "us": {
100
+ "type": "string",
101
+ "format": "uri"
102
+ },
103
+ "es": {
104
+ "type": "string",
105
+ "format": "uri"
106
+ }
107
+ }
108
+ }
109
+ },
110
+ "required": ["intro"]
111
+ }
112
+ },
113
+ "required": [
114
+ "slug",
115
+ "title",
116
+ "description",
117
+ "duration",
118
+ "difficulty",
119
+ "grading"
120
+ ]
121
+ }
122
122
 
@@ -1,14 +1,14 @@
1
- {
2
- "files.autoSave": "afterDelay",
3
- "files.autoSaveDelay": 700,
4
- "editor.minimap.enabled": false,
5
- "workbench.editorAssociations": {
6
- "*.md": "vscode.markdown.preview.editor"
7
- },
8
- "json.schemas": [
9
- {
10
- "fileMatch": ["learn.json"],
11
- "url": "./.vscode/schema.json"
12
- }
13
- ]
1
+ {
2
+ "files.autoSave": "afterDelay",
3
+ "files.autoSaveDelay": 700,
4
+ "editor.minimap.enabled": false,
5
+ "workbench.editorAssociations": {
6
+ "*.md": "vscode.markdown.preview.editor"
7
+ },
8
+ "json.schemas": [
9
+ {
10
+ "fileMatch": ["learn.json"],
11
+ "url": "./.vscode/schema.json"
12
+ }
13
+ ]
14
14
  }