@learnpack/learnpack 2.0.19 → 2.0.21

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 (115) hide show
  1. package/README.md +10 -10
  2. package/lib/commands/audit.d.ts +6 -0
  3. package/lib/commands/audit.js +369 -0
  4. package/lib/commands/clean.d.ts +8 -0
  5. package/lib/commands/clean.js +25 -0
  6. package/lib/commands/download.d.ts +13 -0
  7. package/lib/commands/download.js +55 -0
  8. package/lib/commands/init.d.ts +9 -0
  9. package/lib/commands/init.js +117 -0
  10. package/lib/commands/login.d.ts +14 -0
  11. package/lib/commands/login.js +37 -0
  12. package/lib/commands/logout.d.ts +14 -0
  13. package/lib/commands/logout.js +37 -0
  14. package/lib/commands/publish.d.ts +14 -0
  15. package/lib/commands/publish.js +82 -0
  16. package/lib/commands/start.d.ts +7 -0
  17. package/lib/commands/start.js +165 -0
  18. package/lib/commands/test.d.ts +6 -0
  19. package/lib/commands/test.js +62 -0
  20. package/lib/managers/config/allowed_files.d.ts +5 -0
  21. package/lib/managers/config/allowed_files.js +30 -0
  22. package/lib/managers/config/defaults.d.ts +34 -0
  23. package/lib/managers/config/defaults.js +35 -0
  24. package/lib/managers/config/exercise.d.ts +36 -0
  25. package/lib/managers/config/exercise.js +230 -0
  26. package/lib/managers/config/index.d.ts +3 -0
  27. package/lib/managers/config/index.js +307 -0
  28. package/lib/managers/file.d.ts +13 -0
  29. package/lib/managers/file.js +134 -0
  30. package/lib/managers/gitpod.d.ts +3 -0
  31. package/lib/managers/gitpod.js +67 -0
  32. package/lib/managers/server/index.d.ts +6 -0
  33. package/lib/managers/server/index.js +51 -0
  34. package/lib/managers/server/routes.d.ts +4 -0
  35. package/lib/managers/server/routes.js +160 -0
  36. package/lib/managers/session.d.ts +3 -0
  37. package/lib/managers/session.js +104 -0
  38. package/lib/managers/socket.d.ts +3 -0
  39. package/lib/managers/socket.js +164 -0
  40. package/lib/managers/test.d.ts +0 -0
  41. package/lib/managers/test.js +84 -0
  42. package/lib/models/action.d.ts +2 -0
  43. package/lib/models/action.js +2 -0
  44. package/lib/models/audit-errors.d.ts +4 -0
  45. package/lib/models/audit-errors.js +2 -0
  46. package/lib/models/config-manager.d.ts +21 -0
  47. package/lib/models/config-manager.js +2 -0
  48. package/lib/models/config.d.ts +57 -0
  49. package/lib/models/config.js +2 -0
  50. package/lib/models/counter.d.ts +11 -0
  51. package/lib/models/counter.js +2 -0
  52. package/lib/models/errors.d.ts +15 -0
  53. package/lib/models/errors.js +2 -0
  54. package/lib/models/exercise-obj.d.ts +27 -0
  55. package/lib/models/exercise-obj.js +2 -0
  56. package/lib/models/file.d.ts +5 -0
  57. package/lib/models/file.js +2 -0
  58. package/lib/models/findings.d.ts +17 -0
  59. package/lib/models/findings.js +2 -0
  60. package/lib/models/flags.d.ts +10 -0
  61. package/lib/models/flags.js +2 -0
  62. package/lib/models/front-matter.d.ts +11 -0
  63. package/lib/models/front-matter.js +2 -0
  64. package/lib/models/gitpod-data.d.ts +16 -0
  65. package/lib/models/gitpod-data.js +2 -0
  66. package/lib/models/language.d.ts +4 -0
  67. package/lib/models/language.js +2 -0
  68. package/lib/models/package.d.ts +7 -0
  69. package/lib/models/package.js +2 -0
  70. package/lib/models/plugin-config.d.ts +16 -0
  71. package/lib/models/plugin-config.js +2 -0
  72. package/lib/models/session.d.ts +23 -0
  73. package/lib/models/session.js +2 -0
  74. package/lib/models/socket.d.ts +31 -0
  75. package/lib/models/socket.js +2 -0
  76. package/lib/models/status.d.ts +1 -0
  77. package/lib/models/status.js +2 -0
  78. package/lib/models/success-types.d.ts +1 -0
  79. package/lib/models/success-types.js +2 -0
  80. package/lib/plugin/command/compile.d.ts +6 -0
  81. package/lib/plugin/command/compile.js +18 -0
  82. package/lib/plugin/command/test.d.ts +6 -0
  83. package/lib/plugin/command/test.js +25 -0
  84. package/lib/plugin/index.d.ts +27 -0
  85. package/lib/plugin/index.js +7 -0
  86. package/lib/plugin/plugin.d.ts +8 -0
  87. package/lib/plugin/plugin.js +68 -0
  88. package/lib/plugin/utils.d.ts +16 -0
  89. package/lib/plugin/utils.js +58 -0
  90. package/lib/ui/download.d.ts +5 -0
  91. package/lib/ui/download.js +61 -0
  92. package/lib/utils/BaseCommand.d.ts +8 -0
  93. package/lib/utils/BaseCommand.js +41 -0
  94. package/lib/utils/SessionCommand.d.ts +10 -0
  95. package/lib/utils/SessionCommand.js +47 -0
  96. package/lib/utils/api.d.ts +12 -0
  97. package/lib/utils/api.js +173 -0
  98. package/lib/utils/audit.d.ts +13 -0
  99. package/lib/utils/audit.js +129 -0
  100. package/lib/utils/console.d.ts +12 -0
  101. package/lib/utils/console.js +19 -0
  102. package/lib/utils/errors.d.ts +17 -0
  103. package/lib/utils/errors.js +100 -0
  104. package/lib/utils/exercisesQueue.d.ts +9 -0
  105. package/lib/utils/exercisesQueue.js +38 -0
  106. package/lib/utils/fileQueue.d.ts +40 -0
  107. package/lib/utils/fileQueue.js +168 -0
  108. package/lib/utils/misc.d.ts +1 -0
  109. package/lib/utils/misc.js +23 -0
  110. package/lib/utils/validators.d.ts +5 -0
  111. package/lib/utils/validators.js +17 -0
  112. package/lib/utils/watcher.d.ts +2 -0
  113. package/lib/utils/watcher.js +24 -0
  114. package/oclif.manifest.json +1 -1
  115. package/package.json +1 -1
@@ -0,0 +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;
File without changes
@@ -0,0 +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
+ */
@@ -0,0 +1,2 @@
1
+ export declare type TAction = 'test' | 'log' | 'reload' | 'ready' | 'clean' | 'ask';
2
+ export declare type ICallback = (...agrs: any[]) => any;
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,4 @@
1
+ export interface IAuditErrors {
2
+ exercise?: string;
3
+ msg: string;
4
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +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
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,57 @@
1
+ import { IExercise } from "./exercise-obj";
2
+ export declare type TGrading = "isolated" | "incremental" | "no-grading";
3
+ export declare type TMode = "preview" | "standalone";
4
+ export declare type TConfigAction = "test" | "build" | "tutorial" | "reset";
5
+ export declare type TConfigObjAttributes = "config" | "exercises" | "grading";
6
+ export declare type TCompiler = "webpack" | "vanillajs" | "vue" | "react" | "css" | "html";
7
+ export interface IConfigPath {
8
+ base: string;
9
+ }
10
+ export interface IEditor {
11
+ mode?: TMode;
12
+ version: string;
13
+ agent?: string;
14
+ }
15
+ export interface TEntries {
16
+ python3?: string;
17
+ html?: string;
18
+ node?: string;
19
+ react?: string;
20
+ java?: string;
21
+ }
22
+ export interface IConfig {
23
+ port?: string;
24
+ repository?: string;
25
+ description?: string;
26
+ slug?: string;
27
+ dirPath: string;
28
+ preview?: string;
29
+ entries: TEntries;
30
+ grading: TGrading;
31
+ configPath: string;
32
+ translations: Array<string>;
33
+ outputPath?: string;
34
+ editor: IEditor;
35
+ language: string;
36
+ title: string;
37
+ duration: number;
38
+ difficulty?: string;
39
+ exercisesPath: string;
40
+ disableGrading: boolean;
41
+ actions: Array<string>;
42
+ disabledActions?: Array<TConfigAction>;
43
+ compiler: TCompiler;
44
+ publicPath: string;
45
+ publicUrl?: string;
46
+ skills: Array<string>;
47
+ runHook: (...agrs: Array<any>) => void;
48
+ testingFinishedCallback: (arg: any | undefined) => void;
49
+ }
50
+ export interface IConfigObj {
51
+ session?: number;
52
+ currentExercise?: any;
53
+ config?: IConfig;
54
+ exercises?: Array<IExercise>;
55
+ confPath?: IConfigPath;
56
+ address?: string;
57
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +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 {};
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +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
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,27 @@
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
+ exerciseSlug: string;
26
+ files: string[];
27
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,5 @@
1
+ export interface IFile {
2
+ path: string;
3
+ name: string;
4
+ hidden: boolean;
5
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +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 {};
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +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
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +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 {};
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,16 @@
1
+ import { Server } from 'socket.io';
2
+ import { IConfigObj } from './config';
3
+ export declare type TFile = string;
4
+ export interface IGitpodData {
5
+ files: Array<TFile>;
6
+ }
7
+ export interface IGitpod {
8
+ socket: Server | null;
9
+ config: IConfigObj | null;
10
+ initialized: boolean;
11
+ hasGPCommand: boolean;
12
+ init: (config?: IConfigObj) => void;
13
+ openFiles: (files: Array<TFile>) => Promise<boolean | undefined>;
14
+ setup: (config?: IConfigObj) => void;
15
+ autosave: (value: string) => void;
16
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,4 @@
1
+ export interface ILanguage {
2
+ title: string;
3
+ slug: string;
4
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,7 @@
1
+ export interface IPackage {
2
+ title: string;
3
+ slug: string;
4
+ difficulty: string;
5
+ downloads: string;
6
+ skills: Array<any>;
7
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,16 @@
1
+ import { IConfig } from "./config";
2
+ import { IExercise } from "./exercise-obj";
3
+ export interface IPluginConfig {
4
+ language: string;
5
+ compile?: {
6
+ run: () => void;
7
+ validate: (args: IValidate) => boolean;
8
+ dependencies: string[];
9
+ };
10
+ test?: () => void;
11
+ }
12
+ interface IValidate {
13
+ exercise: IExercise;
14
+ configuration: IConfig;
15
+ }
16
+ export {};
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,23 @@
1
+ import { IConfig, IConfigObj } from './config';
2
+ export interface IPayload {
3
+ email: string;
4
+ }
5
+ export interface IStartProps {
6
+ token: string;
7
+ payload: IPayload | null;
8
+ }
9
+ export interface ISession {
10
+ sessionStarted: boolean;
11
+ token: string | null;
12
+ config: IConfig | null;
13
+ currentCohort: null;
14
+ initialize: () => Promise<boolean>;
15
+ setPayload: (value: IPayload) => Promise<boolean>;
16
+ getPayload: () => Promise<any>;
17
+ isActive: () => boolean;
18
+ get: (config?: IConfigObj) => Promise<any>;
19
+ login: () => Promise<void>;
20
+ sync: () => Promise<void>;
21
+ start: ({ token, payload }: IStartProps) => Promise<void>;
22
+ destroy: () => Promise<void>;
23
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,31 @@
1
+ import { IConfig } from './config';
2
+ import { Server } from 'socket.io';
3
+ import { DefaultEventsMap } from 'socket.io/dist/typed-events';
4
+ import { TAction, ICallback } from './action';
5
+ import { TStatus } from './status';
6
+ export declare type TPossibleActions = 'build' | 'test' | 'reset' | 'tutorial';
7
+ export interface ISocket {
8
+ socket: Server<DefaultEventsMap, DefaultEventsMap, DefaultEventsMap, any> | null;
9
+ config: IConfig | null;
10
+ allowedActions: Array<TPossibleActions>;
11
+ actionCallBacks: {
12
+ [key: string]: ICallback;
13
+ };
14
+ possibleActions: Array<TPossibleActions>;
15
+ isTestingEnvironment: boolean;
16
+ addAllowed: (actions: any) => void;
17
+ removeAllowed: (actions: any) => void;
18
+ start: (config: IConfig, server: any, isTestingEnvironment: boolean) => void;
19
+ on: (action: any, callBack: any) => void;
20
+ clean: (_: string, logs: Array<any>) => void;
21
+ ask: (questions: Array<string>) => void;
22
+ reload: (files: Array<string> | null, exercises: Array<string>) => void;
23
+ openWindow: (id: string) => void;
24
+ log: (status: TStatus, messages?: string | Array<string>, report?: Array<string>, data?: any) => void;
25
+ emit: (action: TAction, status: TStatus | string, logs: string | Array<string>, inputs?: Array<string>, report?: Array<string>, data?: any) => void;
26
+ ready: (message: string) => void;
27
+ error: (type: any, stdout: string) => void;
28
+ fatal: (msg: string) => void;
29
+ success: (type: any, stdout: string) => void;
30
+ onTestingFinished: (obj: any) => void;
31
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1 @@
1
+ export declare type TStatus = 'ready' | 'internal-error' | 'compiler-success' | 'testing-success' | 'compiling' | 'testing' | 'start_exercise' | 'initializing' | 'configuration_loaded' | 'connection_ended' | 'reset_exercise' | 'open_files' | 'open_window' | 'instructions_closed';
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1 @@
1
+ export declare type TSuccessType = 'compiler-success' | 'testing-success';
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,6 @@
1
+ import { IError } from "../../models/errors";
2
+ declare const _default: {
3
+ CompilationError: (messages: string) => IError;
4
+ default: ({ action, ...rest }: any) => Promise<any>;
5
+ };
6
+ export default _default;