Merge remote-tracking branch 'origin/release-7.7.4' [no-ci]

pull/36280/head^2
Guilherme Gazzo 6 months ago
commit 54e2bc45aa
  1. 4
      .github/workflows/ci.yml
  2. 122
      apps/meteor/CHANGELOG.md
  3. 2
      apps/meteor/app/livechat/server/lib/departmentsLib.ts
  4. 8
      apps/meteor/client/views/omnichannel/departments/utils/formatAgentListPayload.ts
  5. 46
      apps/meteor/ee/server/services/CHANGELOG.md
  6. 2
      apps/meteor/ee/server/services/package.json
  7. 63
      apps/meteor/server/services/omnichannel/queue.ts
  8. 24
      apps/meteor/tests/end-to-end/api/livechat/10-departments.ts
  9. 43
      apps/uikit-playground/CHANGELOG.md
  10. 2
      apps/uikit-playground/package.json
  11. 46
      ee/apps/account-service/CHANGELOG.md
  12. 2
      ee/apps/account-service/package.json
  13. 44
      ee/apps/authorization-service/CHANGELOG.md
  14. 2
      ee/apps/authorization-service/package.json
  15. 49
      ee/apps/ddp-streamer/CHANGELOG.md
  16. 2
      ee/apps/ddp-streamer/package.json
  17. 36
      ee/apps/ddp-streamer/src/service.ts
  18. 50
      ee/apps/omnichannel-transcript/CHANGELOG.md
  19. 2
      ee/apps/omnichannel-transcript/package.json
  20. 44
      ee/apps/presence-service/CHANGELOG.md
  21. 2
      ee/apps/presence-service/package.json
  22. 45
      ee/apps/queue-worker/CHANGELOG.md
  23. 2
      ee/apps/queue-worker/package.json
  24. 41
      ee/apps/stream-hub-service/CHANGELOG.md
  25. 2
      ee/apps/stream-hub-service/package.json
  26. 29
      ee/packages/license/CHANGELOG.md
  27. 2
      ee/packages/license/__tests__/setLicense.spec.ts
  28. 2
      ee/packages/license/package.json
  29. 29
      ee/packages/network-broker/CHANGELOG.md
  30. 2
      ee/packages/network-broker/package.json
  31. 64
      ee/packages/omnichannel-services/CHANGELOG.md
  32. 2
      ee/packages/omnichannel-services/package.json
  33. 29
      ee/packages/pdf-worker/CHANGELOG.md
  34. 2
      ee/packages/pdf-worker/package.json
  35. 51
      ee/packages/presence/CHANGELOG.md
  36. 2
      ee/packages/presence/package.json
  37. 34
      packages/api-client/CHANGELOG.md
  38. 2
      packages/api-client/package.json
  39. 6
      packages/apps-engine/CHANGELOG.md
  40. 14
      packages/apps-engine/deno-runtime/lib/accessors/formatResponseErrorHandler.ts
  41. 17
      packages/apps-engine/deno-runtime/lib/accessors/http.ts
  42. 43
      packages/apps-engine/deno-runtime/lib/accessors/mod.ts
  43. 107
      packages/apps-engine/deno-runtime/lib/accessors/modify/ModifyCreator.ts
  44. 13
      packages/apps-engine/deno-runtime/lib/accessors/modify/ModifyExtender.ts
  45. 53
      packages/apps-engine/deno-runtime/lib/accessors/modify/ModifyUpdater.ts
  46. 11
      packages/apps-engine/deno-runtime/lib/accessors/notifier.ts
  47. 8
      packages/apps-engine/deno-runtime/lib/accessors/tests/ModifyCreator.test.ts
  48. 126
      packages/apps-engine/deno-runtime/lib/accessors/tests/ModifyExtender.test.ts
  49. 115
      packages/apps-engine/deno-runtime/lib/accessors/tests/ModifyUpdater.test.ts
  50. 216
      packages/apps-engine/deno-runtime/lib/accessors/tests/formatResponseErrorHandler.test.ts
  51. 164
      packages/apps-engine/deno-runtime/lib/accessors/tests/http.test.ts
  52. 8
      packages/apps-engine/deno-runtime/lib/roomFactory.ts
  53. 33
      packages/apps/CHANGELOG.md
  54. 2
      packages/apps/package.json
  55. 35
      packages/core-services/CHANGELOG.md
  56. 2
      packages/core-services/package.json
  57. 6
      packages/core-typings/CHANGELOG.md
  58. 34
      packages/cron/CHANGELOG.md
  59. 2
      packages/cron/package.json
  60. 35
      packages/ddp-client/CHANGELOG.md
  61. 2
      packages/ddp-client/package.json
  62. 33
      packages/freeswitch/CHANGELOG.md
  63. 2
      packages/freeswitch/package.json
  64. 42
      packages/fuselage-ui-kit/CHANGELOG.md
  65. 33
      packages/gazzodown/CHANGELOG.md
  66. 29
      packages/instance-status/CHANGELOG.md
  67. 2
      packages/instance-status/package.json
  68. 29
      packages/livechat/CHANGELOG.md
  69. 31
      packages/mock-providers/CHANGELOG.md
  70. 2
      packages/mock-providers/package.json
  71. 29
      packages/model-typings/CHANGELOG.md
  72. 2
      packages/model-typings/package.json
  73. 32
      packages/models/CHANGELOG.md
  74. 2
      packages/models/package.json
  75. 1
      packages/models/src/models/AppLogsModel.ts
  76. 29
      packages/rest-typings/CHANGELOG.md
  77. 4
      packages/rest-typings/src/v1/omnichannel.ts
  78. 29
      packages/ui-avatar/CHANGELOG.md
  79. 31
      packages/ui-client/CHANGELOG.md
  80. 35
      packages/ui-contexts/CHANGELOG.md
  81. 32
      packages/ui-video-conf/CHANGELOG.md
  82. 46
      packages/ui-voip/CHANGELOG.md
  83. 27
      packages/web-ui-registration/CHANGELOG.md

@ -36,8 +36,8 @@ jobs:
deno-version: ${{ steps.var.outputs.deno-version }}
official-platform: 'alpine'
# this is 100% intentional, secrets are not available for forks, so ee-tests will always fail
# to avoid this, we are using a dummy license, expiring at 2025-06-31
enterprise-license: X/XumwIkgwQuld0alWKt37lVA90XjKOrfiMvMZ0/RtqsMtrdL9GoAk+4jXnaY1b2ePoG7XSzGhuxEDxFKIWJK3hIKGNTvrd980LgH5sM5+1T4P42ivSpd8UZi0bwjJkCFLIu9RozzYwslGG0IehMxe0S6VjcO0UYlUJtbMCBHuR2WmTAmO6YVU3ln+pZCbrPFaTPSS1RovhKaNCNkZwIx/CLWW8UTXUuFV/ML4PbKKVoa5nvvJwPeatgL7UCnlSD90lfCiiuikpzj/Y/JLkIL6velFbwNxsrxg9iRJ2k0sKheMMSmlTiGzSvZUm+na5WQq91aKGncih+DmaEZA7QGrjp4eoA0dqTk6OmItsy0fHmQhvZIOKNMeO7vNQiLbaSV6rqibrzu7WPpeIvsvL57T1h37USoCSB6+jDqkzdfoqIpz8BxTiJDj1d8xGPJFVrgxoqQqkj9qIP/gCaEz5DF39QFv5sovk4yK2O8fEQYod2d14V9yECYl4szZPMk1IBfCAC2w7czWGHHFonhL+CQGT403y5wmDmnsnjlCqMKF72odqfTPTI8XnCvJDriPMWohnQEAGtTTyciAhNokx/mjAVJ4NeZPcsbm4BjhvJvnjxx/BhYhBBTNWPaCSZzocfrGUj9Z+ZA7BEz+xAFQyGDx3xRzqIXfT0G7w8fvgYJMU=
# to avoid this, we are using a dummy license, expiring at 2026-07-01
enterprise-license: Uo7Jcr6WW0XYA8ydHd+Sk6pZ9/0V6dIASnyTwvUrNym/zJg2Ma3eYNKkC8osXLCc72y1ahohnWY7/+7IYkvono3GYXQR+IGvYbbrVgNR6OjMahd9P/odHZL1GFTm2qHrEL5Hh/XEOG+YluFeRdWPzCizQlp4zGGOi0+PkQo096TR9NVCLrsErVl2MW1WM6ZM1W5EUJG9pKly4BQnaOTUAlor1im6i8qPTDCKrISZfLiZEWuQKaPW/GE3mRKjQNjDh0CabX1N2S880pRRGoozBYAnp2NmFfrQW0+5ihKisBTIeMbMZ7K5NE5PkYU1nhQDcc+rpDHtwG9Ceg5X0J+oea3UfrPTmDON2aSI0iO22kvL6G7QI3fyrEIvJrMbxcNKxAFeQYgnjisw/b06+chWSG4jG686Fx58XrVS87dFhWL9WoGltsk1dJCntUQvI1sX6zOfpvyg1iWRnHfYDOrwoWlX57XMm29fWineEoqnOOTOVnA/uP+DKEhercQ9Xuo7Cr6zJxpQpwd03e7ODVjiEbTDqlkZE687rmxRCD4Wmu8L86WIl2xSEIajKLX301Ww5mz/FdLqk+Mg32lkW66W3azQKvJ1440NBrYxhpJ+dl9vSFMb3s1+xnz1cYUbjUcq9mARvORcgy5mLwKulmqT6Sq0Uvbv10YCO0TW0beXYW8=
steps:
- uses: actions/checkout@v4
with:

@ -2,10 +2,6 @@
## 7.8.0-rc.1
### Patch Changes
- Bump @rocket.chat/meteor version.
- ([#36263](https://github.com/RocketChat/Rocket.Chat/pull/36263)) Fixes an issue, where multiple reconnections would subscribe multiple times to the same stream, only a frontend issue, since the stream cache prevents sending multiple times to the backend, but does not prevent running the callback multiple times
- <details><summary>Updated dependencies []:</summary>
@ -137,9 +133,127 @@
- @rocket.chat/ui-client@20.0.0-rc.0
- @rocket.chat/ui-video-conf@20.0.0-rc.0
- @rocket.chat/ui-voip@10.0.0-rc.0
### Patch Changes
- Bump @rocket.chat/meteor version.
- @rocket.chat/server-cloud-communication@0.0.2
</details>
## 7.7.4
- ([#36360](https://github.com/RocketChat/Rocket.Chat/pull/36360) by [@dionisio-bot](https://github.com/dionisio-bot)) Fixes an issue where some error objects sent to apps' method calls would only contain the message '[object Object]'
- <details><summary>Updated dependencies [46662d78192b438914b2aedb974faa2367225fa5]:</summary>
- @rocket.chat/apps-engine@1.52.1
- @rocket.chat/presence@0.2.28
- @rocket.chat/apps@0.5.7
- @rocket.chat/core-services@0.9.7
- @rocket.chat/core-typings@7.7.4
- @rocket.chat/fuselage-ui-kit@19.0.4
- @rocket.chat/rest-typings@7.7.4
- @rocket.chat/license@1.0.19
- @rocket.chat/omnichannel-services@0.3.25
- @rocket.chat/pdf-worker@0.3.7
- @rocket.chat/api-client@0.2.28
- @rocket.chat/cron@0.1.28
- @rocket.chat/freeswitch@1.2.15
- @rocket.chat/gazzodown@19.0.4
- @rocket.chat/model-typings@1.6.7
- @rocket.chat/ui-contexts@19.0.4
- @rocket.chat/models@1.5.7
- @rocket.chat/server-cloud-communication@0.0.2
- @rocket.chat/network-broker@0.2.7
- @rocket.chat/ui-theming@0.4.3
- @rocket.chat/ui-avatar@15.0.4
- @rocket.chat/ui-client@19.0.4
- @rocket.chat/ui-video-conf@19.0.4
- @rocket.chat/ui-voip@9.0.4
- @rocket.chat/web-ui-registration@19.0.4
- @rocket.chat/instance-status@0.1.28
</details>
## 7.7.3
### Patch Changes
- Bump @rocket.chat/meteor version.
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/core-typings@7.7.3
- @rocket.chat/rest-typings@7.7.3
- @rocket.chat/license@1.0.18
- @rocket.chat/omnichannel-services@0.3.24
- @rocket.chat/pdf-worker@0.3.6
- @rocket.chat/presence@0.2.27
- @rocket.chat/api-client@0.2.27
- @rocket.chat/apps@0.5.6
- @rocket.chat/core-services@0.9.6
- @rocket.chat/cron@0.1.27
- @rocket.chat/freeswitch@1.2.14
- @rocket.chat/fuselage-ui-kit@19.0.3
- @rocket.chat/gazzodown@19.0.3
- @rocket.chat/model-typings@1.6.6
- @rocket.chat/ui-contexts@19.0.3
- @rocket.chat/models@1.5.6
- @rocket.chat/server-cloud-communication@0.0.2
- @rocket.chat/network-broker@0.2.6
- @rocket.chat/ui-theming@0.4.3
- @rocket.chat/ui-avatar@15.0.3
- @rocket.chat/ui-client@19.0.3
- @rocket.chat/ui-video-conf@19.0.3
- @rocket.chat/ui-voip@9.0.3
- @rocket.chat/web-ui-registration@19.0.3
- @rocket.chat/instance-status@0.1.27
</details>
## 7.7.2
### Patch Changes
- Bump @rocket.chat/meteor version.
- Bump @rocket.chat/meteor version.
- ([#36323](https://github.com/RocketChat/Rocket.Chat/pull/36323) by [@dionisio-bot](https://github.com/dionisio-bot)) Fixes an issue that was causing ddp-streamer process to break if the communication with presence service was interrupted for any reason.
- ([#36250](https://github.com/RocketChat/Rocket.Chat/pull/36250) by [@dionisio-bot](https://github.com/dionisio-bot)) fix: Security Hotfix (https://docs.rocket.chat/docs/security-fixes-and-updates)
- ([#36270](https://github.com/RocketChat/Rocket.Chat/pull/36270) by [@dionisio-bot](https://github.com/dionisio-bot)) Fixes an issue that caused the queue worker to stop processing if something failed when checking MAC limits or while fetching the list of queues
- ([#36298](https://github.com/RocketChat/Rocket.Chat/pull/36298) by [@dionisio-bot](https://github.com/dionisio-bot)) Fixes an issue that prevented the action of removing an agent when editing a department to work.
- <details><summary>Updated dependencies [8874a5aab72c962f213d128a54393d95f7dabef8]:</summary>
- @rocket.chat/rest-typings@7.7.2
- @rocket.chat/omnichannel-services@0.3.23
- @rocket.chat/presence@0.2.26
- @rocket.chat/api-client@0.2.26
- @rocket.chat/core-services@0.9.5
- @rocket.chat/models@1.5.5
- @rocket.chat/ui-contexts@19.0.2
- @rocket.chat/network-broker@0.2.5
- @rocket.chat/cron@0.1.26
- @rocket.chat/instance-status@0.1.26
- @rocket.chat/ui-theming@0.4.3
- @rocket.chat/fuselage-ui-kit@19.0.2
- @rocket.chat/gazzodown@19.0.2
- @rocket.chat/ui-avatar@15.0.2
- @rocket.chat/ui-client@19.0.2
- @rocket.chat/ui-video-conf@19.0.2
- @rocket.chat/ui-voip@9.0.2
- @rocket.chat/web-ui-registration@19.0.2
- @rocket.chat/core-typings@7.7.2
- @rocket.chat/license@1.0.17
- @rocket.chat/pdf-worker@0.3.5
- @rocket.chat/apps@0.5.5
- @rocket.chat/freeswitch@1.2.13
- @rocket.chat/model-typings@1.6.5
- @rocket.chat/server-cloud-communication@0.0.2
</details>
## 7.7.1
### Patch Changes

@ -185,7 +185,7 @@ export async function saveDepartmentAgents(
departmentAgents: {
upsert?: (Pick<ILivechatDepartmentAgents, 'agentId' | 'username'> & {
count?: number;
sort?: number;
order?: number;
})[];
remove?: Pick<ILivechatDepartmentAgents, 'agentId' | 'username'>[];
},

@ -1,20 +1,20 @@
import type { IDepartmentAgent } from '../definitions';
export const formatAgentListPayload = (oldAgentList: IDepartmentAgent[], newAgentList: IDepartmentAgent[]) => {
const upsert: IDepartmentAgent[] = [];
const remove: IDepartmentAgent[] = [];
const upsert: Pick<IDepartmentAgent, 'agentId' | 'username' | 'count' | 'order'>[] = [];
const remove: Pick<IDepartmentAgent, 'agentId' | 'username'>[] = [];
for (const agent of newAgentList) {
const initialAgent = agent._id ? oldAgentList.find((initialAgent) => initialAgent._id === agent._id) : undefined;
if (!initialAgent || agent.count !== initialAgent.count || agent.order !== initialAgent.order) {
upsert.push(agent);
upsert.push({ agentId: agent.agentId, username: agent.username, count: agent.count, order: agent.order });
}
}
for (const initialAgent of oldAgentList) {
if (!newAgentList.some((agent) => initialAgent._id === agent._id)) {
remove.push(initialAgent);
remove.push({ agentId: initialAgent.agentId, username: initialAgent.username });
}
}

@ -1,11 +1,10 @@
# rocketchat-services
## 2.0.17-rc.1
## 2.0.20-rc.1
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/core-typings@7.8.0-rc.1
- @rocket.chat/rest-typings@7.8.0-rc.1
- @rocket.chat/core-services@0.9.5-rc.1
@ -27,8 +26,51 @@
- @rocket.chat/core-typings@7.8.0-rc.0
- @rocket.chat/core-services@0.9.5-rc.0
- @rocket.chat/network-broker@0.2.5-rc.0
</details>
## 2.0.19
### Patch Changes
- <details><summary>Updated dependencies [46662d78192b438914b2aedb974faa2367225fa5]:</summary>
- @rocket.chat/apps-engine@1.52.1
- @rocket.chat/core-services@0.9.7
- @rocket.chat/core-typings@7.7.4
- @rocket.chat/rest-typings@7.7.4
- @rocket.chat/model-typings@1.6.7
- @rocket.chat/models@1.5.7
- @rocket.chat/network-broker@0.2.7
</details>
## 2.0.18
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/core-typings@7.7.3
- @rocket.chat/rest-typings@7.7.3
- @rocket.chat/core-services@0.9.6
- @rocket.chat/model-typings@1.6.6
- @rocket.chat/models@1.5.6
- @rocket.chat/network-broker@0.2.6
</details>
## 2.0.17
### Patch Changes
- <details><summary>Updated dependencies [8874a5aab72c962f213d128a54393d95f7dabef8]:</summary>
- @rocket.chat/rest-typings@7.7.2
- @rocket.chat/core-services@0.9.5
- @rocket.chat/models@1.5.5
- @rocket.chat/network-broker@0.2.5
- @rocket.chat/core-typings@7.7.2
- @rocket.chat/model-typings@1.6.5
</details>
## 2.0.16
### Patch Changes

@ -1,7 +1,7 @@
{
"name": "rocketchat-services",
"private": true,
"version": "2.0.17-rc.1",
"version": "2.0.20-rc.1",
"description": "Rocket.Chat Authorization service",
"main": "index.js",
"scripts": {

@ -27,6 +27,8 @@ export class OmnichannelQueue implements IOmnichannelQueue {
private running = false;
private errorDelay = 10 * 1000; // 10 seconds
private delay() {
const timeout = settings.get<number>('Omnichannel_queue_delay_timeout') ?? 5;
return timeout < 1 ? DEFAULT_RACE_TIMEOUT : timeout * 1000;
@ -79,28 +81,38 @@ export class OmnichannelQueue implements IOmnichannelQueue {
}
private async execute() {
if (!this.running) {
queueLogger.debug('Queue stopped. Cannot execute');
return;
}
try {
if (!this.running) {
queueLogger.debug('Queue stopped. Cannot execute');
return;
}
if (await License.shouldPreventAction('monthlyActiveContacts', 1)) {
queueLogger.debug('MAC limit reached. Queue wont execute');
this.running = false;
return;
}
if (await License.shouldPreventAction('monthlyActiveContacts', 1)) {
queueLogger.debug('MAC limit reached. Queue wont execute');
this.running = false;
return;
}
// We still go 1 by 1, but we go with every queue every cycle instead of just 1 queue per cycle
// And we get tracing :)
const queues = await this.getActiveQueues();
for await (const queue of queues) {
await tracerSpan(
'omnichannel.queue',
{ attributes: { workerTime: new Date().toISOString(), queue: queue || 'Public' }, root: true },
() => this.checkQueue(queue),
);
}
// We still go 1 by 1, but we go with every queue every cycle instead of just 1 queue per cycle
// And we get tracing :)
const queues = await this.getActiveQueues();
for await (const queue of queues) {
await tracerSpan(
'omnichannel.queue',
{ attributes: { workerTime: new Date().toISOString(), queue: queue || 'Public' }, root: true },
() => this.checkQueue(queue),
);
this.scheduleExecution();
} catch (e) {
queueLogger.error({
msg: 'Queue Worker Error. Rescheduling with extra delay',
extraDelay: this.errorDelay,
err: e,
});
this.scheduleExecution(this.errorDelay);
}
this.scheduleExecution();
}
private async checkQueue(queue: string | null) {
@ -136,15 +148,18 @@ export class OmnichannelQueue implements IOmnichannelQueue {
}
}
private scheduleExecution(): void {
private scheduleExecution(extraDelay?: number): void {
if (this.timeoutHandler !== null) {
return;
}
this.timeoutHandler = setTimeout(() => {
this.timeoutHandler = null;
return this.execute();
}, this.delay());
this.timeoutHandler = setTimeout(
() => {
this.timeoutHandler = null;
return this.execute();
},
this.delay() + (extraDelay || 0),
);
}
async shouldStart() {

@ -911,6 +911,30 @@ import { IS_EE } from '../../../e2e/config/constants';
.send({ upsert: [{ agentId: agent._id, username: agent.username, name: agent.name }], remove: [] })
.expect(200);
expect(res.body).to.have.property('success', true);
});
it('should successfully remove an agent from a department', async () => {
const [dep, agent] = await Promise.all([createDepartment(), createAgent()]);
const res = await request
.post(api(`livechat/department/${dep._id}/agents`))
.set(credentials)
// UI sends the whole agent object, but API only needs agentId and username
.send({
remove: [
{
agentId: agent._id,
username: agent.username,
name: agent.name,
count: 0,
order: 0,
departmentId: 'afdsfads',
_id: 'afsdfadsfaf',
_updatedAt: new Date(),
},
],
upsert: [],
})
.expect(200);
expect(res.body).to.have.property('success', true);
await deleteDepartment(dep._id);
});
});

@ -1,12 +1,10 @@
# @rocket.chat/uikit-playground
## 0.6.17-rc.1
## 0.6.20-rc.1
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/core-typings@7.8.0-rc.1
- @rocket.chat/core-typings@7.8.0-rc.1
- @rocket.chat/fuselage-ui-kit@20.0.0-rc.1
- @rocket.chat/ui-contexts@20.0.0-rc.1
- @rocket.chat/ui-avatar@16.0.0-rc.1
@ -22,6 +20,43 @@
- @rocket.chat/ui-contexts@20.0.0-rc.0
- @rocket.chat/fuselage-ui-kit@20.0.0-rc.0
- @rocket.chat/ui-avatar@16.0.0-rc.0
- <details><summary>Updated dependencies []:</summary>
</details>
## 0.6.19
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/core-typings@7.7.4
- @rocket.chat/fuselage-ui-kit@19.0.4
- @rocket.chat/ui-contexts@19.0.4
- @rocket.chat/ui-avatar@15.0.4
</details>
## 0.6.18
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/core-typings@7.7.3
- @rocket.chat/fuselage-ui-kit@19.0.3
- @rocket.chat/ui-contexts@19.0.3
- @rocket.chat/ui-avatar@15.0.3
</details>
## 0.6.17
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/ui-contexts@19.0.2
- @rocket.chat/fuselage-ui-kit@19.0.2
- @rocket.chat/ui-avatar@15.0.2
- @rocket.chat/core-typings@7.7.2
</details>
## 0.6.16

@ -1,7 +1,7 @@
{
"name": "@rocket.chat/uikit-playground",
"private": true,
"version": "0.6.17-rc.1",
"version": "0.6.20-rc.1",
"type": "module",
"scripts": {
"dev": "vite",

@ -1,12 +1,11 @@
# @rocket.chat/account-service
## 0.4.26-rc.1
## 0.4.29-rc.1
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/core-typings@7.8.0-rc.1
- @rocket.chat/core-typings@7.8.0-rc.1
- @rocket.chat/rest-typings@7.8.0-rc.1
- @rocket.chat/core-services@0.9.5-rc.1
- @rocket.chat/model-typings@1.6.5-rc.1
@ -28,6 +27,47 @@
- @rocket.chat/network-broker@0.2.5-rc.0
</details>
## 0.4.28
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/core-services@0.9.7
- @rocket.chat/core-typings@7.7.4
- @rocket.chat/rest-typings@7.7.4
- @rocket.chat/model-typings@1.6.7
- @rocket.chat/models@1.5.7
- @rocket.chat/network-broker@0.2.7
</details>
## 0.4.27
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/core-typings@7.7.3
- @rocket.chat/rest-typings@7.7.3
- @rocket.chat/core-services@0.9.6
- @rocket.chat/model-typings@1.6.6
- @rocket.chat/models@1.5.6
- @rocket.chat/network-broker@0.2.6
</details>
## 0.4.26
### Patch Changes
- <details><summary>Updated dependencies [8874a5aab72c962f213d128a54393d95f7dabef8]:</summary>
- @rocket.chat/rest-typings@7.7.2
- @rocket.chat/core-services@0.9.5
- @rocket.chat/models@1.5.5
- @rocket.chat/network-broker@0.2.5
- @rocket.chat/core-typings@7.7.2
- @rocket.chat/model-typings@1.6.5
</details>
## 0.4.25
### Patch Changes

@ -1,7 +1,7 @@
{
"name": "@rocket.chat/account-service",
"private": true,
"version": "0.4.26-rc.1",
"version": "0.4.29-rc.1",
"description": "Rocket.Chat Account service",
"scripts": {
"build": "tsc -p tsconfig.json",

@ -1,11 +1,10 @@
# @rocket.chat/authorization-service
## 0.4.26-rc.1
## 0.4.29-rc.1
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/core-typings@7.8.0-rc.1
- @rocket.chat/rest-typings@7.8.0-rc.1
- @rocket.chat/core-services@0.9.5-rc.1
@ -28,6 +27,47 @@
- @rocket.chat/network-broker@0.2.5-rc.0
</details>
## 0.4.28
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/core-services@0.9.7
- @rocket.chat/core-typings@7.7.4
- @rocket.chat/rest-typings@7.7.4
- @rocket.chat/model-typings@1.6.7
- @rocket.chat/models@1.5.7
- @rocket.chat/network-broker@0.2.7
</details>
## 0.4.27
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/core-typings@7.7.3
- @rocket.chat/rest-typings@7.7.3
- @rocket.chat/core-services@0.9.6
- @rocket.chat/model-typings@1.6.6
- @rocket.chat/models@1.5.6
- @rocket.chat/network-broker@0.2.6
</details>
## 0.4.26
### Patch Changes
- <details><summary>Updated dependencies [8874a5aab72c962f213d128a54393d95f7dabef8]:</summary>
- @rocket.chat/rest-typings@7.7.2
- @rocket.chat/core-services@0.9.5
- @rocket.chat/models@1.5.5
- @rocket.chat/network-broker@0.2.5
- @rocket.chat/core-typings@7.7.2
- @rocket.chat/model-typings@1.6.5
</details>
## 0.4.25
### Patch Changes

@ -1,7 +1,7 @@
{
"name": "@rocket.chat/authorization-service",
"private": true,
"version": "0.4.26-rc.1",
"version": "0.4.29-rc.1",
"description": "Rocket.Chat Authorization service",
"scripts": {
"build": "tsc -p tsconfig.json",

@ -1,11 +1,10 @@
# @rocket.chat/ddp-streamer
## 0.3.26-rc.1
## 0.3.29-rc.1
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/core-typings@7.8.0-rc.1
- @rocket.chat/rest-typings@7.8.0-rc.1
- @rocket.chat/core-services@0.9.5-rc.1
@ -30,6 +29,52 @@
- @rocket.chat/network-broker@0.2.5-rc.0
</details>
## 0.3.28
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/core-services@0.9.7
- @rocket.chat/core-typings@7.7.4
- @rocket.chat/rest-typings@7.7.4
- @rocket.chat/model-typings@1.6.7
- @rocket.chat/models@1.5.7
- @rocket.chat/network-broker@0.2.7
- @rocket.chat/instance-status@0.1.28
</details>
## 0.3.27
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/core-typings@7.7.3
- @rocket.chat/rest-typings@7.7.3
- @rocket.chat/core-services@0.9.6
- @rocket.chat/model-typings@1.6.6
- @rocket.chat/models@1.5.6
- @rocket.chat/network-broker@0.2.6
- @rocket.chat/instance-status@0.1.27
</details>
## 0.3.26
### Patch Changes
- ([#36323](https://github.com/RocketChat/Rocket.Chat/pull/36323) by [@dionisio-bot](https://github.com/dionisio-bot)) Fixes an issue that was causing ddp-streamer process to break if the communication with presence service was interrupted for any reason.
- <details><summary>Updated dependencies [8874a5aab72c962f213d128a54393d95f7dabef8]:</summary>
- @rocket.chat/rest-typings@7.7.2
- @rocket.chat/core-services@0.9.5
- @rocket.chat/models@1.5.5
- @rocket.chat/network-broker@0.2.5
- @rocket.chat/instance-status@0.1.26
- @rocket.chat/core-typings@7.7.2
- @rocket.chat/model-typings@1.6.5
</details>
## 0.3.25
### Patch Changes

@ -1,7 +1,7 @@
{
"name": "@rocket.chat/ddp-streamer",
"private": true,
"version": "0.3.26-rc.1",
"version": "0.3.29-rc.1",
"description": "Rocket.Chat DDP-Streamer service",
"scripts": {
"build": "tsc -p tsconfig.json",

@ -32,3 +32,39 @@ import { startTracing } from '@rocket.chat/tracing';
await api.start();
})();
/**
* If some promise is rejected and doesn't have a catch (unhandledRejection) it may cause the process to exit.
*
* Since unhandled rejections are deprecated in NodeJS:
* (node:83382) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections
* that are not handled will terminate the Node.js process with a non-zero exit code.
* we will start respecting this and exit the process to prevent these kind of problems.
*/
process.on('unhandledRejection', (error) => {
console.error('=== UnHandledPromiseRejection ===');
console.error(error);
console.error('---------------------------------');
console.error(
'Setting EXIT_UNHANDLEDPROMISEREJECTION will cause the process to exit allowing your service to automatically restart the process',
);
console.error('Future node.js versions will automatically exit the process');
console.error('=================================');
if (process.env.TEST_MODE || process.env.NODE_ENV === 'development' || process.env.EXIT_UNHANDLEDPROMISEREJECTION) {
process.exit(1);
}
});
process.on('uncaughtException', async (error) => {
console.error('=== UnCaughtException ===');
console.error(error);
console.error('-------------------------');
console.error('Errors like this can cause oplog processing errors.');
console.error('===========================');
if (process.env.TEST_MODE || process.env.NODE_ENV === 'development' || process.env.EXIT_UNHANDLEDPROMISEREJECTION) {
process.exit(1);
}
});

@ -1,11 +1,10 @@
# @rocket.chat/omnichannel-transcript
## 0.4.26-rc.1
## 0.4.20-rc.1
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/core-typings@7.8.0-rc.1
- @rocket.chat/omnichannel-services@0.3.23-rc.1
- @rocket.chat/pdf-worker@0.3.5-rc.1
@ -29,6 +28,53 @@
- @rocket.chat/core-services@0.9.5-rc.0
- @rocket.chat/pdf-worker@0.3.5-rc.0
- @rocket.chat/network-broker@0.2.5-rc.0
</details>
## 0.4.28
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/core-services@0.9.7
- @rocket.chat/core-typings@7.7.4
- @rocket.chat/omnichannel-services@0.3.25
- @rocket.chat/pdf-worker@0.3.7
- @rocket.chat/model-typings@1.6.7
- @rocket.chat/models@1.5.7
- @rocket.chat/network-broker@0.2.7
</details>
## 0.4.27
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/core-typings@7.7.3
- @rocket.chat/omnichannel-services@0.3.24
- @rocket.chat/pdf-worker@0.3.6
- @rocket.chat/core-services@0.9.6
- @rocket.chat/model-typings@1.6.6
- @rocket.chat/models@1.5.6
- @rocket.chat/network-broker@0.2.6
</details>
## 0.4.26
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/omnichannel-services@0.3.23
- @rocket.chat/core-services@0.9.5
- @rocket.chat/models@1.5.5
- @rocket.chat/network-broker@0.2.5
- @rocket.chat/core-typings@7.7.2
- @rocket.chat/pdf-worker@0.3.5
- @rocket.chat/model-typings@1.6.5
</details>
## 0.4.25

@ -1,7 +1,7 @@
{
"name": "@rocket.chat/omnichannel-transcript",
"private": true,
"version": "0.4.26-rc.1",
"version": "0.4.29-rc.1",
"description": "Rocket.Chat service",
"scripts": {
"build": "tsc -p tsconfig.json",

@ -1,11 +1,10 @@
# @rocket.chat/presence-service
## 0.4.26-rc.1
## 0.4.29-rc.1
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/core-typings@7.8.0-rc.1
- @rocket.chat/presence@0.2.26-rc.1
- @rocket.chat/core-services@0.9.5-rc.1
@ -28,6 +27,47 @@
- @rocket.chat/network-broker@0.2.5-rc.0
</details>
## 0.4.28
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/presence@0.2.28
- @rocket.chat/core-services@0.9.7
- @rocket.chat/core-typings@7.7.4
- @rocket.chat/model-typings@1.6.7
- @rocket.chat/models@1.5.7
- @rocket.chat/network-broker@0.2.7
</details>
## 0.4.27
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/core-typings@7.7.3
- @rocket.chat/presence@0.2.27
- @rocket.chat/core-services@0.9.6
- @rocket.chat/model-typings@1.6.6
- @rocket.chat/models@1.5.6
- @rocket.chat/network-broker@0.2.6
</details>
## 0.4.26
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/presence@0.2.26
- @rocket.chat/core-services@0.9.5
- @rocket.chat/models@1.5.5
- @rocket.chat/network-broker@0.2.5
- @rocket.chat/core-typings@7.7.2
- @rocket.chat/model-typings@1.6.5
</details>
## 0.4.25
### Patch Changes

@ -1,7 +1,7 @@
{
"name": "@rocket.chat/presence-service",
"private": true,
"version": "0.4.26-rc.1",
"version": "0.4.29-rc.1",
"description": "Rocket.Chat Presence service",
"scripts": {
"build": "tsc -p tsconfig.json",

@ -1,11 +1,10 @@
# @rocket.chat/queue-worker
## 0.4.26-rc.1
## 0.4.29-rc.1
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/core-typings@7.8.0-rc.1
- @rocket.chat/omnichannel-services@0.3.23-rc.1
- @rocket.chat/core-services@0.9.5-rc.1
@ -28,6 +27,48 @@
- @rocket.chat/network-broker@0.2.5-rc.0
</details>
## 0.4.28
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/core-services@0.9.7
- @rocket.chat/core-typings@7.7.4
- @rocket.chat/omnichannel-services@0.3.25
- @rocket.chat/model-typings@1.6.7
- @rocket.chat/models@1.5.7
- @rocket.chat/network-broker@0.2.7
</details>
## 0.4.27
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/core-typings@7.7.3
- @rocket.chat/omnichannel-services@0.3.24
- @rocket.chat/core-services@0.9.6
- @rocket.chat/model-typings@1.6.6
- @rocket.chat/models@1.5.6
- @rocket.chat/network-broker@0.2.6
</details>
## 0.4.26
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/omnichannel-services@0.3.23
- @rocket.chat/core-services@0.9.5
- @rocket.chat/models@1.5.5
- @rocket.chat/network-broker@0.2.5
- @rocket.chat/core-typings@7.7.2
- @rocket.chat/model-typings@1.6.5
</details>
## 0.4.25
### Patch Changes

@ -1,7 +1,7 @@
{
"name": "@rocket.chat/queue-worker",
"private": true,
"version": "0.4.26-rc.1",
"version": "0.4.29-rc.1",
"description": "Rocket.Chat service",
"scripts": {
"build": "tsc -p tsconfig.json",

@ -1,11 +1,10 @@
# @rocket.chat/stream-hub-service
## 0.4.26-rc.1
## 0.4.29-rc.1
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/core-typings@7.8.0-rc.1
- @rocket.chat/core-services@0.9.5-rc.1
- @rocket.chat/model-typings@1.6.5-rc.1
@ -24,6 +23,44 @@
- @rocket.chat/core-typings@7.8.0-rc.0
- @rocket.chat/core-services@0.9.5-rc.0
- @rocket.chat/network-broker@0.2.5-rc.0
</details>
## 0.4.28
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/core-services@0.9.7
- @rocket.chat/core-typings@7.7.4
- @rocket.chat/model-typings@1.6.7
- @rocket.chat/models@1.5.7
- @rocket.chat/network-broker@0.2.7
</details>
## 0.4.27
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/core-typings@7.7.3
- @rocket.chat/core-services@0.9.6
- @rocket.chat/model-typings@1.6.6
- @rocket.chat/models@1.5.6
- @rocket.chat/network-broker@0.2.6
</details>
## 0.4.26
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/core-services@0.9.5
- @rocket.chat/models@1.5.5
- @rocket.chat/network-broker@0.2.5
- @rocket.chat/core-typings@7.7.2
- @rocket.chat/model-typings@1.6.5
</details>
## 0.4.25

@ -1,7 +1,7 @@
{
"name": "@rocket.chat/stream-hub-service",
"private": true,
"version": "0.4.26-rc.1",
"version": "0.4.29-rc.1",
"description": "Rocket.Chat Stream Hub service",
"scripts": {
"build": "tsc -p tsconfig.json",

@ -1,11 +1,10 @@
# @rocket.chat/license
## 1.0.17-rc.1
## 1.0.20-rc.1
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/core-typings@7.8.0-rc.1
</details>
@ -16,8 +15,34 @@
- <details><summary>Updated dependencies [3d024a900426c8bbf646e7ebedce0e17c9f7c140, 3779de0e8c5787f266bdeda5052b27c023c65f1c]:</summary>
- @rocket.chat/core-typings@7.8.0-rc.0
</details>
## 1.0.19
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/core-typings@7.7.4
</details>
## 1.0.18
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/core-typings@7.7.3
</details>
## 1.0.17
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/core-typings@7.7.2
</details>
## 1.0.16
### Patch Changes

@ -11,7 +11,7 @@ import { NotReadyForValidation } from '../src/errors/NotReadyForValidation';
// Same license used on ci tasks so no I didnt leak it
const VALID_LICENSE =
process.env.ENTERPRISE_LICENSE ||
'X/XumwIkgwQuld0alWKt37lVA90XjKOrfiMvMZ0/RtqsMtrdL9GoAk+4jXnaY1b2ePoG7XSzGhuxEDxFKIWJK3hIKGNTvrd980LgH5sM5+1T4P42ivSpd8UZi0bwjJkCFLIu9RozzYwslGG0IehMxe0S6VjcO0UYlUJtbMCBHuR2WmTAmO6YVU3ln+pZCbrPFaTPSS1RovhKaNCNkZwIx/CLWW8UTXUuFV/ML4PbKKVoa5nvvJwPeatgL7UCnlSD90lfCiiuikpzj/Y/JLkIL6velFbwNxsrxg9iRJ2k0sKheMMSmlTiGzSvZUm+na5WQq91aKGncih+DmaEZA7QGrjp4eoA0dqTk6OmItsy0fHmQhvZIOKNMeO7vNQiLbaSV6rqibrzu7WPpeIvsvL57T1h37USoCSB6+jDqkzdfoqIpz8BxTiJDj1d8xGPJFVrgxoqQqkj9qIP/gCaEz5DF39QFv5sovk4yK2O8fEQYod2d14V9yECYl4szZPMk1IBfCAC2w7czWGHHFonhL+CQGT403y5wmDmnsnjlCqMKF72odqfTPTI8XnCvJDriPMWohnQEAGtTTyciAhNokx/mjAVJ4NeZPcsbm4BjhvJvnjxx/BhYhBBTNWPaCSZzocfrGUj9Z+ZA7BEz+xAFQyGDx3xRzqIXfT0G7w8fvgYJMU=';
'Uo7Jcr6WW0XYA8ydHd+Sk6pZ9/0V6dIASnyTwvUrNym/zJg2Ma3eYNKkC8osXLCc72y1ahohnWY7/+7IYkvono3GYXQR+IGvYbbrVgNR6OjMahd9P/odHZL1GFTm2qHrEL5Hh/XEOG+YluFeRdWPzCizQlp4zGGOi0+PkQo096TR9NVCLrsErVl2MW1WM6ZM1W5EUJG9pKly4BQnaOTUAlor1im6i8qPTDCKrISZfLiZEWuQKaPW/GE3mRKjQNjDh0CabX1N2S880pRRGoozBYAnp2NmFfrQW0+5ihKisBTIeMbMZ7K5NE5PkYU1nhQDcc+rpDHtwG9Ceg5X0J+oea3UfrPTmDON2aSI0iO22kvL6G7QI3fyrEIvJrMbxcNKxAFeQYgnjisw/b06+chWSG4jG686Fx58XrVS87dFhWL9WoGltsk1dJCntUQvI1sX6zOfpvyg1iWRnHfYDOrwoWlX57XMm29fWineEoqnOOTOVnA/uP+DKEhercQ9Xuo7Cr6zJxpQpwd03e7ODVjiEbTDqlkZE687rmxRCD4Wmu8L86WIl2xSEIajKLX301Ww5mz/FdLqk+Mg32lkW66W3azQKvJ1440NBrYxhpJ+dl9vSFMb3s1+xnz1cYUbjUcq9mARvORcgy5mLwKulmqT6Sq0Uvbv10YCO0TW0beXYW8=';
describe('License set license procedures', () => {
describe('Invalid formats', () => {

@ -1,6 +1,6 @@
{
"name": "@rocket.chat/license",
"version": "1.0.17-rc.1",
"version": "1.0.20-rc.1",
"private": true,
"devDependencies": {
"@rocket.chat/jest-presets": "workspace:~",

@ -1,11 +1,10 @@
# @rocket.chat/network-broker
## 0.2.5-rc.1
## 0.2.6-rc.1
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/core-services@0.9.5-rc.1
</details>
@ -14,10 +13,34 @@
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/core-services@0.9.5-rc.0
</details>
## 0.2.7
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/core-services@0.9.7
</details>
## 0.2.6
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/core-services@0.9.6
</details>
## 0.2.5
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/core-services@0.9.5
</details>
## 0.2.4
### Patch Changes

@ -1,6 +1,6 @@
{
"name": "@rocket.chat/network-broker",
"version": "0.2.5-rc.1",
"version": "0.2.8-rc.1",
"private": true,
"devDependencies": {
"@rocket.chat/eslint-config": "workspace:^",

@ -1,18 +1,14 @@
# @rocket.chat/omnichannel-services
## 0.3.23-rc.1
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/core-typings@7.8.0-rc.1
- @rocket.chat/rest-typings@7.8.0-rc.1
- @rocket.chat/pdf-worker@0.3.5-rc.1
- @rocket.chat/core-services@0.9.5-rc.1
- @rocket.chat/model-typings@1.6.5-rc.1
- @rocket.chat/models@1.5.5-rc.1
</details>
## 0.3.26-rc.1
- @rocket.chat/core-typings@7.8.0-rc.1
- @rocket.chat/rest-typings@7.8.0-rc.1
- @rocket.chat/pdf-worker@0.3.5-rc.1
- @rocket.chat/core-services@0.9.5-rc.1
- @rocket.chat/model-typings@1.6.5-rc.1
- @rocket.chat/models@1.5.5-rc.1
</details>
## 0.3.23-rc.0
@ -26,6 +22,48 @@
- @rocket.chat/core-typings@7.8.0-rc.0
- @rocket.chat/core-services@0.9.5-rc.0
- @rocket.chat/pdf-worker@0.3.5-rc.0
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
</details>
## 0.3.25
- @rocket.chat/core-services@0.9.7
- @rocket.chat/core-typings@7.7.4
- @rocket.chat/rest-typings@7.7.4
- @rocket.chat/pdf-worker@0.3.7
- @rocket.chat/model-typings@1.6.7
- @rocket.chat/models@1.5.7
</details>
## 0.3.24
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/core-typings@7.7.3
- @rocket.chat/rest-typings@7.7.3
- @rocket.chat/pdf-worker@0.3.6
- @rocket.chat/core-services@0.9.6
- @rocket.chat/model-typings@1.6.6
- @rocket.chat/models@1.5.6
</details>
## 0.3.23
### Patch Changes
- <details><summary>Updated dependencies [8874a5aab72c962f213d128a54393d95f7dabef8]:</summary>
- @rocket.chat/rest-typings@7.7.2
- @rocket.chat/core-services@0.9.5
- @rocket.chat/models@1.5.5
- @rocket.chat/core-typings@7.7.2
- @rocket.chat/pdf-worker@0.3.5
- @rocket.chat/model-typings@1.6.5
</details>
## 0.3.22

@ -1,6 +1,6 @@
{
"name": "@rocket.chat/omnichannel-services",
"version": "0.3.23-rc.1",
"version": "0.3.26-rc.1",
"private": true,
"devDependencies": {
"@rocket.chat/eslint-config": "workspace:^",

@ -1,11 +1,10 @@
# @rocket.chat/pdf-worker
## 0.3.5-rc.1
## 0.3.8-rc.1
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/core-typings@7.8.0-rc.1
</details>
@ -16,6 +15,32 @@
- <details><summary>Updated dependencies [3d024a900426c8bbf646e7ebedce0e17c9f7c140, 3779de0e8c5787f266bdeda5052b27c023c65f1c]:</summary>
- @rocket.chat/core-typings@7.8.0-rc.0
</details>
## 0.3.7
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/core-typings@7.7.4
</details>
## 0.3.6
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/core-typings@7.7.3
</details>
## 0.3.5
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/core-typings@7.7.2
</details>
## 0.3.4

@ -1,6 +1,6 @@
{
"name": "@rocket.chat/pdf-worker",
"version": "0.3.5-rc.1",
"version": "0.3.8-rc.1",
"private": true,
"main": "./dist/index.js",
"typings": "./dist/index.d.ts",

@ -1,15 +1,11 @@
# @rocket.chat/presence
## 0.2.26-rc.1
## 0.2.28-rc.1
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/core-typings@7.8.0-rc.1
- @rocket.chat/core-services@0.9.5-rc.1
- @rocket.chat/models@1.5.5-rc.1
</details>
- @rocket.chat/core-typings@7.8.0-rc.1
- @rocket.chat/core-services@0.9.5-rc.1
- @rocket.chat/models@1.5.5-rc.1
</details>
## 0.2.26-rc.0
@ -20,6 +16,43 @@
- @rocket.chat/models@1.5.5-rc.0
- @rocket.chat/core-typings@7.8.0-rc.0
- @rocket.chat/core-services@0.9.5-rc.0
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
</details>
## 0.2.28
- @rocket.chat/core-services@0.9.7
- @rocket.chat/core-typings@7.7.4
- @rocket.chat/models@1.5.7
</details>
## 0.2.27
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/core-typings@7.7.3
- @rocket.chat/core-services@0.9.6
- @rocket.chat/models@1.5.6
</details>
## 0.2.26
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/core-services@0.9.5
- @rocket.chat/models@1.5.5
- @rocket.chat/core-typings@7.7.2
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
</details>
## 0.2.25

@ -1,6 +1,6 @@
{
"name": "@rocket.chat/presence",
"version": "0.2.26-rc.1",
"version": "0.2.29-rc.1",
"private": true,
"devDependencies": {
"@babel/core": "~7.26.0",

@ -1,11 +1,10 @@
# @rocket.chat/api-client
## 0.2.26-rc.1
## 0.2.29-rc.1
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/core-typings@7.8.0-rc.1
- @rocket.chat/rest-typings@7.8.0-rc.1
</details>
@ -18,6 +17,37 @@
- @rocket.chat/rest-typings@7.8.0-rc.0
- @rocket.chat/core-typings@7.8.0-rc.0
</details>
## 0.2.28
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/core-typings@7.7.4
- @rocket.chat/rest-typings@7.7.4
</details>
## 0.2.27
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/core-typings@7.7.3
- @rocket.chat/rest-typings@7.7.3
</details>
## 0.2.26
### Patch Changes
- <details><summary>Updated dependencies [8874a5aab72c962f213d128a54393d95f7dabef8]:</summary>
- @rocket.chat/rest-typings@7.7.2
- @rocket.chat/core-typings@7.7.2
</details>
## 0.2.25

@ -1,6 +1,6 @@
{
"name": "@rocket.chat/api-client",
"version": "0.2.26-rc.1",
"version": "0.2.29-rc.1",
"devDependencies": {
"@rocket.chat/jest-presets": "workspace:~",
"@rocket.chat/tsconfig": "workspace:*",

@ -6,6 +6,12 @@
- ([#36169](https://github.com/RocketChat/Rocket.Chat/pull/36169)) Fix an issue where action buttons registered by apps would be displayed even if their apps were disabled
## 1.52.1
### Patch Changes
- ([#36360](https://github.com/RocketChat/Rocket.Chat/pull/36360) by [@dionisio-bot](https://github.com/dionisio-bot)) Fixes an issue where some error objects sent to apps' method calls would only contain the message '[object Object]'
## 1.52.0
### Minor Changes

@ -0,0 +1,14 @@
import { ErrorObject } from 'jsonrpc-lite';
// deno-lint-ignore no-explicit-any -- that is the type we get from `catch`
export const formatErrorResponse = (error: any): Error => {
if (error instanceof ErrorObject || typeof error?.error?.message === 'string') {
return new Error(error.error.message);
}
if (error instanceof Error) {
return error;
}
return new Error('An unknown error occurred', { cause: error });
};

@ -4,6 +4,7 @@ import type { IRead } from '@rocket.chat/apps-engine/definition/accessors/IRead.
import * as Messenger from '../messenger.ts';
import { AppObjectRegistry } from '../../AppObjectRegistry.ts';
import { formatErrorResponse } from './formatResponseErrorHandler.ts';
type RequestMethod = 'get' | 'post' | 'put' | 'head' | 'delete' | 'patch';
@ -70,12 +71,16 @@ export class Http implements IHttp {
let { result: response } = await this.senderFn({
method: `bridges:getHttpBridge:doCall`,
params: [{
appId: AppObjectRegistry.get<string>('id'),
method,
url,
request,
}],
params: [
{
appId: AppObjectRegistry.get<string>('id'),
method,
url,
request,
},
],
}).catch((error) => {
throw formatErrorResponse(error);
});
for (const handler of this.httpExtender.getPreResponseHandlers()) {

@ -22,6 +22,7 @@ import { ModifyCreator } from './modify/ModifyCreator.ts';
import { ModifyUpdater } from './modify/ModifyUpdater.ts';
import { ModifyExtender } from './modify/ModifyExtender.ts';
import { Notifier } from './notifier.ts';
import { formatErrorResponse } from './formatResponseErrorHandler.ts';
const httpMethods = ['get', 'post', 'put', 'delete', 'head', 'options', 'patch'] as const;
@ -53,26 +54,28 @@ export class AppAccessors {
new Proxy(
{ __kind: `accessor:${namespace}` },
{
get: (_target: unknown, prop: string) => (...params: unknown[]) => {
// We don't want to send a request for this prop
if (prop === 'toJSON') {
return {};
}
// If the prop is inteded to be overriden by the caller
if (prop in overrides) {
return overrides[prop].apply(undefined, params);
}
return senderFn({
method: `accessor:${namespace}:${prop}`,
params,
})
.then((response) => response.result)
.catch((err) => {
throw new Error(err.error);
});
},
get:
(_target: unknown, prop: string) =>
(...params: unknown[]) => {
// We don't want to send a request for this prop
if (prop === 'toJSON') {
return {};
}
// If the prop is inteded to be overriden by the caller
if (prop in overrides) {
return overrides[prop].apply(undefined, params);
}
return senderFn({
method: `accessor:${namespace}:${prop}`,
params,
})
.then((response) => response.result)
.catch((err) => {
throw formatErrorResponse(err);
});
},
},
) as T;

@ -28,6 +28,7 @@ import { UserBuilder } from '../builders/UserBuilder.ts';
import { AppVideoConference, VideoConferenceBuilder } from '../builders/VideoConferenceBuilder.ts';
import { AppObjectRegistry } from '../../../AppObjectRegistry.ts';
import { require } from '../../../lib/require.ts';
import { formatErrorResponse } from '../formatResponseErrorHandler.ts';
const { UIHelper } = require('@rocket.chat/apps-engine/server/misc/UIHelper.js') as { UIHelper: typeof _UIHelper };
const { RoomType } = require('@rocket.chat/apps-engine/definition/rooms/RoomType.js') as { RoomType: typeof _RoomType };
@ -60,13 +61,7 @@ export class ModifyCreator implements IModifyCreator {
})
.then((response) => response.result)
.catch((err) => {
if (err instanceof Error) {
throw err;
}
if (err?.error?.message) {
throw new Error(err.error.message);
}
throw new Error(err.error);
throw formatErrorResponse(err);
});
},
},
@ -77,21 +72,19 @@ export class ModifyCreator implements IModifyCreator {
return new Proxy(
{ __kind: 'getUploadCreator' },
{
get: (_target: unknown, prop: string) => (...params: unknown[]) =>
prop === 'toJSON' ? {} : this.senderFn({
method: `accessor:getModifier:getCreator:getUploadCreator:${prop}`,
params,
})
.then((response) => response.result)
.catch((err) => {
if (err instanceof Error) {
throw err;
}
if (err?.error?.message) {
throw new Error(err.error.message);
}
throw new Error(err.error);
}),
get:
(_target: unknown, prop: string) =>
(...params: unknown[]) =>
prop === 'toJSON'
? {}
: this.senderFn({
method: `accessor:getModifier:getCreator:getUploadCreator:${prop}`,
params,
})
.then((response) => response.result)
.catch((err) => {
throw formatErrorResponse(err);
}),
},
) as IUploadCreator;
}
@ -100,21 +93,19 @@ export class ModifyCreator implements IModifyCreator {
return new Proxy(
{ __kind: 'getEmailCreator' },
{
get: (_target: unknown, prop: string) => (...params: unknown[]) =>
prop === 'toJSON' ? {} : this.senderFn({
method: `accessor:getModifier:getCreator:getEmailCreator:${prop}`,
params,
})
.then((response) => response.result)
.catch((err) => {
if (err instanceof Error) {
throw err;
}
if (err?.error?.message) {
throw new Error(err.error.message);
}
throw new Error(err.error);
}),
get:
(_target: unknown, prop: string) =>
(...params: unknown[]) =>
prop === 'toJSON'
? {}
: this.senderFn({
method: `accessor:getModifier:getCreator:getEmailCreator:${prop}`,
params,
})
.then((response) => response.result)
.catch((err) => {
throw formatErrorResponse(err);
}),
},
);
}
@ -123,21 +114,19 @@ export class ModifyCreator implements IModifyCreator {
return new Proxy(
{ __kind: 'getContactCreator' },
{
get: (_target: unknown, prop: string) => (...params: unknown[]) =>
prop === 'toJSON' ? {} : this.senderFn({
method: `accessor:getModifier:getCreator:getContactCreator:${prop}`,
params,
})
.then((response) => response.result)
.catch((err) => {
if (err instanceof Error) {
throw err;
}
if (err?.error?.message) {
throw new Error(err.error.message);
}
throw new Error(err.error);
}),
get:
(_target: unknown, prop: string) =>
(...params: unknown[]) =>
prop === 'toJSON'
? {}
: this.senderFn({
method: `accessor:getModifier:getCreator:getContactCreator:${prop}`,
params,
})
.then((response) => response.result)
.catch((err) => {
throw formatErrorResponse(err);
}),
},
);
}
@ -236,6 +225,8 @@ export class ModifyCreator implements IModifyCreator {
const response = await this.senderFn({
method: 'bridges:getUserBridge:doGetAppUser',
params: ['APP_ID'],
}).catch((err) => {
throw formatErrorResponse(err);
});
const appUser = response.result;
@ -255,6 +246,8 @@ export class ModifyCreator implements IModifyCreator {
const response = await this.senderFn({
method: 'bridges:getMessageBridge:doCreate',
params: [result, AppObjectRegistry.get('id')],
}).catch((err) => {
throw formatErrorResponse(err);
});
return String(response.result);
@ -277,6 +270,8 @@ export class ModifyCreator implements IModifyCreator {
const response = await this.senderFn({
method: 'bridges:getLivechatBridge:doCreateMessage',
params: [result, AppObjectRegistry.get('id')],
}).catch((err) => {
throw formatErrorResponse(err);
});
return String(response.result);
@ -311,6 +306,8 @@ export class ModifyCreator implements IModifyCreator {
const response = await this.senderFn({
method: 'bridges:getRoomBridge:doCreate',
params: [result, builder.getMembersToBeAddedUsernames(), AppObjectRegistry.get('id')],
}).catch((err) => {
throw formatErrorResponse(err);
});
return String(response.result);
@ -339,6 +336,8 @@ export class ModifyCreator implements IModifyCreator {
const response = await this.senderFn({
method: 'bridges:getRoomBridge:doCreateDiscussion',
params: [room, builder.getParentMessage(), builder.getReply(), builder.getMembersToBeAddedUsernames(), AppObjectRegistry.get('id')],
}).catch((err) => {
throw formatErrorResponse(err);
});
return String(response.result);
@ -362,6 +361,8 @@ export class ModifyCreator implements IModifyCreator {
const response = await this.senderFn({
method: 'bridges:getVideoConferenceBridge:doCreate',
params: [videoConference, AppObjectRegistry.get('id')],
}).catch((err) => {
throw formatErrorResponse(err);
});
return String(response.result);
@ -373,6 +374,8 @@ export class ModifyCreator implements IModifyCreator {
const response = await this.senderFn({
method: 'bridges:getUserBridge:doCreate',
params: [user, AppObjectRegistry.get('id')],
}).catch((err) => {
throw formatErrorResponse(err);
});
return String(response.result);

@ -14,6 +14,7 @@ import { MessageExtender } from '../extenders/MessageExtender.ts';
import { RoomExtender } from '../extenders/RoomExtender.ts';
import { VideoConferenceExtender } from '../extenders/VideoConferenceExtend.ts';
import { require } from '../../../lib/require.ts';
import { formatErrorResponse } from '../formatResponseErrorHandler.ts';
const { RocketChatAssociationModel } = require('@rocket.chat/apps-engine/definition/metadata/RocketChatAssociations.js') as {
RocketChatAssociationModel: typeof _RocketChatAssociationModel;
@ -26,6 +27,8 @@ export class ModifyExtender implements IModifyExtender {
const result = await this.senderFn({
method: 'bridges:getMessageBridge:doGetById',
params: [messageId, AppObjectRegistry.get('id')],
}).catch((err) => {
throw formatErrorResponse(err);
});
const msg = result.result as IMessage;
@ -40,6 +43,8 @@ export class ModifyExtender implements IModifyExtender {
const result = await this.senderFn({
method: 'bridges:getRoomBridge:doGetById',
params: [roomId, AppObjectRegistry.get('id')],
}).catch((err) => {
throw formatErrorResponse(err);
});
const room = result.result as IRoom;
@ -53,6 +58,8 @@ export class ModifyExtender implements IModifyExtender {
const result = await this.senderFn({
method: 'bridges:getVideoConferenceBridge:doGetById',
params: [id, AppObjectRegistry.get('id')],
}).catch((err) => {
throw formatErrorResponse(err);
});
const call = result.result as VideoConference;
@ -68,6 +75,8 @@ export class ModifyExtender implements IModifyExtender {
await this.senderFn({
method: 'bridges:getMessageBridge:doUpdate',
params: [(extender as IMessageExtender).getMessage(), AppObjectRegistry.get('id')],
}).catch((err) => {
throw formatErrorResponse(err);
});
break;
case RocketChatAssociationModel.ROOM:
@ -78,12 +87,16 @@ export class ModifyExtender implements IModifyExtender {
(extender as IRoomExtender).getUsernamesOfMembersBeingAdded(),
AppObjectRegistry.get('id'),
],
}).catch((err) => {
throw formatErrorResponse(err);
});
break;
case RocketChatAssociationModel.VIDEO_CONFERENCE:
await this.senderFn({
method: 'bridges:getVideoConferenceBridge:doUpdate',
params: [(extender as IVideoConferenceExtender).getVideoConference(), AppObjectRegistry.get('id')],
}).catch((err) => {
throw formatErrorResponse(err);
});
break;
default:

@ -18,6 +18,7 @@ import { RoomBuilder } from '../builders/RoomBuilder.ts';
import { AppObjectRegistry } from '../../../AppObjectRegistry.ts';
import { require } from '../../../lib/require.ts';
import { formatErrorResponse } from '../formatResponseErrorHandler.ts';
const { UIHelper } = require('@rocket.chat/apps-engine/server/misc/UIHelper.js') as { UIHelper: typeof _UIHelper };
const { RoomType } = require('@rocket.chat/apps-engine/definition/rooms/RoomType.js') as { RoomType: typeof _RoomType };
@ -32,15 +33,19 @@ export class ModifyUpdater implements IModifyUpdater {
return new Proxy(
{ __kind: 'getLivechatUpdater' },
{
get: (_target: unknown, prop: string) => (...params: unknown[]) =>
prop === 'toJSON' ? {} : this.senderFn({
method: `accessor:getModifier:getUpdater:getLivechatUpdater:${prop}`,
params,
})
.then((response) => response.result)
.catch((err) => {
throw new Error(err.error);
}),
get:
(_target: unknown, prop: string) =>
(...params: unknown[]) =>
prop === 'toJSON'
? {}
: this.senderFn({
method: `accessor:getModifier:getUpdater:getLivechatUpdater:${prop}`,
params,
})
.then((response) => response.result)
.catch((err) => {
throw formatErrorResponse(err);
}),
},
) as ILivechatUpdater;
}
@ -49,15 +54,19 @@ export class ModifyUpdater implements IModifyUpdater {
return new Proxy(
{ __kind: 'getUserUpdater' },
{
get: (_target: unknown, prop: string) => (...params: unknown[]) =>
prop === 'toJSON' ? {} : this.senderFn({
method: `accessor:getModifier:getUpdater:getUserUpdater:${prop}`,
params,
})
.then((response) => response.result)
.catch((err) => {
throw new Error(err.error);
}),
get:
(_target: unknown, prop: string) =>
(...params: unknown[]) =>
prop === 'toJSON'
? {}
: this.senderFn({
method: `accessor:getModifier:getUpdater:getUserUpdater:${prop}`,
params,
})
.then((response) => response.result)
.catch((err) => {
throw formatErrorResponse(err);
}),
},
) as IUserUpdater;
}
@ -66,6 +75,8 @@ export class ModifyUpdater implements IModifyUpdater {
const response = await this.senderFn({
method: 'bridges:getMessageBridge:doGetById',
params: [messageId, AppObjectRegistry.get('id')],
}).catch((err) => {
throw formatErrorResponse(err);
});
const builder = new MessageBuilder(response.result as IMessage);
@ -79,6 +90,8 @@ export class ModifyUpdater implements IModifyUpdater {
const response = await this.senderFn({
method: 'bridges:getRoomBridge:doGetById',
params: [roomId, AppObjectRegistry.get('id')],
}).catch((err) => {
throw formatErrorResponse(err);
});
return new RoomBuilder(response.result as IRoom);
@ -115,6 +128,8 @@ export class ModifyUpdater implements IModifyUpdater {
await this.senderFn({
method: 'bridges:getMessageBridge:doUpdate',
params: [changes, AppObjectRegistry.get('id')],
}).catch((err) => {
throw formatErrorResponse(err);
});
}
@ -148,6 +163,8 @@ export class ModifyUpdater implements IModifyUpdater {
await this.senderFn({
method: 'bridges:getRoomBridge:doUpdate',
params: [changes, builder.getMembersToBeAddedUsernames(), AppObjectRegistry.get('id')],
}).catch((err) => {
throw formatErrorResponse(err);
});
}
}

@ -8,6 +8,7 @@ import { MessageBuilder } from './builders/MessageBuilder.ts';
import { AppObjectRegistry } from '../../AppObjectRegistry.ts';
import * as Messenger from '../messenger.ts';
import { require } from '../require.ts';
import { formatErrorResponse } from './formatResponseErrorHandler.ts';
const { TypingScope } = require('@rocket.chat/apps-engine/definition/accessors/INotifier.js') as {
TypingScope: typeof _TypingScope;
@ -65,11 +66,19 @@ export class Notifier implements INotifier {
await this.senderFn({
method: `bridges:getMessageBridge:${method}`,
params,
}).catch((err) => {
throw formatErrorResponse(err);
});
}
private async getAppUser(): Promise<IUser | undefined> {
const response = await this.senderFn({ method: 'bridges:getUserBridge:doGetAppUser', params: [AppObjectRegistry.get<string>('id')] });
const response = await this.senderFn({
method: 'bridges:getUserBridge:doGetAppUser',
params: [AppObjectRegistry.get<string>('id')],
}).catch((err) => {
throw formatErrorResponse(err);
});
return response.result;
}
}

@ -151,7 +151,7 @@ describe('ModifyCreator', () => {
name: 'Visitor Name',
}),
Error,
'[object Object]',
'An unknown error occurred',
);
});
@ -176,7 +176,7 @@ describe('ModifyCreator', () => {
const modifyCreator = new ModifyCreator(failingSenderFn);
const uploadCreator = modifyCreator.getUploadCreator();
await assertRejects(() => uploadCreator.uploadBuffer(new Uint8Array([1, 2, 3]), 'image/png'), Error, '[object Object]');
await assertRejects(() => uploadCreator.uploadBuffer(new Uint8Array([1, 2, 3]), 'image/png'), Error, 'An unknown error occurred');
});
it('throws an error when a proxy method of getEmailCreator fails', async () => {
@ -229,7 +229,7 @@ describe('ModifyCreator', () => {
text: 'This is a test email.',
}),
Error,
'[object Object]',
'An unknown error occurred',
);
});
@ -254,6 +254,6 @@ describe('ModifyCreator', () => {
const modifyCreator = new ModifyCreator(failingSenderFn);
const contactCreator = modifyCreator.getContactCreator();
await assertRejects(() => contactCreator.addContactEmail('test-contact-id', 'test@example.com'), Error, '[object Object]');
await assertRejects(() => contactCreator.addContactEmail('test-contact-id', 'test@example.com'), Error, 'An unknown error occurred');
});
});

@ -1,9 +1,11 @@
// deno-lint-ignore-file no-explicit-any
import { afterAll, beforeEach, describe, it } from 'https://deno.land/std@0.203.0/testing/bdd.ts';
import { assertSpyCall, spy } from 'https://deno.land/std@0.203.0/testing/mock.ts';
import { assertSpyCall, spy, stub } from 'https://deno.land/std@0.203.0/testing/mock.ts';
import { assertRejects } from 'https://deno.land/std@0.203.0/assert/mod.ts';
import { AppObjectRegistry } from '../../../AppObjectRegistry.ts';
import { ModifyExtender } from '../modify/ModifyExtender.ts';
import jsonrpc from 'jsonrpc-lite';
describe('ModifyExtender', () => {
let extender: ModifyExtender;
@ -117,4 +119,126 @@ describe('ModifyExtender', () => {
_spy.restore();
});
describe('Error Handling', () => {
describe('extendMessage', () => {
it('throws an instance of Error when senderFn throws an error', async () => {
const _stub = stub(extender, 'senderFn' as keyof ModifyExtender, () => Promise.reject(new Error('unit-test-error')) as any);
await assertRejects(() => extender.extendMessage('message-id', { _id: 'user-id' } as any), Error, 'unit-test-error');
_stub.restore();
});
it('throws an instance of Error when senderFn throws a jsonrpc error', async () => {
const _stub = stub(
extender,
'senderFn' as keyof ModifyExtender,
() => Promise.reject(jsonrpc.error('unit-test-error', new jsonrpc.JsonRpcError('unit-test-error', 1000))) as any,
);
await assertRejects(() => extender.extendMessage('message-id', { _id: 'user-id' } as any), Error, 'unit-test-error');
_stub.restore();
});
it('throws an instance of Error when senderFn throws an unknown value', async () => {
const _stub = stub(extender, 'senderFn' as keyof ModifyExtender, () => Promise.reject({}) as any);
await assertRejects(() => extender.extendMessage('message-id', { _id: 'user-id' } as any), Error, 'An unknown error occurred');
_stub.restore();
});
});
describe('extendRoom', () => {
it('throws an instance of Error when senderFn throws an error', async () => {
const _stub = stub(extender, 'senderFn' as keyof ModifyExtender, () => Promise.reject(new Error('unit-test-error')) as any);
await assertRejects(() => extender.extendRoom('room-id', { _id: 'user-id' } as any), Error, 'unit-test-error');
_stub.restore();
});
it('throws an instance of Error when senderFn throws a jsonrpc error', async () => {
const _stub = stub(
extender,
'senderFn' as keyof ModifyExtender,
() => Promise.reject(jsonrpc.error('unit-test-error', new jsonrpc.JsonRpcError('unit-test-error', 1000))) as any,
);
await assertRejects(() => extender.extendRoom('room-id', { _id: 'user-id' } as any), Error, 'unit-test-error');
_stub.restore();
});
it('throws an instance of Error when senderFn throws an unknown value', async () => {
const _stub = stub(extender, 'senderFn' as keyof ModifyExtender, () => Promise.reject({}) as any);
await assertRejects(() => extender.extendRoom('room-id', { _id: 'user-id' } as any), Error, 'An unknown error occurred');
_stub.restore();
});
});
describe('extendVideoConference', () => {
it('throws an instance of Error when senderFn throws an error', async () => {
const _stub = stub(extender, 'senderFn' as keyof ModifyExtender, () => Promise.reject(new Error('unit-test-error')) as any);
await assertRejects(() => extender.extendVideoConference('video-conference-id'), Error, 'unit-test-error');
_stub.restore();
});
it('throws an instance of Error when senderFn throws a jsonrpc error', async () => {
const _stub = stub(
extender,
'senderFn' as keyof ModifyExtender,
() => Promise.reject(jsonrpc.error('unit-test-error', new jsonrpc.JsonRpcError('unit-test-error', 1000))) as any,
);
await assertRejects(() => extender.extendVideoConference('video-conference-id'), Error, 'unit-test-error');
_stub.restore();
});
it('throws an instance of Error when senderFn throws an unknown value', async () => {
const _stub = stub(extender, 'senderFn' as keyof ModifyExtender, () => Promise.reject({}) as any);
await assertRejects(() => extender.extendVideoConference('video-conference-id'), Error, 'An unknown error occurred');
_stub.restore();
});
});
describe('finish', () => {
it('throws an instance of Error when senderFn throws an error', async () => {
const _stub = stub(extender, 'senderFn' as keyof ModifyExtender, () => Promise.reject(new Error('unit-test-error')) as any);
await assertRejects(() => extender.finish({ kind: 'message', getMessage: () => ({}) } as any), Error, 'unit-test-error');
_stub.restore();
});
it('throws an instance of Error when senderFn throws a jsonrpc error', async () => {
const _stub = stub(
extender,
'senderFn' as keyof ModifyExtender,
() => Promise.reject(jsonrpc.error('unit-test-error', new jsonrpc.JsonRpcError('unit-test-error', 1000))) as any,
);
await assertRejects(() => extender.finish({ kind: 'message', getMessage: () => ({}) } as any), Error, 'unit-test-error');
_stub.restore();
});
it('throws an instance of Error when senderFn throws an unknown value', async () => {
const _stub = stub(extender, 'senderFn' as keyof ModifyExtender, () => Promise.reject({}) as any);
await assertRejects(() => extender.finish({ kind: 'message', getMessage: () => ({}) } as any), Error, 'An unknown error occurred');
_stub.restore();
});
});
});
});

@ -1,11 +1,12 @@
// deno-lint-ignore-file no-explicit-any
import { afterAll, beforeEach, describe, it } from 'https://deno.land/std@0.203.0/testing/bdd.ts';
import { assertSpyCall, spy } from 'https://deno.land/std@0.203.0/testing/mock.ts';
import { assertEquals } from 'https://deno.land/std@0.203.0/assert/mod.ts';
import { assertSpyCall, spy, stub } from 'https://deno.land/std@0.203.0/testing/mock.ts';
import { assertEquals, assertRejects } from 'https://deno.land/std@0.203.0/assert/mod.ts';
import { AppObjectRegistry } from '../../../AppObjectRegistry.ts';
import { ModifyUpdater } from '../modify/ModifyUpdater.ts';
import { RoomBuilder } from '../builders/RoomBuilder.ts';
import jsonrpc from 'jsonrpc-lite';
describe('ModifyUpdater', () => {
let modifyUpdater: ModifyUpdater;
@ -73,7 +74,7 @@ describe('ModifyUpdater', () => {
it('correctly formats requests for the update room flow', async () => {
const _spy = spy(modifyUpdater, 'senderFn' as keyof ModifyUpdater);
const roomBuilder = await modifyUpdater.room('123', { id: '456' } as any) as RoomBuilder;
const roomBuilder = (await modifyUpdater.room('123', { id: '456' } as any)) as RoomBuilder;
assertSpyCall(_spy, 0, {
args: [
@ -110,7 +111,7 @@ describe('ModifyUpdater', () => {
});
it('correctly formats requests to UserUpdater methods', async () => {
const result = await modifyUpdater.getUserUpdater().updateStatusText({ id: '123' } as any, 'Hello World') as any;
const result = (await modifyUpdater.getUserUpdater().updateStatusText({ id: '123' } as any, 'Hello World')) as any;
assertEquals(result, {
method: 'accessor:getModifier:getUpdater:getUserUpdater:updateStatusText',
@ -119,11 +120,115 @@ describe('ModifyUpdater', () => {
});
it('correctly formats requests to LivechatUpdater methods', async () => {
const result = await modifyUpdater.getLivechatUpdater().closeRoom({ id: '123' } as any, 'close it!') as any;
const result = (await modifyUpdater.getLivechatUpdater().closeRoom({ id: '123' } as any, 'close it!')) as any;
assertEquals(result, {
method: 'accessor:getModifier:getUpdater:getLivechatUpdater:closeRoom',
params: [{ id: '123' }, 'close it!'],
});
});
describe('Error Handling', () => {
describe('message', () => {
it('throws an instance of Error when senderFn throws an error', async () => {
const _stub = stub(modifyUpdater, 'senderFn' as keyof ModifyUpdater, () => Promise.reject(new Error('unit-test-error')) as any);
await assertRejects(() => modifyUpdater.message('message-id', { _id: 'user-id' } as any), Error, 'unit-test-error');
_stub.restore();
});
it('throws an instance of Error when senderFn throws a jsonrpc error', async () => {
const _stub = stub(
modifyUpdater,
'senderFn' as keyof ModifyUpdater,
() => Promise.reject(jsonrpc.error('unit-test-error', new jsonrpc.JsonRpcError('unit-test-error', 1000))) as any,
);
await assertRejects(() => modifyUpdater.message('message-id', { _id: 'user-id' } as any), Error, 'unit-test-error');
_stub.restore();
});
it('throws an instance of Error when senderFn throws an unknown value', async () => {
const _stub = stub(modifyUpdater, 'senderFn' as keyof ModifyUpdater, () => Promise.reject({}) as any);
await assertRejects(() => modifyUpdater.message('message-id', { _id: 'user-id' } as any), Error, 'An unknown error occurred');
_stub.restore();
});
});
describe('room', () => {
it('throws an instance of Error when senderFn throws an error', async () => {
const _stub = stub(modifyUpdater, 'senderFn' as keyof ModifyUpdater, () => Promise.reject(new Error('unit-test-error')) as any);
await assertRejects(() => modifyUpdater.room('room-id', { _id: 'user-id' } as any), Error, 'unit-test-error');
_stub.restore();
});
it('throws an instance of Error when senderFn throws a jsonrpc error', async () => {
const _stub = stub(
modifyUpdater,
'senderFn' as keyof ModifyUpdater,
() => Promise.reject(jsonrpc.error('unit-test-error', new jsonrpc.JsonRpcError('unit-test-error', 1000))) as any,
);
await assertRejects(() => modifyUpdater.room('room-id', { _id: 'user-id' } as any), Error, 'unit-test-error');
_stub.restore();
});
it('throws an instance of Error when senderFn throws an unknown value', async () => {
const _stub = stub(modifyUpdater, 'senderFn' as keyof ModifyUpdater, () => Promise.reject({}) as any);
await assertRejects(() => modifyUpdater.room('room-id', { _id: 'user-id' } as any), Error, 'An unknown error occurred');
_stub.restore();
});
});
describe('finish', () => {
const messageUpdater = {
kind: 'message',
getMessage: () => ({
id: 'message-id',
sender: { id: 'sender-id' },
}),
getChanges: () => ({
id: 'message-id',
sender: { id: 'sender-id' },
}),
} as any;
it('throws an instance of Error when senderFn throws an error', async () => {
const _stub = stub(modifyUpdater, 'senderFn' as keyof ModifyUpdater, () => Promise.reject(new Error('unit-test-error')) as any);
await assertRejects(() => modifyUpdater.finish(messageUpdater), Error, 'unit-test-error');
_stub.restore();
});
it('throws an instance of Error when senderFn throws a jsonrpc error', async () => {
const _stub = stub(
modifyUpdater,
'senderFn' as keyof ModifyUpdater,
() => Promise.reject(jsonrpc.error('unit-test-error', new jsonrpc.JsonRpcError('unit-test-error', 1000))) as any,
);
await assertRejects(() => modifyUpdater.finish(messageUpdater), Error, 'unit-test-error');
_stub.restore();
});
it('throws an instance of Error when senderFn throws an unknown value', async () => {
const _stub = stub(modifyUpdater, 'senderFn' as keyof ModifyUpdater, () => Promise.reject({}) as any);
await assertRejects(() => modifyUpdater.finish(messageUpdater), Error, 'An unknown error occurred');
_stub.restore();
});
});
});
});

@ -0,0 +1,216 @@
// deno-lint-ignore-file no-explicit-any
import { assertEquals, assertInstanceOf, assertStrictEquals } from 'https://deno.land/std@0.203.0/assert/mod.ts';
import { describe, it } from 'https://deno.land/std@0.203.0/testing/bdd.ts';
import * as jsonrpc from 'jsonrpc-lite';
import { formatErrorResponse } from '../formatResponseErrorHandler.ts';
describe('formatErrorResponse', () => {
describe('JSON-RPC ErrorObject handling', () => {
it('formats ErrorObject instances correctly', () => {
const errorObject = jsonrpc.error('test-id', new jsonrpc.JsonRpcError('Test error message', 1000));
const result = formatErrorResponse(errorObject);
assertInstanceOf(result, Error);
assertEquals(result.message, 'Test error message');
});
it('formats objects with error.message structure', () => {
const errorLikeObject = {
error: {
message: 'Custom error message',
code: 404,
},
};
const result = formatErrorResponse(errorLikeObject);
assertInstanceOf(result, Error);
assertEquals(result.message, 'Custom error message');
});
it('handles nested error objects with complex structure', () => {
const complexError = {
error: {
message: 'Database connection failed',
details: {
host: 'localhost',
port: 5432,
},
},
id: 'req-123',
};
const result = formatErrorResponse(complexError);
assertInstanceOf(result, Error);
assertEquals(result.message, 'Database connection failed');
});
it('handles error objects with empty message', () => {
const emptyMessageError = {
error: {
message: '',
code: 500,
},
};
const result = formatErrorResponse(emptyMessageError);
assertInstanceOf(result, Error);
assertEquals(result.message, '');
});
});
describe('Error instance passthrough', () => {
it('returns existing Error instances unchanged', () => {
const originalError = new Error('Original error message');
const result = formatErrorResponse(originalError);
assertStrictEquals(result, originalError);
assertEquals(result.message, 'Original error message');
});
it('returns custom Error subclasses unchanged', () => {
class CustomError extends Error {
constructor(message: string, public code: number) {
super(message);
this.name = 'CustomError';
}
}
const customError = new CustomError('Custom error', 404);
const result = formatErrorResponse(customError);
assertStrictEquals(result, customError);
assertEquals(result.message, 'Custom error');
assertEquals((result as CustomError).code, 404);
});
it('handles Error instances with additional properties', () => {
const errorWithProps = new Error('Error with props') as any;
errorWithProps.statusCode = 500;
errorWithProps.details = { reason: 'timeout' };
const result = formatErrorResponse(errorWithProps);
assertStrictEquals(result, errorWithProps);
assertEquals(result.message, 'Error with props');
assertEquals((result as any).statusCode, 500);
});
});
describe('Unknown error handling', () => {
it('wraps string errors with default message and cause', () => {
const stringError = 'Simple string error';
const result = formatErrorResponse(stringError);
assertInstanceOf(result, Error);
assertEquals(result.message, 'An unknown error occurred');
assertEquals(result.cause, stringError);
});
it('wraps number errors with default message and cause', () => {
const numberError = 404;
const result = formatErrorResponse(numberError);
assertInstanceOf(result, Error);
assertEquals(result.message, 'An unknown error occurred');
assertEquals(result.cause, numberError);
});
it('wraps boolean errors with default message and cause', () => {
const booleanError = false;
const result = formatErrorResponse(booleanError);
assertInstanceOf(result, Error);
assertEquals(result.message, 'An unknown error occurred');
assertEquals(result.cause, booleanError);
});
it('wraps null with default message and cause', () => {
const result = formatErrorResponse(null);
assertInstanceOf(result, Error);
assertEquals(result.message, 'An unknown error occurred');
assertEquals(result.cause, null);
});
it('wraps undefined with default message and cause', () => {
const result = formatErrorResponse(undefined);
assertInstanceOf(result, Error);
assertEquals(result.message, 'An unknown error occurred');
assertEquals(result.cause, undefined);
});
it('wraps arrays with default message and cause', () => {
const arrayError = ['error', 'details'];
const result = formatErrorResponse(arrayError);
assertInstanceOf(result, Error);
assertEquals(result.message, 'An unknown error occurred');
assertEquals(result.cause, arrayError);
});
it('wraps functions with default message and cause', () => {
const functionError = () => 'error';
const result = formatErrorResponse(functionError);
assertInstanceOf(result, Error);
assertEquals(result.message, 'An unknown error occurred');
assertEquals(result.cause, functionError);
});
it('wraps plain objects without error.message with default message and cause', () => {
const plainObject = {
status: 'failed',
reason: 'timeout',
data: { id: 123 },
};
const result = formatErrorResponse(plainObject);
assertInstanceOf(result, Error);
assertEquals(result.message, 'An unknown error occurred');
assertEquals(result.cause, plainObject);
});
it('wraps objects with error property but no message with default message and cause', () => {
const errorObjectNoMessage = {
error: {
code: 500,
details: 'Internal server error',
},
};
const result = formatErrorResponse(errorObjectNoMessage);
assertInstanceOf(result, Error);
assertEquals(result.message, 'An unknown error occurred');
assertEquals(result.cause, errorObjectNoMessage);
});
});
it('ensures all returned values are proper Error instances', () => {
const testCases = [
'string error',
123,
null,
undefined,
{ error: { message: 'test' } },
new Error('test'),
{ plain: 'object' },
];
for (const testCase of testCases) {
const result = formatErrorResponse(testCase);
assertInstanceOf(result, Error, `Failed for input: ${JSON.stringify(testCase)}`);
}
});
it('prevents "[object Object]" error messages for plain objects', () => {
const plainObject = { status: 'error', code: 500 };
const result = formatErrorResponse(plainObject);
assertInstanceOf(result, Error);
assertEquals(result.message, 'An unknown error occurred');
// Ensure the message is not "[object Object]"
assertEquals(result.message !== '[object Object]', true);
});
});

@ -0,0 +1,164 @@
// deno-lint-ignore-file no-explicit-any
import { assertRejects } from 'https://deno.land/std@0.203.0/assert/mod.ts';
import { beforeEach, describe, it, afterAll } from 'https://deno.land/std@0.203.0/testing/bdd.ts';
import { Http } from '../http.ts';
import { AppObjectRegistry } from '../../../AppObjectRegistry.ts';
import { stub } from 'https://deno.land/std@0.203.0/testing/mock.ts';
describe('Http accessor error handling integration', () => {
let http: Http;
beforeEach(() => {
AppObjectRegistry.clear();
AppObjectRegistry.set('id', 'test-app-id');
const mockHttpExtend = {
getDefaultHeaders: () => new Map(),
getDefaultParams: () => new Map(),
getPreRequestHandlers: () => [],
getPreResponseHandlers: () => [],
};
const mockRead = {};
const mockPersistence = {};
http = new Http(mockRead as any, mockPersistence as any, mockHttpExtend as any, () => Promise.resolve({}) as any);
});
afterAll(() => {
AppObjectRegistry.clear();
});
describe('HTTP method error handling', () => {
it('formats JSON-RPC errors correctly for GET requests', async () => {
const _stub = stub(http, 'senderFn' as keyof Http, () =>
Promise.reject({
error: {
message: 'HTTP GET request failed',
code: 404,
},
}),
);
await assertRejects(() => http.get('https://api.example.com/data'), Error, 'HTTP GET request failed');
_stub.restore();
});
it('formats JSON-RPC errors correctly for POST requests', async () => {
const _stub = stub(http, 'senderFn' as keyof Http, () =>
Promise.reject({
error: {
message: 'HTTP POST request validation failed',
code: 400,
},
}),
);
await assertRejects(
() => http.post('https://api.example.com/create', { data: { name: 'test' } }),
Error,
'HTTP POST request validation failed',
);
_stub.restore();
});
it('formats JSON-RPC errors correctly for PUT requests', async () => {
const _stub = stub(http, 'senderFn' as keyof Http, () =>
Promise.reject({
error: {
message: 'HTTP PUT request unauthorized',
code: 401,
},
}),
);
await assertRejects(
() => http.put('https://api.example.com/update/123', { data: { name: 'updated' } }),
Error,
'HTTP PUT request unauthorized',
);
_stub.restore();
});
it('formats JSON-RPC errors correctly for DELETE requests', async () => {
const _stub = stub(http, 'senderFn' as keyof Http, () =>
Promise.reject({
error: {
message: 'HTTP DELETE request forbidden',
code: 403,
},
}),
);
await assertRejects(() => http.del('https://api.example.com/delete/123'), Error, 'HTTP DELETE request forbidden');
_stub.restore();
});
it('formats JSON-RPC errors correctly for PATCH requests', async () => {
const _stub = stub(http, 'senderFn' as keyof Http, () =>
Promise.reject({
error: {
message: 'HTTP PATCH request conflict',
code: 409,
},
}),
);
await assertRejects(
() => http.patch('https://api.example.com/patch/123', { data: { status: 'active' } }),
Error,
'HTTP PATCH request conflict',
);
_stub.restore();
});
});
describe('Error instance passthrough', () => {
it('passes through existing Error instances unchanged for HTTP requests', async () => {
const originalError = new Error('Network timeout error');
const _stub = stub(http, 'senderFn' as keyof Http, () => Promise.reject(originalError));
await assertRejects(() => http.get('https://api.example.com/data'), Error, 'Network timeout error');
_stub.restore();
});
});
describe('Unknown error handling', () => {
it('wraps unknown object errors with default message for HTTP requests', async () => {
const unknownError = {
status: 'failed',
details: 'Something went wrong',
timestamp: Date.now(),
};
const _stub = stub(http, 'senderFn' as keyof Http, () => Promise.reject(unknownError));
await assertRejects(() => http.get('https://api.example.com/data'), Error, 'An unknown error occurred');
_stub.restore();
});
it('wraps string errors with default message for HTTP requests', async () => {
const stringError = 'Connection refused';
const _stub = stub(http, 'senderFn' as keyof Http, () => Promise.reject(stringError));
await assertRejects(() => http.get('https://api.example.com/data'), Error, 'An unknown error occurred');
_stub.restore();
});
it('wraps null/undefined errors with default message for HTTP requests', async () => {
const _stub = stub(http, 'senderFn' as keyof Http, () => Promise.reject(null));
await assertRejects(() => http.get('https://api.example.com/data'), Error, 'An unknown error occurred');
_stub.restore();
});
});
});

@ -12,9 +12,11 @@ const getMockAppManager = (senderFn: AppAccessors['senderFn']) => ({
return senderFn({
method: 'bridges:getInternalBridge:doGetUsernamesOfRoomById',
params: [roomId],
}).then((result) => result.result).catch((err) => {
throw new JsonRpcError(`Error getting usernames of room: ${err}`, -32000);
});
})
.then((result) => result.result)
.catch((err) => {
throw new JsonRpcError(`Error getting usernames of room: ${err}`, -32000);
});
},
}),
}),

@ -1,11 +1,10 @@
# @rocket.chat/apps
## 0.5.5-rc.1
## 0.5.8-rc.1
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/core-typings@7.8.0-rc.1
- @rocket.chat/model-typings@1.6.5-rc.1
</details>
@ -19,8 +18,38 @@
- @rocket.chat/apps-engine@1.53.0-rc.0
- @rocket.chat/model-typings@1.6.5-rc.0
- @rocket.chat/core-typings@7.8.0-rc.0
</details>
## 0.5.7
### Patch Changes
- <details><summary>Updated dependencies [46662d78192b438914b2aedb974faa2367225fa5]:</summary>
- @rocket.chat/apps-engine@1.52.1
- @rocket.chat/core-typings@7.7.4
- @rocket.chat/model-typings@1.6.7
</details>
## 0.5.6
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/core-typings@7.7.3
- @rocket.chat/model-typings@1.6.6
</details>
## 0.5.5
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/core-typings@7.7.2
- @rocket.chat/model-typings@1.6.5
</details>
## 0.5.4
### Patch Changes

@ -1,6 +1,6 @@
{
"name": "@rocket.chat/apps",
"version": "0.5.5-rc.1",
"version": "0.5.8-rc.1",
"private": true,
"devDependencies": {
"@rocket.chat/tsconfig": "workspace:*",

@ -1,11 +1,10 @@
# @rocket.chat/core-services
## 0.9.5-rc.1
## 0.9.8-rc.1
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/core-typings@7.8.0-rc.1
- @rocket.chat/rest-typings@7.8.0-rc.1
- @rocket.chat/models@1.5.5-rc.1
@ -22,6 +21,38 @@
- @rocket.chat/core-typings@7.8.0-rc.0
</details>
## 0.9.7
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/core-typings@7.7.4
- @rocket.chat/rest-typings@7.7.4
- @rocket.chat/models@1.5.7
</details>
## 0.9.6
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/core-typings@7.7.3
- @rocket.chat/rest-typings@7.7.3
- @rocket.chat/models@1.5.6
</details>
## 0.9.5
### Patch Changes
- <details><summary>Updated dependencies [8874a5aab72c962f213d128a54393d95f7dabef8]:</summary>
- @rocket.chat/rest-typings@7.7.2
- @rocket.chat/models@1.5.5
- @rocket.chat/core-typings@7.7.2
</details>
## 0.9.4
### Patch Changes

@ -1,6 +1,6 @@
{
"name": "@rocket.chat/core-services",
"version": "0.9.5-rc.1",
"version": "0.9.8-rc.1",
"private": true,
"devDependencies": {
"@babel/core": "~7.26.0",

@ -10,6 +10,12 @@
- ([#36153](https://github.com/RocketChat/Rocket.Chat/pull/36153)) Adds a new setting to override outlook calendar settings per user email domain
## 7.7.4
## 7.7.3
## 7.7.2
## 7.7.1
## 7.7.0

@ -1,11 +1,10 @@
# @rocket.chat/cron
## 0.1.26-rc.1
## 0.1.29-rc.1
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/core-typings@7.8.0-rc.1
- @rocket.chat/models@1.5.5-rc.1
</details>
@ -18,6 +17,37 @@
- @rocket.chat/models@1.5.5-rc.0
- @rocket.chat/core-typings@7.8.0-rc.0
</details>
## 0.1.28
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/core-typings@7.7.4
- @rocket.chat/models@1.5.7
</details>
## 0.1.27
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/core-typings@7.7.3
- @rocket.chat/models@1.5.6
</details>
## 0.1.26
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/models@1.5.5
- @rocket.chat/core-typings@7.7.2
</details>
## 0.1.25

@ -1,6 +1,6 @@
{
"name": "@rocket.chat/cron",
"version": "0.1.26-rc.1",
"version": "0.1.29-rc.1",
"private": true,
"devDependencies": {
"@rocket.chat/tsconfig": "workspace:*",

@ -1,11 +1,10 @@
# @rocket.chat/ddp-client
## 0.3.26-rc.1
## 0.3.29-rc.1
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/core-typings@7.8.0-rc.1
- @rocket.chat/rest-typings@7.8.0-rc.1
- @rocket.chat/api-client@0.2.26-rc.1
@ -22,6 +21,38 @@
- @rocket.chat/api-client@0.2.26-rc.0
</details>
## 0.3.28
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/core-typings@7.7.4
- @rocket.chat/rest-typings@7.7.4
- @rocket.chat/api-client@0.2.28
</details>
## 0.3.27
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/core-typings@7.7.3
- @rocket.chat/rest-typings@7.7.3
- @rocket.chat/api-client@0.2.27
</details>
## 0.3.26
### Patch Changes
- <details><summary>Updated dependencies [8874a5aab72c962f213d128a54393d95f7dabef8]:</summary>
- @rocket.chat/rest-typings@7.7.2
- @rocket.chat/api-client@0.2.26
- @rocket.chat/core-typings@7.7.2
</details>
## 0.3.25
### Patch Changes

@ -1,6 +1,6 @@
{
"name": "@rocket.chat/ddp-client",
"version": "0.3.26-rc.1",
"version": "0.3.29-rc.1",
"devDependencies": {
"@rocket.chat/jest-presets": "workspace:~",
"@rocket.chat/tsconfig": "workspace:*",

@ -1,12 +1,11 @@
# @rocket.chat/freeswitch
## 1.2.13-rc.1
## 1.2.16-rc.1
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/core-typings@7.8.0-rc.1
- @rocket.chat/core-typings@7.8.0-rc.1
</details>
## 1.2.13-rc.0
@ -16,6 +15,34 @@
- <details><summary>Updated dependencies [3d024a900426c8bbf646e7ebedce0e17c9f7c140, 3779de0e8c5787f266bdeda5052b27c023c65f1c]:</summary>
- @rocket.chat/core-typings@7.8.0-rc.0
</details>
## 1.2.15
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/core-typings@7.7.4
</details>
## 1.2.14
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/core-typings@7.7.3
</details>
## 1.2.13
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/core-typings@7.7.2
</details>
## 1.2.12

@ -1,6 +1,6 @@
{
"name": "@rocket.chat/freeswitch",
"version": "1.2.13-rc.1",
"version": "1.2.16-rc.1",
"private": true,
"devDependencies": {
"@rocket.chat/jest-presets": "workspace:~",

@ -5,8 +5,7 @@
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/core-typings@7.8.0-rc.1
- @rocket.chat/core-typings@7.8.0-rc.1
- @rocket.chat/gazzodown@20.0.0-rc.1
- @rocket.chat/ui-contexts@20.0.0-rc.1
- @rocket.chat/ui-avatar@16.0.0-rc.1
@ -27,6 +26,45 @@
- @rocket.chat/ui-video-conf@20.0.0-rc.0
</details>
## 19.0.4
### Patch Changes
- <details><summary>Updated dependencies [46662d78192b438914b2aedb974faa2367225fa5]:</summary>
- @rocket.chat/apps-engine@1.52.1
- @rocket.chat/core-typings@7.7.4
- @rocket.chat/gazzodown@19.0.4
- @rocket.chat/ui-contexts@19.0.4
- @rocket.chat/ui-avatar@15.0.4
- @rocket.chat/ui-video-conf@19.0.4
</details>
## 19.0.3
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/core-typings@7.7.3
- @rocket.chat/gazzodown@19.0.3
- @rocket.chat/ui-contexts@19.0.3
- @rocket.chat/ui-avatar@15.0.3
- @rocket.chat/ui-video-conf@19.0.3
</details>
## 19.0.2
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/ui-contexts@19.0.2
- @rocket.chat/gazzodown@19.0.2
- @rocket.chat/ui-avatar@15.0.2
- @rocket.chat/ui-video-conf@19.0.2
- @rocket.chat/core-typings@7.7.2
</details>
## 19.0.1
### Patch Changes

@ -5,7 +5,6 @@
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/core-typings@7.8.0-rc.1
- @rocket.chat/ui-contexts@20.0.0-rc.1
- @rocket.chat/ui-client@20.0.0-rc.1
@ -22,6 +21,38 @@
- @rocket.chat/ui-client@20.0.0-rc.0
</details>
## 19.0.4
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/core-typings@7.7.4
- @rocket.chat/ui-contexts@19.0.4
- @rocket.chat/ui-client@19.0.4
</details>
## 19.0.3
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/core-typings@7.7.3
- @rocket.chat/ui-contexts@19.0.3
- @rocket.chat/ui-client@19.0.3
</details>
## 19.0.2
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/ui-contexts@19.0.2
- @rocket.chat/ui-client@19.0.2
- @rocket.chat/core-typings@7.7.2
</details>
## 19.0.1
### Patch Changes

@ -1,11 +1,10 @@
# @rocket.chat/instance-status
## 0.1.26-rc.1
## 0.1.29-rc.1
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/models@1.5.5-rc.1
</details>
@ -18,6 +17,32 @@
- @rocket.chat/models@1.5.5-rc.0
</details>
## 0.1.28
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/models@1.5.7
</details>
## 0.1.27
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/models@1.5.6
</details>
## 0.1.26
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/models@1.5.5
</details>
## 0.1.25
### Patch Changes

@ -1,6 +1,6 @@
{
"name": "@rocket.chat/instance-status",
"version": "0.1.26-rc.1",
"version": "0.1.29-rc.1",
"private": true,
"devDependencies": {
"@rocket.chat/eslint-config": "workspace:^",

@ -5,7 +5,6 @@
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/gazzodown@20.0.0-rc.1
</details>
@ -19,8 +18,34 @@
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/gazzodown@20.0.0-rc.0
</details>
## 1.22.15
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/gazzodown@19.0.4
</details>
## 1.22.14
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/gazzodown@19.0.3
</details>
## 1.22.13
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/gazzodown@19.0.2
</details>
## 1.22.12

@ -1,11 +1,10 @@
# @rocket.chat/mock-providers
## 0.2.5-rc.1
## 0.2.8-rc.1
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/ui-contexts@20.0.0-rc.1
</details>
@ -17,6 +16,34 @@
- @rocket.chat/i18n@1.8.0-rc.0
- @rocket.chat/ui-contexts@20.0.0-rc.0
</details>
## 0.2.7
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/ui-contexts@19.0.4
</details>
## 0.2.6
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/ui-contexts@19.0.3
</details>
## 0.2.5
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/ui-contexts@19.0.2
</details>
## 0.2.4

@ -1,6 +1,6 @@
{
"name": "@rocket.chat/mock-providers",
"version": "0.2.5-rc.1",
"version": "0.2.8-rc.1",
"private": true,
"dependencies": {
"@rocket.chat/emitter": "~0.31.25",

@ -1,11 +1,10 @@
# @rocket.chat/model-typings
## 1.6.5-rc.1
## 1.6.8-rc.1
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/core-typings@7.8.0-rc.1
</details>
@ -22,6 +21,32 @@
- @rocket.chat/core-typings@7.8.0-rc.0
</details>
## 1.6.7
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/core-typings@7.7.4
</details>
## 1.6.6
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/core-typings@7.7.3
</details>
## 1.6.5
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/core-typings@7.7.2
</details>
## 1.6.4
### Patch Changes

@ -1,6 +1,6 @@
{
"name": "@rocket.chat/model-typings",
"version": "1.6.5-rc.1",
"version": "1.6.8-rc.1",
"private": true,
"devDependencies": {
"@types/node-rsa": "^1.1.4",

@ -1,11 +1,10 @@
# @rocket.chat/models
## 1.5.5-rc.1
## 1.5.8-rc.1
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/rest-typings@7.8.0-rc.1
- @rocket.chat/model-typings@1.6.5-rc.1
</details>
@ -26,6 +25,35 @@
- @rocket.chat/model-typings@1.6.5-rc.0
</details>
## 1.5.7
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/rest-typings@7.7.4
- @rocket.chat/model-typings@1.6.7
</details>
## 1.5.6
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/rest-typings@7.7.3
- @rocket.chat/model-typings@1.6.6
</details>
## 1.5.5
### Patch Changes
- <details><summary>Updated dependencies [8874a5aab72c962f213d128a54393d95f7dabef8]:</summary>
- @rocket.chat/rest-typings@7.7.2
- @rocket.chat/model-typings@1.6.5
</details>
## 1.5.4
### Patch Changes

@ -1,6 +1,6 @@
{
"name": "@rocket.chat/models",
"version": "1.5.5-rc.1",
"version": "1.5.8-rc.1",
"private": true,
"devDependencies": {
"@rocket.chat/jest-presets": "workspace:~",

@ -16,7 +16,6 @@ export class AppsLogsModel extends BaseRaw<any> implements IAppLogsModel {
_updatedAt: 1,
},
expireAfterSeconds: 60 * 60 * 24 * 30,
name: 'ttl_30_days',
},
// Index for specific queries from the logs screen (most common)
{

@ -5,7 +5,6 @@
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/core-typings@7.8.0-rc.1
</details>
@ -24,6 +23,34 @@
- @rocket.chat/core-typings@7.8.0-rc.0
</details>
## 7.7.4
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/core-typings@7.7.4
</details>
## 7.7.3
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/core-typings@7.7.3
</details>
## 7.7.2
### Patch Changes
- ([#36298](https://github.com/RocketChat/Rocket.Chat/pull/36298) by [@dionisio-bot](https://github.com/dionisio-bot)) Fixes an issue that prevented the action of removing an agent when editing a department to work.
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/core-typings@7.7.2
</details>
## 7.7.1
### Patch Changes

@ -215,6 +215,10 @@ const LivechatDepartmentDepartmentIdAgentsPOSTSchema = {
order: {
type: 'number',
},
departmentEnabled: { type: 'boolean' },
departmentId: { type: 'string' },
_id: { type: 'string' },
_updatedAt: { type: 'string' },
},
required: ['agentId', 'username'],
additionalProperties: false,

@ -5,7 +5,6 @@
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/ui-contexts@20.0.0-rc.1
</details>
@ -14,8 +13,34 @@
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/ui-contexts@20.0.0-rc.0
</details>
## 15.0.4
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/ui-contexts@19.0.4
</details>
## 15.0.3
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/ui-contexts@19.0.3
</details>
## 15.0.2
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/ui-contexts@19.0.2
</details>
## 15.0.1

@ -5,7 +5,6 @@
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/ui-contexts@20.0.0-rc.1
- @rocket.chat/ui-avatar@16.0.0-rc.1
</details>
@ -15,11 +14,39 @@
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/ui-contexts@20.0.0-rc.0
- @rocket.chat/ui-avatar@16.0.0-rc.0
</details>
## 19.0.4
### Patch Changes
- @rocket.chat/ui-contexts@19.0.4
- @rocket.chat/ui-avatar@15.0.4
</details>
## 19.0.3
- <details><summary>Updated dependencies []:</summary>
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/ui-contexts@19.0.3
- @rocket.chat/ui-avatar@15.0.3
</details>
## 19.0.2
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/ui-contexts@19.0.2
- @rocket.chat/ui-avatar@15.0.2
</details>
## 19.0.1
### Patch Changes

@ -5,7 +5,6 @@
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/core-typings@7.8.0-rc.1
- @rocket.chat/rest-typings@7.8.0-rc.1
- @rocket.chat/ddp-client@0.3.26-rc.1
@ -21,6 +20,40 @@
- @rocket.chat/i18n@1.8.0-rc.0
- @rocket.chat/core-typings@7.8.0-rc.0
- @rocket.chat/ddp-client@0.3.26-rc.0
</details>
## 19.0.4
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/core-typings@7.7.4
- @rocket.chat/rest-typings@7.7.4
- @rocket.chat/ddp-client@0.3.28
</details>
## 19.0.3
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/core-typings@7.7.3
- @rocket.chat/rest-typings@7.7.3
- @rocket.chat/ddp-client@0.3.27
</details>
## 19.0.2
### Patch Changes
- <details><summary>Updated dependencies [8874a5aab72c962f213d128a54393d95f7dabef8]:</summary>
- @rocket.chat/rest-typings@7.7.2
- @rocket.chat/ddp-client@0.3.26
- @rocket.chat/core-typings@7.7.2
</details>
## 19.0.1

@ -5,7 +5,6 @@
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/ui-contexts@20.0.0-rc.1
- @rocket.chat/ui-avatar@16.0.0-rc.1
</details>
@ -15,9 +14,38 @@
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/ui-contexts@20.0.0-rc.0
- @rocket.chat/ui-avatar@16.0.0-rc.0
</details>
## 19.0.4
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/ui-contexts@19.0.4
- @rocket.chat/ui-avatar@15.0.4
</details>
## 19.0.3
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/ui-contexts@19.0.3
- @rocket.chat/ui-avatar@15.0.3
</details>
## 19.0.2
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/ui-contexts@19.0.2
- @rocket.chat/ui-avatar@15.0.2
</details>
## 19.0.1

@ -1,25 +1,57 @@
# @rocket.chat/ui-voip
## 10.0.0-rc.1
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/ui-contexts@20.0.0-rc.1
- @rocket.chat/ui-avatar@16.0.0-rc.1
- @rocket.chat/ui-client@20.0.0-rc.1
</details>
## 10.0.0-rc.1
- @rocket.chat/ui-contexts@20.0.0-rc.1
- @rocket.chat/ui-avatar@16.0.0-rc.1
- @rocket.chat/ui-client@20.0.0-rc.1
</details>
## 10.0.0-rc.0
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/ui-contexts@20.0.0-rc.0
- @rocket.chat/ui-avatar@16.0.0-rc.0
- @rocket.chat/ui-client@20.0.0-rc.0
</details>
## 9.0.4
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/ui-contexts@19.0.4
- @rocket.chat/ui-avatar@15.0.4
- @rocket.chat/ui-client@19.0.4
</details>
## 9.0.3
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/ui-contexts@19.0.3
- @rocket.chat/ui-avatar@15.0.3
- @rocket.chat/ui-client@19.0.3
</details>
## 9.0.2
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/ui-contexts@19.0.2
- @rocket.chat/ui-avatar@15.0.2
- @rocket.chat/ui-client@19.0.2
</details>
## 9.0.1

@ -5,7 +5,6 @@
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/ui-contexts@20.0.0-rc.1
</details>
@ -20,6 +19,32 @@
- @rocket.chat/ui-contexts@20.0.0-rc.0
</details>
## 19.0.4
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/ui-contexts@19.0.4
</details>
## 19.0.3
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/ui-contexts@19.0.3
</details>
## 19.0.2
### Patch Changes
- <details><summary>Updated dependencies []:</summary>
- @rocket.chat/ui-contexts@19.0.2
</details>
## 19.0.1
### Patch Changes

Loading…
Cancel
Save