Commit ffe16b8dfb4fe4277c12a0a66b83584fc6a3bcfc

Authored by YevhenBondarenko
2 parents fe2427e9 34eef038

Merge remote-tracking branch 'upstream/master' into feature/bulk-import/device-credentials

# Conflicts:
#	ui-ngx/src/app/modules/home/components/import-export/import-export.service.ts
Showing 87 changed files with 598 additions and 1617 deletions

Too many changes to show.

To preserve performance only 87 of 115 files are displayed.

@@ -20,7 +20,7 @@ @@ -20,7 +20,7 @@
20 <modelVersion>4.0.0</modelVersion> 20 <modelVersion>4.0.0</modelVersion>
21 <parent> 21 <parent>
22 <groupId>org.thingsboard</groupId> 22 <groupId>org.thingsboard</groupId>
23 - <version>3.3.1-SNAPSHOT</version> 23 + <version>3.3.2-SNAPSHOT</version>
24 <artifactId>thingsboard</artifactId> 24 <artifactId>thingsboard</artifactId>
25 </parent> 25 </parent>
26 <artifactId>application</artifactId> 26 <artifactId>application</artifactId>
@@ -106,7 +106,7 @@ @@ -106,7 +106,7 @@
106 ], 106 ],
107 "templateHtml": "<canvas id=\"pieChart\"></canvas>\n", 107 "templateHtml": "<canvas id=\"pieChart\"></canvas>\n",
108 "templateCss": "", 108 "templateCss": "",
109 - "controllerScript": "self.onInit = function() {\n $scope = self.ctx.$scope;\n utils = $scope.$injector.get(self.ctx.servicesMap.get('utils'));\n settings = utils.deepClone(self.ctx.settings) || {};\n settings.showTooltip = utils.defaultValue(settings.showTooltip, true);\n \n Chart.defaults.global.tooltips.enabled = settings.showTooltip;\n \n var pieData = {\n labels: [],\n datasets: []\n };\n\n var dataset = {\n data: [],\n backgroundColor: [],\n borderColor: [],\n borderWidth: [],\n hoverBackgroundColor: []\n }\n\n pieData.datasets.push(dataset);\n \n for (var i = 0; i < self.ctx.data.length; i++) {\n var dataKey = self.ctx.data[i].dataKey;\n var units = dataKey.units && dataKey.units.length ? dataKey.units : self.ctx.units;\n units = units ? (' (' + units + ')') : '';\n pieData.labels.push(dataKey.label + units);\n dataset.data.push(0);\n var hoverBackgroundColor = tinycolor(dataKey.color).lighten(15);\n var borderColor = tinycolor(dataKey.color).darken();\n dataset.backgroundColor.push(dataKey.color);\n dataset.borderColor.push('#fff');\n dataset.borderWidth.push(5);\n dataset.hoverBackgroundColor.push(hoverBackgroundColor.toRgbString());\n }\n\n var ctx = $('#pieChart', self.ctx.$container);\n self.ctx.chart = new Chart(ctx, {\n type: 'polarArea',\n data: pieData,\n options: {\n responsive: false,\n maintainAspectRatio: false\n }\n });\n \n self.onResize();\n}\n\nself.onDataUpdated = function() {\n for (var i = 0; i < self.ctx.data.length; i++) {\n var cellData = self.ctx.data[i];\n if (cellData.data.length > 0) {\n var decimals;\n if (typeof cellData.dataKey.decimals !== 'undefined' \n && cellData.dataKey.decimals !== null ) {\n decimals = cellData.dataKey.decimals; \n } else {\n decimals = self.ctx.decimals;\n }\n var tvPair = cellData.data[cellData.data.length - 1];\n var value = self.ctx.utils.formatValue(tvPair[1], decimals);\n self.ctx.chart.data.datasets[0].data[i] = parseFloat(value);\n }\n }\n self.ctx.chart.update();\n}\n\nself.onResize = function() {\n if (self.ctx.height >= 70) {\n try {\n self.ctx.chart.resize();\n } catch (e) {}\n }\n}\n", 109 + "controllerScript": "self.onInit = function() {\n $scope = self.ctx.$scope;\n utils = $scope.$injector.get(self.ctx.servicesMap.get('utils'));\n settings = utils.deepClone(self.ctx.settings) || {};\n settings.showTooltip = utils.defaultValue(settings.showTooltip, true);\n \n Chart.defaults.global.tooltips.enabled = settings.showTooltip;\n \n var pieData = {\n labels: [],\n datasets: []\n };\n\n var dataset = {\n data: [],\n backgroundColor: [],\n borderColor: [],\n borderWidth: [],\n hoverBackgroundColor: []\n }\n\n pieData.datasets.push(dataset);\n \n for (var i = 0; i < self.ctx.data.length; i++) {\n var dataKey = self.ctx.data[i].dataKey;\n var units = dataKey.units && dataKey.units.length ? dataKey.units : self.ctx.units;\n units = units ? (' (' + units + ')') : '';\n pieData.labels.push(dataKey.label + units);\n dataset.data.push(0);\n var hoverBackgroundColor = tinycolor(dataKey.color).lighten(15);\n var borderColor = tinycolor(dataKey.color).darken();\n dataset.backgroundColor.push(dataKey.color);\n dataset.borderColor.push('#fff');\n dataset.borderWidth.push(5);\n dataset.hoverBackgroundColor.push(hoverBackgroundColor.toRgbString());\n }\n \n var floatingPoint;\n if (typeof self.ctx.decimals !== 'undefined' && self.ctx.decimals !== null) {\n floatingPoint = self.ctx.widget.config.decimals;\n } else {\n floatingPoint = 2;\n }\n\n\n var ctx = $('#pieChart', self.ctx.$container);\n self.ctx.chart = new Chart(ctx, {\n type: 'polarArea',\n data: pieData,\n options: {\n responsive: false,\n maintainAspectRatio: false,\n scale: {\n ticks: {\n callback: function(tick) {\n \treturn tick.toFixed(floatingPoint);\n }\n }\n }\n }\n });\n \n self.onResize();\n}\n\nself.onDataUpdated = function() {\n for (var i = 0; i < self.ctx.data.length; i++) {\n var cellData = self.ctx.data[i];\n if (cellData.data.length > 0) {\n var decimals;\n if (typeof cellData.dataKey.decimals !== 'undefined' \n && cellData.dataKey.decimals !== null ) {\n decimals = cellData.dataKey.decimals; \n } else {\n decimals = self.ctx.decimals;\n }\n var tvPair = cellData.data[cellData.data.length - 1];\n var value = self.ctx.utils.formatValue(tvPair[1], decimals);\n self.ctx.chart.data.datasets[0].data[i] = parseFloat(value);\n }\n }\n self.ctx.chart.update();\n}\n\nself.onResize = function() {\n if (self.ctx.height >= 70) {\n try {\n self.ctx.chart.resize();\n } catch (e) {}\n }\n}\n",
110 "settingsSchema": "{\n \"schema\": {\n \"type\": \"object\",\n \"title\": \"EntitiesTableSettings\",\n \"properties\": {\n \"showTooltip\": {\n \"title\": \"Show Tooltip\",\n \"type\": \"boolean\",\n \"default\": true\n }\n },\n \"required\": []\n },\n \"form\": [\n \"showTooltip\"\n ]\n}", 110 "settingsSchema": "{\n \"schema\": {\n \"type\": \"object\",\n \"title\": \"EntitiesTableSettings\",\n \"properties\": {\n \"showTooltip\": {\n \"title\": \"Show Tooltip\",\n \"type\": \"boolean\",\n \"default\": true\n }\n },\n \"required\": []\n },\n \"form\": [\n \"showTooltip\"\n ]\n}",
111 "dataKeySettingsSchema": "{}\n", 111 "dataKeySettingsSchema": "{}\n",
112 "defaultConfig": "{\"datasources\":[{\"type\":\"function\",\"name\":\"function\",\"dataKeys\":[{\"name\":\"f(x)\",\"type\":\"function\",\"label\":\"First\",\"color\":\"#2196f3\",\"settings\":{},\"_hash\":0.15479322438769105,\"funcBody\":\"var value = (prevValue-50) + Math.random() * 2 - 1;\\nif (value < 0) {\\n\\tvalue = 0;\\n} else if (value > 100) {\\n\\tvalue = 100;\\n}\\nreturn value+50;\"},{\"name\":\"f(x)\",\"type\":\"function\",\"label\":\"Second\",\"color\":\"#4caf50\",\"settings\":{},\"_hash\":0.545701115289893,\"funcBody\":\"var value = (prevValue-20) + Math.random() * 2 - 1;\\nif (value < 0) {\\n\\tvalue = 0;\\n} else if (value > 100) {\\n\\tvalue = 100;\\n}\\nreturn value+20;\"},{\"name\":\"f(x)\",\"type\":\"function\",\"label\":\"Third\",\"color\":\"#f44336\",\"settings\":{},\"_hash\":0.2592906835158064,\"funcBody\":\"var value = (prevValue-40) + Math.random() * 2 - 1;\\nif (value < 0) {\\n\\tvalue = 0;\\n} else if (value > 100) {\\n\\tvalue = 100;\\n}\\nreturn value+40;\"},{\"name\":\"f(x)\",\"type\":\"function\",\"label\":\"Fourth\",\"color\":\"#ffc107\",\"settings\":{},\"_hash\":0.12880275585455747,\"funcBody\":\"var value = (prevValue-50) + Math.random() * 2 - 1;\\nif (value < 0) {\\n\\tvalue = 0;\\n} else if (value > 100) {\\n\\tvalue = 100;\\n}\\nreturn value+50;\"},{\"name\":\"f(x)\",\"type\":\"function\",\"label\":\"Fifth\",\"color\":\"#607d8b\",\"settings\":{},\"_hash\":0.2074391823443591,\"funcBody\":\"var value = (prevValue-50) + Math.random() * 2 - 1;\\nif (value < 0) {\\n\\tvalue = 0;\\n} else if (value > 100) {\\n\\tvalue = 100;\\n}\\nreturn value+50;\"}]}],\"timewindow\":{\"realtime\":{\"timewindowMs\":60000}},\"showTitle\":true,\"backgroundColor\":\"#fff\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"padding\":\"8px\",\"settings\":{},\"title\":\"Polar Area - Chart.js\"}" 112 "defaultConfig": "{\"datasources\":[{\"type\":\"function\",\"name\":\"function\",\"dataKeys\":[{\"name\":\"f(x)\",\"type\":\"function\",\"label\":\"First\",\"color\":\"#2196f3\",\"settings\":{},\"_hash\":0.15479322438769105,\"funcBody\":\"var value = (prevValue-50) + Math.random() * 2 - 1;\\nif (value < 0) {\\n\\tvalue = 0;\\n} else if (value > 100) {\\n\\tvalue = 100;\\n}\\nreturn value+50;\"},{\"name\":\"f(x)\",\"type\":\"function\",\"label\":\"Second\",\"color\":\"#4caf50\",\"settings\":{},\"_hash\":0.545701115289893,\"funcBody\":\"var value = (prevValue-20) + Math.random() * 2 - 1;\\nif (value < 0) {\\n\\tvalue = 0;\\n} else if (value > 100) {\\n\\tvalue = 100;\\n}\\nreturn value+20;\"},{\"name\":\"f(x)\",\"type\":\"function\",\"label\":\"Third\",\"color\":\"#f44336\",\"settings\":{},\"_hash\":0.2592906835158064,\"funcBody\":\"var value = (prevValue-40) + Math.random() * 2 - 1;\\nif (value < 0) {\\n\\tvalue = 0;\\n} else if (value > 100) {\\n\\tvalue = 100;\\n}\\nreturn value+40;\"},{\"name\":\"f(x)\",\"type\":\"function\",\"label\":\"Fourth\",\"color\":\"#ffc107\",\"settings\":{},\"_hash\":0.12880275585455747,\"funcBody\":\"var value = (prevValue-50) + Math.random() * 2 - 1;\\nif (value < 0) {\\n\\tvalue = 0;\\n} else if (value > 100) {\\n\\tvalue = 100;\\n}\\nreturn value+50;\"},{\"name\":\"f(x)\",\"type\":\"function\",\"label\":\"Fifth\",\"color\":\"#607d8b\",\"settings\":{},\"_hash\":0.2074391823443591,\"funcBody\":\"var value = (prevValue-50) + Math.random() * 2 - 1;\\nif (value < 0) {\\n\\tvalue = 0;\\n} else if (value > 100) {\\n\\tvalue = 100;\\n}\\nreturn value+50;\"}]}],\"timewindow\":{\"realtime\":{\"timewindowMs\":60000}},\"showTitle\":true,\"backgroundColor\":\"#fff\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"padding\":\"8px\",\"settings\":{},\"title\":\"Polar Area - Chart.js\"}"
@@ -128,7 +128,7 @@ @@ -128,7 +128,7 @@
128 ], 128 ],
129 "templateHtml": "<canvas id=\"radarChart\"></canvas>\n", 129 "templateHtml": "<canvas id=\"radarChart\"></canvas>\n",
130 "templateCss": "", 130 "templateCss": "",
131 - "controllerScript": "self.onInit = function() {\n $scope = self.ctx.$scope;\n utils = $scope.$injector.get(self.ctx.servicesMap.get('utils'));\n settings = utils.deepClone(self.ctx.settings) || {};\n settings.showTooltip = utils.defaultValue(settings.showTooltip, true);\n \n Chart.defaults.global.tooltips.enabled = settings.showTooltip;\n \n var barData = {\n labels: [],\n datasets: []\n };\n\n var backgroundColor = tinycolor(self.ctx.data[0].dataKey.color);\n backgroundColor.setAlpha(0.2);\n var borderColor = tinycolor(self.ctx.data[0].dataKey.color);\n borderColor.setAlpha(1);\n var dataset = {\n label: self.ctx.datasources[0].name,\n data: [],\n backgroundColor: backgroundColor.toRgbString(),\n borderColor: borderColor.toRgbString(),\n pointBackgroundColor: borderColor.toRgbString(),\n pointBorderColor: borderColor.darken().toRgbString(),\n borderWidth: 1\n }\n \n barData.datasets.push(dataset);\n \n for (var i = 0; i < self.ctx.data.length; i++) {\n var dataKey = self.ctx.data[i].dataKey;\n var units = dataKey.units && dataKey.units.length ? dataKey.units : self.ctx.units;\n units = units ? (' (' + units + ')') : '';\n barData.labels.push(dataKey.label + units);\n dataset.data.push(0);\n }\n\n var ctx = $('#radarChart', self.ctx.$container);\n self.ctx.chart = new Chart(ctx, {\n type: 'radar',\n data: barData,\n options: {\n responsive: false,\n maintainAspectRatio: false\n }\n });\n \n self.onResize();\n}\n\nself.onDataUpdated = function() {\n for (var i = 0; i < self.ctx.data.length; i++) {\n var cellData = self.ctx.data[i];\n if (cellData.data.length > 0) {\n var decimals;\n if (typeof cellData.dataKey.decimals !== 'undefined' \n && cellData.dataKey.decimals !== null ) {\n decimals = cellData.dataKey.decimals; \n } else {\n decimals = self.ctx.decimals;\n }\n var tvPair = cellData.data[cellData.data.length - 1];\n var value = self.ctx.utils.formatValue(tvPair[1], decimals);\n self.ctx.chart.data.datasets[0].data[i] = parseFloat(value);\n }\n } \n self.ctx.chart.update();\n}\n\nself.onResize = function() {\n if (self.ctx.height >= 70) {\n self.ctx.chart.resize();\n }\n}\n", 131 + "controllerScript": "self.onInit = function() {\n $scope = self.ctx.$scope;\n utils = $scope.$injector.get(self.ctx.servicesMap.get('utils'));\n settings = utils.deepClone(self.ctx.settings) || {};\n settings.showTooltip = utils.defaultValue(settings.showTooltip, true);\n \n Chart.defaults.global.tooltips.enabled = settings.showTooltip;\n \n var barData = {\n labels: [],\n datasets: []\n };\n\n var backgroundColor = tinycolor(self.ctx.data[0].dataKey.color);\n backgroundColor.setAlpha(0.2);\n var borderColor = tinycolor(self.ctx.data[0].dataKey.color);\n borderColor.setAlpha(1);\n var dataset = {\n label: self.ctx.datasources[0].name,\n data: [],\n backgroundColor: backgroundColor.toRgbString(),\n borderColor: borderColor.toRgbString(),\n pointBackgroundColor: borderColor.toRgbString(),\n pointBorderColor: borderColor.darken().toRgbString(),\n borderWidth: 1\n }\n \n barData.datasets.push(dataset);\n \n for (var i = 0; i < self.ctx.data.length; i++) {\n var dataKey = self.ctx.data[i].dataKey;\n var units = dataKey.units && dataKey.units.length ? dataKey.units : self.ctx.units;\n units = units ? (' (' + units + ')') : '';\n barData.labels.push(dataKey.label + units);\n dataset.data.push(0);\n }\n \n var floatingPoint;\n if (typeof self.ctx.decimals !== 'undefined' && self.ctx.decimals !== null) {\n floatingPoint = self.ctx.widget.config.decimals;\n } else {\n floatingPoint = 2;\n }\n\n var ctx = $('#radarChart', self.ctx.$container);\n self.ctx.chart = new Chart(ctx, {\n type: 'radar',\n data: barData,\n options: {\n responsive: false,\n maintainAspectRatio: false,\n scale: {\n ticks: {\n callback: function(tick) {\n \treturn tick.toFixed(floatingPoint);\n }\n }\n }\n }\n });\n \n self.onResize();\n}\n\nself.onDataUpdated = function() {\n for (var i = 0; i < self.ctx.data.length; i++) {\n var cellData = self.ctx.data[i];\n if (cellData.data.length > 0) {\n var decimals;\n if (typeof cellData.dataKey.decimals !== 'undefined' \n && cellData.dataKey.decimals !== null ) {\n decimals = cellData.dataKey.decimals; \n } else {\n decimals = self.ctx.decimals;\n }\n var tvPair = cellData.data[cellData.data.length - 1];\n var value = self.ctx.utils.formatValue(tvPair[1], decimals);\n self.ctx.chart.data.datasets[0].data[i] = parseFloat(value);\n }\n } \n self.ctx.chart.update();\n}\n\nself.onResize = function() {\n if (self.ctx.height >= 70) {\n self.ctx.chart.resize();\n }\n}\n",
132 "settingsSchema": "{\n \"schema\": {\n \"type\": \"object\",\n \"title\": \"EntitiesTableSettings\",\n \"properties\": {\n \"showTooltip\": {\n \"title\": \"Show Tooltip\",\n \"type\": \"boolean\",\n \"default\": true\n }\n },\n \"required\": []\n },\n \"form\": [\n \"showTooltip\"\n ]\n}", 132 "settingsSchema": "{\n \"schema\": {\n \"type\": \"object\",\n \"title\": \"EntitiesTableSettings\",\n \"properties\": {\n \"showTooltip\": {\n \"title\": \"Show Tooltip\",\n \"type\": \"boolean\",\n \"default\": true\n }\n },\n \"required\": []\n },\n \"form\": [\n \"showTooltip\"\n ]\n}",
133 "dataKeySettingsSchema": "{}\n", 133 "dataKeySettingsSchema": "{}\n",
134 "defaultConfig": "{\"datasources\":[{\"type\":\"function\",\"name\":\"function\",\"dataKeys\":[{\"name\":\"f(x)\",\"type\":\"function\",\"label\":\"First\",\"color\":\"#2196f3\",\"settings\":{},\"_hash\":0.15479322438769105,\"funcBody\":\"var value = (prevValue-50) + Math.random() * 2 - 1;\\nif (value < 0) {\\n\\tvalue = 0;\\n} else if (value > 100) {\\n\\tvalue = 100;\\n}\\nreturn value+50;\"},{\"name\":\"f(x)\",\"type\":\"function\",\"label\":\"Second\",\"color\":\"#4caf50\",\"settings\":{},\"_hash\":0.545701115289893,\"funcBody\":\"var value = (prevValue-20) + Math.random() * 2 - 1;\\nif (value < 0) {\\n\\tvalue = 0;\\n} else if (value > 100) {\\n\\tvalue = 100;\\n}\\nreturn value+20;\"},{\"name\":\"f(x)\",\"type\":\"function\",\"label\":\"Third\",\"color\":\"#f44336\",\"settings\":{},\"_hash\":0.2592906835158064,\"funcBody\":\"var value = (prevValue-40) + Math.random() * 2 - 1;\\nif (value < 0) {\\n\\tvalue = 0;\\n} else if (value > 100) {\\n\\tvalue = 100;\\n}\\nreturn value+40;\"},{\"name\":\"f(x)\",\"type\":\"function\",\"label\":\"Fourth\",\"color\":\"#ffc107\",\"settings\":{},\"_hash\":0.12880275585455747,\"funcBody\":\"var value = (prevValue-50) + Math.random() * 2 - 1;\\nif (value < 0) {\\n\\tvalue = 0;\\n} else if (value > 100) {\\n\\tvalue = 100;\\n}\\nreturn value+50;\"}]}],\"timewindow\":{\"realtime\":{\"timewindowMs\":60000}},\"showTitle\":true,\"backgroundColor\":\"#fff\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"padding\":\"8px\",\"settings\":{},\"title\":\"Radar - Chart.js\"}" 134 "defaultConfig": "{\"datasources\":[{\"type\":\"function\",\"name\":\"function\",\"dataKeys\":[{\"name\":\"f(x)\",\"type\":\"function\",\"label\":\"First\",\"color\":\"#2196f3\",\"settings\":{},\"_hash\":0.15479322438769105,\"funcBody\":\"var value = (prevValue-50) + Math.random() * 2 - 1;\\nif (value < 0) {\\n\\tvalue = 0;\\n} else if (value > 100) {\\n\\tvalue = 100;\\n}\\nreturn value+50;\"},{\"name\":\"f(x)\",\"type\":\"function\",\"label\":\"Second\",\"color\":\"#4caf50\",\"settings\":{},\"_hash\":0.545701115289893,\"funcBody\":\"var value = (prevValue-20) + Math.random() * 2 - 1;\\nif (value < 0) {\\n\\tvalue = 0;\\n} else if (value > 100) {\\n\\tvalue = 100;\\n}\\nreturn value+20;\"},{\"name\":\"f(x)\",\"type\":\"function\",\"label\":\"Third\",\"color\":\"#f44336\",\"settings\":{},\"_hash\":0.2592906835158064,\"funcBody\":\"var value = (prevValue-40) + Math.random() * 2 - 1;\\nif (value < 0) {\\n\\tvalue = 0;\\n} else if (value > 100) {\\n\\tvalue = 100;\\n}\\nreturn value+40;\"},{\"name\":\"f(x)\",\"type\":\"function\",\"label\":\"Fourth\",\"color\":\"#ffc107\",\"settings\":{},\"_hash\":0.12880275585455747,\"funcBody\":\"var value = (prevValue-50) + Math.random() * 2 - 1;\\nif (value < 0) {\\n\\tvalue = 0;\\n} else if (value > 100) {\\n\\tvalue = 100;\\n}\\nreturn value+50;\"}]}],\"timewindow\":{\"realtime\":{\"timewindowMs\":60000}},\"showTitle\":true,\"backgroundColor\":\"#fff\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"padding\":\"8px\",\"settings\":{},\"title\":\"Radar - Chart.js\"}"
@@ -231,10 +231,6 @@ public class ActorSystemContext { @@ -231,10 +231,6 @@ public class ActorSystemContext {
231 231
232 @Autowired 232 @Autowired
233 @Getter 233 @Getter
234 - private JsExecutorService jsExecutor;  
235 -  
236 - @Autowired  
237 - @Getter  
238 private MailExecutorService mailExecutor; 234 private MailExecutorService mailExecutor;
239 235
240 @Autowired 236 @Autowired
@@ -491,22 +487,26 @@ public class ActorSystemContext { @@ -491,22 +487,26 @@ public class ActorSystemContext {
491 } 487 }
492 488
493 public void persistDebugInput(TenantId tenantId, EntityId entityId, TbMsg tbMsg, String relationType) { 489 public void persistDebugInput(TenantId tenantId, EntityId entityId, TbMsg tbMsg, String relationType) {
494 - persistDebugAsync(tenantId, entityId, "IN", tbMsg, relationType, null); 490 + persistDebugAsync(tenantId, entityId, "IN", tbMsg, relationType, null, null);
495 } 491 }
496 492
497 public void persistDebugInput(TenantId tenantId, EntityId entityId, TbMsg tbMsg, String relationType, Throwable error) { 493 public void persistDebugInput(TenantId tenantId, EntityId entityId, TbMsg tbMsg, String relationType, Throwable error) {
498 - persistDebugAsync(tenantId, entityId, "IN", tbMsg, relationType, error); 494 + persistDebugAsync(tenantId, entityId, "IN", tbMsg, relationType, error, null);
  495 + }
  496 +
  497 + public void persistDebugOutput(TenantId tenantId, EntityId entityId, TbMsg tbMsg, String relationType, Throwable error, String failureMessage) {
  498 + persistDebugAsync(tenantId, entityId, "OUT", tbMsg, relationType, error, failureMessage);
499 } 499 }
500 500
501 public void persistDebugOutput(TenantId tenantId, EntityId entityId, TbMsg tbMsg, String relationType, Throwable error) { 501 public void persistDebugOutput(TenantId tenantId, EntityId entityId, TbMsg tbMsg, String relationType, Throwable error) {
502 - persistDebugAsync(tenantId, entityId, "OUT", tbMsg, relationType, error); 502 + persistDebugAsync(tenantId, entityId, "OUT", tbMsg, relationType, error, null);
503 } 503 }
504 504
505 public void persistDebugOutput(TenantId tenantId, EntityId entityId, TbMsg tbMsg, String relationType) { 505 public void persistDebugOutput(TenantId tenantId, EntityId entityId, TbMsg tbMsg, String relationType) {
506 - persistDebugAsync(tenantId, entityId, "OUT", tbMsg, relationType, null); 506 + persistDebugAsync(tenantId, entityId, "OUT", tbMsg, relationType, null, null);
507 } 507 }
508 508
509 - private void persistDebugAsync(TenantId tenantId, EntityId entityId, String type, TbMsg tbMsg, String relationType, Throwable error) { 509 + private void persistDebugAsync(TenantId tenantId, EntityId entityId, String type, TbMsg tbMsg, String relationType, Throwable error, String failureMessage) {
510 if (checkLimits(tenantId, tbMsg, error)) { 510 if (checkLimits(tenantId, tbMsg, error)) {
511 try { 511 try {
512 Event event = new Event(); 512 Event event = new Event();
@@ -530,6 +530,8 @@ public class ActorSystemContext { @@ -530,6 +530,8 @@ public class ActorSystemContext {
530 530
531 if (error != null) { 531 if (error != null) {
532 node = node.put("error", toString(error)); 532 node = node.put("error", toString(error));
  533 + } else if (failureMessage != null) {
  534 + node = node.put("error", failureMessage);
533 } 535 }
534 536
535 event.setBody(node); 537 event.setBody(node);
@@ -224,7 +224,7 @@ class DefaultTbContext implements TbContext { @@ -224,7 +224,7 @@ class DefaultTbContext implements TbContext {
224 } 224 }
225 if (nodeCtx.getSelf().isDebugMode()) { 225 if (nodeCtx.getSelf().isDebugMode()) {
226 relationTypes.forEach(relationType -> 226 relationTypes.forEach(relationType ->
227 - mainCtx.persistDebugOutput(nodeCtx.getTenantId(), nodeCtx.getSelf().getId(), tbMsg, relationType)); 227 + mainCtx.persistDebugOutput(nodeCtx.getTenantId(), nodeCtx.getSelf().getId(), tbMsg, relationType, null, failureMessage));
228 } 228 }
229 mainCtx.getClusterService().pushMsgToRuleEngine(tpi, tbMsg.getId(), msg.build(), new SimpleTbQueueCallback(onSuccess, onFailure)); 229 mainCtx.getClusterService().pushMsgToRuleEngine(tpi, tbMsg.getId(), msg.build(), new SimpleTbQueueCallback(onSuccess, onFailure));
230 } 230 }
@@ -369,11 +369,6 @@ class DefaultTbContext implements TbContext { @@ -369,11 +369,6 @@ class DefaultTbContext implements TbContext {
369 } 369 }
370 370
371 @Override 371 @Override
372 - public ListeningExecutor getJsExecutor() {  
373 - return mainCtx.getJsExecutor();  
374 - }  
375 -  
376 - @Override  
377 public ListeningExecutor getMailExecutor() { 372 public ListeningExecutor getMailExecutor() {
378 return mainCtx.getMailExecutor(); 373 return mainCtx.getMailExecutor();
379 } 374 }
@@ -202,6 +202,8 @@ public class ThingsboardInstallService { @@ -202,6 +202,8 @@ public class ThingsboardInstallService {
202 systemDataLoaderService.createOAuth2Templates(); 202 systemDataLoaderService.createOAuth2Templates();
203 case "3.3.0": 203 case "3.3.0":
204 log.info("Upgrading ThingsBoard from version 3.3.0 to 3.3.1 ..."); 204 log.info("Upgrading ThingsBoard from version 3.3.0 to 3.3.1 ...");
  205 + case "3.3.1":
  206 + log.info("Upgrading ThingsBoard from version 3.3.1 to 3.3.2 ...");
205 log.info("Updating system data..."); 207 log.info("Updating system data...");
206 systemDataLoaderService.updateSystemWidgets(); 208 systemDataLoaderService.updateSystemWidgets();
207 break; 209 break;
@@ -105,7 +105,7 @@ public class AdminSettingsEdgeEventFetcher implements EdgeEventFetcher { @@ -105,7 +105,7 @@ public class AdminSettingsEdgeEventFetcher implements EdgeEventFetcher {
105 Template template = freemarkerConfig.getTemplate(templatesName); 105 Template template = freemarkerConfig.getTemplate(templatesName);
106 if (template != null) { 106 if (template != null) {
107 String name = validateName(template.getName()); 107 String name = validateName(template.getName());
108 - Map<String, String> mailTemplate = getMailTemplateFromFile(template.getRootTreeNode().toString()); 108 + Map<String, String> mailTemplate = getMailTemplateFromFile(template.toString());
109 if (mailTemplate != null) { 109 if (mailTemplate != null) {
110 mailTemplates.put(name, mailTemplate); 110 mailTemplates.put(name, mailTemplate);
111 } else { 111 } else {
@@ -38,8 +38,6 @@ import org.thingsboard.server.common.data.id.TenantId; @@ -38,8 +38,6 @@ import org.thingsboard.server.common.data.id.TenantId;
38 import org.thingsboard.server.common.data.kv.BaseReadTsKvQuery; 38 import org.thingsboard.server.common.data.kv.BaseReadTsKvQuery;
39 import org.thingsboard.server.common.data.kv.ReadTsKvQuery; 39 import org.thingsboard.server.common.data.kv.ReadTsKvQuery;
40 import org.thingsboard.server.common.data.kv.TsKvEntry; 40 import org.thingsboard.server.common.data.kv.TsKvEntry;
41 -import org.thingsboard.server.common.data.oauth2.OAuth2Info;  
42 -import org.thingsboard.server.common.data.oauth2.deprecated.OAuth2ClientsParams;  
43 import org.thingsboard.server.common.data.page.PageData; 41 import org.thingsboard.server.common.data.page.PageData;
44 import org.thingsboard.server.common.data.page.PageLink; 42 import org.thingsboard.server.common.data.page.PageLink;
45 import org.thingsboard.server.common.data.page.TimePageLink; 43 import org.thingsboard.server.common.data.page.TimePageLink;
@@ -55,7 +53,6 @@ import org.thingsboard.server.dao.entity.EntityService; @@ -55,7 +53,6 @@ import org.thingsboard.server.dao.entity.EntityService;
55 import org.thingsboard.server.dao.entityview.EntityViewService; 53 import org.thingsboard.server.dao.entityview.EntityViewService;
56 import org.thingsboard.server.dao.model.sql.DeviceProfileEntity; 54 import org.thingsboard.server.dao.model.sql.DeviceProfileEntity;
57 import org.thingsboard.server.dao.oauth2.OAuth2Service; 55 import org.thingsboard.server.dao.oauth2.OAuth2Service;
58 -import org.thingsboard.server.dao.oauth2.OAuth2Utils;  
59 import org.thingsboard.server.dao.rule.RuleChainService; 56 import org.thingsboard.server.dao.rule.RuleChainService;
60 import org.thingsboard.server.dao.sql.device.DeviceProfileRepository; 57 import org.thingsboard.server.dao.sql.device.DeviceProfileRepository;
61 import org.thingsboard.server.dao.tenant.TenantService; 58 import org.thingsboard.server.dao.tenant.TenantService;
@@ -448,18 +445,7 @@ public class DefaultDataUpdateService implements DataUpdateService { @@ -448,18 +445,7 @@ public class DefaultDataUpdateService implements DataUpdateService {
448 } 445 }
449 446
450 private void updateOAuth2Params() { 447 private void updateOAuth2Params() {
451 - try {  
452 - OAuth2ClientsParams oauth2ClientsParams = oAuth2Service.findOAuth2Params();  
453 - if (!oauth2ClientsParams.getDomainsParams().isEmpty()) {  
454 - log.info("Updating OAuth2 parameters ...");  
455 - OAuth2Info oAuth2Info = OAuth2Utils.clientParamsToOAuth2Info(oauth2ClientsParams);  
456 - oAuth2Service.saveOAuth2Info(oAuth2Info);  
457 - oAuth2Service.saveOAuth2Params(new OAuth2ClientsParams(false, Collections.emptyList()));  
458 - log.info("Successfully updated OAuth2 parameters!");  
459 - }  
460 - } catch (Exception e) {  
461 - log.error("Failed to update OAuth2 parameters", e);  
462 - } 448 + log.warn("CAUTION: Update of Oauth2 parameters from 3.2.2 to 3.3.0 available only in ThingsBoard versions 3.3.0/3.3.1");
463 } 449 }
464 450
465 } 451 }
@@ -72,7 +72,7 @@ public class BatchTbRuleEngineSubmitStrategy extends AbstractTbRuleEngineSubmitS @@ -72,7 +72,7 @@ public class BatchTbRuleEngineSubmitStrategy extends AbstractTbRuleEngineSubmitS
72 synchronized (pendingPack) { 72 synchronized (pendingPack) {
73 pendingPack.clear(); 73 pendingPack.clear();
74 for (int i = startIdx; i < endIdx; i++) { 74 for (int i = startIdx; i < endIdx; i++) {
75 - IdMsgPair pair = orderedMsgList.get(i); 75 + IdMsgPair<TransportProtos.ToRuleEngineMsg> pair = orderedMsgList.get(i);
76 pendingPack.put(pair.uuid, pair.msg); 76 pendingPack.put(pair.uuid, pair.msg);
77 } 77 }
78 tmpPack = new LinkedHashMap<>(pendingPack); 78 tmpPack = new LinkedHashMap<>(pendingPack);
@@ -49,7 +49,7 @@ public abstract class SequentialByEntityIdTbRuleEngineSubmitStrategy extends Abs @@ -49,7 +49,7 @@ public abstract class SequentialByEntityIdTbRuleEngineSubmitStrategy extends Abs
49 public void submitAttempt(BiConsumer<UUID, TbProtoQueueMsg<TransportProtos.ToRuleEngineMsg>> msgConsumer) { 49 public void submitAttempt(BiConsumer<UUID, TbProtoQueueMsg<TransportProtos.ToRuleEngineMsg>> msgConsumer) {
50 this.msgConsumer = msgConsumer; 50 this.msgConsumer = msgConsumer;
51 entityIdToListMap.forEach((entityId, queue) -> { 51 entityIdToListMap.forEach((entityId, queue) -> {
52 - IdMsgPair msg = queue.peek(); 52 + IdMsgPair<TransportProtos.ToRuleEngineMsg> msg = queue.peek();
53 if (msg != null) { 53 if (msg != null) {
54 msgConsumer.accept(msg.uuid, msg.msg); 54 msgConsumer.accept(msg.uuid, msg.msg);
55 } 55 }
@@ -68,9 +68,9 @@ public abstract class SequentialByEntityIdTbRuleEngineSubmitStrategy extends Abs @@ -68,9 +68,9 @@ public abstract class SequentialByEntityIdTbRuleEngineSubmitStrategy extends Abs
68 if (entityId != null) { 68 if (entityId != null) {
69 Queue<IdMsgPair<TransportProtos.ToRuleEngineMsg>> queue = entityIdToListMap.get(entityId); 69 Queue<IdMsgPair<TransportProtos.ToRuleEngineMsg>> queue = entityIdToListMap.get(entityId);
70 if (queue != null) { 70 if (queue != null) {
71 - IdMsgPair next = null; 71 + IdMsgPair<TransportProtos.ToRuleEngineMsg> next = null;
72 synchronized (queue) { 72 synchronized (queue) {
73 - IdMsgPair expected = queue.peek(); 73 + IdMsgPair<TransportProtos.ToRuleEngineMsg> expected = queue.peek();
74 if (expected != null && expected.uuid.equals(id)) { 74 if (expected != null && expected.uuid.equals(id)) {
75 queue.poll(); 75 queue.poll();
76 next = queue.peek(); 76 next = queue.peek();
@@ -59,7 +59,7 @@ public class SequentialTbRuleEngineSubmitStrategy extends AbstractTbRuleEngineSu @@ -59,7 +59,7 @@ public class SequentialTbRuleEngineSubmitStrategy extends AbstractTbRuleEngineSu
59 int listSize = orderedMsgList.size(); 59 int listSize = orderedMsgList.size();
60 int idx = msgIdx.get(); 60 int idx = msgIdx.get();
61 if (idx < listSize) { 61 if (idx < listSize) {
62 - IdMsgPair pair = orderedMsgList.get(idx); 62 + IdMsgPair<TransportProtos.ToRuleEngineMsg> pair = orderedMsgList.get(idx);
63 expectedMsgId = pair.uuid; 63 expectedMsgId = pair.uuid;
64 if (log.isDebugEnabled()) { 64 if (log.isDebugEnabled()) {
65 log.debug("[{}] submitting [{}] message to rule engine", queueName, pair.msg); 65 log.debug("[{}] submitting [{}] message to rule engine", queueName, pair.msg);
@@ -17,7 +17,6 @@ package org.thingsboard.server.service.security.auth.oauth2; @@ -17,7 +17,6 @@ package org.thingsboard.server.service.security.auth.oauth2;
17 17
18 import org.springframework.security.oauth2.client.authentication.OAuth2AuthenticationToken; 18 import org.springframework.security.oauth2.client.authentication.OAuth2AuthenticationToken;
19 import org.thingsboard.server.common.data.oauth2.OAuth2Registration; 19 import org.thingsboard.server.common.data.oauth2.OAuth2Registration;
20 -import org.thingsboard.server.common.data.oauth2.deprecated.OAuth2ClientRegistrationInfo;  
21 import org.thingsboard.server.service.security.model.SecurityUser; 20 import org.thingsboard.server.service.security.model.SecurityUser;
22 21
23 import javax.servlet.http.HttpServletRequest; 22 import javax.servlet.http.HttpServletRequest;
@@ -117,6 +117,7 @@ public class BaseTbResourceServiceTest extends AbstractControllerTest { @@ -117,6 +117,7 @@ public class BaseTbResourceServiceTest extends AbstractControllerTest {
117 .andExpect(status().isOk()); 117 .andExpect(status().isOk());
118 } 118 }
119 119
  120 + @SuppressWarnings("deprecation")
120 @Rule 121 @Rule
121 public ExpectedException thrown = ExpectedException.none(); 122 public ExpectedException thrown = ExpectedException.none();
122 123
@@ -114,8 +114,8 @@ public abstract class AbstractCoapAttributesIntegrationTest extends AbstractCoap @@ -114,8 +114,8 @@ public abstract class AbstractCoapAttributesIntegrationTest extends AbstractCoap
114 assertEquals(CoAP.ResponseCode.CREATED, coapResponse.getCode()); 114 assertEquals(CoAP.ResponseCode.CREATED, coapResponse.getCode());
115 } 115 }
116 116
117 - @SuppressWarnings("unchecked")  
118 - protected void assertAttributesValues(List<Map<String, Object>> deviceValues, Set<String> keySet) throws JsonProcessingException { 117 + @SuppressWarnings({"unchecked", "rawtypes"})
  118 + protected void assertAttributesValues(List<Map<String, Object>> deviceValues, Set<String> keySet) {
119 for (Map<String, Object> map : deviceValues) { 119 for (Map<String, Object> map : deviceValues) {
120 String key = (String) map.get("key"); 120 String key = (String) map.get("key");
121 Object value = map.get("value"); 121 Object value = map.get("value");
@@ -145,6 +145,7 @@ public abstract class AbstractCoapAttributesIntegrationTest extends AbstractCoap @@ -145,6 +145,7 @@ public abstract class AbstractCoapAttributesIntegrationTest extends AbstractCoap
145 } 145 }
146 } 146 }
147 147
  148 + @SuppressWarnings({"unchecked", "rawtypes"})
148 private void assertAttributesProtoValues(List<Map<String, Object>> values, Set<String> keySet) { 149 private void assertAttributesProtoValues(List<Map<String, Object>> values, Set<String> keySet) {
149 for (Map<String, Object> map : values) { 150 for (Map<String, Object> map : values) {
150 String key = (String) map.get("key"); 151 String key = (String) map.get("key");
@@ -29,6 +29,7 @@ import static java.util.Collections.emptyList; @@ -29,6 +29,7 @@ import static java.util.Collections.emptyList;
29 import static org.assertj.core.api.Assertions.assertThat; 29 import static org.assertj.core.api.Assertions.assertThat;
30 import static org.mockito.ArgumentMatchers.any; 30 import static org.mockito.ArgumentMatchers.any;
31 import static org.mockito.ArgumentMatchers.anyLong; 31 import static org.mockito.ArgumentMatchers.anyLong;
  32 +import static org.mockito.ArgumentMatchers.anyMap;
32 import static org.mockito.ArgumentMatchers.anyString; 33 import static org.mockito.ArgumentMatchers.anyString;
33 import static org.mockito.BDDMockito.willReturn; 34 import static org.mockito.BDDMockito.willReturn;
34 import static org.mockito.Mockito.mock; 35 import static org.mockito.Mockito.mock;
@@ -71,7 +72,7 @@ class LwM2mTransportServerHelperTest { @@ -71,7 +72,7 @@ class LwM2mTransportServerHelperTest {
71 assertThat(helper.getTs(emptyList(), keyTsLatestMap)).isEqualTo(now); 72 assertThat(helper.getTs(emptyList(), keyTsLatestMap)).isEqualTo(now);
72 assertThat(helper.getTs(kvList, null)).isEqualTo(now); 73 assertThat(helper.getTs(kvList, null)).isEqualTo(now);
73 74
74 - verify(helper, never()).getTsByKey(anyString(), any(ConcurrentMap.class), anyLong()); 75 + verify(helper, never()).getTsByKey(anyString(), anyMap(), anyLong());
75 verify(helper, times(5)).getCurrentTimeMillis(); 76 verify(helper, times(5)).getCurrentTimeMillis();
76 } 77 }
77 78
@@ -80,7 +81,7 @@ class LwM2mTransportServerHelperTest { @@ -80,7 +81,7 @@ class LwM2mTransportServerHelperTest {
80 assertThat(helper.getTs(kvList, keyTsLatestMap)).isEqualTo(now); 81 assertThat(helper.getTs(kvList, keyTsLatestMap)).isEqualTo(now);
81 82
82 verify(helper, times(1)).getTsByKey(kvList.get(0).getKey(), keyTsLatestMap, now); 83 verify(helper, times(1)).getTsByKey(kvList.get(0).getKey(), keyTsLatestMap, now);
83 - verify(helper, times(1)).getTsByKey(anyString(), any(ConcurrentMap.class), anyLong()); 84 + verify(helper, times(1)).getTsByKey(anyString(), anyMap(), anyLong());
84 } 85 }
85 86
86 @Test 87 @Test
@@ -126,4 +127,4 @@ class LwM2mTransportServerHelperTest { @@ -126,4 +127,4 @@ class LwM2mTransportServerHelperTest {
126 assertThat(helper.compareAndSwapOrIncrementTsAtomically(keyTsLatestMap.get(KEY_SW_STATE), now)).isEqualTo(nextHourTs + 1); 127 assertThat(helper.compareAndSwapOrIncrementTsAtomically(keyTsLatestMap.get(KEY_SW_STATE), now)).isEqualTo(nextHourTs + 1);
127 } 128 }
128 129
129 -}  
  130 +}
@@ -183,6 +183,7 @@ public abstract class AbstractMqttAttributesIntegrationTest extends AbstractMqtt @@ -183,6 +183,7 @@ public abstract class AbstractMqttAttributesIntegrationTest extends AbstractMqtt
183 } 183 }
184 } 184 }
185 185
  186 + @SuppressWarnings({"unchecked", "rawtypes"})
186 private void assertAttributesProtoValues(List<Map<String, Object>> values, Set<String> keySet) { 187 private void assertAttributesProtoValues(List<Map<String, Object>> values, Set<String> keySet) {
187 for (Map<String, Object> map : values) { 188 for (Map<String, Object> map : values) {
188 String key = (String) map.get("key"); 189 String key = (String) map.get("key");
@@ -20,7 +20,7 @@ @@ -20,7 +20,7 @@
20 <modelVersion>4.0.0</modelVersion> 20 <modelVersion>4.0.0</modelVersion>
21 <parent> 21 <parent>
22 <groupId>org.thingsboard</groupId> 22 <groupId>org.thingsboard</groupId>
23 - <version>3.3.1-SNAPSHOT</version> 23 + <version>3.3.2-SNAPSHOT</version>
24 <artifactId>common</artifactId> 24 <artifactId>common</artifactId>
25 </parent> 25 </parent>
26 <groupId>org.thingsboard.common</groupId> 26 <groupId>org.thingsboard.common</groupId>
@@ -20,7 +20,7 @@ @@ -20,7 +20,7 @@
20 <modelVersion>4.0.0</modelVersion> 20 <modelVersion>4.0.0</modelVersion>
21 <parent> 21 <parent>
22 <groupId>org.thingsboard</groupId> 22 <groupId>org.thingsboard</groupId>
23 - <version>3.3.1-SNAPSHOT</version> 23 + <version>3.3.2-SNAPSHOT</version>
24 <artifactId>common</artifactId> 24 <artifactId>common</artifactId>
25 </parent> 25 </parent>
26 <groupId>org.thingsboard.common</groupId> 26 <groupId>org.thingsboard.common</groupId>
@@ -20,7 +20,7 @@ @@ -20,7 +20,7 @@
20 <modelVersion>4.0.0</modelVersion> 20 <modelVersion>4.0.0</modelVersion>
21 <parent> 21 <parent>
22 <groupId>org.thingsboard</groupId> 22 <groupId>org.thingsboard</groupId>
23 - <version>3.3.1-SNAPSHOT</version> 23 + <version>3.3.2-SNAPSHOT</version>
24 <artifactId>common</artifactId> 24 <artifactId>common</artifactId>
25 </parent> 25 </parent>
26 <groupId>org.thingsboard.common</groupId> 26 <groupId>org.thingsboard.common</groupId>
@@ -22,7 +22,7 @@ @@ -22,7 +22,7 @@
22 <modelVersion>4.0.0</modelVersion> 22 <modelVersion>4.0.0</modelVersion>
23 <parent> 23 <parent>
24 <groupId>org.thingsboard</groupId> 24 <groupId>org.thingsboard</groupId>
25 - <version>3.3.1-SNAPSHOT</version> 25 + <version>3.3.2-SNAPSHOT</version>
26 <artifactId>common</artifactId> 26 <artifactId>common</artifactId>
27 </parent> 27 </parent>
28 <groupId>org.thingsboard.common</groupId> 28 <groupId>org.thingsboard.common</groupId>
@@ -20,7 +20,7 @@ @@ -20,7 +20,7 @@
20 <modelVersion>4.0.0</modelVersion> 20 <modelVersion>4.0.0</modelVersion>
21 <parent> 21 <parent>
22 <groupId>org.thingsboard</groupId> 22 <groupId>org.thingsboard</groupId>
23 - <version>3.3.1-SNAPSHOT</version> 23 + <version>3.3.2-SNAPSHOT</version>
24 <artifactId>common</artifactId> 24 <artifactId>common</artifactId>
25 </parent> 25 </parent>
26 <groupId>org.thingsboard.common</groupId> 26 <groupId>org.thingsboard.common</groupId>
@@ -19,8 +19,6 @@ import org.thingsboard.server.common.data.oauth2.OAuth2ClientInfo; @@ -19,8 +19,6 @@ import org.thingsboard.server.common.data.oauth2.OAuth2ClientInfo;
19 import org.thingsboard.server.common.data.oauth2.OAuth2Info; 19 import org.thingsboard.server.common.data.oauth2.OAuth2Info;
20 import org.thingsboard.server.common.data.oauth2.OAuth2Registration; 20 import org.thingsboard.server.common.data.oauth2.OAuth2Registration;
21 import org.thingsboard.server.common.data.oauth2.PlatformType; 21 import org.thingsboard.server.common.data.oauth2.PlatformType;
22 -import org.thingsboard.server.common.data.oauth2.deprecated.OAuth2ClientRegistrationInfo;  
23 -import org.thingsboard.server.common.data.oauth2.deprecated.OAuth2ClientsParams;  
24 22
25 import java.util.List; 23 import java.util.List;
26 import java.util.UUID; 24 import java.util.UUID;
@@ -28,12 +26,6 @@ import java.util.UUID; @@ -28,12 +26,6 @@ import java.util.UUID;
28 public interface OAuth2Service { 26 public interface OAuth2Service {
29 List<OAuth2ClientInfo> getOAuth2Clients(String domainScheme, String domainName, String pkgName, PlatformType platformType); 27 List<OAuth2ClientInfo> getOAuth2Clients(String domainScheme, String domainName, String pkgName, PlatformType platformType);
30 28
31 - @Deprecated  
32 - void saveOAuth2Params(OAuth2ClientsParams oauth2Params);  
33 -  
34 - @Deprecated  
35 - OAuth2ClientsParams findOAuth2Params();  
36 -  
37 void saveOAuth2Info(OAuth2Info oauth2Info); 29 void saveOAuth2Info(OAuth2Info oauth2Info);
38 30
39 OAuth2Info findOAuth2Info(); 31 OAuth2Info findOAuth2Info();
@@ -20,7 +20,7 @@ @@ -20,7 +20,7 @@
20 <modelVersion>4.0.0</modelVersion> 20 <modelVersion>4.0.0</modelVersion>
21 <parent> 21 <parent>
22 <groupId>org.thingsboard</groupId> 22 <groupId>org.thingsboard</groupId>
23 - <version>3.3.1-SNAPSHOT</version> 23 + <version>3.3.2-SNAPSHOT</version>
24 <artifactId>common</artifactId> 24 <artifactId>common</artifactId>
25 </parent> 25 </parent>
26 <groupId>org.thingsboard.common</groupId> 26 <groupId>org.thingsboard.common</groupId>
1 -/**  
2 - * Copyright © 2016-2021 The Thingsboard Authors  
3 - *  
4 - * Licensed under the Apache License, Version 2.0 (the "License");  
5 - * you may not use this file except in compliance with the License.  
6 - * You may obtain a copy of the License at  
7 - *  
8 - * http://www.apache.org/licenses/LICENSE-2.0  
9 - *  
10 - * Unless required by applicable law or agreed to in writing, software  
11 - * distributed under the License is distributed on an "AS IS" BASIS,  
12 - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  
13 - * See the License for the specific language governing permissions and  
14 - * limitations under the License.  
15 - */  
16 -package org.thingsboard.server.common.data.id.deprecated;  
17 -  
18 -import com.fasterxml.jackson.annotation.JsonCreator;  
19 -import com.fasterxml.jackson.annotation.JsonProperty;  
20 -import org.thingsboard.server.common.data.id.UUIDBased;  
21 -  
22 -import java.util.UUID;  
23 -  
24 -@Deprecated  
25 -public class OAuth2ClientRegistrationId extends UUIDBased {  
26 -  
27 - @JsonCreator  
28 - public OAuth2ClientRegistrationId(@JsonProperty("id") UUID id) {  
29 - super(id);  
30 - }  
31 -  
32 - public static OAuth2ClientRegistrationId fromString(String clientRegistrationId) {  
33 - return new OAuth2ClientRegistrationId(UUID.fromString(clientRegistrationId));  
34 - }  
35 -}  
1 -/**  
2 - * Copyright © 2016-2021 The Thingsboard Authors  
3 - *  
4 - * Licensed under the Apache License, Version 2.0 (the "License");  
5 - * you may not use this file except in compliance with the License.  
6 - * You may obtain a copy of the License at  
7 - *  
8 - * http://www.apache.org/licenses/LICENSE-2.0  
9 - *  
10 - * Unless required by applicable law or agreed to in writing, software  
11 - * distributed under the License is distributed on an "AS IS" BASIS,  
12 - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  
13 - * See the License for the specific language governing permissions and  
14 - * limitations under the License.  
15 - */  
16 -package org.thingsboard.server.common.data.id.deprecated;  
17 -  
18 -import com.fasterxml.jackson.annotation.JsonCreator;  
19 -import com.fasterxml.jackson.annotation.JsonProperty;  
20 -import org.thingsboard.server.common.data.id.UUIDBased;  
21 -  
22 -import java.util.UUID;  
23 -  
24 -@Deprecated  
25 -public class OAuth2ClientRegistrationInfoId extends UUIDBased {  
26 -  
27 - @JsonCreator  
28 - public OAuth2ClientRegistrationInfoId(@JsonProperty("id") UUID id) {  
29 - super(id);  
30 - }  
31 -  
32 - public static OAuth2ClientRegistrationInfoId fromString(String clientRegistrationInfoId) {  
33 - return new OAuth2ClientRegistrationInfoId(UUID.fromString(clientRegistrationInfoId));  
34 - }  
35 -}  
1 -/**  
2 - * Copyright © 2016-2021 The Thingsboard Authors  
3 - *  
4 - * Licensed under the Apache License, Version 2.0 (the "License");  
5 - * you may not use this file except in compliance with the License.  
6 - * You may obtain a copy of the License at  
7 - *  
8 - * http://www.apache.org/licenses/LICENSE-2.0  
9 - *  
10 - * Unless required by applicable law or agreed to in writing, software  
11 - * distributed under the License is distributed on an "AS IS" BASIS,  
12 - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  
13 - * See the License for the specific language governing permissions and  
14 - * limitations under the License.  
15 - */  
16 -package org.thingsboard.server.common.data.oauth2.deprecated;  
17 -  
18 -import com.fasterxml.jackson.databind.JsonNode;  
19 -import lombok.*;  
20 -import org.thingsboard.server.common.data.oauth2.OAuth2MapperConfig;  
21 -  
22 -import java.util.List;  
23 -  
24 -@Deprecated  
25 -@EqualsAndHashCode  
26 -@Data  
27 -@ToString(exclude = {"clientSecret"})  
28 -@NoArgsConstructor  
29 -@AllArgsConstructor  
30 -@Builder  
31 -public class ClientRegistrationDto {  
32 - private OAuth2MapperConfig mapperConfig;  
33 - private String clientId;  
34 - private String clientSecret;  
35 - private String authorizationUri;  
36 - private String accessTokenUri;  
37 - private List<String> scope;  
38 - private String userInfoUri;  
39 - private String userNameAttributeName;  
40 - private String jwkSetUri;  
41 - private String clientAuthenticationMethod;  
42 - private String loginButtonLabel;  
43 - private String loginButtonIcon;  
44 - private JsonNode additionalInfo;  
45 -}  
1 -/**  
2 - * Copyright © 2016-2021 The Thingsboard Authors  
3 - *  
4 - * Licensed under the Apache License, Version 2.0 (the "License");  
5 - * you may not use this file except in compliance with the License.  
6 - * You may obtain a copy of the License at  
7 - *  
8 - * http://www.apache.org/licenses/LICENSE-2.0  
9 - *  
10 - * Unless required by applicable law or agreed to in writing, software  
11 - * distributed under the License is distributed on an "AS IS" BASIS,  
12 - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  
13 - * See the License for the specific language governing permissions and  
14 - * limitations under the License.  
15 - */  
16 -package org.thingsboard.server.common.data.oauth2.deprecated;  
17 -  
18 -import lombok.*;  
19 -import org.thingsboard.server.common.data.oauth2.SchemeType;  
20 -  
21 -@Deprecated  
22 -@EqualsAndHashCode  
23 -@Data  
24 -@ToString  
25 -@NoArgsConstructor  
26 -@AllArgsConstructor  
27 -@Builder  
28 -public class DomainInfo {  
29 - private SchemeType scheme;  
30 - private String name;  
31 -}  
1 -/**  
2 - * Copyright © 2016-2021 The Thingsboard Authors  
3 - *  
4 - * Licensed under the Apache License, Version 2.0 (the "License");  
5 - * you may not use this file except in compliance with the License.  
6 - * You may obtain a copy of the License at  
7 - *  
8 - * http://www.apache.org/licenses/LICENSE-2.0  
9 - *  
10 - * Unless required by applicable law or agreed to in writing, software  
11 - * distributed under the License is distributed on an "AS IS" BASIS,  
12 - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  
13 - * See the License for the specific language governing permissions and  
14 - * limitations under the License.  
15 - */  
16 -package org.thingsboard.server.common.data.oauth2.deprecated;  
17 -  
18 -import lombok.Data;  
19 -import lombok.EqualsAndHashCode;  
20 -import org.thingsboard.server.common.data.oauth2.SchemeType;  
21 -import org.thingsboard.server.common.data.oauth2.deprecated.OAuth2ClientRegistrationInfo;  
22 -  
23 -@Deprecated  
24 -@EqualsAndHashCode(callSuper = true)  
25 -@Data  
26 -public class ExtendedOAuth2ClientRegistrationInfo extends OAuth2ClientRegistrationInfo {  
27 -  
28 - private String domainName;  
29 - private SchemeType domainScheme;  
30 -  
31 - public ExtendedOAuth2ClientRegistrationInfo() {  
32 - super();  
33 - }  
34 -  
35 - public ExtendedOAuth2ClientRegistrationInfo(OAuth2ClientRegistrationInfo oAuth2ClientRegistrationInfo,  
36 - SchemeType domainScheme,  
37 - String domainName) {  
38 - super(oAuth2ClientRegistrationInfo);  
39 - this.domainScheme = domainScheme;  
40 - this.domainName = domainName;  
41 - }  
42 -}  
1 -/**  
2 - * Copyright © 2016-2021 The Thingsboard Authors  
3 - *  
4 - * Licensed under the Apache License, Version 2.0 (the "License");  
5 - * you may not use this file except in compliance with the License.  
6 - * You may obtain a copy of the License at  
7 - *  
8 - * http://www.apache.org/licenses/LICENSE-2.0  
9 - *  
10 - * Unless required by applicable law or agreed to in writing, software  
11 - * distributed under the License is distributed on an "AS IS" BASIS,  
12 - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  
13 - * See the License for the specific language governing permissions and  
14 - * limitations under the License.  
15 - */  
16 -package org.thingsboard.server.common.data.oauth2.deprecated;  
17 -  
18 -import lombok.Data;  
19 -import lombok.EqualsAndHashCode;  
20 -import lombok.NoArgsConstructor;  
21 -import lombok.ToString;  
22 -import org.thingsboard.server.common.data.BaseData;  
23 -import org.thingsboard.server.common.data.id.deprecated.OAuth2ClientRegistrationId;  
24 -import org.thingsboard.server.common.data.id.deprecated.OAuth2ClientRegistrationInfoId;  
25 -import org.thingsboard.server.common.data.oauth2.SchemeType;  
26 -  
27 -@Deprecated  
28 -@EqualsAndHashCode(callSuper = true)  
29 -@Data  
30 -@ToString  
31 -@NoArgsConstructor  
32 -public class OAuth2ClientRegistration extends BaseData<OAuth2ClientRegistrationId> {  
33 -  
34 - private OAuth2ClientRegistrationInfoId clientRegistrationId;  
35 - private String domainName;  
36 - private SchemeType domainScheme;  
37 -  
38 - public OAuth2ClientRegistration(OAuth2ClientRegistration clientRegistration) {  
39 - super(clientRegistration);  
40 - this.clientRegistrationId = clientRegistration.clientRegistrationId;  
41 - this.domainName = clientRegistration.domainName;  
42 - this.domainScheme = clientRegistration.domainScheme;  
43 - }  
44 -}  
1 -/**  
2 - * Copyright © 2016-2021 The Thingsboard Authors  
3 - *  
4 - * Licensed under the Apache License, Version 2.0 (the "License");  
5 - * you may not use this file except in compliance with the License.  
6 - * You may obtain a copy of the License at  
7 - *  
8 - * http://www.apache.org/licenses/LICENSE-2.0  
9 - *  
10 - * Unless required by applicable law or agreed to in writing, software  
11 - * distributed under the License is distributed on an "AS IS" BASIS,  
12 - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  
13 - * See the License for the specific language governing permissions and  
14 - * limitations under the License.  
15 - */  
16 -package org.thingsboard.server.common.data.oauth2.deprecated;  
17 -  
18 -import com.fasterxml.jackson.annotation.JsonProperty;  
19 -import lombok.Data;  
20 -import lombok.EqualsAndHashCode;  
21 -import lombok.NoArgsConstructor;  
22 -import lombok.ToString;  
23 -import org.thingsboard.server.common.data.HasName;  
24 -import org.thingsboard.server.common.data.SearchTextBasedWithAdditionalInfo;  
25 -import org.thingsboard.server.common.data.id.deprecated.OAuth2ClientRegistrationInfoId;  
26 -import org.thingsboard.server.common.data.oauth2.OAuth2MapperConfig;  
27 -  
28 -import java.util.List;  
29 -  
30 -@Deprecated  
31 -@EqualsAndHashCode(callSuper = true)  
32 -@Data  
33 -@ToString(exclude = {"clientSecret"})  
34 -@NoArgsConstructor  
35 -public class OAuth2ClientRegistrationInfo extends SearchTextBasedWithAdditionalInfo<OAuth2ClientRegistrationInfoId> implements HasName {  
36 -  
37 - private boolean enabled;  
38 - private OAuth2MapperConfig mapperConfig;  
39 - private String clientId;  
40 - private String clientSecret;  
41 - private String authorizationUri;  
42 - private String accessTokenUri;  
43 - private List<String> scope;  
44 - private String userInfoUri;  
45 - private String userNameAttributeName;  
46 - private String jwkSetUri;  
47 - private String clientAuthenticationMethod;  
48 - private String loginButtonLabel;  
49 - private String loginButtonIcon;  
50 -  
51 - public OAuth2ClientRegistrationInfo(OAuth2ClientRegistrationInfo clientRegistration) {  
52 - super(clientRegistration);  
53 - this.enabled = clientRegistration.enabled;  
54 - this.mapperConfig = clientRegistration.mapperConfig;  
55 - this.clientId = clientRegistration.clientId;  
56 - this.clientSecret = clientRegistration.clientSecret;  
57 - this.authorizationUri = clientRegistration.authorizationUri;  
58 - this.accessTokenUri = clientRegistration.accessTokenUri;  
59 - this.scope = clientRegistration.scope;  
60 - this.userInfoUri = clientRegistration.userInfoUri;  
61 - this.userNameAttributeName = clientRegistration.userNameAttributeName;  
62 - this.jwkSetUri = clientRegistration.jwkSetUri;  
63 - this.clientAuthenticationMethod = clientRegistration.clientAuthenticationMethod;  
64 - this.loginButtonLabel = clientRegistration.loginButtonLabel;  
65 - this.loginButtonIcon = clientRegistration.loginButtonIcon;  
66 - }  
67 -  
68 - @Override  
69 - @JsonProperty(access = JsonProperty.Access.READ_ONLY)  
70 - public String getName() {  
71 - return loginButtonLabel;  
72 - }  
73 -  
74 - @Override  
75 - public String getSearchText() {  
76 - return getName();  
77 - }  
78 -}  
1 -/**  
2 - * Copyright © 2016-2021 The Thingsboard Authors  
3 - *  
4 - * Licensed under the Apache License, Version 2.0 (the "License");  
5 - * you may not use this file except in compliance with the License.  
6 - * You may obtain a copy of the License at  
7 - *  
8 - * http://www.apache.org/licenses/LICENSE-2.0  
9 - *  
10 - * Unless required by applicable law or agreed to in writing, software  
11 - * distributed under the License is distributed on an "AS IS" BASIS,  
12 - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  
13 - * See the License for the specific language governing permissions and  
14 - * limitations under the License.  
15 - */  
16 -package org.thingsboard.server.common.data.oauth2.deprecated;  
17 -  
18 -import lombok.*;  
19 -  
20 -import java.util.List;  
21 -  
22 -@Deprecated  
23 -@EqualsAndHashCode  
24 -@Data  
25 -@ToString  
26 -@Builder(toBuilder = true)  
27 -@NoArgsConstructor  
28 -@AllArgsConstructor  
29 -public class OAuth2ClientsDomainParams {  
30 - private List<DomainInfo> domainInfos;  
31 - private List<ClientRegistrationDto> clientRegistrations;  
32 -}  
1 -/**  
2 - * Copyright © 2016-2021 The Thingsboard Authors  
3 - *  
4 - * Licensed under the Apache License, Version 2.0 (the "License");  
5 - * you may not use this file except in compliance with the License.  
6 - * You may obtain a copy of the License at  
7 - *  
8 - * http://www.apache.org/licenses/LICENSE-2.0  
9 - *  
10 - * Unless required by applicable law or agreed to in writing, software  
11 - * distributed under the License is distributed on an "AS IS" BASIS,  
12 - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  
13 - * See the License for the specific language governing permissions and  
14 - * limitations under the License.  
15 - */  
16 -package org.thingsboard.server.common.data.oauth2.deprecated;  
17 -  
18 -import lombok.*;  
19 -  
20 -import java.util.List;  
21 -  
22 -@Deprecated  
23 -@EqualsAndHashCode  
24 -@Data  
25 -@ToString  
26 -@Builder(toBuilder = true)  
27 -@NoArgsConstructor  
28 -@AllArgsConstructor  
29 -public class OAuth2ClientsParams {  
30 - private boolean enabled;  
31 - private List<OAuth2ClientsDomainParams> domainsParams;  
32 -}  
@@ -20,7 +20,7 @@ @@ -20,7 +20,7 @@
20 <modelVersion>4.0.0</modelVersion> 20 <modelVersion>4.0.0</modelVersion>
21 <parent> 21 <parent>
22 <groupId>org.thingsboard</groupId> 22 <groupId>org.thingsboard</groupId>
23 - <version>3.3.1-SNAPSHOT</version> 23 + <version>3.3.2-SNAPSHOT</version>
24 <artifactId>common</artifactId> 24 <artifactId>common</artifactId>
25 </parent> 25 </parent>
26 <groupId>org.thingsboard.common</groupId> 26 <groupId>org.thingsboard.common</groupId>
@@ -20,7 +20,7 @@ @@ -20,7 +20,7 @@
20 <modelVersion>4.0.0</modelVersion> 20 <modelVersion>4.0.0</modelVersion>
21 <parent> 21 <parent>
22 <groupId>org.thingsboard</groupId> 22 <groupId>org.thingsboard</groupId>
23 - <version>3.3.1-SNAPSHOT</version> 23 + <version>3.3.2-SNAPSHOT</version>
24 <artifactId>common</artifactId> 24 <artifactId>common</artifactId>
25 </parent> 25 </parent>
26 <groupId>org.thingsboard.common</groupId> 26 <groupId>org.thingsboard.common</groupId>
@@ -20,7 +20,7 @@ @@ -20,7 +20,7 @@
20 <modelVersion>4.0.0</modelVersion> 20 <modelVersion>4.0.0</modelVersion>
21 <parent> 21 <parent>
22 <groupId>org.thingsboard</groupId> 22 <groupId>org.thingsboard</groupId>
23 - <version>3.3.1-SNAPSHOT</version> 23 + <version>3.3.2-SNAPSHOT</version>
24 <artifactId>thingsboard</artifactId> 24 <artifactId>thingsboard</artifactId>
25 </parent> 25 </parent>
26 <artifactId>common</artifactId> 26 <artifactId>common</artifactId>
@@ -20,7 +20,7 @@ @@ -20,7 +20,7 @@
20 <modelVersion>4.0.0</modelVersion> 20 <modelVersion>4.0.0</modelVersion>
21 <parent> 21 <parent>
22 <groupId>org.thingsboard</groupId> 22 <groupId>org.thingsboard</groupId>
23 - <version>3.3.1-SNAPSHOT</version> 23 + <version>3.3.2-SNAPSHOT</version>
24 <artifactId>common</artifactId> 24 <artifactId>common</artifactId>
25 </parent> 25 </parent>
26 <groupId>org.thingsboard.common</groupId> 26 <groupId>org.thingsboard.common</groupId>
@@ -75,12 +75,12 @@ public class DefaultTbQueueRequestTemplateTest { @@ -75,12 +75,12 @@ public class DefaultTbQueueRequestTemplateTest {
75 long maxPendingRequests = 32; 75 long maxPendingRequests = 32;
76 long pollInterval = 5; 76 long pollInterval = 5;
77 77
78 - DefaultTbQueueRequestTemplate inst; 78 + DefaultTbQueueRequestTemplate<TbQueueMsg, TbQueueMsg> inst;
79 79
80 @Before 80 @Before
81 public void setUp() throws Exception { 81 public void setUp() throws Exception {
82 willReturn(topic).given(responseTemplate).getTopic(); 82 willReturn(topic).given(responseTemplate).getTopic();
83 - inst = spy(new DefaultTbQueueRequestTemplate( 83 + inst = spy(new DefaultTbQueueRequestTemplate<>(
84 queueAdmin, requestTemplate, responseTemplate, 84 queueAdmin, requestTemplate, responseTemplate,
85 maxRequestTimeout, maxPendingRequests, pollInterval, executorMock)); 85 maxRequestTimeout, maxPendingRequests, pollInterval, executorMock));
86 86
@@ -170,6 +170,7 @@ public class DefaultTbQueueRequestTemplateTest { @@ -170,6 +170,7 @@ public class DefaultTbQueueRequestTemplateTest {
170 verify(inst, times((int) inst.maxPendingRequests)).sendToRequestTemplate(any(), any(), any(), any()); 170 verify(inst, times((int) inst.maxPendingRequests)).sendToRequestTemplate(any(), any(), any(), any());
171 } 171 }
172 172
  173 + @SuppressWarnings("unchecked")
173 @Test 174 @Test
174 public void givenNothing_whenSendAndFetchAndProcessResponsesWithTimeout_thenFail() { 175 public void givenNothing_whenSendAndFetchAndProcessResponsesWithTimeout_thenFail() {
175 //given 176 //given
@@ -208,4 +209,4 @@ public class DefaultTbQueueRequestTemplateTest { @@ -208,4 +209,4 @@ public class DefaultTbQueueRequestTemplateTest {
208 TbQueueMsg getRequestMsgMock() { 209 TbQueueMsg getRequestMsgMock() {
209 return mock(TbQueueMsg.class, RETURNS_DEEP_STUBS); 210 return mock(TbQueueMsg.class, RETURNS_DEEP_STUBS);
210 } 211 }
211 -}  
  212 +}
@@ -22,7 +22,7 @@ @@ -22,7 +22,7 @@
22 <modelVersion>4.0.0</modelVersion> 22 <modelVersion>4.0.0</modelVersion>
23 <parent> 23 <parent>
24 <groupId>org.thingsboard</groupId> 24 <groupId>org.thingsboard</groupId>
25 - <version>3.3.1-SNAPSHOT</version> 25 + <version>3.3.2-SNAPSHOT</version>
26 <artifactId>common</artifactId> 26 <artifactId>common</artifactId>
27 </parent> 27 </parent>
28 <groupId>org.thingsboard.common</groupId> 28 <groupId>org.thingsboard.common</groupId>
@@ -20,7 +20,7 @@ @@ -20,7 +20,7 @@
20 <modelVersion>4.0.0</modelVersion> 20 <modelVersion>4.0.0</modelVersion>
21 <parent> 21 <parent>
22 <groupId>org.thingsboard.common</groupId> 22 <groupId>org.thingsboard.common</groupId>
23 - <version>3.3.1-SNAPSHOT</version> 23 + <version>3.3.2-SNAPSHOT</version>
24 <artifactId>transport</artifactId> 24 <artifactId>transport</artifactId>
25 </parent> 25 </parent>
26 <groupId>org.thingsboard.common.transport</groupId> 26 <groupId>org.thingsboard.common.transport</groupId>
@@ -20,7 +20,7 @@ @@ -20,7 +20,7 @@
20 <modelVersion>4.0.0</modelVersion> 20 <modelVersion>4.0.0</modelVersion>
21 <parent> 21 <parent>
22 <groupId>org.thingsboard.common</groupId> 22 <groupId>org.thingsboard.common</groupId>
23 - <version>3.3.1-SNAPSHOT</version> 23 + <version>3.3.2-SNAPSHOT</version>
24 <artifactId>transport</artifactId> 24 <artifactId>transport</artifactId>
25 </parent> 25 </parent>
26 <groupId>org.thingsboard.common.transport</groupId> 26 <groupId>org.thingsboard.common.transport</groupId>
@@ -20,7 +20,7 @@ @@ -20,7 +20,7 @@
20 <modelVersion>4.0.0</modelVersion> 20 <modelVersion>4.0.0</modelVersion>
21 <parent> 21 <parent>
22 <groupId>org.thingsboard.common</groupId> 22 <groupId>org.thingsboard.common</groupId>
23 - <version>3.3.1-SNAPSHOT</version> 23 + <version>3.3.2-SNAPSHOT</version>
24 <artifactId>transport</artifactId> 24 <artifactId>transport</artifactId>
25 </parent> 25 </parent>
26 <groupId>org.thingsboard.common.transport</groupId> 26 <groupId>org.thingsboard.common.transport</groupId>
@@ -81,6 +81,7 @@ public class TbLwM2MDtlsCertificateVerifier implements NewAdvancedCertificateVer @@ -81,6 +81,7 @@ public class TbLwM2MDtlsCertificateVerifier implements NewAdvancedCertificateVer
81 return Arrays.asList(CertificateType.X_509, CertificateType.RAW_PUBLIC_KEY); 81 return Arrays.asList(CertificateType.X_509, CertificateType.RAW_PUBLIC_KEY);
82 } 82 }
83 83
  84 + @SuppressWarnings("deprecation")
84 @PostConstruct 85 @PostConstruct
85 public void init() { 86 public void init() {
86 try { 87 try {
@@ -38,7 +38,7 @@ import java.io.ByteArrayInputStream; @@ -38,7 +38,7 @@ import java.io.ByteArrayInputStream;
38 import java.io.IOException; 38 import java.io.IOException;
39 import java.util.ArrayList; 39 import java.util.ArrayList;
40 import java.util.List; 40 import java.util.List;
41 -import java.util.concurrent.ConcurrentMap; 41 +import java.util.Map;
42 import java.util.concurrent.atomic.AtomicLong; 42 import java.util.concurrent.atomic.AtomicLong;
43 43
44 import static org.thingsboard.server.gen.transport.TransportProtos.KeyValueType.BOOLEAN_V; 44 import static org.thingsboard.server.gen.transport.TransportProtos.KeyValueType.BOOLEAN_V;
@@ -62,7 +62,7 @@ public class LwM2mTransportServerHelper { @@ -62,7 +62,7 @@ public class LwM2mTransportServerHelper {
62 sendParametersOnThingsboardTelemetry(kvList, sessionInfo, null); 62 sendParametersOnThingsboardTelemetry(kvList, sessionInfo, null);
63 } 63 }
64 64
65 - public void sendParametersOnThingsboardTelemetry(List<TransportProtos.KeyValueProto> kvList, SessionInfoProto sessionInfo, @Nullable ConcurrentMap<String, AtomicLong> keyTsLatestMap) { 65 + public void sendParametersOnThingsboardTelemetry(List<TransportProtos.KeyValueProto> kvList, SessionInfoProto sessionInfo, @Nullable Map<String, AtomicLong> keyTsLatestMap) {
66 TransportProtos.TsKvListProto tsKvList = toTsKvList(kvList, keyTsLatestMap); 66 TransportProtos.TsKvListProto tsKvList = toTsKvList(kvList, keyTsLatestMap);
67 67
68 PostTelemetryMsg postTelemetryMsg = PostTelemetryMsg.newBuilder() 68 PostTelemetryMsg postTelemetryMsg = PostTelemetryMsg.newBuilder()
@@ -72,14 +72,14 @@ public class LwM2mTransportServerHelper { @@ -72,14 +72,14 @@ public class LwM2mTransportServerHelper {
72 context.getTransportService().process(sessionInfo, postTelemetryMsg, TransportServiceCallback.EMPTY); 72 context.getTransportService().process(sessionInfo, postTelemetryMsg, TransportServiceCallback.EMPTY);
73 } 73 }
74 74
75 - TransportProtos.TsKvListProto toTsKvList(List<TransportProtos.KeyValueProto> kvList, ConcurrentMap<String, AtomicLong> keyTsLatestMap) { 75 + TransportProtos.TsKvListProto toTsKvList(List<TransportProtos.KeyValueProto> kvList, Map<String, AtomicLong> keyTsLatestMap) {
76 return TransportProtos.TsKvListProto.newBuilder() 76 return TransportProtos.TsKvListProto.newBuilder()
77 .setTs(getTs(kvList, keyTsLatestMap)) 77 .setTs(getTs(kvList, keyTsLatestMap))
78 .addAllKv(kvList) 78 .addAllKv(kvList)
79 .build(); 79 .build();
80 } 80 }
81 81
82 - long getTs(List<TransportProtos.KeyValueProto> kvList, ConcurrentMap<String, AtomicLong> keyTsLatestMap) { 82 + long getTs(List<TransportProtos.KeyValueProto> kvList, Map<String, AtomicLong> keyTsLatestMap) {
83 if (keyTsLatestMap == null || kvList == null || kvList.isEmpty()) { 83 if (keyTsLatestMap == null || kvList == null || kvList.isEmpty()) {
84 return getCurrentTimeMillis(); 84 return getCurrentTimeMillis();
85 } 85 }
@@ -87,7 +87,7 @@ public class LwM2mTransportServerHelper { @@ -87,7 +87,7 @@ public class LwM2mTransportServerHelper {
87 return getTsByKey(kvList.get(0).getKey(), keyTsLatestMap, getCurrentTimeMillis()); 87 return getTsByKey(kvList.get(0).getKey(), keyTsLatestMap, getCurrentTimeMillis());
88 } 88 }
89 89
90 - long getTsByKey(@Nonnull String key, @Nonnull ConcurrentMap<String, AtomicLong> keyTsLatestMap, final long tsNow) { 90 + long getTsByKey(@Nonnull String key, @Nonnull Map<String, AtomicLong> keyTsLatestMap, final long tsNow) {
91 AtomicLong tsLatestAtomic = keyTsLatestMap.putIfAbsent(key, new AtomicLong(tsNow)); 91 AtomicLong tsLatestAtomic = keyTsLatestMap.putIfAbsent(key, new AtomicLong(tsNow));
92 if (tsLatestAtomic == null) { 92 if (tsLatestAtomic == null) {
93 return tsNow; // it is a first known timestamp for this key. return as the latest 93 return tsNow; // it is a first known timestamp for this key. return as the latest
@@ -15,6 +15,7 @@ @@ -15,6 +15,7 @@
15 */ 15 */
16 package org.thingsboard.server.transport.lwm2m.server; 16 package org.thingsboard.server.transport.lwm2m.server;
17 17
  18 +import com.fasterxml.jackson.core.type.TypeReference;
18 import com.fasterxml.jackson.databind.ObjectMapper; 19 import com.fasterxml.jackson.databind.ObjectMapper;
19 import lombok.extern.slf4j.Slf4j; 20 import lombok.extern.slf4j.Slf4j;
20 import org.apache.commons.lang3.StringUtils; 21 import org.apache.commons.lang3.StringUtils;
@@ -31,6 +32,7 @@ import org.eclipse.leshan.core.request.SimpleDownlinkRequest; @@ -31,6 +32,7 @@ import org.eclipse.leshan.core.request.SimpleDownlinkRequest;
31 import org.eclipse.leshan.core.request.WriteAttributesRequest; 32 import org.eclipse.leshan.core.request.WriteAttributesRequest;
32 import org.eclipse.leshan.core.util.Hex; 33 import org.eclipse.leshan.core.util.Hex;
33 import org.eclipse.leshan.server.registration.Registration; 34 import org.eclipse.leshan.server.registration.Registration;
  35 +import org.thingsboard.common.util.JacksonUtil;
34 import org.thingsboard.server.common.data.DeviceProfile; 36 import org.thingsboard.server.common.data.DeviceProfile;
35 import org.thingsboard.server.common.data.DeviceTransportType; 37 import org.thingsboard.server.common.data.DeviceTransportType;
36 import org.thingsboard.server.common.data.device.data.lwm2m.BootstrapConfiguration; 38 import org.thingsboard.server.common.data.device.data.lwm2m.BootstrapConfiguration;
@@ -286,8 +288,7 @@ public class LwM2mTransportUtil { @@ -286,8 +288,7 @@ public class LwM2mTransportUtil {
286 288
287 private static Attribute[] createWriteAttributes(Object params, DefaultLwM2MUplinkMsgHandler serviceImpl, String target) { 289 private static Attribute[] createWriteAttributes(Object params, DefaultLwM2MUplinkMsgHandler serviceImpl, String target) {
288 List<Attribute> attributeLists = new ArrayList<>(); 290 List<Attribute> attributeLists = new ArrayList<>();
289 - ObjectMapper oMapper = new ObjectMapper();  
290 - Map<String, Object> map = oMapper.convertValue(params, ConcurrentHashMap.class); 291 + Map<String, Object> map = JacksonUtil.convertValue(params, new TypeReference<>() {});
291 map.forEach((k, v) -> { 292 map.forEach((k, v) -> {
292 if (StringUtils.trimToNull(v.toString()) != null) { 293 if (StringUtils.trimToNull(v.toString()) != null) {
293 Object attrValue = convertWriteAttributes(k, v, serviceImpl, target); 294 Object attrValue = convertWriteAttributes(k, v, serviceImpl, target);
@@ -374,6 +375,7 @@ public class LwM2mTransportUtil { @@ -374,6 +375,7 @@ public class LwM2mTransportUtil {
374 return lwm2mResourceValue; 375 return lwm2mResourceValue;
375 } 376 }
376 377
  378 + @SuppressWarnings("unchecked")
377 public static Optional<String> contentToString(Object content) { 379 public static Optional<String> contentToString(Object content) {
378 try { 380 try {
379 String value = null; 381 String value = null;
@@ -25,11 +25,11 @@ public interface HasVersionedIds { @@ -25,11 +25,11 @@ public interface HasVersionedIds {
25 String[] getVersionedIds(); 25 String[] getVersionedIds();
26 26
27 default String[] getObjectIds() { 27 default String[] getObjectIds() {
28 - Set objectIds = ConcurrentHashMap.newKeySet(); 28 + Set<String> objectIds = ConcurrentHashMap.newKeySet();
29 for (String versionedId : getVersionedIds()) { 29 for (String versionedId : getVersionedIds()) {
30 objectIds.add(LwM2mTransportUtil.fromVersionedIdToObjectId(versionedId)); 30 objectIds.add(LwM2mTransportUtil.fromVersionedIdToObjectId(versionedId));
31 } 31 }
32 - return (String[]) objectIds.toArray(String[]::new); 32 + return objectIds.toArray(String[]::new);
33 } 33 }
34 34
35 } 35 }
@@ -18,6 +18,8 @@ package org.thingsboard.server.transport.lwm2m.server.rpc; @@ -18,6 +18,8 @@ package org.thingsboard.server.transport.lwm2m.server.rpc;
18 import lombok.RequiredArgsConstructor; 18 import lombok.RequiredArgsConstructor;
19 import lombok.extern.slf4j.Slf4j; 19 import lombok.extern.slf4j.Slf4j;
20 import org.eclipse.leshan.core.ResponseCode; 20 import org.eclipse.leshan.core.ResponseCode;
  21 +import org.eclipse.leshan.core.request.ReadCompositeRequest;
  22 +import org.eclipse.leshan.core.response.ReadCompositeResponse;
21 import org.springframework.stereotype.Service; 23 import org.springframework.stereotype.Service;
22 import org.thingsboard.common.util.JacksonUtil; 24 import org.thingsboard.common.util.JacksonUtil;
23 import org.thingsboard.server.common.data.StringUtils; 25 import org.thingsboard.server.common.data.StringUtils;
@@ -176,7 +178,7 @@ public class DefaultLwM2MRpcRequestHandler implements LwM2MRpcRequestHandler { @@ -176,7 +178,7 @@ public class DefaultLwM2MRpcRequestHandler implements LwM2MRpcRequestHandler {
176 String[] versionedIds = getIdsFromParameters(client, requestMsg); 178 String[] versionedIds = getIdsFromParameters(client, requestMsg);
177 TbLwM2MReadCompositeRequest request = TbLwM2MReadCompositeRequest.builder().versionedIds(versionedIds).timeout(clientContext.getRequestTimeout(client)).build(); 179 TbLwM2MReadCompositeRequest request = TbLwM2MReadCompositeRequest.builder().versionedIds(versionedIds).timeout(clientContext.getRequestTimeout(client)).build();
178 var mainCallback = new TbLwM2MReadCompositeCallback(uplinkHandler, logService, client, versionedIds); 180 var mainCallback = new TbLwM2MReadCompositeCallback(uplinkHandler, logService, client, versionedIds);
179 - var rpcCallback = new RpcReadResponseCompositeCallback(transportService, client, requestMsg, mainCallback); 181 + var rpcCallback = new RpcReadResponseCompositeCallback<>(transportService, client, requestMsg, mainCallback);
180 downlinkHandler.sendReadCompositeRequest(client, request, rpcCallback); 182 downlinkHandler.sendReadCompositeRequest(client, request, rpcCallback);
181 } 183 }
182 184
@@ -292,14 +294,14 @@ public class DefaultLwM2MRpcRequestHandler implements LwM2MRpcRequestHandler { @@ -292,14 +294,14 @@ public class DefaultLwM2MRpcRequestHandler implements LwM2MRpcRequestHandler {
292 private String[] getIdsFromParameters(LwM2mClient client, TransportProtos.ToDeviceRpcRequestMsg rpcRequst) { 294 private String[] getIdsFromParameters(LwM2mClient client, TransportProtos.ToDeviceRpcRequestMsg rpcRequst) {
293 RpcReadCompositeRequest requestParams = JacksonUtil.fromString(rpcRequst.getParams(), RpcReadCompositeRequest.class); 295 RpcReadCompositeRequest requestParams = JacksonUtil.fromString(rpcRequst.getParams(), RpcReadCompositeRequest.class);
294 if (requestParams.getKeys() != null && requestParams.getKeys().length > 0) { 296 if (requestParams.getKeys() != null && requestParams.getKeys().length > 0) {
295 - Set targetIds = ConcurrentHashMap.newKeySet(); 297 + Set<String> targetIds = ConcurrentHashMap.newKeySet();
296 for (String key : requestParams.getKeys()) { 298 for (String key : requestParams.getKeys()) {
297 String targetId = clientContext.getObjectIdByKeyNameFromProfile(client, key); 299 String targetId = clientContext.getObjectIdByKeyNameFromProfile(client, key);
298 if (targetId != null) { 300 if (targetId != null) {
299 targetIds.add(targetId); 301 targetIds.add(targetId);
300 } 302 }
301 } 303 }
302 - return (String[]) targetIds.toArray(String[]::new); 304 + return targetIds.toArray(String[]::new);
303 } else if (requestParams.getIds() != null && requestParams.getIds().length > 0) { 305 } else if (requestParams.getIds() != null && requestParams.getIds().length > 0) {
304 return requestParams.getIds(); 306 return requestParams.getIds();
305 } else { 307 } else {
@@ -20,7 +20,7 @@ @@ -20,7 +20,7 @@
20 <modelVersion>4.0.0</modelVersion> 20 <modelVersion>4.0.0</modelVersion>
21 <parent> 21 <parent>
22 <groupId>org.thingsboard.common</groupId> 22 <groupId>org.thingsboard.common</groupId>
23 - <version>3.3.1-SNAPSHOT</version> 23 + <version>3.3.2-SNAPSHOT</version>
24 <artifactId>transport</artifactId> 24 <artifactId>transport</artifactId>
25 </parent> 25 </parent>
26 <groupId>org.thingsboard.common.transport</groupId> 26 <groupId>org.thingsboard.common.transport</groupId>
@@ -20,7 +20,7 @@ @@ -20,7 +20,7 @@
20 <modelVersion>4.0.0</modelVersion> 20 <modelVersion>4.0.0</modelVersion>
21 <parent> 21 <parent>
22 <groupId>org.thingsboard</groupId> 22 <groupId>org.thingsboard</groupId>
23 - <version>3.3.1-SNAPSHOT</version> 23 + <version>3.3.2-SNAPSHOT</version>
24 <artifactId>common</artifactId> 24 <artifactId>common</artifactId>
25 </parent> 25 </parent>
26 <groupId>org.thingsboard.common</groupId> 26 <groupId>org.thingsboard.common</groupId>
@@ -21,7 +21,7 @@ @@ -21,7 +21,7 @@
21 21
22 <parent> 22 <parent>
23 <groupId>org.thingsboard.common</groupId> 23 <groupId>org.thingsboard.common</groupId>
24 - <version>3.3.1-SNAPSHOT</version> 24 + <version>3.3.2-SNAPSHOT</version>
25 <artifactId>transport</artifactId> 25 <artifactId>transport</artifactId>
26 </parent> 26 </parent>
27 27
@@ -57,6 +57,7 @@ import java.util.Scanner; @@ -57,6 +57,7 @@ import java.util.Scanner;
57 import java.util.function.Consumer; 57 import java.util.function.Consumer;
58 import java.util.stream.Collectors; 58 import java.util.stream.Collectors;
59 59
  60 +@SuppressWarnings("deprecation")
60 public class SnmpDeviceSimulatorV2 extends BaseAgent { 61 public class SnmpDeviceSimulatorV2 extends BaseAgent {
61 62
62 public static class RequestProcessor extends CommandProcessor { 63 public static class RequestProcessor extends CommandProcessor {
@@ -167,6 +168,7 @@ public class SnmpDeviceSimulatorV2 extends BaseAgent { @@ -167,6 +168,7 @@ public class SnmpDeviceSimulatorV2 extends BaseAgent {
167 protected void addUsmUser(USM usm) { 168 protected void addUsmUser(USM usm) {
168 } 169 }
169 170
  171 + @SuppressWarnings({"unchecked"})
170 protected void initTransportMappings() { 172 protected void initTransportMappings() {
171 transportMappings = new TransportMapping[]{TransportMappings.getInstance().createTransportMapping(address)}; 173 transportMappings = new TransportMapping[]{TransportMappings.getInstance().createTransportMapping(address)};
172 } 174 }
@@ -86,6 +86,7 @@ import java.util.Map; @@ -86,6 +86,7 @@ import java.util.Map;
86 * And don't remove snmp users 86 * And don't remove snmp users
87 * 87 *
88 */ 88 */
  89 +@SuppressWarnings("deprecation")
89 public class SnmpDeviceSimulatorV3 extends BaseAgent { 90 public class SnmpDeviceSimulatorV3 extends BaseAgent {
90 protected String address; 91 protected String address;
91 private Snmp4jHeartbeatMib heartbeatMIB; 92 private Snmp4jHeartbeatMib heartbeatMIB;
@@ -458,6 +459,7 @@ public class SnmpDeviceSimulatorV3 extends BaseAgent { @@ -458,6 +459,7 @@ public class SnmpDeviceSimulatorV3 extends BaseAgent {
458 this.usm = usm; 459 this.usm = usm;
459 } 460 }
460 461
  462 + @SuppressWarnings({"unchecked", "rawtypes"})
461 private static DefaultMOTable createStaticIfXTable() { 463 private static DefaultMOTable createStaticIfXTable() {
462 MOTableSubIndex[] subIndexes = 464 MOTableSubIndex[] subIndexes =
463 new MOTableSubIndex[] { new MOTableSubIndex(SMIConstants.SYNTAX_INTEGER) }; 465 new MOTableSubIndex[] { new MOTableSubIndex(SMIConstants.SYNTAX_INTEGER) };
@@ -573,6 +575,7 @@ public class SnmpDeviceSimulatorV3 extends BaseAgent { @@ -573,6 +575,7 @@ public class SnmpDeviceSimulatorV3 extends BaseAgent {
573 return ifXTable; 575 return ifXTable;
574 } 576 }
575 577
  578 + @SuppressWarnings({"unchecked", "rawtypes"})
576 private static DefaultMOTable createStaticIfTable() { 579 private static DefaultMOTable createStaticIfTable() {
577 MOTableSubIndex[] subIndexes = 580 MOTableSubIndex[] subIndexes =
578 new MOTableSubIndex[] { new MOTableSubIndex(SMIConstants.SYNTAX_INTEGER) }; 581 new MOTableSubIndex[] { new MOTableSubIndex(SMIConstants.SYNTAX_INTEGER) };
@@ -632,54 +635,7 @@ public class SnmpDeviceSimulatorV3 extends BaseAgent { @@ -632,54 +635,7 @@ public class SnmpDeviceSimulatorV3 extends BaseAgent {
632 ifTable.setVolatile(true); 635 ifTable.setVolatile(true);
633 return ifTable; 636 return ifTable;
634 } 637 }
635 -  
636 - private static DefaultMOTable createStaticSnmp4sTable() {  
637 - MOTableSubIndex[] subIndexes =  
638 - new MOTableSubIndex[] { new MOTableSubIndex(SMIConstants.SYNTAX_INTEGER) };  
639 - MOTableIndex indexDef = new MOTableIndex(subIndexes, false);  
640 - MOColumn[] columns = new MOColumn[8];  
641 - int c = 0;  
642 - columns[c++] = new MOColumn(c, SMIConstants.SYNTAX_NULL, MOAccessImpl.ACCESS_READ_ONLY); // testNull  
643 - columns[c++] = new MOColumn(c, SMIConstants.SYNTAX_INTEGER, MOAccessImpl.ACCESS_READ_ONLY); // testBoolean  
644 - columns[c++] = new MOColumn(c, SMIConstants.SYNTAX_INTEGER, MOAccessImpl.ACCESS_READ_ONLY); // ifType  
645 - columns[c++] = new MOColumn(c, SMIConstants.SYNTAX_INTEGER, MOAccessImpl.ACCESS_READ_ONLY); // ifMtu  
646 - columns[c++] = new MOColumn(c, SMIConstants.SYNTAX_GAUGE32, MOAccessImpl.ACCESS_READ_ONLY); // ifSpeed  
647 - columns[c++] = new MOColumn(c, SMIConstants.SYNTAX_OCTET_STRING, MOAccessImpl.ACCESS_READ_ONLY); //ifPhysAddress  
648 - columns[c++] = new MOMutableColumn(c, SMIConstants.SYNTAX_INTEGER, MOAccessImpl.ACCESS_READ_WRITE,  
649 - null);  
650 - // ifAdminStatus  
651 - columns[c++] = new MOColumn(c, SMIConstants.SYNTAX_INTEGER, MOAccessImpl.ACCESS_READ_ONLY);  
652 - // ifOperStatus  
653 -  
654 - DefaultMOTable ifTable =  
655 - new DefaultMOTable(new OID("1.3.6.1.4.1.50000.1.1"), indexDef, columns);  
656 - MOMutableTableModel model = (MOMutableTableModel) ifTable.getModel();  
657 - Variable[] rowValues1 = new Variable[] {  
658 - new Integer32(1),  
659 - new OctetString("eth0"),  
660 - new Integer32(6),  
661 - new Integer32(1500),  
662 - new Gauge32(100000000),  
663 - new OctetString("00:00:00:00:01"),  
664 - new Integer32(1),  
665 - new Integer32(1)  
666 - };  
667 - Variable[] rowValues2 = new Variable[] {  
668 - new Integer32(2),  
669 - new OctetString("loopback"),  
670 - new Integer32(24),  
671 - new Integer32(1500),  
672 - new Gauge32(10000000),  
673 - new OctetString("00:00:00:00:02"),  
674 - new Integer32(1),  
675 - new Integer32(1)  
676 - };  
677 - model.addRow(new DefaultMOMutableRow2PC(new OID("1"), rowValues1));  
678 - model.addRow(new DefaultMOMutableRow2PC(new OID("2"), rowValues2));  
679 - ifTable.setVolatile(true);  
680 - return ifTable;  
681 - }  
682 - 638 + @SuppressWarnings({"unchecked", "rawtypes"})
683 protected void initTransportMappings() throws IOException { 639 protected void initTransportMappings() throws IOException {
684 transportMappings = new TransportMapping[2]; 640 transportMappings = new TransportMapping[2];
685 Address addr = GenericAddress.parse(address); 641 Address addr = GenericAddress.parse(address);
@@ -715,10 +671,10 @@ public class SnmpDeviceSimulatorV3 extends BaseAgent { @@ -715,10 +671,10 @@ public class SnmpDeviceSimulatorV3 extends BaseAgent {
715 new Integer32(StorageType.nonVolatile), // storage type 671 new Integer32(StorageType.nonVolatile), // storage type
716 new Integer32(RowStatus.active) // row status 672 new Integer32(RowStatus.active) // row status
717 }; 673 };
718 - MOTableRow row = 674 + SnmpCommunityMIB.SnmpCommunityEntryRow row =
719 communityMIB.getSnmpCommunityEntry().createRow( 675 communityMIB.getSnmpCommunityEntry().createRow(
720 new OctetString("public2public").toSubIndex(true), com2sec); 676 new OctetString("public2public").toSubIndex(true), com2sec);
721 - communityMIB.getSnmpCommunityEntry().addRow((SnmpCommunityMIB.SnmpCommunityEntryRow) row); 677 + communityMIB.getSnmpCommunityEntry().addRow(row);
722 // snmpCommunityMIB.setSourceAddressFiltering(true); 678 // snmpCommunityMIB.setSourceAddressFiltering(true);
723 } 679 }
724 680
@@ -742,4 +698,4 @@ public class SnmpDeviceSimulatorV3 extends BaseAgent { @@ -742,4 +698,4 @@ public class SnmpDeviceSimulatorV3 extends BaseAgent {
742 this.initSnmpSession(); 698 this.initSnmpSession();
743 } 699 }
744 700
745 -}  
  701 +}
@@ -20,7 +20,7 @@ @@ -20,7 +20,7 @@
20 <modelVersion>4.0.0</modelVersion> 20 <modelVersion>4.0.0</modelVersion>
21 <parent> 21 <parent>
22 <groupId>org.thingsboard.common</groupId> 22 <groupId>org.thingsboard.common</groupId>
23 - <version>3.3.1-SNAPSHOT</version> 23 + <version>3.3.2-SNAPSHOT</version>
24 <artifactId>transport</artifactId> 24 <artifactId>transport</artifactId>
25 </parent> 25 </parent>
26 <groupId>org.thingsboard.common.transport</groupId> 26 <groupId>org.thingsboard.common.transport</groupId>
@@ -20,7 +20,7 @@ @@ -20,7 +20,7 @@
20 <modelVersion>4.0.0</modelVersion> 20 <modelVersion>4.0.0</modelVersion>
21 <parent> 21 <parent>
22 <groupId>org.thingsboard</groupId> 22 <groupId>org.thingsboard</groupId>
23 - <version>3.3.1-SNAPSHOT</version> 23 + <version>3.3.2-SNAPSHOT</version>
24 <artifactId>common</artifactId> 24 <artifactId>common</artifactId>
25 </parent> 25 </parent>
26 <groupId>org.thingsboard.common</groupId> 26 <groupId>org.thingsboard.common</groupId>
@@ -20,7 +20,7 @@ @@ -20,7 +20,7 @@
20 <modelVersion>4.0.0</modelVersion> 20 <modelVersion>4.0.0</modelVersion>
21 <parent> 21 <parent>
22 <groupId>org.thingsboard</groupId> 22 <groupId>org.thingsboard</groupId>
23 - <version>3.3.1-SNAPSHOT</version> 23 + <version>3.3.2-SNAPSHOT</version>
24 <artifactId>thingsboard</artifactId> 24 <artifactId>thingsboard</artifactId>
25 </parent> 25 </parent>
26 <artifactId>dao</artifactId> 26 <artifactId>dao</artifactId>
@@ -55,6 +55,14 @@ public interface DeviceDao extends Dao<Device>, TenantEntityDao { @@ -55,6 +55,14 @@ public interface DeviceDao extends Dao<Device>, TenantEntityDao {
55 Device save(TenantId tenantId, Device device); 55 Device save(TenantId tenantId, Device device);
56 56
57 /** 57 /**
  58 + * Save or update device object
  59 + *
  60 + * @param device the device object
  61 + * @return saved device object
  62 + */
  63 + Device saveAndFlush(TenantId tenantId, Device device);
  64 +
  65 + /**
58 * Find devices by tenantId and page link. 66 * Find devices by tenantId and page link.
59 * 67 *
60 * @param tenantId the tenantId 68 * @param tenantId the tenantId
@@ -269,7 +269,7 @@ public class DeviceServiceImpl extends AbstractEntityService implements DeviceSe @@ -269,7 +269,7 @@ public class DeviceServiceImpl extends AbstractEntityService implements DeviceSe
269 } 269 }
270 device.setType(deviceProfile.getName()); 270 device.setType(deviceProfile.getName());
271 device.setDeviceData(syncDeviceData(deviceProfile, device.getDeviceData())); 271 device.setDeviceData(syncDeviceData(deviceProfile, device.getDeviceData()));
272 - return deviceDao.save(device.getTenantId(), device); 272 + return deviceDao.saveAndFlush(device.getTenantId(), device);
273 } catch (Exception t) { 273 } catch (Exception t) {
274 ConstraintViolationException e = extractConstraintViolationException(t).orElse(null); 274 ConstraintViolationException e = extractConstraintViolationException(t).orElse(null);
275 if (e != null && e.getConstraintName() != null && e.getConstraintName().equalsIgnoreCase("device_name_unq_key")) { 275 if (e != null && e.getConstraintName() != null && e.getConstraintName().equalsIgnoreCase("device_name_unq_key")) {
1 -/**  
2 - * Copyright © 2016-2021 The Thingsboard Authors  
3 - *  
4 - * Licensed under the Apache License, Version 2.0 (the "License");  
5 - * you may not use this file except in compliance with the License.  
6 - * You may obtain a copy of the License at  
7 - *  
8 - * http://www.apache.org/licenses/LICENSE-2.0  
9 - *  
10 - * Unless required by applicable law or agreed to in writing, software  
11 - * distributed under the License is distributed on an "AS IS" BASIS,  
12 - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  
13 - * See the License for the specific language governing permissions and  
14 - * limitations under the License.  
15 - */  
16 -package org.thingsboard.server.dao.model.sql.deprecated;  
17 -  
18 -import com.fasterxml.jackson.databind.JsonNode;  
19 -import lombok.Data;  
20 -import lombok.EqualsAndHashCode;  
21 -import org.hibernate.annotations.Type;  
22 -import org.hibernate.annotations.TypeDef;  
23 -import org.thingsboard.server.common.data.id.deprecated.OAuth2ClientRegistrationInfoId;  
24 -import org.thingsboard.server.common.data.oauth2.*;  
25 -import org.thingsboard.server.common.data.oauth2.deprecated.OAuth2ClientRegistrationInfo;  
26 -import org.thingsboard.server.dao.model.BaseSqlEntity;  
27 -import org.thingsboard.server.dao.model.ModelConstants;  
28 -import org.thingsboard.server.dao.model.sql.deprecated.OAuth2ClientRegistrationInfoEntity;  
29 -import org.thingsboard.server.dao.util.mapping.JsonStringType;  
30 -  
31 -import javax.persistence.*;  
32 -import java.util.Arrays;  
33 -  
34 -@Deprecated  
35 -@Data  
36 -@EqualsAndHashCode(callSuper = true)  
37 -@TypeDef(name = "json", typeClass = JsonStringType.class)  
38 -@MappedSuperclass  
39 -public abstract class AbstractOAuth2ClientRegistrationInfoEntity<T extends OAuth2ClientRegistrationInfo> extends BaseSqlEntity<T> {  
40 -  
41 - @Column(name = ModelConstants.OAUTH2_ENABLED_PROPERTY)  
42 - private Boolean enabled;  
43 - @Column(name = ModelConstants.OAUTH2_CLIENT_ID_PROPERTY)  
44 - private String clientId;  
45 - @Column(name = ModelConstants.OAUTH2_CLIENT_SECRET_PROPERTY)  
46 - private String clientSecret;  
47 - @Column(name = ModelConstants.OAUTH2_AUTHORIZATION_URI_PROPERTY)  
48 - private String authorizationUri;  
49 - @Column(name = ModelConstants.OAUTH2_TOKEN_URI_PROPERTY)  
50 - private String tokenUri;  
51 - @Column(name = ModelConstants.OAUTH2_SCOPE_PROPERTY)  
52 - private String scope;  
53 - @Column(name = ModelConstants.OAUTH2_USER_INFO_URI_PROPERTY)  
54 - private String userInfoUri;  
55 - @Column(name = ModelConstants.OAUTH2_USER_NAME_ATTRIBUTE_NAME_PROPERTY)  
56 - private String userNameAttributeName;  
57 - @Column(name = ModelConstants.OAUTH2_JWK_SET_URI_PROPERTY)  
58 - private String jwkSetUri;  
59 - @Column(name = ModelConstants.OAUTH2_CLIENT_AUTHENTICATION_METHOD_PROPERTY)  
60 - private String clientAuthenticationMethod;  
61 - @Column(name = ModelConstants.OAUTH2_LOGIN_BUTTON_LABEL_PROPERTY)  
62 - private String loginButtonLabel;  
63 - @Column(name = ModelConstants.OAUTH2_LOGIN_BUTTON_ICON_PROPERTY)  
64 - private String loginButtonIcon;  
65 - @Column(name = ModelConstants.OAUTH2_ALLOW_USER_CREATION_PROPERTY)  
66 - private Boolean allowUserCreation;  
67 - @Column(name = ModelConstants.OAUTH2_ACTIVATE_USER_PROPERTY)  
68 - private Boolean activateUser;  
69 - @Enumerated(EnumType.STRING)  
70 - @Column(name = ModelConstants.OAUTH2_MAPPER_TYPE_PROPERTY)  
71 - private MapperType type;  
72 - @Column(name = ModelConstants.OAUTH2_EMAIL_ATTRIBUTE_KEY_PROPERTY)  
73 - private String emailAttributeKey;  
74 - @Column(name = ModelConstants.OAUTH2_FIRST_NAME_ATTRIBUTE_KEY_PROPERTY)  
75 - private String firstNameAttributeKey;  
76 - @Column(name = ModelConstants.OAUTH2_LAST_NAME_ATTRIBUTE_KEY_PROPERTY)  
77 - private String lastNameAttributeKey;  
78 - @Enumerated(EnumType.STRING)  
79 - @Column(name = ModelConstants.OAUTH2_TENANT_NAME_STRATEGY_PROPERTY)  
80 - private TenantNameStrategyType tenantNameStrategy;  
81 - @Column(name = ModelConstants.OAUTH2_TENANT_NAME_PATTERN_PROPERTY)  
82 - private String tenantNamePattern;  
83 - @Column(name = ModelConstants.OAUTH2_CUSTOMER_NAME_PATTERN_PROPERTY)  
84 - private String customerNamePattern;  
85 - @Column(name = ModelConstants.OAUTH2_DEFAULT_DASHBOARD_NAME_PROPERTY)  
86 - private String defaultDashboardName;  
87 - @Column(name = ModelConstants.OAUTH2_ALWAYS_FULL_SCREEN_PROPERTY)  
88 - private Boolean alwaysFullScreen;  
89 - @Column(name = ModelConstants.OAUTH2_MAPPER_URL_PROPERTY)  
90 - private String url;  
91 - @Column(name = ModelConstants.OAUTH2_MAPPER_USERNAME_PROPERTY)  
92 - private String username;  
93 - @Column(name = ModelConstants.OAUTH2_MAPPER_PASSWORD_PROPERTY)  
94 - private String password;  
95 - @Column(name = ModelConstants.OAUTH2_MAPPER_SEND_TOKEN_PROPERTY)  
96 - private Boolean sendToken;  
97 -  
98 - @Type(type = "json")  
99 - @Column(name = ModelConstants.OAUTH2_ADDITIONAL_INFO_PROPERTY)  
100 - private JsonNode additionalInfo;  
101 -  
102 - public AbstractOAuth2ClientRegistrationInfoEntity() {  
103 - super();  
104 - }  
105 -  
106 - public AbstractOAuth2ClientRegistrationInfoEntity(OAuth2ClientRegistrationInfo clientRegistrationInfo) {  
107 - if (clientRegistrationInfo.getId() != null) {  
108 - this.setUuid(clientRegistrationInfo.getId().getId());  
109 - }  
110 - this.createdTime = clientRegistrationInfo.getCreatedTime();  
111 - this.enabled = clientRegistrationInfo.isEnabled();  
112 - this.clientId = clientRegistrationInfo.getClientId();  
113 - this.clientSecret = clientRegistrationInfo.getClientSecret();  
114 - this.authorizationUri = clientRegistrationInfo.getAuthorizationUri();  
115 - this.tokenUri = clientRegistrationInfo.getAccessTokenUri();  
116 - this.scope = clientRegistrationInfo.getScope().stream().reduce((result, element) -> result + "," + element).orElse("");  
117 - this.userInfoUri = clientRegistrationInfo.getUserInfoUri();  
118 - this.userNameAttributeName = clientRegistrationInfo.getUserNameAttributeName();  
119 - this.jwkSetUri = clientRegistrationInfo.getJwkSetUri();  
120 - this.clientAuthenticationMethod = clientRegistrationInfo.getClientAuthenticationMethod();  
121 - this.loginButtonLabel = clientRegistrationInfo.getLoginButtonLabel();  
122 - this.loginButtonIcon = clientRegistrationInfo.getLoginButtonIcon();  
123 - this.additionalInfo = clientRegistrationInfo.getAdditionalInfo();  
124 - OAuth2MapperConfig mapperConfig = clientRegistrationInfo.getMapperConfig();  
125 - if (mapperConfig != null) {  
126 - this.allowUserCreation = mapperConfig.isAllowUserCreation();  
127 - this.activateUser = mapperConfig.isActivateUser();  
128 - this.type = mapperConfig.getType();  
129 - OAuth2BasicMapperConfig basicConfig = mapperConfig.getBasic();  
130 - if (basicConfig != null) {  
131 - this.emailAttributeKey = basicConfig.getEmailAttributeKey();  
132 - this.firstNameAttributeKey = basicConfig.getFirstNameAttributeKey();  
133 - this.lastNameAttributeKey = basicConfig.getLastNameAttributeKey();  
134 - this.tenantNameStrategy = basicConfig.getTenantNameStrategy();  
135 - this.tenantNamePattern = basicConfig.getTenantNamePattern();  
136 - this.customerNamePattern = basicConfig.getCustomerNamePattern();  
137 - this.defaultDashboardName = basicConfig.getDefaultDashboardName();  
138 - this.alwaysFullScreen = basicConfig.isAlwaysFullScreen();  
139 - }  
140 - OAuth2CustomMapperConfig customConfig = mapperConfig.getCustom();  
141 - if (customConfig != null) {  
142 - this.url = customConfig.getUrl();  
143 - this.username = customConfig.getUsername();  
144 - this.password = customConfig.getPassword();  
145 - this.sendToken = customConfig.isSendToken();  
146 - }  
147 - }  
148 - }  
149 -  
150 - public AbstractOAuth2ClientRegistrationInfoEntity(OAuth2ClientRegistrationInfoEntity oAuth2ClientRegistrationInfoEntity) {  
151 - this.setId(oAuth2ClientRegistrationInfoEntity.getId());  
152 - this.setCreatedTime(oAuth2ClientRegistrationInfoEntity.getCreatedTime());  
153 - this.enabled = oAuth2ClientRegistrationInfoEntity.getEnabled();  
154 - this.clientId = oAuth2ClientRegistrationInfoEntity.getClientId();  
155 - this.clientSecret = oAuth2ClientRegistrationInfoEntity.getClientSecret();  
156 - this.authorizationUri = oAuth2ClientRegistrationInfoEntity.getAuthorizationUri();  
157 - this.tokenUri = oAuth2ClientRegistrationInfoEntity.getTokenUri();  
158 - this.scope = oAuth2ClientRegistrationInfoEntity.getScope();  
159 - this.userInfoUri = oAuth2ClientRegistrationInfoEntity.getUserInfoUri();  
160 - this.userNameAttributeName = oAuth2ClientRegistrationInfoEntity.getUserNameAttributeName();  
161 - this.jwkSetUri = oAuth2ClientRegistrationInfoEntity.getJwkSetUri();  
162 - this.clientAuthenticationMethod = oAuth2ClientRegistrationInfoEntity.getClientAuthenticationMethod();  
163 - this.loginButtonLabel = oAuth2ClientRegistrationInfoEntity.getLoginButtonLabel();  
164 - this.loginButtonIcon = oAuth2ClientRegistrationInfoEntity.getLoginButtonIcon();  
165 - this.additionalInfo = oAuth2ClientRegistrationInfoEntity.getAdditionalInfo();  
166 - this.allowUserCreation = oAuth2ClientRegistrationInfoEntity.getAllowUserCreation();  
167 - this.activateUser = oAuth2ClientRegistrationInfoEntity.getActivateUser();  
168 - this.type = oAuth2ClientRegistrationInfoEntity.getType();  
169 - this.emailAttributeKey = oAuth2ClientRegistrationInfoEntity.getEmailAttributeKey();  
170 - this.firstNameAttributeKey = oAuth2ClientRegistrationInfoEntity.getFirstNameAttributeKey();  
171 - this.lastNameAttributeKey = oAuth2ClientRegistrationInfoEntity.getLastNameAttributeKey();  
172 - this.tenantNameStrategy = oAuth2ClientRegistrationInfoEntity.getTenantNameStrategy();  
173 - this.tenantNamePattern = oAuth2ClientRegistrationInfoEntity.getTenantNamePattern();  
174 - this.customerNamePattern = oAuth2ClientRegistrationInfoEntity.getCustomerNamePattern();  
175 - this.defaultDashboardName = oAuth2ClientRegistrationInfoEntity.getDefaultDashboardName();  
176 - this.alwaysFullScreen = oAuth2ClientRegistrationInfoEntity.getAlwaysFullScreen();  
177 - this.url = oAuth2ClientRegistrationInfoEntity.getUrl();  
178 - this.username = oAuth2ClientRegistrationInfoEntity.getUsername();  
179 - this.password = oAuth2ClientRegistrationInfoEntity.getPassword();  
180 - this.sendToken = oAuth2ClientRegistrationInfoEntity.getSendToken();  
181 - }  
182 -  
183 -  
184 - protected OAuth2ClientRegistrationInfo toOAuth2ClientRegistrationInfo() {  
185 - OAuth2ClientRegistrationInfo clientRegistrationInfo = new OAuth2ClientRegistrationInfo();  
186 - clientRegistrationInfo.setId(new OAuth2ClientRegistrationInfoId(id));  
187 - clientRegistrationInfo.setEnabled(enabled);  
188 - clientRegistrationInfo.setCreatedTime(createdTime);  
189 - clientRegistrationInfo.setAdditionalInfo(additionalInfo);  
190 - clientRegistrationInfo.setMapperConfig(  
191 - OAuth2MapperConfig.builder()  
192 - .allowUserCreation(allowUserCreation)  
193 - .activateUser(activateUser)  
194 - .type(type)  
195 - .basic(  
196 - (type == MapperType.BASIC || type == MapperType.GITHUB) ?  
197 - OAuth2BasicMapperConfig.builder()  
198 - .emailAttributeKey(emailAttributeKey)  
199 - .firstNameAttributeKey(firstNameAttributeKey)  
200 - .lastNameAttributeKey(lastNameAttributeKey)  
201 - .tenantNameStrategy(tenantNameStrategy)  
202 - .tenantNamePattern(tenantNamePattern)  
203 - .customerNamePattern(customerNamePattern)  
204 - .defaultDashboardName(defaultDashboardName)  
205 - .alwaysFullScreen(alwaysFullScreen)  
206 - .build()  
207 - : null  
208 - )  
209 - .custom(  
210 - type == MapperType.CUSTOM ?  
211 - OAuth2CustomMapperConfig.builder()  
212 - .url(url)  
213 - .username(username)  
214 - .password(password)  
215 - .sendToken(sendToken)  
216 - .build()  
217 - : null  
218 - )  
219 - .build()  
220 - );  
221 - clientRegistrationInfo.setClientId(clientId);  
222 - clientRegistrationInfo.setClientSecret(clientSecret);  
223 - clientRegistrationInfo.setAuthorizationUri(authorizationUri);  
224 - clientRegistrationInfo.setAccessTokenUri(tokenUri);  
225 - clientRegistrationInfo.setScope(Arrays.asList(scope.split(",")));  
226 - clientRegistrationInfo.setUserInfoUri(userInfoUri);  
227 - clientRegistrationInfo.setUserNameAttributeName(userNameAttributeName);  
228 - clientRegistrationInfo.setJwkSetUri(jwkSetUri);  
229 - clientRegistrationInfo.setClientAuthenticationMethod(clientAuthenticationMethod);  
230 - clientRegistrationInfo.setLoginButtonLabel(loginButtonLabel);  
231 - clientRegistrationInfo.setLoginButtonIcon(loginButtonIcon);  
232 - return clientRegistrationInfo;  
233 - }  
234 -}  
1 -/**  
2 - * Copyright © 2016-2021 The Thingsboard Authors  
3 - *  
4 - * Licensed under the Apache License, Version 2.0 (the "License");  
5 - * you may not use this file except in compliance with the License.  
6 - * You may obtain a copy of the License at  
7 - *  
8 - * http://www.apache.org/licenses/LICENSE-2.0  
9 - *  
10 - * Unless required by applicable law or agreed to in writing, software  
11 - * distributed under the License is distributed on an "AS IS" BASIS,  
12 - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  
13 - * See the License for the specific language governing permissions and  
14 - * limitations under the License.  
15 - */  
16 -package org.thingsboard.server.dao.model.sql.deprecated;  
17 -  
18 -import lombok.Data;  
19 -import lombok.EqualsAndHashCode;  
20 -import org.thingsboard.server.common.data.oauth2.deprecated.ExtendedOAuth2ClientRegistrationInfo;  
21 -import org.thingsboard.server.common.data.oauth2.SchemeType;  
22 -  
23 -@Deprecated  
24 -@Data  
25 -@EqualsAndHashCode(callSuper = true)  
26 -public class ExtendedOAuth2ClientRegistrationInfoEntity extends AbstractOAuth2ClientRegistrationInfoEntity<ExtendedOAuth2ClientRegistrationInfo> {  
27 -  
28 - private String domainName;  
29 - private SchemeType domainScheme;  
30 -  
31 - public ExtendedOAuth2ClientRegistrationInfoEntity() {  
32 - super();  
33 - }  
34 -  
35 - public ExtendedOAuth2ClientRegistrationInfoEntity(OAuth2ClientRegistrationInfoEntity oAuth2ClientRegistrationInfoEntity,  
36 - String domainName,  
37 - SchemeType domainScheme) {  
38 - super(oAuth2ClientRegistrationInfoEntity);  
39 - this.domainName = domainName;  
40 - this.domainScheme = domainScheme;  
41 - }  
42 -  
43 - @Override  
44 - public ExtendedOAuth2ClientRegistrationInfo toData() {  
45 - return new ExtendedOAuth2ClientRegistrationInfo(super.toOAuth2ClientRegistrationInfo(),  
46 - domainScheme,  
47 - domainName);  
48 - }  
49 -}  
1 -/**  
2 - * Copyright © 2016-2021 The Thingsboard Authors  
3 - *  
4 - * Licensed under the Apache License, Version 2.0 (the "License");  
5 - * you may not use this file except in compliance with the License.  
6 - * You may obtain a copy of the License at  
7 - *  
8 - * http://www.apache.org/licenses/LICENSE-2.0  
9 - *  
10 - * Unless required by applicable law or agreed to in writing, software  
11 - * distributed under the License is distributed on an "AS IS" BASIS,  
12 - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  
13 - * See the License for the specific language governing permissions and  
14 - * limitations under the License.  
15 - */  
16 -package org.thingsboard.server.dao.model.sql.deprecated;  
17 -  
18 -import lombok.Data;  
19 -import lombok.EqualsAndHashCode;  
20 -import org.hibernate.annotations.TypeDef;  
21 -import org.thingsboard.server.common.data.id.deprecated.OAuth2ClientRegistrationId;  
22 -import org.thingsboard.server.common.data.id.deprecated.OAuth2ClientRegistrationInfoId;  
23 -import org.thingsboard.server.common.data.oauth2.*;  
24 -import org.thingsboard.server.common.data.oauth2.deprecated.OAuth2ClientRegistration;  
25 -import org.thingsboard.server.dao.model.BaseSqlEntity;  
26 -import org.thingsboard.server.dao.model.ModelConstants;  
27 -import org.thingsboard.server.dao.util.mapping.JsonStringType;  
28 -  
29 -import javax.persistence.*;  
30 -import java.util.UUID;  
31 -  
32 -@Deprecated  
33 -@Data  
34 -@EqualsAndHashCode(callSuper = true)  
35 -@Entity  
36 -@TypeDef(name = "json", typeClass = JsonStringType.class)  
37 -@Table(name = ModelConstants.OAUTH2_CLIENT_REGISTRATION_COLUMN_FAMILY_NAME)  
38 -public class OAuth2ClientRegistrationEntity extends BaseSqlEntity<OAuth2ClientRegistration> {  
39 -  
40 - @Column(name = ModelConstants.OAUTH2_CLIENT_REGISTRATION_INFO_ID_PROPERTY, columnDefinition = "uuid")  
41 - private UUID clientRegistrationInfoId;  
42 -  
43 - @Column(name = ModelConstants.OAUTH2_DOMAIN_NAME_PROPERTY)  
44 - private String domainName;  
45 -  
46 - @Enumerated(EnumType.STRING)  
47 - @Column(name = ModelConstants.OAUTH2_DOMAIN_SCHEME_PROPERTY)  
48 - private SchemeType domainScheme;  
49 -  
50 - public OAuth2ClientRegistrationEntity() {  
51 - super();  
52 - }  
53 -  
54 - public OAuth2ClientRegistrationEntity(OAuth2ClientRegistration clientRegistration) {  
55 - if (clientRegistration.getId() != null) {  
56 - this.setUuid(clientRegistration.getId().getId());  
57 - }  
58 - if (clientRegistration.getClientRegistrationId() != null){  
59 - this.clientRegistrationInfoId = clientRegistration.getClientRegistrationId().getId();  
60 - }  
61 - this.createdTime = clientRegistration.getCreatedTime();  
62 - this.domainName = clientRegistration.getDomainName();  
63 - this.domainScheme = clientRegistration.getDomainScheme();  
64 - }  
65 -  
66 - @Override  
67 - public OAuth2ClientRegistration toData() {  
68 - OAuth2ClientRegistration clientRegistration = new OAuth2ClientRegistration();  
69 - clientRegistration.setId(new OAuth2ClientRegistrationId(id));  
70 - clientRegistration.setClientRegistrationId(new OAuth2ClientRegistrationInfoId(clientRegistrationInfoId));  
71 - clientRegistration.setCreatedTime(createdTime);  
72 - clientRegistration.setDomainName(domainName);  
73 - clientRegistration.setDomainScheme(domainScheme);  
74 - return clientRegistration;  
75 - }  
76 -}  
1 -/**  
2 - * Copyright © 2016-2021 The Thingsboard Authors  
3 - *  
4 - * Licensed under the Apache License, Version 2.0 (the "License");  
5 - * you may not use this file except in compliance with the License.  
6 - * You may obtain a copy of the License at  
7 - *  
8 - * http://www.apache.org/licenses/LICENSE-2.0  
9 - *  
10 - * Unless required by applicable law or agreed to in writing, software  
11 - * distributed under the License is distributed on an "AS IS" BASIS,  
12 - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  
13 - * See the License for the specific language governing permissions and  
14 - * limitations under the License.  
15 - */  
16 -package org.thingsboard.server.dao.model.sql.deprecated;  
17 -  
18 -import lombok.Data;  
19 -import lombok.EqualsAndHashCode;  
20 -import org.hibernate.annotations.TypeDef;  
21 -import org.thingsboard.server.common.data.oauth2.deprecated.OAuth2ClientRegistrationInfo;  
22 -import org.thingsboard.server.dao.model.ModelConstants;  
23 -import org.thingsboard.server.dao.util.mapping.JsonStringType;  
24 -  
25 -import javax.persistence.Entity;  
26 -import javax.persistence.Table;  
27 -  
28 -@Deprecated  
29 -@Data  
30 -@EqualsAndHashCode(callSuper = true)  
31 -@Entity  
32 -@TypeDef(name = "json", typeClass = JsonStringType.class)  
33 -@Table(name = ModelConstants.OAUTH2_CLIENT_REGISTRATION_INFO_COLUMN_FAMILY_NAME)  
34 -public class OAuth2ClientRegistrationInfoEntity extends AbstractOAuth2ClientRegistrationInfoEntity<OAuth2ClientRegistrationInfo> {  
35 -  
36 - public OAuth2ClientRegistrationInfoEntity() {  
37 - super();  
38 - }  
39 -  
40 - public OAuth2ClientRegistrationInfoEntity(OAuth2ClientRegistrationInfo clientRegistration) {  
41 - super(clientRegistration);  
42 - }  
43 -  
44 - public OAuth2ClientRegistrationInfoEntity(OAuth2ClientRegistrationInfoEntity oAuth2ClientRegistrationInfoEntity) {  
45 - super(oAuth2ClientRegistrationInfoEntity);  
46 - }  
47 -  
48 - @Override  
49 - public OAuth2ClientRegistrationInfo toData() {  
50 - return super.toOAuth2ClientRegistrationInfo();  
51 - }  
52 -}  
@@ -38,18 +38,9 @@ import org.thingsboard.server.common.data.oauth2.OAuth2RegistrationInfo; @@ -38,18 +38,9 @@ import org.thingsboard.server.common.data.oauth2.OAuth2RegistrationInfo;
38 import org.thingsboard.server.common.data.oauth2.PlatformType; 38 import org.thingsboard.server.common.data.oauth2.PlatformType;
39 import org.thingsboard.server.common.data.oauth2.SchemeType; 39 import org.thingsboard.server.common.data.oauth2.SchemeType;
40 import org.thingsboard.server.common.data.oauth2.TenantNameStrategyType; 40 import org.thingsboard.server.common.data.oauth2.TenantNameStrategyType;
41 -import org.thingsboard.server.common.data.oauth2.deprecated.ClientRegistrationDto;  
42 -import org.thingsboard.server.common.data.oauth2.deprecated.DomainInfo;  
43 -import org.thingsboard.server.common.data.oauth2.deprecated.ExtendedOAuth2ClientRegistrationInfo;  
44 -import org.thingsboard.server.common.data.oauth2.deprecated.OAuth2ClientRegistration;  
45 -import org.thingsboard.server.common.data.oauth2.deprecated.OAuth2ClientRegistrationInfo;  
46 -import org.thingsboard.server.common.data.oauth2.deprecated.OAuth2ClientsDomainParams;  
47 -import org.thingsboard.server.common.data.oauth2.deprecated.OAuth2ClientsParams;  
48 import org.thingsboard.server.dao.entity.AbstractEntityService; 41 import org.thingsboard.server.dao.entity.AbstractEntityService;
49 import org.thingsboard.server.dao.exception.DataValidationException; 42 import org.thingsboard.server.dao.exception.DataValidationException;
50 import org.thingsboard.server.dao.exception.IncorrectParameterException; 43 import org.thingsboard.server.dao.exception.IncorrectParameterException;
51 -import org.thingsboard.server.dao.oauth2.deprecated.OAuth2ClientRegistrationDao;  
52 -import org.thingsboard.server.dao.oauth2.deprecated.OAuth2ClientRegistrationInfoDao;  
53 44
54 import javax.transaction.Transactional; 45 import javax.transaction.Transactional;
55 import java.util.ArrayList; 46 import java.util.ArrayList;
@@ -72,10 +63,6 @@ public class OAuth2ServiceImpl extends AbstractEntityService implements OAuth2Se @@ -72,10 +63,6 @@ public class OAuth2ServiceImpl extends AbstractEntityService implements OAuth2Se
72 public static final String INCORRECT_DOMAIN_SCHEME = "Incorrect domainScheme "; 63 public static final String INCORRECT_DOMAIN_SCHEME = "Incorrect domainScheme ";
73 64
74 @Autowired 65 @Autowired
75 - private OAuth2ClientRegistrationInfoDao clientRegistrationInfoDao;  
76 - @Autowired  
77 - private OAuth2ClientRegistrationDao clientRegistrationDao;  
78 - @Autowired  
79 private OAuth2ParamsDao oauth2ParamsDao; 66 private OAuth2ParamsDao oauth2ParamsDao;
80 @Autowired 67 @Autowired
81 private OAuth2RegistrationDao oauth2RegistrationDao; 68 private OAuth2RegistrationDao oauth2RegistrationDao;
@@ -104,27 +91,6 @@ public class OAuth2ServiceImpl extends AbstractEntityService implements OAuth2Se @@ -104,27 +91,6 @@ public class OAuth2ServiceImpl extends AbstractEntityService implements OAuth2Se
104 .collect(Collectors.toList()); 91 .collect(Collectors.toList());
105 } 92 }
106 93
107 - @Deprecated  
108 - @Override  
109 - @Transactional  
110 - public void saveOAuth2Params(OAuth2ClientsParams oauth2Params) {  
111 - log.trace("Executing saveOAuth2Params [{}]", oauth2Params);  
112 - clientParamsValidator.accept(oauth2Params);  
113 - clientRegistrationDao.deleteAll();  
114 - clientRegistrationInfoDao.deleteAll();  
115 - oauth2Params.getDomainsParams().forEach(domainParams -> {  
116 - domainParams.getClientRegistrations().forEach(clientRegistrationDto -> {  
117 - OAuth2ClientRegistrationInfo oAuth2ClientRegistrationInfo = OAuth2Utils.toClientRegistrationInfo(oauth2Params.isEnabled(), clientRegistrationDto);  
118 - OAuth2ClientRegistrationInfo savedClientRegistrationInfo = clientRegistrationInfoDao.save(TenantId.SYS_TENANT_ID, oAuth2ClientRegistrationInfo);  
119 - domainParams.getDomainInfos().forEach(domainInfo -> {  
120 - OAuth2ClientRegistration oAuth2ClientRegistration = OAuth2Utils.toClientRegistration(savedClientRegistrationInfo.getId(),  
121 - domainInfo.getScheme(), domainInfo.getName());  
122 - clientRegistrationDao.save(TenantId.SYS_TENANT_ID, oAuth2ClientRegistration);  
123 - });  
124 - });  
125 - });  
126 - }  
127 -  
128 @Override 94 @Override
129 @Transactional 95 @Transactional
130 public void saveOAuth2Info(OAuth2Info oauth2Info) { 96 public void saveOAuth2Info(OAuth2Info oauth2Info) {
@@ -151,14 +117,6 @@ public class OAuth2ServiceImpl extends AbstractEntityService implements OAuth2Se @@ -151,14 +117,6 @@ public class OAuth2ServiceImpl extends AbstractEntityService implements OAuth2Se
151 }); 117 });
152 } 118 }
153 119
154 - @Deprecated  
155 - @Override  
156 - public OAuth2ClientsParams findOAuth2Params() {  
157 - log.trace("Executing findOAuth2Params");  
158 - List<ExtendedOAuth2ClientRegistrationInfo> extendedInfos = clientRegistrationInfoDao.findAllExtended();  
159 - return OAuth2Utils.toOAuth2Params(extendedInfos);  
160 - }  
161 -  
162 @Override 120 @Override
163 public OAuth2Info findOAuth2Info() { 121 public OAuth2Info findOAuth2Info() {
164 log.trace("Executing findOAuth2Info"); 122 log.trace("Executing findOAuth2Info");
@@ -198,114 +156,6 @@ public class OAuth2ServiceImpl extends AbstractEntityService implements OAuth2Se @@ -198,114 +156,6 @@ public class OAuth2ServiceImpl extends AbstractEntityService implements OAuth2Se
198 return oauth2RegistrationDao.find(TenantId.SYS_TENANT_ID); 156 return oauth2RegistrationDao.find(TenantId.SYS_TENANT_ID);
199 } 157 }
200 158
201 - private final Consumer<OAuth2ClientsParams> clientParamsValidator = oauth2Params -> {  
202 - if (oauth2Params == null  
203 - || oauth2Params.getDomainsParams() == null) {  
204 - throw new DataValidationException("Domain params should be specified!");  
205 - }  
206 - for (OAuth2ClientsDomainParams domainParams : oauth2Params.getDomainsParams()) {  
207 - if (domainParams.getDomainInfos() == null  
208 - || domainParams.getDomainInfos().isEmpty()) {  
209 - throw new DataValidationException("List of domain configuration should be specified!");  
210 - }  
211 - for (DomainInfo domainInfo : domainParams.getDomainInfos()) {  
212 - if (StringUtils.isEmpty(domainInfo.getName())) {  
213 - throw new DataValidationException("Domain name should be specified!");  
214 - }  
215 - if (domainInfo.getScheme() == null) {  
216 - throw new DataValidationException("Domain scheme should be specified!");  
217 - }  
218 - }  
219 - domainParams.getDomainInfos().stream()  
220 - .collect(Collectors.groupingBy(DomainInfo::getName))  
221 - .forEach((domainName, domainInfos) -> {  
222 - if (domainInfos.size() > 1 && domainInfos.stream().anyMatch(domainInfo -> domainInfo.getScheme() == SchemeType.MIXED)) {  
223 - throw new DataValidationException("MIXED scheme type shouldn't be combined with another scheme type!");  
224 - }  
225 - });  
226 - if (domainParams.getClientRegistrations() == null || domainParams.getClientRegistrations().isEmpty()) {  
227 - throw new DataValidationException("Client registrations should be specified!");  
228 - }  
229 - for (ClientRegistrationDto clientRegistration : domainParams.getClientRegistrations()) {  
230 - if (StringUtils.isEmpty(clientRegistration.getClientId())) {  
231 - throw new DataValidationException("Client ID should be specified!");  
232 - }  
233 - if (StringUtils.isEmpty(clientRegistration.getClientSecret())) {  
234 - throw new DataValidationException("Client secret should be specified!");  
235 - }  
236 - if (StringUtils.isEmpty(clientRegistration.getAuthorizationUri())) {  
237 - throw new DataValidationException("Authorization uri should be specified!");  
238 - }  
239 - if (StringUtils.isEmpty(clientRegistration.getAccessTokenUri())) {  
240 - throw new DataValidationException("Token uri should be specified!");  
241 - }  
242 - if (StringUtils.isEmpty(clientRegistration.getScope())) {  
243 - throw new DataValidationException("Scope should be specified!");  
244 - }  
245 - if (StringUtils.isEmpty(clientRegistration.getUserInfoUri())) {  
246 - throw new DataValidationException("User info uri should be specified!");  
247 - }  
248 - if (StringUtils.isEmpty(clientRegistration.getUserNameAttributeName())) {  
249 - throw new DataValidationException("User name attribute name should be specified!");  
250 - }  
251 - if (StringUtils.isEmpty(clientRegistration.getClientAuthenticationMethod())) {  
252 - throw new DataValidationException("Client authentication method should be specified!");  
253 - }  
254 - if (StringUtils.isEmpty(clientRegistration.getLoginButtonLabel())) {  
255 - throw new DataValidationException("Login button label should be specified!");  
256 - }  
257 - OAuth2MapperConfig mapperConfig = clientRegistration.getMapperConfig();  
258 - if (mapperConfig == null) {  
259 - throw new DataValidationException("Mapper config should be specified!");  
260 - }  
261 - if (mapperConfig.getType() == null) {  
262 - throw new DataValidationException("Mapper config type should be specified!");  
263 - }  
264 - if (mapperConfig.getType() == MapperType.BASIC) {  
265 - OAuth2BasicMapperConfig basicConfig = mapperConfig.getBasic();  
266 - if (basicConfig == null) {  
267 - throw new DataValidationException("Basic config should be specified!");  
268 - }  
269 - if (StringUtils.isEmpty(basicConfig.getEmailAttributeKey())) {  
270 - throw new DataValidationException("Email attribute key should be specified!");  
271 - }  
272 - if (basicConfig.getTenantNameStrategy() == null) {  
273 - throw new DataValidationException("Tenant name strategy should be specified!");  
274 - }  
275 - if (basicConfig.getTenantNameStrategy() == TenantNameStrategyType.CUSTOM  
276 - && StringUtils.isEmpty(basicConfig.getTenantNamePattern())) {  
277 - throw new DataValidationException("Tenant name pattern should be specified!");  
278 - }  
279 - }  
280 - if (mapperConfig.getType() == MapperType.GITHUB) {  
281 - OAuth2BasicMapperConfig basicConfig = mapperConfig.getBasic();  
282 - if (basicConfig == null) {  
283 - throw new DataValidationException("Basic config should be specified!");  
284 - }  
285 - if (!StringUtils.isEmpty(basicConfig.getEmailAttributeKey())) {  
286 - throw new DataValidationException("Email attribute key cannot be configured for GITHUB mapper type!");  
287 - }  
288 - if (basicConfig.getTenantNameStrategy() == null) {  
289 - throw new DataValidationException("Tenant name strategy should be specified!");  
290 - }  
291 - if (basicConfig.getTenantNameStrategy() == TenantNameStrategyType.CUSTOM  
292 - && StringUtils.isEmpty(basicConfig.getTenantNamePattern())) {  
293 - throw new DataValidationException("Tenant name pattern should be specified!");  
294 - }  
295 - }  
296 - if (mapperConfig.getType() == MapperType.CUSTOM) {  
297 - OAuth2CustomMapperConfig customConfig = mapperConfig.getCustom();  
298 - if (customConfig == null) {  
299 - throw new DataValidationException("Custom config should be specified!");  
300 - }  
301 - if (StringUtils.isEmpty(customConfig.getUrl())) {  
302 - throw new DataValidationException("Custom mapper URL should be specified!");  
303 - }  
304 - }  
305 - }  
306 - }  
307 - };  
308 -  
309 private final Consumer<OAuth2Info> oauth2InfoValidator = oauth2Info -> { 159 private final Consumer<OAuth2Info> oauth2InfoValidator = oauth2Info -> {
310 if (oauth2Info == null 160 if (oauth2Info == null
311 || oauth2Info.getOauth2ParamsInfos() == null) { 161 || oauth2Info.getOauth2ParamsInfos() == null) {
@@ -18,15 +18,7 @@ package org.thingsboard.server.dao.oauth2; @@ -18,15 +18,7 @@ package org.thingsboard.server.dao.oauth2;
18 import org.thingsboard.server.common.data.BaseData; 18 import org.thingsboard.server.common.data.BaseData;
19 import org.thingsboard.server.common.data.id.OAuth2ParamsId; 19 import org.thingsboard.server.common.data.id.OAuth2ParamsId;
20 import org.thingsboard.server.common.data.id.TenantId; 20 import org.thingsboard.server.common.data.id.TenantId;
21 -import org.thingsboard.server.common.data.id.deprecated.OAuth2ClientRegistrationInfoId;  
22 import org.thingsboard.server.common.data.oauth2.*; 21 import org.thingsboard.server.common.data.oauth2.*;
23 -import org.thingsboard.server.common.data.oauth2.deprecated.ClientRegistrationDto;  
24 -import org.thingsboard.server.common.data.oauth2.deprecated.DomainInfo;  
25 -import org.thingsboard.server.common.data.oauth2.deprecated.ExtendedOAuth2ClientRegistrationInfo;  
26 -import org.thingsboard.server.common.data.oauth2.deprecated.OAuth2ClientRegistration;  
27 -import org.thingsboard.server.common.data.oauth2.deprecated.OAuth2ClientRegistrationInfo;  
28 -import org.thingsboard.server.common.data.oauth2.deprecated.OAuth2ClientsDomainParams;  
29 -import org.thingsboard.server.common.data.oauth2.deprecated.OAuth2ClientsParams;  
30 22
31 import java.util.*; 23 import java.util.*;
32 import java.util.stream.Collectors; 24 import java.util.stream.Collectors;
@@ -42,75 +34,6 @@ public class OAuth2Utils { @@ -42,75 +34,6 @@ public class OAuth2Utils {
42 return client; 34 return client;
43 } 35 }
44 36
45 - public static OAuth2ClientsParams toOAuth2Params(List<ExtendedOAuth2ClientRegistrationInfo> extendedOAuth2ClientRegistrationInfos) {  
46 - Map<OAuth2ClientRegistrationInfoId, List<DomainInfo>> domainsByInfoId = new LinkedHashMap<>();  
47 - Map<OAuth2ClientRegistrationInfoId, OAuth2ClientRegistrationInfo> infoById = new LinkedHashMap<>();  
48 - for (ExtendedOAuth2ClientRegistrationInfo extendedClientRegistrationInfo : extendedOAuth2ClientRegistrationInfos) {  
49 - String domainName = extendedClientRegistrationInfo.getDomainName();  
50 - SchemeType domainScheme = extendedClientRegistrationInfo.getDomainScheme();  
51 - domainsByInfoId.computeIfAbsent(extendedClientRegistrationInfo.getId(), key -> new ArrayList<>())  
52 - .add(new DomainInfo(domainScheme, domainName));  
53 - infoById.put(extendedClientRegistrationInfo.getId(), extendedClientRegistrationInfo);  
54 - }  
55 - Map<List<DomainInfo>, OAuth2ClientsDomainParams> domainParamsMap = new LinkedHashMap<>();  
56 - domainsByInfoId.forEach((clientRegistrationInfoId, domainInfos) -> {  
57 - domainParamsMap.computeIfAbsent(domainInfos,  
58 - key -> new OAuth2ClientsDomainParams(key, new ArrayList<>())  
59 - )  
60 - .getClientRegistrations()  
61 - .add(toClientRegistrationDto(infoById.get(clientRegistrationInfoId)));  
62 - });  
63 - boolean enabled = extendedOAuth2ClientRegistrationInfos.stream()  
64 - .map(OAuth2ClientRegistrationInfo::isEnabled)  
65 - .findFirst().orElse(false);  
66 - return new OAuth2ClientsParams(enabled, new ArrayList<>(domainParamsMap.values()));  
67 - }  
68 -  
69 - public static ClientRegistrationDto toClientRegistrationDto(OAuth2ClientRegistrationInfo oAuth2ClientRegistrationInfo) {  
70 - return ClientRegistrationDto.builder()  
71 - .mapperConfig(oAuth2ClientRegistrationInfo.getMapperConfig())  
72 - .clientId(oAuth2ClientRegistrationInfo.getClientId())  
73 - .clientSecret(oAuth2ClientRegistrationInfo.getClientSecret())  
74 - .authorizationUri(oAuth2ClientRegistrationInfo.getAuthorizationUri())  
75 - .accessTokenUri(oAuth2ClientRegistrationInfo.getAccessTokenUri())  
76 - .scope(oAuth2ClientRegistrationInfo.getScope())  
77 - .userInfoUri(oAuth2ClientRegistrationInfo.getUserInfoUri())  
78 - .userNameAttributeName(oAuth2ClientRegistrationInfo.getUserNameAttributeName())  
79 - .jwkSetUri(oAuth2ClientRegistrationInfo.getJwkSetUri())  
80 - .clientAuthenticationMethod(oAuth2ClientRegistrationInfo.getClientAuthenticationMethod())  
81 - .loginButtonLabel(oAuth2ClientRegistrationInfo.getLoginButtonLabel())  
82 - .loginButtonIcon(oAuth2ClientRegistrationInfo.getLoginButtonIcon())  
83 - .additionalInfo(oAuth2ClientRegistrationInfo.getAdditionalInfo())  
84 - .build();  
85 - }  
86 -  
87 - public static OAuth2ClientRegistrationInfo toClientRegistrationInfo(boolean enabled, ClientRegistrationDto clientRegistrationDto) {  
88 - OAuth2ClientRegistrationInfo clientRegistrationInfo = new OAuth2ClientRegistrationInfo();  
89 - clientRegistrationInfo.setEnabled(enabled);  
90 - clientRegistrationInfo.setMapperConfig(clientRegistrationDto.getMapperConfig());  
91 - clientRegistrationInfo.setClientId(clientRegistrationDto.getClientId());  
92 - clientRegistrationInfo.setClientSecret(clientRegistrationDto.getClientSecret());  
93 - clientRegistrationInfo.setAuthorizationUri(clientRegistrationDto.getAuthorizationUri());  
94 - clientRegistrationInfo.setAccessTokenUri(clientRegistrationDto.getAccessTokenUri());  
95 - clientRegistrationInfo.setScope(clientRegistrationDto.getScope());  
96 - clientRegistrationInfo.setUserInfoUri(clientRegistrationDto.getUserInfoUri());  
97 - clientRegistrationInfo.setUserNameAttributeName(clientRegistrationDto.getUserNameAttributeName());  
98 - clientRegistrationInfo.setJwkSetUri(clientRegistrationDto.getJwkSetUri());  
99 - clientRegistrationInfo.setClientAuthenticationMethod(clientRegistrationDto.getClientAuthenticationMethod());  
100 - clientRegistrationInfo.setLoginButtonLabel(clientRegistrationDto.getLoginButtonLabel());  
101 - clientRegistrationInfo.setLoginButtonIcon(clientRegistrationDto.getLoginButtonIcon());  
102 - clientRegistrationInfo.setAdditionalInfo(clientRegistrationDto.getAdditionalInfo());  
103 - return clientRegistrationInfo;  
104 - }  
105 -  
106 - public static OAuth2ClientRegistration toClientRegistration(OAuth2ClientRegistrationInfoId clientRegistrationInfoId, SchemeType domainScheme, String domainName) {  
107 - OAuth2ClientRegistration clientRegistration = new OAuth2ClientRegistration();  
108 - clientRegistration.setClientRegistrationId(clientRegistrationInfoId);  
109 - clientRegistration.setDomainName(domainName);  
110 - clientRegistration.setDomainScheme(domainScheme);  
111 - return clientRegistration;  
112 - }  
113 -  
114 public static OAuth2ParamsInfo toOAuth2ParamsInfo(List<OAuth2Registration> registrations, List<OAuth2Domain> domains, List<OAuth2Mobile> mobiles) { 37 public static OAuth2ParamsInfo toOAuth2ParamsInfo(List<OAuth2Registration> registrations, List<OAuth2Domain> domains, List<OAuth2Mobile> mobiles) {
115 OAuth2ParamsInfo oauth2ParamsInfo = new OAuth2ParamsInfo(); 38 OAuth2ParamsInfo oauth2ParamsInfo = new OAuth2ParamsInfo();
116 oauth2ParamsInfo.setClientRegistrations(registrations.stream().sorted(Comparator.comparing(BaseData::getUuidId)).map(OAuth2Utils::toOAuth2RegistrationInfo).collect(Collectors.toList())); 39 oauth2ParamsInfo.setClientRegistrations(registrations.stream().sorted(Comparator.comparing(BaseData::getUuidId)).map(OAuth2Utils::toOAuth2RegistrationInfo).collect(Collectors.toList()));
@@ -194,46 +117,4 @@ public class OAuth2Utils { @@ -194,46 +117,4 @@ public class OAuth2Utils {
194 mobile.setAppSecret(mobileInfo.getAppSecret()); 117 mobile.setAppSecret(mobileInfo.getAppSecret());
195 return mobile; 118 return mobile;
196 } 119 }
197 -  
198 - @Deprecated  
199 - public static OAuth2Info clientParamsToOAuth2Info(OAuth2ClientsParams clientsParams) {  
200 - OAuth2Info oauth2Info = new OAuth2Info();  
201 - oauth2Info.setEnabled(clientsParams.isEnabled());  
202 - oauth2Info.setOauth2ParamsInfos(clientsParams.getDomainsParams().stream().map(OAuth2Utils::clientsDomainParamsToOAuth2ParamsInfo).collect(Collectors.toList()));  
203 - return oauth2Info;  
204 - }  
205 -  
206 - private static OAuth2ParamsInfo clientsDomainParamsToOAuth2ParamsInfo(OAuth2ClientsDomainParams clientsDomainParams) {  
207 - OAuth2ParamsInfo oauth2ParamsInfo = new OAuth2ParamsInfo();  
208 - oauth2ParamsInfo.setMobileInfos(Collections.emptyList());  
209 - oauth2ParamsInfo.setClientRegistrations(clientsDomainParams.getClientRegistrations().stream().map(OAuth2Utils::clientRegistrationDtoToOAuth2RegistrationInfo).collect(Collectors.toList()));  
210 - oauth2ParamsInfo.setDomainInfos(clientsDomainParams.getDomainInfos().stream().map(OAuth2Utils::domainInfoToOAuth2DomainInfo).collect(Collectors.toList()));  
211 - return oauth2ParamsInfo;  
212 - }  
213 -  
214 - private static OAuth2RegistrationInfo clientRegistrationDtoToOAuth2RegistrationInfo(ClientRegistrationDto clientRegistrationDto) {  
215 - return OAuth2RegistrationInfo.builder()  
216 - .mapperConfig(clientRegistrationDto.getMapperConfig())  
217 - .clientId(clientRegistrationDto.getClientId())  
218 - .clientSecret(clientRegistrationDto.getClientSecret())  
219 - .authorizationUri(clientRegistrationDto.getAuthorizationUri())  
220 - .accessTokenUri(clientRegistrationDto.getAccessTokenUri())  
221 - .scope(clientRegistrationDto.getScope())  
222 - .userInfoUri(clientRegistrationDto.getUserInfoUri())  
223 - .userNameAttributeName(clientRegistrationDto.getUserNameAttributeName())  
224 - .jwkSetUri(clientRegistrationDto.getJwkSetUri())  
225 - .clientAuthenticationMethod(clientRegistrationDto.getClientAuthenticationMethod())  
226 - .loginButtonLabel(clientRegistrationDto.getLoginButtonLabel())  
227 - .loginButtonIcon(clientRegistrationDto.getLoginButtonIcon())  
228 - .additionalInfo(clientRegistrationDto.getAdditionalInfo())  
229 - .platforms(Collections.emptyList())  
230 - .build();  
231 - }  
232 -  
233 - private static OAuth2DomainInfo domainInfoToOAuth2DomainInfo(DomainInfo domainInfo) {  
234 - return OAuth2DomainInfo.builder()  
235 - .name(domainInfo.getName())  
236 - .scheme(domainInfo.getScheme())  
237 - .build();  
238 - }  
239 } 120 }
1 -/**  
2 - * Copyright © 2016-2021 The Thingsboard Authors  
3 - *  
4 - * Licensed under the Apache License, Version 2.0 (the "License");  
5 - * you may not use this file except in compliance with the License.  
6 - * You may obtain a copy of the License at  
7 - *  
8 - * http://www.apache.org/licenses/LICENSE-2.0  
9 - *  
10 - * Unless required by applicable law or agreed to in writing, software  
11 - * distributed under the License is distributed on an "AS IS" BASIS,  
12 - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  
13 - * See the License for the specific language governing permissions and  
14 - * limitations under the License.  
15 - */  
16 -package org.thingsboard.server.dao.oauth2.deprecated;  
17 -  
18 -import org.thingsboard.server.common.data.oauth2.deprecated.OAuth2ClientRegistration;  
19 -import org.thingsboard.server.dao.Dao;  
20 -  
21 -@Deprecated  
22 -public interface OAuth2ClientRegistrationDao extends Dao<OAuth2ClientRegistration> {  
23 - void deleteAll();  
24 -}  
1 -/**  
2 - * Copyright © 2016-2021 The Thingsboard Authors  
3 - *  
4 - * Licensed under the Apache License, Version 2.0 (the "License");  
5 - * you may not use this file except in compliance with the License.  
6 - * You may obtain a copy of the License at  
7 - *  
8 - * http://www.apache.org/licenses/LICENSE-2.0  
9 - *  
10 - * Unless required by applicable law or agreed to in writing, software  
11 - * distributed under the License is distributed on an "AS IS" BASIS,  
12 - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  
13 - * See the License for the specific language governing permissions and  
14 - * limitations under the License.  
15 - */  
16 -package org.thingsboard.server.dao.oauth2.deprecated;  
17 -  
18 -import org.thingsboard.server.common.data.oauth2.deprecated.ExtendedOAuth2ClientRegistrationInfo;  
19 -import org.thingsboard.server.common.data.oauth2.deprecated.OAuth2ClientRegistrationInfo;  
20 -import org.thingsboard.server.common.data.oauth2.SchemeType;  
21 -import org.thingsboard.server.dao.Dao;  
22 -  
23 -import java.util.List;  
24 -  
25 -@Deprecated  
26 -public interface OAuth2ClientRegistrationInfoDao extends Dao<OAuth2ClientRegistrationInfo> {  
27 - List<OAuth2ClientRegistrationInfo> findAll();  
28 -  
29 - List<ExtendedOAuth2ClientRegistrationInfo> findAllExtended();  
30 -  
31 - List<OAuth2ClientRegistrationInfo> findByDomainSchemesAndDomainName(List<SchemeType> domainSchemes, String domainName);  
32 -  
33 - void deleteAll();  
34 -}  
@@ -133,6 +133,7 @@ public class BaseOtaPackageService implements OtaPackageService { @@ -133,6 +133,7 @@ public class BaseOtaPackageService implements OtaPackageService {
133 return getHashFunction(checksumAlgorithm).hashBytes(data.array()).toString(); 133 return getHashFunction(checksumAlgorithm).hashBytes(data.array()).toString();
134 } 134 }
135 135
  136 + @SuppressWarnings("deprecation")
136 private HashFunction getHashFunction(ChecksumAlgorithm checksumAlgorithm) { 137 private HashFunction getHashFunction(ChecksumAlgorithm checksumAlgorithm) {
137 switch (checksumAlgorithm) { 138 switch (checksumAlgorithm) {
138 case MD5: 139 case MD5:
@@ -17,6 +17,7 @@ package org.thingsboard.server.dao.sql.device; @@ -17,6 +17,7 @@ package org.thingsboard.server.dao.sql.device;
17 17
18 import org.springframework.data.domain.Page; 18 import org.springframework.data.domain.Page;
19 import org.springframework.data.domain.Pageable; 19 import org.springframework.data.domain.Pageable;
  20 +import org.springframework.data.jpa.repository.JpaRepository;
20 import org.springframework.data.jpa.repository.Query; 21 import org.springframework.data.jpa.repository.Query;
21 import org.springframework.data.repository.PagingAndSortingRepository; 22 import org.springframework.data.repository.PagingAndSortingRepository;
22 import org.springframework.data.repository.query.Param; 23 import org.springframework.data.repository.query.Param;
@@ -30,7 +31,7 @@ import java.util.UUID; @@ -30,7 +31,7 @@ import java.util.UUID;
30 /** 31 /**
31 * Created by Valerii Sosliuk on 5/6/2017. 32 * Created by Valerii Sosliuk on 5/6/2017.
32 */ 33 */
33 -public interface DeviceRepository extends PagingAndSortingRepository<DeviceEntity, UUID> { 34 +public interface DeviceRepository extends JpaRepository<DeviceEntity, UUID> {
34 35
35 @Query("SELECT new org.thingsboard.server.dao.model.sql.DeviceInfoEntity(d, c.title, c.additionalInfo, p.name) " + 36 @Query("SELECT new org.thingsboard.server.dao.model.sql.DeviceInfoEntity(d, c.title, c.additionalInfo, p.name) " +
36 "FROM DeviceEntity d " + 37 "FROM DeviceEntity d " +
@@ -22,6 +22,7 @@ import org.springframework.data.domain.Page; @@ -22,6 +22,7 @@ import org.springframework.data.domain.Page;
22 import org.springframework.data.domain.Pageable; 22 import org.springframework.data.domain.Pageable;
23 import org.springframework.data.repository.CrudRepository; 23 import org.springframework.data.repository.CrudRepository;
24 import org.springframework.stereotype.Component; 24 import org.springframework.stereotype.Component;
  25 +import org.springframework.transaction.annotation.Transactional;
25 import org.springframework.util.StringUtils; 26 import org.springframework.util.StringUtils;
26 import org.thingsboard.server.common.data.Device; 27 import org.thingsboard.server.common.data.Device;
27 import org.thingsboard.server.common.data.DeviceInfo; 28 import org.thingsboard.server.common.data.DeviceInfo;
@@ -72,6 +73,14 @@ public class JpaDeviceDao extends JpaAbstractSearchTextDao<DeviceEntity, Device> @@ -72,6 +73,14 @@ public class JpaDeviceDao extends JpaAbstractSearchTextDao<DeviceEntity, Device>
72 } 73 }
73 74
74 @Override 75 @Override
  76 + @Transactional
  77 + public Device saveAndFlush(TenantId tenantId, Device device) {
  78 + Device result = this.save(tenantId, device);
  79 + deviceRepository.flush();
  80 + return result;
  81 + }
  82 +
  83 + @Override
75 public PageData<Device> findDevicesByTenantId(UUID tenantId, PageLink pageLink) { 84 public PageData<Device> findDevicesByTenantId(UUID tenantId, PageLink pageLink) {
76 if (StringUtils.isEmpty(pageLink.getTextSearch())) { 85 if (StringUtils.isEmpty(pageLink.getTextSearch())) {
77 return DaoUtil.toPageData( 86 return DaoUtil.toPageData(
1 -/**  
2 - * Copyright © 2016-2021 The Thingsboard Authors  
3 - *  
4 - * Licensed under the Apache License, Version 2.0 (the "License");  
5 - * you may not use this file except in compliance with the License.  
6 - * You may obtain a copy of the License at  
7 - *  
8 - * http://www.apache.org/licenses/LICENSE-2.0  
9 - *  
10 - * Unless required by applicable law or agreed to in writing, software  
11 - * distributed under the License is distributed on an "AS IS" BASIS,  
12 - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  
13 - * See the License for the specific language governing permissions and  
14 - * limitations under the License.  
15 - */  
16 -package org.thingsboard.server.dao.sql.oauth2.deprecated;  
17 -  
18 -import lombok.RequiredArgsConstructor;  
19 -import org.springframework.data.repository.CrudRepository;  
20 -import org.springframework.stereotype.Component;  
21 -import org.thingsboard.server.common.data.oauth2.deprecated.OAuth2ClientRegistration;  
22 -import org.thingsboard.server.dao.model.sql.deprecated.OAuth2ClientRegistrationEntity;  
23 -import org.thingsboard.server.dao.oauth2.deprecated.OAuth2ClientRegistrationDao;  
24 -import org.thingsboard.server.dao.sql.JpaAbstractDao;  
25 -  
26 -import java.util.UUID;  
27 -  
28 -@Deprecated  
29 -@Component  
30 -@RequiredArgsConstructor  
31 -public class JpaOAuth2ClientRegistrationDao extends JpaAbstractDao<OAuth2ClientRegistrationEntity, OAuth2ClientRegistration> implements OAuth2ClientRegistrationDao {  
32 - private final OAuth2ClientRegistrationRepository repository;  
33 -  
34 - @Override  
35 - protected Class<OAuth2ClientRegistrationEntity> getEntityClass() {  
36 - return OAuth2ClientRegistrationEntity.class;  
37 - }  
38 -  
39 - @Override  
40 - protected CrudRepository<OAuth2ClientRegistrationEntity, UUID> getCrudRepository() {  
41 - return repository;  
42 - }  
43 -  
44 - @Override  
45 - public void deleteAll() {  
46 - repository.deleteAll();  
47 - }  
48 -}  
1 -/**  
2 - * Copyright © 2016-2021 The Thingsboard Authors  
3 - *  
4 - * Licensed under the Apache License, Version 2.0 (the "License");  
5 - * you may not use this file except in compliance with the License.  
6 - * You may obtain a copy of the License at  
7 - *  
8 - * http://www.apache.org/licenses/LICENSE-2.0  
9 - *  
10 - * Unless required by applicable law or agreed to in writing, software  
11 - * distributed under the License is distributed on an "AS IS" BASIS,  
12 - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  
13 - * See the License for the specific language governing permissions and  
14 - * limitations under the License.  
15 - */  
16 -package org.thingsboard.server.dao.sql.oauth2.deprecated;  
17 -  
18 -import lombok.RequiredArgsConstructor;  
19 -import org.springframework.data.repository.CrudRepository;  
20 -import org.springframework.stereotype.Component;  
21 -import org.thingsboard.server.common.data.oauth2.deprecated.ExtendedOAuth2ClientRegistrationInfo;  
22 -import org.thingsboard.server.common.data.oauth2.deprecated.OAuth2ClientRegistrationInfo;  
23 -import org.thingsboard.server.common.data.oauth2.SchemeType;  
24 -import org.thingsboard.server.dao.DaoUtil;  
25 -import org.thingsboard.server.dao.model.sql.deprecated.OAuth2ClientRegistrationInfoEntity;  
26 -import org.thingsboard.server.dao.oauth2.deprecated.OAuth2ClientRegistrationInfoDao;  
27 -import org.thingsboard.server.dao.sql.JpaAbstractDao;  
28 -  
29 -import java.util.ArrayList;  
30 -import java.util.List;  
31 -import java.util.UUID;  
32 -import java.util.stream.Collectors;  
33 -  
34 -@Deprecated  
35 -@Component  
36 -@RequiredArgsConstructor  
37 -public class JpaOAuth2ClientRegistrationInfoDao extends JpaAbstractDao<OAuth2ClientRegistrationInfoEntity, OAuth2ClientRegistrationInfo> implements OAuth2ClientRegistrationInfoDao {  
38 - private final OAuth2ClientRegistrationInfoRepository repository;  
39 -  
40 - @Override  
41 - protected Class<OAuth2ClientRegistrationInfoEntity> getEntityClass() {  
42 - return OAuth2ClientRegistrationInfoEntity.class;  
43 - }  
44 -  
45 - @Override  
46 - protected CrudRepository<OAuth2ClientRegistrationInfoEntity, UUID> getCrudRepository() {  
47 - return repository;  
48 - }  
49 -  
50 - @Override  
51 - public List<OAuth2ClientRegistrationInfo> findAll() {  
52 - Iterable<OAuth2ClientRegistrationInfoEntity> entities = repository.findAll();  
53 - List<OAuth2ClientRegistrationInfo> result = new ArrayList<>();  
54 - entities.forEach(entity -> {  
55 - result.add(DaoUtil.getData(entity));  
56 - });  
57 - return result;  
58 - }  
59 -  
60 - @Override  
61 - public List<ExtendedOAuth2ClientRegistrationInfo> findAllExtended() {  
62 - return repository.findAllExtended().stream()  
63 - .map(DaoUtil::getData)  
64 - .collect(Collectors.toList());  
65 - }  
66 -  
67 - @Override  
68 - public List<OAuth2ClientRegistrationInfo> findByDomainSchemesAndDomainName(List<SchemeType> domainSchemes, String domainName) {  
69 - List<OAuth2ClientRegistrationInfoEntity> entities = repository.findAllByDomainSchemesAndName(domainSchemes, domainName);  
70 - return entities.stream().map(DaoUtil::getData).collect(Collectors.toList());  
71 - }  
72 -  
73 - @Override  
74 - public void deleteAll() {  
75 - repository.deleteAll();  
76 - }  
77 -}  
1 -/**  
2 - * Copyright © 2016-2021 The Thingsboard Authors  
3 - *  
4 - * Licensed under the Apache License, Version 2.0 (the "License");  
5 - * you may not use this file except in compliance with the License.  
6 - * You may obtain a copy of the License at  
7 - *  
8 - * http://www.apache.org/licenses/LICENSE-2.0  
9 - *  
10 - * Unless required by applicable law or agreed to in writing, software  
11 - * distributed under the License is distributed on an "AS IS" BASIS,  
12 - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  
13 - * See the License for the specific language governing permissions and  
14 - * limitations under the License.  
15 - */  
16 -package org.thingsboard.server.dao.sql.oauth2.deprecated;  
17 -  
18 -import org.springframework.data.jpa.repository.Query;  
19 -import org.springframework.data.repository.CrudRepository;  
20 -import org.springframework.data.repository.query.Param;  
21 -import org.thingsboard.server.common.data.oauth2.SchemeType;  
22 -import org.thingsboard.server.dao.model.sql.deprecated.ExtendedOAuth2ClientRegistrationInfoEntity;  
23 -import org.thingsboard.server.dao.model.sql.deprecated.OAuth2ClientRegistrationInfoEntity;  
24 -  
25 -import java.util.List;  
26 -import java.util.UUID;  
27 -  
28 -@Deprecated  
29 -public interface OAuth2ClientRegistrationInfoRepository extends CrudRepository<OAuth2ClientRegistrationInfoEntity, UUID> {  
30 - @Query("SELECT new OAuth2ClientRegistrationInfoEntity(cr_info) " +  
31 - "FROM OAuth2ClientRegistrationInfoEntity cr_info " +  
32 - "LEFT JOIN OAuth2ClientRegistrationEntity cr on cr_info.id = cr.clientRegistrationInfoId " +  
33 - "WHERE cr.domainName = :domainName " +  
34 - "AND cr.domainScheme IN (:domainSchemes)")  
35 - List<OAuth2ClientRegistrationInfoEntity> findAllByDomainSchemesAndName(@Param("domainSchemes") List<SchemeType> domainSchemes,  
36 - @Param("domainName") String domainName);  
37 -  
38 - @Query("SELECT new org.thingsboard.server.dao.model.sql.deprecated.ExtendedOAuth2ClientRegistrationInfoEntity(cr_info, cr.domainName, cr.domainScheme) " +  
39 - "FROM OAuth2ClientRegistrationInfoEntity cr_info " +  
40 - "LEFT JOIN OAuth2ClientRegistrationEntity cr on cr_info.id = cr.clientRegistrationInfoId ")  
41 - List<ExtendedOAuth2ClientRegistrationInfoEntity> findAllExtended();  
42 -}  
1 -/**  
2 - * Copyright © 2016-2021 The Thingsboard Authors  
3 - *  
4 - * Licensed under the Apache License, Version 2.0 (the "License");  
5 - * you may not use this file except in compliance with the License.  
6 - * You may obtain a copy of the License at  
7 - *  
8 - * http://www.apache.org/licenses/LICENSE-2.0  
9 - *  
10 - * Unless required by applicable law or agreed to in writing, software  
11 - * distributed under the License is distributed on an "AS IS" BASIS,  
12 - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  
13 - * See the License for the specific language governing permissions and  
14 - * limitations under the License.  
15 - */  
16 -package org.thingsboard.server.dao.sql.oauth2.deprecated;  
17 -  
18 -import org.springframework.data.repository.CrudRepository;  
19 -import org.thingsboard.server.dao.model.sql.deprecated.OAuth2ClientRegistrationEntity;  
20 -  
21 -import java.util.UUID;  
22 -  
23 -@Deprecated  
24 -public interface OAuth2ClientRegistrationRepository extends CrudRepository<OAuth2ClientRegistrationEntity, UUID> {  
25 -}  
@@ -71,6 +71,7 @@ public abstract class BaseDeviceServiceTest extends AbstractServiceTest { @@ -71,6 +71,7 @@ public abstract class BaseDeviceServiceTest extends AbstractServiceTest {
71 tenantProfileService.deleteTenantProfiles(anotherTenantId); 71 tenantProfileService.deleteTenantProfiles(anotherTenantId);
72 } 72 }
73 73
  74 + @SuppressWarnings("deprecation")
74 @Rule 75 @Rule
75 public ExpectedException thrown = ExpectedException.none(); 76 public ExpectedException thrown = ExpectedException.none();
76 77
@@ -77,6 +77,7 @@ public abstract class BaseOtaPackageServiceTest extends AbstractServiceTest { @@ -77,6 +77,7 @@ public abstract class BaseOtaPackageServiceTest extends AbstractServiceTest {
77 deviceProfileId = savedDeviceProfile.getId(); 77 deviceProfileId = savedDeviceProfile.getId();
78 } 78 }
79 79
  80 + @SuppressWarnings("deprecation")
80 @Rule 81 @Rule
81 public ExpectedException thrown = ExpectedException.none(); 82 public ExpectedException thrown = ExpectedException.none();
82 83
@@ -21,7 +21,7 @@ @@ -21,7 +21,7 @@
21 21
22 <parent> 22 <parent>
23 <groupId>org.thingsboard</groupId> 23 <groupId>org.thingsboard</groupId>
24 - <version>3.3.1-SNAPSHOT</version> 24 + <version>3.3.2-SNAPSHOT</version>
25 <artifactId>msa</artifactId> 25 <artifactId>msa</artifactId>
26 </parent> 26 </parent>
27 <groupId>org.thingsboard.msa</groupId> 27 <groupId>org.thingsboard.msa</groupId>
1 { 1 {
2 "name": "thingsboard-js-executor", 2 "name": "thingsboard-js-executor",
3 "private": true, 3 "private": true,
4 - "version": "3.3.1", 4 + "version": "3.3.2",
5 "description": "ThingsBoard JavaScript Executor Microservice", 5 "description": "ThingsBoard JavaScript Executor Microservice",
6 "main": "server.js", 6 "main": "server.js",
7 "bin": "server.js", 7 "bin": "server.js",
@@ -39,9 +39,9 @@ @@ -39,9 +39,9 @@
39 ] 39 ]
40 }, 40 },
41 "devDependencies": { 41 "devDependencies": {
42 - "fs-extra": "^9.0.1",  
43 - "nodemon": "^2.0.4",  
44 - "pkg": "^4.4.9" 42 + "fs-extra": "^10.0.0",
  43 + "nodemon": "^2.0.12",
  44 + "pkg": "^5.3.1"
45 }, 45 },
46 "pkg": { 46 "pkg": {
47 "assets": [ 47 "assets": [
@@ -20,7 +20,7 @@ @@ -20,7 +20,7 @@
20 <modelVersion>4.0.0</modelVersion> 20 <modelVersion>4.0.0</modelVersion>
21 <parent> 21 <parent>
22 <groupId>org.thingsboard</groupId> 22 <groupId>org.thingsboard</groupId>
23 - <version>3.3.1-SNAPSHOT</version> 23 + <version>3.3.2-SNAPSHOT</version>
24 <artifactId>msa</artifactId> 24 <artifactId>msa</artifactId>
25 </parent> 25 </parent>
26 <groupId>org.thingsboard.msa</groupId> 26 <groupId>org.thingsboard.msa</groupId>
@@ -105,17 +105,24 @@ @@ -105,17 +105,24 @@
105 rhea-promise "^0.1.15" 105 rhea-promise "^0.1.15"
106 tslib "^1.10.0" 106 tslib "^1.10.0"
107 107
108 -"@babel/parser@^7.9.4":  
109 - version "7.11.4"  
110 - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.11.4.tgz#6fa1a118b8b0d80d0267b719213dc947e88cc0ca"  
111 - integrity sha512-MggwidiH+E9j5Sh8pbrX5sJvMcsqS5o+7iB42M9/k0CD63MjYbdP4nhSh7uB5wnv2/RVzTZFTxzF/kIa5mrCqA== 108 +"@babel/helper-validator-identifier@^7.12.11":
  109 + version "7.14.9"
  110 + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.9.tgz#6654d171b2024f6d8ee151bf2509699919131d48"
  111 + integrity sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g==
112 112
113 -"@babel/runtime@^7.9.2":  
114 - version "7.11.2"  
115 - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.11.2.tgz#f549c13c754cc40b87644b9fa9f09a6a95fe0736"  
116 - integrity sha512-TeWkU52so0mPtDcaCTxNBI/IHiz0pZgr8VEFqXFtZWpYD08ZB6FaSwVAS8MKRQAP3bYKiVjwysOJgMFY28o6Tw== 113 +"@babel/parser@7.13.13":
  114 + version "7.13.13"
  115 + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.13.13.tgz#42f03862f4aed50461e543270916b47dd501f0df"
  116 + integrity sha512-OhsyMrqygfk5v8HmWwOzlYjJrtLaFhF34MrfG/Z73DgYCI6ojNUTUp2TYbtnjo8PegeJp12eamsNettCQjKjVw==
  117 +
  118 +"@babel/types@7.13.12":
  119 + version "7.13.12"
  120 + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.13.12.tgz#edbf99208ef48852acdff1c8a681a1e4ade580cd"
  121 + integrity sha512-K4nY2xFN4QMvQwkQ+zmBDp6ANMbVNw6BbxWmYA4qNjhR9W+Lj/8ky5MEY2Me5r+B2c6/v6F53oMndG+f9s3IiA==
117 dependencies: 122 dependencies:
118 - regenerator-runtime "^0.13.4" 123 + "@babel/helper-validator-identifier" "^7.12.11"
  124 + lodash "^4.17.19"
  125 + to-fast-properties "^2.0.0"
119 126
120 "@dabh/diagnostics@^2.0.2": 127 "@dabh/diagnostics@^2.0.2":
121 version "2.0.2" 128 version "2.0.2"
@@ -462,6 +469,16 @@ ansi-align@^3.0.0: @@ -462,6 +469,16 @@ ansi-align@^3.0.0:
462 dependencies: 469 dependencies:
463 string-width "^3.0.0" 470 string-width "^3.0.0"
464 471
  472 +ansi-regex@^2.0.0:
  473 + version "2.1.1"
  474 + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
  475 + integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8=
  476 +
  477 +ansi-regex@^3.0.0:
  478 + version "3.0.0"
  479 + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998"
  480 + integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=
  481 +
465 ansi-regex@^4.1.0: 482 ansi-regex@^4.1.0:
466 version "4.1.0" 483 version "4.1.0"
467 resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" 484 resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997"
@@ -488,6 +505,19 @@ anymatch@~3.1.1: @@ -488,6 +505,19 @@ anymatch@~3.1.1:
488 normalize-path "^3.0.0" 505 normalize-path "^3.0.0"
489 picomatch "^2.0.4" 506 picomatch "^2.0.4"
490 507
  508 +aproba@^1.0.3:
  509 + version "1.2.0"
  510 + resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a"
  511 + integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==
  512 +
  513 +are-we-there-yet@~1.1.2:
  514 + version "1.1.7"
  515 + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz#b15474a932adab4ff8a50d9adfa7e4e926f21146"
  516 + integrity sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==
  517 + dependencies:
  518 + delegates "^1.0.0"
  519 + readable-stream "^2.0.6"
  520 +
491 argparse@^1.0.7: 521 argparse@^1.0.7:
492 version "1.0.10" 522 version "1.0.10"
493 resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" 523 resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911"
@@ -603,6 +633,11 @@ base64-js@^1.0.2, base64-js@^1.3.0: @@ -603,6 +633,11 @@ base64-js@^1.0.2, base64-js@^1.3.0:
603 resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1" 633 resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1"
604 integrity sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g== 634 integrity sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==
605 635
  636 +base64-js@^1.3.1:
  637 + version "1.5.1"
  638 + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a"
  639 + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==
  640 +
606 bcrypt-pbkdf@^1.0.0: 641 bcrypt-pbkdf@^1.0.0:
607 version "1.0.2" 642 version "1.0.2"
608 resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" 643 resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e"
@@ -629,6 +664,15 @@ bitsyntax@~0.1.0: @@ -629,6 +664,15 @@ bitsyntax@~0.1.0:
629 debug "~2.6.9" 664 debug "~2.6.9"
630 safe-buffer "~5.1.2" 665 safe-buffer "~5.1.2"
631 666
  667 +bl@^4.0.3:
  668 + version "4.1.0"
  669 + resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a"
  670 + integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==
  671 + dependencies:
  672 + buffer "^5.5.0"
  673 + inherits "^2.0.4"
  674 + readable-stream "^3.4.0"
  675 +
632 bluebird@^3.5.2: 676 bluebird@^3.5.2:
633 version "3.7.2" 677 version "3.7.2"
634 resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" 678 resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f"
@@ -706,10 +750,13 @@ buffer@^5.2.1: @@ -706,10 +750,13 @@ buffer@^5.2.1:
706 base64-js "^1.0.2" 750 base64-js "^1.0.2"
707 ieee754 "^1.1.4" 751 ieee754 "^1.1.4"
708 752
709 -byline@^5.0.0:  
710 - version "5.0.0"  
711 - resolved "https://registry.yarnpkg.com/byline/-/byline-5.0.0.tgz#741c5216468eadc457b03410118ad77de8c1ddb1"  
712 - integrity sha1-dBxSFkaOrcRXsDQQEYrXfejB3bE= 753 +buffer@^5.5.0:
  754 + version "5.7.1"
  755 + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0"
  756 + integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==
  757 + dependencies:
  758 + base64-js "^1.3.1"
  759 + ieee754 "^1.1.13"
713 760
714 bytes@3.1.0: 761 bytes@3.1.0:
715 version "3.1.0" 762 version "3.1.0"
@@ -747,6 +794,14 @@ chalk@^3.0.0: @@ -747,6 +794,14 @@ chalk@^3.0.0:
747 ansi-styles "^4.1.0" 794 ansi-styles "^4.1.0"
748 supports-color "^7.1.0" 795 supports-color "^7.1.0"
749 796
  797 +chalk@^4.1.0:
  798 + version "4.1.2"
  799 + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01"
  800 + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
  801 + dependencies:
  802 + ansi-styles "^4.1.0"
  803 + supports-color "^7.1.0"
  804 +
750 chokidar@^3.2.2: 805 chokidar@^3.2.2:
751 version "3.4.2" 806 version "3.4.2"
752 resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.4.2.tgz#38dc8e658dec3809741eb3ef7bb0a47fe424232d" 807 resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.4.2.tgz#38dc8e658dec3809741eb3ef7bb0a47fe424232d"
@@ -762,6 +817,11 @@ chokidar@^3.2.2: @@ -762,6 +817,11 @@ chokidar@^3.2.2:
762 optionalDependencies: 817 optionalDependencies:
763 fsevents "~2.1.2" 818 fsevents "~2.1.2"
764 819
  820 +chownr@^1.1.1:
  821 + version "1.1.4"
  822 + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b"
  823 + integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==
  824 +
765 ci-info@^2.0.0: 825 ci-info@^2.0.0:
766 version "2.0.0" 826 version "2.0.0"
767 resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" 827 resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46"
@@ -781,6 +841,15 @@ cliui@^6.0.0: @@ -781,6 +841,15 @@ cliui@^6.0.0:
781 strip-ansi "^6.0.0" 841 strip-ansi "^6.0.0"
782 wrap-ansi "^6.2.0" 842 wrap-ansi "^6.2.0"
783 843
  844 +cliui@^7.0.2:
  845 + version "7.0.4"
  846 + resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f"
  847 + integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==
  848 + dependencies:
  849 + string-width "^4.2.0"
  850 + strip-ansi "^6.0.0"
  851 + wrap-ansi "^7.0.0"
  852 +
784 clone-response@^1.0.2: 853 clone-response@^1.0.2:
785 version "1.0.2" 854 version "1.0.2"
786 resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b" 855 resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b"
@@ -788,6 +857,11 @@ clone-response@^1.0.2: @@ -788,6 +857,11 @@ clone-response@^1.0.2:
788 dependencies: 857 dependencies:
789 mimic-response "^1.0.0" 858 mimic-response "^1.0.0"
790 859
  860 +code-point-at@^1.0.0:
  861 + version "1.1.0"
  862 + resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77"
  863 + integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=
  864 +
791 color-convert@^1.9.1: 865 color-convert@^1.9.1:
792 version "1.9.3" 866 version "1.9.3"
793 resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" 867 resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
@@ -872,6 +946,11 @@ configstore@^5.0.1: @@ -872,6 +946,11 @@ configstore@^5.0.1:
872 write-file-atomic "^3.0.0" 946 write-file-atomic "^3.0.0"
873 xdg-basedir "^4.0.0" 947 xdg-basedir "^4.0.0"
874 948
  949 +console-control-strings@^1.0.0, console-control-strings@~1.1.0:
  950 + version "1.1.0"
  951 + resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e"
  952 + integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=
  953 +
875 content-disposition@0.5.3: 954 content-disposition@0.5.3:
876 version "0.5.3" 955 version "0.5.3"
877 resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" 956 resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd"
@@ -949,6 +1028,13 @@ decompress-response@^3.3.0: @@ -949,6 +1028,13 @@ decompress-response@^3.3.0:
949 dependencies: 1028 dependencies:
950 mimic-response "^1.0.0" 1029 mimic-response "^1.0.0"
951 1030
  1031 +decompress-response@^4.2.0:
  1032 + version "4.2.1"
  1033 + resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-4.2.1.tgz#414023cc7a302da25ce2ec82d0d5238ccafd8986"
  1034 + integrity sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==
  1035 + dependencies:
  1036 + mimic-response "^2.0.0"
  1037 +
952 deep-extend@^0.6.0: 1038 deep-extend@^0.6.0:
953 version "0.6.0" 1039 version "0.6.0"
954 resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" 1040 resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac"
@@ -969,6 +1055,11 @@ delayed-stream@~1.0.0: @@ -969,6 +1055,11 @@ delayed-stream@~1.0.0:
969 resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" 1055 resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
970 integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= 1056 integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk=
971 1057
  1058 +delegates@^1.0.0:
  1059 + version "1.0.0"
  1060 + resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a"
  1061 + integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=
  1062 +
972 depd@~1.1.2: 1063 depd@~1.1.2:
973 version "1.1.2" 1064 version "1.1.2"
974 resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" 1065 resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9"
@@ -979,6 +1070,11 @@ destroy@~1.0.4: @@ -979,6 +1070,11 @@ destroy@~1.0.4:
979 resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" 1070 resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80"
980 integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= 1071 integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=
981 1072
  1073 +detect-libc@^1.0.3:
  1074 + version "1.0.3"
  1075 + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b"
  1076 + integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=
  1077 +
982 dir-glob@^3.0.1: 1078 dir-glob@^3.0.1:
983 version "3.0.1" 1079 version "3.0.1"
984 resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" 1080 resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f"
@@ -1053,7 +1149,7 @@ encodeurl@~1.0.2: @@ -1053,7 +1149,7 @@ encodeurl@~1.0.2:
1053 resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" 1149 resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
1054 integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= 1150 integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=
1055 1151
1056 -end-of-stream@^1.0.0, end-of-stream@^1.1.0: 1152 +end-of-stream@^1.0.0, end-of-stream@^1.1.0, end-of-stream@^1.4.1:
1057 version "1.4.4" 1153 version "1.4.4"
1058 resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" 1154 resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0"
1059 integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== 1155 integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==
@@ -1065,6 +1161,11 @@ envconf@~0.0.4: @@ -1065,6 +1161,11 @@ envconf@~0.0.4:
1065 resolved "https://registry.yarnpkg.com/envconf/-/envconf-0.0.4.tgz#85675afba237c43f98de2d46adc0e532a4dcf48b" 1161 resolved "https://registry.yarnpkg.com/envconf/-/envconf-0.0.4.tgz#85675afba237c43f98de2d46adc0e532a4dcf48b"
1066 integrity sha1-hWda+6I3xD+Y3i1GrcDlMqTc9Is= 1162 integrity sha1-hWda+6I3xD+Y3i1GrcDlMqTc9Is=
1067 1163
  1164 +escalade@^3.1.1:
  1165 + version "3.1.1"
  1166 + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40"
  1167 + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==
  1168 +
1068 escape-goat@^2.0.0: 1169 escape-goat@^2.0.0:
1069 version "2.1.1" 1170 version "2.1.1"
1070 resolved "https://registry.yarnpkg.com/escape-goat/-/escape-goat-2.1.1.tgz#1b2dc77003676c457ec760b2dc68edb648188675" 1171 resolved "https://registry.yarnpkg.com/escape-goat/-/escape-goat-2.1.1.tgz#1b2dc77003676c457ec760b2dc68edb648188675"
@@ -1075,13 +1176,13 @@ escape-html@~1.0.3: @@ -1075,13 +1176,13 @@ escape-html@~1.0.3:
1075 resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" 1176 resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
1076 integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= 1177 integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=
1077 1178
1078 -escodegen@^1.14.1:  
1079 - version "1.14.3"  
1080 - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.3.tgz#4e7b81fba61581dc97582ed78cab7f0e8d63f503"  
1081 - integrity sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw== 1179 +escodegen@^2.0.0:
  1180 + version "2.0.0"
  1181 + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.0.0.tgz#5e32b12833e8aa8fa35e1bf0befa89380484c7dd"
  1182 + integrity sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==
1082 dependencies: 1183 dependencies:
1083 esprima "^4.0.1" 1184 esprima "^4.0.1"
1084 - estraverse "^4.2.0" 1185 + estraverse "^5.2.0"
1085 esutils "^2.0.2" 1186 esutils "^2.0.2"
1086 optionator "^0.8.1" 1187 optionator "^0.8.1"
1087 optionalDependencies: 1188 optionalDependencies:
@@ -1092,10 +1193,10 @@ esprima@^4.0.0, esprima@^4.0.1: @@ -1092,10 +1193,10 @@ esprima@^4.0.0, esprima@^4.0.1:
1092 resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" 1193 resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
1093 integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== 1194 integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
1094 1195
1095 -estraverse@^4.2.0:  
1096 - version "4.3.0"  
1097 - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d"  
1098 - integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== 1196 +estraverse@^5.2.0:
  1197 + version "5.2.0"
  1198 + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880"
  1199 + integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==
1099 1200
1100 esutils@^2.0.2: 1201 esutils@^2.0.2:
1101 version "2.0.3" 1202 version "2.0.3"
@@ -1308,30 +1409,54 @@ from2@^2.3.0: @@ -1308,30 +1409,54 @@ from2@^2.3.0:
1308 inherits "^2.0.1" 1409 inherits "^2.0.1"
1309 readable-stream "^2.0.0" 1410 readable-stream "^2.0.0"
1310 1411
1311 -fs-extra@^8.1.0:  
1312 - version "8.1.0"  
1313 - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0"  
1314 - integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== 1412 +fs-constants@^1.0.0:
  1413 + version "1.0.0"
  1414 + resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad"
  1415 + integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==
  1416 +
  1417 +fs-extra@^10.0.0:
  1418 + version "10.0.0"
  1419 + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.0.0.tgz#9ff61b655dde53fb34a82df84bb214ce802e17c1"
  1420 + integrity sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==
1315 dependencies: 1421 dependencies:
1316 graceful-fs "^4.2.0" 1422 graceful-fs "^4.2.0"
1317 - jsonfile "^4.0.0"  
1318 - universalify "^0.1.0" 1423 + jsonfile "^6.0.1"
  1424 + universalify "^2.0.0"
1319 1425
1320 -fs-extra@^9.0.1:  
1321 - version "9.0.1"  
1322 - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.0.1.tgz#910da0062437ba4c39fedd863f1675ccfefcb9fc"  
1323 - integrity sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ== 1426 +fs-extra@^9.1.0:
  1427 + version "9.1.0"
  1428 + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d"
  1429 + integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==
1324 dependencies: 1430 dependencies:
1325 at-least-node "^1.0.0" 1431 at-least-node "^1.0.0"
1326 graceful-fs "^4.2.0" 1432 graceful-fs "^4.2.0"
1327 jsonfile "^6.0.1" 1433 jsonfile "^6.0.1"
1328 - universalify "^1.0.0" 1434 + universalify "^2.0.0"
1329 1435
1330 fsevents@~2.1.2: 1436 fsevents@~2.1.2:
1331 version "2.1.3" 1437 version "2.1.3"
1332 resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" 1438 resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e"
1333 integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== 1439 integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==
1334 1440
  1441 +function-bind@^1.1.1:
  1442 + version "1.1.1"
  1443 + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
  1444 + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
  1445 +
  1446 +gauge@~2.7.3:
  1447 + version "2.7.4"
  1448 + resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7"
  1449 + integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=
  1450 + dependencies:
  1451 + aproba "^1.0.3"
  1452 + console-control-strings "^1.0.0"
  1453 + has-unicode "^2.0.0"
  1454 + object-assign "^4.1.0"
  1455 + signal-exit "^3.0.0"
  1456 + string-width "^1.0.1"
  1457 + strip-ansi "^3.0.1"
  1458 + wide-align "^1.1.0"
  1459 +
1335 gaxios@^2.1.0: 1460 gaxios@^2.1.0:
1336 version "2.3.4" 1461 version "2.3.4"
1337 resolved "https://registry.yarnpkg.com/gaxios/-/gaxios-2.3.4.tgz#eea99353f341c270c5f3c29fc46b8ead56f0a173" 1462 resolved "https://registry.yarnpkg.com/gaxios/-/gaxios-2.3.4.tgz#eea99353f341c270c5f3c29fc46b8ead56f0a173"
@@ -1370,7 +1495,7 @@ gcp-metadata@^4.1.0: @@ -1370,7 +1495,7 @@ gcp-metadata@^4.1.0:
1370 gaxios "^3.0.0" 1495 gaxios "^3.0.0"
1371 json-bigint "^1.0.0" 1496 json-bigint "^1.0.0"
1372 1497
1373 -get-caller-file@^2.0.1: 1498 +get-caller-file@^2.0.1, get-caller-file@^2.0.5:
1374 version "2.0.5" 1499 version "2.0.5"
1375 resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" 1500 resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e"
1376 integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== 1501 integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
@@ -1396,6 +1521,11 @@ getpass@^0.1.1: @@ -1396,6 +1521,11 @@ getpass@^0.1.1:
1396 dependencies: 1521 dependencies:
1397 assert-plus "^1.0.0" 1522 assert-plus "^1.0.0"
1398 1523
  1524 +github-from-package@0.0.0:
  1525 + version "0.0.0"
  1526 + resolved "https://registry.yarnpkg.com/github-from-package/-/github-from-package-0.0.0.tgz#97fb5d96bfde8973313f20e8288ef9a167fa64ce"
  1527 + integrity sha1-l/tdlr/eiXMxPyDoKI75oWf6ZM4=
  1528 +
1399 glob-parent@^5.1.0, glob-parent@~5.1.0: 1529 glob-parent@^5.1.0, glob-parent@~5.1.0:
1400 version "5.1.1" 1530 version "5.1.1"
1401 resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229" 1531 resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229"
@@ -1410,10 +1540,10 @@ global-dirs@^2.0.1: @@ -1410,10 +1540,10 @@ global-dirs@^2.0.1:
1410 dependencies: 1540 dependencies:
1411 ini "^1.3.5" 1541 ini "^1.3.5"
1412 1542
1413 -globby@^11.0.0:  
1414 - version "11.0.1"  
1415 - resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.1.tgz#9a2bf107a068f3ffeabc49ad702c79ede8cfd357"  
1416 - integrity sha512-iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ== 1543 +globby@^11.0.3:
  1544 + version "11.0.4"
  1545 + resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.4.tgz#2cbaff77c2f2a62e71e9b2813a67b97a3a3001a5"
  1546 + integrity sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==
1417 dependencies: 1547 dependencies:
1418 array-union "^2.1.0" 1548 array-union "^2.1.0"
1419 dir-glob "^3.0.1" 1549 dir-glob "^3.0.1"
@@ -1519,11 +1649,23 @@ has-flag@^4.0.0: @@ -1519,11 +1649,23 @@ has-flag@^4.0.0:
1519 resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" 1649 resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
1520 integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== 1650 integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
1521 1651
  1652 +has-unicode@^2.0.0:
  1653 + version "2.0.1"
  1654 + resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9"
  1655 + integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=
  1656 +
1522 has-yarn@^2.1.0: 1657 has-yarn@^2.1.0:
1523 version "2.1.0" 1658 version "2.1.0"
1524 resolved "https://registry.yarnpkg.com/has-yarn/-/has-yarn-2.1.0.tgz#137e11354a7b5bf11aa5cb649cf0c6f3ff2b2e77" 1659 resolved "https://registry.yarnpkg.com/has-yarn/-/has-yarn-2.1.0.tgz#137e11354a7b5bf11aa5cb649cf0c6f3ff2b2e77"
1525 integrity sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw== 1660 integrity sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==
1526 1661
  1662 +has@^1.0.3:
  1663 + version "1.0.3"
  1664 + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
  1665 + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==
  1666 + dependencies:
  1667 + function-bind "^1.1.1"
  1668 +
1527 http-cache-semantics@^4.0.0: 1669 http-cache-semantics@^4.0.0:
1528 version "4.1.0" 1670 version "4.1.0"
1529 resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390" 1671 resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390"
@@ -1580,6 +1722,11 @@ ieee754@1.1.13, ieee754@^1.1.4: @@ -1580,6 +1722,11 @@ ieee754@1.1.13, ieee754@^1.1.4:
1580 resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" 1722 resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84"
1581 integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg== 1723 integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==
1582 1724
  1725 +ieee754@^1.1.13:
  1726 + version "1.2.1"
  1727 + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352"
  1728 + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==
  1729 +
1583 ignore-by-default@^1.0.1: 1730 ignore-by-default@^1.0.1:
1584 version "1.0.1" 1731 version "1.0.1"
1585 resolved "https://registry.yarnpkg.com/ignore-by-default/-/ignore-by-default-1.0.1.tgz#48ca6d72f6c6a3af00a9ad4ae6876be3889e2b09" 1732 resolved "https://registry.yarnpkg.com/ignore-by-default/-/ignore-by-default-1.0.1.tgz#48ca6d72f6c6a3af00a9ad4ae6876be3889e2b09"
@@ -1605,7 +1752,7 @@ inherits@2.0.3: @@ -1605,7 +1752,7 @@ inherits@2.0.3:
1605 resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" 1752 resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
1606 integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= 1753 integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=
1607 1754
1608 -inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.1, inherits@~2.0.3: 1755 +inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3:
1609 version "2.0.4" 1756 version "2.0.4"
1610 resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 1757 resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
1611 integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 1758 integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
@@ -1615,10 +1762,10 @@ ini@^1.3.5, ini@~1.3.0: @@ -1615,10 +1762,10 @@ ini@^1.3.5, ini@~1.3.0:
1615 resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" 1762 resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927"
1616 integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== 1763 integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==
1617 1764
1618 -into-stream@^5.1.1:  
1619 - version "5.1.1"  
1620 - resolved "https://registry.yarnpkg.com/into-stream/-/into-stream-5.1.1.tgz#f9a20a348a11f3c13face22763f2d02e127f4db8"  
1621 - integrity sha512-krrAJ7McQxGGmvaYbB7Q1mcA+cRwg9Ij2RfWIeVesNBgVDZmzY/Fa4IpZUT3bmdRzMzdf/mzltCG2Dq99IZGBA== 1765 +into-stream@^6.0.0:
  1766 + version "6.0.0"
  1767 + resolved "https://registry.yarnpkg.com/into-stream/-/into-stream-6.0.0.tgz#4bfc1244c0128224e18b8870e85b2de8e66c6702"
  1768 + integrity sha512-XHbaOAvP+uFKUFsOgoNPRjLkwB+I22JFPFe5OjTkQ0nwgj6+pSjb4NmB6VMxaPshLiOf+zcpOCBQuLwC1KHhZA==
1622 dependencies: 1769 dependencies:
1623 from2 "^2.3.0" 1770 from2 "^2.3.0"
1624 p-is-promise "^3.0.0" 1771 p-is-promise "^3.0.0"
@@ -1652,11 +1799,25 @@ is-ci@^2.0.0: @@ -1652,11 +1799,25 @@ is-ci@^2.0.0:
1652 dependencies: 1799 dependencies:
1653 ci-info "^2.0.0" 1800 ci-info "^2.0.0"
1654 1801
  1802 +is-core-module@^2.2.0:
  1803 + version "2.6.0"
  1804 + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.6.0.tgz#d7553b2526fe59b92ba3e40c8df757ec8a709e19"
  1805 + integrity sha512-wShG8vs60jKfPWpF2KZRaAtvt3a20OAn7+IJ6hLPECpSABLcKtFKTTI4ZtH5QcBruBHlq+WsdHWyz0BCZW7svQ==
  1806 + dependencies:
  1807 + has "^1.0.3"
  1808 +
1655 is-extglob@^2.1.1: 1809 is-extglob@^2.1.1:
1656 version "2.1.1" 1810 version "2.1.1"
1657 resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 1811 resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
1658 integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= 1812 integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=
1659 1813
  1814 +is-fullwidth-code-point@^1.0.0:
  1815 + version "1.0.0"
  1816 + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb"
  1817 + integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs=
  1818 + dependencies:
  1819 + number-is-nan "^1.0.0"
  1820 +
1660 is-fullwidth-code-point@^2.0.0: 1821 is-fullwidth-code-point@^2.0.0:
1661 version "2.0.0" 1822 version "2.0.0"
1662 resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" 1823 resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f"
@@ -1796,13 +1957,6 @@ json5@^2.1.1: @@ -1796,13 +1957,6 @@ json5@^2.1.1:
1796 dependencies: 1957 dependencies:
1797 minimist "^1.2.5" 1958 minimist "^1.2.5"
1798 1959
1799 -jsonfile@^4.0.0:  
1800 - version "4.0.0"  
1801 - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb"  
1802 - integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=  
1803 - optionalDependencies:  
1804 - graceful-fs "^4.1.6"  
1805 -  
1806 jsonfile@^6.0.1: 1960 jsonfile@^6.0.1:
1807 version "6.0.1" 1961 version "6.0.1"
1808 resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.0.1.tgz#98966cba214378c8c84b82e085907b40bf614179" 1962 resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.0.1.tgz#98966cba214378c8c84b82e085907b40bf614179"
@@ -1903,6 +2057,11 @@ lodash.snakecase@^4.1.1: @@ -1903,6 +2057,11 @@ lodash.snakecase@^4.1.1:
1903 resolved "https://registry.yarnpkg.com/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz#39d714a35357147837aefd64b5dcbb16becd8f8d" 2057 resolved "https://registry.yarnpkg.com/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz#39d714a35357147837aefd64b5dcbb16becd8f8d"
1904 integrity sha1-OdcUo1NXFHg3rv1ktdy7Fr7Nj40= 2058 integrity sha1-OdcUo1NXFHg3rv1ktdy7Fr7Nj40=
1905 2059
  2060 +lodash@^4.17.19:
  2061 + version "4.17.21"
  2062 + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
  2063 + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
  2064 +
1906 logform@^2.2.0: 2065 logform@^2.2.0:
1907 version "2.2.0" 2066 version "2.2.0"
1908 resolved "https://registry.yarnpkg.com/logform/-/logform-2.2.0.tgz#40f036d19161fc76b68ab50fdc7fe495544492f2" 2067 resolved "https://registry.yarnpkg.com/logform/-/logform-2.2.0.tgz#40f036d19161fc76b68ab50fdc7fe495544492f2"
@@ -2010,6 +2169,11 @@ mimic-response@^1.0.0, mimic-response@^1.0.1: @@ -2010,6 +2169,11 @@ mimic-response@^1.0.0, mimic-response@^1.0.1:
2010 resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" 2169 resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b"
2011 integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== 2170 integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==
2012 2171
  2172 +mimic-response@^2.0.0:
  2173 + version "2.1.0"
  2174 + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-2.1.0.tgz#d13763d35f613d09ec37ebb30bac0469c0ee8f43"
  2175 + integrity sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==
  2176 +
2013 minimatch@^3.0.4: 2177 minimatch@^3.0.4:
2014 version "3.0.4" 2178 version "3.0.4"
2015 resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 2179 resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
@@ -2017,17 +2181,15 @@ minimatch@^3.0.4: @@ -2017,17 +2181,15 @@ minimatch@^3.0.4:
2017 dependencies: 2181 dependencies:
2018 brace-expansion "^1.1.7" 2182 brace-expansion "^1.1.7"
2019 2183
2020 -minimist@^1.2.0, minimist@^1.2.5: 2184 +minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.5:
2021 version "1.2.5" 2185 version "1.2.5"
2022 resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" 2186 resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602"
2023 integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== 2187 integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==
2024 2188
2025 -mkdirp@^0.5.1:  
2026 - version "0.5.5"  
2027 - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def"  
2028 - integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==  
2029 - dependencies:  
2030 - minimist "^1.2.5" 2189 +mkdirp-classic@^0.5.2, mkdirp-classic@^0.5.3:
  2190 + version "0.5.3"
  2191 + resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113"
  2192 + integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==
2031 2193
2032 moment@^2.11.2: 2194 moment@^2.11.2:
2033 version "2.27.0" 2195 version "2.27.0"
@@ -2054,33 +2216,50 @@ ms@^2.1.1: @@ -2054,33 +2216,50 @@ ms@^2.1.1:
2054 resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 2216 resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
2055 integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 2217 integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
2056 2218
2057 -multistream@^2.1.1:  
2058 - version "2.1.1"  
2059 - resolved "https://registry.yarnpkg.com/multistream/-/multistream-2.1.1.tgz#629d3a29bd76623489980d04519a2c365948148c"  
2060 - integrity sha512-xasv76hl6nr1dEy3lPvy7Ej7K/Lx3O/FCvwge8PeVJpciPPoNCbaANcNiBug3IpdvTveZUcAV0DJzdnUDMesNQ== 2219 +multistream@^4.1.0:
  2220 + version "4.1.0"
  2221 + resolved "https://registry.yarnpkg.com/multistream/-/multistream-4.1.0.tgz#7bf00dfd119556fbc153cff3de4c6d477909f5a8"
  2222 + integrity sha512-J1XDiAmmNpRCBfIWJv+n0ymC4ABcf/Pl+5YvC5B/D2f/2+8PtHvCNxMPKiQcZyi922Hq69J2YOpb1pTywfifyw==
2061 dependencies: 2223 dependencies:
2062 - inherits "^2.0.1"  
2063 - readable-stream "^2.0.5" 2224 + once "^1.4.0"
  2225 + readable-stream "^3.6.0"
  2226 +
  2227 +napi-build-utils@^1.0.1:
  2228 + version "1.0.2"
  2229 + resolved "https://registry.yarnpkg.com/napi-build-utils/-/napi-build-utils-1.0.2.tgz#b1fddc0b2c46e380a0b7a76f984dd47c41a13806"
  2230 + integrity sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==
2064 2231
2065 negotiator@0.6.2: 2232 negotiator@0.6.2:
2066 version "0.6.2" 2233 version "0.6.2"
2067 resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" 2234 resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb"
2068 integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== 2235 integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==
2069 2236
  2237 +node-abi@^2.7.0:
  2238 + version "2.30.1"
  2239 + resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-2.30.1.tgz#c437d4b1fe0e285aaf290d45b45d4d7afedac4cf"
  2240 + integrity sha512-/2D0wOQPgaUWzVSVgRMx+trKJRC2UG4SUc4oCJoXx9Uxjtp0Vy3/kt7zcbxHF8+Z/pK3UloLWzBISg72brfy1w==
  2241 + dependencies:
  2242 + semver "^5.4.1"
  2243 +
2070 node-fetch@^2.3.0, node-fetch@^2.6.0: 2244 node-fetch@^2.3.0, node-fetch@^2.6.0:
2071 version "2.6.0" 2245 version "2.6.0"
2072 resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.0.tgz#e633456386d4aa55863f676a7ab0daa8fdecb0fd" 2246 resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.0.tgz#e633456386d4aa55863f676a7ab0daa8fdecb0fd"
2073 integrity sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA== 2247 integrity sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==
2074 2248
  2249 +node-fetch@^2.6.1:
  2250 + version "2.6.2"
  2251 + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.2.tgz#986996818b73785e47b1965cc34eb093a1d464d0"
  2252 + integrity sha512-aLoxToI6RfZ+0NOjmWAgn9+LEd30YCkJKFSyWacNZdEKTit/ZMcKjGkTRo8uWEsnIb/hfKecNPEbln02PdWbcA==
  2253 +
2075 node-forge@^0.9.0: 2254 node-forge@^0.9.0:
2076 version "0.9.1" 2255 version "0.9.1"
2077 resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.9.1.tgz#775368e6846558ab6676858a4d8c6e8d16c677b5" 2256 resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.9.1.tgz#775368e6846558ab6676858a4d8c6e8d16c677b5"
2078 integrity sha512-G6RlQt5Sb4GMBzXvhfkeFmbqR6MzhtnT7VTHuLadjkii3rdYHNdw0m8zA4BTxVIh68FicCQ2NSUANpsqkr9jvQ== 2257 integrity sha512-G6RlQt5Sb4GMBzXvhfkeFmbqR6MzhtnT7VTHuLadjkii3rdYHNdw0m8zA4BTxVIh68FicCQ2NSUANpsqkr9jvQ==
2079 2258
2080 -nodemon@^2.0.4:  
2081 - version "2.0.4"  
2082 - resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-2.0.4.tgz#55b09319eb488d6394aa9818148c0c2d1c04c416"  
2083 - integrity sha512-Ltced+hIfTmaS28Zjv1BM552oQ3dbwPqI4+zI0SLgq+wpJhSyqgYude/aZa/3i31VCQWMfXJVxvu86abcam3uQ== 2259 +nodemon@^2.0.12:
  2260 + version "2.0.12"
  2261 + resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-2.0.12.tgz#5dae4e162b617b91f1873b3bfea215dd71e144d5"
  2262 + integrity sha512-egCTmNZdObdBxUBw6ZNwvZ/xzk24CKRs5K6d+5zbmrMr7rOpPmfPeF6OxM3DDpaRx331CQRFEktn+wrFFfBSOA==
2084 dependencies: 2263 dependencies:
2085 chokidar "^3.2.2" 2264 chokidar "^3.2.2"
2086 debug "^3.2.6" 2265 debug "^3.2.6"
@@ -2090,8 +2269,13 @@ nodemon@^2.0.4: @@ -2090,8 +2269,13 @@ nodemon@^2.0.4:
2090 semver "^5.7.1" 2269 semver "^5.7.1"
2091 supports-color "^5.5.0" 2270 supports-color "^5.5.0"
2092 touch "^3.1.0" 2271 touch "^3.1.0"
2093 - undefsafe "^2.0.2"  
2094 - update-notifier "^4.0.0" 2272 + undefsafe "^2.0.3"
  2273 + update-notifier "^4.1.0"
  2274 +
  2275 +noop-logger@^0.1.1:
  2276 + version "0.1.1"
  2277 + resolved "https://registry.yarnpkg.com/noop-logger/-/noop-logger-0.1.1.tgz#94a2b1633c4f1317553007d8966fd0e841b6a4c2"
  2278 + integrity sha1-lKKxYzxPExdVMAfYlm/Q6EG2pMI=
2095 2279
2096 nopt@~1.0.10: 2280 nopt@~1.0.10:
2097 version "1.0.10" 2281 version "1.0.10"
@@ -2110,11 +2294,31 @@ normalize-url@^4.1.0: @@ -2110,11 +2294,31 @@ normalize-url@^4.1.0:
2110 resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.0.tgz#453354087e6ca96957bd8f5baf753f5982142129" 2294 resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.0.tgz#453354087e6ca96957bd8f5baf753f5982142129"
2111 integrity sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ== 2295 integrity sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ==
2112 2296
  2297 +npmlog@^4.0.1:
  2298 + version "4.1.2"
  2299 + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b"
  2300 + integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==
  2301 + dependencies:
  2302 + are-we-there-yet "~1.1.2"
  2303 + console-control-strings "~1.1.0"
  2304 + gauge "~2.7.3"
  2305 + set-blocking "~2.0.0"
  2306 +
  2307 +number-is-nan@^1.0.0:
  2308 + version "1.0.1"
  2309 + resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
  2310 + integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=
  2311 +
2113 oauth-sign@~0.9.0: 2312 oauth-sign@~0.9.0:
2114 version "0.9.0" 2313 version "0.9.0"
2115 resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" 2314 resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455"
2116 integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== 2315 integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==
2117 2316
  2317 +object-assign@^4.1.0:
  2318 + version "4.1.1"
  2319 + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
  2320 + integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=
  2321 +
2118 object-hash@^2.0.1: 2322 object-hash@^2.0.1:
2119 version "2.0.3" 2323 version "2.0.3"
2120 resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-2.0.3.tgz#d12db044e03cd2ca3d77c0570d87225b02e1e6ea" 2324 resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-2.0.3.tgz#d12db044e03cd2ca3d77c0570d87225b02e1e6ea"
@@ -2153,11 +2357,6 @@ optionator@^0.8.1: @@ -2153,11 +2357,6 @@ optionator@^0.8.1:
2153 type-check "~0.3.2" 2357 type-check "~0.3.2"
2154 word-wrap "~1.2.3" 2358 word-wrap "~1.2.3"
2155 2359
2156 -os-tmpdir@^1.0.1:  
2157 - version "1.0.2"  
2158 - resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"  
2159 - integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=  
2160 -  
2161 p-cancelable@^1.0.0: 2360 p-cancelable@^1.0.0:
2162 version "1.1.0" 2361 version "1.1.0"
2163 resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc" 2362 resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc"
@@ -2237,41 +2436,60 @@ picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.2.1: @@ -2237,41 +2436,60 @@ picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.2.1:
2237 resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" 2436 resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad"
2238 integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== 2437 integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==
2239 2438
2240 -pkg-fetch@^2.6.9:  
2241 - version "2.6.9"  
2242 - resolved "https://registry.yarnpkg.com/pkg-fetch/-/pkg-fetch-2.6.9.tgz#c18c5fa9604c57a3df3d9630afb64e176bc8732d"  
2243 - integrity sha512-EnVR8LRILXBvaNP+wJOSY02c3+qDDfyEyR+aqAHLhcc9PBnbxFT9UZ1+If49goPQzQPn26TzF//fc6KXZ0aXEg== 2439 +pkg-fetch@3.2.2:
  2440 + version "3.2.2"
  2441 + resolved "https://registry.yarnpkg.com/pkg-fetch/-/pkg-fetch-3.2.2.tgz#33f391eb176c1844e93189a32f2279b36a1ec949"
  2442 + integrity sha512-bLhFNT4cNnONxzbHo1H2mCCKuQkCR4dgQtv0gUZnWtp8TDP0v0UAXKHG7DXhAoTC5IYP3slLsFJtIda9ksny8g==
2244 dependencies: 2443 dependencies:
2245 - "@babel/runtime" "^7.9.2"  
2246 - byline "^5.0.0"  
2247 - chalk "^3.0.0"  
2248 - expand-template "^2.0.3"  
2249 - fs-extra "^8.1.0"  
2250 - minimist "^1.2.5" 2444 + chalk "^4.1.0"
  2445 + fs-extra "^9.1.0"
  2446 + https-proxy-agent "^5.0.0"
  2447 + node-fetch "^2.6.1"
2251 progress "^2.0.3" 2448 progress "^2.0.3"
2252 - request "^2.88.0"  
2253 - request-progress "^3.0.0"  
2254 - semver "^6.3.0"  
2255 - unique-temp-dir "^1.0.0" 2449 + semver "^7.3.5"
  2450 + yargs "^16.2.0"
2256 2451
2257 -pkg@^4.4.9:  
2258 - version "4.4.9"  
2259 - resolved "https://registry.yarnpkg.com/pkg/-/pkg-4.4.9.tgz#be04f8d03795772b7c4394724ae7252d7c2a4519"  
2260 - integrity sha512-FK4GqHtcCY2PPPVaKViU0NyRzpo6gCS7tPKN5b7AkElqjAOCH1bsRKgohEnxThr6DWfTGByGqba2YHGR/BqbmA==  
2261 - dependencies:  
2262 - "@babel/parser" "^7.9.4"  
2263 - "@babel/runtime" "^7.9.2"  
2264 - chalk "^3.0.0"  
2265 - escodegen "^1.14.1"  
2266 - fs-extra "^8.1.0"  
2267 - globby "^11.0.0"  
2268 - into-stream "^5.1.1" 2452 +pkg@^5.3.1:
  2453 + version "5.3.1"
  2454 + resolved "https://registry.yarnpkg.com/pkg/-/pkg-5.3.1.tgz#8f81671613b9e5bb1d83c39b2eed4799e1e679fe"
  2455 + integrity sha512-jT/sptM1ZG++FNk+jnJYNoWLDQXYd7hqpnBhd5j18SNW1jJzNYo55RahuCiD0KN0PX9mb53GWCqKM0ia/mJytA==
  2456 + dependencies:
  2457 + "@babel/parser" "7.13.13"
  2458 + "@babel/types" "7.13.12"
  2459 + chalk "^4.1.0"
  2460 + escodegen "^2.0.0"
  2461 + fs-extra "^9.1.0"
  2462 + globby "^11.0.3"
  2463 + into-stream "^6.0.0"
2269 minimist "^1.2.5" 2464 minimist "^1.2.5"
2270 - multistream "^2.1.1"  
2271 - pkg-fetch "^2.6.9" 2465 + multistream "^4.1.0"
  2466 + pkg-fetch "3.2.2"
  2467 + prebuild-install "6.0.1"
2272 progress "^2.0.3" 2468 progress "^2.0.3"
2273 - resolve "^1.15.1" 2469 + resolve "^1.20.0"
2274 stream-meter "^1.0.4" 2470 stream-meter "^1.0.4"
  2471 + tslib "2.1.0"
  2472 +
  2473 +prebuild-install@6.0.1:
  2474 + version "6.0.1"
  2475 + resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-6.0.1.tgz#5902172f7a40eb67305b96c2a695db32636ee26d"
  2476 + integrity sha512-7GOJrLuow8yeiyv75rmvZyeMGzl8mdEX5gY69d6a6bHWmiPevwqFw+tQavhK0EYMaSg3/KD24cWqeQv1EWsqDQ==
  2477 + dependencies:
  2478 + detect-libc "^1.0.3"
  2479 + expand-template "^2.0.3"
  2480 + github-from-package "0.0.0"
  2481 + minimist "^1.2.3"
  2482 + mkdirp-classic "^0.5.3"
  2483 + napi-build-utils "^1.0.1"
  2484 + node-abi "^2.7.0"
  2485 + noop-logger "^0.1.1"
  2486 + npmlog "^4.0.1"
  2487 + pump "^3.0.0"
  2488 + rc "^1.2.7"
  2489 + simple-get "^3.0.3"
  2490 + tar-fs "^2.0.0"
  2491 + tunnel-agent "^0.6.0"
  2492 + which-pm-runs "^1.0.0"
2275 2493
2276 prelude-ls@~1.1.2: 2494 prelude-ls@~1.1.2:
2277 version "1.1.2" 2495 version "1.1.2"
@@ -2395,7 +2613,7 @@ raw-body@2.4.0: @@ -2395,7 +2613,7 @@ raw-body@2.4.0:
2395 iconv-lite "0.4.24" 2613 iconv-lite "0.4.24"
2396 unpipe "1.0.0" 2614 unpipe "1.0.0"
2397 2615
2398 -rc@^1.2.8: 2616 +rc@^1.2.7, rc@^1.2.8:
2399 version "1.2.8" 2617 version "1.2.8"
2400 resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" 2618 resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed"
2401 integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== 2619 integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==
@@ -2415,7 +2633,7 @@ rc@^1.2.8: @@ -2415,7 +2633,7 @@ rc@^1.2.8:
2415 isarray "0.0.1" 2633 isarray "0.0.1"
2416 string_decoder "~0.10.x" 2634 string_decoder "~0.10.x"
2417 2635
2418 -readable-stream@^2.0.0, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.1.4, readable-stream@^2.3.7: 2636 +readable-stream@^2.0.0, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.3.7:
2419 version "2.3.7" 2637 version "2.3.7"
2420 resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" 2638 resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57"
2421 integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== 2639 integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==
@@ -2428,7 +2646,7 @@ readable-stream@^2.0.0, readable-stream@^2.0.2, readable-stream@^2.0.5, readable @@ -2428,7 +2646,7 @@ readable-stream@^2.0.0, readable-stream@^2.0.2, readable-stream@^2.0.5, readable
2428 string_decoder "~1.1.1" 2646 string_decoder "~1.1.1"
2429 util-deprecate "~1.0.1" 2647 util-deprecate "~1.0.1"
2430 2648
2431 -readable-stream@^3.4.0: 2649 +readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0:
2432 version "3.6.0" 2650 version "3.6.0"
2433 resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" 2651 resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198"
2434 integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== 2652 integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==
@@ -2444,11 +2662,6 @@ readdirp@~3.4.0: @@ -2444,11 +2662,6 @@ readdirp@~3.4.0:
2444 dependencies: 2662 dependencies:
2445 picomatch "^2.2.1" 2663 picomatch "^2.2.1"
2446 2664
2447 -regenerator-runtime@^0.13.4:  
2448 - version "0.13.7"  
2449 - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55"  
2450 - integrity sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==  
2451 -  
2452 registry-auth-token@^4.0.0: 2665 registry-auth-token@^4.0.0:
2453 version "4.2.0" 2666 version "4.2.0"
2454 resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-4.2.0.tgz#1d37dffda72bbecd0f581e4715540213a65eb7da" 2667 resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-4.2.0.tgz#1d37dffda72bbecd0f581e4715540213a65eb7da"
@@ -2463,14 +2676,7 @@ registry-url@^5.0.0: @@ -2463,14 +2676,7 @@ registry-url@^5.0.0:
2463 dependencies: 2676 dependencies:
2464 rc "^1.2.8" 2677 rc "^1.2.8"
2465 2678
2466 -request-progress@^3.0.0:  
2467 - version "3.0.0"  
2468 - resolved "https://registry.yarnpkg.com/request-progress/-/request-progress-3.0.0.tgz#4ca754081c7fec63f505e4faa825aa06cd669dbe"  
2469 - integrity sha1-TKdUCBx/7GP1BeT6qCWqBs1mnb4=  
2470 - dependencies:  
2471 - throttleit "^1.0.0"  
2472 -  
2473 -request@^2.81.0, request@^2.88.0: 2679 +request@^2.81.0:
2474 version "2.88.2" 2680 version "2.88.2"
2475 resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" 2681 resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3"
2476 integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== 2682 integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==
@@ -2511,11 +2717,12 @@ requires-port@^1.0.0: @@ -2511,11 +2717,12 @@ requires-port@^1.0.0:
2511 resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" 2717 resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff"
2512 integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= 2718 integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=
2513 2719
2514 -resolve@^1.15.1:  
2515 - version "1.17.0"  
2516 - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444"  
2517 - integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== 2720 +resolve@^1.20.0:
  2721 + version "1.20.0"
  2722 + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975"
  2723 + integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==
2518 dependencies: 2724 dependencies:
  2725 + is-core-module "^2.2.0"
2519 path-parse "^1.0.6" 2726 path-parse "^1.0.6"
2520 2727
2521 responselike@^1.0.2: 2728 responselike@^1.0.2:
@@ -2590,7 +2797,7 @@ semver-diff@^3.1.1: @@ -2590,7 +2797,7 @@ semver-diff@^3.1.1:
2590 dependencies: 2797 dependencies:
2591 semver "^6.3.0" 2798 semver "^6.3.0"
2592 2799
2593 -semver@^5.7.1: 2800 +semver@^5.4.1, semver@^5.7.1:
2594 version "5.7.1" 2801 version "5.7.1"
2595 resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" 2802 resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
2596 integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== 2803 integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
@@ -2605,6 +2812,13 @@ semver@^7.1.3: @@ -2605,6 +2812,13 @@ semver@^7.1.3:
2605 resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938" 2812 resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938"
2606 integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ== 2813 integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==
2607 2814
  2815 +semver@^7.3.5:
  2816 + version "7.3.5"
  2817 + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7"
  2818 + integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==
  2819 + dependencies:
  2820 + lru-cache "^6.0.0"
  2821 +
2608 send@0.17.1: 2822 send@0.17.1:
2609 version "0.17.1" 2823 version "0.17.1"
2610 resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" 2824 resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8"
@@ -2634,7 +2848,7 @@ serve-static@1.14.1: @@ -2634,7 +2848,7 @@ serve-static@1.14.1:
2634 parseurl "~1.3.3" 2848 parseurl "~1.3.3"
2635 send "0.17.1" 2849 send "0.17.1"
2636 2850
2637 -set-blocking@^2.0.0: 2851 +set-blocking@^2.0.0, set-blocking@~2.0.0:
2638 version "2.0.0" 2852 version "2.0.0"
2639 resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" 2853 resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
2640 integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= 2854 integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc=
@@ -2644,11 +2858,25 @@ setprototypeof@1.1.1: @@ -2644,11 +2858,25 @@ setprototypeof@1.1.1:
2644 resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" 2858 resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683"
2645 integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== 2859 integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==
2646 2860
2647 -signal-exit@^3.0.2: 2861 +signal-exit@^3.0.0, signal-exit@^3.0.2:
2648 version "3.0.3" 2862 version "3.0.3"
2649 resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" 2863 resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c"
2650 integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== 2864 integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==
2651 2865
  2866 +simple-concat@^1.0.0:
  2867 + version "1.0.1"
  2868 + resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f"
  2869 + integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==
  2870 +
  2871 +simple-get@^3.0.3:
  2872 + version "3.1.0"
  2873 + resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-3.1.0.tgz#b45be062435e50d159540b576202ceec40b9c6b3"
  2874 + integrity sha512-bCR6cP+aTdScaQCnQKbPKtJOKDp/hj9EDLJo3Nw4y1QksqaovlW/bnptB6/c1e+qmNIDHRK+oXFDdEqBT8WzUA==
  2875 + dependencies:
  2876 + decompress-response "^4.2.0"
  2877 + once "^1.3.1"
  2878 + simple-concat "^1.0.0"
  2879 +
2652 simple-swizzle@^0.2.2: 2880 simple-swizzle@^0.2.2:
2653 version "0.2.2" 2881 version "0.2.2"
2654 resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" 2882 resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a"
@@ -2716,6 +2944,23 @@ stream-shift@^1.0.0: @@ -2716,6 +2944,23 @@ stream-shift@^1.0.0:
2716 resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" 2944 resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d"
2717 integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== 2945 integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==
2718 2946
  2947 +string-width@^1.0.1:
  2948 + version "1.0.2"
  2949 + resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3"
  2950 + integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=
  2951 + dependencies:
  2952 + code-point-at "^1.0.0"
  2953 + is-fullwidth-code-point "^1.0.0"
  2954 + strip-ansi "^3.0.0"
  2955 +
  2956 +"string-width@^1.0.2 || 2":
  2957 + version "2.1.1"
  2958 + resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e"
  2959 + integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==
  2960 + dependencies:
  2961 + is-fullwidth-code-point "^2.0.0"
  2962 + strip-ansi "^4.0.0"
  2963 +
2719 string-width@^3.0.0: 2964 string-width@^3.0.0:
2720 version "3.1.0" 2965 version "3.1.0"
2721 resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" 2966 resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961"
@@ -2753,6 +2998,20 @@ string_decoder@~1.1.1: @@ -2753,6 +2998,20 @@ string_decoder@~1.1.1:
2753 dependencies: 2998 dependencies:
2754 safe-buffer "~5.1.0" 2999 safe-buffer "~5.1.0"
2755 3000
  3001 +strip-ansi@^3.0.0, strip-ansi@^3.0.1:
  3002 + version "3.0.1"
  3003 + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"
  3004 + integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=
  3005 + dependencies:
  3006 + ansi-regex "^2.0.0"
  3007 +
  3008 +strip-ansi@^4.0.0:
  3009 + version "4.0.0"
  3010 + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f"
  3011 + integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8=
  3012 + dependencies:
  3013 + ansi-regex "^3.0.0"
  3014 +
2756 strip-ansi@^5.1.0: 3015 strip-ansi@^5.1.0:
2757 version "5.2.0" 3016 version "5.2.0"
2758 resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" 3017 resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae"
@@ -2786,6 +3045,27 @@ supports-color@^7.1.0: @@ -2786,6 +3045,27 @@ supports-color@^7.1.0:
2786 dependencies: 3045 dependencies:
2787 has-flag "^4.0.0" 3046 has-flag "^4.0.0"
2788 3047
  3048 +tar-fs@^2.0.0:
  3049 + version "2.1.1"
  3050 + resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.1.tgz#489a15ab85f1f0befabb370b7de4f9eb5cbe8784"
  3051 + integrity sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==
  3052 + dependencies:
  3053 + chownr "^1.1.1"
  3054 + mkdirp-classic "^0.5.2"
  3055 + pump "^3.0.0"
  3056 + tar-stream "^2.1.4"
  3057 +
  3058 +tar-stream@^2.1.4:
  3059 + version "2.2.0"
  3060 + resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287"
  3061 + integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==
  3062 + dependencies:
  3063 + bl "^4.0.3"
  3064 + end-of-stream "^1.4.1"
  3065 + fs-constants "^1.0.0"
  3066 + inherits "^2.0.3"
  3067 + readable-stream "^3.1.1"
  3068 +
2789 term-size@^2.1.0: 3069 term-size@^2.1.0:
2790 version "2.2.0" 3070 version "2.2.0"
2791 resolved "https://registry.yarnpkg.com/term-size/-/term-size-2.2.0.tgz#1f16adedfe9bdc18800e1776821734086fcc6753" 3071 resolved "https://registry.yarnpkg.com/term-size/-/term-size-2.2.0.tgz#1f16adedfe9bdc18800e1776821734086fcc6753"
@@ -2796,16 +3076,16 @@ text-hex@1.0.x: @@ -2796,16 +3076,16 @@ text-hex@1.0.x:
2796 resolved "https://registry.yarnpkg.com/text-hex/-/text-hex-1.0.0.tgz#69dc9c1b17446ee79a92bf5b884bb4b9127506f5" 3076 resolved "https://registry.yarnpkg.com/text-hex/-/text-hex-1.0.0.tgz#69dc9c1b17446ee79a92bf5b884bb4b9127506f5"
2797 integrity sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg== 3077 integrity sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==
2798 3078
2799 -throttleit@^1.0.0:  
2800 - version "1.0.0"  
2801 - resolved "https://registry.yarnpkg.com/throttleit/-/throttleit-1.0.0.tgz#9e785836daf46743145a5984b6268d828528ac6c"  
2802 - integrity sha1-nnhYNtr0Z0MUWlmEtiaNgoUorGw=  
2803 -  
2804 through@~2.3.4: 3079 through@~2.3.4:
2805 version "2.3.8" 3080 version "2.3.8"
2806 resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" 3081 resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
2807 integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= 3082 integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=
2808 3083
  3084 +to-fast-properties@^2.0.0:
  3085 + version "2.0.0"
  3086 + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e"
  3087 + integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=
  3088 +
2809 to-readable-stream@^1.0.0: 3089 to-readable-stream@^1.0.0:
2810 version "1.0.0" 3090 version "1.0.0"
2811 resolved "https://registry.yarnpkg.com/to-readable-stream/-/to-readable-stream-1.0.0.tgz#ce0aa0c2f3df6adf852efb404a783e77c0475771" 3091 resolved "https://registry.yarnpkg.com/to-readable-stream/-/to-readable-stream-1.0.0.tgz#ce0aa0c2f3df6adf852efb404a783e77c0475771"
@@ -2852,6 +3132,11 @@ triple-beam@^1.2.0, triple-beam@^1.3.0: @@ -2852,6 +3132,11 @@ triple-beam@^1.2.0, triple-beam@^1.3.0:
2852 resolved "https://registry.yarnpkg.com/triple-beam/-/triple-beam-1.3.0.tgz#a595214c7298db8339eeeee083e4d10bd8cb8dd9" 3132 resolved "https://registry.yarnpkg.com/triple-beam/-/triple-beam-1.3.0.tgz#a595214c7298db8339eeeee083e4d10bd8cb8dd9"
2853 integrity sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw== 3133 integrity sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw==
2854 3134
  3135 +tslib@2.1.0:
  3136 + version "2.1.0"
  3137 + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.1.0.tgz#da60860f1c2ecaa5703ab7d39bc05b6bf988b97a"
  3138 + integrity sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==
  3139 +
2855 tslib@^1.10.0, tslib@^1.9.3: 3140 tslib@^1.10.0, tslib@^1.9.3:
2856 version "1.13.0" 3141 version "1.13.0"
2857 resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.13.0.tgz#c881e13cc7015894ed914862d276436fa9a47043" 3142 resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.13.0.tgz#c881e13cc7015894ed914862d276436fa9a47043"
@@ -2906,12 +3191,7 @@ typedarray-to-buffer@^3.1.5: @@ -2906,12 +3191,7 @@ typedarray-to-buffer@^3.1.5:
2906 dependencies: 3191 dependencies:
2907 is-typedarray "^1.0.0" 3192 is-typedarray "^1.0.0"
2908 3193
2909 -uid2@0.0.3:  
2910 - version "0.0.3"  
2911 - resolved "https://registry.yarnpkg.com/uid2/-/uid2-0.0.3.tgz#483126e11774df2f71b8b639dcd799c376162b82"  
2912 - integrity sha1-SDEm4Rd03y9xuLY53NeZw3YWK4I=  
2913 -  
2914 -undefsafe@^2.0.2: 3194 +undefsafe@^2.0.3:
2915 version "2.0.3" 3195 version "2.0.3"
2916 resolved "https://registry.yarnpkg.com/undefsafe/-/undefsafe-2.0.3.tgz#6b166e7094ad46313b2202da7ecc2cd7cc6e7aae" 3196 resolved "https://registry.yarnpkg.com/undefsafe/-/undefsafe-2.0.3.tgz#6b166e7094ad46313b2202da7ecc2cd7cc6e7aae"
2917 integrity sha512-nrXZwwXrD/T/JXeygJqdCO6NZZ1L66HrxM/Z7mIq2oPanoN0F1nLx3lwJMu6AwJY69hdixaFQOuoYsMjE5/C2A== 3197 integrity sha512-nrXZwwXrD/T/JXeygJqdCO6NZZ1L66HrxM/Z7mIq2oPanoN0F1nLx3lwJMu6AwJY69hdixaFQOuoYsMjE5/C2A==
@@ -2935,16 +3215,7 @@ unique-string@^2.0.0: @@ -2935,16 +3215,7 @@ unique-string@^2.0.0:
2935 dependencies: 3215 dependencies:
2936 crypto-random-string "^2.0.0" 3216 crypto-random-string "^2.0.0"
2937 3217
2938 -unique-temp-dir@^1.0.0:  
2939 - version "1.0.0"  
2940 - resolved "https://registry.yarnpkg.com/unique-temp-dir/-/unique-temp-dir-1.0.0.tgz#6dce95b2681ca003eebfb304a415f9cbabcc5385"  
2941 - integrity sha1-bc6VsmgcoAPuv7MEpBX5y6vMU4U=  
2942 - dependencies:  
2943 - mkdirp "^0.5.1"  
2944 - os-tmpdir "^1.0.1"  
2945 - uid2 "0.0.3"  
2946 -  
2947 -universalify@^0.1.0, universalify@^0.1.2: 3218 +universalify@^0.1.2:
2948 version "0.1.2" 3219 version "0.1.2"
2949 resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" 3220 resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66"
2950 integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== 3221 integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==
@@ -2954,15 +3225,20 @@ universalify@^1.0.0: @@ -2954,15 +3225,20 @@ universalify@^1.0.0:
2954 resolved "https://registry.yarnpkg.com/universalify/-/universalify-1.0.0.tgz#b61a1da173e8435b2fe3c67d29b9adf8594bd16d" 3225 resolved "https://registry.yarnpkg.com/universalify/-/universalify-1.0.0.tgz#b61a1da173e8435b2fe3c67d29b9adf8594bd16d"
2955 integrity sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug== 3226 integrity sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==
2956 3227
  3228 +universalify@^2.0.0:
  3229 + version "2.0.0"
  3230 + resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717"
  3231 + integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==
  3232 +
2957 unpipe@1.0.0, unpipe@~1.0.0: 3233 unpipe@1.0.0, unpipe@~1.0.0:
2958 version "1.0.0" 3234 version "1.0.0"
2959 resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" 3235 resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
2960 integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= 3236 integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=
2961 3237
2962 -update-notifier@^4.0.0:  
2963 - version "4.1.1"  
2964 - resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-4.1.1.tgz#895fc8562bbe666179500f9f2cebac4f26323746"  
2965 - integrity sha512-9y+Kds0+LoLG6yN802wVXoIfxYEwh3FlZwzMwpCZp62S2i1/Jzeqb9Eeeju3NSHccGGasfGlK5/vEHbAifYRDg== 3238 +update-notifier@^4.1.0:
  3239 + version "4.1.3"
  3240 + resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-4.1.3.tgz#be86ee13e8ce48fb50043ff72057b5bd598e1ea3"
  3241 + integrity sha512-Yld6Z0RyCYGB6ckIjffGOSOmHXj1gMeE7aROz4MG+XMkmixBX4jUngrGXNYz7wPKBmtoD4MnBa2Anu7RSKht/A==
2966 dependencies: 3242 dependencies:
2967 boxen "^4.2.0" 3243 boxen "^4.2.0"
2968 chalk "^3.0.0" 3244 chalk "^3.0.0"
@@ -3087,6 +3363,18 @@ which-module@^2.0.0: @@ -3087,6 +3363,18 @@ which-module@^2.0.0:
3087 resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" 3363 resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a"
3088 integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= 3364 integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=
3089 3365
  3366 +which-pm-runs@^1.0.0:
  3367 + version "1.0.0"
  3368 + resolved "https://registry.yarnpkg.com/which-pm-runs/-/which-pm-runs-1.0.0.tgz#670b3afbc552e0b55df6b7780ca74615f23ad1cb"
  3369 + integrity sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs=
  3370 +
  3371 +wide-align@^1.1.0:
  3372 + version "1.1.3"
  3373 + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457"
  3374 + integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==
  3375 + dependencies:
  3376 + string-width "^1.0.2 || 2"
  3377 +
3090 widest-line@^3.1.0: 3378 widest-line@^3.1.0:
3091 version "3.1.0" 3379 version "3.1.0"
3092 resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-3.1.0.tgz#8292333bbf66cb45ff0de1603b136b7ae1496eca" 3380 resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-3.1.0.tgz#8292333bbf66cb45ff0de1603b136b7ae1496eca"
@@ -3146,6 +3434,15 @@ wrap-ansi@^6.2.0: @@ -3146,6 +3434,15 @@ wrap-ansi@^6.2.0:
3146 string-width "^4.1.0" 3434 string-width "^4.1.0"
3147 strip-ansi "^6.0.0" 3435 strip-ansi "^6.0.0"
3148 3436
  3437 +wrap-ansi@^7.0.0:
  3438 + version "7.0.0"
  3439 + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
  3440 + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
  3441 + dependencies:
  3442 + ansi-styles "^4.0.0"
  3443 + string-width "^4.1.0"
  3444 + strip-ansi "^6.0.0"
  3445 +
3149 wrappy@1: 3446 wrappy@1:
3150 version "1.0.2" 3447 version "1.0.2"
3151 resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 3448 resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
@@ -3202,6 +3499,11 @@ y18n@^4.0.0: @@ -3202,6 +3499,11 @@ y18n@^4.0.0:
3202 resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" 3499 resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b"
3203 integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== 3500 integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==
3204 3501
  3502 +y18n@^5.0.5:
  3503 + version "5.0.8"
  3504 + resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55"
  3505 + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==
  3506 +
3205 yallist@^4.0.0: 3507 yallist@^4.0.0:
3206 version "4.0.0" 3508 version "4.0.0"
3207 resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" 3509 resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"
@@ -3215,6 +3517,11 @@ yargs-parser@^18.1.2: @@ -3215,6 +3517,11 @@ yargs-parser@^18.1.2:
3215 camelcase "^5.0.0" 3517 camelcase "^5.0.0"
3216 decamelize "^1.2.0" 3518 decamelize "^1.2.0"
3217 3519
  3520 +yargs-parser@^20.2.2:
  3521 + version "20.2.9"
  3522 + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee"
  3523 + integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==
  3524 +
3218 yargs@^15.3.1: 3525 yargs@^15.3.1:
3219 version "15.4.1" 3526 version "15.4.1"
3220 resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" 3527 resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8"
@@ -3231,3 +3538,16 @@ yargs@^15.3.1: @@ -3231,3 +3538,16 @@ yargs@^15.3.1:
3231 which-module "^2.0.0" 3538 which-module "^2.0.0"
3232 y18n "^4.0.0" 3539 y18n "^4.0.0"
3233 yargs-parser "^18.1.2" 3540 yargs-parser "^18.1.2"
  3541 +
  3542 +yargs@^16.2.0:
  3543 + version "16.2.0"
  3544 + resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66"
  3545 + integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==
  3546 + dependencies:
  3547 + cliui "^7.0.2"
  3548 + escalade "^3.1.1"
  3549 + get-caller-file "^2.0.5"
  3550 + require-directory "^2.1.1"
  3551 + string-width "^4.2.0"
  3552 + y18n "^5.0.5"
  3553 + yargs-parser "^20.2.2"
@@ -20,7 +20,7 @@ @@ -20,7 +20,7 @@
20 <modelVersion>4.0.0</modelVersion> 20 <modelVersion>4.0.0</modelVersion>
21 <parent> 21 <parent>
22 <groupId>org.thingsboard</groupId> 22 <groupId>org.thingsboard</groupId>
23 - <version>3.3.1-SNAPSHOT</version> 23 + <version>3.3.2-SNAPSHOT</version>
24 <artifactId>thingsboard</artifactId> 24 <artifactId>thingsboard</artifactId>
25 </parent> 25 </parent>
26 <artifactId>msa</artifactId> 26 <artifactId>msa</artifactId>
@@ -20,7 +20,7 @@ @@ -20,7 +20,7 @@
20 <modelVersion>4.0.0</modelVersion> 20 <modelVersion>4.0.0</modelVersion>
21 <parent> 21 <parent>
22 <groupId>org.thingsboard</groupId> 22 <groupId>org.thingsboard</groupId>
23 - <version>3.3.1-SNAPSHOT</version> 23 + <version>3.3.2-SNAPSHOT</version>
24 <artifactId>msa</artifactId> 24 <artifactId>msa</artifactId>
25 </parent> 25 </parent>
26 <groupId>org.thingsboard.msa</groupId> 26 <groupId>org.thingsboard.msa</groupId>
@@ -20,7 +20,7 @@ @@ -20,7 +20,7 @@
20 <modelVersion>4.0.0</modelVersion> 20 <modelVersion>4.0.0</modelVersion>
21 <parent> 21 <parent>
22 <groupId>org.thingsboard</groupId> 22 <groupId>org.thingsboard</groupId>
23 - <version>3.3.1-SNAPSHOT</version> 23 + <version>3.3.2-SNAPSHOT</version>
24 <artifactId>msa</artifactId> 24 <artifactId>msa</artifactId>
25 </parent> 25 </parent>
26 <groupId>org.thingsboard.msa</groupId> 26 <groupId>org.thingsboard.msa</groupId>
@@ -20,7 +20,7 @@ @@ -20,7 +20,7 @@
20 <modelVersion>4.0.0</modelVersion> 20 <modelVersion>4.0.0</modelVersion>
21 <parent> 21 <parent>
22 <groupId>org.thingsboard.msa</groupId> 22 <groupId>org.thingsboard.msa</groupId>
23 - <version>3.3.1-SNAPSHOT</version> 23 + <version>3.3.2-SNAPSHOT</version>
24 <artifactId>transport</artifactId> 24 <artifactId>transport</artifactId>
25 </parent> 25 </parent>
26 <groupId>org.thingsboard.msa.transport</groupId> 26 <groupId>org.thingsboard.msa.transport</groupId>
@@ -20,7 +20,7 @@ @@ -20,7 +20,7 @@
20 <modelVersion>4.0.0</modelVersion> 20 <modelVersion>4.0.0</modelVersion>
21 <parent> 21 <parent>
22 <groupId>org.thingsboard.msa</groupId> 22 <groupId>org.thingsboard.msa</groupId>
23 - <version>3.3.1-SNAPSHOT</version> 23 + <version>3.3.2-SNAPSHOT</version>
24 <artifactId>transport</artifactId> 24 <artifactId>transport</artifactId>
25 </parent> 25 </parent>
26 <groupId>org.thingsboard.msa.transport</groupId> 26 <groupId>org.thingsboard.msa.transport</groupId>
@@ -20,7 +20,7 @@ @@ -20,7 +20,7 @@
20 <modelVersion>4.0.0</modelVersion> 20 <modelVersion>4.0.0</modelVersion>
21 <parent> 21 <parent>
22 <groupId>org.thingsboard.msa</groupId> 22 <groupId>org.thingsboard.msa</groupId>
23 - <version>3.3.1-SNAPSHOT</version> 23 + <version>3.3.2-SNAPSHOT</version>
24 <artifactId>transport</artifactId> 24 <artifactId>transport</artifactId>
25 </parent> 25 </parent>
26 <groupId>org.thingsboard.msa.transport</groupId> 26 <groupId>org.thingsboard.msa.transport</groupId>
@@ -20,7 +20,7 @@ @@ -20,7 +20,7 @@
20 <modelVersion>4.0.0</modelVersion> 20 <modelVersion>4.0.0</modelVersion>
21 <parent> 21 <parent>
22 <groupId>org.thingsboard.msa</groupId> 22 <groupId>org.thingsboard.msa</groupId>
23 - <version>3.3.1-SNAPSHOT</version> 23 + <version>3.3.2-SNAPSHOT</version>
24 <artifactId>transport</artifactId> 24 <artifactId>transport</artifactId>
25 </parent> 25 </parent>
26 <groupId>org.thingsboard.msa.transport</groupId> 26 <groupId>org.thingsboard.msa.transport</groupId>
@@ -20,7 +20,7 @@ @@ -20,7 +20,7 @@
20 <modelVersion>4.0.0</modelVersion> 20 <modelVersion>4.0.0</modelVersion>
21 <parent> 21 <parent>
22 <groupId>org.thingsboard</groupId> 22 <groupId>org.thingsboard</groupId>
23 - <version>3.3.1-SNAPSHOT</version> 23 + <version>3.3.2-SNAPSHOT</version>
24 <artifactId>msa</artifactId> 24 <artifactId>msa</artifactId>
25 </parent> 25 </parent>
26 <groupId>org.thingsboard.msa</groupId> 26 <groupId>org.thingsboard.msa</groupId>
@@ -21,7 +21,7 @@ @@ -21,7 +21,7 @@
21 <parent> 21 <parent>
22 <groupId>org.thingsboard.msa</groupId> 22 <groupId>org.thingsboard.msa</groupId>
23 <artifactId>transport</artifactId> 23 <artifactId>transport</artifactId>
24 - <version>3.3.1-SNAPSHOT</version> 24 + <version>3.3.2-SNAPSHOT</version>
25 </parent> 25 </parent>
26 26
27 <groupId>org.thingsboard.msa.transport</groupId> 27 <groupId>org.thingsboard.msa.transport</groupId>
1 { 1 {
2 "name": "thingsboard-web-ui", 2 "name": "thingsboard-web-ui",
3 "private": true, 3 "private": true,
4 - "version": "3.3.1", 4 + "version": "3.3.2",
5 "description": "ThingsBoard Web UI Microservice", 5 "description": "ThingsBoard Web UI Microservice",
6 "main": "server.js", 6 "main": "server.js",
7 "bin": "server.js", 7 "bin": "server.js",
@@ -34,9 +34,9 @@ @@ -34,9 +34,9 @@
34 ] 34 ]
35 }, 35 },
36 "devDependencies": { 36 "devDependencies": {
37 - "fs-extra": "^9.0.1",  
38 - "nodemon": "^2.0.4",  
39 - "pkg": "^4.4.9" 37 + "fs-extra": "^10.0.0",
  38 + "nodemon": "^2.0.12",
  39 + "pkg": "^5.3.1"
40 }, 40 },
41 "pkg": { 41 "pkg": {
42 "assets": [ 42 "assets": [
@@ -20,7 +20,7 @@ @@ -20,7 +20,7 @@
20 <modelVersion>4.0.0</modelVersion> 20 <modelVersion>4.0.0</modelVersion>
21 <parent> 21 <parent>
22 <groupId>org.thingsboard</groupId> 22 <groupId>org.thingsboard</groupId>
23 - <version>3.3.1-SNAPSHOT</version> 23 + <version>3.3.2-SNAPSHOT</version>
24 <artifactId>msa</artifactId> 24 <artifactId>msa</artifactId>
25 </parent> 25 </parent>
26 <groupId>org.thingsboard.msa</groupId> 26 <groupId>org.thingsboard.msa</groupId>