@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.
- package/README.md +35 -0
- package/dist/api.d.ts +21 -0
- package/dist/api.js +66 -0
- package/dist/app.d.ts +1137 -0
- package/dist/app.embed.d.ts +24 -0
- package/dist/app.embed.js +83 -0
- package/dist/app.events.d.ts +14 -0
- package/dist/app.events.js +51 -0
- package/dist/app.js +411 -0
- package/dist/app.oauth.d.ts +13 -0
- package/dist/app.oauth.js +106 -0
- package/dist/app.plugins.d.ts +24 -0
- package/dist/app.plugins.js +96 -0
- package/dist/app.process.d.ts +11 -0
- package/dist/app.process.js +141 -0
- package/dist/app.routing.d.ts +22 -0
- package/dist/app.routing.js +40 -0
- package/dist/container/container.d.ts +37 -0
- package/dist/container/container.js +46 -0
- package/dist/container/index.d.ts +2 -0
- package/dist/container/index.js +19 -0
- package/dist/container/provider.d.ts +9 -0
- package/dist/container/provider.js +11 -0
- package/dist/contexts/activity-error.d.ts +8 -0
- package/dist/contexts/activity-error.js +3 -0
- package/dist/contexts/activity-signin.d.ts +8 -0
- package/dist/contexts/activity-signin.js +3 -0
- package/dist/contexts/activity.d.ts +117 -0
- package/dist/contexts/activity.js +133 -0
- package/dist/contexts/client.d.ts +53 -0
- package/dist/contexts/client.js +3 -0
- package/dist/contexts/function.d.ts +17 -0
- package/dist/contexts/function.js +3 -0
- package/dist/contexts/index.d.ts +5 -0
- package/dist/contexts/index.js +22 -0
- package/dist/events/activity-response.d.ts +16 -0
- package/dist/events/activity-response.js +3 -0
- package/dist/events/activity-sent.d.ts +16 -0
- package/dist/events/activity-sent.js +3 -0
- package/dist/events/activity.d.ts +20 -0
- package/dist/events/activity.js +3 -0
- package/dist/events/error.d.ts +16 -0
- package/dist/events/error.js +3 -0
- package/dist/events/index.d.ts +18 -0
- package/dist/events/index.js +21 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.js +47 -0
- package/dist/manifest.d.ts +1241 -0
- package/dist/manifest.js +3 -0
- package/dist/middleware/entra-token-validator.d.ts +75 -0
- package/dist/middleware/entra-token-validator.js +169 -0
- package/dist/middleware/index.d.ts +3 -0
- package/dist/middleware/index.js +22 -0
- package/dist/middleware/strip-mentions-text.d.ts +3 -0
- package/dist/middleware/strip-mentions-text.js +48 -0
- package/dist/middleware/with-client-auth.d.ts +13 -0
- package/dist/middleware/with-client-auth.js +40 -0
- package/dist/oauth.d.ts +9 -0
- package/dist/oauth.js +7 -0
- package/dist/plugins/http/index.d.ts +2 -0
- package/dist/plugins/http/index.js +19 -0
- package/dist/plugins/http/plugin.d.ts +986 -0
- package/dist/plugins/http/plugin.js +238 -0
- package/dist/plugins/http/stream.d.ts +956 -0
- package/dist/plugins/http/stream.js +128 -0
- package/dist/plugins/index.d.ts +1 -0
- package/dist/plugins/index.js +18 -0
- package/dist/router.d.ts +34 -0
- package/dist/router.js +91 -0
- package/dist/routes/activity.d.ts +8 -0
- package/dist/routes/activity.js +3 -0
- package/dist/routes/conversation-update.d.ts +6 -0
- package/dist/routes/conversation-update.js +3 -0
- package/dist/routes/event.d.ts +17 -0
- package/dist/routes/event.js +11 -0
- package/dist/routes/index.d.ts +20 -0
- package/dist/routes/index.js +24 -0
- package/dist/routes/install.d.ts +8 -0
- package/dist/routes/install.js +3 -0
- package/dist/routes/invoke/file-consent.d.ts +6 -0
- package/dist/routes/invoke/file-consent.js +3 -0
- package/dist/routes/invoke/index.d.ts +39 -0
- package/dist/routes/invoke/index.js +45 -0
- package/dist/routes/invoke/message-extension-submit.d.ts +6 -0
- package/dist/routes/invoke/message-extension-submit.js +3 -0
- package/dist/routes/invoke/message-submit.d.ts +10 -0
- package/dist/routes/invoke/message-submit.js +3 -0
- package/dist/routes/message-delete.d.ts +6 -0
- package/dist/routes/message-delete.js +3 -0
- package/dist/routes/message-update.d.ts +6 -0
- package/dist/routes/message-update.js +3 -0
- package/dist/types/constructor.d.ts +7 -0
- package/dist/types/constructor.js +3 -0
- package/dist/types/event-handler.d.ts +1 -0
- package/dist/types/event-handler.js +3 -0
- package/dist/types/event.d.ts +11 -0
- package/dist/types/event.js +3 -0
- package/dist/types/index.d.ts +7 -0
- package/dist/types/index.js +24 -0
- package/dist/types/plugin/decorators/dependency.d.ts +135 -0
- package/dist/types/plugin/decorators/dependency.js +49 -0
- package/dist/types/plugin/decorators/event.d.ts +18 -0
- package/dist/types/plugin/decorators/event.js +24 -0
- package/dist/types/plugin/decorators/index.d.ts +3 -0
- package/dist/types/plugin/decorators/index.js +12 -0
- package/dist/types/plugin/decorators/plugin.d.ts +25 -0
- package/dist/types/plugin/decorators/plugin.js +23 -0
- package/dist/types/plugin/index.d.ts +8 -0
- package/dist/types/plugin/index.js +25 -0
- package/dist/types/plugin/plugin-activity-event.d.ts +20 -0
- package/dist/types/plugin/plugin-activity-event.js +3 -0
- package/dist/types/plugin/plugin-activity-response-event.d.ts +20 -0
- package/dist/types/plugin/plugin-activity-response-event.js +3 -0
- package/dist/types/plugin/plugin-activity-sent-event.d.ts +16 -0
- package/dist/types/plugin/plugin-activity-sent-event.js +3 -0
- package/dist/types/plugin/plugin-error-event.d.ts +20 -0
- package/dist/types/plugin/plugin-error-event.js +3 -0
- package/dist/types/plugin/plugin-start-event.d.ts +11 -0
- package/dist/types/plugin/plugin-start-event.js +3 -0
- package/dist/types/plugin/plugin.d.ts +74 -0
- package/dist/types/plugin/plugin.js +3 -0
- package/dist/types/plugin/sender.d.ts +18 -0
- package/dist/types/plugin/sender.js +3 -0
- package/dist/types/prefixed.d.ts +3 -0
- package/dist/types/prefixed.js +3 -0
- package/dist/types/route-handler.d.ts +2 -0
- package/dist/types/route-handler.js +3 -0
- package/dist/types/streamer.d.ts +31 -0
- package/dist/types/streamer.js +3 -0
- package/dist/types/suffixed.d.ts +3 -0
- package/dist/types/suffixed.js +3 -0
- package/package.json +70 -0
|
@@ -0,0 +1,106 @@
|
|
|
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 __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.onTokenExchange = onTokenExchange;
|
|
37
|
+
exports.onVerifyState = onVerifyState;
|
|
38
|
+
const graph = __importStar(require("@microsoft/teams.graph"));
|
|
39
|
+
const axios_1 = require("axios");
|
|
40
|
+
async function onTokenExchange(ctx) {
|
|
41
|
+
const { api, activity, log } = ctx;
|
|
42
|
+
if (this.oauth.defaultConnectionName !== activity.value.connectionName) {
|
|
43
|
+
log.warn(`default connection name "${this.oauth.defaultConnectionName}" does not match activity connection name "${activity.value.connectionName}"`);
|
|
44
|
+
}
|
|
45
|
+
try {
|
|
46
|
+
const token = await api.users.token.exchange({
|
|
47
|
+
channelId: activity.channelId,
|
|
48
|
+
userId: activity.from.id,
|
|
49
|
+
connectionName: activity.value.connectionName,
|
|
50
|
+
exchangeRequest: {
|
|
51
|
+
token: activity.value.token,
|
|
52
|
+
},
|
|
53
|
+
});
|
|
54
|
+
ctx.api.user = new graph.Client(this.client.clone({
|
|
55
|
+
token: token.token,
|
|
56
|
+
}));
|
|
57
|
+
this.events.emit('signin', { ...ctx, token });
|
|
58
|
+
return { status: 200 };
|
|
59
|
+
}
|
|
60
|
+
catch (error) {
|
|
61
|
+
if (error instanceof axios_1.AxiosError) {
|
|
62
|
+
if (error.status !== 404 && error.status !== 400 && error.status !== 412) {
|
|
63
|
+
this.events.emit('error', { error, activity });
|
|
64
|
+
return { status: error.status || 500 };
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
return {
|
|
68
|
+
status: 412,
|
|
69
|
+
body: {
|
|
70
|
+
id: activity.value.id,
|
|
71
|
+
connectionName: activity.value.connectionName,
|
|
72
|
+
failureDetail: 'unable to exchange token...',
|
|
73
|
+
},
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
async function onVerifyState(ctx) {
|
|
78
|
+
const { log, api, activity } = ctx;
|
|
79
|
+
try {
|
|
80
|
+
if (!activity.value.state) {
|
|
81
|
+
log.warn(`auth state not found for conversation "${activity.conversation.id}" and user "${activity.from.id}"`);
|
|
82
|
+
return { status: 404 };
|
|
83
|
+
}
|
|
84
|
+
const token = await api.users.token.get({
|
|
85
|
+
channelId: activity.channelId,
|
|
86
|
+
userId: activity.from.id,
|
|
87
|
+
connectionName: this.oauth.defaultConnectionName,
|
|
88
|
+
code: activity.value.state,
|
|
89
|
+
});
|
|
90
|
+
ctx.api.user = new graph.Client(this.client.clone({
|
|
91
|
+
token: token.token,
|
|
92
|
+
}));
|
|
93
|
+
this.events.emit('signin', { ...ctx, token });
|
|
94
|
+
return { status: 200 };
|
|
95
|
+
}
|
|
96
|
+
catch (error) {
|
|
97
|
+
if (error instanceof axios_1.AxiosError) {
|
|
98
|
+
if (error.status !== 404 && error.status !== 400 && error.status !== 412) {
|
|
99
|
+
this.events.emit('error', { error, activity });
|
|
100
|
+
return { status: error.status || 500 };
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
return { status: 412 };
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLm9hdXRoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2FwcC5vYXV0aC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVVBLDBDQStDQztBQUVELHNDQXVDQztBQTdGRCw4REFBZ0Q7QUFDaEQsaUNBQW1DO0FBSTVCLEtBQUssVUFBVSxlQUFlLENBRW5DLEdBQWtFO0lBRWxFLE1BQU0sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxHQUFHLEdBQUcsQ0FBQztJQUVuQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMscUJBQXFCLEtBQUssUUFBUSxDQUFDLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2RSxHQUFHLENBQUMsSUFBSSxDQUNOLDRCQUE0QixJQUFJLENBQUMsS0FBSyxDQUFDLHFCQUFxQiw4Q0FBOEMsUUFBUSxDQUFDLEtBQUssQ0FBQyxjQUFjLEdBQUcsQ0FDM0ksQ0FBQztJQUNKLENBQUM7SUFFRCxJQUFJLENBQUM7UUFDSCxNQUFNLEtBQUssR0FBRyxNQUFNLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQztZQUMzQyxTQUFTLEVBQUUsUUFBUSxDQUFDLFNBQVM7WUFDN0IsTUFBTSxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUN4QixjQUFjLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxjQUFjO1lBQzdDLGVBQWUsRUFBRTtnQkFDZixLQUFLLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLO2FBQzVCO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUM3QixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztZQUNoQixLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUs7U0FDbkIsQ0FBQyxDQUNILENBQUM7UUFF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
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { App } from './app';
|
|
2
|
+
import { IPlugin, PluginName } from './types';
|
|
3
|
+
import { DependencyMetadata } from './types/plugin/decorators/dependency';
|
|
4
|
+
import { EventMetadata } from './types/plugin/decorators/event';
|
|
5
|
+
/**
|
|
6
|
+
* add a plugin
|
|
7
|
+
* @param plugin plugin to add
|
|
8
|
+
*/
|
|
9
|
+
export declare function plugin(this: App, plugin: IPlugin): App;
|
|
10
|
+
/**
|
|
11
|
+
* get a plugin
|
|
12
|
+
*/
|
|
13
|
+
export declare function getPlugin(this: App, name: PluginName): IPlugin | undefined;
|
|
14
|
+
/**
|
|
15
|
+
* inject fields/events into a plugin
|
|
16
|
+
*/
|
|
17
|
+
export declare function inject(this: App, plugin: IPlugin): void;
|
|
18
|
+
export declare function getMetadata(plugin: IPlugin): {
|
|
19
|
+
dependencies: DependencyMetadata[];
|
|
20
|
+
events: EventMetadata[];
|
|
21
|
+
name: string;
|
|
22
|
+
version: string;
|
|
23
|
+
description?: string;
|
|
24
|
+
};
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.plugin = plugin;
|
|
4
|
+
exports.getPlugin = getPlugin;
|
|
5
|
+
exports.inject = inject;
|
|
6
|
+
exports.getMetadata = getMetadata;
|
|
7
|
+
const dependency_1 = require("./types/plugin/decorators/dependency");
|
|
8
|
+
const plugin_1 = require("./types/plugin/decorators/plugin");
|
|
9
|
+
const event_1 = require("./types/plugin/decorators/event");
|
|
10
|
+
/**
|
|
11
|
+
* add a plugin
|
|
12
|
+
* @param plugin plugin to add
|
|
13
|
+
*/
|
|
14
|
+
function plugin(plugin) {
|
|
15
|
+
const { name } = getMetadata(plugin);
|
|
16
|
+
if (this.getPlugin(name)) {
|
|
17
|
+
throw new Error(`duplicate plugin "${name}" found`);
|
|
18
|
+
}
|
|
19
|
+
this.plugins.push(plugin);
|
|
20
|
+
this.container.register(name, { useValue: plugin });
|
|
21
|
+
this.container.register(plugin.constructor.name, { useValue: plugin });
|
|
22
|
+
return this;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* get a plugin
|
|
26
|
+
*/
|
|
27
|
+
function getPlugin(name) {
|
|
28
|
+
return this.plugins.find((plugin) => {
|
|
29
|
+
const metadata = getMetadata(plugin);
|
|
30
|
+
return metadata.name === name;
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* inject fields/events into a plugin
|
|
35
|
+
*/
|
|
36
|
+
function inject(plugin) {
|
|
37
|
+
const { name, dependencies, events } = getMetadata(plugin);
|
|
38
|
+
// inject dependencies
|
|
39
|
+
for (const { key, type, optional } of dependencies) {
|
|
40
|
+
let dependency = this.container.resolve(type);
|
|
41
|
+
if (!dependency) {
|
|
42
|
+
dependency = this.container.resolve(key);
|
|
43
|
+
}
|
|
44
|
+
if (!dependency) {
|
|
45
|
+
if (optional)
|
|
46
|
+
continue;
|
|
47
|
+
throw new Error(`dependency "${type}" of property "${key}" not found, but plugin "${name}" depends on it`);
|
|
48
|
+
}
|
|
49
|
+
if (type === 'ILogger') {
|
|
50
|
+
dependency = dependency.child(name);
|
|
51
|
+
}
|
|
52
|
+
Object.defineProperty(plugin, key, {
|
|
53
|
+
value: dependency,
|
|
54
|
+
writable: true,
|
|
55
|
+
enumerable: false,
|
|
56
|
+
configurable: false,
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
// inject event handlers
|
|
60
|
+
for (const { key, name } of events) {
|
|
61
|
+
let handler = (..._) => { };
|
|
62
|
+
if (name === 'error') {
|
|
63
|
+
handler = (event) => {
|
|
64
|
+
this.onError({ ...event, sender: plugin });
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
else if (name === 'activity') {
|
|
68
|
+
handler = (event) => {
|
|
69
|
+
this.onActivity(plugin, event);
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
Object.defineProperty(plugin, key, {
|
|
73
|
+
value: handler,
|
|
74
|
+
writable: false,
|
|
75
|
+
enumerable: false,
|
|
76
|
+
configurable: false,
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
//
|
|
81
|
+
// PLUGIN HELPERS
|
|
82
|
+
//
|
|
83
|
+
function getMetadata(plugin) {
|
|
84
|
+
if (!Reflect.hasMetadata(plugin_1.PLUGIN_METADATA_KEY, plugin.constructor)) {
|
|
85
|
+
throw new Error(`type "${plugin.constructor.name}" is not a valid plugin`);
|
|
86
|
+
}
|
|
87
|
+
const metadata = Reflect.getMetadata(plugin_1.PLUGIN_METADATA_KEY, plugin.constructor);
|
|
88
|
+
const dependencies = Reflect.getMetadata(dependency_1.PLUGIN_DEPENDENCIES_METADATA_KEY, plugin.constructor) || [];
|
|
89
|
+
const events = Reflect.getMetadata(event_1.PLUGIN_EVENTS_METADATA_KEY, plugin.constructor) || [];
|
|
90
|
+
return {
|
|
91
|
+
...metadata,
|
|
92
|
+
dependencies,
|
|
93
|
+
events,
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLnBsdWdpbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvYXBwLnBsdWdpbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFlQSx3QkFXQztBQUtELDhCQUtDO0FBS0Qsd0JBbURDO0FBTUQsa0NBZ0JDO0FBOUdELHFFQUc4QztBQUM5Qyw2REFBc0Y7QUFDdEYsMkRBQTRGO0FBRTVGOzs7R0FHRztBQUNILFNBQWdCLE1BQU0sQ0FBWSxNQUFlO0lBQy9DLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFckMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDekIsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQkFBcUIsSUFBSSxTQUFTLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDcEQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUN2RSxPQUFPLElBQUksQ0FBQztBQUNkLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLFNBQVMsQ0FBWSxJQUFnQjtJQUNuRCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7UUFDbEMsTUFBTSxRQUFRLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3JDLE9BQU8sUUFBUSxDQUFDLElBQUksS0FBSyxJQUFJLENBQUM7SUFDaEMsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQ7O0dBRUc7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
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { App } from './app';
|
|
2
|
+
import { IActivityEvent } from './events';
|
|
3
|
+
import { ISender } from './types';
|
|
4
|
+
/**
|
|
5
|
+
* activity handler called when an inbound activity is received
|
|
6
|
+
* @param sender the plugin to use for sending activities
|
|
7
|
+
* @param event the received activity event
|
|
8
|
+
*/
|
|
9
|
+
export declare function $process(this: App, sender: ISender, event: IActivityEvent): Promise<{
|
|
10
|
+
status: number;
|
|
11
|
+
} | undefined>;
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.$process = $process;
|
|
4
|
+
const teams_api_1 = require("@microsoft/teams.api");
|
|
5
|
+
const api_1 = require("./api");
|
|
6
|
+
const contexts_1 = require("./contexts");
|
|
7
|
+
/**
|
|
8
|
+
* activity handler called when an inbound activity is received
|
|
9
|
+
* @param sender the plugin to use for sending activities
|
|
10
|
+
* @param event the received activity event
|
|
11
|
+
*/
|
|
12
|
+
async function $process(sender, event) {
|
|
13
|
+
const { token, activity } = event;
|
|
14
|
+
this.log.debug(`activity/${activity.type}${activity.type === 'invoke' ? `/${activity.name}` : ''}`);
|
|
15
|
+
let serviceUrl = activity.serviceUrl || token.serviceUrl;
|
|
16
|
+
if (serviceUrl.endsWith('/')) {
|
|
17
|
+
serviceUrl = serviceUrl.slice(0, serviceUrl.length - 1);
|
|
18
|
+
}
|
|
19
|
+
await this.refreshTokens();
|
|
20
|
+
let userToken;
|
|
21
|
+
let appToken = this.tenantTokens.get(token.tenantId || 'common') || this._tokens.graph?.toString();
|
|
22
|
+
try {
|
|
23
|
+
const res = await this.api.users.token.get({
|
|
24
|
+
channelId: activity.channelId,
|
|
25
|
+
userId: activity.from.id,
|
|
26
|
+
connectionName: this.oauth.defaultConnectionName,
|
|
27
|
+
});
|
|
28
|
+
userToken = res.token;
|
|
29
|
+
if (this.credentials && !appToken) {
|
|
30
|
+
const { access_token } = await this.api.bots.token.getGraph({
|
|
31
|
+
...this.credentials,
|
|
32
|
+
tenantId: event.token.tenantId,
|
|
33
|
+
});
|
|
34
|
+
appToken = access_token;
|
|
35
|
+
this.tenantTokens.set(token.tenantId || 'common', access_token);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
catch (err) {
|
|
39
|
+
// noop
|
|
40
|
+
}
|
|
41
|
+
const client = this.client.clone();
|
|
42
|
+
const api = new api_1.ApiClient(serviceUrl, client.clone({ token: () => this.tokens.bot }), client.clone({ token: () => appToken }), client.clone({ token: () => userToken }));
|
|
43
|
+
const ref = {
|
|
44
|
+
serviceUrl,
|
|
45
|
+
activityId: activity.id,
|
|
46
|
+
bot: activity.recipient,
|
|
47
|
+
channelId: activity.channelId,
|
|
48
|
+
conversation: activity.conversation,
|
|
49
|
+
locale: activity.locale,
|
|
50
|
+
user: activity.from,
|
|
51
|
+
};
|
|
52
|
+
const routes = this.router.select(activity);
|
|
53
|
+
for (let i = this.plugins.length - 1; i > -1; i--) {
|
|
54
|
+
const plugin = this.plugins[i];
|
|
55
|
+
if (plugin.onActivity) {
|
|
56
|
+
routes.unshift(({ next }) => {
|
|
57
|
+
plugin.onActivity({
|
|
58
|
+
...ref,
|
|
59
|
+
sender: sender,
|
|
60
|
+
activity,
|
|
61
|
+
token,
|
|
62
|
+
});
|
|
63
|
+
return next();
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
let i = -1;
|
|
68
|
+
let data = undefined;
|
|
69
|
+
const next = async (ctx) => {
|
|
70
|
+
if (i === routes.length - 1)
|
|
71
|
+
return data;
|
|
72
|
+
i++;
|
|
73
|
+
const res = await routes[i](ctx || context.toInterface());
|
|
74
|
+
if (res) {
|
|
75
|
+
data = res;
|
|
76
|
+
}
|
|
77
|
+
return data;
|
|
78
|
+
};
|
|
79
|
+
const context = new contexts_1.ActivityContext(sender, {
|
|
80
|
+
...event,
|
|
81
|
+
next,
|
|
82
|
+
api,
|
|
83
|
+
appId: this.id || '',
|
|
84
|
+
log: this.log,
|
|
85
|
+
tokens: this.tokens,
|
|
86
|
+
ref,
|
|
87
|
+
storage: this.storage,
|
|
88
|
+
isSignedIn: !!userToken,
|
|
89
|
+
connectionName: this.oauth.defaultConnectionName,
|
|
90
|
+
});
|
|
91
|
+
if (routes.length === 0) {
|
|
92
|
+
return { status: 200 };
|
|
93
|
+
}
|
|
94
|
+
const send = context.send.bind(context);
|
|
95
|
+
context.send = async (activity) => {
|
|
96
|
+
const res = await send(activity);
|
|
97
|
+
this.onActivitySent(sender, {
|
|
98
|
+
...ref,
|
|
99
|
+
sender,
|
|
100
|
+
activity: res,
|
|
101
|
+
});
|
|
102
|
+
return res;
|
|
103
|
+
};
|
|
104
|
+
context.stream.events.on('chunk', (activity) => {
|
|
105
|
+
this.onActivitySent(sender, {
|
|
106
|
+
...ref,
|
|
107
|
+
sender,
|
|
108
|
+
activity,
|
|
109
|
+
});
|
|
110
|
+
});
|
|
111
|
+
context.stream.events.once('close', (activity) => {
|
|
112
|
+
this.onActivitySent(sender, {
|
|
113
|
+
...ref,
|
|
114
|
+
sender,
|
|
115
|
+
activity,
|
|
116
|
+
});
|
|
117
|
+
});
|
|
118
|
+
try {
|
|
119
|
+
let res = await next();
|
|
120
|
+
if (!res || !(0, teams_api_1.isInvokeResponse)(res)) {
|
|
121
|
+
res = { status: 200, body: res };
|
|
122
|
+
}
|
|
123
|
+
await context.stream.close();
|
|
124
|
+
this.onActivityResponse(sender, {
|
|
125
|
+
...ref,
|
|
126
|
+
sender,
|
|
127
|
+
activity,
|
|
128
|
+
response: res,
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
catch (error) {
|
|
132
|
+
this.onError({ error, activity, sender });
|
|
133
|
+
this.onActivityResponse(sender, {
|
|
134
|
+
...ref,
|
|
135
|
+
sender,
|
|
136
|
+
activity,
|
|
137
|
+
response: { status: 500 },
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLnByb2Nlc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvYXBwLnByb2Nlc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFhQSw0QkFtS0M7QUFoTEQsb0RBQTZGO0FBRTdGLCtCQUFrQztBQUVsQyx5Q0FBK0Q7QUFJL0Q7Ozs7R0FJRztBQUNJLEtBQUssVUFBVSxRQUFRLENBQVksTUFBZSxFQUFFLEtBQXFCO0lBQzlFLE1BQU0sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEdBQUcsS0FBSyxDQUFDO0lBRWxDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUNaLFlBQVksUUFBUSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUMsSUFBSSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUNwRixDQUFDO0lBRUYsSUFBSSxVQUFVLEdBQUcsUUFBUSxDQUFDLFVBQVUsSUFBSSxLQUFLLENBQUMsVUFBVSxDQUFDO0lBRXpELElBQUksVUFBVSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQzdCLFVBQVUsR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFRCxNQUFNLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUUzQixJQUFJLFNBQTZCLENBQUM7SUFDbEMsSUFBSSxRQUFRLEdBQ1YsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFFBQVEsSUFBSSxRQUFRLENBQUMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsQ0FBQztJQUV0RixJQUFJLENBQUM7UUFDSCxNQUFNLEdBQUcsR0FBRyxNQUFNLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUss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
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { InvokeResponse } from '@microsoft/teams.api';
|
|
2
|
+
import { App } from './app';
|
|
3
|
+
import { IActivityContext } from './contexts';
|
|
4
|
+
import { IRoutes } from './routes';
|
|
5
|
+
import { RouteHandler } from './types';
|
|
6
|
+
/**
|
|
7
|
+
* subscribe to an event
|
|
8
|
+
* @param name event to subscribe to
|
|
9
|
+
* @param cb callback to invoke
|
|
10
|
+
*/
|
|
11
|
+
export declare function on<Name extends keyof IRoutes>(this: App, name: Name, cb: Exclude<IRoutes[Name], undefined>): App;
|
|
12
|
+
/**
|
|
13
|
+
* subscribe to a message event for a specific pattern
|
|
14
|
+
* @param pattern pattern to match against message text
|
|
15
|
+
* @param cb callback to invoke
|
|
16
|
+
*/
|
|
17
|
+
export declare function message(this: App, pattern: string | RegExp, cb: Exclude<IRoutes['message'], undefined>): App;
|
|
18
|
+
/**
|
|
19
|
+
* register a middleware
|
|
20
|
+
* @param cb callback to invoke
|
|
21
|
+
*/
|
|
22
|
+
export declare function use(this: App, cb: RouteHandler<IActivityContext, void | InvokeResponse>): App;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.on = on;
|
|
4
|
+
exports.message = message;
|
|
5
|
+
exports.use = use;
|
|
6
|
+
/**
|
|
7
|
+
* subscribe to an event
|
|
8
|
+
* @param name event to subscribe to
|
|
9
|
+
* @param cb callback to invoke
|
|
10
|
+
*/
|
|
11
|
+
function on(name, cb) {
|
|
12
|
+
this.router.on(name, cb);
|
|
13
|
+
return this;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* subscribe to a message event for a specific pattern
|
|
17
|
+
* @param pattern pattern to match against message text
|
|
18
|
+
* @param cb callback to invoke
|
|
19
|
+
*/
|
|
20
|
+
function message(pattern, cb) {
|
|
21
|
+
this.router.register({
|
|
22
|
+
select: (activity) => {
|
|
23
|
+
if (activity.type !== 'message') {
|
|
24
|
+
return false;
|
|
25
|
+
}
|
|
26
|
+
return new RegExp(pattern).test(activity.text);
|
|
27
|
+
},
|
|
28
|
+
callback: cb,
|
|
29
|
+
});
|
|
30
|
+
return this;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* register a middleware
|
|
34
|
+
* @param cb callback to invoke
|
|
35
|
+
*/
|
|
36
|
+
function use(cb) {
|
|
37
|
+
this.router.use(cb);
|
|
38
|
+
return this;
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLnJvdXRpbmcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvYXBwLnJvdXRpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFZQSxnQkFPQztBQU9ELDBCQWlCQztBQU1ELGtCQUdDO0FBN0NEOzs7O0dBSUc7QUFDSCxTQUFnQixFQUFFLENBRWhCLElBQVUsRUFDVixFQUFxQztJQUVyQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDekIsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQWdCLE9BQU8sQ0FFckIsT0FBd0IsRUFDeEIsRUFBMEM7SUFFMUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQVk7UUFDOUIsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDbkIsSUFBSSxRQUFRLENBQUMsSUFBSSxLQUFLLFNBQVMsRUFBRSxDQUFDO2dCQUNoQyxPQUFPLEtBQUssQ0FBQztZQUNmLENBQUM7WUFFRCxPQUFPLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDakQsQ0FBQztRQUNELFFBQVEsRUFBRSxFQUFFO0tBQ2IsQ0FBQyxDQUFDO0lBRUgsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsU0FBZ0IsR0FBRyxDQUFZLEVBQXlEO0lBQ3RGLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3BCLE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQyJ9
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import 'reflect-metadata';
|
|
2
|
+
import { Provider } from './provider';
|
|
3
|
+
/**
|
|
4
|
+
* @private
|
|
5
|
+
* any singleton registry
|
|
6
|
+
*/
|
|
7
|
+
export interface IContainer {
|
|
8
|
+
/**
|
|
9
|
+
* does the container have the
|
|
10
|
+
* provided key
|
|
11
|
+
* @param key the singleton key
|
|
12
|
+
*/
|
|
13
|
+
has(key: string): boolean;
|
|
14
|
+
/**
|
|
15
|
+
* register a singleton
|
|
16
|
+
* @param key the singleton key
|
|
17
|
+
* @param value the singleton value
|
|
18
|
+
*/
|
|
19
|
+
register<T = any>(key: string, provider: Provider<T>): void;
|
|
20
|
+
/**
|
|
21
|
+
* resolve a singleton
|
|
22
|
+
* @param key the singleton key
|
|
23
|
+
*/
|
|
24
|
+
resolve<T = any>(key: string): T | undefined;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* @private
|
|
28
|
+
* a singleton container
|
|
29
|
+
*/
|
|
30
|
+
export declare class Container implements IContainer {
|
|
31
|
+
protected readonly values: Map<string, any>;
|
|
32
|
+
protected readonly providers: Map<string, Provider<any>>;
|
|
33
|
+
has(key: string): boolean;
|
|
34
|
+
register<T = any>(key: string, provider: Provider<T>): void;
|
|
35
|
+
resolve<T = any>(key: string): T | undefined;
|
|
36
|
+
toString(): string;
|
|
37
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Container = void 0;
|
|
4
|
+
require("reflect-metadata");
|
|
5
|
+
const provider_1 = require("./provider");
|
|
6
|
+
/**
|
|
7
|
+
* @private
|
|
8
|
+
* a singleton container
|
|
9
|
+
*/
|
|
10
|
+
class Container {
|
|
11
|
+
values = new Map();
|
|
12
|
+
providers = new Map();
|
|
13
|
+
has(key) {
|
|
14
|
+
return this.providers.has(key);
|
|
15
|
+
}
|
|
16
|
+
register(key, provider) {
|
|
17
|
+
if (this.providers.has(key)) {
|
|
18
|
+
throw new Error(`key "${key}" already exists`);
|
|
19
|
+
}
|
|
20
|
+
this.providers.set(key, provider);
|
|
21
|
+
}
|
|
22
|
+
resolve(key) {
|
|
23
|
+
let value = this.values.get(key);
|
|
24
|
+
if (value) {
|
|
25
|
+
return value;
|
|
26
|
+
}
|
|
27
|
+
const provider = this.providers.get(key);
|
|
28
|
+
if (!provider)
|
|
29
|
+
return;
|
|
30
|
+
if ((0, provider_1.isFactoryProvider)(provider)) {
|
|
31
|
+
value = provider.useFactory();
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
value = provider.useValue;
|
|
35
|
+
}
|
|
36
|
+
this.values.set(key, value);
|
|
37
|
+
return value;
|
|
38
|
+
}
|
|
39
|
+
toString() {
|
|
40
|
+
return Object.entries(this.values)
|
|
41
|
+
.map(([key, value]) => `${key} => ${value}`)
|
|
42
|
+
.join('\n');
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
exports.Container = Container;
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFpbmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnRhaW5lci9jb250YWluZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNEJBQTBCO0FBRTFCLHlDQUF5RDtBQTRCekQ7OztHQUdHO0FBQ0gsTUFBYSxTQUFTO0lBQ0QsTUFBTSxHQUFHLElBQUksR0FBRyxFQUFlLENBQUM7SUFDaEMsU0FBUyxHQUFHLElBQUksR0FBRyxFQUF5QixDQUFDO0lBRWhFLEdBQUcsQ0FBQyxHQUFXO1FBQ2IsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsUUFBUSxDQUFVLEdBQVcsRUFBRSxRQUFxQjtRQUNsRCxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDNUIsTUFBTSxJQUFJLEtBQUssQ0FBQyxRQUFRLEdBQUcsa0JBQWtCLENBQUMsQ0FBQztRQUNqRCxDQUFDO1FBRUQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxPQUFPLENBQVUsR0FBVztRQUMxQixJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUVqQyxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ1YsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBRUQsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFekMsSUFBSSxDQUFDLFFBQVE7WUFBRSxPQUFPO1FBRXRCLElBQUksSUFBQSw0QkFBaUIsRUFBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1lBQ2hDLEtBQUssR0FBRyxRQUFRLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDaEMsQ0FBQzthQUFNLENBQUM7WUFDTixLQUFLLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQztRQUM1QixDQUFDO1FBRUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzVCLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELFFBQVE7UUFDTixPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQzthQUMvQixHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLE9BQU8sS0FBSyxFQUFFLENBQUM7YUFDM0MsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hCLENBQUM7Q0FDRjtBQTFDRCw4QkEwQ0MifQ==
|
|
@@ -0,0 +1,19 @@
|
|
|
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("./container"), exports);
|
|
18
|
+
__exportStar(require("./provider"), exports);
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29udGFpbmVyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw4Q0FBNEI7QUFDNUIsNkNBQTJCIn0=
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export type Provider<T = any> = ValueProvider<T> | FactoryProvider<T>;
|
|
2
|
+
export type ValueProvider<T = any> = {
|
|
3
|
+
useValue: T;
|
|
4
|
+
};
|
|
5
|
+
export declare function isValueProvider<T = any>(provider: Provider<T>): provider is ValueProvider<T>;
|
|
6
|
+
export type FactoryProvider<T = any> = {
|
|
7
|
+
useFactory: () => T;
|
|
8
|
+
};
|
|
9
|
+
export declare function isFactoryProvider<T = any>(provider: Provider<T>): provider is FactoryProvider<T>;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isValueProvider = isValueProvider;
|
|
4
|
+
exports.isFactoryProvider = isFactoryProvider;
|
|
5
|
+
function isValueProvider(provider) {
|
|
6
|
+
return !!provider.useValue;
|
|
7
|
+
}
|
|
8
|
+
function isFactoryProvider(provider) {
|
|
9
|
+
return !!provider.useFactory;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29udGFpbmVyL3Byb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBTUEsMENBRUM7QUFNRCw4Q0FFQztBQVZELFNBQWdCLGVBQWUsQ0FBVSxRQUFxQjtJQUM1RCxPQUFPLENBQUMsQ0FBRSxRQUEwQixDQUFDLFFBQVEsQ0FBQztBQUNoRCxDQUFDO0FBTUQsU0FBZ0IsaUJBQWlCLENBQVUsUUFBcUI7SUFDOUQsT0FBTyxDQUFDLENBQUUsUUFBNEIsQ0FBQyxVQUFVLENBQUM7QUFDcEQsQ0FBQyJ9
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aXZpdHktZXJyb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29udGV4dHMvYWN0aXZpdHktZXJyb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ISignInTokenExchangeInvokeActivity, ISignInVerifyStateInvokeActivity, TokenResponse } from '@microsoft/teams.api';
|
|
2
|
+
import { IActivityContext } from './activity';
|
|
3
|
+
export interface IActivitySignInContext extends IActivityContext<ISignInTokenExchangeInvokeActivity | ISignInVerifyStateInvokeActivity> {
|
|
4
|
+
/**
|
|
5
|
+
* the token response of the signin request
|
|
6
|
+
*/
|
|
7
|
+
token: TokenResponse;
|
|
8
|
+
}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aXZpdHktc2lnbmluLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnRleHRzL2FjdGl2aXR5LXNpZ25pbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIn0=
|