@devtron-labs/devtron-fe-common-lib 0.0.41 → 0.0.42

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.
@@ -12,4 +12,4 @@ import { DebouncedSearchProps } from './Types';
12
12
  * @param clearSearch - (Optional) To clear the search text
13
13
  * @param showClearIcon - (Optional) To show the clear icon default value is true
14
14
  */
15
- export default function DebouncedSearch({ onSearch, Icon, children, placeholder, containerClass, iconClass, inputClass, debounceTimeout, clearSearch, showClearIcon, }: DebouncedSearchProps): JSX.Element;
15
+ export default function DebouncedSearch({ onSearch, Icon, children, placeholder, containerClass, iconClass, inputClass, debounceTimeout, clearSearch, showClearIcon, autoFocus, }: DebouncedSearchProps): JSX.Element;
@@ -10,4 +10,5 @@ export interface DebouncedSearchProps {
10
10
  debounceTimeout?: number;
11
11
  clearSearch?: boolean;
12
12
  showClearIcon?: boolean;
13
+ autoFocus?: boolean;
13
14
  }
@@ -9,6 +9,7 @@ export interface DeleteDialogProps {
9
9
  apiCallInProgress?: boolean;
10
10
  dataTestId?: string;
11
11
  buttonPrimaryText?: string;
12
+ shouldStopPropagation?: boolean;
12
13
  }
13
14
  export interface ForceDeleteDialogType {
14
15
  onClickDelete: () => void;
@@ -1,6 +1,7 @@
1
1
  import React, { ReactNode, CSSProperties } from 'react';
2
2
  import { Placement } from 'tippy.js';
3
3
  import { ImageComment, ReleaseTag } from './ImageTags.Types';
4
+ import { DockerConfigOverrideType, TaskErrorObj } from '.';
4
5
  export interface ResponseType {
5
6
  code: number;
6
7
  status: string;
@@ -284,6 +285,7 @@ export interface CommonNodeAttr {
284
285
  colorCode?: string;
285
286
  isExternalCI?: boolean;
286
287
  isLinkedCI?: boolean;
288
+ isLinkedCD?: boolean;
287
289
  isJobCI?: boolean;
288
290
  environmentName?: string;
289
291
  environmentId?: number;
@@ -427,4 +429,138 @@ export interface AsyncState<T> {
427
429
  export interface AsyncOptions {
428
430
  resetOnChange: boolean;
429
431
  }
432
+ export interface AppEnvironment {
433
+ environmentId: number;
434
+ environmentName: string;
435
+ appMetrics: boolean;
436
+ infraMetrics: boolean;
437
+ prod: boolean;
438
+ chartRefId?: number;
439
+ lastDeployed?: string;
440
+ lastDeployedBy?: string;
441
+ lastDeployedImage?: string;
442
+ appStatus?: string;
443
+ deploymentAppDeleteRequest?: boolean;
444
+ isVirtualEnvironment?: boolean;
445
+ isProtected?: boolean;
446
+ pipelineId?: number;
447
+ latestCdWorkflowRunnerId?: number;
448
+ }
449
+ export interface Strategy {
450
+ deploymentTemplate: string;
451
+ config: any;
452
+ default?: boolean;
453
+ }
454
+ export interface CDStage {
455
+ status: string;
456
+ name: string;
457
+ triggerType: 'AUTOMATIC' | 'MANUAL';
458
+ config: string;
459
+ }
460
+ export interface CDStageConfigMapSecretNames {
461
+ configMaps: any[];
462
+ secrets: any[];
463
+ }
464
+ export interface PrePostDeployStageType {
465
+ isValid: boolean;
466
+ steps: TaskErrorObj[];
467
+ triggerType: string;
468
+ name: string;
469
+ status: string;
470
+ }
471
+ export interface CdPipeline {
472
+ id: number;
473
+ environmentId: number;
474
+ environmentName?: string;
475
+ description?: string;
476
+ ciPipelineId: number;
477
+ triggerType: 'AUTOMATIC' | 'MANUAL';
478
+ name: string;
479
+ strategies?: Strategy[];
480
+ namespace?: string;
481
+ appWorkflowId?: number;
482
+ deploymentTemplate?: string;
483
+ preStage?: CDStage;
484
+ postStage?: CDStage;
485
+ preStageConfigMapSecretNames?: CDStageConfigMapSecretNames;
486
+ postStageConfigMapSecretNames?: CDStageConfigMapSecretNames;
487
+ runPreStageInEnv?: boolean;
488
+ runPostStageInEnv?: boolean;
489
+ isClusterCdActive?: boolean;
490
+ parentPipelineId?: number;
491
+ parentPipelineType?: string;
492
+ deploymentAppDeleteRequest?: boolean;
493
+ deploymentAppCreated?: boolean;
494
+ userApprovalConfig?: UserApprovalConfigType;
495
+ isVirtualEnvironment?: boolean;
496
+ deploymentAppType: DeploymentAppTypes;
497
+ helmPackageName?: string;
498
+ preDeployStage?: PrePostDeployStageType;
499
+ postDeployStage?: PrePostDeployStageType;
500
+ isProdEnv?: boolean;
501
+ }
502
+ export interface ExternalCiConfig {
503
+ id: number;
504
+ webhookUrl: string;
505
+ payload: string;
506
+ accessKey: string;
507
+ }
508
+ export interface Source {
509
+ type: string;
510
+ value?: string;
511
+ regex?: string;
512
+ }
513
+ export interface CiMaterial {
514
+ source: Source;
515
+ gitMaterialId: number;
516
+ id: number;
517
+ gitMaterialName: string;
518
+ isRegex?: boolean;
519
+ }
520
+ export interface Task {
521
+ name?: string;
522
+ type?: string;
523
+ cmd?: string;
524
+ args?: Array<string>;
525
+ }
526
+ export interface CiScript {
527
+ id: number;
528
+ index: number;
529
+ name: string;
530
+ script: string;
531
+ outputLocation?: string;
532
+ }
533
+ export interface CiPipeline {
534
+ isManual: boolean;
535
+ dockerArgs?: Map<string, string>;
536
+ isExternal: boolean;
537
+ parentCiPipeline: number;
538
+ parentAppId: number;
539
+ externalCiConfig: ExternalCiConfig;
540
+ ciMaterial?: CiMaterial[];
541
+ name?: string;
542
+ id?: number;
543
+ active?: boolean;
544
+ linkedCount: number;
545
+ scanEnabled: boolean;
546
+ deleted?: boolean;
547
+ version?: string;
548
+ beforeDockerBuild?: Array<Task>;
549
+ afterDockerBuild?: Array<Task>;
550
+ appWorkflowId?: number;
551
+ beforeDockerBuildScripts?: Array<CiScript>;
552
+ afterDockerBuildScripts?: Array<CiScript>;
553
+ isDockerConfigOverridden?: boolean;
554
+ dockerConfigOverride?: DockerConfigOverrideType;
555
+ appName?: string;
556
+ appId?: string;
557
+ componentId?: number;
558
+ isCITriggerBlocked?: boolean;
559
+ ciBlockState?: {
560
+ action: any;
561
+ metadataField: string;
562
+ };
563
+ isOffendingMandatoryPlugin?: boolean;
564
+ pipelineType?: string;
565
+ }
430
566
  export {};
package/dist/index.js CHANGED
@@ -15098,7 +15098,19 @@ ConfirmationDialog.ButtonGroup = ButtonGroup;
15098
15098
  var warn = "data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2248%22%20height%3D%2248%22%20viewBox%3D%220%200%2048%2048%22%3E%20%20%20%20%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%20%20%20%20%20%20%20%20%3Cpath%20d%3D%22M0%200h48v48H0z%22%2F%3E%20%20%20%20%20%20%20%20%3Cg%20fill%3D%22%23FFEBEB%22%20stroke%3D%22%23F33E3E%22%20stroke-linejoin%3D%22round%22%20stroke-width%3D%222%22%3E%20%20%20%20%20%20%20%20%20%20%20%20%3Cpath%20d%3D%22M7%2024h24v17a4%204%200%200%201-4%204H11a4%204%200%200%201-4-4V24z%22%2F%3E%20%20%20%20%20%20%20%20%20%20%20%20%3Cpath%20stroke-linecap%3D%22round%22%20d%3D%22M19%2029.5v10M24%2029.5v10M14%2029.5v10%22%2F%3E%20%20%20%20%20%20%20%20%3C%2Fg%3E%20%20%20%20%20%20%20%20%3Cpath%20stroke%3D%22%23F33E3E%22%20stroke-dasharray%3D%2217%2C3%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20stroke-width%3D%222%22%20d%3D%22M42%2010a3%203%200%200%201%200%206H31M38%2023a3%203%200%200%200-3-3h-8%22%2F%3E%20%20%20%20%20%20%20%20%3Cg%20stroke%3D%22%23F33E3E%22%20stroke-linejoin%3D%22round%22%20stroke-width%3D%222%22%20transform%3D%22rotate%28-10%2036.29%20-8.86%29%22%3E%20%20%20%20%20%20%20%20%20%20%20%20%3Crect%20width%3D%2230%22%20height%3D%225%22%20y%3D%226%22%20fill%3D%22%23FFEBEB%22%20rx%3D%221%22%2F%3E%20%20%20%20%20%20%20%20%20%20%20%20%3Cpath%20d%3D%22M11%200h8a2%202%200%200%201%202%202v4H9V2a2%202%200%200%201%202-2z%22%2F%3E%20%20%20%20%20%20%20%20%3C%2Fg%3E%20%20%20%20%3C%2Fg%3E%3C%2Fsvg%3E";
15099
15099
 
15100
15100
  var DeleteDialog = function (props) {
15101
- return (jsxRuntime.jsxs(ConfirmationDialog, __assign({ className: "confirmation-dialog__body--w-400" }, { children: [jsxRuntime.jsx(ConfirmationDialog.Icon, { src: warn }), jsxRuntime.jsx(ConfirmationDialog.Body, __assign({ title: props.title }, { children: jsxRuntime.jsxs("div", __assign({ className: "fs-13 cn-7 lh-1-54 w-100" }, { children: [props.description ? props.description : null, props.children] })) })), jsxRuntime.jsx(ConfirmationDialog.ButtonGroup, { children: jsxRuntime.jsxs("div", __assign({ className: "flex right" }, { children: [jsxRuntime.jsx("button", __assign({ type: "button", className: "cta cancel cta-cd-delete-modal ml-16", onClick: props.closeDelete, disabled: props.apiCallInProgress, "data-testid": "dialog-cancel" }, { children: "Cancel" })), jsxRuntime.jsx("button", __assign({ type: "button", className: "cta delete cta-cd-delete-modal ml-16", onClick: function () { return props.delete(); }, disabled: props.apiCallInProgress, "data-testid": "dialog-delete" }, { children: props.apiCallInProgress ? (jsxRuntime.jsx(Progressing, {})) : ("".concat(props.deletePrefix || '').concat(props.buttonPrimaryText ? props.buttonPrimaryText : 'Delete').concat(props.deletePostfix || '')) }))] })) })] })));
15101
+ var handleDelete = function (e) {
15102
+ if (props.shouldStopPropagation) {
15103
+ e.stopPropagation();
15104
+ }
15105
+ props.delete();
15106
+ };
15107
+ var handleModalClose = function (e) {
15108
+ if (props.shouldStopPropagation) {
15109
+ e.stopPropagation();
15110
+ }
15111
+ props.closeDelete();
15112
+ };
15113
+ return (jsxRuntime.jsxs(ConfirmationDialog, __assign({ className: "confirmation-dialog__body--w-400" }, { children: [jsxRuntime.jsx(ConfirmationDialog.Icon, { src: warn }), jsxRuntime.jsx(ConfirmationDialog.Body, __assign({ title: props.title }, { children: jsxRuntime.jsxs("div", __assign({ className: "fs-13 cn-7 lh-1-54 w-100" }, { children: [props.description ? props.description : null, props.children] })) })), jsxRuntime.jsx(ConfirmationDialog.ButtonGroup, { children: jsxRuntime.jsxs("div", __assign({ className: "flex right" }, { children: [jsxRuntime.jsx("button", __assign({ type: "button", className: "cta cancel cta-cd-delete-modal ml-16", onClick: handleModalClose, disabled: props.apiCallInProgress, "data-testid": "dialog-cancel" }, { children: "Cancel" })), jsxRuntime.jsx("button", __assign({ type: "button", className: "cta delete cta-cd-delete-modal ml-16", onClick: handleDelete, disabled: props.apiCallInProgress, "data-testid": "dialog-delete" }, { children: props.apiCallInProgress ? (jsxRuntime.jsx(Progressing, {})) : ("".concat(props.deletePrefix || '').concat(props.buttonPrimaryText ? props.buttonPrimaryText : 'Delete').concat(props.deletePostfix || '')) }))] })) })] })));
15102
15114
  };
15103
15115
  function DeleteDialogDescription(props) {
15104
15116
  return jsxRuntime.jsx(jsxRuntime.Fragment, { children: props.children });
@@ -23638,8 +23650,8 @@ var SvgIcErrorCross = function SvgIcErrorCross(props) {
23638
23650
  * @param showClearIcon - (Optional) To show the clear icon default value is true
23639
23651
  */
23640
23652
  function DebouncedSearch(_a) {
23641
- var onSearch = _a.onSearch, Icon = _a.Icon, children = _a.children, placeholder = _a.placeholder, _b = _a.containerClass, containerClass = _b === void 0 ? '' : _b, _c = _a.iconClass, iconClass = _c === void 0 ? '' : _c, _d = _a.inputClass, inputClass = _d === void 0 ? '' : _d, _e = _a.debounceTimeout, debounceTimeout = _e === void 0 ? 500 : _e, clearSearch = _a.clearSearch, _f = _a.showClearIcon, showClearIcon = _f === void 0 ? true : _f;
23642
- var _g = __read(React.useState(''), 2), searchText = _g[0], setSearchText = _g[1];
23653
+ var onSearch = _a.onSearch, Icon = _a.Icon, children = _a.children, placeholder = _a.placeholder, _b = _a.containerClass, containerClass = _b === void 0 ? '' : _b, _c = _a.iconClass, iconClass = _c === void 0 ? '' : _c, _d = _a.inputClass, inputClass = _d === void 0 ? '' : _d, _e = _a.debounceTimeout, debounceTimeout = _e === void 0 ? 500 : _e, clearSearch = _a.clearSearch, _f = _a.showClearIcon, showClearIcon = _f === void 0 ? true : _f, _g = _a.autoFocus, autoFocus = _g === void 0 ? true : _g;
23654
+ var _h = __read(React.useState(''), 2), searchText = _h[0], setSearchText = _h[1];
23643
23655
  React.useEffect(function () {
23644
23656
  setSearchText('');
23645
23657
  }, [clearSearch]);
@@ -23649,8 +23661,8 @@ function DebouncedSearch(_a) {
23649
23661
  var handleClearSearch = function () {
23650
23662
  setSearchText('');
23651
23663
  };
23652
- useDebouncedEffect(function () { return onSearch(searchText); }, debounceTimeout, [searchText, onSearch]);
23653
- return (jsxRuntime.jsxs("div", __assign({ className: containerClass }, { children: [Icon && jsxRuntime.jsx(Icon, { className: iconClass }), jsxRuntime.jsx("input", { type: "text", className: inputClass, placeholder: placeholder !== null && placeholder !== void 0 ? placeholder : 'Search', value: searchText, onChange: handleSearchTextChange, autoFocus: true, "data-testid": "debounced-search" }), showClearIcon && !!searchText && (jsxRuntime.jsx("button", __assign({ type: "button", className: "dc__outline-none-imp dc__no-border p-0 bc-n50 flex", onClick: handleClearSearch, "data-testid": "clear-search" }, { children: jsxRuntime.jsx(SvgIcErrorCross, { className: "icon-dim-20 icon-n6" }) }))), children] })));
23664
+ useDebouncedEffect(function () { return onSearch(searchText); }, debounceTimeout, [searchText]);
23665
+ return (jsxRuntime.jsxs("div", __assign({ className: containerClass }, { children: [Icon && jsxRuntime.jsx(Icon, { className: iconClass }), jsxRuntime.jsx("input", { type: "text", className: inputClass, placeholder: placeholder !== null && placeholder !== void 0 ? placeholder : 'Search', value: searchText, onChange: handleSearchTextChange, autoFocus: autoFocus, "data-testid": "debounced-search" }), showClearIcon && !!searchText && (jsxRuntime.jsx("button", __assign({ type: "button", className: "dc__outline-none-imp dc__no-border p-0 bc-n50 flex", onClick: handleClearSearch, "data-testid": "clear-search" }, { children: jsxRuntime.jsx(SvgIcErrorCross, { className: "icon-dim-20 icon-n6" }) }))), children] })));
23654
23666
  }
23655
23667
 
23656
23668
  // This is meant to be a reusable component that will provide a grid like dynamic layout where xs is the number of columns out of 12 that the item will take up
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@devtron-labs/devtron-fe-common-lib",
3
- "version": "0.0.41",
3
+ "version": "0.0.42",
4
4
  "description": "Supporting common component library",
5
5
  "main": "dist/index.js",
6
6
  "scripts": {
@@ -26,6 +26,7 @@ export default function DebouncedSearch({
26
26
  debounceTimeout = 500,
27
27
  clearSearch,
28
28
  showClearIcon = true,
29
+ autoFocus = true,
29
30
  }: DebouncedSearchProps) {
30
31
  const [searchText, setSearchText] = useState<string>('')
31
32
 
@@ -41,7 +42,7 @@ export default function DebouncedSearch({
41
42
  setSearchText('')
42
43
  }
43
44
 
44
- useDebouncedEffect(() => onSearch(searchText), debounceTimeout, [searchText, onSearch])
45
+ useDebouncedEffect(() => onSearch(searchText), debounceTimeout, [searchText])
45
46
 
46
47
  return (
47
48
  <div className={containerClass}>
@@ -53,7 +54,7 @@ export default function DebouncedSearch({
53
54
  placeholder={placeholder ?? 'Search'}
54
55
  value={searchText}
55
56
  onChange={handleSearchTextChange}
56
- autoFocus
57
+ autoFocus={autoFocus}
57
58
  data-testid="debounced-search"
58
59
  />
59
60
 
@@ -9,4 +9,5 @@ export interface DebouncedSearchProps {
9
9
  debounceTimeout?: number
10
10
  clearSearch?: boolean
11
11
  showClearIcon?: boolean
12
+ autoFocus?: boolean
12
13
  }
@@ -5,6 +5,22 @@ import ConfirmationDialog from './ConfirmationDialog'
5
5
  import { DeleteDialogProps } from './Types'
6
6
 
7
7
  export const DeleteDialog: React.FC<DeleteDialogProps> & { Description?: React.FC<any> } = function (props) {
8
+ const handleDelete = (e: React.MouseEvent) => {
9
+ if (props.shouldStopPropagation) {
10
+ e.stopPropagation()
11
+ }
12
+
13
+ props.delete()
14
+ }
15
+
16
+ const handleModalClose = (e: React.MouseEvent) => {
17
+ if (props.shouldStopPropagation) {
18
+ e.stopPropagation()
19
+ }
20
+
21
+ props.closeDelete()
22
+ }
23
+
8
24
  return (
9
25
  <ConfirmationDialog className="confirmation-dialog__body--w-400">
10
26
  <ConfirmationDialog.Icon src={warn} />
@@ -19,7 +35,7 @@ export const DeleteDialog: React.FC<DeleteDialogProps> & { Description?: React.F
19
35
  <button
20
36
  type="button"
21
37
  className="cta cancel cta-cd-delete-modal ml-16"
22
- onClick={props.closeDelete}
38
+ onClick={handleModalClose}
23
39
  disabled={props.apiCallInProgress}
24
40
  data-testid="dialog-cancel"
25
41
  >
@@ -28,7 +44,7 @@ export const DeleteDialog: React.FC<DeleteDialogProps> & { Description?: React.F
28
44
  <button
29
45
  type="button"
30
46
  className="cta delete cta-cd-delete-modal ml-16"
31
- onClick={() => props.delete()}
47
+ onClick={handleDelete}
32
48
  disabled={props.apiCallInProgress}
33
49
  data-testid="dialog-delete"
34
50
  >
@@ -10,6 +10,7 @@ export interface DeleteDialogProps {
10
10
  apiCallInProgress?: boolean
11
11
  dataTestId?: string
12
12
  buttonPrimaryText?: string
13
+ shouldStopPropagation?: boolean
13
14
  }
14
15
 
15
16
  export interface ForceDeleteDialogType {
@@ -1,6 +1,8 @@
1
1
  import React, { ReactNode, CSSProperties } from 'react'
2
2
  import { Placement } from 'tippy.js'
3
3
  import { ImageComment, ReleaseTag } from './ImageTags.Types'
4
+ import { DockerConfigOverrideType, TaskErrorObj } from '.'
5
+
4
6
  export interface ResponseType {
5
7
  code: number
6
8
  status: string
@@ -315,6 +317,7 @@ export interface CommonNodeAttr {
315
317
  colorCode?: string
316
318
  isExternalCI?: boolean
317
319
  isLinkedCI?: boolean
320
+ isLinkedCD?: boolean
318
321
  isJobCI?: boolean // used for Job type CI in Devtron Apps
319
322
  environmentName?: string //used for CDs
320
323
  environmentId?: number
@@ -474,3 +477,149 @@ export interface AsyncState<T> {
474
477
  export interface AsyncOptions {
475
478
  resetOnChange: boolean
476
479
  }
480
+
481
+ export interface AppEnvironment {
482
+ environmentId: number
483
+ environmentName: string
484
+ appMetrics: boolean
485
+ infraMetrics: boolean
486
+ prod: boolean
487
+ chartRefId?: number
488
+ lastDeployed?: string
489
+ lastDeployedBy?: string
490
+ lastDeployedImage?: string
491
+ appStatus?: string
492
+ deploymentAppDeleteRequest?: boolean
493
+ isVirtualEnvironment?: boolean
494
+ isProtected?: boolean
495
+ pipelineId?: number
496
+ latestCdWorkflowRunnerId?: number
497
+ }
498
+
499
+ export interface Strategy {
500
+ deploymentTemplate: string
501
+ config: any
502
+ default?: boolean
503
+ }
504
+
505
+ export interface CDStage {
506
+ status: string
507
+ name: string
508
+ triggerType: 'AUTOMATIC' | 'MANUAL'
509
+ config: string
510
+ }
511
+
512
+ export interface CDStageConfigMapSecretNames {
513
+ configMaps: any[]
514
+ secrets: any[]
515
+ }
516
+
517
+ export interface PrePostDeployStageType {
518
+ isValid: boolean
519
+ steps: TaskErrorObj[]
520
+ triggerType: string
521
+ name: string
522
+ status: string
523
+ }
524
+
525
+ export interface CdPipeline {
526
+ id: number
527
+ environmentId: number
528
+ environmentName?: string
529
+ description?: string
530
+ ciPipelineId: number
531
+ triggerType: 'AUTOMATIC' | 'MANUAL'
532
+ name: string
533
+ strategies?: Strategy[]
534
+ namespace?: string
535
+ appWorkflowId?: number
536
+ deploymentTemplate?: string
537
+ preStage?: CDStage
538
+ postStage?: CDStage
539
+ preStageConfigMapSecretNames?: CDStageConfigMapSecretNames
540
+ postStageConfigMapSecretNames?: CDStageConfigMapSecretNames
541
+ runPreStageInEnv?: boolean
542
+ runPostStageInEnv?: boolean
543
+ isClusterCdActive?: boolean
544
+ parentPipelineId?: number
545
+ parentPipelineType?: string
546
+ deploymentAppDeleteRequest?: boolean
547
+ deploymentAppCreated?: boolean
548
+ userApprovalConfig?: UserApprovalConfigType
549
+ isVirtualEnvironment?: boolean
550
+ deploymentAppType: DeploymentAppTypes
551
+ helmPackageName?: string
552
+ preDeployStage?: PrePostDeployStageType
553
+ postDeployStage?: PrePostDeployStageType
554
+ isProdEnv?: boolean
555
+ }
556
+
557
+ export interface ExternalCiConfig {
558
+ id: number
559
+ webhookUrl: string
560
+ payload: string
561
+ accessKey: string
562
+ }
563
+
564
+ export interface Source {
565
+ type: string
566
+ value?: string
567
+ regex?: string
568
+ }
569
+
570
+ export interface CiMaterial {
571
+ source: Source
572
+ gitMaterialId: number
573
+ id: number
574
+ gitMaterialName: string
575
+ isRegex?: boolean
576
+ }
577
+
578
+ export interface Task {
579
+ name?: string
580
+ type?: string
581
+ cmd?: string
582
+ args?: Array<string>
583
+ }
584
+
585
+ export interface CiScript {
586
+ id: number
587
+ index: number
588
+ name: string
589
+ script: string
590
+ outputLocation?: string
591
+ }
592
+
593
+ export interface CiPipeline {
594
+ isManual: boolean
595
+ dockerArgs?: Map<string, string>
596
+ isExternal: boolean
597
+ parentCiPipeline: number
598
+ parentAppId: number
599
+ externalCiConfig: ExternalCiConfig
600
+ ciMaterial?: CiMaterial[]
601
+ name?: string
602
+ id?: number
603
+ active?: boolean
604
+ linkedCount: number
605
+ scanEnabled: boolean
606
+ deleted?: boolean
607
+ version?: string
608
+ beforeDockerBuild?: Array<Task>
609
+ afterDockerBuild?: Array<Task>
610
+ appWorkflowId?: number
611
+ beforeDockerBuildScripts?: Array<CiScript>
612
+ afterDockerBuildScripts?: Array<CiScript>
613
+ isDockerConfigOverridden?: boolean
614
+ dockerConfigOverride?: DockerConfigOverrideType
615
+ appName?: string
616
+ appId?: string
617
+ componentId?: number
618
+ isCITriggerBlocked?: boolean
619
+ ciBlockState?: {
620
+ action: any
621
+ metadataField: string
622
+ }
623
+ isOffendingMandatoryPlugin?: boolean
624
+ pipelineType?: string
625
+ }