@niceties/draftlog-appender 1.0.7 → 1.2.1
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/dist/core.cjs +95 -87
- package/dist/core.d.ts +1 -1
- package/dist/core.mjs +95 -87
- package/dist/details/canvas.d.ts +1 -1
- package/dist/details/model.d.ts +7 -6
- package/dist/index.cjs +9 -4
- package/dist/index.mjs +9 -4
- package/package.json +23 -26
package/dist/core.cjs
CHANGED
|
@@ -3,36 +3,47 @@
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
5
|
var draftlog = require('draftlog');
|
|
6
|
+
var list = require('@slimlib/list');
|
|
6
7
|
|
|
7
8
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
8
9
|
|
|
9
10
|
var draftlog__default = /*#__PURE__*/_interopDefaultLegacy(draftlog);
|
|
10
11
|
|
|
11
|
-
|
|
12
|
+
const createCanvas = (spinner, formatter, ident) => {
|
|
12
13
|
draftlog__default["default"](console);
|
|
13
14
|
draftlog__default["default"].defaults.canReWrite = false;
|
|
14
15
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
15
16
|
const updaters = [];
|
|
17
|
+
const getPrefix = (status, tick) => {
|
|
18
|
+
// status is truthy when it is inprogress
|
|
19
|
+
const prefix = status ? spinner.frames[tick] :
|
|
20
|
+
// status not null when it is finished
|
|
21
|
+
status != null;
|
|
22
|
+
return prefix;
|
|
23
|
+
};
|
|
16
24
|
return (model) => {
|
|
17
25
|
if (model.skipLines_) {
|
|
18
26
|
updaters.splice(0, model.skipLines_);
|
|
19
27
|
model.skipLines_ = 0;
|
|
20
28
|
}
|
|
21
|
-
if (!model.items_.length) {
|
|
22
|
-
return;
|
|
23
|
-
}
|
|
24
29
|
let key = 0, dirty = false;
|
|
25
|
-
const stack = [
|
|
26
|
-
|
|
27
|
-
const item = stack[stack.length - 1].shift();
|
|
30
|
+
const stack = [];
|
|
31
|
+
for (const item of model) {
|
|
28
32
|
let updater = updaters[Number(key)];
|
|
29
33
|
if (!updater) {
|
|
30
34
|
updater = console.draft(' ');
|
|
31
35
|
updaters.push(updater);
|
|
32
36
|
}
|
|
33
37
|
if (dirty || item.dirty_ || item.status_) {
|
|
34
|
-
const prefix =
|
|
35
|
-
updater(formatter(
|
|
38
|
+
const prefix = getPrefix(item.status_, model.tick_);
|
|
39
|
+
updater(formatter({
|
|
40
|
+
loglevel: item.loglevel_,
|
|
41
|
+
message: item.text_,
|
|
42
|
+
context: item.context_,
|
|
43
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
44
|
+
action: (item.status_ === undefined ? 3 /* log */ : undefined),
|
|
45
|
+
tag: item.tag_
|
|
46
|
+
}, prefix, ident * stack.length));
|
|
36
47
|
if (item.dirty_) {
|
|
37
48
|
item.dirty_ = false;
|
|
38
49
|
dirty = true;
|
|
@@ -40,122 +51,115 @@ function createCanvas(spinner, formatter, ident) {
|
|
|
40
51
|
}
|
|
41
52
|
// iterate
|
|
42
53
|
++key;
|
|
43
|
-
if (
|
|
44
|
-
stack
|
|
54
|
+
if (stack[stack.length - 1] === item) {
|
|
55
|
+
stack[stack.length - 1] = null;
|
|
56
|
+
}
|
|
57
|
+
if (item.lastLeaf_) {
|
|
58
|
+
stack.push(item.lastLeaf_);
|
|
45
59
|
}
|
|
46
|
-
while (stack.length && stack[stack.length - 1]
|
|
60
|
+
while (stack.length && stack[stack.length - 1] == null) {
|
|
47
61
|
stack.pop();
|
|
48
62
|
}
|
|
49
63
|
}
|
|
50
64
|
};
|
|
51
|
-
|
|
52
|
-
// status is truthy when it is inprogress
|
|
53
|
-
const prefix = status ? (spinner.frames[tick]) :
|
|
54
|
-
// status not null when it is finished
|
|
55
|
-
status != null;
|
|
56
|
-
return prefix;
|
|
57
|
-
}
|
|
58
|
-
}
|
|
65
|
+
};
|
|
59
66
|
|
|
60
|
-
|
|
61
|
-
const model =
|
|
62
|
-
skipLines_: 0,
|
|
63
|
-
tick_: 0,
|
|
64
|
-
spinning_: 0,
|
|
65
|
-
items_: []
|
|
66
|
-
};
|
|
67
|
+
const createModel = (logAboveSpinners) => {
|
|
68
|
+
const model = new list.List();
|
|
67
69
|
const itemById = Object.create(null);
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
item.status_ = 0 /* finished */;
|
|
76
|
-
}
|
|
77
|
-
if (action !== 3 /* log */) {
|
|
78
|
-
// if status still empty in the original item, or item does not exists it will remain empty and static
|
|
79
|
-
updateModel(inputId, item);
|
|
80
|
-
}
|
|
81
|
-
cleanupModel();
|
|
82
|
-
if (action === 3 /* log */) {
|
|
83
|
-
append(item, logAboveSpinners);
|
|
84
|
-
}
|
|
85
|
-
return model;
|
|
86
|
-
}, () => {
|
|
87
|
-
cleanupModel();
|
|
88
|
-
return model;
|
|
89
|
-
}];
|
|
90
|
-
function append(item, head) {
|
|
91
|
-
model.items_[head ? 'unshift' : 'push'](item);
|
|
70
|
+
const appendToModel = (item, head) => {
|
|
71
|
+
if (head) {
|
|
72
|
+
list.prepend(model, item);
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
list.append(model, item);
|
|
76
|
+
}
|
|
92
77
|
model.spinning_ += (item.status_ || 0);
|
|
93
|
-
}
|
|
94
|
-
|
|
78
|
+
};
|
|
79
|
+
const updateModel = (inputId, options) => {
|
|
95
80
|
const modelItem = itemById[inputId];
|
|
96
81
|
if (!modelItem) {
|
|
97
82
|
const item = Object.assign({ inputId_: inputId }, options);
|
|
98
83
|
itemById[inputId] = item;
|
|
99
84
|
const itemParentId = item.parentId_;
|
|
100
85
|
if (itemParentId != null) {
|
|
101
|
-
putIntoChildren(itemParentId, item);
|
|
86
|
+
putIntoChildren(itemParentId, item, item);
|
|
102
87
|
}
|
|
103
88
|
else {
|
|
104
|
-
|
|
89
|
+
appendToModel(item, false);
|
|
105
90
|
}
|
|
106
91
|
}
|
|
107
92
|
else {
|
|
108
93
|
const statusDiff = (options.status_ || 0) - (modelItem.status_ || 0);
|
|
109
|
-
delete options.children_;
|
|
110
94
|
const moveIntoParent = options.parentId_ != null && modelItem.parentId_ == null;
|
|
111
95
|
Object.assign(modelItem, options);
|
|
112
96
|
model.spinning_ += statusDiff;
|
|
113
97
|
if (moveIntoParent) {
|
|
114
|
-
|
|
98
|
+
let lastLeaf = modelItem;
|
|
99
|
+
while (lastLeaf.lastLeaf_) {
|
|
100
|
+
lastLeaf = lastLeaf.lastLeaf_;
|
|
101
|
+
}
|
|
115
102
|
model.spinning_ -= (modelItem.status_ || 0);
|
|
116
103
|
modelItem.dirty_ = true;
|
|
117
|
-
|
|
104
|
+
list.removeRange(modelItem, lastLeaf);
|
|
105
|
+
putIntoChildren(modelItem.parentId_, modelItem, lastLeaf);
|
|
118
106
|
}
|
|
119
107
|
}
|
|
120
|
-
}
|
|
121
|
-
|
|
108
|
+
};
|
|
109
|
+
const putIntoChildren = (itemParentId, begin, end) => {
|
|
122
110
|
let parent = itemById[itemParentId];
|
|
123
111
|
if (!parent) {
|
|
124
|
-
parent = { inputId_: itemParentId, text_: '',
|
|
125
|
-
|
|
112
|
+
parent = { inputId_: itemParentId, text_: '', loglevel_: 0, ref_: new WeakRef(model) };
|
|
113
|
+
appendToModel(parent, false);
|
|
126
114
|
itemById[itemParentId] = parent;
|
|
127
115
|
}
|
|
128
|
-
parent.
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
116
|
+
list.appendRange((parent.lastLeaf_ || parent), begin, end);
|
|
117
|
+
parent.lastLeaf_ = begin;
|
|
118
|
+
model.spinning_ += (begin.status_ || 0);
|
|
119
|
+
};
|
|
120
|
+
const cleanupModel = () => {
|
|
132
121
|
var _a;
|
|
133
|
-
for (const item of model
|
|
134
|
-
if (!((_a = item.ref_) === null || _a === void 0 ? void 0 : _a.deref())
|
|
135
|
-
model.skipLines_ += 1
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
do {
|
|
139
|
-
currentItem.inputId_ != null && delete itemById[currentItem.inputId_];
|
|
140
|
-
model.spinning_ -= (currentItem.status_ || 0);
|
|
141
|
-
} while ((currentItem = item.children_.pop()));
|
|
122
|
+
for (const item of model) {
|
|
123
|
+
if (!((_a = item.ref_) === null || _a === void 0 ? void 0 : _a.deref())) {
|
|
124
|
+
model.skipLines_ += 1;
|
|
125
|
+
item.inputId_ != null && delete itemById[item.inputId_];
|
|
126
|
+
list.remove(item);
|
|
142
127
|
}
|
|
143
128
|
else {
|
|
144
129
|
break;
|
|
145
130
|
}
|
|
146
131
|
}
|
|
147
|
-
}
|
|
148
|
-
|
|
132
|
+
};
|
|
133
|
+
model.tick_ = model.skipLines_ = model.spinning_ = 0;
|
|
134
|
+
return [({ message: text, inputId, action, loglevel, ref, parentId, context, tag }) => {
|
|
135
|
+
// item has status undefined, so it is static by default
|
|
136
|
+
const item = { text_: text, loglevel_: loglevel, ref_: ref, parentId_: parentId, dirty_: true, context_: context, tag_: tag };
|
|
137
|
+
if (action === 0 /* start */) {
|
|
138
|
+
item.status_ = 1 /* inprogress */;
|
|
139
|
+
}
|
|
140
|
+
if (action === 2 /* finish */) {
|
|
141
|
+
item.status_ = 0 /* finished */;
|
|
142
|
+
}
|
|
143
|
+
if (action !== 3 /* log */) {
|
|
144
|
+
// if status still empty in the original item or item does not exists it will remain empty and static
|
|
145
|
+
updateModel(inputId, item);
|
|
146
|
+
}
|
|
147
|
+
cleanupModel();
|
|
148
|
+
if (action === 3 /* log */) {
|
|
149
|
+
appendToModel(item, logAboveSpinners);
|
|
150
|
+
}
|
|
151
|
+
return model;
|
|
152
|
+
}, () => {
|
|
153
|
+
cleanupModel();
|
|
154
|
+
return model;
|
|
155
|
+
}];
|
|
156
|
+
};
|
|
149
157
|
|
|
150
|
-
|
|
158
|
+
const createDraftlogAppender = (spinner, formatter, logAboveSpinners, ident) => {
|
|
151
159
|
let interval;
|
|
152
160
|
const [updateModel, getModel] = createModel(logAboveSpinners);
|
|
153
161
|
const renderModel = createCanvas(spinner, formatter, ident);
|
|
154
|
-
|
|
155
|
-
renderModel(updateModel(message));
|
|
156
|
-
checkTimeout();
|
|
157
|
-
};
|
|
158
|
-
function checkTimeout() {
|
|
162
|
+
const checkTimeout = () => {
|
|
159
163
|
const spinning = getModel().spinning_;
|
|
160
164
|
if (spinning && !interval) {
|
|
161
165
|
interval = setInterval(updateSpinners, spinner.interval);
|
|
@@ -165,13 +169,17 @@ function createDraftlogAppender(spinner, formatter, logAboveSpinners, ident) {
|
|
|
165
169
|
clearInterval(interval);
|
|
166
170
|
interval = undefined;
|
|
167
171
|
}
|
|
168
|
-
}
|
|
169
|
-
|
|
172
|
+
};
|
|
173
|
+
const updateSpinners = () => {
|
|
170
174
|
const model = getModel();
|
|
171
175
|
model.tick_++;
|
|
172
176
|
model.tick_ %= spinner.frames.length;
|
|
173
177
|
renderModel(model);
|
|
174
|
-
}
|
|
175
|
-
|
|
178
|
+
};
|
|
179
|
+
return (message) => {
|
|
180
|
+
renderModel(updateModel(message));
|
|
181
|
+
checkTimeout();
|
|
182
|
+
};
|
|
183
|
+
};
|
|
176
184
|
|
|
177
185
|
exports.createDraftlogAppender = createDraftlogAppender;
|
package/dist/core.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { Formatter, LogMessage } from '@niceties/logger/types';
|
|
2
2
|
import { Spinner } from './spinners';
|
|
3
|
-
export declare
|
|
3
|
+
export declare const createDraftlogAppender: (spinner: Spinner, formatter: Formatter, logAboveSpinners: boolean, ident: number) => (message: LogMessage) => void;
|
package/dist/core.mjs
CHANGED
|
@@ -1,30 +1,41 @@
|
|
|
1
1
|
import draftlog from 'draftlog';
|
|
2
|
+
import { List, prepend, append, removeRange, appendRange, remove } from '@slimlib/list';
|
|
2
3
|
|
|
3
|
-
|
|
4
|
+
const createCanvas = (spinner, formatter, ident) => {
|
|
4
5
|
draftlog(console);
|
|
5
6
|
draftlog.defaults.canReWrite = false;
|
|
6
7
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
7
8
|
const updaters = [];
|
|
9
|
+
const getPrefix = (status, tick) => {
|
|
10
|
+
// status is truthy when it is inprogress
|
|
11
|
+
const prefix = status ? spinner.frames[tick] :
|
|
12
|
+
// status not null when it is finished
|
|
13
|
+
status != null;
|
|
14
|
+
return prefix;
|
|
15
|
+
};
|
|
8
16
|
return (model) => {
|
|
9
17
|
if (model.skipLines_) {
|
|
10
18
|
updaters.splice(0, model.skipLines_);
|
|
11
19
|
model.skipLines_ = 0;
|
|
12
20
|
}
|
|
13
|
-
if (!model.items_.length) {
|
|
14
|
-
return;
|
|
15
|
-
}
|
|
16
21
|
let key = 0, dirty = false;
|
|
17
|
-
const stack = [
|
|
18
|
-
|
|
19
|
-
const item = stack[stack.length - 1].shift();
|
|
22
|
+
const stack = [];
|
|
23
|
+
for (const item of model) {
|
|
20
24
|
let updater = updaters[Number(key)];
|
|
21
25
|
if (!updater) {
|
|
22
26
|
updater = console.draft(' ');
|
|
23
27
|
updaters.push(updater);
|
|
24
28
|
}
|
|
25
29
|
if (dirty || item.dirty_ || item.status_) {
|
|
26
|
-
const prefix =
|
|
27
|
-
updater(formatter(
|
|
30
|
+
const prefix = getPrefix(item.status_, model.tick_);
|
|
31
|
+
updater(formatter({
|
|
32
|
+
loglevel: item.loglevel_,
|
|
33
|
+
message: item.text_,
|
|
34
|
+
context: item.context_,
|
|
35
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
36
|
+
action: (item.status_ === undefined ? 3 /* log */ : undefined),
|
|
37
|
+
tag: item.tag_
|
|
38
|
+
}, prefix, ident * stack.length));
|
|
28
39
|
if (item.dirty_) {
|
|
29
40
|
item.dirty_ = false;
|
|
30
41
|
dirty = true;
|
|
@@ -32,122 +43,115 @@ function createCanvas(spinner, formatter, ident) {
|
|
|
32
43
|
}
|
|
33
44
|
// iterate
|
|
34
45
|
++key;
|
|
35
|
-
if (
|
|
36
|
-
stack
|
|
46
|
+
if (stack[stack.length - 1] === item) {
|
|
47
|
+
stack[stack.length - 1] = null;
|
|
48
|
+
}
|
|
49
|
+
if (item.lastLeaf_) {
|
|
50
|
+
stack.push(item.lastLeaf_);
|
|
37
51
|
}
|
|
38
|
-
while (stack.length && stack[stack.length - 1]
|
|
52
|
+
while (stack.length && stack[stack.length - 1] == null) {
|
|
39
53
|
stack.pop();
|
|
40
54
|
}
|
|
41
55
|
}
|
|
42
56
|
};
|
|
43
|
-
|
|
44
|
-
// status is truthy when it is inprogress
|
|
45
|
-
const prefix = status ? (spinner.frames[tick]) :
|
|
46
|
-
// status not null when it is finished
|
|
47
|
-
status != null;
|
|
48
|
-
return prefix;
|
|
49
|
-
}
|
|
50
|
-
}
|
|
57
|
+
};
|
|
51
58
|
|
|
52
|
-
|
|
53
|
-
const model =
|
|
54
|
-
skipLines_: 0,
|
|
55
|
-
tick_: 0,
|
|
56
|
-
spinning_: 0,
|
|
57
|
-
items_: []
|
|
58
|
-
};
|
|
59
|
+
const createModel = (logAboveSpinners) => {
|
|
60
|
+
const model = new List();
|
|
59
61
|
const itemById = Object.create(null);
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
item.status_ = 0 /* finished */;
|
|
68
|
-
}
|
|
69
|
-
if (action !== 3 /* log */) {
|
|
70
|
-
// if status still empty in the original item, or item does not exists it will remain empty and static
|
|
71
|
-
updateModel(inputId, item);
|
|
72
|
-
}
|
|
73
|
-
cleanupModel();
|
|
74
|
-
if (action === 3 /* log */) {
|
|
75
|
-
append(item, logAboveSpinners);
|
|
76
|
-
}
|
|
77
|
-
return model;
|
|
78
|
-
}, () => {
|
|
79
|
-
cleanupModel();
|
|
80
|
-
return model;
|
|
81
|
-
}];
|
|
82
|
-
function append(item, head) {
|
|
83
|
-
model.items_[head ? 'unshift' : 'push'](item);
|
|
62
|
+
const appendToModel = (item, head) => {
|
|
63
|
+
if (head) {
|
|
64
|
+
prepend(model, item);
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
append(model, item);
|
|
68
|
+
}
|
|
84
69
|
model.spinning_ += (item.status_ || 0);
|
|
85
|
-
}
|
|
86
|
-
|
|
70
|
+
};
|
|
71
|
+
const updateModel = (inputId, options) => {
|
|
87
72
|
const modelItem = itemById[inputId];
|
|
88
73
|
if (!modelItem) {
|
|
89
74
|
const item = Object.assign({ inputId_: inputId }, options);
|
|
90
75
|
itemById[inputId] = item;
|
|
91
76
|
const itemParentId = item.parentId_;
|
|
92
77
|
if (itemParentId != null) {
|
|
93
|
-
putIntoChildren(itemParentId, item);
|
|
78
|
+
putIntoChildren(itemParentId, item, item);
|
|
94
79
|
}
|
|
95
80
|
else {
|
|
96
|
-
|
|
81
|
+
appendToModel(item, false);
|
|
97
82
|
}
|
|
98
83
|
}
|
|
99
84
|
else {
|
|
100
85
|
const statusDiff = (options.status_ || 0) - (modelItem.status_ || 0);
|
|
101
|
-
delete options.children_;
|
|
102
86
|
const moveIntoParent = options.parentId_ != null && modelItem.parentId_ == null;
|
|
103
87
|
Object.assign(modelItem, options);
|
|
104
88
|
model.spinning_ += statusDiff;
|
|
105
89
|
if (moveIntoParent) {
|
|
106
|
-
|
|
90
|
+
let lastLeaf = modelItem;
|
|
91
|
+
while (lastLeaf.lastLeaf_) {
|
|
92
|
+
lastLeaf = lastLeaf.lastLeaf_;
|
|
93
|
+
}
|
|
107
94
|
model.spinning_ -= (modelItem.status_ || 0);
|
|
108
95
|
modelItem.dirty_ = true;
|
|
109
|
-
|
|
96
|
+
removeRange(modelItem, lastLeaf);
|
|
97
|
+
putIntoChildren(modelItem.parentId_, modelItem, lastLeaf);
|
|
110
98
|
}
|
|
111
99
|
}
|
|
112
|
-
}
|
|
113
|
-
|
|
100
|
+
};
|
|
101
|
+
const putIntoChildren = (itemParentId, begin, end) => {
|
|
114
102
|
let parent = itemById[itemParentId];
|
|
115
103
|
if (!parent) {
|
|
116
|
-
parent = { inputId_: itemParentId, text_: '',
|
|
117
|
-
|
|
104
|
+
parent = { inputId_: itemParentId, text_: '', loglevel_: 0, ref_: new WeakRef(model) };
|
|
105
|
+
appendToModel(parent, false);
|
|
118
106
|
itemById[itemParentId] = parent;
|
|
119
107
|
}
|
|
120
|
-
parent.
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
108
|
+
appendRange((parent.lastLeaf_ || parent), begin, end);
|
|
109
|
+
parent.lastLeaf_ = begin;
|
|
110
|
+
model.spinning_ += (begin.status_ || 0);
|
|
111
|
+
};
|
|
112
|
+
const cleanupModel = () => {
|
|
124
113
|
var _a;
|
|
125
|
-
for (const item of model
|
|
126
|
-
if (!((_a = item.ref_) === null || _a === void 0 ? void 0 : _a.deref())
|
|
127
|
-
model.skipLines_ += 1
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
do {
|
|
131
|
-
currentItem.inputId_ != null && delete itemById[currentItem.inputId_];
|
|
132
|
-
model.spinning_ -= (currentItem.status_ || 0);
|
|
133
|
-
} while ((currentItem = item.children_.pop()));
|
|
114
|
+
for (const item of model) {
|
|
115
|
+
if (!((_a = item.ref_) === null || _a === void 0 ? void 0 : _a.deref())) {
|
|
116
|
+
model.skipLines_ += 1;
|
|
117
|
+
item.inputId_ != null && delete itemById[item.inputId_];
|
|
118
|
+
remove(item);
|
|
134
119
|
}
|
|
135
120
|
else {
|
|
136
121
|
break;
|
|
137
122
|
}
|
|
138
123
|
}
|
|
139
|
-
}
|
|
140
|
-
|
|
124
|
+
};
|
|
125
|
+
model.tick_ = model.skipLines_ = model.spinning_ = 0;
|
|
126
|
+
return [({ message: text, inputId, action, loglevel, ref, parentId, context, tag }) => {
|
|
127
|
+
// item has status undefined, so it is static by default
|
|
128
|
+
const item = { text_: text, loglevel_: loglevel, ref_: ref, parentId_: parentId, dirty_: true, context_: context, tag_: tag };
|
|
129
|
+
if (action === 0 /* start */) {
|
|
130
|
+
item.status_ = 1 /* inprogress */;
|
|
131
|
+
}
|
|
132
|
+
if (action === 2 /* finish */) {
|
|
133
|
+
item.status_ = 0 /* finished */;
|
|
134
|
+
}
|
|
135
|
+
if (action !== 3 /* log */) {
|
|
136
|
+
// if status still empty in the original item or item does not exists it will remain empty and static
|
|
137
|
+
updateModel(inputId, item);
|
|
138
|
+
}
|
|
139
|
+
cleanupModel();
|
|
140
|
+
if (action === 3 /* log */) {
|
|
141
|
+
appendToModel(item, logAboveSpinners);
|
|
142
|
+
}
|
|
143
|
+
return model;
|
|
144
|
+
}, () => {
|
|
145
|
+
cleanupModel();
|
|
146
|
+
return model;
|
|
147
|
+
}];
|
|
148
|
+
};
|
|
141
149
|
|
|
142
|
-
|
|
150
|
+
const createDraftlogAppender = (spinner, formatter, logAboveSpinners, ident) => {
|
|
143
151
|
let interval;
|
|
144
152
|
const [updateModel, getModel] = createModel(logAboveSpinners);
|
|
145
153
|
const renderModel = createCanvas(spinner, formatter, ident);
|
|
146
|
-
|
|
147
|
-
renderModel(updateModel(message));
|
|
148
|
-
checkTimeout();
|
|
149
|
-
};
|
|
150
|
-
function checkTimeout() {
|
|
154
|
+
const checkTimeout = () => {
|
|
151
155
|
const spinning = getModel().spinning_;
|
|
152
156
|
if (spinning && !interval) {
|
|
153
157
|
interval = setInterval(updateSpinners, spinner.interval);
|
|
@@ -157,13 +161,17 @@ function createDraftlogAppender(spinner, formatter, logAboveSpinners, ident) {
|
|
|
157
161
|
clearInterval(interval);
|
|
158
162
|
interval = undefined;
|
|
159
163
|
}
|
|
160
|
-
}
|
|
161
|
-
|
|
164
|
+
};
|
|
165
|
+
const updateSpinners = () => {
|
|
162
166
|
const model = getModel();
|
|
163
167
|
model.tick_++;
|
|
164
168
|
model.tick_ %= spinner.frames.length;
|
|
165
169
|
renderModel(model);
|
|
166
|
-
}
|
|
167
|
-
|
|
170
|
+
};
|
|
171
|
+
return (message) => {
|
|
172
|
+
renderModel(updateModel(message));
|
|
173
|
+
checkTimeout();
|
|
174
|
+
};
|
|
175
|
+
};
|
|
168
176
|
|
|
169
177
|
export { createDraftlogAppender };
|
package/dist/details/canvas.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { Formatter } from '@niceties/logger/types';
|
|
2
2
|
import { Model } from './model';
|
|
3
3
|
import { Spinner } from '../spinners';
|
|
4
|
-
export declare
|
|
4
|
+
export declare const createCanvas: (spinner: Spinner, formatter: Formatter, ident: number) => (model: Model) => void;
|
package/dist/details/model.d.ts
CHANGED
|
@@ -1,23 +1,24 @@
|
|
|
1
1
|
import { LogLevel, LogMessage } from '@niceties/logger/types';
|
|
2
|
+
import { List, ListNode } from '@slimlib/list';
|
|
2
3
|
export declare const enum ItemStatus {
|
|
3
4
|
finished = 0,
|
|
4
5
|
inprogress = 1
|
|
5
6
|
}
|
|
6
|
-
export interface ModelItem {
|
|
7
|
+
export interface ModelItem extends Partial<ListNode> {
|
|
7
8
|
inputId_?: number;
|
|
8
9
|
text_: string;
|
|
9
10
|
status_?: ItemStatus;
|
|
10
11
|
loglevel_: LogLevel;
|
|
11
12
|
ref_?: WeakRef<never>;
|
|
12
13
|
parentId_?: number;
|
|
13
|
-
next_?: ModelItem;
|
|
14
|
-
children_: ModelItem[];
|
|
15
14
|
dirty_?: boolean;
|
|
15
|
+
lastLeaf_?: ModelItem;
|
|
16
|
+
tag_?: string;
|
|
17
|
+
context_?: any;
|
|
16
18
|
}
|
|
17
|
-
export declare type Model = {
|
|
18
|
-
items_: ModelItem[];
|
|
19
|
+
export declare type Model = List<ModelItem> & {
|
|
19
20
|
skipLines_: number;
|
|
20
21
|
tick_: number;
|
|
21
22
|
spinning_: number;
|
|
22
23
|
};
|
|
23
|
-
export declare
|
|
24
|
+
export declare const createModel: (logAboveSpinners: boolean) => [(logMessage: LogMessage) => Model, () => Model];
|
package/dist/index.cjs
CHANGED
|
@@ -1,13 +1,18 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var appenderUtils = require('@niceties/logger/appender-utils');
|
|
4
|
+
var globalAppender = require('@niceties/logger/global-appender');
|
|
4
5
|
var formatUtils = require('@niceties/logger/format-utils');
|
|
5
6
|
var defaultFormatting = require('@niceties/logger/default-formatting');
|
|
6
|
-
var core
|
|
7
|
+
var core = require('./core.cjs');
|
|
7
8
|
var spinners = require('./spinners.cjs');
|
|
8
9
|
require('draftlog');
|
|
10
|
+
require('@slimlib/list');
|
|
9
11
|
|
|
10
12
|
const supportsUnicode = formatUtils.terminalSupportsUnicode();
|
|
11
13
|
const spinner = supportsUnicode ? spinners.dots : spinners.line;
|
|
12
|
-
const formatter = formatUtils.createFormatter(defaultFormatting.colors, supportsUnicode ? defaultFormatting.unicodePrefixes : defaultFormatting.asciiPrefixes);
|
|
13
|
-
|
|
14
|
+
const formatter = formatUtils.createFormatter(defaultFormatting.colors, supportsUnicode ? defaultFormatting.unicodePrefixes : defaultFormatting.asciiPrefixes, defaultFormatting.tagFactory);
|
|
15
|
+
let minLogLevel = 1 /* info */;
|
|
16
|
+
globalAppender.appender(appenderUtils.filterMessages((message) => message.loglevel >= minLogLevel || message.action !== 3 /* log */, core.createDraftlogAppender(spinner, formatter, false, 2), // eslint-disable-line indent
|
|
17
|
+
{ setMinLevel(logLevel) { minLogLevel = logLevel; } } // eslint-disable-line indent
|
|
18
|
+
));
|
package/dist/index.mjs
CHANGED
|
@@ -1,11 +1,16 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { filterMessages } from '@niceties/logger/appender-utils';
|
|
2
|
+
import { appender } from '@niceties/logger/global-appender';
|
|
2
3
|
import { terminalSupportsUnicode, createFormatter } from '@niceties/logger/format-utils';
|
|
3
|
-
import { colors, unicodePrefixes, asciiPrefixes } from '@niceties/logger/default-formatting';
|
|
4
|
+
import { colors, unicodePrefixes, asciiPrefixes, tagFactory } from '@niceties/logger/default-formatting';
|
|
4
5
|
import { createDraftlogAppender } from './core.mjs';
|
|
5
6
|
import { dots, line } from './spinners.mjs';
|
|
6
7
|
import 'draftlog';
|
|
8
|
+
import '@slimlib/list';
|
|
7
9
|
|
|
8
10
|
const supportsUnicode = terminalSupportsUnicode();
|
|
9
11
|
const spinner = supportsUnicode ? dots : line;
|
|
10
|
-
const formatter = createFormatter(colors, supportsUnicode ? unicodePrefixes : asciiPrefixes);
|
|
11
|
-
|
|
12
|
+
const formatter = createFormatter(colors, supportsUnicode ? unicodePrefixes : asciiPrefixes, tagFactory);
|
|
13
|
+
let minLogLevel = 1 /* info */;
|
|
14
|
+
appender(filterMessages((message) => message.loglevel >= minLogLevel || message.action !== 3 /* log */, createDraftlogAppender(spinner, formatter, false, 2), // eslint-disable-line indent
|
|
15
|
+
{ setMinLevel(logLevel) { minLogLevel = logLevel; } } // eslint-disable-line indent
|
|
16
|
+
));
|
package/package.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "1.
|
|
2
|
+
"version": "1.2.1",
|
|
3
3
|
"license": "MIT",
|
|
4
4
|
"name": "@niceties/draftlog-appender",
|
|
5
5
|
"author": {
|
|
@@ -17,9 +17,10 @@
|
|
|
17
17
|
"default": "./dist/core.mjs"
|
|
18
18
|
},
|
|
19
19
|
"./spinners": {
|
|
20
|
-
"require": "./
|
|
21
|
-
"default": "./
|
|
22
|
-
}
|
|
20
|
+
"require": "./dist/spinners.cjs",
|
|
21
|
+
"default": "./dist/spinners.mjs"
|
|
22
|
+
},
|
|
23
|
+
"./package.json": "./package.json"
|
|
23
24
|
},
|
|
24
25
|
"main": "./dist/index.cjs",
|
|
25
26
|
"module": "./dist/index.mjs",
|
|
@@ -40,42 +41,38 @@
|
|
|
40
41
|
"url": "https://github.com/kshutkin/niceties/issues"
|
|
41
42
|
},
|
|
42
43
|
"homepage": "https://github.com/kshutkin/niceties/blob/main/draftlog-appender/README.md",
|
|
44
|
+
"readme": "README.md",
|
|
45
|
+
"description": "Appender for '@niceites/logger' implemented using draftlog package.",
|
|
43
46
|
"scripts": {
|
|
44
|
-
"build": "
|
|
45
|
-
"dev": "rimraf ./dist && rollup -c -w",
|
|
47
|
+
"build": "pkgbld",
|
|
46
48
|
"test": "node --expose-gc ../node_modules/jest-cli/bin/jest.js --collectCoverage",
|
|
47
49
|
"lint": "eslint ./src",
|
|
48
50
|
"semantic-release": "npx semantic-release"
|
|
49
51
|
},
|
|
50
52
|
"devDependencies": {
|
|
51
|
-
"@rollup/plugin-commonjs": "21.0.1",
|
|
52
|
-
"@rollup/plugin-node-resolve": "13.0.6",
|
|
53
53
|
"@semantic-release/changelog": "6.0.1",
|
|
54
54
|
"@semantic-release/commit-analyzer": "9.0.1",
|
|
55
55
|
"@semantic-release/git": "10.0.1",
|
|
56
56
|
"@semantic-release/npm": "8.0.2",
|
|
57
57
|
"@semantic-release/release-notes-generator": "10.0.2",
|
|
58
|
-
"@types/jest": "27.0
|
|
59
|
-
"@typescript-eslint/eslint-plugin": "5.
|
|
60
|
-
"@typescript-eslint/parser": "5.
|
|
58
|
+
"@types/jest": "27.4.0",
|
|
59
|
+
"@typescript-eslint/eslint-plugin": "5.11.0",
|
|
60
|
+
"@typescript-eslint/parser": "5.11.0",
|
|
61
61
|
"conventional-changelog-angular": "5.0.13",
|
|
62
|
-
"eslint": "8.
|
|
63
|
-
"jest": "27.
|
|
64
|
-
"lodash": "4.17.21",
|
|
65
|
-
"rimraf": "3.0.2",
|
|
66
|
-
"rollup": "2.60.1",
|
|
67
|
-
"rollup-plugin-terser": "7.0.2",
|
|
68
|
-
"rollup-plugin-typescript2": "0.31.1",
|
|
69
|
-
"rollup-plugin-preprocess": "0.0.4",
|
|
62
|
+
"eslint": "8.8.0",
|
|
63
|
+
"jest": "27.5.1",
|
|
70
64
|
"semantic-release": "18.0.0",
|
|
71
65
|
"semantic-release-monorepo": "7.0.5",
|
|
72
|
-
"ts-jest": "27.
|
|
73
|
-
"typescript": "4.
|
|
74
|
-
"update-monorepo-package-json": "0.
|
|
66
|
+
"ts-jest": "27.1.3",
|
|
67
|
+
"typescript": "4.5.x",
|
|
68
|
+
"update-monorepo-package-json": "0.2.0",
|
|
69
|
+
"pkgbld": "1.2.0"
|
|
75
70
|
},
|
|
76
|
-
"
|
|
77
|
-
"@niceties/logger": "^1.
|
|
78
|
-
"draftlog": "^1.0.13"
|
|
71
|
+
"peerDependencies": {
|
|
72
|
+
"@niceties/logger": "^1.1.2"
|
|
79
73
|
},
|
|
80
|
-
"
|
|
74
|
+
"dependencies": {
|
|
75
|
+
"draftlog": "^1.0.13",
|
|
76
|
+
"@slimlib/list": "^1.0.3"
|
|
77
|
+
}
|
|
81
78
|
}
|