diff --git a/application/src/test/java/org/thingsboard/server/transport/mqtt/mqttv5/rpc/MqttV5CloseTransportSessionOnRpcDeliveryTimeoutIntegrationTest.java b/application/src/test/java/org/thingsboard/server/transport/mqtt/mqttv5/rpc/MqttV5CloseTransportSessionOnRpcDeliveryTimeoutIntegrationTest.java
index 23aa5133c5..1c9aa40a40 100644
--- a/application/src/test/java/org/thingsboard/server/transport/mqtt/mqttv5/rpc/MqttV5CloseTransportSessionOnRpcDeliveryTimeoutIntegrationTest.java
+++ b/application/src/test/java/org/thingsboard/server/transport/mqtt/mqttv5/rpc/MqttV5CloseTransportSessionOnRpcDeliveryTimeoutIntegrationTest.java
@@ -42,6 +42,7 @@ import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
import static org.assertj.core.api.Assertions.assertThat;
+import static org.awaitility.Awaitility.await;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
import static org.thingsboard.server.common.data.device.profile.MqttTopics.DEVICE_RPC_REQUESTS_SUB_TOPIC;
@@ -97,7 +98,13 @@ public class MqttV5CloseTransportSessionOnRpcDeliveryTimeoutIntegrationTest exte
callback.getDisconnectLatch().await(DEFAULT_WAIT_TIMEOUT_SECONDS, TimeUnit.SECONDS);
assertThat(callback.getReturnCode()).isEqualTo(MqttReturnCode.RETURN_CODE_ADMINISTRITIVE_ACTION);
- Rpc persistedRpc = doGet("/api/rpc/persistent/" + response.get("rpcId").asText(), Rpc.class);
+ // The server re-queues the RPC asynchronously after closing the session.
+ // Poll until the status transitions from SENT to QUEUED.
+ String rpcId = response.get("rpcId").asText();
+ Rpc persistedRpc = await("RPC re-queued after session close")
+ .atMost(DEFAULT_WAIT_TIMEOUT_SECONDS, TimeUnit.SECONDS)
+ .until(() -> doGet("/api/rpc/persistent/" + rpcId, Rpc.class),
+ rpc -> RpcStatus.QUEUED.equals(rpc.getStatus()));
assertThat(persistedRpc).isNotNull();
assertThat(persistedRpc.getStatus()).isEqualTo(RpcStatus.QUEUED);
assertThat(persistedRpc.getResponse()).isInstanceOf(NullNode.class);
diff --git a/msa/js-executor/package.json b/msa/js-executor/package.json
index 8f1a7c3d98..413f531a36 100644
--- a/msa/js-executor/package.json
+++ b/msa/js-executor/package.json
@@ -39,7 +39,7 @@
"fs-extra": "^11.3.1",
"nodemon": "^3.1.10",
"ts-node": "^10.9.2",
- "typescript": "5.9.2"
+ "typescript": "~5.9.3"
},
"resolutions": {
"@yao-pkg/pkg/tar": ">=7.5.8"
diff --git a/msa/js-executor/pom.xml b/msa/js-executor/pom.xml
index e4c13f0e9a..da80d36bf3 100644
--- a/msa/js-executor/pom.xml
+++ b/msa/js-executor/pom.xml
@@ -81,7 +81,7 @@
yarn
- install --non-interactive --network-concurrency 4 --network-timeout 100000 --mutex network
+ install --non-interactive --check-files --network-concurrency 4 --network-timeout 100000 --mutex network
@@ -96,6 +96,17 @@
+
+ org.apache.maven.plugins
+ maven-clean-plugin
+
+
+
+ ${basedir}/node_modules
+
+
+
+
org.apache.maven.plugins
maven-dependency-plugin
diff --git a/msa/js-executor/yarn.lock b/msa/js-executor/yarn.lock
index 4d80300b56..6457be1de7 100644
--- a/msa/js-executor/yarn.lock
+++ b/msa/js-executor/yarn.lock
@@ -1634,10 +1634,10 @@ type-is@^2.0.0, type-is@^2.0.1:
media-typer "^1.1.0"
mime-types "^3.0.0"
-typescript@5.9.2:
- version "5.9.2"
- resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.9.2.tgz#d93450cddec5154a2d5cabe3b8102b83316fb2a6"
- integrity sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==
+typescript@~5.9.3:
+ version "5.9.3"
+ resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.9.3.tgz#5b4f59e15310ab17a216f5d6cf53ee476ede670f"
+ integrity sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==
undefsafe@^2.0.5:
version "2.0.5"
diff --git a/msa/web-ui/package.json b/msa/web-ui/package.json
index eee6e0577d..227262ab14 100644
--- a/msa/web-ui/package.json
+++ b/msa/web-ui/package.json
@@ -42,7 +42,7 @@
"fs-extra": "^11.3.1",
"nodemon": "^3.1.10",
"ts-node": "^10.9.2",
- "typescript": "5.9.2"
+ "typescript": "~5.9.3"
},
"resolutions": {
"@yao-pkg/pkg/tar": ">=7.5.8"
diff --git a/msa/web-ui/pom.xml b/msa/web-ui/pom.xml
index 3cdf69beca..20c9477b58 100644
--- a/msa/web-ui/pom.xml
+++ b/msa/web-ui/pom.xml
@@ -90,7 +90,7 @@
yarn
- install --non-interactive --network-concurrency 4 --network-timeout 100000 --mutex network
+ install --non-interactive --check-files --network-concurrency 4 --network-timeout 100000 --mutex network
@@ -105,6 +105,17 @@
+
+ org.apache.maven.plugins
+ maven-clean-plugin
+
+
+
+ ${basedir}/node_modules
+
+
+
+
org.apache.maven.plugins
maven-dependency-plugin
diff --git a/msa/web-ui/yarn.lock b/msa/web-ui/yarn.lock
index 456abcc488..11a708d8bf 100644
--- a/msa/web-ui/yarn.lock
+++ b/msa/web-ui/yarn.lock
@@ -1716,10 +1716,10 @@ type-is@^2.0.0, type-is@^2.0.1:
media-typer "^1.1.0"
mime-types "^3.0.0"
-typescript@5.9.2:
- version "5.9.2"
- resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.9.2.tgz#d93450cddec5154a2d5cabe3b8102b83316fb2a6"
- integrity sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==
+typescript@~5.9.3:
+ version "5.9.3"
+ resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.9.3.tgz#5b4f59e15310ab17a216f5d6cf53ee476ede670f"
+ integrity sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==
undefsafe@^2.0.5:
version "2.0.5"
diff --git a/ui-ngx/pom.xml b/ui-ngx/pom.xml
index 56108e7153..88d4f0ad08 100644
--- a/ui-ngx/pom.xml
+++ b/ui-ngx/pom.xml
@@ -66,11 +66,22 @@
yarn
- install --non-interactive --network-concurrency 4 --network-timeout 100000 --mutex network
+ install --non-interactive --check-files --network-concurrency 4 --network-timeout 100000 --mutex network
+
+ org.apache.maven.plugins
+ maven-clean-plugin
+
+
+
+ ${basedir}/node_modules
+
+
+
+
diff --git a/ui-ngx/src/app/core/services/resources.service.ts b/ui-ngx/src/app/core/services/resources.service.ts
index 2929de8b6c..93b1b616b9 100644
--- a/ui-ngx/src/app/core/services/resources.service.ts
+++ b/ui-ngx/src/app/core/services/resources.service.ts
@@ -24,7 +24,9 @@ import {
ɵCssSelectorList,
ɵNG_COMP_DEF,
ɵNG_MOD_DEF,
+ ɵNG_PIPE_DEF,
ɵNgModuleDef,
+ ɵPipeDef,
DOCUMENT
} from '@angular/core';
@@ -302,6 +304,12 @@ export class ResourcesService {
(component as any).standalone = false;
}
}
+ if (ɵNG_PIPE_DEF in decl) {
+ const pipe: ɵPipeDef = decl[ɵNG_PIPE_DEF];
+ if (isUndefined(pipe.standalone) || pipe.standalone) {
+ (pipe as any).standalone = false;
+ }
+ }
}
}
modulesWithComponents.modules.push(moduleInfo);