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:
Will Hunt 2023-05-18 11:38:59 +01:00 committed by GitHub
parent 1c692bea8f
commit d772a4050c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
88 changed files with 177 additions and 183 deletions

View File

@ -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
View File

@ -0,0 +1 @@
Apply more Rust clippy suggestions, and run clippy in CI.

View File

@ -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",

View File

@ -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";

View File

@ -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";

View File

@ -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";

View File

@ -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";

View File

@ -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";

View File

@ -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";

View File

@ -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();

View File

@ -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";

View File

@ -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;

View File

@ -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";

View File

@ -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";

View File

@ -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';

View File

@ -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 {

View File

@ -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");

View File

@ -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;

View File

@ -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

View File

@ -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();

View File

@ -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");

View File

@ -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";

View File

@ -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";

View File

@ -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;

View File

@ -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" |

View File

@ -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";

View File

@ -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 {

View File

@ -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";

View File

@ -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";

View File

@ -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");

View File

@ -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";

View File

@ -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";

View File

@ -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';

View File

@ -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";

View File

@ -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;

View File

@ -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";

View File

@ -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";

View File

@ -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";

View File

@ -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>;

View File

@ -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";

View File

@ -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");

View File

@ -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");

View File

@ -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";

View File

@ -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";

View File

@ -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");

View File

@ -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;

View File

@ -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";

View File

@ -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";

View File

@ -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";

View File

@ -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,
}) })
} }

View File

@ -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 {

View File

@ -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";

View File

@ -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";

View File

@ -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');

View File

@ -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";

View File

@ -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';

View File

@ -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';

View File

@ -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";

View File

@ -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";

View File

@ -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,
} }

View File

@ -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())),

View File

@ -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;

View File

@ -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";

View File

@ -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";

View File

@ -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";

View File

@ -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,

View File

@ -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";

View File

@ -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";

View File

@ -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";

View File

@ -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", () => {

View File

@ -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";

View File

@ -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");
});
}); });
}); });