ngssm-store 15.2.2 → 15.2.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.
@@ -0,0 +1,32 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { Subject, takeUntil } from 'rxjs';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "./logger";
5
+ export class ConsoleAppender {
6
+ constructor(logger) {
7
+ this.logger = logger;
8
+ this.stopEvent$ = new Subject();
9
+ }
10
+ start() {
11
+ this.logger.logEvents$.pipe(takeUntil(this.stopEvent$)).subscribe((logEvent) => {
12
+ if (logEvent.payload) {
13
+ console.log(`[${logEvent.level}] ${logEvent.message}`, logEvent.payload);
14
+ }
15
+ else {
16
+ console.log(`[${logEvent.level}] ${logEvent.message}`);
17
+ }
18
+ });
19
+ }
20
+ stop() {
21
+ this.stopEvent$.next(true);
22
+ }
23
+ }
24
+ ConsoleAppender.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: ConsoleAppender, deps: [{ token: i1.Logger }], target: i0.ɵɵFactoryTarget.Injectable });
25
+ ConsoleAppender.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: ConsoleAppender, providedIn: 'root' });
26
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: ConsoleAppender, decorators: [{
27
+ type: Injectable,
28
+ args: [{
29
+ providedIn: 'root'
30
+ }]
31
+ }], ctorParameters: function () { return [{ type: i1.Logger }]; } });
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc29sZS1hcHBlbmRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nc3NtLXN0b3JlL3NyYy9saWIvbG9nZ2luZy9jb25zb2xlLWFwcGVuZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7OztBQU0xQyxNQUFNLE9BQU8sZUFBZTtJQUcxQixZQUFvQixNQUFjO1FBQWQsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUZqQixlQUFVLEdBQUcsSUFBSSxPQUFPLEVBQVcsQ0FBQztJQUVoQixDQUFDO0lBRS9CLEtBQUs7UUFDVixJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQzdFLElBQUksUUFBUSxDQUFDLE9BQU8sRUFBRTtnQkFDcEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxLQUFLLEtBQUssUUFBUSxDQUFDLE9BQU8sRUFBRSxFQUFFLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUMxRTtpQkFBTTtnQkFDTCxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksUUFBUSxDQUFDLEtBQUssS0FBSyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQzthQUN4RDtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLElBQUk7UUFDVCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3QixDQUFDOzs0R0FqQlUsZUFBZTtnSEFBZixlQUFlLGNBRmQsTUFBTTsyRkFFUCxlQUFlO2tCQUgzQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTG9nZ2VyIH0gZnJvbSAnLi9sb2dnZXInO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBDb25zb2xlQXBwZW5kZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IHN0b3BFdmVudCQgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbG9nZ2VyOiBMb2dnZXIpIHt9XG5cbiAgcHVibGljIHN0YXJ0KCk6IHZvaWQge1xuICAgIHRoaXMubG9nZ2VyLmxvZ0V2ZW50cyQucGlwZSh0YWtlVW50aWwodGhpcy5zdG9wRXZlbnQkKSkuc3Vic2NyaWJlKChsb2dFdmVudCkgPT4ge1xuICAgICAgaWYgKGxvZ0V2ZW50LnBheWxvYWQpIHtcbiAgICAgICAgY29uc29sZS5sb2coYFske2xvZ0V2ZW50LmxldmVsfV0gJHtsb2dFdmVudC5tZXNzYWdlfWAsIGxvZ0V2ZW50LnBheWxvYWQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc29sZS5sb2coYFske2xvZ0V2ZW50LmxldmVsfV0gJHtsb2dFdmVudC5tZXNzYWdlfWApO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHN0b3AoKTogdm9pZCB7XG4gICAgdGhpcy5zdG9wRXZlbnQkLm5leHQodHJ1ZSk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,5 @@
1
+ export * from './log-event';
2
+ export * from './log-level';
3
+ export * from './logger';
4
+ export * from './console-appender';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3NzbS1zdG9yZS9zcmMvbGliL2xvZ2dpbmcvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxVQUFVLENBQUM7QUFDekIsY0FBYyxvQkFBb0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbG9nLWV2ZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbG9nLWxldmVsJztcbmV4cG9ydCAqIGZyb20gJy4vbG9nZ2VyJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc29sZS1hcHBlbmRlcic7XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nLWV2ZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmdzc20tc3RvcmUvc3JjL2xpYi9sb2dnaW5nL2xvZy1ldmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTG9nTGV2ZWwgfSBmcm9tICcuL2xvZy1sZXZlbCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTG9nRXZlbnQge1xuICBsZXZlbDogTG9nTGV2ZWw7XG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgcGF5bG9hZD86IGFueTtcbn1cbiJdfQ==
@@ -0,0 +1,7 @@
1
+ export var LogLevel;
2
+ (function (LogLevel) {
3
+ LogLevel["debug"] = "Debug";
4
+ LogLevel["information"] = "Information";
5
+ LogLevel["error"] = "Error";
6
+ })(LogLevel || (LogLevel = {}));
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nLWxldmVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmdzc20tc3RvcmUvc3JjL2xpYi9sb2dnaW5nL2xvZy1sZXZlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQU4sSUFBWSxRQUlYO0FBSkQsV0FBWSxRQUFRO0lBQ2xCLDJCQUFlLENBQUE7SUFDZix1Q0FBMkIsQ0FBQTtJQUMzQiwyQkFBZSxDQUFBO0FBQ2pCLENBQUMsRUFKVyxRQUFRLEtBQVIsUUFBUSxRQUluQiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIExvZ0xldmVsIHtcbiAgZGVidWcgPSAnRGVidWcnLFxuICBpbmZvcm1hdGlvbiA9ICdJbmZvcm1hdGlvbicsXG4gIGVycm9yID0gJ0Vycm9yJ1xufVxuIl19
@@ -0,0 +1,37 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { Subject } from 'rxjs';
3
+ import { LogLevel } from './log-level';
4
+ import * as i0 from "@angular/core";
5
+ export class Logger {
6
+ constructor() {
7
+ this._logEvents$ = new Subject();
8
+ }
9
+ get logEvents$() {
10
+ return this._logEvents$.asObservable();
11
+ }
12
+ debug(message, payload) {
13
+ this.log(LogLevel.debug, message, payload);
14
+ }
15
+ information(message, payload) {
16
+ this.log(LogLevel.information, message, payload);
17
+ }
18
+ error(message, payload) {
19
+ this.log(LogLevel.error, message, payload);
20
+ }
21
+ log(level, message, payload) {
22
+ this._logEvents$.next({
23
+ level,
24
+ message,
25
+ payload
26
+ });
27
+ }
28
+ }
29
+ Logger.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: Logger, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
30
+ Logger.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: Logger, providedIn: 'root' });
31
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: Logger, decorators: [{
32
+ type: Injectable,
33
+ args: [{
34
+ providedIn: 'root'
35
+ }]
36
+ }] });
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmdzc20tc3RvcmUvc3JjL2xpYi9sb2dnaW5nL2xvZ2dlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHM0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7QUFLdkMsTUFBTSxPQUFPLE1BQU07SUFIbkI7UUFJbUIsZ0JBQVcsR0FBRyxJQUFJLE9BQU8sRUFBWSxDQUFDO0tBeUJ4RDtJQXZCQyxJQUFXLFVBQVU7UUFDbkIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3pDLENBQUM7SUFFTSxLQUFLLENBQUMsT0FBZSxFQUFFLE9BQWE7UUFDekMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRU0sV0FBVyxDQUFDLE9BQWUsRUFBRSxPQUFhO1FBQy9DLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVNLEtBQUssQ0FBQyxPQUFlLEVBQUUsT0FBYTtRQUN6QyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFTSxHQUFHLENBQUMsS0FBZSxFQUFFLE9BQWUsRUFBRSxPQUFhO1FBQ3hELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDO1lBQ3BCLEtBQUs7WUFDTCxPQUFPO1lBQ1AsT0FBTztTQUNSLENBQUMsQ0FBQztJQUNMLENBQUM7O21HQXpCVSxNQUFNO3VHQUFOLE1BQU0sY0FGTCxNQUFNOzJGQUVQLE1BQU07a0JBSGxCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBMb2dFdmVudCB9IGZyb20gJy4vbG9nLWV2ZW50JztcbmltcG9ydCB7IExvZ0xldmVsIH0gZnJvbSAnLi9sb2ctbGV2ZWwnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBMb2dnZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IF9sb2dFdmVudHMkID0gbmV3IFN1YmplY3Q8TG9nRXZlbnQ+KCk7XG5cbiAgcHVibGljIGdldCBsb2dFdmVudHMkKCk6IE9ic2VydmFibGU8TG9nRXZlbnQ+IHtcbiAgICByZXR1cm4gdGhpcy5fbG9nRXZlbnRzJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBkZWJ1ZyhtZXNzYWdlOiBzdHJpbmcsIHBheWxvYWQ/OiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLmxvZyhMb2dMZXZlbC5kZWJ1ZywgbWVzc2FnZSwgcGF5bG9hZCk7XG4gIH1cblxuICBwdWJsaWMgaW5mb3JtYXRpb24obWVzc2FnZTogc3RyaW5nLCBwYXlsb2FkPzogYW55KTogdm9pZCB7XG4gICAgdGhpcy5sb2coTG9nTGV2ZWwuaW5mb3JtYXRpb24sIG1lc3NhZ2UsIHBheWxvYWQpO1xuICB9XG5cbiAgcHVibGljIGVycm9yKG1lc3NhZ2U6IHN0cmluZywgcGF5bG9hZD86IGFueSk6IHZvaWQge1xuICAgIHRoaXMubG9nKExvZ0xldmVsLmVycm9yLCBtZXNzYWdlLCBwYXlsb2FkKTtcbiAgfVxuXG4gIHB1YmxpYyBsb2cobGV2ZWw6IExvZ0xldmVsLCBtZXNzYWdlOiBzdHJpbmcsIHBheWxvYWQ/OiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLl9sb2dFdmVudHMkLm5leHQoe1xuICAgICAgbGV2ZWwsXG4gICAgICBtZXNzYWdlLFxuICAgICAgcGF5bG9hZFxuICAgIH0pO1xuICB9XG59XG4iXX0=
@@ -24,9 +24,9 @@ export class NgSsmComponent {
24
24
  this.store.dispatchActionType(actionType);
25
25
  }
26
26
  }
27
- NgSsmComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NgSsmComponent, deps: [{ token: i1.Store }], target: i0.ɵɵFactoryTarget.Component });
28
- NgSsmComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.2", type: NgSsmComponent, selector: "ng-component", ngImport: i0, template: '', isInline: true });
29
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NgSsmComponent, decorators: [{
27
+ NgSsmComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: NgSsmComponent, deps: [{ token: i1.Store }], target: i0.ɵɵFactoryTarget.Component });
28
+ NgSsmComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.4", type: NgSsmComponent, selector: "ng-component", ngImport: i0, template: '', isInline: true });
29
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: NgSsmComponent, decorators: [{
30
30
  type: Component,
31
31
  args: [{
32
32
  template: ''
@@ -2,10 +2,10 @@ import { NgModule } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  export class NgssmStoreModule {
4
4
  }
5
- NgssmStoreModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NgssmStoreModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
6
- NgssmStoreModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.1.2", ngImport: i0, type: NgssmStoreModule });
7
- NgssmStoreModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NgssmStoreModule });
8
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NgssmStoreModule, decorators: [{
5
+ NgssmStoreModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: NgssmStoreModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
6
+ NgssmStoreModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.1.4", ngImport: i0, type: NgssmStoreModule });
7
+ NgssmStoreModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: NgssmStoreModule });
8
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: NgssmStoreModule, decorators: [{
9
9
  type: NgModule,
10
10
  args: [{
11
11
  declarations: [],
@@ -5,7 +5,7 @@ import { NGSSM_REDUCER } from './reducer';
5
5
  import { NGSSM_EFFECT } from './effect';
6
6
  import { NGSSM_STATE_INITIALIZER } from './state-initializer';
7
7
  import * as i0 from "@angular/core";
8
- import * as i1 from "ngssm-toolkit";
8
+ import * as i1 from "./logging";
9
9
  const featureStateSpecifications = [];
10
10
  export const NgSsmFeatureState = (specification) => {
11
11
  return (target) => {
@@ -104,9 +104,9 @@ export class Store {
104
104
  }
105
105
  }
106
106
  }
107
- Store.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: Store, deps: [{ token: i1.Logger }, { token: NGSSM_REDUCER, optional: true }, { token: NGSSM_EFFECT, optional: true }, { token: NGSSM_STATE_INITIALIZER, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
108
- Store.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: Store, providedIn: 'root' });
109
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: Store, decorators: [{
107
+ Store.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: Store, deps: [{ token: i1.Logger }, { token: NGSSM_REDUCER, optional: true }, { token: NGSSM_EFFECT, optional: true }, { token: NGSSM_STATE_INITIALIZER, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
108
+ Store.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: Store, providedIn: 'root' });
109
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: Store, decorators: [{
110
110
  type: Injectable,
111
111
  args: [{
112
112
  providedIn: 'root'
@@ -127,4 +127,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImpor
127
127
  }, {
128
128
  type: Optional
129
129
  }] }]; } });
130
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3NzbS1zdG9yZS9zcmMvbGliL3N0b3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsZUFBZSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBRW5ELE9BQU8sTUFBTSxNQUFNLHFCQUFxQixDQUFDO0FBT3pDLE9BQU8sRUFBRSxhQUFhLEVBQVcsTUFBTSxXQUFXLENBQUM7QUFDbkQsT0FBTyxFQUFVLFlBQVksRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNoRCxPQUFPLEVBQUUsdUJBQXVCLEVBQW9CLE1BQU0scUJBQXFCLENBQUM7OztBQUVoRixNQUFNLDBCQUEwQixHQUFnQyxFQUFFLENBQUM7QUFDbkUsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxhQUF3QyxFQUFFLEVBQUU7SUFDNUUsT0FBTyxDQUFDLE1BQWMsRUFBRSxFQUFFO1FBQ3hCLDBCQUEwQixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUNqRCxDQUFDLENBQUM7QUFDSixDQUFDLENBQUM7QUFLRixNQUFNLE9BQU8sS0FBSztJQU1oQixZQUNVLE1BQWMsRUFDYSxRQUFtQixFQUNwQixPQUFpQixFQUNOLFlBQWdDO1FBSHJFLFdBQU0sR0FBTixNQUFNLENBQVE7UUFOUCxZQUFPLEdBQUcsSUFBSSxlQUFlLENBQVEsRUFBRSxDQUFDLENBQUM7UUFDekMsZ0JBQVcsR0FBYSxFQUFFLENBQUM7UUFDM0IsMEJBQXFCLEdBQUcsSUFBSSxHQUFHLEVBQXFCLENBQUM7UUFDckQseUJBQW9CLEdBQUcsSUFBSSxHQUFHLEVBQW9CLENBQUM7UUFRbEUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsc0NBQXNDLENBQUMsQ0FBQztRQUNoRSxJQUFJ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Syx3Q0FRTixhQUFhLDZCQUNiLFlBQVksNkJBQ1osdUJBQXVCO3NHQVZ0QixLQUFLLGNBRkosTUFBTTsyRkFFUCxLQUFLO2tCQUhqQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBU0ksTUFBTTsyQkFBQyxhQUFhOzswQkFBRyxRQUFROzswQkFDL0IsTUFBTTsyQkFBQyxZQUFZOzswQkFBRyxRQUFROzswQkFDOUIsTUFBTTsyQkFBQyx1QkFBdUI7OzBCQUFHLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHVwZGF0ZSBmcm9tICdpbW11dGFiaWxpdHktaGVscGVyJztcblxuaW1wb3J0IHsgTG9nZ2VyIH0gZnJvbSAnbmdzc20tdG9vbGtpdCc7XG5cbmltcG9ydCB7IEZlYXR1cmVTdGF0ZVNwZWNpZmljYXRpb24gfSBmcm9tICcuL2ZlYXR1cmUtc3RhdGUtc3BlY2lmaWNhdGlvbic7XG5pbXBvcnQgeyBTdGF0ZSB9IGZyb20gJy4vc3RhdGUnO1xuaW1wb3J0IHsgQWN0aW9uIH0gZnJvbSAnLi9hY3Rpb24nO1xuaW1wb3J0IHsgTkdTU01fUkVEVUNFUiwgUmVkdWNlciB9IGZyb20gJy4vcmVkdWNlcic7XG5pbXBvcnQgeyBFZmZlY3QsIE5HU1NNX0VGRkVDVCB9IGZyb20gJy4vZWZmZWN0JztcbmltcG9ydCB7IE5HU1NNX1NUQVRFX0lOSVRJQUxJWkVSLCBTdGF0ZUluaXRpYWxpemVyIH0gZnJvbSAnLi9zdGF0ZS1pbml0aWFsaXplcic7XG5cbmNvbnN0IGZlYXR1cmVTdGF0ZVNwZWNpZmljYXRpb25zOiBGZWF0dXJlU3RhdGVTcGVjaWZpY2F0aW9uW10gPSBbXTtcbmV4cG9ydCBjb25zdCBOZ1NzbUZlYXR1cmVTdGF0ZSA9IChzcGVjaWZpY2F0aW9uOiBGZWF0dXJlU3RhdGVTcGVjaWZpY2F0aW9uKSA9PiB7XG4gIHJldHVybiAodGFyZ2V0OiBvYmplY3QpID0+IHtcbiAgICBmZWF0dXJlU3RhdGVTcGVjaWZpY2F0aW9ucy5wdXNoKHNwZWNpZmljYXRpb24pO1xuICB9O1xufTtcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgU3RvcmUge1xuICBwcml2YXRlIHJlYWRvbmx5IF9zdGF0ZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFN0YXRlPih7fSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgYWN0aW9uUXVldWU6IEFjdGlvbltdID0gW107XG4gIHByaXZhdGUgcmVhZG9ubHkgcmVkdWNlcnNQZXJBY3Rpb25UeXBlID0gbmV3IE1hcDxzdHJpbmcsIFJlZHVjZXJbXT4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBlZmZlY3RzUGVyQWN0aW9uVHlwZSA9IG5ldyBNYXA8c3RyaW5nLCBFZmZlY3RbXT4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGxvZ2dlcjogTG9nZ2VyLFxuICAgIEBJbmplY3QoTkdTU01fUkVEVUNFUikgQE9wdGlvbmFsKCkgcmVkdWNlcnM6IFJlZHVjZXJbXSxcbiAgICBASW5qZWN0KE5HU1NNX0VGRkVDVCkgQE9wdGlvbmFsKCkgZWZmZWN0czogRWZmZWN0W10sXG4gICAgQEluamVjdChOR1NTTV9TVEFURV9JTklUSUFMSVpFUikgQE9wdGlvbmFsKCkgaW5pdGlhbGl6ZXJzOiBTdGF0ZUluaXRpYWxpemVyW11cbiAgKSB7XG4gICAgdGhpcy5sb2dnZXIuaW5mb3JtYXRpb24oJ1tTdG9yZV0gLS0tPiBzdGF0ZSBpbml0aWFsaXphdGlvbi4uLicpO1xuICAgIGxldCBzdGF0ZSA9IHRoaXMuX3N0YXRlJC5nZXRWYWx1ZSgpO1xuICAgIHN0YXRlID0gZmVhdHVyZVN0YXRlU3BlY2lmaWNhdGlvbnMucmVkdWNlKChwLCBjKSA9PiB1cGRhdGUocCwgeyBbYy5mZWF0dXJlU3RhdGVLZXldOiB7ICRzZXQ6IGMuaW5pdGlhbFN0YXRlIH0gfSksIHN0YXRlKTtcblxuICAgIChpbml0aWFsaXplcnMgPz8gW10pLmZvckVhY2goKGluaXRpYWxpemVyKSA9PiB7XG4gICAgICB0aGlzLmxvZ2dlci5pbmZvcm1hdGlvbignW1N0b3JlXSAtLS0tLS0+IGNhbGxpbmcgaW5pdGlhbGl6ZXInLCBpbml0aWFsaXplcik7XG4gICAgICBzdGF0ZSA9IGluaXRpYWxpemVyLmluaXRpYWxpemVTdGF0ZShzdGF0ZSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLl9zdGF0ZSQubmV4dChzdGF0ZSk7XG5cbiAgICB0aGlzLmxvZ2dlci5pbmZvcm1hdGlvbihgW1N0b3JlXSAtLS0+IGluaXRpYWxpemF0aW9uIG9mICR7KHJlZHVjZXJzID8/IFtdKS5sZW5ndGh9IHJlZHVjZXJzLi4uYCk7XG4gICAgKHJlZHVjZXJzID8/IFtdKS5mb3JFYWNoKChyZWR1Y2VyKSA9PiB7XG4gICAgICB0aGlzLmxvZ2dlci5pbmZvcm1hdGlvbignW1N0b3JlXSAtLS0tLS0+IGluaXRpYWxpemF0aW9uIG9mICcsIHJlZHVjZXIpO1xuICAgICAgcmVkdWNlci5wcm9jZXNzZWRBY3Rpb25zLmZvckVhY2goKHByb2Nlc3NlZEFjdGlvbikgPT4ge1xuICAgICAgICBjb25zdCBzdG9yZVJlZHVjZXJzOiBSZWR1Y2VyW10gPSB0aGlzLnJlZHVjZXJzUGVyQWN0aW9uVHlwZS5nZXQocHJvY2Vzc2VkQWN0aW9uKSA/PyBbXTtcbiAgICAgICAgaWYgKHN0b3JlUmVkdWNlcnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgdGhpcy5yZWR1Y2Vyc1BlckFjdGlvblR5cGUuc2V0KHByb2Nlc3NlZEFjdGlvbiwgc3RvcmVSZWR1Y2Vycyk7XG4gICAgICAgIH1cblxuICAgICAgICBzdG9yZVJlZHVjZXJzLnB1c2gocmVkdWNlcik7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHRoaXMubG9nZ2VyLmluZm9ybWF0aW9uKGBbU3RvcmVdIC0tLT4gaW5pdGlhbGl6YXRpb24gb2YgJHsoZWZmZWN0cyA/PyBbXSkubGVuZ3RofSBlZmZlY3RzLi4uYCk7XG4gICAgKGVmZmVjdHMgPz8gW10pLmZvckVhY2goKGVmZmVjdCkgPT4ge1xuICAgICAgdGhpcy5sb2dnZXIuaW5mb3JtYXRpb24oJ1tTdG9yZV0gLS0tLS0tPiBpbml0aWFsaXphdGlvbiBvZiAnLCBlZmZlY3QpO1xuICAgICAgZWZmZWN0LnByb2Nlc3NlZEFjdGlvbnMuZm9yRWFjaCgocHJvY2Vzc2VkQWN0aW9uKSA9PiB7XG4gICAgICAgIGNvbnN0IHN0b3JlZEVmZmVjdHM6IEVmZmVjdFtdID0gdGhpcy5lZmZlY3RzUGVyQWN0aW9uVHlwZS5nZXQocHJvY2Vzc2VkQWN0aW9uKSA/PyBbXTtcbiAgICAgICAgaWYgKHN0b3JlZEVmZmVjdHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgdGhpcy5lZmZlY3RzUGVyQWN0aW9uVHlwZS5zZXQocHJvY2Vzc2VkQWN0aW9uLCBzdG9yZWRFZmZlY3RzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHN0b3JlZEVmZmVjdHMucHVzaChlZmZlY3QpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHN0YXRlJCgpOiBPYnNlcnZhYmxlPFN0YXRlPiB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXRlJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBkaXNwYXRjaEFjdGlvbihhY3Rpb246IEFjdGlvbik6IHZvaWQge1xuICAgIHRoaXMuYWN0aW9uUXVldWUucHVzaChhY3Rpb24pO1xuICAgIHRoaXMubG9nZ2VyLmRlYnVnKGBBY3Rpb24gb2YgdHlwZSAnJHthY3Rpb24udHlwZX0nIGFkZGVkIHRvIHRoZSBxdWV1ZSA9PiAke3RoaXMuYWN0aW9uUXVldWUubGVuZ3RofSBwZW5kaW5nIGFjdGlvbnNgLCBhY3Rpb24pO1xuICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5wcm9jZXNzTmV4dEFjdGlvbigpKTtcbiAgfVxuXG4gIHB1YmxpYyBkaXNwYXRjaEFjdGlvblR5cGUodHlwZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5kaXNwYXRjaEFjdGlvbih7IHR5cGUgfSk7XG4gIH1cblxuICBwcml2YXRlIHByb2Nlc3NOZXh0QWN0aW9uKCk6IHZvaWQge1xuICAgIGNvbnN0IG5leHRBY3Rpb24gPSB0aGlzLmFjdGlvblF1ZXVlLnNoaWZ0KCk7XG4gICAgaWYgKCFuZXh0QWN0aW9uKSB7XG4gICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnW3Byb2Nlc3NOZXh0QWN0aW9uXSBObyBhY3Rpb24gdG8gcHJvY2VzcycpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMubG9nZ2VyLmluZm9ybWF0aW9uKGBbcHJvY2Vzc05leHRBY3Rpb25dIFN0YXJ0IHByb2Nlc3NpbmcgYWN0aW9uICcke25leHRBY3Rpb24udHlwZX0uLi5gLCBuZXh0QWN0aW9uKTtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCByZWR1Y2VycyA9IHRoaXMucmVkdWNlcnNQZXJBY3Rpb25UeXBlLmdldChuZXh0QWN0aW9uLnR5cGUpID8/IFtdO1xuICAgICAgdGhpcy5sb2dnZXIuZGVidWcoYFtTdG9yZV0gJHtyZWR1Y2Vycy5sZW5ndGh9IHJlZHVjZXJzIGZvdW5kIHRvIHByb2Nlc3MgdGhlIGFjdGlvbiAke25leHRBY3Rpb24udHlwZX1gLCByZWR1Y2Vycyk7XG4gICAgICBjb25zdCBjdXJyZW50U3RhdGUgPSB0aGlzLl9zdGF0ZSQuZ2V0VmFsdWUoKTtcbiAgICAgIGNvbnN0IHVwZGF0ZWRTdGF0ZSA9IHJlZHVjZXJzLnJlZHVjZSgocCwgYykgPT4gYy51cGRhdGVTdGF0ZShwLCBuZXh0QWN0aW9uKSwgY3VycmVudFN0YXRlKTtcblxuICAgICAgaWYgKHVwZGF0ZWRTdGF0ZSAhPT0gY3VycmVudFN0YXRlKSB7XG4gICAgICAgIHRoaXMuX3N0YXRlJC5uZXh0KHVwZGF0ZWRTdGF0ZSk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGVmZmVjdHMgPSB0aGlzLmVmZmVjdHNQZXJBY3Rpb25UeXBlLmdldChuZXh0QWN0aW9uLnR5cGUpID8/IFtdO1xuICAgICAgdGhpcy5sb2dnZXIuZGVidWcoYFtTdG9yZV0gJHtlZmZlY3RzLmxlbmd0aH0gZWZmZWN0cyBmb3VuZCB0byBwcm9jZXNzIHRoZSBhY3Rpb24gJHtuZXh0QWN0aW9uLnR5cGV9YCwgZWZmZWN0cyk7XG4gICAgICBlZmZlY3RzLmZvckVhY2goKGVmZmVjdCkgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGVmZmVjdC5wcm9jZXNzQWN0aW9uKHRoaXMsIHVwZGF0ZWRTdGF0ZSwgbmV4dEFjdGlvbik7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoYFVuYWJsZSB0byBwcm9jZXNzIGFjdGlvbiAke25leHRBY3Rpb24udHlwZX0gYnkgZWZmZWN0ICR7ZWZmZWN0fWAsIHtcbiAgICAgICAgICAgIGVycm9yLFxuICAgICAgICAgICAgYWN0aW9uOiBuZXh0QWN0aW9uLFxuICAgICAgICAgICAgcHJvY2Vzc29yOiBlZmZlY3RcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRoaXMubG9nZ2VyLmVycm9yKGBFcnJvciB3aGVuIHByb2Nlc3NpbmcgYWN0aW9uICR7bmV4dEFjdGlvbi50eXBlfWAsIHtcbiAgICAgICAgZXJyb3IsXG4gICAgICAgIGFjdGlvbjogbmV4dEFjdGlvblxuICAgICAgfSk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMubG9nZ2VyLmluZm9ybWF0aW9uKGBbcHJvY2Vzc05leHRBY3Rpb25dIGFjdGlvbiAnJHtuZXh0QWN0aW9uLnR5cGV9IHByb2Nlc3NlZC5gLCBuZXh0QWN0aW9uKTtcblxuICAgICAgLy8gU2hvdWxkIG5vdCBiZSB1c2VmdWwuQnV0LCBqdXN0IGluIGNhc2UuXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMucHJvY2Vzc05leHRBY3Rpb24oKSk7XG4gICAgfVxuICB9XG59XG4iXX0=
130
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3NzbS1zdG9yZS9zcmMvbGliL3N0b3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsZUFBZSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBRW5ELE9BQU8sTUFBTSxNQUFNLHFCQUFxQixDQUFDO0FBS3pDLE9BQU8sRUFBRSxhQUFhLEVBQVcsTUFBTSxXQUFXLENBQUM7QUFDbkQsT0FBTyxFQUFVLFlBQVksRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNoRCxPQUFPLEVBQUUsdUJBQXVCLEVBQW9CLE1BQU0scUJBQXFCLENBQUM7OztBQUdoRixNQUFNLDBCQUEwQixHQUFnQyxFQUFFLENBQUM7QUFDbkUsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxhQUF3QyxFQUFFLEVBQUU7SUFDNUUsT0FBTyxDQUFDLE1BQWMsRUFBRSxFQUFFO1FBQ3hCLDBCQUEwQixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUNqRCxDQUFDLENBQUM7QUFDSixDQUFDLENBQUM7QUFLRixNQUFNLE9BQU8sS0FBSztJQU1oQixZQUNVLE1BQWMsRUFDYSxRQUFtQixFQUNwQixPQUFpQixFQUNOLFlBQWdDO1FBSHJFLFdBQU0sR0FBTixNQUFNLENBQVE7UUFOUCxZQUFPLEdBQUcsSUFBSSxlQUFlLENBQVEsRUFBRSxDQUFDLENBQUM7UUFDekMsZ0JBQVcsR0FBYSxFQUFFLENBQUM7UUFDM0IsMEJBQXFCLEdBQUcsSUFBSSxHQUFHLEVBQXFCLENBQUM7UUFDckQseUJBQW9CLEdBQUcsSUFBSSxHQUFHLEVBQW9CLENBQUM7UUFRbEUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsc0NBQXNDLENBQUMsQ0FBQztRQUNoRSxJQUFJ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Syx3Q0FRTixhQUFhLDZCQUNiLFlBQVksNkJBQ1osdUJBQXVCO3NHQVZ0QixLQUFLLGNBRkosTUFBTTsyRkFFUCxLQUFLO2tCQUhqQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBU0ksTUFBTTsyQkFBQyxhQUFhOzswQkFBRyxRQUFROzswQkFDL0IsTUFBTTsyQkFBQyxZQUFZOzswQkFBRyxRQUFROzswQkFDOUIsTUFBTTsyQkFBQyx1QkFBdUI7OzBCQUFHLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHVwZGF0ZSBmcm9tICdpbW11dGFiaWxpdHktaGVscGVyJztcblxuaW1wb3J0IHsgRmVhdHVyZVN0YXRlU3BlY2lmaWNhdGlvbiB9IGZyb20gJy4vZmVhdHVyZS1zdGF0ZS1zcGVjaWZpY2F0aW9uJztcbmltcG9ydCB7IFN0YXRlIH0gZnJvbSAnLi9zdGF0ZSc7XG5pbXBvcnQgeyBBY3Rpb24gfSBmcm9tICcuL2FjdGlvbic7XG5pbXBvcnQgeyBOR1NTTV9SRURVQ0VSLCBSZWR1Y2VyIH0gZnJvbSAnLi9yZWR1Y2VyJztcbmltcG9ydCB7IEVmZmVjdCwgTkdTU01fRUZGRUNUIH0gZnJvbSAnLi9lZmZlY3QnO1xuaW1wb3J0IHsgTkdTU01fU1RBVEVfSU5JVElBTElaRVIsIFN0YXRlSW5pdGlhbGl6ZXIgfSBmcm9tICcuL3N0YXRlLWluaXRpYWxpemVyJztcbmltcG9ydCB7IExvZ2dlciB9IGZyb20gJy4vbG9nZ2luZyc7XG5cbmNvbnN0IGZlYXR1cmVTdGF0ZVNwZWNpZmljYXRpb25zOiBGZWF0dXJlU3RhdGVTcGVjaWZpY2F0aW9uW10gPSBbXTtcbmV4cG9ydCBjb25zdCBOZ1NzbUZlYXR1cmVTdGF0ZSA9IChzcGVjaWZpY2F0aW9uOiBGZWF0dXJlU3RhdGVTcGVjaWZpY2F0aW9uKSA9PiB7XG4gIHJldHVybiAodGFyZ2V0OiBvYmplY3QpID0+IHtcbiAgICBmZWF0dXJlU3RhdGVTcGVjaWZpY2F0aW9ucy5wdXNoKHNwZWNpZmljYXRpb24pO1xuICB9O1xufTtcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgU3RvcmUge1xuICBwcml2YXRlIHJlYWRvbmx5IF9zdGF0ZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFN0YXRlPih7fSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgYWN0aW9uUXVldWU6IEFjdGlvbltdID0gW107XG4gIHByaXZhdGUgcmVhZG9ubHkgcmVkdWNlcnNQZXJBY3Rpb25UeXBlID0gbmV3IE1hcDxzdHJpbmcsIFJlZHVjZXJbXT4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBlZmZlY3RzUGVyQWN0aW9uVHlwZSA9IG5ldyBNYXA8c3RyaW5nLCBFZmZlY3RbXT4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGxvZ2dlcjogTG9nZ2VyLFxuICAgIEBJbmplY3QoTkdTU01fUkVEVUNFUikgQE9wdGlvbmFsKCkgcmVkdWNlcnM6IFJlZHVjZXJbXSxcbiAgICBASW5qZWN0KE5HU1NNX0VGRkVDVCkgQE9wdGlvbmFsKCkgZWZmZWN0czogRWZmZWN0W10sXG4gICAgQEluamVjdChOR1NTTV9TVEFURV9JTklUSUFMSVpFUikgQE9wdGlvbmFsKCkgaW5pdGlhbGl6ZXJzOiBTdGF0ZUluaXRpYWxpemVyW11cbiAgKSB7XG4gICAgdGhpcy5sb2dnZXIuaW5mb3JtYXRpb24oJ1tTdG9yZV0gLS0tPiBzdGF0ZSBpbml0aWFsaXphdGlvbi4uLicpO1xuICAgIGxldCBzdGF0ZSA9IHRoaXMuX3N0YXRlJC5nZXRWYWx1ZSgpO1xuICAgIHN0YXRlID0gZmVhdHVyZVN0YXRlU3BlY2lmaWNhdGlvbnMucmVkdWNlKChwLCBjKSA9PiB1cGRhdGUocCwgeyBbYy5mZWF0dXJlU3RhdGVLZXldOiB7ICRzZXQ6IGMuaW5pdGlhbFN0YXRlIH0gfSksIHN0YXRlKTtcblxuICAgIChpbml0aWFsaXplcnMgPz8gW10pLmZvckVhY2goKGluaXRpYWxpemVyKSA9PiB7XG4gICAgICB0aGlzLmxvZ2dlci5pbmZvcm1hdGlvbignW1N0b3JlXSAtLS0tLS0+IGNhbGxpbmcgaW5pdGlhbGl6ZXInLCBpbml0aWFsaXplcik7XG4gICAgICBzdGF0ZSA9IGluaXRpYWxpemVyLmluaXRpYWxpemVTdGF0ZShzdGF0ZSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLl9zdGF0ZSQubmV4dChzdGF0ZSk7XG5cbiAgICB0aGlzLmxvZ2dlci5pbmZvcm1hdGlvbihgW1N0b3JlXSAtLS0+IGluaXRpYWxpemF0aW9uIG9mICR7KHJlZHVjZXJzID8/IFtdKS5sZW5ndGh9IHJlZHVjZXJzLi4uYCk7XG4gICAgKHJlZHVjZXJzID8/IFtdKS5mb3JFYWNoKChyZWR1Y2VyKSA9PiB7XG4gICAgICB0aGlzLmxvZ2dlci5pbmZvcm1hdGlvbignW1N0b3JlXSAtLS0tLS0+IGluaXRpYWxpemF0aW9uIG9mICcsIHJlZHVjZXIpO1xuICAgICAgcmVkdWNlci5wcm9jZXNzZWRBY3Rpb25zLmZvckVhY2goKHByb2Nlc3NlZEFjdGlvbikgPT4ge1xuICAgICAgICBjb25zdCBzdG9yZVJlZHVjZXJzOiBSZWR1Y2VyW10gPSB0aGlzLnJlZHVjZXJzUGVyQWN0aW9uVHlwZS5nZXQocHJvY2Vzc2VkQWN0aW9uKSA/PyBbXTtcbiAgICAgICAgaWYgKHN0b3JlUmVkdWNlcnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgdGhpcy5yZWR1Y2Vyc1BlckFjdGlvblR5cGUuc2V0KHByb2Nlc3NlZEFjdGlvbiwgc3RvcmVSZWR1Y2Vycyk7XG4gICAgICAgIH1cblxuICAgICAgICBzdG9yZVJlZHVjZXJzLnB1c2gocmVkdWNlcik7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHRoaXMubG9nZ2VyLmluZm9ybWF0aW9uKGBbU3RvcmVdIC0tLT4gaW5pdGlhbGl6YXRpb24gb2YgJHsoZWZmZWN0cyA/PyBbXSkubGVuZ3RofSBlZmZlY3RzLi4uYCk7XG4gICAgKGVmZmVjdHMgPz8gW10pLmZvckVhY2goKGVmZmVjdCkgPT4ge1xuICAgICAgdGhpcy5sb2dnZXIuaW5mb3JtYXRpb24oJ1tTdG9yZV0gLS0tLS0tPiBpbml0aWFsaXphdGlvbiBvZiAnLCBlZmZlY3QpO1xuICAgICAgZWZmZWN0LnByb2Nlc3NlZEFjdGlvbnMuZm9yRWFjaCgocHJvY2Vzc2VkQWN0aW9uKSA9PiB7XG4gICAgICAgIGNvbnN0IHN0b3JlZEVmZmVjdHM6IEVmZmVjdFtdID0gdGhpcy5lZmZlY3RzUGVyQWN0aW9uVHlwZS5nZXQocHJvY2Vzc2VkQWN0aW9uKSA/PyBbXTtcbiAgICAgICAgaWYgKHN0b3JlZEVmZmVjdHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgdGhpcy5lZmZlY3RzUGVyQWN0aW9uVHlwZS5zZXQocHJvY2Vzc2VkQWN0aW9uLCBzdG9yZWRFZmZlY3RzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHN0b3JlZEVmZmVjdHMucHVzaChlZmZlY3QpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHN0YXRlJCgpOiBPYnNlcnZhYmxlPFN0YXRlPiB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXRlJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBkaXNwYXRjaEFjdGlvbihhY3Rpb246IEFjdGlvbik6IHZvaWQge1xuICAgIHRoaXMuYWN0aW9uUXVldWUucHVzaChhY3Rpb24pO1xuICAgIHRoaXMubG9nZ2VyLmRlYnVnKGBBY3Rpb24gb2YgdHlwZSAnJHthY3Rpb24udHlwZX0nIGFkZGVkIHRvIHRoZSBxdWV1ZSA9PiAke3RoaXMuYWN0aW9uUXVldWUubGVuZ3RofSBwZW5kaW5nIGFjdGlvbnNgLCBhY3Rpb24pO1xuICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5wcm9jZXNzTmV4dEFjdGlvbigpKTtcbiAgfVxuXG4gIHB1YmxpYyBkaXNwYXRjaEFjdGlvblR5cGUodHlwZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5kaXNwYXRjaEFjdGlvbih7IHR5cGUgfSk7XG4gIH1cblxuICBwcml2YXRlIHByb2Nlc3NOZXh0QWN0aW9uKCk6IHZvaWQge1xuICAgIGNvbnN0IG5leHRBY3Rpb24gPSB0aGlzLmFjdGlvblF1ZXVlLnNoaWZ0KCk7XG4gICAgaWYgKCFuZXh0QWN0aW9uKSB7XG4gICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnW3Byb2Nlc3NOZXh0QWN0aW9uXSBObyBhY3Rpb24gdG8gcHJvY2VzcycpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMubG9nZ2VyLmluZm9ybWF0aW9uKGBbcHJvY2Vzc05leHRBY3Rpb25dIFN0YXJ0IHByb2Nlc3NpbmcgYWN0aW9uICcke25leHRBY3Rpb24udHlwZX0uLi5gLCBuZXh0QWN0aW9uKTtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCByZWR1Y2VycyA9IHRoaXMucmVkdWNlcnNQZXJBY3Rpb25UeXBlLmdldChuZXh0QWN0aW9uLnR5cGUpID8/IFtdO1xuICAgICAgdGhpcy5sb2dnZXIuZGVidWcoYFtTdG9yZV0gJHtyZWR1Y2Vycy5sZW5ndGh9IHJlZHVjZXJzIGZvdW5kIHRvIHByb2Nlc3MgdGhlIGFjdGlvbiAke25leHRBY3Rpb24udHlwZX1gLCByZWR1Y2Vycyk7XG4gICAgICBjb25zdCBjdXJyZW50U3RhdGUgPSB0aGlzLl9zdGF0ZSQuZ2V0VmFsdWUoKTtcbiAgICAgIGNvbnN0IHVwZGF0ZWRTdGF0ZSA9IHJlZHVjZXJzLnJlZHVjZSgocCwgYykgPT4gYy51cGRhdGVTdGF0ZShwLCBuZXh0QWN0aW9uKSwgY3VycmVudFN0YXRlKTtcblxuICAgICAgaWYgKHVwZGF0ZWRTdGF0ZSAhPT0gY3VycmVudFN0YXRlKSB7XG4gICAgICAgIHRoaXMuX3N0YXRlJC5uZXh0KHVwZGF0ZWRTdGF0ZSk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGVmZmVjdHMgPSB0aGlzLmVmZmVjdHNQZXJBY3Rpb25UeXBlLmdldChuZXh0QWN0aW9uLnR5cGUpID8/IFtdO1xuICAgICAgdGhpcy5sb2dnZXIuZGVidWcoYFtTdG9yZV0gJHtlZmZlY3RzLmxlbmd0aH0gZWZmZWN0cyBmb3VuZCB0byBwcm9jZXNzIHRoZSBhY3Rpb24gJHtuZXh0QWN0aW9uLnR5cGV9YCwgZWZmZWN0cyk7XG4gICAgICBlZmZlY3RzLmZvckVhY2goKGVmZmVjdCkgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGVmZmVjdC5wcm9jZXNzQWN0aW9uKHRoaXMsIHVwZGF0ZWRTdGF0ZSwgbmV4dEFjdGlvbik7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoYFVuYWJsZSB0byBwcm9jZXNzIGFjdGlvbiAke25leHRBY3Rpb24udHlwZX0gYnkgZWZmZWN0ICR7ZWZmZWN0fWAsIHtcbiAgICAgICAgICAgIGVycm9yLFxuICAgICAgICAgICAgYWN0aW9uOiBuZXh0QWN0aW9uLFxuICAgICAgICAgICAgcHJvY2Vzc29yOiBlZmZlY3RcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRoaXMubG9nZ2VyLmVycm9yKGBFcnJvciB3aGVuIHByb2Nlc3NpbmcgYWN0aW9uICR7bmV4dEFjdGlvbi50eXBlfWAsIHtcbiAgICAgICAgZXJyb3IsXG4gICAgICAgIGFjdGlvbjogbmV4dEFjdGlvblxuICAgICAgfSk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMubG9nZ2VyLmluZm9ybWF0aW9uKGBbcHJvY2Vzc05leHRBY3Rpb25dIGFjdGlvbiAnJHtuZXh0QWN0aW9uLnR5cGV9IHByb2Nlc3NlZC5gLCBuZXh0QWN0aW9uKTtcblxuICAgICAgLy8gU2hvdWxkIG5vdCBiZSB1c2VmdWwuQnV0LCBqdXN0IGluIGNhc2UuXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMucHJvY2Vzc05leHRBY3Rpb24oKSk7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -10,5 +10,6 @@ export * from './lib/effect';
10
10
  export * from './lib/feature-state-specification';
11
11
  export * from './lib/ngssm-component';
12
12
  export * from './lib/state-initializer';
13
+ export * from './lib/logging';
13
14
  export * from './lib/store-mock';
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL25nc3NtLXN0b3JlL3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYywwQkFBMEIsQ0FBQztBQUV6QyxjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyx5QkFBeUIsQ0FBQztBQUV4QyxjQUFjLGtCQUFrQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBuZ3NzbS1zdG9yZVxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL25nc3NtLXN0b3JlLm1vZHVsZSc7XG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL3N0b3JlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3N0YXRlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FjdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9yZWR1Y2VyJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2VmZmVjdCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9mZWF0dXJlLXN0YXRlLXNwZWNpZmljYXRpb24nO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbmdzc20tY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3N0YXRlLWluaXRpYWxpemVyJztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvc3RvcmUtbW9jayc7XG4iXX0=
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL25nc3NtLXN0b3JlL3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYywwQkFBMEIsQ0FBQztBQUV6QyxjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLGtCQUFrQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBuZ3NzbS1zdG9yZVxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL25nc3NtLXN0b3JlLm1vZHVsZSc7XG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL3N0b3JlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3N0YXRlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FjdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9yZWR1Y2VyJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2VmZmVjdCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9mZWF0dXJlLXN0YXRlLXNwZWNpZmljYXRpb24nO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbmdzc20tY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3N0YXRlLWluaXRpYWxpemVyJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2xvZ2dpbmcnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc3RvcmUtbW9jayc7XG4iXX0=
@@ -1,15 +1,14 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { NgModule, InjectionToken, Injectable, Inject, Optional, Component } from '@angular/core';
3
- import { BehaviorSubject, Subject, map, distinctUntilChanged, takeUntil } from 'rxjs';
3
+ import { Subject, takeUntil, BehaviorSubject, map, distinctUntilChanged } from 'rxjs';
4
4
  import update from 'immutability-helper';
5
- import * as i1 from 'ngssm-toolkit';
6
5
 
7
6
  class NgssmStoreModule {
8
7
  }
9
- NgssmStoreModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NgssmStoreModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
10
- NgssmStoreModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.1.2", ngImport: i0, type: NgssmStoreModule });
11
- NgssmStoreModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NgssmStoreModule });
12
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NgssmStoreModule, decorators: [{
8
+ NgssmStoreModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: NgssmStoreModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
9
+ NgssmStoreModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.1.4", ngImport: i0, type: NgssmStoreModule });
10
+ NgssmStoreModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: NgssmStoreModule });
11
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: NgssmStoreModule, decorators: [{
13
12
  type: NgModule,
14
13
  args: [{
15
14
  declarations: [],
@@ -24,6 +23,74 @@ const NGSSM_EFFECT = new InjectionToken('NGSSM_EFFECT');
24
23
 
25
24
  const NGSSM_STATE_INITIALIZER = new InjectionToken('NGSSM_STATE_INITIALIZER');
26
25
 
26
+ var LogLevel;
27
+ (function (LogLevel) {
28
+ LogLevel["debug"] = "Debug";
29
+ LogLevel["information"] = "Information";
30
+ LogLevel["error"] = "Error";
31
+ })(LogLevel || (LogLevel = {}));
32
+
33
+ class Logger {
34
+ constructor() {
35
+ this._logEvents$ = new Subject();
36
+ }
37
+ get logEvents$() {
38
+ return this._logEvents$.asObservable();
39
+ }
40
+ debug(message, payload) {
41
+ this.log(LogLevel.debug, message, payload);
42
+ }
43
+ information(message, payload) {
44
+ this.log(LogLevel.information, message, payload);
45
+ }
46
+ error(message, payload) {
47
+ this.log(LogLevel.error, message, payload);
48
+ }
49
+ log(level, message, payload) {
50
+ this._logEvents$.next({
51
+ level,
52
+ message,
53
+ payload
54
+ });
55
+ }
56
+ }
57
+ Logger.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: Logger, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
58
+ Logger.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: Logger, providedIn: 'root' });
59
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: Logger, decorators: [{
60
+ type: Injectable,
61
+ args: [{
62
+ providedIn: 'root'
63
+ }]
64
+ }] });
65
+
66
+ class ConsoleAppender {
67
+ constructor(logger) {
68
+ this.logger = logger;
69
+ this.stopEvent$ = new Subject();
70
+ }
71
+ start() {
72
+ this.logger.logEvents$.pipe(takeUntil(this.stopEvent$)).subscribe((logEvent) => {
73
+ if (logEvent.payload) {
74
+ console.log(`[${logEvent.level}] ${logEvent.message}`, logEvent.payload);
75
+ }
76
+ else {
77
+ console.log(`[${logEvent.level}] ${logEvent.message}`);
78
+ }
79
+ });
80
+ }
81
+ stop() {
82
+ this.stopEvent$.next(true);
83
+ }
84
+ }
85
+ ConsoleAppender.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: ConsoleAppender, deps: [{ token: Logger }], target: i0.ɵɵFactoryTarget.Injectable });
86
+ ConsoleAppender.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: ConsoleAppender, providedIn: 'root' });
87
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: ConsoleAppender, decorators: [{
88
+ type: Injectable,
89
+ args: [{
90
+ providedIn: 'root'
91
+ }]
92
+ }], ctorParameters: function () { return [{ type: Logger }]; } });
93
+
27
94
  const featureStateSpecifications = [];
28
95
  const NgSsmFeatureState = (specification) => {
29
96
  return (target) => {
@@ -125,15 +192,15 @@ class Store {
125
192
  }
126
193
  }
127
194
  }
128
- Store.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: Store, deps: [{ token: i1.Logger }, { token: NGSSM_REDUCER, optional: true }, { token: NGSSM_EFFECT, optional: true }, { token: NGSSM_STATE_INITIALIZER, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
129
- Store.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: Store, providedIn: 'root' });
130
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: Store, decorators: [{
195
+ Store.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: Store, deps: [{ token: Logger }, { token: NGSSM_REDUCER, optional: true }, { token: NGSSM_EFFECT, optional: true }, { token: NGSSM_STATE_INITIALIZER, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
196
+ Store.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: Store, providedIn: 'root' });
197
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: Store, decorators: [{
131
198
  type: Injectable,
132
199
  args: [{
133
200
  providedIn: 'root'
134
201
  }]
135
202
  }], ctorParameters: function () {
136
- return [{ type: i1.Logger }, { type: undefined, decorators: [{
203
+ return [{ type: Logger }, { type: undefined, decorators: [{
137
204
  type: Inject,
138
205
  args: [NGSSM_REDUCER]
139
206
  }, {
@@ -173,9 +240,9 @@ class NgSsmComponent {
173
240
  this.store.dispatchActionType(actionType);
174
241
  }
175
242
  }
176
- NgSsmComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NgSsmComponent, deps: [{ token: Store }], target: i0.ɵɵFactoryTarget.Component });
177
- NgSsmComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.2", type: NgSsmComponent, selector: "ng-component", ngImport: i0, template: '', isInline: true });
178
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NgSsmComponent, decorators: [{
243
+ NgSsmComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: NgSsmComponent, deps: [{ token: Store }], target: i0.ɵɵFactoryTarget.Component });
244
+ NgSsmComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.4", type: NgSsmComponent, selector: "ng-component", ngImport: i0, template: '', isInline: true });
245
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: NgSsmComponent, decorators: [{
179
246
  type: Component,
180
247
  args: [{
181
248
  template: ''
@@ -199,5 +266,5 @@ class StoreMock {
199
266
  * Generated bundle index. Do not edit.
200
267
  */
201
268
 
202
- export { NGSSM_EFFECT, NGSSM_REDUCER, NGSSM_STATE_INITIALIZER, NgSsmComponent, NgSsmFeatureState, NgssmStoreModule, Store, StoreMock };
269
+ export { ConsoleAppender, LogLevel, Logger, NGSSM_EFFECT, NGSSM_REDUCER, NGSSM_STATE_INITIALIZER, NgSsmComponent, NgSsmFeatureState, NgssmStoreModule, Store, StoreMock };
203
270
  //# sourceMappingURL=ngssm-store.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"ngssm-store.mjs","sources":["../../../projects/ngssm-store/src/lib/ngssm-store.module.ts","../../../projects/ngssm-store/src/lib/reducer.ts","../../../projects/ngssm-store/src/lib/effect.ts","../../../projects/ngssm-store/src/lib/state-initializer.ts","../../../projects/ngssm-store/src/lib/store.ts","../../../projects/ngssm-store/src/lib/ngssm-component.ts","../../../projects/ngssm-store/src/lib/store-mock.ts","../../../projects/ngssm-store/src/public-api.ts","../../../projects/ngssm-store/src/ngssm-store.ts"],"sourcesContent":["import { NgModule } from '@angular/core';\n\n@NgModule({\n declarations: [],\n imports: [],\n exports: []\n})\nexport class NgssmStoreModule {}\n","import { InjectionToken } from '@angular/core';\n\nimport { Action } from './action';\nimport { State } from './state';\n\nexport interface Reducer {\n processedActions: string[];\n updateState(state: State, action: Action): State;\n}\n\nexport const NGSSM_REDUCER = new InjectionToken<Reducer>('NGSSM_REDUCER');\n","import { InjectionToken } from '@angular/core';\n\nimport { Action } from './action';\nimport { State } from './state';\nimport { Store } from './store';\n\nexport interface Effect {\n processedActions: string[];\n processAction(store: Store, state: State, action: Action): void;\n}\n\nexport const NGSSM_EFFECT = new InjectionToken<Effect>('NGSSM_EFFECT');\n","import { InjectionToken } from '@angular/core';\nimport { State } from './state';\n\nexport interface StateInitializer {\n initializeState(state: State): State;\n}\n\nexport const NGSSM_STATE_INITIALIZER = new InjectionToken<StateInitializer>('NGSSM_STATE_INITIALIZER');\n","import { Inject, Injectable, Optional } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\nimport update from 'immutability-helper';\n\nimport { Logger } from 'ngssm-toolkit';\n\nimport { FeatureStateSpecification } from './feature-state-specification';\nimport { State } from './state';\nimport { Action } from './action';\nimport { NGSSM_REDUCER, Reducer } from './reducer';\nimport { Effect, NGSSM_EFFECT } from './effect';\nimport { NGSSM_STATE_INITIALIZER, StateInitializer } from './state-initializer';\n\nconst featureStateSpecifications: FeatureStateSpecification[] = [];\nexport const NgSsmFeatureState = (specification: FeatureStateSpecification) => {\n return (target: object) => {\n featureStateSpecifications.push(specification);\n };\n};\n\n@Injectable({\n providedIn: 'root'\n})\nexport class Store {\n private readonly _state$ = new BehaviorSubject<State>({});\n private readonly actionQueue: Action[] = [];\n private readonly reducersPerActionType = new Map<string, Reducer[]>();\n private readonly effectsPerActionType = new Map<string, Effect[]>();\n\n constructor(\n private logger: Logger,\n @Inject(NGSSM_REDUCER) @Optional() reducers: Reducer[],\n @Inject(NGSSM_EFFECT) @Optional() effects: Effect[],\n @Inject(NGSSM_STATE_INITIALIZER) @Optional() initializers: StateInitializer[]\n ) {\n this.logger.information('[Store] ---> state initialization...');\n let state = this._state$.getValue();\n state = featureStateSpecifications.reduce((p, c) => update(p, { [c.featureStateKey]: { $set: c.initialState } }), state);\n\n (initializers ?? []).forEach((initializer) => {\n this.logger.information('[Store] ------> calling initializer', initializer);\n state = initializer.initializeState(state);\n });\n\n this._state$.next(state);\n\n this.logger.information(`[Store] ---> initialization of ${(reducers ?? []).length} reducers...`);\n (reducers ?? []).forEach((reducer) => {\n this.logger.information('[Store] ------> initialization of ', reducer);\n reducer.processedActions.forEach((processedAction) => {\n const storeReducers: Reducer[] = this.reducersPerActionType.get(processedAction) ?? [];\n if (storeReducers.length === 0) {\n this.reducersPerActionType.set(processedAction, storeReducers);\n }\n\n storeReducers.push(reducer);\n });\n });\n\n this.logger.information(`[Store] ---> initialization of ${(effects ?? []).length} effects...`);\n (effects ?? []).forEach((effect) => {\n this.logger.information('[Store] ------> initialization of ', effect);\n effect.processedActions.forEach((processedAction) => {\n const storedEffects: Effect[] = this.effectsPerActionType.get(processedAction) ?? [];\n if (storedEffects.length === 0) {\n this.effectsPerActionType.set(processedAction, storedEffects);\n }\n\n storedEffects.push(effect);\n });\n });\n }\n\n public get state$(): Observable<State> {\n return this._state$.asObservable();\n }\n\n public dispatchAction(action: Action): void {\n this.actionQueue.push(action);\n this.logger.debug(`Action of type '${action.type}' added to the queue => ${this.actionQueue.length} pending actions`, action);\n setTimeout(() => this.processNextAction());\n }\n\n public dispatchActionType(type: string): void {\n this.dispatchAction({ type });\n }\n\n private processNextAction(): void {\n const nextAction = this.actionQueue.shift();\n if (!nextAction) {\n this.logger.debug('[processNextAction] No action to process');\n return;\n }\n\n this.logger.information(`[processNextAction] Start processing action '${nextAction.type}...`, nextAction);\n\n try {\n const reducers = this.reducersPerActionType.get(nextAction.type) ?? [];\n this.logger.debug(`[Store] ${reducers.length} reducers found to process the action ${nextAction.type}`, reducers);\n const currentState = this._state$.getValue();\n const updatedState = reducers.reduce((p, c) => c.updateState(p, nextAction), currentState);\n\n if (updatedState !== currentState) {\n this._state$.next(updatedState);\n }\n\n const effects = this.effectsPerActionType.get(nextAction.type) ?? [];\n this.logger.debug(`[Store] ${effects.length} effects found to process the action ${nextAction.type}`, effects);\n effects.forEach((effect) => {\n try {\n effect.processAction(this, updatedState, nextAction);\n } catch (error) {\n this.logger.error(`Unable to process action ${nextAction.type} by effect ${effect}`, {\n error,\n action: nextAction,\n processor: effect\n });\n }\n });\n } catch (error) {\n this.logger.error(`Error when processing action ${nextAction.type}`, {\n error,\n action: nextAction\n });\n } finally {\n this.logger.information(`[processNextAction] action '${nextAction.type} processed.`, nextAction);\n\n // Should not be useful.But, just in case.\n setTimeout(() => this.processNextAction());\n }\n }\n}\n","import { Component, OnDestroy } from '@angular/core';\nimport { map, Observable, Subject, distinctUntilChanged, takeUntil } from 'rxjs';\n\nimport { Action } from './action';\nimport { State } from './state';\nimport { Store } from './store';\n\n@Component({\n template: ''\n})\nexport class NgSsmComponent implements OnDestroy {\n private readonly _unsubscribeAll$ = new Subject<void>();\n\n constructor(protected store: Store) {}\n\n protected get unsubscribeAll$(): Observable<void> {\n return this._unsubscribeAll$.asObservable();\n }\n\n public ngOnDestroy(): void {\n this._unsubscribeAll$.next();\n this._unsubscribeAll$.complete();\n }\n\n public watch<T>(selector: (state: State) => T): Observable<T> {\n return this.store.state$.pipe(\n map((state) => selector(state)),\n distinctUntilChanged(),\n takeUntil(this.unsubscribeAll$)\n );\n }\n\n public dispatchAction(action: Action): void {\n this.store.dispatchAction(action);\n }\n\n public dispatchActionType(actionType: string): void {\n this.store.dispatchActionType(actionType);\n }\n}\n","import { BehaviorSubject } from 'rxjs';\nimport { Action } from './action';\n\nexport class StoreMock {\n public state$ = new BehaviorSubject<{ [key: string]: any }>({});\n\n constructor(initialState: { [key: string]: any }) {\n this.state$.next(initialState);\n }\n\n public dispatchAction(action: Action): void {}\n\n public dispatchActionType(type: string): void {}\n}\n","/*\n * Public API Surface of ngssm-store\n */\n\nexport * from './lib/ngssm-store.module';\n\nexport * from './lib/store';\nexport * from './lib/state';\nexport * from './lib/action';\nexport * from './lib/reducer';\nexport * from './lib/effect';\nexport * from './lib/feature-state-specification';\nexport * from './lib/ngssm-component';\nexport * from './lib/state-initializer';\n\nexport * from './lib/store-mock';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.Store"],"mappings":"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"}
1
+ {"version":3,"file":"ngssm-store.mjs","sources":["../../../projects/ngssm-store/src/lib/ngssm-store.module.ts","../../../projects/ngssm-store/src/lib/reducer.ts","../../../projects/ngssm-store/src/lib/effect.ts","../../../projects/ngssm-store/src/lib/state-initializer.ts","../../../projects/ngssm-store/src/lib/logging/log-level.ts","../../../projects/ngssm-store/src/lib/logging/logger.ts","../../../projects/ngssm-store/src/lib/logging/console-appender.ts","../../../projects/ngssm-store/src/lib/store.ts","../../../projects/ngssm-store/src/lib/ngssm-component.ts","../../../projects/ngssm-store/src/lib/store-mock.ts","../../../projects/ngssm-store/src/public-api.ts","../../../projects/ngssm-store/src/ngssm-store.ts"],"sourcesContent":["import { NgModule } from '@angular/core';\n\n@NgModule({\n declarations: [],\n imports: [],\n exports: []\n})\nexport class NgssmStoreModule {}\n","import { InjectionToken } from '@angular/core';\n\nimport { Action } from './action';\nimport { State } from './state';\n\nexport interface Reducer {\n processedActions: string[];\n updateState(state: State, action: Action): State;\n}\n\nexport const NGSSM_REDUCER = new InjectionToken<Reducer>('NGSSM_REDUCER');\n","import { InjectionToken } from '@angular/core';\n\nimport { Action } from './action';\nimport { State } from './state';\nimport { Store } from './store';\n\nexport interface Effect {\n processedActions: string[];\n processAction(store: Store, state: State, action: Action): void;\n}\n\nexport const NGSSM_EFFECT = new InjectionToken<Effect>('NGSSM_EFFECT');\n","import { InjectionToken } from '@angular/core';\nimport { State } from './state';\n\nexport interface StateInitializer {\n initializeState(state: State): State;\n}\n\nexport const NGSSM_STATE_INITIALIZER = new InjectionToken<StateInitializer>('NGSSM_STATE_INITIALIZER');\n","export enum LogLevel {\n debug = 'Debug',\n information = 'Information',\n error = 'Error'\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\nimport { LogEvent } from './log-event';\nimport { LogLevel } from './log-level';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class Logger {\n private readonly _logEvents$ = new Subject<LogEvent>();\n\n public get logEvents$(): Observable<LogEvent> {\n return this._logEvents$.asObservable();\n }\n\n public debug(message: string, payload?: any): void {\n this.log(LogLevel.debug, message, payload);\n }\n\n public information(message: string, payload?: any): void {\n this.log(LogLevel.information, message, payload);\n }\n\n public error(message: string, payload?: any): void {\n this.log(LogLevel.error, message, payload);\n }\n\n public log(level: LogLevel, message: string, payload?: any): void {\n this._logEvents$.next({\n level,\n message,\n payload\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Subject, takeUntil } from 'rxjs';\nimport { Logger } from './logger';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ConsoleAppender {\n private readonly stopEvent$ = new Subject<boolean>();\n\n constructor(private logger: Logger) {}\n\n public start(): void {\n this.logger.logEvents$.pipe(takeUntil(this.stopEvent$)).subscribe((logEvent) => {\n if (logEvent.payload) {\n console.log(`[${logEvent.level}] ${logEvent.message}`, logEvent.payload);\n } else {\n console.log(`[${logEvent.level}] ${logEvent.message}`);\n }\n });\n }\n\n public stop(): void {\n this.stopEvent$.next(true);\n }\n}\n","import { Inject, Injectable, Optional } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\nimport update from 'immutability-helper';\n\nimport { FeatureStateSpecification } from './feature-state-specification';\nimport { State } from './state';\nimport { Action } from './action';\nimport { NGSSM_REDUCER, Reducer } from './reducer';\nimport { Effect, NGSSM_EFFECT } from './effect';\nimport { NGSSM_STATE_INITIALIZER, StateInitializer } from './state-initializer';\nimport { Logger } from './logging';\n\nconst featureStateSpecifications: FeatureStateSpecification[] = [];\nexport const NgSsmFeatureState = (specification: FeatureStateSpecification) => {\n return (target: object) => {\n featureStateSpecifications.push(specification);\n };\n};\n\n@Injectable({\n providedIn: 'root'\n})\nexport class Store {\n private readonly _state$ = new BehaviorSubject<State>({});\n private readonly actionQueue: Action[] = [];\n private readonly reducersPerActionType = new Map<string, Reducer[]>();\n private readonly effectsPerActionType = new Map<string, Effect[]>();\n\n constructor(\n private logger: Logger,\n @Inject(NGSSM_REDUCER) @Optional() reducers: Reducer[],\n @Inject(NGSSM_EFFECT) @Optional() effects: Effect[],\n @Inject(NGSSM_STATE_INITIALIZER) @Optional() initializers: StateInitializer[]\n ) {\n this.logger.information('[Store] ---> state initialization...');\n let state = this._state$.getValue();\n state = featureStateSpecifications.reduce((p, c) => update(p, { [c.featureStateKey]: { $set: c.initialState } }), state);\n\n (initializers ?? []).forEach((initializer) => {\n this.logger.information('[Store] ------> calling initializer', initializer);\n state = initializer.initializeState(state);\n });\n\n this._state$.next(state);\n\n this.logger.information(`[Store] ---> initialization of ${(reducers ?? []).length} reducers...`);\n (reducers ?? []).forEach((reducer) => {\n this.logger.information('[Store] ------> initialization of ', reducer);\n reducer.processedActions.forEach((processedAction) => {\n const storeReducers: Reducer[] = this.reducersPerActionType.get(processedAction) ?? [];\n if (storeReducers.length === 0) {\n this.reducersPerActionType.set(processedAction, storeReducers);\n }\n\n storeReducers.push(reducer);\n });\n });\n\n this.logger.information(`[Store] ---> initialization of ${(effects ?? []).length} effects...`);\n (effects ?? []).forEach((effect) => {\n this.logger.information('[Store] ------> initialization of ', effect);\n effect.processedActions.forEach((processedAction) => {\n const storedEffects: Effect[] = this.effectsPerActionType.get(processedAction) ?? [];\n if (storedEffects.length === 0) {\n this.effectsPerActionType.set(processedAction, storedEffects);\n }\n\n storedEffects.push(effect);\n });\n });\n }\n\n public get state$(): Observable<State> {\n return this._state$.asObservable();\n }\n\n public dispatchAction(action: Action): void {\n this.actionQueue.push(action);\n this.logger.debug(`Action of type '${action.type}' added to the queue => ${this.actionQueue.length} pending actions`, action);\n setTimeout(() => this.processNextAction());\n }\n\n public dispatchActionType(type: string): void {\n this.dispatchAction({ type });\n }\n\n private processNextAction(): void {\n const nextAction = this.actionQueue.shift();\n if (!nextAction) {\n this.logger.debug('[processNextAction] No action to process');\n return;\n }\n\n this.logger.information(`[processNextAction] Start processing action '${nextAction.type}...`, nextAction);\n\n try {\n const reducers = this.reducersPerActionType.get(nextAction.type) ?? [];\n this.logger.debug(`[Store] ${reducers.length} reducers found to process the action ${nextAction.type}`, reducers);\n const currentState = this._state$.getValue();\n const updatedState = reducers.reduce((p, c) => c.updateState(p, nextAction), currentState);\n\n if (updatedState !== currentState) {\n this._state$.next(updatedState);\n }\n\n const effects = this.effectsPerActionType.get(nextAction.type) ?? [];\n this.logger.debug(`[Store] ${effects.length} effects found to process the action ${nextAction.type}`, effects);\n effects.forEach((effect) => {\n try {\n effect.processAction(this, updatedState, nextAction);\n } catch (error) {\n this.logger.error(`Unable to process action ${nextAction.type} by effect ${effect}`, {\n error,\n action: nextAction,\n processor: effect\n });\n }\n });\n } catch (error) {\n this.logger.error(`Error when processing action ${nextAction.type}`, {\n error,\n action: nextAction\n });\n } finally {\n this.logger.information(`[processNextAction] action '${nextAction.type} processed.`, nextAction);\n\n // Should not be useful.But, just in case.\n setTimeout(() => this.processNextAction());\n }\n }\n}\n","import { Component, OnDestroy } from '@angular/core';\nimport { map, Observable, Subject, distinctUntilChanged, takeUntil } from 'rxjs';\n\nimport { Action } from './action';\nimport { State } from './state';\nimport { Store } from './store';\n\n@Component({\n template: ''\n})\nexport class NgSsmComponent implements OnDestroy {\n private readonly _unsubscribeAll$ = new Subject<void>();\n\n constructor(protected store: Store) {}\n\n protected get unsubscribeAll$(): Observable<void> {\n return this._unsubscribeAll$.asObservable();\n }\n\n public ngOnDestroy(): void {\n this._unsubscribeAll$.next();\n this._unsubscribeAll$.complete();\n }\n\n public watch<T>(selector: (state: State) => T): Observable<T> {\n return this.store.state$.pipe(\n map((state) => selector(state)),\n distinctUntilChanged(),\n takeUntil(this.unsubscribeAll$)\n );\n }\n\n public dispatchAction(action: Action): void {\n this.store.dispatchAction(action);\n }\n\n public dispatchActionType(actionType: string): void {\n this.store.dispatchActionType(actionType);\n }\n}\n","import { BehaviorSubject } from 'rxjs';\nimport { Action } from './action';\n\nexport class StoreMock {\n public state$ = new BehaviorSubject<{ [key: string]: any }>({});\n\n constructor(initialState: { [key: string]: any }) {\n this.state$.next(initialState);\n }\n\n public dispatchAction(action: Action): void {}\n\n public dispatchActionType(type: string): void {}\n}\n","/*\n * Public API Surface of ngssm-store\n */\n\nexport * from './lib/ngssm-store.module';\n\nexport * from './lib/store';\nexport * from './lib/state';\nexport * from './lib/action';\nexport * from './lib/reducer';\nexport * from './lib/effect';\nexport * from './lib/feature-state-specification';\nexport * from './lib/ngssm-component';\nexport * from './lib/state-initializer';\nexport * from './lib/logging';\nexport * from './lib/store-mock';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.Logger","i1.Store"],"mappings":"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"}
@@ -1,15 +1,14 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { NgModule, InjectionToken, Injectable, Inject, Optional, Component } from '@angular/core';
3
- import { BehaviorSubject, Subject, map, distinctUntilChanged, takeUntil } from 'rxjs';
3
+ import { Subject, takeUntil, BehaviorSubject, map, distinctUntilChanged } from 'rxjs';
4
4
  import update from 'immutability-helper';
5
- import * as i1 from 'ngssm-toolkit';
6
5
 
7
6
  class NgssmStoreModule {
8
7
  }
9
- NgssmStoreModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NgssmStoreModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
10
- NgssmStoreModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.1.2", ngImport: i0, type: NgssmStoreModule });
11
- NgssmStoreModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NgssmStoreModule });
12
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NgssmStoreModule, decorators: [{
8
+ NgssmStoreModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: NgssmStoreModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
9
+ NgssmStoreModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.1.4", ngImport: i0, type: NgssmStoreModule });
10
+ NgssmStoreModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: NgssmStoreModule });
11
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: NgssmStoreModule, decorators: [{
13
12
  type: NgModule,
14
13
  args: [{
15
14
  declarations: [],
@@ -24,6 +23,74 @@ const NGSSM_EFFECT = new InjectionToken('NGSSM_EFFECT');
24
23
 
25
24
  const NGSSM_STATE_INITIALIZER = new InjectionToken('NGSSM_STATE_INITIALIZER');
26
25
 
26
+ var LogLevel;
27
+ (function (LogLevel) {
28
+ LogLevel["debug"] = "Debug";
29
+ LogLevel["information"] = "Information";
30
+ LogLevel["error"] = "Error";
31
+ })(LogLevel || (LogLevel = {}));
32
+
33
+ class Logger {
34
+ constructor() {
35
+ this._logEvents$ = new Subject();
36
+ }
37
+ get logEvents$() {
38
+ return this._logEvents$.asObservable();
39
+ }
40
+ debug(message, payload) {
41
+ this.log(LogLevel.debug, message, payload);
42
+ }
43
+ information(message, payload) {
44
+ this.log(LogLevel.information, message, payload);
45
+ }
46
+ error(message, payload) {
47
+ this.log(LogLevel.error, message, payload);
48
+ }
49
+ log(level, message, payload) {
50
+ this._logEvents$.next({
51
+ level,
52
+ message,
53
+ payload
54
+ });
55
+ }
56
+ }
57
+ Logger.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: Logger, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
58
+ Logger.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: Logger, providedIn: 'root' });
59
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: Logger, decorators: [{
60
+ type: Injectable,
61
+ args: [{
62
+ providedIn: 'root'
63
+ }]
64
+ }] });
65
+
66
+ class ConsoleAppender {
67
+ constructor(logger) {
68
+ this.logger = logger;
69
+ this.stopEvent$ = new Subject();
70
+ }
71
+ start() {
72
+ this.logger.logEvents$.pipe(takeUntil(this.stopEvent$)).subscribe((logEvent) => {
73
+ if (logEvent.payload) {
74
+ console.log(`[${logEvent.level}] ${logEvent.message}`, logEvent.payload);
75
+ }
76
+ else {
77
+ console.log(`[${logEvent.level}] ${logEvent.message}`);
78
+ }
79
+ });
80
+ }
81
+ stop() {
82
+ this.stopEvent$.next(true);
83
+ }
84
+ }
85
+ ConsoleAppender.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: ConsoleAppender, deps: [{ token: Logger }], target: i0.ɵɵFactoryTarget.Injectable });
86
+ ConsoleAppender.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: ConsoleAppender, providedIn: 'root' });
87
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: ConsoleAppender, decorators: [{
88
+ type: Injectable,
89
+ args: [{
90
+ providedIn: 'root'
91
+ }]
92
+ }], ctorParameters: function () { return [{ type: Logger }]; } });
93
+
27
94
  const featureStateSpecifications = [];
28
95
  const NgSsmFeatureState = (specification) => {
29
96
  return (target) => {
@@ -122,14 +189,14 @@ class Store {
122
189
  }
123
190
  }
124
191
  }
125
- Store.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: Store, deps: [{ token: i1.Logger }, { token: NGSSM_REDUCER, optional: true }, { token: NGSSM_EFFECT, optional: true }, { token: NGSSM_STATE_INITIALIZER, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
126
- Store.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: Store, providedIn: 'root' });
127
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: Store, decorators: [{
192
+ Store.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: Store, deps: [{ token: Logger }, { token: NGSSM_REDUCER, optional: true }, { token: NGSSM_EFFECT, optional: true }, { token: NGSSM_STATE_INITIALIZER, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
193
+ Store.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: Store, providedIn: 'root' });
194
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: Store, decorators: [{
128
195
  type: Injectable,
129
196
  args: [{
130
197
  providedIn: 'root'
131
198
  }]
132
- }], ctorParameters: function () { return [{ type: i1.Logger }, { type: undefined, decorators: [{
199
+ }], ctorParameters: function () { return [{ type: Logger }, { type: undefined, decorators: [{
133
200
  type: Inject,
134
201
  args: [NGSSM_REDUCER]
135
202
  }, {
@@ -168,9 +235,9 @@ class NgSsmComponent {
168
235
  this.store.dispatchActionType(actionType);
169
236
  }
170
237
  }
171
- NgSsmComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NgSsmComponent, deps: [{ token: Store }], target: i0.ɵɵFactoryTarget.Component });
172
- NgSsmComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.2", type: NgSsmComponent, selector: "ng-component", ngImport: i0, template: '', isInline: true });
173
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NgSsmComponent, decorators: [{
238
+ NgSsmComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: NgSsmComponent, deps: [{ token: Store }], target: i0.ɵɵFactoryTarget.Component });
239
+ NgSsmComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.4", type: NgSsmComponent, selector: "ng-component", ngImport: i0, template: '', isInline: true });
240
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: NgSsmComponent, decorators: [{
174
241
  type: Component,
175
242
  args: [{
176
243
  template: ''
@@ -194,5 +261,5 @@ class StoreMock {
194
261
  * Generated bundle index. Do not edit.
195
262
  */
196
263
 
197
- export { NGSSM_EFFECT, NGSSM_REDUCER, NGSSM_STATE_INITIALIZER, NgSsmComponent, NgSsmFeatureState, NgssmStoreModule, Store, StoreMock };
264
+ export { ConsoleAppender, LogLevel, Logger, NGSSM_EFFECT, NGSSM_REDUCER, NGSSM_STATE_INITIALIZER, NgSsmComponent, NgSsmFeatureState, NgssmStoreModule, Store, StoreMock };
198
265
  //# sourceMappingURL=ngssm-store.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"ngssm-store.mjs","sources":["../../../projects/ngssm-store/src/lib/ngssm-store.module.ts","../../../projects/ngssm-store/src/lib/reducer.ts","../../../projects/ngssm-store/src/lib/effect.ts","../../../projects/ngssm-store/src/lib/state-initializer.ts","../../../projects/ngssm-store/src/lib/store.ts","../../../projects/ngssm-store/src/lib/ngssm-component.ts","../../../projects/ngssm-store/src/lib/store-mock.ts","../../../projects/ngssm-store/src/public-api.ts","../../../projects/ngssm-store/src/ngssm-store.ts"],"sourcesContent":["import { NgModule } from '@angular/core';\n\n@NgModule({\n declarations: [],\n imports: [],\n exports: []\n})\nexport class NgssmStoreModule {}\n","import { InjectionToken } from '@angular/core';\n\nimport { Action } from './action';\nimport { State } from './state';\n\nexport interface Reducer {\n processedActions: string[];\n updateState(state: State, action: Action): State;\n}\n\nexport const NGSSM_REDUCER = new InjectionToken<Reducer>('NGSSM_REDUCER');\n","import { InjectionToken } from '@angular/core';\n\nimport { Action } from './action';\nimport { State } from './state';\nimport { Store } from './store';\n\nexport interface Effect {\n processedActions: string[];\n processAction(store: Store, state: State, action: Action): void;\n}\n\nexport const NGSSM_EFFECT = new InjectionToken<Effect>('NGSSM_EFFECT');\n","import { InjectionToken } from '@angular/core';\nimport { State } from './state';\n\nexport interface StateInitializer {\n initializeState(state: State): State;\n}\n\nexport const NGSSM_STATE_INITIALIZER = new InjectionToken<StateInitializer>('NGSSM_STATE_INITIALIZER');\n","import { Inject, Injectable, Optional } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\nimport update from 'immutability-helper';\n\nimport { Logger } from 'ngssm-toolkit';\n\nimport { FeatureStateSpecification } from './feature-state-specification';\nimport { State } from './state';\nimport { Action } from './action';\nimport { NGSSM_REDUCER, Reducer } from './reducer';\nimport { Effect, NGSSM_EFFECT } from './effect';\nimport { NGSSM_STATE_INITIALIZER, StateInitializer } from './state-initializer';\n\nconst featureStateSpecifications: FeatureStateSpecification[] = [];\nexport const NgSsmFeatureState = (specification: FeatureStateSpecification) => {\n return (target: object) => {\n featureStateSpecifications.push(specification);\n };\n};\n\n@Injectable({\n providedIn: 'root'\n})\nexport class Store {\n private readonly _state$ = new BehaviorSubject<State>({});\n private readonly actionQueue: Action[] = [];\n private readonly reducersPerActionType = new Map<string, Reducer[]>();\n private readonly effectsPerActionType = new Map<string, Effect[]>();\n\n constructor(\n private logger: Logger,\n @Inject(NGSSM_REDUCER) @Optional() reducers: Reducer[],\n @Inject(NGSSM_EFFECT) @Optional() effects: Effect[],\n @Inject(NGSSM_STATE_INITIALIZER) @Optional() initializers: StateInitializer[]\n ) {\n this.logger.information('[Store] ---> state initialization...');\n let state = this._state$.getValue();\n state = featureStateSpecifications.reduce((p, c) => update(p, { [c.featureStateKey]: { $set: c.initialState } }), state);\n\n (initializers ?? []).forEach((initializer) => {\n this.logger.information('[Store] ------> calling initializer', initializer);\n state = initializer.initializeState(state);\n });\n\n this._state$.next(state);\n\n this.logger.information(`[Store] ---> initialization of ${(reducers ?? []).length} reducers...`);\n (reducers ?? []).forEach((reducer) => {\n this.logger.information('[Store] ------> initialization of ', reducer);\n reducer.processedActions.forEach((processedAction) => {\n const storeReducers: Reducer[] = this.reducersPerActionType.get(processedAction) ?? [];\n if (storeReducers.length === 0) {\n this.reducersPerActionType.set(processedAction, storeReducers);\n }\n\n storeReducers.push(reducer);\n });\n });\n\n this.logger.information(`[Store] ---> initialization of ${(effects ?? []).length} effects...`);\n (effects ?? []).forEach((effect) => {\n this.logger.information('[Store] ------> initialization of ', effect);\n effect.processedActions.forEach((processedAction) => {\n const storedEffects: Effect[] = this.effectsPerActionType.get(processedAction) ?? [];\n if (storedEffects.length === 0) {\n this.effectsPerActionType.set(processedAction, storedEffects);\n }\n\n storedEffects.push(effect);\n });\n });\n }\n\n public get state$(): Observable<State> {\n return this._state$.asObservable();\n }\n\n public dispatchAction(action: Action): void {\n this.actionQueue.push(action);\n this.logger.debug(`Action of type '${action.type}' added to the queue => ${this.actionQueue.length} pending actions`, action);\n setTimeout(() => this.processNextAction());\n }\n\n public dispatchActionType(type: string): void {\n this.dispatchAction({ type });\n }\n\n private processNextAction(): void {\n const nextAction = this.actionQueue.shift();\n if (!nextAction) {\n this.logger.debug('[processNextAction] No action to process');\n return;\n }\n\n this.logger.information(`[processNextAction] Start processing action '${nextAction.type}...`, nextAction);\n\n try {\n const reducers = this.reducersPerActionType.get(nextAction.type) ?? [];\n this.logger.debug(`[Store] ${reducers.length} reducers found to process the action ${nextAction.type}`, reducers);\n const currentState = this._state$.getValue();\n const updatedState = reducers.reduce((p, c) => c.updateState(p, nextAction), currentState);\n\n if (updatedState !== currentState) {\n this._state$.next(updatedState);\n }\n\n const effects = this.effectsPerActionType.get(nextAction.type) ?? [];\n this.logger.debug(`[Store] ${effects.length} effects found to process the action ${nextAction.type}`, effects);\n effects.forEach((effect) => {\n try {\n effect.processAction(this, updatedState, nextAction);\n } catch (error) {\n this.logger.error(`Unable to process action ${nextAction.type} by effect ${effect}`, {\n error,\n action: nextAction,\n processor: effect\n });\n }\n });\n } catch (error) {\n this.logger.error(`Error when processing action ${nextAction.type}`, {\n error,\n action: nextAction\n });\n } finally {\n this.logger.information(`[processNextAction] action '${nextAction.type} processed.`, nextAction);\n\n // Should not be useful.But, just in case.\n setTimeout(() => this.processNextAction());\n }\n }\n}\n","import { Component, OnDestroy } from '@angular/core';\nimport { map, Observable, Subject, distinctUntilChanged, takeUntil } from 'rxjs';\n\nimport { Action } from './action';\nimport { State } from './state';\nimport { Store } from './store';\n\n@Component({\n template: ''\n})\nexport class NgSsmComponent implements OnDestroy {\n private readonly _unsubscribeAll$ = new Subject<void>();\n\n constructor(protected store: Store) {}\n\n protected get unsubscribeAll$(): Observable<void> {\n return this._unsubscribeAll$.asObservable();\n }\n\n public ngOnDestroy(): void {\n this._unsubscribeAll$.next();\n this._unsubscribeAll$.complete();\n }\n\n public watch<T>(selector: (state: State) => T): Observable<T> {\n return this.store.state$.pipe(\n map((state) => selector(state)),\n distinctUntilChanged(),\n takeUntil(this.unsubscribeAll$)\n );\n }\n\n public dispatchAction(action: Action): void {\n this.store.dispatchAction(action);\n }\n\n public dispatchActionType(actionType: string): void {\n this.store.dispatchActionType(actionType);\n }\n}\n","import { BehaviorSubject } from 'rxjs';\nimport { Action } from './action';\n\nexport class StoreMock {\n public state$ = new BehaviorSubject<{ [key: string]: any }>({});\n\n constructor(initialState: { [key: string]: any }) {\n this.state$.next(initialState);\n }\n\n public dispatchAction(action: Action): void {}\n\n public dispatchActionType(type: string): void {}\n}\n","/*\n * Public API Surface of ngssm-store\n */\n\nexport * from './lib/ngssm-store.module';\n\nexport * from './lib/store';\nexport * from './lib/state';\nexport * from './lib/action';\nexport * from './lib/reducer';\nexport * from './lib/effect';\nexport * from './lib/feature-state-specification';\nexport * from './lib/ngssm-component';\nexport * from './lib/state-initializer';\n\nexport * from './lib/store-mock';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.Store"],"mappings":"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"}
1
+ {"version":3,"file":"ngssm-store.mjs","sources":["../../../projects/ngssm-store/src/lib/ngssm-store.module.ts","../../../projects/ngssm-store/src/lib/reducer.ts","../../../projects/ngssm-store/src/lib/effect.ts","../../../projects/ngssm-store/src/lib/state-initializer.ts","../../../projects/ngssm-store/src/lib/logging/log-level.ts","../../../projects/ngssm-store/src/lib/logging/logger.ts","../../../projects/ngssm-store/src/lib/logging/console-appender.ts","../../../projects/ngssm-store/src/lib/store.ts","../../../projects/ngssm-store/src/lib/ngssm-component.ts","../../../projects/ngssm-store/src/lib/store-mock.ts","../../../projects/ngssm-store/src/public-api.ts","../../../projects/ngssm-store/src/ngssm-store.ts"],"sourcesContent":["import { NgModule } from '@angular/core';\n\n@NgModule({\n declarations: [],\n imports: [],\n exports: []\n})\nexport class NgssmStoreModule {}\n","import { InjectionToken } from '@angular/core';\n\nimport { Action } from './action';\nimport { State } from './state';\n\nexport interface Reducer {\n processedActions: string[];\n updateState(state: State, action: Action): State;\n}\n\nexport const NGSSM_REDUCER = new InjectionToken<Reducer>('NGSSM_REDUCER');\n","import { InjectionToken } from '@angular/core';\n\nimport { Action } from './action';\nimport { State } from './state';\nimport { Store } from './store';\n\nexport interface Effect {\n processedActions: string[];\n processAction(store: Store, state: State, action: Action): void;\n}\n\nexport const NGSSM_EFFECT = new InjectionToken<Effect>('NGSSM_EFFECT');\n","import { InjectionToken } from '@angular/core';\nimport { State } from './state';\n\nexport interface StateInitializer {\n initializeState(state: State): State;\n}\n\nexport const NGSSM_STATE_INITIALIZER = new InjectionToken<StateInitializer>('NGSSM_STATE_INITIALIZER');\n","export enum LogLevel {\n debug = 'Debug',\n information = 'Information',\n error = 'Error'\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\nimport { LogEvent } from './log-event';\nimport { LogLevel } from './log-level';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class Logger {\n private readonly _logEvents$ = new Subject<LogEvent>();\n\n public get logEvents$(): Observable<LogEvent> {\n return this._logEvents$.asObservable();\n }\n\n public debug(message: string, payload?: any): void {\n this.log(LogLevel.debug, message, payload);\n }\n\n public information(message: string, payload?: any): void {\n this.log(LogLevel.information, message, payload);\n }\n\n public error(message: string, payload?: any): void {\n this.log(LogLevel.error, message, payload);\n }\n\n public log(level: LogLevel, message: string, payload?: any): void {\n this._logEvents$.next({\n level,\n message,\n payload\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Subject, takeUntil } from 'rxjs';\nimport { Logger } from './logger';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ConsoleAppender {\n private readonly stopEvent$ = new Subject<boolean>();\n\n constructor(private logger: Logger) {}\n\n public start(): void {\n this.logger.logEvents$.pipe(takeUntil(this.stopEvent$)).subscribe((logEvent) => {\n if (logEvent.payload) {\n console.log(`[${logEvent.level}] ${logEvent.message}`, logEvent.payload);\n } else {\n console.log(`[${logEvent.level}] ${logEvent.message}`);\n }\n });\n }\n\n public stop(): void {\n this.stopEvent$.next(true);\n }\n}\n","import { Inject, Injectable, Optional } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\nimport update from 'immutability-helper';\n\nimport { FeatureStateSpecification } from './feature-state-specification';\nimport { State } from './state';\nimport { Action } from './action';\nimport { NGSSM_REDUCER, Reducer } from './reducer';\nimport { Effect, NGSSM_EFFECT } from './effect';\nimport { NGSSM_STATE_INITIALIZER, StateInitializer } from './state-initializer';\nimport { Logger } from './logging';\n\nconst featureStateSpecifications: FeatureStateSpecification[] = [];\nexport const NgSsmFeatureState = (specification: FeatureStateSpecification) => {\n return (target: object) => {\n featureStateSpecifications.push(specification);\n };\n};\n\n@Injectable({\n providedIn: 'root'\n})\nexport class Store {\n private readonly _state$ = new BehaviorSubject<State>({});\n private readonly actionQueue: Action[] = [];\n private readonly reducersPerActionType = new Map<string, Reducer[]>();\n private readonly effectsPerActionType = new Map<string, Effect[]>();\n\n constructor(\n private logger: Logger,\n @Inject(NGSSM_REDUCER) @Optional() reducers: Reducer[],\n @Inject(NGSSM_EFFECT) @Optional() effects: Effect[],\n @Inject(NGSSM_STATE_INITIALIZER) @Optional() initializers: StateInitializer[]\n ) {\n this.logger.information('[Store] ---> state initialization...');\n let state = this._state$.getValue();\n state = featureStateSpecifications.reduce((p, c) => update(p, { [c.featureStateKey]: { $set: c.initialState } }), state);\n\n (initializers ?? []).forEach((initializer) => {\n this.logger.information('[Store] ------> calling initializer', initializer);\n state = initializer.initializeState(state);\n });\n\n this._state$.next(state);\n\n this.logger.information(`[Store] ---> initialization of ${(reducers ?? []).length} reducers...`);\n (reducers ?? []).forEach((reducer) => {\n this.logger.information('[Store] ------> initialization of ', reducer);\n reducer.processedActions.forEach((processedAction) => {\n const storeReducers: Reducer[] = this.reducersPerActionType.get(processedAction) ?? [];\n if (storeReducers.length === 0) {\n this.reducersPerActionType.set(processedAction, storeReducers);\n }\n\n storeReducers.push(reducer);\n });\n });\n\n this.logger.information(`[Store] ---> initialization of ${(effects ?? []).length} effects...`);\n (effects ?? []).forEach((effect) => {\n this.logger.information('[Store] ------> initialization of ', effect);\n effect.processedActions.forEach((processedAction) => {\n const storedEffects: Effect[] = this.effectsPerActionType.get(processedAction) ?? [];\n if (storedEffects.length === 0) {\n this.effectsPerActionType.set(processedAction, storedEffects);\n }\n\n storedEffects.push(effect);\n });\n });\n }\n\n public get state$(): Observable<State> {\n return this._state$.asObservable();\n }\n\n public dispatchAction(action: Action): void {\n this.actionQueue.push(action);\n this.logger.debug(`Action of type '${action.type}' added to the queue => ${this.actionQueue.length} pending actions`, action);\n setTimeout(() => this.processNextAction());\n }\n\n public dispatchActionType(type: string): void {\n this.dispatchAction({ type });\n }\n\n private processNextAction(): void {\n const nextAction = this.actionQueue.shift();\n if (!nextAction) {\n this.logger.debug('[processNextAction] No action to process');\n return;\n }\n\n this.logger.information(`[processNextAction] Start processing action '${nextAction.type}...`, nextAction);\n\n try {\n const reducers = this.reducersPerActionType.get(nextAction.type) ?? [];\n this.logger.debug(`[Store] ${reducers.length} reducers found to process the action ${nextAction.type}`, reducers);\n const currentState = this._state$.getValue();\n const updatedState = reducers.reduce((p, c) => c.updateState(p, nextAction), currentState);\n\n if (updatedState !== currentState) {\n this._state$.next(updatedState);\n }\n\n const effects = this.effectsPerActionType.get(nextAction.type) ?? [];\n this.logger.debug(`[Store] ${effects.length} effects found to process the action ${nextAction.type}`, effects);\n effects.forEach((effect) => {\n try {\n effect.processAction(this, updatedState, nextAction);\n } catch (error) {\n this.logger.error(`Unable to process action ${nextAction.type} by effect ${effect}`, {\n error,\n action: nextAction,\n processor: effect\n });\n }\n });\n } catch (error) {\n this.logger.error(`Error when processing action ${nextAction.type}`, {\n error,\n action: nextAction\n });\n } finally {\n this.logger.information(`[processNextAction] action '${nextAction.type} processed.`, nextAction);\n\n // Should not be useful.But, just in case.\n setTimeout(() => this.processNextAction());\n }\n }\n}\n","import { Component, OnDestroy } from '@angular/core';\nimport { map, Observable, Subject, distinctUntilChanged, takeUntil } from 'rxjs';\n\nimport { Action } from './action';\nimport { State } from './state';\nimport { Store } from './store';\n\n@Component({\n template: ''\n})\nexport class NgSsmComponent implements OnDestroy {\n private readonly _unsubscribeAll$ = new Subject<void>();\n\n constructor(protected store: Store) {}\n\n protected get unsubscribeAll$(): Observable<void> {\n return this._unsubscribeAll$.asObservable();\n }\n\n public ngOnDestroy(): void {\n this._unsubscribeAll$.next();\n this._unsubscribeAll$.complete();\n }\n\n public watch<T>(selector: (state: State) => T): Observable<T> {\n return this.store.state$.pipe(\n map((state) => selector(state)),\n distinctUntilChanged(),\n takeUntil(this.unsubscribeAll$)\n );\n }\n\n public dispatchAction(action: Action): void {\n this.store.dispatchAction(action);\n }\n\n public dispatchActionType(actionType: string): void {\n this.store.dispatchActionType(actionType);\n }\n}\n","import { BehaviorSubject } from 'rxjs';\nimport { Action } from './action';\n\nexport class StoreMock {\n public state$ = new BehaviorSubject<{ [key: string]: any }>({});\n\n constructor(initialState: { [key: string]: any }) {\n this.state$.next(initialState);\n }\n\n public dispatchAction(action: Action): void {}\n\n public dispatchActionType(type: string): void {}\n}\n","/*\n * Public API Surface of ngssm-store\n */\n\nexport * from './lib/ngssm-store.module';\n\nexport * from './lib/store';\nexport * from './lib/state';\nexport * from './lib/action';\nexport * from './lib/reducer';\nexport * from './lib/effect';\nexport * from './lib/feature-state-specification';\nexport * from './lib/ngssm-component';\nexport * from './lib/state-initializer';\nexport * from './lib/logging';\nexport * from './lib/store-mock';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.Logger","i1.Store"],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { Logger } from './logger';
2
+ import * as i0 from "@angular/core";
3
+ export declare class ConsoleAppender {
4
+ private logger;
5
+ private readonly stopEvent$;
6
+ constructor(logger: Logger);
7
+ start(): void;
8
+ stop(): void;
9
+ static ɵfac: i0.ɵɵFactoryDeclaration<ConsoleAppender, never>;
10
+ static ɵprov: i0.ɵɵInjectableDeclaration<ConsoleAppender>;
11
+ }
@@ -0,0 +1,4 @@
1
+ export * from './log-event';
2
+ export * from './log-level';
3
+ export * from './logger';
4
+ export * from './console-appender';
@@ -0,0 +1,6 @@
1
+ import { LogLevel } from './log-level';
2
+ export interface LogEvent {
3
+ level: LogLevel;
4
+ message: string;
5
+ payload?: any;
6
+ }
@@ -0,0 +1,5 @@
1
+ export declare enum LogLevel {
2
+ debug = "Debug",
3
+ information = "Information",
4
+ error = "Error"
5
+ }
@@ -0,0 +1,14 @@
1
+ import { Observable } from 'rxjs';
2
+ import { LogEvent } from './log-event';
3
+ import { LogLevel } from './log-level';
4
+ import * as i0 from "@angular/core";
5
+ export declare class Logger {
6
+ private readonly _logEvents$;
7
+ get logEvents$(): Observable<LogEvent>;
8
+ debug(message: string, payload?: any): void;
9
+ information(message: string, payload?: any): void;
10
+ error(message: string, payload?: any): void;
11
+ log(level: LogLevel, message: string, payload?: any): void;
12
+ static ɵfac: i0.ɵɵFactoryDeclaration<Logger, never>;
13
+ static ɵprov: i0.ɵɵInjectableDeclaration<Logger>;
14
+ }
package/lib/store.d.ts CHANGED
@@ -1,11 +1,11 @@
1
1
  import { Observable } from 'rxjs';
2
- import { Logger } from 'ngssm-toolkit';
3
2
  import { FeatureStateSpecification } from './feature-state-specification';
4
3
  import { State } from './state';
5
4
  import { Action } from './action';
6
5
  import { Reducer } from './reducer';
7
6
  import { Effect } from './effect';
8
7
  import { StateInitializer } from './state-initializer';
8
+ import { Logger } from './logging';
9
9
  import * as i0 from "@angular/core";
10
10
  export declare const NgSsmFeatureState: (specification: FeatureStateSpecification) => (target: object) => void;
11
11
  export declare class Store {
package/package.json CHANGED
@@ -1,17 +1,16 @@
1
1
  {
2
2
  "name": "ngssm-store",
3
- "version": "15.2.2",
3
+ "version": "15.2.4",
4
4
  "description": "NgSsm - Simple state management implementation.",
5
5
  "author": "Lion Marc",
6
6
  "license": "MIT",
7
7
  "peerDependencies": {
8
8
  "@angular/common": ">=15.0.0",
9
9
  "@angular/core": ">=15.0.0",
10
- "immutability-helper": "^3.1.1",
11
- "ngssm-toolkit": "15.2.2"
10
+ "immutability-helper": "^3.1.1"
12
11
  },
13
12
  "dependencies": {
14
- "tslib": "^2.3.0"
13
+ "tslib": "^2.5.0"
15
14
  },
16
15
  "repository": {
17
16
  "type": "git",
package/public-api.d.ts CHANGED
@@ -7,4 +7,5 @@ export * from './lib/effect';
7
7
  export * from './lib/feature-state-specification';
8
8
  export * from './lib/ngssm-component';
9
9
  export * from './lib/state-initializer';
10
+ export * from './lib/logging';
10
11
  export * from './lib/store-mock';