@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
package/lib/plugin/utils.d.ts
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
declare const _default: {
|
|
2
|
-
getMatches: (reg: RegExp, content: string) => (string | null)[];
|
|
3
|
-
cleanStdout: (buffer: string, inputs: string[]) => string;
|
|
4
|
-
indent: (string: string, options: any, count?: number) => string;
|
|
5
|
-
Console: {
|
|
6
|
-
_debug: boolean;
|
|
7
|
-
startDebug: () => void;
|
|
8
|
-
log: (msg: string, ...args: any[]) => void;
|
|
9
|
-
error: (msg: string, ...args: any[]) => void;
|
|
10
|
-
success: (msg: string, ...args: any[]) => void;
|
|
11
|
-
info: (msg: string, ...args: any[]) => void;
|
|
12
|
-
help: (msg: string) => void;
|
|
13
|
-
debug(...args: any[]): void;
|
|
14
|
-
};
|
|
15
|
-
};
|
|
16
|
-
export default _default;
|
|
1
|
+
declare const _default: {
|
|
2
|
+
getMatches: (reg: RegExp, content: string) => (string | null)[];
|
|
3
|
+
cleanStdout: (buffer: string, inputs: string[]) => string;
|
|
4
|
+
indent: (string: string, options: any, count?: number) => string;
|
|
5
|
+
Console: {
|
|
6
|
+
_debug: boolean;
|
|
7
|
+
startDebug: () => void;
|
|
8
|
+
log: (msg: string, ...args: any[]) => void;
|
|
9
|
+
error: (msg: string, ...args: any[]) => void;
|
|
10
|
+
success: (msg: string, ...args: any[]) => void;
|
|
11
|
+
info: (msg: string, ...args: any[]) => void;
|
|
12
|
+
help: (msg: string) => void;
|
|
13
|
+
debug(...args: any[]): void;
|
|
14
|
+
};
|
|
15
|
+
};
|
|
16
|
+
export default _default;
|
package/lib/plugin/utils.js
CHANGED
|
@@ -1,58 +1,58 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const chalk = require("chalk");
|
|
4
|
-
const getMatches = (reg, content) => {
|
|
5
|
-
const inputs = [];
|
|
6
|
-
let m;
|
|
7
|
-
while ((m = reg.exec(content)) !== null) {
|
|
8
|
-
// This is necessary to avoid infinite loops with zero-width matches
|
|
9
|
-
if (m.index === reg.lastIndex)
|
|
10
|
-
reg.lastIndex++;
|
|
11
|
-
// The result can be accessed through the `m`-variable.
|
|
12
|
-
inputs.push(m[1] || null);
|
|
13
|
-
}
|
|
14
|
-
return inputs;
|
|
15
|
-
};
|
|
16
|
-
const cleanStdout = (buffer, inputs) => {
|
|
17
|
-
if (Array.isArray(inputs))
|
|
18
|
-
for (let i = 0; i < inputs.length; i++)
|
|
19
|
-
if (inputs[i])
|
|
20
|
-
buffer = buffer.replace(inputs[i], "");
|
|
21
|
-
return buffer;
|
|
22
|
-
};
|
|
23
|
-
const indent = (string, options, count = 1) => {
|
|
24
|
-
options = Object.assign({ indent: " ", includeEmptyLines: false }, options);
|
|
25
|
-
if (typeof string !== "string") {
|
|
26
|
-
throw new TypeError(`Expected \`input\` to be a \`string\`, got \`${typeof string}\``);
|
|
27
|
-
}
|
|
28
|
-
if (typeof count !== "number") {
|
|
29
|
-
throw new TypeError(`Expected \`count\` to be a \`number\`, got \`${typeof count}\``);
|
|
30
|
-
}
|
|
31
|
-
if (count < 0) {
|
|
32
|
-
throw new RangeError(`Expected \`count\` to be at least 0, got \`${count}\``);
|
|
33
|
-
}
|
|
34
|
-
if (typeof options.indent !== "string") {
|
|
35
|
-
throw new TypeError(`Expected \`options.indent\` to be a \`string\`, got \`${typeof options.indent}\``);
|
|
36
|
-
}
|
|
37
|
-
if (count === 0) {
|
|
38
|
-
return string;
|
|
39
|
-
}
|
|
40
|
-
const regex = options.includeEmptyLines ? /^/gm : /^(?!\s*$)/gm;
|
|
41
|
-
return string.replace(regex, options.indent.repeat(count));
|
|
42
|
-
};
|
|
43
|
-
const Console = {
|
|
44
|
-
// _debug: true,
|
|
45
|
-
_debug: process.env.DEBUG === "true",
|
|
46
|
-
startDebug: function () {
|
|
47
|
-
this._debug = true;
|
|
48
|
-
},
|
|
49
|
-
log: (msg, ...args) => console.log(chalk.gray(msg), ...args),
|
|
50
|
-
error: (msg, ...args) => console.log(chalk.red("⨉ " + msg), ...args),
|
|
51
|
-
success: (msg, ...args) => console.log(chalk.green("✓ " + msg), ...args),
|
|
52
|
-
info: (msg, ...args) => console.log(chalk.blue("ⓘ " + msg), ...args),
|
|
53
|
-
help: (msg) => console.log(`${chalk.white.bold("⚠ help:")} ${chalk.white(msg)}`),
|
|
54
|
-
debug(...args) {
|
|
55
|
-
this._debug && console.log(chalk.magentaBright(`⚠ debug: `), args);
|
|
56
|
-
},
|
|
57
|
-
};
|
|
58
|
-
exports.default = { getMatches, cleanStdout, indent, Console };
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const chalk = require("chalk");
|
|
4
|
+
const getMatches = (reg, content) => {
|
|
5
|
+
const inputs = [];
|
|
6
|
+
let m;
|
|
7
|
+
while ((m = reg.exec(content)) !== null) {
|
|
8
|
+
// This is necessary to avoid infinite loops with zero-width matches
|
|
9
|
+
if (m.index === reg.lastIndex)
|
|
10
|
+
reg.lastIndex++;
|
|
11
|
+
// The result can be accessed through the `m`-variable.
|
|
12
|
+
inputs.push(m[1] || null);
|
|
13
|
+
}
|
|
14
|
+
return inputs;
|
|
15
|
+
};
|
|
16
|
+
const cleanStdout = (buffer, inputs) => {
|
|
17
|
+
if (Array.isArray(inputs))
|
|
18
|
+
for (let i = 0; i < inputs.length; i++)
|
|
19
|
+
if (inputs[i])
|
|
20
|
+
buffer = buffer.replace(inputs[i], "");
|
|
21
|
+
return buffer;
|
|
22
|
+
};
|
|
23
|
+
const indent = (string, options, count = 1) => {
|
|
24
|
+
options = Object.assign({ indent: " ", includeEmptyLines: false }, options);
|
|
25
|
+
if (typeof string !== "string") {
|
|
26
|
+
throw new TypeError(`Expected \`input\` to be a \`string\`, got \`${typeof string}\``);
|
|
27
|
+
}
|
|
28
|
+
if (typeof count !== "number") {
|
|
29
|
+
throw new TypeError(`Expected \`count\` to be a \`number\`, got \`${typeof count}\``);
|
|
30
|
+
}
|
|
31
|
+
if (count < 0) {
|
|
32
|
+
throw new RangeError(`Expected \`count\` to be at least 0, got \`${count}\``);
|
|
33
|
+
}
|
|
34
|
+
if (typeof options.indent !== "string") {
|
|
35
|
+
throw new TypeError(`Expected \`options.indent\` to be a \`string\`, got \`${typeof options.indent}\``);
|
|
36
|
+
}
|
|
37
|
+
if (count === 0) {
|
|
38
|
+
return string;
|
|
39
|
+
}
|
|
40
|
+
const regex = options.includeEmptyLines ? /^/gm : /^(?!\s*$)/gm;
|
|
41
|
+
return string.replace(regex, options.indent.repeat(count));
|
|
42
|
+
};
|
|
43
|
+
const Console = {
|
|
44
|
+
// _debug: true,
|
|
45
|
+
_debug: process.env.DEBUG === "true",
|
|
46
|
+
startDebug: function () {
|
|
47
|
+
this._debug = true;
|
|
48
|
+
},
|
|
49
|
+
log: (msg, ...args) => console.log(chalk.gray(msg), ...args),
|
|
50
|
+
error: (msg, ...args) => console.log(chalk.red("⨉ " + msg), ...args),
|
|
51
|
+
success: (msg, ...args) => console.log(chalk.green("✓ " + msg), ...args),
|
|
52
|
+
info: (msg, ...args) => console.log(chalk.blue("ⓘ " + msg), ...args),
|
|
53
|
+
help: (msg) => console.log(`${chalk.white.bold("⚠ help:")} ${chalk.white(msg)}`),
|
|
54
|
+
debug(...args) {
|
|
55
|
+
this._debug && console.log(chalk.magentaBright(`⚠ debug: `), args);
|
|
56
|
+
},
|
|
57
|
+
};
|
|
58
|
+
exports.default = { getMatches, cleanStdout, indent, Console };
|
package/lib/ui/download.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export declare const askPackage: () => Promise<unknown>;
|
|
2
|
-
declare const _default: {
|
|
3
|
-
askPackage: () => Promise<unknown>;
|
|
4
|
-
};
|
|
5
|
-
export default _default;
|
|
1
|
+
export declare const askPackage: () => Promise<unknown>;
|
|
2
|
+
declare const _default: {
|
|
3
|
+
askPackage: () => Promise<unknown>;
|
|
4
|
+
};
|
|
5
|
+
export default _default;
|
package/lib/ui/download.js
CHANGED
|
@@ -1,61 +1,61 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.askPackage = void 0;
|
|
4
|
-
const enquirer_1 = require("enquirer");
|
|
5
|
-
const console_1 = require("../utils/console");
|
|
6
|
-
const api_1 = require("../utils/api");
|
|
7
|
-
exports.askPackage = async () => {
|
|
8
|
-
console_1.default.info('No package was specified');
|
|
9
|
-
const languages = await api_1.default.getLangs();
|
|
10
|
-
return new Promise((resolve, reject) => {
|
|
11
|
-
if (languages.length === 0) {
|
|
12
|
-
// reject(new Error('No categories available'))
|
|
13
|
-
reject('No categories available');
|
|
14
|
-
// return null;
|
|
15
|
-
}
|
|
16
|
-
// let packages = []
|
|
17
|
-
enquirer_1.prompt([
|
|
18
|
-
{
|
|
19
|
-
type: 'select',
|
|
20
|
-
name: 'lang',
|
|
21
|
-
message: 'What language do you want to practice?',
|
|
22
|
-
choices: languages.map((l) => ({
|
|
23
|
-
message: l.title,
|
|
24
|
-
name: l.slug,
|
|
25
|
-
})),
|
|
26
|
-
},
|
|
27
|
-
])
|
|
28
|
-
.then(({ lang }) => {
|
|
29
|
-
return (async () => {
|
|
30
|
-
const response = await api_1.default.getAllPackages({ lang });
|
|
31
|
-
const packages = response.results;
|
|
32
|
-
if (packages.length === 0) {
|
|
33
|
-
const error = new Error(`No packages found for language ${lang}`);
|
|
34
|
-
console_1.default.error(error.message); // TODO: Look this
|
|
35
|
-
return error;
|
|
36
|
-
}
|
|
37
|
-
return enquirer_1.prompt([
|
|
38
|
-
{
|
|
39
|
-
type: 'select',
|
|
40
|
-
name: 'pack',
|
|
41
|
-
message: 'Choose one of the packages available',
|
|
42
|
-
choices: packages.map((l) => ({
|
|
43
|
-
message: `${l.title}, difficulty: ${l.difficulty}, downloads: ${l.downloads} ${l.skills.length > 0 ? `(Skills: ${l.skills.join(',')})` : ''}`,
|
|
44
|
-
name: l.slug,
|
|
45
|
-
})),
|
|
46
|
-
},
|
|
47
|
-
]);
|
|
48
|
-
})();
|
|
49
|
-
})
|
|
50
|
-
.then((resp) => {
|
|
51
|
-
if (!resp)
|
|
52
|
-
reject(resp.message || resp);
|
|
53
|
-
else
|
|
54
|
-
resolve(resp.pack);
|
|
55
|
-
})
|
|
56
|
-
.catch(error => {
|
|
57
|
-
console_1.default.error(error.message || error);
|
|
58
|
-
});
|
|
59
|
-
});
|
|
60
|
-
};
|
|
61
|
-
exports.default = { askPackage: exports.askPackage };
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.askPackage = void 0;
|
|
4
|
+
const enquirer_1 = require("enquirer");
|
|
5
|
+
const console_1 = require("../utils/console");
|
|
6
|
+
const api_1 = require("../utils/api");
|
|
7
|
+
exports.askPackage = async () => {
|
|
8
|
+
console_1.default.info('No package was specified');
|
|
9
|
+
const languages = await api_1.default.getLangs();
|
|
10
|
+
return new Promise((resolve, reject) => {
|
|
11
|
+
if (languages.length === 0) {
|
|
12
|
+
// reject(new Error('No categories available'))
|
|
13
|
+
reject('No categories available');
|
|
14
|
+
// return null;
|
|
15
|
+
}
|
|
16
|
+
// let packages = []
|
|
17
|
+
enquirer_1.prompt([
|
|
18
|
+
{
|
|
19
|
+
type: 'select',
|
|
20
|
+
name: 'lang',
|
|
21
|
+
message: 'What language do you want to practice?',
|
|
22
|
+
choices: languages.map((l) => ({
|
|
23
|
+
message: l.title,
|
|
24
|
+
name: l.slug,
|
|
25
|
+
})),
|
|
26
|
+
},
|
|
27
|
+
])
|
|
28
|
+
.then(({ lang }) => {
|
|
29
|
+
return (async () => {
|
|
30
|
+
const response = await api_1.default.getAllPackages({ lang });
|
|
31
|
+
const packages = response.results;
|
|
32
|
+
if (packages.length === 0) {
|
|
33
|
+
const error = new Error(`No packages found for language ${lang}`);
|
|
34
|
+
console_1.default.error(error.message); // TODO: Look this
|
|
35
|
+
return error;
|
|
36
|
+
}
|
|
37
|
+
return enquirer_1.prompt([
|
|
38
|
+
{
|
|
39
|
+
type: 'select',
|
|
40
|
+
name: 'pack',
|
|
41
|
+
message: 'Choose one of the packages available',
|
|
42
|
+
choices: packages.map((l) => ({
|
|
43
|
+
message: `${l.title}, difficulty: ${l.difficulty}, downloads: ${l.downloads} ${l.skills.length > 0 ? `(Skills: ${l.skills.join(',')})` : ''}`,
|
|
44
|
+
name: l.slug,
|
|
45
|
+
})),
|
|
46
|
+
},
|
|
47
|
+
]);
|
|
48
|
+
})();
|
|
49
|
+
})
|
|
50
|
+
.then((resp) => {
|
|
51
|
+
if (!resp)
|
|
52
|
+
reject(resp.message || resp);
|
|
53
|
+
else
|
|
54
|
+
resolve(resp.pack);
|
|
55
|
+
})
|
|
56
|
+
.catch(error => {
|
|
57
|
+
console_1.default.error(error.message || error);
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
};
|
|
61
|
+
exports.default = { askPackage: exports.askPackage };
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { Command } from "@oclif/command";
|
|
2
|
-
declare class BaseCommand extends Command {
|
|
3
|
-
catch(err: any): Promise<void>;
|
|
4
|
-
init(): Promise<void>;
|
|
5
|
-
finally(): Promise<void>;
|
|
6
|
-
run(): Promise<void>;
|
|
7
|
-
}
|
|
8
|
-
export default BaseCommand;
|
|
1
|
+
import { Command } from "@oclif/command";
|
|
2
|
+
declare class BaseCommand extends Command {
|
|
3
|
+
catch(err: any): Promise<void>;
|
|
4
|
+
init(): Promise<void>;
|
|
5
|
+
finally(): Promise<void>;
|
|
6
|
+
run(): Promise<void>;
|
|
7
|
+
}
|
|
8
|
+
export default BaseCommand;
|
package/lib/utils/BaseCommand.js
CHANGED
|
@@ -1,41 +1,41 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const command_1 = require("@oclif/command");
|
|
4
|
-
const console_1 = require("./console");
|
|
5
|
-
const readline_1 = require("readline");
|
|
6
|
-
// import SessionManager from '../managers/session'
|
|
7
|
-
class BaseCommand extends command_1.Command {
|
|
8
|
-
async catch(err) {
|
|
9
|
-
console_1.default.debug("COMMAND CATCH", err);
|
|
10
|
-
throw err;
|
|
11
|
-
}
|
|
12
|
-
async init() {
|
|
13
|
-
const { flags, args } = this.parse(BaseCommand);
|
|
14
|
-
console_1.default.debug("COMMAND INIT");
|
|
15
|
-
console_1.default.debug("These are your flags: ", flags);
|
|
16
|
-
console_1.default.debug("These are your args: ", args);
|
|
17
|
-
// quick fix for listening to the process termination on windows
|
|
18
|
-
if (process.platform === "win32") {
|
|
19
|
-
const rl = readline_1.createInterface({
|
|
20
|
-
input: process.stdin,
|
|
21
|
-
output: process.stdout,
|
|
22
|
-
});
|
|
23
|
-
rl.on("SIGINT", function () {
|
|
24
|
-
// process.emit('SIGINT')
|
|
25
|
-
// process.emit('SIGINT')
|
|
26
|
-
});
|
|
27
|
-
}
|
|
28
|
-
process.on("SIGINT", function () {
|
|
29
|
-
console_1.default.debug("Terminated (SIGINT)");
|
|
30
|
-
process.exit();
|
|
31
|
-
});
|
|
32
|
-
}
|
|
33
|
-
async finally() {
|
|
34
|
-
console_1.default.debug("COMMAND FINALLY");
|
|
35
|
-
// called after run and catch regardless of whether or not the command errored
|
|
36
|
-
}
|
|
37
|
-
async run() {
|
|
38
|
-
// console.log('running my command')
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
exports.default = BaseCommand;
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const command_1 = require("@oclif/command");
|
|
4
|
+
const console_1 = require("./console");
|
|
5
|
+
const readline_1 = require("readline");
|
|
6
|
+
// import SessionManager from '../managers/session'
|
|
7
|
+
class BaseCommand extends command_1.Command {
|
|
8
|
+
async catch(err) {
|
|
9
|
+
console_1.default.debug("COMMAND CATCH", err);
|
|
10
|
+
throw err;
|
|
11
|
+
}
|
|
12
|
+
async init() {
|
|
13
|
+
const { flags, args } = this.parse(BaseCommand);
|
|
14
|
+
console_1.default.debug("COMMAND INIT");
|
|
15
|
+
console_1.default.debug("These are your flags: ", flags);
|
|
16
|
+
console_1.default.debug("These are your args: ", args);
|
|
17
|
+
// quick fix for listening to the process termination on windows
|
|
18
|
+
if (process.platform === "win32") {
|
|
19
|
+
const rl = readline_1.createInterface({
|
|
20
|
+
input: process.stdin,
|
|
21
|
+
output: process.stdout,
|
|
22
|
+
});
|
|
23
|
+
rl.on("SIGINT", function () {
|
|
24
|
+
// process.emit('SIGINT')
|
|
25
|
+
// process.emit('SIGINT')
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
process.on("SIGINT", function () {
|
|
29
|
+
console_1.default.debug("Terminated (SIGINT)");
|
|
30
|
+
process.exit();
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
async finally() {
|
|
34
|
+
console_1.default.debug("COMMAND FINALLY");
|
|
35
|
+
// called after run and catch regardless of whether or not the command errored
|
|
36
|
+
}
|
|
37
|
+
async run() {
|
|
38
|
+
// console.log('running my command')
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
exports.default = BaseCommand;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import BaseCommand from "./BaseCommand";
|
|
2
|
-
import { IConfigManager } from "../models/config-manager";
|
|
3
|
-
export default class SessionCommand extends BaseCommand {
|
|
4
|
-
session: any;
|
|
5
|
-
configManager: IConfigManager | null;
|
|
6
|
-
static flags: any;
|
|
7
|
-
initSession(flags: any, _private?: boolean): Promise<void>;
|
|
8
|
-
buildConfig(flags: any): Promise<void>;
|
|
9
|
-
catch(err: any): Promise<void>;
|
|
10
|
-
}
|
|
1
|
+
import BaseCommand from "./BaseCommand";
|
|
2
|
+
import { IConfigManager } from "../models/config-manager";
|
|
3
|
+
export default class SessionCommand extends BaseCommand {
|
|
4
|
+
session: any;
|
|
5
|
+
configManager: IConfigManager | null;
|
|
6
|
+
static flags: any;
|
|
7
|
+
initSession(flags: any, _private?: boolean): Promise<void>;
|
|
8
|
+
buildConfig(flags: any): Promise<void>;
|
|
9
|
+
catch(err: any): Promise<void>;
|
|
10
|
+
}
|
|
@@ -1,43 +1,43 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
// import { flags } from "@oclif/command";
|
|
4
|
-
const BaseCommand_1 = require("./BaseCommand");
|
|
5
|
-
const console_1 = require("./console");
|
|
6
|
-
const session_1 = require("../managers/session");
|
|
7
|
-
const index_1 = require("../managers/config/index");
|
|
8
|
-
const errors_1 = require("./errors");
|
|
9
|
-
class SessionCommand extends BaseCommand_1.default {
|
|
10
|
-
constructor() {
|
|
11
|
-
super(...arguments);
|
|
12
|
-
this.session = null;
|
|
13
|
-
this.configManager = null;
|
|
14
|
-
}
|
|
15
|
-
async initSession(flags, _private = false) {
|
|
16
|
-
var _a;
|
|
17
|
-
try {
|
|
18
|
-
if (!this.configManager) {
|
|
19
|
-
await this.buildConfig(flags);
|
|
20
|
-
}
|
|
21
|
-
this.session = await session_1.default.get((_a = this.configManager) === null || _a === void 0 ? void 0 : _a.get());
|
|
22
|
-
if (this.session) {
|
|
23
|
-
console_1.default.debug(`Session open for ${this.session.payload.email}.`);
|
|
24
|
-
}
|
|
25
|
-
else {
|
|
26
|
-
if (_private)
|
|
27
|
-
throw errors_1.AuthError("You need to log in, run the following command to continue: $ learnpack login");
|
|
28
|
-
console_1.default.debug("No active session available", _private);
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
catch (error) {
|
|
32
|
-
console_1.default.error(error.message);
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
async buildConfig(flags) {
|
|
36
|
-
this.configManager = await index_1.default(flags);
|
|
37
|
-
}
|
|
38
|
-
async catch(err) {
|
|
39
|
-
console_1.default.debug("COMMAND CATCH", err);
|
|
40
|
-
throw err;
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
exports.default = SessionCommand;
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
// import { flags } from "@oclif/command";
|
|
4
|
+
const BaseCommand_1 = require("./BaseCommand");
|
|
5
|
+
const console_1 = require("./console");
|
|
6
|
+
const session_1 = require("../managers/session");
|
|
7
|
+
const index_1 = require("../managers/config/index");
|
|
8
|
+
const errors_1 = require("./errors");
|
|
9
|
+
class SessionCommand extends BaseCommand_1.default {
|
|
10
|
+
constructor() {
|
|
11
|
+
super(...arguments);
|
|
12
|
+
this.session = null;
|
|
13
|
+
this.configManager = null;
|
|
14
|
+
}
|
|
15
|
+
async initSession(flags, _private = false) {
|
|
16
|
+
var _a;
|
|
17
|
+
try {
|
|
18
|
+
if (!this.configManager) {
|
|
19
|
+
await this.buildConfig(flags);
|
|
20
|
+
}
|
|
21
|
+
this.session = await session_1.default.get((_a = this.configManager) === null || _a === void 0 ? void 0 : _a.get());
|
|
22
|
+
if (this.session) {
|
|
23
|
+
console_1.default.debug(`Session open for ${this.session.payload.email}.`);
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
if (_private)
|
|
27
|
+
throw errors_1.AuthError("You need to log in, run the following command to continue: $ learnpack login");
|
|
28
|
+
console_1.default.debug("No active session available", _private);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
catch (error) {
|
|
32
|
+
console_1.default.error(error.message);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
async buildConfig(flags) {
|
|
36
|
+
this.configManager = await index_1.default(flags);
|
|
37
|
+
}
|
|
38
|
+
async catch(err) {
|
|
39
|
+
console_1.default.debug("COMMAND CATCH", err);
|
|
40
|
+
throw err;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
exports.default = SessionCommand;
|
package/lib/utils/api.d.ts
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
declare const _default: {
|
|
2
|
-
login: (identification: string, password: string) => Promise<any>;
|
|
3
|
-
publish: (config: any) => Promise<any>;
|
|
4
|
-
update: (config: any) => Promise<any>;
|
|
5
|
-
getPackage: (slug: string) => Promise<any>;
|
|
6
|
-
getLangs: () => Promise<any>;
|
|
7
|
-
getAllPackages: ({ lang, slug, }: {
|
|
8
|
-
lang?: string | undefined;
|
|
9
|
-
slug?: string | undefined;
|
|
10
|
-
}) => Promise<any>;
|
|
11
|
-
sendBatchTelemetry: (url: string, body: object) => Promise<void>;
|
|
12
|
-
sendStreamTelemetry: (url: string, body: object) => Promise<void>;
|
|
13
|
-
};
|
|
14
|
-
export default _default;
|
|
1
|
+
declare const _default: {
|
|
2
|
+
login: (identification: string, password: string) => Promise<any>;
|
|
3
|
+
publish: (config: any) => Promise<any>;
|
|
4
|
+
update: (config: any) => Promise<any>;
|
|
5
|
+
getPackage: (slug: string) => Promise<any>;
|
|
6
|
+
getLangs: () => Promise<any>;
|
|
7
|
+
getAllPackages: ({ lang, slug, }: {
|
|
8
|
+
lang?: string | undefined;
|
|
9
|
+
slug?: string | undefined;
|
|
10
|
+
}) => Promise<any>;
|
|
11
|
+
sendBatchTelemetry: (url: string, body: object) => Promise<void>;
|
|
12
|
+
sendStreamTelemetry: (url: string, body: object) => Promise<void>;
|
|
13
|
+
};
|
|
14
|
+
export default _default;
|