@learnpack/learnpack 2.1.24 → 2.1.26

Sign up to get free protection for your applications and to get access to all the features.
Files changed (182) hide show
  1. package/README.md +16 -16
  2. package/bin/run +17 -17
  3. package/bin/run.cmd +3 -3
  4. package/lib/commands/audit.d.ts +6 -6
  5. package/lib/commands/audit.js +342 -317
  6. package/lib/commands/clean.d.ts +8 -8
  7. package/lib/commands/clean.js +25 -25
  8. package/lib/commands/download.d.ts +13 -13
  9. package/lib/commands/download.js +55 -55
  10. package/lib/commands/init.d.ts +9 -9
  11. package/lib/commands/init.js +123 -123
  12. package/lib/commands/login.d.ts +14 -14
  13. package/lib/commands/login.js +37 -37
  14. package/lib/commands/logout.d.ts +14 -14
  15. package/lib/commands/logout.js +37 -37
  16. package/lib/commands/publish.d.ts +14 -14
  17. package/lib/commands/publish.js +82 -82
  18. package/lib/commands/start.d.ts +7 -7
  19. package/lib/commands/start.js +165 -165
  20. package/lib/commands/test.d.ts +6 -6
  21. package/lib/commands/test.js +62 -62
  22. package/lib/index.d.ts +1 -1
  23. package/lib/index.js +4 -4
  24. package/lib/managers/config/allowed_files.d.ts +5 -5
  25. package/lib/managers/config/allowed_files.js +30 -30
  26. package/lib/managers/config/defaults.d.ts +39 -37
  27. package/lib/managers/config/defaults.js +40 -38
  28. package/lib/managers/config/exercise.d.ts +36 -36
  29. package/lib/managers/config/exercise.js +233 -230
  30. package/lib/managers/config/index.d.ts +3 -3
  31. package/lib/managers/config/index.js +320 -302
  32. package/lib/managers/file.d.ts +13 -13
  33. package/lib/managers/file.js +134 -134
  34. package/lib/managers/gitpod.d.ts +3 -3
  35. package/lib/managers/gitpod.js +67 -67
  36. package/lib/managers/server/index.d.ts +6 -6
  37. package/lib/managers/server/index.js +58 -51
  38. package/lib/managers/server/routes.d.ts +4 -4
  39. package/lib/managers/server/routes.js +167 -167
  40. package/lib/managers/session.d.ts +3 -3
  41. package/lib/managers/session.js +104 -104
  42. package/lib/managers/socket.d.ts +3 -3
  43. package/lib/managers/socket.js +164 -164
  44. package/lib/managers/test.js +84 -84
  45. package/lib/models/action.d.ts +2 -2
  46. package/lib/models/action.js +2 -2
  47. package/lib/models/audit.d.ts +15 -15
  48. package/lib/models/audit.js +2 -2
  49. package/lib/models/config-manager.d.ts +21 -21
  50. package/lib/models/config-manager.js +2 -2
  51. package/lib/models/config.d.ts +62 -60
  52. package/lib/models/config.js +2 -2
  53. package/lib/models/counter.d.ts +11 -11
  54. package/lib/models/counter.js +2 -2
  55. package/lib/models/errors.d.ts +15 -15
  56. package/lib/models/errors.js +2 -2
  57. package/lib/models/exercise-obj.d.ts +27 -27
  58. package/lib/models/exercise-obj.js +2 -2
  59. package/lib/models/file.d.ts +5 -5
  60. package/lib/models/file.js +2 -2
  61. package/lib/models/findings.d.ts +17 -17
  62. package/lib/models/findings.js +2 -2
  63. package/lib/models/flags.d.ts +10 -10
  64. package/lib/models/flags.js +2 -2
  65. package/lib/models/front-matter.d.ts +11 -11
  66. package/lib/models/front-matter.js +2 -2
  67. package/lib/models/gitpod-data.d.ts +16 -16
  68. package/lib/models/gitpod-data.js +2 -2
  69. package/lib/models/language.d.ts +4 -4
  70. package/lib/models/language.js +2 -2
  71. package/lib/models/package.d.ts +7 -7
  72. package/lib/models/package.js +2 -2
  73. package/lib/models/plugin-config.d.ts +16 -16
  74. package/lib/models/plugin-config.js +2 -2
  75. package/lib/models/session.d.ts +23 -23
  76. package/lib/models/session.js +2 -2
  77. package/lib/models/socket.d.ts +31 -31
  78. package/lib/models/socket.js +2 -2
  79. package/lib/models/status.d.ts +1 -1
  80. package/lib/models/status.js +2 -2
  81. package/lib/models/success-types.d.ts +1 -1
  82. package/lib/models/success-types.js +2 -2
  83. package/lib/plugin/command/compile.d.ts +6 -6
  84. package/lib/plugin/command/compile.js +18 -18
  85. package/lib/plugin/command/test.d.ts +6 -6
  86. package/lib/plugin/command/test.js +25 -25
  87. package/lib/plugin/index.d.ts +27 -27
  88. package/lib/plugin/index.js +7 -7
  89. package/lib/plugin/plugin.d.ts +8 -8
  90. package/lib/plugin/plugin.js +68 -68
  91. package/lib/plugin/utils.d.ts +16 -16
  92. package/lib/plugin/utils.js +58 -58
  93. package/lib/ui/download.d.ts +5 -5
  94. package/lib/ui/download.js +61 -61
  95. package/lib/utils/BaseCommand.d.ts +8 -8
  96. package/lib/utils/BaseCommand.js +41 -41
  97. package/lib/utils/SessionCommand.d.ts +10 -10
  98. package/lib/utils/SessionCommand.js +47 -47
  99. package/lib/utils/api.d.ts +12 -12
  100. package/lib/utils/api.js +173 -173
  101. package/lib/utils/audit.d.ts +16 -16
  102. package/lib/utils/audit.js +302 -302
  103. package/lib/utils/console.d.ts +12 -12
  104. package/lib/utils/console.js +19 -19
  105. package/lib/utils/errors.d.ts +17 -17
  106. package/lib/utils/errors.js +100 -100
  107. package/lib/utils/exercisesQueue.d.ts +9 -9
  108. package/lib/utils/exercisesQueue.js +38 -38
  109. package/lib/utils/fileQueue.d.ts +40 -40
  110. package/lib/utils/fileQueue.js +168 -168
  111. package/lib/utils/misc.d.ts +1 -1
  112. package/lib/utils/misc.js +23 -23
  113. package/lib/utils/validators.d.ts +5 -5
  114. package/lib/utils/validators.js +17 -17
  115. package/lib/utils/watcher.d.ts +2 -2
  116. package/lib/utils/watcher.js +23 -23
  117. package/oclif.manifest.json +1 -1
  118. package/package.json +138 -138
  119. package/src/commands/audit.ts +443 -418
  120. package/src/commands/clean.ts +29 -29
  121. package/src/commands/download.ts +62 -62
  122. package/src/commands/login.ts +42 -42
  123. package/src/commands/logout.ts +43 -43
  124. package/src/commands/publish.ts +107 -107
  125. package/src/commands/start.ts +238 -234
  126. package/src/commands/test.ts +85 -85
  127. package/src/index.ts +1 -1
  128. package/src/managers/config/allowed_files.ts +29 -29
  129. package/src/managers/config/defaults.ts +2 -0
  130. package/src/managers/config/exercise.ts +309 -302
  131. package/src/managers/config/index.ts +22 -1
  132. package/src/managers/file.ts +169 -169
  133. package/src/managers/gitpod.ts +84 -84
  134. package/src/managers/server/index.ts +77 -69
  135. package/src/managers/session.ts +118 -118
  136. package/src/managers/socket.ts +239 -239
  137. package/src/managers/test.ts +83 -83
  138. package/src/models/action.ts +3 -3
  139. package/src/models/config-manager.ts +23 -23
  140. package/src/models/config.ts +2 -0
  141. package/src/models/counter.ts +11 -11
  142. package/src/models/errors.ts +22 -22
  143. package/src/models/file.ts +5 -5
  144. package/src/models/findings.ts +18 -18
  145. package/src/models/flags.ts +10 -10
  146. package/src/models/front-matter.ts +11 -11
  147. package/src/models/gitpod-data.ts +19 -19
  148. package/src/models/language.ts +4 -4
  149. package/src/models/package.ts +7 -7
  150. package/src/models/plugin-config.ts +17 -17
  151. package/src/models/session.ts +26 -26
  152. package/src/models/socket.ts +48 -48
  153. package/src/models/status.ts +15 -15
  154. package/src/models/success-types.ts +1 -1
  155. package/src/plugin/command/compile.ts +17 -17
  156. package/src/plugin/command/test.ts +30 -30
  157. package/src/plugin/index.ts +6 -6
  158. package/src/plugin/plugin.ts +94 -94
  159. package/src/plugin/utils.ts +87 -87
  160. package/src/types/node-fetch.d.ts +1 -1
  161. package/src/ui/download.ts +71 -71
  162. package/src/utils/BaseCommand.ts +48 -48
  163. package/src/utils/SessionCommand.ts +48 -48
  164. package/src/utils/api.ts +194 -194
  165. package/src/utils/audit.ts +395 -395
  166. package/src/utils/console.ts +24 -24
  167. package/src/utils/errors.ts +117 -117
  168. package/src/utils/exercisesQueue.ts +51 -51
  169. package/src/utils/fileQueue.ts +198 -198
  170. package/src/utils/misc.ts +23 -23
  171. package/src/utils/templates/gitignore.txt +19 -19
  172. package/src/utils/templates/incremental/.learn/exercises/01-hello-world/README.es.md +24 -24
  173. package/src/utils/templates/incremental/.learn/exercises/01-hello-world/README.md +24 -24
  174. package/src/utils/templates/incremental/README.ejs +4 -4
  175. package/src/utils/templates/incremental/README.es.ejs +4 -4
  176. package/src/utils/templates/isolated/01-hello-world/README.es.md +26 -26
  177. package/src/utils/templates/isolated/01-hello-world/README.md +26 -26
  178. package/src/utils/templates/isolated/README.ejs +4 -4
  179. package/src/utils/templates/isolated/README.es.ejs +4 -4
  180. package/src/utils/templates/no-grading/README.ejs +4 -4
  181. package/src/utils/templates/no-grading/README.es.ejs +4 -4
  182. package/src/utils/validators.ts +18 -18
@@ -1,24 +1,24 @@
1
- import * as chalk from 'chalk'
2
-
3
- export default {
4
- // _debug: true,
5
- _debug: process.env.DEBUG === 'true',
6
- startDebug: function () {
7
- this._debug = true
8
- },
9
- log: (msg: string | Array<string>, ...args: Array<any>) =>
10
- console.log(chalk.gray(msg), ...args),
11
- error: (msg: string, ...args: Array<any>) =>
12
- console.log(chalk.red('⨉ ' + msg), ...args),
13
- success: (msg: string, ...args: Array<any>) =>
14
- console.log(chalk.green('✓ ' + msg), ...args),
15
- info: (msg: string, ...args: Array<any>) =>
16
- console.log(chalk.blue('ⓘ ' + msg), ...args),
17
- help: (msg: string) =>
18
- console.log(`${chalk.white.bold('⚠ help:')} ${chalk.white(msg)}`),
19
- debug(...args: Array<any>) {
20
- this._debug && console.log(chalk.magentaBright('⚠ debug: '), args)
21
- },
22
- warning: (msg: string) =>
23
- console.log(`${chalk.yellow('⚠ warning:')} ${chalk.yellow(msg)}`),
24
- }
1
+ import * as chalk from 'chalk'
2
+
3
+ export default {
4
+ // _debug: true,
5
+ _debug: process.env.DEBUG === 'true',
6
+ startDebug: function () {
7
+ this._debug = true
8
+ },
9
+ log: (msg: string | Array<string>, ...args: Array<any>) =>
10
+ console.log(chalk.gray(msg), ...args),
11
+ error: (msg: string, ...args: Array<any>) =>
12
+ console.log(chalk.red('⨉ ' + msg), ...args),
13
+ success: (msg: string, ...args: Array<any>) =>
14
+ console.log(chalk.green('✓ ' + msg), ...args),
15
+ info: (msg: string, ...args: Array<any>) =>
16
+ console.log(chalk.blue('ⓘ ' + msg), ...args),
17
+ help: (msg: string) =>
18
+ console.log(`${chalk.white.bold('⚠ help:')} ${chalk.white(msg)}`),
19
+ debug(...args: Array<any>) {
20
+ this._debug && console.log(chalk.magentaBright('⚠ debug: '), args)
21
+ },
22
+ warning: (msg: string) =>
23
+ console.log(`${chalk.yellow('⚠ warning:')} ${chalk.yellow(msg)}`),
24
+ }
@@ -1,117 +1,117 @@
1
- import Console from './console'
2
-
3
- import {ISolution, IError} from '../models/errors'
4
-
5
- // eslint-disable-next-line
6
- const fetch = require("node-fetch");
7
-
8
- let solutions: { [key: string]: ISolution } | null = null
9
-
10
- const uknown: ISolution = {
11
- video: 'https://www.youtube.com/watch?v=gD1Sa99GiE4',
12
- message: 'Uknown internal error',
13
- slug: 'uknown',
14
- gif: 'https://github.com/breatheco-de/breathecode-cli/blob/master/docs/errors/uknown.gif?raw=true',
15
- }
16
-
17
- export const getSolution = (slug?: string): ISolution => {
18
- if (!slug) {
19
- Console.debug('Getting solution templates from the learnpack repository')
20
- } else {
21
- Console.debug(`Getting solution for ${slug}`, solutions)
22
- }
23
-
24
- if (!solutions) {
25
- Console.debug('Fetching for errors.json on github')
26
- fetch(
27
- 'https://raw.githubusercontent.com/breatheco-de/breathecode-cli/master/docs/errors/errors.json',
28
- )
29
- .then((r: Response) => r.json())
30
- .then(function (_s: { [key: string]: ISolution }) {
31
- solutions = _s
32
- })
33
- return uknown
34
- }
35
-
36
- return typeof solutions[slug || ''] === 'undefined' || !slug ?
37
- uknown :
38
- solutions[slug]
39
- }
40
-
41
- export const ValidationError = (error: IError | string) => {
42
- const message: string = (error as IError).message || (error as string)
43
- const _err = new Error(message) as IError
44
- _err.status = 400
45
- _err.type = 'validation-error'
46
-
47
- const sol: ISolution = getSolution((error as IError).slug)
48
- _err.video = sol.video
49
- _err.gif = sol.gif
50
- _err.message = typeof message === 'string' ? message : sol.message
51
- return _err
52
- }
53
-
54
- export const NotFoundError = (error: IError | string) => {
55
- const message = (error as IError).message || (error as string)
56
- const _err = new Error(message) as IError
57
- _err.status = 400
58
- _err.type = 'not-found-error'
59
-
60
- const sol = getSolution((error as IError).slug)
61
- _err.video = sol.video
62
- _err.gif = sol.gif
63
- _err.message = typeof message === 'string' ? message : sol.message
64
- return _err
65
- }
66
-
67
- export const CompilerError = (error: IError | string) => {
68
- const message = (error as IError).message || (error as string)
69
- const _err = new Error(message) as IError
70
- _err.status = 400
71
- _err.type = 'compiler-error'
72
-
73
- const sol = getSolution((error as IError).slug)
74
- _err.video = sol.video
75
- _err.gif = sol.gif
76
- _err.message = typeof message === 'string' ? message : sol.message
77
- return _err
78
- }
79
-
80
- export const TestingError = (error: IError | string) => {
81
- const message = (error as IError).message || (error as string)
82
- const _err = new Error(message) as IError
83
- _err.status = 400
84
- _err.type = 'testing-error'
85
- return _err
86
- }
87
-
88
- export const AuthError = (error: IError | string) => {
89
- const message = (error as IError).message || (error as string)
90
- const _err = new Error(message) as IError
91
- _err.status = 403
92
- _err.type = 'auth-error'
93
- return _err
94
- }
95
-
96
- export const InternalError = (error: IError | string) => {
97
- const message = (error as IError).message || (error as string)
98
- const _err = new Error(message) as IError
99
- _err.status = 500
100
- _err.type = 'internal-error'
101
-
102
- const sol = getSolution((error as IError).slug)
103
- _err.video = sol.video
104
- _err.gif = sol.gif
105
- _err.message = typeof message === 'string' ? message : sol.message
106
- return _err
107
- }
108
-
109
- getSolution()
110
- export default {
111
- ValidationError,
112
- CompilerError,
113
- TestingError,
114
- NotFoundError,
115
- InternalError,
116
- AuthError,
117
- }
1
+ import Console from './console'
2
+
3
+ import {ISolution, IError} from '../models/errors'
4
+
5
+ // eslint-disable-next-line
6
+ const fetch = require("node-fetch");
7
+
8
+ let solutions: { [key: string]: ISolution } | null = null
9
+
10
+ const uknown: ISolution = {
11
+ video: 'https://www.youtube.com/watch?v=gD1Sa99GiE4',
12
+ message: 'Uknown internal error',
13
+ slug: 'uknown',
14
+ gif: 'https://github.com/breatheco-de/breathecode-cli/blob/master/docs/errors/uknown.gif?raw=true',
15
+ }
16
+
17
+ export const getSolution = (slug?: string): ISolution => {
18
+ if (!slug) {
19
+ Console.debug('Getting solution templates from the learnpack repository')
20
+ } else {
21
+ Console.debug(`Getting solution for ${slug}`, solutions)
22
+ }
23
+
24
+ if (!solutions) {
25
+ Console.debug('Fetching for errors.json on github')
26
+ fetch(
27
+ 'https://raw.githubusercontent.com/breatheco-de/breathecode-cli/master/docs/errors/errors.json',
28
+ )
29
+ .then((r: Response) => r.json())
30
+ .then(function (_s: { [key: string]: ISolution }) {
31
+ solutions = _s
32
+ })
33
+ return uknown
34
+ }
35
+
36
+ return typeof solutions[slug || ''] === 'undefined' || !slug ?
37
+ uknown :
38
+ solutions[slug]
39
+ }
40
+
41
+ export const ValidationError = (error: IError | string) => {
42
+ const message: string = (error as IError).message || (error as string)
43
+ const _err = new Error(message) as IError
44
+ _err.status = 400
45
+ _err.type = 'validation-error'
46
+
47
+ const sol: ISolution = getSolution((error as IError).slug)
48
+ _err.video = sol.video
49
+ _err.gif = sol.gif
50
+ _err.message = typeof message === 'string' ? message : sol.message
51
+ return _err
52
+ }
53
+
54
+ export const NotFoundError = (error: IError | string) => {
55
+ const message = (error as IError).message || (error as string)
56
+ const _err = new Error(message) as IError
57
+ _err.status = 400
58
+ _err.type = 'not-found-error'
59
+
60
+ const sol = getSolution((error as IError).slug)
61
+ _err.video = sol.video
62
+ _err.gif = sol.gif
63
+ _err.message = typeof message === 'string' ? message : sol.message
64
+ return _err
65
+ }
66
+
67
+ export const CompilerError = (error: IError | string) => {
68
+ const message = (error as IError).message || (error as string)
69
+ const _err = new Error(message) as IError
70
+ _err.status = 400
71
+ _err.type = 'compiler-error'
72
+
73
+ const sol = getSolution((error as IError).slug)
74
+ _err.video = sol.video
75
+ _err.gif = sol.gif
76
+ _err.message = typeof message === 'string' ? message : sol.message
77
+ return _err
78
+ }
79
+
80
+ export const TestingError = (error: IError | string) => {
81
+ const message = (error as IError).message || (error as string)
82
+ const _err = new Error(message) as IError
83
+ _err.status = 400
84
+ _err.type = 'testing-error'
85
+ return _err
86
+ }
87
+
88
+ export const AuthError = (error: IError | string) => {
89
+ const message = (error as IError).message || (error as string)
90
+ const _err = new Error(message) as IError
91
+ _err.status = 403
92
+ _err.type = 'auth-error'
93
+ return _err
94
+ }
95
+
96
+ export const InternalError = (error: IError | string) => {
97
+ const message = (error as IError).message || (error as string)
98
+ const _err = new Error(message) as IError
99
+ _err.status = 500
100
+ _err.type = 'internal-error'
101
+
102
+ const sol = getSolution((error as IError).slug)
103
+ _err.video = sol.video
104
+ _err.gif = sol.gif
105
+ _err.message = typeof message === 'string' ? message : sol.message
106
+ return _err
107
+ }
108
+
109
+ getSolution()
110
+ export default {
111
+ ValidationError,
112
+ CompilerError,
113
+ TestingError,
114
+ NotFoundError,
115
+ InternalError,
116
+ AuthError,
117
+ }
@@ -1,51 +1,51 @@
1
- import { IConfig } from "../models/config";
2
- import { IExercise } from "../models/exercise-obj";
3
- import { ISocket } from "../models/socket";
4
-
5
- class Exercise {
6
- exercise: IExercise;
7
- constructor(exercise: IExercise) {
8
- this.exercise = exercise;
9
- }
10
-
11
- test(sessionConfig: IConfig, config: IConfig, socket: ISocket) {
12
- if (this.exercise.language) {
13
- socket.log(
14
- "testing",
15
- `Testing exercise ${this.exercise.slug} using ${this.exercise.language} engine`
16
- );
17
-
18
- sessionConfig.runHook("action", {
19
- action: "test",
20
- socket,
21
- configuration: config,
22
- exercise: this.exercise,
23
- });
24
- } else {
25
- socket.onTestingFinished({ result: "success" });
26
- }
27
- }
28
- }
29
-
30
- class ExercisesQueue {
31
- exercises: IExercise[];
32
- constructor(exercises: any) {
33
- this.exercises = exercises.map((exercise: IExercise) => {
34
- return new Exercise(exercise);
35
- });
36
- }
37
-
38
- pop() {
39
- return this.exercises.shift();
40
- }
41
-
42
- isEmpty() {
43
- return this.size() === 0;
44
- }
45
-
46
- size() {
47
- return this.exercises.length;
48
- }
49
- }
50
-
51
- export default ExercisesQueue;
1
+ import { IConfig } from "../models/config";
2
+ import { IExercise } from "../models/exercise-obj";
3
+ import { ISocket } from "../models/socket";
4
+
5
+ class Exercise {
6
+ exercise: IExercise;
7
+ constructor(exercise: IExercise) {
8
+ this.exercise = exercise;
9
+ }
10
+
11
+ test(sessionConfig: IConfig, config: IConfig, socket: ISocket) {
12
+ if (this.exercise.language) {
13
+ socket.log(
14
+ "testing",
15
+ `Testing exercise ${this.exercise.slug} using ${this.exercise.language} engine`
16
+ );
17
+
18
+ sessionConfig.runHook("action", {
19
+ action: "test",
20
+ socket,
21
+ configuration: config,
22
+ exercise: this.exercise,
23
+ });
24
+ } else {
25
+ socket.onTestingFinished({ result: "success" });
26
+ }
27
+ }
28
+ }
29
+
30
+ class ExercisesQueue {
31
+ exercises: IExercise[];
32
+ constructor(exercises: any) {
33
+ this.exercises = exercises.map((exercise: IExercise) => {
34
+ return new Exercise(exercise);
35
+ });
36
+ }
37
+
38
+ pop() {
39
+ return this.exercises.shift();
40
+ }
41
+
42
+ isEmpty() {
43
+ return this.size() === 0;
44
+ }
45
+
46
+ size() {
47
+ return this.exercises.length;
48
+ }
49
+ }
50
+
51
+ export default ExercisesQueue;