Optional
bridgeEncryption?: { homeserverUrl: string; store: ClientEncryptionStore }The controller logic for the bridge.
Optional
disableContext?: booleantrue
to disable BridgeContext
parameters in Bridge.onEvent. Disabling the context makes the
bridge do fewer database lookups, but prevents there from being a
context
parameter.
Default: false
.
Optional
disableStores?: booleanTrue to disable enabling of stores. This should be used by bridges that use their own database instances and do not need any of the included store objects. This implies setting disableContext to True. Default: false.
The domain part for user_ids and room aliases e.g. "bar" in "@foo:bar".
Optional
escapeUserIds?: booleanEscape userIds for non-bot intents with ~escapeUserId Default: true
Optional
eventStore?: string | EventBridgeStoreThe event store instance to use, or the path to the user .db file to load.
A database will NOT be created if this is not specified. If disableStores
is set,
no database will be created or used.
Optional
eventValidation?: { validateEditSender?: { allowEventOnLookupFail: boolean } }Optional
validateEditSender?: { allowEventOnLookupFail: boolean }Should we validate that the sender of an edit matches the parent event.
If the parent edit event could not be found, should the event be rejected.
The base HS url
Optional
intentOptions?: { bot?: IntentOpts; clients?: IntentOpts }Options to supply to created Intent instances.
Optional
bot?: IntentOptsOptions to supply to the bot intent.
Optional
clients?: IntentOptsOptions to supply to the client intents.
Optional
logRequestOutcome?: booleanTrue to enable SUCCESS/FAILED log lines to be sent to onLog. Default: true.
Optional
membershipCache?: MembershipCacheThe membership cache instance to use, which can be manually created by a bridge for greater control over caching. By default a membership cache will be created internally.
Optional
networkName?: stringA human readable string that will be used when the bridge signals errors to the client. Will not include in error events if ommited.
Optional
onIntentCreate?: (userId: string) => IntentThe factory function used to create intents.
Optional
queue?: { perRequest?: boolean; type?: "none" | "single" | "per_room" }Options for the onEvent
queue. When the bridge
receives an incoming transaction, it needs to asyncly query the data store for
contextual info before calling onEvent. A queue is used to keep the onEvent
calls consistent with the arrival order from the incoming transactions.
Optional
perRequest?: booleantrue
to only feed through the next event after the request object in the previous
call succeeds or fails. It is vital that you consistently resolve/reject the
request if this is 'true', else you will not get any further events from this queue.
To aid debugging this, consider setting a delayed listener on the request factory.
If false
, the mere invocation of onEvent is enough to trigger the next event in the queue.
You probably want to set this to true
if your ~onEvent is
performing async operations where ordering matters (e.g. messages).
Default: false.
Optional
type?: "none" | "single" | "per_room"The type of queue to use when feeding through to ~onEvent.
none
, events are fed through as soon as contextual info is obtained, which may result
in out of order events but stops HOL blocking.single
, onEvent calls will be in order but may be slower due to HOL blocking.per_room
, a queue per room ID is made which reduces the impact of HOL blocking to be scoped to a room.Default: single
.
Application service registration object or path to the registration file.
Optional
roomLinkValidation?: { rules: Rules }Optional
roomStore?: string | RoomBridgeStoreThe room store instance to use, or the path to the room .db file to load.
A database will be created if this is not specified. If disableStores
is set,
no database will be created or used.
Optional
roomUpgradeOpts?: RoomUpgradeHandlerOptsOptional
suppressEcho?: booleanTrue to stop receiving onEvent callbacks for events which were sent by a bridge user. Default: true.
Optional
trackUserActivity?: ActivityTrackerOptsOptional
userActivityStore?: string | UserActivityStoreThe user activity store instance to use, or the path to the user .db file to load.
A database will be created if this is not specified. If disableStores
is set,
no database will be created or used.
Optional
userStore?: string | UserBridgeStoreThe user store instance to use, or the path to the user .db file to load.
A database will be created if this is not specified. If disableStores
is set,
no database will be created or used.
Install a custom handler for an incoming HTTP API request. This allows callers to add extra functionality, implement new APIs, etc...
Named options
Optional
authenticate?: booleanShould the token be automatically checked. Defaults to true.
Function to handle requests
The HTTP method name.
Path to the endpoint. to this endpoint.
Determines whether a room should be provisoned based on user provided rules and the room state. Will default to true if no rules have been provided.
The room to check.
Should the validator check its cache.
resolves if can and rejects if it cannot. A status code is returned on both.
Close the appservice HTTP listener, and clear all timeouts.
Resolves when the appservice HTTP listener has stopped
Find a member for a given room. This method will fetch the joined members from the homeserver if the cache doesn't have it stored.
Should we prefer the bot user over a ghost user
The userID of the member.
Get the AS bot instance.
Retrieve the connected event store instance, if one was configured.
Retrieve an Intent instance for the specified user ID. If no ID is given, an instance for the bot itself is returned.
Optional
userId: stringOptional. The user ID to get an Intent for.
Optional
request: Request<unknown>Optional. The request instance to tie the MatrixClient instance to. Useful for logging contextual request IDs.
The intent instance
Retrieve an Intent instance for the specified user ID localpart. This must be the complete user localpart.
The user ID localpart to get an Intent for.
Optional
request: Request<unknown>Optional. The request instance to tie the MatrixClient instance to. Useful for logging contextual request IDs.
The intent instance
Returns a PrometheusMetrics instance stored on the bridge, creating it first if required. The instance will be registered with the HTTP server so it can serve the "/metrics" page in the usual way. The instance will automatically register the Matrix SDK metrics by calling {PrometheusMetrics~registerMatrixSdkMetrics}.
Ensure that PackageInfo.getBridgeVersion
is returns the correct version before calling this,
as changes to the bridge version after metric instantiation will not be detected.
Register the /metrics endpoint on the appservice HTTP server. Defaults to true.
Note: listen()
must have been called if this is true or this will throw.
Optional
registry: Registry<"text/plain; version=0.0.4; charset=utf-8">Optionally provide an alternative registry for metrics.
Retrieve the request factory used to create incoming requests.
Retrieve the connected room store instance, if one was configured.
Retrieve the connected user activity store instance.
Retrieve the connected user store instance, if one was configured.
Load registration, databases and initialise bridge components.
This must be called before listen()
Setup a HTTP listener to handle appservice traffic. ** This must be called after .initialise() **
The port to listen on.
Optional hostname to bind to.
Optional
appServiceInstance: AppServiceThe AppService instance to attach to. If not provided, one will be created.
Load the user and room databases. Access them via getUserStore() and getRoomStore().
Check the homeserver -> appservice connection by sending a ping event.
The room to use as a ping check.
How long to wait for the ping attempt. Defaults to 60s.
The delay in milliseconds
Provision a user on the homeserver.
The virtual user to be provisioned.
Optional
provisionedUser: { name?: string; remote?: RemoteUser; url?: string }Provisioning information.
Resolved when provisioned.
A convenient shortcut to calling registerBridgeGauges() on the PrometheusMetrics instance directly. This version will supply the value of the matrixGhosts field if the counter function did not return it, for convenience.
A function that when invoked returns the current counts of various items in the bridge.
Check a express Request to see if it's correctly
authenticated (includes the hsToken). The query parameter access_token
and the Authorization
header are checked.
True if authenticated, False if not.
Run the bridge (start listening). This calls initialise()
and listen()
.
The port to listen on.
Optional
appServiceInstance: AppServiceThe AppService instance to attach to. If not provided, one will be created.
Optional hostname to bind to.
A promise resolving when the bridge is ready.
Options to pass to the bridge