@microsoft/teams.apps
Version:
<p> <a href="https://www.npmjs.com/package/@microsoft/teams.apps" target="_blank"> <img src="https://img.shields.io/npm/v/@microsoft/teams.apps/latest" /> </a> <a href="https://www.npmjs.com/package/@microsoft/teams.apps?activeTab=code
94 lines • 6.43 kB
JavaScript
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.func = func;
exports.tab = tab;
exports.configTab = configTab;
const path_1 = __importDefault(require("path"));
const middleware_1 = require("./middleware");
const utils_1 = require("./utils");
/**
* add/update a function that can be called remotely
* @param name The unique function name
* @param cb The callback to handle the function
*/
function func(name, cb) {
const log = this.log.child('functions').child(name);
this.http.post(`/api/functions/${name}`, (0, middleware_1.withRemoteFunctionJwtValidation)({
logger: log,
entraTokenValidator: this.entraTokenValidator,
...this.credentials,
}), async (req, res) => {
if (!req.context) {
throw new Error('expected client context');
}
const getCurrentConversationId = utils_1.functionContext.getConversationIdResolver(this, log.child('getCurrentConversationId'), req.context);
const send = async (activity) => {
const conversationId = await getCurrentConversationId();
return !conversationId
? null
: await this.send(conversationId, activity);
};
const data = await cb({
...req.context,
log,
api: this.api,
appGraph: this.graph,
data: req.body,
getCurrentConversationId,
send,
});
res.send(data);
});
return this;
}
/**
* add/update a static tab.
* the tab will be hosted at
* `http://localhost:{{PORT}}/tabs/{{name}}` or `https://{{BOT_DOMAIN}}/tabs/{{name}}`
* @remark scopes default to `personal`
* @param name A unique identifier for the entity which the tab displays.
* @param path The path to the web `dist` folder.
*/
function tab(name, path, options) {
if (!this._manifest.staticTabs) {
this._manifest.staticTabs = [];
}
const i = this._manifest.staticTabs.findIndex((t) => t.entityId === name);
const tab = {
entityId: name,
contentUrl: `https://\${{BOT_DOMAIN}}/tabs/${name}`,
scopes: ['personal'],
...options,
};
if (i > -1) {
this._manifest.staticTabs[i] = tab;
}
else {
this._manifest.staticTabs.push(tab);
}
this.http.static(`/tabs/${name}`, path);
this.http.use(`/tabs/${name}*`, async (_, res) => {
res.sendFile(path_1.default.join(path, 'index.html'));
});
return this;
}
/**
* add a configurable tab
* @remark scopes defaults to `team`
* @param url The url to use when configuring the tab.
*/
function configTab(url, options) {
if (!this._manifest.configurableTabs) {
this._manifest.configurableTabs = [];
}
this._manifest.configurableTabs.push({
configurationUrl: url,
scopes: ['team'],
...options,
});
return this;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmVtYmVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2FwcC5lbWJlZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQWdCQSxvQkErQ0M7QUFVRCxrQkE4QkM7QUFPRCw4QkFnQkM7QUE5SEQsZ0RBQXlCO0FBT3pCLDZDQUF5RjtBQUV6RixtQ0FBMEM7QUFFMUM7Ozs7R0FJRztBQUNILFNBQWdCLElBQUksQ0FFbEIsSUFBWSxFQUNaLEVBQTREO0lBRTVELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwRCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FDWixrQkFBa0IsSUFBSSxFQUFFLEVBQ3hCLElBQUEsNENBQStCLEVBQUM7UUFDOUIsTUFBTSxFQUFFLEdBQUc7UUFDWCxtQkFBbUIsRUFBRSxJQUFJLENBQUMsbUJBQW1CO1FBQzdDLEdBQUcsSUFBSSxDQUFDLFdBQVc7S0FDcEIsQ0FBQyxFQUNGLEtBQUssRUFBRSxHQUE2QixFQUFFLEdBQUcsRUFBRSxFQUFFO1FBQzNDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDakIsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1FBQzdDLENBQUM7UUFFRCxNQUFNLHdCQUF3QixHQUM1Qix1QkFBZSxDQUFDLHlCQUF5QixDQUN2QyxJQUFJLEVBQ0osR0FBRyxDQUFDLEtBQUssQ0FBQywwQkFBMEIsQ0FBQyxFQUNyQyxHQUFHLENBQUMsT0FBTyxDQUNaLENBQUM7UUFFSixNQUFNLElBQUksR0FBRyxLQUFLLEVBQUUsUUFBc0IsRUFBRSxFQUFFO1lBQzVDLE1BQU0sY0FBYyxHQUFHLE1BQU0sd0JBQXdCLEVBQUUsQ0FBQztZQUN4RCxPQUFPLENBQUMsY0FBYztnQkFDcEIsQ0FBQyxDQUFDLElBQUk7Z0JBQ04sQ0FBQyxD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