@learnpack/learnpack 4.0.9 → 4.0.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (128) hide show
  1. package/README.md +25 -10
  2. package/lib/commands/audit.d.ts +6 -6
  3. package/lib/commands/audit.js +327 -327
  4. package/lib/commands/build.d.ts +11 -0
  5. package/lib/commands/build.js +160 -0
  6. package/lib/commands/clean.d.ts +8 -8
  7. package/lib/commands/clean.js +22 -22
  8. package/lib/commands/download.d.ts +13 -13
  9. package/lib/commands/download.js +52 -52
  10. package/lib/commands/init.d.ts +9 -9
  11. package/lib/commands/init.js +127 -127
  12. package/lib/commands/login.d.ts +14 -14
  13. package/lib/commands/login.js +34 -34
  14. package/lib/commands/logout.d.ts +14 -14
  15. package/lib/commands/logout.js +34 -34
  16. package/lib/commands/publish.d.ts +14 -14
  17. package/lib/commands/publish.js +79 -79
  18. package/lib/commands/start.d.ts +7 -7
  19. package/lib/commands/start.js +252 -250
  20. package/lib/commands/test.d.ts +6 -6
  21. package/lib/commands/test.js +62 -62
  22. package/lib/index.d.ts +1 -1
  23. package/lib/index.js +4 -4
  24. package/lib/managers/config/allowed_files.d.ts +5 -5
  25. package/lib/managers/config/allowed_files.js +30 -30
  26. package/lib/managers/config/defaults.d.ts +47 -48
  27. package/lib/managers/config/defaults.js +51 -51
  28. package/lib/managers/config/exercise.d.ts +36 -36
  29. package/lib/managers/config/exercise.js +243 -236
  30. package/lib/managers/config/index.d.ts +3 -3
  31. package/lib/managers/config/index.js +464 -459
  32. package/lib/managers/file.d.ts +14 -14
  33. package/lib/managers/file.js +190 -184
  34. package/lib/managers/gitpod.d.ts +3 -3
  35. package/lib/managers/gitpod.js +67 -67
  36. package/lib/managers/server/index.d.ts +5 -6
  37. package/lib/managers/server/index.js +58 -58
  38. package/lib/managers/server/routes.d.ts +4 -4
  39. package/lib/managers/server/routes.js +228 -220
  40. package/lib/managers/session.d.ts +3 -3
  41. package/lib/managers/session.js +125 -125
  42. package/lib/managers/socket.d.ts +3 -3
  43. package/lib/managers/socket.js +188 -186
  44. package/lib/managers/telemetry.d.ts +74 -74
  45. package/lib/managers/telemetry.js +215 -214
  46. package/lib/managers/test.js +84 -84
  47. package/lib/models/action.d.ts +2 -2
  48. package/lib/models/action.js +2 -2
  49. package/lib/models/audit.d.ts +15 -15
  50. package/lib/models/audit.js +2 -2
  51. package/lib/models/config-manager.d.ts +21 -21
  52. package/lib/models/config-manager.js +2 -2
  53. package/lib/models/config.d.ts +86 -86
  54. package/lib/models/config.js +2 -2
  55. package/lib/models/counter.d.ts +11 -11
  56. package/lib/models/counter.js +2 -2
  57. package/lib/models/errors.d.ts +15 -15
  58. package/lib/models/errors.js +2 -2
  59. package/lib/models/exercise-obj.d.ts +29 -30
  60. package/lib/models/exercise-obj.js +2 -2
  61. package/lib/models/file.d.ts +5 -5
  62. package/lib/models/file.js +2 -2
  63. package/lib/models/findings.d.ts +17 -17
  64. package/lib/models/findings.js +2 -2
  65. package/lib/models/flags.d.ts +10 -10
  66. package/lib/models/flags.js +2 -2
  67. package/lib/models/front-matter.d.ts +11 -11
  68. package/lib/models/front-matter.js +2 -2
  69. package/lib/models/gitpod-data.d.ts +16 -16
  70. package/lib/models/gitpod-data.js +2 -2
  71. package/lib/models/language.d.ts +4 -4
  72. package/lib/models/language.js +2 -2
  73. package/lib/models/package.d.ts +7 -7
  74. package/lib/models/package.js +2 -2
  75. package/lib/models/plugin-config.d.ts +16 -16
  76. package/lib/models/plugin-config.js +2 -2
  77. package/lib/models/session.d.ts +31 -31
  78. package/lib/models/session.js +2 -2
  79. package/lib/models/socket.d.ts +37 -37
  80. package/lib/models/socket.js +2 -2
  81. package/lib/models/status.d.ts +1 -1
  82. package/lib/models/status.js +2 -2
  83. package/lib/models/success-types.d.ts +1 -1
  84. package/lib/models/success-types.js +2 -2
  85. package/lib/plugin/command/compile.d.ts +6 -6
  86. package/lib/plugin/command/compile.js +18 -18
  87. package/lib/plugin/command/test.d.ts +6 -6
  88. package/lib/plugin/command/test.js +25 -25
  89. package/lib/plugin/index.d.ts +27 -27
  90. package/lib/plugin/index.js +7 -7
  91. package/lib/plugin/plugin.d.ts +8 -8
  92. package/lib/plugin/plugin.js +68 -68
  93. package/lib/plugin/utils.d.ts +16 -16
  94. package/lib/plugin/utils.js +58 -58
  95. package/lib/ui/download.d.ts +5 -5
  96. package/lib/ui/download.js +62 -61
  97. package/lib/utils/BaseCommand.d.ts +8 -8
  98. package/lib/utils/BaseCommand.js +41 -41
  99. package/lib/utils/SessionCommand.d.ts +10 -10
  100. package/lib/utils/SessionCommand.js +43 -43
  101. package/lib/utils/api.d.ts +14 -14
  102. package/lib/utils/api.js +255 -255
  103. package/lib/utils/audit.d.ts +16 -16
  104. package/lib/utils/audit.js +303 -303
  105. package/lib/utils/checkNotInstalled.d.ts +8 -8
  106. package/lib/utils/checkNotInstalled.js +185 -181
  107. package/lib/utils/console.d.ts +12 -12
  108. package/lib/utils/console.js +19 -19
  109. package/lib/utils/errors.d.ts +17 -17
  110. package/lib/utils/errors.js +107 -100
  111. package/lib/utils/exercisesQueue.d.ts +9 -9
  112. package/lib/utils/exercisesQueue.js +38 -38
  113. package/lib/utils/fileQueue.d.ts +43 -43
  114. package/lib/utils/fileQueue.js +169 -169
  115. package/lib/utils/misc.d.ts +1 -1
  116. package/lib/utils/misc.js +24 -23
  117. package/lib/utils/osOperations.d.ts +5 -5
  118. package/lib/utils/osOperations.js +72 -72
  119. package/lib/utils/validators.d.ts +5 -5
  120. package/lib/utils/validators.js +16 -17
  121. package/lib/utils/watcher.d.ts +2 -2
  122. package/lib/utils/watcher.js +25 -25
  123. package/oclif.manifest.json +1 -1
  124. package/package.json +6 -4
  125. package/src/commands/build.ts +181 -0
  126. package/src/managers/config/index.ts +5 -0
  127. package/src/managers/server/routes.ts +11 -1
  128. package/src/managers/session.ts +1 -1
@@ -1,62 +1,62 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const console_1 = require("../utils/console");
4
- const SessionCommand_1 = require("../utils/SessionCommand");
5
- const socket_1 = require("../managers/socket");
6
- const server_1 = require("../managers/server");
7
- const exercisesQueue_1 = require("../utils/exercisesQueue");
8
- class TestCommand extends SessionCommand_1.default {
9
- async init() {
10
- const { flags } = this.parse(TestCommand);
11
- await this.initSession(flags);
12
- }
13
- async run() {
14
- var _a, _b, _c;
15
- const { args: { exerciseSlug }, } = this.parse(TestCommand);
16
- // Build exercises index
17
- (_a = this.configManager) === null || _a === void 0 ? void 0 : _a.buildIndex();
18
- let exercises = [];
19
- // test all exercises
20
- !exerciseSlug ?
21
- (exercises = (_b = this.configManager) === null || _b === void 0 ? void 0 : _b.getAllExercises()) :
22
- (exercises = [this.configManager.getExercise(exerciseSlug)]);
23
- const exercisesQueue = new exercisesQueue_1.default(exercises);
24
- const configObject = (_c = this.configManager) === null || _c === void 0 ? void 0 : _c.get();
25
- let hasFailed = false;
26
- let failedTestsCount = 0;
27
- let successTestsCount = 0;
28
- const testsToRunCount = exercisesQueue.size();
29
- configObject.config.testingFinishedCallback = ({ result }) => {
30
- if (result === "failed") {
31
- hasFailed = true;
32
- failedTestsCount++;
33
- }
34
- else {
35
- successTestsCount++;
36
- }
37
- if (exercisesQueue.isEmpty()) {
38
- console_1.default.info(`${testsToRunCount} test${testsToRunCount > 1 ? "s" : ""} runned`);
39
- console_1.default.success(`${successTestsCount} test${successTestsCount > 1 ? "s" : ""} passed`);
40
- console_1.default.error(`${failedTestsCount} test${failedTestsCount > 1 ? "s" : ""} failed`);
41
- process.exit(hasFailed ? 1 : 0);
42
- }
43
- else {
44
- exercisesQueue.pop().test(this.config, config, socket_1.default);
45
- }
46
- };
47
- const config = configObject === null || configObject === void 0 ? void 0 : configObject.config;
48
- const server = await server_1.default(configObject, this.configManager, true);
49
- socket_1.default.start(config, server, true);
50
- exercisesQueue.pop().test(this.config, config, socket_1.default);
51
- }
52
- }
53
- TestCommand.description = `Test exercises`;
54
- TestCommand.args = [
55
- {
56
- name: "exerciseSlug",
57
- required: false,
58
- description: "The name of the exercise to test",
59
- hidden: false,
60
- },
61
- ];
62
- exports.default = TestCommand;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const console_1 = require("../utils/console");
4
+ const SessionCommand_1 = require("../utils/SessionCommand");
5
+ const socket_1 = require("../managers/socket");
6
+ const server_1 = require("../managers/server");
7
+ const exercisesQueue_1 = require("../utils/exercisesQueue");
8
+ class TestCommand extends SessionCommand_1.default {
9
+ async init() {
10
+ const { flags } = this.parse(TestCommand);
11
+ await this.initSession(flags);
12
+ }
13
+ async run() {
14
+ var _a, _b, _c;
15
+ const { args: { exerciseSlug }, } = this.parse(TestCommand);
16
+ // Build exercises index
17
+ (_a = this.configManager) === null || _a === void 0 ? void 0 : _a.buildIndex();
18
+ let exercises = [];
19
+ // test all exercises
20
+ !exerciseSlug ?
21
+ (exercises = (_b = this.configManager) === null || _b === void 0 ? void 0 : _b.getAllExercises()) :
22
+ (exercises = [this.configManager.getExercise(exerciseSlug)]);
23
+ const exercisesQueue = new exercisesQueue_1.default(exercises);
24
+ const configObject = (_c = this.configManager) === null || _c === void 0 ? void 0 : _c.get();
25
+ let hasFailed = false;
26
+ let failedTestsCount = 0;
27
+ let successTestsCount = 0;
28
+ const testsToRunCount = exercisesQueue.size();
29
+ configObject.config.testingFinishedCallback = ({ result }) => {
30
+ if (result === "failed") {
31
+ hasFailed = true;
32
+ failedTestsCount++;
33
+ }
34
+ else {
35
+ successTestsCount++;
36
+ }
37
+ if (exercisesQueue.isEmpty()) {
38
+ console_1.default.info(`${testsToRunCount} test${testsToRunCount > 1 ? "s" : ""} runned`);
39
+ console_1.default.success(`${successTestsCount} test${successTestsCount > 1 ? "s" : ""} passed`);
40
+ console_1.default.error(`${failedTestsCount} test${failedTestsCount > 1 ? "s" : ""} failed`);
41
+ process.exit(hasFailed ? 1 : 0);
42
+ }
43
+ else {
44
+ exercisesQueue.pop().test(this.config, config, socket_1.default);
45
+ }
46
+ };
47
+ const config = configObject === null || configObject === void 0 ? void 0 : configObject.config;
48
+ const server = await (0, server_1.default)(configObject, this.configManager, true);
49
+ socket_1.default.start(config, server, true);
50
+ exercisesQueue.pop().test(this.config, config, socket_1.default);
51
+ }
52
+ }
53
+ TestCommand.description = `Test exercises`;
54
+ TestCommand.args = [
55
+ {
56
+ name: "exerciseSlug",
57
+ required: false,
58
+ description: "The name of the exercise to test",
59
+ hidden: false,
60
+ },
61
+ ];
62
+ exports.default = TestCommand;
package/lib/index.d.ts CHANGED
@@ -1 +1 @@
1
- export * from '@oclif/command';
1
+ export * from '@oclif/command';
package/lib/index.js CHANGED
@@ -1,4 +1,4 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const tslib_1 = require("tslib");
4
- tslib_1.__exportStar(require("@oclif/command"), exports);
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("@oclif/command"), exports);
@@ -1,5 +1,5 @@
1
- declare const extensions: {
2
- extensions: string[];
3
- names: string[];
4
- };
5
- export default extensions;
1
+ declare const extensions: {
2
+ extensions: string[];
3
+ names: string[];
4
+ };
5
+ export default extensions;
@@ -1,30 +1,30 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const extensions = {
4
- extensions: [
5
- "py",
6
- "java",
7
- "py",
8
- "ruby",
9
- "html",
10
- "css",
11
- "htm",
12
- "php",
13
- "js",
14
- "jsx",
15
- "ts",
16
- "sh",
17
- "bash",
18
- "json",
19
- "yml",
20
- "yaml",
21
- "csv",
22
- "xml",
23
- "txt",
24
- "text",
25
- "markdown",
26
- "readme",
27
- ],
28
- names: ["package.json", "package-lock.json"],
29
- };
30
- exports.default = extensions;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const extensions = {
4
+ extensions: [
5
+ "py",
6
+ "java",
7
+ "py",
8
+ "ruby",
9
+ "html",
10
+ "css",
11
+ "htm",
12
+ "php", // images
13
+ "js",
14
+ "jsx",
15
+ "ts", // images
16
+ "sh",
17
+ "bash", // images
18
+ "json",
19
+ "yml",
20
+ "yaml",
21
+ "csv",
22
+ "xml", // file storage extensions
23
+ "txt",
24
+ "text",
25
+ "markdown",
26
+ "readme", // compressed files
27
+ ],
28
+ names: ["package.json", "package-lock.json"],
29
+ };
30
+ exports.default = extensions;
@@ -1,48 +1,47 @@
1
- /// <reference types="node" />
2
- declare const _default: {
3
- config: {
4
- port: number;
5
- os: NodeJS.Platform;
6
- editor: {
7
- mode: null;
8
- agent: null;
9
- version: null;
10
- };
11
- dirPath: string;
12
- configPath: string;
13
- outputPath: string;
14
- publicPath: string;
15
- publicUrl: null;
16
- contact: string;
17
- language: string;
18
- autoPlay: boolean;
19
- projectType: string;
20
- grading: string;
21
- exercisesPath: string;
22
- webpackTemplate: null;
23
- disableGrading: boolean;
24
- disabledActions: never[];
25
- actions: never[];
26
- entries: {
27
- html: string;
28
- vanillajs: string;
29
- react: string;
30
- node: string;
31
- python3: string;
32
- java: string;
33
- };
34
- suggestions: {
35
- agent: null;
36
- };
37
- warnings: {
38
- agent: null;
39
- };
40
- };
41
- address: string;
42
- currentExercise: null;
43
- exercises: never[];
44
- bugsLink: null;
45
- videoSolutions: boolean;
46
- localhostOnly: boolean;
47
- };
48
- export default _default;
1
+ declare const _default: {
2
+ config: {
3
+ port: number;
4
+ os: NodeJS.Platform;
5
+ editor: {
6
+ mode: null;
7
+ agent: null;
8
+ version: null;
9
+ };
10
+ dirPath: string;
11
+ configPath: string;
12
+ outputPath: string;
13
+ publicPath: string;
14
+ publicUrl: null;
15
+ contact: string;
16
+ language: string;
17
+ autoPlay: boolean;
18
+ projectType: string;
19
+ grading: string;
20
+ exercisesPath: string;
21
+ webpackTemplate: null;
22
+ disableGrading: boolean;
23
+ disabledActions: never[];
24
+ actions: never[];
25
+ entries: {
26
+ html: string;
27
+ vanillajs: string;
28
+ react: string;
29
+ node: string;
30
+ python3: string;
31
+ java: string;
32
+ };
33
+ suggestions: {
34
+ agent: null;
35
+ };
36
+ warnings: {
37
+ agent: null;
38
+ };
39
+ };
40
+ address: string;
41
+ currentExercise: null;
42
+ exercises: never[];
43
+ bugsLink: null;
44
+ videoSolutions: boolean;
45
+ localhostOnly: boolean;
46
+ };
47
+ export default _default;
@@ -1,51 +1,51 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const os = require("os");
4
- exports.default = {
5
- config: {
6
- port: 3000,
7
- os: (function () {
8
- return os.platform();
9
- })(),
10
- editor: {
11
- mode: null,
12
- agent: null,
13
- version: null,
14
- },
15
- dirPath: "./.learn",
16
- configPath: "./learn.json",
17
- outputPath: "./.learn/dist",
18
- publicPath: "/preview",
19
- publicUrl: null,
20
- contact: "https://github.com/learnpack/learnpack/issues/new",
21
- language: "auto",
22
- autoPlay: true,
23
- projectType: "tutorial",
24
- grading: "isolated",
25
- exercisesPath: "./",
26
- webpackTemplate: null,
27
- disableGrading: false,
28
- disabledActions: [],
29
- actions: [],
30
- entries: {
31
- html: "index.html",
32
- vanillajs: "index.js",
33
- react: "app.jsx",
34
- node: "app.js",
35
- python3: "app.py",
36
- java: "app.java",
37
- },
38
- suggestions: {
39
- agent: null,
40
- },
41
- warnings: {
42
- agent: null,
43
- },
44
- },
45
- address: "http://localhost",
46
- currentExercise: null,
47
- exercises: [],
48
- bugsLink: null,
49
- videoSolutions: false,
50
- localhostOnly: false,
51
- };
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const os = require("os");
4
+ exports.default = {
5
+ config: {
6
+ port: 3000,
7
+ os: (function () {
8
+ return os.platform();
9
+ })(),
10
+ editor: {
11
+ mode: null, // [extension, preview]
12
+ agent: null, // ["vscode", "os"] ("os" is the agent when running outside a coding editor
13
+ version: null, // By default downloads the latest version
14
+ },
15
+ dirPath: "./.learn",
16
+ configPath: "./learn.json",
17
+ outputPath: "./.learn/dist",
18
+ publicPath: "/preview",
19
+ publicUrl: null,
20
+ contact: "https://github.com/learnpack/learnpack/issues/new",
21
+ language: "auto",
22
+ autoPlay: true,
23
+ projectType: "tutorial", // [tutorial, project]
24
+ grading: "isolated", // [isolated, incremental]
25
+ exercisesPath: "./", // path to the folder that contains the exercises
26
+ webpackTemplate: null, // if you want webpack to use an HTML template
27
+ disableGrading: false,
28
+ disabledActions: [], // Possible: 'build', 'test' or 'reset'
29
+ actions: [], // ⚠️ deprecated, leave empty )
30
+ entries: {
31
+ html: "index.html",
32
+ vanillajs: "index.js",
33
+ react: "app.jsx",
34
+ node: "app.js",
35
+ python3: "app.py",
36
+ java: "app.java",
37
+ },
38
+ suggestions: {
39
+ agent: null,
40
+ },
41
+ warnings: {
42
+ agent: null,
43
+ },
44
+ },
45
+ address: "http://localhost",
46
+ currentExercise: null,
47
+ exercises: [],
48
+ bugsLink: null,
49
+ videoSolutions: false,
50
+ localhostOnly: false, // if true, the exercise should not run on gitpod or codespaces but show an error message encouraging the user to run locally
51
+ };
@@ -1,36 +1,36 @@
1
- import { IConfigObj } from "../../models/config";
2
- import { IFile } from "../../models/file";
3
- import { IExercise } from "../../models/exercise-obj";
4
- export declare const exercise: (path: string, position: number, configObject: IConfigObj) => IExercise;
5
- export declare const validateExerciseDirectoryName: (str: string) => boolean;
6
- export declare const isCodable: (str: string) => boolean;
7
- export declare const shouldBeVisible: (file: IFile) => boolean;
8
- export declare const isDirectory: (source: string) => boolean;
9
- export declare const detect: (configObject: IConfigObj | undefined, files: Array<string>) => {
10
- language: string;
11
- entry: string | undefined;
12
- } | {
13
- language: null;
14
- entry: null;
15
- } | undefined;
16
- export declare const filterFiles: (files: Array<string>, basePath?: string) => {
17
- path: string;
18
- name: string;
19
- hidden: boolean;
20
- }[];
21
- declare const _default: {
22
- exercise: (path: string, position: number, configObject: IConfigObj) => IExercise;
23
- detect: (configObject: IConfigObj | undefined, files: string[]) => {
24
- language: string;
25
- entry: string | undefined;
26
- } | {
27
- language: null;
28
- entry: null;
29
- } | undefined;
30
- filterFiles: (files: string[], basePath?: string) => {
31
- path: string;
32
- name: string;
33
- hidden: boolean;
34
- }[];
35
- };
36
- export default _default;
1
+ import { IConfigObj } from "../../models/config";
2
+ import { IFile } from "../../models/file";
3
+ import { IExercise } from "../../models/exercise-obj";
4
+ export declare const exercise: (path: string, position: number, configObject: IConfigObj) => IExercise;
5
+ export declare const validateExerciseDirectoryName: (str: string) => boolean;
6
+ export declare const isCodable: (str: string) => boolean;
7
+ export declare const shouldBeVisible: (file: IFile) => boolean;
8
+ export declare const isDirectory: (source: string) => boolean;
9
+ export declare const detect: (configObject: IConfigObj | undefined, files: Array<string>) => {
10
+ language: string;
11
+ entry: string | undefined;
12
+ } | {
13
+ language: null;
14
+ entry: null;
15
+ } | undefined;
16
+ export declare const filterFiles: (files: Array<string>, basePath?: string) => {
17
+ path: string;
18
+ name: string;
19
+ hidden: boolean;
20
+ }[];
21
+ declare const _default: {
22
+ exercise: (path: string, position: number, configObject: IConfigObj) => IExercise;
23
+ detect: (configObject: IConfigObj | undefined, files: Array<string>) => {
24
+ language: string;
25
+ entry: string | undefined;
26
+ } | {
27
+ language: null;
28
+ entry: null;
29
+ } | undefined;
30
+ filterFiles: (files: Array<string>, basePath?: string) => {
31
+ path: string;
32
+ name: string;
33
+ hidden: boolean;
34
+ }[];
35
+ };
36
+ export default _default;