@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,164 +1,164 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const socket_io_1 = require("socket.io");
4
- const console_1 = require("../utils/console");
5
- const fileQueue_1 = require("../utils/fileQueue");
6
- const SocketManager = {
7
- socket: null,
8
- config: null,
9
- allowedActions: [],
10
- possibleActions: ['build', 'reset', 'test', 'tutorial'],
11
- isTestingEnvironment: false,
12
- actionCallBacks: {
13
- clean: (_, s) => {
14
- s.logs = [];
15
- },
16
- },
17
- addAllowed: function (actions) {
18
- var _a, _b;
19
- if (!Array.isArray(actions))
20
- actions = [actions];
21
- // avoid adding the "test" action if grading is disabled
22
- if (actions.includes('test') && ((_b = (_a = this.config) === null || _a === void 0 ? void 0 : _a.disabledActions) === null || _b === void 0 ? void 0 : _b.includes('test'))) {
23
- actions = actions.filter((a) => a !== 'test');
24
- }
25
- this.allowedActions = [
26
- ...(this.allowedActions || []).filter((a) => !actions.includes(a)),
27
- ...actions,
28
- ];
29
- },
30
- removeAllowed: function (actions) {
31
- if (!Array.isArray(actions)) {
32
- actions = [actions];
33
- }
34
- this.allowedActions = (this.allowedActions || []).filter((a) => !actions.includes(a));
35
- },
36
- start: function (config, server, isTestingEnvironment = false) {
37
- var _a, _b, _c, _d;
38
- this.config = config;
39
- this.isTestingEnvironment = isTestingEnvironment;
40
- this.socket = new socket_io_1.Server(server, { allowEIO3: true });
41
- this.allowedActions = ((_b = (_a = this.config) === null || _a === void 0 ? void 0 : _a.disabledActions) === null || _b === void 0 ? void 0 : _b.includes('test')) || ((_c = this.config) === null || _c === void 0 ? void 0 : _c.disableGrading) ? this.possibleActions.filter(a => { var _a, _b; return !((_b = (_a = this.config) === null || _a === void 0 ? void 0 : _a.disabledActions) === null || _b === void 0 ? void 0 : _b.includes(a)) && a !== 'test'; }) : this.possibleActions.filter(a => { var _a; return !((_a = this.allowedActions) === null || _a === void 0 ? void 0 : _a.includes(a)); });
42
- if (((_d = this.config) === null || _d === void 0 ? void 0 : _d.grading) === 'incremental') {
43
- this.removeAllowed('reset');
44
- }
45
- if (this.socket) {
46
- this.socket.on('connection', (socket) => {
47
- console_1.default.debug('Connection with client successfully established', this.allowedActions);
48
- if (!this.isTestingEnvironment) {
49
- this.log('ready', ['Ready to compile or test...']);
50
- }
51
- socket.on('compiler', ({ action, data }) => {
52
- this.emit('clean', 'pending', ['Working...']);
53
- if (typeof data.exerciseSlug === 'undefined') {
54
- this.log('internal-error', ['No exercise slug specified']);
55
- console_1.default.error('No exercise slug especified');
56
- return;
57
- }
58
- if (this.actionCallBacks &&
59
- typeof this.actionCallBacks[action] === 'function') {
60
- this.actionCallBacks[action](data);
61
- }
62
- else {
63
- this.log('internal-error', ['Uknown action ' + action]);
64
- }
65
- });
66
- });
67
- }
68
- },
69
- on: function (action, callBack) {
70
- if (this.actionCallBacks) {
71
- this.actionCallBacks[action] = callBack;
72
- }
73
- },
74
- clean: function (_ = 'pending', logs = []) {
75
- this.emit('clean', 'pending', logs);
76
- },
77
- ask: function (questions = []) {
78
- return new Promise((resolve, _) => {
79
- this.emit('ask', 'pending', ['Waiting for input...'], questions);
80
- this.on('input', ({ inputs }) => {
81
- // Workaround to fix issue because null inputs
82
- let isNull = false;
83
- // eslint-disable-next-line
84
- inputs.forEach((input) => {
85
- if (input === null) {
86
- isNull = true;
87
- }
88
- });
89
- if (!isNull) {
90
- resolve(inputs);
91
- }
92
- });
93
- });
94
- },
95
- reload: function (files = null, exercises = null) {
96
- this.emit('reload', (files === null || files === void 0 ? void 0 : files.join('')) || '' /* TODO: Check it out this */, exercises);
97
- },
98
- openWindow: function (url = '') {
99
- fileQueue_1.default.dispatcher().enqueue(fileQueue_1.default.events.OPEN_WINDOW, url);
100
- this.emit(fileQueue_1.default.events.OPEN_WINDOW, 'ready', [`Opening ${url}`], [], [], url);
101
- },
102
- log: function (status, messages = [], report = [], data = null) {
103
- this.emit('log', status, messages, [], report, data);
104
- console_1.default.log(messages);
105
- },
106
- emit: function (action, status = 'ready', logs = [], inputs = [], report = [], data = null) {
107
- var _a, _b, _c, _d, _e, _f;
108
- if (((_a = this.config) === null || _a === void 0 ? void 0 : _a.compiler) &&
109
- ['webpack', 'vanillajs', 'vue', 'react', 'css', 'html'].includes((_b = this.config) === null || _b === void 0 ? void 0 : _b.compiler)) {
110
- if (['compiler-success', 'compiler-warning'].includes(status))
111
- this.addAllowed('preview');
112
- if (['compiler-error'].includes(status) || action === 'ready')
113
- this.removeAllowed('preview');
114
- }
115
- if (((_c = this.config) === null || _c === void 0 ? void 0 : _c.grading) === 'incremental') {
116
- this.removeAllowed('reset');
117
- }
118
- // eslint-disable-next-line
119
- (_e = (_d = this.config) === null || _d === void 0 ? void 0 : _d.disabledActions) === null || _e === void 0 ? void 0 : _e.forEach((a) => this.removeAllowed(a));
120
- (_f = this.socket) === null || _f === void 0 ? void 0 : _f.emit('compiler', {
121
- action,
122
- status,
123
- logs,
124
- allowed: this.allowedActions,
125
- inputs,
126
- report,
127
- data,
128
- });
129
- },
130
- ready: function (message) {
131
- this.log('ready', [message]);
132
- },
133
- success: function (type, stdout) {
134
- const types = ['compiler', 'testing'];
135
- if (!types.includes(type))
136
- this.fatal(`Invalid socket success type "${type}" on socket`);
137
- else if (stdout === '')
138
- this.log((type + '-success'), [
139
- 'No stdout to display on the console',
140
- ]);
141
- else
142
- this.log((type + '-success'), [stdout]);
143
- },
144
- error: function (type, stdout) {
145
- console.error('Socket error: ' + type, stdout);
146
- this.log(type, [stdout]);
147
- if (this.isTestingEnvironment) {
148
- this.onTestingFinished({
149
- result: 'failed',
150
- });
151
- }
152
- },
153
- fatal: function (msg) {
154
- this.log('internal-error', [msg]);
155
- throw msg;
156
- },
157
- onTestingFinished: function (result) {
158
- var _a;
159
- if ((_a = this.config) === null || _a === void 0 ? void 0 : _a.testingFinishedCallback) {
160
- this.config.testingFinishedCallback(result);
161
- }
162
- },
163
- };
164
- exports.default = SocketManager;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const socket_io_1 = require("socket.io");
4
+ const console_1 = require("../utils/console");
5
+ const fileQueue_1 = require("../utils/fileQueue");
6
+ const SocketManager = {
7
+ socket: null,
8
+ config: null,
9
+ allowedActions: [],
10
+ possibleActions: ['build', 'reset', 'test', 'tutorial'],
11
+ isTestingEnvironment: false,
12
+ actionCallBacks: {
13
+ clean: (_, s) => {
14
+ s.logs = [];
15
+ },
16
+ },
17
+ addAllowed: function (actions) {
18
+ var _a, _b;
19
+ if (!Array.isArray(actions))
20
+ actions = [actions];
21
+ // avoid adding the "test" action if grading is disabled
22
+ if (actions.includes('test') && ((_b = (_a = this.config) === null || _a === void 0 ? void 0 : _a.disabledActions) === null || _b === void 0 ? void 0 : _b.includes('test'))) {
23
+ actions = actions.filter((a) => a !== 'test');
24
+ }
25
+ this.allowedActions = [
26
+ ...(this.allowedActions || []).filter((a) => !actions.includes(a)),
27
+ ...actions,
28
+ ];
29
+ },
30
+ removeAllowed: function (actions) {
31
+ if (!Array.isArray(actions)) {
32
+ actions = [actions];
33
+ }
34
+ this.allowedActions = (this.allowedActions || []).filter((a) => !actions.includes(a));
35
+ },
36
+ start: function (config, server, isTestingEnvironment = false) {
37
+ var _a, _b, _c, _d;
38
+ this.config = config;
39
+ this.isTestingEnvironment = isTestingEnvironment;
40
+ this.socket = new socket_io_1.Server(server, { allowEIO3: true });
41
+ this.allowedActions = ((_b = (_a = this.config) === null || _a === void 0 ? void 0 : _a.disabledActions) === null || _b === void 0 ? void 0 : _b.includes('test')) || ((_c = this.config) === null || _c === void 0 ? void 0 : _c.disableGrading) ? this.possibleActions.filter(a => { var _a, _b; return !((_b = (_a = this.config) === null || _a === void 0 ? void 0 : _a.disabledActions) === null || _b === void 0 ? void 0 : _b.includes(a)) && a !== 'test'; }) : this.possibleActions.filter(a => { var _a; return !((_a = this.allowedActions) === null || _a === void 0 ? void 0 : _a.includes(a)); });
42
+ if (((_d = this.config) === null || _d === void 0 ? void 0 : _d.grading) === 'incremental') {
43
+ this.removeAllowed('reset');
44
+ }
45
+ if (this.socket) {
46
+ this.socket.on('connection', (socket) => {
47
+ console_1.default.debug('Connection with client successfully established', this.allowedActions);
48
+ if (!this.isTestingEnvironment) {
49
+ this.log('ready', ['Ready to compile or test...']);
50
+ }
51
+ socket.on('compiler', ({ action, data }) => {
52
+ this.emit('clean', 'pending', ['Working...']);
53
+ if (typeof data.exerciseSlug === 'undefined') {
54
+ this.log('internal-error', ['No exercise slug specified']);
55
+ console_1.default.error('No exercise slug especified');
56
+ return;
57
+ }
58
+ if (this.actionCallBacks &&
59
+ typeof this.actionCallBacks[action] === 'function') {
60
+ this.actionCallBacks[action](data);
61
+ }
62
+ else {
63
+ this.log('internal-error', ['Uknown action ' + action]);
64
+ }
65
+ });
66
+ });
67
+ }
68
+ },
69
+ on: function (action, callBack) {
70
+ if (this.actionCallBacks) {
71
+ this.actionCallBacks[action] = callBack;
72
+ }
73
+ },
74
+ clean: function (_ = 'pending', logs = []) {
75
+ this.emit('clean', 'pending', logs);
76
+ },
77
+ ask: function (questions = []) {
78
+ return new Promise((resolve, _) => {
79
+ this.emit('ask', 'pending', ['Waiting for input...'], questions);
80
+ this.on('input', ({ inputs }) => {
81
+ // Workaround to fix issue because null inputs
82
+ let isNull = false;
83
+ // eslint-disable-next-line
84
+ inputs.forEach((input) => {
85
+ if (input === null) {
86
+ isNull = true;
87
+ }
88
+ });
89
+ if (!isNull) {
90
+ resolve(inputs);
91
+ }
92
+ });
93
+ });
94
+ },
95
+ reload: function (files = null, exercises = null) {
96
+ this.emit('reload', (files === null || files === void 0 ? void 0 : files.join('')) || '' /* TODO: Check it out this */, exercises);
97
+ },
98
+ openWindow: function (url = '') {
99
+ fileQueue_1.default.dispatcher().enqueue(fileQueue_1.default.events.OPEN_WINDOW, url);
100
+ this.emit(fileQueue_1.default.events.OPEN_WINDOW, 'ready', [`Opening ${url}`], [], [], url);
101
+ },
102
+ log: function (status, messages = [], report = [], data = null) {
103
+ this.emit('log', status, messages, [], report, data);
104
+ console_1.default.log(messages);
105
+ },
106
+ emit: function (action, status = 'ready', logs = [], inputs = [], report = [], data = null) {
107
+ var _a, _b, _c, _d, _e, _f;
108
+ if (((_a = this.config) === null || _a === void 0 ? void 0 : _a.compiler) &&
109
+ ['webpack', 'vanillajs', 'vue', 'react', 'css', 'html'].includes((_b = this.config) === null || _b === void 0 ? void 0 : _b.compiler)) {
110
+ if (['compiler-success', 'compiler-warning'].includes(status))
111
+ this.addAllowed('preview');
112
+ if (['compiler-error'].includes(status) || action === 'ready')
113
+ this.removeAllowed('preview');
114
+ }
115
+ if (((_c = this.config) === null || _c === void 0 ? void 0 : _c.grading) === 'incremental') {
116
+ this.removeAllowed('reset');
117
+ }
118
+ // eslint-disable-next-line
119
+ (_e = (_d = this.config) === null || _d === void 0 ? void 0 : _d.disabledActions) === null || _e === void 0 ? void 0 : _e.forEach((a) => this.removeAllowed(a));
120
+ (_f = this.socket) === null || _f === void 0 ? void 0 : _f.emit('compiler', {
121
+ action,
122
+ status,
123
+ logs,
124
+ allowed: this.allowedActions,
125
+ inputs,
126
+ report,
127
+ data,
128
+ });
129
+ },
130
+ ready: function (message) {
131
+ this.log('ready', [message]);
132
+ },
133
+ success: function (type, stdout) {
134
+ const types = ['compiler', 'testing'];
135
+ if (!types.includes(type))
136
+ this.fatal(`Invalid socket success type "${type}" on socket`);
137
+ else if (stdout === '')
138
+ this.log((type + '-success'), [
139
+ 'No stdout to display on the console',
140
+ ]);
141
+ else
142
+ this.log((type + '-success'), [stdout]);
143
+ },
144
+ error: function (type, stdout) {
145
+ console.error('Socket error: ' + type, stdout);
146
+ this.log(type, [stdout]);
147
+ if (this.isTestingEnvironment) {
148
+ this.onTestingFinished({
149
+ result: 'failed',
150
+ });
151
+ }
152
+ },
153
+ fatal: function (msg) {
154
+ this.log('internal-error', [msg]);
155
+ throw msg;
156
+ },
157
+ onTestingFinished: function (result) {
158
+ var _a;
159
+ if ((_a = this.config) === null || _a === void 0 ? void 0 : _a.testingFinishedCallback) {
160
+ this.config.testingFinishedCallback(result);
161
+ }
162
+ },
163
+ };
164
+ exports.default = SocketManager;
@@ -1,84 +1,84 @@
1
- "use strict";
2
- /*
3
-
4
- import * as path from 'path'
5
- import * as shell from 'shelljs'
6
- import * as fs from 'fs'
7
- import { TestingError } from './errors'
8
- import Console from '../utils/console'
9
- import * as color from 'colors'
10
- import bcActivity from './bcActivity.js'
11
- import { CompilerError } from '../utils/errors'
12
- import { ISocket } from '../models/socket'
13
- import { IFile } from '../models/file'
14
- import { IConfig } from '@oclif/config'
15
-
16
- module.exports = async function ({ socket, files, config, slug }: {socket: ISocket, files: IFile[], config: IConfig, slug: string}) {
17
-
18
- const configPath = path.resolve(__dirname, `./config/tester/${config.tester}/${config.language}.config.js`);
19
- if (!fs.existsSync(configPath)) throw CompilerError(`Uknown testing engine for compiler: '${config.language}'`);
20
-
21
- const testingConfig = require(configPath)(files, config, slug);
22
- testingConfig.validate();
23
-
24
- if (config.ignoreTests) throw TestingError('Grading is disabled on learn.json file.');
25
-
26
- if (!fs.existsSync(`${config.dirPath}/reports`)) {
27
- fs.mkdirSync(`${config.dirPath}/reports`);
28
- Console.debug(`Creating the ${config.dirPath}/reports directory`);
29
- }
30
-
31
- Console.info('Running tests...');
32
-
33
- const command = await testingConfig.getCommand(socket)
34
- const { stdout, stderr, code } = shell.exec(command);
35
-
36
- if (code != 0) {
37
- const errors = typeof (testingConfig.getErrors === 'function') ? testingConfig.getErrors(stdout || stderr) : [];
38
- socket.log('testing-error', errors);
39
- console.log(errors.join('\n'))
40
-
41
- Console.error("There was an error while testing");
42
- bcActivity.error('exercise_error', {
43
- message: errors,
44
- name: `${config.tester}-error`,
45
- framework: config.tester,
46
- language: config.language,
47
- data: slug,
48
- compiler: config.compiler
49
- });
50
- }
51
- else {
52
- socket.log('testing-success', [stdout || stderr].concat(["😁Everything is amazing!"]));
53
- Console.success("Everything is amazing!");
54
-
55
- bcActivity.activity('exercise_success', {
56
- language: config.language,
57
- slug: slug,
58
- editor: config.editor,
59
- compiler: config.compiler
60
- });
61
- config.exercises = config.exercises.map(e => {
62
- if (e.slug === slug) e.done = true;
63
- return e;
64
- });
65
- }
66
-
67
- if (typeof testingConfig.cleanup !== "undefined") {
68
- if (typeof testingConfig.cleanup === 'function' || typeof testingConfig.cleanup === 'object') {
69
- const clean = await testingConfig.cleanup(socket);
70
- if (clean) {
71
- const { stdout, stderr, code } = shell.exec(clean);
72
- if (code == 0) {
73
- Console.debug("The cleanup command runned successfully");
74
- }
75
- else Console.warning("There is an error on the cleanup command for the test");
76
- }
77
-
78
- }
79
- }
80
-
81
- return true;
82
- };
83
-
84
- */
1
+ "use strict";
2
+ /*
3
+
4
+ import * as path from 'path'
5
+ import * as shell from 'shelljs'
6
+ import * as fs from 'fs'
7
+ import { TestingError } from './errors'
8
+ import Console from '../utils/console'
9
+ import * as color from 'colors'
10
+ import bcActivity from './bcActivity.js'
11
+ import { CompilerError } from '../utils/errors'
12
+ import { ISocket } from '../models/socket'
13
+ import { IFile } from '../models/file'
14
+ import { IConfig } from '@oclif/config'
15
+
16
+ module.exports = async function ({ socket, files, config, slug }: {socket: ISocket, files: IFile[], config: IConfig, slug: string}) {
17
+
18
+ const configPath = path.resolve(__dirname, `./config/tester/${config.tester}/${config.language}.config.js`);
19
+ if (!fs.existsSync(configPath)) throw CompilerError(`Uknown testing engine for compiler: '${config.language}'`);
20
+
21
+ const testingConfig = require(configPath)(files, config, slug);
22
+ testingConfig.validate();
23
+
24
+ if (config.ignoreTests) throw TestingError('Grading is disabled on learn.json file.');
25
+
26
+ if (!fs.existsSync(`${config.dirPath}/reports`)) {
27
+ fs.mkdirSync(`${config.dirPath}/reports`);
28
+ Console.debug(`Creating the ${config.dirPath}/reports directory`);
29
+ }
30
+
31
+ Console.info('Running tests...');
32
+
33
+ const command = await testingConfig.getCommand(socket)
34
+ const { stdout, stderr, code } = shell.exec(command);
35
+
36
+ if (code != 0) {
37
+ const errors = typeof (testingConfig.getErrors === 'function') ? testingConfig.getErrors(stdout || stderr) : [];
38
+ socket.log('testing-error', errors);
39
+ console.log(errors.join('\n'))
40
+
41
+ Console.error("There was an error while testing");
42
+ bcActivity.error('exercise_error', {
43
+ message: errors,
44
+ name: `${config.tester}-error`,
45
+ framework: config.tester,
46
+ language: config.language,
47
+ data: slug,
48
+ compiler: config.compiler
49
+ });
50
+ }
51
+ else {
52
+ socket.log('testing-success', [stdout || stderr].concat(["😁Everything is amazing!"]));
53
+ Console.success("Everything is amazing!");
54
+
55
+ bcActivity.activity('exercise_success', {
56
+ language: config.language,
57
+ slug: slug,
58
+ editor: config.editor,
59
+ compiler: config.compiler
60
+ });
61
+ config.exercises = config.exercises.map(e => {
62
+ if (e.slug === slug) e.done = true;
63
+ return e;
64
+ });
65
+ }
66
+
67
+ if (typeof testingConfig.cleanup !== "undefined") {
68
+ if (typeof testingConfig.cleanup === 'function' || typeof testingConfig.cleanup === 'object') {
69
+ const clean = await testingConfig.cleanup(socket);
70
+ if (clean) {
71
+ const { stdout, stderr, code } = shell.exec(clean);
72
+ if (code == 0) {
73
+ Console.debug("The cleanup command runned successfully");
74
+ }
75
+ else Console.warning("There is an error on the cleanup command for the test");
76
+ }
77
+
78
+ }
79
+ }
80
+
81
+ return true;
82
+ };
83
+
84
+ */
@@ -1,2 +1,2 @@
1
- export declare type TAction = 'test' | 'log' | 'reload' | 'ready' | 'clean' | 'ask';
2
- export declare type ICallback = (...agrs: any[]) => any;
1
+ export declare type TAction = 'test' | 'log' | 'reload' | 'ready' | 'clean' | 'ask';
2
+ export declare type ICallback = (...agrs: any[]) => any;
@@ -1,2 +1,2 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,15 +1,15 @@
1
- export interface IAuditErrors {
2
- exercise?: string;
3
- msg: string;
4
- }
5
- declare type TType = "string" | "array" | "number" | "url" | "boolean";
6
- export interface ISchemaItem {
7
- key: string;
8
- mandatory: boolean;
9
- type: TType;
10
- max_size?: number;
11
- allowed_extensions?: string[];
12
- enum?: string[];
13
- max_item_size?: number;
14
- }
15
- export {};
1
+ export interface IAuditErrors {
2
+ exercise?: string;
3
+ msg: string;
4
+ }
5
+ declare type TType = "string" | "array" | "number" | "url" | "boolean";
6
+ export interface ISchemaItem {
7
+ key: string;
8
+ mandatory: boolean;
9
+ type: TType;
10
+ max_size?: number;
11
+ allowed_extensions?: string[];
12
+ enum?: string[];
13
+ max_item_size?: number;
14
+ }
15
+ export {};
@@ -1,2 +1,2 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,21 +1,21 @@
1
- import { IConfigObj, TGrading } from "./config";
2
- import { IExercise } from "./exercise-obj";
3
- export interface IConfigManagerAttributes {
4
- grading: TGrading;
5
- disableGrading: boolean;
6
- version: string;
7
- mode?: string;
8
- }
9
- export interface IConfigManager {
10
- validLanguages?: any;
11
- get: () => IConfigObj;
12
- clean: () => void;
13
- getExercise: (slug: string | undefined) => IExercise;
14
- startExercise: (slug: string) => IExercise;
15
- reset: (slug: string) => void;
16
- buildIndex: () => boolean | void;
17
- watchIndex: (onChange: (...args: Array<any>) => void) => void;
18
- save: () => void;
19
- noCurrentExercise: () => void;
20
- getAllExercises: () => IExercise[];
21
- }
1
+ import { IConfigObj, TGrading } from "./config";
2
+ import { IExercise } from "./exercise-obj";
3
+ export interface IConfigManagerAttributes {
4
+ grading: TGrading;
5
+ disableGrading: boolean;
6
+ version: string;
7
+ mode?: string;
8
+ }
9
+ export interface IConfigManager {
10
+ validLanguages?: any;
11
+ get: () => IConfigObj;
12
+ clean: () => void;
13
+ getExercise: (slug: string | undefined) => IExercise;
14
+ startExercise: (slug: string) => IExercise;
15
+ reset: (slug: string) => void;
16
+ buildIndex: () => boolean | void;
17
+ watchIndex: (onChange: (...args: Array<any>) => void) => void;
18
+ save: () => void;
19
+ noCurrentExercise: () => void;
20
+ getAllExercises: () => IExercise[];
21
+ }
@@ -1,2 +1,2 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });