@c8y/ngx-components 1018.0.144 → 1018.0.151
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/core/common/date.pipe.d.ts +2 -2
- package/core/common/stringify-object.pipe.d.ts +2 -1
- package/ecosystem/application-properties/update-application-modal/update-application-modal.component.d.ts +0 -2
- package/ecosystem/packages/deploy-application/deploy-application.component.d.ts +7 -6
- package/ecosystem/shared/ecosystem.constants.d.ts +3 -1
- package/ecosystem/shared/ecosystem.model.d.ts +3 -1
- package/ecosystem/shared/ecosystem.service.d.ts +11 -5
- package/esm2020/core/bootstrap/bootstrap.component.mjs +7 -1
- package/esm2020/core/common/date.pipe.mjs +12 -7
- package/esm2020/core/common/stringify-object.pipe.mjs +11 -8
- package/esm2020/ecosystem/application-properties/application-properties.component.mjs +6 -4
- package/esm2020/ecosystem/application-properties/update-application-modal/update-application-modal.component.mjs +11 -22
- package/esm2020/ecosystem/applications/install-from-package/install-from-package.component.mjs +2 -2
- package/esm2020/ecosystem/packages/deploy-application/deploy-application.component.mjs +28 -85
- package/esm2020/ecosystem/shared/ecosystem.constants.mjs +5 -3
- package/esm2020/ecosystem/shared/ecosystem.model.mjs +3 -1
- package/esm2020/ecosystem/shared/ecosystem.service.mjs +121 -24
- package/fesm2015/c8y-ngx-components-ecosystem-shared.mjs +139 -27
- package/fesm2015/c8y-ngx-components-ecosystem-shared.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-ecosystem.mjs +110 -179
- package/fesm2015/c8y-ngx-components-ecosystem.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components.mjs +26 -13
- package/fesm2015/c8y-ngx-components.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-ecosystem-shared.mjs +126 -25
- package/fesm2020/c8y-ngx-components-ecosystem-shared.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-ecosystem.mjs +110 -176
- package/fesm2020/c8y-ngx-components-ecosystem.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components.mjs +26 -13
- package/fesm2020/c8y-ngx-components.mjs.map +1 -1
- package/locales/locales.pot +15 -3
- package/package.json +1 -1
|
@@ -22,8 +22,8 @@ export declare const ES_MAX_TIME_MILLISECONDS = 8640000000000000;
|
|
|
22
22
|
*/
|
|
23
23
|
export declare class DatePipe extends NgDatePipe {
|
|
24
24
|
private translateService;
|
|
25
|
-
constructor(locale: string, translateService: TranslateService);
|
|
25
|
+
constructor(locale: string, translateService: TranslateService, defaultTimezone?: string | null);
|
|
26
26
|
transform(value: any, format?: string, timezone?: string, locale?: string): any;
|
|
27
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<DatePipe,
|
|
27
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<DatePipe, [null, null, { optional: true; }]>;
|
|
28
28
|
static ɵpipe: i0.ɵɵPipeDeclaration<DatePipe, "c8yDate", false>;
|
|
29
29
|
}
|
|
@@ -3,9 +3,10 @@ import { DatePipe } from './date.pipe';
|
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
export declare class StringifyObjectPipe implements PipeTransform {
|
|
5
5
|
private c8yDatePipe;
|
|
6
|
+
private readonly isoDateTimeRegex;
|
|
6
7
|
constructor(c8yDatePipe: DatePipe);
|
|
7
8
|
transform(value: any): string;
|
|
8
|
-
|
|
9
|
+
private isDate;
|
|
9
10
|
static ɵfac: i0.ɵɵFactoryDeclaration<StringifyObjectPipe, never>;
|
|
10
11
|
static ɵpipe: i0.ɵɵPipeDeclaration<StringifyObjectPipe, "stringifyObject", false>;
|
|
11
12
|
}
|
|
@@ -20,8 +20,6 @@ export declare class UpdateApplicationModalComponent implements OnInit {
|
|
|
20
20
|
ngOnInit(): void;
|
|
21
21
|
done(): void;
|
|
22
22
|
updateApplication(): Promise<void>;
|
|
23
|
-
private uploadNewBinary;
|
|
24
|
-
private fallBackToCloneUpdate;
|
|
25
23
|
static ɵfac: i0.ɵɵFactoryDeclaration<UpdateApplicationModalComponent, never>;
|
|
26
24
|
static ɵcmp: i0.ɵɵComponentDeclaration<UpdateApplicationModalComponent, "c8y-update-application-modal", never, {}, {}, never, never, false>;
|
|
27
25
|
}
|
|
@@ -1,23 +1,24 @@
|
|
|
1
1
|
import { OnInit } from '@angular/core';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
2
|
+
import { Router } from '@angular/router';
|
|
3
|
+
import { IApplication, IApplicationVersion } from '@c8y/client';
|
|
4
|
+
import { GainsightService, PluginsService, WizardComponent } from '@c8y/ngx-components';
|
|
4
5
|
import { ApplicationPropertiesFormComponent, EcosystemService } from '@c8y/ngx-components/ecosystem/shared';
|
|
5
6
|
import { TranslateService } from '@ngx-translate/core';
|
|
6
7
|
import * as i0 from "@angular/core";
|
|
7
8
|
export declare class DeployApplicationComponent implements OnInit {
|
|
8
9
|
private ecosystemService;
|
|
9
|
-
private applicationService;
|
|
10
10
|
private wizardComponent;
|
|
11
11
|
private translate;
|
|
12
|
-
private inventoryService;
|
|
13
12
|
private pluginService;
|
|
14
13
|
private gainsightService;
|
|
14
|
+
private router;
|
|
15
15
|
CURRENT_LOCATION: string;
|
|
16
16
|
inProgress: boolean;
|
|
17
17
|
package: IApplication;
|
|
18
18
|
isDeployed: boolean;
|
|
19
19
|
deployedWithSuccess: boolean;
|
|
20
20
|
newAppConfig: IApplication;
|
|
21
|
+
deployedApp: IApplication;
|
|
21
22
|
applicationHref: string;
|
|
22
23
|
model: {
|
|
23
24
|
selected: any;
|
|
@@ -32,12 +33,12 @@ export declare class DeployApplicationComponent implements OnInit {
|
|
|
32
33
|
readonly doneLabel: "Done";
|
|
33
34
|
readonly cancelLabel: "Cancel";
|
|
34
35
|
headerText: string;
|
|
35
|
-
constructor(ecosystemService: EcosystemService,
|
|
36
|
+
constructor(ecosystemService: EcosystemService, wizardComponent: WizardComponent, translate: TranslateService, pluginService: PluginsService, gainsightService: GainsightService, router: Router);
|
|
36
37
|
ngOnInit(): Promise<void>;
|
|
37
38
|
deployApp(): Promise<void>;
|
|
38
|
-
fallbackToCloneLatest(config: any): Promise<void>;
|
|
39
39
|
cancel(): void;
|
|
40
40
|
onAppVersionSelect(appVersion: IApplicationVersion): void;
|
|
41
|
+
open(): void;
|
|
41
42
|
private markAsDeployed;
|
|
42
43
|
private getHeaderText;
|
|
43
44
|
static ɵfac: i0.ɵɵFactoryDeclaration<DeployApplicationComponent, never>;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { PropertiesListItem } from '@c8y/ngx-components';
|
|
2
2
|
export declare const ERROR_MESSAGES: {
|
|
3
|
+
ALREADY_EXIST: "Could not deploy the application, as the application with the same name, context-path or key exist already.";
|
|
3
4
|
TYPE_VALIDATION: "Wrong file format. Expected a *.zip file with a valid manifest.";
|
|
4
5
|
ALREADY_SUBSCRIBED: "Could not subscribe to the microservice because another application with the same context path is already subscribed.";
|
|
5
6
|
NO_MANIFEST_FILE: "Could not find a manifest.";
|
|
@@ -8,7 +9,8 @@ export declare const ERROR_MESSAGES: {
|
|
|
8
9
|
INTERNAL_ERROR: "An internal error occurred, try to upload again.";
|
|
9
10
|
MICROSERVICE_NAME_TOO_LONG: "Microservice name \"{{ name }}\" must not be longer than {{ maxChars }} characters.";
|
|
10
11
|
APPLICATION_CREATION_FAILED: "Application creation failed.";
|
|
11
|
-
KEY_OR_CONTEXT_PATH_MISMATCH: "The contextPath or key of the uploaded archive do not match with the existing
|
|
12
|
+
KEY_OR_CONTEXT_PATH_MISMATCH: "The \"contextPath`KEEP_ORIGINAL`\" or \"key`KEEP_ORIGINAL`\" of the uploaded archive do not match with the existing application.";
|
|
13
|
+
VERSION_NOT_FOUND: "The selected version was not found on the server.";
|
|
12
14
|
};
|
|
13
15
|
export declare const APP_STATE: {
|
|
14
16
|
SUBSCRIBED: {
|
|
@@ -15,13 +15,15 @@ export declare enum EcosystemWizards {
|
|
|
15
15
|
export declare enum ERROR_TYPE {
|
|
16
16
|
TYPE_VALIDATION = "TYPE_VALIDATION",
|
|
17
17
|
ALREADY_SUBSCRIBED = "ALREADY_SUBSCRIBED",
|
|
18
|
+
ALREADY_EXIST = "ALREADY_EXIST",
|
|
18
19
|
INTERNAL_ERROR = "INTERNAL_ERROR",
|
|
19
20
|
NO_MANIFEST_FILE = "NO_MANIFEST_FILE",
|
|
20
21
|
INVALID_PACKAGE = "INVALID_PACKAGE",
|
|
21
22
|
INVALID_APPLICATION = "INVALID_APPLICATION",
|
|
22
23
|
MICROSERVICE_NAME_TOO_LONG = "MICROSERVICE_NAME_TOO_LONG",
|
|
23
24
|
APPLICATION_CREATION_FAILED = "APPLICATION_CREATION_FAILED",
|
|
24
|
-
KEY_OR_CONTEXT_PATH_MISMATCH = "KEY_OR_CONTEXT_PATH_MISMATCH"
|
|
25
|
+
KEY_OR_CONTEXT_PATH_MISMATCH = "KEY_OR_CONTEXT_PATH_MISMATCH",
|
|
26
|
+
VERSION_NOT_FOUND = "VERSION_NOT_FOUND"
|
|
25
27
|
}
|
|
26
28
|
export declare type LicensedApplicationPlugin = Pick<ApplicationPlugin, 'type' | 'license' | 'name' | 'version' | 'contextPath'>;
|
|
27
29
|
export declare const PRODUCT_EXPERIENCE: {
|
|
@@ -58,6 +58,8 @@ export declare class EcosystemService {
|
|
|
58
58
|
getWebApplications(customFilter?: any): Promise<IApplication[]>;
|
|
59
59
|
getFeatureApplications(customFilter?: any): Promise<IApplication[]>;
|
|
60
60
|
getPackageApplications(customFilter?: any): Promise<IApplication[]>;
|
|
61
|
+
getHostedAndPackageApplications(customFilter?: any): Promise<IApplication[]>;
|
|
62
|
+
getApplicationsFiltered(customFilter?: any, filterCallback?: (app: IApplication) => boolean): Promise<IApplication[]>;
|
|
61
63
|
isMicroserviceHostingAllowed(): Promise<boolean>;
|
|
62
64
|
canOpenAppInBrowser(app: IApplication): boolean;
|
|
63
65
|
openApp(app: any): void;
|
|
@@ -81,10 +83,6 @@ export declare class EcosystemService {
|
|
|
81
83
|
}>;
|
|
82
84
|
getHumanizedAppName(app: IApplication): Promise<string>;
|
|
83
85
|
createConfig(app: IApplication, formGroupValue: FormGroup): Partial<IApplication>;
|
|
84
|
-
updateAppManifest(application: IApplication, sourcePackage: IApplication): Promise<{
|
|
85
|
-
res: IFetchResponse;
|
|
86
|
-
data: any;
|
|
87
|
-
}>;
|
|
88
86
|
listArchives(appId: string | number | IApplication): Promise<IApplicationBinary[]>;
|
|
89
87
|
deleteArchive(archive: IApplicationBinary, app: IApplication): Promise<void>;
|
|
90
88
|
getArchiveManagedObject(binaryId: string): Promise<IManagedObject>;
|
|
@@ -101,6 +99,9 @@ export declare class EcosystemService {
|
|
|
101
99
|
createAppForArchive(archive: any, isPackageTypeArchive?: boolean): Promise<IApplication>;
|
|
102
100
|
reactivateArchive(app: IApplication): Promise<void>;
|
|
103
101
|
removeOldestArchive(app: IApplication, archives: IApplicationBinary[]): Promise<void>;
|
|
102
|
+
deployApp(selectedPackage: IApplication, formGroupValue: any, model: any): Promise<IApplication>;
|
|
103
|
+
fallbackToClone(application: IApplication, selectedPackage: IApplication, requestedVersion?: string): Promise<boolean>;
|
|
104
|
+
uploadBinaryFromOtherPackage(selectedPackage: IApplication, applicationToUploadBinaryTo: IApplication, binaryId: string, requestedVersion?: string, useBinariesFrom?: IApplication): Promise<void>;
|
|
104
105
|
getAppState(app: IApplication): ApplicationState;
|
|
105
106
|
getPackageContentState(app: IApplication): ApplicationState;
|
|
106
107
|
isPackageBlueprint(app: IApplication): boolean;
|
|
@@ -122,6 +123,12 @@ export declare class EcosystemService {
|
|
|
122
123
|
*/
|
|
123
124
|
alertError(error: Error | EcosystemError): void;
|
|
124
125
|
validatePackageKeyAndContextPath(manifest: IManifest, app: IApplication): Promise<void>;
|
|
126
|
+
filterContainString(name: string, filterTerm: string): boolean;
|
|
127
|
+
updateAppManifest(application: IApplication, selectedPackage: IApplication, requestedVersion?: string): Promise<{
|
|
128
|
+
res: IFetchResponse;
|
|
129
|
+
data: any;
|
|
130
|
+
}>;
|
|
131
|
+
private checkIfAppNameKeyPathExists;
|
|
125
132
|
private getAppKey;
|
|
126
133
|
private getContextPath;
|
|
127
134
|
private removeForbiddenCharacters;
|
|
@@ -129,7 +136,6 @@ export declare class EcosystemService {
|
|
|
129
136
|
private getCumulocityJson$;
|
|
130
137
|
private getAppType;
|
|
131
138
|
private getBaseNameFromArchiveOrAppModel;
|
|
132
|
-
private checkIfAppNameKeyPathExists;
|
|
133
139
|
private removeAppProperties;
|
|
134
140
|
private getUploadOverrides;
|
|
135
141
|
private removeVersionFromName;
|
|
@@ -93,6 +93,12 @@ export class BootstrapComponent {
|
|
|
93
93
|
if (remoteModules.length) {
|
|
94
94
|
this.pluginsResolve.resolveRemotePlugins(remoteModules);
|
|
95
95
|
}
|
|
96
|
+
else {
|
|
97
|
+
// in case loading all modules via pluginsResolve.loadRemotes failed
|
|
98
|
+
// (e.g. all plugins that were installed have been deleted from the tenant)
|
|
99
|
+
// we still need to mark loading the plugins as successful.
|
|
100
|
+
this.ensureWeMarkPluginsAsLoaded();
|
|
101
|
+
}
|
|
96
102
|
}
|
|
97
103
|
subscribeToLoadRemotes() {
|
|
98
104
|
if (this.options.get('noPlugins', false)) {
|
|
@@ -114,4 +120,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
|
|
|
114
120
|
type: Component,
|
|
115
121
|
args: [{ selector: 'c8y-bootstrap', template: "<c8y-login *ngIf=\"!noLogin && !(ui.currentUser | async)\"></c8y-login>\n\n<div\n *ngIf=\"noLogin || ((ui.currentUser | async) && !(setupService.isSetupNeeded$ | async))\"\n [class.head-open]=\"headerService.headerOpen\"\n>\n <c8y-header-bar #header></c8y-header-bar>\n <c8y-drawer-outlet\n role=\"region\"\n position=\"left\"\n [open]=\"headerService.navigatorOpen$ | async\"\n ></c8y-drawer-outlet>\n\n <div class=\"alerts\">\n <c8y-alert-outlet></c8y-alert-outlet>\n </div>\n <c8y-tabs-outlet\n #tabsComponent\n [tabs]=\"tabs.items$ | async\"\n [navigatorOpen]=\"headerService.navigatorOpen$ | async\"\n [orientation]=\"tabs.orientation$ | async\"\n role=\"navigation\"\n ></c8y-tabs-outlet>\n <c8y-action-bar\n #actionBarComponent\n [navigatorOpen]=\"headerService.navigatorOpen$ | async\"\n [hasTabs]=\"tabsComponent.hasTabs\"\n [isTabsHorizontal]=\"tabsComponent?.isHorizontal\"\n [items$]=\"actionBar.items$\"\n role=\"group\"\n ></c8y-action-bar>\n\n <div\n class=\"mcontainer\"\n [ngClass]=\"{\n open: headerService.navigatorOpen$ | async,\n 'no-apps-margin': noAppsMargin$ | async,\n 'horizontal-tabs': tabsComponent.isHorizontal,\n 'vertical-tabs': !tabsComponent.isHorizontal,\n 'has-tabs': tabsComponent.hasTabs,\n 'has-action-bar': !actionBarComponent?.hidden\n }\"\n >\n <main id=\"main-content\" class=\"container-fluid\" tabindex=\"-1\">\n <router-outlet></router-outlet>\n <ng-content select=\"#c8y-legacy-view\"></ng-content>\n <!-- legacy ng-view, will not be migrated atm -->\n </main>\n </div>\n</div>\n\n<div *ngIf=\"(ui.currentUser | async) && (setupService.isSetupNeeded$ | async)\">\n <c8y-header-bar [simple]=\"true\"></c8y-header-bar>\n <div class=\"mcontainer\" role=\"main\">\n <div class=\"container-fluid\">\n <c8y-setup></c8y-setup>\n </div>\n </div>\n</div>\n\n<c8y-cookie-banner></c8y-cookie-banner>\n" }]
|
|
116
122
|
}], ctorParameters: function () { return [{ type: i1.TabsService }, { type: i2.AppStateService }, { type: i3.NavigatorService }, { type: i4.ActionBarService }, { type: i5.HeaderService }, { type: i6.OptionsService }, { type: i7.PluginsResolveService }, { type: i8.SetupService }]; } });
|
|
117
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9vdHN0cmFwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvYm9vdHN0cmFwL2Jvb3RzdHJhcC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9jb3JlL2Jvb3RzdHJhcC9ib290c3RyYXAudGVtcGxhdGUuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUU3RCxPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNsRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUUzRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBTXBDLE1BQU0sT0FBTyxrQkFBa0I7SUFTN0IsWUFDUyxJQUFpQixFQUNqQixFQUFtQixFQUNuQixTQUEyQixFQUMzQixTQUEyQixFQUMzQixhQUE0QixFQUMzQixPQUF1QixFQUN2QixjQUFxQyxFQUN0QyxZQUEwQjtRQVAxQixTQUFJLEdBQUosSUFBSSxDQUFhO1FB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QyxPQUFPO1NBQ1I7UUFDRCxNQUFNLGFBQWEsR0FBRyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRXJFLHdCQUF3QjtRQUN4QixNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUN6QyxJQUFJLENBQUMsNkJBQTZCLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FDMUQsQ0FBQztRQUVGLElBQUksYUFBYSxDQUFDLE1BQU0sRUFBRTtZQUN4QixJQUFJLENBQUMsY0FBYyxDQUFDLG9CQUFvQixDQUFDLGFBQWEsQ0FBQyxDQUFDO1NBQ3pEO0lBQ0gsQ0FBQztJQUVPLHNCQUFzQjtRQUM1QixJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUMsRUFBRTtZQUN4QyxJQUFJLENBQUMsMkJBQTJCLEVBQUUsQ0FBQztZQUNuQyxPQUFPO1NBQ1I7UUFDRCxJQUFJLENBQUMsRUFBRSxDQUFDLHdCQUF3QjthQUM3QixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUM5QixTQUFTLENBQUMsQ0FBQyxNQUFxQixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JGLENBQUM7SUFFTywyQkFBMkI7UUFDakMsb0VBQW9FO1FBQ3BFLElBQUksQ0FBQyxjQUFjLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztJQUM1QyxDQUFDOzsrR0E1RlUsa0JBQWtCO21HQUFsQixrQkFBa0IscURDbkIvQixtN0RBNkRBOzJGRDFDYSxrQkFBa0I7a0JBSjlCLFNBQVM7K0JBQ0UsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFwcGxpY2F0aW9uUmVtb3RlUGx1Z2lucyB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBBY3Rpb25CYXJTZXJ2aWNlIH0gZnJvbSAnLi4vYWN0aW9uLWJhci9hY3Rpb24tYmFyLnNlcnZpY2UnO1xuaW1wb3J0IHsgT3B0aW9uc1NlcnZpY2UgfSBmcm9tICcuLi9jb21tb24vb3B0aW9ucy5zZXJ2aWNlJztcbmltcG9ydCB7IEFwcFN0YXRlU2VydmljZSB9IGZyb20gJy4uL2NvbW1vbi91aS1zdGF0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IEhlYWRlclNlcnZpY2UgfSBmcm9tICcuLi9oZWFkZXIvaGVhZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgTmF2aWdhdG9yU2VydmljZSB9IGZyb20gJy4uL25hdmlnYXRvci9uYXZpZ2F0b3Iuc2VydmljZSc7XG5pbXBvcnQgeyBQbHVnaW5zUmVzb2x2ZVNlcnZpY2UgfSBmcm9tICcuLi9wbHVnaW5zL3BsdWdpbnMtcmVzb2x2ZS5zZXJ2aWNlJztcbmltcG9ydCB7IFBsdWdpbnNDb25maWcgfSBmcm9tICcuLi9wbHVnaW5zL3BsdWdpbnMubW9kZWwnO1xuaW1wb3J0IHsgU2V0dXBTZXJ2aWNlIH0gZnJvbSAnLi4vc2V0dXAvc2V0dXAuc2VydmljZSc7XG5pbXBvcnQgeyBUYWJzU2VydmljZSB9IGZyb20gJy4uL3RhYnMvdGFicy5zZXJ2aWNlJztcbmltcG9ydCB7IGlzRW1wdHkgfSBmcm9tICdsb2Rhc2gtZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktYm9vdHN0cmFwJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Jvb3RzdHJhcC50ZW1wbGF0ZS5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBCb290c3RyYXBDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIE9uSW5pdCB7XG4gIG5hdmlnYXRvck9wZW4kOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBub0FwcHNNYXJnaW4kOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICB0YWJzT3JpZW50YXRpb246IHN0cmluZztcbiAgc2hvd1Bvd2VyZWRCeSA9IHRydWU7XG4gIG5vTG9naW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBkZXN0cm95JDogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG4gIHByaXZhdGUgbG9hZGVkUmVtb3Rlc0NvbnRleHRQYXRoQ2FjaGUgPSBuZXcgTWFwPHN0cmluZywgYm9vbGVhbj4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgdGFiczogVGFic1NlcnZpY2UsXG4gICAgcHVibGljIHVpOiBBcHBTdGF0ZVNlcnZpY2UsXG4gICAgcHVibGljIG5hdmlnYXRvcjogTmF2aWdhdG9yU2VydmljZSxcbiAgICBwdWJsaWMgYWN0aW9uQmFyOiBBY3Rpb25CYXJTZXJ2aWNlLFxuICAgIHB1YmxpYyBoZWFkZXJTZXJ2aWNlOiBIZWFkZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgb3B0aW9uczogT3B0aW9uc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBwbHVnaW5zUmVzb2x2ZTogUGx1Z2luc1Jlc29sdmVTZXJ2aWNlLFxuICAgIHB1YmxpYyBzZXR1cFNlcnZpY2U6IFNldHVwU2VydmljZVxuICApIHtcbiAgICB0aGlzLm5vQXBwc01hcmdpbiQgPSB0aGlzLmhlYWRlclNlcnZpY2UubWFwKCh7IG5hdiB9KSA9PiAhbmF2Lm9wZW4gJiYgbmF2LmhpZGRlbk9uU3RhcnR1cCk7XG4gICAgdGhpcy50YWJzT3JpZW50YXRpb24gPSB0aGlzLm9wdGlvbnMudGFic0hvcml6b250YWwgPyAnaG9yaXpvbnRhbCcgOiAndmVydGljYWwnO1xuICAgIHRoaXMudWlcbiAgICAgIC5tYXAoKHsgbGFuZyB9KSA9PiBsYW5nKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuYWN0aW9uQmFyLnJlZnJlc2goKTtcbiAgICAgIH0pO1xuICAgIHRoaXMuc2hvd1Bvd2VyZWRCeSA9ICF0aGlzLm9wdGlvbnMuZ2V0KCdoaWRlUG93ZXJlZCcpO1xuICAgIHRoaXMubm9Mb2dpbiA9IHRoaXMub3B0aW9ucy5nZXQoJ25vTG9naW4nLCBmYWxzZSk7XG4gIH1cblxuICBhc3luYyBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnN1YnNjcmliZVRvTG9hZFJlbW90ZXMoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0UmVtb3Rlcyhjb25maWc6IFBsdWdpbnNDb25maWcpOiBBcHBsaWNhdGlvblJlbW90ZVBsdWdpbnMge1xuICAgIGxldCByZW1vdGVzOiBBcHBsaWNhdGlvblJlbW90ZVBsdWdpbnM7XG4gICAgaWYgKCEhY29uZmlnPy5yZW1vdGVzKSB7XG4gICAgICAvLyBNZXJnZSBwbHVnaW5zIGNvbmZpZyByZW1vdGVzIGFuZCByZW1vdGVzIHBhc3NlZCBpbiB0aGUgVVJMLlxuICAgICAgLy8gUmVtb3RlcyBpbiB0aGUgVVJMIGFyZSB1c2VkIGluIHRoZSBkZXZlbG9wbWVudCBwcm9jZXNzLlxuICAgICAgcmVtb3RlcyA9IHRoaXMucGx1Z2luc1Jlc29sdmUubWVyZ2VNRlJlbW90ZXMoW1xuICAgICAgICBjb25maWcucmVtb3RlcyxcbiAgICAgICAgdGhpcy5wbHVnaW5zUmVzb2x2ZS5sb2FkVXJsUmVtb3RlcygpXG4gICAgICBdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVtb3RlcyA9IHRoaXMub3B0aW9ucz8ucmVtb3RlcztcbiAgICB9XG5cbiAgICAvLyBCbG9jayB0aGUgcG9zc2liaWxpdHkgb2YgbG9hZGluZyBwbHVnaW5zIG11bHRpcGxlIHRpbWVzLlxuICAgIE9iamVjdC5rZXlzKHJlbW90ZXMgfHwge30pLmZvckVhY2goY29udGV4dFBhdGggPT4ge1xuICAgICAgaWYgKHRoaXMubG9hZGVkUmVtb3Rlc0NvbnRleHRQYXRoQ2FjaGUuZ2V0KGNvbnRleHRQYXRoKSkge1xuICAgICAgICBkZWxldGUgcmVtb3Rlc1tjb250ZXh0UGF0aF07XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGlzRW1wdHkocmVtb3RlcykgPyB1bmRlZmluZWQgOiByZW1vdGVzO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBsb2FkUmVtb3RlcyhyZW1vdGVzOiBBcHBsaWNhdGlvblJlbW90ZVBsdWdpbnMpIHtcbiAgICBpZiAoIXJlbW90ZXMpIHtcbiAgICAgIHRoaXMuZW5zdXJlV2VNYXJrUGx1Z2luc0FzTG9hZGVkKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHJlbW90ZU1vZHVsZXMgPSBhd2FpdCB0aGlzLnBsdWdpbnNSZXNvbHZlLmxvYWRSZW1vdGVzKHJlbW90ZXMpO1xuXG4gICAgLy8gQ2FjaGUgbG9hZGVkIHJlbW90ZXMuXG4gICAgT2JqZWN0LmtleXMocmVtb3RlcykuZm9yRWFjaChjb250ZXh0UGF0aCA9PlxuICAgICAgdGhpcy5sb2FkZWRSZW1vdGVzQ29udGV4dFBhdGhDYWNoZS5zZXQoY29udGV4dFBhdGgsIHRydWUpXG4gICAgKTtcblxuICAgIGlmIChyZW1vdGVNb2R1bGVzLmxlbmd0aCkge1xuICAgICAgdGhpcy5wbHVnaW5zUmVzb2x2ZS5yZXNvbHZlUmVtb3RlUGx1Z2lucyhyZW1vdGVNb2R1bGVzKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHN1YnNjcmliZVRvTG9hZFJlbW90ZXMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMub3B0aW9ucy5nZXQoJ25vUGx1Z2lucycsIGZhbHNlKSkge1xuICAgICAgdGhpcy5lbnN1cmVXZU1hcmtQbHVnaW5zQXNMb2FkZWQoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy51aS5jdXJyZW50QXBwbGljYXRpb25Db25maWdcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgIC5zdWJzY3JpYmUoKGNvbmZpZzogUGx1Z2luc0NvbmZpZykgPT4gdGhpcy5sb2FkUmVtb3Rlcyh0aGlzLmdldFJlbW90ZXMoY29uZmlnKSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBlbnN1cmVXZU1hcmtQbHVnaW5zQXNMb2FkZWQoKTogdm9pZCB7XG4gICAgLy8gZW5zdXJlIHdlIGNhbGwgbWFya1BsdWdpbnNBc0xvYWRlZCBvbiB0aGUgRHluYW1pY0NvbXBvbmVudFNlcnZpY2VcbiAgICB0aGlzLnBsdWdpbnNSZXNvbHZlLm1hcmtQbHVnaW5zQXNMb2FkZWQoKTtcbiAgfVxufVxuIiwiPGM4eS1sb2dpbiAqbmdJZj1cIiFub0xvZ2luICYmICEodWkuY3VycmVudFVzZXIgfCBhc3luYylcIj48L2M4eS1sb2dpbj5cblxuPGRpdlxuICAqbmdJZj1cIm5vTG9naW4gfHwgKCh1aS5jdXJyZW50VXNlciB8IGFzeW5jKSAmJiAhKHNldHVwU2VydmljZS5pc1NldHVwTmVlZGVkJCB8IGFzeW5jKSlcIlxuICBbY2xhc3MuaGVhZC1vcGVuXT1cImhlYWRlclNlcnZpY2UuaGVhZGVyT3BlblwiXG4+XG4gIDxjOHktaGVhZGVyLWJhciAjaGVhZGVyPjwvYzh5LWhlYWRlci1iYXI+XG4gIDxjOHktZHJhd2VyLW91dGxldFxuICAgIHJvbGU9XCJyZWdpb25cIlxuICAgIHBvc2l0aW9uPVwibGVmdFwiXG4gICAgW29wZW5dPVwiaGVhZGVyU2VydmljZS5uYXZpZ2F0b3JPcGVuJCB8IGFzeW5jXCJcbiAgPjwvYzh5LWRyYXdlci1vdXRsZXQ+XG5cbiAgPGRpdiBjbGFzcz1cImFsZXJ0c1wiPlxuICAgIDxjOHktYWxlcnQtb3V0bGV0PjwvYzh5LWFsZXJ0LW91dGxldD5cbiAgPC9kaXY+XG4gIDxjOHktdGFicy1vdXRsZXRcbiAgICAjdGFic0NvbXBvbmVudFxuICAgIFt0YWJzXT1cInRhYnMuaXRlbXMkIHwgYXN5bmNcIlxuICAgIFtuYXZpZ2F0b3JPcGVuXT1cImhlYWRlclNlcnZpY2UubmF2aWdhdG9yT3BlbiQgfCBhc3luY1wiXG4gICAgW29yaWVudGF0aW9uXT1cInRhYnMub3JpZW50YXRpb24kIHwgYXN5bmNcIlxuICAgIHJvbGU9XCJuYXZpZ2F0aW9uXCJcbiAgPjwvYzh5LXRhYnMtb3V0bGV0PlxuICA8Yzh5LWFjdGlvbi1iYXJcbiAgICAjYWN0aW9uQmFyQ29tcG9uZW50XG4gICAgW25hdmlnYXRvck9wZW5dPVwiaGVhZGVyU2VydmljZS5uYXZpZ2F0b3JPcGVuJCB8IGFzeW5jXCJcbiAgICBbaGFzVGFic109XCJ0YWJzQ29tcG9uZW50Lmhhc1RhYnNcIlxuICAgIFtpc1RhYnNIb3Jpem9udGFsXT1cInRhYnNDb21wb25lbnQ/LmlzSG9yaXpvbnRhbFwiXG4gICAgW2l0ZW1zJF09XCJhY3Rpb25CYXIuaXRlbXMkXCJcbiAgICByb2xlPVwiZ3JvdXBcIlxuICA+PC9jOHktYWN0aW9uLWJhcj5cblxuICA8ZGl2XG4gICAgY2xhc3M9XCJtY29udGFpbmVyXCJcbiAgICBbbmdDbGFzc109XCJ7XG4gICAgICBvcGVuOiBoZWFkZXJTZXJ2aWNlLm5hdmlnYXRvck9wZW4kIHwgYXN5bmMsXG4gICAgICAnbm8tYXBwcy1tYXJnaW4nOiBub0FwcHNNYXJnaW4kIHwgYXN5bmMsXG4gICAgICAnaG9yaXpvbnRhbC10YWJzJzogdGFic0NvbXBvbmVudC5pc0hvcml6b250YWwsXG4gICAgICAndmVydGljYWwtdGFicyc6ICF0YWJzQ29tcG9uZW50LmlzSG9yaXpvbnRhbCxcbiAgICAgICdoYXMtdGFicyc6IHRhYnNDb21wb25lbnQuaGFzVGFicyxcbiAgICAgICdoYXMtYWN0aW9uLWJhcic6ICFhY3Rpb25CYXJDb21wb25lbnQ/LmhpZGRlblxuICAgIH1cIlxuICA+XG4gICAgPG1haW4gaWQ9XCJtYWluLWNvbnRlbnRcIiBjbGFzcz1cImNvbnRhaW5lci1mbHVpZFwiIHRhYmluZGV4PVwiLTFcIj5cbiAgICAgIDxyb3V0ZXItb3V0bGV0Pjwvcm91dGVyLW91dGxldD5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIiNjOHktbGVnYWN5LXZpZXdcIj48L25nLWNvbnRlbnQ+XG4gICAgICA8IS0tIGxlZ2FjeSBuZy12aWV3LCB3aWxsIG5vdCBiZSBtaWdyYXRlZCBhdG0gLS0+XG4gICAgPC9tYWluPlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48ZGl2ICpuZ0lmPVwiKHVpLmN1cnJlbnRVc2VyIHwgYXN5bmMpICYmIChzZXR1cFNlcnZpY2UuaXNTZXR1cE5lZWRlZCQgfCBhc3luYylcIj5cbiAgPGM4eS1oZWFkZXItYmFyIFtzaW1wbGVdPVwidHJ1ZVwiPjwvYzh5LWhlYWRlci1iYXI+XG4gIDxkaXYgY2xhc3M9XCJtY29udGFpbmVyXCIgcm9sZT1cIm1haW5cIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyLWZsdWlkXCI+XG4gICAgICA8Yzh5LXNldHVwPjwvYzh5LXNldHVwPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48Yzh5LWNvb2tpZS1iYW5uZXI+PC9jOHktY29va2llLWJhbm5lcj5cbiJdfQ==
|
|
123
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9vdHN0cmFwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvYm9vdHN0cmFwL2Jvb3RzdHJhcC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9jb3JlL2Jvb3RzdHJhcC9ib290c3RyYXAudGVtcGxhdGUuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUU3RCxPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNsRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUUzRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBTXBDLE1BQU0sT0FBTyxrQkFBa0I7SUFTN0IsWUFDUyxJQUFpQixFQUNqQixFQUFtQixFQUNuQixTQUEyQixFQUMzQixTQUEyQixFQUMzQixhQUE0QixFQUMzQixPQUF1QixFQUN2QixjQUFxQyxFQUN0QyxZQUEwQjtRQVAxQixTQUFJLEdBQUosSUFBSSxDQUFhO1FB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LCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBcHBsaWNhdGlvblJlbW90ZVBsdWdpbnMgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQWN0aW9uQmFyU2VydmljZSB9IGZyb20gJy4uL2FjdGlvbi1iYXIvYWN0aW9uLWJhci5zZXJ2aWNlJztcbmltcG9ydCB7IE9wdGlvbnNTZXJ2aWNlIH0gZnJvbSAnLi4vY29tbW9uL29wdGlvbnMuc2VydmljZSc7XG5pbXBvcnQgeyBBcHBTdGF0ZVNlcnZpY2UgfSBmcm9tICcuLi9jb21tb24vdWktc3RhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBIZWFkZXJTZXJ2aWNlIH0gZnJvbSAnLi4vaGVhZGVyL2hlYWRlci5zZXJ2aWNlJztcbmltcG9ydCB7IE5hdmlnYXRvclNlcnZpY2UgfSBmcm9tICcuLi9uYXZpZ2F0b3IvbmF2aWdhdG9yLnNlcnZpY2UnO1xuaW1wb3J0IHsgUGx1Z2luc1Jlc29sdmVTZXJ2aWNlIH0gZnJvbSAnLi4vcGx1Z2lucy9wbHVnaW5zLXJlc29sdmUuc2VydmljZSc7XG5pbXBvcnQgeyBQbHVnaW5zQ29uZmlnIH0gZnJvbSAnLi4vcGx1Z2lucy9wbHVnaW5zLm1vZGVsJztcbmltcG9ydCB7IFNldHVwU2VydmljZSB9IGZyb20gJy4uL3NldHVwL3NldHVwLnNlcnZpY2UnO1xuaW1wb3J0IHsgVGFic1NlcnZpY2UgfSBmcm9tICcuLi90YWJzL3RhYnMuc2VydmljZSc7XG5pbXBvcnQgeyBpc0VtcHR5IH0gZnJvbSAnbG9kYXNoLWVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LWJvb3RzdHJhcCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9ib290c3RyYXAudGVtcGxhdGUuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgQm9vdHN0cmFwQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95LCBPbkluaXQge1xuICBuYXZpZ2F0b3JPcGVuJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgbm9BcHBzTWFyZ2luJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgdGFic09yaWVudGF0aW9uOiBzdHJpbmc7XG4gIHNob3dQb3dlcmVkQnkgPSB0cnVlO1xuICBub0xvZ2luID0gZmFsc2U7XG4gIHByaXZhdGUgZGVzdHJveSQ6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuICBwcml2YXRlIGxvYWRlZFJlbW90ZXNDb250ZXh0UGF0aENhY2hlID0gbmV3IE1hcDxzdHJpbmcsIGJvb2xlYW4+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHRhYnM6IFRhYnNTZXJ2aWNlLFxuICAgIHB1YmxpYyB1aTogQXBwU3RhdGVTZXJ2aWNlLFxuICAgIHB1YmxpYyBuYXZpZ2F0b3I6IE5hdmlnYXRvclNlcnZpY2UsXG4gICAgcHVibGljIGFjdGlvbkJhcjogQWN0aW9uQmFyU2VydmljZSxcbiAgICBwdWJsaWMgaGVhZGVyU2VydmljZTogSGVhZGVyU2VydmljZSxcbiAgICBwcml2YXRlIG9wdGlvbnM6IE9wdGlvbnNTZXJ2aWNlLFxuICAgIHByaXZhdGUgcGx1Z2luc1Jlc29sdmU6IFBsdWdpbnNSZXNvbHZlU2VydmljZSxcbiAgICBwdWJsaWMgc2V0dXBTZXJ2aWNlOiBTZXR1cFNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5ub0FwcHNNYXJnaW4kID0gdGhpcy5oZWFkZXJTZXJ2aWNlLm1hcCgoeyBuYXYgfSkgPT4gIW5hdi5vcGVuICYmIG5hdi5oaWRkZW5PblN0YXJ0dXApO1xuICAgIHRoaXMudGFic09yaWVudGF0aW9uID0gdGhpcy5vcHRpb25zLnRhYnNIb3Jpem9udGFsID8gJ2hvcml6b250YWwnIDogJ3ZlcnRpY2FsJztcbiAgICB0aGlzLnVpXG4gICAgICAubWFwKCh7IGxhbmcgfSkgPT4gbGFuZylcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmFjdGlvbkJhci5yZWZyZXNoKCk7XG4gICAgICB9KTtcbiAgICB0aGlzLnNob3dQb3dlcmVkQnkgPSAhdGhpcy5vcHRpb25zLmdldCgnaGlkZVBvd2VyZWQnKTtcbiAgICB0aGlzLm5vTG9naW4gPSB0aGlzLm9wdGlvbnMuZ2V0KCdub0xvZ2luJywgZmFsc2UpO1xuICB9XG5cbiAgYXN5bmMgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5zdWJzY3JpYmVUb0xvYWRSZW1vdGVzKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwcml2YXRlIGdldFJlbW90ZXMoY29uZmlnOiBQbHVnaW5zQ29uZmlnKTogQXBwbGljYXRpb25SZW1vdGVQbHVnaW5zIHtcbiAgICBsZXQgcmVtb3RlczogQXBwbGljYXRpb25SZW1vdGVQbHVnaW5zO1xuICAgIGlmICghIWNvbmZpZz8ucmVtb3Rlcykge1xuICAgICAgLy8gTWVyZ2UgcGx1Z2lucyBjb25maWcgcmVtb3RlcyBhbmQgcmVtb3RlcyBwYXNzZWQgaW4gdGhlIFVSTC5cbiAgICAgIC8vIFJlbW90ZXMgaW4gdGhlIFVSTCBhcmUgdXNlZCBpbiB0aGUgZGV2ZWxvcG1lbnQgcHJvY2Vzcy5cbiAgICAgIHJlbW90ZXMgPSB0aGlzLnBsdWdpbnNSZXNvbHZlLm1lcmdlTUZSZW1vdGVzKFtcbiAgICAgICAgY29uZmlnLnJlbW90ZXMsXG4gICAgICAgIHRoaXMucGx1Z2luc1Jlc29sdmUubG9hZFVybFJlbW90ZXMoKVxuICAgICAgXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlbW90ZXMgPSB0aGlzLm9wdGlvbnM/LnJlbW90ZXM7XG4gICAgfVxuXG4gICAgLy8gQmxvY2sgdGhlIHBvc3NpYmlsaXR5IG9mIGxvYWRpbmcgcGx1Z2lucyBtdWx0aXBsZSB0aW1lcy5cbiAgICBPYmplY3Qua2V5cyhyZW1vdGVzIHx8IHt9KS5mb3JFYWNoKGNvbnRleHRQYXRoID0+IHtcbiAgICAgIGlmICh0aGlzLmxvYWRlZFJlbW90ZXNDb250ZXh0UGF0aENhY2hlLmdldChjb250ZXh0UGF0aCkpIHtcbiAgICAgICAgZGVsZXRlIHJlbW90ZXNbY29udGV4dFBhdGhdO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBpc0VtcHR5KHJlbW90ZXMpID8gdW5kZWZpbmVkIDogcmVtb3RlcztcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgbG9hZFJlbW90ZXMocmVtb3RlczogQXBwbGljYXRpb25SZW1vdGVQbHVnaW5zKSB7XG4gICAgaWYgKCFyZW1vdGVzKSB7XG4gICAgICB0aGlzLmVuc3VyZVdlTWFya1BsdWdpbnNBc0xvYWRlZCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCByZW1vdGVNb2R1bGVzID0gYXdhaXQgdGhpcy5wbHVnaW5zUmVzb2x2ZS5sb2FkUmVtb3RlcyhyZW1vdGVzKTtcblxuICAgIC8vIENhY2hlIGxvYWRlZCByZW1vdGVzLlxuICAgIE9iamVjdC5rZXlzKHJlbW90ZXMpLmZvckVhY2goY29udGV4dFBhdGggPT5cbiAgICAgIHRoaXMubG9hZGVkUmVtb3Rlc0NvbnRleHRQYXRoQ2FjaGUuc2V0KGNvbnRleHRQYXRoLCB0cnVlKVxuICAgICk7XG5cbiAgICBpZiAocmVtb3RlTW9kdWxlcy5sZW5ndGgpIHtcbiAgICAgIHRoaXMucGx1Z2luc1Jlc29sdmUucmVzb2x2ZVJlbW90ZVBsdWdpbnMocmVtb3RlTW9kdWxlcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGluIGNhc2UgbG9hZGluZyBhbGwgbW9kdWxlcyB2aWEgcGx1Z2luc1Jlc29sdmUubG9hZFJlbW90ZXMgZmFpbGVkXG4gICAgICAvLyAoZS5nLiBhbGwgcGx1Z2lucyB0aGF0IHdlcmUgaW5zdGFsbGVkIGhhdmUgYmVlbiBkZWxldGVkIGZyb20gdGhlIHRlbmFudClcbiAgICAgIC8vIHdlIHN0aWxsIG5lZWQgdG8gbWFyayBsb2FkaW5nIHRoZSBwbHVnaW5zIGFzIHN1Y2Nlc3NmdWwuXG4gICAgICB0aGlzLmVuc3VyZVdlTWFya1BsdWdpbnNBc0xvYWRlZCgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc3Vic2NyaWJlVG9Mb2FkUmVtb3RlcygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5vcHRpb25zLmdldCgnbm9QbHVnaW5zJywgZmFsc2UpKSB7XG4gICAgICB0aGlzLmVuc3VyZVdlTWFya1BsdWdpbnNBc0xvYWRlZCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnVpLmN1cnJlbnRBcHBsaWNhdGlvbkNvbmZpZ1xuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgLnN1YnNjcmliZSgoY29uZmlnOiBQbHVnaW5zQ29uZmlnKSA9PiB0aGlzLmxvYWRSZW1vdGVzKHRoaXMuZ2V0UmVtb3Rlcyhjb25maWcpKSk7XG4gIH1cblxuICBwcml2YXRlIGVuc3VyZVdlTWFya1BsdWdpbnNBc0xvYWRlZCgpOiB2b2lkIHtcbiAgICAvLyBlbnN1cmUgd2UgY2FsbCBtYXJrUGx1Z2luc0FzTG9hZGVkIG9uIHRoZSBEeW5hbWljQ29tcG9uZW50U2VydmljZVxuICAgIHRoaXMucGx1Z2luc1Jlc29sdmUubWFya1BsdWdpbnNBc0xvYWRlZCgpO1xuICB9XG59XG4iLCI8Yzh5LWxvZ2luICpuZ0lmPVwiIW5vTG9naW4gJiYgISh1aS5jdXJyZW50VXNlciB8IGFzeW5jKVwiPjwvYzh5LWxvZ2luPlxuXG48ZGl2XG4gICpuZ0lmPVwibm9Mb2dpbiB8fCAoKHVpLmN1cnJlbnRVc2VyIHwgYXN5bmMpICYmICEoc2V0dXBTZXJ2aWNlLmlzU2V0dXBOZWVkZWQkIHwgYXN5bmMpKVwiXG4gIFtjbGFzcy5oZWFkLW9wZW5dPVwiaGVhZGVyU2VydmljZS5oZWFkZXJPcGVuXCJcbj5cbiAgPGM4eS1oZWFkZXItYmFyICNoZWFkZXI+PC9jOHktaGVhZGVyLWJhcj5cbiAgPGM4eS1kcmF3ZXItb3V0bGV0XG4gICAgcm9sZT1cInJlZ2lvblwiXG4gICAgcG9zaXRpb249XCJsZWZ0XCJcbiAgICBbb3Blbl09XCJoZWFkZXJTZXJ2aWNlLm5hdmlnYXRvck9wZW4kIHwgYXN5bmNcIlxuICA+PC9jOHktZHJhd2VyLW91dGxldD5cblxuICA8ZGl2IGNsYXNzPVwiYWxlcnRzXCI+XG4gICAgPGM4eS1hbGVydC1vdXRsZXQ+PC9jOHktYWxlcnQtb3V0bGV0PlxuICA8L2Rpdj5cbiAgPGM4eS10YWJzLW91dGxldFxuICAgICN0YWJzQ29tcG9uZW50XG4gICAgW3RhYnNdPVwidGFicy5pdGVtcyQgfCBhc3luY1wiXG4gICAgW25hdmlnYXRvck9wZW5dPVwiaGVhZGVyU2VydmljZS5uYXZpZ2F0b3JPcGVuJCB8IGFzeW5jXCJcbiAgICBbb3JpZW50YXRpb25dPVwidGFicy5vcmllbnRhdGlvbiQgfCBhc3luY1wiXG4gICAgcm9sZT1cIm5hdmlnYXRpb25cIlxuICA+PC9jOHktdGFicy1vdXRsZXQ+XG4gIDxjOHktYWN0aW9uLWJhclxuICAgICNhY3Rpb25CYXJDb21wb25lbnRcbiAgICBbbmF2aWdhdG9yT3Blbl09XCJoZWFkZXJTZXJ2aWNlLm5hdmlnYXRvck9wZW4kIHwgYXN5bmNcIlxuICAgIFtoYXNUYWJzXT1cInRhYnNDb21wb25lbnQuaGFzVGFic1wiXG4gICAgW2lzVGFic0hvcml6b250YWxdPVwidGFic0NvbXBvbmVudD8uaXNIb3Jpem9udGFsXCJcbiAgICBbaXRlbXMkXT1cImFjdGlvbkJhci5pdGVtcyRcIlxuICAgIHJvbGU9XCJncm91cFwiXG4gID48L2M4eS1hY3Rpb24tYmFyPlxuXG4gIDxkaXZcbiAgICBjbGFzcz1cIm1jb250YWluZXJcIlxuICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgIG9wZW46IGhlYWRlclNlcnZpY2UubmF2aWdhdG9yT3BlbiQgfCBhc3luYyxcbiAgICAgICduby1hcHBzLW1hcmdpbic6IG5vQXBwc01hcmdpbiQgfCBhc3luYyxcbiAgICAgICdob3Jpem9udGFsLXRhYnMnOiB0YWJzQ29tcG9uZW50LmlzSG9yaXpvbnRhbCxcbiAgICAgICd2ZXJ0aWNhbC10YWJzJzogIXRhYnNDb21wb25lbnQuaXNIb3Jpem9udGFsLFxuICAgICAgJ2hhcy10YWJzJzogdGFic0NvbXBvbmVudC5oYXNUYWJzLFxuICAgICAgJ2hhcy1hY3Rpb24tYmFyJzogIWFjdGlvbkJhckNvbXBvbmVudD8uaGlkZGVuXG4gICAgfVwiXG4gID5cbiAgICA8bWFpbiBpZD1cIm1haW4tY29udGVudFwiIGNsYXNzPVwiY29udGFpbmVyLWZsdWlkXCIgdGFiaW5kZXg9XCItMVwiPlxuICAgICAgPHJvdXRlci1vdXRsZXQ+PC9yb3V0ZXItb3V0bGV0PlxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiI2M4eS1sZWdhY3ktdmlld1wiPjwvbmctY29udGVudD5cbiAgICAgIDwhLS0gbGVnYWN5IG5nLXZpZXcsIHdpbGwgbm90IGJlIG1pZ3JhdGVkIGF0bSAtLT5cbiAgICA8L21haW4+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxkaXYgKm5nSWY9XCIodWkuY3VycmVudFVzZXIgfCBhc3luYykgJiYgKHNldHVwU2VydmljZS5pc1NldHVwTmVlZGVkJCB8IGFzeW5jKVwiPlxuICA8Yzh5LWhlYWRlci1iYXIgW3NpbXBsZV09XCJ0cnVlXCI+PC9jOHktaGVhZGVyLWJhcj5cbiAgPGRpdiBjbGFzcz1cIm1jb250YWluZXJcIiByb2xlPVwibWFpblwiPlxuICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXItZmx1aWRcIj5cbiAgICAgIDxjOHktc2V0dXA+PC9jOHktc2V0dXA+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxjOHktY29va2llLWJhbm5lcj48L2M4eS1jb29raWUtYmFubmVyPlxuIl19
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { DatePipe as NgDatePipe } from '@angular/common';
|
|
2
|
-
import { Inject, LOCALE_ID, Pipe } from '@angular/core';
|
|
1
|
+
import { DatePipe as NgDatePipe, DATE_PIPE_DEFAULT_TIMEZONE } from '@angular/common';
|
|
2
|
+
import { Inject, LOCALE_ID, Optional, Pipe } from '@angular/core';
|
|
3
3
|
import { TranslateService } from '@ngx-translate/core';
|
|
4
4
|
import { gettext } from '../i18n/gettext';
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
@@ -24,8 +24,8 @@ export const ES_MAX_TIME_MILLISECONDS = 8640000000000000;
|
|
|
24
24
|
* <span>{{ 8640000000000000 + 1 | c8yDate }}</span> <!-- e.g. after 13 Sep 275760, 03:00:00 --> ```
|
|
25
25
|
*/
|
|
26
26
|
export class DatePipe extends NgDatePipe {
|
|
27
|
-
constructor(locale, translateService) {
|
|
28
|
-
super(locale);
|
|
27
|
+
constructor(locale, translateService, defaultTimezone) {
|
|
28
|
+
super(locale, defaultTimezone);
|
|
29
29
|
this.translateService = translateService;
|
|
30
30
|
}
|
|
31
31
|
transform(value, format = 'medium', timezone, locale) {
|
|
@@ -48,7 +48,7 @@ export class DatePipe extends NgDatePipe {
|
|
|
48
48
|
return result;
|
|
49
49
|
}
|
|
50
50
|
}
|
|
51
|
-
DatePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: DatePipe, deps: [{ token: LOCALE_ID }, { token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Pipe });
|
|
51
|
+
DatePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: DatePipe, deps: [{ token: LOCALE_ID }, { token: i1.TranslateService }, { token: DATE_PIPE_DEFAULT_TIMEZONE, optional: true }], target: i0.ɵɵFactoryTarget.Pipe });
|
|
52
52
|
DatePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "14.0.6", ngImport: i0, type: DatePipe, name: "c8yDate" });
|
|
53
53
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: DatePipe, decorators: [{
|
|
54
54
|
type: Pipe,
|
|
@@ -56,5 +56,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
|
|
|
56
56
|
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
57
57
|
type: Inject,
|
|
58
58
|
args: [LOCALE_ID]
|
|
59
|
-
}] }, { type: i1.TranslateService }
|
|
60
|
-
|
|
59
|
+
}] }, { type: i1.TranslateService }, { type: undefined, decorators: [{
|
|
60
|
+
type: Inject,
|
|
61
|
+
args: [DATE_PIPE_DEFAULT_TIMEZONE]
|
|
62
|
+
}, {
|
|
63
|
+
type: Optional
|
|
64
|
+
}] }]; } });
|
|
65
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9jb21tb24vZGF0ZS5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLElBQUksVUFBVSxFQUFFLDBCQUEwQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDckYsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7OztBQUUxQzs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyxnQkFBZ0IsQ0FBQztBQUV6RDs7Ozs7Ozs7Ozs7OztHQWFHO0FBRUgsTUFBTSxPQUFPLFFBQVMsU0FBUSxVQUFVO0lBQ3RDLFlBQ3FCLE1BQWMsRUFDekIsZ0JBQWtDLEVBQ00sZUFBK0I7UUFFL0UsS0FBSyxDQUFDLE1BQU0sRUFBRSxlQUFlLENBQUMsQ0FBQztRQUh2QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO0lBSTVDLENBQUM7SUFFRCxTQUFTLENBQUMsS0FBVSxFQUFFLE1BQU0sR0FBRyxRQUFRLEVBQUUsUUFBaUIsRUFBRSxNQUFlO1FBQ3pFLElBQUksYUFBYSxHQUFHLEtBQUssQ0FBQztRQUMxQixJQUFJLFdBQVcsR0FBRyxLQUFLLENBQUM7UUFDeEIsSUFBSSxXQUFXLEdBQUcsS0FBSyxDQUFDO1FBRXhCLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQzlDLGFBQWEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSx3QkFBd0IsQ0FBQyxDQUFDO1lBQzFELGFBQWEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDLHdCQUF3QixDQUFDLENBQUM7WUFFbkUsV0FBVyxHQUFHLEtBQUssR0FBRyxDQUFDLHdCQUF3QixDQUFDO1lBQ2hELFdBQVcsR0FBRyxLQUFLLEdBQUcsd0JBQXdCLENBQUM7U0FDaEQ7UUFDRCxJQUFJLE1BQU0sR0FBVyxLQUFLLENBQUMsU0FBUyxDQUFDLGFBQWEsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRTlFLElBQUksV0FBVyxFQUFFO1lBQ2YsTUFBTSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztTQUN0RjthQUFNLElBQUksV0FBVyxFQUFFO1lBQ3RCLE1BQU0sR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7U0FDckY7UUFFRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDOztxR0E5QlUsUUFBUSxrQkFFVCxTQUFTLDZDQUVULDBCQUEwQjttR0FKekIsUUFBUTsyRkFBUixRQUFRO2tCQURwQixJQUFJO21CQUFDLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRTs7MEJBR3BCLE1BQU07MkJBQUMsU0FBUzs7MEJBRWhCLE1BQU07MkJBQUMsMEJBQTBCOzswQkFBRyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGF0ZVBpcGUgYXMgTmdEYXRlUGlwZSwgREFURV9QSVBFX0RFRkFVTFRfVElNRVpPTkUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSW5qZWN0LCBMT0NBTEVfSUQsIE9wdGlvbmFsLCBQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBnZXR0ZXh0IH0gZnJvbSAnLi4vaTE4bi9nZXR0ZXh0JztcblxuLyoqXG4gKiBUaGUgcmFuZ2Ugb2YgdGltZXMgc3VwcG9ydGVkIGJ5IEVDTUFTY3JpcHQgRGF0ZSBvYmplY3RzIGluIG1pbGxpc2Vjb25kcy5cbiAqIEBzZWUgaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzUuMS8jc2VjLTE1LjkuMS4xXG4gKi9cbmV4cG9ydCBjb25zdCBFU19NQVhfVElNRV9NSUxMSVNFQ09ORFMgPSA4NjQwMDAwMDAwMDAwMDAwO1xuXG4vKipcbiAqIEZvcm1hdHMgYSBkYXRlIHZhbHVlIGFjY29yZGluZyB0byBsb2NhbGUgcnVsZXMuIElmIG5vIG90aGVyIGZvcm1hdCBzcGVjaWZpZWQgaXQgZGVmYXVsdHMgdG8gYG1lZGl1bWBcbiAqIHVzZWQgYXMgc3RhbmRhcmQgZGF0ZS90aW1lIGZvcm1hdC5cbiAqXG4gKiBFeHRlbmRzIEFuZ3VsYXIncyBEYXRlUGlwZSBpbiBhIHdheSBzbyB0aGF0IGRhdGUgdmFsdWVzIGV4Y2VlZGluZyB0aGUgcmFuZ2Ugc3VwcG9ydGVkIGJ5IEVDTUFTY3JpcHRcbiAqIGFyZSBkaXNwbGF5ZWQgYXMgZWFybGllc3QvbGF0ZXN0IHN1cHBvcnRlZCBwb2ludCBpbiB0aW1lIHByaW50ZWQgaW4gdGhlIGRlc2lyZWQgZm9ybWF0IHByZS0gb3IgcG9zdGZpeGVkXG4gKiBieSB0aGUgd29yZCBgYmVmb3JlYCBvciBgYWZ0ZXJgLCByZXNwZWN0aXZlbHkuXG4gKiBJbiBhbGwgb3RoZXIgY2FzZXMgdGhlIHBpcGUgYmVoYXZlcyBhcyB0aGUgc3RhbmRhcmQgW0RhdGVQaXBlXXtAbGluayBodHRwczovL2FuZ3VsYXIuaW8vYXBpL2NvbW1vbi9EYXRlUGlwZX0uXG4gKlxuICogYGBgaHRtbFxuICogPHNwYW4gY2xhc3M9XCJoaWdobGlnaHRcIj57eyBkZWFkbGluZSB8IGM4eURhdGUgfX08L3NwYW4+IDwhLS0gZS5nLiA3IE1heSAyMDIwLCAxNzo0NToxOSAoZW4tR0IpIG9yIDA3LjA1LjIwMjAsIDE3OjQ1OjE5IChkZSkgLS0+XG4gKiA8c3Bhbj57eyBsYXN0VXBkYXRlZCB8IGM4eURhdGU6ICdhIGg6TU06c3MnIH19PC9zcGFuPiA8IS0tIGUuZy4gcG0gNTo0NToxOSAtLT5cbiAqIDxzcGFuPnt7IDg2NDAwMDAwMDAwMDAwMDAgKyAxIHwgYzh5RGF0ZSB9fTwvc3Bhbj4gPCEtLSBlLmcuIGFmdGVyIDEzIFNlcCAyNzU3NjAsIDAzOjAwOjAwIC0tPiBgYGBcbiAqL1xuQFBpcGUoeyBuYW1lOiAnYzh5RGF0ZScgfSlcbmV4cG9ydCBjbGFzcyBEYXRlUGlwZSBleHRlbmRzIE5nRGF0ZVBpcGUge1xuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KExPQ0FMRV9JRCkgbG9jYWxlOiBzdHJpbmcsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIEBJbmplY3QoREFURV9QSVBFX0RFRkFVTFRfVElNRVpPTkUpIEBPcHRpb25hbCgpIGRlZmF1bHRUaW1lem9uZT86IHN0cmluZyB8IG51bGxcbiAgKSB7XG4gICAgc3VwZXIobG9jYWxlLCBkZWZhdWx0VGltZXpvbmUpO1xuICB9XG5cbiAgdHJhbnNmb3JtKHZhbHVlOiBhbnksIGZvcm1hdCA9ICdtZWRpdW0nLCB0aW1lem9uZT86IHN0cmluZywgbG9jYWxlPzogc3RyaW5nKTogYW55IHtcbiAgICBsZXQgdmFsdWVJbkJvdW5kcyA9IHZhbHVlO1xuICAgIGxldCB2YWx1ZUJlZm9yZSA9IGZhbHNlO1xuICAgIGxldCB2YWx1ZUJleW9uZCA9IGZhbHNlO1xuXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgJiYgIWlzTmFOKHZhbHVlKSkge1xuICAgICAgdmFsdWVJbkJvdW5kcyA9IE1hdGgubWluKHZhbHVlLCBFU19NQVhfVElNRV9NSUxMSVNFQ09ORFMpO1xuICAgICAgdmFsdWVJbkJvdW5kcyA9IE1hdGgubWF4KHZhbHVlSW5Cb3VuZHMsIC1FU19NQVhfVElNRV9NSUxMSVNFQ09ORFMpO1xuXG4gICAgICB2YWx1ZUJlZm9yZSA9IHZhbHVlIDwgLUVTX01BWF9USU1FX01JTExJU0VDT05EUztcbiAgICAgIHZhbHVlQmV5b25kID0gdmFsdWUgPiBFU19NQVhfVElNRV9NSUxMSVNFQ09ORFM7XG4gICAgfVxuICAgIGxldCByZXN1bHQ6IHN0cmluZyA9IHN1cGVyLnRyYW5zZm9ybSh2YWx1ZUluQm91bmRzLCBmb3JtYXQsIHRpbWV6b25lLCBsb2NhbGUpO1xuXG4gICAgaWYgKHZhbHVlQmVmb3JlKSB7XG4gICAgICByZXN1bHQgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChnZXR0ZXh0KGBiZWZvcmUge3tkYXRlfX1gKSwgeyBkYXRlOiByZXN1bHQgfSk7XG4gICAgfSBlbHNlIGlmICh2YWx1ZUJleW9uZCkge1xuICAgICAgcmVzdWx0ID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoZ2V0dGV4dChgYWZ0ZXIge3tkYXRlfX1gKSwgeyBkYXRlOiByZXN1bHQgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuIl19
|
|
@@ -1,30 +1,33 @@
|
|
|
1
1
|
import { Pipe } from '@angular/core';
|
|
2
|
+
import { isDate as _isDate } from 'lodash-es';
|
|
2
3
|
import { DatePipe } from './date.pipe';
|
|
3
4
|
import * as i0 from "@angular/core";
|
|
4
5
|
import * as i1 from "./date.pipe";
|
|
5
6
|
export class StringifyObjectPipe {
|
|
6
7
|
constructor(c8yDatePipe) {
|
|
7
8
|
this.c8yDatePipe = c8yDatePipe;
|
|
9
|
+
this.isoDateTimeRegex = /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)(([+-](\d{2}):(\d{2})|Z)?)$/;
|
|
8
10
|
}
|
|
9
11
|
transform(value) {
|
|
10
12
|
if (!value) {
|
|
11
13
|
return '';
|
|
12
14
|
}
|
|
13
|
-
if (typeof value === 'object') {
|
|
15
|
+
if (typeof value === 'object' && !_isDate(value)) {
|
|
14
16
|
return JSON.stringify(value);
|
|
15
17
|
}
|
|
16
|
-
if (this.
|
|
18
|
+
if (this.isDate(value)) {
|
|
17
19
|
return this.c8yDatePipe.transform(value);
|
|
18
20
|
}
|
|
19
21
|
return value;
|
|
20
22
|
}
|
|
21
|
-
|
|
23
|
+
isDate(value) {
|
|
22
24
|
if (!value)
|
|
23
25
|
return false;
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
26
|
+
if (_isDate(value))
|
|
27
|
+
return !isNaN(value);
|
|
28
|
+
if (typeof value === 'string')
|
|
29
|
+
return this.isoDateTimeRegex.test(value);
|
|
30
|
+
return false;
|
|
28
31
|
}
|
|
29
32
|
}
|
|
30
33
|
StringifyObjectPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: StringifyObjectPipe, deps: [{ token: i1.DatePipe }], target: i0.ɵɵFactoryTarget.Pipe });
|
|
@@ -33,4 +36,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
|
|
|
33
36
|
type: Pipe,
|
|
34
37
|
args: [{ name: 'stringifyObject' }]
|
|
35
38
|
}], ctorParameters: function () { return [{ type: i1.DatePipe }]; } });
|
|
36
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaW5naWZ5LW9iamVjdC5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9jb21tb24vc3RyaW5naWZ5LW9iamVjdC5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ3BELE9BQU8sRUFBRSxNQUFNLElBQUksT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQzlDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxhQUFhLENBQUM7OztBQUd2QyxNQUFNLE9BQU8sbUJBQW1CO0lBRzlCLFlBQW9CLFdBQXFCO1FBQXJCLGdCQUFXLEdBQVgsV0FBVyxDQUFVO1FBRnhCLHFCQUFnQixHQUMvQix1RkFBdUYsQ0FBQztJQUM5QyxDQUFDO0lBQzdDLFNBQVMsQ0FBQyxLQUFVO1FBQ2xCLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDVixPQUFPLEVBQUUsQ0FBQztTQUNYO1FBQ0QsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDaEQsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzlCO1FBQ0QsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3RCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDMUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFTyxNQUFNLENBQUMsS0FBSztRQUNsQixJQUFJLENBQUMsS0FBSztZQUFFLE9BQU8sS0FBSyxDQUFDO1FBQ3pCLElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQztZQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekMsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRO1lBQUUsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXhFLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQzs7Z0hBdkJVLG1CQUFtQjs4R0FBbkIsbUJBQW1COzJGQUFuQixtQkFBbUI7a0JBRC9CLElBQUk7bUJBQUMsRUFBRSxJQUFJLEVBQUUsaUJBQWlCLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpc0RhdGUgYXMgX2lzRGF0ZSB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBEYXRlUGlwZSB9IGZyb20gJy4vZGF0ZS5waXBlJztcblxuQFBpcGUoeyBuYW1lOiAnc3RyaW5naWZ5T2JqZWN0JyB9KVxuZXhwb3J0IGNsYXNzIFN0cmluZ2lmeU9iamVjdFBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgcHJpdmF0ZSByZWFkb25seSBpc29EYXRlVGltZVJlZ2V4ID1cbiAgICAvXihcXGR7NH0pLShcXGR7Mn0pLShcXGR7Mn0pVChcXGR7Mn0pOihcXGR7Mn0pOihcXGR7Mn0oPzpcXC5cXGQqKT8pKChbKy1dKFxcZHsyfSk6KFxcZHsyfSl8Wik/KSQvO1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGM4eURhdGVQaXBlOiBEYXRlUGlwZSkge31cbiAgdHJhbnNmb3JtKHZhbHVlOiBhbnkpOiBzdHJpbmcge1xuICAgIGlmICghdmFsdWUpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgIV9pc0RhdGUodmFsdWUpKSB7XG4gICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodmFsdWUpO1xuICAgIH1cbiAgICBpZiAodGhpcy5pc0RhdGUodmFsdWUpKSB7XG4gICAgICByZXR1cm4gdGhpcy5jOHlEYXRlUGlwZS50cmFuc2Zvcm0odmFsdWUpO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICBwcml2YXRlIGlzRGF0ZSh2YWx1ZSk6IGJvb2xlYW4ge1xuICAgIGlmICghdmFsdWUpIHJldHVybiBmYWxzZTtcbiAgICBpZiAoX2lzRGF0ZSh2YWx1ZSkpIHJldHVybiAhaXNOYU4odmFsdWUpO1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSByZXR1cm4gdGhpcy5pc29EYXRlVGltZVJlZ2V4LnRlc3QodmFsdWUpO1xuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG4iXX0=
|