@lenne.tech/ng-base 15.0.0-beta-3 → 16.1.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/base-components/base-components.module.d.ts +1 -2
- package/base-components/components/checkbox/checkbox.component.d.ts +1 -1
- package/base-components/components/delete-account/delete-account.component.d.ts +1 -1
- package/base-components/components/fab-button/fab-button.component.d.ts +1 -1
- package/base-components/components/input/input.component.d.ts +1 -1
- package/base-components/components/loading-bar/loading-bar.component.d.ts +1 -1
- package/base-components/components/model-form/model-form-base.component.d.ts +1 -1
- package/base-components/components/model-form/model-form.component.d.ts +1 -1
- package/base-components/components/model-form-sub/model-form-sub.component.d.ts +1 -1
- package/base-components/components/model-table/model-table.component.d.ts +1 -1
- package/base-components/components/refence-input/refence-input.component.d.ts +1 -1
- package/base-components/components/select/select.component.d.ts +1 -1
- package/base-components/components/skeleton-loader/skeleton-loader.component.d.ts +1 -1
- package/base-components/components/tags/tags.component.d.ts +1 -1
- package/base-components/components/textarea/textarea.component.d.ts +1 -1
- package/base-components/components/toast/toast.component.d.ts +1 -1
- package/base-components/components/upload-image/upload-image.component.d.ts +1 -1
- package/base-components/directives/context-menu.directive.d.ts +1 -1
- package/base-components/directives/sort.directive.d.ts +1 -1
- package/base-prototype/pages/login/login.component.d.ts +1 -1
- package/base-prototype/pages/profile/profile.component.d.ts +1 -1
- package/base-prototype/pages/set-password/set-password.component.d.ts +1 -1
- package/esm2022/base-cms/base-cms-routing.module.mjs +33 -0
- package/esm2022/base-cms/base-cms.module.mjs +61 -0
- package/esm2022/base-cms/pages/base-cms/base-cms.component.mjs +233 -0
- package/esm2022/base-components/base-components.module.mjs +123 -0
- package/esm2022/base-components/components/breadcrumb/breadcrumb.component.mjs +21 -0
- package/esm2022/base-components/components/change-password/change-password.component.mjs +96 -0
- package/esm2022/base-components/components/checkbox/checkbox.component.mjs +35 -0
- package/esm2022/base-components/components/delete-account/delete-account.component.mjs +61 -0
- package/esm2022/base-components/components/fab-button/fab-button.component.mjs +21 -0
- package/esm2022/base-components/components/input/input.component.mjs +72 -0
- package/esm2022/base-components/components/loading-bar/loading-bar.component.mjs +39 -0
- package/esm2022/base-components/components/model-form/model-form-base.component.mjs +145 -0
- package/esm2022/base-components/components/model-form/model-form.component.mjs +585 -0
- package/esm2022/base-components/components/model-form-sub/model-form-sub.component.mjs +111 -0
- package/esm2022/base-components/components/model-table/model-table.component.mjs +470 -0
- package/esm2022/base-components/components/refence-input/refence-input.component.mjs +273 -0
- package/esm2022/base-components/components/select/select.component.mjs +59 -0
- package/esm2022/base-components/components/skeleton-loader/skeleton-loader.component.mjs +32 -0
- package/esm2022/base-components/components/tags/tags.component.mjs +224 -0
- package/esm2022/base-components/components/textarea/textarea.component.mjs +76 -0
- package/esm2022/base-components/components/toast/toast.component.mjs +70 -0
- package/esm2022/base-components/components/upload-image/upload-image.component.mjs +343 -0
- package/esm2022/base-components/directives/back-button.directive.mjs +25 -0
- package/esm2022/base-components/directives/context-menu.directive.mjs +112 -0
- package/esm2022/base-components/directives/sort.directive.mjs +61 -0
- package/esm2022/base-components/directives/stop-propagation.directive.mjs +24 -0
- package/esm2022/base-components/pipes/ellipses.pipe.mjs +23 -0
- package/esm2022/base-prototype/base-prototype.module.mjs +54 -0
- package/esm2022/base-prototype/pages/email-verification/email-verification.component.mjs +62 -0
- package/esm2022/base-prototype/pages/forgot-password/forgot-password.component.mjs +75 -0
- package/esm2022/base-prototype/pages/login/login.component.mjs +111 -0
- package/esm2022/base-prototype/pages/profile/profile.component.mjs +86 -0
- package/esm2022/base-prototype/pages/register/register.component.mjs +94 -0
- package/esm2022/base-prototype/pages/set-password/set-password.component.mjs +90 -0
- package/esm2022/shared/classes/auth.class.mjs +14 -0
- package/esm2022/shared/classes/basic-user.class.mjs +49 -0
- package/esm2022/shared/classes/graphql-enum.class.mjs +10 -0
- package/esm2022/shared/classes/graphql-meta.class.mjs +345 -0
- package/esm2022/shared/classes/graphql-type.class.mjs +14 -0
- package/esm2022/shared/classes/sort.class.mjs +38 -0
- package/esm2022/shared/services/auth.service.mjs +153 -0
- package/esm2022/shared/services/breadcrumb.service.mjs +70 -0
- package/{esm2020 → esm2022}/shared/services/cms.service.mjs +7 -5
- package/esm2022/shared/services/file.service.mjs +87 -0
- package/esm2022/shared/services/forms.service.mjs +62 -0
- package/esm2022/shared/services/graphql-meta.service.mjs +133 -0
- package/esm2022/shared/services/graphql-plus.service.mjs +94 -0
- package/esm2022/shared/services/graphql.service.mjs +511 -0
- package/esm2022/shared/services/image.service.mjs +103 -0
- package/esm2022/shared/services/loader.service.mjs +79 -0
- package/esm2022/shared/services/navigation.service.mjs +39 -0
- package/esm2022/shared/services/scroll.service.mjs +208 -0
- package/esm2022/shared/services/storage.service.mjs +142 -0
- package/esm2022/shared/services/toast.service.mjs +40 -0
- package/esm2022/shared/services/user.service.mjs +161 -0
- package/esm2022/shared/services/ws.service.mjs +18 -0
- package/esm2022/src/base.module.mjs +98 -0
- package/esm2022/src/directives/lazy-load.directive.mjs +48 -0
- package/esm2022/src/directives/match-height.directive.mjs +92 -0
- package/esm2022/src/directives/resizable.directive.mjs +92 -0
- package/esm2022/src/functions/extract-files.function.mjs +87 -0
- package/esm2022/src/guards/auth.guard.mjs +92 -0
- package/esm2022/src/guards/can-deactivate.guard.mjs +17 -0
- package/esm2022/src/guards/logout.guard.mjs +35 -0
- package/esm2022/src/pipes/date-ago.pipe.mjs +64 -0
- package/esm2022/src/pipes/safe-html.pipe.mjs +23 -0
- package/esm2022/src/services/fullscreen.service.mjs +52 -0
- package/esm2022/src/services/seo.service.mjs +100 -0
- package/esm2022/src/services/theme.service.mjs +45 -0
- package/{fesm2020 → fesm2022}/lenne.tech-ng-base-base-cms.mjs +41 -30
- package/{fesm2020 → fesm2022}/lenne.tech-ng-base-base-cms.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/lenne.tech-ng-base-base-components.mjs +421 -300
- package/fesm2022/lenne.tech-ng-base-base-components.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/lenne.tech-ng-base-base-prototype.mjs +127 -88
- package/fesm2022/lenne.tech-ng-base-base-prototype.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/lenne.tech-ng-base-shared.mjs +164 -113
- package/{fesm2020 → fesm2022}/lenne.tech-ng-base-shared.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/lenne.tech-ng-base.mjs +153 -126
- package/fesm2022/lenne.tech-ng-base.mjs.map +1 -0
- package/package.json +23 -38
- package/src/directives/lazy-load.directive.d.ts +1 -1
- package/src/directives/match-height.directive.d.ts +1 -1
- package/src/directives/resizable.directive.d.ts +1 -1
- package/src/guards/auth.guard.d.ts +4 -3
- package/src/guards/can-deactivate.guard.d.ts +1 -2
- package/src/guards/logout.guard.d.ts +2 -2
- package/esm2020/base-cms/base-cms-routing.module.mjs +0 -32
- package/esm2020/base-cms/base-cms.module.mjs +0 -59
- package/esm2020/base-cms/pages/base-cms/base-cms.component.mjs +0 -222
- package/esm2020/base-components/base-components.module.mjs +0 -123
- package/esm2020/base-components/components/breadcrumb/breadcrumb.component.mjs +0 -18
- package/esm2020/base-components/components/change-password/change-password.component.mjs +0 -90
- package/esm2020/base-components/components/checkbox/checkbox.component.mjs +0 -31
- package/esm2020/base-components/components/delete-account/delete-account.component.mjs +0 -56
- package/esm2020/base-components/components/fab-button/fab-button.component.mjs +0 -21
- package/esm2020/base-components/components/input/input.component.mjs +0 -67
- package/esm2020/base-components/components/loading-bar/loading-bar.component.mjs +0 -35
- package/esm2020/base-components/components/model-form/model-form-base.component.mjs +0 -136
- package/esm2020/base-components/components/model-form/model-form.component.mjs +0 -564
- package/esm2020/base-components/components/model-form-sub/model-form-sub.component.mjs +0 -102
- package/esm2020/base-components/components/model-table/model-table.component.mjs +0 -456
- package/esm2020/base-components/components/refence-input/refence-input.component.mjs +0 -261
- package/esm2020/base-components/components/select/select.component.mjs +0 -54
- package/esm2020/base-components/components/skeleton-loader/skeleton-loader.component.mjs +0 -32
- package/esm2020/base-components/components/tags/tags.component.mjs +0 -218
- package/esm2020/base-components/components/textarea/textarea.component.mjs +0 -72
- package/esm2020/base-components/components/toast/toast.component.mjs +0 -68
- package/esm2020/base-components/components/upload-image/upload-image.component.mjs +0 -324
- package/esm2020/base-components/directives/back-button.directive.mjs +0 -23
- package/esm2020/base-components/directives/context-menu.directive.mjs +0 -108
- package/esm2020/base-components/directives/sort.directive.mjs +0 -57
- package/esm2020/base-components/directives/stop-propagation.directive.mjs +0 -23
- package/esm2020/base-components/pipes/ellipses.pipe.mjs +0 -22
- package/esm2020/base-prototype/base-prototype.module.mjs +0 -53
- package/esm2020/base-prototype/pages/email-verification/email-verification.component.mjs +0 -55
- package/esm2020/base-prototype/pages/forgot-password/forgot-password.component.mjs +0 -67
- package/esm2020/base-prototype/pages/login/login.component.mjs +0 -102
- package/esm2020/base-prototype/pages/profile/profile.component.mjs +0 -81
- package/esm2020/base-prototype/pages/register/register.component.mjs +0 -86
- package/esm2020/base-prototype/pages/set-password/set-password.component.mjs +0 -82
- package/esm2020/shared/classes/auth.class.mjs +0 -17
- package/esm2020/shared/classes/basic-user.class.mjs +0 -52
- package/esm2020/shared/classes/graphql-enum.class.mjs +0 -9
- package/esm2020/shared/classes/graphql-meta.class.mjs +0 -344
- package/esm2020/shared/classes/graphql-type.class.mjs +0 -17
- package/esm2020/shared/classes/sort.class.mjs +0 -40
- package/esm2020/shared/services/auth.service.mjs +0 -148
- package/esm2020/shared/services/breadcrumb.service.mjs +0 -68
- package/esm2020/shared/services/file.service.mjs +0 -84
- package/esm2020/shared/services/forms.service.mjs +0 -59
- package/esm2020/shared/services/graphql-meta.service.mjs +0 -123
- package/esm2020/shared/services/graphql-plus.service.mjs +0 -89
- package/esm2020/shared/services/graphql.service.mjs +0 -507
- package/esm2020/shared/services/image.service.mjs +0 -102
- package/esm2020/shared/services/loader.service.mjs +0 -79
- package/esm2020/shared/services/navigation.service.mjs +0 -36
- package/esm2020/shared/services/scroll.service.mjs +0 -179
- package/esm2020/shared/services/storage.service.mjs +0 -140
- package/esm2020/shared/services/toast.service.mjs +0 -41
- package/esm2020/shared/services/user.service.mjs +0 -155
- package/esm2020/shared/services/ws.service.mjs +0 -16
- package/esm2020/src/base.module.mjs +0 -97
- package/esm2020/src/directives/lazy-load.directive.mjs +0 -45
- package/esm2020/src/directives/match-height.directive.mjs +0 -84
- package/esm2020/src/directives/resizable.directive.mjs +0 -90
- package/esm2020/src/functions/extract-files.function.mjs +0 -84
- package/esm2020/src/guards/auth.guard.mjs +0 -80
- package/esm2020/src/guards/can-deactivate.guard.mjs +0 -16
- package/esm2020/src/guards/logout.guard.mjs +0 -32
- package/esm2020/src/pipes/date-ago.pipe.mjs +0 -65
- package/esm2020/src/pipes/safe-html.pipe.mjs +0 -21
- package/esm2020/src/services/fullscreen.service.mjs +0 -51
- package/esm2020/src/services/seo.service.mjs +0 -97
- package/esm2020/src/services/theme.service.mjs +0 -43
- package/fesm2015/lenne.tech-ng-base-base-cms.mjs +0 -323
- package/fesm2015/lenne.tech-ng-base-base-cms.mjs.map +0 -1
- package/fesm2015/lenne.tech-ng-base-base-components.mjs +0 -2866
- package/fesm2015/lenne.tech-ng-base-base-components.mjs.map +0 -1
- package/fesm2015/lenne.tech-ng-base-base-prototype.mjs +0 -496
- package/fesm2015/lenne.tech-ng-base-base-prototype.mjs.map +0 -1
- package/fesm2015/lenne.tech-ng-base-shared.mjs +0 -2750
- package/fesm2015/lenne.tech-ng-base-shared.mjs.map +0 -1
- package/fesm2015/lenne.tech-ng-base.mjs +0 -905
- package/fesm2015/lenne.tech-ng-base.mjs.map +0 -1
- package/fesm2020/lenne.tech-ng-base-base-components.mjs.map +0 -1
- package/fesm2020/lenne.tech-ng-base-base-prototype.mjs.map +0 -1
- package/fesm2020/lenne.tech-ng-base.mjs.map +0 -1
- /package/{esm2020 → esm2022}/base-cms/interfaces/base-cms-module-config.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/base-cms/lenne.tech-ng-base-base-cms.mjs +0 -0
- /package/{esm2020 → esm2022}/base-cms/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/base-components/lenne.tech-ng-base-base-components.mjs +0 -0
- /package/{esm2020 → esm2022}/base-components/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/base-prototype/lenne.tech-ng-base-base-prototype.mjs +0 -0
- /package/{esm2020 → esm2022}/base-prototype/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/lenne.tech-ng-base.mjs +0 -0
- /package/{esm2020 → esm2022}/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/shared/classes/helper.class.mjs +0 -0
- /package/{esm2020 → esm2022}/shared/classes/standard.class.mjs +0 -0
- /package/{esm2020 → esm2022}/shared/decorators/debounce.decorator.mjs +0 -0
- /package/{esm2020 → esm2022}/shared/enums/comparison-operator.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/shared/enums/graphql-request-type.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/shared/enums/logical-operator.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/shared/enums/skeleton-type.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/shared/enums/sort-order.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/shared/enums/toast-type.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/shared/functions/ws-client.function.mjs +0 -0
- /package/{esm2020 → esm2022}/shared/interfaces/base-module-config.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/shared/interfaces/breadcrumb.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/shared/interfaces/can-component-deactivate.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/shared/interfaces/cms-enum-values.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/shared/interfaces/cms-field-config.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/shared/interfaces/cms-model-config.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/shared/interfaces/cms-table-field.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/shared/interfaces/combined-filter-input.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/shared/interfaces/compress-options.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/shared/interfaces/cropping-options.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/shared/interfaces/field-object.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/shared/interfaces/field.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/shared/interfaces/filter-input.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/shared/interfaces/find-args.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/shared/interfaces/graphql-crud-type.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/shared/interfaces/graphql-fields-object.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/shared/interfaces/graphql-options.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/shared/interfaces/graphql-plus-options.interfacen.mjs +0 -0
- /package/{esm2020 → esm2022}/shared/interfaces/graphql-type-collection.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/shared/interfaces/login-config.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/shared/interfaces/single-filter-input.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/shared/interfaces/sort-input.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/shared/interfaces/time-components.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/shared/interfaces/toast.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/shared/lenne.tech-ng-base-shared.mjs +0 -0
- /package/{esm2020 → esm2022}/shared/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/shared/types/graphql-fields.type.mjs +0 -0
- /package/{esm2020 → esm2022}/shared/types/storage.type.mjs +0 -0
- /package/{esm2020 → esm2022}/shared/validators/email.validator.mjs +0 -0
- /package/{esm2020 → esm2022}/shared/validators/match.validator.mjs +0 -0
- /package/{esm2020 → esm2022}/shared/validators/secure-password.validator.mjs +0 -0
- /package/{esm2020 → esm2022}/src/decorators/auto-unsubscribe.decorator.mjs +0 -0
- /package/{esm2020 → esm2022}/src/factories/apollo-options.factory.mjs +0 -0
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { BehaviorSubject, filter } from 'rxjs';
|
|
3
|
+
import { NavigationEnd } from '@angular/router';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@angular/router";
|
|
6
|
+
class BreadcrumbService {
|
|
7
|
+
router;
|
|
8
|
+
_breadcrumbs = new BehaviorSubject([]);
|
|
9
|
+
set breadcrumbs(value) {
|
|
10
|
+
this._breadcrumbs.next(value);
|
|
11
|
+
}
|
|
12
|
+
get breadcrumbsObservable() {
|
|
13
|
+
return this._breadcrumbs.asObservable();
|
|
14
|
+
}
|
|
15
|
+
constructor(router) {
|
|
16
|
+
this.router = router;
|
|
17
|
+
this.subscribeToRouteChanges();
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Subscribe to route changes and add element to breadcrumb
|
|
21
|
+
*/
|
|
22
|
+
subscribeToRouteChanges() {
|
|
23
|
+
this.router.events.pipe(filter((event) => event instanceof NavigationEnd)).subscribe((event) => {
|
|
24
|
+
const root = this.router.routerState.snapshot.root;
|
|
25
|
+
const breadcrumbs = [];
|
|
26
|
+
this.addBreadcrumb(root, [], breadcrumbs);
|
|
27
|
+
this.breadcrumbs = breadcrumbs;
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Add element to breadcrumb
|
|
32
|
+
*
|
|
33
|
+
* @param route
|
|
34
|
+
* @param parentUrl
|
|
35
|
+
* @param breadcrumbs
|
|
36
|
+
* @private
|
|
37
|
+
*/
|
|
38
|
+
addBreadcrumb(route, parentUrl, breadcrumbs) {
|
|
39
|
+
if (route) {
|
|
40
|
+
const routeUrl = parentUrl.concat(route.url.map((url) => url.path));
|
|
41
|
+
if (route.data?.breadcrumb) {
|
|
42
|
+
const breadcrumb = {
|
|
43
|
+
label: this.getLabel(route.data),
|
|
44
|
+
url: '/' + routeUrl.join('/'),
|
|
45
|
+
};
|
|
46
|
+
breadcrumbs.push(breadcrumb);
|
|
47
|
+
}
|
|
48
|
+
this.addBreadcrumb(route.firstChild, routeUrl, breadcrumbs);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Get label for breadcrumb
|
|
53
|
+
*
|
|
54
|
+
* @param data
|
|
55
|
+
* @private
|
|
56
|
+
*/
|
|
57
|
+
getLabel(data) {
|
|
58
|
+
return typeof data.breadcrumb === 'function' ? data.breadcrumb(data) : data.breadcrumb;
|
|
59
|
+
}
|
|
60
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: BreadcrumbService, deps: [{ token: i1.Router }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
61
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: BreadcrumbService, providedIn: 'root' });
|
|
62
|
+
}
|
|
63
|
+
export { BreadcrumbService };
|
|
64
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: BreadcrumbService, decorators: [{
|
|
65
|
+
type: Injectable,
|
|
66
|
+
args: [{
|
|
67
|
+
providedIn: 'root',
|
|
68
|
+
}]
|
|
69
|
+
}], ctorParameters: function () { return [{ type: i1.Router }]; } });
|
|
70
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctYmFzZS9zaGFyZWQvc2VydmljZXMvYnJlYWRjcnVtYi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0MsT0FBTyxFQUFnQyxhQUFhLEVBQVUsTUFBTSxpQkFBaUIsQ0FBQzs7O0FBR3RGLE1BR2EsaUJBQWlCO0lBV1I7SUFWSCxZQUFZLEdBQUcsSUFBSSxlQUFlLENBQWUsRUFBRSxDQUFDLENBQUM7SUFFdEUsSUFBSSxXQUFXLENBQUMsS0FBbUI7UUFDakMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVELElBQUkscUJBQXFCO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMxQyxDQUFDO0lBRUQsWUFBb0IsTUFBYztRQUFkLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDaEMsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7SUFDakMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsdUJBQXVCO1FBQ3JCLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssWUFBWSxhQUFhLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQzdGLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7WUFDbkQsTUFBTSxXQUFXLEdBQWlCLEVBQUUsQ0FBQztZQUNyQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsV0FBVyxDQUFDLENBQUM7WUFDMUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7UUFDakMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNLLGFBQWEsQ0FBQyxLQUE2QixFQUFFLFNBQW1CLEVBQUUsV0FBeUI7UUFDakcsSUFBSSxLQUFLLEVBQUU7WUFDVCxNQUFNLFFBQVEsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUVwRSxJQUFJLEtBQUssQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUMxQixNQUFNLFVBQVUsR0FBRztvQkFDakIsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQztvQkFDaEMsR0FBRyxFQUFFLEdBQUcsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztpQkFDOUIsQ0FBQztnQkFDRixXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2FBQzlCO1lBRUQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFLFFBQVEsRUFBRSxXQUFXLENBQUMsQ0FBQztTQUM3RDtJQUNILENBQUM7SUFFRDs7Ozs7T0FLRztJQUNLLFFBQVEsQ0FBQyxJQUFVO1FBQ3pCLE9BQU8sT0FBTyxJQUFJLENBQUMsVUFBVSxLQUFLLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6RixDQUFDO3VHQTNEVSxpQkFBaUI7MkdBQWpCLGlCQUFpQixjQUZoQixNQUFNOztTQUVQLGlCQUFpQjsyRkFBakIsaUJBQWlCO2tCQUg3QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgZmlsdGVyIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBEYXRhLCBOYXZpZ2F0aW9uRW5kLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQnJlYWRjcnVtYiB9IGZyb20gJy4uL2ludGVyZmFjZXMvYnJlYWRjcnVtYi5pbnRlcmZhY2UnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgQnJlYWRjcnVtYlNlcnZpY2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IF9icmVhZGNydW1icyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QnJlYWRjcnVtYltdPihbXSk7XG5cbiAgc2V0IGJyZWFkY3J1bWJzKHZhbHVlOiBCcmVhZGNydW1iW10pIHtcbiAgICB0aGlzLl9icmVhZGNydW1icy5uZXh0KHZhbHVlKTtcbiAgfVxuXG4gIGdldCBicmVhZGNydW1ic09ic2VydmFibGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2JyZWFkY3J1bWJzLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByb3V0ZXI6IFJvdXRlcikge1xuICAgIHRoaXMuc3Vic2NyaWJlVG9Sb3V0ZUNoYW5nZXMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdWJzY3JpYmUgdG8gcm91dGUgY2hhbmdlcyBhbmQgYWRkIGVsZW1lbnQgdG8gYnJlYWRjcnVtYlxuICAgKi9cbiAgc3Vic2NyaWJlVG9Sb3V0ZUNoYW5nZXMoKSB7XG4gICAgdGhpcy5yb3V0ZXIuZXZlbnRzLnBpcGUoZmlsdGVyKChldmVudCkgPT4gZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSkuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgY29uc3Qgcm9vdCA9IHRoaXMucm91dGVyLnJvdXRlclN0YXRlLnNuYXBzaG90LnJvb3Q7XG4gICAgICBjb25zdCBicmVhZGNydW1iczogQnJlYWRjcnVtYltdID0gW107XG4gICAgICB0aGlzLmFkZEJyZWFkY3J1bWIocm9vdCwgW10sIGJyZWFkY3J1bWJzKTtcbiAgICAgIHRoaXMuYnJlYWRjcnVtYnMgPSBicmVhZGNydW1icztcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgZWxlbWVudCB0byBicmVhZGNydW1iXG4gICAqXG4gICAqIEBwYXJhbSByb3V0ZVxuICAgKiBAcGFyYW0gcGFyZW50VXJsXG4gICAqIEBwYXJhbSBicmVhZGNydW1ic1xuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBhZGRCcmVhZGNydW1iKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBwYXJlbnRVcmw6IHN0cmluZ1tdLCBicmVhZGNydW1iczogQnJlYWRjcnVtYltdKSB7XG4gICAgaWYgKHJvdXRlKSB7XG4gICAgICBjb25zdCByb3V0ZVVybCA9IHBhcmVudFVybC5jb25jYXQocm91dGUudXJsLm1hcCgodXJsKSA9PiB1cmwucGF0aCkpO1xuXG4gICAgICBpZiAocm91dGUuZGF0YT8uYnJlYWRjcnVtYikge1xuICAgICAgICBjb25zdCBicmVhZGNydW1iID0ge1xuICAgICAgICAgIGxhYmVsOiB0aGlzLmdldExhYmVsKHJvdXRlLmRhdGEpLFxuICAgICAgICAgIHVybDogJy8nICsgcm91dGVVcmwuam9pbignLycpLFxuICAgICAgICB9O1xuICAgICAgICBicmVhZGNydW1icy5wdXNoKGJyZWFkY3J1bWIpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmFkZEJyZWFkY3J1bWIocm91dGUuZmlyc3RDaGlsZCwgcm91dGVVcmwsIGJyZWFkY3J1bWJzKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2V0IGxhYmVsIGZvciBicmVhZGNydW1iXG4gICAqXG4gICAqIEBwYXJhbSBkYXRhXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIGdldExhYmVsKGRhdGE6IERhdGEpIHtcbiAgICByZXR1cm4gdHlwZW9mIGRhdGEuYnJlYWRjcnVtYiA9PT0gJ2Z1bmN0aW9uJyA/IGRhdGEuYnJlYWRjcnVtYihkYXRhKSA6IGRhdGEuYnJlYWRjcnVtYjtcbiAgfVxufVxuIl19
|
|
@@ -2,7 +2,8 @@ import { Injectable } from '@angular/core';
|
|
|
2
2
|
import { GraphQLRequestType } from '../enums/graphql-request-type.enum';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
import * as i1 from "./graphql.service";
|
|
5
|
-
|
|
5
|
+
class CmsService {
|
|
6
|
+
graphQLService;
|
|
6
7
|
constructor(graphQLService) {
|
|
7
8
|
this.graphQLService = graphQLService;
|
|
8
9
|
}
|
|
@@ -69,13 +70,14 @@ export class CmsService {
|
|
|
69
70
|
lowerCaseFirstLetter(value) {
|
|
70
71
|
return value.charAt(0).toLowerCase() + value.slice(1);
|
|
71
72
|
}
|
|
73
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: CmsService, deps: [{ token: i1.GraphQLService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
74
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: CmsService, providedIn: 'root' });
|
|
72
75
|
}
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: CmsService, decorators: [{
|
|
76
|
+
export { CmsService };
|
|
77
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: CmsService, decorators: [{
|
|
76
78
|
type: Injectable,
|
|
77
79
|
args: [{
|
|
78
80
|
providedIn: 'root',
|
|
79
81
|
}]
|
|
80
82
|
}], ctorParameters: function () { return [{ type: i1.GraphQLService }]; } });
|
|
81
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
83
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY21zLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1iYXNlL3NoYXJlZC9zZXJ2aWNlcy9jbXMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDOzs7QUFHeEUsTUFHYSxVQUFVO0lBQ0Q7SUFBcEIsWUFBb0IsY0FBOEI7UUFBOUIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO0lBQUcsQ0FBQztJQUN0RDs7T0FFRztJQUNILFlBQVksQ0FBQyxFQUFVLEVBQUUsU0FBaUI7UUFDeEMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUNyQyxJQUFJLE9BQU8sQ0FBQywwQ0FBMEMsQ0FBQyxFQUFFO2dCQUN2RCxJQUFJLENBQUMsY0FBYztxQkFDaEIsT0FBTyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsU0FBUyxDQUFDLEVBQUU7b0JBQ3pELFNBQVMsRUFBRSxFQUFFLEVBQUUsRUFBRTtvQkFDakIsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDO29CQUNkLElBQUksRUFBRSxrQkFBa0IsQ0FBQyxRQUFRO2lCQUNsQyxDQUFDO3FCQUNELFNBQVMsQ0FBQztvQkFDVCxJQUFJLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRTt3QkFDZCxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQ2pCLENBQUM7b0JBQ0QsS0FBSyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUU7d0JBQ2IsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO3dCQUNaLE9BQU8sQ0FBQyxLQUFLLENBQUMsd0JBQXdCLEVBQUUsR0FBRyxDQUFDLENBQUM7b0JBQy9DLENBQUM7aUJBQ0YsQ0FBQyxDQUFDO2FBQ047UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUssQ0FBQyxlQUFlLENBQUMsRUFBVSxFQUFFLFNBQWlCO1FBQ2pELE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDckMsSUFBSSxPQUFPLENBQUMsOENBQThDLENBQUMsRUFBRTtnQkFDM0QsSUFBSSxDQUFDLGNBQWM7cUJBQ2hCLE9BQU8sQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFNBQVMsQ0FBQyxFQUFFO29CQUM1RCxTQUFTLEVBQUUsRUFBRSxFQUFFLEVBQUU7b0JBQ2pCLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQztvQkFDZCxJQUFJLEVBQUUsa0JBQWtCLENBQUMsUUFBUTtpQkFDbEMsQ0FBQztxQkFDRCxTQUFTLENBQUM7b0JBQ1QsSUFBSSxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUU7d0JBQ2QsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUNqQixDQUFDO29CQUNELEtBQUssRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFO3dCQUNiLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQzt3QkFDWixPQUFPLENBQUMsS0FBSyxDQUFDLDJCQUEyQixFQUFFLEdBQUcsQ0FBQyxDQUFDO29CQUNsRCxDQUFDO2lCQUNGLENBQUMsQ0FBQzthQUNOO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxxQkFBcUIsQ0FBQyxLQUFhO1FBQ2pDLE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRDs7T0FFRztJQUNILG9CQUFvQixDQUFDLEtBQWE7UUFDaEMsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEQsQ0FBQzt1R0FuRVUsVUFBVTsyR0FBVixVQUFVLGNBRlQsTUFBTTs7U0FFUCxVQUFVOzJGQUFWLFVBQVU7a0JBSHRCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgR3JhcGhRTFJlcXVlc3RUeXBlIH0gZnJvbSAnLi4vZW51bXMvZ3JhcGhxbC1yZXF1ZXN0LXR5cGUuZW51bSc7XG5pbXBvcnQgeyBHcmFwaFFMU2VydmljZSB9IGZyb20gJy4vZ3JhcGhxbC5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIENtc1NlcnZpY2Uge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGdyYXBoUUxTZXJ2aWNlOiBHcmFwaFFMU2VydmljZSkge31cbiAgLyoqXG4gICAqIEl0IGNhbGxzIHRoZSBncmFwaFFMU2VydmljZSB0byBkZWxldGUgdGhlIG9iamVjdCB3aXRoIHRoZSBpZCBvZiB0aGUgb2JqZWN0IHRoYXQgaXMgY3VycmVudGx5IGJlaW5nIGVkaXRlZFxuICAgKi9cbiAgZGVsZXRlT2JqZWN0KGlkOiBzdHJpbmcsIG1vZGVsTmFtZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGlmIChjb25maXJtKCdNw7ZjaHRlc3QgZHUgZGFzIE9iamVrdCB3aXJrbGljaCBsw7ZzY2hlbj8nKSkge1xuICAgICAgICB0aGlzLmdyYXBoUUxTZXJ2aWNlXG4gICAgICAgICAgLmdyYXBoUWwoJ2RlbGV0ZScgKyB0aGlzLmNhcGl0YWxpemVGaXJzdExldHRlcihtb2RlbE5hbWUpLCB7XG4gICAgICAgICAgICBhcmd1bWVudHM6IHsgaWQgfSxcbiAgICAgICAgICAgIGZpZWxkczogWydpZCddLFxuICAgICAgICAgICAgdHlwZTogR3JhcGhRTFJlcXVlc3RUeXBlLk1VVEFUSU9OLFxuICAgICAgICAgIH0pXG4gICAgICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgICAgICBuZXh0OiAodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgcmVzb2x2ZSh2YWx1ZSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZXJyb3I6IChlcnIpID0+IHtcbiAgICAgICAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIG9uIGRlbGV0ZSBvYmplY3QnLCBlcnIpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJdCBzZW5kcyBhIEdyYXBoUUwgbXV0YXRpb24gdG8gdGhlIHNlcnZlciB0byBkdXBsaWNhdGUgdGhlIG9iamVjdFxuICAgKi9cbiAgYXN5bmMgZHVwbGljYXRlT2JqZWN0KGlkOiBzdHJpbmcsIG1vZGVsTmFtZTogc3RyaW5nKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgaWYgKGNvbmZpcm0oJ03DtmNodGVzdCBkdSBkYXMgT2JqZWt0IHdpcmtsaWNoIGR1cGxpemllcmVuPycpKSB7XG4gICAgICAgIHRoaXMuZ3JhcGhRTFNlcnZpY2VcbiAgICAgICAgICAuZ3JhcGhRbCgnZHVwbGljYXRlJyArIHRoaXMuY2FwaXRhbGl6ZUZpcnN0TGV0dGVyKG1vZGVsTmFtZSksIHtcbiAgICAgICAgICAgIGFyZ3VtZW50czogeyBpZCB9LFxuICAgICAgICAgICAgZmllbGRzOiBbJ2lkJ10sXG4gICAgICAgICAgICB0eXBlOiBHcmFwaFFMUmVxdWVzdFR5cGUuTVVUQVRJT04sXG4gICAgICAgICAgfSlcbiAgICAgICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgIG5leHQ6ICh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICByZXNvbHZlKHZhbHVlKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlcnJvcjogKGVycikgPT4ge1xuICAgICAgICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3Igb24gZHVwbGljYXRlIG9iamVjdCcsIGVycik7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEl0IHRha2VzIGEgc3RyaW5nLCBjYXBpdGFsaXplcyB0aGUgZmlyc3QgbGV0dGVyLCBhbmQgcmV0dXJucyB0aGUgbW9kaWZpZWQgc3RyaW5nXG4gICAqXG4gICAqIEBwYXJhbSB2YWx1ZSAtIFRoZSBzdHJpbmcgdG8gY2FwaXRhbGl6ZS5cbiAgICogQHJldHVybnMgVGhlIGZpcnN0IGxldHRlciBvZiB0aGUgc3RyaW5nIGlzIGJlaW5nIGNhcGl0YWxpemVkIGFuZCB0aGUgcmVzdCBvZiB0aGUgc3RyaW5nIGlzIGJlaW5nIHJldHVybmVkLlxuICAgKi9cbiAgY2FwaXRhbGl6ZUZpcnN0TGV0dGVyKHZhbHVlOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdmFsdWUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyB2YWx1ZS5zbGljZSgxKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUcmFuc2Zvcm0gZmlyc3QgbGV0dGVyIHRvIGxvd2VyY2FzZVxuICAgKi9cbiAgbG93ZXJDYXNlRmlyc3RMZXR0ZXIodmFsdWU6IHN0cmluZykge1xuICAgIHJldHVybiB2YWx1ZS5jaGFyQXQoMCkudG9Mb3dlckNhc2UoKSArIHZhbHVlLnNsaWNlKDEpO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import Compressor from 'compressorjs';
|
|
3
|
+
import { HttpHeaders } from '@angular/common/http';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "../services/auth.service";
|
|
6
|
+
import * as i2 from "@angular/common/http";
|
|
7
|
+
class FileService {
|
|
8
|
+
authService;
|
|
9
|
+
httpClient;
|
|
10
|
+
constructor(authService, httpClient) {
|
|
11
|
+
this.authService = authService;
|
|
12
|
+
this.httpClient = httpClient;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Compress file with options and return file
|
|
16
|
+
*/
|
|
17
|
+
compress(file, options) {
|
|
18
|
+
const config = {
|
|
19
|
+
quality: 0.6,
|
|
20
|
+
checkOrientation: false,
|
|
21
|
+
...options,
|
|
22
|
+
};
|
|
23
|
+
return new Promise((resolve, reject) => {
|
|
24
|
+
new Compressor(file, {
|
|
25
|
+
success(result) {
|
|
26
|
+
// Check if result is blob for convert to file
|
|
27
|
+
if (result instanceof Blob) {
|
|
28
|
+
resolve(new File([result], result.name));
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
resolve(result);
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
error(err) {
|
|
35
|
+
reject(err.message);
|
|
36
|
+
},
|
|
37
|
+
...config,
|
|
38
|
+
});
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Upload file to server
|
|
43
|
+
*/
|
|
44
|
+
async upload(url, path, file, compressOptions) {
|
|
45
|
+
return new Promise(async (resolve, reject) => {
|
|
46
|
+
if (compressOptions) {
|
|
47
|
+
file = await this.compress(file, compressOptions);
|
|
48
|
+
}
|
|
49
|
+
const data = new FormData();
|
|
50
|
+
data.append('file', file);
|
|
51
|
+
const httpOptions = {
|
|
52
|
+
headers: new HttpHeaders({
|
|
53
|
+
Authorization: 'Bearer ' + this.authService.token,
|
|
54
|
+
}),
|
|
55
|
+
};
|
|
56
|
+
this.httpClient.post(url + path, data, httpOptions).subscribe((result) => {
|
|
57
|
+
resolve(result);
|
|
58
|
+
}, (err) => {
|
|
59
|
+
reject(err);
|
|
60
|
+
});
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
delete(url, path, id) {
|
|
64
|
+
return new Promise(async (resolve, reject) => {
|
|
65
|
+
const httpOptions = {
|
|
66
|
+
headers: new HttpHeaders({
|
|
67
|
+
Authorization: 'Bearer ' + this.authService.token,
|
|
68
|
+
}),
|
|
69
|
+
};
|
|
70
|
+
this.httpClient.delete(url + path + id, httpOptions).subscribe((result) => {
|
|
71
|
+
resolve(result);
|
|
72
|
+
}, (err) => {
|
|
73
|
+
reject(err);
|
|
74
|
+
});
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: FileService, deps: [{ token: i1.AuthService }, { token: i2.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
78
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: FileService, providedIn: 'root' });
|
|
79
|
+
}
|
|
80
|
+
export { FileService };
|
|
81
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: FileService, decorators: [{
|
|
82
|
+
type: Injectable,
|
|
83
|
+
args: [{
|
|
84
|
+
providedIn: 'root',
|
|
85
|
+
}]
|
|
86
|
+
}], ctorParameters: function () { return [{ type: i1.AuthService }, { type: i2.HttpClient }]; } });
|
|
87
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctYmFzZS9zaGFyZWQvc2VydmljZXMvZmlsZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxVQUFVLE1BQU0sY0FBYyxDQUFDO0FBRXRDLE9BQU8sRUFBYyxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7OztBQUcvRCxNQUdhLFdBQVc7SUFDRjtJQUFrQztJQUF0RCxZQUFvQixXQUF3QixFQUFVLFVBQXNCO1FBQXhELGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQVUsZUFBVSxHQUFWLFVBQVUsQ0FBWTtJQUFHLENBQUM7SUFFaEY7O09BRUc7SUFDSCxRQUFRLENBQUMsSUFBVSxFQUFFLE9BQXlCO1FBQzVDLE1BQU0sTUFBTSxHQUFHO1lBQ2IsT0FBTyxFQUFFLEdBQUc7WUFDWixnQkFBZ0IsRUFBRSxLQUFLO1lBQ3ZCLEdBQUcsT0FBTztTQUNYLENBQUM7UUFFRixPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ3JDLElBQUksVUFBVSxDQUFDLElBQUksRUFBRTtnQkFDbkIsT0FBTyxDQUFDLE1BQW1CO29CQUN6Qiw4Q0FBOEM7b0JBQzlDLElBQUksTUFBTSxZQUFZLElBQUksRUFBRTt3QkFDMUIsT0FBTyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUcsTUFBYyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7cUJBQ25EO3lCQUFNO3dCQUNMLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztxQkFDakI7Z0JBQ0gsQ0FBQztnQkFDRCxLQUFLLENBQUMsR0FBRztvQkFDUCxNQUFNLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUN0QixDQUFDO2dCQUNELEdBQUcsTUFBTTthQUNWLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFXLEVBQUUsSUFBWSxFQUFFLElBQVUsRUFBRSxlQUFpQztRQUNuRixPQUFPLElBQUksT0FBTyxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDM0MsSUFBSSxlQUFlLEVBQUU7Z0JBQ25CLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLGVBQWUsQ0FBQyxDQUFDO2FBQ25EO1lBRUQsTUFBTSxJQUFJLEdBQUcsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUM1QixJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztZQUUxQixNQUFNLFdBQVcsR0FBRztnQkFDbEIsT0FBTyxFQUFFLElBQUksV0FBVyxDQUFDO29CQUN2QixhQUFhLEVBQUUsU0FBUyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSztpQkFDbEQsQ0FBQzthQUNILENBQUM7WUFFRixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxFQUFFLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQyxTQUFTLENBQzNELENBQUMsTUFBVyxFQUFFLEVBQUU7Z0JBQ2QsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ2xCLENBQUMsRUFDRCxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUNOLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNkLENBQUMsQ0FDRixDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsTUFBTSxDQUFDLEdBQVcsRUFBRSxJQUFZLEVBQUUsRUFBVTtRQUMxQyxPQUFPLElBQUksT0FBTyxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDM0MsTUFBTSxXQUFXLEdBQUc7Z0JBQ2xCLE9BQU8sRUFBRSxJQUFJLFdBQVcsQ0FBQztvQkFDdkIsYUFBYSxFQUFFLFNBQVMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUs7aUJBQ2xELENBQUM7YUFDSCxDQUFDO1lBRUYsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsR0FBRyxHQUFHLElBQUksR0FBRyxFQUFFLEVBQUUsV0FBVyxDQUFDLENBQUMsU0FBUyxDQUM1RCxDQUFDLE1BQU0sRUFBRSxFQUFFO2dCQUNULE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNsQixDQUFDLEVBQ0QsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDTixNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDZCxDQUFDLENBQ0YsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzt1R0E3RVUsV0FBVzsyR0FBWCxXQUFXLGNBRlYsTUFBTTs7U0FFUCxXQUFXOzJGQUFYLFdBQVc7a0JBSHZCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IENvbXByZXNzb3IgZnJvbSAnY29tcHJlc3NvcmpzJztcbmltcG9ydCB7IENvbXByZXNzT3B0aW9ucyB9IGZyb20gJy4uL2ludGVyZmFjZXMvY29tcHJlc3Mtb3B0aW9ucy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEhlYWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2F1dGguc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBGaWxlU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLCBwcml2YXRlIGh0dHBDbGllbnQ6IEh0dHBDbGllbnQpIHt9XG5cbiAgLyoqXG4gICAqIENvbXByZXNzIGZpbGUgd2l0aCBvcHRpb25zIGFuZCByZXR1cm4gZmlsZVxuICAgKi9cbiAgY29tcHJlc3MoZmlsZTogRmlsZSwgb3B0aW9ucz86IENvbXByZXNzT3B0aW9ucyk6IFByb21pc2U8RmlsZT4ge1xuICAgIGNvbnN0IGNvbmZpZyA9IHtcbiAgICAgIHF1YWxpdHk6IDAuNixcbiAgICAgIGNoZWNrT3JpZW50YXRpb246IGZhbHNlLFxuICAgICAgLi4ub3B0aW9ucyxcbiAgICB9O1xuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIG5ldyBDb21wcmVzc29yKGZpbGUsIHtcbiAgICAgICAgc3VjY2VzcyhyZXN1bHQ6IEJsb2IgfCBGaWxlKSB7XG4gICAgICAgICAgLy8gQ2hlY2sgaWYgcmVzdWx0IGlzIGJsb2IgZm9yIGNvbnZlcnQgdG8gZmlsZVxuICAgICAgICAgIGlmIChyZXN1bHQgaW5zdGFuY2VvZiBCbG9iKSB7XG4gICAgICAgICAgICByZXNvbHZlKG5ldyBGaWxlKFtyZXN1bHRdLCAocmVzdWx0IGFzIGFueSkubmFtZSkpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBlcnJvcihlcnIpIHtcbiAgICAgICAgICByZWplY3QoZXJyLm1lc3NhZ2UpO1xuICAgICAgICB9LFxuICAgICAgICAuLi5jb25maWcsXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGxvYWQgZmlsZSB0byBzZXJ2ZXJcbiAgICovXG4gIGFzeW5jIHVwbG9hZCh1cmw6IHN0cmluZywgcGF0aDogc3RyaW5nLCBmaWxlOiBGaWxlLCBjb21wcmVzc09wdGlvbnM/OiBDb21wcmVzc09wdGlvbnMpOiBQcm9taXNlPHsgaWQ6IHN0cmluZyB9PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGFzeW5jIChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGlmIChjb21wcmVzc09wdGlvbnMpIHtcbiAgICAgICAgZmlsZSA9IGF3YWl0IHRoaXMuY29tcHJlc3MoZmlsZSwgY29tcHJlc3NPcHRpb25zKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgICAgZGF0YS5hcHBlbmQoJ2ZpbGUnLCBmaWxlKTtcblxuICAgICAgY29uc3QgaHR0cE9wdGlvbnMgPSB7XG4gICAgICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh7XG4gICAgICAgICAgQXV0aG9yaXphdGlvbjogJ0JlYXJlciAnICsgdGhpcy5hdXRoU2VydmljZS50b2tlbixcbiAgICAgICAgfSksXG4gICAgICB9O1xuXG4gICAgICB0aGlzLmh0dHBDbGllbnQucG9zdCh1cmwgKyBwYXRoLCBkYXRhLCBodHRwT3B0aW9ucykuc3Vic2NyaWJlKFxuICAgICAgICAocmVzdWx0OiBhbnkpID0+IHtcbiAgICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICAgIH0sXG4gICAgICAgIChlcnIpID0+IHtcbiAgICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9KTtcbiAgfVxuXG4gIGRlbGV0ZSh1cmw6IHN0cmluZywgcGF0aDogc3RyaW5nLCBpZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGFzeW5jIChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGNvbnN0IGh0dHBPcHRpb25zID0ge1xuICAgICAgICBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoe1xuICAgICAgICAgIEF1dGhvcml6YXRpb246ICdCZWFyZXIgJyArIHRoaXMuYXV0aFNlcnZpY2UudG9rZW4sXG4gICAgICAgIH0pLFxuICAgICAgfTtcblxuICAgICAgdGhpcy5odHRwQ2xpZW50LmRlbGV0ZSh1cmwgKyBwYXRoICsgaWQsIGh0dHBPcHRpb25zKS5zdWJzY3JpYmUoXG4gICAgICAgIChyZXN1bHQpID0+IHtcbiAgICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICAgIH0sXG4gICAgICAgIChlcnIpID0+IHtcbiAgICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9KTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { Inject, Injectable } from '@angular/core';
|
|
2
|
+
import { UntypedFormControl, UntypedFormGroup } from '@angular/forms';
|
|
3
|
+
import { DOCUMENT } from '@angular/common';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "./scroll.service";
|
|
6
|
+
class FormsService {
|
|
7
|
+
document;
|
|
8
|
+
scrollService;
|
|
9
|
+
constructor(document, scrollService) {
|
|
10
|
+
this.document = document;
|
|
11
|
+
this.scrollService = scrollService;
|
|
12
|
+
}
|
|
13
|
+
validateAllFormFields(formGroup) {
|
|
14
|
+
Object.keys(formGroup.controls).forEach((field) => {
|
|
15
|
+
const control = formGroup.get(field);
|
|
16
|
+
if (control instanceof UntypedFormControl) {
|
|
17
|
+
control.markAsTouched({ onlySelf: true });
|
|
18
|
+
}
|
|
19
|
+
else if (control instanceof UntypedFormGroup) {
|
|
20
|
+
this.validateAllFormFields(control);
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
findInvalidControls(formGroup) {
|
|
25
|
+
return this.getInvalidControl(formGroup);
|
|
26
|
+
}
|
|
27
|
+
getInvalidControl(formGroup, invalid, parents = []) {
|
|
28
|
+
let result = invalid ? [...invalid] : [];
|
|
29
|
+
let nestedParents = [...[], ...parents];
|
|
30
|
+
const controls = formGroup.controls;
|
|
31
|
+
Object.keys(formGroup.controls).forEach((name) => {
|
|
32
|
+
if (controls[name].invalid) {
|
|
33
|
+
if (controls[name]?.controls) {
|
|
34
|
+
nestedParents.push(name);
|
|
35
|
+
result = this.getInvalidControl(controls[name], result, nestedParents);
|
|
36
|
+
nestedParents = [];
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
result.push(nestedParents.length ? nestedParents.join('.') + '.' + name : name);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
return result;
|
|
44
|
+
}
|
|
45
|
+
scrollToInvalidControl(form) {
|
|
46
|
+
const invalidForm = this.findInvalidControls(form)[0];
|
|
47
|
+
this.scrollService.scrollTo(invalidForm);
|
|
48
|
+
}
|
|
49
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: FormsService, deps: [{ token: DOCUMENT }, { token: i1.ScrollService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
50
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: FormsService, providedIn: 'root' });
|
|
51
|
+
}
|
|
52
|
+
export { FormsService };
|
|
53
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: FormsService, decorators: [{
|
|
54
|
+
type: Injectable,
|
|
55
|
+
args: [{
|
|
56
|
+
providedIn: 'root',
|
|
57
|
+
}]
|
|
58
|
+
}], ctorParameters: function () { return [{ type: Document, decorators: [{
|
|
59
|
+
type: Inject,
|
|
60
|
+
args: [DOCUMENT]
|
|
61
|
+
}] }, { type: i1.ScrollService }]; } });
|
|
62
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybXMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWJhc2Uvc2hhcmVkL3NlcnZpY2VzL2Zvcm1zLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7QUFHM0MsTUFHYSxZQUFZO0lBQ2U7SUFBNEI7SUFBbEUsWUFBc0MsUUFBa0IsRUFBVSxhQUE0QjtRQUF4RCxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQVUsa0JBQWEsR0FBYixhQUFhLENBQWU7SUFBRyxDQUFDO0lBRTNGLHFCQUFxQixDQUFDLFNBQTJCO1FBQ3RELE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ2hELE1BQU0sT0FBTyxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDckMsSUFBSSxPQUFPLFlBQVksa0JBQWtCLEVBQUU7Z0JBQ3pDLE9BQU8sQ0FBQyxhQUFhLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQzthQUMzQztpQkFBTSxJQUFJLE9BQU8sWUFBWSxnQkFBZ0IsRUFBRTtnQkFDOUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQ3JDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sbUJBQW1CLENBQUMsU0FBMkI7UUFDcEQsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVPLGlCQUFpQixDQUFDLFNBQTJCLEVBQUUsT0FBUSxFQUFFLFVBQWUsRUFBRTtRQUNoRixJQUFJLE1BQU0sR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ3pDLElBQUksYUFBYSxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsR0FBRyxPQUFPLENBQUMsQ0FBQztRQUV4QyxNQUFNLFFBQVEsR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFDO1FBQ3BDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQy9DLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRTtnQkFDMUIsSUFBSyxRQUFRLENBQUMsSUFBSSxDQUFTLEVBQUUsUUFBUSxFQUFFO29CQUNyQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUN6QixNQUFNLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQVEsRUFBRSxNQUFNLEVBQUUsYUFBYSxDQUFDLENBQUM7b0JBQzlFLGFBQWEsR0FBRyxFQUFFLENBQUM7aUJBQ3BCO3FCQUFNO29CQUNMLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztpQkFDakY7YUFDRjtRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVNLHNCQUFzQixDQUFDLElBQXNCO1FBQ2xELE1BQU0sV0FBVyxHQUFXLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM5RCxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUMzQyxDQUFDO3VHQXpDVSxZQUFZLGtCQUNILFFBQVE7MkdBRGpCLFlBQVksY0FGWCxNQUFNOztTQUVQLFlBQVk7MkZBQVosWUFBWTtrQkFIeEIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQUVjLE1BQU07MkJBQUMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVW50eXBlZEZvcm1Db250cm9sLCBVbnR5cGVkRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgU2Nyb2xsU2VydmljZSB9IGZyb20gJy4vc2Nyb2xsLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgRm9ybXNTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IoQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSBkb2N1bWVudDogRG9jdW1lbnQsIHByaXZhdGUgc2Nyb2xsU2VydmljZTogU2Nyb2xsU2VydmljZSkge31cblxuICBwdWJsaWMgdmFsaWRhdGVBbGxGb3JtRmllbGRzKGZvcm1Hcm91cDogVW50eXBlZEZvcm1Hcm91cCkge1xuICAgIE9iamVjdC5rZXlzKGZvcm1Hcm91cC5jb250cm9scykuZm9yRWFjaCgoZmllbGQpID0+IHtcbiAgICAgIGNvbnN0IGNvbnRyb2wgPSBmb3JtR3JvdXAuZ2V0KGZpZWxkKTtcbiAgICAgIGlmIChjb250cm9sIGluc3RhbmNlb2YgVW50eXBlZEZvcm1Db250cm9sKSB7XG4gICAgICAgIGNvbnRyb2wubWFya0FzVG91Y2hlZCh7IG9ubHlTZWxmOiB0cnVlIH0pO1xuICAgICAgfSBlbHNlIGlmIChjb250cm9sIGluc3RhbmNlb2YgVW50eXBlZEZvcm1Hcm91cCkge1xuICAgICAgICB0aGlzLnZhbGlkYXRlQWxsRm9ybUZpZWxkcyhjb250cm9sKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBmaW5kSW52YWxpZENvbnRyb2xzKGZvcm1Hcm91cDogVW50eXBlZEZvcm1Hcm91cCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5nZXRJbnZhbGlkQ29udHJvbChmb3JtR3JvdXApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRJbnZhbGlkQ29udHJvbChmb3JtR3JvdXA6IFVudHlwZWRGb3JtR3JvdXAsIGludmFsaWQ/LCBwYXJlbnRzOiBhbnkgPSBbXSkge1xuICAgIGxldCByZXN1bHQgPSBpbnZhbGlkID8gWy4uLmludmFsaWRdIDogW107XG4gICAgbGV0IG5lc3RlZFBhcmVudHMgPSBbLi4uW10sIC4uLnBhcmVudHNdO1xuXG4gICAgY29uc3QgY29udHJvbHMgPSBmb3JtR3JvdXAuY29udHJvbHM7XG4gICAgT2JqZWN0LmtleXMoZm9ybUdyb3VwLmNvbnRyb2xzKS5mb3JFYWNoKChuYW1lKSA9PiB7XG4gICAgICBpZiAoY29udHJvbHNbbmFtZV0uaW52YWxpZCkge1xuICAgICAgICBpZiAoKGNvbnRyb2xzW25hbWVdIGFzIGFueSk/LmNvbnRyb2xzKSB7XG4gICAgICAgICAgbmVzdGVkUGFyZW50cy5wdXNoKG5hbWUpO1xuICAgICAgICAgIHJlc3VsdCA9IHRoaXMuZ2V0SW52YWxpZENvbnRyb2woY29udHJvbHNbbmFtZV0gYXMgYW55LCByZXN1bHQsIG5lc3RlZFBhcmVudHMpO1xuICAgICAgICAgIG5lc3RlZFBhcmVudHMgPSBbXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXN1bHQucHVzaChuZXN0ZWRQYXJlbnRzLmxlbmd0aCA/IG5lc3RlZFBhcmVudHMuam9pbignLicpICsgJy4nICsgbmFtZSA6IG5hbWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgcHVibGljIHNjcm9sbFRvSW52YWxpZENvbnRyb2woZm9ybTogVW50eXBlZEZvcm1Hcm91cCkge1xuICAgIGNvbnN0IGludmFsaWRGb3JtOiBzdHJpbmcgPSB0aGlzLmZpbmRJbnZhbGlkQ29udHJvbHMoZm9ybSlbMF07XG4gICAgdGhpcy5zY3JvbGxTZXJ2aWNlLnNjcm9sbFRvKGludmFsaWRGb3JtKTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import { gql } from 'apollo-angular';
|
|
2
|
+
import { Injectable } from '@angular/core';
|
|
3
|
+
import { of } from 'rxjs';
|
|
4
|
+
import { buildClientSchema, getIntrospectionQuery } from 'graphql';
|
|
5
|
+
import { map } from 'rxjs/operators';
|
|
6
|
+
import { GraphQLMeta } from '../classes/graphql-meta.class';
|
|
7
|
+
import { Helper } from '../classes/helper.class';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
import * as i1 from "apollo-angular";
|
|
10
|
+
/**
|
|
11
|
+
* GraphQL meta service
|
|
12
|
+
*
|
|
13
|
+
* For collecting meta information of the GraphQL API
|
|
14
|
+
*/
|
|
15
|
+
class GraphQLMetaService {
|
|
16
|
+
apollo;
|
|
17
|
+
// Caches
|
|
18
|
+
_frozenSchema;
|
|
19
|
+
_frozenSchemaObservable;
|
|
20
|
+
_meta;
|
|
21
|
+
_metaObservable;
|
|
22
|
+
_schemaObservable;
|
|
23
|
+
// Private caches
|
|
24
|
+
_introspectionQuery;
|
|
25
|
+
/**
|
|
26
|
+
* Include services
|
|
27
|
+
*/
|
|
28
|
+
constructor(apollo) {
|
|
29
|
+
this.apollo = apollo;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Getter of introspectionQuery
|
|
33
|
+
*/
|
|
34
|
+
get introspectionQuery() {
|
|
35
|
+
return JSON.parse(JSON.stringify(this._introspectionQuery));
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Get schema for API
|
|
39
|
+
* See https://www.apollographql.com/blog/three-ways-to-represent-your-graphql-schema-a41f4175100d
|
|
40
|
+
*/
|
|
41
|
+
getSchema(options = {}) {
|
|
42
|
+
// Get configurations
|
|
43
|
+
const config = {
|
|
44
|
+
cache: true,
|
|
45
|
+
freeze: true,
|
|
46
|
+
...options,
|
|
47
|
+
};
|
|
48
|
+
// Use caching
|
|
49
|
+
if (config.cache) {
|
|
50
|
+
if (config.freeze && this._frozenSchema) {
|
|
51
|
+
return of(this._frozenSchema);
|
|
52
|
+
}
|
|
53
|
+
if (this._introspectionQuery) {
|
|
54
|
+
return of(buildClientSchema(this.introspectionQuery));
|
|
55
|
+
}
|
|
56
|
+
if (config.freeze && this._frozenSchemaObservable) {
|
|
57
|
+
return this._frozenSchemaObservable;
|
|
58
|
+
}
|
|
59
|
+
else if (!config.freeze && this._schemaObservable) {
|
|
60
|
+
return this._schemaObservable;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
// Request schema from server
|
|
64
|
+
const observable = this.apollo
|
|
65
|
+
.query({
|
|
66
|
+
query: gql(getIntrospectionQuery({ descriptions: false })),
|
|
67
|
+
})
|
|
68
|
+
.pipe(map((schema) => {
|
|
69
|
+
// Cache introspectionQuery
|
|
70
|
+
this._introspectionQuery = schema.data;
|
|
71
|
+
// Convert schema to GraphQLSchema
|
|
72
|
+
this._frozenSchema = Helper.deepFreeze(buildClientSchema(this.introspectionQuery));
|
|
73
|
+
// Return GraphQLSchema
|
|
74
|
+
if (config.freeze) {
|
|
75
|
+
return this._frozenSchema;
|
|
76
|
+
}
|
|
77
|
+
return buildClientSchema(schema.data);
|
|
78
|
+
}));
|
|
79
|
+
// Set observables
|
|
80
|
+
if (config.freeze) {
|
|
81
|
+
this._frozenSchemaObservable = observable;
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
this._schemaObservable = observable;
|
|
85
|
+
}
|
|
86
|
+
// Return result
|
|
87
|
+
return observable;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Get meta for API
|
|
91
|
+
* See https://www.apollographql.com/blog/three-ways-to-represent-your-graphql-schema-a41f4175100d
|
|
92
|
+
*/
|
|
93
|
+
getMeta(options = {}) {
|
|
94
|
+
// Get configurations
|
|
95
|
+
const config = {
|
|
96
|
+
cache: true,
|
|
97
|
+
log: false,
|
|
98
|
+
...options,
|
|
99
|
+
};
|
|
100
|
+
// Use caching
|
|
101
|
+
if (config.cache) {
|
|
102
|
+
if (this._meta) {
|
|
103
|
+
return of(this._meta);
|
|
104
|
+
}
|
|
105
|
+
else if (this._metaObservable) {
|
|
106
|
+
return this._metaObservable;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
// Request schema from server
|
|
110
|
+
const observable = this.getSchema(options).pipe(map((schema) => {
|
|
111
|
+
// Log
|
|
112
|
+
if (config.log) {
|
|
113
|
+
console.log({ schema });
|
|
114
|
+
}
|
|
115
|
+
this._meta = new GraphQLMeta(schema);
|
|
116
|
+
return this._meta;
|
|
117
|
+
}));
|
|
118
|
+
// Set observables
|
|
119
|
+
this._metaObservable = observable;
|
|
120
|
+
// Return result
|
|
121
|
+
return observable;
|
|
122
|
+
}
|
|
123
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: GraphQLMetaService, deps: [{ token: i1.Apollo }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
124
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: GraphQLMetaService, providedIn: 'root' });
|
|
125
|
+
}
|
|
126
|
+
export { GraphQLMetaService };
|
|
127
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: GraphQLMetaService, decorators: [{
|
|
128
|
+
type: Injectable,
|
|
129
|
+
args: [{
|
|
130
|
+
providedIn: 'root',
|
|
131
|
+
}]
|
|
132
|
+
}], ctorParameters: function () { return [{ type: i1.Apollo }]; } });
|
|
133
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JhcGhxbC1tZXRhLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1iYXNlL3NoYXJlZC9zZXJ2aWNlcy9ncmFwaHFsLW1ldGEuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQVUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxxQkFBcUIsRUFBcUMsTUFBTSxTQUFTLENBQUM7QUFDdEcsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0seUJBQXlCLENBQUM7OztBQUVqRDs7OztHQUlHO0FBQ0gsTUFHYSxrQkFBa0I7SUFjUDtJQWJ0QixTQUFTO0lBQ0MsYUFBYSxDQUFnQjtJQUM3Qix1QkFBdUIsQ0FBNEI7SUFDbkQsS0FBSyxDQUFjO0lBQ25CLGVBQWUsQ0FBMEI7SUFDekMsaUJBQWlCLENBQTRCO0lBRXZELGlCQUFpQjtJQUNULG1CQUFtQixDQUFxQjtJQUVoRDs7T0FFRztJQUNILFlBQXNCLE1BQWM7UUFBZCxXQUFNLEdBQU4sTUFBTSxDQUFRO0lBQUcsQ0FBQztJQUV4Qzs7T0FFRztJQUNILElBQUksa0JBQWtCO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVEOzs7T0FHRztJQUNJLFNBQVMsQ0FBQyxVQUFpRCxFQUFFO1FBQ2xFLHFCQUFxQjtRQUNyQixNQUFNLE1BQU0sR0FBRztZQUNiLEtBQUssRUFBRSxJQUFJO1lBQ1gsTUFBTSxFQUFFLElBQUk7WUFDWixHQUFHLE9BQU87U0FDWCxDQUFDO1FBRUYsY0FBYztRQUNkLElBQUksTUFBTSxDQUFDLEtBQUssRUFBRTtZQUNoQixJQUFJLE1BQU0sQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtnQkFDdkMsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO2FBQy9CO1lBQ0QsSUFBSSxJQUFJLENBQUMsbUJBQW1CLEVBQUU7Z0JBQzVCLE9BQU8sRUFBRSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUM7YUFDdkQ7WUFDRCxJQUFJLE1BQU0sQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLHVCQUF1QixFQUFFO2dCQUNqRCxPQUFPLElBQUksQ0FBQyx1QkFBdUIsQ0FBQzthQUNyQztpQkFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUU7Z0JBQ25ELE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDO2FBQy9CO1NBQ0Y7UUFFRCw2QkFBNkI7UUFDN0IsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU07YUFDM0IsS0FBSyxDQUFDO1lBQ0wsS0FBSyxFQUFFLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1NBQzNELENBQUM7YUFDRCxJQUFJLENBQ0gsR0FBRyxDQUFDLENBQUMsTUFBVyxFQUFFLEVBQUU7WUFDbEIsMkJBQTJCO1lBQzNCLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDO1lBRXZDLGtDQUFrQztZQUNsQyxJQUFJLENBQUMsYUFBYSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQztZQUVuRix1QkFBdUI7WUFDdkIsSUFBSSxNQUFNLENBQUMsTUFBTSxFQUFFO2dCQUNqQixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7YUFDM0I7WUFDRCxPQUFPLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN4QyxDQUFDLENBQUMsQ0FDSCxDQUFDO1FBRUosa0JBQWtCO1FBQ2xCLElBQUksTUFBTSxDQUFDLE1BQU0sRUFBRTtZQUNqQixJQUFJLENBQUMsdUJBQXVCLEdBQUcsVUFBVSxDQUFDO1NBQzNDO2FBQU07WUFDTCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsVUFBVSxDQUFDO1NBQ3JDO1FBRUQsZ0JBQWdCO1FBQ2hCLE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7SUFFRDs7O09BR0c7SUFDSSxPQUFPLENBQUMsVUFBOEMsRUFBRTtRQUM3RCxxQkFBcUI7UUFDckIsTUFBTSxNQUFNLEdBQUc7WUFDYixLQUFLLEVBQUUsSUFBSTtZQUNYLEdBQUcsRUFBRSxLQUFLO1lBQ1YsR0FBRyxPQUFPO1NBQ1gsQ0FBQztRQUVGLGNBQWM7UUFDZCxJQUFJLE1BQU0sQ0FBQyxLQUFLLEVBQUU7WUFDaEIsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO2dCQUNkLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUN2QjtpQkFBTSxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUU7Z0JBQy9CLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQzthQUM3QjtTQUNGO1FBRUQsNkJBQTZCO1FBQzdCLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUM3QyxHQUFHLENBQUMsQ0FBQyxNQUFXLEVBQUUsRUFBRTtZQUNsQixNQUFNO1lBQ04sSUFBSSxNQUFNLENBQUMsR0FBRyxFQUFFO2dCQUNkLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO2FBQ3pCO1lBRUQsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNyQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDcEIsQ0FBQyxDQUFDLENBQ0gsQ0FBQztRQUVGLGtCQUFrQjtRQUNsQixJQUFJLENBQUMsZUFBZSxHQUFHLFVBQVUsQ0FBQztRQUVsQyxnQkFBZ0I7UUFDaEIsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQzt1R0F6SFUsa0JBQWtCOzJHQUFsQixrQkFBa0IsY0FGakIsTUFBTTs7U0FFUCxrQkFBa0I7MkZBQWxCLGtCQUFrQjtrQkFIOUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBcG9sbG8sIGdxbCB9IGZyb20gJ2Fwb2xsby1hbmd1bGFyJztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBidWlsZENsaWVudFNjaGVtYSwgZ2V0SW50cm9zcGVjdGlvblF1ZXJ5LCBHcmFwaFFMU2NoZW1hLCBJbnRyb3NwZWN0aW9uUXVlcnkgfSBmcm9tICdncmFwaHFsJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEdyYXBoUUxNZXRhIH0gZnJvbSAnLi4vY2xhc3Nlcy9ncmFwaHFsLW1ldGEuY2xhc3MnO1xuaW1wb3J0IHsgSGVscGVyIH0gZnJvbSAnLi4vY2xhc3Nlcy9oZWxwZXIuY2xhc3MnO1xuXG4vKipcbiAqIEdyYXBoUUwgbWV0YSBzZXJ2aWNlXG4gKlxuICogRm9yIGNvbGxlY3RpbmcgbWV0YSBpbmZvcm1hdGlvbiBvZiB0aGUgR3JhcGhRTCBBUElcbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEdyYXBoUUxNZXRhU2VydmljZSB7XG4gIC8vIENhY2hlc1xuICBwcm90ZWN0ZWQgX2Zyb3plblNjaGVtYTogR3JhcGhRTFNjaGVtYTtcbiAgcHJvdGVjdGVkIF9mcm96ZW5TY2hlbWFPYnNlcnZhYmxlOiBPYnNlcnZhYmxlPEdyYXBoUUxTY2hlbWE+O1xuICBwcm90ZWN0ZWQgX21ldGE6IEdyYXBoUUxNZXRhO1xuICBwcm90ZWN0ZWQgX21ldGFPYnNlcnZhYmxlOiBPYnNlcnZhYmxlPEdyYXBoUUxNZXRhPjtcbiAgcHJvdGVjdGVkIF9zY2hlbWFPYnNlcnZhYmxlOiBPYnNlcnZhYmxlPEdyYXBoUUxTY2hlbWE+O1xuXG4gIC8vIFByaXZhdGUgY2FjaGVzXG4gIHByaXZhdGUgX2ludHJvc3BlY3Rpb25RdWVyeTogSW50cm9zcGVjdGlvblF1ZXJ5O1xuXG4gIC8qKlxuICAgKiBJbmNsdWRlIHNlcnZpY2VzXG4gICAqL1xuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgYXBvbGxvOiBBcG9sbG8pIHt9XG5cbiAgLyoqXG4gICAqIEdldHRlciBvZiBpbnRyb3NwZWN0aW9uUXVlcnlcbiAgICovXG4gIGdldCBpbnRyb3NwZWN0aW9uUXVlcnkoKTogSW50cm9zcGVjdGlvblF1ZXJ5IHtcbiAgICByZXR1cm4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLl9pbnRyb3NwZWN0aW9uUXVlcnkpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgc2NoZW1hIGZvciBBUElcbiAgICogU2VlIGh0dHBzOi8vd3d3LmFwb2xsb2dyYXBocWwuY29tL2Jsb2cvdGhyZWUtd2F5cy10by1yZXByZXNlbnQteW91ci1ncmFwaHFsLXNjaGVtYS1hNDFmNDE3NTEwMGRcbiAgICovXG4gIHB1YmxpYyBnZXRTY2hlbWEob3B0aW9uczogeyBjYWNoZT86IGJvb2xlYW47IGZyZWV6ZT86IGJvb2xlYW4gfSA9IHt9KTogT2JzZXJ2YWJsZTxHcmFwaFFMU2NoZW1hPiB7XG4gICAgLy8gR2V0IGNvbmZpZ3VyYXRpb25zXG4gICAgY29uc3QgY29uZmlnID0ge1xuICAgICAgY2FjaGU6IHRydWUsXG4gICAgICBmcmVlemU6IHRydWUsXG4gICAgICAuLi5vcHRpb25zLFxuICAgIH07XG5cbiAgICAvLyBVc2UgY2FjaGluZ1xuICAgIGlmIChjb25maWcuY2FjaGUpIHtcbiAgICAgIGlmIChjb25maWcuZnJlZXplICYmIHRoaXMuX2Zyb3plblNjaGVtYSkge1xuICAgICAgICByZXR1cm4gb2YodGhpcy5fZnJvemVuU2NoZW1hKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLl9pbnRyb3NwZWN0aW9uUXVlcnkpIHtcbiAgICAgICAgcmV0dXJuIG9mKGJ1aWxkQ2xpZW50U2NoZW1hKHRoaXMuaW50cm9zcGVjdGlvblF1ZXJ5KSk7XG4gICAgICB9XG4gICAgICBpZiAoY29uZmlnLmZyZWV6ZSAmJiB0aGlzLl9mcm96ZW5TY2hlbWFPYnNlcnZhYmxlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9mcm96ZW5TY2hlbWFPYnNlcnZhYmxlO1xuICAgICAgfSBlbHNlIGlmICghY29uZmlnLmZyZWV6ZSAmJiB0aGlzLl9zY2hlbWFPYnNlcnZhYmxlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zY2hlbWFPYnNlcnZhYmxlO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFJlcXVlc3Qgc2NoZW1hIGZyb20gc2VydmVyXG4gICAgY29uc3Qgb2JzZXJ2YWJsZSA9IHRoaXMuYXBvbGxvXG4gICAgICAucXVlcnkoe1xuICAgICAgICBxdWVyeTogZ3FsKGdldEludHJvc3BlY3Rpb25RdWVyeSh7IGRlc2NyaXB0aW9uczogZmFsc2UgfSkpLFxuICAgICAgfSlcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHNjaGVtYTogYW55KSA9PiB7XG4gICAgICAgICAgLy8gQ2FjaGUgaW50cm9zcGVjdGlvblF1ZXJ5XG4gICAgICAgICAgdGhpcy5faW50cm9zcGVjdGlvblF1ZXJ5ID0gc2NoZW1hLmRhdGE7XG5cbiAgICAgICAgICAvLyBDb252ZXJ0IHNjaGVtYSB0byBHcmFwaFFMU2NoZW1hXG4gICAgICAgICAgdGhpcy5fZnJvemVuU2NoZW1hID0gSGVscGVyLmRlZXBGcmVlemUoYnVpbGRDbGllbnRTY2hlbWEodGhpcy5pbnRyb3NwZWN0aW9uUXVlcnkpKTtcblxuICAgICAgICAgIC8vIFJldHVybiBHcmFwaFFMU2NoZW1hXG4gICAgICAgICAgaWYgKGNvbmZpZy5mcmVlemUpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9mcm96ZW5TY2hlbWE7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBidWlsZENsaWVudFNjaGVtYShzY2hlbWEuZGF0YSk7XG4gICAgICAgIH0pXG4gICAgICApO1xuXG4gICAgLy8gU2V0IG9ic2VydmFibGVzXG4gICAgaWYgKGNvbmZpZy5mcmVlemUpIHtcbiAgICAgIHRoaXMuX2Zyb3plblNjaGVtYU9ic2VydmFibGUgPSBvYnNlcnZhYmxlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9zY2hlbWFPYnNlcnZhYmxlID0gb2JzZXJ2YWJsZTtcbiAgICB9XG5cbiAgICAvLyBSZXR1cm4gcmVzdWx0XG4gICAgcmV0dXJuIG9ic2VydmFibGU7XG4gIH1cblxuICAvKipcbiAgICogR2V0IG1ldGEgZm9yIEFQSVxuICAgKiBTZWUgaHR0cHM6Ly93d3cuYXBvbGxvZ3JhcGhxbC5jb20vYmxvZy90aHJlZS13YXlzLXRvLXJlcHJlc2VudC15b3VyLWdyYXBocWwtc2NoZW1hLWE0MWY0MTc1MTAwZFxuICAgKi9cbiAgcHVibGljIGdldE1ldGEob3B0aW9uczogeyBjYWNoZT86IGJvb2xlYW47IGxvZz86IGJvb2xlYW4gfSA9IHt9KTogT2JzZXJ2YWJsZTxHcmFwaFFMTWV0YT4ge1xuICAgIC8vIEdldCBjb25maWd1cmF0aW9uc1xuICAgIGNvbnN0IGNvbmZpZyA9IHtcbiAgICAgIGNhY2hlOiB0cnVlLFxuICAgICAgbG9nOiBmYWxzZSxcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfTtcblxuICAgIC8vIFVzZSBjYWNoaW5nXG4gICAgaWYgKGNvbmZpZy5jYWNoZSkge1xuICAgICAgaWYgKHRoaXMuX21ldGEpIHtcbiAgICAgICAgcmV0dXJuIG9mKHRoaXMuX21ldGEpO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLl9tZXRhT2JzZXJ2YWJsZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbWV0YU9ic2VydmFibGU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gUmVxdWVzdCBzY2hlbWEgZnJvbSBzZXJ2ZXJcbiAgICBjb25zdCBvYnNlcnZhYmxlID0gdGhpcy5nZXRTY2hlbWEob3B0aW9ucykucGlwZShcbiAgICAgIG1hcCgoc2NoZW1hOiBhbnkpID0+IHtcbiAgICAgICAgLy8gTG9nXG4gICAgICAgIGlmIChjb25maWcubG9nKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coeyBzY2hlbWEgfSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9tZXRhID0gbmV3IEdyYXBoUUxNZXRhKHNjaGVtYSk7XG4gICAgICAgIHJldHVybiB0aGlzLl9tZXRhO1xuICAgICAgfSlcbiAgICApO1xuXG4gICAgLy8gU2V0IG9ic2VydmFibGVzXG4gICAgdGhpcy5fbWV0YU9ic2VydmFibGUgPSBvYnNlcnZhYmxlO1xuXG4gICAgLy8gUmV0dXJuIHJlc3VsdFxuICAgIHJldHVybiBvYnNlcnZhYmxlO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { Inject, Injectable } from '@angular/core';
|
|
2
|
+
import { Observable } from 'rxjs';
|
|
3
|
+
import { GraphQLService } from './graphql.service';
|
|
4
|
+
import { GraphQLRequestType } from '../enums/graphql-request-type.enum';
|
|
5
|
+
import { BASE_MODULE_CONFIG } from '../interfaces/base-module-config.interface';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "apollo-angular";
|
|
8
|
+
import * as i2 from "./graphql-meta.service";
|
|
9
|
+
import * as i3 from "./loader.service";
|
|
10
|
+
/**
|
|
11
|
+
* GraphQL plus service, for extra error handling and loading indication
|
|
12
|
+
*/
|
|
13
|
+
class GraphQLPlusService extends GraphQLService {
|
|
14
|
+
apollo;
|
|
15
|
+
graphqlMetaService;
|
|
16
|
+
loaderService;
|
|
17
|
+
moduleConfig;
|
|
18
|
+
/**
|
|
19
|
+
* Include services
|
|
20
|
+
*/
|
|
21
|
+
constructor(apollo, graphqlMetaService, loaderService, moduleConfig) {
|
|
22
|
+
super(apollo, graphqlMetaService, moduleConfig);
|
|
23
|
+
this.apollo = apollo;
|
|
24
|
+
this.graphqlMetaService = graphqlMetaService;
|
|
25
|
+
this.loaderService = loaderService;
|
|
26
|
+
this.moduleConfig = moduleConfig;
|
|
27
|
+
}
|
|
28
|
+
graphQl(graphql, options = {}) {
|
|
29
|
+
this.handleLoader('start', options);
|
|
30
|
+
return new Observable((subscriber) => {
|
|
31
|
+
super.graphQl(graphql, options).subscribe((response) => {
|
|
32
|
+
if (response && response.errors) {
|
|
33
|
+
this.handleError(response.errors, options.excludedErrors);
|
|
34
|
+
subscriber.error(response);
|
|
35
|
+
this.handleLoader('stop', options);
|
|
36
|
+
subscriber.complete();
|
|
37
|
+
}
|
|
38
|
+
subscriber.next(response);
|
|
39
|
+
this.handleLoader('stop', options);
|
|
40
|
+
if (options.type !== GraphQLRequestType.SUBSCRIPTION) {
|
|
41
|
+
subscriber.complete();
|
|
42
|
+
}
|
|
43
|
+
}, (error) => {
|
|
44
|
+
if (!options.ignoreErrors) {
|
|
45
|
+
this.handleError(error, options.excludedErrors);
|
|
46
|
+
}
|
|
47
|
+
subscriber.error(error);
|
|
48
|
+
this.handleLoader('stop', options);
|
|
49
|
+
subscriber.complete();
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
handleLoader(state, options) {
|
|
54
|
+
if (options.loading) {
|
|
55
|
+
if (state === 'start') {
|
|
56
|
+
this.loaderService.start();
|
|
57
|
+
}
|
|
58
|
+
else if (state === 'stop') {
|
|
59
|
+
this.loaderService.stop();
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
handleError(error, excludedErrors = null) {
|
|
64
|
+
if (excludedErrors) {
|
|
65
|
+
if (Array.isArray(excludedErrors)) {
|
|
66
|
+
excludedErrors.forEach((excludedError) => {
|
|
67
|
+
if (error.message.includes(excludedError.toLowerCase())) {
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
else if (error.message.toLowerCase().includes(excludedErrors?.toLowerCase())) {
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
this.displayError(error);
|
|
77
|
+
}
|
|
78
|
+
displayError(error) {
|
|
79
|
+
console.error(error);
|
|
80
|
+
}
|
|
81
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: GraphQLPlusService, deps: [{ token: i1.Apollo }, { token: i2.GraphQLMetaService }, { token: i3.LoaderService }, { token: BASE_MODULE_CONFIG }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
82
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: GraphQLPlusService, providedIn: 'root' });
|
|
83
|
+
}
|
|
84
|
+
export { GraphQLPlusService };
|
|
85
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: GraphQLPlusService, decorators: [{
|
|
86
|
+
type: Injectable,
|
|
87
|
+
args: [{
|
|
88
|
+
providedIn: 'root',
|
|
89
|
+
}]
|
|
90
|
+
}], ctorParameters: function () { return [{ type: i1.Apollo }, { type: i2.GraphQLMetaService }, { type: i3.LoaderService }, { type: undefined, decorators: [{
|
|
91
|
+
type: Inject,
|
|
92
|
+
args: [BASE_MODULE_CONFIG]
|
|
93
|
+
}] }]; } });
|
|
94
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JhcGhxbC1wbHVzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1iYXNlL3NoYXJlZC9zZXJ2aWNlcy9ncmFwaHFsLXBsdXMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUluRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsa0JBQWtCLEVBQW9CLE1BQU0sNENBQTRDLENBQUM7Ozs7O0FBRWxHOztHQUVHO0FBQ0gsTUFHYSxrQkFBbUIsU0FBUSxjQUFjO0lBS3hDO0lBQ0E7SUFDQTtJQUM0QjtJQVB4Qzs7T0FFRztJQUNILFlBQ1ksTUFBYyxFQUNkLGtCQUFzQyxFQUN0QyxhQUE0QixFQUNBLFlBQThCO1FBRXBFLEtBQUssQ0FBQyxNQUFNLEVBQUUsa0JBQWtCLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFMdEMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDdEMsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDQSxpQkFBWSxHQUFaLFlBQVksQ0FBa0I7SUFHdEUsQ0FBQztJQUVNLE9BQU8sQ0FBQyxPQUFlLEVBQUUsVUFBK0IsRUFBRTtRQUMvRCxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUVwQyxPQUFPLElBQUksVUFBVSxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUU7WUFDbkMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUN2QyxDQUFDLFFBQVEsRUFBRSxFQUFFO2dCQUNYLElBQUksUUFBUSxJQUFJLFFBQVEsQ0FBQyxNQUFNLEVBQUU7b0JBQy9CLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUM7b0JBQzFELFVBQVUsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7b0JBQzNCLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO29CQUNuQyxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUM7aUJBQ3ZCO2dCQUVELFVBQVUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQzFCLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO2dCQUNuQyxJQUFJLE9BQU8sQ0FBQyxJQUFJLEtBQUssa0JBQWtCLENBQUMsWUFBWSxFQUFFO29CQUNwRCxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUM7aUJBQ3ZCO1lBQ0gsQ0FBQyxFQUNELENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQ1IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUU7b0JBQ3pCLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQztpQkFDakQ7Z0JBQ0QsVUFBVSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDeEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7Z0JBQ25DLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUN4QixDQUFDLENBQ0YsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFlBQVksQ0FBQyxLQUF1QixFQUFFLE9BQTRCO1FBQ2hFLElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRTtZQUNuQixJQUFJLEtBQUssS0FBSyxPQUFPLEVBQUU7Z0JBQ3JCLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7YUFDNUI7aUJBQU0sSUFBSSxLQUFLLEtBQUssTUFBTSxFQUFFO2dCQUMzQixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDO2FBQzNCO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQVksRUFBRSxpQkFBc0IsSUFBSTtRQUNsRCxJQUFJLGNBQWMsRUFBRTtZQUNsQixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLEVBQUU7Z0JBQ2pDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxhQUFhLEVBQUUsRUFBRTtvQkFDdkMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsV0FBVyxFQUFFLENBQUMsRUFBRTt3QkFDdkQsT0FBTztxQkFDUjtnQkFDSCxDQUFDLENBQUMsQ0FBQzthQUNKO2lCQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUMsY0FBYyxFQUFFLFdBQVcsRUFBRSxDQUFDLEVBQUU7Z0JBQzlFLE9BQU87YUFDUjtTQUNGO1FBRUQsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBRUQsWUFBWSxDQUFDLEtBQVU7UUFDckIsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN2QixDQUFDO3VHQXhFVSxrQkFBa0IsdUdBUW5CLGtCQUFrQjsyR0FSakIsa0JBQWtCLGNBRmpCLE1BQU07O1NBRVAsa0JBQWtCOzJGQUFsQixrQkFBa0I7a0JBSDlCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFTSSxNQUFNOzJCQUFDLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFwb2xsbyB9IGZyb20gJ2Fwb2xsby1hbmd1bGFyJztcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgR3JhcGhRTFNlcnZpY2UgfSBmcm9tICcuL2dyYXBocWwuc2VydmljZSc7XG5pbXBvcnQgeyBHcmFwaFFMTWV0YVNlcnZpY2UgfSBmcm9tICcuL2dyYXBocWwtbWV0YS5zZXJ2aWNlJztcbmltcG9ydCB7IElHcmFwaFFMUGx1c09wdGlvbnMgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2dyYXBocWwtcGx1cy1vcHRpb25zLmludGVyZmFjZW4nO1xuaW1wb3J0IHsgTG9hZGVyU2VydmljZSB9IGZyb20gJy4vbG9hZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgR3JhcGhRTFJlcXVlc3RUeXBlIH0gZnJvbSAnLi4vZW51bXMvZ3JhcGhxbC1yZXF1ZXN0LXR5cGUuZW51bSc7XG5pbXBvcnQgeyBCQVNFX01PRFVMRV9DT05GSUcsIEJhc2VNb2R1bGVDb25maWcgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2Jhc2UtbW9kdWxlLWNvbmZpZy5pbnRlcmZhY2UnO1xuXG4vKipcbiAqIEdyYXBoUUwgcGx1cyBzZXJ2aWNlLCBmb3IgZXh0cmEgZXJyb3IgaGFuZGxpbmcgYW5kIGxvYWRpbmcgaW5kaWNhdGlvblxuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgR3JhcGhRTFBsdXNTZXJ2aWNlIGV4dGVuZHMgR3JhcGhRTFNlcnZpY2Uge1xuICAvKipcbiAgICogSW5jbHVkZSBzZXJ2aWNlc1xuICAgKi9cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIGFwb2xsbzogQXBvbGxvLFxuICAgIHByb3RlY3RlZCBncmFwaHFsTWV0YVNlcnZpY2U6IEdyYXBoUUxNZXRhU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgbG9hZGVyU2VydmljZTogTG9hZGVyU2VydmljZSxcbiAgICBASW5qZWN0KEJBU0VfTU9EVUxFX0NPTkZJRykgcHJvdGVjdGVkIG1vZHVsZUNvbmZpZzogQmFzZU1vZHVsZUNvbmZpZ1xuICApIHtcbiAgICBzdXBlcihhcG9sbG8sIGdyYXBocWxNZXRhU2VydmljZSwgbW9kdWxlQ29uZmlnKTtcbiAgfVxuXG4gIHB1YmxpYyBncmFwaFFsKGdyYXBocWw6IHN0cmluZywgb3B0aW9uczogSUdyYXBoUUxQbHVzT3B0aW9ucyA9IHt9KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICB0aGlzLmhhbmRsZUxvYWRlcignc3RhcnQnLCBvcHRpb25zKTtcblxuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZSgoc3Vic2NyaWJlcikgPT4ge1xuICAgICAgc3VwZXIuZ3JhcGhRbChncmFwaHFsLCBvcHRpb25zKS5zdWJzY3JpYmUoXG4gICAgICAgIChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgIGlmIChyZXNwb25zZSAmJiByZXNwb25zZS5lcnJvcnMpIHtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlRXJyb3IocmVzcG9uc2UuZXJyb3JzLCBvcHRpb25zLmV4Y2x1ZGVkRXJyb3JzKTtcbiAgICAgICAgICAgIHN1YnNjcmliZXIuZXJyb3IocmVzcG9uc2UpO1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVMb2FkZXIoJ3N0b3AnLCBvcHRpb25zKTtcbiAgICAgICAgICAgIHN1YnNjcmliZXIuY29tcGxldGUoKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBzdWJzY3JpYmVyLm5leHQocmVzcG9uc2UpO1xuICAgICAgICAgIHRoaXMuaGFuZGxlTG9hZGVyKCdzdG9wJywgb3B0aW9ucyk7XG4gICAgICAgICAgaWYgKG9wdGlvbnMudHlwZSAhPT0gR3JhcGhRTFJlcXVlc3RUeXBlLlNVQlNDUklQVElPTikge1xuICAgICAgICAgICAgc3Vic2NyaWJlci5jb21wbGV0ZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgKGVycm9yKSA9PiB7XG4gICAgICAgICAgaWYgKCFvcHRpb25zLmlnbm9yZUVycm9ycykge1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVFcnJvcihlcnJvciwgb3B0aW9ucy5leGNsdWRlZEVycm9ycyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHN1YnNjcmliZXIuZXJyb3IoZXJyb3IpO1xuICAgICAgICAgIHRoaXMuaGFuZGxlTG9hZGVyKCdzdG9wJywgb3B0aW9ucyk7XG4gICAgICAgICAgc3Vic2NyaWJlci5jb21wbGV0ZSgpO1xuICAgICAgICB9XG4gICAgICApO1xuICAgIH0pO1xuICB9XG5cbiAgaGFuZGxlTG9hZGVyKHN0YXRlOiAnc3RhcnQnIHwgJ3N0b3AnLCBvcHRpb25zOiBJR3JhcGhRTFBsdXNPcHRpb25zKTogdm9pZCB7XG4gICAgaWYgKG9wdGlvbnMubG9hZGluZykge1xuICAgICAgaWYgKHN0YXRlID09PSAnc3RhcnQnKSB7XG4gICAgICAgIHRoaXMubG9hZGVyU2VydmljZS5zdGFydCgpO1xuICAgICAgfSBlbHNlIGlmIChzdGF0ZSA9PT0gJ3N0b3AnKSB7XG4gICAgICAgIHRoaXMubG9hZGVyU2VydmljZS5zdG9wKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlRXJyb3IoZXJyb3I6IEVycm9yLCBleGNsdWRlZEVycm9yczogYW55ID0gbnVsbCk6IHZvaWQge1xuICAgIGlmIChleGNsdWRlZEVycm9ycykge1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZXhjbHVkZWRFcnJvcnMpKSB7XG4gICAgICAgIGV4Y2x1ZGVkRXJyb3JzLmZvckVhY2goKGV4Y2x1ZGVkRXJyb3IpID0+IHtcbiAgICAgICAgICBpZiAoZXJyb3IubWVzc2FnZS5pbmNsdWRlcyhleGNsdWRlZEVycm9yLnRvTG93ZXJDYXNlKCkpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSBpZiAoZXJyb3IubWVzc2FnZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGV4Y2x1ZGVkRXJyb3JzPy50b0xvd2VyQ2FzZSgpKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5kaXNwbGF5RXJyb3IoZXJyb3IpO1xuICB9XG5cbiAgZGlzcGxheUVycm9yKGVycm9yOiBhbnkpOiB2b2lkIHtcbiAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgfVxufVxuIl19
|