@kineticdata/react 6.0.0 → 6.0.1

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 (56) hide show
  1. package/lib/apis/http.js +33 -1
  2. package/lib/apis/http.test.js +100 -0
  3. package/lib/apis/system/index.js +141 -10
  4. package/lib/apis/task/index.js +15 -1
  5. package/lib/components/agent/bridge/BridgeTable.js +4 -1
  6. package/lib/components/agent/filestore/FilestoreTable.js +4 -1
  7. package/lib/components/agent/handler/AgentHandlerTable.js +5 -2
  8. package/lib/components/common/ToastContainer.js +170 -0
  9. package/lib/components/common/defaults/Toast.js +26 -0
  10. package/lib/components/common/defaults/index.js +13 -0
  11. package/lib/components/core/attribute_definition/AttributeDefinitionTable.js +7 -3
  12. package/lib/components/core/bridge_model/BridgeModelTable.js +5 -2
  13. package/lib/components/core/category/CategoryTable.js +13 -6
  14. package/lib/components/core/field_definition/FieldDefinitionTable.js +11 -5
  15. package/lib/components/core/form/FormTable.js +22 -11
  16. package/lib/components/core/form_type/FormTypeTable.js +3 -1
  17. package/lib/components/core/index_definition/IndexDefinitionTable.js +12 -5
  18. package/lib/components/core/kapp/KappTable.js +17 -32
  19. package/lib/components/core/log/LogTable.js +8 -2
  20. package/lib/components/core/security_definition/SecurityDefinitionTable.js +9 -4
  21. package/lib/components/core/submission/FormSubmissionTable.js +37 -19
  22. package/lib/components/core/submission/KappSubmissionTable.js +37 -19
  23. package/lib/components/core/team/TeamForm.js +1 -1
  24. package/lib/components/core/team/TeamTable.js +11 -5
  25. package/lib/components/core/user/UserTable.js +23 -5
  26. package/lib/components/core/webapi/WebApiForm.js +49 -30
  27. package/lib/components/core/webapi/WebApiTable.js +14 -7
  28. package/lib/components/core/webhook/WebhookTable.js +19 -9
  29. package/lib/components/core/webhook_job/WebhookJobTable.js +39 -19
  30. package/lib/components/form/Form.helpers.js +81 -19
  31. package/lib/components/form/Form.models.js +1 -0
  32. package/lib/components/index.js +53 -0
  33. package/lib/components/system/SystemCassandraForm.js +98 -0
  34. package/lib/components/system/SystemElasticSearchForm.js +98 -0
  35. package/lib/components/system/SystemFilestoreForm.js +10 -5
  36. package/lib/components/system/SystemIngressForm.js +77 -29
  37. package/lib/components/system/SystemTaskAdapterForm.js +29 -5
  38. package/lib/components/system/SystemTrustedCertificateForm.js +40 -0
  39. package/lib/components/system/SystemTrustedCertificatesTable.js +74 -0
  40. package/lib/components/system/helpers.js +226 -45
  41. package/lib/components/system/spaces/SystemTenantForm.js +75 -34
  42. package/lib/components/table/Table.js +88 -7
  43. package/lib/components/table/Table.redux.js +68 -47
  44. package/lib/components/table/Table.test.js +39 -0
  45. package/lib/components/table/defaults/ColumnControl.js +26 -0
  46. package/lib/components/table/defaults/index.js +3 -1
  47. package/lib/components/task/errors/RunErrorTable.js +33 -14
  48. package/lib/components/task/handlers/HandlerTable.js +23 -11
  49. package/lib/components/task/runs/RunTable.js +22 -9
  50. package/lib/components/task/sources/SourceTable.js +15 -7
  51. package/lib/components/task/triggers/TriggerTable.js +50 -23
  52. package/lib/components/task/workflows/LinkedWorkflowTable.js +32 -16
  53. package/lib/components/task/workflows/WorkflowTable.js +30 -15
  54. package/lib/index.js +4 -3
  55. package/package.json +17 -4
  56. package/proxyhelper.js +17 -11
@@ -126,26 +126,32 @@ var filters = function filters() {
126
126
  var columns = [{
127
127
  value: 'id',
128
128
  title: 'Id',
129
- sortable: true
129
+ sortable: true,
130
+ toggleable: false,
131
+ columnOrder: 'first'
130
132
  }, {
131
133
  value: 'originatingId',
132
134
  title: 'Originating ID',
133
- sortable: false
135
+ sortable: false,
136
+ toggleable: true
134
137
  }, {
135
138
  value: 'sourceName',
136
139
  valueTransform: function valueTransform(_value, row) {
137
140
  return (0, _immutable.getIn)(row, ['source', 'name'], '');
138
141
  },
139
142
  title: 'Source',
140
- sortable: true
143
+ sortable: true,
144
+ toggleable: true
141
145
  }, {
142
146
  value: 'sourceId',
143
147
  title: 'Source Id',
144
- sortable: false
148
+ sortable: false,
149
+ toggleable: true
145
150
  }, {
146
151
  value: 'tree',
147
152
  title: 'Tree',
148
153
  sortable: true,
154
+ toggleable: true,
149
155
  valueTransform: function valueTransform(value) {
150
156
  return (0, _immutable.get)(value, 'name', '');
151
157
  }
@@ -153,6 +159,7 @@ var columns = [{
153
159
  value: 'sourceGroup',
154
160
  title: 'Group',
155
161
  sortable: true,
162
+ toggleable: true,
156
163
  valueTransform: function valueTransform(_value, row) {
157
164
  return row.getIn(['tree', 'sourceGroup']);
158
165
  }
@@ -160,29 +167,35 @@ var columns = [{
160
167
  value: 'type',
161
168
  title: 'Type',
162
169
  sortable: true,
170
+ toggleable: true,
163
171
  valueTransform: function valueTransform(_value, row) {
164
172
  return row.getIn(['tree', 'type']);
165
173
  }
166
174
  }, {
167
175
  value: 'status',
168
176
  title: 'Status',
169
- sortable: false
177
+ sortable: false,
178
+ toggleable: true
170
179
  }, {
171
180
  value: 'createdAt',
172
181
  title: 'Created',
173
- sortable: true
182
+ sortable: true,
183
+ toggleable: true
174
184
  }, {
175
185
  value: 'createdBy',
176
186
  title: 'Created By',
177
- sortable: false
187
+ sortable: false,
188
+ toggleable: true
178
189
  }, {
179
190
  value: 'updatedAt',
180
191
  title: 'Updated',
181
- sortable: true
192
+ sortable: true,
193
+ toggleable: true
182
194
  }, {
183
195
  value: 'updatedBy',
184
196
  title: 'Updated By',
185
- sortable: false
197
+ sortable: false,
198
+ toggleable: true
186
199
  }];
187
200
  var RunTable = (0, _Table.generateTable)({
188
201
  tableOptions: ['sourceName', 'sourceGroup', 'treeName', 'sourceId', 'count'],
@@ -58,25 +58,33 @@ var filters = function filters() {
58
58
  };
59
59
  var columns = [{
60
60
  title: 'ID',
61
- value: 'id'
61
+ value: 'id',
62
+ toggleable: true
62
63
  }, {
63
64
  title: 'Name',
64
- value: 'name'
65
+ value: 'name',
66
+ toggleable: false,
67
+ columnOrder: 'first'
65
68
  }, {
66
69
  title: 'Type',
67
- value: 'type'
70
+ value: 'type',
71
+ toggleable: true
68
72
  }, {
69
73
  title: 'Created',
70
- value: 'createdAt'
74
+ value: 'createdAt',
75
+ toggleable: true
71
76
  }, {
72
77
  title: 'Created By',
73
- value: 'createdBy'
78
+ value: 'createdBy',
79
+ toggleable: true
74
80
  }, {
75
81
  title: 'Updated',
76
- value: 'updatedAt'
82
+ value: 'updatedAt',
83
+ toggleable: true
77
84
  }, {
78
85
  title: 'Updated By',
79
- value: 'updatedBy'
86
+ value: 'updatedBy',
87
+ toggleable: true
80
88
  }];
81
89
  var SourceTable = (0, _Table.generateTable)({
82
90
  columns: columns,
@@ -88,80 +88,100 @@ var filters = function filters() {
88
88
  var columns = [{
89
89
  value: 'action',
90
90
  title: 'Action',
91
- sortable: false
91
+ sortable: false,
92
+ toggleable: true
92
93
  }, {
93
94
  value: 'branchId',
94
95
  title: 'Branch Id',
95
- sortable: false
96
+ sortable: false,
97
+ toggleable: true
96
98
  }, {
97
99
  value: 'type',
98
100
  title: 'Type',
99
- sortable: false
101
+ sortable: false,
102
+ toggleable: true
100
103
  }, {
101
104
  value: 'engineIdentification',
102
105
  title: 'Engine Identification',
103
- sortable: false
106
+ sortable: false,
107
+ toggleable: true
104
108
  }, {
105
109
  value: 'flags',
106
110
  title: 'Flags',
107
- sortable: false
111
+ sortable: false,
112
+ toggleable: true
108
113
  }, {
109
114
  value: 'loopIndex',
110
115
  title: 'Loop Index',
111
- sortable: false
116
+ sortable: false,
117
+ toggleable: true
112
118
  }, {
113
119
  value: 'managementAction',
114
120
  title: 'Management Action',
115
- sortable: false
121
+ sortable: false,
122
+ toggleable: true
116
123
  }, {
117
124
  value: 'message',
118
125
  title: 'Message',
119
- sortable: false
126
+ sortable: false,
127
+ toggleable: true
120
128
  }, {
121
129
  value: 'mode',
122
130
  title: 'Mode',
123
- sortable: false
131
+ sortable: false,
132
+ toggleable: true
124
133
  }, {
125
134
  value: 'nodeId',
126
135
  title: 'Node Id',
127
- sortable: false
136
+ sortable: false,
137
+ toggleable: true
128
138
  }, {
129
139
  value: 'nodeName',
130
140
  title: 'Node Name',
131
- sortable: false
141
+ sortable: false,
142
+ toggleable: true
132
143
  }, {
133
144
  value: 'originator',
134
145
  title: 'Originator',
135
- sortable: false
146
+ sortable: false,
147
+ toggleable: true
136
148
  }, {
137
149
  value: 'results',
138
150
  title: 'Results',
139
- sortable: false
151
+ sortable: false,
152
+ toggleable: true
140
153
  }, {
141
154
  value: 'scheduledAt',
142
155
  title: 'Scheduled At',
143
- sortable: true
156
+ sortable: true,
157
+ toggleable: true
144
158
  }, {
145
159
  value: 'selectionCriterion',
146
160
  title: 'Selection Criterion',
147
- sortable: false
161
+ sortable: false,
162
+ toggleable: true
148
163
  }, {
149
164
  value: 'status',
150
165
  title: 'Status',
151
- sortable: false
166
+ sortable: false,
167
+ toggleable: true
152
168
  }, {
153
169
  value: 'token',
154
170
  title: 'Token',
155
- sortable: false
171
+ sortable: false,
172
+ toggleable: true
156
173
  }, {
157
174
  value: 'sourceName',
158
175
  //valueTransform: (_value, row) => getIn(row, ['tree', 'sourceName'], ''),
159
176
  title: 'Source',
160
- sortable: false
177
+ sortable: false,
178
+ toggleable: false,
179
+ columnOrder: 'first'
161
180
  }, {
162
181
  value: 'sourceGroup',
163
182
  title: 'Group',
164
183
  sortable: false,
184
+ toggleable: true,
165
185
  valueTransform: function valueTransform(_value, row) {
166
186
  return row.getIn(['tree', 'sourceGroup']);
167
187
  }
@@ -169,6 +189,7 @@ var columns = [{
169
189
  value: 'tree',
170
190
  title: 'Tree',
171
191
  sortable: false,
192
+ toggleable: true,
172
193
  valueTransform: function valueTransform(value) {
173
194
  return (0, _immutable.get)(value, 'name', '');
174
195
  }
@@ -176,29 +197,35 @@ var columns = [{
176
197
  value: 'treeType',
177
198
  title: 'Tree Type',
178
199
  sortable: false,
200
+ toggleable: true,
179
201
  valueTransform: function valueTransform(_value, row) {
180
202
  return row.getIn(['tree', 'type']);
181
203
  }
182
204
  }, {
183
205
  value: 'createdAt',
184
206
  title: 'Created',
185
- sortable: true
207
+ sortable: true,
208
+ toggleable: true
186
209
  }, {
187
210
  value: 'createdBy',
188
211
  title: 'Created By',
189
- sortable: false
212
+ sortable: false,
213
+ toggleable: true
190
214
  }, {
191
215
  value: 'id',
192
216
  title: 'ID',
193
- sortable: false
217
+ sortable: false,
218
+ toggleable: true
194
219
  }, {
195
220
  value: 'updatedAt',
196
221
  title: 'Updated',
197
- sortable: true
222
+ sortable: true,
223
+ toggleable: true
198
224
  }, {
199
225
  value: 'updatedBy',
200
226
  title: 'Updated By',
201
- sortable: false
227
+ sortable: false,
228
+ toggleable: true
202
229
  }];
203
230
  var TriggerTable = (0, _Table.generateTable)({
204
231
  tableOptions: ['runId', 'triggerStatus'],
@@ -66,66 +66,82 @@ var filters = function filters() {
66
66
  var columns = [{
67
67
  value: 'id',
68
68
  title: 'ID',
69
- sortable: false
69
+ sortable: false,
70
+ toggleable: true
70
71
  }, {
71
72
  value: 'name',
72
73
  title: 'Name',
73
- sortable: true
74
+ sortable: true,
75
+ toggleable: false,
76
+ columnOrder: 'first'
74
77
  }, {
75
78
  value: 'event',
76
79
  title: 'Event',
77
- sortable: true
80
+ sortable: true,
81
+ toggleable: true
78
82
  }, {
79
83
  value: 'notes',
80
84
  title: 'Notes',
81
- sortable: false
85
+ sortable: false,
86
+ toggleable: true
82
87
  }, {
83
88
  value: 'definitionId',
84
89
  title: 'Definition ID',
85
- sortable: true
90
+ sortable: true,
91
+ toggleable: true
86
92
  }, {
87
93
  value: 'ownerEmail',
88
- title: 'Owner EMail',
89
- sortable: false
94
+ title: 'Owner Email',
95
+ sortable: false,
96
+ toggleable: true
90
97
  }, {
91
98
  value: 'sourceGroup',
92
99
  title: 'Source Group',
93
- sortable: true
100
+ sortable: true,
101
+ toggleable: true
94
102
  }, {
95
103
  value: 'sourceName',
96
104
  title: 'Source Name',
97
- sortable: true
105
+ sortable: true,
106
+ toggleable: true
98
107
  }, {
99
108
  value: 'status',
100
109
  title: 'Status',
101
110
  sortable: true,
111
+ toggleable: true,
102
112
  options: function options() {
103
113
  return STATUS_OPTIONS;
104
114
  }
105
115
  }, {
106
116
  value: 'title',
107
117
  title: 'Title',
108
- sortable: false
118
+ sortable: false,
119
+ toggleable: true
109
120
  }, {
110
121
  value: 'type',
111
- title: 'type',
112
- sortable: false
122
+ title: 'Type',
123
+ sortable: false,
124
+ toggleable: true
113
125
  }, {
114
126
  value: 'createdAt',
115
127
  title: 'Created',
116
- sortable: false
128
+ sortable: false,
129
+ toggleable: true
117
130
  }, {
118
131
  value: 'createdBy',
119
132
  title: 'Created By',
120
- sortable: false
133
+ sortable: false,
134
+ toggleable: true
121
135
  }, {
122
136
  value: 'updatedAt',
123
137
  title: 'Updated',
124
- sortable: true
138
+ sortable: true,
139
+ toggleable: true
125
140
  }, {
126
141
  value: 'updatedBy',
127
142
  title: 'Updated By',
128
- sortable: false
143
+ sortable: false,
144
+ toggleable: true
129
145
  }];
130
146
  var LinkedWorkflowTable = (0, _Table.generateTable)({
131
147
  tableOptions: ['kappSlug', 'formSlug'],
@@ -104,62 +104,77 @@ var filters = function filters() {
104
104
  var columns = [{
105
105
  value: 'id',
106
106
  title: 'ID',
107
- sortable: false
107
+ sortable: false,
108
+ toggleable: true
108
109
  }, {
109
110
  value: 'name',
110
111
  title: 'Name',
111
- sortable: true
112
+ sortable: true,
113
+ toggleable: false,
114
+ columnOrder: 'first'
112
115
  }, {
113
116
  value: 'notes',
114
117
  title: 'Notes',
115
- sortable: false
118
+ sortable: false,
119
+ toggleable: true
116
120
  }, {
117
121
  value: 'definitionId',
118
122
  title: 'Definition ID',
119
- sortable: true
123
+ sortable: true,
124
+ toggleable: true
120
125
  }, {
121
126
  value: 'ownerEmail',
122
- title: 'Owner EMail',
123
- sortable: false
127
+ title: 'Owner Email',
128
+ sortable: false,
129
+ toggleable: true
124
130
  }, {
125
131
  value: 'sourceGroup',
126
132
  title: 'Source Group',
127
- sortable: true
133
+ sortable: true,
134
+ toggleable: true
128
135
  }, {
129
136
  value: 'sourceName',
130
137
  title: 'Source Name',
131
- sortable: true
138
+ sortable: true,
139
+ toggleable: true
132
140
  }, {
133
141
  value: 'status',
134
142
  title: 'Status',
135
143
  sortable: true,
144
+ toggleable: true,
136
145
  options: function options() {
137
146
  return STATUS_OPTIONS;
138
147
  }
139
148
  }, {
140
149
  value: 'title',
141
150
  title: 'Title',
142
- sortable: false
151
+ sortable: false,
152
+ toggleable: true
143
153
  }, {
144
154
  value: 'type',
145
- title: 'type',
146
- sortable: false
155
+ title: 'Type',
156
+ sortable: false,
157
+ toggleable: true
147
158
  }, {
148
159
  value: 'createdAt',
149
160
  title: 'Created',
150
- sortable: false
161
+ sortable: false,
162
+ toggleable: true
151
163
  }, {
152
164
  value: 'createdBy',
153
165
  title: 'Created By',
154
- sortable: false
166
+ sortable: false,
167
+ toggleable: true
155
168
  }, {
156
169
  value: 'updatedAt',
157
170
  title: 'Updated',
158
- sortable: true
171
+ sortable: true,
172
+ toggleable: true
159
173
  }, {
160
174
  value: 'updatedBy',
161
175
  title: 'Updated By',
162
- sortable: false
176
+ sortable: false,
177
+ toggleable: true
163
178
  }];
164
179
  var WorkflowTable = (0, _Table.generateTable)({
165
180
  tableOptions: ['alterData', 'workflowType', 'sourceName', 'sourceGroup'],
package/lib/index.js CHANGED
@@ -29,8 +29,9 @@ Object.keys(_components).forEach(function (key) {
29
29
  });
30
30
  });
31
31
  var _globals = require("./components/core/core_form/globals");
32
- var _defaults = require("./components/form/defaults");
33
- var _defaults2 = require("./components/table/defaults");
32
+ var _defaults = require("./components/common/defaults");
33
+ var _defaults2 = require("./components/form/defaults");
34
+ var _defaults3 = require("./components/table/defaults");
34
35
  var _ComponentConfigContext = require("./components/common/ComponentConfigContext");
35
36
  var _AuthenticationContainer = require("./components/common/authentication/AuthenticationContainer");
36
37
  var _AuthInterceptor = _interopRequireDefault(require("./components/common/authentication/AuthInterceptor"));
@@ -87,7 +88,7 @@ var KineticLib = function KineticLib(props) {
87
88
  }, /*#__PURE__*/_react["default"].createElement(_globals.GlobalsProvider, {
88
89
  globals: props.globals
89
90
  }, /*#__PURE__*/_react["default"].createElement(_ComponentConfigContext.ComponentConfigContext.Provider, {
90
- value: _defaults.DefaultFieldConfig.merge(_defaults2.DefaultTableConfig).merge((0, _immutable.remove)(props.components || {}, 'fields')).merge(props.components && props.components.fields)
91
+ value: _defaults.DefaultCommonConfig.merge(_defaults2.DefaultFieldConfig).merge(_defaults3.DefaultTableConfig).merge((0, _immutable.remove)(props.components || {}, 'fields')).merge(props.components && props.components.fields)
91
92
  }, typeof props.children === 'function' ? /*#__PURE__*/_react["default"].createElement(_AuthenticationContainer.AuthenticationContainer, {
92
93
  skipInit: props.skipInit,
93
94
  system: props.system
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kineticdata/react",
3
- "version": "6.0.0",
3
+ "version": "6.0.1",
4
4
  "description": "A React library for the Kinetic Platform",
5
5
  "main": "lib/index.js",
6
6
  "files": [
@@ -10,7 +10,8 @@
10
10
  ],
11
11
  "scripts": {
12
12
  "build": "cross-env NODE_ENV=production babel src --out-dir lib",
13
- "test": "jest",
13
+ "test": "jest test",
14
+ "test-ci": "jest --ci --reporters=default --reporters=jest-junit",
14
15
  "test:watch": "jest --watch",
15
16
  "test:coverage": "jest --coverage",
16
17
  "lint": "cross-env NODE_ENV=production eslint src --ext .js",
@@ -42,8 +43,11 @@
42
43
  "redux": "^4.0.1",
43
44
  "redux-saga": "^1.0.1"
44
45
  },
46
+ "devDependencies": {
47
+ "jest-junit": "^12.0.0"
48
+ },
45
49
  "peerDependencies": {
46
- "react": "16.x"
50
+ "react": "^17.0.2"
47
51
  },
48
52
  "author": "Kinetic Data, Inc",
49
53
  "homepage": "https://kineticdata.github.io/react-kinetic-lib",
@@ -67,5 +71,14 @@
67
71
  ]
68
72
  ]
69
73
  },
70
- "gitHead": "d88e4fbcc3e0bd8ce3a403bc9c72e6c4ffafeaeb"
74
+ "jest-junit": {
75
+ "outputDirectory": "reports",
76
+ "outputName": "jest-junit.xml",
77
+ "ancestorSeparator": " › ",
78
+ "uniqueOutputName": "false",
79
+ "suiteNameTemplate": "{filepath}",
80
+ "classNameTemplate": "{classname}",
81
+ "titleTemplate": "{title}"
82
+ },
83
+ "gitHead": "9f335c982f9a8a7f8d759f0a116ac65e47cf88fa"
71
84
  }
package/proxyhelper.js CHANGED
@@ -32,24 +32,16 @@ const defaultProxyLogger = ({
32
32
  const proxyData = getProxyData(proxyRequest);
33
33
  const originalData = getRequestData(originalRequest);
34
34
  console.log(
35
- `[proxy] [original] -> ${originalData.method}\t${
36
- originalData.scheme
37
- }\t${originalData.host}\t${originalData.path}`,
35
+ `[proxy] [original] -> ${originalData.method}\t${originalData.scheme}\t${originalData.host}\t${originalData.path}`,
38
36
  );
39
37
  console.log(
40
- `[proxy] [proxied] -> ${proxyData.method}\t${proxyData.scheme}\t${
41
- proxyData.host
42
- }\t${proxyData.path}`,
38
+ `[proxy] [proxied] -> ${proxyData.method}\t${proxyData.scheme}\t${proxyData.host}\t${proxyData.path}`,
43
39
  );
44
40
  } else if (proxyResponse) {
45
41
  const responseData = getResponseData(proxyResponse);
46
42
  const requestData = getRequestData(originalRequest);
47
43
  console.log(
48
- `[proxy] [original] <- ${responseData.statusCode}\t${
49
- requestData.method
50
- }\t${requestData.scheme}\t${requestData.host} (${responseData.host})\t${
51
- requestData.path
52
- }`,
44
+ `[proxy] [original] <- ${responseData.statusCode}\t${requestData.method}\t${requestData.scheme}\t${requestData.host} (${responseData.host})\t${requestData.path}`,
53
45
  );
54
46
  }
55
47
  } catch (e) {
@@ -119,6 +111,7 @@ const getProxyConfig = (
119
111
  {
120
112
  mainTarget = process.env.REACT_APP_PROXY_HOST,
121
113
  loghubTarget = process.env.REACT_APP_LOGHUB_PROXY_HOST,
114
+ systemCoordinatorTarget = process.env.REACT_APP_SYS_COORDINATOR_PROXY_HOST,
122
115
  proxyLogger,
123
116
  } = {},
124
117
  ) => {
@@ -154,6 +147,19 @@ const getProxyConfig = (
154
147
  finalConfigs.push({ paths: ['/app/loghub/**'], options });
155
148
  }
156
149
 
150
+ if (systemCoordinatorTarget) {
151
+ // If we're overriding the underlying Loghub host, bypass it in the main.
152
+ mainPaths.push('!/app/system-coordinator/**');
153
+ const options = setupProxy({
154
+ target: systemCoordinatorTarget,
155
+ proxyLogger,
156
+ pathRewrite: {
157
+ '^/app/system-coordinator': '/app',
158
+ },
159
+ });
160
+ finalConfigs.push({ paths: ['/app/system-coordinator/**'], options });
161
+ }
162
+
157
163
  return finalConfigs.map(config => {
158
164
  config.proxy = ({
159
165
  paths = config.paths,