@ngxs/logger-plugin 18.1.3 → 18.1.4
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.
|
@@ -36,24 +36,7 @@ export class LogWriter {
|
|
|
36
36
|
this.log(title, redishStyle, payload);
|
|
37
37
|
}
|
|
38
38
|
log(title, color, payload) {
|
|
39
|
-
|
|
40
|
-
this.logger.log(title, payload);
|
|
41
|
-
}
|
|
42
|
-
else {
|
|
43
|
-
this.logger.log('%c ' + title, color, payload);
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
isIE() {
|
|
47
|
-
const ua = typeof window !== 'undefined' && window.navigator.userAgent
|
|
48
|
-
? window.navigator.userAgent
|
|
49
|
-
: '';
|
|
50
|
-
let msIE = false;
|
|
51
|
-
const oldIE = ua.indexOf('MSIE ');
|
|
52
|
-
const newIE = ua.indexOf('Trident/');
|
|
53
|
-
if (oldIE > -1 || newIE > -1) {
|
|
54
|
-
msIE = true;
|
|
55
|
-
}
|
|
56
|
-
return msIE;
|
|
39
|
+
this.logger.log('%c ' + title, color, payload);
|
|
57
40
|
}
|
|
58
41
|
}
|
|
59
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nLXdyaXRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2xvZ2dlci1wbHVnaW4vc3JjL2xvZy13cml0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxPQUFPLFNBQVM7SUFHcEIsWUFBb0IsT0FBZ0M7UUFBaEMsWUFBTyxHQUFQLE9BQU8sQ0FBeUI7UUFDbEQsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxJQUFTLEVBQUUsQ0FBQztRQUN2QyxJQUFJLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLElBQUksT0FBTyxDQUFDO0lBQzFDLENBQUM7SUFFRCxVQUFVLENBQUMsT0FBZTtRQUN4QixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVM7WUFDekMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYztZQUM1QixDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7UUFDdEIsSUFBSSxDQUFDO1lBQ0gsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQzFDLENBQUM7UUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ1gsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN2QixDQUFDO0lBQ0gsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUM7WUFDSCxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3pCLENBQUM7UUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ1gsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDbkMsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPLENBQUMsS0FBYSxFQUFFLE9BQVk7UUFDakMsTUFBTSxTQUFTLEdBQUcsbUNBQW1DLENBQUM7UUFDdEQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxRQUFRLENBQUMsS0FBYSxFQUFFLE9BQVk7UUFDbEMsTUFBTSxVQUFVLEdBQUcsbUNBQW1DLENBQUM7UUFDdkQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxTQUFTLENBQUMsS0FBYSxFQUFFLE9BQVk7UUFDbkMsTUFBTSxXQUFXLEdBQUcsbUNBQW1DLENBQUM7UUFDeEQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsV0FBVyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRCxHQUFHLENBQUMsS0FBYSxFQUFFLEtBQWEsRUFBRSxPQUFZO1FBQzVDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssR0FBRyxLQUFLLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ2pELENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5neHNMb2dnZXJQbHVnaW5PcHRpb25zIH0gZnJvbSAnLi9zeW1ib2xzJztcblxuZXhwb3J0IGNsYXNzIExvZ1dyaXRlciB7XG4gIHByaXZhdGUgbG9nZ2VyOiBhbnk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBvcHRpb25zOiBOZ3hzTG9nZ2VyUGx1Z2luT3B0aW9ucykge1xuICAgIHRoaXMub3B0aW9ucyA9IHRoaXMub3B0aW9ucyB8fCA8YW55Pnt9O1xuICAgIHRoaXMubG9nZ2VyID0gb3B0aW9ucy5sb2dnZXIgfHwgY29uc29sZTtcbiAgfVxuXG4gIHN0YXJ0R3JvdXAobWVzc2FnZTogc3RyaW5nKSB7XG4gICAgY29uc3Qgc3RhcnRHcm91cEZuID0gdGhpcy5vcHRpb25zLmNvbGxhcHNlZFxuICAgICAgPyB0aGlzLmxvZ2dlci5ncm91cENvbGxhcHNlZFxuICAgICAgOiB0aGlzLmxvZ2dlci5ncm91cDtcbiAgICB0cnkge1xuICAgICAgc3RhcnRHcm91cEZuLmNhbGwodGhpcy5sb2dnZXIsIG1lc3NhZ2UpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnNvbGUubG9nKG1lc3NhZ2UpO1xuICAgIH1cbiAgfVxuXG4gIGVuZEdyb3VwKCkge1xuICAgIHRyeSB7XG4gICAgICB0aGlzLmxvZ2dlci5ncm91cEVuZCgpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMubG9nZ2VyLmxvZygn4oCU4oCUIGxvZyBlbmQg4oCU4oCUJyk7XG4gICAgfVxuICB9XG5cbiAgbG9nR3JleSh0aXRsZTogc3RyaW5nLCBwYXlsb2FkOiBhbnkpIHtcbiAgICBjb25zdCBncmV5U3R5bGUgPSAnY29sb3I6ICM5RTlFOUU7IGZvbnQtd2VpZ2h0OiBib2xkJztcbiAgICB0aGlzLmxvZyh0aXRsZSwgZ3JleVN0eWxlLCBwYXlsb2FkKTtcbiAgfVxuXG4gIGxvZ0dyZWVuKHRpdGxlOiBzdHJpbmcsIHBheWxvYWQ6IGFueSkge1xuICAgIGNvbnN0IGdyZWVuU3R5bGUgPSAnY29sb3I6ICM0Q0FGNTA7IGZvbnQtd2VpZ2h0OiBib2xkJztcbiAgICB0aGlzLmxvZyh0aXRsZSwgZ3JlZW5TdHlsZSwgcGF5bG9hZCk7XG4gIH1cblxuICBsb2dSZWRpc2godGl0bGU6IHN0cmluZywgcGF5bG9hZDogYW55KSB7XG4gICAgY29uc3QgcmVkaXNoU3R5bGUgPSAnY29sb3I6ICNGRDgxODI7IGZvbnQtd2VpZ2h0OiBib2xkJztcbiAgICB0aGlzLmxvZyh0aXRsZSwgcmVkaXNoU3R5bGUsIHBheWxvYWQpO1xuICB9XG5cbiAgbG9nKHRpdGxlOiBzdHJpbmcsIGNvbG9yOiBzdHJpbmcsIHBheWxvYWQ6IGFueSkge1xuICAgIHRoaXMubG9nZ2VyLmxvZygnJWMgJyArIHRpdGxlLCBjb2xvciwgcGF5bG9hZCk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { inject, Injectable, Injector, runInInjectionContext } from '@angular/core';
|
|
2
2
|
import { Store } from '@ngxs/store';
|
|
3
|
-
import { catchError, tap } from 'rxjs
|
|
4
|
-
import { ActionLogger } from './action-logger';
|
|
3
|
+
import { catchError, tap } from 'rxjs';
|
|
5
4
|
import { LogWriter } from './log-writer';
|
|
5
|
+
import { ActionLogger } from './action-logger';
|
|
6
6
|
import { NGXS_LOGGER_PLUGIN_OPTIONS } from './symbols';
|
|
7
7
|
import * as i0 from "@angular/core";
|
|
8
8
|
export class NgxsLoggerPlugin {
|
|
9
|
-
constructor(
|
|
10
|
-
this._options =
|
|
11
|
-
this._injector =
|
|
9
|
+
constructor() {
|
|
10
|
+
this._options = inject(NGXS_LOGGER_PLUGIN_OPTIONS);
|
|
11
|
+
this._injector = inject(Injector);
|
|
12
12
|
}
|
|
13
13
|
handle(state, event, next) {
|
|
14
|
-
if (this._options.disabled ||
|
|
14
|
+
if (this._options.disabled || this._skipLogging(state, event)) {
|
|
15
15
|
return next(state, event);
|
|
16
16
|
}
|
|
17
|
-
this._logWriter
|
|
17
|
+
this._logWriter ||= new LogWriter(this._options);
|
|
18
18
|
// Retrieve lazily to avoid cyclic dependency exception
|
|
19
|
-
this._store
|
|
19
|
+
this._store ||= this._injector.get(Store);
|
|
20
20
|
const actionLogger = new ActionLogger(event, this._store, this._logWriter);
|
|
21
21
|
actionLogger.dispatched(state);
|
|
22
22
|
return next(state, event).pipe(tap(nextState => {
|
|
@@ -26,13 +26,17 @@ export class NgxsLoggerPlugin {
|
|
|
26
26
|
throw error;
|
|
27
27
|
}));
|
|
28
28
|
}
|
|
29
|
-
|
|
29
|
+
_skipLogging(state, event) {
|
|
30
|
+
// Run the `filter: () => ...` function within the injection context so
|
|
31
|
+
// that the user can access the dependency injection and inject services
|
|
32
|
+
// to retrieve properties. This will help determine whether or not to log the action.
|
|
33
|
+
const allowLogging = runInInjectionContext(this._injector, () => this._options.filter(event, state));
|
|
34
|
+
return !allowLogging;
|
|
35
|
+
}
|
|
36
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: NgxsLoggerPlugin, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
30
37
|
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: NgxsLoggerPlugin }); }
|
|
31
38
|
}
|
|
32
39
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: NgxsLoggerPlugin, decorators: [{
|
|
33
40
|
type: Injectable
|
|
34
|
-
}]
|
|
35
|
-
|
|
36
|
-
args: [NGXS_LOGGER_PLUGIN_OPTIONS]
|
|
37
|
-
}] }, { type: i0.Injector }] });
|
|
38
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2VyLnBsdWdpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2xvZ2dlci1wbHVnaW4vc3JjL2xvZ2dlci5wbHVnaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFcEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVqRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN6QyxPQUFPLEVBQTJCLDBCQUEwQixFQUFFLE1BQU0sV0FBVyxDQUFDOztBQUdoRixNQUFNLE9BQU8sZ0JBQWdCO0lBSTNCLFlBQzhDLFFBQWlDLEVBQ3JFLFNBQW1CO1FBRGlCLGFBQVEsR0FBUixRQUFRLENBQXlCO1FBQ3JFLGNBQVMsR0FBVCxTQUFTLENBQVU7SUFDMUIsQ0FBQztJQUVKLE1BQU0sQ0FBQyxLQUFVLEVBQUUsS0FBVSxFQUFFLElBQXNCO1FBQ25ELElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU8sQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNuRSxPQUFPLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDNUIsQ0FBQztRQUVELElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDbEUsdURBQXVEO1FBQ3ZELElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBUSxLQUFLLENBQUMsQ0FBQztRQUU5RCxNQUFNLFlBQVksR0FBRyxJQUFJLFlBQVksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFM0UsWUFBWSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUUvQixPQUFPLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUM1QixHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUU7WUFDZCxZQUFZLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3BDLENBQUMsQ0FBQyxFQUNGLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNqQixZQUFZLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzVCLE1BQU0sS0FBSyxDQUFDO1FBQ2QsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7aUlBL0JVLGdCQUFnQixrQkFLakIsMEJBQTBCO3FJQUx6QixnQkFBZ0I7OzJGQUFoQixnQkFBZ0I7a0JBRDVCLFVBQVU7OzBCQU1OLE1BQU07MkJBQUMsMEJBQTBCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmd4cy9zdG9yZSc7XG5pbXBvcnQgeyBOZ3hzTmV4dFBsdWdpbkZuLCBOZ3hzUGx1Z2luIH0gZnJvbSAnQG5neHMvc3RvcmUvcGx1Z2lucyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IEFjdGlvbkxvZ2dlciB9IGZyb20gJy4vYWN0aW9uLWxvZ2dlcic7XG5pbXBvcnQgeyBMb2dXcml0ZXIgfSBmcm9tICcuL2xvZy13cml0ZXInO1xuaW1wb3J0IHsgTmd4c0xvZ2dlclBsdWdpbk9wdGlvbnMsIE5HWFNfTE9HR0VSX1BMVUdJTl9PUFRJT05TIH0gZnJvbSAnLi9zeW1ib2xzJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE5neHNMb2dnZXJQbHVnaW4gaW1wbGVtZW50cyBOZ3hzUGx1Z2luIHtcbiAgcHJpdmF0ZSBfc3RvcmU6IFN0b3JlO1xuICBwcml2YXRlIF9sb2dXcml0ZXI6IExvZ1dyaXRlcjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KE5HWFNfTE9HR0VSX1BMVUdJTl9PUFRJT05TKSBwcml2YXRlIF9vcHRpb25zOiBOZ3hzTG9nZ2VyUGx1Z2luT3B0aW9ucyxcbiAgICBwcml2YXRlIF9pbmplY3RvcjogSW5qZWN0b3JcbiAgKSB7fVxuXG4gIGhhbmRsZShzdGF0ZTogYW55LCBldmVudDogYW55LCBuZXh0OiBOZ3hzTmV4dFBsdWdpbkZuKSB7XG4gICAgaWYgKHRoaXMuX29wdGlvbnMuZGlzYWJsZWQgfHwgIXRoaXMuX29wdGlvbnMuZmlsdGVyIShldmVudCwgc3RhdGUpKSB7XG4gICAgICByZXR1cm4gbmV4dChzdGF0ZSwgZXZlbnQpO1xuICAgIH1cblxuICAgIHRoaXMuX2xvZ1dyaXRlciA9IHRoaXMuX2xvZ1dyaXRlciB8fCBuZXcgTG9nV3JpdGVyKHRoaXMuX29wdGlvbnMpO1xuICAgIC8vIFJldHJpZXZlIGxhemlseSB0byBhdm9pZCBjeWNsaWMgZGVwZW5kZW5jeSBleGNlcHRpb25cbiAgICB0aGlzLl9zdG9yZSA9IHRoaXMuX3N0b3JlIHx8IHRoaXMuX2luamVjdG9yLmdldDxTdG9yZT4oU3RvcmUpO1xuXG4gICAgY29uc3QgYWN0aW9uTG9nZ2VyID0gbmV3IEFjdGlvbkxvZ2dlcihldmVudCwgdGhpcy5fc3RvcmUsIHRoaXMuX2xvZ1dyaXRlcik7XG5cbiAgICBhY3Rpb25Mb2dnZXIuZGlzcGF0Y2hlZChzdGF0ZSk7XG5cbiAgICByZXR1cm4gbmV4dChzdGF0ZSwgZXZlbnQpLnBpcGUoXG4gICAgICB0YXAobmV4dFN0YXRlID0+IHtcbiAgICAgICAgYWN0aW9uTG9nZ2VyLmNvbXBsZXRlZChuZXh0U3RhdGUpO1xuICAgICAgfSksXG4gICAgICBjYXRjaEVycm9yKGVycm9yID0+IHtcbiAgICAgICAgYWN0aW9uTG9nZ2VyLmVycm9yZWQoZXJyb3IpO1xuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxufVxuIl19
|
|
41
|
+
}] });
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2VyLnBsdWdpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2xvZ2dlci1wbHVnaW4vc3JjL2xvZ2dlci5wbHVnaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFcEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFdkMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sV0FBVyxDQUFDOztBQUd2RCxNQUFNLE9BQU8sZ0JBQWdCO0lBRDdCO1FBS1UsYUFBUSxHQUFHLE1BQU0sQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1FBQzlDLGNBQVMsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7S0FvQ3RDO0lBbENDLE1BQU0sQ0FBQyxLQUFVLEVBQUUsS0FBVSxFQUFFLElBQXNCO1FBQ25ELElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUM5RCxPQUFPLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDNUIsQ0FBQztRQUVELElBQUksQ0FBQyxVQUFVLEtBQUssSUFBSSxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2pELHVEQUF1RDtRQUN2RCxJQUFJLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTFDLE1BQU0sWUFBWSxHQUFHLElBQUksWUFBWSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUUzRSxZQUFZLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRS9CLE9BQU8sSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQzVCLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRTtZQUNkLFlBQVksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDcEMsQ0FBQyxDQUFDLEVBQ0YsVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ2pCLFlBQVksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDNUIsTUFBTSxLQUFLLENBQUM7UUFDZCxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVPLFlBQVksQ0FBQyxLQUFVLEVBQUUsS0FBVTtRQUN6Qyx1RUFBdUU7UUFDdkUsd0VBQXdFO1FBQ3hFLHFGQUFxRjtRQUNyRixNQUFNLFlBQVksR0FBRyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLEdBQUcsRUFBRSxDQUM5RCxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU8sQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQ3BDLENBQUM7UUFFRixPQUFPLENBQUMsWUFBWSxDQUFDO0lBQ3ZCLENBQUM7aUlBeENVLGdCQUFnQjtxSUFBaEIsZ0JBQWdCOzsyRkFBaEIsZ0JBQWdCO2tCQUQ1QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlLCBJbmplY3RvciwgcnVuSW5JbmplY3Rpb25Db250ZXh0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3hzL3N0b3JlJztcbmltcG9ydCB7IE5neHNOZXh0UGx1Z2luRm4sIE5neHNQbHVnaW4gfSBmcm9tICdAbmd4cy9zdG9yZS9wbHVnaW5zJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIHRhcCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBMb2dXcml0ZXIgfSBmcm9tICcuL2xvZy13cml0ZXInO1xuaW1wb3J0IHsgQWN0aW9uTG9nZ2VyIH0gZnJvbSAnLi9hY3Rpb24tbG9nZ2VyJztcbmltcG9ydCB7IE5HWFNfTE9HR0VSX1BMVUdJTl9PUFRJT05TIH0gZnJvbSAnLi9zeW1ib2xzJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE5neHNMb2dnZXJQbHVnaW4gaW1wbGVtZW50cyBOZ3hzUGx1Z2luIHtcbiAgcHJpdmF0ZSBfc3RvcmU6IFN0b3JlO1xuICBwcml2YXRlIF9sb2dXcml0ZXI6IExvZ1dyaXRlcjtcblxuICBwcml2YXRlIF9vcHRpb25zID0gaW5qZWN0KE5HWFNfTE9HR0VSX1BMVUdJTl9PUFRJT05TKTtcbiAgcHJpdmF0ZSBfaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuXG4gIGhhbmRsZShzdGF0ZTogYW55LCBldmVudDogYW55LCBuZXh0OiBOZ3hzTmV4dFBsdWdpbkZuKSB7XG4gICAgaWYgKHRoaXMuX29wdGlvbnMuZGlzYWJsZWQgfHwgdGhpcy5fc2tpcExvZ2dpbmcoc3RhdGUsIGV2ZW50KSkge1xuICAgICAgcmV0dXJuIG5leHQoc3RhdGUsIGV2ZW50KTtcbiAgICB9XG5cbiAgICB0aGlzLl9sb2dXcml0ZXIgfHw9IG5ldyBMb2dXcml0ZXIodGhpcy5fb3B0aW9ucyk7XG4gICAgLy8gUmV0cmlldmUgbGF6aWx5IHRvIGF2b2lkIGN5Y2xpYyBkZXBlbmRlbmN5IGV4Y2VwdGlvblxuICAgIHRoaXMuX3N0b3JlIHx8PSB0aGlzLl9pbmplY3Rvci5nZXQoU3RvcmUpO1xuXG4gICAgY29uc3QgYWN0aW9uTG9nZ2VyID0gbmV3IEFjdGlvbkxvZ2dlcihldmVudCwgdGhpcy5fc3RvcmUsIHRoaXMuX2xvZ1dyaXRlcik7XG5cbiAgICBhY3Rpb25Mb2dnZXIuZGlzcGF0Y2hlZChzdGF0ZSk7XG5cbiAgICByZXR1cm4gbmV4dChzdGF0ZSwgZXZlbnQpLnBpcGUoXG4gICAgICB0YXAobmV4dFN0YXRlID0+IHtcbiAgICAgICAgYWN0aW9uTG9nZ2VyLmNvbXBsZXRlZChuZXh0U3RhdGUpO1xuICAgICAgfSksXG4gICAgICBjYXRjaEVycm9yKGVycm9yID0+IHtcbiAgICAgICAgYWN0aW9uTG9nZ2VyLmVycm9yZWQoZXJyb3IpO1xuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX3NraXBMb2dnaW5nKHN0YXRlOiBhbnksIGV2ZW50OiBhbnkpIHtcbiAgICAvLyBSdW4gdGhlIGBmaWx0ZXI6ICgpID0+IC4uLmAgZnVuY3Rpb24gd2l0aGluIHRoZSBpbmplY3Rpb24gY29udGV4dCBzb1xuICAgIC8vIHRoYXQgdGhlIHVzZXIgY2FuIGFjY2VzcyB0aGUgZGVwZW5kZW5jeSBpbmplY3Rpb24gYW5kIGluamVjdCBzZXJ2aWNlc1xuICAgIC8vIHRvIHJldHJpZXZlIHByb3BlcnRpZXMuIFRoaXMgd2lsbCBoZWxwIGRldGVybWluZSB3aGV0aGVyIG9yIG5vdCB0byBsb2cgdGhlIGFjdGlvbi5cbiAgICBjb25zdCBhbGxvd0xvZ2dpbmcgPSBydW5JbkluamVjdGlvbkNvbnRleHQodGhpcy5faW5qZWN0b3IsICgpID0+XG4gICAgICB0aGlzLl9vcHRpb25zLmZpbHRlciEoZXZlbnQsIHN0YXRlKVxuICAgICk7XG5cbiAgICByZXR1cm4gIWFsbG93TG9nZ2luZztcbiAgfVxufVxuIl19
|
package/esm2022/src/symbols.mjs
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { InjectionToken } from '@angular/core';
|
|
2
2
|
export const NGXS_LOGGER_PLUGIN_OPTIONS = new InjectionToken('NGXS_LOGGER_PLUGIN_OPTIONS');
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ltYm9scy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2xvZ2dlci1wbHVnaW4vc3JjL3N5bWJvbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQWdCL0MsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQUcsSUFBSSxjQUFjLENBQzFELDRCQUE0QixDQUM3QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IGludGVyZmFjZSBOZ3hzTG9nZ2VyUGx1Z2luT3B0aW9ucyB7XG4gIC8qKiBBdXRvIGV4cGFuZCBsb2dnZWQgYWN0aW9ucyAgKi9cbiAgY29sbGFwc2VkPzogYm9vbGVhbjtcblxuICAvKiogUHJvdmlkZSBhbHRlcm5hdGUgY29uc29sZS5sb2cgaW1wbGVtZW50YXRpb24gKi9cbiAgbG9nZ2VyPzogYW55O1xuXG4gIC8qKiBEaXNhYmxlIHRoZSBsb2dnZXIuIFVzZWZ1bCBmb3IgcHJvZCBtb2RlLiAqL1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG5cbiAgLyoqIFByZWRpY2F0ZSBmb3IgYWN0aW9ucyB0byBiZSB0aGUgbG9nZ2VkLiBUYWtlcyBhY3Rpb24gYW5kIHN0YXRlIHNuYXBzaG90IGFzIHBhcmFtZXRlcnMgKi9cbiAgZmlsdGVyPzogKGFjdGlvbjogYW55LCBzdGF0ZTogYW55KSA9PiBib29sZWFuO1xufVxuXG5leHBvcnQgY29uc3QgTkdYU19MT0dHRVJfUExVR0lOX09QVElPTlMgPSBuZXcgSW5qZWN0aW9uVG9rZW48Tmd4c0xvZ2dlclBsdWdpbk9wdGlvbnM+KFxuICAnTkdYU19MT0dHRVJfUExVR0lOX09QVElPTlMnXG4pO1xuIl19
|
|
@@ -1,8 +1,50 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { InjectionToken,
|
|
2
|
+
import { InjectionToken, inject, Injector, runInInjectionContext, Injectable, NgModule, makeEnvironmentProviders } from '@angular/core';
|
|
3
3
|
import { Store, withNgxsPlugin } from '@ngxs/store';
|
|
4
4
|
import { getActionTypeFromInstance, NGXS_PLUGINS } from '@ngxs/store/plugins';
|
|
5
|
-
import { tap, catchError } from 'rxjs
|
|
5
|
+
import { tap, catchError } from 'rxjs';
|
|
6
|
+
|
|
7
|
+
class LogWriter {
|
|
8
|
+
constructor(options) {
|
|
9
|
+
this.options = options;
|
|
10
|
+
this.options = this.options || {};
|
|
11
|
+
this.logger = options.logger || console;
|
|
12
|
+
}
|
|
13
|
+
startGroup(message) {
|
|
14
|
+
const startGroupFn = this.options.collapsed
|
|
15
|
+
? this.logger.groupCollapsed
|
|
16
|
+
: this.logger.group;
|
|
17
|
+
try {
|
|
18
|
+
startGroupFn.call(this.logger, message);
|
|
19
|
+
}
|
|
20
|
+
catch (e) {
|
|
21
|
+
console.log(message);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
endGroup() {
|
|
25
|
+
try {
|
|
26
|
+
this.logger.groupEnd();
|
|
27
|
+
}
|
|
28
|
+
catch (e) {
|
|
29
|
+
this.logger.log('—— log end ——');
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
logGrey(title, payload) {
|
|
33
|
+
const greyStyle = 'color: #9E9E9E; font-weight: bold';
|
|
34
|
+
this.log(title, greyStyle, payload);
|
|
35
|
+
}
|
|
36
|
+
logGreen(title, payload) {
|
|
37
|
+
const greenStyle = 'color: #4CAF50; font-weight: bold';
|
|
38
|
+
this.log(title, greenStyle, payload);
|
|
39
|
+
}
|
|
40
|
+
logRedish(title, payload) {
|
|
41
|
+
const redishStyle = 'color: #FD8182; font-weight: bold';
|
|
42
|
+
this.log(title, redishStyle, payload);
|
|
43
|
+
}
|
|
44
|
+
log(title, color, payload) {
|
|
45
|
+
this.logger.log('%c ' + title, color, payload);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
6
48
|
|
|
7
49
|
const repeat = (str, times) => new Array(times + 1).join(str);
|
|
8
50
|
const pad = (num, maxLength) => repeat('0', maxLength - num.toString().length) + num;
|
|
@@ -53,79 +95,20 @@ class ActionLogger {
|
|
|
53
95
|
}
|
|
54
96
|
}
|
|
55
97
|
|
|
56
|
-
class LogWriter {
|
|
57
|
-
constructor(options) {
|
|
58
|
-
this.options = options;
|
|
59
|
-
this.options = this.options || {};
|
|
60
|
-
this.logger = options.logger || console;
|
|
61
|
-
}
|
|
62
|
-
startGroup(message) {
|
|
63
|
-
const startGroupFn = this.options.collapsed
|
|
64
|
-
? this.logger.groupCollapsed
|
|
65
|
-
: this.logger.group;
|
|
66
|
-
try {
|
|
67
|
-
startGroupFn.call(this.logger, message);
|
|
68
|
-
}
|
|
69
|
-
catch (e) {
|
|
70
|
-
console.log(message);
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
endGroup() {
|
|
74
|
-
try {
|
|
75
|
-
this.logger.groupEnd();
|
|
76
|
-
}
|
|
77
|
-
catch (e) {
|
|
78
|
-
this.logger.log('—— log end ——');
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
logGrey(title, payload) {
|
|
82
|
-
const greyStyle = 'color: #9E9E9E; font-weight: bold';
|
|
83
|
-
this.log(title, greyStyle, payload);
|
|
84
|
-
}
|
|
85
|
-
logGreen(title, payload) {
|
|
86
|
-
const greenStyle = 'color: #4CAF50; font-weight: bold';
|
|
87
|
-
this.log(title, greenStyle, payload);
|
|
88
|
-
}
|
|
89
|
-
logRedish(title, payload) {
|
|
90
|
-
const redishStyle = 'color: #FD8182; font-weight: bold';
|
|
91
|
-
this.log(title, redishStyle, payload);
|
|
92
|
-
}
|
|
93
|
-
log(title, color, payload) {
|
|
94
|
-
if (this.isIE()) {
|
|
95
|
-
this.logger.log(title, payload);
|
|
96
|
-
}
|
|
97
|
-
else {
|
|
98
|
-
this.logger.log('%c ' + title, color, payload);
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
isIE() {
|
|
102
|
-
const ua = typeof window !== 'undefined' && window.navigator.userAgent
|
|
103
|
-
? window.navigator.userAgent
|
|
104
|
-
: '';
|
|
105
|
-
let msIE = false;
|
|
106
|
-
const oldIE = ua.indexOf('MSIE ');
|
|
107
|
-
const newIE = ua.indexOf('Trident/');
|
|
108
|
-
if (oldIE > -1 || newIE > -1) {
|
|
109
|
-
msIE = true;
|
|
110
|
-
}
|
|
111
|
-
return msIE;
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
|
|
115
98
|
const NGXS_LOGGER_PLUGIN_OPTIONS = new InjectionToken('NGXS_LOGGER_PLUGIN_OPTIONS');
|
|
116
99
|
|
|
117
100
|
class NgxsLoggerPlugin {
|
|
118
|
-
constructor(
|
|
119
|
-
this._options =
|
|
120
|
-
this._injector =
|
|
101
|
+
constructor() {
|
|
102
|
+
this._options = inject(NGXS_LOGGER_PLUGIN_OPTIONS);
|
|
103
|
+
this._injector = inject(Injector);
|
|
121
104
|
}
|
|
122
105
|
handle(state, event, next) {
|
|
123
|
-
if (this._options.disabled ||
|
|
106
|
+
if (this._options.disabled || this._skipLogging(state, event)) {
|
|
124
107
|
return next(state, event);
|
|
125
108
|
}
|
|
126
|
-
this._logWriter
|
|
109
|
+
this._logWriter ||= new LogWriter(this._options);
|
|
127
110
|
// Retrieve lazily to avoid cyclic dependency exception
|
|
128
|
-
this._store
|
|
111
|
+
this._store ||= this._injector.get(Store);
|
|
129
112
|
const actionLogger = new ActionLogger(event, this._store, this._logWriter);
|
|
130
113
|
actionLogger.dispatched(state);
|
|
131
114
|
return next(state, event).pipe(tap(nextState => {
|
|
@@ -135,15 +118,19 @@ class NgxsLoggerPlugin {
|
|
|
135
118
|
throw error;
|
|
136
119
|
}));
|
|
137
120
|
}
|
|
138
|
-
|
|
121
|
+
_skipLogging(state, event) {
|
|
122
|
+
// Run the `filter: () => ...` function within the injection context so
|
|
123
|
+
// that the user can access the dependency injection and inject services
|
|
124
|
+
// to retrieve properties. This will help determine whether or not to log the action.
|
|
125
|
+
const allowLogging = runInInjectionContext(this._injector, () => this._options.filter(event, state));
|
|
126
|
+
return !allowLogging;
|
|
127
|
+
}
|
|
128
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: NgxsLoggerPlugin, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
139
129
|
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: NgxsLoggerPlugin }); }
|
|
140
130
|
}
|
|
141
131
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: NgxsLoggerPlugin, decorators: [{
|
|
142
132
|
type: Injectable
|
|
143
|
-
}]
|
|
144
|
-
type: Inject,
|
|
145
|
-
args: [NGXS_LOGGER_PLUGIN_OPTIONS]
|
|
146
|
-
}] }, { type: i0.Injector }] });
|
|
133
|
+
}] });
|
|
147
134
|
|
|
148
135
|
const USER_OPTIONS = new InjectionToken('LOGGER_USER_OPTIONS');
|
|
149
136
|
function loggerOptionsFactory(options) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngxs-logger-plugin.mjs","sources":["../../../packages/logger-plugin/src/internals.ts","../../../packages/logger-plugin/src/action-logger.ts","../../../packages/logger-plugin/src/log-writer.ts","../../../packages/logger-plugin/src/symbols.ts","../../../packages/logger-plugin/src/logger.plugin.ts","../../../packages/logger-plugin/src/logger.module.ts","../../../packages/logger-plugin/index.ts","../../../packages/logger-plugin/ngxs-logger-plugin.ts"],"sourcesContent":["export const repeat = (str: string, times: number) => new Array(times + 1).join(str);\n\nexport const pad = (num: number, maxLength: number) =>\n repeat('0', maxLength - num.toString().length) + num;\n\nexport function formatTime(time: Date) {\n return (\n pad(time.getHours(), 2) +\n `:` +\n pad(time.getMinutes(), 2) +\n `:` +\n pad(time.getSeconds(), 2) +\n `.` +\n pad(time.getMilliseconds(), 3)\n );\n}\n","import { Store } from '@ngxs/store';\nimport { getActionTypeFromInstance } from '@ngxs/store/plugins';\n\nimport { formatTime } from './internals';\nimport { LogWriter } from './log-writer';\n\nexport class ActionLogger {\n constructor(\n private action: any,\n private store: Store,\n private logWriter: LogWriter\n ) {}\n\n dispatched(state: any) {\n const actionName = getActionTypeFromInstance(this.action);\n const formattedTime = formatTime(new Date());\n\n const message = `action ${actionName} @ ${formattedTime}`;\n this.logWriter.startGroup(message);\n\n // print payload only if at least one property is supplied\n if (this._hasPayload(this.action)) {\n this.logWriter.logGrey('payload', { ...this.action });\n }\n\n this.logWriter.logGrey('prev state', state);\n }\n\n completed(nextState: any) {\n this.logWriter.logGreen('next state', nextState);\n this.logWriter.endGroup();\n }\n\n errored(error: any) {\n this.logWriter.logRedish('next state after error', this.store.snapshot());\n this.logWriter.logRedish('error', error);\n this.logWriter.endGroup();\n }\n\n private _hasPayload(event: any) {\n const nonEmptyProperties = this._getNonEmptyProperties(event);\n return nonEmptyProperties.length > 0;\n }\n\n private _getNonEmptyProperties(event: any) {\n const keys = Object.keys(event);\n const values = keys.map(key => event[key]);\n return values.filter(value => value !== undefined);\n }\n}\n","import { NgxsLoggerPluginOptions } from './symbols';\nexport class LogWriter {\n private logger: any;\n\n constructor(private options: NgxsLoggerPluginOptions) {\n this.options = this.options || <any>{};\n this.logger = options.logger || console;\n }\n\n startGroup(message: string) {\n const startGroupFn = this.options.collapsed\n ? this.logger.groupCollapsed\n : this.logger.group;\n try {\n startGroupFn.call(this.logger, message);\n } catch (e) {\n console.log(message);\n }\n }\n\n endGroup() {\n try {\n this.logger.groupEnd();\n } catch (e) {\n this.logger.log('—— log end ——');\n }\n }\n\n logGrey(title: string, payload: any) {\n const greyStyle = 'color: #9E9E9E; font-weight: bold';\n this.log(title, greyStyle, payload);\n }\n\n logGreen(title: string, payload: any) {\n const greenStyle = 'color: #4CAF50; font-weight: bold';\n this.log(title, greenStyle, payload);\n }\n\n logRedish(title: string, payload: any) {\n const redishStyle = 'color: #FD8182; font-weight: bold';\n this.log(title, redishStyle, payload);\n }\n\n log(title: string, color: string, payload: any) {\n if (this.isIE()) {\n this.logger.log(title, payload);\n } else {\n this.logger.log('%c ' + title, color, payload);\n }\n }\n\n isIE(): boolean {\n const ua =\n typeof window !== 'undefined' && window.navigator.userAgent\n ? window.navigator.userAgent\n : '';\n let msIE = false;\n const oldIE = ua.indexOf('MSIE ');\n const newIE = ua.indexOf('Trident/');\n if (oldIE > -1 || newIE > -1) {\n msIE = true;\n }\n return msIE;\n }\n}\n","import { InjectionToken } from '@angular/core';\n\nexport interface NgxsLoggerPluginOptions {\n /** Auto expand logged actions */\n collapsed?: boolean;\n\n /** Provide alternate console.log implementation */\n logger?: any;\n\n /** Disable the logger. Useful for prod mode. */\n disabled?: boolean;\n\n /** Predicate for actions to be the logged. Takes action and state snapshot as parameters */\n filter?: (action: any, state: any) => boolean;\n}\n\nexport const NGXS_LOGGER_PLUGIN_OPTIONS = new InjectionToken('NGXS_LOGGER_PLUGIN_OPTIONS');\n","import { Inject, Injectable, Injector } from '@angular/core';\nimport { Store } from '@ngxs/store';\nimport { NgxsNextPluginFn, NgxsPlugin } from '@ngxs/store/plugins';\nimport { catchError, tap } from 'rxjs/operators';\n\nimport { ActionLogger } from './action-logger';\nimport { LogWriter } from './log-writer';\nimport { NgxsLoggerPluginOptions, NGXS_LOGGER_PLUGIN_OPTIONS } from './symbols';\n\n@Injectable()\nexport class NgxsLoggerPlugin implements NgxsPlugin {\n private _store: Store;\n private _logWriter: LogWriter;\n\n constructor(\n @Inject(NGXS_LOGGER_PLUGIN_OPTIONS) private _options: NgxsLoggerPluginOptions,\n private _injector: Injector\n ) {}\n\n handle(state: any, event: any, next: NgxsNextPluginFn) {\n if (this._options.disabled || !this._options.filter!(event, state)) {\n return next(state, event);\n }\n\n this._logWriter = this._logWriter || new LogWriter(this._options);\n // Retrieve lazily to avoid cyclic dependency exception\n this._store = this._store || this._injector.get<Store>(Store);\n\n const actionLogger = new ActionLogger(event, this._store, this._logWriter);\n\n actionLogger.dispatched(state);\n\n return next(state, event).pipe(\n tap(nextState => {\n actionLogger.completed(nextState);\n }),\n catchError(error => {\n actionLogger.errored(error);\n throw error;\n })\n );\n }\n}\n","import {\n EnvironmentProviders,\n InjectionToken,\n ModuleWithProviders,\n NgModule,\n makeEnvironmentProviders\n} from '@angular/core';\nimport { withNgxsPlugin } from '@ngxs/store';\nimport { NGXS_PLUGINS } from '@ngxs/store/plugins';\n\nimport { NgxsLoggerPlugin } from './logger.plugin';\nimport { NgxsLoggerPluginOptions, NGXS_LOGGER_PLUGIN_OPTIONS } from './symbols';\n\nexport const USER_OPTIONS = new InjectionToken('LOGGER_USER_OPTIONS');\n\nexport function loggerOptionsFactory(options: NgxsLoggerPluginOptions) {\n const defaultLoggerOptions: NgxsLoggerPluginOptions = {\n logger: console,\n collapsed: false,\n disabled: false,\n filter: () => true\n };\n\n return {\n ...defaultLoggerOptions,\n ...options\n };\n}\n\n@NgModule()\nexport class NgxsLoggerPluginModule {\n static forRoot(\n options?: NgxsLoggerPluginOptions\n ): ModuleWithProviders<NgxsLoggerPluginModule> {\n return {\n ngModule: NgxsLoggerPluginModule,\n providers: [\n {\n provide: NGXS_PLUGINS,\n useClass: NgxsLoggerPlugin,\n multi: true\n },\n {\n provide: USER_OPTIONS,\n useValue: options\n },\n {\n provide: NGXS_LOGGER_PLUGIN_OPTIONS,\n useFactory: loggerOptionsFactory,\n deps: [USER_OPTIONS]\n }\n ]\n };\n }\n}\n\nexport function withNgxsLoggerPlugin(options?: NgxsLoggerPluginOptions): EnvironmentProviders {\n return makeEnvironmentProviders([\n withNgxsPlugin(NgxsLoggerPlugin),\n { provide: USER_OPTIONS, useValue: options },\n {\n provide: NGXS_LOGGER_PLUGIN_OPTIONS,\n useFactory: loggerOptionsFactory,\n deps: [USER_OPTIONS]\n }\n ]);\n}\n","/**\n * The public api for consumers of @ngxs/logger-plugin\n */\nexport * from './src/public_api';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ngxs-logger-plugin.mjs","sources":["../../../packages/logger-plugin/src/log-writer.ts","../../../packages/logger-plugin/src/internals.ts","../../../packages/logger-plugin/src/action-logger.ts","../../../packages/logger-plugin/src/symbols.ts","../../../packages/logger-plugin/src/logger.plugin.ts","../../../packages/logger-plugin/src/logger.module.ts","../../../packages/logger-plugin/index.ts","../../../packages/logger-plugin/ngxs-logger-plugin.ts"],"sourcesContent":["import { NgxsLoggerPluginOptions } from './symbols';\n\nexport class LogWriter {\n private logger: any;\n\n constructor(private options: NgxsLoggerPluginOptions) {\n this.options = this.options || <any>{};\n this.logger = options.logger || console;\n }\n\n startGroup(message: string) {\n const startGroupFn = this.options.collapsed\n ? this.logger.groupCollapsed\n : this.logger.group;\n try {\n startGroupFn.call(this.logger, message);\n } catch (e) {\n console.log(message);\n }\n }\n\n endGroup() {\n try {\n this.logger.groupEnd();\n } catch (e) {\n this.logger.log('—— log end ——');\n }\n }\n\n logGrey(title: string, payload: any) {\n const greyStyle = 'color: #9E9E9E; font-weight: bold';\n this.log(title, greyStyle, payload);\n }\n\n logGreen(title: string, payload: any) {\n const greenStyle = 'color: #4CAF50; font-weight: bold';\n this.log(title, greenStyle, payload);\n }\n\n logRedish(title: string, payload: any) {\n const redishStyle = 'color: #FD8182; font-weight: bold';\n this.log(title, redishStyle, payload);\n }\n\n log(title: string, color: string, payload: any) {\n this.logger.log('%c ' + title, color, payload);\n }\n}\n","export const repeat = (str: string, times: number) => new Array(times + 1).join(str);\n\nexport const pad = (num: number, maxLength: number) =>\n repeat('0', maxLength - num.toString().length) + num;\n\nexport function formatTime(time: Date) {\n return (\n pad(time.getHours(), 2) +\n `:` +\n pad(time.getMinutes(), 2) +\n `:` +\n pad(time.getSeconds(), 2) +\n `.` +\n pad(time.getMilliseconds(), 3)\n );\n}\n","import { Store } from '@ngxs/store';\nimport { getActionTypeFromInstance } from '@ngxs/store/plugins';\n\nimport { formatTime } from './internals';\nimport { LogWriter } from './log-writer';\n\nexport class ActionLogger {\n constructor(\n private action: any,\n private store: Store,\n private logWriter: LogWriter\n ) {}\n\n dispatched(state: any) {\n const actionName = getActionTypeFromInstance(this.action);\n const formattedTime = formatTime(new Date());\n\n const message = `action ${actionName} @ ${formattedTime}`;\n this.logWriter.startGroup(message);\n\n // print payload only if at least one property is supplied\n if (this._hasPayload(this.action)) {\n this.logWriter.logGrey('payload', { ...this.action });\n }\n\n this.logWriter.logGrey('prev state', state);\n }\n\n completed(nextState: any) {\n this.logWriter.logGreen('next state', nextState);\n this.logWriter.endGroup();\n }\n\n errored(error: any) {\n this.logWriter.logRedish('next state after error', this.store.snapshot());\n this.logWriter.logRedish('error', error);\n this.logWriter.endGroup();\n }\n\n private _hasPayload(event: any) {\n const nonEmptyProperties = this._getNonEmptyProperties(event);\n return nonEmptyProperties.length > 0;\n }\n\n private _getNonEmptyProperties(event: any) {\n const keys = Object.keys(event);\n const values = keys.map(key => event[key]);\n return values.filter(value => value !== undefined);\n }\n}\n","import { InjectionToken } from '@angular/core';\n\nexport interface NgxsLoggerPluginOptions {\n /** Auto expand logged actions */\n collapsed?: boolean;\n\n /** Provide alternate console.log implementation */\n logger?: any;\n\n /** Disable the logger. Useful for prod mode. */\n disabled?: boolean;\n\n /** Predicate for actions to be the logged. Takes action and state snapshot as parameters */\n filter?: (action: any, state: any) => boolean;\n}\n\nexport const NGXS_LOGGER_PLUGIN_OPTIONS = new InjectionToken<NgxsLoggerPluginOptions>(\n 'NGXS_LOGGER_PLUGIN_OPTIONS'\n);\n","import { inject, Injectable, Injector, runInInjectionContext } from '@angular/core';\nimport { Store } from '@ngxs/store';\nimport { NgxsNextPluginFn, NgxsPlugin } from '@ngxs/store/plugins';\nimport { catchError, tap } from 'rxjs';\n\nimport { LogWriter } from './log-writer';\nimport { ActionLogger } from './action-logger';\nimport { NGXS_LOGGER_PLUGIN_OPTIONS } from './symbols';\n\n@Injectable()\nexport class NgxsLoggerPlugin implements NgxsPlugin {\n private _store: Store;\n private _logWriter: LogWriter;\n\n private _options = inject(NGXS_LOGGER_PLUGIN_OPTIONS);\n private _injector = inject(Injector);\n\n handle(state: any, event: any, next: NgxsNextPluginFn) {\n if (this._options.disabled || this._skipLogging(state, event)) {\n return next(state, event);\n }\n\n this._logWriter ||= new LogWriter(this._options);\n // Retrieve lazily to avoid cyclic dependency exception\n this._store ||= this._injector.get(Store);\n\n const actionLogger = new ActionLogger(event, this._store, this._logWriter);\n\n actionLogger.dispatched(state);\n\n return next(state, event).pipe(\n tap(nextState => {\n actionLogger.completed(nextState);\n }),\n catchError(error => {\n actionLogger.errored(error);\n throw error;\n })\n );\n }\n\n private _skipLogging(state: any, event: any) {\n // Run the `filter: () => ...` function within the injection context so\n // that the user can access the dependency injection and inject services\n // to retrieve properties. This will help determine whether or not to log the action.\n const allowLogging = runInInjectionContext(this._injector, () =>\n this._options.filter!(event, state)\n );\n\n return !allowLogging;\n }\n}\n","import {\n EnvironmentProviders,\n InjectionToken,\n ModuleWithProviders,\n NgModule,\n makeEnvironmentProviders\n} from '@angular/core';\nimport { withNgxsPlugin } from '@ngxs/store';\nimport { NGXS_PLUGINS } from '@ngxs/store/plugins';\n\nimport { NgxsLoggerPlugin } from './logger.plugin';\nimport { NgxsLoggerPluginOptions, NGXS_LOGGER_PLUGIN_OPTIONS } from './symbols';\n\nexport const USER_OPTIONS = new InjectionToken('LOGGER_USER_OPTIONS');\n\nexport function loggerOptionsFactory(options: NgxsLoggerPluginOptions) {\n const defaultLoggerOptions: NgxsLoggerPluginOptions = {\n logger: console,\n collapsed: false,\n disabled: false,\n filter: () => true\n };\n\n return {\n ...defaultLoggerOptions,\n ...options\n };\n}\n\n@NgModule()\nexport class NgxsLoggerPluginModule {\n static forRoot(\n options?: NgxsLoggerPluginOptions\n ): ModuleWithProviders<NgxsLoggerPluginModule> {\n return {\n ngModule: NgxsLoggerPluginModule,\n providers: [\n {\n provide: NGXS_PLUGINS,\n useClass: NgxsLoggerPlugin,\n multi: true\n },\n {\n provide: USER_OPTIONS,\n useValue: options\n },\n {\n provide: NGXS_LOGGER_PLUGIN_OPTIONS,\n useFactory: loggerOptionsFactory,\n deps: [USER_OPTIONS]\n }\n ]\n };\n }\n}\n\nexport function withNgxsLoggerPlugin(options?: NgxsLoggerPluginOptions): EnvironmentProviders {\n return makeEnvironmentProviders([\n withNgxsPlugin(NgxsLoggerPlugin),\n { provide: USER_OPTIONS, useValue: options },\n {\n provide: NGXS_LOGGER_PLUGIN_OPTIONS,\n useFactory: loggerOptionsFactory,\n deps: [USER_OPTIONS]\n }\n ]);\n}\n","/**\n * The public api for consumers of @ngxs/logger-plugin\n */\nexport * from './src/public_api';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
package/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { InjectionToken, ModuleWithProviders, EnvironmentProviders
|
|
2
|
+
import { InjectionToken, ModuleWithProviders, EnvironmentProviders } from '@angular/core';
|
|
3
3
|
import { NgxsPlugin, NgxsNextPluginFn } from '@ngxs/store/plugins';
|
|
4
4
|
|
|
5
5
|
interface NgxsLoggerPluginOptions {
|
|
@@ -12,7 +12,7 @@ interface NgxsLoggerPluginOptions {
|
|
|
12
12
|
/** Predicate for actions to be the logged. Takes action and state snapshot as parameters */
|
|
13
13
|
filter?: (action: any, state: any) => boolean;
|
|
14
14
|
}
|
|
15
|
-
declare const NGXS_LOGGER_PLUGIN_OPTIONS: InjectionToken<
|
|
15
|
+
declare const NGXS_LOGGER_PLUGIN_OPTIONS: InjectionToken<NgxsLoggerPluginOptions>;
|
|
16
16
|
|
|
17
17
|
declare class NgxsLoggerPluginModule {
|
|
18
18
|
static forRoot(options?: NgxsLoggerPluginOptions): ModuleWithProviders<NgxsLoggerPluginModule>;
|
|
@@ -23,12 +23,12 @@ declare class NgxsLoggerPluginModule {
|
|
|
23
23
|
declare function withNgxsLoggerPlugin(options?: NgxsLoggerPluginOptions): EnvironmentProviders;
|
|
24
24
|
|
|
25
25
|
declare class NgxsLoggerPlugin implements NgxsPlugin {
|
|
26
|
-
private _options;
|
|
27
|
-
private _injector;
|
|
28
26
|
private _store;
|
|
29
27
|
private _logWriter;
|
|
30
|
-
|
|
28
|
+
private _options;
|
|
29
|
+
private _injector;
|
|
31
30
|
handle(state: any, event: any, next: NgxsNextPluginFn): any;
|
|
31
|
+
private _skipLogging;
|
|
32
32
|
static ɵfac: i0.ɵɵFactoryDeclaration<NgxsLoggerPlugin, never>;
|
|
33
33
|
static ɵprov: i0.ɵɵInjectableDeclaration<NgxsLoggerPlugin>;
|
|
34
34
|
}
|
package/package.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ngxs/logger-plugin",
|
|
3
3
|
"description": "logger plugin for @ngxs/store",
|
|
4
|
-
"version": "18.1.
|
|
4
|
+
"version": "18.1.4",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"peerDependencies": {
|
|
7
|
-
"@ngxs/store": "^18.1.
|
|
7
|
+
"@ngxs/store": "^18.1.4 || ^18.1.4-dev",
|
|
8
8
|
"@angular/core": ">=16.0.0 <19.0.0",
|
|
9
9
|
"rxjs": ">=6.5.5"
|
|
10
10
|
},
|