# Externals

##

### Classes

AddOnBase
AddOnUpdateResult
Artifact
BlobClient
BlobMetadata
BlobRunPluginClient
Client
Core
ExecutorClient
GmeLogger
GMENode
InterPluginResult
JobInfo
OutputInfo
PluginBase
PluginConfig
PluginMessage
PluginNodeDescription
PluginResult
Project
ProjectInterface
GMEAuth
SafeStorage
UserProject

### Events

#### BRANCH_CHANGED

  Fired when the open branch changed. The event could either return the name of the newly opened branch or null if there no longer is a branch opened.

  ##### Type: string | null

#### BRANCH_CLOSED

  Fired when the currently opened branch is closed.

  ##### Type: string

#### BRANCH_OPENED

  Fired when a branch is opened.

  ##### Type: string

#### BRANCH_STATUS_CHANGED

  Fired when the branch status changes. The returned value is one of:

  - `'SYNC'` - The local branch is in sync with the server.
  - `'AHEAD_SYNC'` - There are changes in the local branch that has not been sent to the server. The latest commit was synchronized.
  - `'AHEAD_NOT_SYNC'` - There are changes in the local branch that has not been sent to the server. The latest commit did not update the branch head. An action is required.
  - `'PULLING'` - External changes to the branch are being pulled into the branch.
  - `'ERROR'` - Some unexpected error happened.
  - (`'MERGING'` - a forked commit is attempted to be merged by the server (this is disabled by default))

  ##### Type: object

#### CONNECTED_USERS_CHANGED

  Fired when there are changes among the users connected to the same branch-room (have the same project and branch opened).

  ##### Type: object

  ##### Properties:

  Name | Type | Argument | Description
  --- | --- | --- | ---
  `type` | string |  | 'BRANCH_ROOM_SOCKETS', 'CLIENT_STATE_NOTIFICATION'
  `projectId` | string |  | The id of the project
  `branchName` | string |  | The name of the branch
  `userId` | string |  | The user-id of the user who joined or left
  `socketId` | string |  | The unique socket-id of the user who joined or left (this can become hashed)
  `join` | boolean | undefined | <optional> | Whether or not the user joined or left the room (undefined -> false) this only applies to the 'BRANCH_ROOM_SOCKETS' event.

  `state`

  object | null

  <optional>

  This only applies to the 'CLIENT_STATE_NOTIFICATION' event and is defined by the return value of the function passed in at client.registerUIStateGetter. Behind the scenes this emitted by the client when it receives a 'BRANCH_ROOM_SOCKETS' event in order to notify that new client that it has a user in the same room. But can also be emitted from the GUI by invoking client.emitStateNotification() (which is invoked by the generic webgme UI whenever its state changes). The state in the example below is specific for the generic webgme UI.

  ##### Examples

      {
        "type": "CLIENT_STATE_NOTIFICATION",
        "state": {
          "activeAspect": "All",
          "activeTab": 0,
          "layout": "DefaultLayout",
          "activeVisualizer": "ModelEditor",
          "activeProjectName": "demo+SignalFlowSystem",
          "activeBranchName": "master",
          "activeCommit": null,
          "_toBeActiveObject": "/682825457/607500954",
          "activeObject": "/682825457/607500954",
          "activeSelection": [
            "/682825457/607500954"
          ]
        },
        "projectId": "demo+SignalFlowSystem",
        "branchName": "master",
        "userId": "demo",
        "socketId": "nczll3cDYPfoK7IeAAAT"
      }

      {
        "projectId": "demo+SignalFlowSystem",
        "branchName": "master",
        "userId": "demo",
        "socketId": "nczll3cDYPfoK7IeAAAT",
        "type": "BRANCH_ROOM_SOCKETS",
        "join": true
      }

#### NETWORK_STATUS_CHANGED

  Fired when the network status changes. The returned value is one of:

  - `'CONNECTED'` - The websocket connection has been established (a project can be selected)
  - `'DISCONNECTED'` - The websocket connection is broken, the user can continue offline and any commits will be pushed automatically by the client when reconnected.
  - `'RECONNECTED'` - After a disconnect, the connection has been established again.
  - `'INCOMPATIBLE_CONNECTION'` - If the version of webgme-engine the server is different from the one loaded in the client at this point the browser must be refreshed.
  - `'CONNECTION_ERROR'` - Some unexpected error happened and the browser needs to be refreshed.

  ##### Type: string

#### NOTIFICATION

  A notification with a message to the end-user. Could be generated by plugins or add-ons, but also by GUI widgets.

  ##### Type: object

  ##### Properties:

  Name | Type | Description
  --- | --- | ---
  `message` | string | The content of the message.
  `severity` | string | One of 'success', 'info', 'warn', 'error'

#### PLUGIN_FINISHED

  Fired when the execution of a plugin - initiated by this given client - finished. The event data contains information about the executed plugin.

  ##### Type: object

  ##### Properties:

  Name | Type | Description
  --- | --- | ---
  `id` | string | the id of the plugin
  `name` | string | the name of the plugin
  `executionId` | string | unique identifier that can be used for managing the execution and communicating with the running plugin
  `metadata` | object | the original metadata of the plugin
  `context` | object | the context of the plugin that has information about the project, active object, and configuration settings for the run
  `canBeAborted` | boolean | flag that show if the plugin can be aborted
  `start` | string | the exact time of the initiation of the plugin
  `clientSide` | boolean | flag showing if the execution is done on the client or the server side
  `result` | object | the result of the plugin - once it became available

#### PLUGIN_INITIATED

  Fired when the client initiates a plugin execution. The event data contains information about the executed plugin.

  ##### Type: object

  ##### Properties:

  Name | Type | Description
  --- | --- | ---
  `id` | string | the id of the plugin
  `name` | string | the name of the plugin
  `executionId` | string | unique identifier that can be used for managing the execution and communicating with the running plugin
  `metadata` | object | the original metadata of the plugin
  `context` | object | the context of the plugin that has information about the project, active object, and configuration settings for the run
  `canBeAborted` | boolean | flag that show if the plugin can be aborted
  `start` | string | the exact time of the initiation of the plugin
  `clientSide` | boolean | flag showing if the execution is done on the client or the server side
  `result` | object | the result of the plugin - once it became available

#### PLUGIN_NOTIFICATION

  Fired when the plugin sends a notification to the initiating client. The event data contains information about the executed plugin.

  ##### Type: object

  ##### Properties:

  Name | Type | Argument | Description
  --- | --- | --- | ---
  `pluginId` | string |  | the id of the plugin
  `pluginName` | string |  | the name of the plugin
  `pluginVersion` | string |  | the version of the plugin normally in the form of x.y.z
  `executionId` | string |  | unique identifier that can be used for managing the execution and communicating with the running plugin
  `projectId` | string |  | the id of the project context the plugin uses
  `branchName` | string | <optional> | the name of the branch the plugin runs in.
  `commitHash` | string | <optional> | the hash of the commit that represent the version that the plugin runs at.

  `notification`

  object

  the content of the notification, as the plugin control the content there are no mandatory fields

  ###### Properties

  Name | Type | Argument | Description
  --- | --- | --- | ---
  `message` | string | <optional> | the text content of the notification
  `severity` | string | <optional> | the severity of the notification ('debug', 'info' (default), 'warning', 'error').

  `type` | string |  | the exact type of the notification which should always be 'PLUGIN_NOTIFICATION'.

#### PROJECT_CLOSED

  Fired when the currently opened project is closed.

  ##### Type: string

#### PROJECT_OPENED

  Fired when a project is opened.

  ##### Type: string

#### Search results