@learnpack/learnpack 2.0.13 → 2.0.16

Sign up to get free protection for your applications and to get access to all the features.
Files changed (116) 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/index.d.ts +1 -0
  21. package/lib/managers/config/allowed_files.d.ts +5 -0
  22. package/lib/managers/config/allowed_files.js +30 -0
  23. package/lib/managers/config/defaults.d.ts +34 -0
  24. package/lib/managers/config/defaults.js +35 -0
  25. package/lib/managers/config/exercise.d.ts +36 -0
  26. package/lib/managers/config/exercise.js +230 -0
  27. package/lib/managers/config/index.d.ts +3 -0
  28. package/lib/managers/config/index.js +307 -0
  29. package/lib/managers/file.d.ts +13 -0
  30. package/lib/managers/file.js +134 -0
  31. package/lib/managers/gitpod.d.ts +3 -0
  32. package/lib/managers/gitpod.js +67 -0
  33. package/lib/managers/server/index.d.ts +6 -0
  34. package/lib/managers/server/index.js +51 -0
  35. package/lib/managers/server/routes.d.ts +4 -0
  36. package/lib/managers/server/routes.js +160 -0
  37. package/lib/managers/session.d.ts +3 -0
  38. package/lib/managers/session.js +104 -0
  39. package/lib/managers/socket.d.ts +3 -0
  40. package/lib/managers/socket.js +164 -0
  41. package/lib/managers/test.d.ts +0 -0
  42. package/lib/managers/test.js +84 -0
  43. package/lib/models/action.d.ts +2 -0
  44. package/lib/models/action.js +2 -0
  45. package/lib/models/audit-errors.d.ts +4 -0
  46. package/lib/models/audit-errors.js +2 -0
  47. package/lib/models/config-manager.d.ts +21 -0
  48. package/lib/models/config-manager.js +2 -0
  49. package/lib/models/config.d.ts +57 -0
  50. package/lib/models/config.js +2 -0
  51. package/lib/models/counter.d.ts +11 -0
  52. package/lib/models/counter.js +2 -0
  53. package/lib/models/errors.d.ts +15 -0
  54. package/lib/models/errors.js +2 -0
  55. package/lib/models/exercise-obj.d.ts +27 -0
  56. package/lib/models/exercise-obj.js +2 -0
  57. package/lib/models/file.d.ts +5 -0
  58. package/lib/models/file.js +2 -0
  59. package/lib/models/findings.d.ts +17 -0
  60. package/lib/models/findings.js +2 -0
  61. package/lib/models/flags.d.ts +10 -0
  62. package/lib/models/flags.js +2 -0
  63. package/lib/models/front-matter.d.ts +11 -0
  64. package/lib/models/front-matter.js +2 -0
  65. package/lib/models/gitpod-data.d.ts +16 -0
  66. package/lib/models/gitpod-data.js +2 -0
  67. package/lib/models/language.d.ts +4 -0
  68. package/lib/models/language.js +2 -0
  69. package/lib/models/package.d.ts +7 -0
  70. package/lib/models/package.js +2 -0
  71. package/lib/models/plugin-config.d.ts +16 -0
  72. package/lib/models/plugin-config.js +2 -0
  73. package/lib/models/session.d.ts +23 -0
  74. package/lib/models/session.js +2 -0
  75. package/lib/models/socket.d.ts +31 -0
  76. package/lib/models/socket.js +2 -0
  77. package/lib/models/status.d.ts +1 -0
  78. package/lib/models/status.js +2 -0
  79. package/lib/models/success-types.d.ts +1 -0
  80. package/lib/models/success-types.js +2 -0
  81. package/lib/plugin/command/compile.d.ts +6 -0
  82. package/lib/plugin/command/compile.js +18 -0
  83. package/lib/plugin/command/test.d.ts +6 -0
  84. package/lib/plugin/command/test.js +25 -0
  85. package/lib/plugin/index.d.ts +27 -0
  86. package/lib/plugin/index.js +7 -0
  87. package/lib/plugin/plugin.d.ts +8 -0
  88. package/lib/plugin/plugin.js +68 -0
  89. package/lib/plugin/utils.d.ts +16 -0
  90. package/lib/plugin/utils.js +58 -0
  91. package/lib/ui/download.d.ts +5 -0
  92. package/lib/ui/download.js +61 -0
  93. package/lib/utils/BaseCommand.d.ts +8 -0
  94. package/lib/utils/BaseCommand.js +41 -0
  95. package/lib/utils/SessionCommand.d.ts +10 -0
  96. package/lib/utils/SessionCommand.js +47 -0
  97. package/lib/utils/api.d.ts +12 -0
  98. package/lib/utils/api.js +173 -0
  99. package/lib/utils/audit.d.ts +13 -0
  100. package/lib/utils/audit.js +129 -0
  101. package/lib/utils/console.d.ts +12 -0
  102. package/lib/utils/console.js +19 -0
  103. package/lib/utils/errors.d.ts +17 -0
  104. package/lib/utils/errors.js +100 -0
  105. package/lib/utils/exercisesQueue.d.ts +9 -0
  106. package/lib/utils/exercisesQueue.js +38 -0
  107. package/lib/utils/fileQueue.d.ts +40 -0
  108. package/lib/utils/fileQueue.js +168 -0
  109. package/lib/utils/misc.d.ts +1 -0
  110. package/lib/utils/misc.js +23 -0
  111. package/lib/utils/validators.d.ts +5 -0
  112. package/lib/utils/validators.js +17 -0
  113. package/lib/utils/watcher.d.ts +2 -0
  114. package/lib/utils/watcher.js +24 -0
  115. package/oclif.manifest.json +1 -1
  116. package/package.json +4 -3
@@ -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;