Skip to content
This repository was archived by the owner on Nov 5, 2025. It is now read-only.

Commit 52805ec

Browse files
authored
fix: handler errors no being sent to subprocess (#784)
1 parent 4bb6dec commit 52805ec

File tree

4 files changed

+53
-33
lines changed

4 files changed

+53
-33
lines changed

deno-runtime/lib/accessors/mod.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ export class AppAccessors {
7171
params,
7272
})
7373
.then((response) => response.result)
74-
.catch((err) => err.error);
74+
.catch((err) => { throw new Error(err.error) });
7575
},
7676
},
7777
) as T;

deno-runtime/lib/accessors/modify/ModifyCreator.ts

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ const { RocketChatAssociationModel } = require('@rocket.chat/apps-engine/definit
3434
};
3535

3636
export class ModifyCreator implements IModifyCreator {
37-
constructor(private readonly senderFn: typeof Messenger.sendRequest) {}
37+
constructor(private readonly senderFn: typeof Messenger.sendRequest) { }
3838

3939
getLivechatCreator(): ILivechatCreator {
4040
return new Proxy(
@@ -56,7 +56,9 @@ export class ModifyCreator implements IModifyCreator {
5656
params,
5757
})
5858
.then((response) => response.result)
59-
.catch((err) => err.error);
59+
.catch((err) => {
60+
throw new Error(err.error);
61+
});
6062
},
6163
},
6264
) as ILivechatCreator;
@@ -68,15 +70,17 @@ export class ModifyCreator implements IModifyCreator {
6870
{
6971
get:
7072
(_target: unknown, prop: string) =>
71-
(...params: unknown[]) =>
72-
prop === 'toJSON'
73-
? {}
74-
: this.senderFn({
75-
method: `accessor:getModifier:getCreator:getUploadCreator:${prop}`,
76-
params,
77-
})
78-
.then((response) => response.result)
79-
.catch((err) => err.error),
73+
(...params: unknown[]) =>
74+
prop === 'toJSON'
75+
? {}
76+
: this.senderFn({
77+
method: `accessor:getModifier:getCreator:getUploadCreator:${prop}`,
78+
params,
79+
})
80+
.then((response) => response.result)
81+
.catch((err) => {
82+
throw new Error(err.error);
83+
}),
8084
},
8185
) as IUploadCreator;
8286
}

deno-runtime/lib/accessors/modify/ModifyUpdater.ts

Lines changed: 23 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -26,23 +26,25 @@ const { RocketChatAssociationModel } = require('@rocket.chat/apps-engine/definit
2626
};
2727

2828
export class ModifyUpdater implements IModifyUpdater {
29-
constructor(private readonly senderFn: typeof Messenger.sendRequest) {}
29+
constructor(private readonly senderFn: typeof Messenger.sendRequest) { }
3030

3131
public getLivechatUpdater(): ILivechatUpdater {
3232
return new Proxy(
3333
{ __kind: 'getLivechatUpdater' },
3434
{
3535
get:
3636
(_target: unknown, prop: string) =>
37-
(...params: unknown[]) =>
38-
prop === 'toJSON'
39-
? {}
40-
: this.senderFn({
41-
method: `accessor:getModifier:getUpdater:getLivechatUpdater:${prop}`,
42-
params,
43-
})
44-
.then((response) => response.result)
45-
.catch((err) => err.error),
37+
(...params: unknown[]) =>
38+
prop === 'toJSON'
39+
? {}
40+
: this.senderFn({
41+
method: `accessor:getModifier:getUpdater:getLivechatUpdater:${prop}`,
42+
params,
43+
})
44+
.then((response) => response.result)
45+
.catch((err) => {
46+
throw new Error(err.error);
47+
}),
4648
},
4749
) as ILivechatUpdater;
4850
}
@@ -53,15 +55,17 @@ export class ModifyUpdater implements IModifyUpdater {
5355
{
5456
get:
5557
(_target: unknown, prop: string) =>
56-
(...params: unknown[]) =>
57-
prop === 'toJSON'
58-
? {}
59-
: this.senderFn({
60-
method: `accessor:getModifier:getUpdater:getUserUpdater:${prop}`,
61-
params,
62-
})
63-
.then((response) => response.result)
64-
.catch((err) => err.error),
58+
(...params: unknown[]) =>
59+
prop === 'toJSON'
60+
? {}
61+
: this.senderFn({
62+
method: `accessor:getModifier:getUpdater:getUserUpdater:${prop}`,
63+
params,
64+
})
65+
.then((response) => response.result)
66+
.catch((err) => {
67+
throw new Error(err.error);
68+
}),
6569
},
6670
) as IUserUpdater;
6771
}

src/server/runtime/deno/AppsEngineDenoRuntime.ts

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -455,15 +455,27 @@ export class DenoRuntimeSubprocessController extends EventEmitter {
455455
const { method } = message.payload;
456456

457457
if (method.startsWith('accessor:')) {
458-
const result = await this.handleAccessorMessage(message as jsonrpc.IParsedObjectRequest);
458+
let result: jsonrpc.SuccessObject | jsonrpc.ErrorObject;
459+
460+
try {
461+
result = await this.handleAccessorMessage(message as jsonrpc.IParsedObjectRequest);
462+
} catch (e) {
463+
result = jsonrpc.error((message.payload as jsonrpc.RequestObject).id, new jsonrpc.JsonRpcError(e.message, 1000));
464+
}
459465

460466
this.messenger.send(result);
461467

462468
return;
463469
}
464470

465471
if (method.startsWith('bridges:')) {
466-
const result = await this.handleBridgeMessage(message as jsonrpc.IParsedObjectRequest);
472+
let result: jsonrpc.SuccessObject | jsonrpc.ErrorObject;
473+
474+
try {
475+
result = await this.handleBridgeMessage(message as jsonrpc.IParsedObjectRequest);
476+
} catch (e) {
477+
result = jsonrpc.error((message.payload as jsonrpc.RequestObject).id, new jsonrpc.JsonRpcError(e.message, 1000));
478+
}
467479

468480
this.messenger.send(result);
469481

0 commit comments

Comments
 (0)