@learnpack/learnpack 2.0.18 → 2.0.19

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 (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
- });