@microsoft/teams.apps
Advanced tools
+1
-22
@@ -5,3 +5,3 @@ import { ActivityLike, ApiClientSettings, ChannelID, CloudEnvironment, InvokeResponse, StripMentionsTextOptions, TokenCredentials } from '@microsoft/teams.api'; | ||
| import { ApiClient, GraphClient } from './api'; | ||
| import { configTab, func, tab } from './app.embed'; | ||
| import { func, tab } from './app.embed'; | ||
| import { event, onActivityResponse, onActivitySent, onError } from './app.events'; | ||
@@ -16,3 +16,2 @@ import { onSignInFailure, onTokenExchange, onVerifyState } from './app.oauth'; | ||
| import { HttpServer } from './http/http-server'; | ||
| import * as manifest from './manifest'; | ||
| import * as middleware from './middleware'; | ||
@@ -92,6 +91,2 @@ import { OAuthSettings } from './oauth'; | ||
| /** | ||
| * The apps manifest | ||
| */ | ||
| readonly manifest?: Partial<manifest.Manifest>; | ||
| /** | ||
| * Activity Options | ||
@@ -166,15 +161,5 @@ */ | ||
| get id(): string | undefined; | ||
| /** | ||
| * the apps name | ||
| * @deprecated Name will be removed in the near future. Please remove dependencies from it. | ||
| */ | ||
| get name(): string | undefined; | ||
| get oauth(): { | ||
| defaultConnectionName: string; | ||
| }; | ||
| /** | ||
| * the apps manifest | ||
| */ | ||
| get manifest(): Partial<manifest.Manifest>; | ||
| protected readonly _manifest: Partial<manifest.Manifest>; | ||
| protected container: Container; | ||
@@ -285,8 +270,2 @@ protected plugins: Array<TPlugin>; | ||
| /** | ||
| * add a configurable tab | ||
| * @remark scopes defaults to `team` | ||
| * @param url The url to use when configuring the tab. | ||
| */ | ||
| configTab: typeof configTab; | ||
| /** | ||
| * activity handler called when an inbound activity is received | ||
@@ -293,0 +272,0 @@ * @param sender the plugin to use for sending activities |
| import { App } from './app'; | ||
| import { IFunctionContext } from './contexts'; | ||
| import * as manifest from './manifest'; | ||
| import { IPlugin } from './types'; | ||
@@ -19,8 +18,2 @@ /** | ||
| */ | ||
| export declare function tab<TPlugin extends IPlugin>(this: App<TPlugin>, name: string, path: string, options?: Partial<Omit<manifest.StaticTab, 'contentUrl' | 'entityId'>>): App<TPlugin>; | ||
| /** | ||
| * add a configurable tab | ||
| * @remark scopes defaults to `team` | ||
| * @param url The url to use when configuring the tab. | ||
| */ | ||
| export declare function configTab<TPlugin extends IPlugin>(this: App<TPlugin>, url: string, options?: Partial<Omit<manifest.ConfigurableTab, 'configurationUrl'>>): App<TPlugin>; | ||
| export declare function tab<TPlugin extends IPlugin>(this: App<TPlugin>, name: string, path: string): App<TPlugin>; |
+2
-35
@@ -5,3 +5,2 @@ "use strict"; | ||
| exports.tab = tab; | ||
| exports.configTab = configTab; | ||
| const remote_function_validator_1 = require("./middleware/auth/remote-function-validator"); | ||
@@ -59,38 +58,6 @@ const utils_1 = require("./utils"); | ||
| */ | ||
| 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); | ||
| } | ||
| function tab(name, path) { | ||
| this.server.serveStatic(`/tabs/${name}`, path); | ||
| 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmVtYmVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2FwcC5lbWJlZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQWNBLG9CQXFEQztBQVVELGtCQTJCQztBQU9ELDhCQWdCQztBQTFIRCwyRkFBc0Y7QUFFdEYsbUNBQTBDO0FBRTFDOzs7O0dBSUc7QUFDSCxTQUFnQixJQUFJLENBRWxCLElBQVksRUFDWixFQUE0RDtJQUU1RCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEQsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUM7SUFFckQsNENBQTRDO0lBQzVDLE1BQU0sU0FBUyxHQUFHLG1CQUFtQjtRQUNuQyxDQUFDLENBQUMsSUFBSSxtREFBdUIsQ0FBQyxtQkFBbUIsRUFBRSxHQUFHLENBQUM7UUFDdkQsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUVULElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRSxrQkFBa0IsSUFBSSxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUU7UUFDdEYseUNBQXlDO1FBQ3pDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNmLEdBQUcsQ0FBQyxLQUFLLENBQUMsOENBQThDLENBQUMsQ0FBQztZQUMxRCxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsY0FBYyxFQUFFLENBQUM7UUFDL0MsQ0FBQztRQUVELE1BQU0sT0FBTyxHQUFHLE1BQU0sU0FBUyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMvQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDYixPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsY0FBYyxFQUFFLENB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 | ||
| //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmVtYmVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2FwcC5lbWJlZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQWFBLG9CQXFEQztBQVVELGtCQVFDO0FBaEZELDJGQUFzRjtBQUV0RixtQ0FBMEM7QUFFMUM7Ozs7R0FJRztBQUNILFNBQWdCLElBQUksQ0FFbEIsSUFBWSxFQUNaLEVBQTREO0lBRTVELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwRCxNQUFNLG1CQUFtQixHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztJQUVyRCw0Q0FBNEM7SUFDNUMsTUFBTSxTQUFTLEdBQUcsbUJBQW1CO1FBQ25DLENBQUMsQ0FBQyxJQUFJLG1EQUF1QixDQUFDLG1CQUFtQixFQUFFLEdBQUcsQ0FBQztRQUN2RCxDQUFDLENBQUMsSUFBSSxDQUFDO0lBRVQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLGtCQUFrQixJQUFJLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRTtRQUN0Rix5Q0FBeUM7UUFDekMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2YsR0FBRyxDQUFDLEtBQUssQ0FBQyw4Q0FBOEMsQ0FBQyxDQUFDO1lBQzFELE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxjQUFjLEVBQUUsQ0FBQztRQUMvQyxDQUFDO1FBRUQsTUFBTSxPQUFPLEdBQUcsTUFBTSxTQUFTLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQy9DLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNiLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxjQUFjLEVBQUUsQ0FBQztRQUMvQyxDQUFDO1FBRUQsTUFBTSx3QkFBd0IsR0FDNUIsdUJBQWUsQ0FBQyx5QkFBeUIsQ0FDdkMsSUFBSSxFQUNKLEdBQUcsQ0FBQyxLQUFLLENBQUMsMEJBQTBCLENBQUMsRUFDckMsT0FBTyxDQUNSLENBQUM7UUFFSixNQUFNLElBQUksR0FBRyxLQUFLLEVBQUUsUUFBc0IsRUFBRSxFQUFFO1lBQzVDLE1BQU0sY0FBYyxHQUFHLE1BQU0sd0JBQXdCLEVBQUUsQ0FBQztZQUN4RCxPQUFPLENBQUMsY0FBYztnQkFDcEIsQ0FBQyxDQUFDLElBQUk7Z0JBQ04sQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDaEQsQ0FBQyxDQUFDO1FBRUYsTUFBTSxJQUFJLEdBQUcsTUFBTSxFQUFFLENBQUM7WUFDcEIsR0FBRyxPQUFPO1lBQ1YsR0FBRztZQUNILEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRztZQUNiLFFBQVEsRUFBRSxJQUFJLENBQUMsS0FBSztZQUNwQixJQUFJLEVBQUUsSUFBYTtZQUNuQix3QkFBd0I7WUFDeEIsSUFBSTtTQUNMLENBQUMsQ0FBQztRQUVILE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUNyQyxDQUFDLENBQUMsQ0FBQztJQUVILE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQztBQUVEOzs7Ozs7O0dBT0c7QUFDSCxTQUFnQixHQUFHLENBRWpCLElBQVksRUFDWixJQUFZO0lBRVosSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsU0FBUyxJQUFJLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUUvQyxPQUFPLElBQUksQ0FBQztBQUNkLENBQUMifQ== |
+1
-49
@@ -94,9 +94,2 @@ "use strict"; | ||
| } | ||
| /** | ||
| * the apps name | ||
| * @deprecated Name will be removed in the near future. Please remove dependencies from it. | ||
| */ | ||
| get name() { | ||
| return this._manifest.name?.full; | ||
| } | ||
| get oauth() { | ||
@@ -108,27 +101,2 @@ return { | ||
| } | ||
| /** | ||
| * the apps manifest | ||
| */ | ||
| get manifest() { | ||
| return { | ||
| id: this.id, | ||
| name: { | ||
| short: this._manifest.name?.short || '??', | ||
| full: this._manifest.name?.full || '??', | ||
| }, | ||
| bots: [ | ||
| { | ||
| botId: this.id || '??', | ||
| scopes: ['personal'], | ||
| }, | ||
| ], | ||
| webApplicationInfo: { | ||
| id: this.credentials?.clientId || '??', | ||
| resource: `api://\${{BOT_DOMAIN}}/${this.credentials?.clientId || '??'}`, | ||
| ...this._manifest.webApplicationInfo, | ||
| }, | ||
| ...this._manifest, | ||
| }; | ||
| } | ||
| _manifest; | ||
| container = new container_1.Container(); | ||
@@ -147,3 +115,2 @@ plugins = []; | ||
| this.storage = this.options.storage || new teams_common_1.LocalStorage(); | ||
| this._manifest = this.options.manifest || {}; | ||
| // Resolve cloud environment from options or CLOUD env var | ||
@@ -247,12 +214,4 @@ const cloudEnvName = typeof process !== 'undefined' ? process.env.CLOUD : undefined; | ||
| // add injectable items to container | ||
| this.container.register('id', { useValue: this.id }); | ||
| this.container.register('name', { useValue: this.name }); | ||
| this.container.register('manifest', { useValue: this.manifest }); | ||
| this.container.register('credentials', { useValue: this.credentials }); | ||
| this.container.register('botToken', { useValue: () => this.getBotToken() }); | ||
| this.container.register('ILogger', { useValue: this.log }); | ||
| this.container.register('IStorage', { useValue: this.storage }); | ||
| this.container.register(this.client.constructor.name, { | ||
| useFactory: () => this.client, | ||
| }); | ||
| // Register HTTP server for plugins that need HTTP capabilities | ||
@@ -377,3 +336,2 @@ this.container.register('IHttpServer', { useValue: server }); | ||
| id: this.id, | ||
| name: this.name || this.id, | ||
| role: 'bot', | ||
@@ -442,8 +400,2 @@ }, | ||
| /** | ||
| * add a configurable tab | ||
| * @remark scopes defaults to `team` | ||
| * @param url The url to use when configuring the tab. | ||
| */ | ||
| configTab = app_embed_1.configTab; // eslint-disable-line @typescript-eslint/member-ordering | ||
| /** | ||
| * activity handler called when an inbound activity is received | ||
@@ -494,2 +446,2 @@ * @param sender the plugin to use for sending activities | ||
| exports.App = App; | ||
| //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2FwcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxpQ0FBbUM7QUFFbkMsb0RBWThCO0FBQzlCLDBEQVFpQztBQUVqQyxtRUFBa0M7QUFFbEMsdURBQW1EO0FBQ25ELCtCQUErQztBQUUvQywyQ0FBbUQ7QUFDbkQsNkNBS3NCO0FBQ3RCLDJDQUlxQjtBQUNyQiwrQ0FBdUU7QUFDdkUsK0NBQXlDO0FBQ3pDLCtDQUFpRDtBQUNqRCwyQ0FBd0M7QUFFeEMsaUNBQTREO0FBQzVELG9EQUFnRDtBQUVoRCx5REFBMkM7QUFDM0MsbUNBQWdFO0FBRWhFLHFDQUFrQztBQUNsQyxtREFBK0M7QUFHL0MsMkNBQTBEO0FBb0kxRDs7R0FFRztBQUNILE1BQWEsR0FBRztJQXVGTztJQXRGWixHQUFHLENBQVk7SUFDZixLQUFLLENBQW1CO0lBQ3hCLEtBQUssQ0FBYztJQUNuQixHQUFHLENBQVU7SUFDYixNQUFNLENBQWE7SUFDbkIsSUFBSSxDQUFjO0lBQ2xCLE1BQU0sQ0FBYTtJQUNuQixPQUFPLENBQVc7SUFDbEIsbUJBQW1CLENBQTJCO0lBQzlDLFlBQVksQ0FBZTtJQUVwQzs7Ozs7T0FLRztJQUNNLFlBQVksQ0FBVTtJQUUvQjs7T0FFRztJQUNILElBQUksV0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUM7SUFDdkMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSSxFQUFFO1FBQ0osT0FBTyxJQUFJLENBQUMsV0FBVyxFQUFFLFFBQVEsQ0FBQztJQUNwQyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUM7SUFDbkMsQ0FBQztJQUVELElBQUksS0FBSztRQUNQLE9BQU87WUFDTCxHQUFHLDhC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 | ||
| //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2FwcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxpQ0FBbUM7QUFFbkMsb0RBWThCO0FBQzlCLDBEQVFpQztBQUVqQyxtRUFBa0M7QUFFbEMsdURBQW1EO0FBQ25ELCtCQUErQztBQUUvQywyQ0FBd0M7QUFDeEMsNkNBS3NCO0FBQ3RCLDJDQUlxQjtBQUNyQiwrQ0FBdUU7QUFDdkUsK0NBQXlDO0FBQ3pDLCtDQUFpRDtBQUNqRCwyQ0FBd0M7QUFFeEMsaUNBQTREO0FBQzVELG9EQUFnRDtBQUNoRCx5REFBMkM7QUFDM0MsbUNBQWdFO0FBRWhFLHFDQUFrQztBQUNsQyxtREFBK0M7QUFHL0MsMkNBQTBEO0FBK0gxRDs7R0FFRztBQUNILE1BQWEsR0FBRztJQW9ETztJQW5EWixHQUFHLENBQVk7SUFDZixLQUFLLENBQW1CO0lBQ3hCLEtBQUssQ0FBYztJQUNuQixHQUFHLENBQVU7SUFDYixNQUFNLENBQWE7SUFDbkIsSUFBSSxDQUFjO0lBQ2xCLE1BQU0sQ0FBYTtJQUNuQixPQUFPLENBQVc7SUFDbEIsbUJBQW1CLENBQTJCO0lBQzlDLFlBQVksQ0FBZTtJQUVwQzs7Ozs7T0FLRztJQUNNLFlBQVksQ0FBVTtJQUUvQjs7T0FFRztJQUNILElBQUksV0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUM7SUFDdkMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSSxFQUFFO1FBQ0osT0FBTyxJQUFJLENBQUMsV0FBVyxFQUFFLFFBQVEsQ0FBQztJQUNwQyxDQUFDO0lBRUQsSUFBSSxLQUFLO1FBQ1AsT0FBTztZQUNMLEdBQUcsOEJBQXNCO1lBQ3pCLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLO1NBQ3RCLENBQUM7SUFDSixDQUFDO0lBRVMsU0FBUyxHQUFHLElBQUkscUJBQVMs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 |
@@ -62,2 +62,5 @@ "use strict"; | ||
| this.cloud = deps.cloud; | ||
| if (!this.credentials && !this.skipAuth) { | ||
| this.logger.warn('No credentials configured and skipAuth is not enabled. All incoming requests will be rejected. Configure client authentication to securely receive messages, or set skipAuth: true for local development.'); | ||
| } | ||
| // Initialize service token validator if credentials provided and auth not skipped | ||
@@ -68,5 +71,5 @@ if (this.credentials && !this.skipAuth) { | ||
| } | ||
| else if (!this.credentials) { | ||
| this.logger.warn('No credentials configured (CLIENT_ID / CLIENT_SECRET / TENANT_ID). ' + | ||
| `Bot will accept unauthenticated requests on ${this._messagingEndpoint}.`); | ||
| else if (!this.credentials && this.skipAuth) { | ||
| this.logger.warn('No credentials configured (CLIENT_ID / CLIENT_SECRET / TENANT_ID), ' + | ||
| `but skipAuth is enabled. Bot will accept unauthenticated requests on ${this._messagingEndpoint}.`); | ||
| } | ||
@@ -144,3 +147,3 @@ // Register Teams bot endpoint (POST only) | ||
| async authorize(headers, body) { | ||
| if (this.skipAuth || !this.credentials) { | ||
| if (this.skipAuth) { | ||
| const serviceUrl = body.serviceUrl || ''; | ||
@@ -158,2 +161,5 @@ return { | ||
| } | ||
| if (!this.credentials) { | ||
| return { success: false, error: 'Authentication not configured' }; | ||
| } | ||
| const raw = headers['authorization']; | ||
@@ -179,2 +185,2 @@ const authHeader = Array.isArray(raw) ? raw[0] : raw; | ||
| exports.HttpServer = HttpServer; | ||
| //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1zZXJ2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaHR0cC9odHRwLXNlcnZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFPQSwwREFBaUU7QUFHakUsd0ZBQW1GO0FBUW5GOzs7R0FHRztBQUNILFNBQVMsWUFBWSxDQUFDLENBQVU7SUFDOUIsNENBQTRDO0lBQzVDLE9BQU8sTUFBTSxDQUFDLENBQUMsSUFBSSxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUMsd0JBQXdCLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNuRixDQUFDO0FBb0JEOztHQUVHO0FBQ0gsTUFBYSxVQUFVO0lBQ3JCOzs7T0FHRztJQUNILFNBQVMsQ0FBc0Q7SUFFckQsTUFBTSxDQUFVO0lBQ2hCLFdBQVcsQ0FBZTtJQUMxQixRQUFRLENBQVU7SUFDbEIsS0FBSyxDQUFvQjtJQUN6QixXQUFXLEdBQVksS0FBSyxDQUFDO0lBQzdCLHFCQUFxQixDQUF5QjtJQUVoRCxRQUFRLENBQXFCO0lBQzdCLGtCQUFrQixDQUFTO0lBRW5DOzs7T0FHRztJQUNILElBQUksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFJLGlCQUFpQjtRQUNuQixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztJQUNqQyxDQUFDO0lBRUQsWUFBWSxPQUEyQixFQUFFLE9BQTBCO1FBQ2pFLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDLFFBQVEsSUFBSSxLQUFLLENBQUM7UUFDMUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxJQUFJLElBQUksNEJBQWEsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNoRSxJQUFJLENBQUMsa0JBQWtCLEdBQUcsT0FBTyxD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 | ||
| //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1zZXJ2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaHR0cC9odHRwLXNlcnZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFPQSwwREFBaUU7QUFHakUsd0ZBQW1GO0FBUW5GOzs7R0FHRztBQUNILFNBQVMsWUFBWSxDQUFDLENBQVU7SUFDOUIsNENBQTRDO0lBQzVDLE9BQU8sTUFBTSxDQUFDLENBQUMsSUFBSSxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUMsd0JBQXdCLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNuRixDQUFDO0FBb0JEOztHQUVHO0FBQ0gsTUFBYSxVQUFVO0lBQ3JCOzs7T0FHRztJQUNILFNBQVMsQ0FBc0Q7SUFFckQsTUFBTSxDQUFVO0lBQ2hCLFdBQVcsQ0FBZTtJQUMxQixRQUFRLENBQVU7SUFDbEIsS0FBSyxDQUFvQjtJQUN6QixXQUFXLEdBQVksS0FBSyxDQUFDO0lBQzdCLHFCQUFxQixDQUF5QjtJQUVoRCxRQUFRLENBQXFCO0lBQzdCLGtCQUFrQixDQUFTO0lBRW5DOzs7T0FHRztJQUNILElBQUksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFJLGlCQUFpQjtRQUNuQixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztJQUNqQyxDQUFDO0lBRUQsWUFBWSxPQUEyQixFQUFFLE9BQTBCO1FBQ2pFLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDLFFBQVEsSUFBSSxLQUFLLENBQUM7UUFDMUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxJQUFJLElBQUksNEJBQWEsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNoRSxJQUFJLENBQUMsa0JBQWtCLEdBQUcsT0FBTyxD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 |
+0
-1
@@ -7,4 +7,3 @@ export * from './app'; | ||
| export * from './events'; | ||
| export * as manifest from './manifest'; | ||
| export * from './http'; | ||
| export { toThreadedConversationId } from './utils/thread'; |
+2
-25
@@ -13,29 +13,7 @@ "use strict"; | ||
| })); | ||
| var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { | ||
| Object.defineProperty(o, "default", { enumerable: true, value: v }); | ||
| }) : function(o, v) { | ||
| o["default"] = v; | ||
| }); | ||
| var __exportStar = (this && this.__exportStar) || function(m, exports) { | ||
| for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); | ||
| }; | ||
| var __importStar = (this && this.__importStar) || (function () { | ||
| var ownKeys = function(o) { | ||
| ownKeys = Object.getOwnPropertyNames || function (o) { | ||
| var ar = []; | ||
| for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; | ||
| return ar; | ||
| }; | ||
| return ownKeys(o); | ||
| }; | ||
| return function (mod) { | ||
| if (mod && mod.__esModule) return mod; | ||
| var result = {}; | ||
| if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); | ||
| __setModuleDefault(result, mod); | ||
| return result; | ||
| }; | ||
| })(); | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| exports.toThreadedConversationId = exports.manifest = void 0; | ||
| exports.toThreadedConversationId = void 0; | ||
| __exportStar(require("./app"), exports); | ||
@@ -47,3 +25,2 @@ __exportStar(require("./plugins"), exports); | ||
| __exportStar(require("./events"), exports); | ||
| exports.manifest = __importStar(require("./manifest")); | ||
| // HTTP infrastructure - public API | ||
@@ -54,2 +31,2 @@ __exportStar(require("./http"), exports); | ||
| Object.defineProperty(exports, "toThreadedConversationId", { enumerable: true, get: function () { return thread_1.toThreadedConversationId; } }); | ||
| //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsd0NBQXNCO0FBQ3RCLDRDQUEwQjtBQUMxQiwwQ0FBd0I7QUFDeEIsNkNBQTJCO0FBQzNCLDBDQUF3QjtBQUN4QiwyQ0FBeUI7QUFDekIsdURBQXVDO0FBRXZDLG1DQUFtQztBQUNuQyx5Q0FBdUI7QUFFdkIsc0JBQXNCO0FBQ3RCLHlDQUEwRDtBQUFqRCxrSEFBQSx3QkFBd0IsT0FBQSJ9 | ||
| //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx3Q0FBc0I7QUFDdEIsNENBQTBCO0FBQzFCLDBDQUF3QjtBQUN4Qiw2Q0FBMkI7QUFDM0IsMENBQXdCO0FBQ3hCLDJDQUF5QjtBQUV6QixtQ0FBbUM7QUFDbkMseUNBQXVCO0FBRXZCLHNCQUFzQjtBQUN0Qix5Q0FBMEQ7QUFBakQsa0hBQUEsd0JBQXdCLE9BQUEifQ== |
@@ -20,4 +20,3 @@ "use strict"; | ||
| if (!validator) { | ||
| logger.debug('No service token validator configured, skipping validation'); | ||
| next(); | ||
| res.status(401).send('Authentication not configured'); | ||
| return; | ||
@@ -44,2 +43,2 @@ } | ||
| } | ||
| //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiand0LXZhbGlkYXRpb24tbWlkZGxld2FyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9taWRkbGV3YXJlL2p3dC12YWxpZGF0aW9uLW1pZGRsZXdhcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFpQkEsOENBaURDO0FBL0RELDBEQUFpRTtBQUVqRSw0RUFBdUU7QUFZdkUsU0FBZ0IsaUJBQWlCLENBQUMsTUFBMkI7SUFDM0QsTUFBTSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxHQUFHLE1BQU0sQ0FBQztJQUMzRCxNQUFNLE1BQU0sR0FBRyxXQUFXLEVBQUUsS0FBSyxDQUFDLDJCQUEyQixDQUFDLElBQUksSUFBSSw0QkFBYSxDQUFDLDJCQUEyQixDQUFDLENBQUM7SUFFakgsNkRBQTZEO0lBQzdELElBQUksU0FBdUMsQ0FBQztJQUM1QyxJQUFJLFdBQVcsRUFBRSxRQUFRLEVBQUUsQ0FBQztRQUMxQixTQUFTLEdBQUcsSUFBSSwrQ0FBcUIsQ0FDbkMsV0FBVyxDQUFDLFFBQVEsRUFDcEIsV0FBVyxDQUFDLFFBQVEsRUFDcEIsU0FBUyxFQUNULE1BQU0sRUFDTixLQUFLLENBQ04sQ0FBQztJQUNKLENBQUM7U0FBTSxDQUFDO1FBQ04sTUFBTSxDQUFDLEtBQUssQ0FBQyw0REFBNEQsQ0FBQyxDQUFDO1FBQzNFLFNBQVMsR0FBRyxJQUFJLENBQUM7SUFDbkIsQ0FBQztJQUVELE9BQU8sS0FBSyxFQUNWLEdBQXdCLEVBQ3hCLEdBQXFCLEVBQ3JCLElBQTBCLEVBQzFCLEVBQUU7UUFDRixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDZixNQUFNLENBQUMsS0FBSyxDQUFDLDREQUE0RCxDQUFDLENBQUM7WUFDM0UsSUFBSSxFQUFFLENBQUM7WUFDUCxPQUFPO1FBQ1QsQ0FBQztRQUVELE1BQU0sVUFBVSxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDO1FBQzdDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNoQixHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUNyQyxPQUFPO1FBQ1QsQ0FBQztRQUVELE1BQU0sUUFBUSxHQUFhLEdBQUcsQ0FBQyxJQUFJLENBQUM7UUFFcEMsSUFBSSxDQUFDO1lBQ0gsTUFBTSxLQUFLLEdBQUcsTUFBTSxTQUFTLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUMsQ0FBQztZQUMxRCxNQUFNLENBQUMsS0FBSyxDQUFDLHdDQUF3QyxRQUFRLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNwRSwwRUFBMEU7WUFDMUUsR0FBRyxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7WUFDM0IsSUFBSSxFQUFFLENBQUM7UUFDVCxDQUFDO1FBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztZQUNiLE1BQU0sQ0FBQyxLQUFLLENBQUMsMEJBQTBCLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDOUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDeEMsQ0FBQztJQUNILENBQUMsQ0FBQztBQUNKLENBQUMifQ== | ||
| //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiand0LXZhbGlkYXRpb24tbWlkZGxld2FyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9taWRkbGV3YXJlL2p3dC12YWxpZGF0aW9uLW1pZGRsZXdhcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFpQkEsOENBZ0RDO0FBOURELDBEQUFpRTtBQUVqRSw0RUFBdUU7QUFZdkUsU0FBZ0IsaUJBQWlCLENBQUMsTUFBMkI7SUFDM0QsTUFBTSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxHQUFHLE1BQU0sQ0FBQztJQUMzRCxNQUFNLE1BQU0sR0FBRyxXQUFXLEVBQUUsS0FBSyxDQUFDLDJCQUEyQixDQUFDLElBQUksSUFBSSw0QkFBYSxDQUFDLDJCQUEyQixDQUFDLENBQUM7SUFFakgsNkRBQTZEO0lBQzdELElBQUksU0FBdUMsQ0FBQztJQUM1QyxJQUFJLFdBQVcsRUFBRSxRQUFRLEVBQUUsQ0FBQztRQUMxQixTQUFTLEdBQUcsSUFBSSwrQ0FBcUIsQ0FDbkMsV0FBVyxDQUFDLFFBQVEsRUFDcEIsV0FBVyxDQUFDLFFBQVEsRUFDcEIsU0FBUyxFQUNULE1BQU0sRUFDTixLQUFLLENBQ04sQ0FBQztJQUNKLENBQUM7U0FBTSxDQUFDO1FBQ04sTUFBTSxDQUFDLEtBQUssQ0FBQyw0REFBNEQsQ0FBQyxDQUFDO1FBQzNFLFNBQVMsR0FBRyxJQUFJLENBQUM7SUFDbkIsQ0FBQztJQUVELE9BQU8sS0FBSyxFQUNWLEdBQXdCLEVBQ3hCLEdBQXFCLEVBQ3JCLElBQTBCLEVBQzFCLEVBQUU7UUFDRixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDZixHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO1lBQ3RELE9BQU87UUFDVCxDQUFDO1FBRUQsTUFBTSxVQUFVLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUM7UUFDN0MsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2hCLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQ3JDLE9BQU87UUFDVCxDQUFDO1FBRUQsTUFBTSxRQUFRLEdBQWEsR0FBRyxDQUFDLElBQUksQ0FBQztRQUVwQyxJQUFJLENBQUM7WUFDSCxNQUFNLEtBQUssR0FBRyxNQUFNLFNBQVMsQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQzFELE1BQU0sQ0FBQyxLQUFLLENBQUMsd0NBQXdDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3BFLDBFQUEwRTtZQUMxRSxHQUFHLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztZQUMzQixJQUFJLEVBQUUsQ0FBQztRQUNULENBQUM7UUFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1lBQ2IsTUFBTSxDQUFDLEtBQUssQ0FBQywwQkFBMEIsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUM5QyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUN4QyxDQUFDO0lBQ0gsQ0FBQyxDQUFDO0FBQ0osQ0FBQyJ9 |
@@ -17,2 +17,3 @@ import { CloudEnvironment, Credentials, IToken, TokenCredentials } from '@microsoft/teams.api'; | ||
| private confidentialClientsByTenantId; | ||
| private federatedIdentityClientsByTenantId; | ||
| private managedIdentityClient; | ||
@@ -30,2 +31,3 @@ constructor(options: TokenManagerOptions, logger: ILogger); | ||
| private getConfidentialClient; | ||
| private getFederatedIdentityClient; | ||
| private getManagedIdentityClient; | ||
@@ -32,0 +34,0 @@ private handleTokenResponse; |
+27
-13
@@ -38,2 +38,3 @@ "use strict"; | ||
| confidentialClientsByTenantId = {}; | ||
| federatedIdentityClientsByTenantId = {}; | ||
| managedIdentityClient = null; | ||
@@ -135,14 +136,3 @@ constructor(options, logger) { | ||
| async getTokenWithFederatedCredentials(credentials, scope, tenantId) { | ||
| const managedIdentityClient = this.getManagedIdentityClient(credentials); | ||
| const managedIdentityTokenRes = await managedIdentityClient.acquireToken({ resource: 'api://AzureADTokenExchange' }); | ||
| const confidentialClient = new msal_node_1.ConfidentialClientApplication({ | ||
| auth: { | ||
| clientId: credentials.clientId, | ||
| clientAssertion: managedIdentityTokenRes.accessToken, | ||
| authority: `${this.cloud.loginEndpoint}/${tenantId}` | ||
| }, | ||
| system: { | ||
| loggerOptions: this.buildLoggerOptions() | ||
| } | ||
| }); | ||
| const confidentialClient = this.getFederatedIdentityClient(credentials, tenantId); | ||
| const result = await confidentialClient.acquireTokenByClientCredential({ scopes: [scope] }); | ||
@@ -172,2 +162,26 @@ return this.handleTokenResponse(result); | ||
| } | ||
| getFederatedIdentityClient(credentials, tenantId) { | ||
| const cachedClient = this.federatedIdentityClientsByTenantId[tenantId]; | ||
| if (cachedClient) { | ||
| return cachedClient; | ||
| } | ||
| const client = new msal_node_1.ConfidentialClientApplication({ | ||
| auth: { | ||
| clientId: credentials.clientId, | ||
| clientAssertion: async () => { | ||
| const managedIdentityTokenRes = await this.getManagedIdentityClient(credentials).acquireToken({ resource: 'api://AzureADTokenExchange' }); | ||
| if (!managedIdentityTokenRes) { | ||
| throw new Error('Failed to acquire managed identity exchange token for federated identity credential'); | ||
| } | ||
| return managedIdentityTokenRes.accessToken; | ||
| }, | ||
| authority: `${this.cloud.loginEndpoint}/${tenantId}` | ||
| }, | ||
| system: { | ||
| loggerOptions: this.buildLoggerOptions() | ||
| } | ||
| }); | ||
| this.federatedIdentityClientsByTenantId[tenantId] = client; | ||
| return client; | ||
| } | ||
| getManagedIdentityClient(credentials) { | ||
@@ -231,2 +245,2 @@ if (this.managedIdentityClient) { | ||
| exports.TokenManager = TokenManager; | ||
| //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW4tbWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy90b2tlbi1tYW5hZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLGdEQUFnSztBQUVoSyxvREFBc007QUFDdE0sMERBQTJFO0FBRTNFLE1BQU0sOEJBQThCLEdBQUcsUUFBUSxDQUFDO0FBRWhELE1BQU0sMkJBQTJCLEdBQW1DO0lBQ2xFLENBQUMsb0JBQVksQ0FBQyxLQUFLLENBQUMsRUFBRSxPQUFPO0lBQzdCLENBQUMsb0JBQVksQ0FBQyxPQUFPLENBQUMsRUFBRSxNQUFNO0lBQzlCLENBQUMsb0JBQVksQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNO0lBQzNCLENBQUMsb0JBQVksQ0FBQyxPQUFPLENBQUMsRUFBRSxPQUFPO0lBQy9CLENBQUMsb0JBQVksQ0FBQyxLQUFLLENBQUMsRUFBRSxPQUFPO0NBQzlCLENBQUM7QUFDRixNQUFNLDJCQUEyQixHQUFtQztJQUNsRSxPQUFPLEVBQUUsb0JBQVksQ0FBQyxLQUFLO0lBQzNCLE1BQU0sRUFBRSxvQkFBWSxDQUFDLE9BQU87SUFDNUIsTUFBTSxFQUFFLG9CQUFZLENBQUMsSUFBSTtJQUN6QixPQUFPLEVBQUUsb0JBQVksQ0FBQyxPQUFPO0lBQzdCLE9BQU8sRUFBRSxvQkFBWSxDQUFDLEtBQUs7Q0FDNUIsQ0FBQztBQUlGLHVCQUF1QjtBQUN2QixTQUFTLG1CQUFtQixDQUFDLFdBQXdCO0lBQ25ELE9BQU8sY0FBYyxJQUFJLFdBQVcsQ0FBQztBQUN2QyxDQUFDO0FBRUQsU0FBUyxrQkFBa0IsQ0FBQyxXQUF3QjtJQUNsRCxPQUFPLE9BQU8sSUFBSSxXQUFXLENBQUM7QUFDaEMsQ0FBQztBQUVELFNBQVMsOEJBQThCLENBQUMsV0FBd0I7SUFDOUQsT0FBTyxxQkFBcUIsSUFBSSxXQUFXLENBQUM7QUFDOUMsQ0FBQztBQVlELE1BQWEsWUFBWTtJQUNkLFdBQVcsQ0FBZTtJQUMzQixNQUFNLENBQVU7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 | ||
| //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW4tbWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy90b2tlbi1tYW5hZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLGdEQUFnSztBQUVoSyxvREFBc007QUFDdE0sMERBQTJFO0FBRTNFLE1BQU0sOEJBQThCLEdBQUcsUUFBUSxDQUFDO0FBRWhELE1BQU0sMkJBQTJCLEdBQW1DO0lBQ2xFLENBQUMsb0JBQVksQ0FBQyxLQUFLLENBQUMsRUFBRSxPQUFPO0lBQzdCLENBQUMsb0JBQVksQ0FBQyxPQUFPLENBQUMsRUFBRSxNQUFNO0lBQzlCLENBQUMsb0JBQVksQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNO0lBQzNCLENBQUMsb0JBQVksQ0FBQyxPQUFPLENBQUMsRUFBRSxPQUFPO0lBQy9CLENBQUMsb0JBQVksQ0FBQyxLQUFLLENBQUMsRUFBRSxPQUFPO0NBQzlCLENBQUM7QUFDRixNQUFNLDJCQUEyQixHQUFtQztJQUNsRSxPQUFPLEVBQUUsb0JBQVksQ0FBQyxLQUFLO0lBQzNCLE1BQU0sRUFBRSxvQkFBWSxDQUFDLE9BQU87SUFDNUIsTUFBTSxFQUFFLG9CQUFZLENBQUMsSUFBSTtJQUN6QixPQUFPLEVBQUUsb0JBQVksQ0FBQyxPQUFPO0lBQzdCLE9BQU8sRUFBRSxvQkFBWSxDQUFDLEtBQUs7Q0FDNUIsQ0FBQztBQUlGLHVCQUF1QjtBQUN2QixTQUFTLG1CQUFtQixDQUFDLFdBQXdCO0lBQ25ELE9BQU8sY0FBYyxJQUFJLFdBQVcsQ0FBQztBQUN2QyxDQUFDO0FBRUQsU0FBUyxrQkFBa0IsQ0FBQyxXQUF3QjtJQUNsRCxPQUFPLE9BQU8sSUFBSSxXQUFXLENBQUM7QUFDaEMsQ0FBQztBQUVELFNBQVMsOEJBQThCLENBQUMsV0FBd0I7SUFDOUQsT0FBTyxxQkFBcUIsSUFBSSxXQUFXLENBQUM7QUFDOUMsQ0FBQztBQVlELE1BQWEsWUFBWTtJQUNkLFdBQVcsQ0FBZTtJQUMzQixNQUFNLENBQVU7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 |
@@ -33,2 +33,3 @@ import 'reflect-metadata'; | ||
| * inject the `App` `IHttpServer` instance | ||
| * @deprecated Server injection is best-effort and may be unavailable for custom runtimes. | ||
| */ | ||
@@ -41,69 +42,3 @@ export declare function HttpServer(): (target: any, propertyKey: string | ClassFieldDecoratorContext) => void; | ||
| */ | ||
| export type DependencyOptions = IdDependencyOptions | NameDependencyOptions | ManifestDependencyOptions | CredentialsDependencyOptions | BotTokenDependencyOptions | GraphTokenDependencyOptions | LoggerDependencyOptions | StorageDependencyOptions | HttpServerDependencyOptions | PluginDependencyOptions; | ||
| export type IdDependencyOptions = { | ||
| /** | ||
| * the name used to resolve the dependency | ||
| */ | ||
| readonly name: 'id'; | ||
| /** | ||
| * if optional, the app will not throw | ||
| * if the dependency is not found | ||
| */ | ||
| readonly optional: true; | ||
| }; | ||
| export type NameDependencyOptions = { | ||
| /** | ||
| * the name used to resolve the dependency | ||
| */ | ||
| readonly name: 'name'; | ||
| /** | ||
| * if optional, the app will not throw | ||
| * if the dependency is not found | ||
| */ | ||
| readonly optional: true; | ||
| }; | ||
| export type ManifestDependencyOptions = { | ||
| /** | ||
| * the name used to resolve the dependency | ||
| */ | ||
| readonly name: 'manifest'; | ||
| /** | ||
| * if optional, the app will not throw | ||
| * if the dependency is not found | ||
| */ | ||
| readonly optional?: false; | ||
| }; | ||
| export type CredentialsDependencyOptions = { | ||
| /** | ||
| * the name used to resolve the dependency | ||
| */ | ||
| readonly name: 'credentials'; | ||
| /** | ||
| * if optional, the app will not throw | ||
| * if the dependency is not found | ||
| */ | ||
| readonly optional: true; | ||
| }; | ||
| export type BotTokenDependencyOptions = { | ||
| /** | ||
| * the name used to resolve the dependency | ||
| */ | ||
| readonly name: 'botToken'; | ||
| /** | ||
| * if optional, the app will not throw | ||
| * if the dependency is not found | ||
| */ | ||
| readonly optional: true; | ||
| }; | ||
| export type GraphTokenDependencyOptions = { | ||
| /** | ||
| * the name used to resolve the dependency | ||
| */ | ||
| readonly name: 'graphToken'; | ||
| /** | ||
| * if optional, the app will not throw | ||
| * if the dependency is not found | ||
| */ | ||
| readonly optional: true; | ||
| }; | ||
| export type DependencyOptions = LoggerDependencyOptions | StorageDependencyOptions | HttpServerDependencyOptions | PluginDependencyOptions; | ||
| export type LoggerDependencyOptions = { | ||
@@ -146,3 +81,3 @@ /** | ||
| */ | ||
| readonly name?: Omit<string, 'id' | 'name' | 'manifest' | 'credentials' | 'botToken' | 'graphToken' | 'ILogger' | 'IStorage' | 'IHttpServer'>; | ||
| readonly name?: Omit<string, 'ILogger' | 'IStorage' | 'IHttpServer'>; | ||
| /** | ||
@@ -149,0 +84,0 @@ * if optional, the app will not throw |
@@ -52,2 +52,3 @@ "use strict"; | ||
| * inject the `App` `IHttpServer` instance | ||
| * @deprecated Server injection is best-effort and may be unavailable for custom runtimes. | ||
| */ | ||
@@ -57,2 +58,2 @@ function HttpServer() { | ||
| } | ||
| //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwZW5kZW5jeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90eXBlcy9wbHVnaW4vZGVjb3JhdG9ycy9kZXBlbmRlbmN5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQTJCQSxnQ0E0QkM7QUFLRCx3QkFFQztBQUtELDBCQUVDO0FBS0QsZ0NBRUM7QUE1RUQsNEJBQTBCO0FBQzFCLHFDQUE4RDtBQUVqRCxRQUFBLGdDQUFnQyxHQUFHLDJCQUEyQixDQUFDO0FBb0I1RTs7O0dBR0c7QUFDSCxTQUFnQixVQUFVLENBQUMsVUFBNkIsRUFBRTtJQUN4RCxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDO0lBQzFCLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLElBQUksS0FBSyxDQUFDO0lBRTNDLE9BQU8sQ0FBQyxNQUFXLEVBQUUsV0FBZ0QsRUFBRSxFQUFFO1FBQ3ZFLElBQUksT0FBTyxXQUFXLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDcEMsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQztZQUN0QyxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxNQUFNLEVBQUUsV0FBVyxDQUFDLENBQUM7WUFDMUUsSUFBSSxZQUFZLEdBQUcsSUFBSSxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUM7WUFFMUMsNENBQTRDO1lBQzVDLElBQUksT0FBTyxDQUFDLFdBQVcsQ0FBQyw0QkFBbUIsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDO2dCQUN4RCxNQUFNLElBQUksR0FBa0IsT0FBTyxDQUFDLFdBQVcsQ0FBQyw0QkFBbUIsRUFBRSxTQUFTLENBQUMsQ0FBQztnQkFDaEYsWUFBWSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDM0IsQ0FBQztZQUVELE1BQU0sb0JBQW9CLEdBQ3hCLE9BQU8sQ0FBQyxjQUFjLENBQUMsd0NBQWdDLEVBQUUsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO1lBRTdFLG9CQUFvQixDQUFDLElBQUksQ0FBQztnQkFDeEIsR0FBRyxFQUFFLFdBQVc7Z0JBQ2hCLElBQUksRUFBRSxZQUFZO2dCQUNsQixRQUFRO2FBQ1QsQ0FBQyxDQUFDO1lBRUgsT0FBTyxDQUFDLGNBQWMsQ0FBQyx3Q0FBZ0MsRUFBRSxvQkFBb0IsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUM3RixDQUFDO0lBQ0gsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0IsTUFBTTtJQUNwQixPQUFPLFVBQVUsQ0FBQyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO0FBQ3pDLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLE9BQU87SUFDckIsT0FBTyxVQUFVLENBQUMsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztBQUMxQyxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixVQUFVO0lBQ3hCLE9BQU8sVUFBVSxDQUFDLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxDQUFDLENBQUM7QUFDN0MsQ0FBQyJ9 | ||
| //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwZW5kZW5jeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90eXBlcy9wbHVnaW4vZGVjb3JhdG9ycy9kZXBlbmRlbmN5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQTJCQSxnQ0E0QkM7QUFLRCx3QkFFQztBQUtELDBCQUVDO0FBTUQsZ0NBRUM7QUE3RUQsNEJBQTBCO0FBQzFCLHFDQUE4RDtBQUVqRCxRQUFBLGdDQUFnQyxHQUFHLDJCQUEyQixDQUFDO0FBb0I1RTs7O0dBR0c7QUFDSCxTQUFnQixVQUFVLENBQUMsVUFBNkIsRUFBRTtJQUN4RCxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDO0lBQzFCLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLElBQUksS0FBSyxDQUFDO0lBRTNDLE9BQU8sQ0FBQyxNQUFXLEVBQUUsV0FBZ0QsRUFBRSxFQUFFO1FBQ3ZFLElBQUksT0FBTyxXQUFXLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDcEMsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQztZQUN0QyxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxNQUFNLEVBQUUsV0FBVyxDQUFDLENBQUM7WUFDMUUsSUFBSSxZQUFZLEdBQUcsSUFBSSxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUM7WUFFMUMsNENBQTRDO1lBQzVDLElBQUksT0FBTyxDQUFDLFdBQVcsQ0FBQyw0QkFBbUIsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDO2dCQUN4RCxNQUFNLElBQUksR0FBa0IsT0FBTyxDQUFDLFdBQVcsQ0FBQyw0QkFBbUIsRUFBRSxTQUFTLENBQUMsQ0FBQztnQkFDaEYsWUFBWSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDM0IsQ0FBQztZQUVELE1BQU0sb0JBQW9CLEdBQ3hCLE9BQU8sQ0FBQyxjQUFjLENBQUMsd0NBQWdDLEVBQUUsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO1lBRTdFLG9CQUFvQixDQUFDLElBQUksQ0FBQztnQkFDeEIsR0FBRyxFQUFFLFdBQVc7Z0JBQ2hCLElBQUksRUFBRSxZQUFZO2dCQUNsQixRQUFRO2FBQ1QsQ0FBQyxDQUFDO1lBRUgsT0FBTyxDQUFDLGNBQWMsQ0FBQyx3Q0FBZ0MsRUFBRSxvQkFBb0IsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUM3RixDQUFDO0lBQ0gsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0IsTUFBTTtJQUNwQixPQUFPLFVBQVUsQ0FBQyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO0FBQ3pDLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLE9BQU87SUFDckIsT0FBTyxVQUFVLENBQUMsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztBQUMxQyxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsU0FBZ0IsVUFBVTtJQUN4QixPQUFPLFVBQVUsQ0FBQyxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsQ0FBQyxDQUFDO0FBQzdDLENBQUMifQ== |
+7
-8
| { | ||
| "name": "@microsoft/teams.apps", | ||
| "version": "2.0.12", | ||
| "version": "2.0.13", | ||
| "license": "MIT", | ||
@@ -37,10 +37,9 @@ "main": "./dist/index.js", | ||
| "build": "npx tsc", | ||
| "test": "npx jest", | ||
| "generate": "npx quicktype -s schema -l typescript ./manifest.schema.json -o ./src/manifest.ts --prefer-unions --prefer-types --just-types" | ||
| "test": "npx jest" | ||
| }, | ||
| "dependencies": { | ||
| "@azure/msal-node": "^3.8.1", | ||
| "@microsoft/teams.api": "2.0.12", | ||
| "@microsoft/teams.common": "2.0.12", | ||
| "@microsoft/teams.graph": "2.0.12", | ||
| "@azure/msal-node": "^5.2.2", | ||
| "@microsoft/teams.api": "2.0.13", | ||
| "@microsoft/teams.common": "2.0.13", | ||
| "@microsoft/teams.graph": "2.0.13", | ||
| "axios": "^1.15.2", | ||
@@ -54,3 +53,3 @@ "cors": "^2.8.5", | ||
| "devDependencies": { | ||
| "@microsoft/teams.config": "2.0.12", | ||
| "@microsoft/teams.config": "2.0.13", | ||
| "@types/cors": "^2.8.17", | ||
@@ -57,0 +56,0 @@ "@types/express": "^5.0.0", |
+59
-9
@@ -1,2 +0,2 @@ | ||
| # Teams: Apps | ||
| # @microsoft/teams.apps | ||
@@ -16,3 +16,3 @@ <p> | ||
| </a> | ||
| <a href="https://microsoft.github.io/teams-sdk" target="_blank"> | ||
| <a href="https://aka.ms/teams-sdk-ts" target="_blank"> | ||
| <img src="https://img.shields.io/badge/📖 docs-open-blue" /> | ||
@@ -22,16 +22,66 @@ </a> | ||
| A package used to create apps/bots that can send/receive activities. | ||
| Build Microsoft Teams agents, tabs, message extensions, and proactive notification services in TypeScript. | ||
| <a href="https://microsoft.github.io/teams-sdk" target="_blank"> | ||
| <img src="https://img.shields.io/badge/📖 Getting Started-blue?style=for-the-badge" /> | ||
| </a> | ||
| `@microsoft/teams.apps` handles Teams activity routing, request auth, replies, proactive sends, Graph access, OAuth sign-in, plugins, and HTTP hosting so you can focus on your app behavior. | ||
| Read the full docs at [aka.ms/teams-sdk-ts](https://aka.ms/teams-sdk-ts). | ||
| ## Install | ||
| ```bash | ||
| $: npm install @microsoft/teams.apps | ||
| npm install @microsoft/teams.apps | ||
| ``` | ||
| ## Dependencies | ||
| ## Hello Teams agent | ||
| - [`express`](https://www.npmjs.com/package/express) | ||
| ```ts | ||
| import { App } from '@microsoft/teams.apps'; | ||
| const app = new App(); | ||
| app.on('message', async ({ activity, reply }) => { | ||
| await reply(`You said: ${activity.text}`); | ||
| }); | ||
| app.start().catch(console.error); | ||
| ``` | ||
| By default, the app receives Teams activities at `/api/messages`. | ||
| ## Use your existing server | ||
| `@microsoft/teams.apps` can start its own HTTP server, or plug into an existing server/framework with an HTTP adapter. | ||
| ```ts | ||
| import express from 'express'; | ||
| import { App, ExpressAdapter } from '@microsoft/teams.apps'; | ||
| async function main() { | ||
| const server = express(); | ||
| server.get('/health', (_req, res) => { | ||
| res.json({ status: 'ok' }); | ||
| }); | ||
| const app = new App({ | ||
| httpServerAdapter: new ExpressAdapter(server), | ||
| }); | ||
| app.on('message', async ({ activity, reply }) => { | ||
| await reply(`You said: ${activity.text}`); | ||
| }); | ||
| await app.initialize(); // registers /api/messages on your server | ||
| server.listen(process.env.PORT || 3978); | ||
| } | ||
| main().catch(console.error); | ||
| ``` | ||
| See the [HTTP adapter examples](https://github.com/microsoft/teams.ts/tree/main/examples/http-adapters) for framework integration samples. | ||
| ## Examples | ||
| See the [examples folder](https://github.com/microsoft/teams.ts/tree/main/examples) for agents, tabs, message extensions, proactive messaging, Graph, AI/MCP, A2A, and more. | ||
-1241
| export type Manifest = { | ||
| $schema?: string; | ||
| /** | ||
| * A color to use in conjunction with the icon. The value must be a valid HTML color code | ||
| * starting with '#', for example `#4464ee`. | ||
| */ | ||
| accentColor: string; | ||
| activities?: Activities; | ||
| /** | ||
| * Specify and consolidates authorization related information for the App. | ||
| */ | ||
| authorization?: ManifestAuthorization; | ||
| /** | ||
| * The set of bots for this app. Currently only one bot per app is supported. | ||
| */ | ||
| bots?: Bot[]; | ||
| /** | ||
| * The set of compose extensions for this app. Currently only one compose extension per app | ||
| * is supported. | ||
| */ | ||
| composeExtensions?: ComposeExtension[]; | ||
| /** | ||
| * A list of tenant configured properties for an app | ||
| */ | ||
| configurableProperties?: ConfigurableProperty[]; | ||
| /** | ||
| * These are tabs users can optionally add to their channels and 1:1 or group chats and | ||
| * require extra configuration before they are added. Configurable tabs are not supported in | ||
| * the personal scope. Currently only one configurable tab per app is supported. | ||
| */ | ||
| configurableTabs?: ConfigurableTab[]; | ||
| /** | ||
| * The set of Office365 connectors for this app. Currently only one connector per app is | ||
| * supported. | ||
| */ | ||
| connectors?: Connector[]; | ||
| copilotAgents?: CopilotAgents; | ||
| /** | ||
| * Defines the list of cards which could be pinned to dashboards that can provide summarized | ||
| * view of information relevant to user. | ||
| */ | ||
| dashboardCards?: DashboardCard[]; | ||
| /** | ||
| * A value indicating whether an app is blocked by default until admin allows it | ||
| */ | ||
| defaultBlockUntilAdminAction?: boolean; | ||
| /** | ||
| * When a group install scope is selected, this will define the default capability when the | ||
| * user installs the app | ||
| */ | ||
| defaultGroupCapability?: DefaultGroupCapability; | ||
| /** | ||
| * The install scope defined for this app by default. This will be the option displayed on | ||
| * the button when a user tries to add the app | ||
| */ | ||
| defaultInstallScope?: DefaultInstallScope; | ||
| description: Description; | ||
| developer: Developer; | ||
| /** | ||
| * Specify the native features on a user's device that your app may request access to. | ||
| */ | ||
| devicePermissions?: DevicePermission[]; | ||
| extensions?: ElementExtension[]; | ||
| /** | ||
| * Specify the app's Graph connector configuration. If this is present then | ||
| * webApplicationInfo.id must also be specified. | ||
| */ | ||
| graphConnector?: GraphConnector; | ||
| icons: Icons; | ||
| /** | ||
| * A unique identifier for this app. This id must be a GUID. | ||
| */ | ||
| id: string; | ||
| /** | ||
| * A value indicating whether a personal app is rendered without a tab header-bar | ||
| */ | ||
| isFullScreen?: boolean; | ||
| localizationInfo?: LocalizationInfo; | ||
| /** | ||
| * The version of the schema this manifest is using. This schema version supports extending | ||
| * Teams apps to other parts of the Microsoft 365 ecosystem. More info at | ||
| * https://aka.ms/extendteamsapps. | ||
| */ | ||
| manifestVersion: ManifestVersion; | ||
| /** | ||
| * Specify meeting extension definition. | ||
| */ | ||
| meetingExtensionDefinition?: MeetingExtensionDefinition; | ||
| name: Name; | ||
| /** | ||
| * Specifies the permissions the app requests from users. | ||
| */ | ||
| permissions?: Permission[]; | ||
| /** | ||
| * The url to the page that provides additional app information for the admins | ||
| */ | ||
| publisherDocsUrl?: string; | ||
| /** | ||
| * A value indicating whether or not show loading indicator when app/tab is loading | ||
| */ | ||
| showLoadingIndicator?: boolean; | ||
| /** | ||
| * A set of tabs that may be 'pinned' by default, without the user adding them manually. | ||
| * Static tabs declared in personal scope are always pinned to the app's personal | ||
| * experience. Static tabs do not currently support the 'teams' scope. | ||
| */ | ||
| staticTabs?: StaticTab[]; | ||
| /** | ||
| * Subscription offer associated with this app. | ||
| */ | ||
| subscriptionOffer?: SubscriptionOffer; | ||
| /** | ||
| * List of 'non-standard' channel types that the app supports. Note: Channels of standard | ||
| * type are supported by default if the app supports team scope. | ||
| */ | ||
| supportedChannelTypes?: SupportedChannelType[]; | ||
| /** | ||
| * A list of valid domains from which the tabs expect to load any content. Domain listings | ||
| * can include wildcards, for example `*.example.com`. If your tab configuration or content | ||
| * UI needs to navigate to any other domain besides the one use for tab configuration, that | ||
| * domain must be specified here. | ||
| */ | ||
| validDomains?: string[]; | ||
| /** | ||
| * The version of the app. Changes to your manifest should cause a version change. This | ||
| * version string must follow the semver standard (http://semver.org). | ||
| */ | ||
| version: string; | ||
| /** | ||
| * Specify your AAD App ID and Graph information to help users seamlessly sign into your AAD | ||
| * app. | ||
| */ | ||
| webApplicationInfo?: WebApplicationInfo; | ||
| }; | ||
| export type Activities = { | ||
| /** | ||
| * Specify the types of activites that your app can post to a users activity feed | ||
| */ | ||
| activityTypes?: ActivityType[]; | ||
| }; | ||
| export type ActivityType = { | ||
| description: string; | ||
| templateText: string; | ||
| type: string; | ||
| }; | ||
| /** | ||
| * Specify and consolidates authorization related information for the App. | ||
| */ | ||
| export type ManifestAuthorization = { | ||
| /** | ||
| * List of permissions that the app needs to function. | ||
| */ | ||
| permissions?: Permissions; | ||
| }; | ||
| /** | ||
| * List of permissions that the app needs to function. | ||
| */ | ||
| export type Permissions = { | ||
| /** | ||
| * Permissions that must be granted on a per resource instance basis. | ||
| */ | ||
| resourceSpecific?: ResourceSpecific[]; | ||
| }; | ||
| export type ResourceSpecific = { | ||
| /** | ||
| * The name of the resource-specific permission. | ||
| */ | ||
| name: string; | ||
| /** | ||
| * The type of the resource-specific permission: delegated vs application. | ||
| */ | ||
| type: ResourceSpecificType; | ||
| }; | ||
| /** | ||
| * The type of the resource-specific permission: delegated vs application. | ||
| */ | ||
| export type ResourceSpecificType = 'Application' | 'Delegated'; | ||
| export type Bot = { | ||
| /** | ||
| * The Microsoft App ID specified for the bot in the Bot Framework portal | ||
| * (https://dev.botframework.com/bots) | ||
| */ | ||
| botId: string; | ||
| /** | ||
| * The list of commands that the bot supplies, including their usage, description, and the | ||
| * scope for which the commands are valid. A separate command list should be used for each | ||
| * scope. | ||
| */ | ||
| commandLists?: CommandList[]; | ||
| configuration?: Configuration; | ||
| /** | ||
| * A value indicating whether or not the bot is a one-way notification only bot, as opposed | ||
| * to a conversational bot. | ||
| */ | ||
| isNotificationOnly?: boolean; | ||
| /** | ||
| * This value describes whether or not the bot utilizes a user hint to add the bot to a | ||
| * specific channel. | ||
| */ | ||
| needsChannelSelector?: boolean; | ||
| /** | ||
| * Specifies whether the bot offers an experience in the context of a channel in a team, in | ||
| * a 1:1 or group chat, or in an experience scoped to an individual user alone. These | ||
| * options are non-exclusive. | ||
| */ | ||
| scopes: CommandListScope[]; | ||
| /** | ||
| * A value indicating whether the bot supports audio calling. | ||
| */ | ||
| supportsCalling?: boolean; | ||
| /** | ||
| * A value indicating whether the bot supports uploading/downloading of files. | ||
| */ | ||
| supportsFiles?: boolean; | ||
| /** | ||
| * A value indicating whether the bot supports video calling. | ||
| */ | ||
| supportsVideo?: boolean; | ||
| }; | ||
| export type CommandList = { | ||
| commands: CommandListCommand[]; | ||
| /** | ||
| * Specifies the scopes for which the command list is valid | ||
| */ | ||
| scopes: CommandListScope[]; | ||
| }; | ||
| export type CommandListCommand = { | ||
| /** | ||
| * A simple text description or an example of the command syntax and its arguments. | ||
| */ | ||
| description: string; | ||
| /** | ||
| * The bot command name | ||
| */ | ||
| title: string; | ||
| }; | ||
| export type CommandListScope = 'team' | 'personal' | 'groupChat'; | ||
| export type Configuration = { | ||
| groupChat?: GroupChat; | ||
| team?: GroupChat; | ||
| }; | ||
| export type GroupChat = { | ||
| fetchTask?: boolean; | ||
| taskInfo?: TaskInfo; | ||
| }; | ||
| export type TaskInfo = { | ||
| /** | ||
| * Dialog height - either a number in pixels or default layout such as 'large', 'medium', or | ||
| * 'small' | ||
| */ | ||
| height?: string; | ||
| /** | ||
| * Initial dialog title | ||
| */ | ||
| title?: string; | ||
| /** | ||
| * Initial webview URL | ||
| */ | ||
| url?: string; | ||
| /** | ||
| * Dialog width - either a number in pixels or default layout such as 'large', 'medium', or | ||
| * 'small' | ||
| */ | ||
| width?: string; | ||
| }; | ||
| export type ComposeExtension = { | ||
| /** | ||
| * A relative file path to the api specification file in the manifest package. | ||
| */ | ||
| apiSpecificationFile?: string; | ||
| /** | ||
| * Object capturing authorization information. | ||
| */ | ||
| authorization?: ComposeExtensionAuthorization; | ||
| /** | ||
| * The Microsoft App ID specified for the bot powering the compose extension in the Bot | ||
| * Framework portal (https://dev.botframework.com/bots) | ||
| */ | ||
| botId?: string; | ||
| /** | ||
| * A value indicating whether the configuration of a compose extension can be updated by the | ||
| * user. | ||
| */ | ||
| canUpdateConfiguration?: boolean | null; | ||
| commands?: ComposeExtensionCommand[]; | ||
| /** | ||
| * Type of the compose extension. | ||
| */ | ||
| composeExtensionType?: ComposeExtensionType; | ||
| /** | ||
| * A list of handlers that allow apps to be invoked when certain conditions are met | ||
| */ | ||
| messageHandlers?: MessageHandler[]; | ||
| }; | ||
| /** | ||
| * Object capturing authorization information. | ||
| */ | ||
| export type ComposeExtensionAuthorization = { | ||
| /** | ||
| * Object capturing details needed to do service auth. It will be only present when auth | ||
| * type is apiSecretServiceAuth. | ||
| */ | ||
| apiSecretServiceAuthConfiguration?: APISecretServiceAuthConfiguration; | ||
| /** | ||
| * Enum of possible authentication types. | ||
| */ | ||
| authType?: AuthType; | ||
| /** | ||
| * Object capturing details needed to do single aad auth flow. It will be only present when | ||
| * auth type is entraId. | ||
| */ | ||
| microsoftEntraConfiguration?: MicrosoftEntraConfiguration; | ||
| }; | ||
| /** | ||
| * Object capturing details needed to do service auth. It will be only present when auth | ||
| * type is apiSecretServiceAuth. | ||
| */ | ||
| export type APISecretServiceAuthConfiguration = { | ||
| /** | ||
| * Registration id returned when developer submits the api key through Developer Portal. | ||
| */ | ||
| apiSecretRegistrationId?: string; | ||
| }; | ||
| /** | ||
| * Enum of possible authentication types. | ||
| */ | ||
| export type AuthType = 'none' | 'apiSecretServiceAuth' | 'microsoftEntra'; | ||
| /** | ||
| * Object capturing details needed to do single aad auth flow. It will be only present when | ||
| * auth type is entraId. | ||
| */ | ||
| export type MicrosoftEntraConfiguration = { | ||
| /** | ||
| * Boolean indicating whether single sign on is configured for the app. | ||
| */ | ||
| supportsSingleSignOn?: boolean; | ||
| }; | ||
| export type ComposeExtensionCommand = { | ||
| /** | ||
| * A relative file path for api response rendering template file. | ||
| */ | ||
| apiResponseRenderingTemplateFile?: string; | ||
| /** | ||
| * Context where the command would apply | ||
| */ | ||
| context?: CommandContext[]; | ||
| /** | ||
| * Description of the command. | ||
| */ | ||
| description?: string; | ||
| /** | ||
| * A boolean value that indicates if it should fetch task module dynamically | ||
| */ | ||
| fetchTask?: boolean; | ||
| /** | ||
| * Id of the command. | ||
| */ | ||
| id: string; | ||
| /** | ||
| * A boolean value that indicates if the command should be run once initially with no | ||
| * parameter. | ||
| */ | ||
| initialRun?: boolean; | ||
| parameters?: Parameter[]; | ||
| samplePrompts?: SamplePrompt[]; | ||
| /** | ||
| * Semantic description for the command. | ||
| */ | ||
| semanticDescription?: string; | ||
| taskInfo?: TaskInfo; | ||
| /** | ||
| * Title of the command. | ||
| */ | ||
| title: string; | ||
| /** | ||
| * Type of the command | ||
| */ | ||
| type?: CommandType; | ||
| }; | ||
| export type CommandContext = 'compose' | 'commandBox' | 'message'; | ||
| export type Parameter = { | ||
| /** | ||
| * The choice options for the parameter | ||
| */ | ||
| choices?: Choice[]; | ||
| /** | ||
| * Description of the parameter. | ||
| */ | ||
| description?: string; | ||
| /** | ||
| * Type of the parameter | ||
| */ | ||
| inputType?: InputType; | ||
| /** | ||
| * The value indicates if this parameter is a required field. | ||
| */ | ||
| isRequired?: boolean; | ||
| /** | ||
| * Name of the parameter. | ||
| */ | ||
| name: string; | ||
| /** | ||
| * Semantic description for the parameter. | ||
| */ | ||
| semanticDescription?: string; | ||
| /** | ||
| * Title of the parameter. | ||
| */ | ||
| title: string; | ||
| /** | ||
| * Initial value for the parameter | ||
| */ | ||
| value?: string; | ||
| }; | ||
| export type Choice = { | ||
| /** | ||
| * Title of the choice | ||
| */ | ||
| title: string; | ||
| /** | ||
| * Value of the choice | ||
| */ | ||
| value: string; | ||
| }; | ||
| /** | ||
| * Type of the parameter | ||
| */ | ||
| export type InputType = 'text' | 'textarea' | 'number' | 'date' | 'time' | 'toggle' | 'choiceset'; | ||
| export type SamplePrompt = { | ||
| /** | ||
| * This string will hold the sample prompt | ||
| */ | ||
| text: string; | ||
| }; | ||
| /** | ||
| * Type of the command | ||
| */ | ||
| export type CommandType = 'query' | 'action'; | ||
| /** | ||
| * Type of the compose extension. | ||
| */ | ||
| export type ComposeExtensionType = 'botBased' | 'apiBased'; | ||
| export type MessageHandler = { | ||
| /** | ||
| * Type of the message handler | ||
| */ | ||
| type: MessageHandlerType; | ||
| value: Value; | ||
| }; | ||
| /** | ||
| * Type of the message handler | ||
| */ | ||
| export type MessageHandlerType = 'link'; | ||
| export type Value = { | ||
| /** | ||
| * A list of domains that the link message handler can register for, and when they are | ||
| * matched the app will be invoked | ||
| */ | ||
| domains?: string[]; | ||
| /** | ||
| * A boolean that indicates whether the app's link message handler supports anonymous invoke | ||
| * flow. | ||
| */ | ||
| supportsAnonymizedPayloads?: boolean; | ||
| [property: string]: any; | ||
| }; | ||
| export type ConfigurableProperty = 'name' | 'shortDescription' | 'longDescription' | 'smallImageUrl' | 'largeImageUrl' | 'accentColor' | 'developerUrl' | 'privacyUrl' | 'termsOfUseUrl'; | ||
| export type ConfigurableTab = { | ||
| /** | ||
| * A value indicating whether an instance of the tab's configuration can be updated by the | ||
| * user after creation. | ||
| */ | ||
| canUpdateConfiguration?: boolean; | ||
| /** | ||
| * The url to use when configuring the tab. | ||
| */ | ||
| configurationUrl: string; | ||
| /** | ||
| * The set of contextItem scopes that a tab belong to | ||
| */ | ||
| context?: ConfigurableTabContext[]; | ||
| /** | ||
| * The set of meetingSurfaceItem scopes that a tab belong to | ||
| */ | ||
| meetingSurfaces?: MeetingSurface[]; | ||
| /** | ||
| * Specifies whether the tab offers an experience in the context of a channel in a team, in | ||
| * a 1:1 or group chat, or in an experience scoped to an individual user alone. These | ||
| * options are non-exclusive. Currently, configurable tabs are only supported in the teams | ||
| * and groupchats scopes. | ||
| */ | ||
| scopes: ConfigurableTabScope[]; | ||
| /** | ||
| * A relative file path to a tab preview image for use in SharePoint. Size 1024x768. | ||
| */ | ||
| sharePointPreviewImage?: string; | ||
| /** | ||
| * Defines how your tab will be made available in SharePoint. | ||
| */ | ||
| supportedSharePointHosts?: SupportedSharePointHost[]; | ||
| }; | ||
| export type ConfigurableTabContext = 'personalTab' | 'channelTab' | 'privateChatTab' | 'meetingChatTab' | 'meetingDetailsTab' | 'meetingSidePanel' | 'meetingStage'; | ||
| export type MeetingSurface = 'sidePanel' | 'stage'; | ||
| export type ConfigurableTabScope = 'team' | 'groupChat'; | ||
| export type SupportedSharePointHost = 'sharePointFullPage' | 'sharePointWebPart'; | ||
| export type Connector = { | ||
| /** | ||
| * The url to use for configuring the connector using the inline configuration experience. | ||
| */ | ||
| configurationUrl?: string; | ||
| /** | ||
| * A unique identifier for the connector which matches its ID in the Connectors Developer | ||
| * Portal. | ||
| */ | ||
| connectorId: string; | ||
| /** | ||
| * Specifies whether the connector offers an experience in the context of a channel in a | ||
| * team, or an experience scoped to an individual user alone. Currently, only the team scope | ||
| * is supported. | ||
| */ | ||
| scopes: ConnectorScope[]; | ||
| }; | ||
| export type ConnectorScope = 'team'; | ||
| export type CopilotAgents = { | ||
| /** | ||
| * An array of declarative agent elements references. Currently, only one declarative agent | ||
| * per application is supported. | ||
| */ | ||
| declarativeAgents: DeclarativeAgentRef[]; | ||
| }; | ||
| /** | ||
| * A reference to a declarative agent element. The element's definition is in a separate | ||
| * file. | ||
| */ | ||
| export type DeclarativeAgentRef = { | ||
| /** | ||
| * Relative file path to this declarative agent element file in the application package. | ||
| */ | ||
| file: string; | ||
| /** | ||
| * A unique identifier for this declarative agent element. | ||
| */ | ||
| id: string; | ||
| }; | ||
| /** | ||
| * Cards wich could be pinned to dashboard providing summarized view of information relevant | ||
| * to user. | ||
| */ | ||
| export type DashboardCard = { | ||
| contentSource: DashboardCardContentSource; | ||
| /** | ||
| * Rendering Size for dashboard card. | ||
| */ | ||
| defaultSize: DefaultSize; | ||
| /** | ||
| * Description of the card.Maximum length is 255 characters. | ||
| */ | ||
| description: string; | ||
| /** | ||
| * Represents the name of the card. Maximum length is 255 characters. | ||
| */ | ||
| displayName: string; | ||
| icon?: DashboardCardIcon; | ||
| /** | ||
| * Unique Id for the card. Must be unique inside the app. | ||
| */ | ||
| id: string; | ||
| /** | ||
| * Id of the group in the card picker. This must be guid. | ||
| */ | ||
| pickerGroupId: string; | ||
| }; | ||
| /** | ||
| * Represents a configuration for the source of the card’s content. | ||
| */ | ||
| export type DashboardCardContentSource = { | ||
| /** | ||
| * The configuration for the bot source. Required if sourceType is set to bot. | ||
| */ | ||
| botConfiguration?: BotConfiguration; | ||
| /** | ||
| * The content of the dashboard card is sourced from a bot. | ||
| */ | ||
| sourceType?: SourceType; | ||
| }; | ||
| /** | ||
| * The configuration for the bot source. Required if sourceType is set to bot. | ||
| */ | ||
| export type BotConfiguration = { | ||
| /** | ||
| * The unique Microsoft app ID for the bot as registered with the Bot Framework. | ||
| */ | ||
| botId?: string; | ||
| }; | ||
| /** | ||
| * The content of the dashboard card is sourced from a bot. | ||
| */ | ||
| export type SourceType = 'bot'; | ||
| /** | ||
| * Rendering Size for dashboard card. | ||
| */ | ||
| export type DefaultSize = 'medium' | 'large'; | ||
| /** | ||
| * Represents a configuration for the source of the card’s content | ||
| */ | ||
| export type DashboardCardIcon = { | ||
| /** | ||
| * The icon for the card, to be displayed in the toolbox and card bar, represented as URL. | ||
| */ | ||
| iconUrl?: string; | ||
| /** | ||
| * Office UI Fabric/Fluent UI icon friendly name for the card. This value will be used if | ||
| * ‘iconUrl’ is not specified. | ||
| */ | ||
| officeUIFabricIconName?: string; | ||
| }; | ||
| /** | ||
| * When a group install scope is selected, this will define the default capability when the | ||
| * user installs the app | ||
| */ | ||
| export type DefaultGroupCapability = { | ||
| /** | ||
| * When the install scope selected is GroupChat, this field specifies the default capability | ||
| * available | ||
| */ | ||
| groupchat?: Groupchat; | ||
| /** | ||
| * When the install scope selected is Meetings, this field specifies the default capability | ||
| * available | ||
| */ | ||
| meetings?: Groupchat; | ||
| /** | ||
| * When the install scope selected is Team, this field specifies the default capability | ||
| * available | ||
| */ | ||
| team?: Groupchat; | ||
| }; | ||
| /** | ||
| * When the install scope selected is GroupChat, this field specifies the default capability | ||
| * available | ||
| * | ||
| * When the install scope selected is Meetings, this field specifies the default capability | ||
| * available | ||
| * | ||
| * When the install scope selected is Team, this field specifies the default capability | ||
| * available | ||
| */ | ||
| export type Groupchat = 'tab' | 'bot' | 'connector'; | ||
| /** | ||
| * The install scope defined for this app by default. This will be the option displayed on | ||
| * the button when a user tries to add the app | ||
| */ | ||
| export type DefaultInstallScope = 'personal' | 'team' | 'groupChat' | 'meetings'; | ||
| export type Description = { | ||
| /** | ||
| * The full description of the app. Maximum length is 4000 characters. | ||
| */ | ||
| full: string; | ||
| /** | ||
| * A short description of the app used when space is limited. Maximum length is 80 | ||
| * characters. | ||
| */ | ||
| short: string; | ||
| }; | ||
| export type Developer = { | ||
| /** | ||
| * The Microsoft Partner Network ID that identifies the partner organization building the | ||
| * app. This field is not required, and should only be used if you are already part of the | ||
| * Microsoft Partner Network. More info at https://aka.ms/partner | ||
| */ | ||
| mpnId?: string; | ||
| /** | ||
| * The display name for the developer. | ||
| */ | ||
| name: string; | ||
| /** | ||
| * The url to the page that provides privacy information for the app. | ||
| */ | ||
| privacyUrl: string; | ||
| /** | ||
| * The url to the page that provides the terms of use for the app. | ||
| */ | ||
| termsOfUseUrl: string; | ||
| /** | ||
| * The url to the page that provides support information for the app. | ||
| */ | ||
| websiteUrl: string; | ||
| }; | ||
| export type DevicePermission = 'geolocation' | 'media' | 'notifications' | 'midi' | 'openExternal'; | ||
| /** | ||
| * The set of extensions for this app. Currently only one extensions per app is supported. | ||
| */ | ||
| export type ElementExtension = { | ||
| alternates?: ExtensionAlternateVersionsArray[]; | ||
| /** | ||
| * The url for your extension, used to validate Exchange user identity tokens. | ||
| */ | ||
| audienceClaimUrl?: string; | ||
| autoRunEvents?: ExtensionAutoRunEventsArray[]; | ||
| requirements?: RequirementsExtensionElement; | ||
| ribbons?: ExtensionRibbonsArray[]; | ||
| runtimes?: ExtensionRuntimesArray[]; | ||
| }; | ||
| export type ExtensionAlternateVersionsArray = { | ||
| alternateIcons?: AlternateIcons; | ||
| hide?: Hide; | ||
| prefer?: Prefer; | ||
| requirements?: RequirementsExtensionElement; | ||
| }; | ||
| export type AlternateIcons = { | ||
| highResolutionIcon: ExtensionCommonIcon; | ||
| icon: ExtensionCommonIcon; | ||
| }; | ||
| export type ExtensionCommonIcon = { | ||
| /** | ||
| * Size in pixels of the icon. Three image sizes are required (16, 32, and 80 pixels) | ||
| */ | ||
| size: number; | ||
| /** | ||
| * Absolute Url to the icon. | ||
| */ | ||
| url: string; | ||
| }; | ||
| export type Hide = { | ||
| customOfficeAddin?: CustomOfficeAddin; | ||
| storeOfficeAddin?: StoreOfficeAddin; | ||
| [property: string]: any; | ||
| }; | ||
| export type CustomOfficeAddin = { | ||
| /** | ||
| * Solution ID of the in-market add-in to hide. Maximum length is 64 characters. | ||
| */ | ||
| officeAddinId: string; | ||
| }; | ||
| export type StoreOfficeAddin = { | ||
| /** | ||
| * Asset ID of the in-market add-in to hide. Maximum length is 64 characters. | ||
| */ | ||
| assetId: string; | ||
| /** | ||
| * Solution ID of an in-market add-in to hide. Maximum length is 64 characters. | ||
| */ | ||
| officeAddinId: string; | ||
| }; | ||
| export type Prefer = { | ||
| comAddin?: COMAddin; | ||
| [property: string]: any; | ||
| }; | ||
| export type COMAddin = { | ||
| /** | ||
| * Program ID of the alternate com extension. Maximum length is 64 characters. | ||
| */ | ||
| progId: string; | ||
| }; | ||
| export type RequirementsExtensionElement = { | ||
| capabilities?: Capability[]; | ||
| /** | ||
| * Identifies the form factors that support the add-in. Supported values: mobile, desktop. | ||
| */ | ||
| formFactors?: FormFactor[]; | ||
| /** | ||
| * Identifies the scopes in which the add-in can run. | ||
| */ | ||
| scopes?: RequirementsScope[]; | ||
| }; | ||
| export type Capability = { | ||
| /** | ||
| * Identifies the maximum version for the requirement sets that the add-in needs to run. | ||
| */ | ||
| maxVersion?: string; | ||
| /** | ||
| * Identifies the minimum version for the requirement sets that the add-in needs to run. | ||
| */ | ||
| minVersion?: string; | ||
| /** | ||
| * Identifies the name of the requirement sets that the add-in needs to run. | ||
| */ | ||
| name: string; | ||
| }; | ||
| export type FormFactor = 'desktop' | 'mobile'; | ||
| export type RequirementsScope = 'mail' | 'workbook' | 'document' | 'presentation'; | ||
| export type ExtensionAutoRunEventsArray = { | ||
| /** | ||
| * Specifies the type of event. For supported types, please see: | ||
| * https://review.learn.microsoft.com/en-us/office/dev/add-ins/outlook/autolaunch?tabs=xmlmanifest#supported-events. | ||
| */ | ||
| events: Event[]; | ||
| requirements?: RequirementsExtensionElement; | ||
| }; | ||
| export type Event = { | ||
| /** | ||
| * The ID of an action defined in runtimes. Maximum length is 64 characters. | ||
| */ | ||
| actionId: string; | ||
| /** | ||
| * Configures how Outlook responds to the event. | ||
| */ | ||
| options?: Options; | ||
| type: string; | ||
| }; | ||
| /** | ||
| * Configures how Outlook responds to the event. | ||
| */ | ||
| export type Options = { | ||
| sendMode: SendMode; | ||
| }; | ||
| export type SendMode = 'promptUser' | 'softBlock' | 'block'; | ||
| export type ExtensionRibbonsArray = { | ||
| contexts?: ExtensionContext[]; | ||
| requirements?: RequirementsExtensionElement; | ||
| tabs: ExtensionRibbonsArrayTabsItem[]; | ||
| }; | ||
| /** | ||
| * Specifies the Office application windows in which the ribbon customization is available | ||
| * to the user. Each item in the array is a member of a string array. Possible values are: | ||
| * mailRead, mailCompose, meetingDetailsOrganizer, meetingDetailsAttendee. | ||
| */ | ||
| export type ExtensionContext = 'mailRead' | 'mailCompose' | 'meetingDetailsOrganizer' | 'meetingDetailsAttendee' | 'onlineMeetingDetailsOrganizer' | 'logEventMeetingDetailsAttendee' | 'default'; | ||
| export type ExtensionRibbonsArrayTabsItem = { | ||
| /** | ||
| * Id of the existing office Tab. Maximum length is 64 characters. | ||
| */ | ||
| builtInTabId?: string; | ||
| /** | ||
| * Defines mobile group item. | ||
| */ | ||
| customMobileRibbonGroups?: ExtensionRibbonsCustomMobileGroupItem[]; | ||
| /** | ||
| * Defines tab groups. | ||
| */ | ||
| groups?: ExtensionRibbonsCustomTabGroupsItem[]; | ||
| /** | ||
| * A unique identifier for this tab within the app. Maximum length is 64 characters. | ||
| */ | ||
| id?: string; | ||
| /** | ||
| * Displayed text for the tab. Maximum length is 64 characters. | ||
| */ | ||
| label?: string; | ||
| position?: Position; | ||
| }; | ||
| export type ExtensionRibbonsCustomMobileGroupItem = { | ||
| controls: ExtensionRibbonsCustomMobileControlButtonItem[]; | ||
| /** | ||
| * Specify the Id of the group. Used for mobileMessageRead ext point. | ||
| */ | ||
| id: string; | ||
| /** | ||
| * Short label of the control. Maximum length is 32 characters. | ||
| */ | ||
| label: string; | ||
| [property: string]: any; | ||
| }; | ||
| export type ExtensionRibbonsCustomMobileControlButtonItem = { | ||
| /** | ||
| * The ID of an action defined in runtimes. Maximum length is 64 characters. | ||
| */ | ||
| actionId: string; | ||
| icons: ExtensionCustomMobileIcon[]; | ||
| /** | ||
| * Specify the Id of the button like msgReadFunctionButton. | ||
| */ | ||
| id: string; | ||
| /** | ||
| * Short label of the control. Maximum length is 32 characters. | ||
| */ | ||
| label: string; | ||
| type: PurpleType; | ||
| [property: string]: any; | ||
| }; | ||
| export type ExtensionCustomMobileIcon = { | ||
| /** | ||
| * How to scale - 1,2,3 for each image. This attribute specifies the UIScreen.scale property | ||
| * for iOS devices. | ||
| */ | ||
| scale: number; | ||
| /** | ||
| * Size in pixels of the icon. Three image sizes are required (25, 32, and 48 pixels). | ||
| */ | ||
| size: number; | ||
| /** | ||
| * Url to the icon. | ||
| */ | ||
| url: string; | ||
| }; | ||
| export type PurpleType = 'mobileButton'; | ||
| export type ExtensionRibbonsCustomTabGroupsItem = { | ||
| /** | ||
| * Id of a built-in Group. Maximum length is 64 characters. | ||
| */ | ||
| builtInGroupId?: string; | ||
| controls?: ExtensionCommonCustomGroupControlsItem[]; | ||
| icons?: ExtensionCommonIcon[]; | ||
| /** | ||
| * A unique identifier for this group within the app. Maximum length is 64 characters. | ||
| */ | ||
| id?: string; | ||
| /** | ||
| * Displayed text for the group. Maximum length is 64 characters. | ||
| */ | ||
| label?: string; | ||
| }; | ||
| export type ExtensionCommonCustomGroupControlsItem = { | ||
| /** | ||
| * The ID of an execution-type action that handles this key combination. Maximum length is | ||
| * 64 characters. | ||
| */ | ||
| actionId: string; | ||
| /** | ||
| * Id of the existing office control. Maximum length is 64 characters. | ||
| */ | ||
| builtInControlId?: string; | ||
| /** | ||
| * Whether the control is initially enabled. | ||
| */ | ||
| enabled?: boolean; | ||
| icons: ExtensionCommonIcon[]; | ||
| /** | ||
| * A unique identifier for this control within the app. Maximum length is 64 characters. | ||
| */ | ||
| id: string; | ||
| /** | ||
| * Configures the items for a menu control. | ||
| */ | ||
| items?: ExtensionCommonCustomControlMenuItem[]; | ||
| /** | ||
| * Displayed text for the control. Maximum length is 64 characters. | ||
| */ | ||
| label: string; | ||
| /** | ||
| * Specifies whether a group, button, menu, or menu item will be hidden on application and | ||
| * platform combinations that support the API (Office.ribbon.requestCreateControls) that | ||
| * installs custom contextual tabs on the ribbon. Default is false. | ||
| */ | ||
| overriddenByRibbonApi?: boolean; | ||
| supertip: ExtensionCommonSuperToolTip; | ||
| /** | ||
| * Defines the type of control whether button or menu. | ||
| */ | ||
| type: FluffyType; | ||
| }; | ||
| export type ExtensionCommonCustomControlMenuItem = { | ||
| /** | ||
| * The ID of an action defined in runtimes. Maximum length is 64 characters. | ||
| */ | ||
| actionId: string; | ||
| /** | ||
| * Whether the control is initially enabled. | ||
| */ | ||
| enabled?: boolean; | ||
| icons?: ExtensionCommonIcon[]; | ||
| /** | ||
| * A unique identifier for this control within the app. Maximum length is 64 characters. | ||
| */ | ||
| id: string; | ||
| /** | ||
| * Displayed text for the control. Maximum length is 64 characters. | ||
| */ | ||
| label: string; | ||
| overriddenByRibbonApi?: boolean; | ||
| supertip: ExtensionCommonSuperToolTip; | ||
| /** | ||
| * Supported values: menuItem. | ||
| */ | ||
| type: ItemType; | ||
| }; | ||
| export type ExtensionCommonSuperToolTip = { | ||
| /** | ||
| * Description of the super tip. Maximum length is 250 characters. | ||
| */ | ||
| description: string; | ||
| /** | ||
| * Title text of the super tip. Maximum length is 64 characters. | ||
| */ | ||
| title: string; | ||
| }; | ||
| /** | ||
| * Supported values: menuItem. | ||
| */ | ||
| export type ItemType = 'menuItem'; | ||
| /** | ||
| * Defines the type of control whether button or menu. | ||
| */ | ||
| export type FluffyType = 'button' | 'menu'; | ||
| export type Position = { | ||
| /** | ||
| * Define alignment of this custom tab relative to the specified built-in tab. | ||
| */ | ||
| align: Align; | ||
| /** | ||
| * The id of the built-in tab. Maximum length is 64 characters. | ||
| */ | ||
| builtInTabId: string; | ||
| }; | ||
| /** | ||
| * Define alignment of this custom tab relative to the specified built-in tab. | ||
| */ | ||
| export type Align = 'after' | 'before'; | ||
| /** | ||
| * A runtime environment for a page or script | ||
| */ | ||
| export type ExtensionRuntimesArray = { | ||
| actions?: ExtensionRuntimesActionsItem[]; | ||
| code: ExtensionRuntimeCode; | ||
| /** | ||
| * A unique identifier for this runtime within the app. Maximum length is 64 characters. | ||
| */ | ||
| id: string; | ||
| /** | ||
| * Runtimes with a short lifetime do not preserve state across executions. Runtimes with a | ||
| * long lifetime do. | ||
| */ | ||
| lifetime?: Lifetime; | ||
| requirements?: RequirementsExtensionElement; | ||
| /** | ||
| * Supports running functions and launching pages. | ||
| */ | ||
| type?: RuntimeType; | ||
| }; | ||
| /** | ||
| * Specifies the set of actions supported by this runtime. An action is either running a | ||
| * JavaScript function or opening a view such as a task pane. | ||
| */ | ||
| export type ExtensionRuntimesActionsItem = { | ||
| /** | ||
| * Display name of the action. Maximum length is 64 characters. | ||
| */ | ||
| displayName?: string; | ||
| /** | ||
| * Identifier for this action. Maximum length is 64 characters. This value is passed to the | ||
| * code file. | ||
| */ | ||
| id: string; | ||
| /** | ||
| * Whether allows the action to have multiple selection. | ||
| */ | ||
| multiselect?: boolean; | ||
| /** | ||
| * Specifies that a task pane supports pinning, which keeps the task pane open when the user | ||
| * changes the selection. | ||
| */ | ||
| pinnable?: boolean; | ||
| /** | ||
| * Whether allows task pane add-ins to activate without the Reading Pane enabled or a | ||
| * message selected. | ||
| */ | ||
| supportsNoItemContext?: boolean; | ||
| /** | ||
| * executeFunction: Run a script function without waiting for it to finish. openPate: Open a | ||
| * page in a view. | ||
| */ | ||
| type: ActionType; | ||
| /** | ||
| * View where the page should be opened. Maximum length is 64 characters. | ||
| */ | ||
| view?: string; | ||
| }; | ||
| /** | ||
| * executeFunction: Run a script function without waiting for it to finish. openPate: Open a | ||
| * page in a view. | ||
| */ | ||
| export type ActionType = 'executeFunction' | 'openPage'; | ||
| export type ExtensionRuntimeCode = { | ||
| /** | ||
| * URL of the .html page to be loaded in browser-based runtimes. | ||
| */ | ||
| page: string; | ||
| /** | ||
| * URL of the .js script file to be loaded in UI-less runtimes. | ||
| */ | ||
| script?: string; | ||
| }; | ||
| /** | ||
| * Runtimes with a short lifetime do not preserve state across executions. Runtimes with a | ||
| * long lifetime do. | ||
| */ | ||
| export type Lifetime = 'short' | 'long'; | ||
| /** | ||
| * Supports running functions and launching pages. | ||
| */ | ||
| export type RuntimeType = 'general'; | ||
| /** | ||
| * Specify the app's Graph connector configuration. If this is present then | ||
| * webApplicationInfo.id must also be specified. | ||
| */ | ||
| export type GraphConnector = { | ||
| /** | ||
| * The url where Graph-connector notifications for the application should be sent. | ||
| */ | ||
| notificationUrl: string; | ||
| }; | ||
| export type Icons = { | ||
| /** | ||
| * A relative file path to a full color PNG icon. Size 192x192. | ||
| */ | ||
| color: string; | ||
| /** | ||
| * A relative file path to a transparent PNG outline icon. The border color needs to be | ||
| * white. Size 32x32. | ||
| */ | ||
| outline: string; | ||
| }; | ||
| export type LocalizationInfo = { | ||
| additionalLanguages?: AdditionalLanguage[]; | ||
| /** | ||
| * A relative file path to a the .json file containing strings in the default language. | ||
| */ | ||
| defaultLanguageFile?: string; | ||
| /** | ||
| * The language tag of the strings in this top level manifest file. | ||
| */ | ||
| defaultLanguageTag: string; | ||
| }; | ||
| export type AdditionalLanguage = { | ||
| /** | ||
| * A relative file path to a the .json file containing the translated strings. | ||
| */ | ||
| file: string; | ||
| /** | ||
| * The language tag of the strings in the provided file. | ||
| */ | ||
| languageTag: string; | ||
| }; | ||
| export type ManifestVersion = '1.19'; | ||
| /** | ||
| * Specify meeting extension definition. | ||
| */ | ||
| export type MeetingExtensionDefinition = { | ||
| /** | ||
| * Meeting supported scenes. | ||
| */ | ||
| scenes?: Scene[]; | ||
| /** | ||
| * A boolean value indicating whether this app allows management by anonymous users. | ||
| */ | ||
| supportsAnonymousGuestUsers?: boolean; | ||
| /** | ||
| * A boolean value indicating whether this app can stream the meeting's audio video content | ||
| * to an RTMP endpoint. | ||
| */ | ||
| supportsStreaming?: boolean; | ||
| }; | ||
| export type Scene = { | ||
| /** | ||
| * A relative file path to a scene metadata json file. | ||
| */ | ||
| file: string; | ||
| /** | ||
| * A unique identifier for this scene. This id must be a GUID. | ||
| */ | ||
| id: string; | ||
| /** | ||
| * Maximum audiences supported in scene. | ||
| */ | ||
| maxAudience: number; | ||
| /** | ||
| * Scene name. | ||
| */ | ||
| name: string; | ||
| /** | ||
| * A relative file path to a scene PNG preview icon. | ||
| */ | ||
| preview: string; | ||
| /** | ||
| * Number of seats reserved for organizers or presenters. | ||
| */ | ||
| seatsReservedForOrganizersOrPresenters: number; | ||
| }; | ||
| export type Name = { | ||
| /** | ||
| * The full name of the app, used if the full app name exceeds 30 characters. | ||
| */ | ||
| full: string; | ||
| /** | ||
| * A short display name for the app. | ||
| */ | ||
| short: string; | ||
| }; | ||
| export type Permission = 'identity' | 'messageTeamMembers'; | ||
| export type StaticTab = { | ||
| /** | ||
| * The Microsoft App ID specified for the bot in the Bot Framework portal | ||
| * (https://dev.botframework.com/bots) | ||
| */ | ||
| contentBotId?: string; | ||
| /** | ||
| * The url which points to the entity UI to be displayed in the canvas. | ||
| */ | ||
| contentUrl?: string; | ||
| /** | ||
| * The set of contextItem scopes that a tab belong to | ||
| */ | ||
| context?: StaticTabContext[]; | ||
| /** | ||
| * A unique identifier for the entity which the tab displays. | ||
| */ | ||
| entityId: string; | ||
| /** | ||
| * The display name of the tab. | ||
| */ | ||
| name?: string; | ||
| /** | ||
| * Specifies whether the tab offers an experience in the context of a channel in a team, or | ||
| * an experience scoped to an individual user alone or group chat. These options are | ||
| * non-exclusive. Currently static tabs are only supported in the 'personal' scope. | ||
| */ | ||
| scopes: CommandListScope[]; | ||
| /** | ||
| * The url to direct a user's search queries. | ||
| */ | ||
| searchUrl?: string; | ||
| /** | ||
| * The url to point at if a user opts to view in a browser. | ||
| */ | ||
| websiteUrl?: string; | ||
| }; | ||
| export type StaticTabContext = 'personalTab' | 'channelTab' | 'privateChatTab' | 'meetingChatTab' | 'meetingDetailsTab' | 'meetingSidePanel' | 'meetingStage' | 'teamLevelApp'; | ||
| /** | ||
| * Subscription offer associated with this app. | ||
| */ | ||
| export type SubscriptionOffer = { | ||
| /** | ||
| * A unique identifier for the Commercial Marketplace Software as a Service Offer. | ||
| */ | ||
| offerId: string; | ||
| }; | ||
| export type SupportedChannelType = 'sharedChannels' | 'privateChannels'; | ||
| /** | ||
| * Specify your AAD App ID and Graph information to help users seamlessly sign into your AAD | ||
| * app. | ||
| */ | ||
| export type WebApplicationInfo = { | ||
| /** | ||
| * AAD application id of the app. This id must be a GUID. | ||
| */ | ||
| id: string; | ||
| /** | ||
| * Resource url of app for acquiring auth token for SSO. | ||
| */ | ||
| resource?: string; | ||
| }; |
| "use strict"; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuaWZlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvbWFuaWZlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9 |
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
Found 1 instance in 1 package
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
Found 1 instance in 1 package
86
138.89%469292
-8.52%178
-1.11%7195
-16.48%+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
Updated
Updated