@stemy/ngx-utils 17.1.4 → 19.0.0
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/fesm2022/stemy-ngx-utils-tools.mjs.map +1 -1
- package/fesm2022/stemy-ngx-utils.mjs +285 -222
- package/fesm2022/stemy-ngx-utils.mjs.map +1 -1
- package/ngx-utils/ngx-utils.module.d.ts +1 -1
- package/ngx-utils/utils/promise.utils.d.ts +5 -0
- package/package.json +13 -19
- package/public_api.d.ts +1 -0
- package/esm2022/ngx-utils/common-types.mjs +0 -122
- package/esm2022/ngx-utils/components/dynamic-table/dynamic-table.component.mjs +0 -210
- package/esm2022/ngx-utils/components/pagination-menu/pagination-menu.component.mjs +0 -101
- package/esm2022/ngx-utils/components/unordered-list/unordered-list.component.mjs +0 -65
- package/esm2022/ngx-utils/directives/async-method.base.mjs +0 -90
- package/esm2022/ngx-utils/directives/async-method.directive.mjs +0 -21
- package/esm2022/ngx-utils/directives/background.directive.mjs +0 -51
- package/esm2022/ngx-utils/directives/dynamic-table-template.directive.mjs +0 -20
- package/esm2022/ngx-utils/directives/global-template.directive.mjs +0 -28
- package/esm2022/ngx-utils/directives/icon.directive.mjs +0 -67
- package/esm2022/ngx-utils/directives/ngx-template-outlet.directive.mjs +0 -90
- package/esm2022/ngx-utils/directives/pagination-item.directive.mjs +0 -34
- package/esm2022/ngx-utils/directives/pagination.directive.mjs +0 -84
- package/esm2022/ngx-utils/directives/resource-if.directive.mjs +0 -50
- package/esm2022/ngx-utils/directives/sticky-class.directive.mjs +0 -34
- package/esm2022/ngx-utils/directives/sticky.directive.mjs +0 -55
- package/esm2022/ngx-utils/directives/unordered-list-item.directive.mjs +0 -79
- package/esm2022/ngx-utils/directives/unordered-list-template.directive.mjs +0 -20
- package/esm2022/ngx-utils/ngx-utils.imports.mjs +0 -178
- package/esm2022/ngx-utils/ngx-utils.module.mjs +0 -204
- package/esm2022/ngx-utils/pipes/chunk.pipe.mjs +0 -25
- package/esm2022/ngx-utils/pipes/entries.pipe.mjs +0 -28
- package/esm2022/ngx-utils/pipes/extra-item-properties.pipe.mjs +0 -31
- package/esm2022/ngx-utils/pipes/filter.pipe.mjs +0 -37
- package/esm2022/ngx-utils/pipes/find.pipe.mjs +0 -29
- package/esm2022/ngx-utils/pipes/format-number.pipe.mjs +0 -21
- package/esm2022/ngx-utils/pipes/get-offset.pipe.mjs +0 -17
- package/esm2022/ngx-utils/pipes/get-type.pipe.mjs +0 -16
- package/esm2022/ngx-utils/pipes/get-value.pipe.mjs +0 -17
- package/esm2022/ngx-utils/pipes/global-template.pipe.mjs +0 -39
- package/esm2022/ngx-utils/pipes/group-by.pipe.mjs +0 -27
- package/esm2022/ngx-utils/pipes/is-type.pipe.mjs +0 -16
- package/esm2022/ngx-utils/pipes/join.pipe.mjs +0 -19
- package/esm2022/ngx-utils/pipes/keys.pipe.mjs +0 -22
- package/esm2022/ngx-utils/pipes/map.pipe.mjs +0 -29
- package/esm2022/ngx-utils/pipes/max.pipe.mjs +0 -26
- package/esm2022/ngx-utils/pipes/min.pipe.mjs +0 -26
- package/esm2022/ngx-utils/pipes/pop.pipe.mjs +0 -16
- package/esm2022/ngx-utils/pipes/reduce.pipe.mjs +0 -30
- package/esm2022/ngx-utils/pipes/remap.pipe.mjs +0 -32
- package/esm2022/ngx-utils/pipes/replace.pipe.mjs +0 -17
- package/esm2022/ngx-utils/pipes/reverse.pipe.mjs +0 -24
- package/esm2022/ngx-utils/pipes/round.pipe.mjs +0 -21
- package/esm2022/ngx-utils/pipes/safe-html.pipe.mjs +0 -34
- package/esm2022/ngx-utils/pipes/shift.pipe.mjs +0 -16
- package/esm2022/ngx-utils/pipes/split.pipe.mjs +0 -16
- package/esm2022/ngx-utils/pipes/translate.pipe.mjs +0 -86
- package/esm2022/ngx-utils/pipes/values.pipe.mjs +0 -22
- package/esm2022/ngx-utils/plugins/resize-event.plugin.mjs +0 -78
- package/esm2022/ngx-utils/plugins/scroll-event.plugin.mjs +0 -39
- package/esm2022/ngx-utils/services/acl.service.mjs +0 -84
- package/esm2022/ngx-utils/services/api.service.mjs +0 -42
- package/esm2022/ngx-utils/services/auth.service.mjs +0 -14
- package/esm2022/ngx-utils/services/base-http.client.mjs +0 -47
- package/esm2022/ngx-utils/services/base-http.service.mjs +0 -305
- package/esm2022/ngx-utils/services/config.service.mjs +0 -130
- package/esm2022/ngx-utils/services/error-handler.service.mjs +0 -49
- package/esm2022/ngx-utils/services/events.service.mjs +0 -26
- package/esm2022/ngx-utils/services/formatter.service.mjs +0 -49
- package/esm2022/ngx-utils/services/global-template.service.mjs +0 -37
- package/esm2022/ngx-utils/services/icon.service.mjs +0 -26
- package/esm2022/ngx-utils/services/language.service.mjs +0 -124
- package/esm2022/ngx-utils/services/local-http.service.mjs +0 -47
- package/esm2022/ngx-utils/services/open-api.service.mjs +0 -40
- package/esm2022/ngx-utils/services/promise.service.mjs +0 -55
- package/esm2022/ngx-utils/services/state.service.mjs +0 -185
- package/esm2022/ngx-utils/services/static-language.service.mjs +0 -166
- package/esm2022/ngx-utils/services/storage.service.mjs +0 -49
- package/esm2022/ngx-utils/services/toaster.service.mjs +0 -32
- package/esm2022/ngx-utils/services/translated-url.serializer.mjs +0 -73
- package/esm2022/ngx-utils/services/universal.service.mjs +0 -81
- package/esm2022/ngx-utils/services/wasm.service.mjs +0 -46
- package/esm2022/ngx-utils/utils/ajax-request-handler.mjs +0 -40
- package/esm2022/ngx-utils/utils/array.utils.mjs +0 -107
- package/esm2022/ngx-utils/utils/auth.guard.mjs +0 -181
- package/esm2022/ngx-utils/utils/cached-factory.mjs +0 -30
- package/esm2022/ngx-utils/utils/canvas.utils.mjs +0 -388
- package/esm2022/ngx-utils/utils/date.utils.mjs +0 -29
- package/esm2022/ngx-utils/utils/file-system.mjs +0 -25
- package/esm2022/ngx-utils/utils/file.utils.mjs +0 -90
- package/esm2022/ngx-utils/utils/generic-value.mjs +0 -20
- package/esm2022/ngx-utils/utils/geometry.mjs +0 -132
- package/esm2022/ngx-utils/utils/initializer.mjs +0 -20
- package/esm2022/ngx-utils/utils/jsonfn.mjs +0 -45
- package/esm2022/ngx-utils/utils/loader.utils.mjs +0 -55
- package/esm2022/ngx-utils/utils/math.utils.mjs +0 -44
- package/esm2022/ngx-utils/utils/object.utils.mjs +0 -320
- package/esm2022/ngx-utils/utils/observable.utils.mjs +0 -59
- package/esm2022/ngx-utils/utils/reflect.utils.mjs +0 -33
- package/esm2022/ngx-utils/utils/set.utils.mjs +0 -20
- package/esm2022/ngx-utils/utils/string.utils.mjs +0 -41
- package/esm2022/ngx-utils/utils/timer.utils.mjs +0 -52
- package/esm2022/ngx-utils/utils/unique.utils.mjs +0 -24
- package/esm2022/ngx-utils/utils/vector.mjs +0 -77
- package/esm2022/ngx-utils/utils/wasi.mjs +0 -159
- package/esm2022/ngx-utils/utils/wasm-worker-proxy.mjs +0 -99
- package/esm2022/ngx-utils/utils/with-options-provider.mjs +0 -24
- package/esm2022/public_api.mjs +0 -95
- package/esm2022/stemy-ngx-utils.mjs +0 -5
- package/esm2022/tools/config.mjs +0 -71
- package/esm2022/tools/public_api.mjs +0 -2
- package/esm2022/tools/stemy-ngx-utils-tools.mjs +0 -5
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
import { Inject, Injectable, PLATFORM_ID } from "@angular/core";
|
|
2
|
-
import { isPlatformBrowser, isPlatformServer } from "@angular/common";
|
|
3
|
-
import { DeviceDetectorService } from "ngx-device-detector";
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
import * as i1 from "ngx-device-detector";
|
|
6
|
-
/**
|
|
7
|
-
* Use this service to determine which is the current environment
|
|
8
|
-
*/
|
|
9
|
-
export class UniversalService {
|
|
10
|
-
get isBrowser() {
|
|
11
|
-
return isPlatformBrowser(this.platformId);
|
|
12
|
-
}
|
|
13
|
-
get isServer() {
|
|
14
|
-
return isPlatformServer(this.platformId);
|
|
15
|
-
}
|
|
16
|
-
get deviceInfo() {
|
|
17
|
-
return this.isServer
|
|
18
|
-
? {
|
|
19
|
-
userAgent: "angular-universal",
|
|
20
|
-
os: "unknown",
|
|
21
|
-
browser: "node",
|
|
22
|
-
device: "node",
|
|
23
|
-
os_version: "unknown",
|
|
24
|
-
browser_version: "unknown",
|
|
25
|
-
deviceType: "unknown",
|
|
26
|
-
orientation: "landscape"
|
|
27
|
-
}
|
|
28
|
-
: this.dds.getDeviceInfo();
|
|
29
|
-
}
|
|
30
|
-
get browserName() {
|
|
31
|
-
return (this.dds.browser || "").toLowerCase();
|
|
32
|
-
}
|
|
33
|
-
get browserVersion() {
|
|
34
|
-
return this.dds.browser_version;
|
|
35
|
-
}
|
|
36
|
-
get isExplorer() {
|
|
37
|
-
return this.checkBrowser("ie");
|
|
38
|
-
}
|
|
39
|
-
get isEdge() {
|
|
40
|
-
return this.checkBrowser("edge");
|
|
41
|
-
}
|
|
42
|
-
get isChrome() {
|
|
43
|
-
return this.checkBrowser("chrome");
|
|
44
|
-
}
|
|
45
|
-
get isFirefox() {
|
|
46
|
-
return this.checkBrowser("firefox");
|
|
47
|
-
}
|
|
48
|
-
get isSafari() {
|
|
49
|
-
return this.checkBrowser("safari");
|
|
50
|
-
}
|
|
51
|
-
get isTablet() {
|
|
52
|
-
return this.dds.isTablet();
|
|
53
|
-
}
|
|
54
|
-
get isMobile() {
|
|
55
|
-
return this.dds.isMobile();
|
|
56
|
-
}
|
|
57
|
-
get isDesktop() {
|
|
58
|
-
return this.dds.isDesktop();
|
|
59
|
-
}
|
|
60
|
-
get isCrawler() {
|
|
61
|
-
return this.crawler;
|
|
62
|
-
}
|
|
63
|
-
constructor(platformId, dds) {
|
|
64
|
-
this.platformId = platformId;
|
|
65
|
-
this.dds = dds;
|
|
66
|
-
const info = this.dds.getDeviceInfo();
|
|
67
|
-
this.crawler = /(bot|google|baidu|bing|msn|duckduckbot|teoma|slurp|yandex|lighthouse|angular-universal|PTST|PostmanRuntime)/gi.test(info.userAgent);
|
|
68
|
-
}
|
|
69
|
-
checkBrowser(name) {
|
|
70
|
-
return this.browserName.includes(name) || false;
|
|
71
|
-
}
|
|
72
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: UniversalService, deps: [{ token: PLATFORM_ID }, { token: i1.DeviceDetectorService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
73
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: UniversalService }); }
|
|
74
|
-
}
|
|
75
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: UniversalService, decorators: [{
|
|
76
|
-
type: Injectable
|
|
77
|
-
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
78
|
-
type: Inject,
|
|
79
|
-
args: [PLATFORM_ID]
|
|
80
|
-
}] }, { type: i1.DeviceDetectorService }] });
|
|
81
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5pdmVyc2FsLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbmd4LXV0aWxzL3NlcnZpY2VzL3VuaXZlcnNhbC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUM5RCxPQUFPLEVBQUMsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUNwRSxPQUFPLEVBQUMscUJBQXFCLEVBQWEsTUFBTSxxQkFBcUIsQ0FBQzs7O0FBRXRFOztHQUVHO0FBRUgsTUFBTSxPQUFPLGdCQUFnQjtJQUV6QixJQUFJLFNBQVM7UUFDVCxPQUFPLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1IsT0FBTyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELElBQUksVUFBVTtRQUNWLE9BQU8sSUFBSSxDQUFDLFFBQVE7WUFDaEIsQ0FBQyxDQUFDO2dCQUNFLFNBQVMsRUFBRSxtQkFBbUI7Z0JBQzlCLEVBQUUsRUFBRSxTQUFTO2dCQUNiLE9BQU8sRUFBRSxNQUFNO2dCQUNmLE1BQU0sRUFBRSxNQUFNO2dCQUNkLFVBQVUsRUFBRSxTQUFTO2dCQUNyQixlQUFlLEVBQUUsU0FBUztnQkFDMUIsVUFBVSxFQUFFLFNBQVM7Z0JBQ3JCLFdBQVcsRUFBRSxXQUFXO2FBQ3BCO1lBQ1IsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDbkMsQ0FBQztJQUVELElBQUksV0FBVztRQUNYLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNsRCxDQUFDO0lBRUQsSUFBSSxjQUFjO1FBQ2QsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQztJQUNwQyxDQUFDO0lBRUQsSUFBSSxVQUFVO1FBQ1YsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxJQUFJLE1BQU07UUFDTixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVELElBQUksUUFBUTtRQUNSLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQsSUFBSSxTQUFTO1FBQ1QsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRCxJQUFJLFFBQVE7UUFDUixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELElBQUksUUFBUTtRQUNSLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1IsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFRCxJQUFJLFNBQVM7UUFDVCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVELElBQUksU0FBUztRQUNULE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN4QixDQUFDO0lBSUQsWUFBMEMsVUFBa0IsRUFBVyxHQUEwQjtRQUF2RCxlQUFVLEdBQVYsVUFBVSxDQUFRO1FBQVcsUUFBRyxHQUFILEdBQUcsQ0FBdUI7UUFDN0YsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUN0QyxJQUFJLENBQUMsT0FBTyxHQUFHLCtHQUErRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDeEosQ0FBQztJQUVTLFlBQVksQ0FBQyxJQUFZO1FBQy9CLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxDQUFDO0lBQ3BELENBQUM7K0dBOUVRLGdCQUFnQixrQkF1RUwsV0FBVzttSEF2RXRCLGdCQUFnQjs7NEZBQWhCLGdCQUFnQjtrQkFENUIsVUFBVTs7MEJBd0VNLE1BQU07MkJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0LCBJbmplY3RhYmxlLCBQTEFURk9STV9JRH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtpc1BsYXRmb3JtQnJvd3NlciwgaXNQbGF0Zm9ybVNlcnZlcn0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5pbXBvcnQge0RldmljZURldGVjdG9yU2VydmljZSwgRGV2aWNlSW5mb30gZnJvbSBcIm5neC1kZXZpY2UtZGV0ZWN0b3JcIjtcclxuXHJcbi8qKlxyXG4gKiBVc2UgdGhpcyBzZXJ2aWNlIHRvIGRldGVybWluZSB3aGljaCBpcyB0aGUgY3VycmVudCBlbnZpcm9ubWVudFxyXG4gKi9cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgVW5pdmVyc2FsU2VydmljZSB7XHJcblxyXG4gICAgZ2V0IGlzQnJvd3NlcigpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgaXNTZXJ2ZXIoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIGlzUGxhdGZvcm1TZXJ2ZXIodGhpcy5wbGF0Zm9ybUlkKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgZGV2aWNlSW5mbygpOiBEZXZpY2VJbmZvIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5pc1NlcnZlclxyXG4gICAgICAgICAgICA/IHtcclxuICAgICAgICAgICAgICAgIHVzZXJBZ2VudDogXCJhbmd1bGFyLXVuaXZlcnNhbFwiLFxyXG4gICAgICAgICAgICAgICAgb3M6IFwidW5rbm93blwiLFxyXG4gICAgICAgICAgICAgICAgYnJvd3NlcjogXCJub2RlXCIsXHJcbiAgICAgICAgICAgICAgICBkZXZpY2U6IFwibm9kZVwiLFxyXG4gICAgICAgICAgICAgICAgb3NfdmVyc2lvbjogXCJ1bmtub3duXCIsXHJcbiAgICAgICAgICAgICAgICBicm93c2VyX3ZlcnNpb246IFwidW5rbm93blwiLFxyXG4gICAgICAgICAgICAgICAgZGV2aWNlVHlwZTogXCJ1bmtub3duXCIsXHJcbiAgICAgICAgICAgICAgICBvcmllbnRhdGlvbjogXCJsYW5kc2NhcGVcIlxyXG4gICAgICAgICAgICB9IGFzIGFueVxyXG4gICAgICAgICAgICA6IHRoaXMuZGRzLmdldERldmljZUluZm8oKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgYnJvd3Nlck5hbWUoKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gKHRoaXMuZGRzLmJyb3dzZXIgfHwgXCJcIikudG9Mb3dlckNhc2UoKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgYnJvd3NlclZlcnNpb24oKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5kZHMuYnJvd3Nlcl92ZXJzaW9uO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBpc0V4cGxvcmVyKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmNoZWNrQnJvd3NlcihcImllXCIpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBpc0VkZ2UoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hlY2tCcm93c2VyKFwiZWRnZVwiKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgaXNDaHJvbWUoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hlY2tCcm93c2VyKFwiY2hyb21lXCIpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBpc0ZpcmVmb3goKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hlY2tCcm93c2VyKFwiZmlyZWZveFwiKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgaXNTYWZhcmkoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hlY2tCcm93c2VyKFwic2FmYXJpXCIpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBpc1RhYmxldCgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5kZHMuaXNUYWJsZXQoKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgaXNNb2JpbGUoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZGRzLmlzTW9iaWxlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGlzRGVza3RvcCgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5kZHMuaXNEZXNrdG9wKCk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGlzQ3Jhd2xlcigpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jcmF3bGVyO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgcmVhZG9ubHkgY3Jhd2xlcjogYm9vbGVhbjtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihASW5qZWN0KFBMQVRGT1JNX0lEKSByZWFkb25seSBwbGF0Zm9ybUlkOiBzdHJpbmcsIHJlYWRvbmx5IGRkczogRGV2aWNlRGV0ZWN0b3JTZXJ2aWNlKSB7XHJcbiAgICAgICAgY29uc3QgaW5mbyA9IHRoaXMuZGRzLmdldERldmljZUluZm8oKTtcclxuICAgICAgICB0aGlzLmNyYXdsZXIgPSAvKGJvdHxnb29nbGV8YmFpZHV8YmluZ3xtc258ZHVja2R1Y2tib3R8dGVvbWF8c2x1cnB8eWFuZGV4fGxpZ2h0aG91c2V8YW5ndWxhci11bml2ZXJzYWx8UFRTVHxQb3N0bWFuUnVudGltZSkvZ2kudGVzdChpbmZvLnVzZXJBZ2VudCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIGNoZWNrQnJvd3NlcihuYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5icm93c2VyTmFtZS5pbmNsdWRlcyhuYW1lKSB8fCBmYWxzZTtcclxuICAgIH1cclxufVxyXG4iXX0=
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
import { Inject, Injectable } from "@angular/core";
|
|
2
|
-
import { WASI_IMPLEMENTATION } from "../common-types";
|
|
3
|
-
import { WasmWorkerProxy } from "../utils/wasm-worker-proxy";
|
|
4
|
-
import { UniversalService } from "./universal.service";
|
|
5
|
-
import { LocalHttpService } from "./local-http.service";
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
import * as i1 from "./universal.service";
|
|
8
|
-
import * as i2 from "./local-http.service";
|
|
9
|
-
/**
|
|
10
|
-
* Use this service to load WebAssembly modules
|
|
11
|
-
*/
|
|
12
|
-
export class WasmService {
|
|
13
|
-
constructor(universal, http, wasi) {
|
|
14
|
-
this.universal = universal;
|
|
15
|
-
this.http = http;
|
|
16
|
-
this.wasi = wasi.constructor;
|
|
17
|
-
}
|
|
18
|
-
async getModule(name) {
|
|
19
|
-
if (!this.universal.isBrowser || !name)
|
|
20
|
-
return null;
|
|
21
|
-
this.modules = this.modules || {};
|
|
22
|
-
this.modules[name] = this.modules[name] || this.http.get(`wasm/${name}.wasm`, {
|
|
23
|
-
responseType: "arraybuffer"
|
|
24
|
-
}).then(async (bytes) => {
|
|
25
|
-
const wasi = new this.wasi();
|
|
26
|
-
return await wasi.instantiate(bytes);
|
|
27
|
-
});
|
|
28
|
-
return this.modules[name];
|
|
29
|
-
}
|
|
30
|
-
getWorkerModule(name) {
|
|
31
|
-
if (!this.universal.isBrowser || !name)
|
|
32
|
-
return null;
|
|
33
|
-
this.workerModules = this.workerModules || {};
|
|
34
|
-
this.workerModules[name] = new WasmWorkerProxy(this.http.url(`wasm/${name}.wasm`), this.wasi);
|
|
35
|
-
return this.workerModules[name];
|
|
36
|
-
}
|
|
37
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: WasmService, deps: [{ token: i1.UniversalService }, { token: i2.LocalHttpService }, { token: WASI_IMPLEMENTATION }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
38
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: WasmService }); }
|
|
39
|
-
}
|
|
40
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: WasmService, decorators: [{
|
|
41
|
-
type: Injectable
|
|
42
|
-
}], ctorParameters: () => [{ type: i1.UniversalService }, { type: i2.LocalHttpService }, { type: undefined, decorators: [{
|
|
43
|
-
type: Inject,
|
|
44
|
-
args: [WASI_IMPLEMENTATION]
|
|
45
|
-
}] }] });
|
|
46
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2FzbS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL25neC11dGlscy9zZXJ2aWNlcy93YXNtLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLE1BQU0sRUFBRSxVQUFVLEVBQU8sTUFBTSxlQUFlLENBQUM7QUFDdkQsT0FBTyxFQUEyQixtQkFBbUIsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzlFLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUMzRCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQzs7OztBQUd0RDs7R0FFRztBQUVILE1BQU0sT0FBTyxXQUFXO0lBTXBCLFlBQXNCLFNBQTJCLEVBQzNCLElBQXNCLEVBQ0gsSUFBVztRQUY5QixjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUMzQixTQUFJLEdBQUosSUFBSSxDQUFrQjtRQUV4QyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxXQUFrQixDQUFDO0lBQ3hDLENBQUM7SUFFRCxLQUFLLENBQUMsU0FBUyxDQUFZLElBQVk7UUFDbkMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxJQUFJLENBQUMsSUFBSTtZQUNsQyxPQUFPLElBQUksQ0FBQztRQUNoQixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDO1FBQ2xDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLElBQUksT0FBTyxFQUFFO1lBQzFFLFlBQVksRUFBRSxhQUFhO1NBQzlCLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQ3BCLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQzdCLE9BQU8sTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pDLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBaUIsQ0FBQztJQUM5QyxDQUFDO0lBRUQsZUFBZSxDQUFpQixJQUFZO1FBQ3hDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsSUFBSSxDQUFDLElBQUk7WUFDbEMsT0FBTyxJQUFJLENBQUM7UUFDaEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxJQUFJLEVBQUUsQ0FBQztRQUM5QyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksZUFBZSxDQUMxQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLElBQUksT0FBTyxDQUFDLEVBQ2xDLElBQUksQ0FBQyxJQUFJLENBQ1osQ0FBQztRQUNGLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBRTtJQUNyQyxDQUFDOytHQWxDUSxXQUFXLGtGQVFBLG1CQUFtQjttSEFSOUIsV0FBVzs7NEZBQVgsV0FBVztrQkFEdkIsVUFBVTs7MEJBU00sTUFBTTsyQkFBQyxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdCwgSW5qZWN0YWJsZSwgVHlwZX0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtJV2FzaSwgSVdhc20sIElXYXNtQXN5bmMsIFdBU0lfSU1QTEVNRU5UQVRJT059IGZyb20gXCIuLi9jb21tb24tdHlwZXNcIjtcclxuaW1wb3J0IHtXYXNtV29ya2VyUHJveHl9IGZyb20gXCIuLi91dGlscy93YXNtLXdvcmtlci1wcm94eVwiO1xyXG5pbXBvcnQge1VuaXZlcnNhbFNlcnZpY2V9IGZyb20gXCIuL3VuaXZlcnNhbC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7TG9jYWxIdHRwU2VydmljZX0gZnJvbSBcIi4vbG9jYWwtaHR0cC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7V2FzaX0gZnJvbSBcIi4uL3V0aWxzL3dhc2lcIjtcclxuXHJcbi8qKlxyXG4gKiBVc2UgdGhpcyBzZXJ2aWNlIHRvIGxvYWQgV2ViQXNzZW1ibHkgbW9kdWxlc1xyXG4gKi9cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgV2FzbVNlcnZpY2Uge1xyXG5cclxuICAgIHByb3RlY3RlZCB3YXNpOiBUeXBlPFdhc2k+XHJcbiAgICBwcm90ZWN0ZWQgbW9kdWxlczogeyBbdXJsOiBzdHJpbmddOiBQcm9taXNlPGFueT4gfTtcclxuICAgIHByb3RlY3RlZCB3b3JrZXJNb2R1bGVzOiB7IFt1cmw6IHN0cmluZ106IGFueSB9O1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByb3RlY3RlZCB1bml2ZXJzYWw6IFVuaXZlcnNhbFNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgaHR0cDogTG9jYWxIdHRwU2VydmljZSxcclxuICAgICAgICAgICAgICAgIEBJbmplY3QoV0FTSV9JTVBMRU1FTlRBVElPTikgd2FzaTogSVdhc2kpIHtcclxuICAgICAgICB0aGlzLndhc2kgPSB3YXNpLmNvbnN0cnVjdG9yIGFzIGFueTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBnZXRNb2R1bGU8VCA9IElXYXNtPihuYW1lOiBzdHJpbmcpOiBQcm9taXNlPFQ+IHtcclxuICAgICAgICBpZiAoIXRoaXMudW5pdmVyc2FsLmlzQnJvd3NlciB8fCAhbmFtZSlcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgdGhpcy5tb2R1bGVzID0gdGhpcy5tb2R1bGVzIHx8IHt9O1xyXG4gICAgICAgIHRoaXMubW9kdWxlc1tuYW1lXSA9IHRoaXMubW9kdWxlc1tuYW1lXSB8fCB0aGlzLmh0dHAuZ2V0KGB3YXNtLyR7bmFtZX0ud2FzbWAsIHtcclxuICAgICAgICAgICAgcmVzcG9uc2VUeXBlOiBcImFycmF5YnVmZmVyXCJcclxuICAgICAgICB9KS50aGVuKGFzeW5jIChieXRlcykgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCB3YXNpID0gbmV3IHRoaXMud2FzaSgpO1xyXG4gICAgICAgICAgICByZXR1cm4gYXdhaXQgd2FzaS5pbnN0YW50aWF0ZShieXRlcyk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubW9kdWxlc1tuYW1lXSBhcyBQcm9taXNlPGFueT47XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0V29ya2VyTW9kdWxlPFQgPSBJV2FzbUFzeW5jPihuYW1lOiBzdHJpbmcpOiBUIHtcclxuICAgICAgICBpZiAoIXRoaXMudW5pdmVyc2FsLmlzQnJvd3NlciB8fCAhbmFtZSlcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgdGhpcy53b3JrZXJNb2R1bGVzID0gdGhpcy53b3JrZXJNb2R1bGVzIHx8IHt9O1xyXG4gICAgICAgIHRoaXMud29ya2VyTW9kdWxlc1tuYW1lXSA9IG5ldyBXYXNtV29ya2VyUHJveHkoXHJcbiAgICAgICAgICAgIHRoaXMuaHR0cC51cmwoYHdhc20vJHtuYW1lfS53YXNtYCksXHJcbiAgICAgICAgICAgIHRoaXMud2FzaVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMud29ya2VyTW9kdWxlc1tuYW1lXSA7XHJcbiAgICB9XHJcbn1cclxuIl19
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
export class AjaxRequestHandler {
|
|
2
|
-
static { this.isOverridden = false; }
|
|
3
|
-
constructor(pattern, callback) {
|
|
4
|
-
this.pattern = pattern;
|
|
5
|
-
this.callback = callback;
|
|
6
|
-
this.listener = (event) => {
|
|
7
|
-
const details = event.detail;
|
|
8
|
-
if (this.pattern.test(details.url))
|
|
9
|
-
this.callback(details, this.params);
|
|
10
|
-
};
|
|
11
|
-
this.params = {};
|
|
12
|
-
if (typeof XMLHttpRequest !== "undefined" && !AjaxRequestHandler.isOverridden) {
|
|
13
|
-
AjaxRequestHandler.isOverridden = true;
|
|
14
|
-
const originalOpen = XMLHttpRequest.prototype.open;
|
|
15
|
-
XMLHttpRequest.prototype.open = function (method, url, async, user, password) {
|
|
16
|
-
originalOpen.apply(this, arguments);
|
|
17
|
-
window.dispatchEvent(new CustomEvent("ajaxRequest", {
|
|
18
|
-
detail: {
|
|
19
|
-
request: this,
|
|
20
|
-
method: method,
|
|
21
|
-
url: url
|
|
22
|
-
}
|
|
23
|
-
}));
|
|
24
|
-
};
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
listen() {
|
|
28
|
-
if (typeof window === "undefined")
|
|
29
|
-
return this;
|
|
30
|
-
window.addEventListener("ajaxRequest", this.listener);
|
|
31
|
-
return this;
|
|
32
|
-
}
|
|
33
|
-
forget() {
|
|
34
|
-
if (typeof window === "undefined")
|
|
35
|
-
return;
|
|
36
|
-
window.removeEventListener("ajaxRequest", this.listener);
|
|
37
|
-
return this;
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWpheC1yZXF1ZXN0LWhhbmRsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbmd4LXV0aWxzL3V0aWxzL2FqYXgtcmVxdWVzdC1oYW5kbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sT0FBTyxrQkFBa0I7YUFFWixpQkFBWSxHQUFZLEtBQUssQUFBakIsQ0FBa0I7SUFJN0MsWUFBb0IsT0FBZSxFQUFVLFFBQTZCO1FBQXRELFlBQU8sR0FBUCxPQUFPLENBQVE7UUFBVSxhQUFRLEdBQVIsUUFBUSxDQUFxQjtRQThCbEUsYUFBUSxHQUFHLENBQUMsS0FBa0IsRUFBUSxFQUFFO1lBQzVDLE1BQU0sT0FBTyxHQUF3QixLQUFLLENBQUMsTUFBTSxDQUFDO1lBQ2xELElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQztnQkFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDNUUsQ0FBQyxDQUFDO1FBaENFLElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLElBQUksT0FBTyxjQUFjLEtBQUssV0FBVyxJQUFJLENBQUMsa0JBQWtCLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDNUUsa0JBQWtCLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztZQUN2QyxNQUFNLFlBQVksR0FBRyxjQUFjLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQztZQUNuRCxjQUFjLENBQUMsU0FBUyxDQUFDLElBQUksR0FBRyxVQUFVLE1BQWMsRUFBRSxHQUFZLEVBQUUsS0FBZSxFQUFFLElBQWEsRUFBRSxRQUFpQjtnQkFDckgsWUFBWSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7Z0JBQ3BDLE1BQU0sQ0FBQyxhQUFhLENBQUMsSUFBSSxXQUFXLENBQUMsYUFBYSxFQUFFO29CQUNoRCxNQUFNLEVBQUU7d0JBQ0osT0FBTyxFQUFFLElBQUk7d0JBQ2IsTUFBTSxFQUFFLE1BQU07d0JBQ2QsR0FBRyxFQUFFLEdBQUc7cUJBQ1g7aUJBQ0osQ0FBQyxDQUFDLENBQUE7WUFDUCxDQUFDLENBQUM7UUFDTixDQUFDO0lBQ0wsQ0FBQztJQUVELE1BQU07UUFDRixJQUFJLE9BQU8sTUFBTSxLQUFLLFdBQVc7WUFBRSxPQUFPLElBQUksQ0FBQztRQUMvQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN0RCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQsTUFBTTtRQUNGLElBQUksT0FBTyxNQUFNLEtBQUssV0FBVztZQUFFLE9BQU87UUFDMUMsTUFBTSxDQUFDLG1CQUFtQixDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDekQsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QWpheFJlcXVlc3RDYWxsYmFjaywgSUFqYXhSZXF1ZXN0RGV0YWlsc30gZnJvbSBcIi4uL2NvbW1vbi10eXBlc1wiO1xyXG5cclxuZXhwb3J0IGNsYXNzIEFqYXhSZXF1ZXN0SGFuZGxlciB7XHJcblxyXG4gICAgcHJpdmF0ZSBzdGF0aWMgaXNPdmVycmlkZGVuOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgcHVibGljIHBhcmFtczogYW55O1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcGF0dGVybjogUmVnRXhwLCBwcml2YXRlIGNhbGxiYWNrOiBBamF4UmVxdWVzdENhbGxiYWNrKSB7XHJcbiAgICAgICAgdGhpcy5wYXJhbXMgPSB7fTtcclxuICAgICAgICBpZiAodHlwZW9mIFhNTEh0dHBSZXF1ZXN0ICE9PSBcInVuZGVmaW5lZFwiICYmICFBamF4UmVxdWVzdEhhbmRsZXIuaXNPdmVycmlkZGVuKSB7XHJcbiAgICAgICAgICAgIEFqYXhSZXF1ZXN0SGFuZGxlci5pc092ZXJyaWRkZW4gPSB0cnVlO1xyXG4gICAgICAgICAgICBjb25zdCBvcmlnaW5hbE9wZW4gPSBYTUxIdHRwUmVxdWVzdC5wcm90b3R5cGUub3BlbjtcclxuICAgICAgICAgICAgWE1MSHR0cFJlcXVlc3QucHJvdG90eXBlLm9wZW4gPSBmdW5jdGlvbiAobWV0aG9kOiBzdHJpbmcsIHVybD86IHN0cmluZywgYXN5bmM/OiBib29sZWFuLCB1c2VyPzogc3RyaW5nLCBwYXNzd29yZD86IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgICAgICAgICAgb3JpZ2luYWxPcGVuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XHJcbiAgICAgICAgICAgICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoXCJhamF4UmVxdWVzdFwiLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgZGV0YWlsOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Q6IHRoaXMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZDogbWV0aG9kLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6IHVybFxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pKVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBsaXN0ZW4oKTogQWpheFJlcXVlc3RIYW5kbGVyIHtcclxuICAgICAgICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gXCJ1bmRlZmluZWRcIikgcmV0dXJuIHRoaXM7XHJcbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJhamF4UmVxdWVzdFwiLCB0aGlzLmxpc3RlbmVyKTtcclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH1cclxuXHJcbiAgICBmb3JnZXQoKTogQWpheFJlcXVlc3RIYW5kbGVyIHtcclxuICAgICAgICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gXCJ1bmRlZmluZWRcIikgcmV0dXJuO1xyXG4gICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwiYWpheFJlcXVlc3RcIiwgdGhpcy5saXN0ZW5lcik7XHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBsaXN0ZW5lciA9IChldmVudDogQ3VzdG9tRXZlbnQpOiB2b2lkID0+IHtcclxuICAgICAgICBjb25zdCBkZXRhaWxzOiBJQWpheFJlcXVlc3REZXRhaWxzID0gZXZlbnQuZGV0YWlsO1xyXG4gICAgICAgIGlmICh0aGlzLnBhdHRlcm4udGVzdChkZXRhaWxzLnVybCkpIHRoaXMuY2FsbGJhY2soZGV0YWlscywgdGhpcy5wYXJhbXMpO1xyXG4gICAgfTtcclxufVxyXG4iXX0=
|
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
import { ObjectUtils } from "./object.utils";
|
|
2
|
-
export class ArrayUtils {
|
|
3
|
-
static has(arr, ...items) {
|
|
4
|
-
if (!ObjectUtils.isArray(arr) || !ObjectUtils.isArray(items))
|
|
5
|
-
return false;
|
|
6
|
-
for (let i = 0; i < items.length; i++) {
|
|
7
|
-
if (arr.indexOf(items[i]) >= 0)
|
|
8
|
-
return true;
|
|
9
|
-
}
|
|
10
|
-
return false;
|
|
11
|
-
}
|
|
12
|
-
static match(arr, str) {
|
|
13
|
-
if (!ObjectUtils.isArray(arr) || !ObjectUtils.isString(str))
|
|
14
|
-
return false;
|
|
15
|
-
for (let i = 0; i < arr.length; i++) {
|
|
16
|
-
if (arr[i] instanceof RegExp) {
|
|
17
|
-
const regex = arr[i];
|
|
18
|
-
if (regex.test(str))
|
|
19
|
-
return true;
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
return false;
|
|
23
|
-
}
|
|
24
|
-
static any(arr, cb) {
|
|
25
|
-
if (!ObjectUtils.isArray(arr) || !ObjectUtils.isFunction(cb))
|
|
26
|
-
return false;
|
|
27
|
-
for (let i = 0; i < arr.length; i++) {
|
|
28
|
-
if (cb(arr[i]))
|
|
29
|
-
return true;
|
|
30
|
-
}
|
|
31
|
-
return false;
|
|
32
|
-
}
|
|
33
|
-
static move(arr, oldIndex, newIndex) {
|
|
34
|
-
if (!ObjectUtils.isArray(arr))
|
|
35
|
-
return [];
|
|
36
|
-
const length = arr.length;
|
|
37
|
-
while (oldIndex < 0) {
|
|
38
|
-
oldIndex += length;
|
|
39
|
-
}
|
|
40
|
-
while (newIndex < 0) {
|
|
41
|
-
newIndex += length;
|
|
42
|
-
}
|
|
43
|
-
if (newIndex >= length) {
|
|
44
|
-
let k = newIndex - length + 1;
|
|
45
|
-
while (k--) {
|
|
46
|
-
arr.push(undefined);
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
arr.splice(newIndex, 0, arr.splice(oldIndex, 1)[0]);
|
|
50
|
-
return arr;
|
|
51
|
-
}
|
|
52
|
-
static reversed(arr) {
|
|
53
|
-
const result = [];
|
|
54
|
-
if (!ObjectUtils.isArray(arr))
|
|
55
|
-
return result;
|
|
56
|
-
for (let i = arr.length - 1; i >= 0; i--) {
|
|
57
|
-
result.push(arr[i]);
|
|
58
|
-
}
|
|
59
|
-
return result;
|
|
60
|
-
}
|
|
61
|
-
static min(arr, cb) {
|
|
62
|
-
if (!ObjectUtils.isArray(arr))
|
|
63
|
-
return null;
|
|
64
|
-
let min = Number.MAX_SAFE_INTEGER;
|
|
65
|
-
let result = null;
|
|
66
|
-
for (let i = 0; i < arr.length; i++) {
|
|
67
|
-
const current = cb(arr[i], i);
|
|
68
|
-
if (current < min || result === null) {
|
|
69
|
-
min = current;
|
|
70
|
-
result = arr[i];
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
return result;
|
|
74
|
-
}
|
|
75
|
-
static max(arr, cb) {
|
|
76
|
-
if (!ObjectUtils.isArray(arr))
|
|
77
|
-
return null;
|
|
78
|
-
let max = Number.MIN_SAFE_INTEGER;
|
|
79
|
-
let result = null;
|
|
80
|
-
for (let i = 0; i < arr.length; i++) {
|
|
81
|
-
const current = cb(arr[i], i);
|
|
82
|
-
if (current > max || result === null) {
|
|
83
|
-
max = current;
|
|
84
|
-
result = arr[i];
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
return result;
|
|
88
|
-
}
|
|
89
|
-
static chunk(arr, size) {
|
|
90
|
-
if (!ObjectUtils.isArray(arr))
|
|
91
|
-
return [];
|
|
92
|
-
size = Math.max(1, size);
|
|
93
|
-
const result = [];
|
|
94
|
-
for (let i = 0; i < arr.length; i += size) {
|
|
95
|
-
result.push(arr.slice(i, i + size));
|
|
96
|
-
}
|
|
97
|
-
return result;
|
|
98
|
-
}
|
|
99
|
-
static unique(arr) {
|
|
100
|
-
if (!ObjectUtils.isArray(arr))
|
|
101
|
-
return [];
|
|
102
|
-
return arr.filter((value, index, self) => {
|
|
103
|
-
return self.indexOf(value) === index;
|
|
104
|
-
});
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJyYXkudXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbmd4LXV0aWxzL3V0aWxzL2FycmF5LnV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxNQUFNLE9BQU8sVUFBVTtJQUVuQixNQUFNLENBQUMsR0FBRyxDQUFDLEdBQVUsRUFBRSxHQUFHLEtBQVk7UUFDbEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztZQUFFLE9BQU8sS0FBSyxDQUFDO1FBQzNFLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDcEMsSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7Z0JBQUUsT0FBTyxJQUFJLENBQUM7UUFDaEQsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQVUsRUFBRSxHQUFXO1FBQ2hDLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUM7WUFBRSxPQUFPLEtBQUssQ0FBQztRQUMxRSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ2xDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxZQUFZLE1BQU0sRUFBRSxDQUFDO2dCQUMzQixNQUFNLEtBQUssR0FBVyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JB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LElBQUksRUFBRSxDQUFDO1lBQ3hDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUE7UUFDdkMsQ0FBQztRQUNELE9BQU8sTUFBTSxDQUFBO0lBQ2pCLENBQUM7SUFFRCxNQUFNLENBQUMsTUFBTSxDQUFJLEdBQVE7UUFDckIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFDekMsT0FBTyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsRUFBRTtZQUNyQyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssS0FBSyxDQUFDO1FBQ3pDLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtPYmplY3RVdGlsc30gZnJvbSBcIi4vb2JqZWN0LnV0aWxzXCI7XHJcblxyXG5leHBvcnQgY2xhc3MgQXJyYXlVdGlscyB7XHJcblxyXG4gICAgc3RhdGljIGhhcyhhcnI6IGFueVtdLCAuLi5pdGVtczogYW55W10pOiBib29sZWFuIHtcclxuICAgICAgICBpZiAoIU9iamVjdFV0aWxzLmlzQXJyYXkoYXJyKSB8fCAhT2JqZWN0VXRpbHMuaXNBcnJheShpdGVtcykpIHJldHVybiBmYWxzZTtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGl0ZW1zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmIChhcnIuaW5kZXhPZihpdGVtc1tpXSkgPj0gMCkgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgbWF0Y2goYXJyOiBhbnlbXSwgc3RyOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgICAgICBpZiAoIU9iamVjdFV0aWxzLmlzQXJyYXkoYXJyKSB8fCAhT2JqZWN0VXRpbHMuaXNTdHJpbmcoc3RyKSkgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmIChhcnJbaV0gaW5zdGFuY2VvZiBSZWdFeHApIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHJlZ2V4ID0gPFJlZ0V4cD5hcnJbaV07XHJcbiAgICAgICAgICAgICAgICBpZiAocmVnZXgudGVzdChzdHIpKSByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGFueTxUPihhcnI6IFRbXSwgY2I6IChpdGVtOiBUKSA9PiBib29sZWFuKTogYm9vbGVhbiB7XHJcbiAgICAgICAgaWYgKCFPYmplY3RVdGlscy5pc0FycmF5KGFycikgfHwgIU9iamVjdFV0aWxzLmlzRnVuY3Rpb24oY2IpKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKGNiKGFycltpXSkpIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIG1vdmU8VD4oYXJyOiBUW10sIG9sZEluZGV4OiBudW1iZXIsIG5ld0luZGV4OiBudW1iZXIpOiBUW10ge1xyXG4gICAgICAgIGlmICghT2JqZWN0VXRpbHMuaXNBcnJheShhcnIpKSByZXR1cm4gW107XHJcbiAgICAgICAgY29uc3QgbGVuZ3RoID0gYXJyLmxlbmd0aDtcclxuICAgICAgICB3aGlsZSAob2xkSW5kZXggPCAwKSB7XHJcbiAgICAgICAgICAgIG9sZEluZGV4ICs9IGxlbmd0aDtcclxuICAgICAgICB9XHJcbiAgICAgICAgd2hpbGUgKG5ld0luZGV4IDwgMCkge1xyXG4gICAgICAgICAgICBuZXdJbmRleCArPSBsZW5ndGg7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChuZXdJbmRleCA+PSBsZW5ndGgpIHtcclxuICAgICAgICAgICAgbGV0IGsgPSBuZXdJbmRleCAtIGxlbmd0aCArIDE7XHJcbiAgICAgICAgICAgIHdoaWxlIChrLS0pIHtcclxuICAgICAgICAgICAgICAgIGFyci5wdXNoKHVuZGVmaW5lZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgYXJyLnNwbGljZShuZXdJbmRleCwgMCwgYXJyLnNwbGljZShvbGRJbmRleCwgMSlbMF0pO1xyXG4gICAgICAgIHJldHVybiBhcnI7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIHJldmVyc2VkKGFycjogYW55W10pOiBhbnlbXSB7XHJcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gW107XHJcbiAgICAgICAgaWYgKCFPYmplY3RVdGlscy5pc0FycmF5KGFycikpIHJldHVybiByZXN1bHQ7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IGFyci5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xyXG4gICAgICAgICAgICByZXN1bHQucHVzaChhcnJbaV0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBtaW48VD4oYXJyOiBUW10sIGNiOiAoaXRlbTogVCwgaW5kZXg/OiBudW1iZXIpID0+IG51bWJlcik6IFQge1xyXG4gICAgICAgIGlmICghT2JqZWN0VXRpbHMuaXNBcnJheShhcnIpKSByZXR1cm4gbnVsbDtcclxuICAgICAgICBsZXQgbWluID0gTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVI7XHJcbiAgICAgICAgbGV0IHJlc3VsdCA9IG51bGw7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgY29uc3QgY3VycmVudCA9IGNiKGFycltpXSwgaSk7XHJcbiAgICAgICAgICAgIGlmIChjdXJyZW50IDwgbWluIHx8IHJlc3VsdCA9PT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgbWluID0gY3VycmVudDtcclxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGFycltpXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBtYXg8VD4oYXJyOiBUW10sIGNiOiAoaXRlbTogVCwgaW5kZXg/OiBudW1iZXIpID0+IG51bWJlcik6IFQge1xyXG4gICAgICAgIGlmICghT2JqZWN0VXRpbHMuaXNBcnJheShhcnIpKSByZXR1cm4gbnVsbDtcclxuICAgICAgICBsZXQgbWF4ID0gTnVtYmVyLk1JTl9TQUZFX0lOVEVHRVI7XHJcbiAgICAgICAgbGV0IHJlc3VsdCA9IG51bGw7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgY29uc3QgY3VycmVudCA9IGNiKGFycltpXSwgaSk7XHJcbiAgICAgICAgICAgIGlmIChjdXJyZW50ID4gbWF4IHx8IHJlc3VsdCA9PT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgbWF4ID0gY3VycmVudDtcclxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGFycltpXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBjaHVuazxUPihhcnI6IFRbXSwgc2l6ZTogbnVtYmVyKTogQXJyYXk8VFtdPiB7XHJcbiAgICAgICAgaWYgKCFPYmplY3RVdGlscy5pc0FycmF5KGFycikpIHJldHVybiBbXTtcclxuICAgICAgICBzaXplID0gTWF0aC5tYXgoMSwgc2l6ZSk7XHJcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gW11cclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkgKz0gc2l6ZSkge1xyXG4gICAgICAgICAgICByZXN1bHQucHVzaChhcnIuc2xpY2UoaSwgaSArIHNpemUpKVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcmVzdWx0XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIHVuaXF1ZTxUPihhcnI6IFRbXSk6IFRbXSB7XHJcbiAgICAgICAgaWYgKCFPYmplY3RVdGlscy5pc0FycmF5KGFycikpIHJldHVybiBbXTtcclxuICAgICAgICByZXR1cm4gYXJyLmZpbHRlcigodmFsdWUsIGluZGV4LCBzZWxmKSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiBzZWxmLmluZGV4T2YodmFsdWUpID09PSBpbmRleDtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxufVxyXG4iXX0=
|
|
@@ -1,181 +0,0 @@
|
|
|
1
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
-
};
|
|
7
|
-
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
-
};
|
|
10
|
-
import { Inject, Injectable, Injector } from "@angular/core";
|
|
11
|
-
import { AUTH_SERVICE, FactoryDependencies } from "../common-types";
|
|
12
|
-
import { ReflectUtils } from "./reflect.utils";
|
|
13
|
-
import { ObjectUtils } from "./object.utils";
|
|
14
|
-
import { StateService } from "../services/state.service";
|
|
15
|
-
import * as i0 from "@angular/core";
|
|
16
|
-
import * as i1 from "../services/state.service";
|
|
17
|
-
export class AuthGuard {
|
|
18
|
-
static guardAuthenticated(auth) {
|
|
19
|
-
return Promise.resolve(auth.isAuthenticated);
|
|
20
|
-
}
|
|
21
|
-
static guardNotAuthenticated(auth) {
|
|
22
|
-
return Promise.resolve(!auth.isAuthenticated);
|
|
23
|
-
}
|
|
24
|
-
static guardNothing() {
|
|
25
|
-
return Promise.resolve(true);
|
|
26
|
-
}
|
|
27
|
-
static guardAuthField(auth, expression = `auth.isAuthenticated`) {
|
|
28
|
-
// @dynamic
|
|
29
|
-
const lambda = () => {
|
|
30
|
-
return Promise.resolve(ObjectUtils.evaluate(expression, { auth }));
|
|
31
|
-
};
|
|
32
|
-
return lambda;
|
|
33
|
-
}
|
|
34
|
-
static guardStateField(state, expression = `state.data`) {
|
|
35
|
-
// @dynamic
|
|
36
|
-
const lambda = () => {
|
|
37
|
-
return Promise.resolve(ObjectUtils.evaluate(expression, { state }));
|
|
38
|
-
};
|
|
39
|
-
return lambda;
|
|
40
|
-
}
|
|
41
|
-
static guardAuthStateField(auth, state, expression = `auth.isAuthenticated`) {
|
|
42
|
-
// @dynamic
|
|
43
|
-
const lambda = () => {
|
|
44
|
-
return Promise.resolve(ObjectUtils.evaluate(expression, { auth, state }));
|
|
45
|
-
};
|
|
46
|
-
return lambda;
|
|
47
|
-
}
|
|
48
|
-
static wildRouteMatch(segments) {
|
|
49
|
-
return { consumed: segments };
|
|
50
|
-
}
|
|
51
|
-
static noRouteMatch() {
|
|
52
|
-
return null;
|
|
53
|
-
}
|
|
54
|
-
constructor(injector, state, auth) {
|
|
55
|
-
this.injector = injector;
|
|
56
|
-
this.state = state;
|
|
57
|
-
this.auth = auth;
|
|
58
|
-
}
|
|
59
|
-
checkRouteMenu(route) {
|
|
60
|
-
if (!route.data || !route.data.name)
|
|
61
|
-
return Promise.resolve(false);
|
|
62
|
-
return this.checkRoute(route);
|
|
63
|
-
}
|
|
64
|
-
checkRoute(route, next) {
|
|
65
|
-
const routeData = route.data || {};
|
|
66
|
-
if (!routeData.guards)
|
|
67
|
-
return Promise.resolve(!route.canActivate || this.auth.isAuthenticated);
|
|
68
|
-
return new Promise(resolve => {
|
|
69
|
-
const guards = routeData.guards.map(g => {
|
|
70
|
-
const guard = ReflectUtils.resolve(g, this.injector);
|
|
71
|
-
return guard(this.auth, route, next);
|
|
72
|
-
});
|
|
73
|
-
Promise.all(guards).then(results => {
|
|
74
|
-
resolve(results.indexOf(false) < 0);
|
|
75
|
-
});
|
|
76
|
-
});
|
|
77
|
-
}
|
|
78
|
-
canActivate(next, state) {
|
|
79
|
-
const route = next.routeConfig;
|
|
80
|
-
return new Promise(resolve => {
|
|
81
|
-
this.auth.checkAuthenticated().then(() => {
|
|
82
|
-
this.checkRoute(route, next).then(hasRights => {
|
|
83
|
-
resolve(hasRights);
|
|
84
|
-
if (!hasRights) {
|
|
85
|
-
this.getReturnState(route).then(returnState => {
|
|
86
|
-
if (!returnState)
|
|
87
|
-
return;
|
|
88
|
-
this.state.navigate(returnState, { queryParams: next.queryParams });
|
|
89
|
-
});
|
|
90
|
-
}
|
|
91
|
-
});
|
|
92
|
-
});
|
|
93
|
-
});
|
|
94
|
-
}
|
|
95
|
-
getConfig(route, config, path) {
|
|
96
|
-
if (!config)
|
|
97
|
-
return null;
|
|
98
|
-
const match = config.findIndex(t => t == route);
|
|
99
|
-
if (match >= 0)
|
|
100
|
-
return config;
|
|
101
|
-
for (const subConfig of config) {
|
|
102
|
-
if (subConfig.path)
|
|
103
|
-
path.push(subConfig.path);
|
|
104
|
-
const loadedChildren = (subConfig["_loadedConfig"] || { routes: null }).routes || subConfig["_loadedRoutes"];
|
|
105
|
-
const match = this.getConfig(route, subConfig.children || loadedChildren, path);
|
|
106
|
-
if (!match) {
|
|
107
|
-
if (subConfig.path)
|
|
108
|
-
path.length -= 1;
|
|
109
|
-
continue;
|
|
110
|
-
}
|
|
111
|
-
return match;
|
|
112
|
-
}
|
|
113
|
-
return null;
|
|
114
|
-
}
|
|
115
|
-
getReturnState(route) {
|
|
116
|
-
if (!route)
|
|
117
|
-
return Promise.resolve(null);
|
|
118
|
-
if (ObjectUtils.isObject(route.data) && ObjectUtils.isArray(route.data.returnState)) {
|
|
119
|
-
return Promise.resolve(route.data.returnState);
|
|
120
|
-
}
|
|
121
|
-
const path = [];
|
|
122
|
-
const config = this.getConfig(route, this.state.routerConfig, path);
|
|
123
|
-
return new Promise(resolve => {
|
|
124
|
-
this.getReturnStateRecursive(config).then(rs => {
|
|
125
|
-
if (!ObjectUtils.isArray(rs)) {
|
|
126
|
-
resolve(rs);
|
|
127
|
-
return;
|
|
128
|
-
}
|
|
129
|
-
resolve(path.concat(rs));
|
|
130
|
-
});
|
|
131
|
-
});
|
|
132
|
-
}
|
|
133
|
-
getReturnStateRecursive(config, c = 0) {
|
|
134
|
-
if (!config || c >= config.length)
|
|
135
|
-
return Promise.resolve(null);
|
|
136
|
-
return new Promise(resolve => {
|
|
137
|
-
const route = config[c];
|
|
138
|
-
const check = !route.component ? Promise.resolve(false) : this.checkRoute(route);
|
|
139
|
-
check.then(res => {
|
|
140
|
-
if (res) {
|
|
141
|
-
resolve([route.path]);
|
|
142
|
-
return;
|
|
143
|
-
}
|
|
144
|
-
this.getReturnStateRecursive(config, c + 1).then(resolve);
|
|
145
|
-
});
|
|
146
|
-
});
|
|
147
|
-
}
|
|
148
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AuthGuard, deps: [{ token: Injector }, { token: StateService }, { token: AUTH_SERVICE }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
149
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AuthGuard }); }
|
|
150
|
-
}
|
|
151
|
-
__decorate([
|
|
152
|
-
FactoryDependencies(AUTH_SERVICE),
|
|
153
|
-
__metadata("design:type", Function),
|
|
154
|
-
__metadata("design:paramtypes", [Object, String]),
|
|
155
|
-
__metadata("design:returntype", Function)
|
|
156
|
-
], AuthGuard, "guardAuthField", null);
|
|
157
|
-
__decorate([
|
|
158
|
-
FactoryDependencies(StateService),
|
|
159
|
-
__metadata("design:type", Function),
|
|
160
|
-
__metadata("design:paramtypes", [StateService, String]),
|
|
161
|
-
__metadata("design:returntype", Function)
|
|
162
|
-
], AuthGuard, "guardStateField", null);
|
|
163
|
-
__decorate([
|
|
164
|
-
FactoryDependencies(AUTH_SERVICE, StateService),
|
|
165
|
-
__metadata("design:type", Function),
|
|
166
|
-
__metadata("design:paramtypes", [Object, StateService, String]),
|
|
167
|
-
__metadata("design:returntype", Function)
|
|
168
|
-
], AuthGuard, "guardAuthStateField", null);
|
|
169
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AuthGuard, decorators: [{
|
|
170
|
-
type: Injectable
|
|
171
|
-
}], ctorParameters: () => [{ type: i0.Injector, decorators: [{
|
|
172
|
-
type: Inject,
|
|
173
|
-
args: [Injector]
|
|
174
|
-
}] }, { type: i1.StateService, decorators: [{
|
|
175
|
-
type: Inject,
|
|
176
|
-
args: [StateService]
|
|
177
|
-
}] }, { type: undefined, decorators: [{
|
|
178
|
-
type: Inject,
|
|
179
|
-
args: [AUTH_SERVICE]
|
|
180
|
-
}] }] });
|
|
181
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9uZ3gtdXRpbHMvdXRpbHMvYXV0aC5ndWFyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFM0QsT0FBTyxFQUFDLFlBQVksRUFBRSxtQkFBbUIsRUFBdUMsTUFBTSxpQkFBaUIsQ0FBQztBQUN4RyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQzs7O0FBR3ZELE1BQU0sT0FBTyxTQUFTO0lBRWxCLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxJQUFrQjtRQUN4QyxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFRCxNQUFNLENBQUMscUJBQXFCLENBQUMsSUFBa0I7UUFDM0MsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRCxNQUFNLENBQUMsWUFBWTtRQUNmLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBR00sQUFBUCxNQUFNLENBQUMsY0FBYyxDQUFDLElBQWtCLEVBQUUsYUFBcUIsc0JBQXNCO1FBQ2pGLFdBQVc7UUFDWCxNQUFNLE1BQU0sR0FBRyxHQUFxQixFQUFFO1lBQ2xDLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxFQUFDLElBQUksRUFBQyxDQUFDLENBQUMsQ0FBQztRQUNyRSxDQUFDLENBQUM7UUFD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QW1CLENBQUMsWUFBWSxFQUFFLFlBQVksQ0FBQzs7NkNBQ00sWUFBWTs7MENBTWpFOzRGQXZDUSxTQUFTO2tCQURyQixVQUFVOzswQkFrRE0sTUFBTTsyQkFBQyxRQUFROzswQkFDZixNQUFNOzJCQUFDLFlBQVk7OzBCQUNuQixNQUFNOzJCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0b3J9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7QWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgQ2FuQWN0aXZhdGUsIFJvdXRlclN0YXRlU25hcHNob3QsIFVybFNlZ21lbnR9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcclxuaW1wb3J0IHtBVVRIX1NFUlZJQ0UsIEZhY3RvcnlEZXBlbmRlbmNpZXMsIElBdXRoU2VydmljZSwgSVJvdXRlLCBSb3V0ZVZhbGlkYXRvcn0gZnJvbSBcIi4uL2NvbW1vbi10eXBlc1wiO1xyXG5pbXBvcnQge1JlZmxlY3RVdGlsc30gZnJvbSBcIi4vcmVmbGVjdC51dGlsc1wiO1xyXG5pbXBvcnQge09iamVjdFV0aWxzfSBmcm9tIFwiLi9vYmplY3QudXRpbHNcIjtcclxuaW1wb3J0IHtTdGF0ZVNlcnZpY2V9IGZyb20gXCIuLi9zZXJ2aWNlcy9zdGF0ZS5zZXJ2aWNlXCI7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBBdXRoR3VhcmQgaW1wbGVtZW50cyBDYW5BY3RpdmF0ZSB7XHJcblxyXG4gICAgc3RhdGljIGd1YXJkQXV0aGVudGljYXRlZChhdXRoOiBJQXV0aFNlcnZpY2UpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGF1dGguaXNBdXRoZW50aWNhdGVkKTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgZ3VhcmROb3RBdXRoZW50aWNhdGVkKGF1dGg6IElBdXRoU2VydmljZSk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoIWF1dGguaXNBdXRoZW50aWNhdGVkKTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgZ3VhcmROb3RoaW5nKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodHJ1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgQEZhY3RvcnlEZXBlbmRlbmNpZXMoQVVUSF9TRVJWSUNFKVxyXG4gICAgc3RhdGljIGd1YXJkQXV0aEZpZWxkKGF1dGg6IElBdXRoU2VydmljZSwgZXhwcmVzc2lvbjogc3RyaW5nID0gYGF1dGguaXNBdXRoZW50aWNhdGVkYCk6IFJvdXRlVmFsaWRhdG9yIHtcclxuICAgICAgICAvLyBAZHluYW1pY1xyXG4gICAgICAgIGNvbnN0IGxhbWJkYSA9ICgpOiBQcm9taXNlPGJvb2xlYW4+ID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShPYmplY3RVdGlscy5ldmFsdWF0ZShleHByZXNzaW9uLCB7YXV0aH0pKTtcclxuICAgICAgICB9O1xyXG4gICAgICAgIHJldHVybiBsYW1iZGE7XHJcbiAgICB9XHJcblxyXG4gICAgQEZhY3RvcnlEZXBlbmRlbmNpZXMoU3RhdGVTZXJ2aWNlKVxyXG4gICAgc3RhdGljIGd1YXJkU3RhdGVGaWVsZChzdGF0ZTogU3RhdGVTZXJ2aWNlLCBleHByZXNzaW9uOiBzdHJpbmcgPSBgc3RhdGUuZGF0YWApOiBSb3V0ZVZhbGlkYXRvciB7XHJcbiAgICAgICAgLy8gQGR5bmFtaWNcclxuICAgICAgICBjb25zdCBsYW1iZGEgPSAoKTogUHJvbWlzZTxib29sZWFuPiA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoT2JqZWN0VXRpbHMuZXZhbHVhdGUoZXhwcmVzc2lvbiwge3N0YXRlfSkpO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgcmV0dXJuIGxhbWJkYTtcclxuICAgIH1cclxuXHJcbiAgICBARmFjdG9yeURlcGVuZGVuY2llcyhBVVRIX1NFUlZJQ0UsIFN0YXRlU2VydmljZSlcclxuICAgIHN0YXRpYyBndWFyZEF1dGhTdGF0ZUZpZWxkKGF1dGg6IElBdXRoU2VydmljZSwgc3RhdGU6IFN0YXRlU2VydmljZSwgZXhwcmVzc2lvbjogc3RyaW5nID0gYGF1dGguaXNBdXRoZW50aWNhdGVkYCk6IFJvdXRlVmFsaWRhdG9yIHtcclxuICAgICAgICAvLyBAZHluYW1pY1xyXG4gICAgICAgIGNvbnN0IGxhbWJkYSA9ICgpOiBQcm9taXNlPGJvb2xlYW4+ID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShPYmplY3RVdGlscy5ldmFsdWF0ZShleHByZXNzaW9uLCB7YXV0aCwgc3RhdGV9KSk7XHJcbiAgICAgICAgfTtcclxuICAgICAgICByZXR1cm4gbGFtYmRhO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyB3aWxkUm91dGVNYXRjaChzZWdtZW50czogVXJsU2VnbWVudFtdKSB7XHJcbiAgICAgICAgcmV0dXJuIHtjb25zdW1lZDogc2VnbWVudHN9O1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBub1JvdXRlTWF0Y2goKSB7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3RydWN0b3IoQEluamVjdChJbmplY3RvcikgcmVhZG9ubHkgaW5qZWN0b3I6IEluamVjdG9yLFxyXG4gICAgICAgICAgICAgICAgQEluamVjdChTdGF0ZVNlcnZpY2UpIHJlYWRvbmx5IHN0YXRlOiBTdGF0ZVNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgICBASW5qZWN0KEFVVEhfU0VSVklDRSkgcmVhZG9ubHkgYXV0aDogSUF1dGhTZXJ2aWNlKSB7XHJcbiAgICB9XHJcblxyXG4gICAgY2hlY2tSb3V0ZU1lbnUocm91dGU6IElSb3V0ZSk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgICAgIGlmICghcm91dGUuZGF0YSB8fCAhcm91dGUuZGF0YS5uYW1lKSByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGZhbHNlKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5jaGVja1JvdXRlKHJvdXRlKTtcclxuICAgIH1cclxuXHJcbiAgICBjaGVja1JvdXRlKHJvdXRlOiBJUm91dGUsIG5leHQ/OiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90KTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICAgICAgY29uc3Qgcm91dGVEYXRhID0gcm91dGUuZGF0YSB8fCB7fTtcclxuICAgICAgICBpZiAoIXJvdXRlRGF0YS5ndWFyZHMpXHJcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoIXJvdXRlLmNhbkFjdGl2YXRlIHx8IHRoaXMuYXV0aC5pc0F1dGhlbnRpY2F0ZWQpO1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZTxib29sZWFuPihyZXNvbHZlID0+IHtcclxuICAgICAgICAgICAgY29uc3QgZ3VhcmRzID0gcm91dGVEYXRhLmd1YXJkcy5tYXAoZyA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBndWFyZCA9IFJlZmxlY3RVdGlscy5yZXNvbHZlPFJvdXRlVmFsaWRhdG9yPihnLCB0aGlzLmluamVjdG9yKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBndWFyZCh0aGlzLmF1dGgsIHJvdXRlLCBuZXh0KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIFByb21pc2UuYWxsKGd1YXJkcykudGhlbihyZXN1bHRzID0+IHtcclxuICAgICAgICAgICAgICAgIHJlc29sdmUocmVzdWx0cy5pbmRleE9mKGZhbHNlKSA8IDApO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBjYW5BY3RpdmF0ZShuZXh0OiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdCk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgICAgIGNvbnN0IHJvdXRlID0gPElSb3V0ZT5uZXh0LnJvdXRlQ29uZmlnO1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZTxib29sZWFuPihyZXNvbHZlID0+IHtcclxuICAgICAgICAgICAgdGhpcy5hdXRoLmNoZWNrQXV0aGVudGljYXRlZCgpLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jaGVja1JvdXRlKHJvdXRlLCBuZXh0KS50aGVuKGhhc1JpZ2h0cyA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShoYXNSaWdodHMpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghaGFzUmlnaHRzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0UmV0dXJuU3RhdGUocm91dGUpLnRoZW4ocmV0dXJuU3RhdGUgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFyZXR1cm5TdGF0ZSkgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0ZS5uYXZpZ2F0ZShyZXR1cm5TdGF0ZSwge3F1ZXJ5UGFyYW1zOiBuZXh0LnF1ZXJ5UGFyYW1zfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRDb25maWcocm91dGU6IElSb3V0ZSwgY29uZmlnOiBJUm91dGVbXSwgcGF0aDogc3RyaW5nW10pOiBJUm91dGVbXSB7XHJcbiAgICAgICAgaWYgKCFjb25maWcpIHJldHVybiBudWxsO1xyXG4gICAgICAgIGNvbnN0IG1hdGNoID0gY29uZmlnLmZpbmRJbmRleCh0ID0+IHQgPT0gcm91dGUpO1xyXG4gICAgICAgIGlmIChtYXRjaCA+PSAwKSByZXR1cm4gY29uZmlnO1xyXG4gICAgICAgIGZvciAoY29uc3Qgc3ViQ29uZmlnIG9mIGNvbmZpZykge1xyXG4gICAgICAgICAgICBpZiAoc3ViQ29uZmlnLnBhdGgpXHJcbiAgICAgICAgICAgICAgICBwYXRoLnB1c2goc3ViQ29uZmlnLnBhdGgpO1xyXG4gICAgICAgICAgICBjb25zdCBsb2FkZWRDaGlsZHJlbiA9IChzdWJDb25maWdbXCJfbG9hZGVkQ29uZmlnXCJdIHx8IHtyb3V0ZXM6IG51bGx9KS5yb3V0ZXMgfHwgc3ViQ29uZmlnW1wiX2xvYWRlZFJvdXRlc1wiXTtcclxuICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSB0aGlzLmdldENvbmZpZyhyb3V0ZSwgc3ViQ29uZmlnLmNoaWxkcmVuIHx8IGxvYWRlZENoaWxkcmVuLCBwYXRoKTtcclxuICAgICAgICAgICAgaWYgKCFtYXRjaCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHN1YkNvbmZpZy5wYXRoKVxyXG4gICAgICAgICAgICAgICAgICAgIHBhdGgubGVuZ3RoIC09IDE7XHJcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gbWF0Y2g7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFJldHVyblN0YXRlKHJvdXRlOiBJUm91dGUpOiBQcm9taXNlPHN0cmluZ1tdPiB7XHJcbiAgICAgICAgaWYgKCFyb3V0ZSkgcmV0dXJuIFByb21pc2UucmVzb2x2ZShudWxsKTtcclxuICAgICAgICBpZiAoT2JqZWN0VXRpbHMuaXNPYmplY3Qocm91dGUuZGF0YSkgJiYgT2JqZWN0VXRpbHMuaXNBcnJheShyb3V0ZS5kYXRhLnJldHVyblN0YXRlKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHJvdXRlLmRhdGEucmV0dXJuU3RhdGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBwYXRoID0gW107XHJcbiAgICAgICAgY29uc3QgY29uZmlnID0gdGhpcy5nZXRDb25maWcocm91dGUsIHRoaXMuc3RhdGUucm91dGVyQ29uZmlnLCBwYXRoKTtcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2U8c3RyaW5nW10+KHJlc29sdmUgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmdldFJldHVyblN0YXRlUmVjdXJzaXZlKGNvbmZpZykudGhlbihycyA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIU9iamVjdFV0aWxzLmlzQXJyYXkocnMpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShycyk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmVzb2x2ZShwYXRoLmNvbmNhdChycykpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGdldFJldHVyblN0YXRlUmVjdXJzaXZlKGNvbmZpZzogSVJvdXRlW10sIGM6IG51bWJlciA9IDApOiBQcm9taXNlPHN0cmluZ1tdPiB7XHJcbiAgICAgICAgaWYgKCFjb25maWcgfHwgYyA+PSBjb25maWcubGVuZ3RoKSByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG51bGwpO1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZTxzdHJpbmdbXT4ocmVzb2x2ZSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHJvdXRlID0gY29uZmlnW2NdO1xyXG4gICAgICAgICAgICBjb25zdCBjaGVjayA9ICFyb3V0ZS5jb21wb25lbnQgPyBQcm9taXNlLnJlc29sdmUoZmFsc2UpIDogdGhpcy5jaGVja1JvdXRlKHJvdXRlKTtcclxuICAgICAgICAgICAgY2hlY2sudGhlbihyZXMgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHJlcykge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUoW3JvdXRlLnBhdGhdKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLmdldFJldHVyblN0YXRlUmVjdXJzaXZlKGNvbmZpZywgYyArIDEpLnRoZW4ocmVzb2x2ZSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import { InjectionToken, Injector } from "@angular/core";
|
|
2
|
-
const CACHED_TOKEN = new InjectionToken("cached-factory-token");
|
|
3
|
-
export function cachedFactory(providers) {
|
|
4
|
-
let cached = null;
|
|
5
|
-
return (injector) => {
|
|
6
|
-
if (cached !== null) {
|
|
7
|
-
return cached;
|
|
8
|
-
}
|
|
9
|
-
const subInjector = Injector.create({
|
|
10
|
-
providers: providers.map(p => {
|
|
11
|
-
if (("useFactory" in p && "deps" in p) || "useValue" in p) {
|
|
12
|
-
return {
|
|
13
|
-
provide: CACHED_TOKEN,
|
|
14
|
-
multi: true,
|
|
15
|
-
...p
|
|
16
|
-
};
|
|
17
|
-
}
|
|
18
|
-
return {
|
|
19
|
-
provide: CACHED_TOKEN,
|
|
20
|
-
multi: true,
|
|
21
|
-
useClass: p
|
|
22
|
-
};
|
|
23
|
-
}),
|
|
24
|
-
parent: injector
|
|
25
|
-
});
|
|
26
|
-
cached = subInjector.get(CACHED_TOKEN);
|
|
27
|
-
return cached;
|
|
28
|
-
};
|
|
29
|
-
}
|
|
30
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGVkLWZhY3RvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbmd4LXV0aWxzL3V0aWxzL2NhY2hlZC1mYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxjQUFjLEVBQUUsUUFBUSxFQUFPLE1BQU0sZUFBZSxDQUFDO0FBRzdELE1BQU0sWUFBWSxHQUFHLElBQUksY0FBYyxDQUFDLHNCQUFzQixDQUFDLENBQUM7QUFFaEUsTUFBTSxVQUFVLGFBQWEsQ0FBSSxTQUE4QjtJQUMzRCxJQUFJLE1BQU0sR0FBcUIsSUFBSSxDQUFDO0lBQ3BDLE9BQU8sQ0FBQyxRQUFrQixFQUFFLEVBQUU7UUFDMUIsSUFBSSxNQUFNLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDbEIsT0FBTyxNQUFNLENBQUM7UUFDbEIsQ0FBQztRQUNELE1BQU0sV0FBVyxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUM7WUFDaEMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ3pCLElBQUksQ0FBQyxZQUFZLElBQUksQ0FBQyxJQUFJLE1BQU0sSUFBSSxDQUFDLENBQUMsSUFBSSxVQUFVLElBQUksQ0FBQyxFQUFFLENBQUM7b0JBQ3hELE9BQU87d0JBQ0gsT0FBTyxFQUFFLFlBQVk7d0JBQ3JCLEtBQUssRUFBRSxJQUFJO3dCQUNYLEdBQUcsQ0FBQztxQkFDQSxDQUFDO2dCQUNiLENBQUM7Z0JBQ0QsT0FBTztvQkFDSCxPQUFPLEVBQUUsWUFBWTtvQkFDckIsS0FBSyxFQUFFLElBQUk7b0JBQ1gsUUFBUSxFQUFFLENBQVk7aUJBQ3pCLENBQUM7WUFDTixDQUFDLENBQUM7WUFDRixNQUFNLEVBQUUsUUFBUTtTQUNuQixDQUFDLENBQUM7UUFDSCxNQUFNLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQXFCLENBQUM7UUFDM0QsT0FBTyxNQUFNLENBQUM7SUFDbEIsQ0FBQyxDQUFDO0FBQ04sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0aW9uVG9rZW4sIEluamVjdG9yLCBUeXBlfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge0NhY2hlZEZhY3RvcnksIENhY2hlZFByb3ZpZGVyfSBmcm9tIFwiLi4vY29tbW9uLXR5cGVzXCI7XHJcblxyXG5jb25zdCBDQUNIRURfVE9LRU4gPSBuZXcgSW5qZWN0aW9uVG9rZW4oXCJjYWNoZWQtZmFjdG9yeS10b2tlblwiKTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBjYWNoZWRGYWN0b3J5PFQ+KHByb3ZpZGVyczogQ2FjaGVkUHJvdmlkZXI8VD5bXSk6IENhY2hlZEZhY3Rvcnk8VD4ge1xyXG4gICAgbGV0IGNhY2hlZDogUmVhZG9ubHlBcnJheTxUPiA9IG51bGw7XHJcbiAgICByZXR1cm4gKGluamVjdG9yOiBJbmplY3RvcikgPT4ge1xyXG4gICAgICAgIGlmIChjYWNoZWQgIT09IG51bGwpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGNhY2hlZDtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3Qgc3ViSW5qZWN0b3IgPSBJbmplY3Rvci5jcmVhdGUoe1xyXG4gICAgICAgICAgICBwcm92aWRlcnM6IHByb3ZpZGVycy5tYXAocCA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoKFwidXNlRmFjdG9yeVwiIGluIHAgJiYgXCJkZXBzXCIgaW4gcCkgfHwgXCJ1c2VWYWx1ZVwiIGluIHApIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm92aWRlOiBDQUNIRURfVE9LRU4sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5wXHJcbiAgICAgICAgICAgICAgICAgICAgfSBhcyBhbnk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHByb3ZpZGU6IENBQ0hFRF9UT0tFTixcclxuICAgICAgICAgICAgICAgICAgICBtdWx0aTogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICB1c2VDbGFzczogcCBhcyBUeXBlPFQ+XHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgcGFyZW50OiBpbmplY3RvclxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGNhY2hlZCA9IHN1YkluamVjdG9yLmdldChDQUNIRURfVE9LRU4pIGFzIFJlYWRvbmx5QXJyYXk8VD47XHJcbiAgICAgICAgcmV0dXJuIGNhY2hlZDtcclxuICAgIH07XHJcbn1cclxuIl19
|