@learnpack/learnpack 2.1.27 → 2.1.29

Sign up to get free protection for your applications and to get access to all the features.
Files changed (117) hide show
  1. package/README.md +10 -10
  2. package/lib/commands/audit.d.ts +6 -0
  3. package/lib/commands/audit.js +342 -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 +123 -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 +176 -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/index.js +4 -0
  22. package/lib/managers/config/allowed_files.d.ts +5 -0
  23. package/lib/managers/config/allowed_files.js +30 -0
  24. package/lib/managers/config/defaults.d.ts +39 -0
  25. package/lib/managers/config/defaults.js +40 -0
  26. package/lib/managers/config/exercise.d.ts +36 -0
  27. package/lib/managers/config/exercise.js +233 -0
  28. package/lib/managers/config/index.d.ts +3 -0
  29. package/lib/managers/config/index.js +320 -0
  30. package/lib/managers/file.d.ts +14 -0
  31. package/lib/managers/file.js +141 -0
  32. package/lib/managers/gitpod.d.ts +3 -0
  33. package/lib/managers/gitpod.js +67 -0
  34. package/lib/managers/server/index.d.ts +6 -0
  35. package/lib/managers/server/index.js +58 -0
  36. package/lib/managers/server/routes.d.ts +4 -0
  37. package/lib/managers/server/routes.js +201 -0
  38. package/lib/managers/session.d.ts +3 -0
  39. package/lib/managers/session.js +131 -0
  40. package/lib/managers/socket.d.ts +3 -0
  41. package/lib/managers/socket.js +178 -0
  42. package/lib/managers/test.d.ts +0 -0
  43. package/lib/managers/test.js +84 -0
  44. package/lib/models/action.d.ts +2 -0
  45. package/lib/models/action.js +2 -0
  46. package/lib/models/audit.d.ts +15 -0
  47. package/lib/models/audit.js +2 -0
  48. package/lib/models/config-manager.d.ts +21 -0
  49. package/lib/models/config-manager.js +2 -0
  50. package/lib/models/config.d.ts +62 -0
  51. package/lib/models/config.js +2 -0
  52. package/lib/models/counter.d.ts +11 -0
  53. package/lib/models/counter.js +2 -0
  54. package/lib/models/errors.d.ts +15 -0
  55. package/lib/models/errors.js +2 -0
  56. package/lib/models/exercise-obj.d.ts +30 -0
  57. package/lib/models/exercise-obj.js +2 -0
  58. package/lib/models/file.d.ts +5 -0
  59. package/lib/models/file.js +2 -0
  60. package/lib/models/findings.d.ts +17 -0
  61. package/lib/models/findings.js +2 -0
  62. package/lib/models/flags.d.ts +10 -0
  63. package/lib/models/flags.js +2 -0
  64. package/lib/models/front-matter.d.ts +11 -0
  65. package/lib/models/front-matter.js +2 -0
  66. package/lib/models/gitpod-data.d.ts +16 -0
  67. package/lib/models/gitpod-data.js +2 -0
  68. package/lib/models/language.d.ts +4 -0
  69. package/lib/models/language.js +2 -0
  70. package/lib/models/package.d.ts +7 -0
  71. package/lib/models/package.js +2 -0
  72. package/lib/models/plugin-config.d.ts +16 -0
  73. package/lib/models/plugin-config.js +2 -0
  74. package/lib/models/session.d.ts +26 -0
  75. package/lib/models/session.js +2 -0
  76. package/lib/models/socket.d.ts +32 -0
  77. package/lib/models/socket.js +2 -0
  78. package/lib/models/status.d.ts +1 -0
  79. package/lib/models/status.js +2 -0
  80. package/lib/models/success-types.d.ts +1 -0
  81. package/lib/models/success-types.js +2 -0
  82. package/lib/plugin/command/compile.d.ts +6 -0
  83. package/lib/plugin/command/compile.js +18 -0
  84. package/lib/plugin/command/test.d.ts +6 -0
  85. package/lib/plugin/command/test.js +25 -0
  86. package/lib/plugin/index.d.ts +27 -0
  87. package/lib/plugin/index.js +7 -0
  88. package/lib/plugin/plugin.d.ts +8 -0
  89. package/lib/plugin/plugin.js +68 -0
  90. package/lib/plugin/utils.d.ts +16 -0
  91. package/lib/plugin/utils.js +58 -0
  92. package/lib/ui/download.d.ts +5 -0
  93. package/lib/ui/download.js +61 -0
  94. package/lib/utils/BaseCommand.d.ts +8 -0
  95. package/lib/utils/BaseCommand.js +41 -0
  96. package/lib/utils/SessionCommand.d.ts +10 -0
  97. package/lib/utils/SessionCommand.js +47 -0
  98. package/lib/utils/api.d.ts +14 -0
  99. package/lib/utils/api.js +218 -0
  100. package/lib/utils/audit.d.ts +16 -0
  101. package/lib/utils/audit.js +302 -0
  102. package/lib/utils/console.d.ts +12 -0
  103. package/lib/utils/console.js +19 -0
  104. package/lib/utils/errors.d.ts +17 -0
  105. package/lib/utils/errors.js +100 -0
  106. package/lib/utils/exercisesQueue.d.ts +9 -0
  107. package/lib/utils/exercisesQueue.js +38 -0
  108. package/lib/utils/fileQueue.d.ts +40 -0
  109. package/lib/utils/fileQueue.js +168 -0
  110. package/lib/utils/misc.d.ts +1 -0
  111. package/lib/utils/misc.js +23 -0
  112. package/lib/utils/validators.d.ts +5 -0
  113. package/lib/utils/validators.js +17 -0
  114. package/lib/utils/watcher.d.ts +2 -0
  115. package/lib/utils/watcher.js +23 -0
  116. package/oclif.manifest.json +1 -1
  117. package/package.json +2 -1
@@ -0,0 +1,178 @@
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, {
41
+ allowEIO3: true,
42
+ cors: {
43
+ origin: "http://localhost:5173",
44
+ methods: ["GET", "POST"],
45
+ },
46
+ });
47
+ this.allowedActions =
48
+ ((_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) ?
49
+ 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"; }) :
50
+ this.possibleActions.filter(a => { var _a; return !((_a = this.allowedActions) === null || _a === void 0 ? void 0 : _a.includes(a)); });
51
+ if (((_d = this.config) === null || _d === void 0 ? void 0 : _d.grading) === "incremental") {
52
+ this.removeAllowed("reset");
53
+ }
54
+ if (this.socket) {
55
+ this.socket.on("connection", (socket) => {
56
+ console_1.default.debug("Connection with client successfully established", this.allowedActions);
57
+ if (!this.isTestingEnvironment) {
58
+ this.log("ready", ["Ready to compile or test..."]);
59
+ }
60
+ socket.on("compiler", ({ action, data }) => {
61
+ this.emit("clean", "pending", ["Working..."]);
62
+ if (typeof data.exerciseSlug === "undefined") {
63
+ this.log("internal-error", ["No exercise slug specified"]);
64
+ console_1.default.error("No exercise slug especified");
65
+ return;
66
+ }
67
+ if (this.actionCallBacks &&
68
+ typeof this.actionCallBacks[action] === "function") {
69
+ this.actionCallBacks[action](data);
70
+ }
71
+ else {
72
+ this.log("internal-error", ["Uknown action " + action]);
73
+ }
74
+ });
75
+ });
76
+ }
77
+ },
78
+ on: function (action, callBack) {
79
+ if (this.actionCallBacks) {
80
+ this.actionCallBacks[action] = callBack;
81
+ }
82
+ },
83
+ clean: function (_ = "pending", logs = []) {
84
+ this.emit("clean", "pending", logs);
85
+ },
86
+ ask: function (questions = []) {
87
+ return new Promise((resolve, _) => {
88
+ this.emit("ask", "pending", ["Waiting for input..."], questions);
89
+ console.log("Setting up listeners");
90
+ this.on("input", ({ inputs }) => {
91
+ // Workaround to fix issue because null inputs
92
+ console.log("inputs", inputs);
93
+ let isNull = false;
94
+ // eslint-disable-next-line
95
+ inputs.forEach((input) => {
96
+ if (input === null) {
97
+ isNull = true;
98
+ }
99
+ });
100
+ if (!isNull) {
101
+ resolve(inputs);
102
+ }
103
+ });
104
+ });
105
+ },
106
+ reload: function (files = null, exercises = null) {
107
+ this.emit("reload", (files === null || files === void 0 ? void 0 : files.join("")) || "" /* TODO: Check it out this */, exercises);
108
+ },
109
+ openWindow: function (url = "") {
110
+ fileQueue_1.default.dispatcher().enqueue(fileQueue_1.default.events.OPEN_WINDOW, url);
111
+ this.emit(fileQueue_1.default.events.OPEN_WINDOW, "ready", [`Opening ${url}`], [], [], url);
112
+ },
113
+ log: function (status, messages = [], report = [], data = null) {
114
+ this.emit("log", status, messages, [], report, data);
115
+ console_1.default.log(messages);
116
+ },
117
+ emit: function (action, status = "ready", logs = [], inputs = [], report = [], data = null) {
118
+ var _a, _b, _c, _d, _e, _f;
119
+ if (((_a = this.config) === null || _a === void 0 ? void 0 : _a.compiler) &&
120
+ ["webpack", "vanillajs", "vue", "react", "css", "html"].includes((_b = this.config) === null || _b === void 0 ? void 0 : _b.compiler)) {
121
+ if (["compiler-success", "compiler-warning"].includes(status))
122
+ this.addAllowed("preview");
123
+ if (["compiler-error"].includes(status) || action === "ready")
124
+ this.removeAllowed("preview");
125
+ }
126
+ if (((_c = this.config) === null || _c === void 0 ? void 0 : _c.grading) === "incremental") {
127
+ this.removeAllowed("reset");
128
+ }
129
+ // eslint-disable-next-line
130
+ (_e = (_d = this.config) === null || _d === void 0 ? void 0 : _d.disabledActions) === null || _e === void 0 ? void 0 : _e.forEach((a) => this.removeAllowed(a));
131
+ (_f = this.socket) === null || _f === void 0 ? void 0 : _f.emit("compiler", {
132
+ action,
133
+ status,
134
+ logs,
135
+ allowed: this.allowedActions,
136
+ inputs,
137
+ report,
138
+ data,
139
+ });
140
+ },
141
+ ready: function (message) {
142
+ this.log("ready", [message]);
143
+ },
144
+ success: function (type, stdout) {
145
+ const types = ["compiler", "testing"];
146
+ if (!types.includes(type))
147
+ this.fatal(`Invalid socket success type "${type}" on socket`);
148
+ else if (stdout === "")
149
+ this.log((type + "-success"), [
150
+ "No stdout to display on the console",
151
+ ]);
152
+ else
153
+ this.log((type + "-success"), [stdout]);
154
+ },
155
+ error: function (type, stdout) {
156
+ console.error("Socket error: " + type, stdout);
157
+ this.log(type, [stdout]);
158
+ if (this.isTestingEnvironment) {
159
+ this.onTestingFinished({
160
+ result: "failed",
161
+ });
162
+ }
163
+ },
164
+ complete: function () {
165
+ console.log("complete");
166
+ },
167
+ fatal: function (msg) {
168
+ this.log("internal-error", [msg]);
169
+ throw msg;
170
+ },
171
+ onTestingFinished: function (result) {
172
+ var _a;
173
+ if ((_a = this.config) === null || _a === void 0 ? void 0 : _a.testingFinishedCallback) {
174
+ this.config.testingFinishedCallback(result);
175
+ }
176
+ },
177
+ };
178
+ 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" | "generation";
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,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 {};
@@ -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,62 @@
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" | "generate";
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
+ autoPlay: boolean;
43
+ projectType?: string;
44
+ contact?: string;
45
+ disabledActions?: Array<TConfigAction>;
46
+ compiler: TCompiler;
47
+ publicPath: string;
48
+ publicUrl?: string;
49
+ bugsLink?: string;
50
+ videoSolutions?: boolean;
51
+ skills: Array<string>;
52
+ runHook: (...agrs: Array<any>) => void;
53
+ testingFinishedCallback: (arg: any | undefined) => void;
54
+ }
55
+ export interface IConfigObj {
56
+ session?: number;
57
+ currentExercise?: any;
58
+ config?: IConfig;
59
+ exercises?: Array<IExercise>;
60
+ confPath?: IConfigPath;
61
+ address?: string;
62
+ }
@@ -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,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
+ }
@@ -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,26 @@
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
+ getOpenAIToken: () => Promise<string | null>;
16
+ setOpenAIToken: (token: string) => Promise<boolean>;
17
+ setPayload: (value: IPayload) => Promise<boolean>;
18
+ getPayload: () => Promise<any>;
19
+ isActive: () => boolean;
20
+ get: (config?: IConfigObj) => Promise<any>;
21
+ login: () => Promise<void>;
22
+ loginWeb: (email: string, password: string) => Promise<void>;
23
+ sync: () => Promise<void>;
24
+ start: ({ token, payload }: IStartProps) => Promise<void>;
25
+ destroy: () => Promise<void>;
26
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,32 @@
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" | "generate";
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
+ complete: () => void;
22
+ ask: (questions: Array<string>) => void;
23
+ reload: (files: Array<string> | null, exercises: Array<string>) => void;
24
+ openWindow: (id: string) => void;
25
+ log: (status: TStatus, messages?: string | Array<string>, report?: Array<string>, data?: any) => void;
26
+ emit: (action: TAction, status: TStatus | string, logs: string | Array<string>, inputs?: Array<string>, report?: Array<string>, data?: any) => void;
27
+ ready: (message: string) => void;
28
+ error: (type: any, stdout: string) => void;
29
+ fatal: (msg: string) => void;
30
+ success: (type: any, stdout: string) => void;
31
+ onTestingFinished: (obj: any) => void;
32
+ }
@@ -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" | "completed";