mirror of
https://github.com/matrix-org/matrix-hookshot.git
synced 2025-03-10 13:17:08 +00:00
Run Clippy in CI (#753)
* Clippy fixes * Refactor to make rust linter happy * Enable warnings since we have none * Tidy up tests * changelog
This commit is contained in:
parent
1c692bea8f
commit
d772a4050c
2
.github/workflows/main.yml
vendored
2
.github/workflows/main.yml
vendored
@ -44,7 +44,7 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
node-version-file: .node-version
|
node-version-file: .node-version
|
||||||
- run: yarn # Need to build scripts to get rust bindings
|
- run: yarn # Need to build scripts to get rust bindings
|
||||||
- run: yarn --silent ts-node src/Config/Defaults.ts --config | diff config.sample.yml -
|
- run: yarn --silent ts-node src/config/Defaults.ts --config | diff config.sample.yml -
|
||||||
|
|
||||||
metrics-docs:
|
metrics-docs:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
1
changelog.d/753.misc
Normal file
1
changelog.d/753.misc
Normal file
@ -0,0 +1 @@
|
|||||||
|
Apply more Rust clippy suggestions, and run clippy in CI.
|
@ -35,10 +35,10 @@
|
|||||||
"test:cover": "nyc --reporter=lcov --reporter=text yarn test",
|
"test:cover": "nyc --reporter=lcov --reporter=text yarn test",
|
||||||
"lint": "yarn run lint:js && yarn run lint:rs",
|
"lint": "yarn run lint:js && yarn run lint:rs",
|
||||||
"lint:js": "eslint -c .eslintrc.js 'src/**/*.ts' 'tests/**/*.ts' 'web/**/*.ts' 'web/**/*.tsx'",
|
"lint:js": "eslint -c .eslintrc.js 'src/**/*.ts' 'tests/**/*.ts' 'web/**/*.ts' 'web/**/*.tsx'",
|
||||||
"lint:rs": "cargo fmt --all -- --check",
|
"lint:rs": "cargo fmt --all -- --check && cargo clippy -- -Dwarnings",
|
||||||
"lint:rs:apply": "cargo fmt --all",
|
"lint:rs:apply": "cargo fmt --all && cargo clippy --fix",
|
||||||
"generate-default-config": "ts-node src/Config/Defaults.ts --config > config.sample.yml",
|
"generate-default-config": "ts-node src/config/Defaults.ts --config > config.sample.yml",
|
||||||
"validate-config": "ts-node src/Config/Config.ts"
|
"validate-config": "ts-node src/config/Config.ts"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@alloc/quick-lru": "^5.2.0",
|
"@alloc/quick-lru": "^5.2.0",
|
||||||
|
@ -2,20 +2,20 @@
|
|||||||
import "reflect-metadata";
|
import "reflect-metadata";
|
||||||
import { AdminAccountData, AdminRoomCommandHandler, Category } from "./AdminRoomCommandHandler";
|
import { AdminAccountData, AdminRoomCommandHandler, Category } from "./AdminRoomCommandHandler";
|
||||||
import { botCommand, compileBotCommands, handleCommand, BotCommands, HelpFunction } from "./BotCommands";
|
import { botCommand, compileBotCommands, handleCommand, BotCommands, HelpFunction } from "./BotCommands";
|
||||||
import { BridgeConfig, BridgePermissionLevel } from "./Config/Config";
|
import { BridgeConfig, BridgePermissionLevel } from "./config/Config";
|
||||||
import { BridgeRoomState, BridgeRoomStateGitHub } from "./Widgets/BridgeWidgetInterface";
|
import { BridgeRoomState, BridgeRoomStateGitHub } from "./Widgets/BridgeWidgetInterface";
|
||||||
import { Endpoints } from "@octokit/types";
|
import { Endpoints } from "@octokit/types";
|
||||||
import { GitHubDiscussionSpace, GitHubIssueConnection, GitHubRepoConnection } from "./Connections";
|
import { GitHubDiscussionSpace, GitHubIssueConnection, GitHubRepoConnection } from "./Connections";
|
||||||
import { ConnectionManager } from "./ConnectionManager";
|
import { ConnectionManager } from "./ConnectionManager";
|
||||||
import { FormatUtil } from "./FormatUtil";
|
import { FormatUtil } from "./FormatUtil";
|
||||||
import { GetUserResponse } from "./Gitlab/Types";
|
import { GetUserResponse } from "./Gitlab/Types";
|
||||||
import { GitHubBotCommands } from "./Github/AdminCommands";
|
import { GitHubBotCommands } from "./github/AdminCommands";
|
||||||
import { GithubGraphQLClient } from "./Github/GithubInstance";
|
import { GithubGraphQLClient } from "./github/GithubInstance";
|
||||||
import { GitLabClient } from "./Gitlab/Client";
|
import { GitLabClient } from "./Gitlab/Client";
|
||||||
import { Intent } from "matrix-bot-sdk";
|
import { Intent } from "matrix-bot-sdk";
|
||||||
import { JiraBotCommands } from "./Jira/AdminCommands";
|
import { JiraBotCommands } from "./jira/AdminCommands";
|
||||||
import { NotifFilter, NotificationFilterStateContent } from "./NotificationFilters";
|
import { NotifFilter, NotificationFilterStateContent } from "./NotificationFilters";
|
||||||
import { ProjectsListResponseData } from "./Github/Types";
|
import { ProjectsListResponseData } from "./github/Types";
|
||||||
import { UserTokenStore } from "./UserTokenStore";
|
import { UserTokenStore } from "./UserTokenStore";
|
||||||
import { Logger } from "matrix-appservice-bridge";
|
import { Logger } from "matrix-appservice-bridge";
|
||||||
import markdown from "markdown-it";
|
import markdown from "markdown-it";
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import EventEmitter from "events";
|
import EventEmitter from "events";
|
||||||
import { Intent } from "matrix-bot-sdk";
|
import { Intent } from "matrix-bot-sdk";
|
||||||
import { BridgeConfig } from "./Config/Config";
|
import { BridgeConfig } from "./config/Config";
|
||||||
import { UserTokenStore } from "./UserTokenStore";
|
import { UserTokenStore } from "./UserTokenStore";
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import { Bridge } from "../Bridge";
|
import { Bridge } from "../Bridge";
|
||||||
|
|
||||||
import { BridgeConfig, parseRegistrationFile } from "../Config/Config";
|
import { BridgeConfig, parseRegistrationFile } from "../config/Config";
|
||||||
import { Webhooks } from "../Webhooks";
|
import { Webhooks } from "../Webhooks";
|
||||||
import { MatrixSender } from "../MatrixSender";
|
import { MatrixSender } from "../MatrixSender";
|
||||||
import { UserNotificationWatcher } from "../Notifications/UserNotificationWatcher";
|
import { UserNotificationWatcher } from "../Notifications/UserNotificationWatcher";
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { BridgeConfig } from "../Config/Config";
|
import { BridgeConfig } from "../config/Config";
|
||||||
import { Webhooks } from "../Webhooks";
|
import { Webhooks } from "../Webhooks";
|
||||||
import { Logger } from "matrix-appservice-bridge";
|
import { Logger } from "matrix-appservice-bridge";
|
||||||
import { UserNotificationWatcher } from "../Notifications/UserNotificationWatcher";
|
import { UserNotificationWatcher } from "../Notifications/UserNotificationWatcher";
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { BridgeConfig, parseRegistrationFile } from "../Config/Config";
|
import { BridgeConfig, parseRegistrationFile } from "../config/Config";
|
||||||
import { MatrixSender } from "../MatrixSender";
|
import { MatrixSender } from "../MatrixSender";
|
||||||
import { Logger } from "matrix-appservice-bridge";
|
import { Logger } from "matrix-appservice-bridge";
|
||||||
import Metrics from "../Metrics";
|
import Metrics from "../Metrics";
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import { rm } from "fs/promises";
|
import { rm } from "fs/promises";
|
||||||
|
|
||||||
import { BridgeConfig, parseRegistrationFile } from "../Config/Config";
|
import { BridgeConfig, parseRegistrationFile } from "../config/Config";
|
||||||
import { Logger } from "matrix-appservice-bridge";
|
import { Logger } from "matrix-appservice-bridge";
|
||||||
import { LogService, MatrixClient } from "matrix-bot-sdk";
|
import { LogService, MatrixClient } from "matrix-bot-sdk";
|
||||||
import { getAppservice } from "../appservice";
|
import { getAppservice } from "../appservice";
|
||||||
|
@ -3,7 +3,7 @@ import stringArgv from "string-argv";
|
|||||||
import { ApiError } from "./api";
|
import { ApiError } from "./api";
|
||||||
import { CommandError } from "./errors";
|
import { CommandError } from "./errors";
|
||||||
import { MatrixMessageContent } from "./MatrixEvent";
|
import { MatrixMessageContent } from "./MatrixEvent";
|
||||||
import { BridgePermissionLevel } from "./Config/Config";
|
import { BridgePermissionLevel } from "./config/Config";
|
||||||
import { PermissionCheckFn } from "./Connections";
|
import { PermissionCheckFn } from "./Connections";
|
||||||
|
|
||||||
const md = new markdown();
|
const md = new markdown();
|
||||||
|
@ -2,40 +2,40 @@ import { AdminAccountData } from "./AdminRoomCommandHandler";
|
|||||||
import { AdminRoom, BRIDGE_ROOM_TYPE, LEGACY_BRIDGE_ROOM_TYPE } from "./AdminRoom";
|
import { AdminRoom, BRIDGE_ROOM_TYPE, LEGACY_BRIDGE_ROOM_TYPE } from "./AdminRoom";
|
||||||
import { Appservice, RichRepliesPreprocessor, IRichReplyMetadata, StateEvent, EventKind, PowerLevelsEvent, Intent } from "matrix-bot-sdk";
|
import { Appservice, RichRepliesPreprocessor, IRichReplyMetadata, StateEvent, EventKind, PowerLevelsEvent, Intent } from "matrix-bot-sdk";
|
||||||
import BotUsersManager from "./Managers/BotUsersManager";
|
import BotUsersManager from "./Managers/BotUsersManager";
|
||||||
import { BridgeConfig, BridgePermissionLevel, GitLabInstance } from "./Config/Config";
|
import { BridgeConfig, BridgePermissionLevel, GitLabInstance } from "./config/Config";
|
||||||
import { BridgeWidgetApi } from "./Widgets/BridgeWidgetApi";
|
import { BridgeWidgetApi } from "./Widgets/BridgeWidgetApi";
|
||||||
import { CommentProcessor } from "./CommentProcessor";
|
import { CommentProcessor } from "./CommentProcessor";
|
||||||
import { ConnectionManager } from "./ConnectionManager";
|
import { ConnectionManager } from "./ConnectionManager";
|
||||||
import { GetIssueResponse, GetIssueOpts } from "./Gitlab/Types"
|
import { GetIssueResponse, GetIssueOpts } from "./Gitlab/Types"
|
||||||
import { GithubInstance } from "./Github/GithubInstance";
|
import { GithubInstance } from "./github/GithubInstance";
|
||||||
import { IBridgeStorageProvider } from "./Stores/StorageProvider";
|
import { IBridgeStorageProvider } from "./Stores/StorageProvider";
|
||||||
import { IConnection, GitHubDiscussionSpace, GitHubDiscussionConnection, GitHubUserSpace, JiraProjectConnection, GitLabRepoConnection,
|
import { IConnection, GitHubDiscussionSpace, GitHubDiscussionConnection, GitHubUserSpace, JiraProjectConnection, GitLabRepoConnection,
|
||||||
GitHubIssueConnection, GitHubProjectConnection, GitHubRepoConnection, GitLabIssueConnection, FigmaFileConnection, FeedConnection, GenericHookConnection } from "./Connections";
|
GitHubIssueConnection, GitHubProjectConnection, GitHubRepoConnection, GitLabIssueConnection, FigmaFileConnection, FeedConnection, GenericHookConnection } from "./Connections";
|
||||||
import { IGitLabWebhookIssueStateEvent, IGitLabWebhookMREvent, IGitLabWebhookNoteEvent, IGitLabWebhookPushEvent, IGitLabWebhookReleaseEvent, IGitLabWebhookTagPushEvent, IGitLabWebhookWikiPageEvent } from "./Gitlab/WebhookTypes";
|
import { IGitLabWebhookIssueStateEvent, IGitLabWebhookMREvent, IGitLabWebhookNoteEvent, IGitLabWebhookPushEvent, IGitLabWebhookReleaseEvent, IGitLabWebhookTagPushEvent, IGitLabWebhookWikiPageEvent } from "./Gitlab/WebhookTypes";
|
||||||
import { JiraIssueEvent, JiraIssueUpdatedEvent, JiraVersionEvent } from "./Jira/WebhookTypes";
|
import { JiraIssueEvent, JiraIssueUpdatedEvent, JiraVersionEvent } from "./jira/WebhookTypes";
|
||||||
import { JiraOAuthResult } from "./Jira/Types";
|
import { JiraOAuthResult } from "./jira/Types";
|
||||||
import { MatrixEvent, MatrixMemberContent, MatrixMessageContent } from "./MatrixEvent";
|
import { MatrixEvent, MatrixMemberContent, MatrixMessageContent } from "./MatrixEvent";
|
||||||
import { MessageQueue, createMessageQueue } from "./MessageQueue";
|
import { MessageQueue, createMessageQueue } from "./MessageQueue";
|
||||||
import { MessageSenderClient } from "./MatrixSender";
|
import { MessageSenderClient } from "./MatrixSender";
|
||||||
import { NotifFilter, NotificationFilterStateContent } from "./NotificationFilters";
|
import { NotifFilter, NotificationFilterStateContent } from "./NotificationFilters";
|
||||||
import { NotificationProcessor } from "./NotificationsProcessor";
|
import { NotificationProcessor } from "./NotificationsProcessor";
|
||||||
import { NotificationsEnableEvent, NotificationsDisableEvent } from "./Webhooks";
|
import { NotificationsEnableEvent, NotificationsDisableEvent } from "./Webhooks";
|
||||||
import { GitHubOAuthToken, GitHubOAuthTokenResponse, ProjectsGetResponseData } from "./Github/Types";
|
import { GitHubOAuthToken, GitHubOAuthTokenResponse, ProjectsGetResponseData } from "./github/Types";
|
||||||
import { retry } from "./PromiseUtil";
|
import { retry } from "./PromiseUtil";
|
||||||
import { UserNotificationsEvent } from "./Notifications/UserNotificationWatcher";
|
import { UserNotificationsEvent } from "./Notifications/UserNotificationWatcher";
|
||||||
import { UserTokenStore } from "./UserTokenStore";
|
import { UserTokenStore } from "./UserTokenStore";
|
||||||
import * as GitHubWebhookTypes from "@octokit/webhooks-types";
|
import * as GitHubWebhookTypes from "@octokit/webhooks-types";
|
||||||
import { Logger } from "matrix-appservice-bridge";
|
import { Logger } from "matrix-appservice-bridge";
|
||||||
import { Provisioner } from "./provisioning/provisioner";
|
import { Provisioner } from "./provisioning/provisioner";
|
||||||
import { JiraProvisionerRouter } from "./Jira/Router";
|
import { JiraProvisionerRouter } from "./jira/Router";
|
||||||
import { GitHubProvisionerRouter } from "./Github/Router";
|
import { GitHubProvisionerRouter } from "./github/Router";
|
||||||
import { OAuthRequest } from "./WebhookTypes";
|
import { OAuthRequest } from "./WebhookTypes";
|
||||||
import { promises as fs } from "fs";
|
import { promises as fs } from "fs";
|
||||||
import Metrics from "./Metrics";
|
import Metrics from "./Metrics";
|
||||||
import { FigmaEvent, ensureFigmaWebhooks } from "./figma";
|
import { FigmaEvent, ensureFigmaWebhooks } from "./figma";
|
||||||
import { ListenerService } from "./ListenerService";
|
import { ListenerService } from "./ListenerService";
|
||||||
import { SetupConnection } from "./Connections/SetupConnection";
|
import { SetupConnection } from "./Connections/SetupConnection";
|
||||||
import { JiraOAuthRequestCloud, JiraOAuthRequestOnPrem, JiraOAuthRequestResult } from "./Jira/OAuth";
|
import { JiraOAuthRequestCloud, JiraOAuthRequestOnPrem, JiraOAuthRequestResult } from "./jira/OAuth";
|
||||||
import { GenericWebhookEvent, GenericWebhookEventResult } from "./generic/types";
|
import { GenericWebhookEvent, GenericWebhookEventResult } from "./generic/types";
|
||||||
import { SetupWidget } from "./Widgets/SetupWidget";
|
import { SetupWidget } from "./Widgets/SetupWidget";
|
||||||
import { FeedEntry, FeedError, FeedReader, FeedSuccess } from "./feeds/FeedReader";
|
import { FeedEntry, FeedError, FeedReader, FeedSuccess } from "./feeds/FeedReader";
|
||||||
|
@ -6,7 +6,7 @@ import { MatrixMessageContent, MatrixEvent } from "./MatrixEvent";
|
|||||||
import { Logger } from "matrix-appservice-bridge";
|
import { Logger } from "matrix-appservice-bridge";
|
||||||
import axios from "axios";
|
import axios from "axios";
|
||||||
import { FormatUtil } from "./FormatUtil";
|
import { FormatUtil } from "./FormatUtil";
|
||||||
import { IssuesGetCommentResponseData, ReposGetResponseData, IssuesGetResponseData } from "./Github/Types"
|
import { IssuesGetCommentResponseData, ReposGetResponseData, IssuesGetResponseData } from "./github/Types"
|
||||||
import { IGitLabWebhookNoteEvent } from "./Gitlab/WebhookTypes";
|
import { IGitLabWebhookNoteEvent } from "./Gitlab/WebhookTypes";
|
||||||
|
|
||||||
const REGEX_MENTION = /(^|\s)(@[a-z\d](?:[a-z\d]|-(?=[a-z\d])){0,38})(\s|$)/ig;
|
const REGEX_MENTION = /(^|\s)(@[a-z\d](?:[a-z\d]|-(?=[a-z\d])){0,38})(\s|$)/ig;
|
||||||
|
@ -6,15 +6,15 @@
|
|||||||
|
|
||||||
import { Appservice, Intent, StateEvent } from "matrix-bot-sdk";
|
import { Appservice, Intent, StateEvent } from "matrix-bot-sdk";
|
||||||
import { ApiError, ErrCode } from "./api";
|
import { ApiError, ErrCode } from "./api";
|
||||||
import { BridgeConfig, BridgePermissionLevel, GitLabInstance } from "./Config/Config";
|
import { BridgeConfig, BridgePermissionLevel, GitLabInstance } from "./config/Config";
|
||||||
import { CommentProcessor } from "./CommentProcessor";
|
import { CommentProcessor } from "./CommentProcessor";
|
||||||
import { ConnectionDeclaration, ConnectionDeclarations, GenericHookConnection, GitHubDiscussionConnection, GitHubDiscussionSpace, GitHubIssueConnection, GitHubProjectConnection, GitHubRepoConnection, GitHubUserSpace, GitLabIssueConnection, GitLabRepoConnection, IConnection, IConnectionState, JiraProjectConnection } from "./Connections";
|
import { ConnectionDeclaration, ConnectionDeclarations, GenericHookConnection, GitHubDiscussionConnection, GitHubDiscussionSpace, GitHubIssueConnection, GitHubProjectConnection, GitHubRepoConnection, GitHubUserSpace, GitLabIssueConnection, GitLabRepoConnection, IConnection, IConnectionState, JiraProjectConnection } from "./Connections";
|
||||||
import { FigmaFileConnection, FeedConnection } from "./Connections";
|
import { FigmaFileConnection, FeedConnection } from "./Connections";
|
||||||
import { GetConnectionTypeResponseItem } from "./provisioning/api";
|
import { GetConnectionTypeResponseItem } from "./provisioning/api";
|
||||||
import { GitLabClient } from "./Gitlab/Client";
|
import { GitLabClient } from "./Gitlab/Client";
|
||||||
import { GithubInstance } from "./Github/GithubInstance";
|
import { GithubInstance } from "./github/GithubInstance";
|
||||||
import { IBridgeStorageProvider } from "./Stores/StorageProvider";
|
import { IBridgeStorageProvider } from "./Stores/StorageProvider";
|
||||||
import { JiraProject, JiraVersion } from "./Jira/Types";
|
import { JiraProject, JiraVersion } from "./jira/Types";
|
||||||
import { Logger } from "matrix-appservice-bridge";
|
import { Logger } from "matrix-appservice-bridge";
|
||||||
import { MessageSenderClient } from "./MatrixSender";
|
import { MessageSenderClient } from "./MatrixSender";
|
||||||
import { UserTokenStore } from "./UserTokenStore";
|
import { UserTokenStore } from "./UserTokenStore";
|
||||||
|
@ -5,7 +5,7 @@ import { BaseConnection } from "./BaseConnection";
|
|||||||
import { IConnection, IConnectionState } from ".";
|
import { IConnection, IConnectionState } from ".";
|
||||||
import { Logger } from "matrix-appservice-bridge";
|
import { Logger } from "matrix-appservice-bridge";
|
||||||
import { IBridgeStorageProvider } from "../Stores/StorageProvider";
|
import { IBridgeStorageProvider } from "../Stores/StorageProvider";
|
||||||
import { BridgeConfig } from "../Config/Config";
|
import { BridgeConfig } from "../config/Config";
|
||||||
import { Connection, InstantiateConnectionOpts, ProvisionConnectionOpts } from "./IConnection";
|
import { Connection, InstantiateConnectionOpts, ProvisionConnectionOpts } from "./IConnection";
|
||||||
import { ConfigGrantChecker, GrantChecker } from "../grants/GrantCheck";
|
import { ConfigGrantChecker, GrantChecker } from "../grants/GrantCheck";
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ import { Appservice, Intent, StateEvent } from "matrix-bot-sdk";
|
|||||||
import { ApiError, ErrCode } from "../api";
|
import { ApiError, ErrCode } from "../api";
|
||||||
import { BaseConnection } from "./BaseConnection";
|
import { BaseConnection } from "./BaseConnection";
|
||||||
import { GetConnectionsResponseItem } from "../provisioning/api";
|
import { GetConnectionsResponseItem } from "../provisioning/api";
|
||||||
import { BridgeConfigGenericWebhooks } from "../Config/Config";
|
import { BridgeConfigGenericWebhooks } from "../config/Config";
|
||||||
import { ensureUserIsInRoom } from "../IntentUtils";
|
import { ensureUserIsInRoom } from "../IntentUtils";
|
||||||
import { randomUUID } from 'node:crypto';
|
import { randomUUID } from 'node:crypto';
|
||||||
|
|
||||||
|
@ -9,10 +9,10 @@ import { Discussion } from "@octokit/webhooks-types";
|
|||||||
import emoji from "node-emoji";
|
import emoji from "node-emoji";
|
||||||
import markdown from "markdown-it";
|
import markdown from "markdown-it";
|
||||||
import { DiscussionCommentCreatedEvent } from "@octokit/webhooks-types";
|
import { DiscussionCommentCreatedEvent } from "@octokit/webhooks-types";
|
||||||
import { GithubGraphQLClient } from "../Github/GithubInstance";
|
import { GithubGraphQLClient } from "../github/GithubInstance";
|
||||||
import { Logger } from "matrix-appservice-bridge";
|
import { Logger } from "matrix-appservice-bridge";
|
||||||
import { BaseConnection } from "./BaseConnection";
|
import { BaseConnection } from "./BaseConnection";
|
||||||
import { BridgeConfig, BridgeConfigGitHub } from "../Config/Config";
|
import { BridgeConfig, BridgeConfigGitHub } from "../config/Config";
|
||||||
import { ConfigGrantChecker, GrantChecker } from "../grants/GrantCheck";
|
import { ConfigGrantChecker, GrantChecker } from "../grants/GrantCheck";
|
||||||
import QuickLRU from "@alloc/quick-lru";
|
import QuickLRU from "@alloc/quick-lru";
|
||||||
export interface GitHubDiscussionConnectionState {
|
export interface GitHubDiscussionConnectionState {
|
||||||
|
@ -1,13 +1,13 @@
|
|||||||
import { Connection, IConnection, InstantiateConnectionOpts } from "./IConnection";
|
import { Connection, IConnection, InstantiateConnectionOpts } from "./IConnection";
|
||||||
import { Appservice, Space, StateEvent } from "matrix-bot-sdk";
|
import { Appservice, Space, StateEvent } from "matrix-bot-sdk";
|
||||||
import { Logger } from "matrix-appservice-bridge";
|
import { Logger } from "matrix-appservice-bridge";
|
||||||
import { ReposGetResponseData } from "../Github/Types";
|
import { ReposGetResponseData } from "../github/Types";
|
||||||
import axios from "axios";
|
import axios from "axios";
|
||||||
import { GitHubDiscussionConnection } from "./GithubDiscussion";
|
import { GitHubDiscussionConnection } from "./GithubDiscussion";
|
||||||
import { GithubInstance } from "../Github/GithubInstance";
|
import { GithubInstance } from "../github/GithubInstance";
|
||||||
import { BaseConnection } from "./BaseConnection";
|
import { BaseConnection } from "./BaseConnection";
|
||||||
import { ConfigGrantChecker, GrantChecker } from "../grants/GrantCheck";
|
import { ConfigGrantChecker, GrantChecker } from "../grants/GrantCheck";
|
||||||
import { BridgeConfig } from "../Config/Config";
|
import { BridgeConfig } from "../config/Config";
|
||||||
|
|
||||||
const log = new Logger("GitHubDiscussionSpace");
|
const log = new Logger("GitHubDiscussionSpace");
|
||||||
|
|
||||||
|
@ -9,11 +9,11 @@ import { MessageSenderClient } from "../MatrixSender";
|
|||||||
import { ensureUserIsInRoom, getIntentForUser } from "../IntentUtils";
|
import { ensureUserIsInRoom, getIntentForUser } from "../IntentUtils";
|
||||||
import { FormatUtil } from "../FormatUtil";
|
import { FormatUtil } from "../FormatUtil";
|
||||||
import axios from "axios";
|
import axios from "axios";
|
||||||
import { GithubInstance } from "../Github/GithubInstance";
|
import { GithubInstance } from "../github/GithubInstance";
|
||||||
import { IssuesGetCommentResponseData, IssuesGetResponseData, ReposGetResponseData} from "../Github/Types";
|
import { IssuesGetCommentResponseData, IssuesGetResponseData, ReposGetResponseData} from "../github/Types";
|
||||||
import { IssuesEditedEvent, IssueCommentCreatedEvent } from "@octokit/webhooks-types";
|
import { IssuesEditedEvent, IssueCommentCreatedEvent } from "@octokit/webhooks-types";
|
||||||
import { BaseConnection } from "./BaseConnection";
|
import { BaseConnection } from "./BaseConnection";
|
||||||
import { BridgeConfigGitHub } from "../Config/Config";
|
import { BridgeConfigGitHub } from "../config/Config";
|
||||||
|
|
||||||
export interface GitHubIssueConnectionState {
|
export interface GitHubIssueConnectionState {
|
||||||
org: string;
|
org: string;
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
import { Connection, IConnection, InstantiateConnectionOpts } from "./IConnection";
|
import { Connection, IConnection, InstantiateConnectionOpts } from "./IConnection";
|
||||||
import { Appservice, Intent, StateEvent } from "matrix-bot-sdk";
|
import { Appservice, Intent, StateEvent } from "matrix-bot-sdk";
|
||||||
import { Logger } from "matrix-appservice-bridge";
|
import { Logger } from "matrix-appservice-bridge";
|
||||||
import { ProjectsGetResponseData } from "../Github/Types";
|
import { ProjectsGetResponseData } from "../github/Types";
|
||||||
import { BaseConnection } from "./BaseConnection";
|
import { BaseConnection } from "./BaseConnection";
|
||||||
import { ConfigGrantChecker, GrantChecker } from "../grants/GrantCheck";
|
import { ConfigGrantChecker, GrantChecker } from "../grants/GrantCheck";
|
||||||
import { BridgeConfig } from "../Config/Config";
|
import { BridgeConfig } from "../config/Config";
|
||||||
|
|
||||||
export interface GitHubProjectConnectionState {
|
export interface GitHubProjectConnectionState {
|
||||||
// eslint-disable-next-line camelcase
|
// eslint-disable-next-line camelcase
|
||||||
|
@ -13,22 +13,22 @@ import { IssuesOpenedEvent, IssuesReopenedEvent, IssuesEditedEvent, PullRequestO
|
|||||||
import { MatrixMessageContent, MatrixEvent, MatrixReactionContent } from "../MatrixEvent";
|
import { MatrixMessageContent, MatrixEvent, MatrixReactionContent } from "../MatrixEvent";
|
||||||
import { MessageSenderClient } from "../MatrixSender";
|
import { MessageSenderClient } from "../MatrixSender";
|
||||||
import { CommandError, NotLoggedInError } from "../errors";
|
import { CommandError, NotLoggedInError } from "../errors";
|
||||||
import { NAMELESS_ORG_PLACEHOLDER, ReposGetResponseData } from "../Github/Types";
|
import { NAMELESS_ORG_PLACEHOLDER, ReposGetResponseData } from "../github/Types";
|
||||||
import { UserTokenStore } from "../UserTokenStore";
|
import { UserTokenStore } from "../UserTokenStore";
|
||||||
import axios, { AxiosError } from "axios";
|
import axios, { AxiosError } from "axios";
|
||||||
import emoji from "node-emoji";
|
import emoji from "node-emoji";
|
||||||
import { Logger } from "matrix-appservice-bridge";
|
import { Logger } from "matrix-appservice-bridge";
|
||||||
import markdown from "markdown-it";
|
import markdown from "markdown-it";
|
||||||
import { CommandConnection } from "./CommandConnection";
|
import { CommandConnection } from "./CommandConnection";
|
||||||
import { GithubInstance } from "../Github/GithubInstance";
|
import { GithubInstance } from "../github/GithubInstance";
|
||||||
import { GitHubIssueConnection } from "./GithubIssue";
|
import { GitHubIssueConnection } from "./GithubIssue";
|
||||||
import { BridgeConfigGitHub } from "../Config/Config";
|
import { BridgeConfigGitHub } from "../config/Config";
|
||||||
import { ApiError, ErrCode, ValidatorApiError } from "../api";
|
import { ApiError, ErrCode, ValidatorApiError } from "../api";
|
||||||
import { PermissionCheckFn } from ".";
|
import { PermissionCheckFn } from ".";
|
||||||
import { GitHubRepoMessageBody, MinimalGitHubIssue } from "../libRs";
|
import { GitHubRepoMessageBody, MinimalGitHubIssue } from "../libRs";
|
||||||
import Ajv, { JSONSchemaType } from "ajv";
|
import Ajv, { JSONSchemaType } from "ajv";
|
||||||
import { HookFilter } from "../HookFilter";
|
import { HookFilter } from "../HookFilter";
|
||||||
import { GitHubGrantChecker } from "../Github/GrantChecker";
|
import { GitHubGrantChecker } from "../github/GrantChecker";
|
||||||
|
|
||||||
const log = new Logger("GitHubRepoConnection");
|
const log = new Logger("GitHubRepoConnection");
|
||||||
const md = new markdown();
|
const md = new markdown();
|
||||||
|
@ -3,10 +3,10 @@ import { Appservice, Space, StateEvent } from "matrix-bot-sdk";
|
|||||||
import { Logger } from "matrix-appservice-bridge";
|
import { Logger } from "matrix-appservice-bridge";
|
||||||
import axios from "axios";
|
import axios from "axios";
|
||||||
import { GitHubDiscussionSpace } from ".";
|
import { GitHubDiscussionSpace } from ".";
|
||||||
import { GithubInstance } from "../Github/GithubInstance";
|
import { GithubInstance } from "../github/GithubInstance";
|
||||||
import { BaseConnection } from "./BaseConnection";
|
import { BaseConnection } from "./BaseConnection";
|
||||||
import { ConfigGrantChecker, GrantChecker } from "../grants/GrantCheck";
|
import { ConfigGrantChecker, GrantChecker } from "../grants/GrantCheck";
|
||||||
import { BridgeConfig } from "../Config/Config";
|
import { BridgeConfig } from "../config/Config";
|
||||||
|
|
||||||
const log = new Logger("GitHubOwnerSpace");
|
const log = new Logger("GitHubOwnerSpace");
|
||||||
|
|
||||||
|
@ -5,7 +5,7 @@ import { UserTokenStore } from "../UserTokenStore";
|
|||||||
import { Logger } from "matrix-appservice-bridge";
|
import { Logger } from "matrix-appservice-bridge";
|
||||||
import { CommentProcessor } from "../CommentProcessor";
|
import { CommentProcessor } from "../CommentProcessor";
|
||||||
import { MessageSenderClient } from "../MatrixSender";
|
import { MessageSenderClient } from "../MatrixSender";
|
||||||
import { BridgeConfig, BridgeConfigGitLab, GitLabInstance } from "../Config/Config";
|
import { BridgeConfig, BridgeConfigGitLab, GitLabInstance } from "../config/Config";
|
||||||
import { GetIssueResponse } from "../Gitlab/Types";
|
import { GetIssueResponse } from "../Gitlab/Types";
|
||||||
import { IGitLabWebhookNoteEvent } from "../Gitlab/WebhookTypes";
|
import { IGitLabWebhookNoteEvent } from "../Gitlab/WebhookTypes";
|
||||||
import { ensureUserIsInRoom, getIntentForUser } from "../IntentUtils";
|
import { ensureUserIsInRoom, getIntentForUser } from "../IntentUtils";
|
||||||
|
@ -6,7 +6,7 @@ import { BotCommands, botCommand, compileBotCommands } from "../BotCommands";
|
|||||||
import { MatrixEvent, MatrixMessageContent } from "../MatrixEvent";
|
import { MatrixEvent, MatrixMessageContent } from "../MatrixEvent";
|
||||||
import markdown from "markdown-it";
|
import markdown from "markdown-it";
|
||||||
import { Logger } from "matrix-appservice-bridge";
|
import { Logger } from "matrix-appservice-bridge";
|
||||||
import { BridgeConfigGitLab, GitLabInstance } from "../Config/Config";
|
import { BridgeConfigGitLab, GitLabInstance } from "../config/Config";
|
||||||
import { IGitlabMergeRequest, IGitlabProject, IGitlabUser, IGitLabWebhookMREvent, IGitLabWebhookNoteEvent, IGitLabWebhookPushEvent, IGitLabWebhookReleaseEvent, IGitLabWebhookTagPushEvent, IGitLabWebhookWikiPageEvent } from "../Gitlab/WebhookTypes";
|
import { IGitlabMergeRequest, IGitlabProject, IGitlabUser, IGitLabWebhookMREvent, IGitLabWebhookNoteEvent, IGitLabWebhookPushEvent, IGitLabWebhookReleaseEvent, IGitLabWebhookTagPushEvent, IGitLabWebhookWikiPageEvent } from "../Gitlab/WebhookTypes";
|
||||||
import { CommandConnection } from "./CommandConnection";
|
import { CommandConnection } from "./CommandConnection";
|
||||||
import { Connection, IConnection, IConnectionState, InstantiateConnectionOpts, ProvisionConnectionOpts } from "./IConnection";
|
import { Connection, IConnection, IConnectionState, InstantiateConnectionOpts, ProvisionConnectionOpts } from "./IConnection";
|
||||||
|
@ -2,12 +2,12 @@ import { MatrixEvent, MatrixMessageContent } from "../MatrixEvent";
|
|||||||
import { IssuesOpenedEvent, IssuesEditedEvent } from "@octokit/webhooks-types";
|
import { IssuesOpenedEvent, IssuesEditedEvent } from "@octokit/webhooks-types";
|
||||||
import { ConnectionWarning, GetConnectionsResponseItem } from "../provisioning/api";
|
import { ConnectionWarning, GetConnectionsResponseItem } from "../provisioning/api";
|
||||||
import { Appservice, Intent, IRichReplyMetadata, StateEvent } from "matrix-bot-sdk";
|
import { Appservice, Intent, IRichReplyMetadata, StateEvent } from "matrix-bot-sdk";
|
||||||
import { BridgeConfig, BridgePermissionLevel } from "../Config/Config";
|
import { BridgeConfig, BridgePermissionLevel } from "../config/Config";
|
||||||
import { UserTokenStore } from "../UserTokenStore";
|
import { UserTokenStore } from "../UserTokenStore";
|
||||||
import { CommentProcessor } from "../CommentProcessor";
|
import { CommentProcessor } from "../CommentProcessor";
|
||||||
import { MessageSenderClient } from "../MatrixSender";
|
import { MessageSenderClient } from "../MatrixSender";
|
||||||
import { IBridgeStorageProvider } from "../Stores/StorageProvider";
|
import { IBridgeStorageProvider } from "../Stores/StorageProvider";
|
||||||
import { GithubInstance } from "../Github/GithubInstance";
|
import { GithubInstance } from "../github/GithubInstance";
|
||||||
import "reflect-metadata";
|
import "reflect-metadata";
|
||||||
|
|
||||||
export type PermissionCheckFn = (service: string, level: BridgePermissionLevel) => boolean;
|
export type PermissionCheckFn = (service: string, level: BridgePermissionLevel) => boolean;
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
import { Connection, IConnection, IConnectionState, InstantiateConnectionOpts, ProvisionConnectionOpts } from "./IConnection";
|
import { Connection, IConnection, IConnectionState, InstantiateConnectionOpts, ProvisionConnectionOpts } from "./IConnection";
|
||||||
import { Appservice, Intent, StateEvent } from "matrix-bot-sdk";
|
import { Appservice, Intent, StateEvent } from "matrix-bot-sdk";
|
||||||
import { Logger } from "matrix-appservice-bridge";
|
import { Logger } from "matrix-appservice-bridge";
|
||||||
import { JiraIssueEvent, JiraIssueUpdatedEvent, JiraVersionEvent } from "../Jira/WebhookTypes";
|
import { JiraIssueEvent, JiraIssueUpdatedEvent, JiraVersionEvent } from "../jira/WebhookTypes";
|
||||||
import { FormatUtil } from "../FormatUtil";
|
import { FormatUtil } from "../FormatUtil";
|
||||||
import markdownit from "markdown-it";
|
import markdownit from "markdown-it";
|
||||||
import { generateJiraWebLinkFromIssue, generateJiraWebLinkFromVersion } from "../Jira";
|
import { generateJiraWebLinkFromIssue, generateJiraWebLinkFromVersion } from "../jira";
|
||||||
import { JiraProject, JiraVersion } from "../Jira/Types";
|
import { JiraProject, JiraVersion } from "../jira/Types";
|
||||||
import { botCommand, BotCommands, compileBotCommands } from "../BotCommands";
|
import { botCommand, BotCommands, compileBotCommands } from "../BotCommands";
|
||||||
import { MatrixMessageContent } from "../MatrixEvent";
|
import { MatrixMessageContent } from "../MatrixEvent";
|
||||||
import { CommandConnection } from "./CommandConnection";
|
import { CommandConnection } from "./CommandConnection";
|
||||||
@ -14,10 +14,10 @@ import { CommandError, NotLoggedInError } from "../errors";
|
|||||||
import { ApiError, ErrCode } from "../api";
|
import { ApiError, ErrCode } from "../api";
|
||||||
import JiraApi from "jira-client";
|
import JiraApi from "jira-client";
|
||||||
import { GetConnectionsResponseItem } from "../provisioning/api";
|
import { GetConnectionsResponseItem } from "../provisioning/api";
|
||||||
import { BridgeConfigJira } from "../Config/Config";
|
import { BridgeConfigJira } from "../config/Config";
|
||||||
import { HookshotJiraApi } from "../Jira/Client";
|
import { HookshotJiraApi } from "../jira/Client";
|
||||||
import { GrantChecker } from "../grants/GrantCheck";
|
import { GrantChecker } from "../grants/GrantCheck";
|
||||||
import { JiraGrantChecker } from "../Jira/GrantChecker";
|
import { JiraGrantChecker } from "../jira/GrantChecker";
|
||||||
|
|
||||||
type JiraAllowedEventsNames =
|
type JiraAllowedEventsNames =
|
||||||
"issue_created" |
|
"issue_created" |
|
||||||
|
@ -3,7 +3,7 @@ import { BotCommands, botCommand, compileBotCommands, HelpFunction } from "../Bo
|
|||||||
import { CommandConnection } from "./CommandConnection";
|
import { CommandConnection } from "./CommandConnection";
|
||||||
import { GenericHookConnection, GitHubRepoConnection, JiraProjectConnection, JiraProjectConnectionState } from ".";
|
import { GenericHookConnection, GitHubRepoConnection, JiraProjectConnection, JiraProjectConnectionState } from ".";
|
||||||
import { CommandError } from "../errors";
|
import { CommandError } from "../errors";
|
||||||
import { BridgePermissionLevel } from "../Config/Config";
|
import { BridgePermissionLevel } from "../config/Config";
|
||||||
import markdown from "markdown-it";
|
import markdown from "markdown-it";
|
||||||
import { FigmaFileConnection } from "./FigmaFileConnection";
|
import { FigmaFileConnection } from "./FigmaFileConnection";
|
||||||
import { FeedConnection, FeedConnectionState } from "./FeedConnection";
|
import { FeedConnection, FeedConnectionState } from "./FeedConnection";
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
/* eslint-disable camelcase */
|
/* eslint-disable camelcase */
|
||||||
import { ProjectsListResponseData } from './Github/Types';
|
import { ProjectsListResponseData } from './github/Types';
|
||||||
import emoji from "node-emoji";
|
import emoji from "node-emoji";
|
||||||
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
import { JiraIssue } from './Jira/Types';
|
import { JiraIssue } from './jira/Types';
|
||||||
import { formatLabels, getPartialBodyForJiraIssue, hashId, getPartialBodyForGithubIssue, getPartialBodyForGithubRepo, MinimalGitHubIssue } from "./libRs";
|
import { formatLabels, getPartialBodyForJiraIssue, hashId, getPartialBodyForGithubIssue, getPartialBodyForGithubRepo, MinimalGitHubIssue } from "./libRs";
|
||||||
|
|
||||||
interface IMinimalPR {
|
interface IMinimalPR {
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import axios from "axios";
|
import axios from "axios";
|
||||||
import { GitLabInstance } from "../Config/Config";
|
import { GitLabInstance } from "../config/Config";
|
||||||
import { GetIssueResponse, GetUserResponse, CreateIssueOpts, CreateIssueResponse, GetIssueOpts, EditIssueOpts, GetTodosResponse, EventsOpts, CreateIssueNoteOpts, CreateIssueNoteResponse, GetProjectResponse, ProjectHook, ProjectHookOpts, AccessLevel, SimpleProject } from "./Types";
|
import { GetIssueResponse, GetUserResponse, CreateIssueOpts, CreateIssueResponse, GetIssueOpts, EditIssueOpts, GetTodosResponse, EventsOpts, CreateIssueNoteOpts, CreateIssueNoteResponse, GetProjectResponse, ProjectHook, ProjectHookOpts, AccessLevel, SimpleProject } from "./Types";
|
||||||
import { Logger } from "matrix-appservice-bridge";
|
import { Logger } from "matrix-appservice-bridge";
|
||||||
import { URLSearchParams } from "url";
|
import { URLSearchParams } from "url";
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import { Logger } from "matrix-appservice-bridge";
|
import { Logger } from "matrix-appservice-bridge";
|
||||||
import { Appservice } from "matrix-bot-sdk";
|
import { Appservice } from "matrix-bot-sdk";
|
||||||
import { BridgeConfigGitLab } from "../Config/Config";
|
import { BridgeConfigGitLab } from "../config/Config";
|
||||||
import { GitLabRepoConnection } from "../Connections";
|
import { GitLabRepoConnection } from "../Connections";
|
||||||
import { GrantChecker } from "../grants/GrantCheck";
|
import { GrantChecker } from "../grants/GrantCheck";
|
||||||
import { UserTokenStore } from "../UserTokenStore";
|
import { UserTokenStore } from "../UserTokenStore";
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
import { Appservice, Intent } from "matrix-bot-sdk";
|
import { Appservice, Intent } from "matrix-bot-sdk";
|
||||||
import { Logger } from "matrix-appservice-bridge";
|
import { Logger } from "matrix-appservice-bridge";
|
||||||
|
|
||||||
import { BridgeConfig } from "../Config/Config";
|
import { BridgeConfig } from "../config/Config";
|
||||||
|
|
||||||
const log = new Logger("BotUsersManager");
|
const log = new Logger("BotUsersManager");
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { BridgeConfig } from "./Config/Config";
|
import { BridgeConfig } from "./config/Config";
|
||||||
import { MessageQueue, createMessageQueue } from "./MessageQueue";
|
import { MessageQueue, createMessageQueue } from "./MessageQueue";
|
||||||
import { Appservice } from "matrix-bot-sdk";
|
import { Appservice } from "matrix-bot-sdk";
|
||||||
import { Logger } from "matrix-appservice-bridge";
|
import { Logger } from "matrix-appservice-bridge";
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { BridgeConfigQueue } from "../Config/Config";
|
import { BridgeConfigQueue } from "../config/Config";
|
||||||
import { LocalMQ } from "./LocalMQ";
|
import { LocalMQ } from "./LocalMQ";
|
||||||
import { RedisMQ } from "./RedisQueue";
|
import { RedisMQ } from "./RedisQueue";
|
||||||
import { MessageQueue } from "./Types";
|
import { MessageQueue } from "./Types";
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
|
|
||||||
import { MessageQueue, MessageQueueMessage, DEFAULT_RES_TIMEOUT, MessageQueueMessageOut } from "./Types";
|
import { MessageQueue, MessageQueueMessage, DEFAULT_RES_TIMEOUT, MessageQueueMessageOut } from "./Types";
|
||||||
import { Redis, default as redis } from "ioredis";
|
import { Redis, default as redis } from "ioredis";
|
||||||
import { BridgeConfigQueue } from "../Config/Config";
|
import { BridgeConfigQueue } from "../config/Config";
|
||||||
import { EventEmitter } from "events";
|
import { EventEmitter } from "events";
|
||||||
import { Logger } from "matrix-appservice-bridge";
|
import { Logger } from "matrix-appservice-bridge";
|
||||||
import { randomUUID } from 'node:crypto';
|
import { randomUUID } from 'node:crypto';
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
import { Octokit, RestEndpointMethodTypes } from "@octokit/rest";
|
import { Octokit, RestEndpointMethodTypes } from "@octokit/rest";
|
||||||
import { EventEmitter } from "events";
|
import { EventEmitter } from "events";
|
||||||
import { GithubInstance } from "../Github/GithubInstance";
|
import { GithubInstance } from "../github/GithubInstance";
|
||||||
import { GitHubUserNotification as HSGitHubUserNotification } from "../Github/Types";
|
import { GitHubUserNotification as HSGitHubUserNotification } from "../github/Types";
|
||||||
import { Logger } from "matrix-appservice-bridge";
|
import { Logger } from "matrix-appservice-bridge";
|
||||||
import { NotificationWatcherTask } from "./NotificationWatcherTask";
|
import { NotificationWatcherTask } from "./NotificationWatcherTask";
|
||||||
import { RequestError } from "@octokit/request-error";
|
import { RequestError } from "@octokit/request-error";
|
||||||
|
@ -4,9 +4,9 @@ import { createMessageQueue, MessageQueue, MessageQueueMessage } from "../Messag
|
|||||||
import { MessageSenderClient } from "../MatrixSender";
|
import { MessageSenderClient } from "../MatrixSender";
|
||||||
import { NotificationWatcherTask } from "./NotificationWatcherTask";
|
import { NotificationWatcherTask } from "./NotificationWatcherTask";
|
||||||
import { GitHubWatcher } from "./GitHubWatcher";
|
import { GitHubWatcher } from "./GitHubWatcher";
|
||||||
import { GitHubUserNotification } from "../Github/Types";
|
import { GitHubUserNotification } from "../github/Types";
|
||||||
import { GitLabWatcher } from "./GitLabWatcher";
|
import { GitLabWatcher } from "./GitLabWatcher";
|
||||||
import { BridgeConfig, BridgePermissionLevel } from "../Config/Config";
|
import { BridgeConfig, BridgePermissionLevel } from "../config/Config";
|
||||||
import Metrics from "../Metrics";
|
import Metrics from "../Metrics";
|
||||||
export interface UserNotificationsEvent {
|
export interface UserNotificationsEvent {
|
||||||
roomId: string;
|
roomId: string;
|
||||||
|
@ -5,8 +5,8 @@ import { Logger } from "matrix-appservice-bridge";
|
|||||||
import { AdminRoom } from "./AdminRoom";
|
import { AdminRoom } from "./AdminRoom";
|
||||||
import markdown from "markdown-it";
|
import markdown from "markdown-it";
|
||||||
import { FormatUtil } from "./FormatUtil";
|
import { FormatUtil } from "./FormatUtil";
|
||||||
import { PullGetResponseData, IssuesGetResponseData, PullsListRequestedReviewersResponseData, PullsListReviewsResponseData, IssuesGetCommentResponseData } from "./Github/Types";
|
import { PullGetResponseData, IssuesGetResponseData, PullsListRequestedReviewersResponseData, PullsListReviewsResponseData, IssuesGetCommentResponseData } from "./github/Types";
|
||||||
import { GitHubUserNotification } from "./Github/Types";
|
import { GitHubUserNotification } from "./github/Types";
|
||||||
import { components } from "@octokit/openapi-types/types";
|
import { components } from "@octokit/openapi-types/types";
|
||||||
import { NotifFilter } from "./NotificationFilters";
|
import { NotifFilter } from "./NotificationFilters";
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import { MemoryStorageProvider as MSP } from "matrix-bot-sdk";
|
import { MemoryStorageProvider as MSP } from "matrix-bot-sdk";
|
||||||
import { IBridgeStorageProvider } from "./StorageProvider";
|
import { IBridgeStorageProvider } from "./StorageProvider";
|
||||||
import { IssuesGetResponseData } from "../Github/Types";
|
import { IssuesGetResponseData } from "../github/Types";
|
||||||
import { ProvisionSession } from "matrix-appservice-bridge";
|
import { ProvisionSession } from "matrix-appservice-bridge";
|
||||||
import QuickLRU from "@alloc/quick-lru";
|
import QuickLRU from "@alloc/quick-lru";
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { IssuesGetResponseData } from "../Github/Types";
|
import { IssuesGetResponseData } from "../github/Types";
|
||||||
import { Redis, default as redis } from "ioredis";
|
import { Redis, default as redis } from "ioredis";
|
||||||
import { Logger } from "matrix-appservice-bridge";
|
import { Logger } from "matrix-appservice-bridge";
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import { ProvisioningStore } from "matrix-appservice-bridge";
|
import { ProvisioningStore } from "matrix-appservice-bridge";
|
||||||
import { IAppserviceStorageProvider, IStorageProvider } from "matrix-bot-sdk";
|
import { IAppserviceStorageProvider, IStorageProvider } from "matrix-bot-sdk";
|
||||||
import { IssuesGetResponseData } from "../Github/Types";
|
import { IssuesGetResponseData } from "../github/Types";
|
||||||
|
|
||||||
export interface IBridgeStorageProvider extends IAppserviceStorageProvider, IStorageProvider, ProvisioningStore {
|
export interface IBridgeStorageProvider extends IAppserviceStorageProvider, IStorageProvider, ProvisioningStore {
|
||||||
connect?(): Promise<void>;
|
connect?(): Promise<void>;
|
||||||
|
@ -1,20 +1,20 @@
|
|||||||
import { GithubInstance } from "./Github/GithubInstance";
|
import { GithubInstance } from "./github/GithubInstance";
|
||||||
import { GitLabClient } from "./Gitlab/Client";
|
import { GitLabClient } from "./Gitlab/Client";
|
||||||
import { Intent } from "matrix-bot-sdk";
|
import { Intent } from "matrix-bot-sdk";
|
||||||
import { promises as fs } from "fs";
|
import { promises as fs } from "fs";
|
||||||
import { publicEncrypt, privateDecrypt } from "crypto";
|
import { publicEncrypt, privateDecrypt } from "crypto";
|
||||||
import { Logger } from "matrix-appservice-bridge";
|
import { Logger } from "matrix-appservice-bridge";
|
||||||
import { isJiraCloudInstance, JiraClient } from "./Jira/Client";
|
import { isJiraCloudInstance, JiraClient } from "./jira/Client";
|
||||||
import { JiraStoredToken } from "./Jira/Types";
|
import { JiraStoredToken } from "./jira/Types";
|
||||||
import { BridgeConfig, BridgeConfigJira, BridgeConfigJiraOnPremOAuth, BridgePermissionLevel } from "./Config/Config";
|
import { BridgeConfig, BridgeConfigJira, BridgeConfigJiraOnPremOAuth, BridgePermissionLevel } from "./config/Config";
|
||||||
import { randomUUID } from 'node:crypto';
|
import { randomUUID } from 'node:crypto';
|
||||||
import { GitHubOAuthToken } from "./Github/Types";
|
import { GitHubOAuthToken } from "./github/Types";
|
||||||
import { ApiError, ErrCode } from "./api";
|
import { ApiError, ErrCode } from "./api";
|
||||||
import { JiraOAuth } from "./Jira/OAuth";
|
import { JiraOAuth } from "./jira/OAuth";
|
||||||
import { JiraCloudOAuth } from "./Jira/oauth/CloudOAuth";
|
import { JiraCloudOAuth } from "./jira/oauth/CloudOAuth";
|
||||||
import { JiraOnPremOAuth } from "./Jira/oauth/OnPremOAuth";
|
import { JiraOnPremOAuth } from "./jira/oauth/OnPremOAuth";
|
||||||
import { JiraOnPremClient } from "./Jira/client/OnPremClient";
|
import { JiraOnPremClient } from "./jira/client/OnPremClient";
|
||||||
import { JiraCloudClient } from "./Jira/client/CloudClient";
|
import { JiraCloudClient } from "./jira/client/CloudClient";
|
||||||
import { TokenError, TokenErrorCode } from "./errors";
|
import { TokenError, TokenErrorCode } from "./errors";
|
||||||
import { TypedEmitter } from "tiny-typed-emitter";
|
import { TypedEmitter } from "tiny-typed-emitter";
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* eslint-disable camelcase */
|
/* eslint-disable camelcase */
|
||||||
import { BridgeConfig } from "./Config/Config";
|
import { BridgeConfig } from "./config/Config";
|
||||||
import { Router, default as express, Request, Response } from "express";
|
import { Router, default as express, Request, Response } from "express";
|
||||||
import { EventEmitter } from "events";
|
import { EventEmitter } from "events";
|
||||||
import { MessageQueue, createMessageQueue } from "./MessageQueue";
|
import { MessageQueue, createMessageQueue } from "./MessageQueue";
|
||||||
@ -8,14 +8,14 @@ import qs from "querystring";
|
|||||||
import axios from "axios";
|
import axios from "axios";
|
||||||
import { IGitLabWebhookEvent, IGitLabWebhookIssueStateEvent, IGitLabWebhookMREvent, IGitLabWebhookReleaseEvent } from "./Gitlab/WebhookTypes";
|
import { IGitLabWebhookEvent, IGitLabWebhookIssueStateEvent, IGitLabWebhookMREvent, IGitLabWebhookReleaseEvent } from "./Gitlab/WebhookTypes";
|
||||||
import { EmitterWebhookEvent, EmitterWebhookEventName, Webhooks as OctokitWebhooks } from "@octokit/webhooks"
|
import { EmitterWebhookEvent, EmitterWebhookEventName, Webhooks as OctokitWebhooks } from "@octokit/webhooks"
|
||||||
import { IJiraWebhookEvent } from "./Jira/WebhookTypes";
|
import { IJiraWebhookEvent } from "./jira/WebhookTypes";
|
||||||
import { JiraWebhooksRouter } from "./Jira/Router";
|
import { JiraWebhooksRouter } from "./jira/Router";
|
||||||
import { OAuthRequest } from "./WebhookTypes";
|
import { OAuthRequest } from "./WebhookTypes";
|
||||||
import { GitHubOAuthTokenResponse } from "./Github/Types";
|
import { GitHubOAuthTokenResponse } from "./github/Types";
|
||||||
import Metrics from "./Metrics";
|
import Metrics from "./Metrics";
|
||||||
import { FigmaWebhooksRouter } from "./figma/router";
|
import { FigmaWebhooksRouter } from "./figma/router";
|
||||||
import { GenericWebhooksRouter } from "./generic/Router";
|
import { GenericWebhooksRouter } from "./generic/Router";
|
||||||
import { GithubInstance } from "./Github/GithubInstance";
|
import { GithubInstance } from "./github/GithubInstance";
|
||||||
import QuickLRU from "@alloc/quick-lru";
|
import QuickLRU from "@alloc/quick-lru";
|
||||||
|
|
||||||
const log = new Logger("Webhooks");
|
const log = new Logger("Webhooks");
|
||||||
|
@ -2,7 +2,7 @@ import { Application, NextFunction, Response } from "express";
|
|||||||
import { AdminRoom } from "../AdminRoom";
|
import { AdminRoom } from "../AdminRoom";
|
||||||
import { Logger } from "matrix-appservice-bridge";
|
import { Logger } from "matrix-appservice-bridge";
|
||||||
import { ApiError, ErrCode } from "../api";
|
import { ApiError, ErrCode } from "../api";
|
||||||
import { BridgeConfig } from "../Config/Config";
|
import { BridgeConfig } from "../config/Config";
|
||||||
import { GetAuthPollResponse, GetAuthResponse, GetConnectionsForServiceResponse } from "./BridgeWidgetInterface";
|
import { GetAuthPollResponse, GetAuthResponse, GetConnectionsForServiceResponse } from "./BridgeWidgetInterface";
|
||||||
import { ProvisioningApi, ProvisioningRequest } from "matrix-appservice-bridge";
|
import { ProvisioningApi, ProvisioningRequest } from "matrix-appservice-bridge";
|
||||||
import { IBridgeStorageProvider } from "../Stores/StorageProvider";
|
import { IBridgeStorageProvider } from "../Stores/StorageProvider";
|
||||||
@ -12,7 +12,7 @@ import { assertUserPermissionsInRoom, GetConnectionsResponseItem } from "../prov
|
|||||||
import { Appservice, PowerLevelsEvent } from "matrix-bot-sdk";
|
import { Appservice, PowerLevelsEvent } from "matrix-bot-sdk";
|
||||||
import { GoNebMigrator } from "./GoNebMigrator";
|
import { GoNebMigrator } from "./GoNebMigrator";
|
||||||
import { StatusCodes } from "http-status-codes";
|
import { StatusCodes } from "http-status-codes";
|
||||||
import { GithubInstance } from '../Github/GithubInstance';
|
import { GithubInstance } from '../github/GithubInstance';
|
||||||
import { AllowedTokenTypes, TokenType, UserTokenStore } from '../UserTokenStore';
|
import { AllowedTokenTypes, TokenType, UserTokenStore } from '../UserTokenStore';
|
||||||
|
|
||||||
const log = new Logger("BridgeWidgetApi");
|
const log = new Logger("BridgeWidgetApi");
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
|
|
||||||
import { Intent } from "matrix-bot-sdk";
|
import { Intent } from "matrix-bot-sdk";
|
||||||
import { BridgeWidgetConfig } from "../Config/Config";
|
import { BridgeWidgetConfig } from "../config/Config";
|
||||||
import { Logger } from "matrix-appservice-bridge";
|
import { Logger } from "matrix-appservice-bridge";
|
||||||
import { CommandError } from "../errors";
|
import { CommandError } from "../errors";
|
||||||
import { HookshotWidgetKind } from "./WidgetKind";
|
import { HookshotWidgetKind } from "./WidgetKind";
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import { Logger } from "matrix-appservice-bridge";
|
import { Logger } from "matrix-appservice-bridge";
|
||||||
import { Appservice, IAppserviceCryptoStorageProvider, IAppserviceRegistration, RustSdkAppserviceCryptoStorageProvider, RustSdkCryptoStoreType } from "matrix-bot-sdk";
|
import { Appservice, IAppserviceCryptoStorageProvider, IAppserviceRegistration, RustSdkAppserviceCryptoStorageProvider, RustSdkCryptoStoreType } from "matrix-bot-sdk";
|
||||||
import { BridgeConfig } from "./Config/Config";
|
import { BridgeConfig } from "./config/Config";
|
||||||
import Metrics from "./Metrics";
|
import Metrics from "./Metrics";
|
||||||
import { MemoryStorageProvider } from "./Stores/MemoryStorageProvider";
|
import { MemoryStorageProvider } from "./Stores/MemoryStorageProvider";
|
||||||
import { RedisStorageProvider } from "./Stores/RedisStorageProvider";
|
import { RedisStorageProvider } from "./Stores/RedisStorageProvider";
|
||||||
|
@ -8,7 +8,7 @@ import { GitHubRepoConnectionOptions } from "../Connections/GithubRepo";
|
|||||||
import { BridgeConfigActorPermission, BridgePermissions } from "../libRs";
|
import { BridgeConfigActorPermission, BridgePermissions } from "../libRs";
|
||||||
import { ConfigError } from "../errors";
|
import { ConfigError } from "../errors";
|
||||||
import { ApiError, ErrCode } from "../api";
|
import { ApiError, ErrCode } from "../api";
|
||||||
import { GithubInstance, GITHUB_CLOUD_URL } from "../Github/GithubInstance";
|
import { GithubInstance, GITHUB_CLOUD_URL } from "../github/GithubInstance";
|
||||||
import { Logger } from "matrix-appservice-bridge";
|
import { Logger } from "matrix-appservice-bridge";
|
||||||
|
|
||||||
const log = new Logger("Config");
|
const log = new Logger("Config");
|
@ -42,13 +42,13 @@ impl BridgePermissions {
|
|||||||
pub fn new(config: Vec<BridgeConfigActorPermission>) -> Self {
|
pub fn new(config: Vec<BridgeConfigActorPermission>) -> Self {
|
||||||
let mut room_membership = HashMap::new();
|
let mut room_membership = HashMap::new();
|
||||||
for entry in config.iter() {
|
for entry in config.iter() {
|
||||||
if entry.actor.starts_with("!") {
|
if entry.actor.starts_with('!') {
|
||||||
room_membership.insert(entry.actor.clone(), HashSet::new());
|
room_membership.insert(entry.actor.clone(), HashSet::new());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
BridgePermissions {
|
BridgePermissions {
|
||||||
config: config,
|
config,
|
||||||
room_membership: room_membership,
|
room_membership,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -58,7 +58,7 @@ impl BridgePermissions {
|
|||||||
domain: &String,
|
domain: &String,
|
||||||
mxid: &String,
|
mxid: &String,
|
||||||
) -> bool {
|
) -> bool {
|
||||||
if actor_permission.actor.starts_with("!") {
|
if actor_permission.actor.starts_with('!') {
|
||||||
match self.room_membership.get(&actor_permission.actor) {
|
match self.room_membership.get(&actor_permission.actor) {
|
||||||
Some(set) => {
|
Some(set) => {
|
||||||
return set.contains(mxid);
|
return set.contains(mxid);
|
||||||
@ -69,9 +69,9 @@ impl BridgePermissions {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return actor_permission.actor.eq(domain)
|
actor_permission.actor.eq(domain)
|
||||||
|| actor_permission.actor.eq(mxid)
|
|| actor_permission.actor.eq(mxid)
|
||||||
|| actor_permission.actor == "*";
|
|| actor_permission.actor == "*"
|
||||||
}
|
}
|
||||||
|
|
||||||
#[napi]
|
#[napi]
|
||||||
@ -81,21 +81,15 @@ impl BridgePermissions {
|
|||||||
|
|
||||||
#[napi]
|
#[napi]
|
||||||
pub fn add_member_to_cache(&mut self, room_id: String, mxid: String) {
|
pub fn add_member_to_cache(&mut self, room_id: String, mxid: String) {
|
||||||
match self.room_membership.get_mut(&room_id) {
|
if let Some(set) = self.room_membership.get_mut(&room_id) {
|
||||||
Some(set) => {
|
set.insert(mxid);
|
||||||
set.insert(mxid);
|
|
||||||
}
|
|
||||||
None => { /* Do nothing, not interested in this one. */ }
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[napi]
|
#[napi]
|
||||||
pub fn remove_member_from_cache(&mut self, room_id: String, mxid: String) {
|
pub fn remove_member_from_cache(&mut self, room_id: String, mxid: String) {
|
||||||
match self.room_membership.get_mut(&room_id) {
|
if let Some(set) = self.room_membership.get_mut(&room_id) {
|
||||||
Some(set) => {
|
set.remove(&mxid);
|
||||||
set.remove(&mxid);
|
|
||||||
}
|
|
||||||
None => { /* Do nothing, not interested in this one. */ }
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -107,13 +101,12 @@ impl BridgePermissions {
|
|||||||
permission: String,
|
permission: String,
|
||||||
) -> napi::Result<bool> {
|
) -> napi::Result<bool> {
|
||||||
let parts: Vec<&str> = mxid.split(':').collect();
|
let parts: Vec<&str> = mxid.split(':').collect();
|
||||||
let domain: String;
|
|
||||||
let permission_int = permission_level_to_int(permission)?;
|
let permission_int = permission_level_to_int(permission)?;
|
||||||
if parts.len() > 1 {
|
let domain = if parts.len() > 1 {
|
||||||
domain = parts[1].to_string();
|
parts[1].to_string()
|
||||||
} else {
|
} else {
|
||||||
domain = parts[0].to_string();
|
parts[0].to_string()
|
||||||
}
|
};
|
||||||
for actor_permission in self.config.iter() {
|
for actor_permission in self.config.iter() {
|
||||||
// Room_id
|
// Room_id
|
||||||
if !self.match_actor(actor_permission, &domain, &mxid) {
|
if !self.match_actor(actor_permission, &domain, &mxid) {
|
||||||
@ -139,13 +132,12 @@ impl BridgePermissions {
|
|||||||
#[napi]
|
#[napi]
|
||||||
pub fn check_action_any(&self, mxid: String, permission: String) -> napi::Result<bool> {
|
pub fn check_action_any(&self, mxid: String, permission: String) -> napi::Result<bool> {
|
||||||
let parts: Vec<&str> = mxid.split(':').collect();
|
let parts: Vec<&str> = mxid.split(':').collect();
|
||||||
let domain: String;
|
|
||||||
let permission_int = permission_level_to_int(permission)?;
|
let permission_int = permission_level_to_int(permission)?;
|
||||||
if parts.len() > 1 {
|
let domain = if parts.len() > 1 {
|
||||||
domain = parts[1].to_string();
|
parts[1].to_string()
|
||||||
} else {
|
} else {
|
||||||
domain = parts[0].to_string();
|
parts[0].to_string()
|
||||||
}
|
};
|
||||||
for actor_permission in self.config.iter() {
|
for actor_permission in self.config.iter() {
|
||||||
if !self.match_actor(actor_permission, &domain, &mxid) {
|
if !self.match_actor(actor_permission, &domain, &mxid) {
|
||||||
continue;
|
continue;
|
@ -1,5 +1,5 @@
|
|||||||
import { MatrixError } from "matrix-bot-sdk";
|
import { MatrixError } from "matrix-bot-sdk";
|
||||||
import { BridgeConfigFeeds } from "../Config/Config";
|
import { BridgeConfigFeeds } from "../config/Config";
|
||||||
import { ConnectionManager } from "../ConnectionManager";
|
import { ConnectionManager } from "../ConnectionManager";
|
||||||
import { FeedConnection } from "../Connections";
|
import { FeedConnection } from "../Connections";
|
||||||
import { Logger } from "matrix-appservice-bridge";
|
import { Logger } from "matrix-appservice-bridge";
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { BridgeConfigFigma } from "../Config/Config";
|
import { BridgeConfigFigma } from "../config/Config";
|
||||||
import * as Figma from 'figma-js';
|
import * as Figma from 'figma-js';
|
||||||
import { MatrixClient } from "matrix-bot-sdk";
|
import { MatrixClient } from "matrix-bot-sdk";
|
||||||
export * from "./router";
|
export * from "./router";
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { BridgeConfigFigma } from "../Config/Config";
|
import { BridgeConfigFigma } from "../config/Config";
|
||||||
import { MessageQueue } from "../MessageQueue";
|
import { MessageQueue } from "../MessageQueue";
|
||||||
import { Request, Response, Router, json } from "express";
|
import { Request, Response, Router, json } from "express";
|
||||||
import { FigmaPayload } from "./types";
|
import { FigmaPayload } from "./types";
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
use crate::Github::types::*;
|
use crate::github::types::*;
|
||||||
use crate::Jira;
|
use crate::jira;
|
||||||
use crate::Jira::types::{JiraIssue, JiraIssueLight, JiraIssueMessageBody, JiraIssueSimpleItem};
|
use crate::jira::types::{JiraIssue, JiraIssueLight, JiraIssueMessageBody, JiraIssueSimpleItem};
|
||||||
use contrast;
|
use contrast;
|
||||||
use md5::{Digest, Md5};
|
use md5::{Digest, Md5};
|
||||||
use napi::bindgen_prelude::*;
|
use napi::bindgen_prelude::*;
|
||||||
@ -23,29 +23,23 @@ pub struct MatrixMessageFormatResult {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn parse_rgb(input_color: String) -> Result<rgb::RGB8> {
|
fn parse_rgb(input_color: String) -> Result<rgb::RGB8> {
|
||||||
let chunk_size;
|
let color = if input_color.starts_with('#') {
|
||||||
let color;
|
|
||||||
if input_color.starts_with('#') {
|
|
||||||
let mut chars = input_color.chars();
|
let mut chars = input_color.chars();
|
||||||
chars.next();
|
chars.next();
|
||||||
color = String::from_iter(chars);
|
String::from_iter(chars)
|
||||||
} else {
|
} else {
|
||||||
color = input_color;
|
input_color
|
||||||
}
|
};
|
||||||
match color.len() {
|
let chunk_size = match color.len() {
|
||||||
6 => {
|
6 => 2,
|
||||||
chunk_size = 2;
|
3 => 1,
|
||||||
}
|
|
||||||
3 => {
|
|
||||||
chunk_size = 1;
|
|
||||||
}
|
|
||||||
_ => {
|
_ => {
|
||||||
return Err(Error::new(
|
return Err(Error::new(
|
||||||
Status::InvalidArg,
|
Status::InvalidArg,
|
||||||
format!("color '{}' is invalid", color),
|
format!("color '{}' is invalid", color),
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
let mut rgb = RGB::default();
|
let mut rgb = RGB::default();
|
||||||
let i = 0;
|
let i = 0;
|
||||||
for color_byte in color.as_bytes().chunks(chunk_size) {
|
for color_byte in color.as_bytes().chunks(chunk_size) {
|
||||||
@ -82,7 +76,7 @@ pub fn format_labels(array: Vec<IssueLabelDetail>) -> Result<MatrixMessageFormat
|
|||||||
for (i, label) in array.into_iter().enumerate() {
|
for (i, label) in array.into_iter().enumerate() {
|
||||||
if i != 0 {
|
if i != 0 {
|
||||||
plain.push_str(", ");
|
plain.push_str(", ");
|
||||||
html.push_str(" ");
|
html.push(' ');
|
||||||
}
|
}
|
||||||
plain.push_str(&label.name);
|
plain.push_str(&label.name);
|
||||||
|
|
||||||
@ -92,26 +86,23 @@ pub fn format_labels(array: Vec<IssueLabelDetail>) -> Result<MatrixMessageFormat
|
|||||||
write!(html, " data-mx-bg-color=\"#{}\"", color).unwrap();
|
write!(html, " data-mx-bg-color=\"#{}\"", color).unwrap();
|
||||||
// Determine the constrast
|
// Determine the constrast
|
||||||
let color_rgb = parse_rgb(color)?;
|
let color_rgb = parse_rgb(color)?;
|
||||||
let contrast_color;
|
let contrast_color =
|
||||||
if contrast::contrast::<u8, f32>(color_rgb, RGB::new(0, 0, 0)) > 4.5 {
|
if contrast::contrast::<u8, f32>(color_rgb, RGB::new(0, 0, 0)) > 4.5 {
|
||||||
contrast_color = "#000000";
|
"#000000"
|
||||||
} else {
|
} else {
|
||||||
contrast_color = "#FFFFFF";
|
"#FFFFFF"
|
||||||
}
|
};
|
||||||
write!(html, " data-mx-color=\"{}\"", contrast_color).unwrap();
|
write!(html, " data-mx-color=\"{}\"", contrast_color).unwrap();
|
||||||
}
|
}
|
||||||
if let Some(description) = label.description {
|
if let Some(description) = label.description {
|
||||||
write!(html, " title=\"{}\"", description).unwrap();
|
write!(html, " title=\"{}\"", description).unwrap();
|
||||||
}
|
}
|
||||||
html.push_str(">");
|
html.push('>');
|
||||||
html.push_str(&label.name);
|
html.push_str(&label.name);
|
||||||
html.push_str("</span>");
|
html.push_str("</span>");
|
||||||
}
|
}
|
||||||
|
|
||||||
Ok(MatrixMessageFormatResult {
|
Ok(MatrixMessageFormatResult { html, plain })
|
||||||
html: html,
|
|
||||||
plain: plain,
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Generate extra message content for GitHub repo related events
|
/// Generate extra message content for GitHub repo related events
|
||||||
@ -156,7 +147,7 @@ pub fn get_partial_body_for_jira_issue(jira_issue: JiraIssue) -> Result<JiraIssu
|
|||||||
_self: jira_issue._self,
|
_self: jira_issue._self,
|
||||||
key: jira_issue.key,
|
key: jira_issue.key,
|
||||||
};
|
};
|
||||||
let external_url = Jira::utils::generate_jira_web_link_from_issue(&light_issue)?;
|
let external_url = jira::utils::generate_jira_web_link_from_issue(&light_issue)?;
|
||||||
|
|
||||||
Ok(JiraIssueMessageBody {
|
Ok(JiraIssueMessageBody {
|
||||||
jira_issue: JiraIssueSimpleItem {
|
jira_issue: JiraIssueSimpleItem {
|
||||||
@ -169,7 +160,7 @@ pub fn get_partial_body_for_jira_issue(jira_issue: JiraIssue) -> Result<JiraIssu
|
|||||||
key: jira_issue.fields.project.key,
|
key: jira_issue.fields.project.key,
|
||||||
api_url: jira_issue.fields.project._self,
|
api_url: jira_issue.fields.project._self,
|
||||||
},
|
},
|
||||||
external_url: external_url,
|
external_url,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4,7 +4,7 @@ import { CommandError, TokenError, TokenErrorCode } from "../errors";
|
|||||||
import { GithubInstance } from "./GithubInstance";
|
import { GithubInstance } from "./GithubInstance";
|
||||||
import { GitHubOAuthToken } from "./Types";
|
import { GitHubOAuthToken } from "./Types";
|
||||||
import { Logger } from "matrix-appservice-bridge";
|
import { Logger } from "matrix-appservice-bridge";
|
||||||
import { BridgePermissionLevel } from "../Config/Config";
|
import { BridgePermissionLevel } from "../config/Config";
|
||||||
|
|
||||||
const log = new Logger('GitHubBotCommands');
|
const log = new Logger('GitHubBotCommands');
|
||||||
export class GitHubBotCommands extends AdminRoomCommandHandler {
|
export class GitHubBotCommands extends AdminRoomCommandHandler {
|
@ -1,5 +1,5 @@
|
|||||||
import { Router, Request, Response, NextFunction } from "express";
|
import { Router, Request, Response, NextFunction } from "express";
|
||||||
import { BridgeConfigGitHub } from "../Config/Config";
|
import { BridgeConfigGitHub } from "../config/Config";
|
||||||
import { ApiError, ErrCode } from "../api";
|
import { ApiError, ErrCode } from "../api";
|
||||||
import { UserTokenStore } from "../UserTokenStore";
|
import { UserTokenStore } from "../UserTokenStore";
|
||||||
import { Logger } from "matrix-appservice-bridge";
|
import { Logger } from "matrix-appservice-bridge";
|
@ -1,6 +1,6 @@
|
|||||||
import { Logger } from "matrix-appservice-bridge";
|
import { Logger } from "matrix-appservice-bridge";
|
||||||
import { Appservice, Intent, MatrixError } from "matrix-bot-sdk";
|
import { Appservice, Intent, MatrixError } from "matrix-bot-sdk";
|
||||||
import { BridgeConfig, BridgePermissionLevel } from "../Config/Config";
|
import { BridgeConfig, BridgePermissionLevel } from "../config/Config";
|
||||||
import { FormatUtil } from "../FormatUtil";
|
import { FormatUtil } from "../FormatUtil";
|
||||||
|
|
||||||
const GRANT_ACCOUNT_DATA_KEY = "uk.half-shot.matrix-hookshot.grant";
|
const GRANT_ACCOUNT_DATA_KEY = "uk.half-shot.matrix-hookshot.grant";
|
||||||
|
@ -2,7 +2,7 @@ import { AdminRoomCommandHandler, Category } from "../AdminRoomCommandHandler";
|
|||||||
import { botCommand } from "../BotCommands";
|
import { botCommand } from "../BotCommands";
|
||||||
import { JiraAPIAccessibleResource } from "./Types";
|
import { JiraAPIAccessibleResource } from "./Types";
|
||||||
import { Logger } from "matrix-appservice-bridge";
|
import { Logger } from "matrix-appservice-bridge";
|
||||||
import { BridgePermissionLevel } from "../Config/Config";
|
import { BridgePermissionLevel } from "../config/Config";
|
||||||
|
|
||||||
const log = new Logger('JiraBotCommands');
|
const log = new Logger('JiraBotCommands');
|
||||||
|
|
@ -1,4 +1,4 @@
|
|||||||
import { BridgeConfigJira } from "../Config/Config";
|
import { BridgeConfigJira } from "../config/Config";
|
||||||
import { MessageQueue } from "../MessageQueue";
|
import { MessageQueue } from "../MessageQueue";
|
||||||
import { Router, Request, Response, NextFunction, json } from "express";
|
import { Router, Request, Response, NextFunction, json } from "express";
|
||||||
import { UserTokenStore } from "../UserTokenStore";
|
import { UserTokenStore } from "../UserTokenStore";
|
@ -2,7 +2,7 @@
|
|||||||
import axios from 'axios';
|
import axios from 'axios';
|
||||||
import QuickLRU from "@alloc/quick-lru";
|
import QuickLRU from "@alloc/quick-lru";
|
||||||
import { JiraAPIAccessibleResource, JiraIssue, JiraOAuthResult, JiraProject, JiraCloudProjectSearchResponse, JiraStoredToken } from '../Types';
|
import { JiraAPIAccessibleResource, JiraIssue, JiraOAuthResult, JiraProject, JiraCloudProjectSearchResponse, JiraStoredToken } from '../Types';
|
||||||
import { BridgeConfigJira, BridgeConfigJiraCloudOAuth } from '../../Config/Config';
|
import { BridgeConfigJira, BridgeConfigJiraCloudOAuth } from '../../config/Config';
|
||||||
import { Logger } from "matrix-appservice-bridge";
|
import { Logger } from "matrix-appservice-bridge";
|
||||||
import { HookshotJiraApi, JiraClient } from '../Client';
|
import { HookshotJiraApi, JiraClient } from '../Client';
|
||||||
import JiraApi from 'jira-client';
|
import JiraApi from 'jira-client';
|
@ -1,6 +1,6 @@
|
|||||||
|
|
||||||
import { JiraAPIAccessibleResource, JiraProject, JiraStoredToken, JiraOnPremProjectSearchResponse } from '../Types';
|
import { JiraAPIAccessibleResource, JiraProject, JiraStoredToken, JiraOnPremProjectSearchResponse } from '../Types';
|
||||||
import { BridgeConfigJiraOnPremOAuth } from '../../Config/Config';
|
import { BridgeConfigJiraOnPremOAuth } from '../../config/Config';
|
||||||
import { decodeJiraToken } from '../OAuth';
|
import { decodeJiraToken } from '../OAuth';
|
||||||
import { KeyObject } from 'crypto';
|
import { KeyObject } from 'crypto';
|
||||||
import { HookshotJiraApi, JiraClient } from '../Client';
|
import { HookshotJiraApi, JiraClient } from '../Client';
|
@ -1,4 +1,4 @@
|
|||||||
import { BridgeConfigJiraCloudOAuth } from "../../Config/Config";
|
import { BridgeConfigJiraCloudOAuth } from "../../config/Config";
|
||||||
import { JiraOAuth } from "../OAuth";
|
import { JiraOAuth } from "../OAuth";
|
||||||
import qs from "querystring";
|
import qs from "querystring";
|
||||||
import axios from "axios";
|
import axios from "axios";
|
@ -1,4 +1,4 @@
|
|||||||
import { BridgeConfigJiraOnPremOAuth } from "../../Config/Config";
|
import { BridgeConfigJiraOnPremOAuth } from "../../config/Config";
|
||||||
import Axios, { Method } from "axios"
|
import Axios, { Method } from "axios"
|
||||||
import qs from "querystring";
|
import qs from "querystring";
|
||||||
import { createPrivateKey, createSign, KeyObject } from "crypto";
|
import { createPrivateKey, createSign, KeyObject } from "crypto";
|
@ -61,5 +61,6 @@ pub struct JiraVersion {
|
|||||||
pub id: String,
|
pub id: String,
|
||||||
pub description: String,
|
pub description: String,
|
||||||
pub name: String,
|
pub name: String,
|
||||||
pub projectId: String,
|
#[serde(rename = "projectId")]
|
||||||
|
pub project_id: String,
|
||||||
}
|
}
|
@ -6,7 +6,7 @@ use url::Url;
|
|||||||
/// Generate a URL for a given Jira Issue object.
|
/// Generate a URL for a given Jira Issue object.
|
||||||
#[napi(js_name = "generateJiraWeblinkFromIssue")]
|
#[napi(js_name = "generateJiraWeblinkFromIssue")]
|
||||||
pub fn js_generate_jira_web_link_from_issue(jira_issue: JiraIssueLight) -> Result<String> {
|
pub fn js_generate_jira_web_link_from_issue(jira_issue: JiraIssueLight) -> Result<String> {
|
||||||
return generate_jira_web_link_from_issue(&jira_issue);
|
generate_jira_web_link_from_issue(&jira_issue)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn generate_jira_web_link_from_issue(jira_issue: &JiraIssueLight) -> Result<String> {
|
pub fn generate_jira_web_link_from_issue(jira_issue: &JiraIssueLight) -> Result<String> {
|
||||||
@ -27,7 +27,7 @@ pub fn generate_jira_web_link_from_issue(jira_issue: &JiraIssueLight) -> Result<
|
|||||||
/// Generate a URL for a given Jira Version object.
|
/// Generate a URL for a given Jira Version object.
|
||||||
#[napi(js_name = "generateJiraWeblinkFromVersion")]
|
#[napi(js_name = "generateJiraWeblinkFromVersion")]
|
||||||
pub fn js_generate_jira_web_link_from_version(jira_version: JiraVersion) -> Result<String> {
|
pub fn js_generate_jira_web_link_from_version(jira_version: JiraVersion) -> Result<String> {
|
||||||
return generate_jira_web_link_from_version(&jira_version);
|
generate_jira_web_link_from_version(&jira_version)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn generate_jira_web_link_from_version(jira_version: &JiraVersion) -> Result<String> {
|
pub fn generate_jira_web_link_from_version(jira_version: &JiraVersion) -> Result<String> {
|
||||||
@ -39,7 +39,7 @@ pub fn generate_jira_web_link_from_version(jira_version: &JiraVersion) -> Result
|
|||||||
url.host_str().unwrap(),
|
url.host_str().unwrap(),
|
||||||
url.port()
|
url.port()
|
||||||
.map_or(String::new(), |port| format!(":{}", port)),
|
.map_or(String::new(), |port| format!(":{}", port)),
|
||||||
jira_version.projectId,
|
jira_version.project_id,
|
||||||
jira_version.id
|
jira_version.id
|
||||||
)),
|
)),
|
||||||
Err(err) => Err(Error::new(Status::Unknown, err.to_string())),
|
Err(err) => Err(Error::new(Status::Unknown, err.to_string())),
|
@ -1,8 +1,8 @@
|
|||||||
pub mod Config;
|
pub mod config;
|
||||||
pub mod Github;
|
|
||||||
pub mod Jira;
|
|
||||||
pub mod feeds;
|
pub mod feeds;
|
||||||
pub mod format_util;
|
pub mod format_util;
|
||||||
|
pub mod github;
|
||||||
|
pub mod jira;
|
||||||
|
|
||||||
#[macro_use]
|
#[macro_use]
|
||||||
extern crate napi_derive;
|
extern crate napi_derive;
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { BridgeConfigProvisioning } from "../Config/Config";
|
import { BridgeConfigProvisioning } from "../config/Config";
|
||||||
import { Router, default as express, NextFunction, Request, Response } from "express";
|
import { Router, default as express, NextFunction, Request, Response } from "express";
|
||||||
import { ConnectionManager } from "../ConnectionManager";
|
import { ConnectionManager } from "../ConnectionManager";
|
||||||
import { Logger } from "matrix-appservice-bridge";
|
import { Logger } from "matrix-appservice-bridge";
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/* eslint-disable @typescript-eslint/no-explicit-any */
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
||||||
import { expect } from "chai";
|
import { expect } from "chai";
|
||||||
import { AdminRoom } from "../src/AdminRoom";
|
import { AdminRoom } from "../src/AdminRoom";
|
||||||
import { DefaultConfig } from "../src/Config/Defaults";
|
import { DefaultConfig } from "../src/config/Defaults";
|
||||||
import { ConnectionManager } from "../src/ConnectionManager";
|
import { ConnectionManager } from "../src/ConnectionManager";
|
||||||
import { NotifFilter } from "../src/NotificationFilters";
|
import { NotifFilter } from "../src/NotificationFilters";
|
||||||
import { UserTokenStore } from "../src/UserTokenStore";
|
import { UserTokenStore } from "../src/UserTokenStore";
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
import { AxiosResponse, AxiosStatic } from "axios";
|
import { AxiosResponse, AxiosStatic } from "axios";
|
||||||
import { expect } from "chai";
|
import { expect } from "chai";
|
||||||
import EventEmitter from "events";
|
import EventEmitter from "events";
|
||||||
import { BridgeConfigFeeds } from "../src/Config/Config";
|
import { BridgeConfigFeeds } from "../src/config/Config";
|
||||||
import { ConnectionManager } from "../src/ConnectionManager";
|
import { ConnectionManager } from "../src/ConnectionManager";
|
||||||
import { IConnection } from "../src/Connections";
|
import { IConnection } from "../src/Connections";
|
||||||
import { FeedEntry, FeedReader } from "../src/feeds/FeedReader";
|
import { FeedEntry, FeedReader } from "../src/feeds/FeedReader";
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import { FormatUtil } from "../src/FormatUtil";
|
import { FormatUtil } from "../src/FormatUtil";
|
||||||
import { expect } from "chai";
|
import { expect } from "chai";
|
||||||
import { JiraIssue, JiraProject } from "../src/Jira/Types";
|
import { JiraIssue, JiraProject } from "../src/jira/Types";
|
||||||
|
|
||||||
const SIMPLE_ISSUE = {
|
const SIMPLE_ISSUE = {
|
||||||
id: 123,
|
id: 123,
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/* eslint-disable @typescript-eslint/no-explicit-any */
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
||||||
import { expect } from "chai";
|
import { expect } from "chai";
|
||||||
import { MatrixError } from "matrix-bot-sdk";
|
import { MatrixError } from "matrix-bot-sdk";
|
||||||
import { BridgeConfigGenericWebhooks, BridgeGenericWebhooksConfigYAML } from "../../src/Config/Config";
|
import { BridgeConfigGenericWebhooks, BridgeGenericWebhooksConfigYAML } from "../../src/config/Config";
|
||||||
import { GenericHookConnection, GenericHookConnectionState } from "../../src/Connections/GenericHook";
|
import { GenericHookConnection, GenericHookConnectionState } from "../../src/Connections/GenericHook";
|
||||||
import { MessageSenderClient, IMatrixSendMessage } from "../../src/MatrixSender";
|
import { MessageSenderClient, IMatrixSendMessage } from "../../src/MatrixSender";
|
||||||
import { LocalMQ } from "../../src/MessageQueue/LocalMQ";
|
import { LocalMQ } from "../../src/MessageQueue/LocalMQ";
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
import { GitHubRepoConnection, GitHubRepoConnectionState } from "../../src/Connections/GithubRepo"
|
import { GitHubRepoConnection, GitHubRepoConnectionState } from "../../src/Connections/GithubRepo"
|
||||||
import { GithubInstance } from "../../src/Github/GithubInstance";
|
import { GithubInstance } from "../../src/github/GithubInstance";
|
||||||
import { createMessageQueue } from "../../src/MessageQueue";
|
import { createMessageQueue } from "../../src/MessageQueue";
|
||||||
import { UserTokenStore } from "../../src/UserTokenStore";
|
import { UserTokenStore } from "../../src/UserTokenStore";
|
||||||
import { DefaultConfig } from "../../src/Config/Defaults";
|
import { DefaultConfig } from "../../src/config/Defaults";
|
||||||
import { AppserviceMock } from "../utils/AppserviceMock";
|
import { AppserviceMock } from "../utils/AppserviceMock";
|
||||||
import { ApiError, ErrCode, ValidatorApiError } from "../../src/api";
|
import { ApiError, ErrCode, ValidatorApiError } from "../../src/api";
|
||||||
import { expect } from "chai";
|
import { expect } from "chai";
|
||||||
|
@ -4,7 +4,7 @@ import { AppserviceMock } from "../utils/AppserviceMock";
|
|||||||
import { ApiError, ErrCode, ValidatorApiError } from "../../src/api";
|
import { ApiError, ErrCode, ValidatorApiError } from "../../src/api";
|
||||||
import { GitLabRepoConnection, GitLabRepoConnectionState } from "../../src/Connections";
|
import { GitLabRepoConnection, GitLabRepoConnectionState } from "../../src/Connections";
|
||||||
import { expect } from "chai";
|
import { expect } from "chai";
|
||||||
import { BridgeConfigGitLab } from "../../src/Config/Config";
|
import { BridgeConfigGitLab } from "../../src/config/Config";
|
||||||
|
|
||||||
const ROOM_ID = "!foo:bar";
|
const ROOM_ID = "!foo:bar";
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import { expect } from "chai";
|
import { expect } from "chai";
|
||||||
import { GithubInstance } from "../../src/Github/GithubInstance";
|
import { GithubInstance } from "../../src/github/GithubInstance";
|
||||||
import { GITHUB_CLOUD_URL } from "../../src/Github/GithubInstance";
|
import { GITHUB_CLOUD_URL } from "../../src/github/GithubInstance";
|
||||||
|
|
||||||
describe("GitHub", () => {
|
describe("GitHub", () => {
|
||||||
describe("AdminCommands", () => {
|
describe("AdminCommands", () => {
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import { expect } from "chai";
|
import { expect } from "chai";
|
||||||
import { BridgeConfig } from "../../src/Config/Config";
|
import { BridgeConfig } from "../../src/config/Config";
|
||||||
import { DefaultConfigRoot } from "../../src/Config/Defaults";
|
import { DefaultConfigRoot } from "../../src/config/Defaults";
|
||||||
import { FormatUtil } from "../../src/FormatUtil";
|
import { FormatUtil } from "../../src/FormatUtil";
|
||||||
import { ConfigGrantChecker, GrantChecker, GrantRejectedError } from '../../src/grants/GrantCheck';
|
import { ConfigGrantChecker, GrantChecker, GrantRejectedError } from '../../src/grants/GrantCheck';
|
||||||
import { AppserviceMock } from "../utils/AppserviceMock";
|
import { AppserviceMock } from "../utils/AppserviceMock";
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import { expect } from "chai";
|
import { expect } from "chai";
|
||||||
import { generateJiraWebLinkFromIssue } from "../../src/Jira";
|
import { generateJiraWebLinkFromIssue, generateJiraWebLinkFromVersion } from "../../src/jira";
|
||||||
|
|
||||||
describe("Jira", () => {
|
describe("Jira", () => {
|
||||||
describe("Utils", () => {
|
describe("Utils", () => {
|
||||||
@ -15,5 +15,14 @@ describe("Jira", () => {
|
|||||||
key: "TEST-111",
|
key: "TEST-111",
|
||||||
})).to.equal("https://my-test-jira:9995/browse/TEST-111");
|
})).to.equal("https://my-test-jira:9995/browse/TEST-111");
|
||||||
});
|
});
|
||||||
|
it("processes a jira issue into a URL with a port", () => {
|
||||||
|
expect(generateJiraWebLinkFromVersion({
|
||||||
|
self: "https://my-test-jira:9995/",
|
||||||
|
description: "foo",
|
||||||
|
name: "bar",
|
||||||
|
projectId: "TEST-111",
|
||||||
|
id: "v1.0.0",
|
||||||
|
})).to.equal("https://my-test-jira:9995/projects/TEST-111/versions/v1.0.0");
|
||||||
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
Loading…
x
Reference in New Issue
Block a user