node-red-contrib-prib-functions 0.18.0 → 0.20.4

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 (87) hide show
  1. package/.github/workflows/codeql-analysis.yml +3 -3
  2. package/.github/workflows/npmpublish.yml +6 -6
  3. package/.vs/VSWorkspaceState.json +7 -0
  4. package/.vs/node-red-contrib-prib-functions/v17/.wsuo +0 -0
  5. package/README.md +22 -19
  6. package/arima/index.js +18 -0
  7. package/dataAnalysis/arrayAllRowsSwap.js +15 -0
  8. package/dataAnalysis/arrayCompareToPrecision.js +34 -0
  9. package/dataAnalysis/arrayDifference.js +14 -0
  10. package/dataAnalysis/arrayDifferenceSeasonal.js +15 -0
  11. package/dataAnalysis/arrayDifferenceSeasonalSecondOrder.js +20 -0
  12. package/dataAnalysis/arrayDifferenceSecondOrder.js +14 -0
  13. package/dataAnalysis/arrayForEachRange.js +38 -0
  14. package/dataAnalysis/arrayOverlay.js +13 -0
  15. package/dataAnalysis/arrayProduct.js +11 -0
  16. package/dataAnalysis/arrayRandom.js +14 -0
  17. package/dataAnalysis/arrayReduceRange.js +11 -0
  18. package/dataAnalysis/arrayScale.js +11 -0
  19. package/dataAnalysis/arraySum.js +11 -0
  20. package/dataAnalysis/arraySumSquared.js +11 -0
  21. package/dataAnalysis/arraySwap.js +11 -0
  22. package/dataAnalysis/dataAnalysis.html +31 -14
  23. package/dataAnalysis/dataAnalysis.js +10 -1
  24. package/dataAnalysis/generateMatrixFunction.js +89 -0
  25. package/dataAnalysis/generateVectorFunction.js +25 -0
  26. package/dataAnalysis/pca.js +546 -0
  27. package/dataAnalysis/svd.js +239 -0
  28. package/documentation/loadInjector.png +0 -0
  29. package/echart/echart.html +68 -0
  30. package/echart/echart.js +85 -0
  31. package/echart/icons/chart-671.png +0 -0
  32. package/echart/lib/echarts.js +95886 -0
  33. package/lib/Chart.js +177 -0
  34. package/lib/Column.js +99 -0
  35. package/lib/GraphDB.js +14 -0
  36. package/lib/Table.js +185 -0
  37. package/lib/objectExtensions.js +361 -0
  38. package/matrix/matrix.js +50 -50
  39. package/matrix/matrixNode.html +144 -154
  40. package/matrix/matrixNode.js +26 -9
  41. package/monitor/BarGauge.js +8 -0
  42. package/monitor/Dataset.js +29 -0
  43. package/monitor/DialGauge.js +109 -0
  44. package/monitor/DialNeedle.js +36 -0
  45. package/monitor/Format.js +74 -0
  46. package/monitor/centerElement.js +14 -0
  47. package/monitor/compareElements.js +95 -0
  48. package/monitor/defs.js +23 -0
  49. package/monitor/extensions.js +906 -0
  50. package/monitor/functions.js +36 -0
  51. package/monitor/json2xml.js +103 -0
  52. package/monitor/monitorSystem.html +198 -0
  53. package/monitor/monitorSystem.js +322 -0
  54. package/monitor/svgHTML.js +179 -0
  55. package/monitor/svgObjects.js +64 -0
  56. package/package.json +31 -8
  57. package/test/00-objectExtensions.js +94 -0
  58. package/test/01-base.js +88 -0
  59. package/test/04-tables.js +33 -0
  60. package/test/data/.config.nodes.json +608 -0
  61. package/test/data/.config.nodes.json.backup +608 -0
  62. package/test/data/.config.runtime.json +4 -0
  63. package/test/data/.config.runtime.json.backup +3 -0
  64. package/test/data/.config.users.json +21 -0
  65. package/test/data/.config.users.json.backup +21 -0
  66. package/test/data/.flow.json.backup +3433 -0
  67. package/test/data/float32vector10.npy +0 -0
  68. package/test/data/flow.json +3433 -0
  69. package/test/data/int2matrix2x3.npy +0 -0
  70. package/test/data/package-lock.json +158 -0
  71. package/test/data/package.json +11 -0
  72. package/test/data/settings.js +544 -0
  73. package/test/dataAnalysisExtensions.js +472 -0
  74. package/test/dataAnalysisPCA.js +54 -0
  75. package/test/dataAnalysisSVD.js +31 -0
  76. package/test/euclideanDistance.js +2 -2
  77. package/test/matrix/02base.js +36 -0
  78. package/test/transformNumPy.js +132 -0
  79. package/testing/data/countries.csv +250 -0
  80. package/testing/hostAvailable.html +0 -2
  81. package/testing/load-injector.html +76 -21
  82. package/testing/load-injector.js +35 -54
  83. package/testing/test.js +1 -0
  84. package/transform/NumPy.js +303 -0
  85. package/transform/transform.html +73 -19
  86. package/transform/transform.js +144 -8
  87. package/documentation/LoadInjector.JPG +0 -0
package/testing/test.js CHANGED
@@ -31,6 +31,7 @@ function setError(msg,node,err) {
31
31
 
32
32
  function equalObjects(obj1,obj2,errorFactor) {
33
33
  if( obj1 === obj2 ) return true;
34
+ if(obj1 instanceof Buffer ) return Buffer.compare(obj1, obj2) === 0
34
35
  if( obj1 === Number.POSITIVE_INFINITY && obj2==="Infinity") return true;
35
36
  if( obj1 === Number.NEGATIVE_INFINITY && obj2==="-Infinity") return true;
36
37
  if( Number.isNaN(obj1) && obj2==="NaN") return true;
@@ -0,0 +1,303 @@
1
+ if(!BigInt.prototype.toJSON)
2
+ BigInt.prototype.toJSON = function(){return Number(this.toString())}
3
+ if(!Buffer.prototype.toBufferArray)
4
+ Buffer.prototype.toBufferArray = function() {return this.buffer.slice(this.byteOffset, this.byteOffset + this.byteLength)}
5
+ //const bufferToArrayBuffer = (b) => b.buffer.slice(b.byteOffset, b.byteOffset + b.byteLength);
6
+ const MAGIC_STRING = "\x93NUMPY"
7
+ const defaultVersionStr = "\x01\x00" // version 1.0
8
+ const defaultVersion = 1.0
9
+ const getTotalCells = (shape)=> shape.reduce((a, b) => a * b, 1);
10
+ const dataTypes = {
11
+ "|b1": {
12
+ bytes4DataType: 1,
13
+ name: "bool",
14
+ cellConstructor: Uint8Array,
15
+ setDataView: "setUint8"
16
+ },
17
+ "<u1": {
18
+ name: "uint8",
19
+ bytes4DataType: 8,
20
+ cellConstructor: Uint8Array,
21
+ setDataView: "setUint8"
22
+ },
23
+ "|u1": {
24
+ name: "uint8",
25
+ bytes4DataType: 8,
26
+ cellConstructor: Uint8Array,
27
+ setDataView: "setUint8"
28
+ },
29
+ "|i1": {
30
+ name: "int8",
31
+ bytes4DataType: 8,
32
+ cellConstructor: Int8Array,
33
+ setDataView: "setInt8"
34
+ },
35
+ "<u2": {
36
+ name: "uint16",
37
+ bytes4DataType: 16,
38
+ cellConstructor: Uint16Array,
39
+ setDataView: "setUint16"
40
+ },
41
+ "<i1": {
42
+ name: "int8",
43
+ bytes4DataType: 8,
44
+ cellConstructor: Int8Array,
45
+ setDataView: "setInt16"
46
+ },
47
+ "<i2": {
48
+ name: "int16",
49
+ bytes4DataType: 16,
50
+ cellConstructor: Int16Array,
51
+ setDataView: "setInt16"
52
+ },
53
+ "<u4": {
54
+ name: "uint32",
55
+ bytes4DataType: 32,
56
+ cellConstructor: Int32Array,
57
+ setDataView: "setInt32"
58
+ },
59
+ "<i4": {
60
+ name: "int32",
61
+ bytes4DataType: 32,
62
+ cellConstructor: Int32Array,
63
+ setDataView: "setInt32"
64
+ },
65
+ "<u8": {
66
+ name: "uint64",
67
+ bytes4DataType: 64,
68
+ cellConstructor: BigUint64Array,
69
+ setDataView: "setBigUint64"
70
+ },
71
+ "<i8": {
72
+ name: "int64",
73
+ bytes4DataType: 64,
74
+ cellConstructor: BigInt64Array,
75
+ setDataView: "setBigInt64"
76
+ },
77
+ "<f4": {
78
+ name: "float32",
79
+ bytes4DataType: 32,
80
+ cellConstructor: Float32Array,
81
+ setDataView: "setFloat32"
82
+ },
83
+ "<f8": {
84
+ name: "float64",
85
+ bytes4DataType: 64,
86
+ cellConstructor: Float64Array,
87
+ setDataView: "setFloat64"
88
+ },
89
+ };
90
+
91
+ /*
92
+ ‘S’ - swap dtype from current to opposite endian
93
+ {‘<’, ‘little’} - little endian
94
+ {‘>’, ‘big’} - big endian
95
+ {‘=’, ‘native’} - native order
96
+ {‘|’, ‘I’} - ignore (no change to byte order)
97
+
98
+ b boolean
99
+ i signed integer
100
+ u unsigned integer f floating-point
101
+ c complex floating-point
102
+ m timedelta
103
+ M datetime
104
+ O object
105
+ S (byte-)string
106
+ U Unicode
107
+ V void
108
+
109
+
110
+ * Float data
111
+ typestr == '>f4'
112
+ descr == [('','>f4')]
113
+
114
+ * Complex double
115
+ typestr == '>c8'
116
+ descr == [('real','>f4'), ('imag','>f4')]
117
+
118
+ * RGB Pixel data
119
+ typestr == '|V3'
120
+ descr == [('r','|u1'), ('g','|u1'), ('b','|u1')]
121
+
122
+ * Mixed endian (weird but could happen).
123
+ typestr == '|V8' (or '>u8')
124
+ descr == [('big','>i4'), ('little','<i4')]
125
+
126
+ * Nested structure
127
+ struct {
128
+ int ival;
129
+ struct {
130
+ unsigned short sval;
131
+ unsigned char bval;
132
+ unsigned char cval;
133
+ } sub;
134
+ }
135
+ typestr == '|V8' (or '<u8' if you want)
136
+ descr == [('ival','<i4'), ('sub', [('sval','<u2'), ('bval','|u1'), ('cval','|u1') ]) ]
137
+
138
+ * Nested array
139
+ struct {
140
+ int ival;
141
+ double data[16*4];
142
+ }
143
+ typestr == '|V516'
144
+ descr == [('ival','>i4'), ('data','>f8',(16,4))]
145
+
146
+ * Padded structure
147
+ struct {
148
+ int ival;
149
+ double dval;
150
+ }
151
+ typestr == '|V16'
152
+ descr == [('ival','>i4'),('','|V4'),('dval','>f8')]
153
+ */
154
+ const dataTypeToNumpyDescr = new Map([
155
+ ["float32", "<f4"],
156
+ ["float64", "<f8"],
157
+ ["int8", "<i1"],
158
+ ["int16", "<i2"],
159
+ ["int32", "<i4"],
160
+ ["int64", "<i8"],
161
+ ["uint8", "<u1"],
162
+ ["uint16", "<u2"],
163
+ ["uint32", "<u4"],
164
+ ["uint64", "<u8"],
165
+ ["bool", "|b1"],
166
+ ]);
167
+ /*
168
+ function array2Npy (tensor) {
169
+ const versionStr = "\x01\x00"; // version 1.0
170
+ const shapeStr = tensor.shape.join(",") + ","
171
+ const descr = dataTypeToNumpyDescr.get(tensor.dtype);
172
+ const header = "{'descr':"+descr+", 'fortran_order': false, 'shape': ("+shapeStr+"), }"
173
+ const unpaddedLength = MAGIC_STRING.length + versionStr.length + 2 + header.length;
174
+ // Spaces to 16-bit align.
175
+ const padding = " ".repeat((16 - (unpaddedLength % 16)) % 16)
176
+ header += padding;
177
+ // Number of bytes is in the Numpy descr
178
+ const bytesPerElement = Number.parseInt(descr[2], 10)
179
+ const dataLen = bytesPerElement * getTotalCells(tensor.shape)
180
+ const totalSize = unpaddedLength + padding.length + dataLen
181
+ const arrayBuffer = new ArrayBuffer(totalSize)
182
+ const view = new DataView(arrayBuffer)
183
+ let pos = writeStrToDataView(view, MAGIC_STRING + versionStr, 0)
184
+ view.setUint16(pos, header.length, true);
185
+ pos += 2 + writeStrToDataView(view, header, pos);
186
+ const setDataView = view.setDataView[dataTypes[descr].setDataView];
187
+ for (let i = 0; i < data.length; i++) {
188
+ view.setDataView(pos,data[i],true)
189
+ pos += bytesPerElement;
190
+ }
191
+ return arrayBuffer;
192
+ }
193
+ */
194
+ function writeStrToDataView(dataView, str, pos) {
195
+ const sl=str.length
196
+ for (let i = 0; i < sl; i++) {
197
+ dataView.setInt8(pos + i, str.charCodeAt(i));
198
+ }
199
+ return pos + sl;
200
+ }
201
+ function NumPy (tensor){
202
+ this.fortran_order=false
203
+ this.version=defaultVersion
204
+ return this.parse(tensor)
205
+ }
206
+ NumPy.prototype.getBytes4DataType = function(){
207
+ const descr = dataTypeToNumpyDescr.get(this.dtype);
208
+ return Number.parseInt(descr[2], 10)
209
+ }
210
+ NumPy.prototype.getDesc = function() {
211
+ return dataTypeToNumpyDescr.get(this.dtype);
212
+ }
213
+ NumPy.prototype.setDType = function(dataType) {
214
+ this.dataType=dataType
215
+ const descr=dataTypeToNumpyDescr.get(this.dataType);
216
+ if(descr==null) throw Error("data type not found for "+dataType)
217
+ this.setDescr(descr)
218
+ return this
219
+ }
220
+ NumPy.prototype.setDescr = function(descr) {
221
+ this.descr=descr
222
+ const dataTypeDetails = dataTypes[this.descr];
223
+ this.dataType=dataTypeDetails.name
224
+ this.setDataView = dataTypeDetails.setDataView;
225
+ this.cellConstructor = dataTypeDetails.cellConstructor
226
+ this.bytes4DataType = Number.parseInt(this.descr[2], 10)
227
+ return this
228
+ }
229
+ NumPy.prototype.toNpy = function () {
230
+ const versionStr = "\x01\x00"; // version 1.0
231
+ const shapeStr = this.shape.join(",") + ","
232
+ let header = "{'descr':"+this.descr+", 'fortran_order': false, 'shape': ("+shapeStr+"), }"
233
+ const unpaddedLength = MAGIC_STRING.length + versionStr.length + 2 + header.length;
234
+ // 16-bit align with spaces
235
+ header += " ".repeat((16 - (unpaddedLength % 16)) % 16);
236
+ // SIze of Npy
237
+ const totalSize = header.length + this.bytes4DataType * getTotalCells(this.shape)
238
+ // const totalSize = unpaddedLength + padding.length + this.bytes4DataType * getTotalCells(this.shape)
239
+ const arrayBuffer = new ArrayBuffer(totalSize)
240
+ const view = new DataView(arrayBuffer)
241
+ let pos = writeStrToDataView(view, MAGIC_STRING + defaultVersionStr, 0)
242
+ view.setUint16(pos, header.length, true);
243
+ pos += 2 + writeStrToDataView(view, header, pos);
244
+ const data=this.dataVector
245
+ // const setDataView = view[this.setDataView];
246
+ for (let i = 0; i < data.length; i++) {
247
+ // setDataView(pos,data[i],true)
248
+ view[pos]=data[i]
249
+ pos += this.bytes4DataType;
250
+ }
251
+ return arrayBuffer;
252
+ }
253
+ NumPy.prototype.toNpyBuffer = function () {
254
+ return Buffer.from(this.toNpy())
255
+ }
256
+ NumPy.prototype.parse = function(contentIn={dataType:"int8",
257
+ shape:[1],
258
+ dataVector:new int8Array(0)}) {
259
+ if(!contentIn instanceof Object) throw Error("not an object")
260
+ if(contentIn.hasOwnProperty("dataVector")) {
261
+ Object.assign(this,contentIn)
262
+ if(contentIn.dataType) this.setDType(contentIn.dataType)
263
+ else if(contentIn.descr) this.setDescr(contentIn.descr)
264
+ else throw Error("data type not defined")
265
+ if(this.shape==null) this.shape=[1];
266
+ return this
267
+ }
268
+ return this.parseNpy(contentIn)
269
+ }
270
+ NumPy.prototype.parseNpy = function(npyContentIn) {
271
+ // this.npyContent=npyContentIn instanceof ArrayBuffer ? npyContentIn : bufferToArrayBuffer(npyContentIn)
272
+ this.npyContent=npyContentIn instanceof ArrayBuffer ? npyContentIn : npyContentIn.toBufferArray()
273
+ const headerLength = new DataView(this.npyContent.slice(8, 10)).getUint8(0)
274
+ const offsetBytes = 10 + headerLength;
275
+ const headerContents = new TextDecoder("utf-8").decode(
276
+ new Uint8Array(this.npyContent.slice(10, 10 + headerLength))
277
+ );
278
+ const header = JSON.parse(
279
+ headerContents
280
+ .toLowerCase() // True -> true
281
+ .replace(/'/g, '"')
282
+ .replace("(", "[")
283
+ .replace(/,*\),*/g, "]")
284
+ );
285
+ this.setDescr(header.descr);
286
+ this.shape = header.shape
287
+ this.dataVector=new this.cellConstructor(this.npyContent, offsetBytes)
288
+ if(header.fortran_order) this.fortran_order=header.fortran_order
289
+ return this
290
+ }
291
+ NumPy.prototype.toSerializable = function() {
292
+ return {
293
+ dataType:this.dataType,
294
+ fortran_order: this.fortran_order,
295
+ shape:this.shape,
296
+ version:this.version,
297
+ dataVector:this.dataVector
298
+ }
299
+ }
300
+ NumPy.prototype.toString = function() {
301
+ return JSON.stringify(this.toSerializable())
302
+ }
303
+ module.exports=NumPy;
@@ -30,7 +30,8 @@
30
30
  schemaType: {value:"json"},
31
31
  skipLeading: {value:0},
32
32
  skipTrailing: {value:0},
33
- delimiter: {value:",",required:true}
33
+ delimiter: {value:",",required:true},
34
+ compressionType: {value:"gzip"}
34
35
  },
35
36
  inputs: 1,
36
37
  outputs: 2,
@@ -43,11 +44,51 @@
43
44
  return this.name ||this.actionSource+"=>"+this.actionTarget|| "Transform";
44
45
  },
45
46
  oneditprepare: function() {
46
- const actionTarget=this.actionTarget
47
+ const actionTarget=this.actionTarget;
48
+ $("#node-input-actionSource").typedInput({type:"actionSource", types:[{
49
+ value: "actionSource",
50
+ options: [
51
+ { value: "Array", label: "Array"},
52
+ { value: "AVRO", label: "AVRO"},
53
+ { value: "Buffer", label: "Buffer"},
54
+ { value: "Compressed", label: "Compressed"},
55
+ { value: "Confluence", label: "Confluence"},
56
+ { value: "CSVWithHeader", label: "CSV with header"},
57
+ { value: "CSV", label: "CSV"},
58
+ { value: "ISO8385", label: "ISO 8583"},
59
+ { value: "JSON", label: "JSON"},
60
+ { value: "npy", label: "npy"},
61
+ { value: "NumPyObject", label: "NumPy Obect"},
62
+ { value: "String", label: "String"},
63
+ { value: "snappy", label: "Snappy"},
64
+ { value: "path", label: "Path"},
65
+ { value: "XLSX", label: "XLSX (excel)"},
66
+ { value: "XLSXObject", label: "XLSX object (excel)"},
67
+ { value: "XML", label: "XML"}
68
+ ]
69
+ }]});
70
+ $("#node-input-compressionType").typedInput({type:"compression", types:[{
71
+ value: "compression",
72
+ options: [
73
+ { value: "setGzip", label: "gzip"},
74
+ { value: "setGzipSpeed", label: "gzip speed"},
75
+ { value: "setGzipCompression", label: "gzip compression"},
76
+ { value: "setZlib", label: "zip"},
77
+ { value: "setZlibSpeed", label: "zip speed"},
78
+ { value: "setZlibCompression", label: "zip compression"},
79
+ { value: "setLzma", label: "Lempel-Ziv-Markov speed"},
80
+ { value: "setLzmaCompression", label: "Lempel-Ziv-Markov compression"},
81
+ { value: "setBrotli", label: "Brotli"},
82
+ { value: "setSnappy", label: "Snappy"},
83
+ { value: "setFlate", label: "Deflate/Inflate"}
84
+ ]
85
+ }]});
86
+
47
87
  $("#node-input-actionSource").change(function() {
48
88
  const actionSource=$(this).val();
49
89
  $(".form-row-http-in-skip").hide();
50
90
  $(".form-row-http-in-schema").hide();
91
+ $(".form-row-http-in-compressionType").hide();
51
92
  if(!['CSV','CSVWithHeader'].includes(actionSource)) {
52
93
  $(".form-row-http-in-csv").hide();
53
94
  }
@@ -62,10 +103,19 @@
62
103
  options["XLSXObject"]="XLSX object (excel)";
63
104
  break;
64
105
  case 'AVRO':
106
+ case 'Buffer':
107
+ options["Compressed"]="Compressed";
108
+ break;
65
109
  case 'Confluence':
66
110
  options["JSON"]="JSON";
67
111
  $(".form-row-http-in-schema").show();
68
112
  break;
113
+ case 'Compressed':
114
+ options["JSON"]="JSON";
115
+ options["String"]="String";
116
+ options["Buffer"]="Buffer";
117
+ $(".form-row-http-in-compressionType").show();
118
+ break;
69
119
  case 'CSVWithHeader':
70
120
  options["JSON"]="JSON";
71
121
  case 'CSV':
@@ -82,18 +132,28 @@
82
132
  case 'JSON':
83
133
  options["Array"]="Array";
84
134
  options["AVRO"]="AVRO";
135
+ options["Compressed"]="Compressed";
85
136
  options["Confluence"]="Confluence";
86
- options["CSVWithHeader"]="CSV with header";
87
137
  options["CSV"]="CSV";
88
138
  options["ISO8385"]="ISO 8583";
89
139
  options["HTML"]="HTML";
90
140
  options["JSON"]="JSON";
91
141
  options["Messages"]="Messages";
142
+ options["npy"]="npy";
143
+ options["NumPyObject"]="NumPy Object";
92
144
  options["String"]="String";
93
145
  options["XLSX"]="XLSX";
94
146
  options["XLSXObject"]="XLSX Object";
95
147
  options["XML"]="XML";
96
148
  break;
149
+ case 'npy':
150
+ options["JSON"]="JSON";
151
+ options["NumPyObject"]="NumPy Object";
152
+ break;
153
+ case 'NumPyObject':
154
+ options["JSON"]="JSON";
155
+ break;
156
+
97
157
  case 'path':
98
158
  options["Basename"]="basename";
99
159
  options["Dirname"]="dirname";
@@ -108,6 +168,7 @@
108
168
  options["Compress"]="Compress";
109
169
  break;
110
170
  case 'String':
171
+ options["Compressed"]="Compressed";
111
172
  options["JSON"]="JSON";
112
173
  break;
113
174
  case 'XLSX':
@@ -145,11 +206,15 @@
145
206
  if(!['CSV','CSVWithHeader'].includes(actionTarget)) {
146
207
  $(".form-row-http-in-csv").hide();
147
208
  }
209
+ $(".form-row-http-in-compressionType").hide();
148
210
  switch (actionTarget) {
149
211
  case 'AVRO':
150
212
  case 'Confluence':
151
213
  $(".form-row-http-in-schema").show();
152
214
  break;
215
+ case 'Compressed':
216
+ $(".form-row-http-in-compressionType").show();
217
+ break;
153
218
  case 'CSV':
154
219
  $(".form-row-http-in-csv").show();
155
220
  break;
@@ -187,21 +252,7 @@
187
252
  </div>
188
253
  <div class="form-row">
189
254
  <label for="node-input-actionSource"><i class="fa fa-list-ul"></i> Source Type </label>
190
- <select id="node-input-actionSource" placeholder="actionSource">
191
- <option value="Array">Array</option>
192
- <option value="AVRO">AVRO</option>
193
- <option value="Confluence">Confluence</option>
194
- <option value="CSVWithHeader">CSV with header</option>
195
- <option value="CSV">CSV</option>
196
- <option value="ISO8385">ISO 8583</option>
197
- <option value="JSON">JSON</option>
198
- <option value="String">String</option>
199
- <option value="snappy">snappy</option>
200
- <option value="path">Path</option>
201
- <option value="XLSX">XLSX (excel)</option>
202
- <option value="XLSXObject">XLSX object (excel)</option>
203
- <option value="XML">XML</option>
204
- </select>
255
+ <input type="text" id="node-input-actionSource">
205
256
  </div>
206
257
  <div class="form-row">
207
258
  <label for="node-input-actionTarget"><i class="fa fa-list-ul"></i> Target Type </label>
@@ -227,7 +278,10 @@
227
278
  <input type="text" id="node-input-schema" style="width:70%">
228
279
  <input type="hidden" id="node-input-schemaType">
229
280
  </div>
230
-
281
+ <div class="form-row form-row-http-in-compressionType hide">
282
+ <label for="node-input-compressionType"><i class="fa fa-envelope"></i> <span data-i18n="common.label.compressionType"> Type </span></label>
283
+ <input type="text" id="node-input-compressionType">
284
+ </div>
231
285
 
232
286
  </script>
233
287