@microsoft/teams.apps 0.2.7

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.
Files changed (132) hide show
  1. package/README.md +35 -0
  2. package/dist/api.d.ts +21 -0
  3. package/dist/api.js +66 -0
  4. package/dist/app.d.ts +1137 -0
  5. package/dist/app.embed.d.ts +24 -0
  6. package/dist/app.embed.js +83 -0
  7. package/dist/app.events.d.ts +14 -0
  8. package/dist/app.events.js +51 -0
  9. package/dist/app.js +411 -0
  10. package/dist/app.oauth.d.ts +13 -0
  11. package/dist/app.oauth.js +106 -0
  12. package/dist/app.plugins.d.ts +24 -0
  13. package/dist/app.plugins.js +96 -0
  14. package/dist/app.process.d.ts +11 -0
  15. package/dist/app.process.js +141 -0
  16. package/dist/app.routing.d.ts +22 -0
  17. package/dist/app.routing.js +40 -0
  18. package/dist/container/container.d.ts +37 -0
  19. package/dist/container/container.js +46 -0
  20. package/dist/container/index.d.ts +2 -0
  21. package/dist/container/index.js +19 -0
  22. package/dist/container/provider.d.ts +9 -0
  23. package/dist/container/provider.js +11 -0
  24. package/dist/contexts/activity-error.d.ts +8 -0
  25. package/dist/contexts/activity-error.js +3 -0
  26. package/dist/contexts/activity-signin.d.ts +8 -0
  27. package/dist/contexts/activity-signin.js +3 -0
  28. package/dist/contexts/activity.d.ts +117 -0
  29. package/dist/contexts/activity.js +133 -0
  30. package/dist/contexts/client.d.ts +53 -0
  31. package/dist/contexts/client.js +3 -0
  32. package/dist/contexts/function.d.ts +17 -0
  33. package/dist/contexts/function.js +3 -0
  34. package/dist/contexts/index.d.ts +5 -0
  35. package/dist/contexts/index.js +22 -0
  36. package/dist/events/activity-response.d.ts +16 -0
  37. package/dist/events/activity-response.js +3 -0
  38. package/dist/events/activity-sent.d.ts +16 -0
  39. package/dist/events/activity-sent.js +3 -0
  40. package/dist/events/activity.d.ts +20 -0
  41. package/dist/events/activity.js +3 -0
  42. package/dist/events/error.d.ts +16 -0
  43. package/dist/events/error.js +3 -0
  44. package/dist/events/index.d.ts +18 -0
  45. package/dist/events/index.js +21 -0
  46. package/dist/index.d.ts +7 -0
  47. package/dist/index.js +47 -0
  48. package/dist/manifest.d.ts +1241 -0
  49. package/dist/manifest.js +3 -0
  50. package/dist/middleware/entra-token-validator.d.ts +75 -0
  51. package/dist/middleware/entra-token-validator.js +169 -0
  52. package/dist/middleware/index.d.ts +3 -0
  53. package/dist/middleware/index.js +22 -0
  54. package/dist/middleware/strip-mentions-text.d.ts +3 -0
  55. package/dist/middleware/strip-mentions-text.js +48 -0
  56. package/dist/middleware/with-client-auth.d.ts +13 -0
  57. package/dist/middleware/with-client-auth.js +40 -0
  58. package/dist/oauth.d.ts +9 -0
  59. package/dist/oauth.js +7 -0
  60. package/dist/plugins/http/index.d.ts +2 -0
  61. package/dist/plugins/http/index.js +19 -0
  62. package/dist/plugins/http/plugin.d.ts +986 -0
  63. package/dist/plugins/http/plugin.js +238 -0
  64. package/dist/plugins/http/stream.d.ts +956 -0
  65. package/dist/plugins/http/stream.js +128 -0
  66. package/dist/plugins/index.d.ts +1 -0
  67. package/dist/plugins/index.js +18 -0
  68. package/dist/router.d.ts +34 -0
  69. package/dist/router.js +91 -0
  70. package/dist/routes/activity.d.ts +8 -0
  71. package/dist/routes/activity.js +3 -0
  72. package/dist/routes/conversation-update.d.ts +6 -0
  73. package/dist/routes/conversation-update.js +3 -0
  74. package/dist/routes/event.d.ts +17 -0
  75. package/dist/routes/event.js +11 -0
  76. package/dist/routes/index.d.ts +20 -0
  77. package/dist/routes/index.js +24 -0
  78. package/dist/routes/install.d.ts +8 -0
  79. package/dist/routes/install.js +3 -0
  80. package/dist/routes/invoke/file-consent.d.ts +6 -0
  81. package/dist/routes/invoke/file-consent.js +3 -0
  82. package/dist/routes/invoke/index.d.ts +39 -0
  83. package/dist/routes/invoke/index.js +45 -0
  84. package/dist/routes/invoke/message-extension-submit.d.ts +6 -0
  85. package/dist/routes/invoke/message-extension-submit.js +3 -0
  86. package/dist/routes/invoke/message-submit.d.ts +10 -0
  87. package/dist/routes/invoke/message-submit.js +3 -0
  88. package/dist/routes/message-delete.d.ts +6 -0
  89. package/dist/routes/message-delete.js +3 -0
  90. package/dist/routes/message-update.d.ts +6 -0
  91. package/dist/routes/message-update.js +3 -0
  92. package/dist/types/constructor.d.ts +7 -0
  93. package/dist/types/constructor.js +3 -0
  94. package/dist/types/event-handler.d.ts +1 -0
  95. package/dist/types/event-handler.js +3 -0
  96. package/dist/types/event.d.ts +11 -0
  97. package/dist/types/event.js +3 -0
  98. package/dist/types/index.d.ts +7 -0
  99. package/dist/types/index.js +24 -0
  100. package/dist/types/plugin/decorators/dependency.d.ts +135 -0
  101. package/dist/types/plugin/decorators/dependency.js +49 -0
  102. package/dist/types/plugin/decorators/event.d.ts +18 -0
  103. package/dist/types/plugin/decorators/event.js +24 -0
  104. package/dist/types/plugin/decorators/index.d.ts +3 -0
  105. package/dist/types/plugin/decorators/index.js +12 -0
  106. package/dist/types/plugin/decorators/plugin.d.ts +25 -0
  107. package/dist/types/plugin/decorators/plugin.js +23 -0
  108. package/dist/types/plugin/index.d.ts +8 -0
  109. package/dist/types/plugin/index.js +25 -0
  110. package/dist/types/plugin/plugin-activity-event.d.ts +20 -0
  111. package/dist/types/plugin/plugin-activity-event.js +3 -0
  112. package/dist/types/plugin/plugin-activity-response-event.d.ts +20 -0
  113. package/dist/types/plugin/plugin-activity-response-event.js +3 -0
  114. package/dist/types/plugin/plugin-activity-sent-event.d.ts +16 -0
  115. package/dist/types/plugin/plugin-activity-sent-event.js +3 -0
  116. package/dist/types/plugin/plugin-error-event.d.ts +20 -0
  117. package/dist/types/plugin/plugin-error-event.js +3 -0
  118. package/dist/types/plugin/plugin-start-event.d.ts +11 -0
  119. package/dist/types/plugin/plugin-start-event.js +3 -0
  120. package/dist/types/plugin/plugin.d.ts +74 -0
  121. package/dist/types/plugin/plugin.js +3 -0
  122. package/dist/types/plugin/sender.d.ts +18 -0
  123. package/dist/types/plugin/sender.js +3 -0
  124. package/dist/types/prefixed.d.ts +3 -0
  125. package/dist/types/prefixed.js +3 -0
  126. package/dist/types/route-handler.d.ts +2 -0
  127. package/dist/types/route-handler.js +3 -0
  128. package/dist/types/streamer.d.ts +31 -0
  129. package/dist/types/streamer.js +3 -0
  130. package/dist/types/suffixed.d.ts +3 -0
  131. package/dist/types/suffixed.js +3 -0
  132. package/package.json +70 -0
@@ -0,0 +1,117 @@
1
+ import { Activity, ActivityLike, ConversationReference, InvokeResponse, SentActivity, TokenExchangeResource, TokenPostResource } from '@microsoft/teams.api';
2
+ import { ILogger } from '@microsoft/teams.common/logging';
3
+ import { IStorage } from '@microsoft/teams.common/storage';
4
+ import { ApiClient } from '../api';
5
+ import { ISender, IStreamer } from '../types';
6
+ export interface IActivityContextOptions<T extends Activity = Activity> {
7
+ /**
8
+ * the app id of the bot
9
+ */
10
+ appId: string;
11
+ /**
12
+ * the inbound activity
13
+ */
14
+ activity: T;
15
+ /**
16
+ * the inbound activity conversation reference
17
+ */
18
+ ref: ConversationReference;
19
+ /**
20
+ * the app logger instance
21
+ */
22
+ log: ILogger;
23
+ /**
24
+ * the api client
25
+ */
26
+ api: ApiClient;
27
+ /**
28
+ * app storage instance
29
+ */
30
+ storage: IStorage;
31
+ /**
32
+ * whether the user has provided
33
+ * their MSGraph credentials for use
34
+ * via `api.user.*`
35
+ */
36
+ isSignedIn?: boolean;
37
+ /**
38
+ * the default connection name to use for the app
39
+ * @default `graph`
40
+ */
41
+ connectionName: string;
42
+ /**
43
+ * extra data
44
+ */
45
+ [key: string]: any;
46
+ /**
47
+ * call the next event/middleware handler
48
+ */
49
+ next: (context?: IActivityContext) => (void | InvokeResponse) | Promise<void | InvokeResponse>;
50
+ }
51
+ type SignInOptions = {
52
+ /**
53
+ * The text to display on the oauth card
54
+ * @default `Please Sign In...`
55
+ */
56
+ oauthCardText: string;
57
+ /**
58
+ * The text to display on the sign in button
59
+ * @default `Sign In`
60
+ */
61
+ signInButtonText: string;
62
+ /**
63
+ * Construct your own sign in activity
64
+ * By default, we create a simple oauth card with a sign in button.
65
+ * Only use this if you need to fully customize the sign in experience.
66
+ */
67
+ overrideSignInActivity?: (tokenExchangeResource?: TokenExchangeResource, tokenPostResource?: TokenPostResource, signInLink?: string) => ActivityLike;
68
+ };
69
+ export interface IActivityContext<T extends Activity = Activity> extends IActivityContextOptions<T> {
70
+ /**
71
+ * a stream that can emit activity chunks
72
+ */
73
+ stream: IStreamer;
74
+ /**
75
+ * send an activity to the conversation
76
+ * @param activity activity to send
77
+ */
78
+ send: (activity: ActivityLike) => Promise<SentActivity>;
79
+ /**
80
+ * reply to the inbound activity
81
+ * @param activity activity to send
82
+ */
83
+ reply: (activity: ActivityLike) => Promise<SentActivity>;
84
+ /**
85
+ * trigger user signin flow for the activity sender
86
+ * @param options options for the signin flow
87
+ */
88
+ signin: (options?: Partial<SignInOptions>) => Promise<string | undefined>;
89
+ /**
90
+ * sign the activity sender out
91
+ * @param name auth connection name, defaults to `graph`
92
+ */
93
+ signout: (name?: string) => Promise<void>;
94
+ }
95
+ export declare const DEFAULT_SIGNIN_OPTIONS: SignInOptions;
96
+ export declare class ActivityContext<T extends Activity = Activity> implements IActivityContext<T> {
97
+ appId: string;
98
+ activity: T;
99
+ ref: ConversationReference;
100
+ log: ILogger;
101
+ api: ApiClient;
102
+ storage: IStorage;
103
+ stream: IStreamer;
104
+ isSignedIn?: boolean;
105
+ connectionName: string;
106
+ next: (context?: IActivityContext) => (void | InvokeResponse) | Promise<void | InvokeResponse>;
107
+ [key: string]: any;
108
+ protected _plugin: ISender;
109
+ protected _next?: (context?: IActivityContext) => (void | InvokeResponse) | Promise<void | InvokeResponse>;
110
+ constructor(plugin: ISender, value: IActivityContextOptions);
111
+ send(activity: ActivityLike): Promise<SentActivity>;
112
+ reply(activity: ActivityLike): Promise<SentActivity>;
113
+ signin(options?: Partial<SignInOptions>): Promise<string | undefined>;
114
+ signout(name?: string): Promise<void>;
115
+ toInterface(): IActivityContext;
116
+ }
117
+ export {};
@@ -0,0 +1,133 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ActivityContext = exports.DEFAULT_SIGNIN_OPTIONS = void 0;
4
+ const teams_api_1 = require("@microsoft/teams.api");
5
+ exports.DEFAULT_SIGNIN_OPTIONS = {
6
+ oauthCardText: 'Please Sign In...',
7
+ signInButtonText: 'Sign In',
8
+ };
9
+ class ActivityContext {
10
+ appId;
11
+ activity;
12
+ ref;
13
+ log;
14
+ api;
15
+ storage;
16
+ stream;
17
+ isSignedIn;
18
+ connectionName;
19
+ next;
20
+ _plugin;
21
+ _next;
22
+ constructor(plugin, value) {
23
+ Object.assign(this, value);
24
+ this._plugin = plugin;
25
+ this.stream = plugin.createStream(value.ref);
26
+ this.connectionName = value.connectionName;
27
+ if (value.activity.type === 'message') {
28
+ value.activity = teams_api_1.MessageActivity.from(value.activity).toInterface();
29
+ }
30
+ if (value.activity.type === 'messageUpdate') {
31
+ value.activity = teams_api_1.MessageUpdateActivity.from(value.activity).toInterface();
32
+ }
33
+ if (value.activity.type === 'messageDelete') {
34
+ value.activity = teams_api_1.MessageDeleteActivity.from(value.activity).toInterface();
35
+ }
36
+ if (value.activity.type === 'typing') {
37
+ value.activity = teams_api_1.TypingActivity.from(value.activity).toInterface();
38
+ }
39
+ }
40
+ async send(activity) {
41
+ return await this._plugin.send((0, teams_api_1.toActivityParams)(activity), this.ref);
42
+ }
43
+ async reply(activity) {
44
+ activity = (0, teams_api_1.toActivityParams)(activity);
45
+ activity.replyToId = this.activity.id;
46
+ return this.send(activity);
47
+ }
48
+ async signin(options) {
49
+ const { oauthCardText, signInButtonText, overrideSignInActivity } = {
50
+ ...exports.DEFAULT_SIGNIN_OPTIONS,
51
+ ...options,
52
+ };
53
+ const convo = { ...this.ref };
54
+ try {
55
+ const res = await this.api.users.token.get({
56
+ channelId: this.activity.channelId,
57
+ userId: this.activity.from.id,
58
+ connectionName: this.connectionName,
59
+ });
60
+ return res.token;
61
+ }
62
+ catch (err) {
63
+ // noop
64
+ }
65
+ const tokenExchangeState = {
66
+ connectionName: this.connectionName,
67
+ conversation: convo,
68
+ relatesTo: this.activity.relatesTo,
69
+ msAppId: this.appId,
70
+ };
71
+ if (this.activity.conversation.isGroup) {
72
+ // create new 1:1 conversation with user to do SSO
73
+ // because groupchats don't support it.
74
+ const res = await this.api.conversations.create({
75
+ tenantId: this.activity.conversation.tenantId,
76
+ isGroup: false,
77
+ bot: { id: this.activity.recipient.id },
78
+ members: [this.activity.from],
79
+ });
80
+ await this.send({ type: 'message', text: oauthCardText });
81
+ convo.conversation = { id: res.id };
82
+ }
83
+ const state = Buffer.from(JSON.stringify(tokenExchangeState)).toString('base64');
84
+ const resource = await this.api.bots.signIn.getResource({ state });
85
+ await this.send(overrideSignInActivity?.(resource.tokenExchangeResource, resource.tokenPostResource, resource.signInLink) ?? {
86
+ type: 'message',
87
+ inputHint: 'acceptingInput',
88
+ recipient: this.activity.from,
89
+ attachments: [
90
+ (0, teams_api_1.cardAttachment)('oauth', {
91
+ text: oauthCardText,
92
+ connectionName: this.connectionName,
93
+ tokenExchangeResource: resource.tokenExchangeResource,
94
+ tokenPostResource: resource.tokenPostResource,
95
+ buttons: [
96
+ {
97
+ type: 'signin',
98
+ title: signInButtonText,
99
+ value: resource.signInLink,
100
+ },
101
+ ],
102
+ }),
103
+ ],
104
+ });
105
+ }
106
+ async signout(name = 'graph') {
107
+ await this.api.users.token.signOut({
108
+ channelId: this.activity.channelId,
109
+ userId: this.activity.from.id,
110
+ connectionName: name,
111
+ });
112
+ }
113
+ toInterface() {
114
+ return {
115
+ activity: this.activity,
116
+ api: this.api,
117
+ appId: this.appId,
118
+ log: this.log,
119
+ ref: this.ref,
120
+ storage: this.storage,
121
+ stream: this.stream,
122
+ isSignedIn: this.isSignedIn,
123
+ connectionName: this.connectionName,
124
+ next: this.next.bind(this),
125
+ reply: this.reply.bind(this),
126
+ send: this.send.bind(this),
127
+ signin: this.signin.bind(this),
128
+ signout: this.signout.bind(this),
129
+ };
130
+ }
131
+ }
132
+ exports.ActivityContext = ActivityContext;
133
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aXZpdHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29udGV4dHMvYWN0aXZpdHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsb0RBZ0I4QjtBQXFIakIsUUFBQSxzQkFBc0IsR0FBa0I7SUFDbkQsYUFBYSxFQUFFLG1CQUFtQjtJQUNsQyxnQkFBZ0IsRUFBRSxTQUFTO0NBQzVCLENBQUM7QUFFRixNQUFhLGVBQWU7SUFDMUIsS0FBSyxDQUFVO0lBQ2YsUUFBUSxDQUFLO0lBQ2IsR0FBRyxDQUF5QjtJQUM1QixHQUFHLENBQVc7SUFDZCxHQUFHLENBQWE7SUFDaEIsT0FBTyxDQUFZO0lBQ25CLE1BQU0sQ0FBWTtJQUNsQixVQUFVLENBQVc7SUFDckIsY0FBYyxDQUFTO0lBQ3ZCLElBQUksQ0FBNEY7SUFHdEYsT0FBTyxDQUFVO0lBQ2pCLEtBQUssQ0FFK0M7SUFFOUQsWUFBWSxNQUFlLEVBQUUsS0FBOEI7UUFDekQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7UUFDdEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQyxjQUFjLENBQUM7UUFFM0MsSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUN0QyxLQUFLLENBQUMsUUFBUSxHQUFHLDJCQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUN0RSxDQUFDO1FBRUQsSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksS0FBSyxlQUFlLEVBQUUsQ0FBQztZQUM1QyxLQUFLLENBQUMsUUFBUSxHQUFHLGlDQUFxQixDQUFD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
@@ -0,0 +1,53 @@
1
+ export interface IClientContext {
2
+ /**
3
+ * This ID is the unique identifier assigned to the app after deployment and is critical for ensuring the correct app instance is recognized across hosts.
4
+ */
5
+ readonly appId?: string;
6
+ /**
7
+ * Unique ID for the current session for use in correlating telemetry data. A session corresponds to the lifecycle of an app. A new session begins upon the creation of a webview (on Teams mobile) or iframe (in Teams desktop) hosting the app, and ends when it is destroyed.
8
+ */
9
+ readonly appSessionId: string;
10
+ /**
11
+ * The Microsoft Entra tenant ID of the current user.
12
+ */
13
+ readonly tenantId?: string;
14
+ /**
15
+ * The Microsoft Entra object id of the current user.
16
+ */
17
+ readonly userId?: string;
18
+ /**
19
+ * The Microsoft Teams ID for the team with which the content is associated.
20
+ */
21
+ readonly teamId?: string;
22
+ /**
23
+ * The ID of the parent message from which this task module was launched.
24
+ * This is only available in task modules launched from bot cards.
25
+ */
26
+ readonly messageId?: string;
27
+ /**
28
+ * The Microsoft Teams ID for the channel with which the content is associated.
29
+ */
30
+ readonly channelId?: string;
31
+ /**
32
+ * The Microsoft Teams ID for the chat with which the content is associated.
33
+ */
34
+ readonly chatId?: string;
35
+ /**
36
+ * Meeting Id used by tab when running in meeting context
37
+ */
38
+ readonly meetingId?: string;
39
+ /**
40
+ * The developer-defined unique ID for the page this content points to.
41
+ */
42
+ readonly pageId: string;
43
+ /**
44
+ * The developer-defined unique ID for the sub-page this content points to.
45
+ * This field should be used to restore to a specific state within a page,
46
+ * such as scrolling to or activating a specific piece of content.
47
+ */
48
+ readonly subPageId?: string;
49
+ /**
50
+ * The MSAL entra token.
51
+ */
52
+ readonly authToken?: string;
53
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnRleHRzL2NsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIn0=
@@ -0,0 +1,17 @@
1
+ import { ILogger } from '@microsoft/teams.common';
2
+ import { AppClient } from '../api';
3
+ import { IClientContext } from './client';
4
+ export interface IFunctionContext<T = any> extends IClientContext {
5
+ /**
6
+ * the api client
7
+ */
8
+ api: AppClient;
9
+ /**
10
+ * the app logger instance
11
+ */
12
+ log: ILogger;
13
+ /**
14
+ * the function payload
15
+ */
16
+ data: T;
17
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29udGV4dHMvZnVuY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9
@@ -0,0 +1,5 @@
1
+ export * from './activity';
2
+ export * from './activity-error';
3
+ export * from './activity-signin';
4
+ export * from './client';
5
+ export * from './function';
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./activity"), exports);
18
+ __exportStar(require("./activity-error"), exports);
19
+ __exportStar(require("./activity-signin"), exports);
20
+ __exportStar(require("./client"), exports);
21
+ __exportStar(require("./function"), exports);
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29udGV4dHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDZDQUEyQjtBQUMzQixtREFBaUM7QUFDakMsb0RBQWtDO0FBQ2xDLDJDQUF5QjtBQUN6Qiw2Q0FBMkIifQ==
@@ -0,0 +1,16 @@
1
+ import { Activity, ConversationReference, InvokeResponse } from '@microsoft/teams.api';
2
+ import { IEvent } from '../types';
3
+ /**
4
+ * the event emitted by a plugin
5
+ * before an invoke response is returned
6
+ */
7
+ export interface IActivityResponseEvent extends IEvent, ConversationReference {
8
+ /**
9
+ * inbound request activity payload
10
+ */
11
+ activity: Activity;
12
+ /**
13
+ * the response
14
+ */
15
+ response: InvokeResponse;
16
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aXZpdHktcmVzcG9uc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZXZlbnRzL2FjdGl2aXR5LXJlc3BvbnNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIifQ==
@@ -0,0 +1,16 @@
1
+ import { ConversationReference, SentActivity } from '@microsoft/teams.api';
2
+ import { IEvent, ISender } from '../types';
3
+ /**
4
+ * the event emitted by a plugin
5
+ * when an activity is sent
6
+ */
7
+ export interface IActivitySentEvent extends IEvent, ConversationReference {
8
+ /**
9
+ * the sender of the event
10
+ */
11
+ sender: ISender;
12
+ /**
13
+ * the sent activity
14
+ */
15
+ activity: SentActivity;
16
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aXZpdHktc2VudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ldmVudHMvYWN0aXZpdHktc2VudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIn0=
@@ -0,0 +1,20 @@
1
+ import { Activity, IToken } from '@microsoft/teams.api';
2
+ import { IEvent, ISender } from '../types';
3
+ /**
4
+ * the event emitted by a plugin
5
+ * when an activity is received
6
+ */
7
+ export interface IActivityEvent extends IEvent {
8
+ /**
9
+ * the sender of the event
10
+ */
11
+ sender: ISender;
12
+ /**
13
+ * inbound request token
14
+ */
15
+ token: IToken;
16
+ /**
17
+ * inbound request activity payload
18
+ */
19
+ activity: Activity;
20
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aXZpdHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZXZlbnRzL2FjdGl2aXR5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIifQ==
@@ -0,0 +1,16 @@
1
+ import { Activity } from '@microsoft/teams.api';
2
+ import { IEvent } from '../types';
3
+ /**
4
+ * the event emitted by a plugin
5
+ * when an error occurs
6
+ */
7
+ export interface IErrorEvent extends IEvent {
8
+ /**
9
+ * the error
10
+ */
11
+ error: Error;
12
+ /**
13
+ * inbound request activity payload
14
+ */
15
+ activity?: Activity;
16
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZXZlbnRzL2Vycm9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIifQ==
@@ -0,0 +1,18 @@
1
+ import { ILogger } from '@microsoft/teams.common';
2
+ import { IActivitySignInContext } from '../contexts';
3
+ import { IActivityEvent } from './activity';
4
+ import { IActivityResponseEvent } from './activity-response';
5
+ import { IActivitySentEvent } from './activity-sent';
6
+ import { IErrorEvent } from './error';
7
+ export interface IEvents {
8
+ start: ILogger;
9
+ signin: IActivitySignInContext;
10
+ error: IErrorEvent;
11
+ activity: IActivityEvent;
12
+ 'activity.response': IActivityResponseEvent;
13
+ 'activity.sent': IActivitySentEvent;
14
+ }
15
+ export * from './activity';
16
+ export * from './activity-response';
17
+ export * from './activity-sent';
18
+ export * from './error';
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./activity"), exports);
18
+ __exportStar(require("./activity-response"), exports);
19
+ __exportStar(require("./activity-sent"), exports);
20
+ __exportStar(require("./error"), exports);
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZXZlbnRzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFrQkEsNkNBQTJCO0FBQzNCLHNEQUFvQztBQUNwQyxrREFBZ0M7QUFDaEMsMENBQXdCIn0=
@@ -0,0 +1,7 @@
1
+ export * from './app';
2
+ export * from './plugins';
3
+ export * from './types';
4
+ export * from './contexts';
5
+ export * from './oauth';
6
+ export * from './events';
7
+ export * as manifest from './manifest';
package/dist/index.js ADDED
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
19
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
20
+ };
21
+ var __importStar = (this && this.__importStar) || (function () {
22
+ var ownKeys = function(o) {
23
+ ownKeys = Object.getOwnPropertyNames || function (o) {
24
+ var ar = [];
25
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
26
+ return ar;
27
+ };
28
+ return ownKeys(o);
29
+ };
30
+ return function (mod) {
31
+ if (mod && mod.__esModule) return mod;
32
+ var result = {};
33
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
34
+ __setModuleDefault(result, mod);
35
+ return result;
36
+ };
37
+ })();
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.manifest = void 0;
40
+ __exportStar(require("./app"), exports);
41
+ __exportStar(require("./plugins"), exports);
42
+ __exportStar(require("./types"), exports);
43
+ __exportStar(require("./contexts"), exports);
44
+ __exportStar(require("./oauth"), exports);
45
+ __exportStar(require("./events"), exports);
46
+ exports.manifest = __importStar(require("./manifest"));
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsd0NBQXNCO0FBQ3RCLDRDQUEwQjtBQUMxQiwwQ0FBd0I7QUFDeEIsNkNBQTJCO0FBQzNCLDBDQUF3QjtBQUN4QiwyQ0FBeUI7QUFDekIsdURBQXVDIn0=