@datatruck/cli 0.40.0 → 0.40.2
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/lib/actions/BackupAction.js +19 -12
- package/lib/actions/CopyAction.js +20 -12
- package/lib/actions/ExportAction.js +12 -5
- package/lib/actions/RestoreAction.js +12 -5
- package/lib/cli.js +2 -3
- package/lib/repositories/ResticRepository.d.ts +2 -2
- package/lib/tasks/MysqlDumpTask.js +12 -5
- package/lib/tasks/ScriptTask.js +2 -2
- package/lib/utils/async-process.d.ts +0 -5
- package/lib/utils/async.d.ts +0 -1
- package/lib/utils/async.js +1 -2
- package/lib/utils/bytes.js +2 -3
- package/lib/utils/cli.d.ts +0 -1
- package/lib/utils/cli.js +12 -12
- package/lib/utils/cron.js +1 -2
- package/lib/utils/crypto.js +2 -3
- package/lib/utils/datatruck/client.d.ts +1 -2
- package/lib/utils/datatruck/client.js +3 -3
- package/lib/utils/datatruck/command.js +3 -3
- package/lib/utils/datatruck/config.js +15 -15
- package/lib/utils/datatruck/cron-server.js +1 -2
- package/lib/utils/datatruck/job.js +4 -5
- package/lib/utils/datatruck/paths.js +2 -3
- package/lib/utils/datatruck/report-list.js +1 -2
- package/lib/utils/datatruck/repository-server.d.ts +0 -1
- package/lib/utils/datatruck/repository-server.js +7 -3
- package/lib/utils/datatruck/repository.js +4 -5
- package/lib/utils/datatruck/snapshot.js +1 -2
- package/lib/utils/datatruck/task.js +1 -2
- package/lib/utils/date.js +4 -5
- package/lib/utils/exit.js +4 -5
- package/lib/utils/fs.d.ts +0 -3
- package/lib/utils/fs.js +40 -40
- package/lib/utils/git.d.ts +1 -1
- package/lib/utils/http.d.ts +3 -7
- package/lib/utils/http.js +17 -17
- package/lib/utils/list.d.ts +2 -2
- package/lib/utils/list.js +36 -26
- package/lib/utils/logs.js +3 -3
- package/lib/utils/math.js +2 -2
- package/lib/utils/mongodb.js +2 -3
- package/lib/utils/mysql.d.ts +0 -1
- package/lib/utils/mysql.js +2 -3
- package/lib/utils/object.js +6 -6
- package/lib/utils/options.js +5 -4
- package/lib/utils/process.d.ts +0 -1
- package/lib/utils/process.js +3 -4
- package/lib/utils/progress.d.ts +0 -2
- package/lib/utils/progress.js +3 -3
- package/lib/utils/reportSteps.js +2 -3
- package/lib/utils/spawnSteps.js +2 -3
- package/lib/utils/stream.d.ts +0 -1
- package/lib/utils/stream.js +2 -3
- package/lib/utils/string.js +11 -12
- package/lib/utils/tar.js +6 -7
- package/lib/utils/temp.d.ts +0 -1
- package/lib/utils/temp.js +10 -10
- package/lib/utils/virtual-fs.js +2 -2
- package/lib/utils/watcher.js +1 -2
- package/package.json +14 -13
|
@@ -1,6 +1,20 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.params = exports.dbNameParams = exports.pkgRestorePathParams = exports.pkgExcludeParams = exports.pkgIncludeParams = exports.pkgPathParams = void 0;
|
|
4
|
+
exports.findRepositoryOrFail = findRepositoryOrFail;
|
|
5
|
+
exports.findPackageOrFail = findPackageOrFail;
|
|
6
|
+
exports.findPackageRepositoryConfig = findPackageRepositoryConfig;
|
|
7
|
+
exports.filterRepository = filterRepository;
|
|
8
|
+
exports.sortReposByType = sortReposByType;
|
|
9
|
+
exports.ensureSameRepositoryType = ensureSameRepositoryType;
|
|
10
|
+
exports.filterRepositoryByEnabled = filterRepositoryByEnabled;
|
|
11
|
+
exports.filterPackages = filterPackages;
|
|
12
|
+
exports.resolvePackagePath = resolvePackagePath;
|
|
13
|
+
exports.resolveDatabaseName = resolveDatabaseName;
|
|
14
|
+
exports.resolvePackage = resolvePackage;
|
|
15
|
+
exports.resolvePackages = resolvePackages;
|
|
16
|
+
exports.createPkgFilter = createPkgFilter;
|
|
17
|
+
exports.createTaskFilter = createTaskFilter;
|
|
4
18
|
const error_1 = require("../error");
|
|
5
19
|
const string_1 = require("../string");
|
|
6
20
|
const temp_1 = require("../temp");
|
|
@@ -10,19 +24,16 @@ function findRepositoryOrFail(config, repositoryName) {
|
|
|
10
24
|
throw new error_1.AppError(`Repository '${repositoryName}' not found in the config`);
|
|
11
25
|
return repo;
|
|
12
26
|
}
|
|
13
|
-
exports.findRepositoryOrFail = findRepositoryOrFail;
|
|
14
27
|
function findPackageOrFail(config, packageName) {
|
|
15
28
|
const pkg = config.packages.find((v) => v.name === packageName);
|
|
16
29
|
if (!pkg)
|
|
17
30
|
throw new error_1.AppError(`Package '${packageName}' not found in the config`);
|
|
18
31
|
return pkg;
|
|
19
32
|
}
|
|
20
|
-
exports.findPackageOrFail = findPackageOrFail;
|
|
21
33
|
function findPackageRepositoryConfig(pkg, repo) {
|
|
22
34
|
return pkg.repositoryConfigs?.find((config) => config.type === repo.type &&
|
|
23
35
|
(!config.names || config.names.includes(repo.name)))?.config;
|
|
24
36
|
}
|
|
25
|
-
exports.findPackageRepositoryConfig = findPackageRepositoryConfig;
|
|
26
37
|
function filterRepository(repositories, options) {
|
|
27
38
|
return repositories.filter((r) => {
|
|
28
39
|
if (options.include && !options.include.includes(r.name))
|
|
@@ -34,7 +45,6 @@ function filterRepository(repositories, options) {
|
|
|
34
45
|
return true;
|
|
35
46
|
});
|
|
36
47
|
}
|
|
37
|
-
exports.filterRepository = filterRepository;
|
|
38
48
|
function sortReposByType(repositories, types) {
|
|
39
49
|
const groups = repositories.reduce((group, item) => {
|
|
40
50
|
if (!group[item.type])
|
|
@@ -53,7 +63,6 @@ function sortReposByType(repositories, types) {
|
|
|
53
63
|
}
|
|
54
64
|
return result;
|
|
55
65
|
}
|
|
56
|
-
exports.sortReposByType = sortReposByType;
|
|
57
66
|
function ensureSameRepositoryType(a, b) {
|
|
58
67
|
if (a.type !== b.type) {
|
|
59
68
|
const names = [a.name, b.name].join(" and ");
|
|
@@ -61,7 +70,6 @@ function ensureSameRepositoryType(a, b) {
|
|
|
61
70
|
throw new error_1.AppError(`Incompatible repository types between ${names} (${types})`);
|
|
62
71
|
}
|
|
63
72
|
}
|
|
64
|
-
exports.ensureSameRepositoryType = ensureSameRepositoryType;
|
|
65
73
|
function filterRepositoryByEnabled(repository, action) {
|
|
66
74
|
const enabled = repository.enabled ?? true;
|
|
67
75
|
if (typeof enabled === "boolean")
|
|
@@ -69,7 +77,6 @@ function filterRepositoryByEnabled(repository, action) {
|
|
|
69
77
|
const defaults = enabled["defaults"] ?? true;
|
|
70
78
|
return action ? enabled[action] ?? defaults : true;
|
|
71
79
|
}
|
|
72
|
-
exports.filterRepositoryByEnabled = filterRepositoryByEnabled;
|
|
73
80
|
function filterPackages(config, options) {
|
|
74
81
|
const filterRepo = (0, string_1.createPatternFilter)(options.repositoryNames);
|
|
75
82
|
const filterRepoType = (0, string_1.createPatternFilter)(options.repositoryTypes);
|
|
@@ -93,7 +100,6 @@ function filterPackages(config, options) {
|
|
|
93
100
|
filterPkg(pkg.name));
|
|
94
101
|
});
|
|
95
102
|
}
|
|
96
|
-
exports.filterPackages = filterPackages;
|
|
97
103
|
function resolvePackagePath(value, params) {
|
|
98
104
|
return (0, string_1.render)(value, {
|
|
99
105
|
...params,
|
|
@@ -102,11 +108,9 @@ function resolvePackagePath(value, params) {
|
|
|
102
108
|
},
|
|
103
109
|
});
|
|
104
110
|
}
|
|
105
|
-
exports.resolvePackagePath = resolvePackagePath;
|
|
106
111
|
function resolveDatabaseName(value, params) {
|
|
107
112
|
return (0, string_1.render)(value, params);
|
|
108
113
|
}
|
|
109
|
-
exports.resolveDatabaseName = resolveDatabaseName;
|
|
110
114
|
function resolvePackage(pkg, params) {
|
|
111
115
|
pkg = Object.assign({}, pkg);
|
|
112
116
|
const pkgParams = {
|
|
@@ -127,11 +131,9 @@ function resolvePackage(pkg, params) {
|
|
|
127
131
|
});
|
|
128
132
|
return pkg;
|
|
129
133
|
}
|
|
130
|
-
exports.resolvePackage = resolvePackage;
|
|
131
134
|
function resolvePackages(packages, params) {
|
|
132
135
|
return packages.map((pkg) => resolvePackage(pkg, params));
|
|
133
136
|
}
|
|
134
|
-
exports.resolvePackages = resolvePackages;
|
|
135
137
|
exports.pkgPathParams = {
|
|
136
138
|
action: "{action}",
|
|
137
139
|
packageName: "{packageName}",
|
|
@@ -170,7 +172,6 @@ function createPkgFilter(patterns) {
|
|
|
170
172
|
const { include, exclude } = (0, string_1.splitPatterns)(patterns, map);
|
|
171
173
|
return (subject) => (0, string_1.match)(subject, include, exclude);
|
|
172
174
|
}
|
|
173
|
-
exports.createPkgFilter = createPkgFilter;
|
|
174
175
|
function createTaskFilter(patterns) {
|
|
175
176
|
if (patterns === undefined)
|
|
176
177
|
return () => true;
|
|
@@ -181,4 +182,3 @@ function createTaskFilter(patterns) {
|
|
|
181
182
|
return (0, string_1.match)(subject, include, exclude);
|
|
182
183
|
};
|
|
183
184
|
}
|
|
184
|
-
exports.createTaskFilter = createTaskFilter;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createCronServer =
|
|
3
|
+
exports.createCronServer = createCronServer;
|
|
4
4
|
const ConfigAction_1 = require("../../actions/ConfigAction");
|
|
5
5
|
const cli_1 = require("../cli");
|
|
6
6
|
const cron_1 = require("../cron");
|
|
@@ -86,4 +86,3 @@ async function createCronServer(options) {
|
|
|
86
86
|
};
|
|
87
87
|
return handler;
|
|
88
88
|
}
|
|
89
|
-
exports.createCronServer = createCronServer;
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.getJobCliOptions = getJobCliOptions;
|
|
4
|
+
exports.runJob = runJob;
|
|
5
|
+
exports.runCronJob = runCronJob;
|
|
4
6
|
const async_process_1 = require("../async-process");
|
|
5
7
|
const cli_1 = require("../cli");
|
|
6
8
|
const fs_1 = require("../fs");
|
|
@@ -32,10 +34,9 @@ function getJobCliOptions(job) {
|
|
|
32
34
|
const Command = command_1.datatruckCommands[job.action];
|
|
33
35
|
const command = new Command({ config: { packages: [], repositories: [] } }, {});
|
|
34
36
|
return (0, options_1.stringifyOptions)(command.optionsConfig, job.action === "prune"
|
|
35
|
-
?
|
|
37
|
+
? { ...job.options, confirm: true }
|
|
36
38
|
: job.options);
|
|
37
39
|
}
|
|
38
|
-
exports.getJobCliOptions = getJobCliOptions;
|
|
39
40
|
async function runJob(job, name, config) {
|
|
40
41
|
const cliOptions = getJobCliOptions(job);
|
|
41
42
|
const [node, bin] = process.argv;
|
|
@@ -56,7 +57,6 @@ async function runJob(job, name, config) {
|
|
|
56
57
|
stdio: "inherit",
|
|
57
58
|
});
|
|
58
59
|
}
|
|
59
|
-
exports.runJob = runJob;
|
|
60
60
|
async function runCronJob(job, name, config) {
|
|
61
61
|
let pid = 0;
|
|
62
62
|
try {
|
|
@@ -106,4 +106,3 @@ async function runCronJob(job, name, config) {
|
|
|
106
106
|
console.error(error);
|
|
107
107
|
}
|
|
108
108
|
}
|
|
109
|
-
exports.runCronJob = runCronJob;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.parsePaths = parsePaths;
|
|
4
|
+
exports.parseBackupPaths = parseBackupPaths;
|
|
4
5
|
const spawnSteps_1 = require("../spawnSteps");
|
|
5
6
|
async function parsePaths(values, options) {
|
|
6
7
|
let paths = [];
|
|
@@ -19,7 +20,6 @@ async function parsePaths(values, options) {
|
|
|
19
20
|
}
|
|
20
21
|
return paths;
|
|
21
22
|
}
|
|
22
|
-
exports.parsePaths = parsePaths;
|
|
23
23
|
async function parseBackupPaths(paths, options) {
|
|
24
24
|
return parsePaths(paths, {
|
|
25
25
|
cwd: options.path,
|
|
@@ -31,4 +31,3 @@ async function parseBackupPaths(paths, options) {
|
|
|
31
31
|
},
|
|
32
32
|
});
|
|
33
33
|
}
|
|
34
|
-
exports.parseBackupPaths = parseBackupPaths;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createReportListTasks =
|
|
3
|
+
exports.createReportListTasks = createReportListTasks;
|
|
4
4
|
const error_1 = require("../error");
|
|
5
5
|
const reportSteps_1 = require("../reportSteps");
|
|
6
6
|
const spawnSteps_1 = require("../spawnSteps");
|
|
@@ -55,4 +55,3 @@ function createReportListTasks(list, options) {
|
|
|
55
55
|
});
|
|
56
56
|
});
|
|
57
57
|
}
|
|
58
|
-
exports.createReportListTasks = createReportListTasks;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.headerKey = void 0;
|
|
4
|
+
exports.createDatatruckRepositoryServer = createDatatruckRepositoryServer;
|
|
4
5
|
const ConfigAction_1 = require("../../actions/ConfigAction");
|
|
5
6
|
const cli_1 = require("../cli");
|
|
6
7
|
const http_1 = require("../http");
|
|
@@ -65,7 +66,8 @@ function createDatatruckRepositoryServer(inOptions, config = {}) {
|
|
|
65
66
|
const id = counter.next();
|
|
66
67
|
let requestError;
|
|
67
68
|
let responseError;
|
|
68
|
-
|
|
69
|
+
const requestErrorListener = (error) => (requestError = error);
|
|
70
|
+
req.on("error", requestErrorListener);
|
|
69
71
|
res.on("error", (error) => (responseError = error));
|
|
70
72
|
res.setHeader("X-Accel-Buffering", "no");
|
|
71
73
|
try {
|
|
@@ -88,16 +90,19 @@ function createDatatruckRepositoryServer(inOptions, config = {}) {
|
|
|
88
90
|
else if (action === "upload") {
|
|
89
91
|
const [target] = params;
|
|
90
92
|
const path = fs.resolvePath(target);
|
|
93
|
+
req.off("error", requestErrorListener);
|
|
91
94
|
await (0, http_1.recvFile)(req, res, path);
|
|
92
95
|
}
|
|
93
96
|
else if (action === "download") {
|
|
94
97
|
const [target] = params;
|
|
95
98
|
const path = fs.resolvePath(target);
|
|
99
|
+
req.off("error", requestErrorListener);
|
|
96
100
|
await (0, http_1.sendFile)(req, res, path, {
|
|
97
101
|
contentLength: options.contentLength ?? true,
|
|
98
102
|
});
|
|
99
103
|
}
|
|
100
104
|
else if (action === "writeFile") {
|
|
105
|
+
req.off("error", requestErrorListener);
|
|
101
106
|
const data = await (0, http_1.readRequestData)(req);
|
|
102
107
|
const [target] = params;
|
|
103
108
|
await fs.writeFile(target, data);
|
|
@@ -135,4 +140,3 @@ function createDatatruckRepositoryServer(inOptions, config = {}) {
|
|
|
135
140
|
server.keepAliveTimeout = inOptions.keepAliveTimeout;
|
|
136
141
|
return server;
|
|
137
142
|
}
|
|
138
|
-
exports.createDatatruckRepositoryServer = createDatatruckRepositoryServer;
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.getRepoConstructor = getRepoConstructor;
|
|
4
|
+
exports.createRepo = createRepo;
|
|
5
|
+
exports.createAndInitRepo = createAndInitRepo;
|
|
6
|
+
exports.initSnapshotPath = initSnapshotPath;
|
|
4
7
|
const DatatruckRepository_1 = require("../../repositories/DatatruckRepository");
|
|
5
8
|
const GitRepository_1 = require("../../repositories/GitRepository");
|
|
6
9
|
const ResticRepository_1 = require("../../repositories/ResticRepository");
|
|
@@ -17,21 +20,17 @@ function getRepoConstructor(type) {
|
|
|
17
20
|
throw new error_1.AppError(`Invalid repository type: ${type}`);
|
|
18
21
|
return Constructor;
|
|
19
22
|
}
|
|
20
|
-
exports.getRepoConstructor = getRepoConstructor;
|
|
21
23
|
function createRepo(repository, verbose) {
|
|
22
24
|
const Constructor = getRepoConstructor(repository.type);
|
|
23
25
|
return new Constructor(repository, verbose);
|
|
24
26
|
}
|
|
25
|
-
exports.createRepo = createRepo;
|
|
26
27
|
async function createAndInitRepo(repository, verbose) {
|
|
27
28
|
const repo = createRepo(repository, verbose);
|
|
28
29
|
await repo.init({ options: { verbose } });
|
|
29
30
|
return repo;
|
|
30
31
|
}
|
|
31
|
-
exports.createAndInitRepo = createAndInitRepo;
|
|
32
32
|
async function initSnapshotPath(path, minFreeDiskSpace) {
|
|
33
33
|
await (0, fs_1.initEmptyDir)(path);
|
|
34
34
|
if (minFreeDiskSpace)
|
|
35
35
|
await (0, fs_1.ensureFreeDiskSpace)([path], minFreeDiskSpace);
|
|
36
36
|
}
|
|
37
|
-
exports.initSnapshotPath = initSnapshotPath;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.groupAndFilter =
|
|
3
|
+
exports.groupAndFilter = groupAndFilter;
|
|
4
4
|
const date_1 = require("../date");
|
|
5
5
|
const object_1 = require("../object");
|
|
6
6
|
function groupAndFilter(snapshots, groupKeys, inFilter) {
|
|
@@ -18,4 +18,3 @@ function groupAndFilter(snapshots, groupKeys, inFilter) {
|
|
|
18
18
|
.map((snapshot) => keep.find((v) => v.item === snapshot))
|
|
19
19
|
.filter((v) => !!v);
|
|
20
20
|
}
|
|
21
|
-
exports.groupAndFilter = groupAndFilter;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createTask =
|
|
3
|
+
exports.createTask = createTask;
|
|
4
4
|
const GitTask_1 = require("../../tasks/GitTask");
|
|
5
5
|
const MariadbTask_1 = require("../../tasks/MariadbTask");
|
|
6
6
|
const MongoDumpTask_1 = require("../../tasks/MongoDumpTask");
|
|
@@ -35,4 +35,3 @@ function createTask(task) {
|
|
|
35
35
|
throw new error_1.AppError(`Invalid task name: ${task["name"]}`);
|
|
36
36
|
}
|
|
37
37
|
}
|
|
38
|
-
exports.createTask = createTask;
|
package/lib/utils/date.js
CHANGED
|
@@ -3,7 +3,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.
|
|
6
|
+
exports.createFilterByLastOptions = createFilterByLastOptions;
|
|
7
|
+
exports.filterByLast = filterByLast;
|
|
8
|
+
exports.createTimer = createTimer;
|
|
9
|
+
exports.duration = duration;
|
|
7
10
|
const dayjs_1 = __importDefault(require("dayjs"));
|
|
8
11
|
const advancedFormat_1 = __importDefault(require("dayjs/plugin/advancedFormat"));
|
|
9
12
|
const customParseFormat_1 = __importDefault(require("dayjs/plugin/customParseFormat"));
|
|
@@ -24,7 +27,6 @@ function createFilterByLastOptions(keep) {
|
|
|
24
27
|
lastYearly: keep.keepYearly,
|
|
25
28
|
};
|
|
26
29
|
}
|
|
27
|
-
exports.createFilterByLastOptions = createFilterByLastOptions;
|
|
28
30
|
function filterByLast(items, options) {
|
|
29
31
|
const filters = {
|
|
30
32
|
last: {
|
|
@@ -91,7 +93,6 @@ function filterByLast(items, options) {
|
|
|
91
93
|
reasons: [...(reasons.get(item) || [])],
|
|
92
94
|
}));
|
|
93
95
|
}
|
|
94
|
-
exports.filterByLast = filterByLast;
|
|
95
96
|
function createTimer() {
|
|
96
97
|
let startTime = Date.now();
|
|
97
98
|
let endTime;
|
|
@@ -109,8 +110,6 @@ function createTimer() {
|
|
|
109
110
|
};
|
|
110
111
|
return timer;
|
|
111
112
|
}
|
|
112
|
-
exports.createTimer = createTimer;
|
|
113
113
|
function duration(ms) {
|
|
114
114
|
return dayjs_1.default.duration(ms, "ms").format("HH:mm:ss");
|
|
115
115
|
}
|
|
116
|
-
exports.duration = duration;
|
package/lib/utils/exit.js
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.triggerExitEvent = triggerExitEvent;
|
|
4
|
+
exports.enableExitEvents = enableExitEvents;
|
|
5
|
+
exports.disableExitEvents = disableExitEvents;
|
|
6
|
+
exports.onExit = onExit;
|
|
4
7
|
const eventNames = [
|
|
5
8
|
`exit`,
|
|
6
9
|
`SIGINT`,
|
|
@@ -30,7 +33,6 @@ function triggerExitEvent(eventName, ...args) {
|
|
|
30
33
|
process.exit(5);
|
|
31
34
|
}
|
|
32
35
|
}
|
|
33
|
-
exports.triggerExitEvent = triggerExitEvent;
|
|
34
36
|
function enableExitEvents() {
|
|
35
37
|
disableExitEvents();
|
|
36
38
|
for (const eventName of eventNames) {
|
|
@@ -39,13 +41,11 @@ function enableExitEvents() {
|
|
|
39
41
|
disableExitDisposes.add(() => process.off(eventName, listener));
|
|
40
42
|
}
|
|
41
43
|
}
|
|
42
|
-
exports.enableExitEvents = enableExitEvents;
|
|
43
44
|
function disableExitEvents() {
|
|
44
45
|
for (const dispose of disableExitDisposes)
|
|
45
46
|
dispose();
|
|
46
47
|
disableExitDisposes.clear();
|
|
47
48
|
}
|
|
48
|
-
exports.disableExitEvents = disableExitEvents;
|
|
49
49
|
function onExit(cb, priority) {
|
|
50
50
|
if (!disableExitDisposes.size)
|
|
51
51
|
enableExitEvents();
|
|
@@ -53,4 +53,3 @@ function onExit(cb, priority) {
|
|
|
53
53
|
listeners.add(listener);
|
|
54
54
|
return () => listeners.delete(listener);
|
|
55
55
|
}
|
|
56
|
-
exports.onExit = onExit;
|