@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.
Files changed (138) hide show
  1. package/bundles/lowcodeunit-applications-flow-common.umd.js +520 -2399
  2. package/bundles/lowcodeunit-applications-flow-common.umd.js.map +1 -1
  3. package/bundles/lowcodeunit-applications-flow-common.umd.min.js +2 -2
  4. package/bundles/lowcodeunit-applications-flow-common.umd.min.js.map +1 -1
  5. package/esm2015/lcu.api.js +1 -3
  6. package/esm2015/lib/applications-flow.module.js +6 -83
  7. package/esm2015/lib/elements/base-form/base-form.component.js +5 -5
  8. package/esm2015/lib/elements/dynamic-tabs/dynamic-tabs.component.js +1 -1
  9. package/esm2015/lib/elements/form-card/form-card.component.js +1 -1
  10. package/esm2015/lib/elements/projects/controls/builds/builds.component.js +10 -5
  11. package/esm2015/lib/elements/projects/controls/create-project-wizard/create-project-wizard.component.js +7 -7
  12. package/esm2015/lib/elements/projects/controls/forms/source-control/source-control.component.js +7 -4
  13. package/esm2015/lib/elements/projects/controls/git-auth/git-auth.component.js +1 -1
  14. package/esm2015/lib/elements/projects/controls/header/header.component.js +9 -9
  15. package/esm2015/lib/elements/projects/controls/hosting-details-form-group/hosting-details-form-group.component.js +2 -3
  16. package/esm2015/lib/elements/projects/controls/project-items/project-items.component.js +8 -8
  17. package/esm2015/lib/elements/projects/controls/project-tabs/project-tabs.component.js +1 -1
  18. package/esm2015/lib/elements/projects/controls/tabs/apps-flow/apps-flow.component.js +11 -9
  19. package/esm2015/lib/elements/projects/controls/tabs/apps-flow/npm-package-select/npm-package-select.component.js +1 -1
  20. package/esm2015/lib/elements/projects/controls/tabs/devops/devops.component.js +8 -8
  21. package/esm2015/lib/elements/projects/controls/tabs/dfs-modifiers/dfs-modifiers.component.js +8 -8
  22. package/esm2015/lib/elements/projects/controls/tabs/domains/domains.component.js +7 -7
  23. package/esm2015/lib/elements/projects/controls/tabs/general/forms/base-form-test/base-form-test.component.js +6 -6
  24. package/esm2015/lib/elements/projects/controls/tabs/general/forms/project-details/project-details.component.js +7 -7
  25. package/esm2015/lib/elements/projects/controls/tabs/general/forms/root-directory/root-directory.component.js +7 -7
  26. package/esm2015/lib/elements/projects/controls/tabs/general/general.component.js +1 -1
  27. package/esm2015/lib/elements/projects/projects.component.js +144 -18
  28. package/esm2015/lib/services/applications-flow-events.service.js +83 -0
  29. package/esm2015/lib/services/applications-flow.service.js +1 -11
  30. package/esm2015/lib/services/project.service.js +9 -9
  31. package/esm2015/lowcodeunit-applications-flow-common.js +17 -33
  32. package/fesm2015/lowcodeunit-applications-flow-common.js +297 -1866
  33. package/fesm2015/lowcodeunit-applications-flow-common.js.map +1 -1
  34. package/lcu.api.d.ts +0 -2
  35. package/lcu.api.d.ts.map +1 -1
  36. package/lib/applications-flow.module.d.ts.map +1 -1
  37. package/lib/elements/base-form/base-form.component.d.ts +3 -3
  38. package/lib/elements/base-form/base-form.component.d.ts.map +1 -1
  39. package/lib/elements/projects/controls/builds/builds.component.d.ts +3 -1
  40. package/lib/elements/projects/controls/builds/builds.component.d.ts.map +1 -1
  41. package/lib/elements/projects/controls/create-project-wizard/create-project-wizard.component.d.ts +3 -3
  42. package/lib/elements/projects/controls/create-project-wizard/create-project-wizard.component.d.ts.map +1 -1
  43. package/lib/elements/projects/controls/forms/source-control/source-control.component.d.ts +3 -1
  44. package/lib/elements/projects/controls/forms/source-control/source-control.component.d.ts.map +1 -1
  45. package/lib/elements/projects/controls/header/header.component.d.ts +3 -3
  46. package/lib/elements/projects/controls/header/header.component.d.ts.map +1 -1
  47. package/lib/elements/projects/controls/hosting-details-form-group/hosting-details-form-group.component.d.ts.map +1 -1
  48. package/lib/elements/projects/controls/project-items/project-items.component.d.ts +3 -3
  49. package/lib/elements/projects/controls/project-items/project-items.component.d.ts.map +1 -1
  50. package/lib/elements/projects/controls/tabs/apps-flow/apps-flow.component.d.ts +3 -3
  51. package/lib/elements/projects/controls/tabs/apps-flow/apps-flow.component.d.ts.map +1 -1
  52. package/lib/elements/projects/controls/tabs/devops/devops.component.d.ts +3 -3
  53. package/lib/elements/projects/controls/tabs/devops/devops.component.d.ts.map +1 -1
  54. package/lib/elements/projects/controls/tabs/dfs-modifiers/dfs-modifiers.component.d.ts +3 -3
  55. package/lib/elements/projects/controls/tabs/dfs-modifiers/dfs-modifiers.component.d.ts.map +1 -1
  56. package/lib/elements/projects/controls/tabs/domains/domains.component.d.ts +3 -3
  57. package/lib/elements/projects/controls/tabs/domains/domains.component.d.ts.map +1 -1
  58. package/lib/elements/projects/controls/tabs/general/forms/base-form-test/base-form-test.component.d.ts +3 -3
  59. package/lib/elements/projects/controls/tabs/general/forms/base-form-test/base-form-test.component.d.ts.map +1 -1
  60. package/lib/elements/projects/controls/tabs/general/forms/project-details/project-details.component.d.ts +3 -3
  61. package/lib/elements/projects/controls/tabs/general/forms/project-details/project-details.component.d.ts.map +1 -1
  62. package/lib/elements/projects/controls/tabs/general/forms/root-directory/root-directory.component.d.ts +3 -3
  63. package/lib/elements/projects/controls/tabs/general/forms/root-directory/root-directory.component.d.ts.map +1 -1
  64. package/lib/elements/projects/projects.component.d.ts +11 -4
  65. package/lib/elements/projects/projects.component.d.ts.map +1 -1
  66. package/lib/services/applications-flow-events.service.d.ts +58 -0
  67. package/lib/services/applications-flow-events.service.d.ts.map +1 -0
  68. package/lib/services/applications-flow.service.d.ts +0 -2
  69. package/lib/services/applications-flow.service.d.ts.map +1 -1
  70. package/lib/services/project.service.d.ts +1 -1
  71. package/lib/services/project.service.d.ts.map +1 -1
  72. package/lowcodeunit-applications-flow-common.d.ts +16 -32
  73. package/lowcodeunit-applications-flow-common.d.ts.map +1 -1
  74. package/lowcodeunit-applications-flow-common.metadata.json +1 -1
  75. package/package.json +1 -1
  76. package/esm2015/lib/controls/build-pipeline-form/build-pipeline-form.component.js +0 -229
  77. package/esm2015/lib/controls/devops-source-control-form/devops-source-control-form.component.js +0 -412
  78. package/esm2015/lib/controls/edit-application-form/edit-application-form.component.js +0 -60
  79. package/esm2015/lib/controls/processor-details-form/processor-details-form.component.js +0 -321
  80. package/esm2015/lib/controls/security-toggle/security-toggle.component.js +0 -50
  81. package/esm2015/lib/controls/source-control-form/source-control-form.component.js +0 -61
  82. package/esm2015/lib/dialogs/build-pipeline-dialog/build-pipeline-dialog.component.js +0 -25
  83. package/esm2015/lib/dialogs/source-control-dialog/source-control-dialog.component.js +0 -25
  84. package/esm2015/lib/elements/analytics-card/analytics-card.component.js +0 -21
  85. package/esm2015/lib/elements/card-carousel/card-carousel.component.js +0 -67
  86. package/esm2015/lib/elements/column-info-card/column-info-card.component.js +0 -31
  87. package/esm2015/lib/elements/feed-card-sm/feed-card-sm.component.js +0 -31
  88. package/esm2015/lib/elements/gh-control/gh-control.component.js +0 -72
  89. package/esm2015/lib/elements/main-feed-card/main-feed-card.component.js +0 -24
  90. package/esm2015/lib/elements/project-info-card/project-info-card.component.js +0 -32
  91. package/esm2015/lib/elements/slotted-card/slotted-card.component.js +0 -29
  92. package/esm2015/lib/elements/three-column/three-column.component.js +0 -32
  93. package/esm2015/lib/elements/two-column-header/two-column-header.component.js +0 -15
  94. package/esm2015/lib/models/card-slot.model.js +0 -3
  95. package/esm2015/lib/models/slot-action.model.js +0 -3
  96. package/esm2015/lib/services/eac.service.js +0 -218
  97. package/lib/controls/build-pipeline-form/build-pipeline-form.component.d.ts +0 -43
  98. package/lib/controls/build-pipeline-form/build-pipeline-form.component.d.ts.map +0 -1
  99. package/lib/controls/devops-source-control-form/devops-source-control-form.component.d.ts +0 -81
  100. package/lib/controls/devops-source-control-form/devops-source-control-form.component.d.ts.map +0 -1
  101. package/lib/controls/edit-application-form/edit-application-form.component.d.ts +0 -17
  102. package/lib/controls/edit-application-form/edit-application-form.component.d.ts.map +0 -1
  103. package/lib/controls/processor-details-form/processor-details-form.component.d.ts +0 -65
  104. package/lib/controls/processor-details-form/processor-details-form.component.d.ts.map +0 -1
  105. package/lib/controls/security-toggle/security-toggle.component.d.ts +0 -18
  106. package/lib/controls/security-toggle/security-toggle.component.d.ts.map +0 -1
  107. package/lib/controls/source-control-form/source-control-form.component.d.ts +0 -25
  108. package/lib/controls/source-control-form/source-control-form.component.d.ts.map +0 -1
  109. package/lib/dialogs/build-pipeline-dialog/build-pipeline-dialog.component.d.ts +0 -17
  110. package/lib/dialogs/build-pipeline-dialog/build-pipeline-dialog.component.d.ts.map +0 -1
  111. package/lib/dialogs/source-control-dialog/source-control-dialog.component.d.ts +0 -16
  112. package/lib/dialogs/source-control-dialog/source-control-dialog.component.d.ts.map +0 -1
  113. package/lib/elements/analytics-card/analytics-card.component.d.ts +0 -9
  114. package/lib/elements/analytics-card/analytics-card.component.d.ts.map +0 -1
  115. package/lib/elements/card-carousel/card-carousel.component.d.ts +0 -14
  116. package/lib/elements/card-carousel/card-carousel.component.d.ts.map +0 -1
  117. package/lib/elements/column-info-card/column-info-card.component.d.ts +0 -18
  118. package/lib/elements/column-info-card/column-info-card.component.d.ts.map +0 -1
  119. package/lib/elements/feed-card-sm/feed-card-sm.component.d.ts +0 -12
  120. package/lib/elements/feed-card-sm/feed-card-sm.component.d.ts.map +0 -1
  121. package/lib/elements/gh-control/gh-control.component.d.ts +0 -17
  122. package/lib/elements/gh-control/gh-control.component.d.ts.map +0 -1
  123. package/lib/elements/main-feed-card/main-feed-card.component.d.ts +0 -11
  124. package/lib/elements/main-feed-card/main-feed-card.component.d.ts.map +0 -1
  125. package/lib/elements/project-info-card/project-info-card.component.d.ts +0 -14
  126. package/lib/elements/project-info-card/project-info-card.component.d.ts.map +0 -1
  127. package/lib/elements/slotted-card/slotted-card.component.d.ts +0 -14
  128. package/lib/elements/slotted-card/slotted-card.component.d.ts.map +0 -1
  129. package/lib/elements/three-column/three-column.component.d.ts +0 -9
  130. package/lib/elements/three-column/three-column.component.d.ts.map +0 -1
  131. package/lib/elements/two-column-header/two-column-header.component.d.ts +0 -6
  132. package/lib/elements/two-column-header/two-column-header.component.d.ts.map +0 -1
  133. package/lib/models/card-slot.model.d.ts +0 -8
  134. package/lib/models/card-slot.model.d.ts.map +0 -1
  135. package/lib/models/slot-action.model.d.ts +0 -9
  136. package/lib/models/slot-action.model.d.ts.map +0 -1
  137. package/lib/services/eac.service.d.ts +0 -54
  138. package/lib/services/eac.service.d.ts.map +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lowcodeunit/applications-flow-common",
3
- "version": "1.33.117-lets-get-social-ish",
3
+ "version": "1.33.122-merge",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^10.2.4",
6
6
  "@angular/core": "^10.2.4"
@@ -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