@niceties/draftlog-appender 1.0.4 → 1.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/dist/core.cjs CHANGED
@@ -21,7 +21,7 @@ function createCanvas(spinner, formatter, ident) {
21
21
  if (!model.items_.length) {
22
22
  return;
23
23
  }
24
- let key = 0;
24
+ let key = 0, dirty = false;
25
25
  const stack = [[...model.items_]];
26
26
  while (stack.length) {
27
27
  const item = stack[stack.length - 1].shift();
@@ -30,8 +30,21 @@ function createCanvas(spinner, formatter, ident) {
30
30
  updater = console.draft(' ');
31
31
  updaters.push(updater);
32
32
  }
33
- const prefix = getMessageFormat(item.status_, model.tick_);
34
- updater(formatter(item.text_, item.loglevel_, prefix, ident * (stack.length - 1)));
33
+ if (dirty || item.dirty_ || item.status_) {
34
+ const prefix = getPrefix(item.status_, model.tick_);
35
+ updater(formatter({
36
+ loglevel: item.loglevel_,
37
+ message: item.text_,
38
+ context: item.context_,
39
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
40
+ action: (item.status_ === undefined ? 3 /* log */ : undefined),
41
+ tag: item.tag_
42
+ }, prefix, ident * (stack.length - 1)));
43
+ if (item.dirty_) {
44
+ item.dirty_ = false;
45
+ dirty = true;
46
+ }
47
+ }
35
48
  // iterate
36
49
  ++key;
37
50
  if (item.children_.length) {
@@ -42,9 +55,9 @@ function createCanvas(spinner, formatter, ident) {
42
55
  }
43
56
  }
44
57
  };
45
- function getMessageFormat(status, tick) {
58
+ function getPrefix(status, tick) {
46
59
  // status is truthy when it is inprogress
47
- const prefix = status ? (spinner.frames[tick]) :
60
+ const prefix = status ? spinner.frames[tick] :
48
61
  // status not null when it is finished
49
62
  status != null;
50
63
  return prefix;
@@ -59,9 +72,9 @@ function createModel(logAboveSpinners) {
59
72
  items_: []
60
73
  };
61
74
  const itemById = Object.create(null);
62
- return [({ message: text, inputId, action, loglevel, ref, parentId }) => {
75
+ return [({ message: text, inputId, action, loglevel, ref, parentId, context, tag }) => {
63
76
  // item has status undefined, so it is static by default
64
- const item = { text_: text, loglevel_: loglevel, ref_: ref, parentId_: parentId, children_: [] };
77
+ const item = { text_: text, loglevel_: loglevel, ref_: ref, parentId_: parentId, children_: [], dirty_: true, context_: context, tag_: tag };
65
78
  if (action === 0 /* start */) {
66
79
  item.status_ = 1 /* inprogress */;
67
80
  }
@@ -69,7 +82,7 @@ function createModel(logAboveSpinners) {
69
82
  item.status_ = 0 /* finished */;
70
83
  }
71
84
  if (action !== 3 /* log */) {
72
- // if status still empty in the original item, or item does not exists it will remain empty and static
85
+ // if status still empty in the original item or item does not exists it will remain empty and static
73
86
  updateModel(inputId, item);
74
87
  }
75
88
  cleanupModel();
@@ -107,6 +120,7 @@ function createModel(logAboveSpinners) {
107
120
  if (moveIntoParent) {
108
121
  model.items_ = model.items_.filter(item => item !== modelItem);
109
122
  model.spinning_ -= (modelItem.status_ || 0);
123
+ modelItem.dirty_ = true;
110
124
  putIntoChildren(modelItem.parentId_, modelItem);
111
125
  }
112
126
  }
package/dist/core.mjs CHANGED
@@ -13,7 +13,7 @@ function createCanvas(spinner, formatter, ident) {
13
13
  if (!model.items_.length) {
14
14
  return;
15
15
  }
16
- let key = 0;
16
+ let key = 0, dirty = false;
17
17
  const stack = [[...model.items_]];
18
18
  while (stack.length) {
19
19
  const item = stack[stack.length - 1].shift();
@@ -22,8 +22,21 @@ function createCanvas(spinner, formatter, ident) {
22
22
  updater = console.draft(' ');
23
23
  updaters.push(updater);
24
24
  }
25
- const prefix = getMessageFormat(item.status_, model.tick_);
26
- updater(formatter(item.text_, item.loglevel_, prefix, ident * (stack.length - 1)));
25
+ if (dirty || item.dirty_ || item.status_) {
26
+ const prefix = getPrefix(item.status_, model.tick_);
27
+ updater(formatter({
28
+ loglevel: item.loglevel_,
29
+ message: item.text_,
30
+ context: item.context_,
31
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
32
+ action: (item.status_ === undefined ? 3 /* log */ : undefined),
33
+ tag: item.tag_
34
+ }, prefix, ident * (stack.length - 1)));
35
+ if (item.dirty_) {
36
+ item.dirty_ = false;
37
+ dirty = true;
38
+ }
39
+ }
27
40
  // iterate
28
41
  ++key;
29
42
  if (item.children_.length) {
@@ -34,9 +47,9 @@ function createCanvas(spinner, formatter, ident) {
34
47
  }
35
48
  }
36
49
  };
37
- function getMessageFormat(status, tick) {
50
+ function getPrefix(status, tick) {
38
51
  // status is truthy when it is inprogress
39
- const prefix = status ? (spinner.frames[tick]) :
52
+ const prefix = status ? spinner.frames[tick] :
40
53
  // status not null when it is finished
41
54
  status != null;
42
55
  return prefix;
@@ -51,9 +64,9 @@ function createModel(logAboveSpinners) {
51
64
  items_: []
52
65
  };
53
66
  const itemById = Object.create(null);
54
- return [({ message: text, inputId, action, loglevel, ref, parentId }) => {
67
+ return [({ message: text, inputId, action, loglevel, ref, parentId, context, tag }) => {
55
68
  // item has status undefined, so it is static by default
56
- const item = { text_: text, loglevel_: loglevel, ref_: ref, parentId_: parentId, children_: [] };
69
+ const item = { text_: text, loglevel_: loglevel, ref_: ref, parentId_: parentId, children_: [], dirty_: true, context_: context, tag_: tag };
57
70
  if (action === 0 /* start */) {
58
71
  item.status_ = 1 /* inprogress */;
59
72
  }
@@ -61,7 +74,7 @@ function createModel(logAboveSpinners) {
61
74
  item.status_ = 0 /* finished */;
62
75
  }
63
76
  if (action !== 3 /* log */) {
64
- // if status still empty in the original item, or item does not exists it will remain empty and static
77
+ // if status still empty in the original item or item does not exists it will remain empty and static
65
78
  updateModel(inputId, item);
66
79
  }
67
80
  cleanupModel();
@@ -99,6 +112,7 @@ function createModel(logAboveSpinners) {
99
112
  if (moveIntoParent) {
100
113
  model.items_ = model.items_.filter(item => item !== modelItem);
101
114
  model.spinning_ -= (modelItem.status_ || 0);
115
+ modelItem.dirty_ = true;
102
116
  putIntoChildren(modelItem.parentId_, modelItem);
103
117
  }
104
118
  }
@@ -10,8 +10,11 @@ export interface ModelItem {
10
10
  loglevel_: LogLevel;
11
11
  ref_?: WeakRef<never>;
12
12
  parentId_?: number;
13
+ tag_?: string;
13
14
  next_?: ModelItem;
14
15
  children_: ModelItem[];
16
+ dirty_?: boolean;
17
+ context_?: any;
15
18
  }
16
19
  export declare type Model = {
17
20
  items_: ModelItem[];
package/dist/index.cjs CHANGED
@@ -1,13 +1,17 @@
1
1
  'use strict';
2
2
 
3
- var core = require('@niceties/logger/core');
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$1 = require('./core.cjs');
7
+ var core = require('./core.cjs');
7
8
  var spinners = require('./spinners.cjs');
8
9
  require('draftlog');
9
10
 
10
11
  const supportsUnicode = formatUtils.terminalSupportsUnicode();
11
12
  const spinner = supportsUnicode ? spinners.dots : spinners.line;
12
- const formatter = formatUtils.createFormatter(defaultFormatting.colors, supportsUnicode ? defaultFormatting.unicodePrefixes : defaultFormatting.asciiPrefixes);
13
- core.appender(core$1.createDraftlogAppender(spinner, formatter, false, 2));
13
+ const formatter = formatUtils.createFormatter(defaultFormatting.colors, supportsUnicode ? defaultFormatting.unicodePrefixes : defaultFormatting.asciiPrefixes, defaultFormatting.tagFactory);
14
+ let minLogLevel = 1 /* info */;
15
+ globalAppender.appender(appenderUtils.filterMessages((message) => message.loglevel >= minLogLevel || message.action !== 3 /* log */, core.createDraftlogAppender(spinner, formatter, false, 2), // eslint-disable-line indent
16
+ { setMinLevel(logLevel) { minLogLevel = logLevel; } } // eslint-disable-line indent
17
+ ));
package/dist/index.mjs CHANGED
@@ -1,11 +1,15 @@
1
- import { appender } from '@niceties/logger/core';
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';
7
8
 
8
9
  const supportsUnicode = terminalSupportsUnicode();
9
10
  const spinner = supportsUnicode ? dots : line;
10
- const formatter = createFormatter(colors, supportsUnicode ? unicodePrefixes : asciiPrefixes);
11
- appender(createDraftlogAppender(spinner, formatter, false, 2));
11
+ const formatter = createFormatter(colors, supportsUnicode ? unicodePrefixes : asciiPrefixes, tagFactory);
12
+ let minLogLevel = 1 /* info */;
13
+ appender(filterMessages((message) => message.loglevel >= minLogLevel || message.action !== 3 /* log */, createDraftlogAppender(spinner, formatter, false, 2), // eslint-disable-line indent
14
+ { setMinLevel(logLevel) { minLogLevel = logLevel; } } // eslint-disable-line indent
15
+ ));
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "1.0.4",
2
+ "version": "1.1.0",
3
3
  "license": "MIT",
4
4
  "name": "@niceties/draftlog-appender",
5
5
  "author": {
@@ -40,6 +40,7 @@
40
40
  "url": "https://github.com/kshutkin/niceties/issues"
41
41
  },
42
42
  "homepage": "https://github.com/kshutkin/niceties/blob/main/draftlog-appender/README.md",
43
+ "readme": "README.md",
43
44
  "scripts": {
44
45
  "build": "rimraf ./dist && rollup -c",
45
46
  "dev": "rimraf ./dist && rollup -c -w",
@@ -71,11 +72,13 @@
71
72
  "semantic-release-monorepo": "7.0.5",
72
73
  "ts-jest": "27.0.7",
73
74
  "typescript": "4.4.x",
74
- "update-monorepo-package-json": "0.1.6"
75
+ "update-monorepo-package-json": "0.2.0"
76
+ },
77
+ "peerDependencies": {
78
+ "@niceties/logger": "^1.1.0"
75
79
  },
76
80
  "dependencies": {
77
- "@niceties/logger": "^1.0.1",
78
81
  "draftlog": "^1.0.13"
79
82
  },
80
- "readme": "ERROR: No README data found!"
83
+ "description": "README.md"
81
84
  }