@learnpack/learnpack 2.1.39 → 2.1.40
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.
- package/README.md +370 -35
- package/bin/run +17 -17
- package/bin/run.cmd +3 -3
- package/lib/commands/audit.d.ts +6 -6
- package/lib/commands/audit.js +342 -342
- package/lib/commands/clean.d.ts +8 -8
- package/lib/commands/clean.js +25 -25
- package/lib/commands/download.d.ts +13 -13
- package/lib/commands/download.js +55 -55
- package/lib/commands/init.d.ts +9 -9
- package/lib/commands/init.js +123 -123
- package/lib/commands/login.d.ts +14 -14
- package/lib/commands/login.js +37 -37
- package/lib/commands/logout.d.ts +14 -14
- package/lib/commands/logout.js +37 -37
- package/lib/commands/publish.d.ts +14 -14
- package/lib/commands/publish.js +82 -82
- package/lib/commands/start.d.ts +7 -7
- package/lib/commands/start.js +239 -208
- package/lib/commands/test.d.ts +6 -6
- package/lib/commands/test.js +62 -62
- package/lib/index.d.ts +1 -1
- package/lib/index.js +4 -4
- package/lib/managers/config/allowed_files.d.ts +5 -5
- package/lib/managers/config/allowed_files.js +30 -30
- package/lib/managers/config/defaults.d.ts +41 -41
- package/lib/managers/config/defaults.js +44 -44
- package/lib/managers/config/exercise.d.ts +36 -36
- package/lib/managers/config/exercise.js +236 -236
- package/lib/managers/config/index.d.ts +3 -3
- package/lib/managers/config/index.js +337 -337
- package/lib/managers/file.d.ts +14 -14
- package/lib/managers/file.js +153 -153
- package/lib/managers/gitpod.d.ts +3 -3
- package/lib/managers/gitpod.js +67 -67
- package/lib/managers/server/index.d.ts +6 -6
- package/lib/managers/server/index.js +58 -58
- package/lib/managers/server/routes.d.ts +4 -4
- package/lib/managers/server/routes.js +219 -219
- package/lib/managers/session.d.ts +3 -3
- package/lib/managers/session.js +125 -125
- package/lib/managers/socket.d.ts +3 -3
- package/lib/managers/socket.js +176 -176
- package/lib/managers/telemetry.d.ts +74 -74
- package/lib/managers/telemetry.js +206 -206
- package/lib/managers/test.js +84 -84
- package/lib/models/action.d.ts +2 -2
- package/lib/models/action.js +2 -2
- package/lib/models/audit.d.ts +15 -15
- package/lib/models/audit.js +2 -2
- package/lib/models/config-manager.d.ts +21 -21
- package/lib/models/config-manager.js +2 -2
- package/lib/models/config.d.ts +68 -67
- package/lib/models/config.js +2 -2
- package/lib/models/counter.d.ts +11 -11
- package/lib/models/counter.js +2 -2
- package/lib/models/errors.d.ts +15 -15
- package/lib/models/errors.js +2 -2
- package/lib/models/exercise-obj.d.ts +30 -30
- package/lib/models/exercise-obj.js +2 -2
- package/lib/models/file.d.ts +5 -5
- package/lib/models/file.js +2 -2
- package/lib/models/findings.d.ts +17 -17
- package/lib/models/findings.js +2 -2
- package/lib/models/flags.d.ts +10 -10
- package/lib/models/flags.js +2 -2
- package/lib/models/front-matter.d.ts +11 -11
- package/lib/models/front-matter.js +2 -2
- package/lib/models/gitpod-data.d.ts +16 -16
- package/lib/models/gitpod-data.js +2 -2
- package/lib/models/language.d.ts +4 -4
- package/lib/models/language.js +2 -2
- package/lib/models/package.d.ts +7 -7
- package/lib/models/package.js +2 -2
- package/lib/models/plugin-config.d.ts +16 -16
- package/lib/models/plugin-config.js +2 -2
- package/lib/models/session.d.ts +31 -31
- package/lib/models/session.js +2 -2
- package/lib/models/socket.d.ts +36 -32
- package/lib/models/socket.js +2 -2
- package/lib/models/status.d.ts +1 -1
- package/lib/models/status.js +2 -2
- package/lib/models/success-types.d.ts +1 -1
- package/lib/models/success-types.js +2 -2
- package/lib/plugin/command/compile.d.ts +6 -6
- package/lib/plugin/command/compile.js +18 -18
- package/lib/plugin/command/test.d.ts +6 -6
- package/lib/plugin/command/test.js +25 -25
- package/lib/plugin/index.d.ts +27 -27
- package/lib/plugin/index.js +7 -7
- package/lib/plugin/plugin.d.ts +8 -8
- package/lib/plugin/plugin.js +68 -68
- package/lib/plugin/utils.d.ts +16 -16
- package/lib/plugin/utils.js +58 -58
- package/lib/ui/download.d.ts +5 -5
- package/lib/ui/download.js +61 -61
- package/lib/utils/BaseCommand.d.ts +8 -8
- package/lib/utils/BaseCommand.js +41 -41
- package/lib/utils/SessionCommand.d.ts +10 -10
- package/lib/utils/SessionCommand.js +43 -43
- package/lib/utils/api.d.ts +14 -14
- package/lib/utils/api.js +255 -255
- package/lib/utils/audit.d.ts +16 -16
- package/lib/utils/audit.js +303 -303
- package/lib/utils/checkNotInstalled.d.ts +2 -0
- package/lib/utils/checkNotInstalled.js +36 -0
- package/lib/utils/console.d.ts +12 -12
- package/lib/utils/console.js +19 -19
- package/lib/utils/errors.d.ts +17 -17
- package/lib/utils/errors.js +100 -100
- package/lib/utils/exercisesQueue.d.ts +9 -9
- package/lib/utils/exercisesQueue.js +38 -38
- package/lib/utils/fileQueue.d.ts +40 -40
- package/lib/utils/fileQueue.js +168 -168
- package/lib/utils/misc.d.ts +1 -1
- package/lib/utils/misc.js +23 -23
- package/lib/utils/osOperations.d.ts +5 -5
- package/lib/utils/osOperations.js +72 -72
- package/lib/utils/validators.d.ts +5 -5
- package/lib/utils/validators.js +17 -17
- package/lib/utils/watcher.d.ts +2 -2
- package/lib/utils/watcher.js +25 -25
- package/oclif.manifest.json +1 -1
- package/package.json +139 -139
- package/src/commands/audit.ts +443 -443
- package/src/commands/clean.ts +29 -29
- package/src/commands/download.ts +61 -61
- package/src/commands/init.ts +170 -170
- package/src/commands/login.ts +42 -42
- package/src/commands/logout.ts +43 -43
- package/src/commands/publish.ts +107 -107
- package/src/commands/start.ts +53 -23
- package/src/commands/test.ts +85 -85
- package/src/index.ts +1 -1
- package/src/managers/config/allowed_files.ts +29 -29
- package/src/managers/config/defaults.ts +42 -42
- package/src/managers/config/exercise.ts +311 -311
- package/src/managers/config/index.ts +455 -455
- package/src/managers/file.ts +196 -196
- package/src/managers/gitpod.ts +84 -84
- package/src/managers/server/index.ts +78 -78
- package/src/managers/server/routes.ts +330 -330
- package/src/managers/session.ts +145 -145
- package/src/managers/socket.ts +250 -250
- package/src/managers/telemetry.ts +346 -346
- package/src/managers/test.ts +83 -83
- package/src/models/action.ts +10 -10
- package/src/models/audit.ts +16 -16
- package/src/models/config-manager.ts +23 -23
- package/src/models/config.ts +5 -3
- package/src/models/counter.ts +11 -11
- package/src/models/errors.ts +22 -22
- package/src/models/exercise-obj.ts +29 -29
- package/src/models/file.ts +5 -5
- package/src/models/findings.ts +18 -18
- package/src/models/flags.ts +10 -10
- package/src/models/front-matter.ts +11 -11
- package/src/models/gitpod-data.ts +19 -19
- package/src/models/language.ts +4 -4
- package/src/models/package.ts +7 -7
- package/src/models/plugin-config.ts +17 -17
- package/src/models/session.ts +34 -34
- package/src/models/socket.ts +5 -0
- package/src/models/status.ts +16 -16
- package/src/models/success-types.ts +1 -1
- package/src/plugin/command/compile.ts +17 -17
- package/src/plugin/command/test.ts +30 -30
- package/src/plugin/index.ts +6 -6
- package/src/plugin/plugin.ts +94 -94
- package/src/plugin/utils.ts +87 -87
- package/src/types/node-fetch.d.ts +1 -1
- package/src/ui/download.ts +71 -71
- package/src/utils/BaseCommand.ts +48 -48
- package/src/utils/SessionCommand.ts +43 -43
- package/src/utils/api.ts +303 -303
- package/src/utils/audit.ts +393 -393
- package/src/utils/checkNotInstalled.ts +46 -0
- package/src/utils/console.ts +24 -24
- package/src/utils/errors.ts +117 -117
- package/src/utils/exercisesQueue.ts +51 -51
- package/src/utils/fileQueue.ts +198 -198
- package/src/utils/misc.ts +23 -23
- package/src/utils/osOperations.ts +79 -79
- package/src/utils/templates/gitignore.txt +19 -19
- package/src/utils/templates/incremental/.learn/exercises/01-hello-world/README.es.md +24 -24
- package/src/utils/templates/incremental/.learn/exercises/01-hello-world/README.md +24 -24
- package/src/utils/templates/incremental/README.ejs +4 -4
- package/src/utils/templates/incremental/README.es.ejs +4 -4
- package/src/utils/templates/isolated/01-hello-world/README.es.md +26 -26
- package/src/utils/templates/isolated/01-hello-world/README.md +26 -26
- package/src/utils/templates/isolated/README.ejs +4 -4
- package/src/utils/templates/isolated/README.es.ejs +4 -4
- package/src/utils/templates/no-grading/README.ejs +4 -4
- package/src/utils/templates/no-grading/README.es.ejs +4 -4
- package/src/utils/validators.ts +18 -18
- package/src/utils/watcher.ts +27 -27
package/lib/managers/test.js
CHANGED
|
@@ -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
|
+
*/
|
package/lib/models/action.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare type TAction = "test" | "log" | "reload" | "ready" | "clean" | "ask" | "file_change";
|
|
2
|
-
export declare type ICallback = (...agrs: any[]) => any;
|
|
1
|
+
export declare type TAction = "test" | "log" | "reload" | "ready" | "clean" | "ask" | "file_change";
|
|
2
|
+
export declare type ICallback = (...agrs: any[]) => any;
|
package/lib/models/action.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
package/lib/models/audit.d.ts
CHANGED
|
@@ -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 {};
|
package/lib/models/audit.js
CHANGED
|
@@ -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 });
|
package/lib/models/config.d.ts
CHANGED
|
@@ -1,67 +1,68 @@
|
|
|
1
|
-
import { IExercise } from "./exercise-obj";
|
|
2
|
-
import { TTelemetryUrls } from "../managers/telemetry";
|
|
3
|
-
export declare type TGrading = "isolated" | "incremental" | "no-grading";
|
|
4
|
-
export declare type TMode = "preview" | "extension";
|
|
5
|
-
export declare type TConfigAction = "test" | "build" | "tutorial" | "reset" | "generate";
|
|
6
|
-
export declare type TConfigObjAttributes = "config" | "exercises" | "grading";
|
|
7
|
-
export declare type TCompiler = "webpack" | "vanillajs" | "
|
|
8
|
-
export interface IConfigPath {
|
|
9
|
-
base: string;
|
|
10
|
-
}
|
|
11
|
-
declare type TAgent = "vscode" | "os";
|
|
12
|
-
export interface IEditor {
|
|
13
|
-
mode?: TMode;
|
|
14
|
-
version: string;
|
|
15
|
-
agent?: TAgent;
|
|
16
|
-
}
|
|
17
|
-
export interface TEntries {
|
|
18
|
-
python3?: string;
|
|
19
|
-
html?: string;
|
|
20
|
-
node?: string;
|
|
21
|
-
react?: string;
|
|
22
|
-
java?: string;
|
|
23
|
-
}
|
|
24
|
-
export interface IConfig {
|
|
25
|
-
os: string;
|
|
26
|
-
port?: string;
|
|
27
|
-
repository?: string;
|
|
28
|
-
description?: string;
|
|
29
|
-
slug?: string;
|
|
30
|
-
dirPath: string;
|
|
31
|
-
preview?: string;
|
|
32
|
-
entries: TEntries;
|
|
33
|
-
grading: TGrading;
|
|
34
|
-
configPath: string;
|
|
35
|
-
translations: Array<string>;
|
|
36
|
-
outputPath?: string;
|
|
37
|
-
editor: IEditor;
|
|
38
|
-
language: string;
|
|
39
|
-
title: string;
|
|
40
|
-
duration: number;
|
|
41
|
-
difficulty?: string;
|
|
42
|
-
exercisesPath: string;
|
|
43
|
-
disableGrading: boolean;
|
|
44
|
-
actions: Array<string>;
|
|
45
|
-
autoPlay: boolean;
|
|
46
|
-
projectType?: string;
|
|
47
|
-
contact?: string;
|
|
48
|
-
disabledActions?: Array<TConfigAction>;
|
|
49
|
-
compiler: TCompiler;
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
1
|
+
import { IExercise } from "./exercise-obj";
|
|
2
|
+
import { TTelemetryUrls } from "../managers/telemetry";
|
|
3
|
+
export declare type TGrading = "isolated" | "incremental" | "no-grading";
|
|
4
|
+
export declare type TMode = "preview" | "extension";
|
|
5
|
+
export declare type TConfigAction = "test" | "build" | "tutorial" | "reset" | "generate";
|
|
6
|
+
export declare type TConfigObjAttributes = "config" | "exercises" | "grading";
|
|
7
|
+
export declare type TCompiler = "webpack" | "vanillajs" | "react" | "html" | "node" | "python" | "css";
|
|
8
|
+
export interface IConfigPath {
|
|
9
|
+
base: string;
|
|
10
|
+
}
|
|
11
|
+
declare type TAgent = "vscode" | "os";
|
|
12
|
+
export interface IEditor {
|
|
13
|
+
mode?: TMode;
|
|
14
|
+
version: string;
|
|
15
|
+
agent?: TAgent;
|
|
16
|
+
}
|
|
17
|
+
export interface TEntries {
|
|
18
|
+
python3?: string;
|
|
19
|
+
html?: string;
|
|
20
|
+
node?: string;
|
|
21
|
+
react?: string;
|
|
22
|
+
java?: string;
|
|
23
|
+
}
|
|
24
|
+
export interface IConfig {
|
|
25
|
+
os: string;
|
|
26
|
+
port?: string;
|
|
27
|
+
repository?: string;
|
|
28
|
+
description?: string;
|
|
29
|
+
slug?: string;
|
|
30
|
+
dirPath: string;
|
|
31
|
+
preview?: string;
|
|
32
|
+
entries: TEntries;
|
|
33
|
+
grading: TGrading;
|
|
34
|
+
configPath: string;
|
|
35
|
+
translations: Array<string>;
|
|
36
|
+
outputPath?: string;
|
|
37
|
+
editor: IEditor;
|
|
38
|
+
language: string;
|
|
39
|
+
title: string;
|
|
40
|
+
duration: number;
|
|
41
|
+
difficulty?: string;
|
|
42
|
+
exercisesPath: string;
|
|
43
|
+
disableGrading: boolean;
|
|
44
|
+
actions: Array<string>;
|
|
45
|
+
autoPlay: boolean;
|
|
46
|
+
projectType?: string;
|
|
47
|
+
contact?: string;
|
|
48
|
+
disabledActions?: Array<TConfigAction>;
|
|
49
|
+
compiler: TCompiler;
|
|
50
|
+
compilers: Array<TCompiler>;
|
|
51
|
+
publicPath: string;
|
|
52
|
+
publicUrl?: string;
|
|
53
|
+
bugsLink?: string;
|
|
54
|
+
videoSolutions?: boolean;
|
|
55
|
+
skills: Array<string>;
|
|
56
|
+
telemetry?: TTelemetryUrls;
|
|
57
|
+
runHook: (...agrs: Array<any>) => void;
|
|
58
|
+
testingFinishedCallback: (arg: any | undefined) => void;
|
|
59
|
+
}
|
|
60
|
+
export interface IConfigObj {
|
|
61
|
+
session?: number;
|
|
62
|
+
currentExercise?: any;
|
|
63
|
+
config?: IConfig;
|
|
64
|
+
exercises?: Array<IExercise>;
|
|
65
|
+
confPath?: IConfigPath;
|
|
66
|
+
address?: string;
|
|
67
|
+
}
|
|
68
|
+
export {};
|
package/lib/models/config.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
package/lib/models/counter.d.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
interface ILinks {
|
|
2
|
-
error: number;
|
|
3
|
-
total: number;
|
|
4
|
-
}
|
|
5
|
-
export interface ICounter {
|
|
6
|
-
images: ILinks;
|
|
7
|
-
links: ILinks;
|
|
8
|
-
exercises: number;
|
|
9
|
-
readmeFiles: number;
|
|
10
|
-
}
|
|
11
|
-
export {};
|
|
1
|
+
interface ILinks {
|
|
2
|
+
error: number;
|
|
3
|
+
total: number;
|
|
4
|
+
}
|
|
5
|
+
export interface ICounter {
|
|
6
|
+
images: ILinks;
|
|
7
|
+
links: ILinks;
|
|
8
|
+
exercises: number;
|
|
9
|
+
readmeFiles: number;
|
|
10
|
+
}
|
|
11
|
+
export {};
|
package/lib/models/counter.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
package/lib/models/errors.d.ts
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
export interface ISolution {
|
|
2
|
-
video?: string;
|
|
3
|
-
message: string;
|
|
4
|
-
slug?: string;
|
|
5
|
-
gif: string;
|
|
6
|
-
}
|
|
7
|
-
export interface IError extends TypeError {
|
|
8
|
-
status?: number;
|
|
9
|
-
type?: "validation-error" | "not-found-error" | "compiler-error" | "testing-error" | "auth-error" | "internal-error";
|
|
10
|
-
slug?: string;
|
|
11
|
-
video?: string;
|
|
12
|
-
message: string;
|
|
13
|
-
gif?: string;
|
|
14
|
-
stdout?: string;
|
|
15
|
-
}
|
|
1
|
+
export interface ISolution {
|
|
2
|
+
video?: string;
|
|
3
|
+
message: string;
|
|
4
|
+
slug?: string;
|
|
5
|
+
gif: string;
|
|
6
|
+
}
|
|
7
|
+
export interface IError extends TypeError {
|
|
8
|
+
status?: number;
|
|
9
|
+
type?: "validation-error" | "not-found-error" | "compiler-error" | "testing-error" | "auth-error" | "internal-error";
|
|
10
|
+
slug?: string;
|
|
11
|
+
video?: string;
|
|
12
|
+
message: string;
|
|
13
|
+
gif?: string;
|
|
14
|
+
stdout?: string;
|
|
15
|
+
}
|
package/lib/models/errors.js
CHANGED
|
@@ -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,30 +1,30 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
|
-
import { IFile } from "./file";
|
|
3
|
-
import { IConfig } from "./config";
|
|
4
|
-
import { ISocket } from "./socket";
|
|
5
|
-
export interface IExercise {
|
|
6
|
-
position?: number;
|
|
7
|
-
files: Array<IFile>;
|
|
8
|
-
slug: string;
|
|
9
|
-
path: string;
|
|
10
|
-
done: boolean;
|
|
11
|
-
language?: string | null;
|
|
12
|
-
entry?: string | null;
|
|
13
|
-
graded?: boolean;
|
|
14
|
-
translations?: {
|
|
15
|
-
[key: string]: string;
|
|
16
|
-
};
|
|
17
|
-
title: string;
|
|
18
|
-
getReadme?: (lang: string | null) => any;
|
|
19
|
-
getFile?: (name: string) => string | Buffer;
|
|
20
|
-
saveFile?: (name: string, content: string) => void;
|
|
21
|
-
getTestReport?: () => any;
|
|
22
|
-
test?: (sessionConfig: any, config: IConfig, socket: ISocket) => void;
|
|
23
|
-
}
|
|
24
|
-
export interface IExerciseData {
|
|
25
|
-
lastMessages?: any;
|
|
26
|
-
userMessage?: string;
|
|
27
|
-
exerciseSlug: string;
|
|
28
|
-
entryPoint?: string;
|
|
29
|
-
files: string[];
|
|
30
|
-
}
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { IFile } from "./file";
|
|
3
|
+
import { IConfig } from "./config";
|
|
4
|
+
import { ISocket } from "./socket";
|
|
5
|
+
export interface IExercise {
|
|
6
|
+
position?: number;
|
|
7
|
+
files: Array<IFile>;
|
|
8
|
+
slug: string;
|
|
9
|
+
path: string;
|
|
10
|
+
done: boolean;
|
|
11
|
+
language?: string | null;
|
|
12
|
+
entry?: string | null;
|
|
13
|
+
graded?: boolean;
|
|
14
|
+
translations?: {
|
|
15
|
+
[key: string]: string;
|
|
16
|
+
};
|
|
17
|
+
title: string;
|
|
18
|
+
getReadme?: (lang: string | null) => any;
|
|
19
|
+
getFile?: (name: string) => string | Buffer;
|
|
20
|
+
saveFile?: (name: string, content: string) => void;
|
|
21
|
+
getTestReport?: () => any;
|
|
22
|
+
test?: (sessionConfig: any, config: IConfig, socket: ISocket) => void;
|
|
23
|
+
}
|
|
24
|
+
export interface IExerciseData {
|
|
25
|
+
lastMessages?: any;
|
|
26
|
+
userMessage?: string;
|
|
27
|
+
exerciseSlug: string;
|
|
28
|
+
entryPoint?: string;
|
|
29
|
+
files: string[];
|
|
30
|
+
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
package/lib/models/file.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export interface IFile {
|
|
2
|
-
path: string;
|
|
3
|
-
name: string;
|
|
4
|
-
hidden: boolean;
|
|
5
|
-
}
|
|
1
|
+
export interface IFile {
|
|
2
|
+
path: string;
|
|
3
|
+
name: string;
|
|
4
|
+
hidden: boolean;
|
|
5
|
+
}
|
package/lib/models/file.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
package/lib/models/findings.d.ts
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
interface IFindingOption {
|
|
2
|
-
content: string;
|
|
3
|
-
absUrl: string;
|
|
4
|
-
mdUrl: string;
|
|
5
|
-
relUrl: string;
|
|
6
|
-
}
|
|
7
|
-
interface ILinks {
|
|
8
|
-
[key: string]: IFindingOption;
|
|
9
|
-
}
|
|
10
|
-
export interface IFindings {
|
|
11
|
-
relativeImages?: ILinks;
|
|
12
|
-
externalImages?: ILinks;
|
|
13
|
-
markdownLinks?: ILinks;
|
|
14
|
-
url?: ILinks;
|
|
15
|
-
uploadcare?: ILinks;
|
|
16
|
-
}
|
|
17
|
-
export {};
|
|
1
|
+
interface IFindingOption {
|
|
2
|
+
content: string;
|
|
3
|
+
absUrl: string;
|
|
4
|
+
mdUrl: string;
|
|
5
|
+
relUrl: string;
|
|
6
|
+
}
|
|
7
|
+
interface ILinks {
|
|
8
|
+
[key: string]: IFindingOption;
|
|
9
|
+
}
|
|
10
|
+
export interface IFindings {
|
|
11
|
+
relativeImages?: ILinks;
|
|
12
|
+
externalImages?: ILinks;
|
|
13
|
+
markdownLinks?: ILinks;
|
|
14
|
+
url?: ILinks;
|
|
15
|
+
uploadcare?: ILinks;
|
|
16
|
+
}
|
|
17
|
+
export {};
|
package/lib/models/findings.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
package/lib/models/flags.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
export interface IStartFlags {
|
|
2
|
-
port?: string | unknown;
|
|
3
|
-
host?: string | unknown;
|
|
4
|
-
disableGrading?: boolean | unknown;
|
|
5
|
-
watch?: boolean | unknown;
|
|
6
|
-
editor?: string | unknown;
|
|
7
|
-
version?: string | unknown;
|
|
8
|
-
grading?: string | unknown;
|
|
9
|
-
debug?: boolean | unknown;
|
|
10
|
-
}
|
|
1
|
+
export interface IStartFlags {
|
|
2
|
+
port?: string | unknown;
|
|
3
|
+
host?: string | unknown;
|
|
4
|
+
disableGrading?: boolean | unknown;
|
|
5
|
+
watch?: boolean | unknown;
|
|
6
|
+
editor?: string | unknown;
|
|
7
|
+
version?: string | unknown;
|
|
8
|
+
grading?: string | unknown;
|
|
9
|
+
debug?: boolean | unknown;
|
|
10
|
+
}
|
package/lib/models/flags.js
CHANGED
|
@@ -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,11 +1,11 @@
|
|
|
1
|
-
interface IAttributes {
|
|
2
|
-
intro: string;
|
|
3
|
-
tutorial: string;
|
|
4
|
-
}
|
|
5
|
-
export interface IFrontmatter {
|
|
6
|
-
attributes?: IAttributes;
|
|
7
|
-
body?: string;
|
|
8
|
-
bodyBegin?: number;
|
|
9
|
-
frontmatter?: string;
|
|
10
|
-
}
|
|
11
|
-
export {};
|
|
1
|
+
interface IAttributes {
|
|
2
|
+
intro: string;
|
|
3
|
+
tutorial: string;
|
|
4
|
+
}
|
|
5
|
+
export interface IFrontmatter {
|
|
6
|
+
attributes?: IAttributes;
|
|
7
|
+
body?: string;
|
|
8
|
+
bodyBegin?: number;
|
|
9
|
+
frontmatter?: string;
|
|
10
|
+
}
|
|
11
|
+
export {};
|