diff --git a/packages/backend/package.json b/packages/backend/package.json index 4bd3fe40..800d2504 100644 --- a/packages/backend/package.json +++ b/packages/backend/package.json @@ -22,8 +22,6 @@ "vitest": "^2.1.9" }, "dependencies": { - "@bull-board/api": "^6.13.0", - "@bull-board/express": "^6.13.0", "@coderabbitai/bitbucket": "^1.1.3", "@gitbeaker/rest": "^40.5.1", "@octokit/rest": "^21.0.2", diff --git a/packages/backend/src/git.ts b/packages/backend/src/git.ts index 21f30462..308f3f4a 100644 --- a/packages/backend/src/git.ts +++ b/packages/backend/src/git.ts @@ -104,9 +104,8 @@ export const fetchRepository = async ( signal?: AbortSignal } ) => { + const git = createGitClientForPath(path, onProgress, signal); try { - const git = createGitClientForPath(path, onProgress, signal); - if (authHeader) { await git.addConfig("http.extraHeader", authHeader); } @@ -129,12 +128,6 @@ export const fetchRepository = async ( } } finally { if (authHeader) { - const git = simpleGit({ - progress: onProgress, - }).cwd({ - path: path, - }) - await git.raw(["config", "--unset", "http.extraHeader", authHeader]); } } @@ -221,6 +214,10 @@ export const isPathAValidGitRepoRoot = async ({ onProgress?: onProgressFn, signal?: AbortSignal }) => { + if (!existsSync(path)) { + return false; + } + const git = createGitClientForPath(path, onProgress, signal); try { diff --git a/packages/backend/src/promClient.ts b/packages/backend/src/promClient.ts index 4b806f6e..ba2f3085 100644 --- a/packages/backend/src/promClient.ts +++ b/packages/backend/src/promClient.ts @@ -9,7 +9,7 @@ export class PromClient { private registry: Registry; private app: express.Application; private server: Server; - + public activeRepoIndexingJobs: Gauge; public pendingRepoIndexingJobs: Gauge; public repoIndexingReattemptsTotal: Counter; @@ -80,7 +80,7 @@ export class PromClient { help: 'The number of repo garbage collection fails', labelNames: ['repo'], }); - this.registry.registerMetric(this.repoGarbageCollectionFailTotal); + this.registry.registerMetric(this.repoGarbageCollectionFailTotal); this.repoGarbageCollectionSuccessTotal = new Counter({ name: 'repo_garbage_collection_successes', @@ -106,7 +106,12 @@ export class PromClient { }); } - dispose() { - this.server.close(); + async dispose() { + return new Promise((resolve, reject) => { + this.server.close((err) => { + if (err) reject(err); + else resolve(); + }); + }); } } \ No newline at end of file diff --git a/packages/backend/src/repoIndexManager.ts b/packages/backend/src/repoIndexManager.ts index 2f4e1031..29e07a2b 100644 --- a/packages/backend/src/repoIndexManager.ts +++ b/packages/backend/src/repoIndexManager.ts @@ -204,7 +204,7 @@ export class RepoIndexManager { for (const job of jobs) { await this.queue.add({ - groupId: `repo:${job.repoId}_${job.repo.name}`, + groupId: `repo:${job.repoId}`, data: { jobId: job.id, type, diff --git a/packages/web/src/app/[domain]/browse/[...path]/components/pureCodePreviewPanel.tsx b/packages/web/src/app/[domain]/browse/[...path]/components/pureCodePreviewPanel.tsx index b2398e9b..812e6d66 100644 --- a/packages/web/src/app/[domain]/browse/[...path]/components/pureCodePreviewPanel.tsx +++ b/packages/web/src/app/[domain]/browse/[...path]/components/pureCodePreviewPanel.tsx @@ -13,7 +13,8 @@ import { search } from "@codemirror/search"; import CodeMirror, { EditorSelection, EditorView, ReactCodeMirrorRef, SelectionRange, ViewUpdate } from "@uiw/react-codemirror"; import { useCallback, useEffect, useMemo, useState } from "react"; import { EditorContextMenu } from "../../../components/editorContextMenu"; -import { BrowseHighlightRange, HIGHLIGHT_RANGE_QUERY_PARAM, useBrowseNavigation } from "../../hooks/useBrowseNavigation"; +import { BrowseHighlightRange, useBrowseNavigation } from "../../hooks/useBrowseNavigation"; +import { HIGHLIGHT_RANGE_QUERY_PARAM } from "../../hooks/utils"; import { useBrowseState } from "../../hooks/useBrowseState"; import { rangeHighlightingExtension } from "./rangeHighlightingExtension"; import useCaptureEvent from "@/hooks/useCaptureEvent"; diff --git a/packages/web/src/app/[domain]/browse/hooks/useBrowseNavigation.ts b/packages/web/src/app/[domain]/browse/hooks/useBrowseNavigation.ts index c798a64c..0ab8e71c 100644 --- a/packages/web/src/app/[domain]/browse/hooks/useBrowseNavigation.ts +++ b/packages/web/src/app/[domain]/browse/hooks/useBrowseNavigation.ts @@ -3,28 +3,7 @@ import { useRouter } from "next/navigation"; import { useDomain } from "@/hooks/useDomain"; import { useCallback } from "react"; -import { BrowseState } from "../browseStateProvider"; -import { getBrowsePath } from "./utils"; - -export type BrowseHighlightRange = { - start: { lineNumber: number; column: number; }; - end: { lineNumber: number; column: number; }; -} | { - start: { lineNumber: number; }; - end: { lineNumber: number; }; -} - -export const HIGHLIGHT_RANGE_QUERY_PARAM = 'highlightRange'; - -export interface GetBrowsePathProps { - repoName: string; - revisionName?: string; - path: string; - pathType: 'blob' | 'tree'; - highlightRange?: BrowseHighlightRange; - setBrowseState?: Partial; - domain: string; -} +import { getBrowsePath, GetBrowsePathProps } from "./utils"; export const useBrowseNavigation = () => { const router = useRouter(); diff --git a/packages/web/src/app/[domain]/browse/hooks/useBrowsePath.ts b/packages/web/src/app/[domain]/browse/hooks/useBrowsePath.ts index d612a75c..2165025d 100644 --- a/packages/web/src/app/[domain]/browse/hooks/useBrowsePath.ts +++ b/packages/web/src/app/[domain]/browse/hooks/useBrowsePath.ts @@ -1,8 +1,7 @@ 'use client'; import { useMemo } from "react"; -import { GetBrowsePathProps } from "./useBrowseNavigation"; -import { getBrowsePath } from "./utils"; +import { getBrowsePath, GetBrowsePathProps } from "./utils"; import { useDomain } from "@/hooks/useDomain"; export const useBrowsePath = ({ diff --git a/packages/web/src/app/[domain]/browse/hooks/utils.ts b/packages/web/src/app/[domain]/browse/hooks/utils.ts index 5e10b6d8..804c3864 100644 --- a/packages/web/src/app/[domain]/browse/hooks/utils.ts +++ b/packages/web/src/app/[domain]/browse/hooks/utils.ts @@ -1,5 +1,24 @@ -import { SET_BROWSE_STATE_QUERY_PARAM } from "../browseStateProvider"; -import { GetBrowsePathProps, HIGHLIGHT_RANGE_QUERY_PARAM } from "./useBrowseNavigation"; +import { BrowseState, SET_BROWSE_STATE_QUERY_PARAM } from "../browseStateProvider"; + +export const HIGHLIGHT_RANGE_QUERY_PARAM = 'highlightRange'; + +export type BrowseHighlightRange = { + start: { lineNumber: number; column: number; }; + end: { lineNumber: number; column: number; }; +} | { + start: { lineNumber: number; }; + end: { lineNumber: number; }; +} + +export interface GetBrowsePathProps { + repoName: string; + revisionName?: string; + path: string; + pathType: 'blob' | 'tree'; + highlightRange?: BrowseHighlightRange; + setBrowseState?: Partial; + domain: string; +} export const getBrowseParamsFromPathParam = (pathParam: string) => { const sentinelIndex = pathParam.search(/\/-\/(tree|blob)/); @@ -67,3 +86,4 @@ export const getBrowsePath = ({ const browsePath = `/${domain}/browse/${repoName}@${revisionName}/-/${pathType}/${encodedPath}${params.size > 0 ? `?${params.toString()}` : ''}`; return browsePath; }; + diff --git a/packages/web/src/app/[domain]/components/editorContextMenu.tsx b/packages/web/src/app/[domain]/components/editorContextMenu.tsx index 102f9f89..091dba7e 100644 --- a/packages/web/src/app/[domain]/components/editorContextMenu.tsx +++ b/packages/web/src/app/[domain]/components/editorContextMenu.tsx @@ -9,7 +9,7 @@ import { Link2Icon } from "@radix-ui/react-icons"; import { EditorView, SelectionRange } from "@uiw/react-codemirror"; import { useCallback, useEffect, useRef } from "react"; import { useDomain } from "@/hooks/useDomain"; -import { HIGHLIGHT_RANGE_QUERY_PARAM } from "@/app/[domain]/browse/hooks/useBrowseNavigation"; +import { HIGHLIGHT_RANGE_QUERY_PARAM } from "../browse/hooks/utils"; interface ContextMenuProps { view: EditorView;