{"version":3,"sources":["../../src/activities/typing.ts"],"names":[],"mappings":"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","file":"typing.mjs","sourcesContent":["import { 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/**\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/**\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   * 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   * 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  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   * 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"]}