@orion-js/dogs 3.1.0-alpha.9 → 3.1.0
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/events.test.js +6 -8
- package/lib/history.test.js +4 -4
- package/lib/recurrent.test.js +4 -4
- package/lib/repos/JobsRepo.js +6 -5
- package/lib/services/EventsService.js +2 -2
- package/lib/services/Executor.d.ts +1 -1
- package/lib/services/Executor.js +15 -11
- package/lib/services/WorkerService.js +12 -14
- package/lib/types/StartConfig.d.ts +0 -4
- package/lib/types/Worker.d.ts +2 -0
- package/package.json +6 -2
- package/lib/log/index.d.ts +0 -5
- package/lib/log/index.js +0 -31
package/lib/events.test.js
CHANGED
|
@@ -3,6 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
require("reflect-metadata");
|
|
4
4
|
const helpers_1 = require("@orion-js/helpers");
|
|
5
5
|
const _1 = require(".");
|
|
6
|
+
const logger_1 = require("@orion-js/logger");
|
|
7
|
+
(0, logger_1.setLogLevel)('error');
|
|
6
8
|
describe('Event tests', () => {
|
|
7
9
|
it('Should run an event job', async () => {
|
|
8
10
|
let count = 0;
|
|
@@ -16,8 +18,7 @@ describe('Event tests', () => {
|
|
|
16
18
|
jobs: { job3 },
|
|
17
19
|
workersCount: 1,
|
|
18
20
|
pollInterval: 10,
|
|
19
|
-
cooldownPeriod: 10
|
|
20
|
-
logLevel: 'none'
|
|
21
|
+
cooldownPeriod: 10
|
|
21
22
|
});
|
|
22
23
|
expect(count).toBe(0);
|
|
23
24
|
await (0, _1.scheduleJob)({
|
|
@@ -55,8 +56,7 @@ describe('Event tests', () => {
|
|
|
55
56
|
jobs: { job4 },
|
|
56
57
|
workersCount: 1,
|
|
57
58
|
pollInterval: 10,
|
|
58
|
-
cooldownPeriod: 10
|
|
59
|
-
logLevel: 'none'
|
|
59
|
+
cooldownPeriod: 10
|
|
60
60
|
});
|
|
61
61
|
expect(passes).toBe(false);
|
|
62
62
|
await (0, _1.scheduleJob)({
|
|
@@ -90,8 +90,7 @@ describe('Event tests', () => {
|
|
|
90
90
|
workersCount: 2,
|
|
91
91
|
pollInterval: 10,
|
|
92
92
|
cooldownPeriod: 10,
|
|
93
|
-
lockTime: 10
|
|
94
|
-
logLevel: 'none'
|
|
93
|
+
lockTime: 10
|
|
95
94
|
});
|
|
96
95
|
await (0, _1.scheduleJob)({
|
|
97
96
|
name: jobId,
|
|
@@ -115,8 +114,7 @@ describe('Event tests', () => {
|
|
|
115
114
|
jobs: { [jobId]: job },
|
|
116
115
|
workersCount: 1,
|
|
117
116
|
pollInterval: 10,
|
|
118
|
-
cooldownPeriod: 10
|
|
119
|
-
logLevel: 'none'
|
|
117
|
+
cooldownPeriod: 10
|
|
120
118
|
});
|
|
121
119
|
await (0, _1.scheduleJob)({
|
|
122
120
|
name: jobId,
|
package/lib/history.test.js
CHANGED
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const helpers_1 = require("@orion-js/helpers");
|
|
4
4
|
const _1 = require(".");
|
|
5
|
+
const logger_1 = require("@orion-js/logger");
|
|
6
|
+
(0, logger_1.setLogLevel)('error');
|
|
5
7
|
describe('Test Jobs History', () => {
|
|
6
8
|
it('Should save success history types', async () => {
|
|
7
9
|
const jobId = (0, helpers_1.generateId)();
|
|
@@ -58,8 +60,7 @@ describe('Test Jobs History', () => {
|
|
|
58
60
|
const instance = (0, _1.startWorkers)({
|
|
59
61
|
jobs: { [jobId]: job },
|
|
60
62
|
workersCount: 1,
|
|
61
|
-
pollInterval: 10
|
|
62
|
-
logLevel: 'none'
|
|
63
|
+
pollInterval: 10
|
|
63
64
|
});
|
|
64
65
|
await (0, _1.scheduleJob)({
|
|
65
66
|
name: jobId,
|
|
@@ -101,8 +102,7 @@ describe('Test Jobs History', () => {
|
|
|
101
102
|
jobs: { [jobId]: job },
|
|
102
103
|
workersCount: 1,
|
|
103
104
|
pollInterval: 10,
|
|
104
|
-
lockTime: 10
|
|
105
|
-
logLevel: 'none'
|
|
105
|
+
lockTime: 10
|
|
106
106
|
});
|
|
107
107
|
await (0, _1.scheduleJob)({
|
|
108
108
|
name: jobId,
|
package/lib/recurrent.test.js
CHANGED
|
@@ -3,6 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
require("reflect-metadata");
|
|
4
4
|
const helpers_1 = require("@orion-js/helpers");
|
|
5
5
|
const _1 = require(".");
|
|
6
|
+
const logger_1 = require("@orion-js/logger");
|
|
7
|
+
(0, logger_1.setLogLevel)('error');
|
|
6
8
|
describe('Recurrent tests', () => {
|
|
7
9
|
it('Should run a recurrent job', async () => {
|
|
8
10
|
let ran = false;
|
|
@@ -17,8 +19,7 @@ describe('Recurrent tests', () => {
|
|
|
17
19
|
jobs: { job1 },
|
|
18
20
|
workersCount: 1,
|
|
19
21
|
pollInterval: 100,
|
|
20
|
-
cooldownPeriod: 100
|
|
21
|
-
logLevel: 'none'
|
|
22
|
+
cooldownPeriod: 100
|
|
22
23
|
});
|
|
23
24
|
await (0, helpers_1.sleep)(500);
|
|
24
25
|
await instance.stop();
|
|
@@ -37,8 +38,7 @@ describe('Recurrent tests', () => {
|
|
|
37
38
|
jobs: { job2 },
|
|
38
39
|
workersCount: 1,
|
|
39
40
|
pollInterval: 10,
|
|
40
|
-
cooldownPeriod: 10
|
|
41
|
-
logLevel: 'none'
|
|
41
|
+
cooldownPeriod: 10
|
|
42
42
|
});
|
|
43
43
|
await (0, helpers_1.sleep)(200);
|
|
44
44
|
await instance.stop();
|
package/lib/repos/JobsRepo.js
CHANGED
|
@@ -7,9 +7,9 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
7
7
|
};
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
9
|
exports.JobsRepo = void 0;
|
|
10
|
+
const logger_1 = require("@orion-js/logger");
|
|
10
11
|
const mongodb_1 = require("@orion-js/mongodb");
|
|
11
12
|
const services_1 = require("@orion-js/services");
|
|
12
|
-
const log_1 = require("../log");
|
|
13
13
|
const JobRecord_1 = require("../types/JobRecord");
|
|
14
14
|
let JobsRepo = class JobsRepo {
|
|
15
15
|
constructor() {
|
|
@@ -67,7 +67,7 @@ let JobsRepo = class JobsRepo {
|
|
|
67
67
|
return;
|
|
68
68
|
let tries = job.tries || 1;
|
|
69
69
|
if (job.lockedUntil) {
|
|
70
|
-
|
|
70
|
+
logger_1.logger.info(`Running job "${job.jobName}" that was staled`);
|
|
71
71
|
this.jobs.updateOne(job._id, { $inc: { tries: 1 } });
|
|
72
72
|
tries++;
|
|
73
73
|
}
|
|
@@ -104,6 +104,7 @@ let JobsRepo = class JobsRepo {
|
|
|
104
104
|
});
|
|
105
105
|
}
|
|
106
106
|
async ensureJobRecord(job) {
|
|
107
|
+
await this.jobs.connectionPromise;
|
|
107
108
|
const result = await this.jobs.upsert({
|
|
108
109
|
jobName: job.name
|
|
109
110
|
}, {
|
|
@@ -116,10 +117,10 @@ let JobsRepo = class JobsRepo {
|
|
|
116
117
|
}
|
|
117
118
|
});
|
|
118
119
|
if (result.upsertedId) {
|
|
119
|
-
|
|
120
|
+
logger_1.logger.info(`Created job record for "${job.name}"`);
|
|
120
121
|
}
|
|
121
122
|
else {
|
|
122
|
-
|
|
123
|
+
logger_1.logger.info(`Record for job "${job.name}" already exists`);
|
|
123
124
|
}
|
|
124
125
|
}
|
|
125
126
|
async scheduleJob(options) {
|
|
@@ -135,7 +136,7 @@ let JobsRepo = class JobsRepo {
|
|
|
135
136
|
}
|
|
136
137
|
catch (error) {
|
|
137
138
|
if (error.code === 11000 && options.uniqueIdentifier) {
|
|
138
|
-
|
|
139
|
+
logger_1.logger.info(`Job "${options.name}" with identifier "${options.uniqueIdentifier}" already exists`);
|
|
139
140
|
}
|
|
140
141
|
else {
|
|
141
142
|
throw error;
|
|
@@ -10,13 +10,13 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
exports.EventsService = void 0;
|
|
13
|
+
const logger_1 = require("@orion-js/logger");
|
|
13
14
|
const services_1 = require("@orion-js/services");
|
|
14
|
-
const log_1 = require("../log");
|
|
15
15
|
const JobsRepo_1 = require("../repos/JobsRepo");
|
|
16
16
|
const getNextRunDate_1 = require("./getNextRunDate");
|
|
17
17
|
let EventsService = class EventsService {
|
|
18
18
|
async scheduleJob(options) {
|
|
19
|
-
|
|
19
|
+
logger_1.logger.info('Scheduling job...', options);
|
|
20
20
|
await this.jobsRepo.scheduleJob({
|
|
21
21
|
name: options.name,
|
|
22
22
|
priority: options.priority || 1,
|
|
@@ -15,6 +15,6 @@ export declare class Executor {
|
|
|
15
15
|
job: JobDefinition;
|
|
16
16
|
jobToRun: JobToRun;
|
|
17
17
|
}): Promise<void>;
|
|
18
|
-
afterExecutionSuccess(job: JobDefinition, jobToRun: JobToRun): Promise<void>;
|
|
18
|
+
afterExecutionSuccess(job: JobDefinition, jobToRun: JobToRun, context: ExecutionContext): Promise<void>;
|
|
19
19
|
executeJob(jobs: JobsDefinition, jobToRun: JobToRun): Promise<void>;
|
|
20
20
|
}
|
package/lib/services/Executor.js
CHANGED
|
@@ -10,8 +10,8 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
exports.Executor = void 0;
|
|
13
|
+
const logger_1 = require("@orion-js/logger");
|
|
13
14
|
const services_1 = require("@orion-js/services");
|
|
14
|
-
const log_1 = require("../log");
|
|
15
15
|
const JobsHistoryRepo_1 = require("../repos/JobsHistoryRepo");
|
|
16
16
|
const JobsRepo_1 = require("../repos/JobsRepo");
|
|
17
17
|
const getNextRunDate_1 = require("./getNextRunDate");
|
|
@@ -27,13 +27,17 @@ let Executor = class Executor {
|
|
|
27
27
|
clearTimeout(staleTimeout);
|
|
28
28
|
staleTimeout = setTimeout(() => onStale(), extraTime);
|
|
29
29
|
await this.jobsRepo.extendLockTime(jobToRun.jobId, extraTime);
|
|
30
|
-
}
|
|
30
|
+
},
|
|
31
|
+
logger: logger_1.logger.addMetadata({
|
|
32
|
+
jobName: jobToRun.name,
|
|
33
|
+
jobId: jobToRun.jobId
|
|
34
|
+
})
|
|
31
35
|
};
|
|
32
36
|
}
|
|
33
37
|
getJobDefinition(jobToRun, jobs) {
|
|
34
38
|
const job = jobs[jobToRun.name];
|
|
35
39
|
if (jobToRun.type !== job.type) {
|
|
36
|
-
|
|
40
|
+
logger_1.logger.warn(`Job record "${jobToRun.name}" is "${jobToRun.type}" but definition is "${job.type}"`);
|
|
37
41
|
return;
|
|
38
42
|
}
|
|
39
43
|
return job;
|
|
@@ -49,12 +53,12 @@ let Executor = class Executor {
|
|
|
49
53
|
}
|
|
50
54
|
};
|
|
51
55
|
if (!job.onError) {
|
|
52
|
-
|
|
56
|
+
context.logger.error(`Error executing job "${jobToRun.name}"`, error);
|
|
53
57
|
await scheduleRecurrent();
|
|
54
58
|
return;
|
|
55
59
|
}
|
|
56
60
|
else {
|
|
57
|
-
|
|
61
|
+
context.logger.info(`Error executing job "${jobToRun.name}"`, error);
|
|
58
62
|
}
|
|
59
63
|
const result = await job.onError(error, jobToRun.params, context);
|
|
60
64
|
if (result.action === 'dismiss') {
|
|
@@ -92,9 +96,9 @@ let Executor = class Executor {
|
|
|
92
96
|
});
|
|
93
97
|
}
|
|
94
98
|
}
|
|
95
|
-
async afterExecutionSuccess(job, jobToRun) {
|
|
99
|
+
async afterExecutionSuccess(job, jobToRun, context) {
|
|
96
100
|
if (job.type === 'recurrent') {
|
|
97
|
-
|
|
101
|
+
context.logger.info(`Scheduling next run for recurrent job "${jobToRun.name}"`);
|
|
98
102
|
await this.jobsRepo.scheduleNextRun({
|
|
99
103
|
jobId: jobToRun.jobId,
|
|
100
104
|
nextRunAt: (0, getNextRunDate_1.getNextRunDate)(job),
|
|
@@ -102,7 +106,7 @@ let Executor = class Executor {
|
|
|
102
106
|
});
|
|
103
107
|
}
|
|
104
108
|
if (job.type === 'event') {
|
|
105
|
-
|
|
109
|
+
context.logger.info(`Removing event job after success "${jobToRun.name}"`);
|
|
106
110
|
await this.jobsRepo.deleteEventJob(jobToRun.jobId);
|
|
107
111
|
}
|
|
108
112
|
}
|
|
@@ -113,11 +117,11 @@ let Executor = class Executor {
|
|
|
113
117
|
const startedAt = new Date();
|
|
114
118
|
const onStale = () => {
|
|
115
119
|
if (job.onStale) {
|
|
116
|
-
|
|
120
|
+
context.logger.info(`Job "${jobToRun.name}" is stale`);
|
|
117
121
|
job.onStale(jobToRun.params, context);
|
|
118
122
|
}
|
|
119
123
|
else {
|
|
120
|
-
|
|
124
|
+
context.logger.error(`Job "${jobToRun.name}" is stale`);
|
|
121
125
|
}
|
|
122
126
|
this.saveExecution({
|
|
123
127
|
startedAt,
|
|
@@ -140,7 +144,7 @@ let Executor = class Executor {
|
|
|
140
144
|
job,
|
|
141
145
|
jobToRun
|
|
142
146
|
});
|
|
143
|
-
await this.afterExecutionSuccess(job, jobToRun);
|
|
147
|
+
await this.afterExecutionSuccess(job, jobToRun, context);
|
|
144
148
|
}
|
|
145
149
|
catch (error) {
|
|
146
150
|
context.clearStaleTimeout();
|
|
@@ -15,7 +15,7 @@ const lodash_1 = require("lodash");
|
|
|
15
15
|
const JobsRepo_1 = require("../repos/JobsRepo");
|
|
16
16
|
const helpers_1 = require("@orion-js/helpers");
|
|
17
17
|
const Executor_1 = require("./Executor");
|
|
18
|
-
const
|
|
18
|
+
const logger_1 = require("@orion-js/logger");
|
|
19
19
|
let WorkerService = class WorkerService {
|
|
20
20
|
getJobNames(jobs) {
|
|
21
21
|
return Object.keys(jobs);
|
|
@@ -30,20 +30,20 @@ let WorkerService = class WorkerService {
|
|
|
30
30
|
}
|
|
31
31
|
async runWorkerLoop(config) {
|
|
32
32
|
const names = this.getJobNames(config.jobs);
|
|
33
|
-
|
|
33
|
+
logger_1.logger.debug(`Running worker loop for jobs "${names.join(', ')}"...`);
|
|
34
34
|
const jobToRun = await this.jobsRepo.getJobAndLock(names, config.lockTime);
|
|
35
35
|
if (!jobToRun) {
|
|
36
|
-
|
|
36
|
+
logger_1.logger.debug('No job to run');
|
|
37
37
|
return false;
|
|
38
38
|
}
|
|
39
|
-
|
|
39
|
+
logger_1.logger.info(`Got job to run:`, jobToRun);
|
|
40
40
|
await this.executor.executeJob(config.jobs, jobToRun);
|
|
41
41
|
return true;
|
|
42
42
|
}
|
|
43
43
|
async startWorker(config, workersInstance) {
|
|
44
44
|
while (true) {
|
|
45
45
|
if (!workersInstance.running) {
|
|
46
|
-
|
|
46
|
+
logger_1.logger.info('Got signal to stop. Stopping worker...');
|
|
47
47
|
return;
|
|
48
48
|
}
|
|
49
49
|
try {
|
|
@@ -54,7 +54,7 @@ let WorkerService = class WorkerService {
|
|
|
54
54
|
await (0, helpers_1.sleep)(config.cooldownPeriod);
|
|
55
55
|
}
|
|
56
56
|
catch (error) {
|
|
57
|
-
|
|
57
|
+
logger_1.logger.error(`Error in job runner. Waiting and running again`, error);
|
|
58
58
|
await (0, helpers_1.sleep)(config.pollInterval);
|
|
59
59
|
}
|
|
60
60
|
}
|
|
@@ -65,7 +65,7 @@ let WorkerService = class WorkerService {
|
|
|
65
65
|
workersCount: config.workersCount,
|
|
66
66
|
workers: [],
|
|
67
67
|
stop: async () => {
|
|
68
|
-
|
|
68
|
+
logger_1.logger.debug('Stopping workers...', workersInstance.workers);
|
|
69
69
|
workersInstance.running = false;
|
|
70
70
|
await Promise.all(workersInstance.workers);
|
|
71
71
|
}
|
|
@@ -77,15 +77,15 @@ let WorkerService = class WorkerService {
|
|
|
77
77
|
await Promise.all(jobs
|
|
78
78
|
.filter(job => job.type === 'recurrent')
|
|
79
79
|
.map(async (job) => {
|
|
80
|
-
|
|
80
|
+
logger_1.logger.info(`Ensuring records for job "${job.name}"...`);
|
|
81
81
|
await this.jobsRepo.ensureJobRecord(job);
|
|
82
82
|
}));
|
|
83
83
|
}
|
|
84
84
|
async runWorkers(config, workersInstance) {
|
|
85
|
-
|
|
85
|
+
logger_1.logger.info('Will ensure records for recurrent jobs');
|
|
86
86
|
await this.ensureRecords(config);
|
|
87
87
|
for (const workerIndex of (0, lodash_1.range)(config.workersCount)) {
|
|
88
|
-
|
|
88
|
+
logger_1.logger.info(`Starting worker ${workerIndex}`);
|
|
89
89
|
const workerPromise = this.startWorker(config, workersInstance);
|
|
90
90
|
workersInstance.workers.push(workerPromise);
|
|
91
91
|
}
|
|
@@ -96,16 +96,14 @@ let WorkerService = class WorkerService {
|
|
|
96
96
|
cooldownPeriod: 100,
|
|
97
97
|
pollInterval: 3000,
|
|
98
98
|
workersCount: 4,
|
|
99
|
-
lockTime: 30 * 1000
|
|
100
|
-
logLevel: 'info'
|
|
99
|
+
lockTime: 30 * 1000
|
|
101
100
|
};
|
|
102
101
|
const config = {
|
|
103
102
|
...defaultConfig,
|
|
104
103
|
...userConfig
|
|
105
104
|
};
|
|
106
|
-
(0, log_1.setLogLevel)(config.logLevel);
|
|
107
105
|
const workersInstance = this.createWorkersInstanceDefinition(config);
|
|
108
|
-
|
|
106
|
+
logger_1.logger.info('Starting workers', config);
|
|
109
107
|
this.runWorkers(config, workersInstance);
|
|
110
108
|
return workersInstance;
|
|
111
109
|
}
|
package/lib/types/Worker.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { OrionLogger } from '@orion-js/logger';
|
|
1
2
|
import { PlainObject } from './HistoryRecord';
|
|
2
3
|
import { JobDefinition } from './JobsDefinition';
|
|
3
4
|
export interface JobToRun {
|
|
@@ -14,6 +15,7 @@ export interface ExecutionContext {
|
|
|
14
15
|
record: JobToRun;
|
|
15
16
|
definition: JobDefinition;
|
|
16
17
|
tries: number;
|
|
18
|
+
logger: OrionLogger;
|
|
17
19
|
extendLockTime: (extraTime: number) => Promise<void>;
|
|
18
20
|
clearStaleTimeout: () => void;
|
|
19
21
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@orion-js/dogs",
|
|
3
|
-
"version": "3.1.0
|
|
3
|
+
"version": "3.1.0",
|
|
4
4
|
"main": "lib/index.js",
|
|
5
5
|
"types": "lib/index.d.ts",
|
|
6
6
|
"files": [
|
|
@@ -22,7 +22,11 @@
|
|
|
22
22
|
"@orion-js/services": "^3.1.0-alpha.0",
|
|
23
23
|
"@orion-js/typed-model": "^3.0.38"
|
|
24
24
|
},
|
|
25
|
+
"peerDependencies": {
|
|
26
|
+
"@orion-js/logger": "3.1.0-alpha.12"
|
|
27
|
+
},
|
|
25
28
|
"devDependencies": {
|
|
29
|
+
"@orion-js/logger": "^3.1.0",
|
|
26
30
|
"@shelf/jest-mongodb": "^2.1.0",
|
|
27
31
|
"@types/jest": "^27.0.2",
|
|
28
32
|
"@types/lodash": "4.14.176",
|
|
@@ -35,5 +39,5 @@
|
|
|
35
39
|
"publishConfig": {
|
|
36
40
|
"access": "public"
|
|
37
41
|
},
|
|
38
|
-
"gitHead": "
|
|
42
|
+
"gitHead": "afeb686374cedd6e4b2827e82d3354bff62a48e0"
|
|
39
43
|
}
|
package/lib/log/index.d.ts
DELETED
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import { LogLevels } from '../types/StartConfig';
|
|
2
|
-
export declare let appLogLevel: LogLevels;
|
|
3
|
-
export declare const levelToInt: (level: LogLevels) => 0 | 1 | 2 | 3;
|
|
4
|
-
export declare const log: (level: LogLevels, ...args: any[]) => void;
|
|
5
|
-
export declare const setLogLevel: (level: LogLevels) => void;
|
package/lib/log/index.js
DELETED
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.setLogLevel = exports.log = exports.levelToInt = exports.appLogLevel = void 0;
|
|
4
|
-
exports.appLogLevel = 'info';
|
|
5
|
-
const levelToInt = (level) => {
|
|
6
|
-
switch (level) {
|
|
7
|
-
case 'debug':
|
|
8
|
-
return 0;
|
|
9
|
-
case 'info':
|
|
10
|
-
return 1;
|
|
11
|
-
case 'warn':
|
|
12
|
-
return 2;
|
|
13
|
-
case 'error':
|
|
14
|
-
return 3;
|
|
15
|
-
}
|
|
16
|
-
};
|
|
17
|
-
exports.levelToInt = levelToInt;
|
|
18
|
-
const log = (level, ...args) => {
|
|
19
|
-
if (exports.appLogLevel === 'none')
|
|
20
|
-
return;
|
|
21
|
-
const levelInt = (0, exports.levelToInt)(level);
|
|
22
|
-
const appLogLevelInt = (0, exports.levelToInt)(exports.appLogLevel);
|
|
23
|
-
if (levelInt < appLogLevelInt)
|
|
24
|
-
return;
|
|
25
|
-
console[level](...args);
|
|
26
|
-
};
|
|
27
|
-
exports.log = log;
|
|
28
|
-
const setLogLevel = (level) => {
|
|
29
|
-
exports.appLogLevel = level;
|
|
30
|
-
};
|
|
31
|
-
exports.setLogLevel = setLogLevel;
|