@microsoft/teams.apps 2.0.0-preview.11 → 2.0.0-preview.12

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.
@@ -0,0 +1,34 @@
1
+ import { Activity, InvokeResponse } from '@microsoft/teams.api';
2
+ import { IActivityContext } from './contexts';
3
+ import { IRoutes } from './routes';
4
+ import { RouteHandler } from './types';
5
+ type Route<Name extends keyof IRoutes = keyof IRoutes, TExtraCtx extends Record<string, any> = Record<string, any>> = {
6
+ readonly name?: Name;
7
+ readonly select: (activity: Activity) => boolean;
8
+ readonly callback: IRoutes<TExtraCtx>[Name];
9
+ };
10
+ export declare class Router<TExtraCtx extends Record<string, any> = Record<string, any>> {
11
+ protected readonly routes: Route<keyof IRoutes, TExtraCtx>[];
12
+ /**
13
+ * select routes that match the inbound activity
14
+ * @param activity the inbound activity
15
+ */
16
+ select(activity: Activity): RouteHandler<import("./contexts").IBaseActivityContext<Activity, Record<string, any>>, any>[];
17
+ /**
18
+ * register a new route
19
+ * @param route the route to register
20
+ */
21
+ register<Name extends keyof IRoutes>(route: Route<Name, TExtraCtx>): this;
22
+ /**
23
+ * register a middleware
24
+ * @param callback the callback to invoke
25
+ */
26
+ use(callback: RouteHandler<IActivityContext<Activity, TExtraCtx>, void | InvokeResponse>): this;
27
+ /**
28
+ * register an activity route
29
+ * @param event event to subscribe to
30
+ * @param callback the callback to invoke
31
+ */
32
+ on<Name extends keyof IRoutes>(event: Name, callback: Exclude<IRoutes<TExtraCtx>[Name], undefined>): this;
33
+ }
34
+ export {};
package/dist/router.js ADDED
@@ -0,0 +1,91 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Router = void 0;
4
+ const routes_1 = require("./routes");
5
+ class Router {
6
+ routes = [];
7
+ /**
8
+ * select routes that match the inbound activity
9
+ * @param activity the inbound activity
10
+ */
11
+ select(activity) {
12
+ return this.routes
13
+ .filter((r) => r.select(activity))
14
+ .map((r) => r.callback);
15
+ }
16
+ /**
17
+ * register a new route
18
+ * @param route the route to register
19
+ */
20
+ register(route) {
21
+ this.routes.push(route);
22
+ return this;
23
+ }
24
+ /**
25
+ * register a middleware
26
+ * @param callback the callback to invoke
27
+ */
28
+ use(callback) {
29
+ this.register({
30
+ select: () => true,
31
+ callback,
32
+ });
33
+ return this;
34
+ }
35
+ /**
36
+ * register an activity route
37
+ * @param event event to subscribe to
38
+ * @param callback the callback to invoke
39
+ */
40
+ on(event, callback) {
41
+ this.register({
42
+ name: event,
43
+ select: (activity) => {
44
+ if (event === 'activity') {
45
+ return true;
46
+ }
47
+ if (event === activity.type) {
48
+ return true;
49
+ }
50
+ if (activity.type === 'conversationUpdate') {
51
+ return event === activity.channelData?.eventType;
52
+ }
53
+ if (activity.type === 'installationUpdate') {
54
+ return event === `install.${activity.action}`;
55
+ }
56
+ if (activity.type === 'messageDelete') {
57
+ return event === activity.channelData?.eventType;
58
+ }
59
+ if (activity.type === 'messageUpdate') {
60
+ return event === activity.channelData?.eventType;
61
+ }
62
+ if (activity.type === 'event') {
63
+ return event === routes_1.EVENT_ALIASES[activity.name];
64
+ }
65
+ if (activity.type === 'invoke') {
66
+ if (event === routes_1.INVOKE_ALIASES[activity.name]) {
67
+ return true;
68
+ }
69
+ if (activity.name === 'fileConsent/invoke') {
70
+ return event === `file.consent.${activity.value.action}`;
71
+ }
72
+ if (activity.name === 'composeExtension/submitAction') {
73
+ return event === `message.ext.${activity.value.botMessagePreviewAction}`;
74
+ }
75
+ if (activity.name === 'message/submitAction') {
76
+ return event === `message.submit.${activity.value.actionName}`;
77
+ }
78
+ }
79
+ // custom routes
80
+ if (event === 'mention' && activity.entities?.some((e) => e.type === 'mention')) {
81
+ return (activity.entities?.find((e) => e.type === 'mention' && e.mentioned.id === activity.recipient.id) !== undefined);
82
+ }
83
+ return false;
84
+ },
85
+ callback,
86
+ });
87
+ return this;
88
+ }
89
+ }
90
+ exports.Router = Router;
91
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3JvdXRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFHQSxxQ0FBa0U7QUFTbEUsTUFBYSxNQUFNO0lBQ0UsTUFBTSxHQUFzQyxFQUFFLENBQUM7SUFFbEU7OztPQUdHO0lBQ0gsTUFBTSxDQUFDLFFBQWtCO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLE1BQU07YUFDZixNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDakMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBK0MsQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFFRDs7O09BR0c7SUFDSCxRQUFRLENBQTZCLEtBQTZCO1FBQ2hFLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3hCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7T0FHRztJQUNILEdBQUcsQ0FBQyxRQUFvRjtRQUN0RixJQUFJLENBQUMsUUFBUSxDQUFDO1lBQ1osTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUk7WUFDbEIsUUFBUTtTQUNULENBQUMsQ0FBQztRQUVILE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxFQUFFLENBQTZCLEtBQVcsRUFBRSxRQUFzRDtRQUNoRyxJQUFJLENBQUMsUUFBUSxDQUFDO1lBQ1osSUFBSSxFQUFFLEtBQUs7WUFDWCxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUUsRUFBRTtnQkFDbkIsSUFBSSxLQUFLLEtBQUssVUFBVSxFQUFFLENBQUM7b0JBQ3pCLE9BQU8sSUFBSSxDQUFDO2dCQUNkLENBQUM7Z0JBRUQsSUFBSSxLQUFLLEtBQUssUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO29CQUM1QixPQUFPLElBQUksQ0FB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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@microsoft/teams.apps",
3
- "version": "2.0.0-preview.11",
3
+ "version": "2.0.0-preview.12",
4
4
  "license": "MIT",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.mjs",
@@ -46,12 +46,12 @@
46
46
  "reflect-metadata": "^0.2.2"
47
47
  },
48
48
  "peerDependencies": {
49
- "@microsoft/teams.api": "2.0.0-preview.11",
50
- "@microsoft/teams.common": "2.0.0-preview.11",
51
- "@microsoft/teams.graph": "2.0.0-preview.11"
49
+ "@microsoft/teams.api": "2.0.0-preview.12",
50
+ "@microsoft/teams.common": "2.0.0-preview.12",
51
+ "@microsoft/teams.graph": "2.0.0-preview.12"
52
52
  },
53
53
  "devDependencies": {
54
- "@microsoft/teams.config": "2.0.0-preview.11",
54
+ "@microsoft/teams.config": "2.0.0-preview.12",
55
55
  "@types/cors": "^2.8.17",
56
56
  "@types/express": "^5.0.0",
57
57
  "@types/jest": "^29.5.12",