@microsoft/teams.api
Version:
<p> <a href="https://www.npmjs.com/package/@microsoft/teams.api" target="_blank"> <img src="https://img.shields.io/npm/v/@microsoft/teams.api/latest" /> </a> <a href="https://www.npmjs.com/package/@microsoft/teams.api?activeTab=code" t
1 lines • 10.2 kB
Source Map (JSON)
{"version":3,"sources":["../../src/activities/typing.ts"],"names":[],"mappings":";;AAoDO,MAAM,4BAA4B,aAAA,CAAwD;AAAA;AAAA;AAAA;AAAA,EAI/F,IAAA;AAAA;AAAA;AAAA;AAAA,EAKA,UAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,WAAA,CAAY,KAAA,GAAoC,EAAC,EAAG;AAClD,IAAA,KAAA,CAAM,QAAQ,CAAA;AAEd,IAAA,MAAM,EAAE,IAAA,EAAM,KAAA,EAAO,GAAG,QAAO,GAAI,KAAA;AAEnC,IAAA,MAAA,CAAO,MAAA,CAAO,MAAM,MAAM,CAAA;AAAA,EAC5B;AAAA,EASA,OAAO,KAAK,QAAA,EAAkD;AAC5D,IAAA,MAAM;AAAA,MACJ,IAAA,EAAM,KAAA;AAAA,MACN,IAAA,EAAM,KAAA;AAAA,MACN,YAAA,EAAc,aAAA;AAAA,MACd,SAAA,EAAW,UAAA;AAAA,MACX,UAAA,EAAY,WAAA;AAAA,MACZ,SAAA,EAAW,UAAA;AAAA,MACX,cAAA,EAAgB,eAAA;AAAA,MAChB,SAAA,EAAW,UAAA;AAAA,MACX,GAAG;AAAA,KACL,GAAI,QAAA;AAEJ,IAAA,OAAO,IAAI,oBAAoB,KAAK,CAAA;AAAA,EACtC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,SAAS,KAAA,EAAe;AACtB,IAAA,IAAA,CAAK,IAAA,GAAO,KAAA;AACZ,IAAA,OAAO,IAAA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,QAAQ,IAAA,EAAc;AACpB,IAAA,IAAI,CAAC,KAAK,IAAA,EAAM;AACd,MAAA,IAAA,CAAK,IAAA,GAAO,EAAA;AAAA,IACd;AAEA,IAAA,IAAA,CAAK,IAAA,IAAQ,IAAA;AACb,IAAA,OAAO,IAAA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,eAAe,KAAA,EAAmB;AAChC,IAAA,IAAA,CAAK,UAAA,GAAa,KAAA;AAClB,IAAA,OAAO,IAAA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,eAAA,CAAgB,WAAmB,CAAA,EAAG;AACpC,IAAA,IAAI,CAAC,KAAK,WAAA,EAAa;AACrB,MAAA,IAAA,CAAK,cAAc,EAAC;AAAA,IACtB;AAEA,IAAA,IAAI,CAAC,IAAA,CAAK,WAAA,CAAY,QAAA,EAAU;AAC9B,MAAA,IAAA,CAAK,WAAA,CAAY,WAAW,IAAA,CAAK,EAAA;AAAA,IACnC;AAEA,IAAA,IAAI,CAAC,IAAA,CAAK,WAAA,CAAY,UAAA,EAAY;AAChC,MAAA,IAAA,CAAK,YAAY,UAAA,GAAa,WAAA;AAAA,IAChC;AACA,IAAA,IAAI,CAAC,IAAA,CAAK,WAAA,CAAY,cAAA,EAAgB;AACpC,MAAA,IAAA,CAAK,YAAY,cAAA,GAAiB,QAAA;AAAA,IACpC;AAEA,IAAA,OAAO,KAAK,SAAA,CAAU;AAAA,MACpB,IAAA,EAAM,YAAA;AAAA,MACN,UAAU,IAAA,CAAK,EAAA;AAAA,MACf,UAAA,EAAY,KAAK,WAAA,CAAY,UAAA;AAAA,MAC7B,cAAA,EAAgB,KAAK,WAAA,CAAY;AAAA,KAClC,CAAA;AAAA,EACH;AACF;AAEO,MAAM,uBAAuB,QAAA,CAA8C;AAAA;AAAA;AAAA;AAAA,EAIhF,IAAA;AAAA;AAAA;AAAA;AAAA,EAKA,UAAA;AAAA,EAEA,WAAA,CAAY,KAAA,GAAgD,EAAC,EAAG;AAC9D,IAAA,KAAA,CAAM;AAAA,MACJ,IAAA,EAAM,QAAA;AAAA,MACN,GAAG;AAAA,KACJ,CAAA;AAED,IAAA,MAAA,CAAO,MAAA,CAAO,MAAM,KAAK,CAAA;AAAA,EAC3B;AAAA;AAAA;AAAA;AAAA,EAKA,OAAO,KAAK,QAAA,EAA2B;AACrC,IAAA,OAAO,IAAI,eAAe,QAAQ,CAAA;AAAA,EACpC;AAAA;AAAA;AAAA;AAAA,EAKA,WAAA,GAA+B;AAC7B,IAAA,OAAO,MAAA,CAAO,MAAA,CAAO,EAAC,EAAG,IAAI,CAAA;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA,EAKA,KAAA,CAAM,OAAA,GAAkD,EAAC,EAAG;AAC1D,IAAA,OAAO,IAAI,cAAA,CAAe;AAAA,MACxB,GAAG,KAAK,WAAA,EAAY;AAAA,MACpB,GAAG;AAAA,KACJ,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,SAAS,KAAA,EAAe;AACtB,IAAA,IAAA,CAAK,IAAA,GAAO,KAAA;AACZ,IAAA,OAAO,IAAA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKA,QAAQ,IAAA,EAAc;AACpB,IAAA,IAAI,CAAC,KAAK,IAAA,EAAM;AACd,MAAA,IAAA,CAAK,IAAA,GAAO,EAAA;AAAA,IACd;AAEA,IAAA,IAAA,CAAK,IAAA,IAAQ,IAAA;AACb,IAAA,OAAO,IAAA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKA,eAAe,KAAA,EAAmB;AAChC,IAAA,IAAA,CAAK,UAAA,GAAa,KAAA;AAClB,IAAA,OAAO,IAAA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,eAAA,CAAgB,WAAmB,CAAA,EAAG;AACpC,IAAA,IAAI,CAAC,KAAK,WAAA,EAAa;AACrB,MAAA,IAAA,CAAK,cAAc,EAAC;AAAA,IACtB;AAEA,IAAA,IAAI,CAAC,IAAA,CAAK,WAAA,CAAY,QAAA,EAAU;AAC9B,MAAA,IAAA,CAAK,WAAA,CAAY,WAAW,IAAA,CAAK,EAAA;AAAA,IACnC;AAEA,IAAA,IAAI,CAAC,IAAA,CAAK,WAAA,CAAY,UAAA,EAAY;AAChC,MAAA,IAAA,CAAK,YAAY,UAAA,GAAa,WAAA;AAAA,IAChC;AACA,IAAA,IAAI,CAAC,IAAA,CAAK,WAAA,CAAY,cAAA,EAAgB;AACpC,MAAA,IAAA,CAAK,YAAY,cAAA,GAAiB,QAAA;AAAA,IACpC;AAEA,IAAA,OAAO,KAAK,SAAA,CAAU;AAAA,MACpB,IAAA,EAAM,YAAA;AAAA,MACN,UAAU,IAAA,CAAK,EAAA;AAAA,MACf,UAAA,EAAY,KAAK,WAAA,CAAY,UAAA;AAAA,MAC7B,cAAA,EAAgB,KAAK,WAAA,CAAY;AAAA,KAClC,CAAA;AAAA,EACH;AACF","file":"typing.mjs","sourcesContent":["import { TextFormat } from '../models';\n\nimport { IActivity, Activity, ActivityInput, IActivityInput } from './activity';\n\nexport interface ITypingActivity extends IActivity<'typing'> {\n /**\n * The text content of the message.\n */\n text?: string;\n\n /**\n * Format of the `text` field (ex. `'extendedmarkdown'`). Default: `'markdown'`.\n */\n textFormat?: TextFormat;\n}\n\n/**\n * OUTBOUND typing activity — the typing indicator the app SENDS.\n *\n * All server-populated base fields optional (via {@link IActivityInput}) and the\n * typing-specific fields optional too, so both a plain `{ type: 'typing' }` literal\n * and a {@link TypingActivityInput} builder instance are assignable. The typing fields are\n * copied here instead of derived from {@link ITypingActivity}, keeping the outbound input\n * shape independent from the inbound activity interface. Use {@link TypingActivityInputOptions}\n * to include unmodeled extension fields when constructing a {@link TypingActivityInput}.\n */\nexport interface ITypingActivityInput extends IActivityInput<'typing'> {\n /**\n * Text used by streaming updates. Ordinary typing indicators can omit this.\n */\n text?: string;\n\n /**\n * Format of the `text` field (ex. `'extendedmarkdown'`). Default: `'markdown'`.\n */\n textFormat?: TextFormat;\n}\n\n/**\n * Constructor fields for {@link TypingActivityInput}.\n *\n * This accepts modeled outbound typing fields plus channel/service extension fields that\n * should serialize at the top level of the outbound activity payload. The constructor owns\n * the `type` discriminator; set typing text with the `text` field or\n * {@link TypingActivityInput.withText}.\n */\nexport type TypingActivityInputOptions = Omit<Partial<ITypingActivityInput>, 'type'> &\n Record<string, unknown>;\n\n/**\n * Builder for outbound typing activities.\n */\nexport class TypingActivityInput extends ActivityInput<'typing'> implements ITypingActivityInput {\n /**\n * Text used by streaming updates. Ordinary typing indicators can omit this.\n */\n text?: string;\n\n /**\n * Format of the `text` field (ex. `'extendedmarkdown'`). Default: `'markdown'`.\n */\n textFormat?: TextFormat;\n\n /**\n * Create an outbound typing activity input.\n * @param value - Initial modeled input fields and unmodeled extension fields to serialize.\n */\n constructor(value: TypingActivityInputOptions = {}) {\n super('typing');\n\n const { type: _type, ...fields } = value;\n\n Object.assign(this, fields);\n }\n\n /**\n * Copy outbound-safe fields from a typing-like activity input.\n * @param activity - Typing input to copy.\n */\n static from(activity: ITypingActivity): TypingActivityInput;\n static from(activity: ITypingActivityInput): TypingActivityInput;\n static from(activity: ITypingActivity | ITypingActivityInput): TypingActivityInput;\n static from(activity: ITypingActivity | ITypingActivityInput) {\n const {\n type: _type,\n from: _from,\n conversation: _conversation,\n channelId: _channelId,\n serviceUrl: _serviceUrl,\n timestamp: _timestamp,\n localTimestamp: _localTimestamp,\n relatesTo: _relatesTo,\n ...value\n } = activity as Partial<ITypingActivity> & Record<string, unknown>;\n\n return new TypingActivityInput(value);\n }\n\n /**\n * Set the streaming update text.\n * @param value - Streaming update text.\n */\n withText(value: string) {\n this.text = value;\n return this;\n }\n\n /**\n * Append streaming update text.\n * @param text - Streaming update text to append.\n */\n addText(text: string) {\n if (!this.text) {\n this.text = '';\n }\n\n this.text += text;\n return this;\n }\n\n /**\n * Set the format of the `text` field.\n * @param value - Text format.\n */\n withTextFormat(value: TextFormat) {\n this.textFormat = value;\n return this;\n }\n\n /**\n * Add stream metadata to this typing update.\n * @param sequence - Sequence number of the stream chunk.\n */\n addStreamUpdate(sequence: number = 0) {\n if (!this.channelData) {\n this.channelData = {};\n }\n\n if (!this.channelData.streamId) {\n this.channelData.streamId = this.id;\n }\n\n if (!this.channelData.streamType) {\n this.channelData.streamType = 'streaming';\n }\n if (!this.channelData.streamSequence) {\n this.channelData.streamSequence = sequence;\n }\n\n return this.addEntity({\n type: 'streaminfo',\n streamId: this.id,\n streamType: this.channelData.streamType,\n streamSequence: this.channelData.streamSequence,\n });\n }\n}\n\nexport class TypingActivity extends Activity<'typing'> implements ITypingActivity {\n /**\n * The text content of the message.\n */\n text?: string;\n\n /**\n * Format of the `text` field.\n */\n textFormat?: TextFormat;\n\n constructor(value: Omit<Partial<ITypingActivity>, 'type'> = {}) {\n super({\n type: 'typing',\n ...value,\n });\n\n Object.assign(this, value);\n }\n\n /**\n * initialize from interface\n */\n static from(activity: ITypingActivity) {\n return new TypingActivity(activity);\n }\n\n /**\n * convert to interface\n */\n toInterface(): ITypingActivity {\n return Object.assign({}, this);\n }\n\n /**\n * copy to a new instance\n */\n clone(options: Omit<Partial<ITypingActivity>, 'type'> = {}) {\n return new TypingActivity({\n ...this.toInterface(),\n ...options,\n });\n }\n\n /**\n * The text content of the message.\n */\n withText(value: string) {\n this.text = value;\n return this;\n }\n\n /**\n * Append text\n */\n addText(text: string) {\n if (!this.text) {\n this.text = '';\n }\n\n this.text += text;\n return this;\n }\n\n /**\n * Set the format of the `text` field.\n */\n withTextFormat(value: TextFormat) {\n this.textFormat = value;\n return this;\n }\n\n /**\n * Add stream informative update\n * @param id the stream id\n * @param sequence the sequence number (index) of the chunk\n */\n addStreamUpdate(sequence: number = 0) {\n if (!this.channelData) {\n this.channelData = {};\n }\n\n if (!this.channelData.streamId) {\n this.channelData.streamId = this.id;\n }\n\n if (!this.channelData.streamType) {\n this.channelData.streamType = 'streaming';\n }\n if (!this.channelData.streamSequence) {\n this.channelData.streamSequence = sequence;\n }\n\n return this.addEntity({\n type: 'streaminfo',\n streamId: this.id,\n streamType: this.channelData.streamType,\n streamSequence: this.channelData.streamSequence,\n });\n }\n}\n"]}