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 20 <modelVersion>4.0.0</modelVersion>
21 21 <parent>
22 22 <groupId>org.thingsboard</groupId>
23   - <version>3.3.1-SNAPSHOT</version>
  23 + <version>3.3.2-SNAPSHOT</version>
24 24 <artifactId>thingsboard</artifactId>
25 25 </parent>
26 26 <artifactId>application</artifactId>
... ...
... ... @@ -106,7 +106,7 @@
106 106 ],
107 107 "templateHtml": "<canvas id=\"pieChart\"></canvas>\n",
108 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 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 111 "dataKeySettingsSchema": "{}\n",
112 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 128 ],
129 129 "templateHtml": "<canvas id=\"radarChart\"></canvas>\n",
130 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 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 133 "dataKeySettingsSchema": "{}\n",
134 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 231
232 232 @Autowired
233 233 @Getter
234   - private JsExecutorService jsExecutor;
235   -
236   - @Autowired
237   - @Getter
238 234 private MailExecutorService mailExecutor;
239 235
240 236 @Autowired
... ... @@ -491,22 +487,26 @@ public class ActorSystemContext {
491 487 }
492 488
493 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 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 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 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 510 if (checkLimits(tenantId, tbMsg, error)) {
511 511 try {
512 512 Event event = new Event();
... ... @@ -530,6 +530,8 @@ public class ActorSystemContext {
530 530
531 531 if (error != null) {
532 532 node = node.put("error", toString(error));
  533 + } else if (failureMessage != null) {
  534 + node = node.put("error", failureMessage);
533 535 }
534 536
535 537 event.setBody(node);
... ...
... ... @@ -224,7 +224,7 @@ class DefaultTbContext implements TbContext {
224 224 }
225 225 if (nodeCtx.getSelf().isDebugMode()) {
226 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 229 mainCtx.getClusterService().pushMsgToRuleEngine(tpi, tbMsg.getId(), msg.build(), new SimpleTbQueueCallback(onSuccess, onFailure));
230 230 }
... ... @@ -369,11 +369,6 @@ class DefaultTbContext implements TbContext {
369 369 }
370 370
371 371 @Override
372   - public ListeningExecutor getJsExecutor() {
373   - return mainCtx.getJsExecutor();
374   - }
375   -
376   - @Override
377 372 public ListeningExecutor getMailExecutor() {
378 373 return mainCtx.getMailExecutor();
379 374 }
... ...
... ... @@ -202,6 +202,8 @@ public class ThingsboardInstallService {
202 202 systemDataLoaderService.createOAuth2Templates();
203 203 case "3.3.0":
204 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 207 log.info("Updating system data...");
206 208 systemDataLoaderService.updateSystemWidgets();
207 209 break;
... ...
... ... @@ -105,7 +105,7 @@ public class AdminSettingsEdgeEventFetcher implements EdgeEventFetcher {
105 105 Template template = freemarkerConfig.getTemplate(templatesName);
106 106 if (template != null) {
107 107 String name = validateName(template.getName());
108   - Map<String, String> mailTemplate = getMailTemplateFromFile(template.getRootTreeNode().toString());
  108 + Map<String, String> mailTemplate = getMailTemplateFromFile(template.toString());
109 109 if (mailTemplate != null) {
110 110 mailTemplates.put(name, mailTemplate);
111 111 } else {
... ...
... ... @@ -38,8 +38,6 @@ import org.thingsboard.server.common.data.id.TenantId;
38 38 import org.thingsboard.server.common.data.kv.BaseReadTsKvQuery;
39 39 import org.thingsboard.server.common.data.kv.ReadTsKvQuery;
40 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 41 import org.thingsboard.server.common.data.page.PageData;
44 42 import org.thingsboard.server.common.data.page.PageLink;
45 43 import org.thingsboard.server.common.data.page.TimePageLink;
... ... @@ -55,7 +53,6 @@ import org.thingsboard.server.dao.entity.EntityService;
55 53 import org.thingsboard.server.dao.entityview.EntityViewService;
56 54 import org.thingsboard.server.dao.model.sql.DeviceProfileEntity;
57 55 import org.thingsboard.server.dao.oauth2.OAuth2Service;
58   -import org.thingsboard.server.dao.oauth2.OAuth2Utils;
59 56 import org.thingsboard.server.dao.rule.RuleChainService;
60 57 import org.thingsboard.server.dao.sql.device.DeviceProfileRepository;
61 58 import org.thingsboard.server.dao.tenant.TenantService;
... ... @@ -448,18 +445,7 @@ public class DefaultDataUpdateService implements DataUpdateService {
448 445 }
449 446
450 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 72 synchronized (pendingPack) {
73 73 pendingPack.clear();
74 74 for (int i = startIdx; i < endIdx; i++) {
75   - IdMsgPair pair = orderedMsgList.get(i);
  75 + IdMsgPair<TransportProtos.ToRuleEngineMsg> pair = orderedMsgList.get(i);
76 76 pendingPack.put(pair.uuid, pair.msg);
77 77 }
78 78 tmpPack = new LinkedHashMap<>(pendingPack);
... ...
... ... @@ -49,7 +49,7 @@ public abstract class SequentialByEntityIdTbRuleEngineSubmitStrategy extends Abs
49 49 public void submitAttempt(BiConsumer<UUID, TbProtoQueueMsg<TransportProtos.ToRuleEngineMsg>> msgConsumer) {
50 50 this.msgConsumer = msgConsumer;
51 51 entityIdToListMap.forEach((entityId, queue) -> {
52   - IdMsgPair msg = queue.peek();
  52 + IdMsgPair<TransportProtos.ToRuleEngineMsg> msg = queue.peek();
53 53 if (msg != null) {
54 54 msgConsumer.accept(msg.uuid, msg.msg);
55 55 }
... ... @@ -68,9 +68,9 @@ public abstract class SequentialByEntityIdTbRuleEngineSubmitStrategy extends Abs
68 68 if (entityId != null) {
69 69 Queue<IdMsgPair<TransportProtos.ToRuleEngineMsg>> queue = entityIdToListMap.get(entityId);
70 70 if (queue != null) {
71   - IdMsgPair next = null;
  71 + IdMsgPair<TransportProtos.ToRuleEngineMsg> next = null;
72 72 synchronized (queue) {
73   - IdMsgPair expected = queue.peek();
  73 + IdMsgPair<TransportProtos.ToRuleEngineMsg> expected = queue.peek();
74 74 if (expected != null && expected.uuid.equals(id)) {
75 75 queue.poll();
76 76 next = queue.peek();
... ...
... ... @@ -59,7 +59,7 @@ public class SequentialTbRuleEngineSubmitStrategy extends AbstractTbRuleEngineSu
59 59 int listSize = orderedMsgList.size();
60 60 int idx = msgIdx.get();
61 61 if (idx < listSize) {
62   - IdMsgPair pair = orderedMsgList.get(idx);
  62 + IdMsgPair<TransportProtos.ToRuleEngineMsg> pair = orderedMsgList.get(idx);
63 63 expectedMsgId = pair.uuid;
64 64 if (log.isDebugEnabled()) {
65 65 log.debug("[{}] submitting [{}] message to rule engine", queueName, pair.msg);
... ...
... ... @@ -17,7 +17,6 @@ package org.thingsboard.server.service.security.auth.oauth2;
17 17
18 18 import org.springframework.security.oauth2.client.authentication.OAuth2AuthenticationToken;
19 19 import org.thingsboard.server.common.data.oauth2.OAuth2Registration;
20   -import org.thingsboard.server.common.data.oauth2.deprecated.OAuth2ClientRegistrationInfo;
21 20 import org.thingsboard.server.service.security.model.SecurityUser;
22 21
23 22 import javax.servlet.http.HttpServletRequest;
... ...
... ... @@ -117,6 +117,7 @@ public class BaseTbResourceServiceTest extends AbstractControllerTest {
117 117 .andExpect(status().isOk());
118 118 }
119 119
  120 + @SuppressWarnings("deprecation")
120 121 @Rule
121 122 public ExpectedException thrown = ExpectedException.none();
122 123
... ...
... ... @@ -114,8 +114,8 @@ public abstract class AbstractCoapAttributesIntegrationTest extends AbstractCoap
114 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 119 for (Map<String, Object> map : deviceValues) {
120 120 String key = (String) map.get("key");
121 121 Object value = map.get("value");
... ... @@ -145,6 +145,7 @@ public abstract class AbstractCoapAttributesIntegrationTest extends AbstractCoap
145 145 }
146 146 }
147 147
  148 + @SuppressWarnings({"unchecked", "rawtypes"})
148 149 private void assertAttributesProtoValues(List<Map<String, Object>> values, Set<String> keySet) {
149 150 for (Map<String, Object> map : values) {
150 151 String key = (String) map.get("key");
... ...
... ... @@ -29,6 +29,7 @@ import static java.util.Collections.emptyList;
29 29 import static org.assertj.core.api.Assertions.assertThat;
30 30 import static org.mockito.ArgumentMatchers.any;
31 31 import static org.mockito.ArgumentMatchers.anyLong;
  32 +import static org.mockito.ArgumentMatchers.anyMap;
32 33 import static org.mockito.ArgumentMatchers.anyString;
33 34 import static org.mockito.BDDMockito.willReturn;
34 35 import static org.mockito.Mockito.mock;
... ... @@ -71,7 +72,7 @@ class LwM2mTransportServerHelperTest {
71 72 assertThat(helper.getTs(emptyList(), keyTsLatestMap)).isEqualTo(now);
72 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 76 verify(helper, times(5)).getCurrentTimeMillis();
76 77 }
77 78
... ... @@ -80,7 +81,7 @@ class LwM2mTransportServerHelperTest {
80 81 assertThat(helper.getTs(kvList, keyTsLatestMap)).isEqualTo(now);
81 82
82 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 87 @Test
... ... @@ -126,4 +127,4 @@ class LwM2mTransportServerHelperTest {
126 127 assertThat(helper.compareAndSwapOrIncrementTsAtomically(keyTsLatestMap.get(KEY_SW_STATE), now)).isEqualTo(nextHourTs + 1);
127 128 }
128 129
129   -}
\ No newline at end of file
  130 +}
... ...
... ... @@ -183,6 +183,7 @@ public abstract class AbstractMqttAttributesIntegrationTest extends AbstractMqtt
183 183 }
184 184 }
185 185
  186 + @SuppressWarnings({"unchecked", "rawtypes"})
186 187 private void assertAttributesProtoValues(List<Map<String, Object>> values, Set<String> keySet) {
187 188 for (Map<String, Object> map : values) {
188 189 String key = (String) map.get("key");
... ...
... ... @@ -20,7 +20,7 @@
20 20 <modelVersion>4.0.0</modelVersion>
21 21 <parent>
22 22 <groupId>org.thingsboard</groupId>
23   - <version>3.3.1-SNAPSHOT</version>
  23 + <version>3.3.2-SNAPSHOT</version>
24 24 <artifactId>common</artifactId>
25 25 </parent>
26 26 <groupId>org.thingsboard.common</groupId>
... ...
... ... @@ -20,7 +20,7 @@
20 20 <modelVersion>4.0.0</modelVersion>
21 21 <parent>
22 22 <groupId>org.thingsboard</groupId>
23   - <version>3.3.1-SNAPSHOT</version>
  23 + <version>3.3.2-SNAPSHOT</version>
24 24 <artifactId>common</artifactId>
25 25 </parent>
26 26 <groupId>org.thingsboard.common</groupId>
... ...
... ... @@ -20,7 +20,7 @@
20 20 <modelVersion>4.0.0</modelVersion>
21 21 <parent>
22 22 <groupId>org.thingsboard</groupId>
23   - <version>3.3.1-SNAPSHOT</version>
  23 + <version>3.3.2-SNAPSHOT</version>
24 24 <artifactId>common</artifactId>
25 25 </parent>
26 26 <groupId>org.thingsboard.common</groupId>
... ...
... ... @@ -22,7 +22,7 @@
22 22 <modelVersion>4.0.0</modelVersion>
23 23 <parent>
24 24 <groupId>org.thingsboard</groupId>
25   - <version>3.3.1-SNAPSHOT</version>
  25 + <version>3.3.2-SNAPSHOT</version>
26 26 <artifactId>common</artifactId>
27 27 </parent>
28 28 <groupId>org.thingsboard.common</groupId>
... ...
... ... @@ -20,7 +20,7 @@
20 20 <modelVersion>4.0.0</modelVersion>
21 21 <parent>
22 22 <groupId>org.thingsboard</groupId>
23   - <version>3.3.1-SNAPSHOT</version>
  23 + <version>3.3.2-SNAPSHOT</version>
24 24 <artifactId>common</artifactId>
25 25 </parent>
26 26 <groupId>org.thingsboard.common</groupId>
... ...
... ... @@ -19,8 +19,6 @@ import org.thingsboard.server.common.data.oauth2.OAuth2ClientInfo;
19 19 import org.thingsboard.server.common.data.oauth2.OAuth2Info;
20 20 import org.thingsboard.server.common.data.oauth2.OAuth2Registration;
21 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 23 import java.util.List;
26 24 import java.util.UUID;
... ... @@ -28,12 +26,6 @@ import java.util.UUID;
28 26 public interface OAuth2Service {
29 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 29 void saveOAuth2Info(OAuth2Info oauth2Info);
38 30
39 31 OAuth2Info findOAuth2Info();
... ...
... ... @@ -20,7 +20,7 @@
20 20 <modelVersion>4.0.0</modelVersion>
21 21 <parent>
22 22 <groupId>org.thingsboard</groupId>
23   - <version>3.3.1-SNAPSHOT</version>
  23 + <version>3.3.2-SNAPSHOT</version>
24 24 <artifactId>common</artifactId>
25 25 </parent>
26 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 20 <modelVersion>4.0.0</modelVersion>
21 21 <parent>
22 22 <groupId>org.thingsboard</groupId>
23   - <version>3.3.1-SNAPSHOT</version>
  23 + <version>3.3.2-SNAPSHOT</version>
24 24 <artifactId>common</artifactId>
25 25 </parent>
26 26 <groupId>org.thingsboard.common</groupId>
... ...
... ... @@ -20,7 +20,7 @@
20 20 <modelVersion>4.0.0</modelVersion>
21 21 <parent>
22 22 <groupId>org.thingsboard</groupId>
23   - <version>3.3.1-SNAPSHOT</version>
  23 + <version>3.3.2-SNAPSHOT</version>
24 24 <artifactId>common</artifactId>
25 25 </parent>
26 26 <groupId>org.thingsboard.common</groupId>
... ...
... ... @@ -20,7 +20,7 @@
20 20 <modelVersion>4.0.0</modelVersion>
21 21 <parent>
22 22 <groupId>org.thingsboard</groupId>
23   - <version>3.3.1-SNAPSHOT</version>
  23 + <version>3.3.2-SNAPSHOT</version>
24 24 <artifactId>thingsboard</artifactId>
25 25 </parent>
26 26 <artifactId>common</artifactId>
... ...
... ... @@ -20,7 +20,7 @@
20 20 <modelVersion>4.0.0</modelVersion>
21 21 <parent>
22 22 <groupId>org.thingsboard</groupId>
23   - <version>3.3.1-SNAPSHOT</version>
  23 + <version>3.3.2-SNAPSHOT</version>
24 24 <artifactId>common</artifactId>
25 25 </parent>
26 26 <groupId>org.thingsboard.common</groupId>
... ...
... ... @@ -75,12 +75,12 @@ public class DefaultTbQueueRequestTemplateTest {
75 75 long maxPendingRequests = 32;
76 76 long pollInterval = 5;
77 77
78   - DefaultTbQueueRequestTemplate inst;
  78 + DefaultTbQueueRequestTemplate<TbQueueMsg, TbQueueMsg> inst;
79 79
80 80 @Before
81 81 public void setUp() throws Exception {
82 82 willReturn(topic).given(responseTemplate).getTopic();
83   - inst = spy(new DefaultTbQueueRequestTemplate(
  83 + inst = spy(new DefaultTbQueueRequestTemplate<>(
84 84 queueAdmin, requestTemplate, responseTemplate,
85 85 maxRequestTimeout, maxPendingRequests, pollInterval, executorMock));
86 86
... ... @@ -170,6 +170,7 @@ public class DefaultTbQueueRequestTemplateTest {
170 170 verify(inst, times((int) inst.maxPendingRequests)).sendToRequestTemplate(any(), any(), any(), any());
171 171 }
172 172
  173 + @SuppressWarnings("unchecked")
173 174 @Test
174 175 public void givenNothing_whenSendAndFetchAndProcessResponsesWithTimeout_thenFail() {
175 176 //given
... ... @@ -208,4 +209,4 @@ public class DefaultTbQueueRequestTemplateTest {
208 209 TbQueueMsg getRequestMsgMock() {
209 210 return mock(TbQueueMsg.class, RETURNS_DEEP_STUBS);
210 211 }
211   -}
\ No newline at end of file
  212 +}
... ...
... ... @@ -22,7 +22,7 @@
22 22 <modelVersion>4.0.0</modelVersion>
23 23 <parent>
24 24 <groupId>org.thingsboard</groupId>
25   - <version>3.3.1-SNAPSHOT</version>
  25 + <version>3.3.2-SNAPSHOT</version>
26 26 <artifactId>common</artifactId>
27 27 </parent>
28 28 <groupId>org.thingsboard.common</groupId>
... ...
... ... @@ -20,7 +20,7 @@
20 20 <modelVersion>4.0.0</modelVersion>
21 21 <parent>
22 22 <groupId>org.thingsboard.common</groupId>
23   - <version>3.3.1-SNAPSHOT</version>
  23 + <version>3.3.2-SNAPSHOT</version>
24 24 <artifactId>transport</artifactId>
25 25 </parent>
26 26 <groupId>org.thingsboard.common.transport</groupId>
... ...
... ... @@ -20,7 +20,7 @@
20 20 <modelVersion>4.0.0</modelVersion>
21 21 <parent>
22 22 <groupId>org.thingsboard.common</groupId>
23   - <version>3.3.1-SNAPSHOT</version>
  23 + <version>3.3.2-SNAPSHOT</version>
24 24 <artifactId>transport</artifactId>
25 25 </parent>
26 26 <groupId>org.thingsboard.common.transport</groupId>
... ...
... ... @@ -20,7 +20,7 @@
20 20 <modelVersion>4.0.0</modelVersion>
21 21 <parent>
22 22 <groupId>org.thingsboard.common</groupId>
23   - <version>3.3.1-SNAPSHOT</version>
  23 + <version>3.3.2-SNAPSHOT</version>
24 24 <artifactId>transport</artifactId>
25 25 </parent>
26 26 <groupId>org.thingsboard.common.transport</groupId>
... ...
... ... @@ -81,6 +81,7 @@ public class TbLwM2MDtlsCertificateVerifier implements NewAdvancedCertificateVer
81 81 return Arrays.asList(CertificateType.X_509, CertificateType.RAW_PUBLIC_KEY);
82 82 }
83 83
  84 + @SuppressWarnings("deprecation")
84 85 @PostConstruct
85 86 public void init() {
86 87 try {
... ...
... ... @@ -38,7 +38,7 @@ import java.io.ByteArrayInputStream;
38 38 import java.io.IOException;
39 39 import java.util.ArrayList;
40 40 import java.util.List;
41   -import java.util.concurrent.ConcurrentMap;
  41 +import java.util.Map;
42 42 import java.util.concurrent.atomic.AtomicLong;
43 43
44 44 import static org.thingsboard.server.gen.transport.TransportProtos.KeyValueType.BOOLEAN_V;
... ... @@ -62,7 +62,7 @@ public class LwM2mTransportServerHelper {
62 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 66 TransportProtos.TsKvListProto tsKvList = toTsKvList(kvList, keyTsLatestMap);
67 67
68 68 PostTelemetryMsg postTelemetryMsg = PostTelemetryMsg.newBuilder()
... ... @@ -72,14 +72,14 @@ public class LwM2mTransportServerHelper {
72 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 76 return TransportProtos.TsKvListProto.newBuilder()
77 77 .setTs(getTs(kvList, keyTsLatestMap))
78 78 .addAllKv(kvList)
79 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 83 if (keyTsLatestMap == null || kvList == null || kvList.isEmpty()) {
84 84 return getCurrentTimeMillis();
85 85 }
... ... @@ -87,7 +87,7 @@ public class LwM2mTransportServerHelper {
87 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 91 AtomicLong tsLatestAtomic = keyTsLatestMap.putIfAbsent(key, new AtomicLong(tsNow));
92 92 if (tsLatestAtomic == null) {
93 93 return tsNow; // it is a first known timestamp for this key. return as the latest
... ...
... ... @@ -15,6 +15,7 @@
15 15 */
16 16 package org.thingsboard.server.transport.lwm2m.server;
17 17
  18 +import com.fasterxml.jackson.core.type.TypeReference;
18 19 import com.fasterxml.jackson.databind.ObjectMapper;
19 20 import lombok.extern.slf4j.Slf4j;
20 21 import org.apache.commons.lang3.StringUtils;
... ... @@ -31,6 +32,7 @@ import org.eclipse.leshan.core.request.SimpleDownlinkRequest;
31 32 import org.eclipse.leshan.core.request.WriteAttributesRequest;
32 33 import org.eclipse.leshan.core.util.Hex;
33 34 import org.eclipse.leshan.server.registration.Registration;
  35 +import org.thingsboard.common.util.JacksonUtil;
34 36 import org.thingsboard.server.common.data.DeviceProfile;
35 37 import org.thingsboard.server.common.data.DeviceTransportType;
36 38 import org.thingsboard.server.common.data.device.data.lwm2m.BootstrapConfiguration;
... ... @@ -286,8 +288,7 @@ public class LwM2mTransportUtil {
286 288
287 289 private static Attribute[] createWriteAttributes(Object params, DefaultLwM2MUplinkMsgHandler serviceImpl, String target) {
288 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 292 map.forEach((k, v) -> {
292 293 if (StringUtils.trimToNull(v.toString()) != null) {
293 294 Object attrValue = convertWriteAttributes(k, v, serviceImpl, target);
... ... @@ -374,6 +375,7 @@ public class LwM2mTransportUtil {
374 375 return lwm2mResourceValue;
375 376 }
376 377
  378 + @SuppressWarnings("unchecked")
377 379 public static Optional<String> contentToString(Object content) {
378 380 try {
379 381 String value = null;
... ...
... ... @@ -25,11 +25,11 @@ public interface HasVersionedIds {
25 25 String[] getVersionedIds();
26 26
27 27 default String[] getObjectIds() {
28   - Set objectIds = ConcurrentHashMap.newKeySet();
  28 + Set<String> objectIds = ConcurrentHashMap.newKeySet();
29 29 for (String versionedId : getVersionedIds()) {
30 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 18 import lombok.RequiredArgsConstructor;
19 19 import lombok.extern.slf4j.Slf4j;
20 20 import org.eclipse.leshan.core.ResponseCode;
  21 +import org.eclipse.leshan.core.request.ReadCompositeRequest;
  22 +import org.eclipse.leshan.core.response.ReadCompositeResponse;
21 23 import org.springframework.stereotype.Service;
22 24 import org.thingsboard.common.util.JacksonUtil;
23 25 import org.thingsboard.server.common.data.StringUtils;
... ... @@ -176,7 +178,7 @@ public class DefaultLwM2MRpcRequestHandler implements LwM2MRpcRequestHandler {
176 178 String[] versionedIds = getIdsFromParameters(client, requestMsg);
177 179 TbLwM2MReadCompositeRequest request = TbLwM2MReadCompositeRequest.builder().versionedIds(versionedIds).timeout(clientContext.getRequestTimeout(client)).build();
178 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 182 downlinkHandler.sendReadCompositeRequest(client, request, rpcCallback);
181 183 }
182 184
... ... @@ -292,14 +294,14 @@ public class DefaultLwM2MRpcRequestHandler implements LwM2MRpcRequestHandler {
292 294 private String[] getIdsFromParameters(LwM2mClient client, TransportProtos.ToDeviceRpcRequestMsg rpcRequst) {
293 295 RpcReadCompositeRequest requestParams = JacksonUtil.fromString(rpcRequst.getParams(), RpcReadCompositeRequest.class);
294 296 if (requestParams.getKeys() != null && requestParams.getKeys().length > 0) {
295   - Set targetIds = ConcurrentHashMap.newKeySet();
  297 + Set<String> targetIds = ConcurrentHashMap.newKeySet();
296 298 for (String key : requestParams.getKeys()) {
297 299 String targetId = clientContext.getObjectIdByKeyNameFromProfile(client, key);
298 300 if (targetId != null) {
299 301 targetIds.add(targetId);
300 302 }
301 303 }
302   - return (String[]) targetIds.toArray(String[]::new);
  304 + return targetIds.toArray(String[]::new);
303 305 } else if (requestParams.getIds() != null && requestParams.getIds().length > 0) {
304 306 return requestParams.getIds();
305 307 } else {
... ...
... ... @@ -20,7 +20,7 @@
20 20 <modelVersion>4.0.0</modelVersion>
21 21 <parent>
22 22 <groupId>org.thingsboard.common</groupId>
23   - <version>3.3.1-SNAPSHOT</version>
  23 + <version>3.3.2-SNAPSHOT</version>
24 24 <artifactId>transport</artifactId>
25 25 </parent>
26 26 <groupId>org.thingsboard.common.transport</groupId>
... ...
... ... @@ -20,7 +20,7 @@
20 20 <modelVersion>4.0.0</modelVersion>
21 21 <parent>
22 22 <groupId>org.thingsboard</groupId>
23   - <version>3.3.1-SNAPSHOT</version>
  23 + <version>3.3.2-SNAPSHOT</version>
24 24 <artifactId>common</artifactId>
25 25 </parent>
26 26 <groupId>org.thingsboard.common</groupId>
... ...
... ... @@ -21,7 +21,7 @@
21 21
22 22 <parent>
23 23 <groupId>org.thingsboard.common</groupId>
24   - <version>3.3.1-SNAPSHOT</version>
  24 + <version>3.3.2-SNAPSHOT</version>
25 25 <artifactId>transport</artifactId>
26 26 </parent>
27 27
... ...
... ... @@ -57,6 +57,7 @@ import java.util.Scanner;
57 57 import java.util.function.Consumer;
58 58 import java.util.stream.Collectors;
59 59
  60 +@SuppressWarnings("deprecation")
60 61 public class SnmpDeviceSimulatorV2 extends BaseAgent {
61 62
62 63 public static class RequestProcessor extends CommandProcessor {
... ... @@ -167,6 +168,7 @@ public class SnmpDeviceSimulatorV2 extends BaseAgent {
167 168 protected void addUsmUser(USM usm) {
168 169 }
169 170
  171 + @SuppressWarnings({"unchecked"})
170 172 protected void initTransportMappings() {
171 173 transportMappings = new TransportMapping[]{TransportMappings.getInstance().createTransportMapping(address)};
172 174 }
... ...
... ... @@ -86,6 +86,7 @@ import java.util.Map;
86 86 * And don't remove snmp users
87 87 *
88 88 */
  89 +@SuppressWarnings("deprecation")
89 90 public class SnmpDeviceSimulatorV3 extends BaseAgent {
90 91 protected String address;
91 92 private Snmp4jHeartbeatMib heartbeatMIB;
... ... @@ -458,6 +459,7 @@ public class SnmpDeviceSimulatorV3 extends BaseAgent {
458 459 this.usm = usm;
459 460 }
460 461
  462 + @SuppressWarnings({"unchecked", "rawtypes"})
461 463 private static DefaultMOTable createStaticIfXTable() {
462 464 MOTableSubIndex[] subIndexes =
463 465 new MOTableSubIndex[] { new MOTableSubIndex(SMIConstants.SYNTAX_INTEGER) };
... ... @@ -573,6 +575,7 @@ public class SnmpDeviceSimulatorV3 extends BaseAgent {
573 575 return ifXTable;
574 576 }
575 577
  578 + @SuppressWarnings({"unchecked", "rawtypes"})
576 579 private static DefaultMOTable createStaticIfTable() {
577 580 MOTableSubIndex[] subIndexes =
578 581 new MOTableSubIndex[] { new MOTableSubIndex(SMIConstants.SYNTAX_INTEGER) };
... ... @@ -632,54 +635,7 @@ public class SnmpDeviceSimulatorV3 extends BaseAgent {
632 635 ifTable.setVolatile(true);
633 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 639 protected void initTransportMappings() throws IOException {
684 640 transportMappings = new TransportMapping[2];
685 641 Address addr = GenericAddress.parse(address);
... ... @@ -715,10 +671,10 @@ public class SnmpDeviceSimulatorV3 extends BaseAgent {
715 671 new Integer32(StorageType.nonVolatile), // storage type
716 672 new Integer32(RowStatus.active) // row status
717 673 };
718   - MOTableRow row =
  674 + SnmpCommunityMIB.SnmpCommunityEntryRow row =
719 675 communityMIB.getSnmpCommunityEntry().createRow(
720 676 new OctetString("public2public").toSubIndex(true), com2sec);
721   - communityMIB.getSnmpCommunityEntry().addRow((SnmpCommunityMIB.SnmpCommunityEntryRow) row);
  677 + communityMIB.getSnmpCommunityEntry().addRow(row);
722 678 // snmpCommunityMIB.setSourceAddressFiltering(true);
723 679 }
724 680
... ... @@ -742,4 +698,4 @@ public class SnmpDeviceSimulatorV3 extends BaseAgent {
742 698 this.initSnmpSession();
743 699 }
744 700
745   -}
\ No newline at end of file
  701 +}
... ...
... ... @@ -20,7 +20,7 @@
20 20 <modelVersion>4.0.0</modelVersion>
21 21 <parent>
22 22 <groupId>org.thingsboard.common</groupId>
23   - <version>3.3.1-SNAPSHOT</version>
  23 + <version>3.3.2-SNAPSHOT</version>
24 24 <artifactId>transport</artifactId>
25 25 </parent>
26 26 <groupId>org.thingsboard.common.transport</groupId>
... ...
... ... @@ -20,7 +20,7 @@
20 20 <modelVersion>4.0.0</modelVersion>
21 21 <parent>
22 22 <groupId>org.thingsboard</groupId>
23   - <version>3.3.1-SNAPSHOT</version>
  23 + <version>3.3.2-SNAPSHOT</version>
24 24 <artifactId>common</artifactId>
25 25 </parent>
26 26 <groupId>org.thingsboard.common</groupId>
... ...
... ... @@ -20,7 +20,7 @@
20 20 <modelVersion>4.0.0</modelVersion>
21 21 <parent>
22 22 <groupId>org.thingsboard</groupId>
23   - <version>3.3.1-SNAPSHOT</version>
  23 + <version>3.3.2-SNAPSHOT</version>
24 24 <artifactId>thingsboard</artifactId>
25 25 </parent>
26 26 <artifactId>dao</artifactId>
... ...
... ... @@ -55,6 +55,14 @@ public interface DeviceDao extends Dao<Device>, TenantEntityDao {
55 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 66 * Find devices by tenantId and page link.
59 67 *
60 68 * @param tenantId the tenantId
... ...
... ... @@ -269,7 +269,7 @@ public class DeviceServiceImpl extends AbstractEntityService implements DeviceSe
269 269 }
270 270 device.setType(deviceProfile.getName());
271 271 device.setDeviceData(syncDeviceData(deviceProfile, device.getDeviceData()));
272   - return deviceDao.save(device.getTenantId(), device);
  272 + return deviceDao.saveAndFlush(device.getTenantId(), device);
273 273 } catch (Exception t) {
274 274 ConstraintViolationException e = extractConstraintViolationException(t).orElse(null);
275 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 38 import org.thingsboard.server.common.data.oauth2.PlatformType;
39 39 import org.thingsboard.server.common.data.oauth2.SchemeType;
40 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 41 import org.thingsboard.server.dao.entity.AbstractEntityService;
49 42 import org.thingsboard.server.dao.exception.DataValidationException;
50 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 45 import javax.transaction.Transactional;
55 46 import java.util.ArrayList;
... ... @@ -72,10 +63,6 @@ public class OAuth2ServiceImpl extends AbstractEntityService implements OAuth2Se
72 63 public static final String INCORRECT_DOMAIN_SCHEME = "Incorrect domainScheme ";
73 64
74 65 @Autowired
75   - private OAuth2ClientRegistrationInfoDao clientRegistrationInfoDao;
76   - @Autowired
77   - private OAuth2ClientRegistrationDao clientRegistrationDao;
78   - @Autowired
79 66 private OAuth2ParamsDao oauth2ParamsDao;
80 67 @Autowired
81 68 private OAuth2RegistrationDao oauth2RegistrationDao;
... ... @@ -104,27 +91,6 @@ public class OAuth2ServiceImpl extends AbstractEntityService implements OAuth2Se
104 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 94 @Override
129 95 @Transactional
130 96 public void saveOAuth2Info(OAuth2Info oauth2Info) {
... ... @@ -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 120 @Override
163 121 public OAuth2Info findOAuth2Info() {
164 122 log.trace("Executing findOAuth2Info");
... ... @@ -198,114 +156,6 @@ public class OAuth2ServiceImpl extends AbstractEntityService implements OAuth2Se
198 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 159 private final Consumer<OAuth2Info> oauth2InfoValidator = oauth2Info -> {
310 160 if (oauth2Info == null
311 161 || oauth2Info.getOauth2ParamsInfos() == null) {
... ...
... ... @@ -18,15 +18,7 @@ package org.thingsboard.server.dao.oauth2;
18 18 import org.thingsboard.server.common.data.BaseData;
19 19 import org.thingsboard.server.common.data.id.OAuth2ParamsId;
20 20 import org.thingsboard.server.common.data.id.TenantId;
21   -import org.thingsboard.server.common.data.id.deprecated.OAuth2ClientRegistrationInfoId;
22 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 23 import java.util.*;
32 24 import java.util.stream.Collectors;
... ... @@ -42,75 +34,6 @@ public class OAuth2Utils {
42 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 37 public static OAuth2ParamsInfo toOAuth2ParamsInfo(List<OAuth2Registration> registrations, List<OAuth2Domain> domains, List<OAuth2Mobile> mobiles) {
115 38 OAuth2ParamsInfo oauth2ParamsInfo = new OAuth2ParamsInfo();
116 39 oauth2ParamsInfo.setClientRegistrations(registrations.stream().sorted(Comparator.comparing(BaseData::getUuidId)).map(OAuth2Utils::toOAuth2RegistrationInfo).collect(Collectors.toList()));
... ... @@ -194,46 +117,4 @@ public class OAuth2Utils {
194 117 mobile.setAppSecret(mobileInfo.getAppSecret());
195 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 133 return getHashFunction(checksumAlgorithm).hashBytes(data.array()).toString();
134 134 }
135 135
  136 + @SuppressWarnings("deprecation")
136 137 private HashFunction getHashFunction(ChecksumAlgorithm checksumAlgorithm) {
137 138 switch (checksumAlgorithm) {
138 139 case MD5:
... ...
... ... @@ -17,6 +17,7 @@ package org.thingsboard.server.dao.sql.device;
17 17
18 18 import org.springframework.data.domain.Page;
19 19 import org.springframework.data.domain.Pageable;
  20 +import org.springframework.data.jpa.repository.JpaRepository;
20 21 import org.springframework.data.jpa.repository.Query;
21 22 import org.springframework.data.repository.PagingAndSortingRepository;
22 23 import org.springframework.data.repository.query.Param;
... ... @@ -30,7 +31,7 @@ import java.util.UUID;
30 31 /**
31 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 36 @Query("SELECT new org.thingsboard.server.dao.model.sql.DeviceInfoEntity(d, c.title, c.additionalInfo, p.name) " +
36 37 "FROM DeviceEntity d " +
... ...
... ... @@ -22,6 +22,7 @@ import org.springframework.data.domain.Page;
22 22 import org.springframework.data.domain.Pageable;
23 23 import org.springframework.data.repository.CrudRepository;
24 24 import org.springframework.stereotype.Component;
  25 +import org.springframework.transaction.annotation.Transactional;
25 26 import org.springframework.util.StringUtils;
26 27 import org.thingsboard.server.common.data.Device;
27 28 import org.thingsboard.server.common.data.DeviceInfo;
... ... @@ -72,6 +73,14 @@ public class JpaDeviceDao extends JpaAbstractSearchTextDao<DeviceEntity, Device>
72 73 }
73 74
74 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 84 public PageData<Device> findDevicesByTenantId(UUID tenantId, PageLink pageLink) {
76 85 if (StringUtils.isEmpty(pageLink.getTextSearch())) {
77 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 71 tenantProfileService.deleteTenantProfiles(anotherTenantId);
72 72 }
73 73
  74 + @SuppressWarnings("deprecation")
74 75 @Rule
75 76 public ExpectedException thrown = ExpectedException.none();
76 77
... ...
... ... @@ -77,6 +77,7 @@ public abstract class BaseOtaPackageServiceTest extends AbstractServiceTest {
77 77 deviceProfileId = savedDeviceProfile.getId();
78 78 }
79 79
  80 + @SuppressWarnings("deprecation")
80 81 @Rule
81 82 public ExpectedException thrown = ExpectedException.none();
82 83
... ...
... ... @@ -21,7 +21,7 @@
21 21
22 22 <parent>
23 23 <groupId>org.thingsboard</groupId>
24   - <version>3.3.1-SNAPSHOT</version>
  24 + <version>3.3.2-SNAPSHOT</version>
25 25 <artifactId>msa</artifactId>
26 26 </parent>
27 27 <groupId>org.thingsboard.msa</groupId>
... ...
1 1 {
2 2 "name": "thingsboard-js-executor",
3 3 "private": true,
4   - "version": "3.3.1",
  4 + "version": "3.3.2",
5 5 "description": "ThingsBoard JavaScript Executor Microservice",
6 6 "main": "server.js",
7 7 "bin": "server.js",
... ... @@ -39,9 +39,9 @@
39 39 ]
40 40 },
41 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 46 "pkg": {
47 47 "assets": [
... ...
... ... @@ -20,7 +20,7 @@
20 20 <modelVersion>4.0.0</modelVersion>
21 21 <parent>
22 22 <groupId>org.thingsboard</groupId>
23   - <version>3.3.1-SNAPSHOT</version>
  23 + <version>3.3.2-SNAPSHOT</version>
24 24 <artifactId>msa</artifactId>
25 25 </parent>
26 26 <groupId>org.thingsboard.msa</groupId>
... ...
... ... @@ -105,17 +105,24 @@
105 105 rhea-promise "^0.1.15"
106 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 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 127 "@dabh/diagnostics@^2.0.2":
121 128 version "2.0.2"
... ... @@ -462,6 +469,16 @@ ansi-align@^3.0.0:
462 469 dependencies:
463 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 482 ansi-regex@^4.1.0:
466 483 version "4.1.0"
467 484 resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997"
... ... @@ -488,6 +505,19 @@ anymatch@~3.1.1:
488 505 normalize-path "^3.0.0"
489 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 521 argparse@^1.0.7:
492 522 version "1.0.10"
493 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 633 resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1"
604 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 641 bcrypt-pbkdf@^1.0.0:
607 642 version "1.0.2"
608 643 resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e"
... ... @@ -629,6 +664,15 @@ bitsyntax@~0.1.0:
629 664 debug "~2.6.9"
630 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 676 bluebird@^3.5.2:
633 677 version "3.7.2"
634 678 resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f"
... ... @@ -706,10 +750,13 @@ buffer@^5.2.1:
706 750 base64-js "^1.0.2"
707 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 761 bytes@3.1.0:
715 762 version "3.1.0"
... ... @@ -747,6 +794,14 @@ chalk@^3.0.0:
747 794 ansi-styles "^4.1.0"
748 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 805 chokidar@^3.2.2:
751 806 version "3.4.2"
752 807 resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.4.2.tgz#38dc8e658dec3809741eb3ef7bb0a47fe424232d"
... ... @@ -762,6 +817,11 @@ chokidar@^3.2.2:
762 817 optionalDependencies:
763 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 825 ci-info@^2.0.0:
766 826 version "2.0.0"
767 827 resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46"
... ... @@ -781,6 +841,15 @@ cliui@^6.0.0:
781 841 strip-ansi "^6.0.0"
782 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 853 clone-response@^1.0.2:
785 854 version "1.0.2"
786 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 857 dependencies:
789 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 865 color-convert@^1.9.1:
792 866 version "1.9.3"
793 867 resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
... ... @@ -872,6 +946,11 @@ configstore@^5.0.1:
872 946 write-file-atomic "^3.0.0"
873 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 954 content-disposition@0.5.3:
876 955 version "0.5.3"
877 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 1028 dependencies:
950 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 1038 deep-extend@^0.6.0:
953 1039 version "0.6.0"
954 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 1055 resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
970 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 1063 depd@~1.1.2:
973 1064 version "1.1.2"
974 1065 resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9"
... ... @@ -979,6 +1070,11 @@ destroy@~1.0.4:
979 1070 resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80"
980 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 1078 dir-glob@^3.0.1:
983 1079 version "3.0.1"
984 1080 resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f"
... ... @@ -1053,7 +1149,7 @@ encodeurl@~1.0.2:
1053 1149 resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
1054 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 1153 version "1.4.4"
1058 1154 resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0"
1059 1155 integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==
... ... @@ -1065,6 +1161,11 @@ envconf@~0.0.4:
1065 1161 resolved "https://registry.yarnpkg.com/envconf/-/envconf-0.0.4.tgz#85675afba237c43f98de2d46adc0e532a4dcf48b"
1066 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 1169 escape-goat@^2.0.0:
1069 1170 version "2.1.1"
1070 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 1176 resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
1076 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 1183 dependencies:
1083 1184 esprima "^4.0.1"
1084   - estraverse "^4.2.0"
  1185 + estraverse "^5.2.0"
1085 1186 esutils "^2.0.2"
1086 1187 optionator "^0.8.1"
1087 1188 optionalDependencies:
... ... @@ -1092,10 +1193,10 @@ esprima@^4.0.0, esprima@^4.0.1:
1092 1193 resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
1093 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 1201 esutils@^2.0.2:
1101 1202 version "2.0.3"
... ... @@ -1308,30 +1409,54 @@ from2@^2.3.0:
1308 1409 inherits "^2.0.1"
1309 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 1421 dependencies:
1316 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 1430 dependencies:
1325 1431 at-least-node "^1.0.0"
1326 1432 graceful-fs "^4.2.0"
1327 1433 jsonfile "^6.0.1"
1328   - universalify "^1.0.0"
  1434 + universalify "^2.0.0"
1329 1435
1330 1436 fsevents@~2.1.2:
1331 1437 version "2.1.3"
1332 1438 resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e"
1333 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 1460 gaxios@^2.1.0:
1336 1461 version "2.3.4"
1337 1462 resolved "https://registry.yarnpkg.com/gaxios/-/gaxios-2.3.4.tgz#eea99353f341c270c5f3c29fc46b8ead56f0a173"
... ... @@ -1370,7 +1495,7 @@ gcp-metadata@^4.1.0:
1370 1495 gaxios "^3.0.0"
1371 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 1499 version "2.0.5"
1375 1500 resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e"
1376 1501 integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
... ... @@ -1396,6 +1521,11 @@ getpass@^0.1.1:
1396 1521 dependencies:
1397 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 1529 glob-parent@^5.1.0, glob-parent@~5.1.0:
1400 1530 version "5.1.1"
1401 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 1540 dependencies:
1411 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 1547 dependencies:
1418 1548 array-union "^2.1.0"
1419 1549 dir-glob "^3.0.1"
... ... @@ -1519,11 +1649,23 @@ has-flag@^4.0.0:
1519 1649 resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
1520 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 1657 has-yarn@^2.1.0:
1523 1658 version "2.1.0"
1524 1659 resolved "https://registry.yarnpkg.com/has-yarn/-/has-yarn-2.1.0.tgz#137e11354a7b5bf11aa5cb649cf0c6f3ff2b2e77"
1525 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 1669 http-cache-semantics@^4.0.0:
1528 1670 version "4.1.0"
1529 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 1722 resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84"
1581 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 1730 ignore-by-default@^1.0.1:
1584 1731 version "1.0.1"
1585 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 1752 resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
1606 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 1756 version "2.0.4"
1610 1757 resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
1611 1758 integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
... ... @@ -1615,10 +1762,10 @@ ini@^1.3.5, ini@~1.3.0:
1615 1762 resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927"
1616 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 1769 dependencies:
1623 1770 from2 "^2.3.0"
1624 1771 p-is-promise "^3.0.0"
... ... @@ -1652,11 +1799,25 @@ is-ci@^2.0.0:
1652 1799 dependencies:
1653 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 1809 is-extglob@^2.1.1:
1656 1810 version "2.1.1"
1657 1811 resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
1658 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 1821 is-fullwidth-code-point@^2.0.0:
1661 1822 version "2.0.0"
1662 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 1957 dependencies:
1797 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 1960 jsonfile@^6.0.1:
1807 1961 version "6.0.1"
1808 1962 resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.0.1.tgz#98966cba214378c8c84b82e085907b40bf614179"
... ... @@ -1903,6 +2057,11 @@ lodash.snakecase@^4.1.1:
1903 2057 resolved "https://registry.yarnpkg.com/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz#39d714a35357147837aefd64b5dcbb16becd8f8d"
1904 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 2065 logform@^2.2.0:
1907 2066 version "2.2.0"
1908 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 2169 resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b"
2011 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 2177 minimatch@^3.0.4:
2014 2178 version "3.0.4"
2015 2179 resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
... ... @@ -2017,17 +2181,15 @@ minimatch@^3.0.4:
2017 2181 dependencies:
2018 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 2185 version "1.2.5"
2022 2186 resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602"
2023 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 2194 moment@^2.11.2:
2033 2195 version "2.27.0"
... ... @@ -2054,33 +2216,50 @@ ms@^2.1.1:
2054 2216 resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
2055 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 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 2232 negotiator@0.6.2:
2066 2233 version "0.6.2"
2067 2234 resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb"
2068 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 2244 node-fetch@^2.3.0, node-fetch@^2.6.0:
2071 2245 version "2.6.0"
2072 2246 resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.0.tgz#e633456386d4aa55863f676a7ab0daa8fdecb0fd"
2073 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 2254 node-forge@^0.9.0:
2076 2255 version "0.9.1"
2077 2256 resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.9.1.tgz#775368e6846558ab6676858a4d8c6e8d16c677b5"
2078 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 2263 dependencies:
2085 2264 chokidar "^3.2.2"
2086 2265 debug "^3.2.6"
... ... @@ -2090,8 +2269,13 @@ nodemon@^2.0.4:
2090 2269 semver "^5.7.1"
2091 2270 supports-color "^5.5.0"
2092 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 2280 nopt@~1.0.10:
2097 2281 version "1.0.10"
... ... @@ -2110,11 +2294,31 @@ normalize-url@^4.1.0:
2110 2294 resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.0.tgz#453354087e6ca96957bd8f5baf753f5982142129"
2111 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 2312 oauth-sign@~0.9.0:
2114 2313 version "0.9.0"
2115 2314 resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455"
2116 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 2322 object-hash@^2.0.1:
2119 2323 version "2.0.3"
2120 2324 resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-2.0.3.tgz#d12db044e03cd2ca3d77c0570d87225b02e1e6ea"
... ... @@ -2153,11 +2357,6 @@ optionator@^0.8.1:
2153 2357 type-check "~0.3.2"
2154 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 2360 p-cancelable@^1.0.0:
2162 2361 version "1.1.0"
2163 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 2436 resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad"
2238 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 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 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 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 2468 progress "^2.0.3"
2273   - resolve "^1.15.1"
  2469 + resolve "^1.20.0"
2274 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 2494 prelude-ls@~1.1.2:
2277 2495 version "1.1.2"
... ... @@ -2395,7 +2613,7 @@ raw-body@2.4.0:
2395 2613 iconv-lite "0.4.24"
2396 2614 unpipe "1.0.0"
2397 2615
2398   -rc@^1.2.8:
  2616 +rc@^1.2.7, rc@^1.2.8:
2399 2617 version "1.2.8"
2400 2618 resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed"
2401 2619 integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==
... ... @@ -2415,7 +2633,7 @@ rc@^1.2.8:
2415 2633 isarray "0.0.1"
2416 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 2637 version "2.3.7"
2420 2638 resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57"
2421 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 2646 string_decoder "~1.1.1"
2429 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 2650 version "3.6.0"
2433 2651 resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198"
2434 2652 integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==
... ... @@ -2444,11 +2662,6 @@ readdirp@~3.4.0:
2444 2662 dependencies:
2445 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 2665 registry-auth-token@^4.0.0:
2453 2666 version "4.2.0"
2454 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 2676 dependencies:
2464 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 2680 version "2.88.2"
2475 2681 resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3"
2476 2682 integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==
... ... @@ -2511,11 +2717,12 @@ requires-port@^1.0.0:
2511 2717 resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff"
2512 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 2724 dependencies:
  2725 + is-core-module "^2.2.0"
2519 2726 path-parse "^1.0.6"
2520 2727
2521 2728 responselike@^1.0.2:
... ... @@ -2590,7 +2797,7 @@ semver-diff@^3.1.1:
2590 2797 dependencies:
2591 2798 semver "^6.3.0"
2592 2799
2593   -semver@^5.7.1:
  2800 +semver@^5.4.1, semver@^5.7.1:
2594 2801 version "5.7.1"
2595 2802 resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
2596 2803 integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
... ... @@ -2605,6 +2812,13 @@ semver@^7.1.3:
2605 2812 resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938"
2606 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 2822 send@0.17.1:
2609 2823 version "0.17.1"
2610 2824 resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8"
... ... @@ -2634,7 +2848,7 @@ serve-static@1.14.1:
2634 2848 parseurl "~1.3.3"
2635 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 2852 version "2.0.0"
2639 2853 resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
2640 2854 integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc=
... ... @@ -2644,11 +2858,25 @@ setprototypeof@1.1.1:
2644 2858 resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683"
2645 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 2862 version "3.0.3"
2649 2863 resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c"
2650 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 2880 simple-swizzle@^0.2.2:
2653 2881 version "0.2.2"
2654 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 2944 resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d"
2717 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 2964 string-width@^3.0.0:
2720 2965 version "3.1.0"
2721 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 2998 dependencies:
2754 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 3015 strip-ansi@^5.1.0:
2757 3016 version "5.2.0"
2758 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 3045 dependencies:
2787 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 3069 term-size@^2.1.0:
2790 3070 version "2.2.0"
2791 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 3076 resolved "https://registry.yarnpkg.com/text-hex/-/text-hex-1.0.0.tgz#69dc9c1b17446ee79a92bf5b884bb4b9127506f5"
2797 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 3079 through@~2.3.4:
2805 3080 version "2.3.8"
2806 3081 resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
2807 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 3089 to-readable-stream@^1.0.0:
2810 3090 version "1.0.0"
2811 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 3132 resolved "https://registry.yarnpkg.com/triple-beam/-/triple-beam-1.3.0.tgz#a595214c7298db8339eeeee083e4d10bd8cb8dd9"
2853 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 3140 tslib@^1.10.0, tslib@^1.9.3:
2856 3141 version "1.13.0"
2857 3142 resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.13.0.tgz#c881e13cc7015894ed914862d276436fa9a47043"
... ... @@ -2906,12 +3191,7 @@ typedarray-to-buffer@^3.1.5:
2906 3191 dependencies:
2907 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 3195 version "2.0.3"
2916 3196 resolved "https://registry.yarnpkg.com/undefsafe/-/undefsafe-2.0.3.tgz#6b166e7094ad46313b2202da7ecc2cd7cc6e7aae"
2917 3197 integrity sha512-nrXZwwXrD/T/JXeygJqdCO6NZZ1L66HrxM/Z7mIq2oPanoN0F1nLx3lwJMu6AwJY69hdixaFQOuoYsMjE5/C2A==
... ... @@ -2935,16 +3215,7 @@ unique-string@^2.0.0:
2935 3215 dependencies:
2936 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 3219 version "0.1.2"
2949 3220 resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66"
2950 3221 integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==
... ... @@ -2954,15 +3225,20 @@ universalify@^1.0.0:
2954 3225 resolved "https://registry.yarnpkg.com/universalify/-/universalify-1.0.0.tgz#b61a1da173e8435b2fe3c67d29b9adf8594bd16d"
2955 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 3233 unpipe@1.0.0, unpipe@~1.0.0:
2958 3234 version "1.0.0"
2959 3235 resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
2960 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 3242 dependencies:
2967 3243 boxen "^4.2.0"
2968 3244 chalk "^3.0.0"
... ... @@ -3087,6 +3363,18 @@ which-module@^2.0.0:
3087 3363 resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a"
3088 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 3378 widest-line@^3.1.0:
3091 3379 version "3.1.0"
3092 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 3434 string-width "^4.1.0"
3147 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 3446 wrappy@1:
3150 3447 version "1.0.2"
3151 3448 resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
... ... @@ -3202,6 +3499,11 @@ y18n@^4.0.0:
3202 3499 resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b"
3203 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 3507 yallist@^4.0.0:
3206 3508 version "4.0.0"
3207 3509 resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"
... ... @@ -3215,6 +3517,11 @@ yargs-parser@^18.1.2:
3215 3517 camelcase "^5.0.0"
3216 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 3525 yargs@^15.3.1:
3219 3526 version "15.4.1"
3220 3527 resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8"
... ... @@ -3231,3 +3538,16 @@ yargs@^15.3.1:
3231 3538 which-module "^2.0.0"
3232 3539 y18n "^4.0.0"
3233 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 20 <modelVersion>4.0.0</modelVersion>
21 21 <parent>
22 22 <groupId>org.thingsboard</groupId>
23   - <version>3.3.1-SNAPSHOT</version>
  23 + <version>3.3.2-SNAPSHOT</version>
24 24 <artifactId>thingsboard</artifactId>
25 25 </parent>
26 26 <artifactId>msa</artifactId>
... ...
... ... @@ -20,7 +20,7 @@
20 20 <modelVersion>4.0.0</modelVersion>
21 21 <parent>
22 22 <groupId>org.thingsboard</groupId>
23   - <version>3.3.1-SNAPSHOT</version>
  23 + <version>3.3.2-SNAPSHOT</version>
24 24 <artifactId>msa</artifactId>
25 25 </parent>
26 26 <groupId>org.thingsboard.msa</groupId>
... ...
... ... @@ -20,7 +20,7 @@
20 20 <modelVersion>4.0.0</modelVersion>
21 21 <parent>
22 22 <groupId>org.thingsboard</groupId>
23   - <version>3.3.1-SNAPSHOT</version>
  23 + <version>3.3.2-SNAPSHOT</version>
24 24 <artifactId>msa</artifactId>
25 25 </parent>
26 26 <groupId>org.thingsboard.msa</groupId>
... ...
... ... @@ -20,7 +20,7 @@
20 20 <modelVersion>4.0.0</modelVersion>
21 21 <parent>
22 22 <groupId>org.thingsboard.msa</groupId>
23   - <version>3.3.1-SNAPSHOT</version>
  23 + <version>3.3.2-SNAPSHOT</version>
24 24 <artifactId>transport</artifactId>
25 25 </parent>
26 26 <groupId>org.thingsboard.msa.transport</groupId>
... ...
... ... @@ -20,7 +20,7 @@
20 20 <modelVersion>4.0.0</modelVersion>
21 21 <parent>
22 22 <groupId>org.thingsboard.msa</groupId>
23   - <version>3.3.1-SNAPSHOT</version>
  23 + <version>3.3.2-SNAPSHOT</version>
24 24 <artifactId>transport</artifactId>
25 25 </parent>
26 26 <groupId>org.thingsboard.msa.transport</groupId>
... ...
... ... @@ -20,7 +20,7 @@
20 20 <modelVersion>4.0.0</modelVersion>
21 21 <parent>
22 22 <groupId>org.thingsboard.msa</groupId>
23   - <version>3.3.1-SNAPSHOT</version>
  23 + <version>3.3.2-SNAPSHOT</version>
24 24 <artifactId>transport</artifactId>
25 25 </parent>
26 26 <groupId>org.thingsboard.msa.transport</groupId>
... ...
... ... @@ -20,7 +20,7 @@
20 20 <modelVersion>4.0.0</modelVersion>
21 21 <parent>
22 22 <groupId>org.thingsboard.msa</groupId>
23   - <version>3.3.1-SNAPSHOT</version>
  23 + <version>3.3.2-SNAPSHOT</version>
24 24 <artifactId>transport</artifactId>
25 25 </parent>
26 26 <groupId>org.thingsboard.msa.transport</groupId>
... ...
... ... @@ -20,7 +20,7 @@
20 20 <modelVersion>4.0.0</modelVersion>
21 21 <parent>
22 22 <groupId>org.thingsboard</groupId>
23   - <version>3.3.1-SNAPSHOT</version>
  23 + <version>3.3.2-SNAPSHOT</version>
24 24 <artifactId>msa</artifactId>
25 25 </parent>
26 26 <groupId>org.thingsboard.msa</groupId>
... ...
... ... @@ -21,7 +21,7 @@
21 21 <parent>
22 22 <groupId>org.thingsboard.msa</groupId>
23 23 <artifactId>transport</artifactId>
24   - <version>3.3.1-SNAPSHOT</version>
  24 + <version>3.3.2-SNAPSHOT</version>
25 25 </parent>
26 26
27 27 <groupId>org.thingsboard.msa.transport</groupId>
... ...
1 1 {
2 2 "name": "thingsboard-web-ui",
3 3 "private": true,
4   - "version": "3.3.1",
  4 + "version": "3.3.2",
5 5 "description": "ThingsBoard Web UI Microservice",
6 6 "main": "server.js",
7 7 "bin": "server.js",
... ... @@ -34,9 +34,9 @@
34 34 ]
35 35 },
36 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 41 "pkg": {
42 42 "assets": [
... ...
... ... @@ -20,7 +20,7 @@
20 20 <modelVersion>4.0.0</modelVersion>
21 21 <parent>
22 22 <groupId>org.thingsboard</groupId>
23   - <version>3.3.1-SNAPSHOT</version>
  23 + <version>3.3.2-SNAPSHOT</version>
24 24 <artifactId>msa</artifactId>
25 25 </parent>
26 26 <groupId>org.thingsboard.msa</groupId>
... ...