@lowcodeunit/applications-flow-common 1.33.117-lets-get-social-ish → 1.33.122-merge
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/bundles/lowcodeunit-applications-flow-common.umd.js +520 -2399
- package/bundles/lowcodeunit-applications-flow-common.umd.js.map +1 -1
- package/bundles/lowcodeunit-applications-flow-common.umd.min.js +2 -2
- package/bundles/lowcodeunit-applications-flow-common.umd.min.js.map +1 -1
- package/esm2015/lcu.api.js +1 -3
- package/esm2015/lib/applications-flow.module.js +6 -83
- package/esm2015/lib/elements/base-form/base-form.component.js +5 -5
- package/esm2015/lib/elements/dynamic-tabs/dynamic-tabs.component.js +1 -1
- package/esm2015/lib/elements/form-card/form-card.component.js +1 -1
- package/esm2015/lib/elements/projects/controls/builds/builds.component.js +10 -5
- package/esm2015/lib/elements/projects/controls/create-project-wizard/create-project-wizard.component.js +7 -7
- package/esm2015/lib/elements/projects/controls/forms/source-control/source-control.component.js +7 -4
- package/esm2015/lib/elements/projects/controls/git-auth/git-auth.component.js +1 -1
- package/esm2015/lib/elements/projects/controls/header/header.component.js +9 -9
- package/esm2015/lib/elements/projects/controls/hosting-details-form-group/hosting-details-form-group.component.js +2 -3
- package/esm2015/lib/elements/projects/controls/project-items/project-items.component.js +8 -8
- package/esm2015/lib/elements/projects/controls/project-tabs/project-tabs.component.js +1 -1
- package/esm2015/lib/elements/projects/controls/tabs/apps-flow/apps-flow.component.js +11 -9
- package/esm2015/lib/elements/projects/controls/tabs/apps-flow/npm-package-select/npm-package-select.component.js +1 -1
- package/esm2015/lib/elements/projects/controls/tabs/devops/devops.component.js +8 -8
- package/esm2015/lib/elements/projects/controls/tabs/dfs-modifiers/dfs-modifiers.component.js +8 -8
- package/esm2015/lib/elements/projects/controls/tabs/domains/domains.component.js +7 -7
- package/esm2015/lib/elements/projects/controls/tabs/general/forms/base-form-test/base-form-test.component.js +6 -6
- package/esm2015/lib/elements/projects/controls/tabs/general/forms/project-details/project-details.component.js +7 -7
- package/esm2015/lib/elements/projects/controls/tabs/general/forms/root-directory/root-directory.component.js +7 -7
- package/esm2015/lib/elements/projects/controls/tabs/general/general.component.js +1 -1
- package/esm2015/lib/elements/projects/projects.component.js +144 -18
- package/esm2015/lib/services/applications-flow-events.service.js +83 -0
- package/esm2015/lib/services/applications-flow.service.js +1 -11
- package/esm2015/lib/services/project.service.js +9 -9
- package/esm2015/lowcodeunit-applications-flow-common.js +17 -33
- package/fesm2015/lowcodeunit-applications-flow-common.js +297 -1866
- package/fesm2015/lowcodeunit-applications-flow-common.js.map +1 -1
- package/lcu.api.d.ts +0 -2
- package/lcu.api.d.ts.map +1 -1
- package/lib/applications-flow.module.d.ts.map +1 -1
- package/lib/elements/base-form/base-form.component.d.ts +3 -3
- package/lib/elements/base-form/base-form.component.d.ts.map +1 -1
- package/lib/elements/projects/controls/builds/builds.component.d.ts +3 -1
- package/lib/elements/projects/controls/builds/builds.component.d.ts.map +1 -1
- package/lib/elements/projects/controls/create-project-wizard/create-project-wizard.component.d.ts +3 -3
- package/lib/elements/projects/controls/create-project-wizard/create-project-wizard.component.d.ts.map +1 -1
- package/lib/elements/projects/controls/forms/source-control/source-control.component.d.ts +3 -1
- package/lib/elements/projects/controls/forms/source-control/source-control.component.d.ts.map +1 -1
- package/lib/elements/projects/controls/header/header.component.d.ts +3 -3
- package/lib/elements/projects/controls/header/header.component.d.ts.map +1 -1
- package/lib/elements/projects/controls/hosting-details-form-group/hosting-details-form-group.component.d.ts.map +1 -1
- package/lib/elements/projects/controls/project-items/project-items.component.d.ts +3 -3
- package/lib/elements/projects/controls/project-items/project-items.component.d.ts.map +1 -1
- package/lib/elements/projects/controls/tabs/apps-flow/apps-flow.component.d.ts +3 -3
- package/lib/elements/projects/controls/tabs/apps-flow/apps-flow.component.d.ts.map +1 -1
- package/lib/elements/projects/controls/tabs/devops/devops.component.d.ts +3 -3
- package/lib/elements/projects/controls/tabs/devops/devops.component.d.ts.map +1 -1
- package/lib/elements/projects/controls/tabs/dfs-modifiers/dfs-modifiers.component.d.ts +3 -3
- package/lib/elements/projects/controls/tabs/dfs-modifiers/dfs-modifiers.component.d.ts.map +1 -1
- package/lib/elements/projects/controls/tabs/domains/domains.component.d.ts +3 -3
- package/lib/elements/projects/controls/tabs/domains/domains.component.d.ts.map +1 -1
- package/lib/elements/projects/controls/tabs/general/forms/base-form-test/base-form-test.component.d.ts +3 -3
- package/lib/elements/projects/controls/tabs/general/forms/base-form-test/base-form-test.component.d.ts.map +1 -1
- package/lib/elements/projects/controls/tabs/general/forms/project-details/project-details.component.d.ts +3 -3
- package/lib/elements/projects/controls/tabs/general/forms/project-details/project-details.component.d.ts.map +1 -1
- package/lib/elements/projects/controls/tabs/general/forms/root-directory/root-directory.component.d.ts +3 -3
- package/lib/elements/projects/controls/tabs/general/forms/root-directory/root-directory.component.d.ts.map +1 -1
- package/lib/elements/projects/projects.component.d.ts +11 -4
- package/lib/elements/projects/projects.component.d.ts.map +1 -1
- package/lib/services/applications-flow-events.service.d.ts +58 -0
- package/lib/services/applications-flow-events.service.d.ts.map +1 -0
- package/lib/services/applications-flow.service.d.ts +0 -2
- package/lib/services/applications-flow.service.d.ts.map +1 -1
- package/lib/services/project.service.d.ts +1 -1
- package/lib/services/project.service.d.ts.map +1 -1
- package/lowcodeunit-applications-flow-common.d.ts +16 -32
- package/lowcodeunit-applications-flow-common.d.ts.map +1 -1
- package/lowcodeunit-applications-flow-common.metadata.json +1 -1
- package/package.json +1 -1
- package/esm2015/lib/controls/build-pipeline-form/build-pipeline-form.component.js +0 -229
- package/esm2015/lib/controls/devops-source-control-form/devops-source-control-form.component.js +0 -412
- package/esm2015/lib/controls/edit-application-form/edit-application-form.component.js +0 -60
- package/esm2015/lib/controls/processor-details-form/processor-details-form.component.js +0 -321
- package/esm2015/lib/controls/security-toggle/security-toggle.component.js +0 -50
- package/esm2015/lib/controls/source-control-form/source-control-form.component.js +0 -61
- package/esm2015/lib/dialogs/build-pipeline-dialog/build-pipeline-dialog.component.js +0 -25
- package/esm2015/lib/dialogs/source-control-dialog/source-control-dialog.component.js +0 -25
- package/esm2015/lib/elements/analytics-card/analytics-card.component.js +0 -21
- package/esm2015/lib/elements/card-carousel/card-carousel.component.js +0 -67
- package/esm2015/lib/elements/column-info-card/column-info-card.component.js +0 -31
- package/esm2015/lib/elements/feed-card-sm/feed-card-sm.component.js +0 -31
- package/esm2015/lib/elements/gh-control/gh-control.component.js +0 -72
- package/esm2015/lib/elements/main-feed-card/main-feed-card.component.js +0 -24
- package/esm2015/lib/elements/project-info-card/project-info-card.component.js +0 -32
- package/esm2015/lib/elements/slotted-card/slotted-card.component.js +0 -29
- package/esm2015/lib/elements/three-column/three-column.component.js +0 -32
- package/esm2015/lib/elements/two-column-header/two-column-header.component.js +0 -15
- package/esm2015/lib/models/card-slot.model.js +0 -3
- package/esm2015/lib/models/slot-action.model.js +0 -3
- package/esm2015/lib/services/eac.service.js +0 -218
- package/lib/controls/build-pipeline-form/build-pipeline-form.component.d.ts +0 -43
- package/lib/controls/build-pipeline-form/build-pipeline-form.component.d.ts.map +0 -1
- package/lib/controls/devops-source-control-form/devops-source-control-form.component.d.ts +0 -81
- package/lib/controls/devops-source-control-form/devops-source-control-form.component.d.ts.map +0 -1
- package/lib/controls/edit-application-form/edit-application-form.component.d.ts +0 -17
- package/lib/controls/edit-application-form/edit-application-form.component.d.ts.map +0 -1
- package/lib/controls/processor-details-form/processor-details-form.component.d.ts +0 -65
- package/lib/controls/processor-details-form/processor-details-form.component.d.ts.map +0 -1
- package/lib/controls/security-toggle/security-toggle.component.d.ts +0 -18
- package/lib/controls/security-toggle/security-toggle.component.d.ts.map +0 -1
- package/lib/controls/source-control-form/source-control-form.component.d.ts +0 -25
- package/lib/controls/source-control-form/source-control-form.component.d.ts.map +0 -1
- package/lib/dialogs/build-pipeline-dialog/build-pipeline-dialog.component.d.ts +0 -17
- package/lib/dialogs/build-pipeline-dialog/build-pipeline-dialog.component.d.ts.map +0 -1
- package/lib/dialogs/source-control-dialog/source-control-dialog.component.d.ts +0 -16
- package/lib/dialogs/source-control-dialog/source-control-dialog.component.d.ts.map +0 -1
- package/lib/elements/analytics-card/analytics-card.component.d.ts +0 -9
- package/lib/elements/analytics-card/analytics-card.component.d.ts.map +0 -1
- package/lib/elements/card-carousel/card-carousel.component.d.ts +0 -14
- package/lib/elements/card-carousel/card-carousel.component.d.ts.map +0 -1
- package/lib/elements/column-info-card/column-info-card.component.d.ts +0 -18
- package/lib/elements/column-info-card/column-info-card.component.d.ts.map +0 -1
- package/lib/elements/feed-card-sm/feed-card-sm.component.d.ts +0 -12
- package/lib/elements/feed-card-sm/feed-card-sm.component.d.ts.map +0 -1
- package/lib/elements/gh-control/gh-control.component.d.ts +0 -17
- package/lib/elements/gh-control/gh-control.component.d.ts.map +0 -1
- package/lib/elements/main-feed-card/main-feed-card.component.d.ts +0 -11
- package/lib/elements/main-feed-card/main-feed-card.component.d.ts.map +0 -1
- package/lib/elements/project-info-card/project-info-card.component.d.ts +0 -14
- package/lib/elements/project-info-card/project-info-card.component.d.ts.map +0 -1
- package/lib/elements/slotted-card/slotted-card.component.d.ts +0 -14
- package/lib/elements/slotted-card/slotted-card.component.d.ts.map +0 -1
- package/lib/elements/three-column/three-column.component.d.ts +0 -9
- package/lib/elements/three-column/three-column.component.d.ts.map +0 -1
- package/lib/elements/two-column-header/two-column-header.component.d.ts +0 -6
- package/lib/elements/two-column-header/two-column-header.component.d.ts.map +0 -1
- package/lib/models/card-slot.model.d.ts +0 -8
- package/lib/models/card-slot.model.d.ts.map +0 -1
- package/lib/models/slot-action.model.d.ts +0 -9
- package/lib/models/slot-action.model.d.ts.map +0 -1
- package/lib/services/eac.service.d.ts +0 -54
- package/lib/services/eac.service.d.ts.map +0 -1
package/package.json
CHANGED
|
@@ -1,229 +0,0 @@
|
|
|
1
|
-
import { Component, Input } from '@angular/core';
|
|
2
|
-
import { FormBuilder, Validators } from '@angular/forms';
|
|
3
|
-
import { Guid } from '@lcu/common';
|
|
4
|
-
import { ApplicationsFlowService } from '../../services/applications-flow.service';
|
|
5
|
-
import { EaCService } from '../../services/eac.service';
|
|
6
|
-
import { ProjectHostingDetails } from '../../state/applications-flow.state';
|
|
7
|
-
export class BuildPipelineFormComponent {
|
|
8
|
-
constructor(eacSvc, formBuilder, appsFlowSvc) {
|
|
9
|
-
this.eacSvc = eacSvc;
|
|
10
|
-
this.formBuilder = formBuilder;
|
|
11
|
-
this.appsFlowSvc = appsFlowSvc;
|
|
12
|
-
this.HostingDetails = new ProjectHostingDetails();
|
|
13
|
-
}
|
|
14
|
-
// @Input('main-branch')
|
|
15
|
-
// public MainBranch: string;
|
|
16
|
-
// @Input('organization')
|
|
17
|
-
// public Organization: string;
|
|
18
|
-
// @Input('repository')
|
|
19
|
-
// public Repository: string;
|
|
20
|
-
get Artifact() {
|
|
21
|
-
var _a, _b;
|
|
22
|
-
// console.log("ARTIFACT: ", this.Environment?.Artifacts[this.ArtifactLookup]);
|
|
23
|
-
return ((_a = this.Environment) === null || _a === void 0 ? void 0 : _a.Artifacts) && this.ArtifactLookup
|
|
24
|
-
? ((_b = this.Environment) === null || _b === void 0 ? void 0 : _b.Artifacts[this.ArtifactLookup]) || {}
|
|
25
|
-
: {};
|
|
26
|
-
}
|
|
27
|
-
get ArtifactLookup() {
|
|
28
|
-
var _a, _b;
|
|
29
|
-
const artLookup = ((_a = this.DevOpsAction) === null || _a === void 0 ? void 0 : _a.ArtifactLookups) ? (_b = this.DevOpsAction) === null || _b === void 0 ? void 0 : _b.ArtifactLookups[0] : null;
|
|
30
|
-
return artLookup;
|
|
31
|
-
}
|
|
32
|
-
get BuildPipelineFormControl() {
|
|
33
|
-
var _a;
|
|
34
|
-
return (_a = this.BuildPipelineFormGroup) === null || _a === void 0 ? void 0 : _a.controls.buildPipeline;
|
|
35
|
-
}
|
|
36
|
-
get DevOpsAction() {
|
|
37
|
-
return this.Environment.DevOpsActions && this.DevOpsActionLookup
|
|
38
|
-
? this.Environment.DevOpsActions[this.DevOpsActionLookup] || {}
|
|
39
|
-
: {};
|
|
40
|
-
}
|
|
41
|
-
get DevOpsActions() {
|
|
42
|
-
return this.Environment.DevOpsActions || {};
|
|
43
|
-
}
|
|
44
|
-
get DevOpsActionNameFormControl() {
|
|
45
|
-
return this.BuildPipelineFormGroup.get('devOpsActionName');
|
|
46
|
-
}
|
|
47
|
-
get NPMTokenFormControl() {
|
|
48
|
-
return this.BuildPipelineFormGroup.get('npmToken');
|
|
49
|
-
}
|
|
50
|
-
// (ho) => ho.Lookup === this.BuildPipeline
|
|
51
|
-
get SelectedHostingOption() {
|
|
52
|
-
var _a, _b;
|
|
53
|
-
return (_b = (_a = this.HostingDetails) === null || _a === void 0 ? void 0 : _a.HostingOptions) === null || _b === void 0 ? void 0 : _b.find((ho) => ho.Lookup === this.BuildPipeline);
|
|
54
|
-
}
|
|
55
|
-
get SelectedHostingOptionInputControlValues() {
|
|
56
|
-
var _a, _b;
|
|
57
|
-
return (_b = (_a = this.SelectedHostingOption) === null || _a === void 0 ? void 0 : _a.Inputs) === null || _b === void 0 ? void 0 : _b.reduce((prev, cur) => {
|
|
58
|
-
const res = Object.assign({}, prev);
|
|
59
|
-
res[cur.Lookup] = this.BuildPipelineFormGroup.controls[cur.Lookup].value;
|
|
60
|
-
return res;
|
|
61
|
-
}, {});
|
|
62
|
-
}
|
|
63
|
-
get SourceControlLookups() {
|
|
64
|
-
return Object.keys(this.SourceControls || {});
|
|
65
|
-
}
|
|
66
|
-
get SourceControls() {
|
|
67
|
-
return this.Environment.Sources || {};
|
|
68
|
-
}
|
|
69
|
-
ngOnInit() {
|
|
70
|
-
this.BuildPipelineFormGroup = this.formBuilder.group({});
|
|
71
|
-
if (this.BuildPipelineFormGroup != null) {
|
|
72
|
-
this.BuildPipelineFormGroup.removeControl('hostingDetails');
|
|
73
|
-
}
|
|
74
|
-
this.BuildPipelineFormGroup.addControl('hostingDetails', this.formBuilder.group({
|
|
75
|
-
buildPipeline: [this.BuildPipeline, [Validators.required]],
|
|
76
|
-
}));
|
|
77
|
-
this.loadProjectHostingDetails();
|
|
78
|
-
}
|
|
79
|
-
//API METHODS
|
|
80
|
-
BuildPipelineChanged() {
|
|
81
|
-
var _a, _b;
|
|
82
|
-
console.log("build pipeline value: ", (_a = this.BuildPipelineFormControl) === null || _a === void 0 ? void 0 : _a.value);
|
|
83
|
-
this.BuildPipeline = (_b = this.BuildPipelineFormControl) === null || _b === void 0 ? void 0 : _b.value;
|
|
84
|
-
this.setupControlsForForm();
|
|
85
|
-
}
|
|
86
|
-
SubmitBuildPipeline() {
|
|
87
|
-
console.log("submitting build pipeline: ", this.BuildPipelineFormGroup.value);
|
|
88
|
-
this.SaveEnvironment();
|
|
89
|
-
}
|
|
90
|
-
SaveEnvironment() {
|
|
91
|
-
var _a;
|
|
92
|
-
const saveEnvReq = {
|
|
93
|
-
Environment: Object.assign(Object.assign({}, this.Environment), { Artifacts: this.Environment.Artifacts || {}, DevOpsActions: this.Environment.DevOpsActions || {}, Secrets: this.Environment.Secrets || {}, Sources: this.Environment.Sources || {} }),
|
|
94
|
-
EnvironmentLookup: this.EnvironmentLookup,
|
|
95
|
-
EnterpriseDataTokens: {},
|
|
96
|
-
};
|
|
97
|
-
let artifactLookup;
|
|
98
|
-
let artifact = Object.assign(Object.assign({}, this.Artifact), this.SelectedHostingOptionInputControlValues);
|
|
99
|
-
if (!this.ArtifactLookup) {
|
|
100
|
-
artifactLookup = Guid.CreateRaw();
|
|
101
|
-
artifact = Object.assign(Object.assign({}, artifact), { Type: this.SelectedHostingOption
|
|
102
|
-
.ArtifactType, Name: this.SelectedHostingOption.Name, NPMRegistry: 'https://registry.npmjs.org/' });
|
|
103
|
-
}
|
|
104
|
-
else {
|
|
105
|
-
artifactLookup = this.ArtifactLookup;
|
|
106
|
-
}
|
|
107
|
-
saveEnvReq.Environment.Artifacts[artifactLookup] = artifact;
|
|
108
|
-
let devOpsActionLookup;
|
|
109
|
-
if (!this.DevOpsActionLookup) {
|
|
110
|
-
devOpsActionLookup = Guid.CreateRaw();
|
|
111
|
-
const doa = Object.assign(Object.assign({}, this.DevOpsAction), { ArtifactLookups: [artifactLookup], Name: this.DevOpsActionNameFormControl.value, Path: this.SelectedHostingOption.Path, Templates: this.SelectedHostingOption.Templates });
|
|
112
|
-
if ((_a = this.NPMTokenFormControl) === null || _a === void 0 ? void 0 : _a.value) {
|
|
113
|
-
const secretLookup = 'npm-access-token';
|
|
114
|
-
doa.SecretLookups = [secretLookup];
|
|
115
|
-
saveEnvReq.Environment.Secrets[secretLookup] = {
|
|
116
|
-
Name: 'NPM Access Token',
|
|
117
|
-
DataTokenLookup: secretLookup,
|
|
118
|
-
KnownAs: 'NPM_TOKEN',
|
|
119
|
-
};
|
|
120
|
-
saveEnvReq.EnterpriseDataTokens[secretLookup] = {
|
|
121
|
-
Name: saveEnvReq.Environment.Secrets[secretLookup].Name,
|
|
122
|
-
Description: saveEnvReq.Environment.Secrets[secretLookup].Name,
|
|
123
|
-
Value: this.NPMTokenFormControl.value,
|
|
124
|
-
};
|
|
125
|
-
}
|
|
126
|
-
saveEnvReq.Environment.DevOpsActions[devOpsActionLookup] = doa;
|
|
127
|
-
}
|
|
128
|
-
else {
|
|
129
|
-
devOpsActionLookup = this.DevOpsActionLookup;
|
|
130
|
-
const doa = Object.assign(Object.assign({}, this.DevOpsAction), { Name: this.DevOpsActionNameFormControl.value });
|
|
131
|
-
saveEnvReq.Environment.DevOpsActions[devOpsActionLookup] = doa;
|
|
132
|
-
}
|
|
133
|
-
// let source: EaCSourceControl = {
|
|
134
|
-
// ...this.EditingSourceControl,
|
|
135
|
-
// Branches: this.EditingSourceControl.SelectedBranches,
|
|
136
|
-
// MainBranch: this.EditingSourceControl.MainBranchFormControl.value,
|
|
137
|
-
// };
|
|
138
|
-
// source = {
|
|
139
|
-
// ...source,
|
|
140
|
-
// Type: 'GitHub',
|
|
141
|
-
// Name: this.EditingSourceControlLookup,
|
|
142
|
-
// DevOpsActionTriggerLookups: [devOpsActionLookup],
|
|
143
|
-
// Organization:
|
|
144
|
-
// this.EditingSourceControl.OrganizationFormControl.value,
|
|
145
|
-
// Repository: this.EditingSourceControl.RepositoryFormControl.value,
|
|
146
|
-
// };
|
|
147
|
-
// const scLookup = `github://${source.Organization}/${source.Repository}`;
|
|
148
|
-
// saveEnvReq.Environment.Sources[scLookup] = source;
|
|
149
|
-
this.eacSvc.SaveEnvironmentAsCode(saveEnvReq);
|
|
150
|
-
}
|
|
151
|
-
// Helpers
|
|
152
|
-
setupControlsForForm() {
|
|
153
|
-
var _a, _b, _c, _d, _e, _f;
|
|
154
|
-
for (const ctrlName in this.BuildPipelineFormGroup.controls) {
|
|
155
|
-
//devOpsAction doesn't exist
|
|
156
|
-
//removes hosting details
|
|
157
|
-
if (ctrlName !== 'buildPipeline' && ctrlName !== 'devOpsAction') {
|
|
158
|
-
console.log("removing control: ", ctrlName);
|
|
159
|
-
this.BuildPipelineFormGroup.removeControl(ctrlName);
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
this.BuildPipelineFormGroup.addControl('devOpsActionName', this.formBuilder.control(((_a = this.DevOpsAction) === null || _a === void 0 ? void 0 : _a.Name) || ((_b = this.SelectedHostingOption) === null || _b === void 0 ? void 0 : _b.Name) || '', [Validators.required]));
|
|
163
|
-
(_d = (_c = this.SelectedHostingOption) === null || _c === void 0 ? void 0 : _c.Inputs) === null || _d === void 0 ? void 0 : _d.forEach((input) => {
|
|
164
|
-
const validators = input.Required ? [Validators.required] : [];
|
|
165
|
-
this.BuildPipelineFormGroup.addControl(input.Lookup, this.formBuilder.control(this.Artifact[input.Lookup] || input.DefaultValue || '', validators));
|
|
166
|
-
// if (this.Disabled) {
|
|
167
|
-
// this.FormGroup.controls[input.Lookup].disable();
|
|
168
|
-
// }
|
|
169
|
-
});
|
|
170
|
-
if (((_e = this.BuildPipelineFormControl) === null || _e === void 0 ? void 0 : _e.value) === 'npm-release') {
|
|
171
|
-
if (!this.BuildPipelineFormGroup.controls.npmToken) {
|
|
172
|
-
this.BuildPipelineFormGroup.addControl('npmToken', this.formBuilder.control('', this.Disabled ? [] : [Validators.required]));
|
|
173
|
-
if (this.Disabled) {
|
|
174
|
-
this.BuildPipelineFormGroup.controls.npmToken.disable();
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
else if (((_f = this.BuildPipelineFormControl) === null || _f === void 0 ? void 0 : _f.value) === 'github-artifacts-release') {
|
|
179
|
-
if (this.BuildPipelineFormGroup.controls.npmToken) {
|
|
180
|
-
this.BuildPipelineFormGroup.removeControl('npmToken');
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
loadProjectHostingDetails() {
|
|
185
|
-
this.HostingDetails.Loading = true;
|
|
186
|
-
// this.Organization,
|
|
187
|
-
// this.Repository,
|
|
188
|
-
// this.MainBranch
|
|
189
|
-
// "powhound4",
|
|
190
|
-
// "RedwoodCrystals",
|
|
191
|
-
// "master"
|
|
192
|
-
this.appsFlowSvc
|
|
193
|
-
.NewLoadProjectHostingDetails()
|
|
194
|
-
.subscribe((response) => {
|
|
195
|
-
var _a, _b, _c;
|
|
196
|
-
this.HostingDetails = response.Model;
|
|
197
|
-
console.log("response: ", response);
|
|
198
|
-
this.HostingDetails.Loading = false;
|
|
199
|
-
this.BuildPipeline =
|
|
200
|
-
((_a = this.HostingDetails) === null || _a === void 0 ? void 0 : _a.HostingOptions) ? (_c = (_b = this.HostingDetails) === null || _b === void 0 ? void 0 : _b.HostingOptions[0]) === null || _c === void 0 ? void 0 : _c.Lookup : '';
|
|
201
|
-
console.log("Build Pipeline HERE= ", this.BuildPipeline);
|
|
202
|
-
this.setupControlsForForm();
|
|
203
|
-
}, (err) => {
|
|
204
|
-
console.log("ERR: ", err);
|
|
205
|
-
this.HostingDetails.Loading = false;
|
|
206
|
-
});
|
|
207
|
-
console.log("HOSTING DETAILS: ", this.HostingDetails);
|
|
208
|
-
}
|
|
209
|
-
}
|
|
210
|
-
BuildPipelineFormComponent.decorators = [
|
|
211
|
-
{ type: Component, args: [{
|
|
212
|
-
selector: 'lcu-build-pipeline-form',
|
|
213
|
-
template: "<form class=\"form-card\" [formGroup]=\"BuildPipelineFormGroup\" (ngSubmit)=\"SubmitBuildPipeline()\">\n <mat-card\n class=\"spread\" \n >\n <mat-card-header>\n <mat-card-title> Build Pipeline </mat-card-title>\n\n <mat-hint>\n Changes made here are reflected for all sources using this\n DevOpsAction\n </mat-hint>\n </mat-card-header>\n\n <mat-card-content>\n\n <ng-container>\n\n <div *ngIf=\"!HostingDetails?.Loading\">\n <mat-form-field class=\"mat-full-width\">\n <mat-select\n formControlName=\"buildPipeline\"\n placeholder=\"Build Pipeline\"\n [disabled]=\"Disabled\"\n (selectionChange)=\"BuildPipelineChanged()\"\n required\n >\n <ng-container\n *ngFor=\"let hostOption of HostingDetails?.HostingOptions; let i = index\"\n >\n <mat-option [value]=\"hostOption?.Lookup\">\n {{ hostOption.Name }}\n </mat-option>\n </ng-container>\n </mat-select>\n \n <mat-hint>\n <ng-container *ngFor=\"let hostOption of HostingDetails?.HostingOptions\">\n <span *ngIf=\"BuildPipeline == hostOption?.Lookup\">\n {{ hostOption.Description }}\n </span>\n </ng-container>\n </mat-hint>\n </mat-form-field>\n \n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n formControlName=\"devOpsActionName\"\n placeholder=\"Name of DevOps Action\"\n required=\"true\"\n />\n </mat-form-field>\n \n <ng-container *ngFor=\"let input of SelectedHostingOption?.Inputs\">\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n [formControlName]=\"input.Lookup\"\n [placeholder]=\"input.Placeholder\"\n [required]=\"input.Required\"\n />\n \n <mat-hint>{{ input.Hint }}</mat-hint>\n </mat-form-field>\n </ng-container>\n \n <div *ngIf=\"BuildPipeline == 'npm-release'\">\n <mat-form-field class=\"mat-full-width with-hint padding-bottom-4\">\n <mat-icon matPrefix>security</mat-icon>\n \n <input\n id=\"npm-token\"\n matInput\n type=\"text\"\n formControlName=\"npmToken\"\n placeholder=\"NPM token\"\n [required]=\"!Disabled\"\n style=\"-webkit-text-security: disc;\"\n />\n <mat-hint>\n Securely publish to NPM, provide an NPM Personal Access Token (PAT) with publish access to the organization used for your NPM packages. \n Learn how to create and view access tokens \n <a\n href=\"https://docs.npmjs.com/creating-and-viewing-access-tokens\"\n target=\"_blank\"\n >\n here.\n </a>\n </mat-hint>\n </mat-form-field>\n </div>\n </div>\n \n <div *ngIf=\"HostingDetails?.Loading\">\n <div class=\"spread\">\n <lcu-loader style=\"margin: auto\" [loading]=\"true\"></lcu-loader>\n \n <div class=\"margin-3\">\n <h4 class=\"mat-title\">Loading hosting details</h4>\n </div>\n </div>\n </div>\n </ng-container>\n </mat-card-content>\n <mat-card-actions fxLayoutAlign=\"center center\">\n\n <button \n mat-raised-button \n type=\"submit\" \n fxFlex=\"100%\" \n color=\"primary\" \n [disabled]=\"!BuildPipelineFormGroup.valid || !BuildPipelineFormGroup.dirty\">\n <mat-icon>save</mat-icon>\n Save Build Pipeline\n </button>\n \n </mat-card-actions>\n </mat-card>\n</form>\n",
|
|
214
|
-
styles: [""]
|
|
215
|
-
},] }
|
|
216
|
-
];
|
|
217
|
-
BuildPipelineFormComponent.ctorParameters = () => [
|
|
218
|
-
{ type: EaCService },
|
|
219
|
-
{ type: FormBuilder },
|
|
220
|
-
{ type: ApplicationsFlowService }
|
|
221
|
-
];
|
|
222
|
-
BuildPipelineFormComponent.propDecorators = {
|
|
223
|
-
BuildPipeline: [{ type: Input, args: ['build-pipeline',] }],
|
|
224
|
-
DevOpsActionLookup: [{ type: Input, args: ['devops-action-lookup',] }],
|
|
225
|
-
Disabled: [{ type: Input, args: ['disabled',] }],
|
|
226
|
-
Environment: [{ type: Input, args: ['environment',] }],
|
|
227
|
-
EnvironmentLookup: [{ type: Input, args: ['environment-lookup',] }]
|
|
228
|
-
};
|
|
229
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQtcGlwZWxpbmUtZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiL2hvbWUvcnVubmVyL3dvcmsvYXBwbGljYXRpb25zLWZsb3cvYXBwbGljYXRpb25zLWZsb3cvcHJvamVjdHMvY29tbW9uL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9jb250cm9scy9idWlsZC1waXBlbGluZS1mb3JtL2J1aWxkLXBpcGVsaW5lLWZvcm0uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQTRCLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUNuRixPQUFPLEVBQW1CLFdBQVcsRUFBYSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRixPQUFPLEVBQXVCLElBQUksRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUV4RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUNuRixPQUFPLEVBQUUsVUFBVSxFQUFxQyxNQUFNLDRCQUE0QixDQUFDO0FBQzNGLE9BQU8sRUFBRSxxQkFBcUIsRUFBd0IsTUFBTSxxQ0FBcUMsQ0FBQztBQU9sRyxNQUFNLE9BQU8sMEJBQTBCO0lBc0hyQyxZQUFzQixNQUFrQixFQUM1QixXQUF3QixFQUN4QixXQUFvQztRQUYxQixXQUFNLEdBQU4sTUFBTSxDQUFZO1FBQzVCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLGdCQUFXLEdBQVgsV0FBVyxDQUF5QjtRQUM5QyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUkscUJBQXFCLEVBQUUsQ0FBQztJQUNwRCxDQUFDO0lBbkdELHdCQUF3QjtJQUN4Qiw2QkFBNkI7SUFFN0IseUJBQXlCO0lBQ3pCLCtCQUErQjtJQUUvQix1QkFBdUI7SUFDdkIsNkJBQTZCO0lBRzdCLElBQVcsUUFBUTs7UUFDakIsK0VBQStFO1FBQy9FLE9BQU8sT0FBQSxJQUFJLENBQUMsV0FBVywwQ0FBRSxTQUFTLEtBQUksSUFBSSxDQUFD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QUFDLHVCQUF1QixFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUV6RCxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUU5QixDQUFDLEVBQ0QsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUVOLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQzFCLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUV0QyxDQUFDLENBQ0YsQ0FBQztRQUNKLE9BQU8sQ0FBQyxHQUFHLENBQUMsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBRXhELENBQUM7OztZQXpXRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLHlCQUF5QjtnQkFDbkMsd21JQUFtRDs7YUFFcEQ7OztZQVBRLFVBQVU7WUFKTyxXQUFXO1lBRzVCLHVCQUF1Qjs7OzRCQWM3QixLQUFLLFNBQUMsZ0JBQWdCO2lDQU10QixLQUFLLFNBQUMsc0JBQXNCO3VCQUc1QixLQUFLLFNBQUMsVUFBVTswQkFHaEIsS0FBSyxTQUFDLGFBQWE7Z0NBR25CLEtBQUssU0FBQyxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlciwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQmFzZU1vZGVsZWRSZXNwb25zZSwgR3VpZCB9IGZyb20gJ0BsY3UvY29tbW9uJztcbmltcG9ydCB7IEVhQ0FydGlmYWN0LCBFYUNEZXZPcHNBY3Rpb24sIEVhQ0Vudmlyb25tZW50QXNDb2RlLCBFYUNTb3VyY2VDb250cm9sIH0gZnJvbSAnQHNlbWFudGljanMvY29tbW9uJztcbmltcG9ydCB7IEFwcGxpY2F0aW9uc0Zsb3dTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYXBwbGljYXRpb25zLWZsb3cuc2VydmljZSc7XG5pbXBvcnQgeyBFYUNTZXJ2aWNlLCBTYXZlRW52aXJvbm1lbnRBc0NvZGVFdmVudFJlcXVlc3QgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9lYWMuc2VydmljZSc7XG5pbXBvcnQgeyBQcm9qZWN0SG9zdGluZ0RldGFpbHMsIFByb2plY3RIb3N0aW5nT3B0aW9uIH0gZnJvbSAnLi4vLi4vc3RhdGUvYXBwbGljYXRpb25zLWZsb3cuc3RhdGUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsY3UtYnVpbGQtcGlwZWxpbmUtZm9ybScsXG4gIHRlbXBsYXRlVXJsOiAnLi9idWlsZC1waXBlbGluZS1mb3JtLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYnVpbGQtcGlwZWxpbmUtZm9ybS5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIEJ1aWxkUGlwZWxpbmVGb3JtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuXG4gIC8vUFJPUEVSVElFU1xuXG4gIEBJbnB1dCgnYnVpbGQtcGlwZWxpbmUnKVxuICBwdWJsaWMgQnVpbGRQaXBlbGluZTogc3RyaW5nO1xuXG4gIC8vIEBJbnB1dCgnZGV0YWlscycpXG4gIC8vIHB1YmxpYyBEZXRhaWxzOiBQcm9qZWN0SG9zdGluZ0RldGFpbHM7XG5cbiAgQElucHV0KCdkZXZvcHMtYWN0aW9uLWxvb2t1cCcpXG4gIHB1YmxpYyBEZXZPcHNBY3Rpb25Mb29rdXA6IHN0cmluZztcblxuICBASW5wdXQoJ2Rpc2FibGVkJylcbiAgcHVibGljIERpc2FibGVkOiBib29sZWFuO1xuXG4gIEBJbnB1dCgnZW52aXJvbm1lbnQnKVxuICBwdWJsaWMgRW52aXJvbm1lbnQ6IEVhQ0Vudmlyb25tZW50QXNDb2RlO1xuXG4gIEBJbnB1dCgnZW52aXJvbm1lbnQtbG9va3VwJylcbiAgcHVibGljIEVudmlyb25tZW50TG9va3VwOiBzdHJpbmc7XG5cbiAgLy8gQElucHV0KCdtYWluLWJyYW5jaCcpXG4gIC8vIHB1YmxpYyBNYWluQnJhbmNoOiBzdHJpbmc7XG5cbiAgLy8gQElucHV0KCdvcmdhbml6YXRpb24nKVxuICAvLyBwdWJsaWMgT3JnYW5pemF0aW9uOiBzdHJpbmc7XG5cbiAgLy8gQElucHV0KCdyZXBvc2l0b3J5JylcbiAgLy8gcHVibGljIFJlcG9zaXRvcnk6IHN0cmluZztcblxuXG4gIHB1YmxpYyBnZXQgQXJ0aWZhY3QoKTogRWFDQXJ0aWZhY3Qge1xuICAgIC8vIGNvbnNvbGUubG9nKFwiQVJUSUZBQ1Q6IFwiLCB0aGlzLkVudmlyb25tZW50Py5BcnRpZmFjdHNbdGhpcy5BcnRpZmFjdExvb2t1cF0pO1xuICAgIHJldHVybiB0aGlzLkVudmlyb25tZW50Py5BcnRpZmFjdHMgJiYgdGhpcy5BcnRpZmFjdExvb2t1cFxuICAgICAgPyB0aGlzLkVudmlyb25tZW50Py5BcnRpZmFjdHNbdGhpcy5BcnRpZmFjdExvb2t1cF0gfHwge31cbiAgICAgIDoge307XG4gIH1cblxuICBwdWJsaWMgZ2V0IEFydGlmYWN0TG9va3VwKCk6IHN0cmluZyB7XG4gICAgY29uc3QgYXJ0TG9va3VwID0gdGhpcy5EZXZPcHNBY3Rpb24/LkFydGlmYWN0TG9va3Vwc1xuICAgICAgPyB0aGlzLkRldk9wc0FjdGlvbj8uQXJ0aWZhY3RMb29rdXBzWzBdXG4gICAgICA6IG51bGw7XG5cbiAgICByZXR1cm4gYXJ0TG9va3VwO1xuICB9XG5cbiAgcHVibGljIGdldCBCdWlsZFBpcGVsaW5lRm9ybUNvbnRyb2woKTogQWJzdHJhY3RDb250cm9sIHtcblxuICAgIHJldHVybiB0aGlzLkJ1aWxkUGlwZWxpbmVGb3JtR3JvdXA/LmNvbnRyb2xzLmJ1aWxkUGlwZWxpbmU7XG4gIH1cblxuICBwdWJsaWMgQnVpbGRQaXBlbGluZUZvcm1Hcm91cDogRm9ybUdyb3VwO1xuXG4gIHB1YmxpYyBnZXQgRGV2T3BzQWN0aW9uKCk6IEVhQ0Rldk9wc0FjdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuRW52aXJvbm1lbnQuRGV2T3BzQWN0aW9ucyAmJiB0aGlzLkRldk9wc0FjdGlvbkxvb2t1cFxuICAgICAgPyB0aGlzLkVudmlyb25tZW50LkRldk9wc0FjdGlvbnNbdGhpcy5EZXZPcHNBY3Rpb25Mb29rdXBdIHx8IHt9XG4gICAgICA6IHt9O1xuICB9XG5cbiAgcHVibGljIGdldCBEZXZPcHNBY3Rpb25zKCk6IHsgW2xvb2t1cDogc3RyaW5nXTogRWFDRGV2T3BzQWN0aW9uIH0ge1xuICAgIHJldHVybiB0aGlzLkVudmlyb25tZW50LkRldk9wc0FjdGlvbnMgfHwge307XG4gIH1cblxuICBwdWJsaWMgZ2V0IERldk9wc0FjdGlvbk5hbWVGb3JtQ29udHJvbCgpOiBBYnN0cmFjdENvbnRyb2wge1xuICAgIHJldHVybiB0aGlzLkJ1aWxkUGlwZWxpbmVGb3JtR3JvdXAuZ2V0KCdkZXZPcHNBY3Rpb25OYW1lJyk7XG4gIH1cblxuICAvLyBwdWJsaWMgZ2V0IEVkaXRpbmdTb3VyY2VDb250cm9sKCk6IEVhQ1NvdXJjZUNvbnRyb2wge1xuICAvLyAgIGxldCBzYyA9IHRoaXMuRW52aXJvbm1lbnQ/LlNvdXJjZXNcbiAgLy8gICAgID8gdGhpcy5FbnZpcm9ubWVudD8uU291cmNlc1t0aGlzLkVkaXRpbmdTb3VyY2VDb250cm9sTG9va3VwXVxuICAvLyAgICAgOiBudWxsO1xuXG4gIC8vICAgaWYgKHNjID09IG51bGwgJiYgdGhpcy5FZGl0aW5nU291cmNlQ29udHJvbExvb2t1cCkge1xuICAvLyAgICAgc2MgPSB7fTtcbiAgLy8gICB9XG5cbiAgLy8gICByZXR1cm4gc2M7XG4gIC8vIH1cblxuICAvLyBwdWJsaWMgRWRpdGluZ1NvdXJjZUNvbnRyb2xMb29rdXA6IHN0cmluZztcblxuICBwdWJsaWMgSG9zdGluZ0RldGFpbHM6IFByb2plY3RIb3N0aW5nRGV0YWlscztcblxuICBwdWJsaWMgZ2V0IE5QTVRva2VuRm9ybUNvbnRyb2woKTogQWJzdHJhY3RDb250cm9sIHtcbiAgICByZXR1cm4gdGhpcy5CdWlsZFBpcGVsaW5lRm9ybUdyb3VwLmdldCgnbnBtVG9rZW4nKTtcbiAgfVxuXG4gIC8vIChobykgPT4gaG8uTG9va3VwID09PSB0aGlzLkJ1aWxkUGlwZWxpbmVcbiAgcHVibGljIGdldCBTZWxlY3RlZEhvc3RpbmdPcHRpb24oKTogUHJvamVjdEhvc3RpbmdPcHRpb24ge1xuICAgIHJldHVybiB0aGlzLkhvc3RpbmdEZXRhaWxzPy5Ib3N0aW5nT3B0aW9ucz8uZmluZChcbiAgICAgIChobykgPT4gaG8uTG9va3VwID09PSB0aGlzLkJ1aWxkUGlwZWxpbmVcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGdldCBTZWxlY3RlZEhvc3RpbmdPcHRpb25JbnB1dENvbnRyb2xWYWx1ZXMoKToge1xuICAgIFtsb29rdXA6IHN0cmluZ106IGFueTtcbiAgfSB7XG4gICAgcmV0dXJuIHRoaXMuU2VsZWN0ZWRIb3N0aW5nT3B0aW9uPy5JbnB1dHM/LnJlZHVjZSgocHJldiwgY3VyKSA9PiB7XG4gICAgICBjb25zdCByZXMgPSB7XG4gICAgICAgIC4uLnByZXYsXG4gICAgICB9O1xuXG4gICAgICByZXNbY3VyLkxvb2t1cF0gPSB0aGlzLkJ1aWxkUGlwZWxpbmVGb3JtR3JvdXAuY29udHJvbHNbY3VyLkxvb2t1cF0udmFsdWU7XG5cbiAgICAgIHJldHVybiByZXM7XG4gICAgfSwge30pO1xuICB9XG5cbiAgcHVibGljIGdldCBTb3VyY2VDb250cm9sTG9va3VwcygpOiBBcnJheTxzdHJpbmc+IHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXModGhpcy5Tb3VyY2VDb250cm9scyB8fCB7fSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IFNvdXJjZUNvbnRyb2xzKCk6IHsgW2xvb2t1cDogc3RyaW5nXTogRWFDU291cmNlQ29udHJvbCB9IHtcbiAgICByZXR1cm4gdGhpcy5FbnZpcm9ubWVudC5Tb3VyY2VzIHx8IHt9O1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIGVhY1N2YzogRWFDU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLFxuICAgIHByb3RlY3RlZCBhcHBzRmxvd1N2YzogQXBwbGljYXRpb25zRmxvd1NlcnZpY2UpIHtcbiAgICB0aGlzLkhvc3RpbmdEZXRhaWxzID0gbmV3IFByb2plY3RIb3N0aW5nRGV0YWlscygpO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuXG4gICAgdGhpcy5CdWlsZFBpcGVsaW5lRm9ybUdyb3VwID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7fSk7XG5cbiAgICBpZiAodGhpcy5CdWlsZFBpcGVsaW5lRm9ybUdyb3VwICE9IG51bGwpIHtcbiAgICAgIHRoaXMuQnVpbGRQaXBlbGluZUZvcm1Hcm91cC5yZW1vdmVDb250cm9sKCdob3N0aW5nRGV0YWlscycpO1xuICAgIH1cblxuICAgIHRoaXMuQnVpbGRQaXBlbGluZUZvcm1Hcm91cC5hZGRDb250cm9sKFxuICAgICAgJ2hvc3RpbmdEZXRhaWxzJyxcbiAgICAgIHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgICBidWlsZFBpcGVsaW5lOiBbdGhpcy5CdWlsZFBpcGVsaW5lLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuICAgICAgfSlcbiAgICApO1xuXG4gICAgdGhpcy5sb2FkUHJvamVjdEhvc3RpbmdEZXRhaWxzKCk7XG5cbiAgfVxuXG4gIC8vQVBJIE1FVEhPRFNcblxuICBwdWJsaWMgQnVpbGRQaXBlbGluZUNoYW5nZWQoKTogdm9pZCB7XG4gICAgY29uc29sZS5sb2coXCJidWlsZCBwaXBlbGluZSB2YWx1ZTogXCIsIHRoaXMuQnVpbGRQaXBlbGluZUZvcm1Db250cm9sPy52YWx1ZSlcbiAgICB0aGlzLkJ1aWxkUGlwZWxpbmUgPSB0aGlzLkJ1aWxkUGlwZWxpbmVGb3JtQ29udHJvbD8udmFsdWU7XG5cbiAgICB0aGlzLnNldHVwQ29udHJvbHNGb3JGb3JtKCk7XG4gIH1cblxuICBwdWJsaWMgU3VibWl0QnVpbGRQaXBlbGluZSgpIHtcbiAgICBjb25zb2xlLmxvZyhcInN1Ym1pdHRpbmcgYnVpbGQgcGlwZWxpbmU6IFwiLCB0aGlzLkJ1aWxkUGlwZWxpbmVGb3JtR3JvdXAudmFsdWUpO1xuICAgIHRoaXMuU2F2ZUVudmlyb25tZW50KCk7XG4gIH1cblxuICBwdWJsaWMgU2F2ZUVudmlyb25tZW50KCk6IHZvaWQge1xuICAgIGNvbnN0IHNhdmVFbnZSZXE6IFNhdmVFbnZpcm9ubWVudEFzQ29kZUV2ZW50UmVxdWVzdCA9IHtcbiAgICAgIEVudmlyb25tZW50OiB7XG4gICAgICAgIC4uLnRoaXMuRW52aXJvbm1lbnQsXG4gICAgICAgIEFydGlmYWN0czogdGhpcy5FbnZpcm9ubWVudC5BcnRpZmFjdHMgfHwge30sXG4gICAgICAgIERldk9wc0FjdGlvbnM6IHRoaXMuRW52aXJvbm1lbnQuRGV2T3BzQWN0aW9ucyB8fCB7fSxcbiAgICAgICAgU2VjcmV0czogdGhpcy5FbnZpcm9ubWVudC5TZWNyZXRzIHx8IHt9LFxuICAgICAgICBTb3VyY2VzOiB0aGlzLkVudmlyb25tZW50LlNvdXJjZXMgfHwge30sXG4gICAgICB9LFxuICAgICAgRW52aXJvbm1lbnRMb29rdXA6IHRoaXMuRW52aXJvbm1lbnRMb29rdXAsXG4gICAgICBFbnRlcnByaXNlRGF0YVRva2Vuczoge30sXG4gICAgfTtcblxuICAgIGxldCBhcnRpZmFjdExvb2t1cDogc3RyaW5nO1xuXG4gICAgbGV0IGFydGlmYWN0OiBFYUNBcnRpZmFjdCA9IHtcbiAgICAgIC4uLnRoaXMuQXJ0aWZhY3QsXG4gICAgICAuLi50aGlzLlNlbGVjdGVkSG9zdGluZ09wdGlvbklucHV0Q29udHJvbFZhbHVlcyxcbiAgICB9O1xuXG4gICAgaWYgKCF0aGlzLkFydGlmYWN0TG9va3VwKSB7XG4gICAgICBhcnRpZmFjdExvb2t1cCA9IEd1aWQuQ3JlYXRlUmF3KCk7XG5cbiAgICAgIGFydGlmYWN0ID0ge1xuICAgICAgICAuLi5hcnRpZmFjdCxcbiAgICAgICAgVHlwZTogdGhpcy5TZWxlY3RlZEhvc3RpbmdPcHRpb25cbiAgICAgICAgICAuQXJ0aWZhY3RUeXBlLFxuICAgICAgICBOYW1lOiB0aGlzLlNlbGVjdGVkSG9zdGluZ09wdGlvbi5OYW1lLFxuICAgICAgICBOUE1SZWdpc3RyeTogJ2h0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnLycsXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICBhcnRpZmFjdExvb2t1cCA9IHRoaXMuQXJ0aWZhY3RMb29rdXA7XG4gICAgfVxuXG4gICAgc2F2ZUVudlJlcS5FbnZpcm9ubWVudC5BcnRpZmFjdHNbYXJ0aWZhY3RMb29rdXBdID0gYXJ0aWZhY3Q7XG5cbiAgICBsZXQgZGV2T3BzQWN0aW9uTG9va3VwOiBzdHJpbmc7XG5cbiAgICBpZiAoIXRoaXMuRGV2T3BzQWN0aW9uTG9va3VwKSB7XG4gICAgICBkZXZPcHNBY3Rpb25Mb29rdXAgPSBHdWlkLkNyZWF0ZVJhdygpO1xuXG4gICAgICBjb25zdCBkb2E6IEVhQ0Rldk9wc0FjdGlvbiA9IHtcbiAgICAgICAgLi4udGhpcy5EZXZPcHNBY3Rpb24sXG4gICAgICAgIEFydGlmYWN0TG9va3VwczogW2FydGlmYWN0TG9va3VwXSxcbiAgICAgICAgTmFtZTogdGhpcy5EZXZPcHNBY3Rpb25OYW1lRm9ybUNvbnRyb2wudmFsdWUsXG4gICAgICAgIFBhdGg6IHRoaXMuU2VsZWN0ZWRIb3N0aW5nT3B0aW9uLlBhdGgsXG4gICAgICAgIFRlbXBsYXRlczpcbiAgICAgICAgICB0aGlzLlNlbGVjdGVkSG9zdGluZ09wdGlvbi5UZW1wbGF0ZXMsXG4gICAgICB9O1xuXG4gICAgICBpZiAodGhpcy5OUE1Ub2tlbkZvcm1Db250cm9sPy52YWx1ZSkge1xuICAgICAgICBjb25zdCBzZWNyZXRMb29rdXAgPSAnbnBtLWFjY2Vzcy10b2tlbic7XG5cbiAgICAgICAgZG9hLlNlY3JldExvb2t1cHMgPSBbc2VjcmV0TG9va3VwXTtcblxuICAgICAgICBzYXZlRW52UmVxLkVudmlyb25tZW50LlNlY3JldHNbc2VjcmV0TG9va3VwXSA9IHtcbiAgICAgICAgICBOYW1lOiAnTlBNIEFjY2VzcyBUb2tlbicsXG4gICAgICAgICAgRGF0YVRva2VuTG9va3VwOiBzZWNyZXRMb29rdXAsXG4gICAgICAgICAgS25vd25BczogJ05QTV9UT0tFTicsXG4gICAgICAgIH07XG5cbiAgICAgICAgc2F2ZUVudlJlcS5FbnRlcnByaXNlRGF0YVRva2Vuc1tzZWNyZXRMb29rdXBdID0ge1xuICAgICAgICAgIE5hbWU6IHNhdmVFbnZSZXEuRW52aXJvbm1lbnQuU2VjcmV0c1tzZWNyZXRMb29rdXBdLk5hbWUsXG4gICAgICAgICAgRGVzY3JpcHRpb246IHNhdmVFbnZSZXEuRW52aXJvbm1lbnQuU2VjcmV0c1tzZWNyZXRMb29rdXBdLk5hbWUsXG4gICAgICAgICAgVmFsdWU6IHRoaXMuTlBNVG9rZW5Gb3JtQ29udHJvbC52YWx1ZSxcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgc2F2ZUVudlJlcS5FbnZpcm9ubWVudC5EZXZPcHNBY3Rpb25zW2Rldk9wc0FjdGlvbkxvb2t1cF0gPSBkb2E7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRldk9wc0FjdGlvbkxvb2t1cCA9IHRoaXMuRGV2T3BzQWN0aW9uTG9va3VwO1xuXG4gICAgICBjb25zdCBkb2E6IEVhQ0Rldk9wc0FjdGlvbiA9IHtcbiAgICAgICAgLi4udGhpcy5EZXZPcHNBY3Rpb24sXG4gICAgICAgIE5hbWU6IHRoaXMuRGV2T3BzQWN0aW9uTmFtZUZvcm1Db250cm9sLnZhbHVlLFxuICAgICAgfTtcblxuICAgICAgc2F2ZUVudlJlcS5FbnZpcm9ubWVudC5EZXZPcHNBY3Rpb25zW2Rldk9wc0FjdGlvbkxvb2t1cF0gPSBkb2E7XG4gICAgfVxuXG4gICAgLy8gbGV0IHNvdXJjZTogRWFDU291cmNlQ29udHJvbCA9IHtcbiAgICAvLyAgIC4uLnRoaXMuRWRpdGluZ1NvdXJjZUNvbnRyb2wsXG4gICAgLy8gICBCcmFuY2hlczogdGhpcy5FZGl0aW5nU291cmNlQ29udHJvbC5TZWxlY3RlZEJyYW5jaGVzLFxuICAgIC8vICAgTWFpbkJyYW5jaDogdGhpcy5FZGl0aW5nU291cmNlQ29udHJvbC5NYWluQnJhbmNoRm9ybUNvbnRyb2wudmFsdWUsXG4gICAgLy8gfTtcblxuICAgIC8vIHNvdXJjZSA9IHtcbiAgICAvLyAgIC4uLnNvdXJjZSxcbiAgICAvLyAgIFR5cGU6ICdHaXRIdWInLFxuICAgIC8vICAgTmFtZTogdGhpcy5FZGl0aW5nU291cmNlQ29udHJvbExvb2t1cCxcbiAgICAvLyAgIERldk9wc0FjdGlvblRyaWdnZXJMb29rdXBzOiBbZGV2T3BzQWN0aW9uTG9va3VwXSxcbiAgICAvLyAgIE9yZ2FuaXphdGlvbjpcbiAgICAvLyAgICAgdGhpcy5FZGl0aW5nU291cmNlQ29udHJvbC5Pcmdhbml6YXRpb25Gb3JtQ29udHJvbC52YWx1ZSxcbiAgICAvLyAgIFJlcG9zaXRvcnk6IHRoaXMuRWRpdGluZ1NvdXJjZUNvbnRyb2wuUmVwb3NpdG9yeUZvcm1Db250cm9sLnZhbHVlLFxuICAgIC8vIH07XG5cbiAgICAvLyBjb25zdCBzY0xvb2t1cCA9IGBnaXRodWI6Ly8ke3NvdXJjZS5Pcmdhbml6YXRpb259LyR7c291cmNlLlJlcG9zaXRvcnl9YDtcblxuICAgIC8vIHNhdmVFbnZSZXEuRW52aXJvbm1lbnQuU291cmNlc1tzY0xvb2t1cF0gPSBzb3VyY2U7XG5cbiAgICB0aGlzLmVhY1N2Yy5TYXZlRW52aXJvbm1lbnRBc0NvZGUoc2F2ZUVudlJlcSk7XG4gIH1cblxuICAvLyAgSGVscGVyc1xuICBwcm90ZWN0ZWQgc2V0dXBDb250cm9sc0ZvckZvcm0oKTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBjdHJsTmFtZSBpbiB0aGlzLkJ1aWxkUGlwZWxpbmVGb3JtR3JvdXAuY29udHJvbHMpIHtcbiAgICAgIC8vZGV2T3BzQWN0aW9uIGRvZXNuJ3QgZXhpc3RcbiAgICAgIC8vcmVtb3ZlcyBob3N0aW5nIGRldGFpbHNcbiAgICAgIGlmIChjdHJsTmFtZSAhPT0gJ2J1aWxkUGlwZWxpbmUnICYmIGN0cmxOYW1lICE9PSAnZGV2T3BzQWN0aW9uJykge1xuICAgICAgICBjb25zb2xlLmxvZyhcInJlbW92aW5nIGNvbnRyb2w6IFwiLCBjdHJsTmFtZSlcbiAgICAgICAgdGhpcy5CdWlsZFBpcGVsaW5lRm9ybUdyb3VwLnJlbW92ZUNvbnRyb2woY3RybE5hbWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuQnVpbGRQaXBlbGluZUZvcm1Hcm91cC5hZGRDb250cm9sKFxuICAgICAgJ2Rldk9wc0FjdGlvbk5hbWUnLFxuICAgICAgdGhpcy5mb3JtQnVpbGRlci5jb250cm9sKFxuICAgICAgICB0aGlzLkRldk9wc0FjdGlvbj8uTmFtZSB8fCB0aGlzLlNlbGVjdGVkSG9zdGluZ09wdGlvbj8uTmFtZSB8fCAnJyxcbiAgICAgICAgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXG4gICAgICApXG4gICAgKTtcblxuICAgIHRoaXMuU2VsZWN0ZWRIb3N0aW5nT3B0aW9uPy5JbnB1dHM/LmZvckVhY2goKGlucHV0KSA9PiB7XG4gICAgICBjb25zdCB2YWxpZGF0b3JzID0gaW5wdXQuUmVxdWlyZWQgPyBbVmFsaWRhdG9ycy5yZXF1aXJlZF0gOiBbXTtcblxuICAgICAgdGhpcy5CdWlsZFBpcGVsaW5lRm9ybUdyb3VwLmFkZENvbnRyb2woXG4gICAgICAgIGlucHV0Lkxvb2t1cCxcbiAgICAgICAgdGhpcy5mb3JtQnVpbGRlci5jb250cm9sKFxuICAgICAgICAgIHRoaXMuQXJ0aWZhY3RbaW5wdXQuTG9va3VwXSB8fCBpbnB1dC5EZWZhdWx0VmFsdWUgfHwgJycsXG4gICAgICAgICAgdmFsaWRhdG9yc1xuICAgICAgICApXG4gICAgICApO1xuXG4gICAgICAvLyBpZiAodGhpcy5EaXNhYmxlZCkge1xuICAgICAgLy8gICB0aGlzLkZvcm1Hcm91cC5jb250cm9sc1tpbnB1dC5Mb29rdXBdLmRpc2FibGUoKTtcbiAgICAgIC8vIH1cbiAgICB9KTtcblxuICAgIGlmICh0aGlzLkJ1aWxkUGlwZWxpbmVGb3JtQ29udHJvbD8udmFsdWUgPT09ICducG0tcmVsZWFzZScpIHtcblxuICAgICAgaWYgKCF0aGlzLkJ1aWxkUGlwZWxpbmVGb3JtR3JvdXAuY29udHJvbHMubnBtVG9rZW4pIHtcbiAgICAgICAgdGhpcy5CdWlsZFBpcGVsaW5lRm9ybUdyb3VwLmFkZENvbnRyb2woXG4gICAgICAgICAgJ25wbVRva2VuJyxcbiAgICAgICAgICB0aGlzLmZvcm1CdWlsZGVyLmNvbnRyb2woXG4gICAgICAgICAgICAnJyxcbiAgICAgICAgICAgIHRoaXMuRGlzYWJsZWQgPyBbXSA6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXVxuICAgICAgICAgIClcbiAgICAgICAgKTtcblxuICAgICAgICBpZiAodGhpcy5EaXNhYmxlZCkge1xuICAgICAgICAgIHRoaXMuQnVpbGRQaXBlbGluZUZvcm1Hcm91cC5jb250cm9scy5ucG1Ub2tlbi5kaXNhYmxlKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKFxuICAgICAgdGhpcy5CdWlsZFBpcGVsaW5lRm9ybUNvbnRyb2w/LnZhbHVlID09PSAnZ2l0aHViLWFydGlmYWN0cy1yZWxlYXNlJ1xuICAgICkge1xuICAgICAgaWYgKHRoaXMuQnVpbGRQaXBlbGluZUZvcm1Hcm91cC5jb250cm9scy5ucG1Ub2tlbikge1xuICAgICAgICB0aGlzLkJ1aWxkUGlwZWxpbmVGb3JtR3JvdXAucmVtb3ZlQ29udHJvbCgnbnBtVG9rZW4nKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgbG9hZFByb2plY3RIb3N0aW5nRGV0YWlscygpOiB2b2lkIHtcbiAgICB0aGlzLkhvc3RpbmdEZXRhaWxzLkxvYWRpbmcgPSB0cnVlO1xuICAgIC8vIHRoaXMuT3JnYW5pemF0aW9uLFxuICAgIC8vIHRoaXMuUmVwb3NpdG9yeSxcbiAgICAvLyB0aGlzLk1haW5CcmFuY2hcblxuICAgIC8vIFwicG93aG91bmQ0XCIsXG4gICAgLy8gXCJSZWR3b29kQ3J5c3RhbHNcIixcbiAgICAvLyBcIm1hc3RlclwiXG5cbiAgICB0aGlzLmFwcHNGbG93U3ZjXG4gICAgICAuTmV3TG9hZFByb2plY3RIb3N0aW5nRGV0YWlscygpXG4gICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAocmVzcG9uc2U6IEJhc2VNb2RlbGVkUmVzcG9uc2U8UHJvamVjdEhvc3RpbmdEZXRhaWxzPikgPT4ge1xuICAgICAgICAgIHRoaXMuSG9zdGluZ0RldGFpbHMgPSByZXNwb25zZS5Nb2RlbDtcbiAgICAgICAgICBjb25zb2xlLmxvZyhcInJlc3BvbnNlOiBcIiwgcmVzcG9uc2UpO1xuICAgICAgICAgIHRoaXMuSG9zdGluZ0RldGFpbHMuTG9hZGluZyA9IGZhbHNlO1xuXG4gICAgICAgICAgdGhpcy5CdWlsZFBpcGVsaW5lID1cbiAgICAgICAgICAgIHRoaXMuSG9zdGluZ0RldGFpbHM/Lkhvc3RpbmdPcHRpb25zXG4gICAgICAgICAgICAgID8gdGhpcy5Ib3N0aW5nRGV0YWlscz8uSG9zdGluZ09wdGlvbnNbMF0/Lkxvb2t1cFxuICAgICAgICAgICAgICA6ICcnO1xuXG4gICAgICAgICAgY29uc29sZS5sb2coXCJCdWlsZCBQaXBlbGluZSBIRVJFPSBcIiwgdGhpcy5CdWlsZFBpcGVsaW5lKTtcblxuICAgICAgICAgIHRoaXMuc2V0dXBDb250cm9sc0ZvckZvcm0oKTtcblxuICAgICAgICB9LFxuICAgICAgICAoZXJyKSA9PiB7XG5cbiAgICAgICAgICBjb25zb2xlLmxvZyhcIkVSUjogXCIsIGVycik7XG4gICAgICAgICAgdGhpcy5Ib3N0aW5nRGV0YWlscy5Mb2FkaW5nID0gZmFsc2U7XG5cbiAgICAgICAgfVxuICAgICAgKTtcbiAgICBjb25zb2xlLmxvZyhcIkhPU1RJTkcgREVUQUlMUzogXCIsIHRoaXMuSG9zdGluZ0RldGFpbHMpO1xuXG4gIH1cblxufVxuIl19
|