@learnpack/learnpack 2.0.18 → 2.0.19

Sign up to get free protection for your applications and to get access to all the features.
Files changed (115) hide show
  1. package/README.md +10 -10
  2. package/oclif.manifest.json +1 -1
  3. package/package.json +1 -1
  4. package/lib/commands/audit.d.ts +0 -6
  5. package/lib/commands/audit.js +0 -369
  6. package/lib/commands/clean.d.ts +0 -8
  7. package/lib/commands/clean.js +0 -25
  8. package/lib/commands/download.d.ts +0 -13
  9. package/lib/commands/download.js +0 -55
  10. package/lib/commands/init.d.ts +0 -9
  11. package/lib/commands/init.js +0 -117
  12. package/lib/commands/login.d.ts +0 -14
  13. package/lib/commands/login.js +0 -37
  14. package/lib/commands/logout.d.ts +0 -14
  15. package/lib/commands/logout.js +0 -37
  16. package/lib/commands/publish.d.ts +0 -14
  17. package/lib/commands/publish.js +0 -82
  18. package/lib/commands/start.d.ts +0 -7
  19. package/lib/commands/start.js +0 -165
  20. package/lib/commands/test.d.ts +0 -6
  21. package/lib/commands/test.js +0 -62
  22. package/lib/managers/config/allowed_files.d.ts +0 -5
  23. package/lib/managers/config/allowed_files.js +0 -30
  24. package/lib/managers/config/defaults.d.ts +0 -34
  25. package/lib/managers/config/defaults.js +0 -35
  26. package/lib/managers/config/exercise.d.ts +0 -36
  27. package/lib/managers/config/exercise.js +0 -230
  28. package/lib/managers/config/index.d.ts +0 -3
  29. package/lib/managers/config/index.js +0 -307
  30. package/lib/managers/file.d.ts +0 -13
  31. package/lib/managers/file.js +0 -134
  32. package/lib/managers/gitpod.d.ts +0 -3
  33. package/lib/managers/gitpod.js +0 -67
  34. package/lib/managers/server/index.d.ts +0 -6
  35. package/lib/managers/server/index.js +0 -51
  36. package/lib/managers/server/routes.d.ts +0 -4
  37. package/lib/managers/server/routes.js +0 -160
  38. package/lib/managers/session.d.ts +0 -3
  39. package/lib/managers/session.js +0 -104
  40. package/lib/managers/socket.d.ts +0 -3
  41. package/lib/managers/socket.js +0 -164
  42. package/lib/managers/test.d.ts +0 -0
  43. package/lib/managers/test.js +0 -84
  44. package/lib/models/action.d.ts +0 -2
  45. package/lib/models/action.js +0 -2
  46. package/lib/models/audit-errors.d.ts +0 -4
  47. package/lib/models/audit-errors.js +0 -2
  48. package/lib/models/config-manager.d.ts +0 -21
  49. package/lib/models/config-manager.js +0 -2
  50. package/lib/models/config.d.ts +0 -57
  51. package/lib/models/config.js +0 -2
  52. package/lib/models/counter.d.ts +0 -11
  53. package/lib/models/counter.js +0 -2
  54. package/lib/models/errors.d.ts +0 -15
  55. package/lib/models/errors.js +0 -2
  56. package/lib/models/exercise-obj.d.ts +0 -27
  57. package/lib/models/exercise-obj.js +0 -2
  58. package/lib/models/file.d.ts +0 -5
  59. package/lib/models/file.js +0 -2
  60. package/lib/models/findings.d.ts +0 -17
  61. package/lib/models/findings.js +0 -2
  62. package/lib/models/flags.d.ts +0 -10
  63. package/lib/models/flags.js +0 -2
  64. package/lib/models/front-matter.d.ts +0 -11
  65. package/lib/models/front-matter.js +0 -2
  66. package/lib/models/gitpod-data.d.ts +0 -16
  67. package/lib/models/gitpod-data.js +0 -2
  68. package/lib/models/language.d.ts +0 -4
  69. package/lib/models/language.js +0 -2
  70. package/lib/models/package.d.ts +0 -7
  71. package/lib/models/package.js +0 -2
  72. package/lib/models/plugin-config.d.ts +0 -16
  73. package/lib/models/plugin-config.js +0 -2
  74. package/lib/models/session.d.ts +0 -23
  75. package/lib/models/session.js +0 -2
  76. package/lib/models/socket.d.ts +0 -31
  77. package/lib/models/socket.js +0 -2
  78. package/lib/models/status.d.ts +0 -1
  79. package/lib/models/status.js +0 -2
  80. package/lib/models/success-types.d.ts +0 -1
  81. package/lib/models/success-types.js +0 -2
  82. package/lib/plugin/command/compile.d.ts +0 -6
  83. package/lib/plugin/command/compile.js +0 -18
  84. package/lib/plugin/command/test.d.ts +0 -6
  85. package/lib/plugin/command/test.js +0 -25
  86. package/lib/plugin/index.d.ts +0 -27
  87. package/lib/plugin/index.js +0 -7
  88. package/lib/plugin/plugin.d.ts +0 -8
  89. package/lib/plugin/plugin.js +0 -68
  90. package/lib/plugin/utils.d.ts +0 -16
  91. package/lib/plugin/utils.js +0 -58
  92. package/lib/ui/download.d.ts +0 -5
  93. package/lib/ui/download.js +0 -61
  94. package/lib/utils/BaseCommand.d.ts +0 -8
  95. package/lib/utils/BaseCommand.js +0 -41
  96. package/lib/utils/SessionCommand.d.ts +0 -10
  97. package/lib/utils/SessionCommand.js +0 -47
  98. package/lib/utils/api.d.ts +0 -12
  99. package/lib/utils/api.js +0 -173
  100. package/lib/utils/audit.d.ts +0 -13
  101. package/lib/utils/audit.js +0 -129
  102. package/lib/utils/console.d.ts +0 -12
  103. package/lib/utils/console.js +0 -19
  104. package/lib/utils/errors.d.ts +0 -17
  105. package/lib/utils/errors.js +0 -100
  106. package/lib/utils/exercisesQueue.d.ts +0 -9
  107. package/lib/utils/exercisesQueue.js +0 -38
  108. package/lib/utils/fileQueue.d.ts +0 -40
  109. package/lib/utils/fileQueue.js +0 -168
  110. package/lib/utils/misc.d.ts +0 -1
  111. package/lib/utils/misc.js +0 -23
  112. package/lib/utils/validators.d.ts +0 -5
  113. package/lib/utils/validators.js +0 -17
  114. package/lib/utils/watcher.d.ts +0 -2
  115. package/lib/utils/watcher.js +0 -24
@@ -1,129 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const console_1 = require("./console");
4
- // eslint-disable-next-line
5
- const fetch = require("node-fetch");
6
- const fs = require("fs");
7
- exports.default = {
8
- // This function checks if a url is valid.
9
- isUrl: async (url, errors, counter) => {
10
- const regexUrl = /(https?:\/\/[\w./-]+)/gm;
11
- counter.links.total++;
12
- if (!regexUrl.test(url)) {
13
- counter.links.error++;
14
- errors.push({
15
- exercise: undefined,
16
- msg: `The repository value of the configuration file is not a link: ${url}`,
17
- });
18
- return false;
19
- }
20
- const res = await fetch(url, { method: 'HEAD' });
21
- if (!res.ok) {
22
- counter.links.error++;
23
- errors.push({
24
- exercise: undefined,
25
- msg: `The link of the repository is broken: ${url}`,
26
- });
27
- }
28
- return true;
29
- },
30
- checkForEmptySpaces: (str) => {
31
- const isEmpty = true;
32
- for (const letter of str) {
33
- if (letter !== ' ') {
34
- return false;
35
- }
36
- }
37
- return isEmpty;
38
- },
39
- checkLearnpackClean: (configObj, errors) => {
40
- var _a, _b, _c, _d, _e, _f, _g, _h;
41
- if ((((_a = configObj.config) === null || _a === void 0 ? void 0 : _a.outputPath) &&
42
- fs.existsSync((_b = configObj.config) === null || _b === void 0 ? void 0 : _b.outputPath)) ||
43
- fs.existsSync(`${(_c = configObj.config) === null || _c === void 0 ? void 0 : _c.dirPath}/_app`) ||
44
- fs.existsSync(`${(_d = configObj.config) === null || _d === void 0 ? void 0 : _d.dirPath}/reports`) ||
45
- fs.existsSync(`${(_e = configObj.config) === null || _e === void 0 ? void 0 : _e.dirPath}/resets`) ||
46
- fs.existsSync(`${(_f = configObj.config) === null || _f === void 0 ? void 0 : _f.dirPath}/app.tar.gz`) ||
47
- fs.existsSync(`${(_g = configObj.config) === null || _g === void 0 ? void 0 : _g.dirPath}/config.json`) ||
48
- fs.existsSync(`${(_h = configObj.config) === null || _h === void 0 ? void 0 : _h.dirPath}/vscode_queue.json`)) {
49
- errors.push({
50
- exercise: undefined,
51
- msg: 'You have to run learnpack clean command',
52
- });
53
- }
54
- },
55
- findInFile: (types, content) => {
56
- const regex = {
57
- relativeImages: /!\[.*]\s*\((((\.\/)?(\.{2}\/){1,5})(.*\/)*(.[^\s/]*\.[A-Za-z]{2,4})\S*)\)/gm,
58
- externalImages: /!\[.*]\((https?:\/(\/[^)/]+)+\/?)\)/gm,
59
- markdownLinks: /(\s)+\[.*]\((https?:\/(\/[^)/]+)+\/?)\)/gm,
60
- url: /(https?:\/\/[\w./-]+)/gm,
61
- uploadcare: /https:\/\/ucarecdn.com\/(?:.*\/)*([\w./-]+)/gm,
62
- };
63
- const validTypes = Object.keys(regex);
64
- if (!Array.isArray(types))
65
- types = [types];
66
- const findings = {};
67
- for (const type of types) {
68
- if (!validTypes.includes(type))
69
- throw new Error('Invalid type: ' + type);
70
- else
71
- findings[type] = {};
72
- }
73
- for (const type of types) {
74
- let m;
75
- while ((m = regex[type].exec(content)) !== null) {
76
- // This is necessary to avoid infinite loops with zero-width matches
77
- if (m.index === regex.lastIndex) {
78
- regex.lastIndex++;
79
- }
80
- // The result can be accessed through the `m`-variable.
81
- // m.forEach((match, groupIndex) => values.push(match));
82
- findings[type][m[0]] = {
83
- content: m[0],
84
- absUrl: m[1],
85
- mdUrl: m[2],
86
- relUrl: m[6],
87
- };
88
- }
89
- }
90
- return findings;
91
- },
92
- // This function checks if there are errors, and show them in the console at the end.
93
- showErrors: (errors, counter) => {
94
- return new Promise((resolve, reject) => {
95
- if (errors) {
96
- if (errors.length > 0) {
97
- console_1.default.log('Checking for errors...');
98
- for (const [i, error] of errors.entries())
99
- console_1.default.error(`${i + 1}) ${error.msg} ${error.exercise ? `(Exercise: ${error.exercise})` : ''}`);
100
- console_1.default.error(` We found ${errors.length} errors among ${counter.images.total} images, ${counter.links.total} link, ${counter.readmeFiles} README files and ${counter.exercises} exercises.`);
101
- process.exit(1);
102
- }
103
- else {
104
- console_1.default.success(`We didn't find any errors in this repository among ${counter.images.total} images, ${counter.links.total} link, ${counter.readmeFiles} README files and ${counter.exercises} exercises.`);
105
- process.exit(0);
106
- }
107
- }
108
- else {
109
- reject('Failed');
110
- }
111
- });
112
- },
113
- // This function checks if there are warnings, and show them in the console at the end.
114
- showWarnings: (warnings) => {
115
- return new Promise((resolve, reject) => {
116
- if (warnings) {
117
- if (warnings.length > 0) {
118
- console_1.default.log('Checking for warnings...');
119
- for (const [i, warning] of warnings.entries())
120
- console_1.default.warning(`${i + 1}) ${warning.msg} ${warning.exercise ? `File: ${warning.exercise}` : ''}`);
121
- }
122
- resolve('SUCCESS');
123
- }
124
- else {
125
- reject('Failed');
126
- }
127
- });
128
- },
129
- };
@@ -1,12 +0,0 @@
1
- declare const _default: {
2
- _debug: boolean;
3
- startDebug: () => void;
4
- log: (msg: string | Array<string>, ...args: Array<any>) => void;
5
- error: (msg: string, ...args: Array<any>) => void;
6
- success: (msg: string, ...args: Array<any>) => void;
7
- info: (msg: string, ...args: Array<any>) => void;
8
- help: (msg: string) => void;
9
- debug(...args: Array<any>): void;
10
- warning: (msg: string) => void;
11
- };
12
- export default _default;
@@ -1,19 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const chalk = require("chalk");
4
- exports.default = {
5
- // _debug: true,
6
- _debug: process.env.DEBUG === 'true',
7
- startDebug: function () {
8
- this._debug = true;
9
- },
10
- log: (msg, ...args) => console.log(chalk.gray(msg), ...args),
11
- error: (msg, ...args) => console.log(chalk.red('⨉ ' + msg), ...args),
12
- success: (msg, ...args) => console.log(chalk.green('✓ ' + msg), ...args),
13
- info: (msg, ...args) => console.log(chalk.blue('ⓘ ' + msg), ...args),
14
- help: (msg) => console.log(`${chalk.white.bold('⚠ help:')} ${chalk.white(msg)}`),
15
- debug(...args) {
16
- this._debug && console.log(chalk.magentaBright('⚠ debug: '), args);
17
- },
18
- warning: (msg) => console.log(`${chalk.yellow('⚠ warning:')} ${chalk.yellow(msg)}`),
19
- };
@@ -1,17 +0,0 @@
1
- import { ISolution, IError } from '../models/errors';
2
- export declare const getSolution: (slug?: string | undefined) => ISolution;
3
- export declare const ValidationError: (error: IError | string) => IError;
4
- export declare const NotFoundError: (error: IError | string) => IError;
5
- export declare const CompilerError: (error: IError | string) => IError;
6
- export declare const TestingError: (error: IError | string) => IError;
7
- export declare const AuthError: (error: IError | string) => IError;
8
- export declare const InternalError: (error: IError | string) => IError;
9
- declare const _default: {
10
- ValidationError: (error: string | IError) => IError;
11
- CompilerError: (error: string | IError) => IError;
12
- TestingError: (error: string | IError) => IError;
13
- NotFoundError: (error: string | IError) => IError;
14
- InternalError: (error: string | IError) => IError;
15
- AuthError: (error: string | IError) => IError;
16
- };
17
- export default _default;
@@ -1,100 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.InternalError = exports.AuthError = exports.TestingError = exports.CompilerError = exports.NotFoundError = exports.ValidationError = exports.getSolution = void 0;
4
- const console_1 = require("./console");
5
- // eslint-disable-next-line
6
- const fetch = require("node-fetch");
7
- let solutions = null;
8
- const uknown = {
9
- video: 'https://www.youtube.com/watch?v=gD1Sa99GiE4',
10
- message: 'Uknown internal error',
11
- slug: 'uknown',
12
- gif: 'https://github.com/breatheco-de/breathecode-cli/blob/master/docs/errors/uknown.gif?raw=true',
13
- };
14
- exports.getSolution = (slug) => {
15
- if (!slug) {
16
- console_1.default.debug('Getting solution templates from the learnpack repository');
17
- }
18
- else {
19
- console_1.default.debug(`Getting solution for ${slug}`, solutions);
20
- }
21
- if (!solutions) {
22
- console_1.default.debug('Fetching for errors.json on github');
23
- fetch('https://raw.githubusercontent.com/breatheco-de/breathecode-cli/master/docs/errors/errors.json')
24
- .then((r) => r.json())
25
- .then(function (_s) {
26
- solutions = _s;
27
- });
28
- return uknown;
29
- }
30
- return typeof solutions[slug || ''] === 'undefined' || !slug ?
31
- uknown :
32
- solutions[slug];
33
- };
34
- exports.ValidationError = (error) => {
35
- const message = error.message || error;
36
- const _err = new Error(message);
37
- _err.status = 400;
38
- _err.type = 'validation-error';
39
- const sol = exports.getSolution(error.slug);
40
- _err.video = sol.video;
41
- _err.gif = sol.gif;
42
- _err.message = typeof message === 'string' ? message : sol.message;
43
- return _err;
44
- };
45
- exports.NotFoundError = (error) => {
46
- const message = error.message || error;
47
- const _err = new Error(message);
48
- _err.status = 400;
49
- _err.type = 'not-found-error';
50
- const sol = exports.getSolution(error.slug);
51
- _err.video = sol.video;
52
- _err.gif = sol.gif;
53
- _err.message = typeof message === 'string' ? message : sol.message;
54
- return _err;
55
- };
56
- exports.CompilerError = (error) => {
57
- const message = error.message || error;
58
- const _err = new Error(message);
59
- _err.status = 400;
60
- _err.type = 'compiler-error';
61
- const sol = exports.getSolution(error.slug);
62
- _err.video = sol.video;
63
- _err.gif = sol.gif;
64
- _err.message = typeof message === 'string' ? message : sol.message;
65
- return _err;
66
- };
67
- exports.TestingError = (error) => {
68
- const message = error.message || error;
69
- const _err = new Error(message);
70
- _err.status = 400;
71
- _err.type = 'testing-error';
72
- return _err;
73
- };
74
- exports.AuthError = (error) => {
75
- const message = error.message || error;
76
- const _err = new Error(message);
77
- _err.status = 403;
78
- _err.type = 'auth-error';
79
- return _err;
80
- };
81
- exports.InternalError = (error) => {
82
- const message = error.message || error;
83
- const _err = new Error(message);
84
- _err.status = 500;
85
- _err.type = 'internal-error';
86
- const sol = exports.getSolution(error.slug);
87
- _err.video = sol.video;
88
- _err.gif = sol.gif;
89
- _err.message = typeof message === 'string' ? message : sol.message;
90
- return _err;
91
- };
92
- exports.getSolution();
93
- exports.default = {
94
- ValidationError: exports.ValidationError,
95
- CompilerError: exports.CompilerError,
96
- TestingError: exports.TestingError,
97
- NotFoundError: exports.NotFoundError,
98
- InternalError: exports.InternalError,
99
- AuthError: exports.AuthError,
100
- };
@@ -1,9 +0,0 @@
1
- import { IExercise } from "../models/exercise-obj";
2
- declare class ExercisesQueue {
3
- exercises: IExercise[];
4
- constructor(exercises: any);
5
- pop(): IExercise | undefined;
6
- isEmpty(): boolean;
7
- size(): number;
8
- }
9
- export default ExercisesQueue;
@@ -1,38 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- class Exercise {
4
- constructor(exercise) {
5
- this.exercise = exercise;
6
- }
7
- test(sessionConfig, config, socket) {
8
- if (this.exercise.language) {
9
- socket.log("testing", `Testing exercise ${this.exercise.slug} using ${this.exercise.language} engine`);
10
- sessionConfig.runHook("action", {
11
- action: "test",
12
- socket,
13
- configuration: config,
14
- exercise: this.exercise,
15
- });
16
- }
17
- else {
18
- socket.onTestingFinished({ result: "success" });
19
- }
20
- }
21
- }
22
- class ExercisesQueue {
23
- constructor(exercises) {
24
- this.exercises = exercises.map((exercise) => {
25
- return new Exercise(exercise);
26
- });
27
- }
28
- pop() {
29
- return this.exercises.shift();
30
- }
31
- isEmpty() {
32
- return this.size() === 0;
33
- }
34
- size() {
35
- return this.exercises.length;
36
- }
37
- }
38
- exports.default = ExercisesQueue;
@@ -1,40 +0,0 @@
1
- declare const _default: {
2
- events: {
3
- START_EXERCISE: string;
4
- INIT: string;
5
- RUNNING: string;
6
- END: string;
7
- RESET_EXERCISE: string;
8
- OPEN_FILES: string;
9
- OPEN_WINDOW: string;
10
- INSTRUCTIONS_CLOSED: string;
11
- };
12
- dispatcher: (opts?: any) => {
13
- enqueue: (name: string, data?: any) => void;
14
- events: {
15
- START_EXERCISE: string;
16
- INIT: string;
17
- RUNNING: string;
18
- END: string;
19
- RESET_EXERCISE: string;
20
- OPEN_FILES: string;
21
- OPEN_WINDOW: string;
22
- INSTRUCTIONS_CLOSED: string;
23
- };
24
- };
25
- listener: (opts?: any) => {
26
- onPull: (callback: (T?: any) => any) => boolean;
27
- onReset: (callback: (T?: any) => any) => boolean;
28
- events: {
29
- START_EXERCISE: string;
30
- INIT: string;
31
- RUNNING: string;
32
- END: string;
33
- RESET_EXERCISE: string;
34
- OPEN_FILES: string;
35
- OPEN_WINDOW: string;
36
- INSTRUCTIONS_CLOSED: string;
37
- };
38
- };
39
- };
40
- export default _default;
@@ -1,168 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const console_1 = require("../utils/console");
4
- const fs = require("fs");
5
- // import em from "events"
6
- const XXH = require("xxhashjs");
7
- // possible events to dispatch
8
- const events = {
9
- START_EXERCISE: "start_exercise",
10
- INIT: "initializing",
11
- RUNNING: "configuration_loaded",
12
- END: "connection_ended",
13
- RESET_EXERCISE: "reset_exercise",
14
- OPEN_FILES: "open_files",
15
- OPEN_WINDOW: "open_window",
16
- INSTRUCTIONS_CLOSED: "instructions_closed",
17
- };
18
- let options = {
19
- path: null,
20
- create: false,
21
- };
22
- let lastHash = null;
23
- let watcher = null; // subscribe to file and listen to changes
24
- let actions = null; // action queue
25
- const loadDispatcher = (opts) => {
26
- actions = [{ name: "initializing", time: now() }];
27
- console_1.default.debug(`Loading from ${opts.path}`);
28
- let exists = fs.existsSync(opts.path);
29
- if (opts.create) {
30
- if (exists)
31
- actions.push({ name: "reset", time: now() });
32
- fs.writeFileSync(opts.path, JSON.stringify(actions), { flag: "w" });
33
- exists = true;
34
- }
35
- if (!exists)
36
- throw new Error(`Invalid queue path, missing file at: ${opts.path}`);
37
- let incomingActions = [];
38
- try {
39
- const content = fs.readFileSync(opts.path, "utf-8");
40
- incomingActions = JSON.parse(content);
41
- if (!Array.isArray(incomingActions))
42
- incomingActions = [];
43
- }
44
- catch (_a) {
45
- incomingActions = [];
46
- console_1.default.debug("Error loading VSCode Actions file");
47
- }
48
- console_1.default.debug("Actions load ", incomingActions);
49
- return incomingActions;
50
- };
51
- // eslint-disable-next-line
52
- const enqueue = (name, data = undefined) => {
53
- if (!Object.values(events).includes(name)) {
54
- console_1.default.debug(`Invalid event ${name}`);
55
- throw new Error(`Invalid action ${name}`);
56
- }
57
- if (!actions)
58
- actions = [];
59
- actions.push({ name, time: now(), data: data });
60
- console_1.default.debug(`EMIT -> ${name}:Exporting changes to ${options.path}`);
61
- return fs.writeFileSync(options.path || "", JSON.stringify(actions));
62
- };
63
- const now = () => {
64
- const hrTime = process.hrtime();
65
- // eslint-disable-next-line
66
- const htTime0 = hrTime[0] * 1000000;
67
- return (htTime0 + hrTime[1]) / 1000;
68
- };
69
- const loadFile = (filePath) => {
70
- if (!fs.existsSync(filePath))
71
- throw new Error(`No queue.json file to load on ${filePath}`);
72
- const content = fs.readFileSync(filePath, "utf8");
73
- const newHash = XXH.h32(content, 43981).toString(16);
74
- const isUpdated = lastHash !== newHash;
75
- lastHash = newHash;
76
- const incomingActions = JSON.parse(content);
77
- return { isUpdated, incomingActions };
78
- };
79
- const dequeue = () => {
80
- // first time dequeue loads
81
- if (!actions)
82
- actions = [];
83
- const { isUpdated, incomingActions } = loadFile(options.path || "");
84
- if (!isUpdated) {
85
- /**
86
- * make sure no tasks are executed from the queue by matching both
87
- * queues (the incoming with current one)
88
- */
89
- actions = incomingActions;
90
- console_1.default.debug(`No new actions to process: ${actions.length}/${incomingActions.length}`);
91
- return null;
92
- }
93
- // do i need to reset actions to zero?
94
- if (actions.length > 0 && actions[0].time !== incomingActions[0].time) {
95
- actions = [];
96
- }
97
- const action = incomingActions[incomingActions.length - 1];
98
- console_1.default.debug("Dequeing action ", action);
99
- actions.push(action);
100
- return action;
101
- };
102
- const pull = (callback) => {
103
- console_1.default.debug("Pulling actions");
104
- let incoming = dequeue();
105
- while (incoming) {
106
- callback(incoming);
107
- incoming = dequeue();
108
- }
109
- };
110
- const reset = (callback) => {
111
- console_1.default.debug("Queue reseted");
112
- actions = [];
113
- if (fs.existsSync(options.path || "")) {
114
- fs.writeFileSync(options.path || "", "[]");
115
- callback();
116
- }
117
- };
118
- const onPull = (callback) => {
119
- // eslint-disable-next-line
120
- const chokidar = require("chokidar");
121
- console_1.default.debug("Starting to listen...");
122
- try {
123
- loadFile(options.path || "");
124
- }
125
- catch (_a) {
126
- console_1.default.debug("No previeues queue file, waiting for it to be created...");
127
- }
128
- if (!watcher) {
129
- console_1.default.debug(`Watching ${options.path}`);
130
- watcher = chokidar.watch(`${options.path}`, {
131
- persistent: true,
132
- });
133
- }
134
- else
135
- console_1.default.debug("Already watching queue path");
136
- watcher.on("add", () => pull(callback)).on("change", () => pull(callback));
137
- return true;
138
- };
139
- const onReset = (callback) => {
140
- // eslint-disable-next-line
141
- const chokidar = require("chokidar");
142
- if (!watcher) {
143
- console_1.default.debug(`Watching ${options.path}`);
144
- watcher = chokidar.watch(`${options.path}`, {
145
- persistent: true,
146
- });
147
- }
148
- watcher.on("unlink", () => reset(callback));
149
- return true;
150
- };
151
- exports.default = {
152
- events,
153
- dispatcher: (opts = {}) => {
154
- if (!actions) {
155
- options = Object.assign(Object.assign({}, options), opts);
156
- console_1.default.debug("Initializing queue dispatcher", options);
157
- actions = loadDispatcher(options);
158
- }
159
- return { enqueue, events };
160
- },
161
- listener: (opts = {}) => {
162
- if (!actions) {
163
- options = Object.assign(Object.assign({}, options), opts);
164
- console_1.default.debug("Initializing queue listener", options);
165
- }
166
- return { onPull, onReset, events };
167
- },
168
- };
@@ -1 +0,0 @@
1
- export declare const prioritizeHTMLFile: (entryFiles: string[]) => string[];
package/lib/utils/misc.js DELETED
@@ -1,23 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.prioritizeHTMLFile = void 0;
4
- exports.prioritizeHTMLFile = (entryFiles) => {
5
- let files = [];
6
- // Find the html file and put it as latest in the files array
7
- // in order to keep the html file opened in vscode plugin
8
- const index = entryFiles.findIndex(file => {
9
- return /.*\.html$/.test(file);
10
- });
11
- if (index !== -1) {
12
- for (const [i, entryFile] of entryFiles.entries()) {
13
- if (i !== index) {
14
- files.push(entryFile);
15
- }
16
- }
17
- files.push(entryFiles[index]);
18
- }
19
- else {
20
- files = entryFiles;
21
- }
22
- return files;
23
- };
@@ -1,5 +0,0 @@
1
- export declare function validURL(str: string): boolean;
2
- declare const _default: {
3
- validURL: typeof validURL;
4
- };
5
- export default _default;
@@ -1,17 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.validURL = void 0;
4
- function validURL(str) {
5
- if (!str.includes('github.com')) {
6
- return false;
7
- }
8
- const pattern = new RegExp('^(https?:\\/\\/)?' + // protocol
9
- '((([a-z\\d]([a-z\\d-]*[a-z\\d])*)\\.)+[a-z]{2,}|' + // domain name
10
- '((\\d{1,3}\\.){3}\\d{1,3}))' + // OR ip (v4) address
11
- '(\\:\\d+)?(\\/[-a-z\\d%_.~+]*)*' + // port and path
12
- '(\\?[;&a-z\\d%_.~+=-]*)?' + // query string
13
- '(\\#[-a-z\\d_]*)?$', 'i'); // fragment locator
14
- return !!pattern.test(str);
15
- }
16
- exports.validURL = validURL;
17
- exports.default = { validURL };
@@ -1,2 +0,0 @@
1
- declare const _default: (path: string) => Promise<unknown>;
2
- export default _default;
@@ -1,24 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const chokidar = require("chokidar");
4
- const debounce = require("debounce");
5
- exports.default = (path) => new Promise((resolve /* , reject */) => {
6
- const watcher = chokidar.watch(path, {
7
- // TODO: This watcher is not ready yet
8
- // ignored: (_path: string, _stats: any) => {
9
- // return new RegExp(_path)
10
- // },
11
- persistent: true,
12
- depth: 1,
13
- ignoreInitial: true,
14
- });
15
- const onChange = (eventname, _filename) => {
16
- resolve(eventname /* , filename */);
17
- };
18
- watcher.on("all", debounce(onChange, 500, true));
19
- // watcher.on('all', onChange)
20
- process.on("SIGINT", function () {
21
- watcher.close();
22
- process.exit();
23
- });
24
- });