@learnpack/learnpack 2.1.25 → 2.1.26

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 (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 +327 -302
  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 +25 -0
  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,118 +1,118 @@
1
- import Console from '../utils/console'
2
- import api from '../utils/api'
3
-
4
- import v from 'validator'
5
- import {ValidationError, InternalError} from '../utils/errors'
6
- // import moment from 'moment'
7
- import * as fs from 'fs'
8
- import cli from 'cli-ux'
9
- import * as storage from 'node-persist'
10
-
11
- import {IPayload, ISession, IStartProps} from '../models/session'
12
- import {IConfigObj} from '../models/config'
13
-
14
- const Session: ISession = {
15
- sessionStarted: false,
16
- token: null,
17
- config: null,
18
- currentCohort: null,
19
- initialize: async function () {
20
- if (!this.sessionStarted) {
21
- if (!this.config) {
22
- throw InternalError('Configuration not found')
23
- }
24
-
25
- if (!fs.existsSync(this.config.dirPath)) {
26
- fs.mkdirSync(this.config.dirPath)
27
- }
28
-
29
- await storage.init({dir: `${this.config.dirPath}/.session`})
30
- this.sessionStarted = true
31
- }
32
-
33
- return true
34
- },
35
- setPayload: async function (value: IPayload) {
36
- await this.initialize()
37
- await storage.setItem('bc-payload', {token: this.token, ...value})
38
- Console.debug('Payload successfuly found and set for ' + value.email)
39
- return true
40
- },
41
- getPayload: async function () {
42
- await this.initialize()
43
- let payload = null
44
- try {
45
- payload = await storage.getItem('bc-payload')
46
- } catch (error) {
47
- // TODO: Remove it
48
- console.log(error)
49
- Console.debug('Error retriving session payload')
50
- }
51
-
52
- return payload
53
- },
54
- isActive: function () {
55
- /* if (this.token) {
56
- return true
57
- } else {
58
- return false
59
- } */
60
- return !!this.token
61
- },
62
- get: async function (configObj?: IConfigObj) {
63
- if (configObj && configObj.config) {
64
- this.config = configObj.config
65
- }
66
-
67
- await this.sync()
68
- if (!this.isActive()) {
69
- return null
70
- }
71
-
72
- const payload = await this.getPayload()
73
-
74
- return {
75
- payload,
76
- token: this.token,
77
- }
78
- },
79
- login: async function () {
80
- const email = await cli.prompt('What is your email?')
81
- if (!v.isEmail(email)) {
82
- throw ValidationError('Invalid email')
83
- }
84
-
85
- const password = await cli.prompt('What is your password?', {
86
- type: 'hide',
87
- })
88
-
89
- const data = await api.login(email, password)
90
- if (data) {
91
- this.start({token: data.token, payload: data})
92
- }
93
- },
94
- sync: async function () {
95
- const payload = await this.getPayload()
96
- if (payload) {
97
- this.token = payload.token
98
- }
99
- },
100
- start: async function ({token, payload = null}: IStartProps) {
101
- if (!token) {
102
- throw new Error('A token and email is needed to start a session')
103
- }
104
-
105
- this.token = token
106
-
107
- if (payload && (await this.setPayload(payload))) {
108
- Console.success(`Successfully logged in as ${payload.email}`)
109
- }
110
- },
111
- destroy: async function () {
112
- await storage.clear()
113
- this.token = null
114
- Console.success('You have logged out')
115
- },
116
- }
117
-
118
- export default Session
1
+ import Console from '../utils/console'
2
+ import api from '../utils/api'
3
+
4
+ import v from 'validator'
5
+ import {ValidationError, InternalError} from '../utils/errors'
6
+ // import moment from 'moment'
7
+ import * as fs from 'fs'
8
+ import cli from 'cli-ux'
9
+ import * as storage from 'node-persist'
10
+
11
+ import {IPayload, ISession, IStartProps} from '../models/session'
12
+ import {IConfigObj} from '../models/config'
13
+
14
+ const Session: ISession = {
15
+ sessionStarted: false,
16
+ token: null,
17
+ config: null,
18
+ currentCohort: null,
19
+ initialize: async function () {
20
+ if (!this.sessionStarted) {
21
+ if (!this.config) {
22
+ throw InternalError('Configuration not found')
23
+ }
24
+
25
+ if (!fs.existsSync(this.config.dirPath)) {
26
+ fs.mkdirSync(this.config.dirPath)
27
+ }
28
+
29
+ await storage.init({dir: `${this.config.dirPath}/.session`})
30
+ this.sessionStarted = true
31
+ }
32
+
33
+ return true
34
+ },
35
+ setPayload: async function (value: IPayload) {
36
+ await this.initialize()
37
+ await storage.setItem('bc-payload', {token: this.token, ...value})
38
+ Console.debug('Payload successfuly found and set for ' + value.email)
39
+ return true
40
+ },
41
+ getPayload: async function () {
42
+ await this.initialize()
43
+ let payload = null
44
+ try {
45
+ payload = await storage.getItem('bc-payload')
46
+ } catch (error) {
47
+ // TODO: Remove it
48
+ console.log(error)
49
+ Console.debug('Error retriving session payload')
50
+ }
51
+
52
+ return payload
53
+ },
54
+ isActive: function () {
55
+ /* if (this.token) {
56
+ return true
57
+ } else {
58
+ return false
59
+ } */
60
+ return !!this.token
61
+ },
62
+ get: async function (configObj?: IConfigObj) {
63
+ if (configObj && configObj.config) {
64
+ this.config = configObj.config
65
+ }
66
+
67
+ await this.sync()
68
+ if (!this.isActive()) {
69
+ return null
70
+ }
71
+
72
+ const payload = await this.getPayload()
73
+
74
+ return {
75
+ payload,
76
+ token: this.token,
77
+ }
78
+ },
79
+ login: async function () {
80
+ const email = await cli.prompt('What is your email?')
81
+ if (!v.isEmail(email)) {
82
+ throw ValidationError('Invalid email')
83
+ }
84
+
85
+ const password = await cli.prompt('What is your password?', {
86
+ type: 'hide',
87
+ })
88
+
89
+ const data = await api.login(email, password)
90
+ if (data) {
91
+ this.start({token: data.token, payload: data})
92
+ }
93
+ },
94
+ sync: async function () {
95
+ const payload = await this.getPayload()
96
+ if (payload) {
97
+ this.token = payload.token
98
+ }
99
+ },
100
+ start: async function ({token, payload = null}: IStartProps) {
101
+ if (!token) {
102
+ throw new Error('A token and email is needed to start a session')
103
+ }
104
+
105
+ this.token = token
106
+
107
+ if (payload && (await this.setPayload(payload))) {
108
+ Console.success(`Successfully logged in as ${payload.email}`)
109
+ }
110
+ },
111
+ destroy: async function () {
112
+ await storage.clear()
113
+ this.token = null
114
+ Console.success('You have logged out')
115
+ },
116
+ }
117
+
118
+ export default Session