@learnpack/learnpack 2.1.39 → 2.1.40
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +370 -35
- package/bin/run +17 -17
- package/bin/run.cmd +3 -3
- package/lib/commands/audit.d.ts +6 -6
- package/lib/commands/audit.js +342 -342
- package/lib/commands/clean.d.ts +8 -8
- package/lib/commands/clean.js +25 -25
- package/lib/commands/download.d.ts +13 -13
- package/lib/commands/download.js +55 -55
- package/lib/commands/init.d.ts +9 -9
- package/lib/commands/init.js +123 -123
- package/lib/commands/login.d.ts +14 -14
- package/lib/commands/login.js +37 -37
- package/lib/commands/logout.d.ts +14 -14
- package/lib/commands/logout.js +37 -37
- package/lib/commands/publish.d.ts +14 -14
- package/lib/commands/publish.js +82 -82
- package/lib/commands/start.d.ts +7 -7
- package/lib/commands/start.js +239 -208
- package/lib/commands/test.d.ts +6 -6
- package/lib/commands/test.js +62 -62
- package/lib/index.d.ts +1 -1
- package/lib/index.js +4 -4
- package/lib/managers/config/allowed_files.d.ts +5 -5
- package/lib/managers/config/allowed_files.js +30 -30
- package/lib/managers/config/defaults.d.ts +41 -41
- package/lib/managers/config/defaults.js +44 -44
- package/lib/managers/config/exercise.d.ts +36 -36
- package/lib/managers/config/exercise.js +236 -236
- package/lib/managers/config/index.d.ts +3 -3
- package/lib/managers/config/index.js +337 -337
- package/lib/managers/file.d.ts +14 -14
- package/lib/managers/file.js +153 -153
- package/lib/managers/gitpod.d.ts +3 -3
- package/lib/managers/gitpod.js +67 -67
- package/lib/managers/server/index.d.ts +6 -6
- package/lib/managers/server/index.js +58 -58
- package/lib/managers/server/routes.d.ts +4 -4
- package/lib/managers/server/routes.js +219 -219
- package/lib/managers/session.d.ts +3 -3
- package/lib/managers/session.js +125 -125
- package/lib/managers/socket.d.ts +3 -3
- package/lib/managers/socket.js +176 -176
- package/lib/managers/telemetry.d.ts +74 -74
- package/lib/managers/telemetry.js +206 -206
- package/lib/managers/test.js +84 -84
- package/lib/models/action.d.ts +2 -2
- package/lib/models/action.js +2 -2
- package/lib/models/audit.d.ts +15 -15
- package/lib/models/audit.js +2 -2
- package/lib/models/config-manager.d.ts +21 -21
- package/lib/models/config-manager.js +2 -2
- package/lib/models/config.d.ts +68 -67
- package/lib/models/config.js +2 -2
- package/lib/models/counter.d.ts +11 -11
- package/lib/models/counter.js +2 -2
- package/lib/models/errors.d.ts +15 -15
- package/lib/models/errors.js +2 -2
- package/lib/models/exercise-obj.d.ts +30 -30
- package/lib/models/exercise-obj.js +2 -2
- package/lib/models/file.d.ts +5 -5
- package/lib/models/file.js +2 -2
- package/lib/models/findings.d.ts +17 -17
- package/lib/models/findings.js +2 -2
- package/lib/models/flags.d.ts +10 -10
- package/lib/models/flags.js +2 -2
- package/lib/models/front-matter.d.ts +11 -11
- package/lib/models/front-matter.js +2 -2
- package/lib/models/gitpod-data.d.ts +16 -16
- package/lib/models/gitpod-data.js +2 -2
- package/lib/models/language.d.ts +4 -4
- package/lib/models/language.js +2 -2
- package/lib/models/package.d.ts +7 -7
- package/lib/models/package.js +2 -2
- package/lib/models/plugin-config.d.ts +16 -16
- package/lib/models/plugin-config.js +2 -2
- package/lib/models/session.d.ts +31 -31
- package/lib/models/session.js +2 -2
- package/lib/models/socket.d.ts +36 -32
- package/lib/models/socket.js +2 -2
- package/lib/models/status.d.ts +1 -1
- package/lib/models/status.js +2 -2
- package/lib/models/success-types.d.ts +1 -1
- package/lib/models/success-types.js +2 -2
- package/lib/plugin/command/compile.d.ts +6 -6
- package/lib/plugin/command/compile.js +18 -18
- package/lib/plugin/command/test.d.ts +6 -6
- package/lib/plugin/command/test.js +25 -25
- package/lib/plugin/index.d.ts +27 -27
- package/lib/plugin/index.js +7 -7
- package/lib/plugin/plugin.d.ts +8 -8
- package/lib/plugin/plugin.js +68 -68
- package/lib/plugin/utils.d.ts +16 -16
- package/lib/plugin/utils.js +58 -58
- package/lib/ui/download.d.ts +5 -5
- package/lib/ui/download.js +61 -61
- package/lib/utils/BaseCommand.d.ts +8 -8
- package/lib/utils/BaseCommand.js +41 -41
- package/lib/utils/SessionCommand.d.ts +10 -10
- package/lib/utils/SessionCommand.js +43 -43
- package/lib/utils/api.d.ts +14 -14
- package/lib/utils/api.js +255 -255
- package/lib/utils/audit.d.ts +16 -16
- package/lib/utils/audit.js +303 -303
- package/lib/utils/checkNotInstalled.d.ts +2 -0
- package/lib/utils/checkNotInstalled.js +36 -0
- package/lib/utils/console.d.ts +12 -12
- package/lib/utils/console.js +19 -19
- package/lib/utils/errors.d.ts +17 -17
- package/lib/utils/errors.js +100 -100
- package/lib/utils/exercisesQueue.d.ts +9 -9
- package/lib/utils/exercisesQueue.js +38 -38
- package/lib/utils/fileQueue.d.ts +40 -40
- package/lib/utils/fileQueue.js +168 -168
- package/lib/utils/misc.d.ts +1 -1
- package/lib/utils/misc.js +23 -23
- package/lib/utils/osOperations.d.ts +5 -5
- package/lib/utils/osOperations.js +72 -72
- package/lib/utils/validators.d.ts +5 -5
- package/lib/utils/validators.js +17 -17
- package/lib/utils/watcher.d.ts +2 -2
- package/lib/utils/watcher.js +25 -25
- package/oclif.manifest.json +1 -1
- package/package.json +139 -139
- package/src/commands/audit.ts +443 -443
- package/src/commands/clean.ts +29 -29
- package/src/commands/download.ts +61 -61
- package/src/commands/init.ts +170 -170
- package/src/commands/login.ts +42 -42
- package/src/commands/logout.ts +43 -43
- package/src/commands/publish.ts +107 -107
- package/src/commands/start.ts +53 -23
- package/src/commands/test.ts +85 -85
- package/src/index.ts +1 -1
- package/src/managers/config/allowed_files.ts +29 -29
- package/src/managers/config/defaults.ts +42 -42
- package/src/managers/config/exercise.ts +311 -311
- package/src/managers/config/index.ts +455 -455
- package/src/managers/file.ts +196 -196
- package/src/managers/gitpod.ts +84 -84
- package/src/managers/server/index.ts +78 -78
- package/src/managers/server/routes.ts +330 -330
- package/src/managers/session.ts +145 -145
- package/src/managers/socket.ts +250 -250
- package/src/managers/telemetry.ts +346 -346
- package/src/managers/test.ts +83 -83
- package/src/models/action.ts +10 -10
- package/src/models/audit.ts +16 -16
- package/src/models/config-manager.ts +23 -23
- package/src/models/config.ts +5 -3
- package/src/models/counter.ts +11 -11
- package/src/models/errors.ts +22 -22
- package/src/models/exercise-obj.ts +29 -29
- package/src/models/file.ts +5 -5
- package/src/models/findings.ts +18 -18
- package/src/models/flags.ts +10 -10
- package/src/models/front-matter.ts +11 -11
- package/src/models/gitpod-data.ts +19 -19
- package/src/models/language.ts +4 -4
- package/src/models/package.ts +7 -7
- package/src/models/plugin-config.ts +17 -17
- package/src/models/session.ts +34 -34
- package/src/models/socket.ts +5 -0
- package/src/models/status.ts +16 -16
- package/src/models/success-types.ts +1 -1
- package/src/plugin/command/compile.ts +17 -17
- package/src/plugin/command/test.ts +30 -30
- package/src/plugin/index.ts +6 -6
- package/src/plugin/plugin.ts +94 -94
- package/src/plugin/utils.ts +87 -87
- package/src/types/node-fetch.d.ts +1 -1
- package/src/ui/download.ts +71 -71
- package/src/utils/BaseCommand.ts +48 -48
- package/src/utils/SessionCommand.ts +43 -43
- package/src/utils/api.ts +303 -303
- package/src/utils/audit.ts +393 -393
- package/src/utils/checkNotInstalled.ts +46 -0
- package/src/utils/console.ts +24 -24
- package/src/utils/errors.ts +117 -117
- package/src/utils/exercisesQueue.ts +51 -51
- package/src/utils/fileQueue.ts +198 -198
- package/src/utils/misc.ts +23 -23
- package/src/utils/osOperations.ts +79 -79
- package/src/utils/templates/gitignore.txt +19 -19
- package/src/utils/templates/incremental/.learn/exercises/01-hello-world/README.es.md +24 -24
- package/src/utils/templates/incremental/.learn/exercises/01-hello-world/README.md +24 -24
- package/src/utils/templates/incremental/README.ejs +4 -4
- package/src/utils/templates/incremental/README.es.ejs +4 -4
- package/src/utils/templates/isolated/01-hello-world/README.es.md +26 -26
- package/src/utils/templates/isolated/01-hello-world/README.md +26 -26
- package/src/utils/templates/isolated/README.ejs +4 -4
- package/src/utils/templates/isolated/README.es.ejs +4 -4
- package/src/utils/templates/no-grading/README.ejs +4 -4
- package/src/utils/templates/no-grading/README.es.ejs +4 -4
- package/src/utils/validators.ts +18 -18
- package/src/utils/watcher.ts +27 -27
|
@@ -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,16 +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
|
-
}
|
|
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
|
+
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
package/lib/models/language.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export interface ILanguage {
|
|
2
|
-
title: string;
|
|
3
|
-
slug: string;
|
|
4
|
-
}
|
|
1
|
+
export interface ILanguage {
|
|
2
|
+
title: string;
|
|
3
|
+
slug: string;
|
|
4
|
+
}
|
package/lib/models/language.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
package/lib/models/package.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export interface IPackage {
|
|
2
|
-
title: string;
|
|
3
|
-
slug: string;
|
|
4
|
-
difficulty: string;
|
|
5
|
-
downloads: string;
|
|
6
|
-
skills: Array<any>;
|
|
7
|
-
}
|
|
1
|
+
export interface IPackage {
|
|
2
|
+
title: string;
|
|
3
|
+
slug: string;
|
|
4
|
+
difficulty: string;
|
|
5
|
+
downloads: string;
|
|
6
|
+
skills: Array<any>;
|
|
7
|
+
}
|
package/lib/models/package.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
@@ -1,16 +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 {};
|
|
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 {};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
package/lib/models/session.d.ts
CHANGED
|
@@ -1,31 +1,31 @@
|
|
|
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
|
-
declare type TLoginResponse = {
|
|
10
|
-
token: string;
|
|
11
|
-
user_id: string;
|
|
12
|
-
email: string;
|
|
13
|
-
};
|
|
14
|
-
export interface ISession {
|
|
15
|
-
sessionStarted: boolean;
|
|
16
|
-
token: string | null;
|
|
17
|
-
config: IConfig | null;
|
|
18
|
-
currentCohort: null;
|
|
19
|
-
initialize: () => Promise<boolean>;
|
|
20
|
-
setRigoToken: (token: string) => Promise<boolean>;
|
|
21
|
-
setPayload: (value: IPayload) => Promise<boolean>;
|
|
22
|
-
getPayload: () => Promise<any>;
|
|
23
|
-
isActive: () => boolean;
|
|
24
|
-
get: (config?: IConfigObj) => Promise<any>;
|
|
25
|
-
login: () => Promise<void>;
|
|
26
|
-
loginWeb: (email: string, password: string) => Promise<TLoginResponse>;
|
|
27
|
-
sync: () => Promise<void>;
|
|
28
|
-
start: ({ token, payload }: IStartProps) => Promise<void>;
|
|
29
|
-
destroy: () => Promise<void>;
|
|
30
|
-
}
|
|
31
|
-
export {};
|
|
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
|
+
declare type TLoginResponse = {
|
|
10
|
+
token: string;
|
|
11
|
+
user_id: string;
|
|
12
|
+
email: string;
|
|
13
|
+
};
|
|
14
|
+
export interface ISession {
|
|
15
|
+
sessionStarted: boolean;
|
|
16
|
+
token: string | null;
|
|
17
|
+
config: IConfig | null;
|
|
18
|
+
currentCohort: null;
|
|
19
|
+
initialize: () => Promise<boolean>;
|
|
20
|
+
setRigoToken: (token: string) => Promise<boolean>;
|
|
21
|
+
setPayload: (value: IPayload) => Promise<boolean>;
|
|
22
|
+
getPayload: () => Promise<any>;
|
|
23
|
+
isActive: () => boolean;
|
|
24
|
+
get: (config?: IConfigObj) => Promise<any>;
|
|
25
|
+
login: () => Promise<void>;
|
|
26
|
+
loginWeb: (email: string, password: string) => Promise<TLoginResponse>;
|
|
27
|
+
sync: () => Promise<void>;
|
|
28
|
+
start: ({ token, payload }: IStartProps) => Promise<void>;
|
|
29
|
+
destroy: () => Promise<void>;
|
|
30
|
+
}
|
|
31
|
+
export {};
|
package/lib/models/session.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
package/lib/models/socket.d.ts
CHANGED
|
@@ -1,32 +1,36 @@
|
|
|
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
|
-
}
|
|
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
|
+
}
|
|
33
|
+
export declare type TOpenWindowData = {
|
|
34
|
+
url: string;
|
|
35
|
+
exerciseSlug: string;
|
|
36
|
+
};
|
package/lib/models/socket.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
package/lib/models/status.d.ts
CHANGED
|
@@ -1 +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";
|
|
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";
|
package/lib/models/status.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare type TSuccessType = 'compiler-success' | 'testing-success';
|
|
1
|
+
export declare type TSuccessType = 'compiler-success' | 'testing-success';
|
|
@@ -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,6 +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;
|
|
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;
|
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const tslib_1 = require("tslib");
|
|
4
|
-
const CompilationError = (messages) => {
|
|
5
|
-
const _err = new Error(messages);
|
|
6
|
-
_err.status = 400;
|
|
7
|
-
_err.stdout = messages;
|
|
8
|
-
_err.type = "compiler-error";
|
|
9
|
-
return _err;
|
|
10
|
-
};
|
|
11
|
-
exports.default = {
|
|
12
|
-
CompilationError,
|
|
13
|
-
default: async (_a) => {
|
|
14
|
-
var { action } = _a, rest = tslib_1.__rest(_a, ["action"]);
|
|
15
|
-
const stdout = await action.run(rest);
|
|
16
|
-
return stdout;
|
|
17
|
-
},
|
|
18
|
-
};
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
const CompilationError = (messages) => {
|
|
5
|
+
const _err = new Error(messages);
|
|
6
|
+
_err.status = 400;
|
|
7
|
+
_err.stdout = messages;
|
|
8
|
+
_err.type = "compiler-error";
|
|
9
|
+
return _err;
|
|
10
|
+
};
|
|
11
|
+
exports.default = {
|
|
12
|
+
CompilationError,
|
|
13
|
+
default: async (_a) => {
|
|
14
|
+
var { action } = _a, rest = tslib_1.__rest(_a, ["action"]);
|
|
15
|
+
const stdout = await action.run(rest);
|
|
16
|
+
return stdout;
|
|
17
|
+
},
|
|
18
|
+
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { IError } from "../../models/errors";
|
|
2
|
-
declare const _default: {
|
|
3
|
-
TestingError: (messages: string) => IError;
|
|
4
|
-
default: (args: any) => Promise<any>;
|
|
5
|
-
};
|
|
6
|
-
export default _default;
|
|
1
|
+
import { IError } from "../../models/errors";
|
|
2
|
+
declare const _default: {
|
|
3
|
+
TestingError: (messages: string) => IError;
|
|
4
|
+
default: (args: any) => Promise<any>;
|
|
5
|
+
};
|
|
6
|
+
export default _default;
|
|
@@ -1,25 +1,25 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const fs = require("fs");
|
|
4
|
-
const TestingError = (messages) => {
|
|
5
|
-
const _err = new Error(messages);
|
|
6
|
-
_err.status = 400;
|
|
7
|
-
_err.stdout = messages;
|
|
8
|
-
_err.type = "testing-error";
|
|
9
|
-
return _err;
|
|
10
|
-
};
|
|
11
|
-
exports.default = {
|
|
12
|
-
TestingError,
|
|
13
|
-
default: async function (args) {
|
|
14
|
-
const { action, configuration, socket, exercise } = args;
|
|
15
|
-
if (!fs.existsSync(`${configuration.dirPath}/reports`)) {
|
|
16
|
-
// reports directory
|
|
17
|
-
fs.mkdirSync(`${configuration.dirPath}/reports`);
|
|
18
|
-
}
|
|
19
|
-
// compile
|
|
20
|
-
const stdout = await action.run(args);
|
|
21
|
-
// mark exercise as done
|
|
22
|
-
exercise.done = true;
|
|
23
|
-
return stdout;
|
|
24
|
-
},
|
|
25
|
-
};
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const fs = require("fs");
|
|
4
|
+
const TestingError = (messages) => {
|
|
5
|
+
const _err = new Error(messages);
|
|
6
|
+
_err.status = 400;
|
|
7
|
+
_err.stdout = messages;
|
|
8
|
+
_err.type = "testing-error";
|
|
9
|
+
return _err;
|
|
10
|
+
};
|
|
11
|
+
exports.default = {
|
|
12
|
+
TestingError,
|
|
13
|
+
default: async function (args) {
|
|
14
|
+
const { action, configuration, socket, exercise } = args;
|
|
15
|
+
if (!fs.existsSync(`${configuration.dirPath}/reports`)) {
|
|
16
|
+
// reports directory
|
|
17
|
+
fs.mkdirSync(`${configuration.dirPath}/reports`);
|
|
18
|
+
}
|
|
19
|
+
// compile
|
|
20
|
+
const stdout = await action.run(args);
|
|
21
|
+
// mark exercise as done
|
|
22
|
+
exercise.done = true;
|
|
23
|
+
return stdout;
|
|
24
|
+
},
|
|
25
|
+
};
|
package/lib/plugin/index.d.ts
CHANGED
|
@@ -1,27 +1,27 @@
|
|
|
1
|
-
declare const _default: {
|
|
2
|
-
CompilationError: {
|
|
3
|
-
CompilationError: (messages: string) => import("../models/errors").IError;
|
|
4
|
-
default: ({ action, ...rest }: any) => Promise<any>;
|
|
5
|
-
};
|
|
6
|
-
TestingError: {
|
|
7
|
-
TestingError: (messages: string) => import("../models/errors").IError;
|
|
8
|
-
default: (args: any) => Promise<any>;
|
|
9
|
-
};
|
|
10
|
-
Utils: {
|
|
11
|
-
getMatches: (reg: RegExp, content: string) => (string | null)[];
|
|
12
|
-
cleanStdout: (buffer: string, inputs: string[]) => string;
|
|
13
|
-
indent: (string: string, options: any, count?: number) => string;
|
|
14
|
-
Console: {
|
|
15
|
-
_debug: boolean;
|
|
16
|
-
startDebug: () => void;
|
|
17
|
-
log: (msg: string, ...args: any[]) => void;
|
|
18
|
-
error: (msg: string, ...args: any[]) => void;
|
|
19
|
-
success: (msg: string, ...args: any[]) => void;
|
|
20
|
-
info: (msg: string, ...args: any[]) => void;
|
|
21
|
-
help: (msg: string) => void;
|
|
22
|
-
debug(...args: any[]): void;
|
|
23
|
-
};
|
|
24
|
-
};
|
|
25
|
-
plugin: (pluginConfig: import("../models/plugin-config").IPluginConfig) => (args: any) => Promise<any>;
|
|
26
|
-
};
|
|
27
|
-
export default _default;
|
|
1
|
+
declare const _default: {
|
|
2
|
+
CompilationError: {
|
|
3
|
+
CompilationError: (messages: string) => import("../models/errors").IError;
|
|
4
|
+
default: ({ action, ...rest }: any) => Promise<any>;
|
|
5
|
+
};
|
|
6
|
+
TestingError: {
|
|
7
|
+
TestingError: (messages: string) => import("../models/errors").IError;
|
|
8
|
+
default: (args: any) => Promise<any>;
|
|
9
|
+
};
|
|
10
|
+
Utils: {
|
|
11
|
+
getMatches: (reg: RegExp, content: string) => (string | null)[];
|
|
12
|
+
cleanStdout: (buffer: string, inputs: string[]) => string;
|
|
13
|
+
indent: (string: string, options: any, count?: number) => string;
|
|
14
|
+
Console: {
|
|
15
|
+
_debug: boolean;
|
|
16
|
+
startDebug: () => void;
|
|
17
|
+
log: (msg: string, ...args: any[]) => void;
|
|
18
|
+
error: (msg: string, ...args: any[]) => void;
|
|
19
|
+
success: (msg: string, ...args: any[]) => void;
|
|
20
|
+
info: (msg: string, ...args: any[]) => void;
|
|
21
|
+
help: (msg: string) => void;
|
|
22
|
+
debug(...args: any[]): void;
|
|
23
|
+
};
|
|
24
|
+
};
|
|
25
|
+
plugin: (pluginConfig: import("../models/plugin-config").IPluginConfig) => (args: any) => Promise<any>;
|
|
26
|
+
};
|
|
27
|
+
export default _default;
|
package/lib/plugin/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const compile_1 = require("./command/compile");
|
|
4
|
-
const test_1 = require("./command/test");
|
|
5
|
-
const utils_1 = require("./utils");
|
|
6
|
-
const plugin_1 = require("./plugin");
|
|
7
|
-
exports.default = { CompilationError: compile_1.default, TestingError: test_1.default, Utils: utils_1.default, plugin: plugin_1.default };
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const compile_1 = require("./command/compile");
|
|
4
|
+
const test_1 = require("./command/test");
|
|
5
|
+
const utils_1 = require("./utils");
|
|
6
|
+
const plugin_1 = require("./plugin");
|
|
7
|
+
exports.default = { CompilationError: compile_1.default, TestingError: test_1.default, Utils: utils_1.default, plugin: plugin_1.default };
|
package/lib/plugin/plugin.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { IPluginConfig } from "../models/plugin-config";
|
|
2
|
-
declare const _default: (pluginConfig: IPluginConfig) => (args: any) => Promise<any>;
|
|
3
|
-
/**
|
|
4
|
-
* Main Plugin Runner, it defines the behavior of a learnpack plugin
|
|
5
|
-
* dividing it in "actions" like: Compile, test, etc.
|
|
6
|
-
* @param {object} pluginConfig Configuration object that must defined language and each possible action.
|
|
7
|
-
*/
|
|
8
|
-
export default _default;
|
|
1
|
+
import { IPluginConfig } from "../models/plugin-config";
|
|
2
|
+
declare const _default: (pluginConfig: IPluginConfig) => (args: any) => Promise<any>;
|
|
3
|
+
/**
|
|
4
|
+
* Main Plugin Runner, it defines the behavior of a learnpack plugin
|
|
5
|
+
* dividing it in "actions" like: Compile, test, etc.
|
|
6
|
+
* @param {object} pluginConfig Configuration object that must defined language and each possible action.
|
|
7
|
+
*/
|
|
8
|
+
export default _default;
|
package/lib/plugin/plugin.js
CHANGED
|
@@ -1,68 +1,68 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const shell = require("shelljs");
|
|
4
|
-
/**
|
|
5
|
-
* Main Plugin Runner, it defines the behavior of a learnpack plugin
|
|
6
|
-
* dividing it in "actions" like: Compile, test, etc.
|
|
7
|
-
* @param {object} pluginConfig Configuration object that must defined language and each possible action.
|
|
8
|
-
*/
|
|
9
|
-
exports.default = (pluginConfig) => {
|
|
10
|
-
return async (args) => {
|
|
11
|
-
const { action, exercise, socket, configuration } = args;
|
|
12
|
-
if (pluginConfig.language === undefined)
|
|
13
|
-
throw new Error(`Missing language on the plugin configuration object`);
|
|
14
|
-
if (typeof action !== "string") {
|
|
15
|
-
throw new TypeError("Missing action property on hook details");
|
|
16
|
-
}
|
|
17
|
-
if (!exercise || exercise === undefined) {
|
|
18
|
-
throw new Error("Missing exercise information");
|
|
19
|
-
}
|
|
20
|
-
// if the action does not exist I don't do anything
|
|
21
|
-
if (pluginConfig[action] === undefined) {
|
|
22
|
-
console.log(`Ignoring ${action}`);
|
|
23
|
-
return () => null;
|
|
24
|
-
}
|
|
25
|
-
// ignore if the plugin language its not the same as the exercise language
|
|
26
|
-
if (exercise.language !== pluginConfig.language) {
|
|
27
|
-
return () => null;
|
|
28
|
-
}
|
|
29
|
-
if (!exercise.files || exercise.files.length === 0) {
|
|
30
|
-
throw new Error(`No files to process`);
|
|
31
|
-
}
|
|
32
|
-
try {
|
|
33
|
-
const _action = pluginConfig[action];
|
|
34
|
-
if (_action === null || typeof _action !== "object")
|
|
35
|
-
throw new Error(`The ${pluginConfig.language} ${action} module must export an object configuration`);
|
|
36
|
-
if (_action.validate === undefined)
|
|
37
|
-
throw new Error(`Missing validate method for ${pluginConfig.language} ${action}`);
|
|
38
|
-
if (_action.run === undefined)
|
|
39
|
-
throw new Error(`Missing run method for ${pluginConfig.language} ${action}`);
|
|
40
|
-
if (_action.dependencies !== undefined) {
|
|
41
|
-
if (!Array.isArray(_action.dependencies))
|
|
42
|
-
throw new Error(`${action}.dependencies must be an array of package names`);
|
|
43
|
-
for (const packageName of _action.dependencies) {
|
|
44
|
-
if (!shell.which(packageName)) {
|
|
45
|
-
throw new Error(`🚫 You need to have ${packageName} installed to run test the exercises`);
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
const valid = await _action.validate({ exercise, configuration });
|
|
50
|
-
if (valid) {
|
|
51
|
-
// look for the command standard implementation and execute it
|
|
52
|
-
const execute = require("./command/" + action + ".js").default;
|
|
53
|
-
// no matter the command, the response must always be a stdout
|
|
54
|
-
const stdout = await execute(Object.assign(Object.assign({}, args), { action: _action, configuration }));
|
|
55
|
-
// Map the action names to socket messaging standards
|
|
56
|
-
const actionToSuccessMapper = { compile: "compiler", test: "testing" };
|
|
57
|
-
socket.success(actionToSuccessMapper[action], stdout);
|
|
58
|
-
return stdout;
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
catch (error) {
|
|
62
|
-
if (error.type === undefined)
|
|
63
|
-
socket.fatal(error);
|
|
64
|
-
else
|
|
65
|
-
socket.error(error.type, error.stdout);
|
|
66
|
-
}
|
|
67
|
-
};
|
|
68
|
-
};
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const shell = require("shelljs");
|
|
4
|
+
/**
|
|
5
|
+
* Main Plugin Runner, it defines the behavior of a learnpack plugin
|
|
6
|
+
* dividing it in "actions" like: Compile, test, etc.
|
|
7
|
+
* @param {object} pluginConfig Configuration object that must defined language and each possible action.
|
|
8
|
+
*/
|
|
9
|
+
exports.default = (pluginConfig) => {
|
|
10
|
+
return async (args) => {
|
|
11
|
+
const { action, exercise, socket, configuration } = args;
|
|
12
|
+
if (pluginConfig.language === undefined)
|
|
13
|
+
throw new Error(`Missing language on the plugin configuration object`);
|
|
14
|
+
if (typeof action !== "string") {
|
|
15
|
+
throw new TypeError("Missing action property on hook details");
|
|
16
|
+
}
|
|
17
|
+
if (!exercise || exercise === undefined) {
|
|
18
|
+
throw new Error("Missing exercise information");
|
|
19
|
+
}
|
|
20
|
+
// if the action does not exist I don't do anything
|
|
21
|
+
if (pluginConfig[action] === undefined) {
|
|
22
|
+
console.log(`Ignoring ${action}`);
|
|
23
|
+
return () => null;
|
|
24
|
+
}
|
|
25
|
+
// ignore if the plugin language its not the same as the exercise language
|
|
26
|
+
if (exercise.language !== pluginConfig.language) {
|
|
27
|
+
return () => null;
|
|
28
|
+
}
|
|
29
|
+
if (!exercise.files || exercise.files.length === 0) {
|
|
30
|
+
throw new Error(`No files to process`);
|
|
31
|
+
}
|
|
32
|
+
try {
|
|
33
|
+
const _action = pluginConfig[action];
|
|
34
|
+
if (_action === null || typeof _action !== "object")
|
|
35
|
+
throw new Error(`The ${pluginConfig.language} ${action} module must export an object configuration`);
|
|
36
|
+
if (_action.validate === undefined)
|
|
37
|
+
throw new Error(`Missing validate method for ${pluginConfig.language} ${action}`);
|
|
38
|
+
if (_action.run === undefined)
|
|
39
|
+
throw new Error(`Missing run method for ${pluginConfig.language} ${action}`);
|
|
40
|
+
if (_action.dependencies !== undefined) {
|
|
41
|
+
if (!Array.isArray(_action.dependencies))
|
|
42
|
+
throw new Error(`${action}.dependencies must be an array of package names`);
|
|
43
|
+
for (const packageName of _action.dependencies) {
|
|
44
|
+
if (!shell.which(packageName)) {
|
|
45
|
+
throw new Error(`🚫 You need to have ${packageName} installed to run test the exercises`);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
const valid = await _action.validate({ exercise, configuration });
|
|
50
|
+
if (valid) {
|
|
51
|
+
// look for the command standard implementation and execute it
|
|
52
|
+
const execute = require("./command/" + action + ".js").default;
|
|
53
|
+
// no matter the command, the response must always be a stdout
|
|
54
|
+
const stdout = await execute(Object.assign(Object.assign({}, args), { action: _action, configuration }));
|
|
55
|
+
// Map the action names to socket messaging standards
|
|
56
|
+
const actionToSuccessMapper = { compile: "compiler", test: "testing" };
|
|
57
|
+
socket.success(actionToSuccessMapper[action], stdout);
|
|
58
|
+
return stdout;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
catch (error) {
|
|
62
|
+
if (error.type === undefined)
|
|
63
|
+
socket.fatal(error);
|
|
64
|
+
else
|
|
65
|
+
socket.error(error.type, error.stdout);
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
};
|