mirror of
https://github.com/matrix-org/matrix-hookshot.git
synced 2025-03-10 13:17:08 +00:00
Avoid cyclic deps
This commit is contained in:
parent
8659cb8a32
commit
fbfadeae1c
@ -1,26 +1,26 @@
|
||||
import { AdminAccountData } from "./AdminRoomCommandHandler";
|
||||
import { AdminRoom, BRIDGE_ROOM_TYPE, LEGACY_BRIDGE_ROOM_TYPE } from "./AdminRoom";
|
||||
import { Appservice, IAppserviceRegistration, RichRepliesPreprocessor, IRichReplyMetadata, StateEvent, PantalaimonClient, MatrixClient } from "matrix-bot-sdk";
|
||||
import { BridgeConfig, GitLabInstance } from "./Config/Config";
|
||||
import { BridgeWidgetApi } from "./Widgets/BridgeWidgetApi";
|
||||
import { CommentProcessor } from "./CommentProcessor";
|
||||
import { ConnectionManager } from "./ConnectionManager";
|
||||
import { GenericHookConnection } from "./Connections";
|
||||
import { GetIssueResponse, GetIssueOpts } from "./Gitlab/Types"
|
||||
import { GithubInstance } from "./Github/GithubInstance";
|
||||
import { GitHubIssueConnection } from "./Connections/GithubIssue";
|
||||
import { GitHubProjectConnection } from "./Connections/GithubProject";
|
||||
import { GitHubRepoConnection } from "./Connections/GithubRepo";
|
||||
import { GitLabIssueConnection } from "./Connections/GitlabIssue";
|
||||
import { IBridgeStorageProvider } from "./Stores/StorageProvider";
|
||||
import { IConnection, GitHubDiscussionSpace, GitHubDiscussionConnection, GitHubUserSpace, JiraProjectConnection, GitLabRepoConnection } from "./Connections";
|
||||
import { IConnection, GitHubDiscussionSpace, GitHubDiscussionConnection, GitHubUserSpace, JiraProjectConnection, GitLabRepoConnection,
|
||||
GitHubIssueConnection, GitHubProjectConnection, GitHubRepoConnection, GitLabIssueConnection } from "./Connections";
|
||||
import { IGitLabWebhookIssueStateEvent, IGitLabWebhookMREvent, IGitLabWebhookNoteEvent, IGitLabWebhookTagPushEvent } from "./Gitlab/WebhookTypes";
|
||||
import { JiraIssueEvent, JiraIssueUpdatedEvent } from "./Jira/WebhookTypes";
|
||||
import { JiraOAuthResult } from "./Jira/Types";
|
||||
import { MatrixEvent, MatrixMemberContent, MatrixMessageContent } from "./MatrixEvent";
|
||||
import { MemoryStorageProvider } from "./Stores/MemoryStorageProvider";
|
||||
import { MessageQueue, createMessageQueue } from "./MessageQueue/MessageQueue";
|
||||
import { MessageQueue, createMessageQueue } from "./MessageQueue";
|
||||
import { MessageSenderClient } from "./MatrixSender";
|
||||
import { NotifFilter, NotificationFilterStateContent } from "./NotificationFilters";
|
||||
import { NotificationProcessor } from "./NotificationsProcessor";
|
||||
import { OAuthRequest, GitHubOAuthTokens, NotificationsEnableEvent, NotificationsDisableEvent, GenericWebhookEvent,} from "./Webhooks";
|
||||
import { GitHubOAuthTokens, NotificationsEnableEvent, NotificationsDisableEvent, GenericWebhookEvent,} from "./Webhooks";
|
||||
import { ProjectsGetResponseData } from "./Github/Types";
|
||||
import { RedisStorageProvider } from "./Stores/RedisStorageProvider";
|
||||
import { retry } from "./PromiseUtil";
|
||||
@ -28,9 +28,7 @@ import { UserNotificationsEvent } from "./Notifications/UserNotificationWatcher"
|
||||
import { UserTokenStore } from "./UserTokenStore";
|
||||
import * as GitHubWebhookTypes from "@octokit/webhooks-types";
|
||||
import LogWrapper from "./LogWrapper";
|
||||
import { JiraOAuthResult } from "./Jira/Types";
|
||||
import { AdminAccountData } from "./AdminRoomCommandHandler";
|
||||
import { GenericHookConnection } from "./Connections";
|
||||
import { OAuthRequest } from "./WebhookTypes";
|
||||
const log = new LogWrapper("Bridge");
|
||||
|
||||
export class Bridge {
|
||||
@ -309,7 +307,7 @@ export class Bridge {
|
||||
|
||||
this.bindHandlerToQueue<IGitLabWebhookNoteEvent, GitLabIssueConnection>(
|
||||
"gitlab.note.created",
|
||||
(data) => connManager.getConnectionsForGitLabIssueWebhook(data.repository.homepage, data.object_attributes.iid),
|
||||
(data) => connManager.getConnectionsForGitLabIssueWebhook(data.repository.homepage, data.issue.iid),
|
||||
(c, data) => c.onCommentCreated(data),
|
||||
);
|
||||
|
||||
|
@ -43,7 +43,6 @@ export class ConnectionManager {
|
||||
// NOTE: Double loop
|
||||
for (const connection of connections) {
|
||||
if (!this.connections.find((c) => c === connection)) {
|
||||
console.log("PUSH!");
|
||||
this.connections.push(connection);
|
||||
}
|
||||
}
|
||||
|
@ -2,7 +2,7 @@
|
||||
/* eslint-disable @typescript-eslint/ban-ts-comment */
|
||||
import { UserTokenStore } from "../UserTokenStore";
|
||||
import { Appservice } from "matrix-bot-sdk";
|
||||
import { BotCommands, handleCommand, botCommand, compileBotCommands } from "../BotCommands";
|
||||
import { BotCommands, botCommand, compileBotCommands } from "../BotCommands";
|
||||
import { MatrixEvent, MatrixMessageContent } from "../MatrixEvent";
|
||||
import markdown from "markdown-it";
|
||||
import LogWrapper from "../LogWrapper";
|
||||
|
@ -2,8 +2,8 @@ import axios from "axios";
|
||||
import { Router, Request, Response } from "express";
|
||||
import { BridgeConfigJira } from "../Config/Config";
|
||||
import LogWrapper from "../LogWrapper";
|
||||
import { MessageQueue } from "../MessageQueue/MessageQueue";
|
||||
import { OAuthRequest } from "../Webhooks";
|
||||
import { MessageQueue } from "../MessageQueue";
|
||||
import { OAuthRequest } from "../WebhookTypes";
|
||||
import { JiraOAuthResult } from "./Types";
|
||||
|
||||
const log = new LogWrapper("JiraRouter");
|
||||
|
@ -1,5 +1,5 @@
|
||||
import { BridgeConfig } from "./Config/Config";
|
||||
import { MessageQueue, createMessageQueue } from "./MessageQueue/MessageQueue";
|
||||
import { MessageQueue, createMessageQueue } from "./MessageQueue";
|
||||
import { MatrixEventContent, MatrixMessageContent } from "./MatrixEvent";
|
||||
import { Appservice, IAppserviceRegistration } from "matrix-bot-sdk";
|
||||
import LogWrapper from "./LogWrapper";
|
||||
|
@ -1,5 +1,5 @@
|
||||
import { EventEmitter } from "events";
|
||||
import { MessageQueue, MessageQueueMessage, DEFAULT_RES_TIMEOUT } from "./MessageQueue";
|
||||
import { MessageQueue, MessageQueueMessage, DEFAULT_RES_TIMEOUT } from "./Types";
|
||||
import micromatch from "micromatch";
|
||||
import {v4 as uuid} from "uuid";
|
||||
|
||||
|
@ -1,34 +1,11 @@
|
||||
import { BridgeConfig } from "../Config/Config";
|
||||
import { LocalMQ } from "./LocalMQ";
|
||||
import { RedisMQ } from "./RedisQueue";
|
||||
|
||||
export const DEFAULT_RES_TIMEOUT = 30000;
|
||||
import { MessageQueue } from "./Types";
|
||||
|
||||
const staticLocalMq = new LocalMQ();
|
||||
let staticRedisMq: RedisMQ|null = null;
|
||||
|
||||
|
||||
export interface MessageQueueMessage<T> {
|
||||
sender: string;
|
||||
eventName: string;
|
||||
data: T;
|
||||
messageId?: string;
|
||||
for?: string;
|
||||
}
|
||||
|
||||
export interface MessageQueueMessageOut<T> extends MessageQueueMessage<T> {
|
||||
ts: number;
|
||||
}
|
||||
|
||||
export interface MessageQueue {
|
||||
subscribe: (eventGlob: string) => void;
|
||||
unsubscribe: (eventGlob: string) => void;
|
||||
push: <T>(data: MessageQueueMessage<T>, single?: boolean) => Promise<void>;
|
||||
pushWait: <T, X>(data: MessageQueueMessage<T>, timeout?: number, single?: boolean) => Promise<X>;
|
||||
on: <T>(eventName: string, cb: (data: MessageQueueMessageOut<T>) => void) => void;
|
||||
stop?(): void;
|
||||
}
|
||||
|
||||
export function createMessageQueue(config: BridgeConfig): MessageQueue {
|
||||
if (config.queue.monolithic) {
|
||||
return staticLocalMq;
|
||||
|
@ -1,4 +1,5 @@
|
||||
import { MessageQueue, MessageQueueMessage, DEFAULT_RES_TIMEOUT, MessageQueueMessageOut } from "./MessageQueue";
|
||||
|
||||
import { MessageQueue, MessageQueueMessage, DEFAULT_RES_TIMEOUT, MessageQueueMessageOut } from "./Types";
|
||||
import { Redis, default as redis } from "ioredis";
|
||||
import { BridgeConfig } from "../Config/Config";
|
||||
import { EventEmitter } from "events";
|
||||
|
22
src/MessageQueue/Types.ts
Normal file
22
src/MessageQueue/Types.ts
Normal file
@ -0,0 +1,22 @@
|
||||
export interface MessageQueueMessage<T> {
|
||||
sender: string;
|
||||
eventName: string;
|
||||
data: T;
|
||||
messageId?: string;
|
||||
for?: string;
|
||||
}
|
||||
|
||||
export interface MessageQueueMessageOut<T> extends MessageQueueMessage<T> {
|
||||
ts: number;
|
||||
}
|
||||
|
||||
export interface MessageQueue {
|
||||
subscribe: (eventGlob: string) => void;
|
||||
unsubscribe: (eventGlob: string) => void;
|
||||
push: <T>(data: MessageQueueMessage<T>, single?: boolean) => Promise<void>;
|
||||
pushWait: <T, X>(data: MessageQueueMessage<T>, timeout?: number, single?: boolean) => Promise<X>;
|
||||
on: <T>(eventName: string, cb: (data: MessageQueueMessageOut<T>) => void) => void;
|
||||
stop?(): void;
|
||||
}
|
||||
|
||||
export const DEFAULT_RES_TIMEOUT = 30000;
|
2
src/MessageQueue/index.ts
Normal file
2
src/MessageQueue/index.ts
Normal file
@ -0,0 +1,2 @@
|
||||
export * from "./Types";
|
||||
export * from "./MessageQueue";
|
@ -1,6 +1,6 @@
|
||||
import { NotificationsDisableEvent, NotificationsEnableEvent } from "../Webhooks";
|
||||
import LogWrapper from "../LogWrapper";
|
||||
import { createMessageQueue, MessageQueue, MessageQueueMessage } from "../MessageQueue/MessageQueue";
|
||||
import { createMessageQueue, MessageQueue, MessageQueueMessage } from "../MessageQueue";
|
||||
import { MessageSenderClient } from "../MatrixSender";
|
||||
import { NotificationWatcherTask } from "./NotificationWatcherTask";
|
||||
import { GitHubWatcher } from "./GitHubWatcher";
|
||||
|
3
src/WebhookTypes.ts
Normal file
3
src/WebhookTypes.ts
Normal file
@ -0,0 +1,3 @@
|
||||
export interface OAuthRequest {
|
||||
state: string;
|
||||
}
|
@ -1,7 +1,7 @@
|
||||
import { BridgeConfig } from "./Config/Config";
|
||||
import { Application, default as express, Request, Response } from "express";
|
||||
import { EventEmitter } from "events";
|
||||
import { MessageQueue, createMessageQueue } from "./MessageQueue/MessageQueue";
|
||||
import { MessageQueue, createMessageQueue } from "./MessageQueue";
|
||||
import LogWrapper from "./LogWrapper";
|
||||
import qs from "querystring";
|
||||
import { Server } from "http";
|
||||
@ -10,6 +10,7 @@ import { IGitLabWebhookEvent } from "./Gitlab/WebhookTypes";
|
||||
import { EmitterWebhookEvent, Webhooks as OctokitWebhooks } from "@octokit/webhooks"
|
||||
import { IJiraWebhookEvent } from "./Jira/WebhookTypes";
|
||||
import JiraRouter from "./Jira/Router";
|
||||
import { OAuthRequest } from "./WebhookTypes";
|
||||
const log = new LogWrapper("GithubWebhooks");
|
||||
|
||||
export interface GenericWebhookEvent {
|
||||
@ -17,10 +18,6 @@ export interface GenericWebhookEvent {
|
||||
hookId: string;
|
||||
}
|
||||
|
||||
export interface OAuthRequest {
|
||||
state: string;
|
||||
}
|
||||
|
||||
export interface GitHubOAuthTokens {
|
||||
// eslint-disable-next-line camelcase
|
||||
access_token: string;
|
||||
|
Loading…
x
Reference in New Issue
Block a user