@zajno/common 2.7.0 → 2.7.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/cjs/api/call.js +5 -5
- package/cjs/api/call.js.map +1 -1
- package/cjs/api/config.js +30 -5
- package/cjs/api/config.js.map +1 -1
- package/cjs/api/index.js +5 -6
- package/cjs/api/index.js.map +1 -1
- package/cjs/api/interceptor.js +1 -1
- package/cjs/api/logging.js +3 -3
- package/cjs/api/logging.js.map +1 -1
- package/cjs/functions/assert.js +2 -4
- package/cjs/functions/assert.js.map +1 -1
- package/cjs/functions/disposer.js +10 -18
- package/cjs/functions/disposer.js.map +1 -1
- package/cjs/functions/throttle.js +8 -17
- package/cjs/functions/throttle.js.map +1 -1
- package/cjs/logger/batch.js +23 -3
- package/cjs/logger/batch.js.map +1 -1
- package/cjs/logger/buffered/base.js +52 -0
- package/cjs/logger/buffered/base.js.map +1 -0
- package/cjs/logger/buffered/buffered.logger.js +40 -0
- package/cjs/logger/buffered/buffered.logger.js.map +1 -0
- package/cjs/logger/buffered/buffered.memory.js +71 -0
- package/cjs/logger/buffered/buffered.memory.js.map +1 -0
- package/cjs/logger/buffered/file/buffered.file.js +43 -0
- package/cjs/logger/buffered/file/buffered.file.js.map +1 -0
- package/cjs/logger/buffered/file/index.js +5 -0
- package/cjs/logger/buffered/file/index.js.map +1 -0
- package/cjs/logger/buffered/index.js +7 -0
- package/cjs/logger/buffered/index.js.map +1 -0
- package/cjs/logger/console.js +1 -39
- package/cjs/logger/console.js.map +1 -1
- package/cjs/logger/empty.js +11 -0
- package/cjs/logger/empty.js.map +1 -0
- package/cjs/logger/index.js +5 -7
- package/cjs/logger/index.js.map +1 -1
- package/cjs/logger/loggable.js +39 -0
- package/cjs/logger/loggable.js.map +1 -0
- package/cjs/logger/manager.js +70 -20
- package/cjs/logger/manager.js.map +1 -1
- package/cjs/logger/named.js +15 -12
- package/cjs/logger/named.js.map +1 -1
- package/cjs/logger/provider.js +33 -0
- package/cjs/logger/provider.js.map +1 -0
- package/cjs/logger/proxy.js +3 -7
- package/cjs/logger/proxy.js.map +1 -1
- package/cjs/logger/types.js +9 -0
- package/cjs/logger/types.js.map +1 -0
- package/cjs/models/LogicModel.js +13 -11
- package/cjs/models/LogicModel.js.map +1 -1
- package/cjs/observing/event.js +5 -18
- package/cjs/observing/event.js.map +1 -1
- package/cjs/observing/progressTracker.js +8 -15
- package/cjs/observing/progressTracker.js.map +1 -1
- package/cjs/structures/promiseCache.js +14 -20
- package/cjs/structures/promiseCache.js.map +1 -1
- package/cjs/structures/queue/parallel.js +11 -13
- package/cjs/structures/queue/parallel.js.map +1 -1
- package/cjs/structures/subscribersMap.js +9 -7
- package/cjs/structures/subscribersMap.js.map +1 -1
- package/esm/api/call.js +5 -5
- package/esm/api/call.js.map +1 -1
- package/esm/api/config.js +28 -4
- package/esm/api/config.js.map +1 -1
- package/esm/api/index.js +4 -2
- package/esm/api/index.js.map +1 -1
- package/esm/api/interceptor.js +1 -1
- package/esm/api/logging.js +3 -3
- package/esm/api/logging.js.map +1 -1
- package/esm/functions/assert.js +2 -3
- package/esm/functions/assert.js.map +1 -1
- package/esm/functions/disposer.js +10 -17
- package/esm/functions/disposer.js.map +1 -1
- package/esm/functions/throttle.js +6 -15
- package/esm/functions/throttle.js.map +1 -1
- package/esm/logger/batch.js +23 -3
- package/esm/logger/batch.js.map +1 -1
- package/esm/logger/buffered/base.js +48 -0
- package/esm/logger/buffered/base.js.map +1 -0
- package/esm/logger/buffered/buffered.logger.js +36 -0
- package/esm/logger/buffered/buffered.logger.js.map +1 -0
- package/esm/logger/buffered/buffered.memory.js +67 -0
- package/esm/logger/buffered/buffered.memory.js.map +1 -0
- package/esm/logger/buffered/file/buffered.file.js +38 -0
- package/esm/logger/buffered/file/buffered.file.js.map +1 -0
- package/esm/logger/buffered/file/index.js +2 -0
- package/esm/logger/buffered/file/index.js.map +1 -0
- package/esm/logger/buffered/index.js +4 -0
- package/esm/logger/buffered/index.js.map +1 -0
- package/esm/logger/console.js +0 -37
- package/esm/logger/console.js.map +1 -1
- package/esm/logger/empty.js +7 -0
- package/esm/logger/empty.js.map +1 -0
- package/esm/logger/index.js +3 -7
- package/esm/logger/index.js.map +1 -1
- package/esm/logger/loggable.js +35 -0
- package/esm/logger/loggable.js.map +1 -0
- package/esm/logger/manager.js +70 -20
- package/esm/logger/manager.js.map +1 -1
- package/esm/logger/named.js +8 -4
- package/esm/logger/named.js.map +1 -1
- package/esm/logger/provider.js +29 -0
- package/esm/logger/provider.js.map +1 -0
- package/esm/logger/proxy.js +2 -6
- package/esm/logger/proxy.js.map +1 -1
- package/esm/logger/types.js +6 -0
- package/esm/logger/types.js.map +1 -0
- package/esm/models/LogicModel.js +13 -11
- package/esm/models/LogicModel.js.map +1 -1
- package/esm/observing/event.js +5 -18
- package/esm/observing/event.js.map +1 -1
- package/esm/observing/progressTracker.js +8 -14
- package/esm/observing/progressTracker.js.map +1 -1
- package/esm/structures/promiseCache.js +14 -20
- package/esm/structures/promiseCache.js.map +1 -1
- package/esm/structures/queue/parallel.js +11 -13
- package/esm/structures/queue/parallel.js.map +1 -1
- package/esm/structures/subscribersMap.js +9 -7
- package/esm/structures/subscribersMap.js.map +1 -1
- package/package.json +13 -1
- package/tsconfig.cjs.tsbuildinfo +1 -1
- package/tsconfig.esm.tsbuildinfo +1 -1
- package/tsconfig.types.tsbuildinfo +1 -1
- package/types/api/call.types.d.ts +2 -2
- package/types/api/config.d.ts +11 -4
- package/types/api/extensions/endpointHooks.d.ts +1 -1
- package/types/api/index.d.ts +4 -2
- package/types/api/interceptor.d.ts +1 -1
- package/types/api/logging.d.ts +8 -6
- package/types/functions/assert.d.ts +3 -3
- package/types/functions/disposer.d.ts +7 -6
- package/types/functions/throttle.d.ts +4 -5
- package/types/logger/batch.d.ts +3 -2
- package/types/logger/buffered/base.d.ts +23 -0
- package/types/logger/buffered/buffered.logger.d.ts +8 -0
- package/types/logger/buffered/buffered.memory.d.ts +19 -0
- package/types/logger/buffered/file/buffered.file.d.ts +9 -0
- package/types/logger/buffered/file/index.d.ts +1 -0
- package/types/logger/buffered/index.d.ts +3 -0
- package/types/logger/console.d.ts +1 -13
- package/types/logger/empty.d.ts +3 -0
- package/types/logger/index.d.ts +6 -10
- package/types/logger/loggable.d.ts +13 -0
- package/types/logger/manager.d.ts +31 -7
- package/types/logger/named.d.ts +4 -3
- package/types/logger/provider.d.ts +11 -0
- package/types/logger/proxy.d.ts +1 -2
- package/types/logger/types.d.ts +21 -0
- package/types/models/LogicModel.d.ts +4 -4
- package/types/observing/event.d.ts +3 -6
- package/types/observing/progressTracker.d.ts +3 -4
- package/types/structures/promiseCache.d.ts +3 -4
- package/types/structures/queue/parallel.d.ts +3 -3
- package/types/structures/subscribersMap.d.ts +3 -2
- package/cjs/logger/abstractions.js +0 -3
- package/cjs/logger/abstractions.js.map +0 -1
- package/cjs/logger/file.js +0 -65
- package/cjs/logger/file.js.map +0 -1
- package/cjs/logger/shared.js +0 -18
- package/cjs/logger/shared.js.map +0 -1
- package/esm/logger/abstractions.js +0 -2
- package/esm/logger/abstractions.js.map +0 -1
- package/esm/logger/file.js +0 -60
- package/esm/logger/file.js.map +0 -1
- package/esm/logger/shared.js +0 -15
- package/esm/logger/shared.js.map +0 -1
- package/types/logger/abstractions.d.ts +0 -10
- package/types/logger/file.d.ts +0 -15
- package/types/logger/shared.d.ts +0 -15
package/esm/logger/manager.js
CHANGED
|
@@ -1,46 +1,72 @@
|
|
|
1
1
|
import { Getter } from '../types/getter.js';
|
|
2
2
|
import { CONSOLE } from './console.js';
|
|
3
3
|
import { ProxyLogger } from './proxy.js';
|
|
4
|
+
import { batchLoggers } from './batch.js';
|
|
4
5
|
export class LoggersManager {
|
|
6
|
+
/** Storage for instances created by this manager */
|
|
5
7
|
_managed = new Set();
|
|
8
|
+
/** Storage for all attached instances. */
|
|
6
9
|
_all = new Set();
|
|
10
|
+
/** Current main mode. */
|
|
7
11
|
_mode = false;
|
|
12
|
+
/** Additionally attached logger destinations (e.g. for analytics) */
|
|
13
|
+
_destinations = [];
|
|
8
14
|
get mode() { return this._mode; }
|
|
9
15
|
/** Creates and attaches an logger instance created from the current mode */
|
|
10
16
|
create(name, mode = undefined) {
|
|
11
|
-
const
|
|
17
|
+
const impl = this._createImplementation(mode);
|
|
18
|
+
const result = batchLoggers(impl, ...this._destinations);
|
|
12
19
|
const proxy = new ProxyLogger(result, name);
|
|
13
20
|
this._managed.add(proxy);
|
|
14
21
|
this._all.add(proxy);
|
|
15
22
|
return proxy;
|
|
16
23
|
}
|
|
17
|
-
/** Attaches existing instance, optionally adds name prefix to it
|
|
24
|
+
/** Attaches existing instance, optionally adds name prefix to it.
|
|
25
|
+
*
|
|
26
|
+
* Useful when it's needed to enable/disable independent logger when this manager's mode changes.
|
|
27
|
+
*
|
|
28
|
+
* @returns - The attached logger instance wrapped in a ProxyLogger.
|
|
29
|
+
*/
|
|
18
30
|
attach(instance, name) {
|
|
19
31
|
const proxy = new ProxyLogger(instance, name);
|
|
20
32
|
this._all.add(proxy);
|
|
21
|
-
|
|
33
|
+
this._updateAll(this._mode);
|
|
34
|
+
return proxy;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Adds a destination to the logger manager.
|
|
38
|
+
*
|
|
39
|
+
* This is useful for analytics or other purposes where you want to log to multiple destinations.
|
|
40
|
+
*
|
|
41
|
+
* @param target - Target logger instance that will recieve all logs disregarding current active mode.
|
|
42
|
+
* @param name - An optional name for the destination (prepended to every log message).
|
|
43
|
+
* @returns - A function to remove the destination.
|
|
44
|
+
*/
|
|
45
|
+
addDestination(target, name) {
|
|
46
|
+
const proxy = new ProxyLogger(target, name);
|
|
47
|
+
this._destinations.push(proxy);
|
|
48
|
+
this._updateAll(this._mode);
|
|
49
|
+
return () => {
|
|
50
|
+
const index = this._destinations.findIndex((d) => d === proxy);
|
|
51
|
+
if (index !== -1) {
|
|
52
|
+
this._destinations.splice(index, 1);
|
|
53
|
+
this._updateAll(this._mode);
|
|
54
|
+
}
|
|
55
|
+
};
|
|
22
56
|
}
|
|
23
|
-
/**
|
|
57
|
+
/**
|
|
58
|
+
* Sets the current mode if changed, for all attached instances.
|
|
59
|
+
*
|
|
60
|
+
* All internally created loggers implementation will be overridden with a new implementation according to the new mode.
|
|
61
|
+
*
|
|
62
|
+
* The rest just attached loggers will be just enabled/disabled based on input mode.
|
|
63
|
+
* */
|
|
24
64
|
setMode(mode) {
|
|
25
65
|
if (this._mode === mode) {
|
|
26
66
|
return;
|
|
27
67
|
}
|
|
28
68
|
this._mode = mode || false;
|
|
29
|
-
|
|
30
|
-
for (const l of this._all) {
|
|
31
|
-
l.disable();
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
else {
|
|
35
|
-
for (const l of this._all) {
|
|
36
|
-
if (this._managed.has(l)) {
|
|
37
|
-
l.setLogger(this._createImplementation());
|
|
38
|
-
}
|
|
39
|
-
else {
|
|
40
|
-
l.enable();
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
}
|
|
69
|
+
this._updateAll(this._mode);
|
|
44
70
|
}
|
|
45
71
|
recognize(instance) {
|
|
46
72
|
const result = this._findInstance(instance);
|
|
@@ -59,6 +85,30 @@ export class LoggersManager {
|
|
|
59
85
|
}
|
|
60
86
|
return true;
|
|
61
87
|
}
|
|
88
|
+
_updateAll(mode) {
|
|
89
|
+
if (!mode) {
|
|
90
|
+
for (const l of this._all) {
|
|
91
|
+
l.disable();
|
|
92
|
+
}
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
// implementation is shared for all attached loggers
|
|
96
|
+
const impl = this._createImplementation();
|
|
97
|
+
if (!impl && this._destinations.length === 0) {
|
|
98
|
+
// ending up with missing implementation
|
|
99
|
+
this._updateAll(false);
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
const result = batchLoggers(impl, ...this._destinations);
|
|
103
|
+
for (const l of this._all) {
|
|
104
|
+
if (this._managed.has(l)) {
|
|
105
|
+
l.setLogger(result);
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
l.enable();
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
62
112
|
_findInstance(instance) {
|
|
63
113
|
if (!(instance instanceof ProxyLogger)) {
|
|
64
114
|
return false;
|
|
@@ -77,7 +127,7 @@ export class LoggersManager {
|
|
|
77
127
|
return null;
|
|
78
128
|
}
|
|
79
129
|
default: {
|
|
80
|
-
return Getter.
|
|
130
|
+
return Getter.toValue(mode);
|
|
81
131
|
}
|
|
82
132
|
}
|
|
83
133
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../../src/logger/manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../../src/logger/manager.ts"],"names":[],"mappings":"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"}
|
package/esm/logger/named.js
CHANGED
|
@@ -1,28 +1,32 @@
|
|
|
1
|
-
|
|
1
|
+
import { EMPTY_FUNCTION } from './empty.js';
|
|
2
2
|
export class NamedLogger {
|
|
3
3
|
log = EMPTY_FUNCTION;
|
|
4
4
|
warn = EMPTY_FUNCTION;
|
|
5
5
|
error = EMPTY_FUNCTION;
|
|
6
6
|
_name = null;
|
|
7
|
+
_enabled = false;
|
|
7
8
|
get name() { return this._name; }
|
|
8
9
|
constructor(name) {
|
|
9
10
|
this._name = name || null;
|
|
10
11
|
this.disable();
|
|
11
12
|
}
|
|
13
|
+
get isEnabled() { return this._enabled; }
|
|
12
14
|
enable(overrideName = null) {
|
|
13
15
|
this._name = overrideName || this._name;
|
|
16
|
+
this._enabled = true;
|
|
14
17
|
this.log = this._name
|
|
15
18
|
? (...args) => this.implementation.log(this._name, ...args)
|
|
16
|
-
: this.implementation.log;
|
|
19
|
+
: this.implementation.log.bind(this.implementation);
|
|
17
20
|
this.warn = this._name
|
|
18
21
|
? (...args) => this.implementation.warn(this._name, ...args)
|
|
19
|
-
: this.implementation.warn;
|
|
22
|
+
: this.implementation.warn.bind(this.implementation);
|
|
20
23
|
this.error = this._name
|
|
21
24
|
? (...args) => this.implementation.error(this._name, ...args)
|
|
22
|
-
: this.implementation.error;
|
|
25
|
+
: this.implementation.error.bind(this.implementation);
|
|
23
26
|
return this;
|
|
24
27
|
}
|
|
25
28
|
disable() {
|
|
29
|
+
this._enabled = false;
|
|
26
30
|
this.log = EMPTY_FUNCTION;
|
|
27
31
|
this.warn = EMPTY_FUNCTION;
|
|
28
32
|
this.error = EMPTY_FUNCTION;
|
package/esm/logger/named.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"named.js","sourceRoot":"","sources":["../../../src/logger/named.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"named.js","sourceRoot":"","sources":["../../../src/logger/named.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAG5C,MAAM,OAAgB,WAAW;IACtB,GAAG,GAAmB,cAAc,CAAC;IACrC,IAAI,GAAmB,cAAc,CAAC;IACtC,KAAK,GAAmB,cAAc,CAAC;IAEtC,KAAK,GAAkB,IAAI,CAAC;IAC5B,QAAQ,GAAG,KAAK,CAAC;IAEzB,IAAI,IAAI,KAAK,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAEjC,YAAY,IAAa;QACrB,IAAI,CAAC,KAAK,GAAG,IAAI,IAAI,IAAI,CAAC;QAC1B,IAAI,CAAC,OAAO,EAAE,CAAC;IACnB,CAAC;IAGD,IAAW,SAAS,KAAK,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEhD,MAAM,CAAC,eAA8B,IAAI;QACrC,IAAI,CAAC,KAAK,GAAG,YAAY,IAAI,IAAI,CAAC,KAAK,CAAC;QACxC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QAErB,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK;YACjB,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC;YAC3D,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAExD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK;YAClB,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC;YAC5D,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAEzD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK;YACnB,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC;YAC7D,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAE1D,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,OAAO;QACH,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QAEtB,IAAI,CAAC,GAAG,GAAG,cAAc,CAAC;QAC1B,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;QAC3B,IAAI,CAAC,KAAK,GAAG,cAAc,CAAC;QAE5B,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { Loggable } from './loggable.js';
|
|
2
|
+
/** Logger instance holder, for re-usability */
|
|
3
|
+
export class LoggerProvider extends Loggable {
|
|
4
|
+
_factory = null;
|
|
5
|
+
constructor(nameFormatter, logger) {
|
|
6
|
+
super(logger);
|
|
7
|
+
if (nameFormatter) {
|
|
8
|
+
this.getLoggerName = nameFormatter;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
// changing visibility to public
|
|
12
|
+
get logger() {
|
|
13
|
+
return super.logger;
|
|
14
|
+
}
|
|
15
|
+
get factory() {
|
|
16
|
+
return this._factory;
|
|
17
|
+
}
|
|
18
|
+
setLoggerFactory(factory, ...args) {
|
|
19
|
+
this._factory = factory;
|
|
20
|
+
return super.setLoggerFactory(factory, ...args);
|
|
21
|
+
}
|
|
22
|
+
createLogger(...args) {
|
|
23
|
+
if (!this._factory) {
|
|
24
|
+
return null;
|
|
25
|
+
}
|
|
26
|
+
return this._createLogger(this._factory, ...args);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../../../src/logger/provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAIzC,+CAA+C;AAC/C,MAAM,OAAO,cAAe,SAAQ,QAAQ;IAEhC,QAAQ,GAA0B,IAAI,CAAC;IAE/C,YAAY,aAAoD,EAAE,MAAgB;QAC9E,KAAK,CAAC,MAAM,CAAC,CAAC;QACd,IAAI,aAAa,EAAE,CAAC;YAChB,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACvC,CAAC;IACL,CAAC;IAED,gCAAgC;IAChC,IAAW,MAAM;QACb,OAAO,KAAK,CAAC,MAAM,CAAC;IACxB,CAAC;IAED,IAAW,OAAO;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IAEM,gBAAgB,CAAC,OAA8B,EAAE,GAAG,IAAgC;QACvF,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,OAAO,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;IACpD,CAAC;IAEM,YAAY,CAAC,GAAG,IAAgC;QACnD,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACjB,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,CAAC;IACtD,CAAC;CACJ"}
|
package/esm/logger/proxy.js
CHANGED
|
@@ -1,9 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
log: EMPTY_FUNCTION,
|
|
4
|
-
warn: EMPTY_FUNCTION,
|
|
5
|
-
error: EMPTY_FUNCTION,
|
|
6
|
-
};
|
|
1
|
+
import { NamedLogger } from './named.js';
|
|
2
|
+
import { EMPTY_LOGGER } from './empty.js';
|
|
7
3
|
export class ProxyLogger extends NamedLogger {
|
|
8
4
|
get implementation() { return this._logger || EMPTY_LOGGER; }
|
|
9
5
|
_logger = null;
|
package/esm/logger/proxy.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proxy.js","sourceRoot":"","sources":["../../../src/logger/proxy.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"proxy.js","sourceRoot":"","sources":["../../../src/logger/proxy.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C,MAAM,OAAO,WAAY,SAAQ,WAAW;IAExC,IAAc,cAAc,KAAK,OAAO,IAAI,CAAC,OAAO,IAAI,YAAY,CAAC,CAAC,CAAC;IAE/D,OAAO,GAAmB,IAAI,CAAC;IAEvC,YAAY,MAAkC,EAAE,OAA2B,SAAS;QAChF,KAAK,CAAC,IAAI,CAAC,CAAC;QACZ,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAC3B,CAAC;IAEM,SAAS,CAAC,MAAkC;QAC/C,IAAI,CAAC,OAAO,GAAG,MAAM,IAAI,IAAI,CAAC;QAC9B,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,EAAE,CAAC;QAClB,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,OAAO,EAAE,CAAC;QACnB,CAAC;IACL,CAAC;CACJ"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/logger/types.ts"],"names":[],"mappings":"AAiBA,MAAM,CAAC,MAAM,SAAS,GAAG;IACrB,GAAG,EAAE,CAAC;IACN,IAAI,EAAE,CAAC;IACP,KAAK,EAAE,CAAC;CACsC,CAAC"}
|
package/esm/models/LogicModel.js
CHANGED
|
@@ -1,17 +1,19 @@
|
|
|
1
1
|
import { ExclusiveLoadingError, LoadingModel, withLoading } from './Loading.js';
|
|
2
2
|
import { Getter } from '../types/index.js';
|
|
3
3
|
import { PromiseExtended } from '../structures/promiseExtended.js';
|
|
4
|
-
import {
|
|
5
|
-
export class LogicModel {
|
|
4
|
+
import { Loggable } from '../logger/loggable.js';
|
|
5
|
+
export class LogicModel extends Loggable {
|
|
6
6
|
_loading;
|
|
7
7
|
get isLoading() { return this._loading.isLoading; }
|
|
8
|
-
logger;
|
|
9
8
|
_namedRunners = new Map();
|
|
10
9
|
_runningActionNames = new Set();
|
|
11
|
-
constructor(
|
|
12
|
-
|
|
10
|
+
constructor(useFirstInit = true) {
|
|
11
|
+
super();
|
|
13
12
|
this._loading = this.pureConstructLoadingModel(useFirstInit);
|
|
14
13
|
}
|
|
14
|
+
getLoggerName(name) {
|
|
15
|
+
return `[${name || this.constructor.name}]`;
|
|
16
|
+
}
|
|
15
17
|
pureConstructLoadingModel(useFirstInit) {
|
|
16
18
|
return new LoadingModel(useFirstInit);
|
|
17
19
|
}
|
|
@@ -19,7 +21,7 @@ export class LogicModel {
|
|
|
19
21
|
const started = Date.now();
|
|
20
22
|
const name = options.name;
|
|
21
23
|
if (name && !options.noLogs) {
|
|
22
|
-
this.logger
|
|
24
|
+
this.logger?.log(`runAction "${name}" started...`);
|
|
23
25
|
}
|
|
24
26
|
const runner = async () => {
|
|
25
27
|
const { exclusive = false, noLoading = false, join } = options;
|
|
@@ -29,13 +31,13 @@ export class LogicModel {
|
|
|
29
31
|
if (existingRunner != null) {
|
|
30
32
|
if (join === 'cancel') {
|
|
31
33
|
if (!options.noLogs) {
|
|
32
|
-
this.logger
|
|
34
|
+
this.logger?.warn(`runAction "${name}" has been skipped because another instance of it is in progress`);
|
|
33
35
|
}
|
|
34
36
|
return undefined;
|
|
35
37
|
}
|
|
36
38
|
else if (join === 'merge') {
|
|
37
39
|
if (!options.noLogs) {
|
|
38
|
-
this.logger
|
|
40
|
+
this.logger?.log(`runAction "${name}" merging with existing instance...`);
|
|
39
41
|
}
|
|
40
42
|
return existingRunner;
|
|
41
43
|
}
|
|
@@ -54,7 +56,7 @@ export class LogicModel {
|
|
|
54
56
|
if (exclusive === 'throw') {
|
|
55
57
|
throw new ExclusiveLoadingError(message, storedName);
|
|
56
58
|
}
|
|
57
|
-
this.logger
|
|
59
|
+
this.logger?.warn(message);
|
|
58
60
|
return undefined;
|
|
59
61
|
}
|
|
60
62
|
result = resultWithLoading.result;
|
|
@@ -63,7 +65,7 @@ export class LogicModel {
|
|
|
63
65
|
result = await worker();
|
|
64
66
|
}
|
|
65
67
|
if (name && !options.noLogs) {
|
|
66
|
-
this.logger
|
|
68
|
+
this.logger?.log(`runAction "${storedName}" succeed in ${Date.now() - started}ms`);
|
|
67
69
|
}
|
|
68
70
|
return result;
|
|
69
71
|
}
|
|
@@ -85,7 +87,7 @@ export class LogicModel {
|
|
|
85
87
|
};
|
|
86
88
|
return ActionResult.expectExclusive(PromiseExtended.run(runner))
|
|
87
89
|
.onError(data => {
|
|
88
|
-
this.logger
|
|
90
|
+
this.logger?.error(...formatError({
|
|
89
91
|
name,
|
|
90
92
|
err: data.source,
|
|
91
93
|
errorCtx,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LogicModel.js","sourceRoot":"","sources":["../../../src/models/LogicModel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChF,OAAO,EAAE,MAAM,EAAY,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"LogicModel.js","sourceRoot":"","sources":["../../../src/models/LogicModel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChF,OAAO,EAAE,MAAM,EAAY,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AA2BjD,MAAM,OAAO,UAAW,SAAQ,QAAQ;IAEjB,QAAQ,CAAe;IAE1C,IAAW,SAAS,KAAc,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;IAElD,aAAa,GAAG,IAAI,GAAG,EAA4B,CAAC;IACpD,mBAAmB,GAAG,IAAI,GAAG,EAAU,CAAC;IAEzD,YAAY,YAAY,GAAG,IAAI;QAC3B,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,yBAAyB,CAAC,YAAY,CAAC,CAAC;IACjE,CAAC;IAES,aAAa,CAAC,IAAa;QACjC,OAAO,IAAI,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,CAAC;IAChD,CAAC;IAES,yBAAyB,CAAC,YAAqB;QACrD,OAAO,IAAI,YAAY,CAAC,YAAY,CAAC,CAAC;IAC1C,CAAC;IAES,SAAS,CAAc,MAAwB,EAAE,UAA4B,EAAE,EAAE,QAA0B;QACjH,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC3B,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QAC1B,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YAC1B,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,cAAc,IAAI,cAAc,CAAC,CAAC;QACvD,CAAC;QAED,MAAM,MAAM,GAAG,KAAK,IAAI,EAAE;YACtB,MAAM,EAAE,SAAS,GAAG,KAAK,EAAE,SAAS,GAAG,KAAK,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;YAE/D,IAAI,cAA4C,CAAC;YACjD,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;gBACf,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAC9C,IAAI,cAAc,IAAI,IAAI,EAAE,CAAC;oBACzB,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;wBACpB,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;4BAClB,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,cAAc,IAAI,kEAAkE,CAAC,CAAC;wBAC5G,CAAC;wBACD,OAAO,SAAS,CAAC;oBACrB,CAAC;yBAAM,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;wBAC1B,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;4BAClB,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,cAAc,IAAI,qCAAqC,CAAC,CAAC;wBAC9E,CAAC;wBACD,OAAO,cAA2C,CAAC;oBACvD,CAAC;gBACL,CAAC;YACL,CAAC;YAED,MAAM,UAAU,GAAG,KAAK,IAAI,EAAE;gBAC1B,MAAM,UAAU,GAAG,IAAI,IAAI,YAAY,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC;gBACrD,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;gBAEzC,IAAI,CAAC;oBACD,IAAI,MAAqB,CAAC;oBAC1B,IAAI,CAAC,SAAS,EAAE,CAAC;wBACb,MAAM,iBAAiB,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC;wBAChF,IAAI,iBAAiB,CAAC,OAAO,EAAE,CAAC;4BAC5B,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC;4BAC5F,MAAM,OAAO,GAAG,uBAAuB,SAAS,OAAO,UAAU,2CAA2C,WAAW,EAAE,CAAC;4BAC1H,IAAI,SAAS,KAAK,OAAO,EAAE,CAAC;gCACxB,MAAM,IAAI,qBAAqB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;4BACzD,CAAC;4BAED,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;4BAC3B,OAAO,SAAS,CAAC;wBACrB,CAAC;wBACD,MAAM,GAAG,iBAAiB,CAAC,MAAM,CAAC;oBACtC,CAAC;yBAAM,CAAC;wBACJ,MAAM,GAAG,MAAM,MAAM,EAAE,CAAC;oBAC5B,CAAC;oBAED,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;wBAC1B,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,cAAc,UAAU,gBAAgB,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,IAAI,CAAC,CAAC;oBACvF,CAAC;oBACD,OAAO,MAAM,CAAC;gBAClB,CAAC;wBAAS,CAAC;oBACP,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;gBAChD,CAAC;YACL,CAAC,CAAC;YAEF,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;YAC7B,IAAI,CAAC,IAAI,EAAE,CAAC;gBACR,OAAO,MAAM,OAAO,CAAC;YACzB,CAAC;YAED,IAAI,CAAC;gBACD,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gBACtC,OAAO,MAAM,OAAO,CAAC;YACzB,CAAC;oBAAS,CAAC;gBACP,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACpC,CAAC;QACL,CAAC,CAAC;QAEF,OAAO,YAAY,CAAC,eAAe,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;aAC3D,OAAO,CAAC,IAAI,CAAC,EAAE;YACZ,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,WAAW,CAAC;gBAC9B,IAAI;gBACJ,GAAG,EAAE,IAAI,CAAC,MAAM;gBAChB,QAAQ;gBACR,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO;aAChC,CAAC,CAAC,CAAC;QACR,CAAC,CAAC,CAAC;IACX,CAAC;CACJ;AASD,SAAS,WAAW,CAAa,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAa;IACxE,MAAM,OAAO,GAAG,CAAC,GAAY,EAAE,GAAG,IAAc,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACvH,MAAM,aAAa,GAAG,GAAG,EAAE;QACvB,IAAI,CAAC,GAAG,EAAE,CAAC;YACP,OAAO,CAAC,EAAE,CAAC,CAAC;QAChB,CAAC;QAED,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YACrB,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;QACvC,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;IAC7B,CAAC,CAAC;IAEF,OAAO;QACH,cAAc,IAAI,IAAI,WAAW,2BAA2B,OAAO,KAAK;QACxE,GAAG;QACH,GAAG,OAAO,CAAC,aAAa,EAAE,EAAE,UAAU,CAAC;QACvC,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,YAAY,CAAC;KACrD,CAAC;AACN,CAAC;AAID,MAAM,KAAW,YAAY,CAe5B;AAfD,WAAiB,YAAY;IAGzB,IAAiB,MAAM,CAKtB;IALD,WAAiB,MAAM;QACN,aAAM,GAAG;YAClB,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,qBAAqB;SACxB,CAAC;IACf,CAAC,EALgB,MAAM,GAAN,mBAAM,KAAN,mBAAM,QAKtB;IAEY,4BAAe,GAAG,eAAe,CAAC,WAAW,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAEzF,SAAgB,eAAe,CAAI,IAAO;QACtC,OAAO,aAAA,eAAe,CAAC,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IAC5D,CAAC;IAFe,4BAAe,kBAE9B,CAAA;AACL,CAAC,EAfgB,YAAY,KAAZ,YAAY,QAe5B"}
|
package/esm/observing/event.js
CHANGED
|
@@ -1,24 +1,11 @@
|
|
|
1
1
|
import { forEachAsync } from '../async/arrays.js';
|
|
2
|
-
import { createLogger } from '../logger/shared.js';
|
|
3
2
|
import { catchPromise } from '../functions/safe.js';
|
|
4
|
-
|
|
3
|
+
import { Loggable } from '../logger/loggable.js';
|
|
4
|
+
export class Event extends Loggable {
|
|
5
5
|
_handlers = [];
|
|
6
|
-
_logger = null;
|
|
7
|
-
constructor(withDefaultLogger = true) {
|
|
8
|
-
if (withDefaultLogger) {
|
|
9
|
-
this.withLogger('');
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
6
|
get isEmpty() { return this._handlers.length === 0; }
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
this._logger = null;
|
|
16
|
-
return this;
|
|
17
|
-
}
|
|
18
|
-
this._logger = typeof loggerOrName === 'string'
|
|
19
|
-
? createLogger(`[Event:${loggerOrName || '?'}]`)
|
|
20
|
-
: loggerOrName;
|
|
21
|
-
return this;
|
|
7
|
+
getLoggerName(name) {
|
|
8
|
+
return `[Event:${name || '?'}]`;
|
|
22
9
|
}
|
|
23
10
|
/** Clears handlers list */
|
|
24
11
|
resetHandlers = () => {
|
|
@@ -76,7 +63,7 @@ export class Event {
|
|
|
76
63
|
return this;
|
|
77
64
|
}
|
|
78
65
|
logError(data, cb, err) {
|
|
79
|
-
this.
|
|
66
|
+
this.logger?.error(`type:${typeof data} Handler ${cb.name} thrown an exception: `, err);
|
|
80
67
|
}
|
|
81
68
|
}
|
|
82
69
|
export function oneTimeSubscription(e, filter) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event.js","sourceRoot":"","sources":["../../../src/observing/event.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,
|
|
1
|
+
{"version":3,"file":"event.js","sourceRoot":"","sources":["../../../src/observing/event.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import logger from '../logger/shared.js';
|
|
1
|
+
import { decomposeMs } from '../dates/decompose.js';
|
|
2
|
+
import { arrayAverage } from '../math/arrays.js';
|
|
4
3
|
import { Event } from './event.js';
|
|
5
4
|
export class ProgressTracker {
|
|
6
|
-
|
|
5
|
+
logger;
|
|
7
6
|
_firstTimestamp = Date.now();
|
|
8
7
|
_lastTimestamp = null;
|
|
9
8
|
_lastCompleted = null;
|
|
@@ -12,18 +11,13 @@ export class ProgressTracker {
|
|
|
12
11
|
_currentProgress = 0;
|
|
13
12
|
_deltas = [];
|
|
14
13
|
_changed = new Event();
|
|
15
|
-
constructor(
|
|
16
|
-
this.
|
|
14
|
+
constructor(logger) {
|
|
15
|
+
this.logger = logger;
|
|
17
16
|
}
|
|
18
17
|
get changed() { return this._changed.expose(); }
|
|
19
18
|
get total() { return this._total; }
|
|
20
19
|
get completed() { return this._completed; }
|
|
21
20
|
get current() { return this._currentProgress; }
|
|
22
|
-
get logger() {
|
|
23
|
-
return this.log === true
|
|
24
|
-
? logger
|
|
25
|
-
: (this.log || null);
|
|
26
|
-
}
|
|
27
21
|
setTotal(total) {
|
|
28
22
|
this._total = total;
|
|
29
23
|
return this;
|
|
@@ -47,10 +41,10 @@ export class ProgressTracker {
|
|
|
47
41
|
}
|
|
48
42
|
this._currentProgress = Math.floor(completed / (total || 100) * 100);
|
|
49
43
|
const itemsLeft = total - completed;
|
|
50
|
-
const leftProgressTime = itemsLeft * (
|
|
44
|
+
const leftProgressTime = itemsLeft * (arrayAverage(this._deltas, true) || 1000);
|
|
51
45
|
this._lastTimestamp = Date.now();
|
|
52
46
|
const totalElapsedMs = this._lastTimestamp - this._firstTimestamp;
|
|
53
|
-
if (this.
|
|
47
|
+
if (this.logger) {
|
|
54
48
|
const totalElapsed = msToString(totalElapsedMs);
|
|
55
49
|
const totalEstimated = msToString(leftProgressTime);
|
|
56
50
|
this.logger.log(`Progress: ${completed}/${total} ${totalElapsed}/${totalEstimated} => ${this._currentProgress}%`);
|
|
@@ -65,7 +59,7 @@ export class ProgressTracker {
|
|
|
65
59
|
}
|
|
66
60
|
}
|
|
67
61
|
function msToString(ms) {
|
|
68
|
-
const decs =
|
|
62
|
+
const decs = decomposeMs(ms, 'second', 'minute', 'hour');
|
|
69
63
|
const nf = (n) => n.toString().padStart(2, '0');
|
|
70
64
|
return `${nf(decs.hour)}:${nf(decs.minute)}:${nf(decs.second)}`;
|
|
71
65
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"progressTracker.js","sourceRoot":"","sources":["../../../src/observing/progressTracker.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"progressTracker.js","sourceRoot":"","sources":["../../../src/observing/progressTracker.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ThrottleProcessor } from '../functions/throttle.js';
|
|
2
|
-
import {
|
|
2
|
+
import { Loggable } from '../logger/loggable.js';
|
|
3
3
|
import { Model } from '../models/Model.js';
|
|
4
4
|
export var DeferredGetter;
|
|
5
5
|
(function (DeferredGetter) {
|
|
@@ -18,7 +18,7 @@ const BATCHING_DELAY = 200;
|
|
|
18
18
|
* - batching of fetches.
|
|
19
19
|
* - auto-invalidation of cached items.
|
|
20
20
|
*/
|
|
21
|
-
export class PromiseCache {
|
|
21
|
+
export class PromiseCache extends Loggable {
|
|
22
22
|
fetcher;
|
|
23
23
|
keyAdapter;
|
|
24
24
|
keyParser;
|
|
@@ -30,9 +30,9 @@ export class PromiseCache {
|
|
|
30
30
|
_batch = null;
|
|
31
31
|
_invalidationTimeMs = null;
|
|
32
32
|
_keepInstanceDuringInvalidation = false;
|
|
33
|
-
_logger = null;
|
|
34
33
|
_version = 0;
|
|
35
34
|
constructor(fetcher, keyAdapter, keyParser) {
|
|
35
|
+
super();
|
|
36
36
|
this.fetcher = fetcher;
|
|
37
37
|
this.keyAdapter = keyAdapter;
|
|
38
38
|
this.keyParser = keyParser;
|
|
@@ -66,14 +66,8 @@ export class PromiseCache {
|
|
|
66
66
|
}
|
|
67
67
|
return this.keyAdapter(k);
|
|
68
68
|
}
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
this._logger = nameOrLogger;
|
|
72
|
-
}
|
|
73
|
-
else {
|
|
74
|
-
this._logger = createLogger(`[PromiseCache:${nameOrLogger || '?'}]`);
|
|
75
|
-
}
|
|
76
|
-
return this;
|
|
69
|
+
getLoggerName(name) {
|
|
70
|
+
return `[PromiseCache:${name || '?'}]`;
|
|
77
71
|
}
|
|
78
72
|
/**
|
|
79
73
|
* Provide a fetcher function that takes multiple ids and returns multiple results at once. Will be called with a slight delay to allow multiple ids to be collected.
|
|
@@ -120,7 +114,7 @@ export class PromiseCache {
|
|
|
120
114
|
// make sure current item is hooked here from the cache (required by observers)
|
|
121
115
|
const item = this._itemsCache.get(key);
|
|
122
116
|
if (isInvalid) {
|
|
123
|
-
this.
|
|
117
|
+
this.logger?.log(key, 'item is invalidated');
|
|
124
118
|
}
|
|
125
119
|
return {
|
|
126
120
|
item: (isInvalid && !this._keepInstanceDuringInvalidation) ? undefined : item,
|
|
@@ -134,19 +128,19 @@ export class PromiseCache {
|
|
|
134
128
|
// spin fetch
|
|
135
129
|
this.get(id);
|
|
136
130
|
}
|
|
137
|
-
this.
|
|
131
|
+
this.logger?.log(key, 'getCurrent: returns', item);
|
|
138
132
|
return item;
|
|
139
133
|
}
|
|
140
134
|
get(id) {
|
|
141
135
|
const { item, key, isInvalid } = this._getCurrent(id);
|
|
142
136
|
// return cached item if it's not invalidated
|
|
143
137
|
if (item !== undefined && !isInvalid) {
|
|
144
|
-
this.
|
|
138
|
+
this.logger?.log(key, 'get: item resolved to', item, isInvalid ? '(invalidated)' : '');
|
|
145
139
|
return Promise.resolve(item);
|
|
146
140
|
}
|
|
147
141
|
let promise = this._fetchCache.get(key);
|
|
148
142
|
if (promise != null) {
|
|
149
|
-
this.
|
|
143
|
+
this.logger?.log(key, 'get: item resolved to <promise>');
|
|
150
144
|
return promise;
|
|
151
145
|
}
|
|
152
146
|
this.setStatus(key, true);
|
|
@@ -166,7 +160,7 @@ export class PromiseCache {
|
|
|
166
160
|
return res;
|
|
167
161
|
}
|
|
168
162
|
if (this._fetchCache.get(key) != null) {
|
|
169
|
-
this.
|
|
163
|
+
this.logger?.log(key, 'item\'s <promise> resolved to', res);
|
|
170
164
|
res = this.prepareResult(res);
|
|
171
165
|
this.storeResult(key, res);
|
|
172
166
|
}
|
|
@@ -177,7 +171,7 @@ export class PromiseCache {
|
|
|
177
171
|
this.onFetchComplete(key);
|
|
178
172
|
}
|
|
179
173
|
else {
|
|
180
|
-
this.
|
|
174
|
+
this.logger?.log(key, 'skipping item\'s resolve due to version change ("clear()" has been called)');
|
|
181
175
|
}
|
|
182
176
|
}
|
|
183
177
|
};
|
|
@@ -236,7 +230,7 @@ export class PromiseCache {
|
|
|
236
230
|
}
|
|
237
231
|
/** @override */
|
|
238
232
|
setStatus(key, status) {
|
|
239
|
-
this.
|
|
233
|
+
this.logger?.log(key, 'status update:', status);
|
|
240
234
|
this._itemsStatus.set(key, status);
|
|
241
235
|
}
|
|
242
236
|
/** @override */
|
|
@@ -265,7 +259,7 @@ export class PromiseCache {
|
|
|
265
259
|
/** @pure */
|
|
266
260
|
async tryFetchInBatch(id) {
|
|
267
261
|
const fetchWrap = () => this.fetcher(id).catch(err => {
|
|
268
|
-
this.
|
|
262
|
+
this.logger?.warn('fetcher failed', id, err);
|
|
269
263
|
return null;
|
|
270
264
|
});
|
|
271
265
|
if (!this._batch) {
|
|
@@ -273,7 +267,7 @@ export class PromiseCache {
|
|
|
273
267
|
}
|
|
274
268
|
const res = await this._batch.push(id)
|
|
275
269
|
.catch(err => {
|
|
276
|
-
this.
|
|
270
|
+
this.logger?.warn('batch fetch failed', id, err);
|
|
277
271
|
return null;
|
|
278
272
|
});
|
|
279
273
|
if (!res || !res.result || res.result[res.index] === undefined) {
|