@learnpack/learnpack 4.0.9 → 4.0.12

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 (128) hide show
  1. package/README.md +25 -10
  2. package/lib/commands/audit.d.ts +6 -6
  3. package/lib/commands/audit.js +327 -327
  4. package/lib/commands/build.d.ts +11 -0
  5. package/lib/commands/build.js +160 -0
  6. package/lib/commands/clean.d.ts +8 -8
  7. package/lib/commands/clean.js +22 -22
  8. package/lib/commands/download.d.ts +13 -13
  9. package/lib/commands/download.js +52 -52
  10. package/lib/commands/init.d.ts +9 -9
  11. package/lib/commands/init.js +127 -127
  12. package/lib/commands/login.d.ts +14 -14
  13. package/lib/commands/login.js +34 -34
  14. package/lib/commands/logout.d.ts +14 -14
  15. package/lib/commands/logout.js +34 -34
  16. package/lib/commands/publish.d.ts +14 -14
  17. package/lib/commands/publish.js +79 -79
  18. package/lib/commands/start.d.ts +7 -7
  19. package/lib/commands/start.js +252 -250
  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 +47 -48
  27. package/lib/managers/config/defaults.js +51 -51
  28. package/lib/managers/config/exercise.d.ts +36 -36
  29. package/lib/managers/config/exercise.js +243 -236
  30. package/lib/managers/config/index.d.ts +3 -3
  31. package/lib/managers/config/index.js +464 -459
  32. package/lib/managers/file.d.ts +14 -14
  33. package/lib/managers/file.js +190 -184
  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 +5 -6
  37. package/lib/managers/server/index.js +58 -58
  38. package/lib/managers/server/routes.d.ts +4 -4
  39. package/lib/managers/server/routes.js +228 -220
  40. package/lib/managers/session.d.ts +3 -3
  41. package/lib/managers/session.js +125 -125
  42. package/lib/managers/socket.d.ts +3 -3
  43. package/lib/managers/socket.js +188 -186
  44. package/lib/managers/telemetry.d.ts +74 -74
  45. package/lib/managers/telemetry.js +215 -214
  46. package/lib/managers/test.js +84 -84
  47. package/lib/models/action.d.ts +2 -2
  48. package/lib/models/action.js +2 -2
  49. package/lib/models/audit.d.ts +15 -15
  50. package/lib/models/audit.js +2 -2
  51. package/lib/models/config-manager.d.ts +21 -21
  52. package/lib/models/config-manager.js +2 -2
  53. package/lib/models/config.d.ts +86 -86
  54. package/lib/models/config.js +2 -2
  55. package/lib/models/counter.d.ts +11 -11
  56. package/lib/models/counter.js +2 -2
  57. package/lib/models/errors.d.ts +15 -15
  58. package/lib/models/errors.js +2 -2
  59. package/lib/models/exercise-obj.d.ts +29 -30
  60. package/lib/models/exercise-obj.js +2 -2
  61. package/lib/models/file.d.ts +5 -5
  62. package/lib/models/file.js +2 -2
  63. package/lib/models/findings.d.ts +17 -17
  64. package/lib/models/findings.js +2 -2
  65. package/lib/models/flags.d.ts +10 -10
  66. package/lib/models/flags.js +2 -2
  67. package/lib/models/front-matter.d.ts +11 -11
  68. package/lib/models/front-matter.js +2 -2
  69. package/lib/models/gitpod-data.d.ts +16 -16
  70. package/lib/models/gitpod-data.js +2 -2
  71. package/lib/models/language.d.ts +4 -4
  72. package/lib/models/language.js +2 -2
  73. package/lib/models/package.d.ts +7 -7
  74. package/lib/models/package.js +2 -2
  75. package/lib/models/plugin-config.d.ts +16 -16
  76. package/lib/models/plugin-config.js +2 -2
  77. package/lib/models/session.d.ts +31 -31
  78. package/lib/models/session.js +2 -2
  79. package/lib/models/socket.d.ts +37 -37
  80. package/lib/models/socket.js +2 -2
  81. package/lib/models/status.d.ts +1 -1
  82. package/lib/models/status.js +2 -2
  83. package/lib/models/success-types.d.ts +1 -1
  84. package/lib/models/success-types.js +2 -2
  85. package/lib/plugin/command/compile.d.ts +6 -6
  86. package/lib/plugin/command/compile.js +18 -18
  87. package/lib/plugin/command/test.d.ts +6 -6
  88. package/lib/plugin/command/test.js +25 -25
  89. package/lib/plugin/index.d.ts +27 -27
  90. package/lib/plugin/index.js +7 -7
  91. package/lib/plugin/plugin.d.ts +8 -8
  92. package/lib/plugin/plugin.js +68 -68
  93. package/lib/plugin/utils.d.ts +16 -16
  94. package/lib/plugin/utils.js +58 -58
  95. package/lib/ui/download.d.ts +5 -5
  96. package/lib/ui/download.js +62 -61
  97. package/lib/utils/BaseCommand.d.ts +8 -8
  98. package/lib/utils/BaseCommand.js +41 -41
  99. package/lib/utils/SessionCommand.d.ts +10 -10
  100. package/lib/utils/SessionCommand.js +43 -43
  101. package/lib/utils/api.d.ts +14 -14
  102. package/lib/utils/api.js +255 -255
  103. package/lib/utils/audit.d.ts +16 -16
  104. package/lib/utils/audit.js +303 -303
  105. package/lib/utils/checkNotInstalled.d.ts +8 -8
  106. package/lib/utils/checkNotInstalled.js +185 -181
  107. package/lib/utils/console.d.ts +12 -12
  108. package/lib/utils/console.js +19 -19
  109. package/lib/utils/errors.d.ts +17 -17
  110. package/lib/utils/errors.js +107 -100
  111. package/lib/utils/exercisesQueue.d.ts +9 -9
  112. package/lib/utils/exercisesQueue.js +38 -38
  113. package/lib/utils/fileQueue.d.ts +43 -43
  114. package/lib/utils/fileQueue.js +169 -169
  115. package/lib/utils/misc.d.ts +1 -1
  116. package/lib/utils/misc.js +24 -23
  117. package/lib/utils/osOperations.d.ts +5 -5
  118. package/lib/utils/osOperations.js +72 -72
  119. package/lib/utils/validators.d.ts +5 -5
  120. package/lib/utils/validators.js +16 -17
  121. package/lib/utils/watcher.d.ts +2 -2
  122. package/lib/utils/watcher.js +25 -25
  123. package/oclif.manifest.json +1 -1
  124. package/package.json +6 -4
  125. package/src/commands/build.ts +181 -0
  126. package/src/managers/config/index.ts +5 -0
  127. package/src/managers/server/routes.ts +11 -1
  128. package/src/managers/session.ts +1 -1
@@ -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" | "file_change" | "dialog";
2
- export declare type ICallback = (...agrs: any[]) => any;
1
+ export type TAction = "test" | "log" | "reload" | "ready" | "clean" | "ask" | "file_change" | "dialog";
2
+ export 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
+ 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 });
@@ -1,86 +1,86 @@
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
- export interface IEditor {
12
- mode?: TMode;
13
- version?: string;
14
- agent?: TAgent;
15
- hideTerminal?: boolean;
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
- variables?: TVariables;
58
- suggestions: TSuggestions;
59
- warnings: TWarnings;
60
- runHook: (...agrs: Array<any>) => void;
61
- testingFinishedCallback: (arg: any | undefined) => void;
62
- }
63
- export declare type TAgent = "os" | "vscode" | null;
64
- declare type TSuggestions = {
65
- agent: TAgent;
66
- };
67
- declare type TWarnings = {
68
- agent?: string;
69
- extension?: string;
70
- };
71
- declare type TVariable = {
72
- type: "command" | "string";
73
- source: string;
74
- };
75
- declare type TVariables = {
76
- [key: string]: TVariable | string;
77
- };
78
- export interface IConfigObj {
79
- session?: number;
80
- currentExercise?: any;
81
- config?: IConfig;
82
- exercises?: Array<IExercise>;
83
- confPath?: IConfigPath;
84
- address?: string;
85
- }
86
- export {};
1
+ import { IExercise } from "./exercise-obj";
2
+ import { TTelemetryUrls } from "../managers/telemetry";
3
+ export type TGrading = "isolated" | "incremental" | "no-grading";
4
+ export type TMode = "preview" | "extension";
5
+ export type TConfigAction = "test" | "build" | "tutorial" | "reset" | "generate";
6
+ export type TConfigObjAttributes = "config" | "exercises" | "grading";
7
+ export type TCompiler = "webpack" | "vanillajs" | "react" | "html" | "node" | "python" | "css";
8
+ export interface IConfigPath {
9
+ base: string;
10
+ }
11
+ export interface IEditor {
12
+ mode?: TMode;
13
+ version?: string;
14
+ agent?: TAgent;
15
+ hideTerminal?: boolean;
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
+ variables?: TVariables;
58
+ suggestions: TSuggestions;
59
+ warnings: TWarnings;
60
+ runHook: (...agrs: Array<any>) => void;
61
+ testingFinishedCallback: (arg: any | undefined) => void;
62
+ }
63
+ export type TAgent = "os" | "vscode" | null;
64
+ type TSuggestions = {
65
+ agent: TAgent;
66
+ };
67
+ type TWarnings = {
68
+ agent?: string;
69
+ extension?: string;
70
+ };
71
+ type TVariable = {
72
+ type: "command" | "string";
73
+ source: string;
74
+ };
75
+ type TVariables = {
76
+ [key: string]: TVariable | string;
77
+ };
78
+ export interface IConfigObj {
79
+ session?: number;
80
+ currentExercise?: any;
81
+ config?: IConfig;
82
+ exercises?: Array<IExercise>;
83
+ confPath?: IConfigPath;
84
+ address?: string;
85
+ }
86
+ 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,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 {};
@@ -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 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
+ }
@@ -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,29 @@
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
+ import { IFile } from "./file";
2
+ import { IConfig } from "./config";
3
+ import { ISocket } from "./socket";
4
+ export interface IExercise {
5
+ position?: number;
6
+ files: Array<IFile>;
7
+ slug: string;
8
+ path: string;
9
+ done: boolean;
10
+ language?: string | null;
11
+ entry?: string | null;
12
+ graded?: boolean;
13
+ translations?: {
14
+ [key: string]: string;
15
+ };
16
+ title: string;
17
+ getReadme?: (lang: string | null) => any;
18
+ getFile?: (name: string) => string | Buffer;
19
+ saveFile?: (name: string, content: string) => void;
20
+ getTestReport?: () => any;
21
+ test?: (sessionConfig: any, config: IConfig, socket: ISocket) => void;
22
+ }
23
+ export interface IExerciseData {
24
+ lastMessages?: any;
25
+ userMessage?: string;
26
+ exerciseSlug: string;
27
+ entryPoint?: string;
28
+ files: string[];
29
+ }
@@ -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,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
+ }
@@ -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,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 {};
@@ -1,2 +1,2 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });