mirror of
https://github.com/kristoferssolo/solorice.git
synced 2025-10-21 20:10:34 +00:00
280 lines
6.9 KiB
TypeScript
280 lines
6.9 KiB
TypeScript
//----------------------
|
|
// <auto-generated>
|
|
// Generated using the NSwag toolchain v9.10.19.0 (Newtonsoft.Json v9.0.0.0) (http://NJsonSchema.org)
|
|
// </auto-generated>
|
|
//----------------------
|
|
|
|
|
|
/* tslint:disable:member-access jsdoc-format */
|
|
|
|
/** Alias for when a string is actually a base64 representation of a byte array. */
|
|
type stringBase64 = string;
|
|
|
|
/** Describes the kind of data to be formatted. */
|
|
export enum DataFormat {
|
|
Default = <any>'default',
|
|
Email = <any>'email',
|
|
Token = <any>'token',
|
|
Path = <any>'path',
|
|
Text = <any>'text',
|
|
Uri = <any>'uri',
|
|
Omit = <any>'omit',
|
|
OmitDefault = <any>'omitDefault',
|
|
Hide = <any>'hide',
|
|
SingleMember = <any>'singleMember',
|
|
}
|
|
|
|
/** Creates a decorator that saves the property format in a map attached to the class constructor. */
|
|
export function dataFormat(...format: any[]) {
|
|
return function (target: any, propertyKey: string) {
|
|
if (!target.constructor.dataFormat) {
|
|
target.constructor.dataFormat = {};
|
|
}
|
|
target.constructor.dataFormat[propertyKey] = format;
|
|
};
|
|
}
|
|
|
|
|
|
export class EventArgs {
|
|
}
|
|
|
|
/** Notification class for contact service */
|
|
export class NotifyContactServiceEventArgs extends EventArgs {
|
|
type!: string;
|
|
body?: any;
|
|
}
|
|
|
|
/** The presence status default options */
|
|
export enum PresenceStatus {
|
|
Unknown = <any>'unknown',
|
|
Available = <any>'available',
|
|
Busy = <any>'busy',
|
|
DoNotDisturb = <any>'doNotDisturb',
|
|
Away = <any>'away',
|
|
Invisible = <any>'invisible',
|
|
Offline = <any>'offline',
|
|
}
|
|
|
|
/** Contact property types */
|
|
export enum ContactProperty {
|
|
DisplayName = <any>'displayName',
|
|
Email = <any>'email',
|
|
AvatarUri = <any>'avatarUri',
|
|
Status = <any>'status',
|
|
}
|
|
|
|
/** Contact entity */
|
|
export class Contact {
|
|
id!: string;
|
|
displayName?: string;
|
|
email?: string;
|
|
status?: PresenceStatus;
|
|
avatarUri?: string;
|
|
}
|
|
|
|
/** Empty parameters */
|
|
export class EmptyRequest {
|
|
}
|
|
|
|
/** Empty result */
|
|
export class EmptyResponse {
|
|
}
|
|
|
|
/** Parameters passed during Initialize method */
|
|
export class InitializeRequest {
|
|
clientID!: string;
|
|
workspaceFolders?: WorkspaceFolder[];
|
|
enablePublish?: boolean;
|
|
}
|
|
|
|
/** Definition of a workspace folder */
|
|
export class WorkspaceFolder {
|
|
uri?: WorkspaceUri;
|
|
name?: string;
|
|
index?: number;
|
|
}
|
|
|
|
/** A workspace Uri from vscode */
|
|
export class WorkspaceUri {
|
|
scheme?: string;
|
|
path?: string;
|
|
query?: string;
|
|
}
|
|
|
|
/** Capabilities that a service would offer */
|
|
export class Capabilities {
|
|
supportsDispose?: boolean;
|
|
supportsPresence?: boolean;
|
|
supportsPublishPresence?: boolean;
|
|
supportsInviteLink?: boolean;
|
|
supportsContactPresenceRequest?: boolean;
|
|
supportsAvailableContacts?: boolean;
|
|
supportsSelfContact?: boolean;
|
|
supportsSearchContacts?: boolean;
|
|
supportsMessageRequest?: boolean;
|
|
}
|
|
|
|
/** Returned on the Initialized method */
|
|
export class InitializeResponse {
|
|
/** Description name to display when refering to this provider */
|
|
description!: string;
|
|
/** Supported capabilities */
|
|
@dataFormat(Capabilities)
|
|
capabilities!: Capabilities;
|
|
/** Priority of this provider */
|
|
providerPriority?: number;
|
|
}
|
|
|
|
/** A presence status changed for a contact entity */
|
|
export class ContactPresenceUpdate {
|
|
contactId!: string;
|
|
status!: PresenceStatus;
|
|
}
|
|
|
|
/** Batch of presence changed for multiple contacts */
|
|
export class PresenceChangedNotification {
|
|
@dataFormat(ContactPresenceUpdate)
|
|
changes!: ContactPresenceUpdate[];
|
|
}
|
|
|
|
export class ContactPropertyValueChanged {
|
|
property!: ContactProperty;
|
|
value?: any;
|
|
}
|
|
|
|
export class ContactChangedNotification {
|
|
changes!: { [key: string]: ContactPropertyValueChanged[]; };
|
|
}
|
|
|
|
export class InviteRequest {
|
|
targetContactId!: string;
|
|
link!: string;
|
|
}
|
|
|
|
export class InviteReceivedNotification {
|
|
fromContactId!: string;
|
|
link!: string;
|
|
@dataFormat(Contact)
|
|
fromContact?: Contact;
|
|
}
|
|
|
|
export class PublishPresenceRequest {
|
|
status!: PresenceStatus;
|
|
}
|
|
|
|
export class SelfContactNotification {
|
|
@dataFormat(Contact)
|
|
contact!: Contact;
|
|
}
|
|
|
|
export class ContactsNotification {
|
|
@dataFormat(Contact)
|
|
contacts!: Contact[];
|
|
}
|
|
|
|
export class ContactPresenceRequest {
|
|
@dataFormat(Contact)
|
|
contacts!: Contact[];
|
|
}
|
|
|
|
export class ContactResponse {
|
|
contactId!: string;
|
|
@dataFormat(Contact)
|
|
contact!: Contact;
|
|
}
|
|
|
|
export class ContactPresenceResponse {
|
|
@dataFormat(ContactResponse)
|
|
contacts!: ContactResponse[];
|
|
}
|
|
|
|
export class ContactPresenceDisposeRequest {
|
|
contactIds!: string[];
|
|
}
|
|
|
|
export class SearchContactProperty {
|
|
property!: ContactProperty;
|
|
expression!: string;
|
|
options?: number;
|
|
}
|
|
|
|
export class SearchContactsRequest {
|
|
@dataFormat(SearchContactProperty)
|
|
queryOptions!: SearchContactProperty[];
|
|
maxCount?: number;
|
|
}
|
|
|
|
export class SearchContactsResponse {
|
|
@dataFormat(Contact)
|
|
results!: Contact[];
|
|
}
|
|
|
|
export class MessagePayload {
|
|
type!: string;
|
|
body?: any;
|
|
}
|
|
|
|
export class SendMessageRequest extends MessagePayload {
|
|
targetContactId!: string;
|
|
}
|
|
|
|
export class MessageReceivedNotification extends MessagePayload {
|
|
fromContactId!: string;
|
|
}
|
|
|
|
export enum Methods {
|
|
RequestInitializeName = 'initialize',
|
|
RequestDisposeName = 'dispose',
|
|
RequestInviteName = 'inviteLink',
|
|
RequestPublishPresenceName = 'publishPresence',
|
|
RequestContactPresenceName = 'contactPresenceRequest',
|
|
RequestContactPresenceDisposeName = 'contactPresenceDispose',
|
|
RequestSearchContactsName = 'searchContacts',
|
|
RequestSendMessageName = 'sendMessageRequest',
|
|
NotifyPresenceChangedName = 'presenceChanged',
|
|
NotifySelfContactName = 'selfContact',
|
|
NotifyAvailableUsersName = 'availableUsers',
|
|
NotifyAvailableUsersAddedName = 'availableUsersAdded',
|
|
NotifyAvailableUsersRemovedName = 'availableUsersRemoved',
|
|
NotifyInviteReceivedName = 'inviteLinkReceived',
|
|
NotifyContactChangedName = 'contactChanged',
|
|
NotifySuggestedUsersName = 'suggestedUsers',
|
|
NotifyCapabilitiesUpdateName = 'capabilitiesUpdate',
|
|
NotifyMessageReceivedName = 'messageReceived',
|
|
}
|
|
|
|
|
|
import { CancellationToken, Event, Progress } from 'vscode';
|
|
|
|
/**
|
|
* Interface to implement a contact service provider
|
|
*/
|
|
export interface ContactServiceProvider {
|
|
requestAsync(
|
|
type: string,
|
|
parameters: Object,
|
|
cancellationToken?: CancellationToken)
|
|
: Promise<Object>;
|
|
|
|
readonly onNotified: Event<NotifyContactServiceEventArgs>;
|
|
}
|
|
|
|
|
|
/**
|
|
* Metadata required to generate proxies for the service interfaces
|
|
* (because TypeScript interfaces cannot be reflected at runtime).
|
|
*/
|
|
export interface ServiceInfo<T> {
|
|
readonly name?: string;
|
|
readonly methods: string[];
|
|
readonly voidMethods?: string[];
|
|
readonly events: string[];
|
|
}
|
|
|
|
/* tslint:disable:variable-name */
|
|
|
|
export const ContactServiceProvider: ServiceInfo<ContactServiceProvider> = {
|
|
methods: [ 'request' ],
|
|
events: [ 'notified' ],
|
|
};
|