@microsoft/teams.apps 2.0.0-preview.0 → 2.0.0-preview.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/app.d.ts +59 -53
- package/dist/app.embed.d.ts +4 -3
- package/dist/app.embed.js +12 -2
- package/dist/app.events.d.ts +7 -7
- package/dist/app.events.js +1 -1
- package/dist/app.js +48 -16
- package/dist/app.oauth.d.ts +4 -2
- package/dist/app.oauth.js +1 -1
- package/dist/app.plugins.d.ts +3 -3
- package/dist/app.plugins.js +14 -2
- package/dist/app.process.d.ts +2 -2
- package/dist/app.process.js +28 -21
- package/dist/app.routing.d.ts +9 -5
- package/dist/app.routing.js +1 -1
- package/dist/contexts/activity-signin.d.ts +1 -1
- package/dist/contexts/activity.d.ts +14 -7
- package/dist/contexts/activity.js +5 -4
- package/dist/contexts/client.d.ts +10 -6
- package/dist/contexts/function.d.ts +15 -0
- package/dist/events/index.d.ts +1 -0
- package/dist/events/index.js +14 -1
- package/dist/middleware/auth/jwt-validator.d.ts +60 -0
- package/dist/middleware/auth/jwt-validator.js +213 -0
- package/dist/middleware/index.d.ts +3 -2
- package/dist/middleware/index.js +7 -5
- package/dist/middleware/jwt-validation-middleware.d.ts +11 -0
- package/dist/middleware/jwt-validation-middleware.js +46 -0
- package/dist/middleware/strip-mentions-text.d.ts +1 -1
- package/dist/middleware/strip-mentions-text.js +1 -1
- package/dist/middleware/with-remote-function-jwt-validation.d.ts +16 -0
- package/dist/middleware/with-remote-function-jwt-validation.js +47 -0
- package/dist/plugins/http/plugin.d.ts +10 -4
- package/dist/plugins/http/plugin.js +39 -21
- package/dist/plugins/http/stream.d.ts +5 -3
- package/dist/plugins/http/stream.js +59 -39
- package/dist/router.d.ts +9 -9
- package/dist/router.js +1 -1
- package/dist/routes/activity.d.ts +2 -2
- package/dist/routes/conversation-update.d.ts +2 -2
- package/dist/routes/event.d.ts +2 -2
- package/dist/routes/index.d.ts +7 -6
- package/dist/routes/index.js +4 -4
- package/dist/routes/install.d.ts +2 -2
- package/dist/routes/invoke/index.d.ts +2 -2
- package/dist/routes/message-delete.d.ts +2 -2
- package/dist/routes/message-update.d.ts +2 -2
- package/dist/types/app-events.d.ts +25 -0
- package/dist/types/app-events.js +3 -0
- package/dist/types/app-routing.d.ts +11 -0
- package/dist/types/app-routing.js +3 -0
- package/dist/types/index.d.ts +6 -4
- package/dist/types/index.js +7 -5
- package/dist/types/plugin/decorators/event.d.ts +1 -1
- package/dist/types/plugin/plugin.d.ts +11 -6
- package/dist/types/plugin/sender.d.ts +1 -1
- package/dist/types/plugin/sender.js +2 -1
- package/dist/types/route-handler.d.ts +1 -1
- package/dist/types/union-to-intersection.d.ts +1 -0
- package/dist/types/union-to-intersection.js +3 -0
- package/dist/utils/asserts.d.ts +1 -0
- package/dist/utils/asserts.js +12 -0
- package/dist/utils/function-context.d.ts +5 -0
- package/dist/utils/function-context.js +54 -0
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/index.js +4 -2
- package/dist/utils/promises/retry.d.ts +8 -3
- package/dist/utils/promises/retry.js +14 -6
- package/package.json +5 -5
- package/dist/middleware/entra-token-validator.d.ts +0 -75
- package/dist/middleware/entra-token-validator.js +0 -169
- package/dist/middleware/with-client-auth.d.ts +0 -13
- package/dist/middleware/with-client-auth.js +0 -40
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import http from 'http';
|
|
2
2
|
import express from 'express';
|
|
3
|
-
import { ActivityParams, ConversationReference, IToken } from '@microsoft/teams.api';
|
|
3
|
+
import { ActivityParams, ConversationReference, Credentials, IToken } from '@microsoft/teams.api';
|
|
4
4
|
import { ILogger } from '@microsoft/teams.common';
|
|
5
5
|
import * as $http from '@microsoft/teams.common/http';
|
|
6
6
|
import { IActivityEvent, IErrorEvent } from '../../events';
|
|
7
7
|
import { Manifest } from '../../manifest';
|
|
8
|
+
import { JwtValidatedRequest } from '../../middleware/jwt-validation-middleware';
|
|
8
9
|
import { IPluginActivityResponseEvent, IPluginErrorEvent, IPluginStartEvent, ISender, IStreamer } from '../../types';
|
|
9
10
|
/**
|
|
10
11
|
* Can send/receive activities via http
|
|
@@ -13,6 +14,7 @@ export declare class HttpPlugin implements ISender {
|
|
|
13
14
|
readonly logger: ILogger;
|
|
14
15
|
readonly client: $http.Client;
|
|
15
16
|
readonly manifest: Partial<Manifest>;
|
|
17
|
+
readonly credentials?: Credentials;
|
|
16
18
|
readonly botToken?: () => IToken;
|
|
17
19
|
readonly graphToken?: () => IToken;
|
|
18
20
|
readonly $onError: (event: IErrorEvent) => void;
|
|
@@ -30,13 +32,17 @@ export declare class HttpPlugin implements ISender {
|
|
|
30
32
|
protected _port?: number;
|
|
31
33
|
protected express: express.Application;
|
|
32
34
|
protected pending: Record<string, express.Response>;
|
|
33
|
-
|
|
35
|
+
protected skipAuth: boolean;
|
|
36
|
+
constructor(server?: http.Server, options?: {
|
|
37
|
+
skipAuth?: boolean;
|
|
38
|
+
});
|
|
34
39
|
/**
|
|
35
40
|
* serve static files
|
|
36
41
|
* @param path the url path to serve
|
|
37
42
|
* @param dist the dist file path to serve
|
|
38
43
|
*/
|
|
39
44
|
static(path: string, dist: string): this;
|
|
45
|
+
onInit(): void;
|
|
40
46
|
onStart({ port }: IPluginStartEvent): Promise<void>;
|
|
41
47
|
onStop(): void;
|
|
42
48
|
onError({ error, activity }: IPluginErrorEvent): void;
|
|
@@ -849,7 +855,7 @@ export declare class HttpPlugin implements ISender {
|
|
|
849
855
|
topicName?: string | undefined;
|
|
850
856
|
historyDisclosed?: boolean | undefined;
|
|
851
857
|
channelData?: (import("@microsoft/teams.api").ChannelData & {
|
|
852
|
-
eventType: "channelCreated" | "channelDeleted" | "channelRenamed" | "channelRestored" | "teamArchived" | "teamDeleted" | "teamHardDeleted" | "teamRenamed" | "teamRestored" | "teamUnarchived";
|
|
858
|
+
eventType: "channelCreated" | "channelDeleted" | "channelRenamed" | "channelRestored" | "channelShared" | "channelUnshared" | "channelMemberAdded" | "channelMemberRemoved" | "teamArchived" | "teamDeleted" | "teamHardDeleted" | "teamRenamed" | "teamRestored" | "teamUnarchived";
|
|
853
859
|
}) | undefined;
|
|
854
860
|
serviceUrl?: string | undefined;
|
|
855
861
|
timestamp?: Date | undefined;
|
|
@@ -982,5 +988,5 @@ export declare class HttpPlugin implements ISender {
|
|
|
982
988
|
* @param req the incoming http request
|
|
983
989
|
* @param res the http response
|
|
984
990
|
*/
|
|
985
|
-
protected onRequest(req:
|
|
991
|
+
protected onRequest(req: JwtValidatedRequest, res: express.Response, _next: express.NextFunction): Promise<void>;
|
|
986
992
|
}
|
|
@@ -52,6 +52,7 @@ const express_1 = __importDefault(require("express"));
|
|
|
52
52
|
const teams_api_1 = require("@microsoft/teams.api");
|
|
53
53
|
const $http = __importStar(require("@microsoft/teams.common/http"));
|
|
54
54
|
const package_json_1 = __importDefault(require("../../../package.json"));
|
|
55
|
+
const jwt_validation_middleware_1 = require("../../middleware/jwt-validation-middleware");
|
|
55
56
|
const types_1 = require("../../types");
|
|
56
57
|
const stream_1 = require("./stream");
|
|
57
58
|
/**
|
|
@@ -61,6 +62,7 @@ let HttpPlugin = class HttpPlugin {
|
|
|
61
62
|
logger;
|
|
62
63
|
client;
|
|
63
64
|
manifest;
|
|
65
|
+
credentials;
|
|
64
66
|
botToken;
|
|
65
67
|
graphToken;
|
|
66
68
|
$onError;
|
|
@@ -82,9 +84,12 @@ let HttpPlugin = class HttpPlugin {
|
|
|
82
84
|
_port;
|
|
83
85
|
express;
|
|
84
86
|
pending = {};
|
|
85
|
-
|
|
87
|
+
skipAuth;
|
|
88
|
+
constructor(server, options) {
|
|
89
|
+
this.skipAuth = options?.skipAuth ?? false;
|
|
86
90
|
this.express = (0, express_1.default)();
|
|
87
|
-
this._server = http_1.default.createServer(
|
|
91
|
+
this._server = server || http_1.default.createServer();
|
|
92
|
+
this._server.on('request', this.express);
|
|
88
93
|
this.get = this.express.get.bind(this.express);
|
|
89
94
|
this.post = this.express.post.bind(this.express);
|
|
90
95
|
this.patch = this.express.patch.bind(this.express);
|
|
@@ -94,7 +99,6 @@ let HttpPlugin = class HttpPlugin {
|
|
|
94
99
|
this.use = this.express.use.bind(this.express);
|
|
95
100
|
this.express.use((0, cors_1.default)());
|
|
96
101
|
this.express.use('/api*', express_1.default.json());
|
|
97
|
-
this.express.post('/api/messages', this.onRequest.bind(this));
|
|
98
102
|
}
|
|
99
103
|
/**
|
|
100
104
|
* serve static files
|
|
@@ -105,18 +109,29 @@ let HttpPlugin = class HttpPlugin {
|
|
|
105
109
|
this.express.use(path, express_1.default.static(dist));
|
|
106
110
|
return this;
|
|
107
111
|
}
|
|
112
|
+
onInit() {
|
|
113
|
+
const messageHandlers = [this.onRequest.bind(this)];
|
|
114
|
+
if (!this.skipAuth) {
|
|
115
|
+
// Setup /api/messages route with JWT validation middleware
|
|
116
|
+
const jwtMiddleware = (0, jwt_validation_middleware_1.withJwtValidation)({
|
|
117
|
+
credentials: this.credentials,
|
|
118
|
+
logger: this.logger
|
|
119
|
+
});
|
|
120
|
+
messageHandlers.unshift(jwtMiddleware);
|
|
121
|
+
}
|
|
122
|
+
this.express.post('/api/messages', ...messageHandlers);
|
|
123
|
+
}
|
|
108
124
|
async onStart({ port }) {
|
|
109
125
|
this._port = port;
|
|
110
126
|
this.express.get('/', (_, res) => {
|
|
111
127
|
res.send(this.manifest);
|
|
112
128
|
});
|
|
113
129
|
return await new Promise((resolve, reject) => {
|
|
114
|
-
this._server
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
}
|
|
130
|
+
this._server.on('error', (err) => {
|
|
131
|
+
this.$onError({ error: err });
|
|
132
|
+
reject(err);
|
|
133
|
+
});
|
|
134
|
+
this._server.listen(port, () => {
|
|
120
135
|
this.logger.info(`listening on port ${port} 🚀`);
|
|
121
136
|
resolve();
|
|
122
137
|
});
|
|
@@ -143,7 +158,7 @@ let HttpPlugin = class HttpPlugin {
|
|
|
143
158
|
return;
|
|
144
159
|
}
|
|
145
160
|
if (!res.headersSent) {
|
|
146
|
-
res.status(response.status || 200).send(JSON.stringify(response.body
|
|
161
|
+
res.status(response.status || 200).send(JSON.stringify(response.body));
|
|
147
162
|
}
|
|
148
163
|
delete this.pending[activity.id];
|
|
149
164
|
}
|
|
@@ -168,7 +183,7 @@ let HttpPlugin = class HttpPlugin {
|
|
|
168
183
|
createStream(ref) {
|
|
169
184
|
return new stream_1.HttpStream(new teams_api_1.Client(ref.serviceUrl, this.client.clone({
|
|
170
185
|
token: this.botToken,
|
|
171
|
-
})), ref);
|
|
186
|
+
})), ref, this.logger);
|
|
172
187
|
}
|
|
173
188
|
/**
|
|
174
189
|
* validates an incoming http request
|
|
@@ -176,21 +191,20 @@ let HttpPlugin = class HttpPlugin {
|
|
|
176
191
|
* @param res the http response
|
|
177
192
|
*/
|
|
178
193
|
async onRequest(req, res, _next) {
|
|
179
|
-
const authorization = req.headers.authorization?.replace('Bearer ', '');
|
|
180
|
-
if (!authorization && process.env.NODE_ENV !== 'local') {
|
|
181
|
-
res.status(401).send('unauthorized');
|
|
182
|
-
return;
|
|
183
|
-
}
|
|
184
194
|
const activity = req.body;
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
195
|
+
let token;
|
|
196
|
+
if (req.validatedToken) {
|
|
197
|
+
token = req.validatedToken;
|
|
198
|
+
}
|
|
199
|
+
else {
|
|
200
|
+
token = {
|
|
188
201
|
appId: '',
|
|
189
202
|
from: 'azure',
|
|
190
203
|
fromId: '',
|
|
191
204
|
serviceUrl: activity.serviceUrl || '',
|
|
192
205
|
isExpired: () => false,
|
|
193
206
|
};
|
|
207
|
+
}
|
|
194
208
|
this.pending[activity.id] = res;
|
|
195
209
|
this.$onActivity({
|
|
196
210
|
sender: this,
|
|
@@ -212,6 +226,10 @@ __decorate([
|
|
|
212
226
|
(0, types_1.Dependency)(),
|
|
213
227
|
__metadata("design:type", Object)
|
|
214
228
|
], HttpPlugin.prototype, "manifest", void 0);
|
|
229
|
+
__decorate([
|
|
230
|
+
(0, types_1.Dependency)({ optional: true }),
|
|
231
|
+
__metadata("design:type", Object)
|
|
232
|
+
], HttpPlugin.prototype, "credentials", void 0);
|
|
215
233
|
__decorate([
|
|
216
234
|
(0, types_1.Dependency)({ optional: true }),
|
|
217
235
|
__metadata("design:type", Function)
|
|
@@ -234,6 +252,6 @@ exports.HttpPlugin = HttpPlugin = __decorate([
|
|
|
234
252
|
version: package_json_1.default.version,
|
|
235
253
|
description: 'the default plugin for sending/receiving activities',
|
|
236
254
|
}),
|
|
237
|
-
__metadata("design:paramtypes", [])
|
|
255
|
+
__metadata("design:paramtypes", [http_1.default.Server, Object])
|
|
238
256
|
], HttpPlugin);
|
|
239
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
257
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3BsdWdpbnMvaHR0cC9wbHVnaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsZ0RBQXdCO0FBRXhCLGdEQUF3QjtBQUN4QixzREFBOEI7QUFFOUIsb0RBTzhCO0FBRzlCLG9FQUFzRDtBQUV0RCx5RUFBd0M7QUFHeEMsMEZBQW9HO0FBQ3BHLHVDQVVxQjtBQUdyQixxQ0FBc0M7QUFFdEM7O0dBRUc7QUFNSSxJQUFNLFVBQVUsR0FBaEIsTUFBTSxVQUFVO0lBRVosTUFBTSxDQUFXO0lBR2pCLE1BQU0sQ0FBZ0I7SUFHdEIsUUFBUSxDQUFxQjtJQUc3QixXQUFXLENBQWU7SUFHMUIsUUFBUSxDQUFnQjtJQUd4QixVQUFVLENBQWdCO0lBRzFCLFFBQVEsQ0FBZ0M7SUFHeEMsV0FBVyxDQUFtQztJQUU5QyxHQUFHLENBQTZCO0lBQ2hDLElBQUksQ0FBOEI7SUFDbEMsS0FBSyxDQUErQjtJQUNwQyxHQUFHLENBQTZCO0lBQ2hDLE1BQU0sQ0FBZ0M7SUFDdEMsS0FBSyxDQUErQjtJQUNwQyxHQUFHLENBQTZCO0lBRXpDLElBQUksTUFBTTtRQUNSLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0QixDQUFDO0lBQ1MsT0FBTyxDQUFjO0lBRS9CLElBQUksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNwQixDQUFDO0lBQ1MsS0FBSyxDQUFVO0lBRWYsT0FBTyxDQUFzQjtJQUM3QixPQUFPLEdBQXFDLEVBQUUsQ0FBQztJQUMvQyxRQUFRLENBQVU7SUFFNUIsWUFBWSxNQUFvQixFQUFFLE9BQWdDO1FBQ2hFLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxFQUFFLFFBQVEsSUFBSSxLQUFLLENBQUM7UUFDM0MsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFBLGlCQUFPLEdBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sSUFBSSxjQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDN0MsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN6QyxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDL0MsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2pELElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNuRCxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDL0MsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3JELElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNuRCxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFL0MsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBQSxjQUFJLEdBQUUsQ0FBQyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxpQkFBTyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxNQUFNLENBQUMsSUFBWSxFQUFFLElBQVk7UUFDL0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLGlCQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDN0MsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsTUFBTTtRQUNKLE1BQU0sZUFBZSxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUNwRCxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ25CLDJEQUEyRDtZQUMzRCxNQUFNLGFBQWEsR0FBRyxJQUFBLDZDQUFpQixFQUFDO2dCQUN0QyxXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVc7Z0JBQzdCLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTthQUNwQixDQUFDLENBQUM7WUFDSCxlQUFlLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3pDLENBQUM7UUFDRCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsR0FBRyxlQUFlLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRUQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLElBQUksRUFBcUI7UUFDdkMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFFbEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxFQUFFO1lBQy9CLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzFCLENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxNQUFNLElBQUksT0FBTyxDQUFPLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ2pELElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUMvQixJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7Z0JBQzlCLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNkLENBQUMsQ0FBQyxDQUFDO1lBRUgsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRTtnQkFDN0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMscUJBQXFCLElBQUksS0FBSyxDQUFDLENBQUM7Z0JBQ2pELE9BQU8sRUFBRSxDQUFDO1lBQ1osQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxNQUFNO1FBQ0osSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRUQsT0FBTyxDQUFDLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBcUI7UUFDNUMsSUFBSSxDQUFDLFFBQVE7WUFBRSxPQUFPO1FBQ3RCLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRXRDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNULE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNyQixHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdEMsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELGtCQUFrQixDQUFDLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBZ0M7UUFDckUsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFdEMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ1QsT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3JCLEdBQUcsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUN6RSxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUF3QixFQUFFLEdBQTBCO1FBQzdELE1BQU0sR0FBRyxHQUFHLElBQUksa0JBQU0sQ0FDcEIsR0FBRyxDQUFDLFVBQVUsRUFDZCxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztZQUNoQixLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVE7U0FDckIsQ0FBQyxDQUNILENBQUM7UUFFRixRQUFRLEdBQUc7WUFDVCxHQUFHLFFBQVE7WUFDWCxJQUFJLEVBQUUsR0FBRyxDQUFDLEdBQUc7WUFDYixZQUFZLEVBQUUsR0FBRyxDQUFDLFlBQVk7U0FDL0IsQ0FBQztRQUVGLElBQUksUUFBUSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ2hCLE1BQU0sR0FBRyxHQUFHLE1BQU0sR0FBRyxDQUFDLGFBQWE7aUJBQ2hDLFVBQVUsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQztpQkFDL0IsTUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDakMsT0FBTyxFQUFFLEdBQUcsUUFBUSxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUM7UUFDakMsQ0FBQztRQUVELE1BQU0sR0FBRyxHQUFHLE1BQU0sR0FBRyxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDckYsT0FBTyxFQUFFLEdBQUcsUUFBUSxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUM7SUFDakMsQ0FBQztJQUVELFlBQVksQ0FBQyxHQUEwQjtRQUNyQyxPQUFPLElBQUksbUJBQVUsQ0FDbkIsSUFBSSxrQkFBTSxDQUNSLEdBQUcsQ0FBQyxVQUFVLEVBQ2QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7WUFDaEIsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRO1NBQ3JCLENBQUMsQ0FDSCxFQUNELEdBQUcsRUFDSCxJQUFJLENBQUMsTUFBTSxDQUNaLENBQUM7SUFDSixDQUFDO0lBQ0Q7Ozs7T0FJRztJQUNPLEtBQUssQ0FBQyxTQUFTLENBQ3ZCLEdBQXdCLEVBQ3hCLEdBQXFCLEVBQ3JCLEtBQTJCO1FBRTNCLE1BQU0sUUFBUSxHQUFhLEdBQUcsQ0FBQyxJQUFJLENBQUM7UUFDcEMsSUFBSSxLQUF5QixDQUFDO1FBQzlCLElBQUksR0FBRyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3ZCLEtBQUssR0FBRyxHQUFHLENBQUMsY0FBYyxDQUFDO1FBQzdCLENBQUM7YUFBTSxDQUFDO1lBQ04sS0FBSyxHQUFHO2dCQUNOLEtBQUssRUFBRSxFQUFFO2dCQUNULElBQUksRUFBRSxPQUFPO2dCQUNiLE1BQU0sRUFBRSxFQUFFO2dCQUNWLFVBQVUsRUFBRSxRQUFRLENBQUMsVUFBVSxJQUFJLEVBQUU7Z0JBQ3JDLFNBQVMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxLQUFLO2FBQ3ZCLENBQUM7UUFDSixDQUFDO1FBRUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxXQUFXLENBQUM7WUFDZixNQUFNLEVBQUUsSUFBSTtZQUNaLFFBQVE7WUFDUixLQUFLO1NBQ04sQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGLENBQUE7QUFoTlksZ0NBQVU7QUFFWjtJQURSLElBQUEsY0FBTSxHQUFFOzswQ0FDaUI7QUFHakI7SUFEUixJQUFBLGtCQUFVLEdBQUU7OEJBQ0ssS0FBSyxDQUFDLE1BQU07MENBQUM7QUFHdEI7SUFEUixJQUFBLGtCQUFVLEdBQUU7OzRDQUN5QjtBQUc3QjtJQURSLElBQUEsa0JBQVUsRUFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQzs7K0NBQ0k7QUFHMUI7SUFEUixJQUFBLGtCQUFVLEVBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUM7OzRDQUNFO0FBR3hCO0lBRFIsSUFBQSxrQkFBVSxFQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDOzs4Q0FDSTtBQUcxQjtJQURSLElBQUEsYUFBSyxFQUFDLE9BQU8sQ0FBQzs7NENBQ2tDO0FBR3hDO0lBRFIsSUFBQSxhQUFLLEVBQUMsVUFBVSxDQUFDOzsrQ0FDcUM7cUJBdkI1QyxVQUFVO0lBTHRCLElBQUEsY0FBTSxFQUFDO1FBQ04sSUFBSSxFQUFFLE1BQU07UUFDWixPQUFPLEVBQUUsc0JBQUcsQ0FBQyxPQUFPO1FBQ3BCLFdBQVcsRUFBRSxxREFBcUQ7S0FDbkUsQ0FBQztxQ0FnRHFCLGNBQUksQ0FBQyxNQUFNO0dBL0NyQixVQUFVLENBZ050QiJ9
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ActivityParams, Attachment, ChannelData, Client, ConversationReference, Entity, IMessageActivity, SentActivity } from '@microsoft/teams.api';
|
|
2
|
-
import { EventEmitter } from '@microsoft/teams.common';
|
|
2
|
+
import { EventEmitter, ILogger } from '@microsoft/teams.common';
|
|
3
3
|
import { IStreamer, IStreamerEvents } from '../../types';
|
|
4
4
|
export declare class HttpStream implements IStreamer {
|
|
5
5
|
readonly events: EventEmitter<IStreamerEvents>;
|
|
@@ -14,7 +14,9 @@ export declare class HttpStream implements IStreamer {
|
|
|
14
14
|
protected queue: Array<Partial<IMessageActivity>>;
|
|
15
15
|
private _result?;
|
|
16
16
|
private _timeout?;
|
|
17
|
-
|
|
17
|
+
private _logger;
|
|
18
|
+
private _flushing;
|
|
19
|
+
constructor(client: Client, ref: ConversationReference, logger?: ILogger);
|
|
18
20
|
emit(activity: Partial<IMessageActivity> | string): void;
|
|
19
21
|
close(): Promise<SentActivity | undefined>;
|
|
20
22
|
protected flush(): Promise<void>;
|
|
@@ -826,7 +828,7 @@ export declare class HttpStream implements IStreamer {
|
|
|
826
828
|
topicName?: string | undefined;
|
|
827
829
|
historyDisclosed?: boolean | undefined;
|
|
828
830
|
channelData?: (ChannelData & {
|
|
829
|
-
eventType: "channelCreated" | "channelDeleted" | "channelRenamed" | "channelRestored" | "teamArchived" | "teamDeleted" | "teamHardDeleted" | "teamRenamed" | "teamRestored" | "teamUnarchived";
|
|
831
|
+
eventType: "channelCreated" | "channelDeleted" | "channelRenamed" | "channelRestored" | "channelShared" | "channelUnshared" | "channelMemberAdded" | "channelMemberRemoved" | "teamArchived" | "teamDeleted" | "teamHardDeleted" | "teamRenamed" | "teamRestored" | "teamUnarchived";
|
|
830
832
|
}) | undefined;
|
|
831
833
|
serviceUrl?: string | undefined;
|
|
832
834
|
timestamp?: Date | undefined;
|
|
@@ -17,9 +17,12 @@ class HttpStream {
|
|
|
17
17
|
queue = [];
|
|
18
18
|
_result;
|
|
19
19
|
_timeout;
|
|
20
|
-
|
|
20
|
+
_logger;
|
|
21
|
+
_flushing = false;
|
|
22
|
+
constructor(client, ref, logger) {
|
|
21
23
|
this.client = client;
|
|
22
24
|
this.ref = ref;
|
|
25
|
+
this._logger = logger?.child('stream') || new teams_common_1.ConsoleLogger('@teams/http/stream');
|
|
23
26
|
}
|
|
24
27
|
emit(activity) {
|
|
25
28
|
if (this._timeout) {
|
|
@@ -36,10 +39,14 @@ class HttpStream {
|
|
|
36
39
|
this._timeout = setTimeout(this.flush.bind(this), 200);
|
|
37
40
|
}
|
|
38
41
|
async close() {
|
|
39
|
-
if (!this.index && !this.queue.length)
|
|
42
|
+
if (!this.index && !this.queue.length) {
|
|
43
|
+
this._logger.debug('closed with no content');
|
|
40
44
|
return;
|
|
41
|
-
|
|
45
|
+
}
|
|
46
|
+
if (this._result) {
|
|
47
|
+
this._logger.debug('already closed');
|
|
42
48
|
return this._result;
|
|
49
|
+
}
|
|
43
50
|
while (!this.id || this.queue.length) {
|
|
44
51
|
await new Promise((resolve) => setTimeout(resolve, 200));
|
|
45
52
|
}
|
|
@@ -49,7 +56,9 @@ class HttpStream {
|
|
|
49
56
|
.addEntities(...this.entities)
|
|
50
57
|
.addStreamFinal()
|
|
51
58
|
.withChannelData(this.channelData);
|
|
52
|
-
const res = await utils_1.promises.retry(this.send(activity)
|
|
59
|
+
const res = await utils_1.promises.retry(() => this.send(activity), {
|
|
60
|
+
logger: this._logger
|
|
61
|
+
});
|
|
53
62
|
this.events.emit('close', res);
|
|
54
63
|
this.index = 0;
|
|
55
64
|
this.id = undefined;
|
|
@@ -58,49 +67,60 @@ class HttpStream {
|
|
|
58
67
|
this.channelData = {};
|
|
59
68
|
this.entities = [];
|
|
60
69
|
this._result = res;
|
|
70
|
+
this._logger.debug(res);
|
|
61
71
|
return res;
|
|
62
72
|
}
|
|
63
73
|
async flush() {
|
|
64
|
-
if
|
|
74
|
+
// if locked or no queue, return early
|
|
75
|
+
if (!this.queue.length || this._flushing)
|
|
65
76
|
return;
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
this._timeout
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
let i = 0;
|
|
72
|
-
while (this.queue.length && i <= size) {
|
|
73
|
-
const activity = this.queue.shift();
|
|
74
|
-
if (!activity)
|
|
75
|
-
continue;
|
|
76
|
-
if (activity.text) {
|
|
77
|
-
this.text += activity.text;
|
|
77
|
+
this._flushing = true;
|
|
78
|
+
try {
|
|
79
|
+
if (this._timeout) {
|
|
80
|
+
clearTimeout(this._timeout);
|
|
81
|
+
this._timeout = undefined;
|
|
78
82
|
}
|
|
79
|
-
|
|
80
|
-
|
|
83
|
+
let i = 0;
|
|
84
|
+
while (this.queue.length && i < 10) {
|
|
85
|
+
const activity = this.queue.shift();
|
|
86
|
+
if (!activity)
|
|
87
|
+
continue;
|
|
88
|
+
if (activity.text) {
|
|
89
|
+
this.text += activity.text;
|
|
90
|
+
}
|
|
91
|
+
if (activity.attachments) {
|
|
92
|
+
this.attachments = [...(this.attachments || []), ...activity.attachments];
|
|
93
|
+
}
|
|
94
|
+
if (activity.channelData) {
|
|
95
|
+
this.channelData = {
|
|
96
|
+
...this.channelData,
|
|
97
|
+
...activity.channelData,
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
if (activity.entities) {
|
|
101
|
+
this.entities = [...(this.entities || []), ...activity.entities];
|
|
102
|
+
}
|
|
103
|
+
i++;
|
|
81
104
|
}
|
|
82
|
-
if (
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
105
|
+
if (i === 0)
|
|
106
|
+
return;
|
|
107
|
+
const activity = new teams_api_1.TypingActivity({ id: this.id })
|
|
108
|
+
.withText(this.text)
|
|
109
|
+
.addStreamUpdate(this.index + 1);
|
|
110
|
+
const res = await utils_1.promises.retry(() => this.send(activity), {
|
|
111
|
+
logger: this._logger
|
|
112
|
+
});
|
|
113
|
+
this.events.emit('chunk', res);
|
|
114
|
+
this.index++;
|
|
115
|
+
if (!this.id) {
|
|
116
|
+
this.id = res.id;
|
|
87
117
|
}
|
|
88
|
-
if (
|
|
89
|
-
this.
|
|
118
|
+
if (this.queue.length) {
|
|
119
|
+
this._timeout = setTimeout(this.flush.bind(this), 500);
|
|
90
120
|
}
|
|
91
|
-
i++;
|
|
92
|
-
}
|
|
93
|
-
this.index++;
|
|
94
|
-
const activity = new teams_api_1.TypingActivity({ id: this.id })
|
|
95
|
-
.withText(this.text)
|
|
96
|
-
.addStreamUpdate(this.index);
|
|
97
|
-
const res = await utils_1.promises.retry(this.send(activity));
|
|
98
|
-
this.events.emit('chunk', res);
|
|
99
|
-
if (!this.id) {
|
|
100
|
-
this.id = res.id;
|
|
101
121
|
}
|
|
102
|
-
|
|
103
|
-
this.
|
|
122
|
+
finally {
|
|
123
|
+
this._flushing = false;
|
|
104
124
|
}
|
|
105
125
|
}
|
|
106
126
|
async send(activity) {
|
|
@@ -122,4 +142,4 @@ class HttpStream {
|
|
|
122
142
|
}
|
|
123
143
|
}
|
|
124
144
|
exports.HttpStream = HttpStream;
|
|
125
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
145
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyZWFtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3BsdWdpbnMvaHR0cC9zdHJlYW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsb0RBVzhCO0FBQzlCLDBEQUErRTtBQUcvRSx1Q0FBdUM7QUFFdkMsTUFBYSxVQUFVO0lBQ1osTUFBTSxHQUFHLElBQUksMkJBQVksRUFBbUIsQ0FBQztJQUU1QyxNQUFNLENBQVM7SUFDZixHQUFHLENBQXdCO0lBQzNCLEtBQUssR0FBRyxDQUFDLENBQUM7SUFDVixFQUFFLENBQVU7SUFDWixJQUFJLEdBQVcsRUFBRSxDQUFDO0lBQ2xCLFdBQVcsR0FBaUIsRUFBRSxDQUFDO0lBQy9CLFdBQVcsR0FBZ0IsRUFBRSxDQUFDO0lBQzlCLFFBQVEsR0FBYSxFQUFFLENBQUM7SUFDeEIsS0FBSyxHQUFxQyxFQUFFLENBQUM7SUFFL0MsT0FBTyxDQUFnQjtJQUN2QixRQUFRLENBQWtCO0lBQzFCLE9BQU8sQ0FBVTtJQUNqQixTQUFTLEdBQVksS0FBSyxDQUFDO0lBRW5DLFlBQVksTUFBYyxFQUFFLEdBQTBCLEVBQUUsTUFBZ0I7UUFDdEUsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7UUFDZixJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sRUFBRSxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksSUFBSSw0QkFBYSxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFDcEYsQ0FBQztJQUVELElBQUksQ0FBQyxRQUE0QztRQUMvQyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNsQixZQUFZLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzVCLElBQUksQ0FBQyxRQUFRLEdBQUcsU0FBUyxDQUFDO1FBQzVCLENBQUM7UUFFRCxJQUFJLE9BQU8sUUFBUSxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ2pD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
|
package/dist/router.d.ts
CHANGED
|
@@ -1,34 +1,34 @@
|
|
|
1
|
-
import { Activity } from '@microsoft/teams.api';
|
|
1
|
+
import { Activity, InvokeResponse } from '@microsoft/teams.api';
|
|
2
2
|
import { IActivityContext } from './contexts';
|
|
3
3
|
import { IRoutes } from './routes';
|
|
4
4
|
import { RouteHandler } from './types';
|
|
5
|
-
type Route<Name extends keyof IRoutes = keyof IRoutes> = {
|
|
5
|
+
type Route<Name extends keyof IRoutes = keyof IRoutes, TExtraCtx extends Record<string, any> = Record<string, any>> = {
|
|
6
6
|
readonly name?: Name;
|
|
7
7
|
readonly select: (activity: Activity) => boolean;
|
|
8
|
-
readonly callback: IRoutes[Name];
|
|
8
|
+
readonly callback: IRoutes<TExtraCtx>[Name];
|
|
9
9
|
};
|
|
10
|
-
export declare class Router {
|
|
11
|
-
protected readonly routes: Route[];
|
|
10
|
+
export declare class Router<TExtraCtx extends Record<string, any> = Record<string, any>> {
|
|
11
|
+
protected readonly routes: Route<keyof IRoutes, TExtraCtx>[];
|
|
12
12
|
/**
|
|
13
13
|
* select routes that match the inbound activity
|
|
14
14
|
* @param activity the inbound activity
|
|
15
15
|
*/
|
|
16
|
-
select(activity: Activity): RouteHandler<
|
|
16
|
+
select(activity: Activity): RouteHandler<import("./contexts").IBaseActivityContext<Activity, Record<string, any>>, any>[];
|
|
17
17
|
/**
|
|
18
18
|
* register a new route
|
|
19
19
|
* @param route the route to register
|
|
20
20
|
*/
|
|
21
|
-
register<Name extends keyof IRoutes>(route: Route<Name>): this;
|
|
21
|
+
register<Name extends keyof IRoutes>(route: Route<Name, TExtraCtx>): this;
|
|
22
22
|
/**
|
|
23
23
|
* register a middleware
|
|
24
24
|
* @param callback the callback to invoke
|
|
25
25
|
*/
|
|
26
|
-
use(callback: RouteHandler<IActivityContext,
|
|
26
|
+
use(callback: RouteHandler<IActivityContext<Activity, TExtraCtx>, void | InvokeResponse>): this;
|
|
27
27
|
/**
|
|
28
28
|
* register an activity route
|
|
29
29
|
* @param event event to subscribe to
|
|
30
30
|
* @param callback the callback to invoke
|
|
31
31
|
*/
|
|
32
|
-
on<Name extends keyof IRoutes>(event: Name, callback: Exclude<IRoutes[Name], undefined>): this;
|
|
32
|
+
on<Name extends keyof IRoutes>(event: Name, callback: Exclude<IRoutes<TExtraCtx>[Name], undefined>): this;
|
|
33
33
|
}
|
|
34
34
|
export {};
|
package/dist/router.js
CHANGED
|
@@ -88,4 +88,4 @@ class Router {
|
|
|
88
88
|
}
|
|
89
89
|
}
|
|
90
90
|
exports.Router = Router;
|
|
91
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
91
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3JvdXRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFHQSxxQ0FBa0U7QUFTbEUsTUFBYSxNQUFNO0lBQ0UsTUFBTSxHQUFzQyxFQUFFLENBQUM7SUFFbEU7OztPQUdHO0lBQ0gsTUFBTSxDQUFDLFFBQWtCO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLE1BQU07YUFDZixNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDakMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBK0MsQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFFRDs7O09BR0c7SUFDSCxRQUFRLENBQTZCLEtBQTZCO1FBQ2hFLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3hCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7T0FHRztJQUNILEdBQUcsQ0FBQyxRQUFvRjtRQUN0RixJQUFJLENBQUMsUUFBUSxDQUFDO1lBQ1osTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUk7WUFDbEIsUUFBUTtTQUNULENBQUMsQ0FBQztRQUVILE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxFQUFFLENBQTZCLEtBQVcsRUFBRSxRQUFzRDtRQUNoRyxJQUFJLENBQUMsUUFBUSxDQUFDO1lBQ1osSUFBSSxFQUFFLEtBQUs7WUFDWCxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUUsRUFBRTtnQkFDbkIsSUFBSSxLQUFLLEtBQUssVUFBVSxFQUFFLENBQUM7b0JBQ3pCLE9BQU8sSUFBSSxDQUFDO2dCQUNkLENBQUM7Z0JBRUQsSUFBSSxLQUFLLEtBQUssUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO29CQUM1QixPQUFPLElBQUksQ0FB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
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { Activity } from '@microsoft/teams.api';
|
|
2
2
|
import { IActivityContext } from '../contexts';
|
|
3
3
|
import { RouteHandler } from '../types';
|
|
4
|
-
export type ActivityRoutes = {
|
|
4
|
+
export type ActivityRoutes<TExtraCtx extends Record<string, any> = Record<string, any>> = {
|
|
5
5
|
[K in Activity['type']]?: RouteHandler<IActivityContext<Extract<Activity, {
|
|
6
6
|
type: K;
|
|
7
|
-
}
|
|
7
|
+
}>, TExtraCtx>>;
|
|
8
8
|
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { IConversationUpdateActivity } from '@microsoft/teams.api';
|
|
2
2
|
import { IActivityContext } from '../contexts';
|
|
3
3
|
import { RouteHandler } from '../types';
|
|
4
|
-
export type ConversationUpdateActivityRoutes = {
|
|
5
|
-
[K in IConversationUpdateActivity['channelData']['eventType'] as K]?: RouteHandler<IActivityContext<IConversationUpdateActivity>, void>;
|
|
4
|
+
export type ConversationUpdateActivityRoutes<TExtraCtx extends Record<string, any> = Record<string, any>> = {
|
|
5
|
+
[K in IConversationUpdateActivity['channelData']['eventType'] as K]?: RouteHandler<IActivityContext<IConversationUpdateActivity, TExtraCtx>, void>;
|
|
6
6
|
};
|
package/dist/routes/event.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { EventActivity } from '@microsoft/teams.api';
|
|
2
2
|
import { IActivityContext } from '../contexts';
|
|
3
3
|
import { RouteHandler } from '../types';
|
|
4
|
-
export type EventActivityRoutes = {
|
|
4
|
+
export type EventActivityRoutes<TExtraCtx extends Record<string, any> = Record<string, any>> = {
|
|
5
5
|
[K in EventActivity['name'] as EventAliases[K]]?: RouteHandler<IActivityContext<Extract<EventActivity, {
|
|
6
6
|
name: K;
|
|
7
|
-
}
|
|
7
|
+
}>, TExtraCtx>, void>;
|
|
8
8
|
};
|
|
9
9
|
type EventAliases = {
|
|
10
10
|
'application/vnd.microsoft.readReceipt': 'readReceipt';
|
package/dist/routes/index.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { Activity } from '@microsoft/teams.api';
|
|
1
2
|
import { IActivityContext } from '../contexts';
|
|
2
3
|
import { RouteHandler } from '../types';
|
|
3
4
|
import { ActivityRoutes } from './activity';
|
|
@@ -7,14 +8,14 @@ import { InstallActivityRoutes } from './install';
|
|
|
7
8
|
import { InvokeActivityRoutes } from './invoke';
|
|
8
9
|
import { MessageDeleteActivityRoutes } from './message-delete';
|
|
9
10
|
import { MessageUpdateActivityRoutes } from './message-update';
|
|
10
|
-
export interface IRoutes extends
|
|
11
|
-
mention?: RouteHandler<IActivityContext
|
|
12
|
-
activity?: RouteHandler<IActivityContext
|
|
11
|
+
export interface IRoutes<TExtraCtx extends Record<string, any> = Record<string, any>> extends ActivityRoutes<TExtraCtx>, InvokeActivityRoutes<TExtraCtx>, InstallActivityRoutes<TExtraCtx>, ConversationUpdateActivityRoutes<TExtraCtx>, MessageUpdateActivityRoutes<TExtraCtx>, MessageDeleteActivityRoutes<TExtraCtx>, EventActivityRoutes<TExtraCtx> {
|
|
12
|
+
mention?: RouteHandler<IActivityContext<Activity, TExtraCtx>>;
|
|
13
|
+
activity?: RouteHandler<IActivityContext<Activity, TExtraCtx>>;
|
|
13
14
|
}
|
|
14
15
|
export * from './activity';
|
|
16
|
+
export * from './conversation-update';
|
|
17
|
+
export * from './event';
|
|
15
18
|
export * from './install';
|
|
16
19
|
export * from './invoke';
|
|
17
|
-
export * from './conversation-update';
|
|
18
|
-
export * from './message-update';
|
|
19
20
|
export * from './message-delete';
|
|
20
|
-
export * from './
|
|
21
|
+
export * from './message-update';
|
package/dist/routes/index.js
CHANGED
|
@@ -15,10 +15,10 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
__exportStar(require("./activity"), exports);
|
|
18
|
+
__exportStar(require("./conversation-update"), exports);
|
|
19
|
+
__exportStar(require("./event"), exports);
|
|
18
20
|
__exportStar(require("./install"), exports);
|
|
19
21
|
__exportStar(require("./invoke"), exports);
|
|
20
|
-
__exportStar(require("./conversation-update"), exports);
|
|
21
|
-
__exportStar(require("./message-update"), exports);
|
|
22
22
|
__exportStar(require("./message-delete"), exports);
|
|
23
|
-
__exportStar(require("./
|
|
24
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
23
|
+
__exportStar(require("./message-update"), exports);
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcm91dGVzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUF5QkEsNkNBQTJCO0FBQzNCLHdEQUFzQztBQUN0QywwQ0FBd0I7QUFDeEIsNENBQTBCO0FBQzFCLDJDQUF5QjtBQUN6QixtREFBaUM7QUFDakMsbURBQWlDIn0=
|
package/dist/routes/install.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { InstallUpdateActivity } from '@microsoft/teams.api';
|
|
2
2
|
import { IActivityContext } from '../contexts';
|
|
3
3
|
import { RouteHandler } from '../types';
|
|
4
|
-
export type InstallActivityRoutes = {
|
|
4
|
+
export type InstallActivityRoutes<TExtraCtx extends Record<string, any> = Record<string, any>> = {
|
|
5
5
|
[K in InstallUpdateActivity['action'] as `install.${K}`]?: RouteHandler<IActivityContext<Extract<InstallUpdateActivity, {
|
|
6
6
|
action: K;
|
|
7
|
-
}
|
|
7
|
+
}>, TExtraCtx>, void>;
|
|
8
8
|
};
|
|
@@ -4,10 +4,10 @@ import { RouteHandler } from '../../types';
|
|
|
4
4
|
import { FileConsentActivityRoutes } from './file-consent';
|
|
5
5
|
import { MessageExtensionSubmitActivityRoutes } from './message-extension-submit';
|
|
6
6
|
import { MessageSubmitActivityRoutes } from './message-submit';
|
|
7
|
-
export type InvokeActivityRoutes = {
|
|
7
|
+
export type InvokeActivityRoutes<TExtraCtx extends Record<string, any> = Record<string, any>> = {
|
|
8
8
|
[K in InvokeActivity['name'] as InvokeAliases[K]]?: RouteHandler<IActivityContext<Extract<InvokeActivity, {
|
|
9
9
|
name: K;
|
|
10
|
-
}
|
|
10
|
+
}>, TExtraCtx>, InvokeResponse<K> | InvokeResponse<K>['body']>;
|
|
11
11
|
} & FileConsentActivityRoutes & MessageExtensionSubmitActivityRoutes & MessageSubmitActivityRoutes;
|
|
12
12
|
type InvokeAliases = {
|
|
13
13
|
'config/fetch': 'config.open';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { IMessageDeleteActivity } from '@microsoft/teams.api';
|
|
2
2
|
import { IActivityContext } from '../contexts';
|
|
3
3
|
import { RouteHandler } from '../types';
|
|
4
|
-
export type MessageDeleteActivityRoutes = {
|
|
5
|
-
[K in IMessageDeleteActivity['channelData']['eventType'] as K]?: RouteHandler<IActivityContext<IMessageDeleteActivity>, void>;
|
|
4
|
+
export type MessageDeleteActivityRoutes<TExtraCtx extends Record<string, any> = Record<string, any>> = {
|
|
5
|
+
[K in IMessageDeleteActivity['channelData']['eventType'] as K]?: RouteHandler<IActivityContext<IMessageDeleteActivity, TExtraCtx>, void>;
|
|
6
6
|
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { IMessageUpdateActivity } from '@microsoft/teams.api';
|
|
2
2
|
import { IActivityContext } from '../contexts';
|
|
3
3
|
import { RouteHandler } from '../types';
|
|
4
|
-
export type MessageUpdateActivityRoutes = {
|
|
5
|
-
[K in IMessageUpdateActivity['channelData']['eventType'] as K]?: RouteHandler<IActivityContext<IMessageUpdateActivity>, void>;
|
|
4
|
+
export type MessageUpdateActivityRoutes<TExtraCtx extends Record<string, any> = Record<string, any>> = {
|
|
5
|
+
[K in IMessageUpdateActivity['channelData']['eventType'] as K]?: RouteHandler<IActivityContext<IMessageUpdateActivity, TExtraCtx>, void>;
|
|
6
6
|
};
|