@alfresco/adf-core 8.1.0-14755969498 → 8.1.0-14757716769
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/feature-flags/lib/services/debug-features.service.mjs +24 -14
- package/esm2022/feature-flags/lib/services/storage-features.service.mjs +17 -12
- package/feature-flags/lib/services/debug-features.service.d.ts +7 -6
- package/feature-flags/lib/services/storage-features.service.d.ts +6 -6
- package/fesm2022/alfresco-adf-core-feature-flags.mjs +36 -18
- package/fesm2022/alfresco-adf-core-feature-flags.mjs.map +1 -1
- package/package.json +3 -3
|
@@ -15,25 +15,27 @@
|
|
|
15
15
|
* limitations under the License.
|
|
16
16
|
*/
|
|
17
17
|
import { Inject, Injectable, Optional } from '@angular/core';
|
|
18
|
-
import { BehaviorSubject } from 'rxjs';
|
|
19
|
-
import {
|
|
18
|
+
import { BehaviorSubject, combineLatest } from 'rxjs';
|
|
19
|
+
import { filter, switchMap } from 'rxjs/operators';
|
|
20
20
|
import { OverridableFeaturesServiceToken, WritableFeaturesServiceToken, WritableFeaturesServiceConfigToken } from '../interfaces/features.interface';
|
|
21
|
-
import { StorageService } from '@alfresco/adf-core';
|
|
22
21
|
import * as i0 from "@angular/core";
|
|
23
|
-
import * as i1 from "@alfresco/adf-core";
|
|
24
22
|
export class DebugFeaturesService {
|
|
25
23
|
get storageKey() {
|
|
26
24
|
return `${this.config?.storageKey || 'feature-flags'}-override`;
|
|
27
25
|
}
|
|
28
|
-
constructor(overriddenFeaturesService, writableFeaturesService,
|
|
26
|
+
constructor(overriddenFeaturesService, writableFeaturesService, config) {
|
|
29
27
|
this.overriddenFeaturesService = overriddenFeaturesService;
|
|
30
28
|
this.writableFeaturesService = writableFeaturesService;
|
|
31
|
-
this.storageService = storageService;
|
|
32
29
|
this.config = config;
|
|
33
|
-
this.
|
|
34
|
-
this.isInDebugMode$ = this.
|
|
35
|
-
this.
|
|
36
|
-
|
|
30
|
+
this.isInDebugModeSubject = new BehaviorSubject(false);
|
|
31
|
+
this.isInDebugMode$ = this.isInDebugModeSubject.asObservable();
|
|
32
|
+
this.initSubject = new BehaviorSubject(false);
|
|
33
|
+
this.init();
|
|
34
|
+
combineLatest({
|
|
35
|
+
debugMode: this.isInDebugModeSubject,
|
|
36
|
+
init: this.waitForInitializationToFinish()
|
|
37
|
+
}).subscribe(({ debugMode }) => {
|
|
38
|
+
sessionStorage.setItem(this.storageKey, JSON.stringify(debugMode));
|
|
37
39
|
});
|
|
38
40
|
}
|
|
39
41
|
isOn$(key) {
|
|
@@ -59,12 +61,20 @@ export class DebugFeaturesService {
|
|
|
59
61
|
this.writableFeaturesService.resetFlags(flags);
|
|
60
62
|
}
|
|
61
63
|
enable(on) {
|
|
62
|
-
this.
|
|
64
|
+
this.isInDebugModeSubject.next(on);
|
|
63
65
|
}
|
|
64
66
|
isEnabled$() {
|
|
65
67
|
return this.isInDebugMode$;
|
|
66
68
|
}
|
|
67
|
-
|
|
69
|
+
init() {
|
|
70
|
+
const storedOverride = JSON.parse(sessionStorage.getItem(this.storageKey) || 'false');
|
|
71
|
+
this.isInDebugModeSubject.next(storedOverride);
|
|
72
|
+
this.initSubject.next(true);
|
|
73
|
+
}
|
|
74
|
+
waitForInitializationToFinish() {
|
|
75
|
+
return this.initSubject.pipe(filter((initialized) => !!initialized));
|
|
76
|
+
}
|
|
77
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: DebugFeaturesService, deps: [{ token: OverridableFeaturesServiceToken }, { token: WritableFeaturesServiceToken }, { token: WritableFeaturesServiceConfigToken, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
68
78
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: DebugFeaturesService }); }
|
|
69
79
|
}
|
|
70
80
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: DebugFeaturesService, decorators: [{
|
|
@@ -75,10 +85,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImpor
|
|
|
75
85
|
}] }, { type: undefined, decorators: [{
|
|
76
86
|
type: Inject,
|
|
77
87
|
args: [WritableFeaturesServiceToken]
|
|
78
|
-
}] }, { type:
|
|
88
|
+
}] }, { type: undefined, decorators: [{
|
|
79
89
|
type: Optional
|
|
80
90
|
}, {
|
|
81
91
|
type: Inject,
|
|
82
92
|
args: [WritableFeaturesServiceConfigToken]
|
|
83
93
|
}] }] });
|
|
84
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
94
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVidWctZmVhdHVyZXMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9jb3JlL2ZlYXR1cmUtZmxhZ3Mvc3JjL2xpYi9zZXJ2aWNlcy9kZWJ1Zy1mZWF0dXJlcy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUVILE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsZUFBZSxFQUFjLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFJSCwrQkFBK0IsRUFDL0IsNEJBQTRCLEVBQzVCLGtDQUFrQyxFQUlyQyxNQUFNLGtDQUFrQyxDQUFDOztBQUcxQyxNQUFNLE9BQU8sb0JBQW9CO0lBSzdCLElBQUksVUFBVTtRQUNWLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLFVBQVUsSUFBSSxlQUFlLFdBQVcsQ0FBQztJQUNwRSxDQUFDO0lBRUQsWUFDcUQseUJBQTJDLEVBQzlDLHVCQUFvRSxFQUNsRCxNQUFzQztRQUZyRCw4QkFBeUIsR0FBekIseUJBQXlCLENBQWtCO1FBQzlDLDRCQUF1QixHQUF2Qix1QkFBdUIsQ0FBNkM7UUFDbEQsV0FBTSxHQUFOLE1BQU0sQ0FBZ0M7UUFYekYseUJBQW9CLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDM0QsbUJBQWMsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDMUQsZ0JBQVcsR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztRQVcvRCxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFWixhQUFhLENBQUM7WUFDVixTQUFTLEVBQUUsSUFBSSxDQUFDLG9CQUFvQjtZQUNwQyxJQUFJLEVBQUUsSUFBSSxDQUFDLDZCQUE2QixFQUFFO1NBQzdDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUU7WUFDM0IsY0FBYyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUN2RSxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxLQUFLLENBQUMsR0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQzNCLFNBQVMsQ0FBQyxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQzNILENBQUM7SUFDTixDQUFDO0lBRUQsTUFBTSxDQUFDLEdBQVc7UUFDZCxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUMzQixTQUFTLENBQUMsQ0FBQyxhQUFhLEVBQUUsRUFBRSxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUM1SCxDQUFDO0lBQ04sQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxTQUFTO1FBQ0wsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FDM0IsU0FBUyxDQUFDLENBQUMsYUFBYSxFQUFFLEVBQUUsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMseUJBQXlCLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUM1SCxDQUFDO0lBQ04sQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxVQUFVLENBQUMsS0FBYztRQUNyQixJQUFJLENBQUMsdUJBQXVCLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFRCxNQUFNLENBQUMsRUFBVztRQUNkLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELFVBQVU7UUFDTixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUM7SUFDL0IsQ0FBQztJQUVPLElBQUk7UUFDUixNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxDQUFDO1FBQ3RGLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDL0MsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVPLDZCQUE2QjtRQUNqQyxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFDekUsQ0FBQzs4R0F4RVEsb0JBQW9CLGtCQVVqQiwrQkFBK0IsYUFDL0IsNEJBQTRCLGFBQ2hCLGtDQUFrQztrSEFaakQsb0JBQW9COzsyRkFBcEIsb0JBQW9CO2tCQURoQyxVQUFVOzswQkFXRixNQUFNOzJCQUFDLCtCQUErQjs7MEJBQ3RDLE1BQU07MkJBQUMsNEJBQTRCOzswQkFDbkMsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxrQ0FBa0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDI1IEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgY29tYmluZUxhdGVzdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1xuICAgIElEZWJ1Z0ZlYXR1cmVzU2VydmljZSxcbiAgICBJRmVhdHVyZXNTZXJ2aWNlLFxuICAgIEZsYWdDaGFuZ2VzZXQsXG4gICAgT3ZlcnJpZGFibGVGZWF0dXJlc1NlcnZpY2VUb2tlbixcbiAgICBXcml0YWJsZUZlYXR1cmVzU2VydmljZVRva2VuLFxuICAgIFdyaXRhYmxlRmVhdHVyZXNTZXJ2aWNlQ29uZmlnVG9rZW4sXG4gICAgV3JpdGFibGVGZWF0dXJlc1NlcnZpY2VDb25maWcsXG4gICAgRmxhZ1NldCxcbiAgICBJV3JpdGFibGVGZWF0dXJlc1NlcnZpY2Vcbn0gZnJvbSAnLi4vaW50ZXJmYWNlcy9mZWF0dXJlcy5pbnRlcmZhY2UnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRGVidWdGZWF0dXJlc1NlcnZpY2UgaW1wbGVtZW50cyBJRGVidWdGZWF0dXJlc1NlcnZpY2Uge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgaXNJbkRlYnVnTW9kZVN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGlzSW5EZWJ1Z01vZGUkID0gdGhpcy5pc0luRGVidWdNb2RlU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGluaXRTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG5cbiAgICBnZXQgc3RvcmFnZUtleSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gYCR7dGhpcy5jb25maWc/LnN0b3JhZ2VLZXkgfHwgJ2ZlYXR1cmUtZmxhZ3MnfS1vdmVycmlkZWA7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBJbmplY3QoT3ZlcnJpZGFibGVGZWF0dXJlc1NlcnZpY2VUb2tlbikgcHJpdmF0ZSBvdmVycmlkZGVuRmVhdHVyZXNTZXJ2aWNlOiBJRmVhdHVyZXNTZXJ2aWNlLFxuICAgICAgICBASW5qZWN0KFdyaXRhYmxlRmVhdHVyZXNTZXJ2aWNlVG9rZW4pIHByaXZhdGUgd3JpdGFibGVGZWF0dXJlc1NlcnZpY2U6IElGZWF0dXJlc1NlcnZpY2UgJiBJV3JpdGFibGVGZWF0dXJlc1NlcnZpY2UsXG4gICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoV3JpdGFibGVGZWF0dXJlc1NlcnZpY2VDb25maWdUb2tlbikgcHJpdmF0ZSBjb25maWc/OiBXcml0YWJsZUZlYXR1cmVzU2VydmljZUNvbmZpZ1xuICAgICkge1xuICAgICAgICB0aGlzLmluaXQoKTtcblxuICAgICAgICBjb21iaW5lTGF0ZXN0KHtcbiAgICAgICAgICAgIGRlYnVnTW9kZTogdGhpcy5pc0luRGVidWdNb2RlU3ViamVjdCxcbiAgICAgICAgICAgIGluaXQ6IHRoaXMud2FpdEZvckluaXRpYWxpemF0aW9uVG9GaW5pc2goKVxuICAgICAgICB9KS5zdWJzY3JpYmUoKHsgZGVidWdNb2RlIH0pID0+IHtcbiAgICAgICAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0odGhpcy5zdG9yYWdlS2V5LCBKU09OLnN0cmluZ2lmeShkZWJ1Z01vZGUpKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgaXNPbiQoa2V5OiBzdHJpbmcpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNJbkRlYnVnTW9kZSQucGlwZShcbiAgICAgICAgICAgIHN3aXRjaE1hcCgoaXNJbkRlYnVnTW9kZSkgPT4gKGlzSW5EZWJ1Z01vZGUgPyB0aGlzLndyaXRhYmxlRmVhdHVyZXNTZXJ2aWNlIDogdGhpcy5vdmVycmlkZGVuRmVhdHVyZXNTZXJ2aWNlKS5pc09uJChrZXkpKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGlzT2ZmJChrZXk6IHN0cmluZyk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pc0luRGVidWdNb2RlJC5waXBlKFxuICAgICAgICAgICAgc3dpdGNoTWFwKChpc0luRGVidWdNb2RlKSA9PiAoaXNJbkRlYnVnTW9kZSA/IHRoaXMud3JpdGFibGVGZWF0dXJlc1NlcnZpY2UgOiB0aGlzLm92ZXJyaWRkZW5GZWF0dXJlc1NlcnZpY2UpLmlzT2ZmJChrZXkpKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIGZsYWdzIGFzIGFuIG9ic2VydmFibGUuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyB0aGUgb2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHRoZSBmbGFnIGNoYW5nZXNldC5cbiAgICAgKi9cbiAgICBnZXRGbGFncyQoKTogT2JzZXJ2YWJsZTxGbGFnQ2hhbmdlc2V0PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzSW5EZWJ1Z01vZGUkLnBpcGUoXG4gICAgICAgICAgICBzd2l0Y2hNYXAoKGlzSW5EZWJ1Z01vZGUpID0+IChpc0luRGVidWdNb2RlID8gdGhpcy53cml0YWJsZUZlYXR1cmVzU2VydmljZSA6IHRoaXMub3ZlcnJpZGRlbkZlYXR1cmVzU2VydmljZSkuZ2V0RmxhZ3MkKCkpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVzZXRzIHRoZSBzcGVjaWZpZWQgZmxhZ3MuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZmxhZ3MgVGhlIGZsYWdzIHRvIHJlc2V0LlxuICAgICAqL1xuICAgIHJlc2V0RmxhZ3MoZmxhZ3M6IEZsYWdTZXQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy53cml0YWJsZUZlYXR1cmVzU2VydmljZS5yZXNldEZsYWdzKGZsYWdzKTtcbiAgICB9XG5cbiAgICBlbmFibGUob246IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pc0luRGVidWdNb2RlU3ViamVjdC5uZXh0KG9uKTtcbiAgICB9XG5cbiAgICBpc0VuYWJsZWQkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pc0luRGVidWdNb2RlJDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXQoKSB7XG4gICAgICAgIGNvbnN0IHN0b3JlZE92ZXJyaWRlID0gSlNPTi5wYXJzZShzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKHRoaXMuc3RvcmFnZUtleSkgfHwgJ2ZhbHNlJyk7XG4gICAgICAgIHRoaXMuaXNJbkRlYnVnTW9kZVN1YmplY3QubmV4dChzdG9yZWRPdmVycmlkZSk7XG4gICAgICAgIHRoaXMuaW5pdFN1YmplY3QubmV4dCh0cnVlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHdhaXRGb3JJbml0aWFsaXphdGlvblRvRmluaXNoKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pbml0U3ViamVjdC5waXBlKGZpbHRlcigoaW5pdGlhbGl6ZWQpID0+ICEhaW5pdGlhbGl6ZWQpKTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -15,32 +15,34 @@
|
|
|
15
15
|
* limitations under the License.
|
|
16
16
|
*/
|
|
17
17
|
import { Inject, Injectable, Optional } from '@angular/core';
|
|
18
|
-
import { BehaviorSubject, of } from 'rxjs';
|
|
19
|
-
import {
|
|
18
|
+
import { BehaviorSubject, combineLatest, of } from 'rxjs';
|
|
19
|
+
import { filter, map } from 'rxjs/operators';
|
|
20
20
|
import { WritableFeaturesServiceConfigToken } from '../interfaces/features.interface';
|
|
21
21
|
import { FlagSetParser } from './flagset.parser';
|
|
22
|
-
import { StorageService } from '@alfresco/adf-core';
|
|
23
22
|
import * as i0 from "@angular/core";
|
|
24
|
-
import * as i1 from "@alfresco/adf-core";
|
|
25
23
|
export class StorageFeaturesService {
|
|
26
|
-
constructor(
|
|
27
|
-
this.storageService = storageService;
|
|
24
|
+
constructor(config) {
|
|
28
25
|
this.config = config;
|
|
29
26
|
this.currentFlagState = {};
|
|
30
27
|
this.flags = new BehaviorSubject({});
|
|
31
28
|
this.flags$ = this.flags.asObservable();
|
|
32
|
-
this.
|
|
29
|
+
this.initSubject = new BehaviorSubject(false);
|
|
30
|
+
combineLatest({
|
|
31
|
+
flags: this.flags,
|
|
32
|
+
init: this.waitForInitializationToFinish()
|
|
33
|
+
}).subscribe(({ flags }) => {
|
|
33
34
|
this.currentFlagState = flags;
|
|
34
|
-
|
|
35
|
+
sessionStorage.setItem(this.storageKey, JSON.stringify(FlagSetParser.serialize(flags)));
|
|
35
36
|
});
|
|
36
37
|
}
|
|
37
38
|
get storageKey() {
|
|
38
39
|
return this.config?.storageKey || 'feature-flags';
|
|
39
40
|
}
|
|
40
41
|
init() {
|
|
41
|
-
const storedFlags = JSON.parse(
|
|
42
|
+
const storedFlags = JSON.parse(sessionStorage.getItem(this.storageKey) || '{}');
|
|
42
43
|
const initialFlagChangeSet = FlagSetParser.deserialize(storedFlags);
|
|
43
44
|
this.flags.next(initialFlagChangeSet);
|
|
45
|
+
this.initSubject.next(true);
|
|
44
46
|
return of(initialFlagChangeSet);
|
|
45
47
|
}
|
|
46
48
|
isOn$(key) {
|
|
@@ -106,16 +108,19 @@ export class StorageFeaturesService {
|
|
|
106
108
|
});
|
|
107
109
|
this.flags.next(mergedFlags);
|
|
108
110
|
}
|
|
109
|
-
|
|
111
|
+
waitForInitializationToFinish() {
|
|
112
|
+
return this.initSubject.pipe(filter((initialized) => !!initialized));
|
|
113
|
+
}
|
|
114
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: StorageFeaturesService, deps: [{ token: WritableFeaturesServiceConfigToken, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
110
115
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: StorageFeaturesService, providedIn: 'root' }); }
|
|
111
116
|
}
|
|
112
117
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: StorageFeaturesService, decorators: [{
|
|
113
118
|
type: Injectable,
|
|
114
119
|
args: [{ providedIn: 'root' }]
|
|
115
|
-
}], ctorParameters: () => [{ type:
|
|
120
|
+
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
116
121
|
type: Optional
|
|
117
122
|
}, {
|
|
118
123
|
type: Inject,
|
|
119
124
|
args: [WritableFeaturesServiceConfigToken]
|
|
120
125
|
}] }] });
|
|
121
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS1mZWF0dXJlcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGliL2NvcmUvZmVhdHVyZS1mbGFncy9zcmMvbGliL3NlcnZpY2VzL3N0b3JhZ2UtZmVhdHVyZXMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFFSCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFFLGVBQWUsRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkQsT0FBTyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBS0gsa0NBQWtDLEVBR3JDLE1BQU0sa0NBQWtDLENBQUM7QUFDMUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7O0FBR3BELE1BQU0sT0FBTyxzQkFBc0I7SUFLL0IsWUFDWSxjQUE4QixFQUMwQixNQUFzQztRQUQ5RixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDMEIsV0FBTSxHQUFOLE1BQU0sQ0FBZ0M7UUFObEcscUJBQWdCLEdBQTBCLEVBQUUsQ0FBQztRQUM3QyxVQUFLLEdBQUcsSUFBSSxlQUFlLENBQXdCLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZELFdBQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBTXZDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ3pDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7WUFDOUIsSUFBSSxDQUFDLGNB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REFPUCxrQ0FBa0M7a0hBUGpELHNCQUFzQixjQURULE1BQU07OzJGQUNuQixzQkFBc0I7a0JBRGxDLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOzswQkFRekIsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxrQ0FBa0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDI1IEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCwgc2tpcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7XG4gICAgRmxhZ0NoYW5nZXNldCxcbiAgICBJRmVhdHVyZXNTZXJ2aWNlLFxuICAgIEZsYWdTZXQsXG4gICAgSVdyaXRhYmxlRmVhdHVyZXNTZXJ2aWNlLFxuICAgIFdyaXRhYmxlRmVhdHVyZXNTZXJ2aWNlQ29uZmlnVG9rZW4sXG4gICAgV3JpdGFibGVGbGFnQ2hhbmdlc2V0LFxuICAgIFdyaXRhYmxlRmVhdHVyZXNTZXJ2aWNlQ29uZmlnXG59IGZyb20gJy4uL2ludGVyZmFjZXMvZmVhdHVyZXMuaW50ZXJmYWNlJztcbmltcG9ydCB7IEZsYWdTZXRQYXJzZXIgfSBmcm9tICcuL2ZsYWdzZXQucGFyc2VyJztcbmltcG9ydCB7IFN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnQGFsZnJlc2NvL2FkZi1jb3JlJztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBTdG9yYWdlRmVhdHVyZXNTZXJ2aWNlIGltcGxlbWVudHMgSUZlYXR1cmVzU2VydmljZSwgSVdyaXRhYmxlRmVhdHVyZXNTZXJ2aWNlIHtcbiAgICBwcml2YXRlIGN1cnJlbnRGbGFnU3RhdGU6IFdyaXRhYmxlRmxhZ0NoYW5nZXNldCA9IHt9O1xuICAgIHByaXZhdGUgZmxhZ3MgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFdyaXRhYmxlRmxhZ0NoYW5nZXNldD4oe30pO1xuICAgIHByaXZhdGUgZmxhZ3MkID0gdGhpcy5mbGFncy5hc09ic2VydmFibGUoKTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHN0b3JhZ2VTZXJ2aWNlOiBTdG9yYWdlU2VydmljZSxcbiAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChXcml0YWJsZUZlYXR1cmVzU2VydmljZUNvbmZpZ1Rva2VuKSBwcml2YXRlIGNvbmZpZz86IFdyaXRhYmxlRmVhdHVyZXNTZXJ2aWNlQ29uZmlnXG4gICAgKSB7XG4gICAgICAgIHRoaXMuZmxhZ3MucGlwZShza2lwKDEpKS5zdWJzY3JpYmUoKGZsYWdzKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRGbGFnU3RhdGUgPSBmbGFncztcbiAgICAgICAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2Uuc2V0SXRlbSh0aGlzLnN0b3JhZ2VLZXksIEpTT04uc3RyaW5naWZ5KEZsYWdTZXRQYXJzZXIuc2VyaWFsaXplKGZsYWdzKSkpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBnZXQgc3RvcmFnZUtleSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5jb25maWc/LnN0b3JhZ2VLZXkgfHwgJ2ZlYXR1cmUtZmxhZ3MnO1xuICAgIH1cblxuICAgIGluaXQoKTogT2JzZXJ2YWJsZTxXcml0YWJsZUZsYWdDaGFuZ2VzZXQ+IHtcbiAgICAgICAgY29uc3Qgc3RvcmVkRmxhZ3MgPSBKU09OLnBhcnNlKHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0SXRlbSh0aGlzLnN0b3JhZ2VLZXkpIHx8ICd7fScpO1xuICAgICAgICBjb25zdCBpbml0aWFsRmxhZ0NoYW5nZVNldCA9IEZsYWdTZXRQYXJzZXIuZGVzZXJpYWxpemUoc3RvcmVkRmxhZ3MpO1xuICAgICAgICB0aGlzLmZsYWdzLm5leHQoaW5pdGlhbEZsYWdDaGFuZ2VTZXQpO1xuICAgICAgICByZXR1cm4gb2YoaW5pdGlhbEZsYWdDaGFuZ2VTZXQpO1xuICAgIH1cblxuICAgIGlzT24kKGtleTogc3RyaW5nKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmZsYWdzJC5waXBlKG1hcCgoZmxhZ3MpID0+ICEhZmxhZ3Nba2V5XT8uY3VycmVudCkpO1xuICAgIH1cblxuICAgIGlzT2ZmJChrZXk6IHN0cmluZyk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5mbGFncyQucGlwZShtYXAoKGZsYWdzKSA9PiAhZmxhZ3Nba2V5XT8uY3VycmVudCkpO1xuICAgIH1cblxuICAgIGdldEZsYWdzJCgpOiBPYnNlcnZhYmxlPFdyaXRhYmxlRmxhZ0NoYW5nZXNldD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5mbGFncyQ7XG4gICAgfVxuXG4gICAgc2V0RmxhZyhrZXk6IHN0cmluZywgdmFsdWU6IGFueSk6IHZvaWQge1xuICAgICAgICBsZXQgZmljdGl2ZSA9IHt9O1xuICAgICAgICBpZiAoIXRoaXMuY3VycmVudEZsYWdTdGF0ZVtrZXldKSB7XG4gICAgICAgICAgICBmaWN0aXZlID0geyBmaWN0aXZlOiB0cnVlIH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmaWN0aXZlID0gdGhpcy5jdXJyZW50RmxhZ1N0YXRlW2tleV0/LmZpY3RpdmUgPyB7IGZpY3RpdmU6IHRydWUgfSA6IHt9O1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5mbGFncy5uZXh0KHtcbiAgICAgICAgICAgIC4uLnRoaXMuY3VycmVudEZsYWdTdGF0ZSxcbiAgICAgICAgICAgIFtrZXldOiB7XG4gICAgICAgICAgICAgICAgY3VycmVudDogdmFsdWUsXG4gICAgICAgICAgICAgICAgcHJldmlvdXM6IHRoaXMuY3VycmVudEZsYWdTdGF0ZVtrZXldPy5jdXJyZW50ID8/IG51bGwsXG4gICAgICAgICAgICAgICAgLi4uZmljdGl2ZVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICByZW1vdmVGbGFnKGtleTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICAgICAgY29uc3QgeyBba2V5XTogXywgLi4uZmxhZ3MgfSA9IHRoaXMuY3VycmVudEZsYWdTdGF0ZTtcbiAgICAgICAgdGhpcy5mbGFncy5uZXh0KGZsYWdzKTtcbiAgICB9XG5cbiAgICByZXNldEZsYWdzKGZsYWdzOiBGbGFnU2V0KTogdm9pZCB7XG4gICAgICAgIHRoaXMuZmxhZ3MubmV4dChcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKGZsYWdzKS5yZWR1Y2UoXG4gICAgICAgICAgICAgICAgKGFjYywga2V5KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAuLi5hY2MsXG4gICAgICAgICAgICAgICAgICAgIFtrZXldOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50OiBmbGFnc1trZXldLFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlvdXM6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWN0aXZlOiB0cnVlXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICB7fVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIG1lcmdlRmxhZ3MoZmxhZ3M6IEZsYWdDaGFuZ2VzZXQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgbWVyZ2VkRmxhZ3M6IFdyaXRhYmxlRmxhZ0NoYW5nZXNldCA9IE9iamVjdC5rZXlzKGZsYWdzKS5yZWR1Y2UoKGFjYywga2V5KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50ID0gdGhpcy5jdXJyZW50RmxhZ1N0YXRlW2tleV0/LmN1cnJlbnQ7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIC4uLmFjYyxcbiAgICAgICAgICAgICAgICBba2V5XToge1xuICAgICAgICAgICAgICAgICAgICBjdXJyZW50OiBjdXJyZW50ID8/IGZsYWdzW2tleV0uY3VycmVudCxcbiAgICAgICAgICAgICAgICAgICAgcHJldmlvdXM6IGN1cnJlbnQgPz8gbnVsbFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sIHt9KTtcblxuICAgICAgICBPYmplY3Qua2V5cyh0aGlzLmN1cnJlbnRGbGFnU3RhdGUpXG4gICAgICAgICAgICAuZmlsdGVyKChrZXkpID0+ICFmbGFnc1trZXldKVxuICAgICAgICAgICAgLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICAgICAgICAgIG1lcmdlZEZsYWdzW2tleV0gPSB7XG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnQ6IHRoaXMuY3VycmVudEZsYWdTdGF0ZVtrZXldLmN1cnJlbnQsXG4gICAgICAgICAgICAgICAgICAgIHByZXZpb3VzOiB0aGlzLmN1cnJlbnRGbGFnU3RhdGVba2V5XS5wcmV2aW91cyxcbiAgICAgICAgICAgICAgICAgICAgZmljdGl2ZTogdHJ1ZVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmZsYWdzLm5leHQobWVyZ2VkRmxhZ3MpO1xuICAgIH1cbn1cbiJdfQ==
|
|
126
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS1mZWF0dXJlcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGliL2NvcmUvZmVhdHVyZS1mbGFncy9zcmMvbGliL3NlcnZpY2VzL3N0b3JhZ2UtZmVhdHVyZXMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFFSCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUtILGtDQUFrQyxFQUdyQyxNQUFNLGtDQUFrQyxDQUFDO0FBQzFDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7QUFHakQsTUFBTSxPQUFPLHNCQUFzQjtJQU0vQixZQUE0RSxNQUFzQztRQUF0QyxXQUFNLEdBQU4sTUFBTSxDQUFnQztRQUwxRyxxQkFBZ0IsR0FBMEIsRUFBRSxDQUFDO1FBQ3BDLFVBQUssR0FBRyxJQUFJLGVBQWUsQ0FBd0IsRUFBRSxDQUFDLENBQUM7UUFDdkQsV0FBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDbkMsZ0JBQVcsR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUcvRCxhQUFhLENBQUM7WUFDVixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7WUFDakIsSUFBSSxFQUFFLElBQUksQ0FBQyw2QkFBNkIsRUFBRTtTQUM3QyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7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QUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRU8sNkJBQTZCO1FBQ2pDLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUN6RSxDQUFDOzhHQTNHUSxzQkFBc0Isa0JBTUMsa0NBQWtDO2tIQU56RCxzQkFBc0IsY0FEVCxNQUFNOzsyRkFDbkIsc0JBQXNCO2tCQURsQyxVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRTs7MEJBT2pCLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsa0NBQWtDIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IMKpIDIwMDUtMjAyNSBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7XG4gICAgRmxhZ0NoYW5nZXNldCxcbiAgICBJRmVhdHVyZXNTZXJ2aWNlLFxuICAgIEZsYWdTZXQsXG4gICAgSVdyaXRhYmxlRmVhdHVyZXNTZXJ2aWNlLFxuICAgIFdyaXRhYmxlRmVhdHVyZXNTZXJ2aWNlQ29uZmlnVG9rZW4sXG4gICAgV3JpdGFibGVGbGFnQ2hhbmdlc2V0LFxuICAgIFdyaXRhYmxlRmVhdHVyZXNTZXJ2aWNlQ29uZmlnXG59IGZyb20gJy4uL2ludGVyZmFjZXMvZmVhdHVyZXMuaW50ZXJmYWNlJztcbmltcG9ydCB7IEZsYWdTZXRQYXJzZXIgfSBmcm9tICcuL2ZsYWdzZXQucGFyc2VyJztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBTdG9yYWdlRmVhdHVyZXNTZXJ2aWNlIGltcGxlbWVudHMgSUZlYXR1cmVzU2VydmljZSwgSVdyaXRhYmxlRmVhdHVyZXNTZXJ2aWNlIHtcbiAgICBwcml2YXRlIGN1cnJlbnRGbGFnU3RhdGU6IFdyaXRhYmxlRmxhZ0NoYW5nZXNldCA9IHt9O1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZmxhZ3MgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFdyaXRhYmxlRmxhZ0NoYW5nZXNldD4oe30pO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZmxhZ3MkID0gdGhpcy5mbGFncy5hc09ic2VydmFibGUoKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGluaXRTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG5cbiAgICBjb25zdHJ1Y3RvcihAT3B0aW9uYWwoKSBASW5qZWN0KFdyaXRhYmxlRmVhdHVyZXNTZXJ2aWNlQ29uZmlnVG9rZW4pIHByaXZhdGUgY29uZmlnPzogV3JpdGFibGVGZWF0dXJlc1NlcnZpY2VDb25maWcpIHtcbiAgICAgICAgY29tYmluZUxhdGVzdCh7XG4gICAgICAgICAgICBmbGFnczogdGhpcy5mbGFncyxcbiAgICAgICAgICAgIGluaXQ6IHRoaXMud2FpdEZvckluaXRpYWxpemF0aW9uVG9GaW5pc2goKVxuICAgICAgICB9KS5zdWJzY3JpYmUoKHsgZmxhZ3MgfSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50RmxhZ1N0YXRlID0gZmxhZ3M7XG4gICAgICAgICAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKHRoaXMuc3RvcmFnZUtleSwgSlNPTi5zdHJpbmdpZnkoRmxhZ1NldFBhcnNlci5zZXJpYWxpemUoZmxhZ3MpKSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGdldCBzdG9yYWdlS2V5KCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbmZpZz8uc3RvcmFnZUtleSB8fCAnZmVhdHVyZS1mbGFncyc7XG4gICAgfVxuXG4gICAgaW5pdCgpOiBPYnNlcnZhYmxlPFdyaXRhYmxlRmxhZ0NoYW5nZXNldD4ge1xuICAgICAgICBjb25zdCBzdG9yZWRGbGFncyA9IEpTT04ucGFyc2Uoc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSh0aGlzLnN0b3JhZ2VLZXkpIHx8ICd7fScpO1xuICAgICAgICBjb25zdCBpbml0aWFsRmxhZ0NoYW5nZVNldCA9IEZsYWdTZXRQYXJzZXIuZGVzZXJpYWxpemUoc3RvcmVkRmxhZ3MpO1xuICAgICAgICB0aGlzLmZsYWdzLm5leHQoaW5pdGlhbEZsYWdDaGFuZ2VTZXQpO1xuICAgICAgICB0aGlzLmluaXRTdWJqZWN0Lm5leHQodHJ1ZSk7XG4gICAgICAgIHJldHVybiBvZihpbml0aWFsRmxhZ0NoYW5nZVNldCk7XG4gICAgfVxuXG4gICAgaXNPbiQoa2V5OiBzdHJpbmcpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmxhZ3MkLnBpcGUobWFwKChmbGFncykgPT4gISFmbGFnc1trZXldPy5jdXJyZW50KSk7XG4gICAgfVxuXG4gICAgaXNPZmYkKGtleTogc3RyaW5nKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmZsYWdzJC5waXBlKG1hcCgoZmxhZ3MpID0+ICFmbGFnc1trZXldPy5jdXJyZW50KSk7XG4gICAgfVxuXG4gICAgZ2V0RmxhZ3MkKCk6IE9ic2VydmFibGU8V3JpdGFibGVGbGFnQ2hhbmdlc2V0PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmZsYWdzJDtcbiAgICB9XG5cbiAgICBzZXRGbGFnKGtleTogc3RyaW5nLCB2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgICAgIGxldCBmaWN0aXZlID0ge307XG4gICAgICAgIGlmICghdGhpcy5jdXJyZW50RmxhZ1N0YXRlW2tleV0pIHtcbiAgICAgICAgICAgIGZpY3RpdmUgPSB7IGZpY3RpdmU6IHRydWUgfTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZpY3RpdmUgPSB0aGlzLmN1cnJlbnRGbGFnU3RhdGVba2V5XT8uZmljdGl2ZSA/IHsgZmljdGl2ZTogdHJ1ZSB9IDoge307XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmZsYWdzLm5leHQoe1xuICAgICAgICAgICAgLi4udGhpcy5jdXJyZW50RmxhZ1N0YXRlLFxuICAgICAgICAgICAgW2tleV06IHtcbiAgICAgICAgICAgICAgICBjdXJyZW50OiB2YWx1ZSxcbiAgICAgICAgICAgICAgICBwcmV2aW91czogdGhpcy5jdXJyZW50RmxhZ1N0YXRlW2tleV0/LmN1cnJlbnQgPz8gbnVsbCxcbiAgICAgICAgICAgICAgICAuLi5maWN0aXZlXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHJlbW92ZUZsYWcoa2V5OiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgICAgICBjb25zdCB7IFtrZXldOiBfLCAuLi5mbGFncyB9ID0gdGhpcy5jdXJyZW50RmxhZ1N0YXRlO1xuICAgICAgICB0aGlzLmZsYWdzLm5leHQoZmxhZ3MpO1xuICAgIH1cblxuICAgIHJlc2V0RmxhZ3MoZmxhZ3M6IEZsYWdTZXQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5mbGFncy5uZXh0KFxuICAgICAgICAgICAgT2JqZWN0LmtleXMoZmxhZ3MpLnJlZHVjZShcbiAgICAgICAgICAgICAgICAoYWNjLCBrZXkpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgIC4uLmFjYyxcbiAgICAgICAgICAgICAgICAgICAgW2tleV06IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnQ6IGZsYWdzW2tleV0sXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmV2aW91czogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpY3RpdmU6IHRydWVcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIHt9XG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgbWVyZ2VGbGFncyhmbGFnczogRmxhZ0NoYW5nZXNldCk6IHZvaWQge1xuICAgICAgICBjb25zdCBtZXJnZWRGbGFnczogV3JpdGFibGVGbGFnQ2hhbmdlc2V0ID0gT2JqZWN0LmtleXMoZmxhZ3MpLnJlZHVjZSgoYWNjLCBrZXkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnQgPSB0aGlzLmN1cnJlbnRGbGFnU3RhdGVba2V5XT8uY3VycmVudDtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgLi4uYWNjLFxuICAgICAgICAgICAgICAgIFtrZXldOiB7XG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnQ6IGN1cnJlbnQgPz8gZmxhZ3Nba2V5XS5jdXJyZW50LFxuICAgICAgICAgICAgICAgICAgICBwcmV2aW91czogY3VycmVudCA/PyBudWxsXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSwge30pO1xuXG4gICAgICAgIE9iamVjdC5rZXlzKHRoaXMuY3VycmVudEZsYWdTdGF0ZSlcbiAgICAgICAgICAgIC5maWx0ZXIoKGtleSkgPT4gIWZsYWdzW2tleV0pXG4gICAgICAgICAgICAuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgICAgICAgICAgbWVyZ2VkRmxhZ3Nba2V5XSA9IHtcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudDogdGhpcy5jdXJyZW50RmxhZ1N0YXRlW2tleV0uY3VycmVudCxcbiAgICAgICAgICAgICAgICAgICAgcHJldmlvdXM6IHRoaXMuY3VycmVudEZsYWdTdGF0ZVtrZXldLnByZXZpb3VzLFxuICAgICAgICAgICAgICAgICAgICBmaWN0aXZlOiB0cnVlXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuZmxhZ3MubmV4dChtZXJnZWRGbGFncyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB3YWl0Rm9ySW5pdGlhbGl6YXRpb25Ub0ZpbmlzaCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaW5pdFN1YmplY3QucGlwZShmaWx0ZXIoKGluaXRpYWxpemVkKSA9PiAhIWluaXRpYWxpemVkKSk7XG4gICAgfVxufVxuIl19
|
|
@@ -1,16 +1,15 @@
|
|
|
1
1
|
import { Observable } from 'rxjs';
|
|
2
2
|
import { IDebugFeaturesService, IFeaturesService, FlagChangeset, WritableFeaturesServiceConfig, FlagSet, IWritableFeaturesService } from '../interfaces/features.interface';
|
|
3
|
-
import { StorageService } from '@alfresco/adf-core';
|
|
4
3
|
import * as i0 from "@angular/core";
|
|
5
4
|
export declare class DebugFeaturesService implements IDebugFeaturesService {
|
|
6
5
|
private overriddenFeaturesService;
|
|
7
6
|
private writableFeaturesService;
|
|
8
|
-
private storageService;
|
|
9
7
|
private config?;
|
|
10
|
-
private
|
|
11
|
-
private isInDebugMode$;
|
|
8
|
+
private readonly isInDebugModeSubject;
|
|
9
|
+
private readonly isInDebugMode$;
|
|
10
|
+
private readonly initSubject;
|
|
12
11
|
get storageKey(): string;
|
|
13
|
-
constructor(overriddenFeaturesService: IFeaturesService, writableFeaturesService: IFeaturesService & IWritableFeaturesService,
|
|
12
|
+
constructor(overriddenFeaturesService: IFeaturesService, writableFeaturesService: IFeaturesService & IWritableFeaturesService, config?: WritableFeaturesServiceConfig);
|
|
14
13
|
isOn$(key: string): Observable<boolean>;
|
|
15
14
|
isOff$(key: string): Observable<boolean>;
|
|
16
15
|
/**
|
|
@@ -27,6 +26,8 @@ export declare class DebugFeaturesService implements IDebugFeaturesService {
|
|
|
27
26
|
resetFlags(flags: FlagSet): void;
|
|
28
27
|
enable(on: boolean): void;
|
|
29
28
|
isEnabled$(): Observable<boolean>;
|
|
30
|
-
|
|
29
|
+
private init;
|
|
30
|
+
private waitForInitializationToFinish;
|
|
31
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<DebugFeaturesService, [null, null, { optional: true; }]>;
|
|
31
32
|
static ɵprov: i0.ɵɵInjectableDeclaration<DebugFeaturesService>;
|
|
32
33
|
}
|
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
import { Observable } from 'rxjs';
|
|
2
2
|
import { FlagChangeset, IFeaturesService, FlagSet, IWritableFeaturesService, WritableFlagChangeset, WritableFeaturesServiceConfig } from '../interfaces/features.interface';
|
|
3
|
-
import { StorageService } from '@alfresco/adf-core';
|
|
4
3
|
import * as i0 from "@angular/core";
|
|
5
4
|
export declare class StorageFeaturesService implements IFeaturesService, IWritableFeaturesService {
|
|
6
|
-
private storageService;
|
|
7
5
|
private config?;
|
|
8
6
|
private currentFlagState;
|
|
9
|
-
private flags;
|
|
10
|
-
private flags$;
|
|
11
|
-
|
|
7
|
+
private readonly flags;
|
|
8
|
+
private readonly flags$;
|
|
9
|
+
private readonly initSubject;
|
|
10
|
+
constructor(config?: WritableFeaturesServiceConfig);
|
|
12
11
|
get storageKey(): string;
|
|
13
12
|
init(): Observable<WritableFlagChangeset>;
|
|
14
13
|
isOn$(key: string): Observable<boolean>;
|
|
@@ -18,6 +17,7 @@ export declare class StorageFeaturesService implements IFeaturesService, IWritab
|
|
|
18
17
|
removeFlag(key: string): void;
|
|
19
18
|
resetFlags(flags: FlagSet): void;
|
|
20
19
|
mergeFlags(flags: FlagChangeset): void;
|
|
21
|
-
|
|
20
|
+
private waitForInitializationToFinish;
|
|
21
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<StorageFeaturesService, [{ optional: true; }]>;
|
|
22
22
|
static ɵprov: i0.ɵɵInjectableDeclaration<StorageFeaturesService>;
|
|
23
23
|
}
|
|
@@ -3,7 +3,7 @@ import { InjectionToken, Input, Inject, ChangeDetectionStrategy, ViewEncapsulati
|
|
|
3
3
|
import * as i1 from '@angular/common';
|
|
4
4
|
import { CommonModule, DOCUMENT } from '@angular/common';
|
|
5
5
|
import { BehaviorSubject, combineLatest, of } from 'rxjs';
|
|
6
|
-
import { tap, map, debounceTime, take,
|
|
6
|
+
import { tap, map, debounceTime, take, filter, switchMap } from 'rxjs/operators';
|
|
7
7
|
import * as i3 from '@angular/material/table';
|
|
8
8
|
import { MatTableModule } from '@angular/material/table';
|
|
9
9
|
import * as i4 from '@angular/material/slide-toggle';
|
|
@@ -24,7 +24,6 @@ import { MatDialogModule } from '@angular/material/dialog';
|
|
|
24
24
|
import * as i11 from '@ngx-translate/core';
|
|
25
25
|
import { TranslateModule } from '@ngx-translate/core';
|
|
26
26
|
import * as i9 from '@angular/material/form-field';
|
|
27
|
-
import * as i1$1 from '@alfresco/adf-core';
|
|
28
27
|
|
|
29
28
|
/*!
|
|
30
29
|
* @license
|
|
@@ -580,24 +579,28 @@ class FlagSetParser {
|
|
|
580
579
|
* limitations under the License.
|
|
581
580
|
*/
|
|
582
581
|
class StorageFeaturesService {
|
|
583
|
-
constructor(
|
|
584
|
-
this.storageService = storageService;
|
|
582
|
+
constructor(config) {
|
|
585
583
|
this.config = config;
|
|
586
584
|
this.currentFlagState = {};
|
|
587
585
|
this.flags = new BehaviorSubject({});
|
|
588
586
|
this.flags$ = this.flags.asObservable();
|
|
589
|
-
this.
|
|
587
|
+
this.initSubject = new BehaviorSubject(false);
|
|
588
|
+
combineLatest({
|
|
589
|
+
flags: this.flags,
|
|
590
|
+
init: this.waitForInitializationToFinish()
|
|
591
|
+
}).subscribe(({ flags }) => {
|
|
590
592
|
this.currentFlagState = flags;
|
|
591
|
-
|
|
593
|
+
sessionStorage.setItem(this.storageKey, JSON.stringify(FlagSetParser.serialize(flags)));
|
|
592
594
|
});
|
|
593
595
|
}
|
|
594
596
|
get storageKey() {
|
|
595
597
|
return this.config?.storageKey || 'feature-flags';
|
|
596
598
|
}
|
|
597
599
|
init() {
|
|
598
|
-
const storedFlags = JSON.parse(
|
|
600
|
+
const storedFlags = JSON.parse(sessionStorage.getItem(this.storageKey) || '{}');
|
|
599
601
|
const initialFlagChangeSet = FlagSetParser.deserialize(storedFlags);
|
|
600
602
|
this.flags.next(initialFlagChangeSet);
|
|
603
|
+
this.initSubject.next(true);
|
|
601
604
|
return of(initialFlagChangeSet);
|
|
602
605
|
}
|
|
603
606
|
isOn$(key) {
|
|
@@ -663,13 +666,16 @@ class StorageFeaturesService {
|
|
|
663
666
|
});
|
|
664
667
|
this.flags.next(mergedFlags);
|
|
665
668
|
}
|
|
666
|
-
|
|
669
|
+
waitForInitializationToFinish() {
|
|
670
|
+
return this.initSubject.pipe(filter((initialized) => !!initialized));
|
|
671
|
+
}
|
|
672
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: StorageFeaturesService, deps: [{ token: WritableFeaturesServiceConfigToken, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
667
673
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: StorageFeaturesService, providedIn: 'root' }); }
|
|
668
674
|
}
|
|
669
675
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: StorageFeaturesService, decorators: [{
|
|
670
676
|
type: Injectable,
|
|
671
677
|
args: [{ providedIn: 'root' }]
|
|
672
|
-
}], ctorParameters: () => [{ type:
|
|
678
|
+
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
673
679
|
type: Optional
|
|
674
680
|
}, {
|
|
675
681
|
type: Inject,
|
|
@@ -696,15 +702,19 @@ class DebugFeaturesService {
|
|
|
696
702
|
get storageKey() {
|
|
697
703
|
return `${this.config?.storageKey || 'feature-flags'}-override`;
|
|
698
704
|
}
|
|
699
|
-
constructor(overriddenFeaturesService, writableFeaturesService,
|
|
705
|
+
constructor(overriddenFeaturesService, writableFeaturesService, config) {
|
|
700
706
|
this.overriddenFeaturesService = overriddenFeaturesService;
|
|
701
707
|
this.writableFeaturesService = writableFeaturesService;
|
|
702
|
-
this.storageService = storageService;
|
|
703
708
|
this.config = config;
|
|
704
|
-
this.
|
|
705
|
-
this.isInDebugMode$ = this.
|
|
706
|
-
this.
|
|
707
|
-
|
|
709
|
+
this.isInDebugModeSubject = new BehaviorSubject(false);
|
|
710
|
+
this.isInDebugMode$ = this.isInDebugModeSubject.asObservable();
|
|
711
|
+
this.initSubject = new BehaviorSubject(false);
|
|
712
|
+
this.init();
|
|
713
|
+
combineLatest({
|
|
714
|
+
debugMode: this.isInDebugModeSubject,
|
|
715
|
+
init: this.waitForInitializationToFinish()
|
|
716
|
+
}).subscribe(({ debugMode }) => {
|
|
717
|
+
sessionStorage.setItem(this.storageKey, JSON.stringify(debugMode));
|
|
708
718
|
});
|
|
709
719
|
}
|
|
710
720
|
isOn$(key) {
|
|
@@ -730,12 +740,20 @@ class DebugFeaturesService {
|
|
|
730
740
|
this.writableFeaturesService.resetFlags(flags);
|
|
731
741
|
}
|
|
732
742
|
enable(on) {
|
|
733
|
-
this.
|
|
743
|
+
this.isInDebugModeSubject.next(on);
|
|
734
744
|
}
|
|
735
745
|
isEnabled$() {
|
|
736
746
|
return this.isInDebugMode$;
|
|
737
747
|
}
|
|
738
|
-
|
|
748
|
+
init() {
|
|
749
|
+
const storedOverride = JSON.parse(sessionStorage.getItem(this.storageKey) || 'false');
|
|
750
|
+
this.isInDebugModeSubject.next(storedOverride);
|
|
751
|
+
this.initSubject.next(true);
|
|
752
|
+
}
|
|
753
|
+
waitForInitializationToFinish() {
|
|
754
|
+
return this.initSubject.pipe(filter((initialized) => !!initialized));
|
|
755
|
+
}
|
|
756
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: DebugFeaturesService, deps: [{ token: OverridableFeaturesServiceToken }, { token: WritableFeaturesServiceToken }, { token: WritableFeaturesServiceConfigToken, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
739
757
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: DebugFeaturesService }); }
|
|
740
758
|
}
|
|
741
759
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: DebugFeaturesService, decorators: [{
|
|
@@ -746,7 +764,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImpor
|
|
|
746
764
|
}] }, { type: undefined, decorators: [{
|
|
747
765
|
type: Inject,
|
|
748
766
|
args: [WritableFeaturesServiceToken]
|
|
749
|
-
}] }, { type:
|
|
767
|
+
}] }, { type: undefined, decorators: [{
|
|
750
768
|
type: Optional
|
|
751
769
|
}, {
|
|
752
770
|
type: Inject,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"alfresco-adf-core-feature-flags.mjs","sources":["../../../../lib/core/feature-flags/src/lib/interfaces/features.interface.ts","../../../../lib/core/feature-flags/src/lib/components/feature-override-indicator.component.ts","../../../../lib/core/feature-flags/src/lib/components/flags/flags.component.ts","../../../../lib/core/feature-flags/src/lib/components/flags/flags.component.html","../../../../lib/core/feature-flags/src/lib/components/feature-flags-wrapper.ts","../../../../lib/core/feature-flags/src/lib/directives/features.directive.ts","../../../../lib/core/feature-flags/src/lib/directives/not-features.directive.ts","../../../../lib/core/feature-flags/src/lib/guards/is-feature-on.guard.ts","../../../../lib/core/feature-flags/src/lib/guards/is-feature-off.guard.ts","../../../../lib/core/feature-flags/src/lib/guards/is-flags-override-on.guard.ts","../../../../lib/core/feature-flags/src/lib/services/dummy-features.service.ts","../../../../lib/core/feature-flags/src/lib/providers/dummy-feature-flags.provider.ts","../../../../lib/core/feature-flags/src/lib/services/flagset.parser.ts","../../../../lib/core/feature-flags/src/lib/services/storage-features.service.ts","../../../../lib/core/feature-flags/src/lib/services/debug-features.service.ts","../../../../lib/core/feature-flags/src/lib/services/qa-features.helper.ts","../../../../lib/core/feature-flags/src/lib/providers/debug-feature-flags.provider.ts","../../../../lib/core/feature-flags/src/lib/mocks/features-service-mock.factory.ts","../../../../lib/core/feature-flags/src/index.ts","../../../../lib/core/feature-flags/src/alfresco-adf-core-feature-flags.ts"],"sourcesContent":["/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { InjectionToken } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nexport const FeaturesServiceConfigToken = new InjectionToken<any>('FeatureServiceConfigToken');\nexport const FeaturesServiceToken = new InjectionToken<IFeaturesService>('FeaturesService');\nexport const WritableFeaturesServiceToken = new InjectionToken<IFeaturesService & IWritableFeaturesService>('WritableFeaturesServiceToken');\nexport const WritableFeaturesServiceConfigToken = new InjectionToken<WritableFeaturesServiceConfig>('WritableFeaturesServiceConfigToken');\nexport const OverridableFeaturesServiceToken = new InjectionToken<IFeaturesService>('OverridableFeaturesServiceToken');\nexport const FlagsOverrideToken = new InjectionToken<boolean>('FlagsOverrideToken');\n\nexport interface WritableFeaturesServiceConfig {\n storageKey?: string;\n}\nexport interface QaFeaturesHelperConfig {\n helperExposeKeyOnDocument?: string;\n}\n\nexport interface FlagChangeset {\n [key: string]: {\n current: any;\n previous: any;\n };\n}\n\nexport interface WritableFlagChangeset {\n [key: string]: {\n current: any;\n previous: any;\n fictive?: boolean;\n };\n}\n\nexport interface FlagSet {\n [key: string]: any;\n}\n\nexport interface IFeaturesService<T = FlagChangeset> {\n init(): Observable<T>;\n isOn$(key: string): Observable<boolean>;\n isOff$(key: string): Observable<boolean>;\n getFlags$(): Observable<T>;\n}\n\nexport interface IWritableFeaturesService {\n setFlag(key: string, value: any): void;\n resetFlags(flags: FlagSet): void;\n removeFlag(key: string): void;\n mergeFlags(flags: FlagChangeset): void;\n}\n\nexport type IDebugFeaturesService = Omit<IFeaturesService<WritableFlagChangeset>, 'init'> & {\n enable(on: boolean): void;\n isEnabled$(): Observable<boolean>;\n resetFlags(flags: FlagSet): void;\n};\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, Inject, Input, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FeaturesServiceToken, IDebugFeaturesService } from '../interfaces/features.interface';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n selector: 'adf-feature-flags-override-indicator',\n standalone: true,\n imports: [CommonModule],\n styles: [\n `\n .adf-activity-indicator {\n font-size: 0.885rem;\n }\n `,\n `\n .adf-activity-indicator .small {\n font-size: 0.7rem;\n }\n `,\n `\n .adf-activity-indicator .large {\n font-size: 1.2rem;\n }\n `\n ],\n template: `\n <span [ngClass]=\"['activity-indicator', size]\" *ngIf=\"isEnabled; else inActive\">🟢</span>\n <ng-template #inActive><span [ngClass]=\"['activity-indicator', size]\">🔴</span></ng-template>\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FlagsOverrideComponent {\n isEnabled = false;\n\n @Input()\n size: 'small' | 'medium' | 'large' = 'medium';\n\n constructor(\n @Inject(FeaturesServiceToken)\n private featuresService: IDebugFeaturesService,\n changeDetectorRef: ChangeDetectorRef\n ) {\n if (this.featuresService.isEnabled$) {\n this.featuresService\n .isEnabled$()\n .pipe(takeUntilDestroyed())\n .subscribe((isEnabled) => {\n this.isEnabled = isEnabled;\n changeDetectorRef.markForCheck();\n });\n }\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ChangeDetectionStrategy, Component, Inject, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport {\n FeaturesServiceToken,\n IDebugFeaturesService,\n IFeaturesService,\n IWritableFeaturesService,\n WritableFeaturesServiceToken,\n WritableFlagChangeset\n} from '../../interfaces/features.interface';\nimport { BehaviorSubject, combineLatest, Observable } from 'rxjs';\nimport { debounceTime, map, take, tap } from 'rxjs/operators';\nimport { MatTableModule } from '@angular/material/table';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatInputModule } from '@angular/material/input';\nimport { FormsModule } from '@angular/forms';\nimport { FlagsOverrideComponent } from '../feature-override-indicator.component';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n selector: 'adf-feature-flags-overrides',\n standalone: true,\n imports: [\n FlagsOverrideComponent,\n CommonModule,\n FormsModule,\n MatTableModule,\n MatSlideToggleModule,\n MatToolbarModule,\n MatIconModule,\n MatButtonModule,\n MatInputModule,\n MatDialogModule,\n TranslateModule\n ],\n templateUrl: './flags.component.html',\n styleUrls: ['./flags.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FlagsComponent {\n displayedColumns: string[] = ['icon', 'flag', 'value'];\n flags$: Observable<{ fictive: boolean; flag: string; value: any }[]>;\n isEnabled = false;\n\n inputValue = '';\n inputValue$ = new BehaviorSubject<string>('');\n showPlusButton$!: Observable<boolean>;\n writableFlagChangeset: WritableFlagChangeset = {};\n constructor(\n @Inject(FeaturesServiceToken)\n private featuresService: IDebugFeaturesService & IFeaturesService<WritableFlagChangeset>,\n @Inject(WritableFeaturesServiceToken)\n private writableFeaturesService: IWritableFeaturesService\n ) {\n if (this.featuresService.isEnabled$) {\n this.featuresService\n .isEnabled$()\n .pipe(takeUntilDestroyed())\n .subscribe((isEnabled) => {\n this.isEnabled = isEnabled;\n });\n }\n\n const flags$ = this.featuresService.getFlags$().pipe(\n tap((flags) => (this.writableFlagChangeset = flags)),\n map((flags) =>\n Object.keys(flags).map((key) => ({\n flag: key,\n value: flags[key].current,\n fictive: flags[key]?.fictive ?? false\n }))\n )\n );\n\n const debouncedInputValue$ = this.inputValue$.pipe(debounceTime(100));\n\n this.flags$ = combineLatest([flags$, debouncedInputValue$]).pipe(\n map(([flags, inputValue]) => {\n if (!inputValue) {\n return flags;\n }\n\n return flags.filter((flag) => flag.flag.includes(inputValue));\n })\n );\n\n this.showPlusButton$ = this.flags$.pipe(\n map((filteredFlags) => this.isEnabled && filteredFlags.length === 0 && this.inputValue.trim().length > 0)\n );\n }\n\n protected onChange(flag: string, value: boolean) {\n this.writableFeaturesService.setFlag(flag, value);\n }\n\n protected onEnable(value: boolean) {\n if (value) {\n this.writableFeaturesService.mergeFlags(this.writableFlagChangeset);\n }\n\n this.featuresService.enable(value);\n }\n\n protected onInputChange(text: string) {\n this.inputValue$.next(text);\n }\n\n protected onClearInput() {\n this.inputValue = '';\n this.inputValue$.next('');\n }\n\n protected onAdd(event: KeyboardEvent) {\n this.showPlusButton$.pipe(take(1)).subscribe((showPlusButton) => {\n if (showPlusButton && event.key === 'Enter' && event.shiftKey) {\n this.writableFeaturesService.setFlag(this.inputValue, false);\n }\n });\n }\n\n protected onAddButtonClick() {\n this.writableFeaturesService.setFlag(this.inputValue, false);\n }\n\n protected onDelete(flag: string) {\n this.writableFeaturesService.removeFlag(flag);\n }\n}\n","<mat-toolbar class=\"adf-feature-flags-overrides-header\">\n <div class=\"adf-feature-flags-overrides-header-text\" tabindex=\"0\">\n <adf-feature-flags-override-indicator\n class=\"adf-activity-indicator\"\n size='large' />\n <span>{{ \"CORE.FEATURE-FLAGS.OVERRIDES\" | translate }}</span>\n </div>\n <mat-slide-toggle\n [checked]=\"isEnabled\"\n (change)=\"onEnable($event.checked)\" />\n <button\n class=\"adf-feature-flags-overrides-header-close\"\n mat-icon-button\n mat-dialog-close>\n <mat-icon>close</mat-icon>\n </button>\n</mat-toolbar>\n\n<ng-container *ngIf=\"flags$ | async as flags\">\n <table mat-table [dataSource]=\"flags\" class=\"adf-feature-flags-overrides-table mat-elevation-z0\">\n <ng-container matColumnDef=\"icon\">\n <th mat-header-cell class=\"adf-icon-col adf-header-cell\" *matHeaderCellDef>\n <mat-icon class=\"material-icons-outlined adf-search-icon\">search</mat-icon>\n </th>\n <td mat-cell class=\"adf-icon-col\" *matCellDef=\"let element\">\n <button mat-icon-button *ngIf=\"element.fictive; else flagFromApi\" class=\"adf-fictive-flag-button\" (click)=\"onDelete(element.flag)\">\n <mat-icon class=\"material-icons-outlined adf-custom-flag-icon\" fontIcon=\"memory\" />\n <mat-icon class=\"material-icons-outlined adf-trash-icon\" fontIcon=\"delete\" />\n </button>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"flag\">\n <th mat-header-cell class=\"flag-col header-cell\" *matHeaderCellDef>\n <mat-form-field class=\"adf-flag-form-field\" appearance=\"fill\" floatLabel=\"auto\">\n <input class=\"flag-input\" [placeholder]=\"(isEnabled ? 'CORE.FEATURE-FLAGS.FILTER_OR_ADD_NEW' : 'CORE.FEATURE-FLAGS.FILTER') | translate\" matInput type=\"text\" [(ngModel)]=\"inputValue\" (keyup)=\"onInputChange(inputValue)\" (keypress)=\"onAdd($event)\">\n </mat-form-field>\n </th>\n <td mat-cell class=\"flag-col\" *matCellDef=\"let element\">{{ element.flag }}</td>\n </ng-container>\n\n <ng-container matColumnDef=\"value\">\n <th mat-header-cell class=\"adf-val-col header-cell\" *matHeaderCellDef>\n <div class=\"adf-input-field-buttons-container\">\n <button *ngIf=\"showPlusButton$ | async\" mat-icon-button title=\"{{'CORE.FEATURE-FLAGS.ADD_NEW' | translate}}\" color=\"accent\" (click)=\"onAddButtonClick()\">\n <mat-icon class=\"material-icons-outlined\" fontIcon=\"add_circle\" />\n </button>\n <button *ngIf=\"inputValue\" matSuffix mat-icon-button aria-label=\"Clear\" (click)=\"onClearInput()\" class=\"adf-clear-button\">\n <mat-icon>cancel</mat-icon>\n </button>\n </div>\n </th>\n <td mat-cell class=\"adf-val-col\" *matCellDef=\"let element\">\n <mat-slide-toggle\n [checked]=\"element.value\"\n (change)=\"onChange(element.flag, $event.checked)\"\n [disabled]=\"!isEnabled\" />\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns\"></tr>\n </table>\n</ng-container>\n\n<ng-template #flagFromApi>\n <mat-icon class=\"material-icons-outlined\">cloud</mat-icon>\n</ng-template>\n\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Component } from '@angular/core';\nimport { FlagsComponent } from './flags/flags.component';\n\n@Component({\n selector: 'adf-feature-flags-wrapper',\n standalone: true,\n imports: [FlagsComponent],\n template: `\n <div class=\"adf-feature-flags-wrapper\">\n <adf-feature-flags-overrides />\n </div>\n `,\n styles: [\n `\n .adf-feature-flags-wrapper {\n width: 100%;\n height: 100%;\n }\n `\n ]\n})\nexport class FeatureFlagsWrapperComponent {}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Directive, Inject, Input, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { BehaviorSubject, combineLatest } from 'rxjs';\nimport { FeaturesServiceToken, FlagChangeset, IFeaturesService } from '../interfaces/features.interface';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Directive({\n /* eslint-disable-next-line @angular-eslint/directive-selector */\n selector: '[adfForFeatures]',\n standalone: true\n})\nexport class FeaturesDirective {\n private hasView = false;\n private inputUpdate$ = new BehaviorSubject([] as string[]);\n \n @Input()\n set adfForFeatures(feature: string[] | string) {\n this.inputUpdate$.next(Array.isArray(feature) ? feature : [feature]);\n }\n\n constructor(\n @Inject(FeaturesServiceToken) private featuresService: IFeaturesService,\n private templateRef: TemplateRef<any>,\n private viewContainer: ViewContainerRef\n ) {\n combineLatest([this.featuresService.getFlags$(), this.inputUpdate$])\n .pipe(takeUntilDestroyed())\n .subscribe(([flags, features]: any) => this.updateView(flags, features));\n }\n\n private updateView(flags: FlagChangeset, features: string[]) {\n const shouldShow = features.every((feature) => flags[feature]?.current);\n\n if (shouldShow && !this.hasView) {\n this.viewContainer.createEmbeddedView(this.templateRef);\n this.hasView = true;\n } else if (!shouldShow && this.hasView) {\n this.viewContainer.clear();\n this.hasView = false;\n }\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Directive, Inject, Input, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { BehaviorSubject, combineLatest } from 'rxjs';\nimport { FeaturesServiceToken, FlagChangeset, IFeaturesService } from '../interfaces/features.interface';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Directive({\n /* eslint-disable-next-line @angular-eslint/directive-selector */\n selector: '[adfNotForFeatures]',\n standalone: true\n})\nexport class NotFeaturesDirective {\n private hasView = false;\n private inputUpdate$ = new BehaviorSubject([] as string[]);\n\n @Input()\n set adfNotForFeatures(feature: string[] | string) {\n this.inputUpdate$.next(Array.isArray(feature) ? feature : [feature]);\n }\n\n constructor(\n @Inject(FeaturesServiceToken) private featuresService: IFeaturesService,\n private templateRef: TemplateRef<any>,\n private viewContainer: ViewContainerRef\n ) {\n combineLatest([this.featuresService.getFlags$(), this.inputUpdate$])\n .pipe(takeUntilDestroyed())\n .subscribe(([flags, features]: any) => this.updateView(flags, features));\n }\n\n private updateView(flags: FlagChangeset, features: string[]) {\n const shouldShow = features.every((feature) => !flags[feature]?.current);\n\n if (shouldShow && !this.hasView) {\n this.viewContainer.createEmbeddedView(this.templateRef);\n this.hasView = true;\n } else if (!shouldShow && this.hasView) {\n this.viewContainer.clear();\n this.hasView = false;\n }\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Inject, Injectable, inject } from '@angular/core';\nimport { FeaturesServiceToken, IFeaturesService } from '../interfaces/features.interface';\nimport { Route } from '@angular/router';\nimport { Observable } from 'rxjs';\n\nexport const isFeatureOn = (flag: string) => () => inject(FeaturesServiceToken).isOn$(flag);\n\n@Injectable({ providedIn: 'root' })\nexport class IsFeatureOn {\n constructor(@Inject(FeaturesServiceToken) private featuresServiceToken: IFeaturesService) {}\n\n canMatch(route: Route): Observable<boolean> {\n return this.featuresServiceToken.isOn$(route?.data?.['feature']);\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Inject, Injectable, inject } from '@angular/core';\nimport { FeaturesServiceToken, IFeaturesService } from '../interfaces/features.interface';\nimport { Route } from '@angular/router';\nimport { Observable } from 'rxjs';\n\nexport const isFeatureOff = (flag: string) => () => inject(FeaturesServiceToken).isOff$(flag);\n\n@Injectable({ providedIn: 'root' })\nexport class IsFeatureOff {\n constructor(@Inject(FeaturesServiceToken) private featuresServiceToken: IFeaturesService) {}\n\n canMatch(route: Route): Observable<boolean> {\n return this.featuresServiceToken.isOff$(route?.data?.['feature']);\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Inject, Injectable, Optional, inject } from '@angular/core';\nimport { FlagsOverrideToken } from '../interfaces/features.interface';\n\nexport const isFlagsOverrideOn = () => () => inject(FlagsOverrideToken) ?? false;\n\n@Injectable({ providedIn: 'root' })\nexport class IsFlagsOverrideOn {\n constructor(@Optional() @Inject(FlagsOverrideToken) private devToolsToken: boolean) {}\n\n canMatch(): boolean {\n return !!this.devToolsToken;\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* eslint-disable @typescript-eslint/no-unused-vars */\nimport { Injectable } from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { IFeaturesService, FlagChangeset } from '../interfaces/features.interface';\n\n@Injectable()\nexport class DummyFeaturesService implements IFeaturesService {\n init(): Observable<FlagChangeset> {\n return of();\n }\n\n isOn$(): Observable<boolean> {\n return of(false);\n }\n\n isOff$(_key: string): Observable<boolean> {\n return of(true);\n }\n\n getFlags$(): Observable<FlagChangeset> {\n return of({});\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { IsFlagsOverrideOn } from '../guards/is-flags-override-on.guard';\nimport { IsFeatureOn } from '../guards/is-feature-on.guard';\nimport { IsFeatureOff } from '../guards/is-feature-off.guard';\nimport { FeaturesServiceToken, FlagsOverrideToken } from '../interfaces/features.interface';\nimport { DummyFeaturesService } from '../services/dummy-features.service';\n\n/**\n * Provides the dummy feature flags.\n *\n * @returns Environment Providers for Feature Flags.\n */\nexport function provideDummyFeatureFlags() {\n return [\n { provide: FeaturesServiceToken, useClass: DummyFeaturesService },\n { provide: FlagsOverrideToken, useValue: false },\n IsFeatureOn,\n IsFeatureOff,\n IsFlagsOverrideOn\n ];\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { WritableFlagChangeset } from '../interfaces/features.interface';\n\ninterface SerializedFlagSet {\n [key: string]: {\n current: boolean;\n fictive?: boolean;\n };\n}\n\nexport class FlagSetParser {\n static serialize(flags: WritableFlagChangeset): SerializedFlagSet {\n return Object.keys(flags).reduce(\n (acc, key) => ({\n ...acc,\n [key]: {\n current: flags[key].current,\n fictive: flags[key].fictive\n }\n }),\n {}\n );\n }\n\n static deserialize(serializedFlags: SerializedFlagSet): WritableFlagChangeset {\n return Object.keys(serializedFlags).reduce(\n (acc, key) => ({\n ...acc,\n [key]: {\n current: serializedFlags[key].current,\n previous: null,\n ...(serializedFlags[key].fictive ? { fictive: true } : {})\n }\n }),\n {}\n );\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Inject, Injectable, Optional } from '@angular/core';\nimport { BehaviorSubject, Observable, of } from 'rxjs';\nimport { map, skip } from 'rxjs/operators';\nimport {\n FlagChangeset,\n IFeaturesService,\n FlagSet,\n IWritableFeaturesService,\n WritableFeaturesServiceConfigToken,\n WritableFlagChangeset,\n WritableFeaturesServiceConfig\n} from '../interfaces/features.interface';\nimport { FlagSetParser } from './flagset.parser';\nimport { StorageService } from '@alfresco/adf-core';\n\n@Injectable({ providedIn: 'root' })\nexport class StorageFeaturesService implements IFeaturesService, IWritableFeaturesService {\n private currentFlagState: WritableFlagChangeset = {};\n private flags = new BehaviorSubject<WritableFlagChangeset>({});\n private flags$ = this.flags.asObservable();\n\n constructor(\n private storageService: StorageService,\n @Optional() @Inject(WritableFeaturesServiceConfigToken) private config?: WritableFeaturesServiceConfig\n ) {\n this.flags.pipe(skip(1)).subscribe((flags) => {\n this.currentFlagState = flags;\n this.storageService.setItem(this.storageKey, JSON.stringify(FlagSetParser.serialize(flags)));\n });\n }\n\n get storageKey(): string {\n return this.config?.storageKey || 'feature-flags';\n }\n\n init(): Observable<WritableFlagChangeset> {\n const storedFlags = JSON.parse(this.storageService.getItem(this.storageKey) || '{}');\n const initialFlagChangeSet = FlagSetParser.deserialize(storedFlags);\n this.flags.next(initialFlagChangeSet);\n return of(initialFlagChangeSet);\n }\n\n isOn$(key: string): Observable<boolean> {\n return this.flags$.pipe(map((flags) => !!flags[key]?.current));\n }\n\n isOff$(key: string): Observable<boolean> {\n return this.flags$.pipe(map((flags) => !flags[key]?.current));\n }\n\n getFlags$(): Observable<WritableFlagChangeset> {\n return this.flags$;\n }\n\n setFlag(key: string, value: any): void {\n let fictive = {};\n if (!this.currentFlagState[key]) {\n fictive = { fictive: true };\n } else {\n fictive = this.currentFlagState[key]?.fictive ? { fictive: true } : {};\n }\n\n this.flags.next({\n ...this.currentFlagState,\n [key]: {\n current: value,\n previous: this.currentFlagState[key]?.current ?? null,\n ...fictive\n }\n });\n }\n\n removeFlag(key: string): void {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { [key]: _, ...flags } = this.currentFlagState;\n this.flags.next(flags);\n }\n\n resetFlags(flags: FlagSet): void {\n this.flags.next(\n Object.keys(flags).reduce(\n (acc, key) => ({\n ...acc,\n [key]: {\n current: flags[key],\n previous: null,\n fictive: true\n }\n }),\n {}\n )\n );\n }\n\n mergeFlags(flags: FlagChangeset): void {\n const mergedFlags: WritableFlagChangeset = Object.keys(flags).reduce((acc, key) => {\n const current = this.currentFlagState[key]?.current;\n return {\n ...acc,\n [key]: {\n current: current ?? flags[key].current,\n previous: current ?? null\n }\n };\n }, {});\n\n Object.keys(this.currentFlagState)\n .filter((key) => !flags[key])\n .forEach((key) => {\n mergedFlags[key] = {\n current: this.currentFlagState[key].current,\n previous: this.currentFlagState[key].previous,\n fictive: true\n };\n });\n\n this.flags.next(mergedFlags);\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Inject, Injectable, Optional } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { skip, switchMap } from 'rxjs/operators';\nimport {\n IDebugFeaturesService,\n IFeaturesService,\n FlagChangeset,\n OverridableFeaturesServiceToken,\n WritableFeaturesServiceToken,\n WritableFeaturesServiceConfigToken,\n WritableFeaturesServiceConfig,\n FlagSet,\n IWritableFeaturesService\n} from '../interfaces/features.interface';\nimport { StorageService } from '@alfresco/adf-core';\n\n@Injectable()\nexport class DebugFeaturesService implements IDebugFeaturesService {\n private isInDebugMode: BehaviorSubject<boolean>;\n private isInDebugMode$: Observable<boolean>;\n\n get storageKey(): string {\n return `${this.config?.storageKey || 'feature-flags'}-override`;\n }\n\n constructor(\n @Inject(OverridableFeaturesServiceToken) private overriddenFeaturesService: IFeaturesService,\n @Inject(WritableFeaturesServiceToken) private writableFeaturesService: IFeaturesService & IWritableFeaturesService,\n private storageService: StorageService,\n @Optional() @Inject(WritableFeaturesServiceConfigToken) private config?: WritableFeaturesServiceConfig\n ) {\n this.isInDebugMode = new BehaviorSubject<boolean>(JSON.parse(this.storageService.getItem(this.storageKey) || 'false'));\n this.isInDebugMode$ = this.isInDebugMode.asObservable();\n\n this.isInDebugMode.pipe(skip(1)).subscribe((debugMode) => {\n this.storageService.setItem(this.storageKey, JSON.stringify(debugMode));\n });\n }\n\n isOn$(key: string): Observable<boolean> {\n return this.isInDebugMode$.pipe(\n switchMap((isInDebugMode) => (isInDebugMode ? this.writableFeaturesService : this.overriddenFeaturesService).isOn$(key))\n );\n }\n\n isOff$(key: string): Observable<boolean> {\n return this.isInDebugMode$.pipe(\n switchMap((isInDebugMode) => (isInDebugMode ? this.writableFeaturesService : this.overriddenFeaturesService).isOff$(key))\n );\n }\n\n /**\n * Gets the flags as an observable.\n *\n * @returns the observable that emits the flag changeset.\n */\n getFlags$(): Observable<FlagChangeset> {\n return this.isInDebugMode$.pipe(\n switchMap((isInDebugMode) => (isInDebugMode ? this.writableFeaturesService : this.overriddenFeaturesService).getFlags$())\n );\n }\n\n /**\n * Resets the specified flags.\n *\n * @param flags The flags to reset.\n */\n resetFlags(flags: FlagSet): void {\n this.writableFeaturesService.resetFlags(flags);\n }\n\n enable(on: boolean): void {\n this.isInDebugMode.next(on);\n }\n\n isEnabled$(): Observable<boolean> {\n return this.isInDebugMode$;\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ApplicationRef, Inject, Injectable } from '@angular/core';\nimport { FeaturesServiceToken, FlagSet } from '../interfaces/features.interface';\nimport { DebugFeaturesService } from './debug-features.service';\n@Injectable()\nexport class QaFeaturesHelper {\n constructor(private applicationRef: ApplicationRef, @Inject(FeaturesServiceToken) private debugFeaturesService: DebugFeaturesService) {}\n\n isOn(key: string): boolean {\n let isOn = false;\n this.debugFeaturesService.isOn$(key).subscribe((on) => {\n isOn = on;\n });\n\n return isOn;\n }\n\n resetFlags(flags: FlagSet): void {\n this.debugFeaturesService.resetFlags(flags);\n this.applicationRef.tick();\n }\n\n enable(): void {\n this.debugFeaturesService.enable(true);\n this.applicationRef.tick();\n }\n\n disable(): void {\n this.debugFeaturesService.enable(false);\n this.applicationRef.tick();\n }\n\n isEnabled(): boolean {\n let enabled = false;\n this.debugFeaturesService.isEnabled$().subscribe((isEnabled) => {\n enabled = isEnabled;\n });\n return enabled;\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { APP_INITIALIZER } from '@angular/core';\nimport {\n FlagsOverrideToken,\n FeaturesServiceToken,\n QaFeaturesHelperConfig,\n WritableFeaturesServiceConfig,\n WritableFeaturesServiceConfigToken,\n WritableFeaturesServiceToken\n} from '../interfaces/features.interface';\nimport { StorageFeaturesService } from '../services/storage-features.service';\nimport { DebugFeaturesService } from '../services/debug-features.service';\nimport { QaFeaturesHelper } from '../services/qa-features.helper';\nimport { DOCUMENT } from '@angular/common';\n\n/**\n *\n * @param config Configuration for the Feature Flags\n * @returns Environment Providers for Feature Flags\n */\nexport function provideDebugFeatureFlags(config: WritableFeaturesServiceConfig & QaFeaturesHelperConfig) {\n return [\n { provide: FlagsOverrideToken, useValue: true },\n { provide: FeaturesServiceToken, useClass: DebugFeaturesService },\n { provide: WritableFeaturesServiceConfigToken, useValue: config },\n { provide: WritableFeaturesServiceToken, useClass: StorageFeaturesService },\n { provide: QaFeaturesHelper, useClass: QaFeaturesHelper },\n {\n provide: APP_INITIALIZER,\n useFactory: (featuresService: StorageFeaturesService) => () => featuresService.init(),\n deps: [WritableFeaturesServiceToken],\n multi: true\n },\n {\n provide: APP_INITIALIZER,\n useFactory: (qaFeaturesHelper: QaFeaturesHelper, document: Document & { [key: string]: QaFeaturesHelper }) => () => {\n document[config.helperExposeKeyOnDocument ?? 'featureOverrides'] = qaFeaturesHelper;\n },\n deps: [QaFeaturesHelper, DOCUMENT],\n multi: true\n }\n ];\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { of } from 'rxjs';\nimport { FeaturesServiceToken, FlagChangeset, IFeaturesService } from '../interfaces/features.interface';\n\nexport interface MockFeatureFlags {\n [key: string]: boolean;\n}\n\nconst assertFeatureFlag = (flagChangeset: FlagChangeset, key: string): void => {\n const flagChangesetValue = flagChangeset[key];\n\n if (flagChangesetValue === undefined) {\n throw new Error(\n `ERROR FEATURE-FLAG\\n'${key}' feature is not mocked, please mock '${key}' using '${provideMockFeatureFlags.name}' helper in your test\\n`\n );\n }\n};\n\nconst mockFeaturesService = (flagChangeset: FlagChangeset): IFeaturesService => ({\n init: () => of(flagChangeset),\n isOn$: (key) => {\n assertFeatureFlag(flagChangeset, key);\n return of(flagChangeset[key].current);\n },\n isOff$: (key) => {\n assertFeatureFlag(flagChangeset, key);\n return of(!flagChangeset[key].current);\n },\n getFlags$: () => of(flagChangeset)\n});\n\nconst arrayToFlagChangeset = (featureFlags: string[]): FlagChangeset => {\n const flagChangeset: FlagChangeset = {};\n featureFlags.forEach((featureFlag) => {\n flagChangeset[featureFlag] = { current: true, previous: null };\n });\n return flagChangeset;\n};\n\nconst mockFeatureFlagsToFlagChangeset = (mockFeatureFlags: MockFeatureFlags) => {\n const flagChangeset: FlagChangeset = {};\n const featureFlags = Object.keys(mockFeatureFlags);\n featureFlags.forEach((featureFlag) => {\n flagChangeset[featureFlag] = { current: mockFeatureFlags[featureFlag], previous: null };\n });\n return flagChangeset;\n};\n\nexport const provideMockFeatureFlags = (featureFlag: MockFeatureFlags | string | string[]) => {\n if (typeof featureFlag === 'string') {\n featureFlag = [featureFlag];\n }\n\n const flagChangeset = Array.isArray(featureFlag) ? arrayToFlagChangeset(featureFlag) : mockFeatureFlagsToFlagChangeset(featureFlag);\n\n return {\n provide: FeaturesServiceToken,\n useValue: mockFeaturesService(flagChangeset)\n };\n};\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './lib/components/flags/flags.component';\nexport * from './lib/components/feature-override-indicator.component';\nexport * from './lib/components/feature-flags-wrapper';\nexport * from './lib/directives/features.directive';\nexport * from './lib/directives/not-features.directive';\nexport * from './lib/guards/is-feature-on.guard';\nexport * from './lib/guards/is-feature-off.guard';\nexport * from './lib/guards/is-flags-override-on.guard';\nexport * from './lib/providers/dummy-feature-flags.provider';\nexport * from './lib/providers/debug-feature-flags.provider';\nexport * from './lib/interfaces/features.interface';\nexport * from './lib/mocks/features-service-mock.factory';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"alfresco-adf-core-feature-flags.mjs","sources":["../../../../lib/core/feature-flags/src/lib/interfaces/features.interface.ts","../../../../lib/core/feature-flags/src/lib/components/feature-override-indicator.component.ts","../../../../lib/core/feature-flags/src/lib/components/flags/flags.component.ts","../../../../lib/core/feature-flags/src/lib/components/flags/flags.component.html","../../../../lib/core/feature-flags/src/lib/components/feature-flags-wrapper.ts","../../../../lib/core/feature-flags/src/lib/directives/features.directive.ts","../../../../lib/core/feature-flags/src/lib/directives/not-features.directive.ts","../../../../lib/core/feature-flags/src/lib/guards/is-feature-on.guard.ts","../../../../lib/core/feature-flags/src/lib/guards/is-feature-off.guard.ts","../../../../lib/core/feature-flags/src/lib/guards/is-flags-override-on.guard.ts","../../../../lib/core/feature-flags/src/lib/services/dummy-features.service.ts","../../../../lib/core/feature-flags/src/lib/providers/dummy-feature-flags.provider.ts","../../../../lib/core/feature-flags/src/lib/services/flagset.parser.ts","../../../../lib/core/feature-flags/src/lib/services/storage-features.service.ts","../../../../lib/core/feature-flags/src/lib/services/debug-features.service.ts","../../../../lib/core/feature-flags/src/lib/services/qa-features.helper.ts","../../../../lib/core/feature-flags/src/lib/providers/debug-feature-flags.provider.ts","../../../../lib/core/feature-flags/src/lib/mocks/features-service-mock.factory.ts","../../../../lib/core/feature-flags/src/index.ts","../../../../lib/core/feature-flags/src/alfresco-adf-core-feature-flags.ts"],"sourcesContent":["/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { InjectionToken } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nexport const FeaturesServiceConfigToken = new InjectionToken<any>('FeatureServiceConfigToken');\nexport const FeaturesServiceToken = new InjectionToken<IFeaturesService>('FeaturesService');\nexport const WritableFeaturesServiceToken = new InjectionToken<IFeaturesService & IWritableFeaturesService>('WritableFeaturesServiceToken');\nexport const WritableFeaturesServiceConfigToken = new InjectionToken<WritableFeaturesServiceConfig>('WritableFeaturesServiceConfigToken');\nexport const OverridableFeaturesServiceToken = new InjectionToken<IFeaturesService>('OverridableFeaturesServiceToken');\nexport const FlagsOverrideToken = new InjectionToken<boolean>('FlagsOverrideToken');\n\nexport interface WritableFeaturesServiceConfig {\n storageKey?: string;\n}\nexport interface QaFeaturesHelperConfig {\n helperExposeKeyOnDocument?: string;\n}\n\nexport interface FlagChangeset {\n [key: string]: {\n current: any;\n previous: any;\n };\n}\n\nexport interface WritableFlagChangeset {\n [key: string]: {\n current: any;\n previous: any;\n fictive?: boolean;\n };\n}\n\nexport interface FlagSet {\n [key: string]: any;\n}\n\nexport interface IFeaturesService<T = FlagChangeset> {\n init(): Observable<T>;\n isOn$(key: string): Observable<boolean>;\n isOff$(key: string): Observable<boolean>;\n getFlags$(): Observable<T>;\n}\n\nexport interface IWritableFeaturesService {\n setFlag(key: string, value: any): void;\n resetFlags(flags: FlagSet): void;\n removeFlag(key: string): void;\n mergeFlags(flags: FlagChangeset): void;\n}\n\nexport type IDebugFeaturesService = Omit<IFeaturesService<WritableFlagChangeset>, 'init'> & {\n enable(on: boolean): void;\n isEnabled$(): Observable<boolean>;\n resetFlags(flags: FlagSet): void;\n};\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, Inject, Input, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FeaturesServiceToken, IDebugFeaturesService } from '../interfaces/features.interface';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n selector: 'adf-feature-flags-override-indicator',\n standalone: true,\n imports: [CommonModule],\n styles: [\n `\n .adf-activity-indicator {\n font-size: 0.885rem;\n }\n `,\n `\n .adf-activity-indicator .small {\n font-size: 0.7rem;\n }\n `,\n `\n .adf-activity-indicator .large {\n font-size: 1.2rem;\n }\n `\n ],\n template: `\n <span [ngClass]=\"['activity-indicator', size]\" *ngIf=\"isEnabled; else inActive\">🟢</span>\n <ng-template #inActive><span [ngClass]=\"['activity-indicator', size]\">🔴</span></ng-template>\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FlagsOverrideComponent {\n isEnabled = false;\n\n @Input()\n size: 'small' | 'medium' | 'large' = 'medium';\n\n constructor(\n @Inject(FeaturesServiceToken)\n private featuresService: IDebugFeaturesService,\n changeDetectorRef: ChangeDetectorRef\n ) {\n if (this.featuresService.isEnabled$) {\n this.featuresService\n .isEnabled$()\n .pipe(takeUntilDestroyed())\n .subscribe((isEnabled) => {\n this.isEnabled = isEnabled;\n changeDetectorRef.markForCheck();\n });\n }\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ChangeDetectionStrategy, Component, Inject, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport {\n FeaturesServiceToken,\n IDebugFeaturesService,\n IFeaturesService,\n IWritableFeaturesService,\n WritableFeaturesServiceToken,\n WritableFlagChangeset\n} from '../../interfaces/features.interface';\nimport { BehaviorSubject, combineLatest, Observable } from 'rxjs';\nimport { debounceTime, map, take, tap } from 'rxjs/operators';\nimport { MatTableModule } from '@angular/material/table';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatInputModule } from '@angular/material/input';\nimport { FormsModule } from '@angular/forms';\nimport { FlagsOverrideComponent } from '../feature-override-indicator.component';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n selector: 'adf-feature-flags-overrides',\n standalone: true,\n imports: [\n FlagsOverrideComponent,\n CommonModule,\n FormsModule,\n MatTableModule,\n MatSlideToggleModule,\n MatToolbarModule,\n MatIconModule,\n MatButtonModule,\n MatInputModule,\n MatDialogModule,\n TranslateModule\n ],\n templateUrl: './flags.component.html',\n styleUrls: ['./flags.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FlagsComponent {\n displayedColumns: string[] = ['icon', 'flag', 'value'];\n flags$: Observable<{ fictive: boolean; flag: string; value: any }[]>;\n isEnabled = false;\n\n inputValue = '';\n inputValue$ = new BehaviorSubject<string>('');\n showPlusButton$!: Observable<boolean>;\n writableFlagChangeset: WritableFlagChangeset = {};\n constructor(\n @Inject(FeaturesServiceToken)\n private featuresService: IDebugFeaturesService & IFeaturesService<WritableFlagChangeset>,\n @Inject(WritableFeaturesServiceToken)\n private writableFeaturesService: IWritableFeaturesService\n ) {\n if (this.featuresService.isEnabled$) {\n this.featuresService\n .isEnabled$()\n .pipe(takeUntilDestroyed())\n .subscribe((isEnabled) => {\n this.isEnabled = isEnabled;\n });\n }\n\n const flags$ = this.featuresService.getFlags$().pipe(\n tap((flags) => (this.writableFlagChangeset = flags)),\n map((flags) =>\n Object.keys(flags).map((key) => ({\n flag: key,\n value: flags[key].current,\n fictive: flags[key]?.fictive ?? false\n }))\n )\n );\n\n const debouncedInputValue$ = this.inputValue$.pipe(debounceTime(100));\n\n this.flags$ = combineLatest([flags$, debouncedInputValue$]).pipe(\n map(([flags, inputValue]) => {\n if (!inputValue) {\n return flags;\n }\n\n return flags.filter((flag) => flag.flag.includes(inputValue));\n })\n );\n\n this.showPlusButton$ = this.flags$.pipe(\n map((filteredFlags) => this.isEnabled && filteredFlags.length === 0 && this.inputValue.trim().length > 0)\n );\n }\n\n protected onChange(flag: string, value: boolean) {\n this.writableFeaturesService.setFlag(flag, value);\n }\n\n protected onEnable(value: boolean) {\n if (value) {\n this.writableFeaturesService.mergeFlags(this.writableFlagChangeset);\n }\n\n this.featuresService.enable(value);\n }\n\n protected onInputChange(text: string) {\n this.inputValue$.next(text);\n }\n\n protected onClearInput() {\n this.inputValue = '';\n this.inputValue$.next('');\n }\n\n protected onAdd(event: KeyboardEvent) {\n this.showPlusButton$.pipe(take(1)).subscribe((showPlusButton) => {\n if (showPlusButton && event.key === 'Enter' && event.shiftKey) {\n this.writableFeaturesService.setFlag(this.inputValue, false);\n }\n });\n }\n\n protected onAddButtonClick() {\n this.writableFeaturesService.setFlag(this.inputValue, false);\n }\n\n protected onDelete(flag: string) {\n this.writableFeaturesService.removeFlag(flag);\n }\n}\n","<mat-toolbar class=\"adf-feature-flags-overrides-header\">\n <div class=\"adf-feature-flags-overrides-header-text\" tabindex=\"0\">\n <adf-feature-flags-override-indicator\n class=\"adf-activity-indicator\"\n size='large' />\n <span>{{ \"CORE.FEATURE-FLAGS.OVERRIDES\" | translate }}</span>\n </div>\n <mat-slide-toggle\n [checked]=\"isEnabled\"\n (change)=\"onEnable($event.checked)\" />\n <button\n class=\"adf-feature-flags-overrides-header-close\"\n mat-icon-button\n mat-dialog-close>\n <mat-icon>close</mat-icon>\n </button>\n</mat-toolbar>\n\n<ng-container *ngIf=\"flags$ | async as flags\">\n <table mat-table [dataSource]=\"flags\" class=\"adf-feature-flags-overrides-table mat-elevation-z0\">\n <ng-container matColumnDef=\"icon\">\n <th mat-header-cell class=\"adf-icon-col adf-header-cell\" *matHeaderCellDef>\n <mat-icon class=\"material-icons-outlined adf-search-icon\">search</mat-icon>\n </th>\n <td mat-cell class=\"adf-icon-col\" *matCellDef=\"let element\">\n <button mat-icon-button *ngIf=\"element.fictive; else flagFromApi\" class=\"adf-fictive-flag-button\" (click)=\"onDelete(element.flag)\">\n <mat-icon class=\"material-icons-outlined adf-custom-flag-icon\" fontIcon=\"memory\" />\n <mat-icon class=\"material-icons-outlined adf-trash-icon\" fontIcon=\"delete\" />\n </button>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"flag\">\n <th mat-header-cell class=\"flag-col header-cell\" *matHeaderCellDef>\n <mat-form-field class=\"adf-flag-form-field\" appearance=\"fill\" floatLabel=\"auto\">\n <input class=\"flag-input\" [placeholder]=\"(isEnabled ? 'CORE.FEATURE-FLAGS.FILTER_OR_ADD_NEW' : 'CORE.FEATURE-FLAGS.FILTER') | translate\" matInput type=\"text\" [(ngModel)]=\"inputValue\" (keyup)=\"onInputChange(inputValue)\" (keypress)=\"onAdd($event)\">\n </mat-form-field>\n </th>\n <td mat-cell class=\"flag-col\" *matCellDef=\"let element\">{{ element.flag }}</td>\n </ng-container>\n\n <ng-container matColumnDef=\"value\">\n <th mat-header-cell class=\"adf-val-col header-cell\" *matHeaderCellDef>\n <div class=\"adf-input-field-buttons-container\">\n <button *ngIf=\"showPlusButton$ | async\" mat-icon-button title=\"{{'CORE.FEATURE-FLAGS.ADD_NEW' | translate}}\" color=\"accent\" (click)=\"onAddButtonClick()\">\n <mat-icon class=\"material-icons-outlined\" fontIcon=\"add_circle\" />\n </button>\n <button *ngIf=\"inputValue\" matSuffix mat-icon-button aria-label=\"Clear\" (click)=\"onClearInput()\" class=\"adf-clear-button\">\n <mat-icon>cancel</mat-icon>\n </button>\n </div>\n </th>\n <td mat-cell class=\"adf-val-col\" *matCellDef=\"let element\">\n <mat-slide-toggle\n [checked]=\"element.value\"\n (change)=\"onChange(element.flag, $event.checked)\"\n [disabled]=\"!isEnabled\" />\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns\"></tr>\n </table>\n</ng-container>\n\n<ng-template #flagFromApi>\n <mat-icon class=\"material-icons-outlined\">cloud</mat-icon>\n</ng-template>\n\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Component } from '@angular/core';\nimport { FlagsComponent } from './flags/flags.component';\n\n@Component({\n selector: 'adf-feature-flags-wrapper',\n standalone: true,\n imports: [FlagsComponent],\n template: `\n <div class=\"adf-feature-flags-wrapper\">\n <adf-feature-flags-overrides />\n </div>\n `,\n styles: [\n `\n .adf-feature-flags-wrapper {\n width: 100%;\n height: 100%;\n }\n `\n ]\n})\nexport class FeatureFlagsWrapperComponent {}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Directive, Inject, Input, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { BehaviorSubject, combineLatest } from 'rxjs';\nimport { FeaturesServiceToken, FlagChangeset, IFeaturesService } from '../interfaces/features.interface';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Directive({\n /* eslint-disable-next-line @angular-eslint/directive-selector */\n selector: '[adfForFeatures]',\n standalone: true\n})\nexport class FeaturesDirective {\n private hasView = false;\n private inputUpdate$ = new BehaviorSubject([] as string[]);\n \n @Input()\n set adfForFeatures(feature: string[] | string) {\n this.inputUpdate$.next(Array.isArray(feature) ? feature : [feature]);\n }\n\n constructor(\n @Inject(FeaturesServiceToken) private featuresService: IFeaturesService,\n private templateRef: TemplateRef<any>,\n private viewContainer: ViewContainerRef\n ) {\n combineLatest([this.featuresService.getFlags$(), this.inputUpdate$])\n .pipe(takeUntilDestroyed())\n .subscribe(([flags, features]: any) => this.updateView(flags, features));\n }\n\n private updateView(flags: FlagChangeset, features: string[]) {\n const shouldShow = features.every((feature) => flags[feature]?.current);\n\n if (shouldShow && !this.hasView) {\n this.viewContainer.createEmbeddedView(this.templateRef);\n this.hasView = true;\n } else if (!shouldShow && this.hasView) {\n this.viewContainer.clear();\n this.hasView = false;\n }\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Directive, Inject, Input, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { BehaviorSubject, combineLatest } from 'rxjs';\nimport { FeaturesServiceToken, FlagChangeset, IFeaturesService } from '../interfaces/features.interface';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Directive({\n /* eslint-disable-next-line @angular-eslint/directive-selector */\n selector: '[adfNotForFeatures]',\n standalone: true\n})\nexport class NotFeaturesDirective {\n private hasView = false;\n private inputUpdate$ = new BehaviorSubject([] as string[]);\n\n @Input()\n set adfNotForFeatures(feature: string[] | string) {\n this.inputUpdate$.next(Array.isArray(feature) ? feature : [feature]);\n }\n\n constructor(\n @Inject(FeaturesServiceToken) private featuresService: IFeaturesService,\n private templateRef: TemplateRef<any>,\n private viewContainer: ViewContainerRef\n ) {\n combineLatest([this.featuresService.getFlags$(), this.inputUpdate$])\n .pipe(takeUntilDestroyed())\n .subscribe(([flags, features]: any) => this.updateView(flags, features));\n }\n\n private updateView(flags: FlagChangeset, features: string[]) {\n const shouldShow = features.every((feature) => !flags[feature]?.current);\n\n if (shouldShow && !this.hasView) {\n this.viewContainer.createEmbeddedView(this.templateRef);\n this.hasView = true;\n } else if (!shouldShow && this.hasView) {\n this.viewContainer.clear();\n this.hasView = false;\n }\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Inject, Injectable, inject } from '@angular/core';\nimport { FeaturesServiceToken, IFeaturesService } from '../interfaces/features.interface';\nimport { Route } from '@angular/router';\nimport { Observable } from 'rxjs';\n\nexport const isFeatureOn = (flag: string) => () => inject(FeaturesServiceToken).isOn$(flag);\n\n@Injectable({ providedIn: 'root' })\nexport class IsFeatureOn {\n constructor(@Inject(FeaturesServiceToken) private featuresServiceToken: IFeaturesService) {}\n\n canMatch(route: Route): Observable<boolean> {\n return this.featuresServiceToken.isOn$(route?.data?.['feature']);\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Inject, Injectable, inject } from '@angular/core';\nimport { FeaturesServiceToken, IFeaturesService } from '../interfaces/features.interface';\nimport { Route } from '@angular/router';\nimport { Observable } from 'rxjs';\n\nexport const isFeatureOff = (flag: string) => () => inject(FeaturesServiceToken).isOff$(flag);\n\n@Injectable({ providedIn: 'root' })\nexport class IsFeatureOff {\n constructor(@Inject(FeaturesServiceToken) private featuresServiceToken: IFeaturesService) {}\n\n canMatch(route: Route): Observable<boolean> {\n return this.featuresServiceToken.isOff$(route?.data?.['feature']);\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Inject, Injectable, Optional, inject } from '@angular/core';\nimport { FlagsOverrideToken } from '../interfaces/features.interface';\n\nexport const isFlagsOverrideOn = () => () => inject(FlagsOverrideToken) ?? false;\n\n@Injectable({ providedIn: 'root' })\nexport class IsFlagsOverrideOn {\n constructor(@Optional() @Inject(FlagsOverrideToken) private devToolsToken: boolean) {}\n\n canMatch(): boolean {\n return !!this.devToolsToken;\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* eslint-disable @typescript-eslint/no-unused-vars */\nimport { Injectable } from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { IFeaturesService, FlagChangeset } from '../interfaces/features.interface';\n\n@Injectable()\nexport class DummyFeaturesService implements IFeaturesService {\n init(): Observable<FlagChangeset> {\n return of();\n }\n\n isOn$(): Observable<boolean> {\n return of(false);\n }\n\n isOff$(_key: string): Observable<boolean> {\n return of(true);\n }\n\n getFlags$(): Observable<FlagChangeset> {\n return of({});\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { IsFlagsOverrideOn } from '../guards/is-flags-override-on.guard';\nimport { IsFeatureOn } from '../guards/is-feature-on.guard';\nimport { IsFeatureOff } from '../guards/is-feature-off.guard';\nimport { FeaturesServiceToken, FlagsOverrideToken } from '../interfaces/features.interface';\nimport { DummyFeaturesService } from '../services/dummy-features.service';\n\n/**\n * Provides the dummy feature flags.\n *\n * @returns Environment Providers for Feature Flags.\n */\nexport function provideDummyFeatureFlags() {\n return [\n { provide: FeaturesServiceToken, useClass: DummyFeaturesService },\n { provide: FlagsOverrideToken, useValue: false },\n IsFeatureOn,\n IsFeatureOff,\n IsFlagsOverrideOn\n ];\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { WritableFlagChangeset } from '../interfaces/features.interface';\n\ninterface SerializedFlagSet {\n [key: string]: {\n current: boolean;\n fictive?: boolean;\n };\n}\n\nexport class FlagSetParser {\n static serialize(flags: WritableFlagChangeset): SerializedFlagSet {\n return Object.keys(flags).reduce(\n (acc, key) => ({\n ...acc,\n [key]: {\n current: flags[key].current,\n fictive: flags[key].fictive\n }\n }),\n {}\n );\n }\n\n static deserialize(serializedFlags: SerializedFlagSet): WritableFlagChangeset {\n return Object.keys(serializedFlags).reduce(\n (acc, key) => ({\n ...acc,\n [key]: {\n current: serializedFlags[key].current,\n previous: null,\n ...(serializedFlags[key].fictive ? { fictive: true } : {})\n }\n }),\n {}\n );\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Inject, Injectable, Optional } from '@angular/core';\nimport { BehaviorSubject, combineLatest, Observable, of } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\nimport {\n FlagChangeset,\n IFeaturesService,\n FlagSet,\n IWritableFeaturesService,\n WritableFeaturesServiceConfigToken,\n WritableFlagChangeset,\n WritableFeaturesServiceConfig\n} from '../interfaces/features.interface';\nimport { FlagSetParser } from './flagset.parser';\n\n@Injectable({ providedIn: 'root' })\nexport class StorageFeaturesService implements IFeaturesService, IWritableFeaturesService {\n private currentFlagState: WritableFlagChangeset = {};\n private readonly flags = new BehaviorSubject<WritableFlagChangeset>({});\n private readonly flags$ = this.flags.asObservable();\n private readonly initSubject = new BehaviorSubject<boolean>(false);\n\n constructor(@Optional() @Inject(WritableFeaturesServiceConfigToken) private config?: WritableFeaturesServiceConfig) {\n combineLatest({\n flags: this.flags,\n init: this.waitForInitializationToFinish()\n }).subscribe(({ flags }) => {\n this.currentFlagState = flags;\n sessionStorage.setItem(this.storageKey, JSON.stringify(FlagSetParser.serialize(flags)));\n });\n }\n\n get storageKey(): string {\n return this.config?.storageKey || 'feature-flags';\n }\n\n init(): Observable<WritableFlagChangeset> {\n const storedFlags = JSON.parse(sessionStorage.getItem(this.storageKey) || '{}');\n const initialFlagChangeSet = FlagSetParser.deserialize(storedFlags);\n this.flags.next(initialFlagChangeSet);\n this.initSubject.next(true);\n return of(initialFlagChangeSet);\n }\n\n isOn$(key: string): Observable<boolean> {\n return this.flags$.pipe(map((flags) => !!flags[key]?.current));\n }\n\n isOff$(key: string): Observable<boolean> {\n return this.flags$.pipe(map((flags) => !flags[key]?.current));\n }\n\n getFlags$(): Observable<WritableFlagChangeset> {\n return this.flags$;\n }\n\n setFlag(key: string, value: any): void {\n let fictive = {};\n if (!this.currentFlagState[key]) {\n fictive = { fictive: true };\n } else {\n fictive = this.currentFlagState[key]?.fictive ? { fictive: true } : {};\n }\n\n this.flags.next({\n ...this.currentFlagState,\n [key]: {\n current: value,\n previous: this.currentFlagState[key]?.current ?? null,\n ...fictive\n }\n });\n }\n\n removeFlag(key: string): void {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { [key]: _, ...flags } = this.currentFlagState;\n this.flags.next(flags);\n }\n\n resetFlags(flags: FlagSet): void {\n this.flags.next(\n Object.keys(flags).reduce(\n (acc, key) => ({\n ...acc,\n [key]: {\n current: flags[key],\n previous: null,\n fictive: true\n }\n }),\n {}\n )\n );\n }\n\n mergeFlags(flags: FlagChangeset): void {\n const mergedFlags: WritableFlagChangeset = Object.keys(flags).reduce((acc, key) => {\n const current = this.currentFlagState[key]?.current;\n return {\n ...acc,\n [key]: {\n current: current ?? flags[key].current,\n previous: current ?? null\n }\n };\n }, {});\n\n Object.keys(this.currentFlagState)\n .filter((key) => !flags[key])\n .forEach((key) => {\n mergedFlags[key] = {\n current: this.currentFlagState[key].current,\n previous: this.currentFlagState[key].previous,\n fictive: true\n };\n });\n\n this.flags.next(mergedFlags);\n }\n\n private waitForInitializationToFinish(): Observable<boolean> {\n return this.initSubject.pipe(filter((initialized) => !!initialized));\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Inject, Injectable, Optional } from '@angular/core';\nimport { BehaviorSubject, Observable, combineLatest } from 'rxjs';\nimport { filter, switchMap } from 'rxjs/operators';\nimport {\n IDebugFeaturesService,\n IFeaturesService,\n FlagChangeset,\n OverridableFeaturesServiceToken,\n WritableFeaturesServiceToken,\n WritableFeaturesServiceConfigToken,\n WritableFeaturesServiceConfig,\n FlagSet,\n IWritableFeaturesService\n} from '../interfaces/features.interface';\n\n@Injectable()\nexport class DebugFeaturesService implements IDebugFeaturesService {\n private readonly isInDebugModeSubject = new BehaviorSubject<boolean>(false);\n private readonly isInDebugMode$ = this.isInDebugModeSubject.asObservable();\n private readonly initSubject = new BehaviorSubject<boolean>(false);\n\n get storageKey(): string {\n return `${this.config?.storageKey || 'feature-flags'}-override`;\n }\n\n constructor(\n @Inject(OverridableFeaturesServiceToken) private overriddenFeaturesService: IFeaturesService,\n @Inject(WritableFeaturesServiceToken) private writableFeaturesService: IFeaturesService & IWritableFeaturesService,\n @Optional() @Inject(WritableFeaturesServiceConfigToken) private config?: WritableFeaturesServiceConfig\n ) {\n this.init();\n\n combineLatest({\n debugMode: this.isInDebugModeSubject,\n init: this.waitForInitializationToFinish()\n }).subscribe(({ debugMode }) => {\n sessionStorage.setItem(this.storageKey, JSON.stringify(debugMode));\n });\n }\n\n isOn$(key: string): Observable<boolean> {\n return this.isInDebugMode$.pipe(\n switchMap((isInDebugMode) => (isInDebugMode ? this.writableFeaturesService : this.overriddenFeaturesService).isOn$(key))\n );\n }\n\n isOff$(key: string): Observable<boolean> {\n return this.isInDebugMode$.pipe(\n switchMap((isInDebugMode) => (isInDebugMode ? this.writableFeaturesService : this.overriddenFeaturesService).isOff$(key))\n );\n }\n\n /**\n * Gets the flags as an observable.\n *\n * @returns the observable that emits the flag changeset.\n */\n getFlags$(): Observable<FlagChangeset> {\n return this.isInDebugMode$.pipe(\n switchMap((isInDebugMode) => (isInDebugMode ? this.writableFeaturesService : this.overriddenFeaturesService).getFlags$())\n );\n }\n\n /**\n * Resets the specified flags.\n *\n * @param flags The flags to reset.\n */\n resetFlags(flags: FlagSet): void {\n this.writableFeaturesService.resetFlags(flags);\n }\n\n enable(on: boolean): void {\n this.isInDebugModeSubject.next(on);\n }\n\n isEnabled$(): Observable<boolean> {\n return this.isInDebugMode$;\n }\n\n private init() {\n const storedOverride = JSON.parse(sessionStorage.getItem(this.storageKey) || 'false');\n this.isInDebugModeSubject.next(storedOverride);\n this.initSubject.next(true);\n }\n\n private waitForInitializationToFinish(): Observable<boolean> {\n return this.initSubject.pipe(filter((initialized) => !!initialized));\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ApplicationRef, Inject, Injectable } from '@angular/core';\nimport { FeaturesServiceToken, FlagSet } from '../interfaces/features.interface';\nimport { DebugFeaturesService } from './debug-features.service';\n@Injectable()\nexport class QaFeaturesHelper {\n constructor(private applicationRef: ApplicationRef, @Inject(FeaturesServiceToken) private debugFeaturesService: DebugFeaturesService) {}\n\n isOn(key: string): boolean {\n let isOn = false;\n this.debugFeaturesService.isOn$(key).subscribe((on) => {\n isOn = on;\n });\n\n return isOn;\n }\n\n resetFlags(flags: FlagSet): void {\n this.debugFeaturesService.resetFlags(flags);\n this.applicationRef.tick();\n }\n\n enable(): void {\n this.debugFeaturesService.enable(true);\n this.applicationRef.tick();\n }\n\n disable(): void {\n this.debugFeaturesService.enable(false);\n this.applicationRef.tick();\n }\n\n isEnabled(): boolean {\n let enabled = false;\n this.debugFeaturesService.isEnabled$().subscribe((isEnabled) => {\n enabled = isEnabled;\n });\n return enabled;\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { APP_INITIALIZER } from '@angular/core';\nimport {\n FlagsOverrideToken,\n FeaturesServiceToken,\n QaFeaturesHelperConfig,\n WritableFeaturesServiceConfig,\n WritableFeaturesServiceConfigToken,\n WritableFeaturesServiceToken\n} from '../interfaces/features.interface';\nimport { StorageFeaturesService } from '../services/storage-features.service';\nimport { DebugFeaturesService } from '../services/debug-features.service';\nimport { QaFeaturesHelper } from '../services/qa-features.helper';\nimport { DOCUMENT } from '@angular/common';\n\n/**\n *\n * @param config Configuration for the Feature Flags\n * @returns Environment Providers for Feature Flags\n */\nexport function provideDebugFeatureFlags(config: WritableFeaturesServiceConfig & QaFeaturesHelperConfig) {\n return [\n { provide: FlagsOverrideToken, useValue: true },\n { provide: FeaturesServiceToken, useClass: DebugFeaturesService },\n { provide: WritableFeaturesServiceConfigToken, useValue: config },\n { provide: WritableFeaturesServiceToken, useClass: StorageFeaturesService },\n { provide: QaFeaturesHelper, useClass: QaFeaturesHelper },\n {\n provide: APP_INITIALIZER,\n useFactory: (featuresService: StorageFeaturesService) => () => featuresService.init(),\n deps: [WritableFeaturesServiceToken],\n multi: true\n },\n {\n provide: APP_INITIALIZER,\n useFactory: (qaFeaturesHelper: QaFeaturesHelper, document: Document & { [key: string]: QaFeaturesHelper }) => () => {\n document[config.helperExposeKeyOnDocument ?? 'featureOverrides'] = qaFeaturesHelper;\n },\n deps: [QaFeaturesHelper, DOCUMENT],\n multi: true\n }\n ];\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { of } from 'rxjs';\nimport { FeaturesServiceToken, FlagChangeset, IFeaturesService } from '../interfaces/features.interface';\n\nexport interface MockFeatureFlags {\n [key: string]: boolean;\n}\n\nconst assertFeatureFlag = (flagChangeset: FlagChangeset, key: string): void => {\n const flagChangesetValue = flagChangeset[key];\n\n if (flagChangesetValue === undefined) {\n throw new Error(\n `ERROR FEATURE-FLAG\\n'${key}' feature is not mocked, please mock '${key}' using '${provideMockFeatureFlags.name}' helper in your test\\n`\n );\n }\n};\n\nconst mockFeaturesService = (flagChangeset: FlagChangeset): IFeaturesService => ({\n init: () => of(flagChangeset),\n isOn$: (key) => {\n assertFeatureFlag(flagChangeset, key);\n return of(flagChangeset[key].current);\n },\n isOff$: (key) => {\n assertFeatureFlag(flagChangeset, key);\n return of(!flagChangeset[key].current);\n },\n getFlags$: () => of(flagChangeset)\n});\n\nconst arrayToFlagChangeset = (featureFlags: string[]): FlagChangeset => {\n const flagChangeset: FlagChangeset = {};\n featureFlags.forEach((featureFlag) => {\n flagChangeset[featureFlag] = { current: true, previous: null };\n });\n return flagChangeset;\n};\n\nconst mockFeatureFlagsToFlagChangeset = (mockFeatureFlags: MockFeatureFlags) => {\n const flagChangeset: FlagChangeset = {};\n const featureFlags = Object.keys(mockFeatureFlags);\n featureFlags.forEach((featureFlag) => {\n flagChangeset[featureFlag] = { current: mockFeatureFlags[featureFlag], previous: null };\n });\n return flagChangeset;\n};\n\nexport const provideMockFeatureFlags = (featureFlag: MockFeatureFlags | string | string[]) => {\n if (typeof featureFlag === 'string') {\n featureFlag = [featureFlag];\n }\n\n const flagChangeset = Array.isArray(featureFlag) ? arrayToFlagChangeset(featureFlag) : mockFeatureFlagsToFlagChangeset(featureFlag);\n\n return {\n provide: FeaturesServiceToken,\n useValue: mockFeaturesService(flagChangeset)\n };\n};\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './lib/components/flags/flags.component';\nexport * from './lib/components/feature-override-indicator.component';\nexport * from './lib/components/feature-flags-wrapper';\nexport * from './lib/directives/features.directive';\nexport * from './lib/directives/not-features.directive';\nexport * from './lib/guards/is-feature-on.guard';\nexport * from './lib/guards/is-feature-off.guard';\nexport * from './lib/guards/is-flags-override-on.guard';\nexport * from './lib/providers/dummy-feature-flags.provider';\nexport * from './lib/providers/debug-feature-flags.provider';\nexport * from './lib/interfaces/features.interface';\nexport * from './lib/mocks/features-service-mock.factory';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@alfresco/adf-core",
|
|
3
3
|
"description": "Alfresco ADF core",
|
|
4
|
-
"version": "8.1.0-
|
|
4
|
+
"version": "8.1.0-14757716769",
|
|
5
5
|
"author": "Hyland Software, Inc. and its affiliates",
|
|
6
6
|
"repository": {
|
|
7
7
|
"type": "git",
|
|
@@ -75,8 +75,8 @@
|
|
|
75
75
|
"@angular/router": ">=16.0.0",
|
|
76
76
|
"@mat-datetimepicker/core": ">=12.0.1",
|
|
77
77
|
"@ngx-translate/core": ">=14.0.0",
|
|
78
|
-
"@alfresco/js-api": ">=9.1.0-
|
|
79
|
-
"@alfresco/adf-extensions": ">=8.1.0-
|
|
78
|
+
"@alfresco/js-api": ">=9.1.0-14757716769",
|
|
79
|
+
"@alfresco/adf-extensions": ">=8.1.0-14757716769",
|
|
80
80
|
"minimatch": ">=10.0.0",
|
|
81
81
|
"pdfjs-dist": ">=3.3.122",
|
|
82
82
|
"ts-morph": ">=20.0.0"
|