@learnpack/learnpack 2.1.25 → 2.1.27

Sign up to get free protection for your applications and to get access to all the features.
Files changed (187) hide show
  1. package/README.md +16 -16
  2. package/bin/run +17 -17
  3. package/bin/run.cmd +3 -3
  4. package/oclif.manifest.json +1 -1
  5. package/package.json +139 -138
  6. package/src/commands/audit.ts +134 -109
  7. package/src/commands/clean.ts +29 -29
  8. package/src/commands/download.ts +62 -62
  9. package/src/commands/init.ts +39 -39
  10. package/src/commands/login.ts +42 -42
  11. package/src/commands/logout.ts +43 -43
  12. package/src/commands/publish.ts +107 -107
  13. package/src/commands/start.ts +264 -234
  14. package/src/commands/test.ts +85 -85
  15. package/src/index.ts +1 -1
  16. package/src/managers/config/allowed_files.ts +29 -29
  17. package/src/managers/config/defaults.ts +4 -2
  18. package/src/managers/config/exercise.ts +309 -302
  19. package/src/managers/config/index.ts +159 -138
  20. package/src/managers/file.ts +178 -169
  21. package/src/managers/gitpod.ts +84 -84
  22. package/src/managers/server/index.ts +78 -69
  23. package/src/managers/server/routes.ts +139 -90
  24. package/src/managers/session.ts +147 -118
  25. package/src/managers/socket.ts +252 -239
  26. package/src/managers/test.ts +83 -83
  27. package/src/models/action.ts +10 -3
  28. package/src/models/config-manager.ts +23 -23
  29. package/src/models/config.ts +9 -2
  30. package/src/models/counter.ts +11 -11
  31. package/src/models/errors.ts +22 -22
  32. package/src/models/exercise-obj.ts +6 -3
  33. package/src/models/file.ts +5 -5
  34. package/src/models/findings.ts +18 -18
  35. package/src/models/flags.ts +10 -10
  36. package/src/models/front-matter.ts +11 -11
  37. package/src/models/gitpod-data.ts +19 -19
  38. package/src/models/language.ts +4 -4
  39. package/src/models/package.ts +7 -7
  40. package/src/models/plugin-config.ts +17 -17
  41. package/src/models/session.ts +29 -26
  42. package/src/models/socket.ts +54 -48
  43. package/src/models/status.ts +16 -15
  44. package/src/models/success-types.ts +1 -1
  45. package/src/plugin/command/compile.ts +17 -17
  46. package/src/plugin/command/test.ts +30 -30
  47. package/src/plugin/index.ts +6 -6
  48. package/src/plugin/plugin.ts +94 -94
  49. package/src/plugin/utils.ts +87 -87
  50. package/src/types/node-fetch.d.ts +1 -1
  51. package/src/ui/download.ts +71 -71
  52. package/src/utils/BaseCommand.ts +48 -48
  53. package/src/utils/SessionCommand.ts +48 -48
  54. package/src/utils/api.ts +246 -194
  55. package/src/utils/audit.ts +392 -395
  56. package/src/utils/console.ts +24 -24
  57. package/src/utils/errors.ts +117 -117
  58. package/src/utils/exercisesQueue.ts +51 -51
  59. package/src/utils/fileQueue.ts +198 -198
  60. package/src/utils/misc.ts +23 -23
  61. package/src/utils/templates/gitignore.txt +19 -19
  62. package/src/utils/templates/incremental/.learn/exercises/01-hello-world/README.es.md +24 -24
  63. package/src/utils/templates/incremental/.learn/exercises/01-hello-world/README.md +24 -24
  64. package/src/utils/templates/incremental/README.ejs +4 -4
  65. package/src/utils/templates/incremental/README.es.ejs +4 -4
  66. package/src/utils/templates/isolated/01-hello-world/README.es.md +26 -26
  67. package/src/utils/templates/isolated/01-hello-world/README.md +26 -26
  68. package/src/utils/templates/isolated/README.ejs +4 -4
  69. package/src/utils/templates/isolated/README.es.ejs +4 -4
  70. package/src/utils/templates/no-grading/README.ejs +4 -4
  71. package/src/utils/templates/no-grading/README.es.ejs +4 -4
  72. package/src/utils/validators.ts +18 -18
  73. package/src/utils/watcher.ts +14 -14
  74. package/lib/commands/audit.d.ts +0 -6
  75. package/lib/commands/audit.js +0 -317
  76. package/lib/commands/clean.d.ts +0 -8
  77. package/lib/commands/clean.js +0 -25
  78. package/lib/commands/download.d.ts +0 -13
  79. package/lib/commands/download.js +0 -55
  80. package/lib/commands/init.d.ts +0 -9
  81. package/lib/commands/init.js +0 -123
  82. package/lib/commands/login.d.ts +0 -14
  83. package/lib/commands/login.js +0 -37
  84. package/lib/commands/logout.d.ts +0 -14
  85. package/lib/commands/logout.js +0 -37
  86. package/lib/commands/publish.d.ts +0 -14
  87. package/lib/commands/publish.js +0 -82
  88. package/lib/commands/start.d.ts +0 -7
  89. package/lib/commands/start.js +0 -165
  90. package/lib/commands/test.d.ts +0 -6
  91. package/lib/commands/test.js +0 -62
  92. package/lib/index.d.ts +0 -1
  93. package/lib/index.js +0 -4
  94. package/lib/managers/config/allowed_files.d.ts +0 -5
  95. package/lib/managers/config/allowed_files.js +0 -30
  96. package/lib/managers/config/defaults.d.ts +0 -37
  97. package/lib/managers/config/defaults.js +0 -38
  98. package/lib/managers/config/exercise.d.ts +0 -36
  99. package/lib/managers/config/exercise.js +0 -230
  100. package/lib/managers/config/index.d.ts +0 -3
  101. package/lib/managers/config/index.js +0 -302
  102. package/lib/managers/file.d.ts +0 -13
  103. package/lib/managers/file.js +0 -134
  104. package/lib/managers/gitpod.d.ts +0 -3
  105. package/lib/managers/gitpod.js +0 -67
  106. package/lib/managers/server/index.d.ts +0 -6
  107. package/lib/managers/server/index.js +0 -51
  108. package/lib/managers/server/routes.d.ts +0 -4
  109. package/lib/managers/server/routes.js +0 -167
  110. package/lib/managers/session.d.ts +0 -3
  111. package/lib/managers/session.js +0 -104
  112. package/lib/managers/socket.d.ts +0 -3
  113. package/lib/managers/socket.js +0 -164
  114. package/lib/managers/test.d.ts +0 -0
  115. package/lib/managers/test.js +0 -84
  116. package/lib/models/action.d.ts +0 -2
  117. package/lib/models/action.js +0 -2
  118. package/lib/models/audit.d.ts +0 -15
  119. package/lib/models/audit.js +0 -2
  120. package/lib/models/config-manager.d.ts +0 -21
  121. package/lib/models/config-manager.js +0 -2
  122. package/lib/models/config.d.ts +0 -60
  123. package/lib/models/config.js +0 -2
  124. package/lib/models/counter.d.ts +0 -11
  125. package/lib/models/counter.js +0 -2
  126. package/lib/models/errors.d.ts +0 -15
  127. package/lib/models/errors.js +0 -2
  128. package/lib/models/exercise-obj.d.ts +0 -27
  129. package/lib/models/exercise-obj.js +0 -2
  130. package/lib/models/file.d.ts +0 -5
  131. package/lib/models/file.js +0 -2
  132. package/lib/models/findings.d.ts +0 -17
  133. package/lib/models/findings.js +0 -2
  134. package/lib/models/flags.d.ts +0 -10
  135. package/lib/models/flags.js +0 -2
  136. package/lib/models/front-matter.d.ts +0 -11
  137. package/lib/models/front-matter.js +0 -2
  138. package/lib/models/gitpod-data.d.ts +0 -16
  139. package/lib/models/gitpod-data.js +0 -2
  140. package/lib/models/language.d.ts +0 -4
  141. package/lib/models/language.js +0 -2
  142. package/lib/models/package.d.ts +0 -7
  143. package/lib/models/package.js +0 -2
  144. package/lib/models/plugin-config.d.ts +0 -16
  145. package/lib/models/plugin-config.js +0 -2
  146. package/lib/models/session.d.ts +0 -23
  147. package/lib/models/session.js +0 -2
  148. package/lib/models/socket.d.ts +0 -31
  149. package/lib/models/socket.js +0 -2
  150. package/lib/models/status.d.ts +0 -1
  151. package/lib/models/status.js +0 -2
  152. package/lib/models/success-types.d.ts +0 -1
  153. package/lib/models/success-types.js +0 -2
  154. package/lib/plugin/command/compile.d.ts +0 -6
  155. package/lib/plugin/command/compile.js +0 -18
  156. package/lib/plugin/command/test.d.ts +0 -6
  157. package/lib/plugin/command/test.js +0 -25
  158. package/lib/plugin/index.d.ts +0 -27
  159. package/lib/plugin/index.js +0 -7
  160. package/lib/plugin/plugin.d.ts +0 -8
  161. package/lib/plugin/plugin.js +0 -68
  162. package/lib/plugin/utils.d.ts +0 -16
  163. package/lib/plugin/utils.js +0 -58
  164. package/lib/ui/download.d.ts +0 -5
  165. package/lib/ui/download.js +0 -61
  166. package/lib/utils/BaseCommand.d.ts +0 -8
  167. package/lib/utils/BaseCommand.js +0 -41
  168. package/lib/utils/SessionCommand.d.ts +0 -10
  169. package/lib/utils/SessionCommand.js +0 -47
  170. package/lib/utils/api.d.ts +0 -12
  171. package/lib/utils/api.js +0 -173
  172. package/lib/utils/audit.d.ts +0 -16
  173. package/lib/utils/audit.js +0 -302
  174. package/lib/utils/console.d.ts +0 -12
  175. package/lib/utils/console.js +0 -19
  176. package/lib/utils/errors.d.ts +0 -17
  177. package/lib/utils/errors.js +0 -100
  178. package/lib/utils/exercisesQueue.d.ts +0 -9
  179. package/lib/utils/exercisesQueue.js +0 -38
  180. package/lib/utils/fileQueue.d.ts +0 -40
  181. package/lib/utils/fileQueue.js +0 -168
  182. package/lib/utils/misc.d.ts +0 -1
  183. package/lib/utils/misc.js +0 -23
  184. package/lib/utils/validators.d.ts +0 -5
  185. package/lib/utils/validators.js +0 -17
  186. package/lib/utils/watcher.d.ts +0 -2
  187. package/lib/utils/watcher.js +0 -23
@@ -1,85 +1,85 @@
1
- import Console from "../utils/console";
2
- import SessionCommand from "../utils/SessionCommand";
3
- import socket from "../managers/socket";
4
-
5
- import createServer from "../managers/server";
6
- import ExercisesQueue from "../utils/exercisesQueue";
7
- import { IExercise } from "../models/exercise-obj";
8
-
9
- class TestCommand extends SessionCommand {
10
- async init() {
11
- const { flags } = this.parse(TestCommand);
12
- await this.initSession(flags);
13
- }
14
-
15
- async run() {
16
- const {
17
- args: { exerciseSlug },
18
- } = this.parse(TestCommand);
19
-
20
- // Build exercises index
21
- this.configManager?.buildIndex();
22
-
23
- let exercises: IExercise[] | undefined = [];
24
-
25
- // test all exercises
26
- !exerciseSlug ?
27
- (exercises = this.configManager?.getAllExercises()) :
28
- (exercises = [this.configManager!.getExercise(exerciseSlug)]);
29
-
30
- const exercisesQueue = new ExercisesQueue(exercises);
31
-
32
- const configObject = this.configManager?.get();
33
-
34
- let hasFailed = false;
35
- let failedTestsCount = 0;
36
- let successTestsCount = 0;
37
- const testsToRunCount = exercisesQueue.size();
38
-
39
- configObject!.config!.testingFinishedCallback = ({ result }) => {
40
- if (result === "failed") {
41
- hasFailed = true;
42
- failedTestsCount++;
43
- } else {
44
- successTestsCount++;
45
- }
46
-
47
- if (exercisesQueue.isEmpty()) {
48
- Console.info(
49
- `${testsToRunCount} test${testsToRunCount > 1 ? "s" : ""} runned`
50
- );
51
- Console.success(
52
- `${successTestsCount} test${successTestsCount > 1 ? "s" : ""} passed`
53
- );
54
- Console.error(
55
- `${failedTestsCount} test${failedTestsCount > 1 ? "s" : ""} failed`
56
- );
57
-
58
- process.exit(hasFailed ? 1 : 0);
59
- } else {
60
- exercisesQueue.pop()!.test!(this.config, config!, socket);
61
- }
62
- };
63
-
64
- const config = configObject?.config;
65
-
66
- const server = await createServer(configObject!, this.configManager!, true);
67
-
68
- socket.start(config!, server, true);
69
-
70
- exercisesQueue.pop()!.test!(this.config, config!, socket);
71
- }
72
- }
73
-
74
- TestCommand.description = `Test exercises`;
75
-
76
- TestCommand.args = [
77
- {
78
- name: "exerciseSlug",
79
- required: false,
80
- description: "The name of the exercise to test",
81
- hidden: false,
82
- },
83
- ];
84
-
85
- export default TestCommand;
1
+ import Console from "../utils/console"
2
+ import SessionCommand from "../utils/SessionCommand"
3
+ import socket from "../managers/socket"
4
+
5
+ import createServer from "../managers/server"
6
+ import ExercisesQueue from "../utils/exercisesQueue"
7
+ import { IExercise } from "../models/exercise-obj"
8
+
9
+ class TestCommand extends SessionCommand {
10
+ async init() {
11
+ const { flags } = this.parse(TestCommand)
12
+ await this.initSession(flags)
13
+ }
14
+
15
+ async run() {
16
+ const {
17
+ args: { exerciseSlug },
18
+ } = this.parse(TestCommand)
19
+
20
+ // Build exercises index
21
+ this.configManager?.buildIndex()
22
+
23
+ let exercises: IExercise[] | undefined = []
24
+
25
+ // test all exercises
26
+ !exerciseSlug ?
27
+ (exercises = this.configManager?.getAllExercises()) :
28
+ (exercises = [this.configManager!.getExercise(exerciseSlug)])
29
+
30
+ const exercisesQueue = new ExercisesQueue(exercises)
31
+
32
+ const configObject = this.configManager?.get()
33
+
34
+ let hasFailed = false
35
+ let failedTestsCount = 0
36
+ let successTestsCount = 0
37
+ const testsToRunCount = exercisesQueue.size()
38
+
39
+ configObject!.config!.testingFinishedCallback = ({ result }) => {
40
+ if (result === "failed") {
41
+ hasFailed = true
42
+ failedTestsCount++
43
+ } else {
44
+ successTestsCount++
45
+ }
46
+
47
+ if (exercisesQueue.isEmpty()) {
48
+ Console.info(
49
+ `${testsToRunCount} test${testsToRunCount > 1 ? "s" : ""} runned`
50
+ )
51
+ Console.success(
52
+ `${successTestsCount} test${successTestsCount > 1 ? "s" : ""} passed`
53
+ )
54
+ Console.error(
55
+ `${failedTestsCount} test${failedTestsCount > 1 ? "s" : ""} failed`
56
+ )
57
+
58
+ process.exit(hasFailed ? 1 : 0)
59
+ } else {
60
+ exercisesQueue.pop()!.test!(this.config, config!, socket)
61
+ }
62
+ }
63
+
64
+ const config = configObject?.config
65
+
66
+ const server = await createServer(configObject!, this.configManager!, true)
67
+
68
+ socket.start(config!, server, true)
69
+
70
+ exercisesQueue.pop()!.test!(this.config, config!, socket)
71
+ }
72
+ }
73
+
74
+ TestCommand.description = `Test exercises`
75
+
76
+ TestCommand.args = [
77
+ {
78
+ name: "exerciseSlug",
79
+ required: false,
80
+ description: "The name of the exercise to test",
81
+ hidden: false,
82
+ },
83
+ ]
84
+
85
+ export default TestCommand
package/src/index.ts CHANGED
@@ -1 +1 @@
1
- export * from '@oclif/command'
1
+ export * from '@oclif/command'
@@ -1,29 +1,29 @@
1
- const extensions = {
2
- extensions: [
3
- "py",
4
- "java",
5
- "py",
6
- "ruby",
7
- "html",
8
- "css",
9
- "htm",
10
- "php", // images
11
- "js",
12
- "jsx",
13
- "ts", // images
14
- "sh",
15
- "bash", // images
16
- "json",
17
- "yml",
18
- "yaml",
19
- "csv",
20
- "xml", // file storage extensions
21
- "txt",
22
- "text",
23
- "markdown",
24
- "readme", // compressed files
25
- ],
26
- names: ["package.json", "package-lock.json"],
27
- };
28
-
29
- export default extensions;
1
+ const extensions = {
2
+ extensions: [
3
+ "py",
4
+ "java",
5
+ "py",
6
+ "ruby",
7
+ "html",
8
+ "css",
9
+ "htm",
10
+ "php", // images
11
+ "js",
12
+ "jsx",
13
+ "ts", // images
14
+ "sh",
15
+ "bash", // images
16
+ "json",
17
+ "yml",
18
+ "yaml",
19
+ "csv",
20
+ "xml", // file storage extensions
21
+ "txt",
22
+ "text",
23
+ "markdown",
24
+ "readme", // compressed files
25
+ ],
26
+ names: ["package.json", "package-lock.json"],
27
+ }
28
+
29
+ export default extensions
@@ -3,7 +3,7 @@ export default {
3
3
  port: 3000,
4
4
  editor: {
5
5
  mode: null, // [standalone, preview]
6
- agent: null, // [vscode, gitpod, localhost]
6
+ agent: null, // [vscode, gitpod, localhost, codespaces] TODO: We need to check if we are in codespaces
7
7
  version: null,
8
8
  },
9
9
  dirPath: "./.learn",
@@ -33,4 +33,6 @@ export default {
33
33
  address: "http://localhost",
34
34
  currentExercise: null,
35
35
  exercises: [],
36
- };
36
+ bugsLink: null,
37
+ videoSolutions: false,
38
+ }