@learnpack/learnpack 4.0.10 → 4.0.12

Sign up to get free protection for your applications and to get access to all the features.
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 +10 -0
  128. package/src/managers/session.ts +1 -1
@@ -1,14 +1,14 @@
1
- import SessionCommand from "../utils/SessionCommand";
2
- declare class LoginCommand extends SessionCommand {
3
- static description: string;
4
- static flags: any;
5
- static args: {
6
- name: string;
7
- required: boolean;
8
- description: string;
9
- hidden: boolean;
10
- }[];
11
- init(): Promise<void>;
12
- run(): Promise<void>;
13
- }
14
- export default LoginCommand;
1
+ import SessionCommand from "../utils/SessionCommand";
2
+ declare class LoginCommand extends SessionCommand {
3
+ static description: string;
4
+ static flags: any;
5
+ static args: {
6
+ name: string;
7
+ required: boolean;
8
+ description: string;
9
+ hidden: boolean;
10
+ }[];
11
+ init(): Promise<void>;
12
+ run(): Promise<void>;
13
+ }
14
+ export default LoginCommand;
@@ -1,37 +1,37 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const SessionCommand_1 = require("../utils/SessionCommand");
4
- const session_1 = require("../managers/session");
5
- const console_1 = require("../utils/console");
6
- class LoginCommand extends SessionCommand_1.default {
7
- async init() {
8
- const { flags } = this.parse(LoginCommand);
9
- await this.initSession(flags);
10
- }
11
- async run() {
12
- /* const {flags, args} = */ this.parse(LoginCommand);
13
- try {
14
- await session_1.default.login();
15
- }
16
- catch (error) {
17
- console_1.default.error("Error trying to authenticate");
18
- console_1.default.error(error.message || error);
19
- }
20
- }
21
- }
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const SessionCommand_1 = require("../utils/SessionCommand");
4
+ const session_1 = require("../managers/session");
5
+ const console_1 = require("../utils/console");
6
+ class LoginCommand extends SessionCommand_1.default {
7
+ async init() {
8
+ const { flags } = this.parse(LoginCommand);
9
+ await this.initSession(flags);
10
+ }
11
+ async run() {
12
+ /* const {flags, args} = */ this.parse(LoginCommand);
13
+ try {
14
+ await session_1.default.login();
15
+ }
16
+ catch (error) {
17
+ console_1.default.error("Error trying to authenticate");
18
+ console_1.default.error(error.message || error);
19
+ }
20
+ }
21
+ }
22
22
  LoginCommand.description = `Describe the command here
23
23
  ...
24
24
  Extra documentation goes here
25
- `;
26
- LoginCommand.flags = {
27
- // name: flags.string({char: 'n', description: 'name to print'}),
28
- };
29
- LoginCommand.args = [
30
- {
31
- name: "package",
32
- required: false,
33
- description: "The unique string that identifies this package on learnpack",
34
- hidden: false,
35
- },
36
- ];
37
- exports.default = LoginCommand;
25
+ `;
26
+ LoginCommand.flags = {
27
+ // name: flags.string({char: 'n', description: 'name to print'}),
28
+ };
29
+ LoginCommand.args = [
30
+ {
31
+ name: "package", // name of arg to show in help and reference with args[name]
32
+ required: false, // make the arg required with `required: true`
33
+ description: "The unique string that identifies this package on learnpack", // help description
34
+ hidden: false, // hide this arg from help
35
+ },
36
+ ];
37
+ exports.default = LoginCommand;
@@ -1,14 +1,14 @@
1
- import SessionCommand from "../utils/SessionCommand";
2
- declare class LogoutCommand extends SessionCommand {
3
- static description: string;
4
- static flags: any;
5
- static args: {
6
- name: string;
7
- required: boolean;
8
- description: string;
9
- hidden: boolean;
10
- }[];
11
- init(): Promise<void>;
12
- run(): Promise<void>;
13
- }
14
- export default LogoutCommand;
1
+ import SessionCommand from "../utils/SessionCommand";
2
+ declare class LogoutCommand extends SessionCommand {
3
+ static description: string;
4
+ static flags: any;
5
+ static args: {
6
+ name: string;
7
+ required: boolean;
8
+ description: string;
9
+ hidden: boolean;
10
+ }[];
11
+ init(): Promise<void>;
12
+ run(): Promise<void>;
13
+ }
14
+ export default LogoutCommand;
@@ -1,37 +1,37 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- // import {Command, flags} from '@oclif/command'
4
- // import { prompt } from "enquirer"
5
- // import fetch from 'node-fetch'
6
- const SessionCommand_1 = require("../utils/SessionCommand");
7
- const session_1 = require("../managers/session");
8
- // import Console from '../utils/console'
9
- // import { replace } from 'node-emoji'
10
- // import { validURL } from "../utils/validators"
11
- // const BaseCommand from '../utils/BaseCommand');
12
- class LogoutCommand extends SessionCommand_1.default {
13
- async init() {
14
- const { flags } = this.parse(LogoutCommand);
15
- await this.initSession(flags);
16
- }
17
- async run() {
18
- // const {flags, args} = this.parse(LogoutCommand)
19
- session_1.default.destroy();
20
- }
21
- }
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ // import {Command, flags} from '@oclif/command'
4
+ // import { prompt } from "enquirer"
5
+ // import fetch from 'node-fetch'
6
+ const SessionCommand_1 = require("../utils/SessionCommand");
7
+ const session_1 = require("../managers/session");
8
+ // import Console from '../utils/console'
9
+ // import { replace } from 'node-emoji'
10
+ // import { validURL } from "../utils/validators"
11
+ // const BaseCommand from '../utils/BaseCommand');
12
+ class LogoutCommand extends SessionCommand_1.default {
13
+ async init() {
14
+ const { flags } = this.parse(LogoutCommand);
15
+ await this.initSession(flags);
16
+ }
17
+ async run() {
18
+ // const {flags, args} = this.parse(LogoutCommand)
19
+ session_1.default.destroy();
20
+ }
21
+ }
22
22
  LogoutCommand.description = `Describe the command here
23
23
  ...
24
24
  Extra documentation goes here
25
- `;
26
- LogoutCommand.flags = {
27
- // name: flags.string({char: 'n', description: 'name to print'}),
28
- };
29
- LogoutCommand.args = [
30
- {
31
- name: "package",
32
- required: false,
33
- description: "The unique string that identifies this package on learnpack",
34
- hidden: false,
35
- },
36
- ];
37
- exports.default = LogoutCommand;
25
+ `;
26
+ LogoutCommand.flags = {
27
+ // name: flags.string({char: 'n', description: 'name to print'}),
28
+ };
29
+ LogoutCommand.args = [
30
+ {
31
+ name: "package", // name of arg to show in help and reference with args[name]
32
+ required: false, // make the arg required with `required: true`
33
+ description: "The unique string that identifies this package on learnpack", // help description
34
+ hidden: false, // hide this arg from help
35
+ },
36
+ ];
37
+ exports.default = LogoutCommand;
@@ -1,14 +1,14 @@
1
- import SessionCommand from "../utils/SessionCommand";
2
- declare class PublishCommand extends SessionCommand {
3
- static description: string;
4
- static flags: any;
5
- static args: {
6
- name: string;
7
- required: boolean;
8
- description: string;
9
- hidden: boolean;
10
- }[];
11
- init(): Promise<void>;
12
- run(): Promise<void>;
13
- }
14
- export default PublishCommand;
1
+ import SessionCommand from "../utils/SessionCommand";
2
+ declare class PublishCommand extends SessionCommand {
3
+ static description: string;
4
+ static flags: any;
5
+ static args: {
6
+ name: string;
7
+ required: boolean;
8
+ description: string;
9
+ hidden: boolean;
10
+ }[];
11
+ init(): Promise<void>;
12
+ run(): Promise<void>;
13
+ }
14
+ export default PublishCommand;
@@ -1,82 +1,82 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const enquirer_1 = require("enquirer");
4
- const SessionCommand_1 = require("../utils/SessionCommand");
5
- const console_1 = require("../utils/console");
6
- const api_1 = require("../utils/api");
7
- const validators_1 = require("../utils/validators");
8
- // eslint-disable-next-line
9
- const fetch = require("node-fetch");
10
- class PublishCommand extends SessionCommand_1.default {
11
- async init() {
12
- const { flags } = this.parse(PublishCommand);
13
- await this.initSession(flags, true);
14
- }
15
- async run() {
16
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
17
- const { flags, args } = this.parse(PublishCommand);
18
- // avoid annonymus sessions
19
- // eslint-disable-next-line
20
- if (!this.session)
21
- return;
22
- console_1.default.info(`Session found for ${this.session.payload.email}, publishing the package...`);
23
- const configObject = (_a = this.configManager) === null || _a === void 0 ? void 0 : _a.get();
24
- if (((_b = configObject === null || configObject === void 0 ? void 0 : configObject.config) === null || _b === void 0 ? void 0 : _b.slug) === undefined ||
25
- !((_c = configObject.config) === null || _c === void 0 ? void 0 : _c.slug)) {
26
- throw new Error("The package is missing a slug (unique name identifier), please check your learn.json file and make sure it has a 'slug'");
27
- }
28
- if (!validators_1.validURL((_e = (_d = configObject === null || configObject === void 0 ? void 0 : configObject.config) === null || _d === void 0 ? void 0 : _d.repository) !== null && _e !== void 0 ? _e : "")) {
29
- throw new Error("The package has a missing or invalid 'repository' on the configuration file, it needs to be a Github URL");
30
- }
31
- else {
32
- const validateResp = await fetch((_f = configObject.config) === null || _f === void 0 ? void 0 : _f.repository, {
33
- method: "HEAD",
34
- });
35
- if (!validateResp.ok || validateResp.status !== 200) {
36
- throw new Error(`The specified repository URL on the configuration file does not exist or its private, only public repositories are allowed at the moment: ${(_g = configObject.config) === null || _g === void 0 ? void 0 : _g.repository}`);
37
- }
38
- }
39
- // start watching for file changes
40
- try {
41
- await api_1.default.publish(Object.assign(Object.assign({}, configObject), { author: this.session.payload.user_id }));
42
- console_1.default.success(`Package updated and published successfully: ${(_h = configObject.config) === null || _h === void 0 ? void 0 : _h.slug}`);
43
- }
44
- catch (error) {
45
- if (error.status === 404) {
46
- const answer = await enquirer_1.prompt([
47
- {
48
- type: "confirm",
49
- name: "create",
50
- message: `Package with slug ${(_j = configObject.config) === null || _j === void 0 ? void 0 : _j.slug} does not exist, do you want to create it?`,
51
- },
52
- ]);
53
- if (answer) {
54
- await api_1.default.update(Object.assign(Object.assign({}, configObject), { author: this.session.payload.user_id }));
55
- console_1.default.success(`Package created and published successfully: ${(_k = configObject.config) === null || _k === void 0 ? void 0 : _k.slug}`);
56
- }
57
- else {
58
- console_1.default.error("No answer from server");
59
- }
60
- }
61
- else {
62
- console_1.default.error(error.message);
63
- }
64
- }
65
- }
66
- }
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const enquirer_1 = require("enquirer");
4
+ const SessionCommand_1 = require("../utils/SessionCommand");
5
+ const console_1 = require("../utils/console");
6
+ const api_1 = require("../utils/api");
7
+ const validators_1 = require("../utils/validators");
8
+ // eslint-disable-next-line
9
+ const fetch = require("node-fetch");
10
+ class PublishCommand extends SessionCommand_1.default {
11
+ async init() {
12
+ const { flags } = this.parse(PublishCommand);
13
+ await this.initSession(flags, true);
14
+ }
15
+ async run() {
16
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
17
+ const { flags, args } = this.parse(PublishCommand);
18
+ // avoid annonymus sessions
19
+ // eslint-disable-next-line
20
+ if (!this.session)
21
+ return;
22
+ console_1.default.info(`Session found for ${this.session.payload.email}, publishing the package...`);
23
+ const configObject = (_a = this.configManager) === null || _a === void 0 ? void 0 : _a.get();
24
+ if (((_b = configObject === null || configObject === void 0 ? void 0 : configObject.config) === null || _b === void 0 ? void 0 : _b.slug) === undefined ||
25
+ !((_c = configObject.config) === null || _c === void 0 ? void 0 : _c.slug)) {
26
+ throw new Error("The package is missing a slug (unique name identifier), please check your learn.json file and make sure it has a 'slug'");
27
+ }
28
+ if (!(0, validators_1.validURL)((_e = (_d = configObject === null || configObject === void 0 ? void 0 : configObject.config) === null || _d === void 0 ? void 0 : _d.repository) !== null && _e !== void 0 ? _e : "")) {
29
+ throw new Error("The package has a missing or invalid 'repository' on the configuration file, it needs to be a Github URL");
30
+ }
31
+ else {
32
+ const validateResp = await fetch((_f = configObject.config) === null || _f === void 0 ? void 0 : _f.repository, {
33
+ method: "HEAD",
34
+ });
35
+ if (!validateResp.ok || validateResp.status !== 200) {
36
+ throw new Error(`The specified repository URL on the configuration file does not exist or its private, only public repositories are allowed at the moment: ${(_g = configObject.config) === null || _g === void 0 ? void 0 : _g.repository}`);
37
+ }
38
+ }
39
+ // start watching for file changes
40
+ try {
41
+ await api_1.default.publish(Object.assign(Object.assign({}, configObject), { author: this.session.payload.user_id }));
42
+ console_1.default.success(`Package updated and published successfully: ${(_h = configObject.config) === null || _h === void 0 ? void 0 : _h.slug}`);
43
+ }
44
+ catch (error) {
45
+ if (error.status === 404) {
46
+ const answer = await (0, enquirer_1.prompt)([
47
+ {
48
+ type: "confirm",
49
+ name: "create",
50
+ message: `Package with slug ${(_j = configObject.config) === null || _j === void 0 ? void 0 : _j.slug} does not exist, do you want to create it?`,
51
+ },
52
+ ]);
53
+ if (answer) {
54
+ await api_1.default.update(Object.assign(Object.assign({}, configObject), { author: this.session.payload.user_id }));
55
+ console_1.default.success(`Package created and published successfully: ${(_k = configObject.config) === null || _k === void 0 ? void 0 : _k.slug}`);
56
+ }
57
+ else {
58
+ console_1.default.error("No answer from server");
59
+ }
60
+ }
61
+ else {
62
+ console_1.default.error(error.message);
63
+ }
64
+ }
65
+ }
66
+ }
67
67
  PublishCommand.description = `Describe the command here
68
68
  ...
69
69
  Extra documentation goes here
70
- `;
71
- PublishCommand.flags = {
72
- // name: flags.string({char: 'n', description: 'name to print'}),
73
- };
74
- PublishCommand.args = [
75
- {
76
- name: "package",
77
- required: false,
78
- description: "The unique string that identifies this package on learnpack",
79
- hidden: false,
80
- },
81
- ];
82
- exports.default = PublishCommand;
70
+ `;
71
+ PublishCommand.flags = {
72
+ // name: flags.string({char: 'n', description: 'name to print'}),
73
+ };
74
+ PublishCommand.args = [
75
+ {
76
+ name: "package", // name of arg to show in help and reference with args[name]
77
+ required: false, // make the arg required with `required: true`
78
+ description: "The unique string that identifies this package on learnpack", // help description
79
+ hidden: false, // hide this arg from help
80
+ },
81
+ ];
82
+ exports.default = PublishCommand;
@@ -1,7 +1,7 @@
1
- import SessionCommand from "../utils/SessionCommand";
2
- export default class StartCommand extends SessionCommand {
3
- static description: string;
4
- static flags: any;
5
- init(): Promise<void>;
6
- run(): Promise<void>;
7
- }
1
+ import SessionCommand from "../utils/SessionCommand";
2
+ export default class StartCommand extends SessionCommand {
3
+ static description: string;
4
+ static flags: any;
5
+ init(): Promise<void>;
6
+ run(): Promise<void>;
7
+ }