@ethlete/query 4.1.0 → 4.2.1
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/lib/directives/infinity-query-trigger.directive.mjs +55 -0
- package/esm2022/lib/directives/infinity-query.directive.mjs +176 -0
- package/esm2022/lib/directives/query.directive.mjs +113 -0
- package/esm2022/lib/entity/entity-store.mjs +101 -0
- package/esm2022/lib/query-form/query-form.mjs +173 -0
- package/{esm2020 → esm2022}/lib/query-form/query-form.types.mjs +1 -1
- package/{fesm2020 → fesm2022}/ethlete-query.mjs +39 -17
- package/fesm2022/ethlete-query.mjs.map +1 -0
- package/lib/auth/bearer-auth-provider.d.ts +3 -3
- package/lib/directives/infinity-query-trigger.directive.d.ts +1 -1
- package/lib/directives/infinity-query.directive.d.ts +1 -1
- package/lib/directives/query.directive.d.ts +1 -1
- package/lib/entity/entity-store.d.ts +4 -0
- package/lib/query/query.utils.d.ts +12 -8
- package/lib/query-form/query-form.d.ts +11 -8
- package/lib/query-form/query-form.types.d.ts +4 -0
- package/package.json +8 -14
- package/esm2020/lib/directives/infinity-query-trigger.directive.mjs +0 -54
- package/esm2020/lib/directives/infinity-query.directive.mjs +0 -175
- package/esm2020/lib/directives/query.directive.mjs +0 -112
- package/esm2020/lib/entity/entity-store.mjs +0 -95
- package/esm2020/lib/query-form/query-form.mjs +0 -157
- package/fesm2015/ethlete-query.mjs +0 -2267
- package/fesm2015/ethlete-query.mjs.map +0 -1
- package/fesm2020/ethlete-query.mjs.map +0 -1
- /package/{esm2020 → esm2022}/ethlete-query.mjs +0 -0
- /package/{esm2020 → esm2022}/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/auth/auth-provider.types.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/auth/auth-provider.utils.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/auth/basic-auth-provider.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/auth/bearer-auth-provider.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/auth/custom-header-auth-provider.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/auth/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/directives/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/entity/entity.types.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/entity/entity.utils.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/entity/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/gql/gql.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/gql/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/infinite-query/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/infinite-query/infinity-query.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/infinite-query/infinity-query.types.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/infinite-query/infinity-query.utils.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/logger/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/logger/logger.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/query/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/query/query.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/query/query.types.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/query/query.utils.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/query-client/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/query-client/query-client.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/query-client/query-client.types.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/query-client/query-client.utils.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/query-creator/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/query-creator/query-creator.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/query-creator/query-creator.types.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/query-form/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/query-form/query-form.utils.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/query-store/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/query-store/query-store.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/request/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/request/request.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/request/request.types.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/request/request.util.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/symfony/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/symfony/symfony.types.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/symfony/symfony.utils.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/utils/deep-freeze.util.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/utils/def.util.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/utils/index.mjs +0 -0
package/package.json
CHANGED
|
@@ -1,19 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ethlete/query",
|
|
3
|
-
"version": "4.1
|
|
3
|
+
"version": "4.2.1",
|
|
4
4
|
"dependencies": {
|
|
5
5
|
"tslib": "^2.5.0"
|
|
6
6
|
},
|
|
7
7
|
"peerDependencies": {
|
|
8
|
-
"@angular/common": "^15.2.1",
|
|
9
|
-
"@angular/core": "^15.2.1",
|
|
10
|
-
"@ethlete/core": "1.10.
|
|
8
|
+
"@angular/common": "^15.2.1 || ^16.0.0",
|
|
9
|
+
"@angular/core": "^15.2.1 || ^16.0.0",
|
|
10
|
+
"@ethlete/core": "1.10.1"
|
|
11
11
|
},
|
|
12
|
-
"module": "
|
|
13
|
-
"es2020": "fesm2020/ethlete-query.mjs",
|
|
14
|
-
"esm2020": "esm2020/ethlete-query.mjs",
|
|
15
|
-
"fesm2020": "fesm2020/ethlete-query.mjs",
|
|
16
|
-
"fesm2015": "fesm2015/ethlete-query.mjs",
|
|
12
|
+
"module": "fesm2022/ethlete-query.mjs",
|
|
17
13
|
"typings": "index.d.ts",
|
|
18
14
|
"exports": {
|
|
19
15
|
"./package.json": {
|
|
@@ -21,11 +17,9 @@
|
|
|
21
17
|
},
|
|
22
18
|
".": {
|
|
23
19
|
"types": "./index.d.ts",
|
|
24
|
-
"
|
|
25
|
-
"
|
|
26
|
-
"
|
|
27
|
-
"node": "./fesm2015/ethlete-query.mjs",
|
|
28
|
-
"default": "./fesm2020/ethlete-query.mjs"
|
|
20
|
+
"esm2022": "./esm2022/ethlete-query.mjs",
|
|
21
|
+
"esm": "./esm2022/ethlete-query.mjs",
|
|
22
|
+
"default": "./fesm2022/ethlete-query.mjs"
|
|
29
23
|
}
|
|
30
24
|
},
|
|
31
25
|
"sideEffects": false
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import { Directive, ElementRef, inject, Input } from '@angular/core';
|
|
2
|
-
import { fromEvent, Subject, takeUntil } from 'rxjs';
|
|
3
|
-
import { INFINITY_QUERY_TOKEN } from './infinity-query.directive';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
export class InfinityQueryTriggerDirective {
|
|
6
|
-
constructor() {
|
|
7
|
-
this._elementRef = inject((ElementRef));
|
|
8
|
-
this._infinityQuery = inject(INFINITY_QUERY_TOKEN);
|
|
9
|
-
this._destroy = new Subject();
|
|
10
|
-
this._observer = null;
|
|
11
|
-
this.click$ = fromEvent(this._elementRef.nativeElement, 'click');
|
|
12
|
-
this.scrollContainerSelector = null;
|
|
13
|
-
}
|
|
14
|
-
ngOnInit() {
|
|
15
|
-
const isInteractive = this._elementRef.nativeElement.hasAttribute('etInfinityQueryTrigger');
|
|
16
|
-
if (isInteractive) {
|
|
17
|
-
this.click$.pipe(takeUntil(this._destroy)).subscribe(() => this._infinityQuery.loadNextPage());
|
|
18
|
-
}
|
|
19
|
-
else {
|
|
20
|
-
this._setupIntersectionObserver();
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
ngOnDestroy() {
|
|
24
|
-
this._destroy.next(true);
|
|
25
|
-
this._destroy.unsubscribe();
|
|
26
|
-
this._observer?.disconnect();
|
|
27
|
-
}
|
|
28
|
-
_setupIntersectionObserver() {
|
|
29
|
-
this._observer = new IntersectionObserver((entries) => {
|
|
30
|
-
const entry = entries[0];
|
|
31
|
-
if (entry.isIntersecting && !this._infinityQuery.context.loading) {
|
|
32
|
-
this._infinityQuery.loadNextPage();
|
|
33
|
-
}
|
|
34
|
-
}, {
|
|
35
|
-
root: this.scrollContainerSelector ? document.querySelector(this.scrollContainerSelector) : null,
|
|
36
|
-
rootMargin: '0px',
|
|
37
|
-
threshold: [0.25, 0.5, 0.75, 1],
|
|
38
|
-
});
|
|
39
|
-
this._observer.observe(this._elementRef.nativeElement);
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
InfinityQueryTriggerDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: InfinityQueryTriggerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
43
|
-
InfinityQueryTriggerDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.8", type: InfinityQueryTriggerDirective, isStandalone: true, selector: "[etInfinityQueryTrigger], et-infinity-query-trigger", inputs: { scrollContainerSelector: "scrollContainerSelector" }, ngImport: i0 });
|
|
44
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: InfinityQueryTriggerDirective, decorators: [{
|
|
45
|
-
type: Directive,
|
|
46
|
-
args: [{
|
|
47
|
-
// eslint-disable-next-line @angular-eslint/directive-selector
|
|
48
|
-
selector: '[etInfinityQueryTrigger], et-infinity-query-trigger',
|
|
49
|
-
standalone: true,
|
|
50
|
-
}]
|
|
51
|
-
}], propDecorators: { scrollContainerSelector: [{
|
|
52
|
-
type: Input
|
|
53
|
-
}] } });
|
|
54
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5maW5pdHktcXVlcnktdHJpZ2dlci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3F1ZXJ5L3NyYy9saWIvZGlyZWN0aXZlcy9pbmZpbml0eS1xdWVyeS10cmlnZ2VyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUN4RixPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDckQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7O0FBT2xFLE1BQU0sT0FBTyw2QkFBNkI7SUFMMUM7UUFNVSxnQkFBVyxHQUFHLE1BQU0sQ0FBQyxDQUFBLFVBQXVCLENBQUEsQ0FBQyxDQUFDO1FBQzlDLG1CQUFjLEdBQUcsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFFOUMsYUFBUSxHQUFHLElBQUksT0FBTyxFQUFXLENBQUM7UUFDbEMsY0FBUyxHQUFnQyxJQUFJLENBQUM7UUFFdEQsV0FBTSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUc1RCw0QkFBdUIsR0FBa0IsSUFBSSxDQUFDO0tBb0MvQztJQWxDQyxRQUFRO1FBQ04sTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLHdCQUF3QixDQUFDLENBQUM7UUFFNUYsSUFBSSxhQUFhLEVBQUU7WUFDakIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUM7U0FDaEc7YUFBTTtZQUNMLElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDO1NBQ25DO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QixJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQzVCLElBQUksQ0FBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVPLDBCQUEwQjtRQUNoQyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksb0JBQW9CLENBQ3ZDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDVixNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFekIsSUFBSSxLQUFLLENBQUMsY0FBYyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFO2dCQUNoRSxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxDQUFDO2FBQ3BDO1FBQ0gsQ0FBQyxFQUNEO1lBQ0UsSUFBSSxFQUFFLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSTtZQUNoRyxVQUFVLEVBQUUsS0FBSztZQUNqQixTQUFTLEVBQUUsQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7U0FDaEMsQ0FDRixDQUFDO1FBRUYsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUN6RCxDQUFDOzswSEE3Q1UsNkJBQTZCOzhHQUE3Qiw2QkFBNkI7MkZBQTdCLDZCQUE2QjtrQkFMekMsU0FBUzttQkFBQztvQkFDVCw4REFBOEQ7b0JBQzlELFFBQVEsRUFBRSxxREFBcUQ7b0JBQy9ELFVBQVUsRUFBRSxJQUFJO2lCQUNqQjs4QkFXQyx1QkFBdUI7c0JBRHRCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIGluamVjdCwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBmcm9tRXZlbnQsIFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgSU5GSU5JVFlfUVVFUllfVE9LRU4gfSBmcm9tICcuL2luZmluaXR5LXF1ZXJ5LmRpcmVjdGl2ZSc7XG5cbkBEaXJlY3RpdmUoe1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2RpcmVjdGl2ZS1zZWxlY3RvclxuICBzZWxlY3RvcjogJ1tldEluZmluaXR5UXVlcnlUcmlnZ2VyXSwgZXQtaW5maW5pdHktcXVlcnktdHJpZ2dlcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIEluZmluaXR5UXVlcnlUcmlnZ2VyRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIF9lbGVtZW50UmVmID0gaW5qZWN0KEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+KTtcbiAgcHJpdmF0ZSBfaW5maW5pdHlRdWVyeSA9IGluamVjdChJTkZJTklUWV9RVUVSWV9UT0tFTik7XG5cbiAgcHJpdmF0ZSBfZGVzdHJveSA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG4gIHByaXZhdGUgX29ic2VydmVyOiBJbnRlcnNlY3Rpb25PYnNlcnZlciB8IG51bGwgPSBudWxsO1xuXG4gIGNsaWNrJCA9IGZyb21FdmVudCh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdjbGljaycpO1xuXG4gIEBJbnB1dCgpXG4gIHNjcm9sbENvbnRhaW5lclNlbGVjdG9yOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBjb25zdCBpc0ludGVyYWN0aXZlID0gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Lmhhc0F0dHJpYnV0ZSgnZXRJbmZpbml0eVF1ZXJ5VHJpZ2dlcicpO1xuXG4gICAgaWYgKGlzSW50ZXJhY3RpdmUpIHtcbiAgICAgIHRoaXMuY2xpY2skLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5faW5maW5pdHlRdWVyeS5sb2FkTmV4dFBhZ2UoKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX3NldHVwSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9kZXN0cm95Lm5leHQodHJ1ZSk7XG4gICAgdGhpcy5fZGVzdHJveS51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuX29ic2VydmVyPy5kaXNjb25uZWN0KCk7XG4gIH1cblxuICBwcml2YXRlIF9zZXR1cEludGVyc2VjdGlvbk9ic2VydmVyKCk6IHZvaWQge1xuICAgIHRoaXMuX29ic2VydmVyID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKFxuICAgICAgKGVudHJpZXMpID0+IHtcbiAgICAgICAgY29uc3QgZW50cnkgPSBlbnRyaWVzWzBdO1xuXG4gICAgICAgIGlmIChlbnRyeS5pc0ludGVyc2VjdGluZyAmJiAhdGhpcy5faW5maW5pdHlRdWVyeS5jb250ZXh0LmxvYWRpbmcpIHtcbiAgICAgICAgICB0aGlzLl9pbmZpbml0eVF1ZXJ5LmxvYWROZXh0UGFnZSgpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICByb290OiB0aGlzLnNjcm9sbENvbnRhaW5lclNlbGVjdG9yID8gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcih0aGlzLnNjcm9sbENvbnRhaW5lclNlbGVjdG9yKSA6IG51bGwsXG4gICAgICAgIHJvb3RNYXJnaW46ICcwcHgnLFxuICAgICAgICB0aHJlc2hvbGQ6IFswLjI1LCAwLjUsIDAuNzUsIDFdLFxuICAgICAgfSxcbiAgICApO1xuXG4gICAgdGhpcy5fb2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xuICB9XG59XG4iXX0=
|
|
@@ -1,175 +0,0 @@
|
|
|
1
|
-
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
|
-
import { ChangeDetectorRef, Directive, ErrorHandler, inject, InjectionToken, Input, TemplateRef, ViewContainerRef, } from '@angular/core';
|
|
3
|
-
import { DelayableDirective, DestroyService } from '@ethlete/core';
|
|
4
|
-
import { BehaviorSubject, combineLatest, skip, Subject, takeUntil, tap, withLatestFrom } from 'rxjs';
|
|
5
|
-
import { InfinityQuery } from '../infinite-query';
|
|
6
|
-
import { isQueryStateFailure, isQueryStateLoading, isQueryStateSuccess, switchQueryState, } from '../query';
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
import * as i1 from "@ethlete/core";
|
|
9
|
-
export const INFINITY_QUERY_TOKEN = new InjectionToken('INFINITY_QUERY_TOKEN');
|
|
10
|
-
export class InfinityQueryDirective {
|
|
11
|
-
constructor() {
|
|
12
|
-
this._queryConfigChanged$ = new Subject();
|
|
13
|
-
this._viewContext = {
|
|
14
|
-
$implicit: null,
|
|
15
|
-
etInfinityQuery: null,
|
|
16
|
-
loading: false,
|
|
17
|
-
error: null,
|
|
18
|
-
isFirstLoad: false,
|
|
19
|
-
canLoadMore: false,
|
|
20
|
-
currentPage: null,
|
|
21
|
-
currentCalculatedPage: null,
|
|
22
|
-
totalPages: null,
|
|
23
|
-
itemsPerPage: null,
|
|
24
|
-
currentQuery: null,
|
|
25
|
-
};
|
|
26
|
-
this._infinityQueryInstance = null;
|
|
27
|
-
this._destroy$ = inject(DestroyService, { host: true }).destroy$;
|
|
28
|
-
this._cdr = inject(ChangeDetectorRef);
|
|
29
|
-
this._viewContainerRef = inject(ViewContainerRef);
|
|
30
|
-
this._mainTemplateRef = inject((TemplateRef));
|
|
31
|
-
this._errorHandler = inject(ErrorHandler);
|
|
32
|
-
this._delayable = inject(DelayableDirective, { host: true });
|
|
33
|
-
this._data$ = new BehaviorSubject([]);
|
|
34
|
-
this._didReceiveFirstData$ = new BehaviorSubject(false);
|
|
35
|
-
this._isMainViewCreated = false;
|
|
36
|
-
}
|
|
37
|
-
get infinityQuery() {
|
|
38
|
-
return this._infinityQuery;
|
|
39
|
-
}
|
|
40
|
-
set infinityQuery(v) {
|
|
41
|
-
this._cleanup();
|
|
42
|
-
this._infinityQuery = v;
|
|
43
|
-
this._infinityQueryInstance = this._setupInfinityQuery(v);
|
|
44
|
-
this.loadNextPage();
|
|
45
|
-
}
|
|
46
|
-
get context() {
|
|
47
|
-
return this._viewContext;
|
|
48
|
-
}
|
|
49
|
-
get instance() {
|
|
50
|
-
return this._infinityQueryInstance;
|
|
51
|
-
}
|
|
52
|
-
get data$() {
|
|
53
|
-
return this._data$.asObservable();
|
|
54
|
-
}
|
|
55
|
-
get data() {
|
|
56
|
-
return this._data$.getValue();
|
|
57
|
-
}
|
|
58
|
-
static ngTemplateContextGuard(dir, ctx) {
|
|
59
|
-
return true;
|
|
60
|
-
}
|
|
61
|
-
ngOnInit() {
|
|
62
|
-
this._renderMainView();
|
|
63
|
-
}
|
|
64
|
-
_setupInfinityQuery(config) {
|
|
65
|
-
const instance = new InfinityQuery(config);
|
|
66
|
-
combineLatest([
|
|
67
|
-
instance.currentQuery$.pipe(switchQueryState(), withLatestFrom(instance.currentQuery$)),
|
|
68
|
-
this._delayable.isDelayed$,
|
|
69
|
-
this._didReceiveFirstData$,
|
|
70
|
-
])
|
|
71
|
-
.pipe(tap(([[state, currentQuery], isDelayed, didReceiveFirstData]) => {
|
|
72
|
-
this._viewContext.currentPage = instance.currentPage;
|
|
73
|
-
this._viewContext.totalPages = instance.totalPages;
|
|
74
|
-
this._viewContext.itemsPerPage = instance.itemsPerPage;
|
|
75
|
-
this._viewContext.canLoadMore =
|
|
76
|
-
(instance.totalPages && instance.currentPage && instance.totalPages > instance.currentPage) || false;
|
|
77
|
-
this._viewContext.currentCalculatedPage = instance.currentCalculatedPage;
|
|
78
|
-
this._viewContext.currentQuery = currentQuery;
|
|
79
|
-
if (isQueryStateLoading(state) || isDelayed || (!didReceiveFirstData && isQueryStateSuccess(state))) {
|
|
80
|
-
this._viewContext.loading = true;
|
|
81
|
-
this._viewContext.error = null;
|
|
82
|
-
this._viewContext.isFirstLoad = this.context.etInfinityQuery === null;
|
|
83
|
-
}
|
|
84
|
-
else if (isQueryStateFailure(state)) {
|
|
85
|
-
this._viewContext.loading = false;
|
|
86
|
-
this._viewContext.error = state.error;
|
|
87
|
-
this._viewContext.isFirstLoad = false;
|
|
88
|
-
this._errorHandler.handleError(state.error);
|
|
89
|
-
}
|
|
90
|
-
else if (isQueryStateSuccess(state)) {
|
|
91
|
-
this._viewContext.loading = false;
|
|
92
|
-
this._viewContext.error = null;
|
|
93
|
-
this._viewContext.isFirstLoad = false;
|
|
94
|
-
}
|
|
95
|
-
else {
|
|
96
|
-
this._viewContext.loading = false;
|
|
97
|
-
this._viewContext.error = null;
|
|
98
|
-
this._viewContext.etInfinityQuery = null;
|
|
99
|
-
this._viewContext.$implicit = null;
|
|
100
|
-
this._viewContext.isFirstLoad = false;
|
|
101
|
-
this._viewContext.canLoadMore = false;
|
|
102
|
-
this._viewContext.currentPage = null;
|
|
103
|
-
this._viewContext.itemsPerPage = null;
|
|
104
|
-
this._viewContext.totalPages = null;
|
|
105
|
-
this._viewContext.currentQuery = null;
|
|
106
|
-
this._data$.next([]);
|
|
107
|
-
}
|
|
108
|
-
this._cdr.markForCheck();
|
|
109
|
-
}), takeUntil(this._destroy$), takeUntil(this._queryConfigChanged$))
|
|
110
|
-
.subscribe();
|
|
111
|
-
instance.data$
|
|
112
|
-
.pipe(skip(1), tap((data) => {
|
|
113
|
-
this._viewContext.etInfinityQuery = this._viewContext.$implicit = data;
|
|
114
|
-
this._data$.next(data);
|
|
115
|
-
if (!this._didReceiveFirstData$.getValue()) {
|
|
116
|
-
this._didReceiveFirstData$.next(true);
|
|
117
|
-
}
|
|
118
|
-
this._cdr.markForCheck();
|
|
119
|
-
}), takeUntil(this._destroy$), takeUntil(this._queryConfigChanged$))
|
|
120
|
-
.subscribe();
|
|
121
|
-
return instance;
|
|
122
|
-
}
|
|
123
|
-
loadNextPage() {
|
|
124
|
-
if (!this._infinityQueryInstance) {
|
|
125
|
-
return;
|
|
126
|
-
}
|
|
127
|
-
if (this._viewContext.loading) {
|
|
128
|
-
return;
|
|
129
|
-
}
|
|
130
|
-
this._infinityQueryInstance.nextPage();
|
|
131
|
-
}
|
|
132
|
-
reset(newConfig) {
|
|
133
|
-
if (!this._infinityQueryInstance) {
|
|
134
|
-
return;
|
|
135
|
-
}
|
|
136
|
-
this._infinityQueryInstance.reset(newConfig);
|
|
137
|
-
}
|
|
138
|
-
_renderMainView() {
|
|
139
|
-
if (!this._isMainViewCreated) {
|
|
140
|
-
this._isMainViewCreated = true;
|
|
141
|
-
this._viewContainerRef.createEmbeddedView(this._mainTemplateRef, this._viewContext);
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
_cleanup() {
|
|
145
|
-
this._queryConfigChanged$.next(true);
|
|
146
|
-
this._viewContext.loading = false;
|
|
147
|
-
this._viewContext.error = null;
|
|
148
|
-
this._viewContext.etInfinityQuery = null;
|
|
149
|
-
this._viewContext.$implicit = null;
|
|
150
|
-
this._viewContext.isFirstLoad = false;
|
|
151
|
-
this._viewContext.canLoadMore = false;
|
|
152
|
-
this._viewContext.currentPage = null;
|
|
153
|
-
this._viewContext.itemsPerPage = null;
|
|
154
|
-
this._viewContext.totalPages = null;
|
|
155
|
-
this._viewContext.currentQuery = null;
|
|
156
|
-
this._data$.next([]);
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
InfinityQueryDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: InfinityQueryDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
160
|
-
InfinityQueryDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.8", type: InfinityQueryDirective, isStandalone: true, selector: "[etInfinityQuery]", inputs: { infinityQuery: ["etInfinityQuery", "infinityQuery"] }, providers: [{ provide: INFINITY_QUERY_TOKEN, useExisting: InfinityQueryDirective }, DestroyService], exportAs: ["etInfinityQuery"], hostDirectives: [{ directive: i1.DelayableDirective }], ngImport: i0 });
|
|
161
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: InfinityQueryDirective, decorators: [{
|
|
162
|
-
type: Directive,
|
|
163
|
-
args: [{
|
|
164
|
-
// eslint-disable-next-line @angular-eslint/directive-selector
|
|
165
|
-
selector: '[etInfinityQuery]',
|
|
166
|
-
exportAs: 'etInfinityQuery',
|
|
167
|
-
standalone: true,
|
|
168
|
-
providers: [{ provide: INFINITY_QUERY_TOKEN, useExisting: InfinityQueryDirective }, DestroyService],
|
|
169
|
-
hostDirectives: [DelayableDirective],
|
|
170
|
-
}]
|
|
171
|
-
}], propDecorators: { infinityQuery: [{
|
|
172
|
-
type: Input,
|
|
173
|
-
args: ['etInfinityQuery']
|
|
174
|
-
}] } });
|
|
175
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5maW5pdHktcXVlcnkuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9xdWVyeS9zcmMvbGliL2RpcmVjdGl2ZXMvaW5maW5pdHktcXVlcnkuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUN2RCxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUNOLGNBQWMsRUFDZCxLQUFLLEVBRUwsV0FBVyxFQUNYLGdCQUFnQixHQUNqQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25FLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxjQUFjLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDckcsT0FBTyxFQUFFLGFBQWEsRUFBd0MsTUFBTSxtQkFBbUIsQ0FBQztBQUN4RixPQUFPLEVBRUwsbUJBQW1CLEVBQ25CLG1CQUFtQixFQUNuQixtQkFBbUIsRUFDbkIsZ0JBQWdCLEdBQ2pCLE1BQU0sVUFBVSxDQUFDOzs7QUFzQmxCLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLElBQUksY0FBYyxDQUE4QixzQkFBc0IsQ0FBQyxDQUFDO0FBVTVHLE1BQU0sT0FBTyxzQkFBc0I7SUFSbkM7UUFZbUIseUJBQW9CLEdBQUcsSUFBSSxPQUFPLEVBQVcsQ0FBQztRQUM5QyxpQkFBWSxHQUE0QjtZQUN2RCxTQUFTLEVBQUUsSUFBSTtZQUNmLGVBQWUsRUFBRSxJQUFJO1lBQ3JCLE9BQU8sRUFBRSxLQUFLO1lBQ2QsS0FBSyxFQUFFLElBQUk7WUFFWCxXQUFXLEVBQUUsS0FBSztZQUNsQixXQUFXLEVBQUUsS0FBSztZQUNsQixXQUFXLEVBQUUsSUFBSTtZQUNqQixxQkFBcUIsRUFBRSxJQUFJO1lBQzNCLFVBQVUsRUFBRSxJQUFJO1lBQ2hCLFlBQVksRUFBRSxJQUFJO1lBRWxCLFlBQVksRUFBRSxJQUFJO1NBQ25CLENBQUM7UUFDTSwyQkFBc0IsR0FBOEIsSUFBSSxDQUFDO1FBRWhELGNBQVMsR0FBRyxNQUFNLENBQUMsY0FBYyxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDO1FBQzVELFNBQUksR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUNqQyxzQkFBaUIsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUM3QyxxQkFBZ0IsR0FBRyxNQUFNLENBQUMsQ0FBQSxXQUFvQyxDQUFBLENBQUMsQ0FBQztRQUNoRSxrQkFBYSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNyQyxlQUFVLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFFeEQsV0FBTSxHQUFHLElBQUksZUFBZSxDQUE2QixFQUFFLENBQUMsQ0FBQztRQUV0RSwwQkFBcUIsR0FBRyxJQUFJLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNuRCx1QkFBa0IsR0FBRyxLQUFLLENBQUM7S0FtS3BDO0lBaktDLElBQ0ksYUFBYTtRQUNmLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUM3QixDQUFDO0lBQ0QsSUFBSSxhQUFhLENBQUMsQ0FBSTtRQUNwQixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFFaEIsSUFBSSxDQUFDLGNBQWMsR0FBRyxDQUFDLENBQUM7UUFDeEIsSUFBSSxDQUFDLHNCQUFzQixHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMxRCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUdELElBQUksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMzQixDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUM7SUFDckMsQ0FBQztJQUVELElBQUksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNwQyxDQUFDO0lBRUQsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFRCxNQUFNLENBQUMsc0JBQXNCLENBRTNCLEdBQThCLEVBQUUsR0FBWTtRQUM1QyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFTyxtQkFBbUIsQ0FBQyxNQUFTO1FBQ25DLE1BQU0sUUFBUSxHQUFHLElBQUksYUFBYSxDQUFDLE1BQU0sQ0FBdUIsQ0FBQztRQUVqRSxhQUFhLENBQUM7WUFDWixRQUFRLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLGNBQWMsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDdkYsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVO1lBQzFCLElBQUksQ0FBQyxxQkFBcUI7U0FDM0IsQ0FBQzthQUNDLElBQUksQ0FDSCxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLFlBQVksQ0FBQyxFQUFFLFNBQVMsRUFBRSxtQkFBbUIsQ0FBQyxFQUFFLEVBQUU7WUFDOUQsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEdBQUcsUUFBUSxDQUFDLFdBQVcsQ0FBQztZQUNyRCxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsR0FBRyxRQUFRLENBQUMsVUFBVSxDQUFDO1lBQ25ELElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxHQUFHLFFBQVEsQ0FBQyxZQUFZLENBQUM7WUFDdkQsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXO2dCQUMzQixDQUFDLFFBQVEsQ0FBQyxVQUFVLElBQUksUUFBUSxDQUFDLFdBQVcsSUFBSSxRQUFRLENBQUMsVUFBVSxHQUFHLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxLQUFLLENBQUM7WUFDdkcsSUFBSSxDQUFDLFlBQVksQ0FBQyxxQkFBcUIsR0FBRyxRQUFRLENBQUMscUJBQXFCLENBQUM7WUFFekUsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO1lBRTlDLElBQUksbUJBQW1CLENBQUMsS0FBSyxDQUFDLElBQUksU0FBUyxJQUFJLENBQUMsQ0FBQyxtQkFBbUIsSUFBSSxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO2dCQUNuRyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7Z0JBQ2pDLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztnQkFDL0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLEtBQUssSUFBSSxDQUFDO2FBQ3ZFO2lCQUFNLElBQUksbUJBQW1CLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQ3JDLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztnQkFDbEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztnQkFDdEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO2dCQUN0QyxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDN0M7aUJBQU0sSUFBSSxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDckMsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO2dCQUNsQyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7Z0JBQy9CLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQzthQUN2QztpQkFBTTtnQkFDTCxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7Z0JBQ2xDLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztnQkFDL0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO2dCQUN6QyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7Z0JBRW5DLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztnQkFDdEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO2dCQUN0QyxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7Z0JBQ3JDLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztnQkFDdEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO2dCQUVwQyxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7Z0JBRXRDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2FBQ3RCO1lBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUMzQixDQUFDLENBQUMsRUFDRixTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUN6QixTQUFTLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQ3JDO2FBQ0EsU0FBUyxFQUFFLENBQUM7UUFFZixRQUFRLENBQUMsS0FBSzthQUNYLElBQUksQ0FDSCxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQ1AsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDWCxJQUFJLENBQUMsWUFBWSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsR0FBRyxJQUF5QyxDQUFDO1lBQzVHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBRXZCLElBQUksQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsUUFBUSxFQUFFLEVBQUU7Z0JBQzFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDdkM7WUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzNCLENBQUMsQ0FBQyxFQUNGLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQ3pCLFNBQVMsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FDckM7YUFDQSxTQUFTLEVBQUUsQ0FBQztRQUVmLE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFFRCxZQUFZO1FBQ1YsSUFBSSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsRUFBRTtZQUNoQyxPQUFPO1NBQ1I7UUFFRCxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFO1lBQzdCLE9BQU87U0FDUjtRQUVELElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUN6QyxDQUFDO0lBRUQsS0FBSyxDQUFDLFNBQWdEO1FBQ3BELElBQUksQ0FBQyxJQUFJLENBQUMsc0JBQXNCLEVBQUU7WUFDaEMsT0FBTztTQUNSO1FBRUQsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxTQUFnQixDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVPLGVBQWU7UUFDckIsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRTtZQUM1QixJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDO1lBQy9CLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1NBQ3JGO0lBQ0gsQ0FBQztJQUVPLFFBQVE7UUFDZCxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXJDLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUNsQyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDL0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO1FBQ3pDLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUVuQyxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7UUFDdEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztRQUNyQyxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7UUFDdEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBRXBDLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztRQUV0QyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN2QixDQUFDOzttSEFsTVUsc0JBQXNCO3VHQUF0QixzQkFBc0IsaUlBSHRCLENBQUMsRUFBRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsV0FBVyxFQUFFLHNCQUFzQixFQUFFLEVBQUUsY0FBYyxDQUFDOzJGQUd4RixzQkFBc0I7a0JBUmxDLFNBQVM7bUJBQUM7b0JBQ1QsOERBQThEO29CQUM5RCxRQUFRLEVBQUUsbUJBQW1CO29CQUM3QixRQUFRLEVBQUUsaUJBQWlCO29CQUMzQixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsU0FBUyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsV0FBVyx3QkFBd0IsRUFBRSxFQUFFLGNBQWMsQ0FBQztvQkFDbkcsY0FBYyxFQUFFLENBQUMsa0JBQWtCLENBQUM7aUJBQ3JDOzhCQW9DSyxhQUFhO3NCQURoQixLQUFLO3VCQUFDLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7XG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBEaXJlY3RpdmUsXG4gIEVycm9ySGFuZGxlcixcbiAgaW5qZWN0LFxuICBJbmplY3Rpb25Ub2tlbixcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDb250YWluZXJSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGVsYXlhYmxlRGlyZWN0aXZlLCBEZXN0cm95U2VydmljZSB9IGZyb20gJ0BldGhsZXRlL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBza2lwLCBTdWJqZWN0LCB0YWtlVW50aWwsIHRhcCwgd2l0aExhdGVzdEZyb20gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEluZmluaXR5UXVlcnksIEluZmluaXR5UXVlcnlDb25maWcsIEluZmluaXR5UXVlcnlPZiB9IGZyb20gJy4uL2luZmluaXRlLXF1ZXJ5JztcbmltcG9ydCB7XG4gIEJhc2VBcmd1bWVudHMsXG4gIGlzUXVlcnlTdGF0ZUZhaWx1cmUsXG4gIGlzUXVlcnlTdGF0ZUxvYWRpbmcsXG4gIGlzUXVlcnlTdGF0ZVN1Y2Nlc3MsXG4gIHN3aXRjaFF1ZXJ5U3RhdGUsXG59IGZyb20gJy4uL3F1ZXJ5JztcbmltcG9ydCB7IEFueVF1ZXJ5Q3JlYXRvciwgQ29uc3RydWN0UXVlcnkgfSBmcm9tICcuLi9xdWVyeS1jcmVhdG9yJztcbmltcG9ydCB7IFJlcXVlc3RFcnJvciB9IGZyb20gJy4uL3JlcXVlc3QnO1xuXG5pbnRlcmZhY2UgSW5maW5pdHlRdWVyeUNvbnRleHQ8XG4gIFEgZXh0ZW5kcyBJbmZpbml0eVF1ZXJ5Q29uZmlnPEFueVF1ZXJ5Q3JlYXRvciwgQmFzZUFyZ3VtZW50cyB8IHVuZGVmaW5lZCwgYW55LCB1bmtub3duW10+LFxuPiB7XG4gICRpbXBsaWNpdDogUVsncmVzcG9uc2UnXVsnYXJyYXlUeXBlJ10gfCBudWxsO1xuICBldEluZmluaXR5UXVlcnk6IFFbJ3Jlc3BvbnNlJ11bJ2FycmF5VHlwZSddIHwgbnVsbDtcbiAgbG9hZGluZzogYm9vbGVhbjtcbiAgZXJyb3I6IFJlcXVlc3RFcnJvcjx1bmtub3duPiB8IG51bGw7XG5cbiAgaXNGaXJzdExvYWQ6IGJvb2xlYW47XG4gIGNhbkxvYWRNb3JlOiBib29sZWFuO1xuICBjdXJyZW50UGFnZTogbnVtYmVyIHwgbnVsbDtcbiAgY3VycmVudENhbGN1bGF0ZWRQYWdlOiBudW1iZXIgfCBudWxsO1xuICB0b3RhbFBhZ2VzOiBudW1iZXIgfCBudWxsO1xuICBpdGVtc1BlclBhZ2U6IG51bWJlciB8IG51bGw7XG5cbiAgY3VycmVudFF1ZXJ5OiBDb25zdHJ1Y3RRdWVyeTxRWydxdWVyeUNyZWF0b3InXT4gfCBudWxsO1xufVxuXG5leHBvcnQgY29uc3QgSU5GSU5JVFlfUVVFUllfVE9LRU4gPSBuZXcgSW5qZWN0aW9uVG9rZW48SW5maW5pdHlRdWVyeURpcmVjdGl2ZTxhbnk+PignSU5GSU5JVFlfUVVFUllfVE9LRU4nKTtcblxuQERpcmVjdGl2ZSh7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvZGlyZWN0aXZlLXNlbGVjdG9yXG4gIHNlbGVjdG9yOiAnW2V0SW5maW5pdHlRdWVyeV0nLFxuICBleHBvcnRBczogJ2V0SW5maW5pdHlRdWVyeScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHByb3ZpZGVyczogW3sgcHJvdmlkZTogSU5GSU5JVFlfUVVFUllfVE9LRU4sIHVzZUV4aXN0aW5nOiBJbmZpbml0eVF1ZXJ5RGlyZWN0aXZlIH0sIERlc3Ryb3lTZXJ2aWNlXSxcbiAgaG9zdERpcmVjdGl2ZXM6IFtEZWxheWFibGVEaXJlY3RpdmVdLFxufSlcbmV4cG9ydCBjbGFzcyBJbmZpbml0eVF1ZXJ5RGlyZWN0aXZlPFxuICBRIGV4dGVuZHMgSW5maW5pdHlRdWVyeUNvbmZpZzxBbnlRdWVyeUNyZWF0b3IsIEJhc2VBcmd1bWVudHMgfCB1bmRlZmluZWQsIGFueSwgdW5rbm93bltdPixcbj4gaW1wbGVtZW50cyBPbkluaXRcbntcbiAgcHJpdmF0ZSByZWFkb25seSBfcXVlcnlDb25maWdDaGFuZ2VkJCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3ZpZXdDb250ZXh0OiBJbmZpbml0eVF1ZXJ5Q29udGV4dDxRPiA9IHtcbiAgICAkaW1wbGljaXQ6IG51bGwsXG4gICAgZXRJbmZpbml0eVF1ZXJ5OiBudWxsLFxuICAgIGxvYWRpbmc6IGZhbHNlLFxuICAgIGVycm9yOiBudWxsLFxuXG4gICAgaXNGaXJzdExvYWQ6IGZhbHNlLFxuICAgIGNhbkxvYWRNb3JlOiBmYWxzZSxcbiAgICBjdXJyZW50UGFnZTogbnVsbCxcbiAgICBjdXJyZW50Q2FsY3VsYXRlZFBhZ2U6IG51bGwsXG4gICAgdG90YWxQYWdlczogbnVsbCxcbiAgICBpdGVtc1BlclBhZ2U6IG51bGwsXG5cbiAgICBjdXJyZW50UXVlcnk6IG51bGwsXG4gIH07XG4gIHByaXZhdGUgX2luZmluaXR5UXVlcnlJbnN0YW5jZTogSW5maW5pdHlRdWVyeU9mPFE+IHwgbnVsbCA9IG51bGw7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZGVzdHJveSQgPSBpbmplY3QoRGVzdHJveVNlcnZpY2UsIHsgaG9zdDogdHJ1ZSB9KS5kZXN0cm95JDtcbiAgcHJpdmF0ZSByZWFkb25seSBfY2RyID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfdmlld0NvbnRhaW5lclJlZiA9IGluamVjdChWaWV3Q29udGFpbmVyUmVmKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfbWFpblRlbXBsYXRlUmVmID0gaW5qZWN0KFRlbXBsYXRlUmVmPEluZmluaXR5UXVlcnlDb250ZXh0PFE+Pik7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2Vycm9ySGFuZGxlciA9IGluamVjdChFcnJvckhhbmRsZXIpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9kZWxheWFibGUgPSBpbmplY3QoRGVsYXlhYmxlRGlyZWN0aXZlLCB7IGhvc3Q6IHRydWUgfSk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZGF0YSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFFbJ3Jlc3BvbnNlJ11bJ2FycmF5VHlwZSddPihbXSk7XG5cbiAgcHJpdmF0ZSBfZGlkUmVjZWl2ZUZpcnN0RGF0YSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcbiAgcHJpdmF0ZSBfaXNNYWluVmlld0NyZWF0ZWQgPSBmYWxzZTtcblxuICBASW5wdXQoJ2V0SW5maW5pdHlRdWVyeScpXG4gIGdldCBpbmZpbml0eVF1ZXJ5KCk6IFEge1xuICAgIHJldHVybiB0aGlzLl9pbmZpbml0eVF1ZXJ5O1xuICB9XG4gIHNldCBpbmZpbml0eVF1ZXJ5KHY6IFEpIHtcbiAgICB0aGlzLl9jbGVhbnVwKCk7XG5cbiAgICB0aGlzLl9pbmZpbml0eVF1ZXJ5ID0gdjtcbiAgICB0aGlzLl9pbmZpbml0eVF1ZXJ5SW5zdGFuY2UgPSB0aGlzLl9zZXR1cEluZmluaXR5UXVlcnkodik7XG4gICAgdGhpcy5sb2FkTmV4dFBhZ2UoKTtcbiAgfVxuICBwcml2YXRlIF9pbmZpbml0eVF1ZXJ5ITogUTtcblxuICBnZXQgY29udGV4dCgpIHtcbiAgICByZXR1cm4gdGhpcy5fdmlld0NvbnRleHQ7XG4gIH1cblxuICBnZXQgaW5zdGFuY2UoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2luZmluaXR5UXVlcnlJbnN0YW5jZTtcbiAgfVxuXG4gIGdldCBkYXRhJCgpIHtcbiAgICByZXR1cm4gdGhpcy5fZGF0YSQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBnZXQgZGF0YSgpIHtcbiAgICByZXR1cm4gdGhpcy5fZGF0YSQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHN0YXRpYyBuZ1RlbXBsYXRlQ29udGV4dEd1YXJkPFxuICAgIFEgZXh0ZW5kcyBJbmZpbml0eVF1ZXJ5Q29uZmlnPEFueVF1ZXJ5Q3JlYXRvciwgQmFzZUFyZ3VtZW50cyB8IHVuZGVmaW5lZCwgYW55LCB1bmtub3duW10+LFxuICA+KGRpcjogSW5maW5pdHlRdWVyeURpcmVjdGl2ZTxRPiwgY3R4OiB1bmtub3duKTogY3R4IGlzIEluZmluaXR5UXVlcnlDb250ZXh0PFE+IHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuX3JlbmRlck1haW5WaWV3KCk7XG4gIH1cblxuICBwcml2YXRlIF9zZXR1cEluZmluaXR5UXVlcnkoY29uZmlnOiBRKSB7XG4gICAgY29uc3QgaW5zdGFuY2UgPSBuZXcgSW5maW5pdHlRdWVyeShjb25maWcpIGFzIEluZmluaXR5UXVlcnlPZjxRPjtcblxuICAgIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgaW5zdGFuY2UuY3VycmVudFF1ZXJ5JC5waXBlKHN3aXRjaFF1ZXJ5U3RhdGUoKSwgd2l0aExhdGVzdEZyb20oaW5zdGFuY2UuY3VycmVudFF1ZXJ5JCkpLFxuICAgICAgdGhpcy5fZGVsYXlhYmxlLmlzRGVsYXllZCQsXG4gICAgICB0aGlzLl9kaWRSZWNlaXZlRmlyc3REYXRhJCxcbiAgICBdKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcCgoW1tzdGF0ZSwgY3VycmVudFF1ZXJ5XSwgaXNEZWxheWVkLCBkaWRSZWNlaXZlRmlyc3REYXRhXSkgPT4ge1xuICAgICAgICAgIHRoaXMuX3ZpZXdDb250ZXh0LmN1cnJlbnRQYWdlID0gaW5zdGFuY2UuY3VycmVudFBhZ2U7XG4gICAgICAgICAgdGhpcy5fdmlld0NvbnRleHQudG90YWxQYWdlcyA9IGluc3RhbmNlLnRvdGFsUGFnZXM7XG4gICAgICAgICAgdGhpcy5fdmlld0NvbnRleHQuaXRlbXNQZXJQYWdlID0gaW5zdGFuY2UuaXRlbXNQZXJQYWdlO1xuICAgICAgICAgIHRoaXMuX3ZpZXdDb250ZXh0LmNhbkxvYWRNb3JlID1cbiAgICAgICAgICAgIChpbnN0YW5jZS50b3RhbFBhZ2VzICYmIGluc3RhbmNlLmN1cnJlbnRQYWdlICYmIGluc3RhbmNlLnRvdGFsUGFnZXMgPiBpbnN0YW5jZS5jdXJyZW50UGFnZSkgfHwgZmFsc2U7XG4gICAgICAgICAgdGhpcy5fdmlld0NvbnRleHQuY3VycmVudENhbGN1bGF0ZWRQYWdlID0gaW5zdGFuY2UuY3VycmVudENhbGN1bGF0ZWRQYWdlO1xuXG4gICAgICAgICAgdGhpcy5fdmlld0NvbnRleHQuY3VycmVudFF1ZXJ5ID0gY3VycmVudFF1ZXJ5O1xuXG4gICAgICAgICAgaWYgKGlzUXVlcnlTdGF0ZUxvYWRpbmcoc3RhdGUpIHx8IGlzRGVsYXllZCB8fCAoIWRpZFJlY2VpdmVGaXJzdERhdGEgJiYgaXNRdWVyeVN0YXRlU3VjY2VzcyhzdGF0ZSkpKSB7XG4gICAgICAgICAgICB0aGlzLl92aWV3Q29udGV4dC5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuX3ZpZXdDb250ZXh0LmVycm9yID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMuX3ZpZXdDb250ZXh0LmlzRmlyc3RMb2FkID0gdGhpcy5jb250ZXh0LmV0SW5maW5pdHlRdWVyeSA9PT0gbnVsbDtcbiAgICAgICAgICB9IGVsc2UgaWYgKGlzUXVlcnlTdGF0ZUZhaWx1cmUoc3RhdGUpKSB7XG4gICAgICAgICAgICB0aGlzLl92aWV3Q29udGV4dC5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLl92aWV3Q29udGV4dC5lcnJvciA9IHN0YXRlLmVycm9yO1xuICAgICAgICAgICAgdGhpcy5fdmlld0NvbnRleHQuaXNGaXJzdExvYWQgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuX2Vycm9ySGFuZGxlci5oYW5kbGVFcnJvcihzdGF0ZS5lcnJvcik7XG4gICAgICAgICAgfSBlbHNlIGlmIChpc1F1ZXJ5U3RhdGVTdWNjZXNzKHN0YXRlKSkge1xuICAgICAgICAgICAgdGhpcy5fdmlld0NvbnRleHQubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5fdmlld0NvbnRleHQuZXJyb3IgPSBudWxsO1xuICAgICAgICAgICAgdGhpcy5fdmlld0NvbnRleHQuaXNGaXJzdExvYWQgPSBmYWxzZTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fdmlld0NvbnRleHQubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5fdmlld0NvbnRleHQuZXJyb3IgPSBudWxsO1xuICAgICAgICAgICAgdGhpcy5fdmlld0NvbnRleHQuZXRJbmZpbml0eVF1ZXJ5ID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMuX3ZpZXdDb250ZXh0LiRpbXBsaWNpdCA9IG51bGw7XG5cbiAgICAgICAgICAgIHRoaXMuX3ZpZXdDb250ZXh0LmlzRmlyc3RMb2FkID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLl92aWV3Q29udGV4dC5jYW5Mb2FkTW9yZSA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5fdmlld0NvbnRleHQuY3VycmVudFBhZ2UgPSBudWxsO1xuICAgICAgICAgICAgdGhpcy5fdmlld0NvbnRleHQuaXRlbXNQZXJQYWdlID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMuX3ZpZXdDb250ZXh0LnRvdGFsUGFnZXMgPSBudWxsO1xuXG4gICAgICAgICAgICB0aGlzLl92aWV3Q29udGV4dC5jdXJyZW50UXVlcnkgPSBudWxsO1xuXG4gICAgICAgICAgICB0aGlzLl9kYXRhJC5uZXh0KFtdKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLl9jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH0pLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fcXVlcnlDb25maWdDaGFuZ2VkJCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG5cbiAgICBpbnN0YW5jZS5kYXRhJFxuICAgICAgLnBpcGUoXG4gICAgICAgIHNraXAoMSksXG4gICAgICAgIHRhcCgoZGF0YSkgPT4ge1xuICAgICAgICAgIHRoaXMuX3ZpZXdDb250ZXh0LmV0SW5maW5pdHlRdWVyeSA9IHRoaXMuX3ZpZXdDb250ZXh0LiRpbXBsaWNpdCA9IGRhdGEgYXMgUVsncmVzcG9uc2UnXVsnYXJyYXlUeXBlJ10gfCBudWxsO1xuICAgICAgICAgIHRoaXMuX2RhdGEkLm5leHQoZGF0YSk7XG5cbiAgICAgICAgICBpZiAoIXRoaXMuX2RpZFJlY2VpdmVGaXJzdERhdGEkLmdldFZhbHVlKCkpIHtcbiAgICAgICAgICAgIHRoaXMuX2RpZFJlY2VpdmVGaXJzdERhdGEkLm5leHQodHJ1ZSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy5fY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9KSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX3F1ZXJ5Q29uZmlnQ2hhbmdlZCQpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuXG4gICAgcmV0dXJuIGluc3RhbmNlO1xuICB9XG5cbiAgbG9hZE5leHRQYWdlKCkge1xuICAgIGlmICghdGhpcy5faW5maW5pdHlRdWVyeUluc3RhbmNlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3ZpZXdDb250ZXh0LmxvYWRpbmcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9pbmZpbml0eVF1ZXJ5SW5zdGFuY2UubmV4dFBhZ2UoKTtcbiAgfVxuXG4gIHJlc2V0KG5ld0NvbmZpZz86IE9taXQ8USwgJ3F1ZXJ5Q3JlYXRvcicgfCAncmVzcG9uc2UnPikge1xuICAgIGlmICghdGhpcy5faW5maW5pdHlRdWVyeUluc3RhbmNlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5faW5maW5pdHlRdWVyeUluc3RhbmNlLnJlc2V0KG5ld0NvbmZpZyBhcyBhbnkpO1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVuZGVyTWFpblZpZXcoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9pc01haW5WaWV3Q3JlYXRlZCkge1xuICAgICAgdGhpcy5faXNNYWluVmlld0NyZWF0ZWQgPSB0cnVlO1xuICAgICAgdGhpcy5fdmlld0NvbnRhaW5lclJlZi5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy5fbWFpblRlbXBsYXRlUmVmLCB0aGlzLl92aWV3Q29udGV4dCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfY2xlYW51cCgpIHtcbiAgICB0aGlzLl9xdWVyeUNvbmZpZ0NoYW5nZWQkLm5leHQodHJ1ZSk7XG5cbiAgICB0aGlzLl92aWV3Q29udGV4dC5sb2FkaW5nID0gZmFsc2U7XG4gICAgdGhpcy5fdmlld0NvbnRleHQuZXJyb3IgPSBudWxsO1xuICAgIHRoaXMuX3ZpZXdDb250ZXh0LmV0SW5maW5pdHlRdWVyeSA9IG51bGw7XG4gICAgdGhpcy5fdmlld0NvbnRleHQuJGltcGxpY2l0ID0gbnVsbDtcblxuICAgIHRoaXMuX3ZpZXdDb250ZXh0LmlzRmlyc3RMb2FkID0gZmFsc2U7XG4gICAgdGhpcy5fdmlld0NvbnRleHQuY2FuTG9hZE1vcmUgPSBmYWxzZTtcbiAgICB0aGlzLl92aWV3Q29udGV4dC5jdXJyZW50UGFnZSA9IG51bGw7XG4gICAgdGhpcy5fdmlld0NvbnRleHQuaXRlbXNQZXJQYWdlID0gbnVsbDtcbiAgICB0aGlzLl92aWV3Q29udGV4dC50b3RhbFBhZ2VzID0gbnVsbDtcblxuICAgIHRoaXMuX3ZpZXdDb250ZXh0LmN1cnJlbnRRdWVyeSA9IG51bGw7XG5cbiAgICB0aGlzLl9kYXRhJC5uZXh0KFtdKTtcbiAgfVxufVxuIl19
|
|
@@ -1,112 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectorRef, Directive, ErrorHandler, Input, TemplateRef, ViewContainerRef, } from '@angular/core';
|
|
2
|
-
import { tap } from 'rxjs';
|
|
3
|
-
import { isQuery, isQueryStateFailure, isQueryStateLoading, isQueryStateSuccess, } from '../query';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
export class QueryDirective {
|
|
6
|
-
get query() {
|
|
7
|
-
return this._query;
|
|
8
|
-
}
|
|
9
|
-
set query(v) {
|
|
10
|
-
this._query = v;
|
|
11
|
-
this._subscribeToQuery();
|
|
12
|
-
}
|
|
13
|
-
get cache() {
|
|
14
|
-
return this._cache;
|
|
15
|
-
}
|
|
16
|
-
set cache(v) {
|
|
17
|
-
this._cache = v;
|
|
18
|
-
}
|
|
19
|
-
constructor(_mainTemplateRef, _viewContainerRef, _errorHandler, _cdr) {
|
|
20
|
-
this._mainTemplateRef = _mainTemplateRef;
|
|
21
|
-
this._viewContainerRef = _viewContainerRef;
|
|
22
|
-
this._errorHandler = _errorHandler;
|
|
23
|
-
this._cdr = _cdr;
|
|
24
|
-
this._isMainViewCreated = false;
|
|
25
|
-
this._subscription = null;
|
|
26
|
-
this._viewContext = {
|
|
27
|
-
$implicit: null,
|
|
28
|
-
etQuery: null,
|
|
29
|
-
loading: false,
|
|
30
|
-
refreshing: false,
|
|
31
|
-
error: null,
|
|
32
|
-
progress: null,
|
|
33
|
-
};
|
|
34
|
-
this._cache = false;
|
|
35
|
-
}
|
|
36
|
-
static ngTemplateContextGuard(dir, ctx) {
|
|
37
|
-
return true;
|
|
38
|
-
}
|
|
39
|
-
ngOnInit() {
|
|
40
|
-
this._renderMainView();
|
|
41
|
-
}
|
|
42
|
-
ngOnDestroy() {
|
|
43
|
-
this._subscription?.unsubscribe();
|
|
44
|
-
}
|
|
45
|
-
_subscribeToQuery() {
|
|
46
|
-
this._subscription?.unsubscribe();
|
|
47
|
-
this._subscription = null;
|
|
48
|
-
if (!this.query) {
|
|
49
|
-
this._viewContext.$implicit = null;
|
|
50
|
-
this._viewContext.etQuery = null;
|
|
51
|
-
this._viewContext.loading = false;
|
|
52
|
-
this._viewContext.refreshing = false;
|
|
53
|
-
this._viewContext.error = null;
|
|
54
|
-
this._viewContext.progress = null;
|
|
55
|
-
return;
|
|
56
|
-
}
|
|
57
|
-
const query = isQuery(this.query) ? this.query : this.query.query;
|
|
58
|
-
const sub = query.state$.pipe(tap((state) => this._updateView(state))).subscribe();
|
|
59
|
-
this._subscription = sub;
|
|
60
|
-
}
|
|
61
|
-
_updateView(state) {
|
|
62
|
-
if (isQueryStateLoading(state)) {
|
|
63
|
-
this._viewContext.loading = true;
|
|
64
|
-
this._viewContext.progress = state.progress ?? null;
|
|
65
|
-
this._viewContext.refreshing = state.meta.triggeredVia === 'auto' || state.meta.triggeredVia === 'poll';
|
|
66
|
-
}
|
|
67
|
-
else {
|
|
68
|
-
this._viewContext.loading = false;
|
|
69
|
-
this._viewContext.refreshing = false;
|
|
70
|
-
this._viewContext.progress = null;
|
|
71
|
-
}
|
|
72
|
-
if (isQueryStateSuccess(state)) {
|
|
73
|
-
this._viewContext.etQuery = state.response;
|
|
74
|
-
this._viewContext.$implicit = state.response;
|
|
75
|
-
}
|
|
76
|
-
else if (!this.cache) {
|
|
77
|
-
this._viewContext.etQuery = null;
|
|
78
|
-
this._viewContext.$implicit = null;
|
|
79
|
-
}
|
|
80
|
-
if (isQueryStateFailure(state)) {
|
|
81
|
-
this._viewContext.error = state.error;
|
|
82
|
-
this._errorHandler.handleError(state.error);
|
|
83
|
-
}
|
|
84
|
-
else {
|
|
85
|
-
this._viewContext.error = null;
|
|
86
|
-
}
|
|
87
|
-
this._cdr.markForCheck();
|
|
88
|
-
}
|
|
89
|
-
_renderMainView() {
|
|
90
|
-
if (!this._isMainViewCreated) {
|
|
91
|
-
this._isMainViewCreated = true;
|
|
92
|
-
this._viewContainerRef.createEmbeddedView(this._mainTemplateRef, this._viewContext);
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
QueryDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: QueryDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }, { token: i0.ErrorHandler }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
97
|
-
QueryDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.8", type: QueryDirective, isStandalone: true, selector: "[etQuery]", inputs: { query: ["etQuery", "query"], cache: ["etQueryCache", "cache"] }, ngImport: i0 });
|
|
98
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: QueryDirective, decorators: [{
|
|
99
|
-
type: Directive,
|
|
100
|
-
args: [{
|
|
101
|
-
// eslint-disable-next-line @angular-eslint/directive-selector
|
|
102
|
-
selector: '[etQuery]',
|
|
103
|
-
standalone: true,
|
|
104
|
-
}]
|
|
105
|
-
}], ctorParameters: function () { return [{ type: i0.TemplateRef }, { type: i0.ViewContainerRef }, { type: i0.ErrorHandler }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { query: [{
|
|
106
|
-
type: Input,
|
|
107
|
-
args: ['etQuery']
|
|
108
|
-
}], cache: [{
|
|
109
|
-
type: Input,
|
|
110
|
-
args: ['etQueryCache']
|
|
111
|
-
}] } });
|
|
112
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnkuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9xdWVyeS9zcmMvbGliL2RpcmVjdGl2ZXMvcXVlcnkuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBR0wsV0FBVyxFQUNYLGdCQUFnQixHQUNqQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQWdCLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN6QyxPQUFPLEVBS0wsT0FBTyxFQUNQLG1CQUFtQixFQUNuQixtQkFBbUIsRUFDbkIsbUJBQW1CLEdBQ3BCLE1BQU0sVUFBVSxDQUFDOztBQWtCbEIsTUFBTSxPQUFPLGNBQWM7SUFhekIsSUFDSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7SUFDRCxJQUFJLEtBQUssQ0FBQyxDQUFJO1FBQ1osSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFFaEIsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUdELElBQ0ksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDO0lBQ0QsSUFBSSxLQUFLLENBQUMsQ0FBVTtRQUNsQixJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUNsQixDQUFDO0lBR0QsWUFDVSxnQkFBdUQsRUFDdkQsaUJBQW1DLEVBQ25DLGFBQTJCLEVBQzNCLElBQXVCO1FBSHZCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBdUM7UUFDdkQsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFrQjtRQUNuQyxrQkFBYSxHQUFiLGFBQWEsQ0FBYztRQUMzQixTQUFJLEdBQUosSUFBSSxDQUFtQjtRQXBDekIsdUJBQWtCLEdBQUcsS0FBSyxDQUFDO1FBQzNCLGtC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SSxDQUFDO1lBQ2pDLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztTQUNwQztRQUVELElBQUksbUJBQW1CLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDOUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztZQUV0QyxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDN0M7YUFBTTtZQUNMLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztTQUNoQztRQUVELElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVPLGVBQWU7UUFDckIsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRTtZQUM1QixJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDO1lBQy9CLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1NBQ3JGO0lBQ0gsQ0FBQzs7MkdBL0dVLGNBQWM7K0ZBQWQsY0FBYzsyRkFBZCxjQUFjO2tCQUwxQixTQUFTO21CQUFDO29CQUNULDhEQUE4RDtvQkFDOUQsUUFBUSxFQUFFLFdBQVc7b0JBQ3JCLFVBQVUsRUFBRSxJQUFJO2lCQUNqQjs0TEFlSyxLQUFLO3NCQURSLEtBQUs7dUJBQUMsU0FBUztnQkFZWixLQUFLO3NCQURSLEtBQUs7dUJBQUMsY0FBYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBEaXJlY3RpdmUsXG4gIEVycm9ySGFuZGxlcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NvbnRhaW5lclJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24sIHRhcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgQW55UXVlcnksXG4gIEFueVF1ZXJ5Q29sbGVjdGlvbixcbiAgUXVlcnlPZixcbiAgUXVlcnlTdGF0ZSxcbiAgaXNRdWVyeSxcbiAgaXNRdWVyeVN0YXRlRmFpbHVyZSxcbiAgaXNRdWVyeVN0YXRlTG9hZGluZyxcbiAgaXNRdWVyeVN0YXRlU3VjY2Vzcyxcbn0gZnJvbSAnLi4vcXVlcnknO1xuaW1wb3J0IHsgUXVlcnlEYXRhT2YgfSBmcm9tICcuLi9xdWVyeS1jcmVhdG9yJztcbmltcG9ydCB7IFJlcXVlc3RFcnJvciwgUmVxdWVzdFByb2dyZXNzIH0gZnJvbSAnLi4vcmVxdWVzdCc7XG5cbmludGVyZmFjZSBRdWVyeUNvbnRleHQ8USBleHRlbmRzIEFueVF1ZXJ5IHwgbnVsbD4ge1xuICAkaW1wbGljaXQ6IFF1ZXJ5RGF0YU9mPFE+IHwgbnVsbDtcbiAgZXRRdWVyeTogUXVlcnlEYXRhT2Y8UT4gfCBudWxsO1xuICBsb2FkaW5nOiBib29sZWFuO1xuICByZWZyZXNoaW5nOiBib29sZWFuO1xuICBwcm9ncmVzczogUmVxdWVzdFByb2dyZXNzIHwgbnVsbDtcbiAgZXJyb3I6IFJlcXVlc3RFcnJvcjx1bmtub3duPiB8IG51bGw7XG59XG5cbkBEaXJlY3RpdmUoe1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2RpcmVjdGl2ZS1zZWxlY3RvclxuICBzZWxlY3RvcjogJ1tldFF1ZXJ5XScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIFF1ZXJ5RGlyZWN0aXZlPFEgZXh0ZW5kcyBBbnlRdWVyeSB8IEFueVF1ZXJ5Q29sbGVjdGlvbiB8IG51bGw+IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIF9pc01haW5WaWV3Q3JlYXRlZCA9IGZhbHNlO1xuICBwcml2YXRlIF9zdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiB8IG51bGwgPSBudWxsO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3ZpZXdDb250ZXh0OiBRdWVyeUNvbnRleHQ8UXVlcnlPZjxRPj4gPSB7XG4gICAgJGltcGxpY2l0OiBudWxsLFxuICAgIGV0UXVlcnk6IG51bGwsXG4gICAgbG9hZGluZzogZmFsc2UsXG4gICAgcmVmcmVzaGluZzogZmFsc2UsXG4gICAgZXJyb3I6IG51bGwsXG4gICAgcHJvZ3Jlc3M6IG51bGwsXG4gIH07XG5cbiAgQElucHV0KCdldFF1ZXJ5JylcbiAgZ2V0IHF1ZXJ5KCk6IFEge1xuICAgIHJldHVybiB0aGlzLl9xdWVyeTtcbiAgfVxuICBzZXQgcXVlcnkodjogUSkge1xuICAgIHRoaXMuX3F1ZXJ5ID0gdjtcblxuICAgIHRoaXMuX3N1YnNjcmliZVRvUXVlcnkoKTtcbiAgfVxuICBwcml2YXRlIF9xdWVyeSE6IFE7XG5cbiAgQElucHV0KCdldFF1ZXJ5Q2FjaGUnKVxuICBnZXQgY2FjaGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2NhY2hlO1xuICB9XG4gIHNldCBjYWNoZSh2OiBib29sZWFuKSB7XG4gICAgdGhpcy5fY2FjaGUgPSB2O1xuICB9XG4gIHByaXZhdGUgX2NhY2hlID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBfbWFpblRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxRdWVyeUNvbnRleHQ8UXVlcnlPZjxRPj4+LFxuICAgIHByaXZhdGUgX3ZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXG4gICAgcHJpdmF0ZSBfZXJyb3JIYW5kbGVyOiBFcnJvckhhbmRsZXIsXG4gICAgcHJpdmF0ZSBfY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgKSB7fVxuXG4gIHN0YXRpYyBuZ1RlbXBsYXRlQ29udGV4dEd1YXJkPFEgZXh0ZW5kcyBBbnlRdWVyeSB8IEFueVF1ZXJ5Q29sbGVjdGlvbiB8IG51bGw+KFxuICAgIGRpcjogUXVlcnlEaXJlY3RpdmU8UT4sXG4gICAgY3R4OiB1bmtub3duLFxuICApOiBjdHggaXMgUXVlcnlDb250ZXh0PFF1ZXJ5T2Y8UT4+IHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuX3JlbmRlck1haW5WaWV3KCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwcml2YXRlIF9zdWJzY3JpYmVUb1F1ZXJ5KCk6IHZvaWQge1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb24gPSBudWxsO1xuXG4gICAgaWYgKCF0aGlzLnF1ZXJ5KSB7XG4gICAgICB0aGlzLl92aWV3Q29udGV4dC4kaW1wbGljaXQgPSBudWxsO1xuICAgICAgdGhpcy5fdmlld0NvbnRleHQuZXRRdWVyeSA9IG51bGw7XG4gICAgICB0aGlzLl92aWV3Q29udGV4dC5sb2FkaW5nID0gZmFsc2U7XG4gICAgICB0aGlzLl92aWV3Q29udGV4dC5yZWZyZXNoaW5nID0gZmFsc2U7XG4gICAgICB0aGlzLl92aWV3Q29udGV4dC5lcnJvciA9IG51bGw7XG4gICAgICB0aGlzLl92aWV3Q29udGV4dC5wcm9ncmVzcyA9IG51bGw7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcXVlcnkgPSBpc1F1ZXJ5KHRoaXMucXVlcnkpID8gdGhpcy5xdWVyeSA6IHRoaXMucXVlcnkucXVlcnk7XG5cbiAgICBjb25zdCBzdWIgPSBxdWVyeS5zdGF0ZSQucGlwZSh0YXAoKHN0YXRlKSA9PiB0aGlzLl91cGRhdGVWaWV3KHN0YXRlKSkpLnN1YnNjcmliZSgpO1xuXG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uID0gc3ViO1xuICB9XG5cbiAgcHJpdmF0ZSBfdXBkYXRlVmlldyhzdGF0ZTogUXVlcnlTdGF0ZSkge1xuICAgIGlmIChpc1F1ZXJ5U3RhdGVMb2FkaW5nKHN0YXRlKSkge1xuICAgICAgdGhpcy5fdmlld0NvbnRleHQubG9hZGluZyA9IHRydWU7XG4gICAgICB0aGlzLl92aWV3Q29udGV4dC5wcm9ncmVzcyA9IHN0YXRlLnByb2dyZXNzID8/IG51bGw7XG4gICAgICB0aGlzLl92aWV3Q29udGV4dC5yZWZyZXNoaW5nID0gc3RhdGUubWV0YS50cmlnZ2VyZWRWaWEgPT09ICdhdXRvJyB8fCBzdGF0ZS5tZXRhLnRyaWdnZXJlZFZpYSA9PT0gJ3BvbGwnO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl92aWV3Q29udGV4dC5sb2FkaW5nID0gZmFsc2U7XG4gICAgICB0aGlzLl92aWV3Q29udGV4dC5yZWZyZXNoaW5nID0gZmFsc2U7XG4gICAgICB0aGlzLl92aWV3Q29udGV4dC5wcm9ncmVzcyA9IG51bGw7XG4gICAgfVxuXG4gICAgaWYgKGlzUXVlcnlTdGF0ZVN1Y2Nlc3Moc3RhdGUpKSB7XG4gICAgICB0aGlzLl92aWV3Q29udGV4dC5ldFF1ZXJ5ID0gc3RhdGUucmVzcG9uc2UgYXMgUXVlcnlEYXRhT2Y8UXVlcnlPZjxRPj47XG4gICAgICB0aGlzLl92aWV3Q29udGV4dC4kaW1wbGljaXQgPSBzdGF0ZS5yZXNwb25zZSBhcyBRdWVyeURhdGFPZjxRdWVyeU9mPFE+PjtcbiAgICB9IGVsc2UgaWYgKCF0aGlzLmNhY2hlKSB7XG4gICAgICB0aGlzLl92aWV3Q29udGV4dC5ldFF1ZXJ5ID0gbnVsbDtcbiAgICAgIHRoaXMuX3ZpZXdDb250ZXh0LiRpbXBsaWNpdCA9IG51bGw7XG4gICAgfVxuXG4gICAgaWYgKGlzUXVlcnlTdGF0ZUZhaWx1cmUoc3RhdGUpKSB7XG4gICAgICB0aGlzLl92aWV3Q29udGV4dC5lcnJvciA9IHN0YXRlLmVycm9yO1xuXG4gICAgICB0aGlzLl9lcnJvckhhbmRsZXIuaGFuZGxlRXJyb3Ioc3RhdGUuZXJyb3IpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl92aWV3Q29udGV4dC5lcnJvciA9IG51bGw7XG4gICAgfVxuXG4gICAgdGhpcy5fY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVuZGVyTWFpblZpZXcoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9pc01haW5WaWV3Q3JlYXRlZCkge1xuICAgICAgdGhpcy5faXNNYWluVmlld0NyZWF0ZWQgPSB0cnVlO1xuICAgICAgdGhpcy5fdmlld0NvbnRhaW5lclJlZi5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy5fbWFpblRlbXBsYXRlUmVmLCB0aGlzLl92aWV3Q29udGV4dCk7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
import { Subject, filter, map, startWith } from 'rxjs';
|
|
2
|
-
class EntityStoreError extends Error {
|
|
3
|
-
constructor(message, detail) {
|
|
4
|
-
super(message);
|
|
5
|
-
this.detail = detail;
|
|
6
|
-
this.name = 'EntityStoreError';
|
|
7
|
-
}
|
|
8
|
-
}
|
|
9
|
-
export class EntityStore {
|
|
10
|
-
constructor(_config) {
|
|
11
|
-
this._config = _config;
|
|
12
|
-
this._dictionary = new Map();
|
|
13
|
-
this._change$ = new Subject();
|
|
14
|
-
}
|
|
15
|
-
select(keyOrKeys) {
|
|
16
|
-
if (Array.isArray(keyOrKeys)) {
|
|
17
|
-
return this._selectMany(keyOrKeys);
|
|
18
|
-
}
|
|
19
|
-
return this._select(keyOrKeys);
|
|
20
|
-
}
|
|
21
|
-
set(keyOrKeys, valueOrValues) {
|
|
22
|
-
if (Array.isArray(keyOrKeys)) {
|
|
23
|
-
if (!Array.isArray(valueOrValues)) {
|
|
24
|
-
throw new EntityStoreError('When setting multiple keys, values must be an array', {
|
|
25
|
-
keyOrValues: keyOrKeys,
|
|
26
|
-
valueOrValues,
|
|
27
|
-
});
|
|
28
|
-
}
|
|
29
|
-
for (let i = 0; i < keyOrKeys.length; i++) {
|
|
30
|
-
this._set(keyOrKeys[i], valueOrValues[i]);
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
else {
|
|
34
|
-
this._set(keyOrKeys, valueOrValues);
|
|
35
|
-
}
|
|
36
|
-
this._change$.next(keyOrKeys);
|
|
37
|
-
}
|
|
38
|
-
remove(keyOrKeys) {
|
|
39
|
-
if (Array.isArray(keyOrKeys)) {
|
|
40
|
-
for (const key of keyOrKeys) {
|
|
41
|
-
this._remove(key);
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
else {
|
|
45
|
-
this._remove(keyOrKeys);
|
|
46
|
-
}
|
|
47
|
-
this._change$.next(keyOrKeys);
|
|
48
|
-
}
|
|
49
|
-
logState() {
|
|
50
|
-
console.log('EntityStore:', this._config.name, {
|
|
51
|
-
dictionary: this._dictionary,
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
_select(key) {
|
|
55
|
-
if (this._config.logActions) {
|
|
56
|
-
console.log('EntityStore: select', this._config.name, key);
|
|
57
|
-
}
|
|
58
|
-
return this._change$.pipe(startWith(null), filter((v) => {
|
|
59
|
-
if (v === null) {
|
|
60
|
-
return true;
|
|
61
|
-
}
|
|
62
|
-
if (Array.isArray(v)) {
|
|
63
|
-
return v.includes(key);
|
|
64
|
-
}
|
|
65
|
-
return v === key;
|
|
66
|
-
}), map(() => this._dictionary.get(key) ?? null));
|
|
67
|
-
}
|
|
68
|
-
_selectMany(keys) {
|
|
69
|
-
if (this._config.logActions) {
|
|
70
|
-
console.log('EntityStore: selectMany', this._config.name, keys);
|
|
71
|
-
}
|
|
72
|
-
return this._change$.pipe(startWith(null), filter((v) => {
|
|
73
|
-
if (v === null) {
|
|
74
|
-
return true;
|
|
75
|
-
}
|
|
76
|
-
if (Array.isArray(v)) {
|
|
77
|
-
return keys.some((key) => v.includes(key));
|
|
78
|
-
}
|
|
79
|
-
return keys.includes(v);
|
|
80
|
-
}), map(() => keys.map((key) => this._dictionary.get(key)).filter((value) => value !== undefined)));
|
|
81
|
-
}
|
|
82
|
-
_set(key, value) {
|
|
83
|
-
if (this._config.logActions) {
|
|
84
|
-
console.log('EntityStore: set', this._config.name, key, value);
|
|
85
|
-
}
|
|
86
|
-
this._dictionary.set(key, value);
|
|
87
|
-
}
|
|
88
|
-
_remove(key) {
|
|
89
|
-
if (this._config.logActions) {
|
|
90
|
-
console.log('EntityStore: remove', this._config.name, key);
|
|
91
|
-
}
|
|
92
|
-
this._dictionary.delete(key);
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LXN0b3JlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9xdWVyeS9zcmMvbGliL2VudGl0eS9lbnRpdHktc3RvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUduRSxNQUFNLGdCQUFpQixTQUFRLEtBQUs7SUFDbEMsWUFBWSxPQUFlLEVBQVMsTUFBZ0I7UUFDbEQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRG1CLFdBQU0sR0FBTixNQUFNLENBQVU7UUFFbEQsSUFBSSxDQUFDLElBQUksR0FBRyxrQkFBa0IsQ0FBQztJQUNqQyxDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8sV0FBVztJQUt0QixZQUE2QixPQUEwQjtRQUExQixZQUFPLEdBQVAsT0FBTyxDQUFtQjtRQUp0QyxnQkFBVyxHQUFHLElBQUksR0FBRyxFQUFnQixDQUFDO1FBRXRDLGFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBMkIsQ0FBQztJQUVULENBQUM7SUFJM0QsTUFBTSxDQUFDLFNBQWtDO1FBQ3ZDLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRTtZQUM1QixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDcEM7UUFFRCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUlELEdBQUcsQ0FBQyxTQUFrQyxFQUFFLGFBQXNCO1FBQzVELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRTtZQUM1QixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsRUFBRTtnQkFDakMsTUFBTSxJQUFJLGdCQUFnQixDQUFDLHFEQUFxRCxFQUFFO29CQUNoRixXQUFXLEVBQUUsU0FBUztvQkFDdEIsYUFBYTtpQkFDZCxDQUFDLENBQUM7YUFDSjtZQUVELEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO2dCQUN6QyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUMzQztTQUNGO2FBQU07WUFDTCxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxhQUFrQixDQUFDLENBQUM7U0FDMUM7UUFFRCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBSUQsTUFBTSxDQUFDLFNBQWtDO1FBQ3ZDLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRTtZQUM1QixLQUFLLE1BQU0sR0FBRyxJQUFJLFNBQVMsRUFBRTtnQkFDM0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUNuQjtTQUNGO2FBQU07WUFDTCxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQ3pCO1FBRUQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVELFFBQVE7UUFDTixPQUFPLENBQUMsR0FBRyxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRTtZQUM3QyxVQUFVLEVBQUUsSUFBSSxDQUFDLFdBQVc7U0FDN0IsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLE9BQU8sQ0FBQyxHQUFjO1FBQzVCLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUU7WUFDM0IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQztTQUM1RDtRQUVELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQ3ZCLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFDZixNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUNYLElBQUksQ0FBQyxLQUFLLElBQUksRUFBRTtnQkFDZCxPQUFPLElBQUksQ0FBQzthQUNiO1lBRUQsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUNwQixPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDeEI7WUFFRCxPQUFPLENBQUMsS0FBSyxHQUFHLENBQUM7UUFDbkIsQ0FBQyxDQUFDLEVBQ0YsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUM3QyxDQUFDO0lBQ0osQ0FBQztJQUVPLFdBQVcsQ0FBQyxJQUFpQjtRQUNuQyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFO1lBQzNCLE9BQU8sQ0FBQyxHQUFHLENBQUMseUJBQXlCLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDakU7UUFFRCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUN2QixTQUFTLENBQUMsSUFBSSxDQUFDLEVBQ2YsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDWCxJQUFJLENBQUMsS0FBSyxJQUFJLEVBQUU7Z0JBQ2QsT0FBTyxJQUFJLENBQUM7YUFDYjtZQUVELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDcEIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7YUFDNUM7WUFFRCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDMUIsQ0FBQyxDQUFDLEVBQ0YsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFjLEVBQUUsQ0FBQyxLQUFLLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FDM0csQ0FBQztJQUNKLENBQUM7SUFFTyxJQUFJLENBQUMsR0FBYyxFQUFFLEtBQVE7UUFDbkMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRTtZQUMzQixPQUFPLENBQUMsR0FBRyxDQUFDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztTQUNoRTtRQUVELElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRU8sT0FBTyxDQUFDLEdBQWM7UUFDNUIsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRTtZQUMzQixPQUFPLENBQUMsR0FBRyxDQUFDLHFCQUFxQixFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1NBQzVEO1FBRUQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDL0IsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCwgZmlsdGVyLCBtYXAsIHN0YXJ0V2l0aCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRW50aXR5S2V5LCBFbnRpdHlTdG9yZUNvbmZpZyB9IGZyb20gJy4vZW50aXR5LnR5cGVzJztcblxuY2xhc3MgRW50aXR5U3RvcmVFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nLCBwdWJsaWMgZGV0YWlsPzogdW5rbm93bikge1xuICAgIHN1cGVyKG1lc3NhZ2UpO1xuICAgIHRoaXMubmFtZSA9ICdFbnRpdHlTdG9yZUVycm9yJztcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRW50aXR5U3RvcmU8VD4ge1xuICBwcml2YXRlIHJlYWRvbmx5IF9kaWN0aW9uYXJ5ID0gbmV3IE1hcDxFbnRpdHlLZXksIFQ+KCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfY2hhbmdlJCA9IG5ldyBTdWJqZWN0PEVudGl0eUtleSB8IEVudGl0eUtleVtdPigpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgX2NvbmZpZzogRW50aXR5U3RvcmVDb25maWcpIHt9XG5cbiAgc2VsZWN0KGtleTogRW50aXR5S2V5KTogT2JzZXJ2YWJsZTxUIHwgbnVsbD47XG4gIHNlbGVjdChrZXlzOiBFbnRpdHlLZXlbXSk6IE9ic2VydmFibGU8VFtdPjtcbiAgc2VsZWN0KGtleU9yS2V5czogRW50aXR5S2V5IHwgRW50aXR5S2V5W10pOiBPYnNlcnZhYmxlPFQgfCBudWxsPiB8IE9ic2VydmFibGU8VFtdPiB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoa2V5T3JLZXlzKSkge1xuICAgICAgcmV0dXJuIHRoaXMuX3NlbGVjdE1hbnkoa2V5T3JLZXlzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0KGtleU9yS2V5cyk7XG4gIH1cblxuICBzZXQoa2V5OiBFbnRpdHlLZXksIHZhbHVlOiBUKTogdm9pZDtcbiAgc2V0KGtleXM6IEVudGl0eUtleVtdLCB2YWx1ZXM6IFRbXSk6IHZvaWQ7XG4gIHNldChrZXlPcktleXM6IEVudGl0eUtleSB8IEVudGl0eUtleVtdLCB2YWx1ZU9yVmFsdWVzOiBUIHwgVFtdKSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoa2V5T3JLZXlzKSkge1xuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHZhbHVlT3JWYWx1ZXMpKSB7XG4gICAgICAgIHRocm93IG5ldyBFbnRpdHlTdG9yZUVycm9yKCdXaGVuIHNldHRpbmcgbXVsdGlwbGUga2V5cywgdmFsdWVzIG11c3QgYmUgYW4gYXJyYXknLCB7XG4gICAgICAgICAga2V5T3JWYWx1ZXM6IGtleU9yS2V5cyxcbiAgICAgICAgICB2YWx1ZU9yVmFsdWVzLFxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBrZXlPcktleXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdGhpcy5fc2V0KGtleU9yS2V5c1tpXSwgdmFsdWVPclZhbHVlc1tpXSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX3NldChrZXlPcktleXMsIHZhbHVlT3JWYWx1ZXMgYXMgVCk7XG4gICAgfVxuXG4gICAgdGhpcy5fY2hhbmdlJC5uZXh0KGtleU9yS2V5cyk7XG4gIH1cblxuICByZW1vdmUoa2V5OiBFbnRpdHlLZXkpOiB2b2lkO1xuICByZW1vdmUoa2V5czogRW50aXR5S2V5W10pOiB2b2lkO1xuICByZW1vdmUoa2V5T3JLZXlzOiBFbnRpdHlLZXkgfCBFbnRpdHlLZXlbXSkge1xuICAgIGlmIChBcnJheS5pc0FycmF5KGtleU9yS2V5cykpIHtcbiAgICAgIGZvciAoY29uc3Qga2V5IG9mIGtleU9yS2V5cykge1xuICAgICAgICB0aGlzLl9yZW1vdmUoa2V5KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fcmVtb3ZlKGtleU9yS2V5cyk7XG4gICAgfVxuXG4gICAgdGhpcy5fY2hhbmdlJC5uZXh0KGtleU9yS2V5cyk7XG4gIH1cblxuICBsb2dTdGF0ZSgpIHtcbiAgICBjb25zb2xlLmxvZygnRW50aXR5U3RvcmU6JywgdGhpcy5fY29uZmlnLm5hbWUsIHtcbiAgICAgIGRpY3Rpb25hcnk6IHRoaXMuX2RpY3Rpb25hcnksXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9zZWxlY3Qoa2V5OiBFbnRpdHlLZXkpOiBPYnNlcnZhYmxlPFQgfCBudWxsPiB7XG4gICAgaWYgKHRoaXMuX2NvbmZpZy5sb2dBY3Rpb25zKSB7XG4gICAgICBjb25zb2xlLmxvZygnRW50aXR5U3RvcmU6IHNlbGVjdCcsIHRoaXMuX2NvbmZpZy5uYW1lLCBrZXkpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9jaGFuZ2UkLnBpcGUoXG4gICAgICBzdGFydFdpdGgobnVsbCksXG4gICAgICBmaWx0ZXIoKHYpID0+IHtcbiAgICAgICAgaWYgKHYgPT09IG51bGwpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHYpKSB7XG4gICAgICAgICAgcmV0dXJuIHYuaW5jbHVkZXMoa2V5KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB2ID09PSBrZXk7XG4gICAgICB9KSxcbiAgICAgIG1hcCgoKSA9PiB0aGlzLl9kaWN0aW9uYXJ5LmdldChrZXkpID8/IG51bGwpLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIF9zZWxlY3RNYW55KGtleXM6IEVudGl0eUtleVtdKTogT2JzZXJ2YWJsZTxUW10+IHtcbiAgICBpZiAodGhpcy5fY29uZmlnLmxvZ0FjdGlvbnMpIHtcbiAgICAgIGNvbnNvbGUubG9nKCdFbnRpdHlTdG9yZTogc2VsZWN0TWFueScsIHRoaXMuX2NvbmZpZy5uYW1lLCBrZXlzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fY2hhbmdlJC5waXBlKFxuICAgICAgc3RhcnRXaXRoKG51bGwpLFxuICAgICAgZmlsdGVyKCh2KSA9PiB7XG4gICAgICAgIGlmICh2ID09PSBudWxsKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2KSkge1xuICAgICAgICAgIHJldHVybiBrZXlzLnNvbWUoKGtleSkgPT4gdi5pbmNsdWRlcyhrZXkpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBrZXlzLmluY2x1ZGVzKHYpO1xuICAgICAgfSksXG4gICAgICBtYXAoKCkgPT4ga2V5cy5tYXAoKGtleSkgPT4gdGhpcy5fZGljdGlvbmFyeS5nZXQoa2V5KSkuZmlsdGVyKCh2YWx1ZSk6IHZhbHVlIGlzIFQgPT4gdmFsdWUgIT09IHVuZGVmaW5lZCkpLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIF9zZXQoa2V5OiBFbnRpdHlLZXksIHZhbHVlOiBUKSB7XG4gICAgaWYgKHRoaXMuX2NvbmZpZy5sb2dBY3Rpb25zKSB7XG4gICAgICBjb25zb2xlLmxvZygnRW50aXR5U3RvcmU6IHNldCcsIHRoaXMuX2NvbmZpZy5uYW1lLCBrZXksIHZhbHVlKTtcbiAgICB9XG5cbiAgICB0aGlzLl9kaWN0aW9uYXJ5LnNldChrZXksIHZhbHVlKTtcbiAgfVxuXG4gIHByaXZhdGUgX3JlbW92ZShrZXk6IEVudGl0eUtleSkge1xuICAgIGlmICh0aGlzLl9jb25maWcubG9nQWN0aW9ucykge1xuICAgICAgY29uc29sZS5sb2coJ0VudGl0eVN0b3JlOiByZW1vdmUnLCB0aGlzLl9jb25maWcubmFtZSwga2V5KTtcbiAgICB9XG5cbiAgICB0aGlzLl9kaWN0aW9uYXJ5LmRlbGV0ZShrZXkpO1xuICB9XG59XG4iXX0=
|