@thxgg/steward 0.1.16 → 0.1.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.output/nitro.json +1 -1
- package/.output/public/_nuxt/{CxHOXVf6.js → -z_Gr0GN.js} +1 -1
- package/.output/public/_nuxt/5LlyHjkF.js +60 -0
- package/.output/public/_nuxt/BA0u_CRT.js +1 -0
- package/.output/public/_nuxt/{Bibm_IDv.js → BA4e9-N5.js} +2 -2
- package/.output/public/_nuxt/{BSA0RJ-H.js → BO8EM227.js} +1 -1
- package/.output/public/_nuxt/C0XT5P3Q.js +1 -0
- package/.output/public/_nuxt/{BWVTacYj.js → CGzrvVc6.js} +1 -1
- package/.output/public/_nuxt/{Dum5qplW.js → CJlXUkTg.js} +1 -1
- package/.output/public/_nuxt/CZsXZugv.js +1 -0
- package/.output/public/_nuxt/{ynmyrfyT.js → C_HVaH3B.js} +1 -1
- package/.output/public/_nuxt/{wbjFvimm.js → DAnnHVQP.js} +1 -1
- package/.output/public/_nuxt/DEr8q68O.js +141 -0
- package/.output/public/_nuxt/Detail.DSyVQNdr.css +1 -0
- package/.output/public/_nuxt/DrXxYwWw.js +30 -0
- package/.output/public/_nuxt/QAzsKGuP.js +1 -0
- package/.output/public/_nuxt/TSsR_oCL.js +1 -0
- package/.output/public/_nuxt/WUF6Thhn.js +13 -0
- package/.output/public/_nuxt/_prd_.BkpxMFSV.css +1 -0
- package/.output/public/_nuxt/builds/latest.json +1 -1
- package/.output/public/_nuxt/builds/meta/19e0e040-a531-4c25-b46d-a6ca54a1ae3e.json +1 -0
- package/.output/public/_nuxt/i9wn3hS7.js +1 -0
- package/.output/server/chunks/_/git-api.mjs +101 -8
- package/.output/server/chunks/_/git-api.mjs.map +1 -1
- package/.output/server/chunks/_/git.mjs +3 -10
- package/.output/server/chunks/_/git.mjs.map +1 -1
- package/.output/server/chunks/_/prd-service.mjs +366 -0
- package/.output/server/chunks/_/prd-service.mjs.map +1 -0
- package/.output/server/chunks/_/repos.mjs +448 -0
- package/.output/server/chunks/_/repos.mjs.map +1 -0
- package/.output/server/chunks/_/task-graph.mjs +13 -14
- package/.output/server/chunks/_/task-graph.mjs.map +1 -1
- package/.output/server/chunks/_/watcher.mjs +54 -68
- package/.output/server/chunks/_/watcher.mjs.map +1 -1
- package/.output/server/chunks/build/{Detail-CUfU85GY.mjs → Detail-BQSkP9Zm.mjs} +170 -74
- package/.output/server/chunks/build/Detail-BQSkP9Zm.mjs.map +1 -0
- package/.output/server/chunks/build/DiffViewer-styles-1.mjs-BFsE2PCW.mjs +4 -0
- package/.output/server/chunks/build/DiffViewer-styles-1.mjs-BFsE2PCW.mjs.map +1 -0
- package/.output/server/chunks/build/DiffViewer-styles.D2bqX3nK.mjs +8 -0
- package/.output/server/chunks/build/DiffViewer-styles.D2bqX3nK.mjs.map +1 -0
- package/.output/server/chunks/build/DiffViewer-styles.FoV36wuV.mjs +10 -0
- package/.output/server/chunks/build/DiffViewer-styles.FoV36wuV.mjs.map +1 -0
- package/.output/server/chunks/build/Viewer-styles.D6wYWFb1.mjs +8 -0
- package/.output/server/chunks/build/Viewer-styles.D6wYWFb1.mjs.map +1 -0
- package/.output/server/chunks/build/{_prd_-CeVnQzOV.mjs → _prd_-CBR_wm9i.mjs} +73 -33
- package/.output/server/chunks/build/_prd_-CBR_wm9i.mjs.map +1 -0
- package/.output/server/chunks/build/client.precomputed.mjs +1 -1
- package/.output/server/chunks/build/{default-DWCOHHTE.mjs → default-Cao5eO80.mjs} +2 -3
- package/.output/server/chunks/build/default-Cao5eO80.mjs.map +1 -0
- package/.output/server/chunks/build/error-404-Bf6kdO80.mjs +0 -1
- package/.output/server/chunks/build/error-500-D_bcARXN.mjs +0 -1
- package/.output/server/chunks/build/{index-CckL_NBD.mjs → index-ByZO4Bvq.mjs} +2 -2
- package/.output/server/chunks/build/index-ByZO4Bvq.mjs.map +1 -0
- package/.output/server/chunks/build/{index-QVeSHT3L.mjs → index-ljj9uTXI.mjs} +6 -5
- package/.output/server/chunks/build/index-ljj9uTXI.mjs.map +1 -0
- package/.output/server/chunks/build/nuxt-link-SvT1nf8Z.mjs +1 -1
- package/.output/server/chunks/build/{repo-graph-CHNl58mY.mjs → repo-graph-CVnkmn8i.mjs} +23 -10
- package/.output/server/chunks/build/repo-graph-CVnkmn8i.mjs.map +1 -0
- package/.output/server/chunks/build/server.mjs +5 -6
- package/.output/server/chunks/build/styles.mjs +4 -4
- package/.output/server/chunks/build/{usePrd-SqcxGyFU.mjs → usePrd-f7ylhIqs.mjs} +10 -34
- package/.output/server/chunks/build/usePrd-f7ylhIqs.mjs.map +1 -0
- package/.output/server/chunks/nitro/nitro.mjs +614 -1211
- package/.output/server/chunks/nitro/nitro.mjs.map +1 -1
- package/.output/server/chunks/routes/api/browse.get.mjs +34 -10
- package/.output/server/chunks/routes/api/browse.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/index.get.mjs +3 -2
- package/.output/server/chunks/routes/api/index.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/index.post.mjs +22 -7
- package/.output/server/chunks/routes/api/index.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/repos/_repoId/git/commits.get.mjs +29 -23
- package/.output/server/chunks/routes/api/repos/_repoId/git/commits.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/repos/_repoId/git/diff.get.mjs +12 -7
- package/.output/server/chunks/routes/api/repos/_repoId/git/diff.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/repos/_repoId/git/file-content.get.mjs +32 -13
- package/.output/server/chunks/routes/api/repos/_repoId/git/file-content.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/repos/_repoId/git/file-diff.get.mjs +14 -14
- package/.output/server/chunks/routes/api/repos/_repoId/git/file-diff.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/repos/_repoId/graph.get.mjs +7 -2
- package/.output/server/chunks/routes/api/repos/_repoId/graph.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/repos/_repoId/prd/_prdSlug/graph.get.mjs +16 -2
- package/.output/server/chunks/routes/api/repos/_repoId/prd/_prdSlug/graph.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/repos/_repoId/prd/_prdSlug/progress.get.mjs +21 -9
- package/.output/server/chunks/routes/api/repos/_repoId/prd/_prdSlug/progress.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/repos/_repoId/prd/_prdSlug/tasks/_taskId/commits.get.mjs +21 -85
- package/.output/server/chunks/routes/api/repos/_repoId/prd/_prdSlug/tasks/_taskId/commits.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/repos/_repoId/prd/_prdSlug/tasks.get.mjs +21 -9
- package/.output/server/chunks/routes/api/repos/_repoId/prd/_prdSlug/tasks.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/repos/_repoId/prd/_prdSlug_.get.mjs +31 -50
- package/.output/server/chunks/routes/api/repos/_repoId/prd/_prdSlug_.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/repos/_repoId/prds.get.mjs +20 -49
- package/.output/server/chunks/routes/api/repos/_repoId/prds.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/repos/_repoId/refresh-git-repos.post.mjs +6 -13
- package/.output/server/chunks/routes/api/repos/_repoId/refresh-git-repos.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/repos/_repoId_.delete.mjs +3 -2
- package/.output/server/chunks/routes/api/repos/_repoId_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/runtime.get.mjs +1 -2
- package/.output/server/chunks/routes/api/runtime.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/watch.get.mjs +5 -4
- package/.output/server/chunks/routes/api/watch.get.mjs.map +1 -1
- package/.output/server/chunks/routes/renderer.mjs +1 -1
- package/.output/server/index.mjs +1 -2
- package/.output/server/index.mjs.map +1 -1
- package/.output/server/node_modules/zod/index.js +4 -0
- package/.output/server/node_modules/zod/package.json +118 -0
- package/.output/server/node_modules/zod/v3/ZodError.js +133 -0
- package/.output/server/node_modules/zod/v3/errors.js +9 -0
- package/.output/server/node_modules/zod/v3/external.js +6 -0
- package/.output/server/node_modules/zod/v3/helpers/errorUtil.js +6 -0
- package/.output/server/node_modules/zod/v3/helpers/parseUtil.js +109 -0
- package/.output/server/node_modules/zod/v3/helpers/typeAliases.js +1 -0
- package/.output/server/node_modules/zod/v3/helpers/util.js +133 -0
- package/.output/server/node_modules/zod/v3/locales/en.js +109 -0
- package/.output/server/node_modules/zod/v3/types.js +3693 -0
- package/.output/server/package.json +2 -1
- package/README.md +2 -2
- package/dist/host/src/api/prds.js +6 -172
- package/dist/host/src/api/repos.js +3 -18
- package/dist/host/src/api/state.js +8 -9
- package/dist/host/src/executor-runner.js +368 -0
- package/dist/host/src/executor.js +138 -260
- package/dist/host/src/mcp.js +27 -1
- package/dist/host/src/ui.js +14 -4
- package/dist/server/utils/change-events.js +33 -0
- package/dist/server/utils/git.js +11 -16
- package/dist/server/utils/prd-service.js +231 -0
- package/dist/server/utils/prd-state.js +54 -162
- package/dist/server/utils/repos.js +72 -17
- package/dist/server/utils/state-schema.js +61 -0
- package/dist/server/utils/task-graph.js +13 -13
- package/package.json +2 -1
- package/.output/public/_nuxt/CVJh28bx.js +0 -1
- package/.output/public/_nuxt/CyZuidLG.js +0 -60
- package/.output/public/_nuxt/D0op9E2g.js +0 -1
- package/.output/public/_nuxt/DX8awZaa.js +0 -1
- package/.output/public/_nuxt/Detail.z33AHKev.css +0 -1
- package/.output/public/_nuxt/DiTJUZOC.js +0 -1
- package/.output/public/_nuxt/T_3JE9C-.js +0 -1
- package/.output/public/_nuxt/WOI2tLsR.js +0 -42
- package/.output/public/_nuxt/_prd_.KTotLoF_.css +0 -1
- package/.output/public/_nuxt/builds/meta/029070b0-b8e2-4988-84f4-d0c9ff55c998.json +0 -1
- package/.output/public/_nuxt/odRGDGwj.js +0 -1
- package/.output/server/chunks/build/Detail-CUfU85GY.mjs.map +0 -1
- package/.output/server/chunks/build/DiffViewer-styles-1.mjs-CS8FTppg.mjs +0 -4
- package/.output/server/chunks/build/DiffViewer-styles-1.mjs-CS8FTppg.mjs.map +0 -1
- package/.output/server/chunks/build/DiffViewer-styles.AUfwwelI.mjs +0 -10
- package/.output/server/chunks/build/DiffViewer-styles.AUfwwelI.mjs.map +0 -1
- package/.output/server/chunks/build/DiffViewer-styles.D_it8zfk.mjs +0 -8
- package/.output/server/chunks/build/DiffViewer-styles.D_it8zfk.mjs.map +0 -1
- package/.output/server/chunks/build/Viewer-styles.CshnetGw.mjs +0 -8
- package/.output/server/chunks/build/Viewer-styles.CshnetGw.mjs.map +0 -1
- package/.output/server/chunks/build/_prd_-CeVnQzOV.mjs.map +0 -1
- package/.output/server/chunks/build/default-DWCOHHTE.mjs.map +0 -1
- package/.output/server/chunks/build/index-CckL_NBD.mjs.map +0 -1
- package/.output/server/chunks/build/index-QVeSHT3L.mjs.map +0 -1
- package/.output/server/chunks/build/repo-graph-CHNl58mY.mjs.map +0 -1
- package/.output/server/chunks/build/usePrd-SqcxGyFU.mjs.map +0 -1
|
@@ -5,11 +5,10 @@ import { Background } from '@vue-flow/background';
|
|
|
5
5
|
import { Controls } from '@vue-flow/controls';
|
|
6
6
|
import { MarkerType, VueFlow, Position, Handle } from '@vue-flow/core';
|
|
7
7
|
import { Loader2, AlertCircle, GitBranch, Circle, Clock3, CheckCircle2, AlertTriangle, Clock, ArrowLeft, Tag, ListOrdered, CheckSquare, Check, Link2, Diff, Calendar, ExternalLink, X, RefreshCw, Keyboard, FileDiff, FileCode, GitCommit, FileText, Plus, Minus, FolderGit2, ArrowRight, FileWarning, ChevronDown, Link, Link2Off, FileEdit, FileX, FilePlus } from 'lucide-vue-next';
|
|
8
|
-
import {
|
|
9
|
-
import { B as Button } from './index-CckL_NBD.mjs';
|
|
8
|
+
import { B as Button } from './index-ByZO4Bvq.mjs';
|
|
10
9
|
import { _ as _export_sfc } from './_plugin-vue_export-helper-1tPrXgE0.mjs';
|
|
11
10
|
import { Primitive, useForwardPropsEmits, DialogRoot, DialogPortal, DialogContent, DialogClose, DialogTitle, DialogDescription, Separator as Separator$1, DialogOverlay, TooltipProvider as TooltipProvider$1, TooltipRoot, TooltipTrigger as TooltipTrigger$1, TooltipPortal, TooltipContent as TooltipContent$1, TooltipArrow, ScrollAreaRoot, ScrollAreaViewport, ScrollAreaCorner, ScrollAreaScrollbar, ScrollAreaThumb, DialogTrigger } from 'reka-ui';
|
|
12
|
-
import { c as cn, b as useToast } from './usePrd-
|
|
11
|
+
import { c as cn, b as useToast } from './usePrd-f7ylhIqs.mjs';
|
|
13
12
|
import { cva } from 'class-variance-authority';
|
|
14
13
|
import { _ as __nuxt_component_0$3 } from './nuxt-link-SvT1nf8Z.mjs';
|
|
15
14
|
|
|
@@ -563,6 +562,8 @@ _sfc_main$k.setup = (props, ctx) => {
|
|
|
563
562
|
};
|
|
564
563
|
const __nuxt_component_0$1 = Object.assign(_sfc_main$k, { __name: "GitChangesMinimap" });
|
|
565
564
|
const LINE_LIMIT = 1e4;
|
|
565
|
+
const MAX_DIFF_HIGHLIGHT_LINES = 1500;
|
|
566
|
+
const MAX_FULL_FILE_HIGHLIGHT_LINES = 4e3;
|
|
566
567
|
const _sfc_main$j = /* @__PURE__ */ defineComponent({
|
|
567
568
|
__name: "DiffViewer",
|
|
568
569
|
__ssrInlineRender: true,
|
|
@@ -661,6 +662,14 @@ const _sfc_main$j = /* @__PURE__ */ defineComponent({
|
|
|
661
662
|
const language = computed(() => detectLanguage(props.filePath));
|
|
662
663
|
const highlightedLines = ref(/* @__PURE__ */ new Map());
|
|
663
664
|
const isLoading = ref(true);
|
|
665
|
+
const lineHighlightCache = /* @__PURE__ */ new Map();
|
|
666
|
+
let codeToHtmlLoader = null;
|
|
667
|
+
async function getCodeToHtml() {
|
|
668
|
+
if (!codeToHtmlLoader) {
|
|
669
|
+
codeToHtmlLoader = import('shiki').then((module) => module.codeToHtml);
|
|
670
|
+
}
|
|
671
|
+
return codeToHtmlLoader;
|
|
672
|
+
}
|
|
664
673
|
const displayItems = computed(() => {
|
|
665
674
|
const items = [];
|
|
666
675
|
for (let hunkIndex = 0; hunkIndex < props.hunks.length; hunkIndex++) {
|
|
@@ -747,7 +756,13 @@ const _sfc_main$j = /* @__PURE__ */ defineComponent({
|
|
|
747
756
|
if (!content.trim()) {
|
|
748
757
|
return "";
|
|
749
758
|
}
|
|
759
|
+
const cacheKey = `${lang}:${content}`;
|
|
760
|
+
const cached = lineHighlightCache.get(cacheKey);
|
|
761
|
+
if (cached !== void 0) {
|
|
762
|
+
return cached;
|
|
763
|
+
}
|
|
750
764
|
try {
|
|
765
|
+
const codeToHtml = await getCodeToHtml();
|
|
751
766
|
const html = await codeToHtml(content, {
|
|
752
767
|
lang,
|
|
753
768
|
themes: {
|
|
@@ -756,16 +771,25 @@ const _sfc_main$j = /* @__PURE__ */ defineComponent({
|
|
|
756
771
|
}
|
|
757
772
|
});
|
|
758
773
|
const codeMatch = html.match(/<code[^>]*>([\s\S]*?)<\/code>/);
|
|
759
|
-
|
|
774
|
+
const highlighted = codeMatch ? codeMatch[1] || "" : escapeHtml(content);
|
|
775
|
+
lineHighlightCache.set(cacheKey, highlighted);
|
|
776
|
+
return highlighted;
|
|
760
777
|
} catch {
|
|
761
|
-
|
|
778
|
+
const fallback = escapeHtml(content);
|
|
779
|
+
lineHighlightCache.set(cacheKey, fallback);
|
|
780
|
+
return fallback;
|
|
762
781
|
}
|
|
763
782
|
}
|
|
764
783
|
async function highlightFullContent(content, lang) {
|
|
765
784
|
if (!content) {
|
|
766
785
|
return [];
|
|
767
786
|
}
|
|
787
|
+
const lines = content.split("\n");
|
|
788
|
+
if (lines.length > MAX_FULL_FILE_HIGHLIGHT_LINES) {
|
|
789
|
+
return lines.map(escapeHtml);
|
|
790
|
+
}
|
|
768
791
|
try {
|
|
792
|
+
const codeToHtml = await getCodeToHtml();
|
|
769
793
|
const html = await codeToHtml(content, {
|
|
770
794
|
lang,
|
|
771
795
|
themes: {
|
|
@@ -775,12 +799,12 @@ const _sfc_main$j = /* @__PURE__ */ defineComponent({
|
|
|
775
799
|
});
|
|
776
800
|
const codeMatch = html.match(/<code[^>]*>([\s\S]*?)<\/code>/);
|
|
777
801
|
if (!codeMatch || !codeMatch[1]) {
|
|
778
|
-
return
|
|
802
|
+
return lines.map(escapeHtml);
|
|
779
803
|
}
|
|
780
804
|
const highlightedContent = codeMatch[1];
|
|
781
805
|
return highlightedContent.split("\n");
|
|
782
806
|
} catch {
|
|
783
|
-
return
|
|
807
|
+
return lines.map(escapeHtml);
|
|
784
808
|
}
|
|
785
809
|
}
|
|
786
810
|
function escapeHtml(text) {
|
|
@@ -836,9 +860,14 @@ const _sfc_main$j = /* @__PURE__ */ defineComponent({
|
|
|
836
860
|
}
|
|
837
861
|
}
|
|
838
862
|
}
|
|
863
|
+
const limitedLines = linesToHighlight.slice(0, MAX_DIFF_HIGHLIGHT_LINES);
|
|
864
|
+
const overflowLines = linesToHighlight.slice(MAX_DIFF_HIGHLIGHT_LINES);
|
|
865
|
+
for (const { key, content } of overflowLines) {
|
|
866
|
+
newHighlighted.set(key, escapeHtml(content));
|
|
867
|
+
}
|
|
839
868
|
const batchSize = 50;
|
|
840
|
-
for (let i = 0; i <
|
|
841
|
-
const batch =
|
|
869
|
+
for (let i = 0; i < limitedLines.length; i += batchSize) {
|
|
870
|
+
const batch = limitedLines.slice(i, i + batchSize);
|
|
842
871
|
const results = await Promise.all(
|
|
843
872
|
batch.map(async ({ key, content }) => {
|
|
844
873
|
const result = await highlightLine(content, lang);
|
|
@@ -862,21 +891,21 @@ const _sfc_main$j = /* @__PURE__ */ defineComponent({
|
|
|
862
891
|
return "context";
|
|
863
892
|
}
|
|
864
893
|
return (_ctx, _push, _parent, _attrs) => {
|
|
865
|
-
_push(`<div${ssrRenderAttrs(mergeProps({ class: "diff-viewer" }, _attrs))} data-v-
|
|
894
|
+
_push(`<div${ssrRenderAttrs(mergeProps({ class: "diff-viewer" }, _attrs))} data-v-a5da7e6e>`);
|
|
866
895
|
if ((unref(isLoading) || __props.isLoadingContent || unref(isLoadingFullFile)) && !__props.binary) {
|
|
867
|
-
_push(`<div class="flex items-center justify-center py-8" data-v-
|
|
896
|
+
_push(`<div class="flex items-center justify-center py-8" data-v-a5da7e6e><div class="size-6 animate-spin rounded-full border-2 border-primary border-t-transparent" data-v-a5da7e6e></div></div>`);
|
|
868
897
|
} else if (__props.binary) {
|
|
869
|
-
_push(`<div class="flex flex-col items-center justify-center gap-3 py-12 text-muted-foreground" data-v-
|
|
898
|
+
_push(`<div class="flex flex-col items-center justify-center gap-3 py-12 text-muted-foreground" data-v-a5da7e6e>`);
|
|
870
899
|
_push(ssrRenderComponent(unref(FileWarning), { class: "size-10 opacity-50" }, null, _parent));
|
|
871
|
-
_push(`<div class="text-center" data-v-
|
|
900
|
+
_push(`<div class="text-center" data-v-a5da7e6e><p class="font-medium" data-v-a5da7e6e>Binary file</p><p class="text-sm" data-v-a5da7e6e>This file cannot be displayed as a diff</p></div></div>`);
|
|
872
901
|
} else if (unref(isEmpty) && !__props.showFullFile) {
|
|
873
|
-
_push(`<div class="flex flex-col items-center justify-center gap-3 py-12 text-muted-foreground" data-v-
|
|
902
|
+
_push(`<div class="flex flex-col items-center justify-center gap-3 py-12 text-muted-foreground" data-v-a5da7e6e>`);
|
|
874
903
|
_push(ssrRenderComponent(unref(AlertTriangle), { class: "size-10 opacity-50" }, null, _parent));
|
|
875
|
-
_push(`<div class="text-center" data-v-
|
|
904
|
+
_push(`<div class="text-center" data-v-a5da7e6e><p class="font-medium" data-v-a5da7e6e>No changes</p><p class="text-sm" data-v-a5da7e6e>This file was touched but has no content changes</p></div></div>`);
|
|
876
905
|
} else if (unref(isLargeFile) && !unref(showAll) && !__props.showFullFile) {
|
|
877
|
-
_push(`<div class="diff-container" data-v-
|
|
906
|
+
_push(`<div class="diff-container" data-v-a5da7e6e><div class="flex flex-col items-center justify-center gap-3 border-b border-border bg-muted/30 py-6" data-v-a5da7e6e>`);
|
|
878
907
|
_push(ssrRenderComponent(unref(AlertTriangle), { class: "size-8 text-yellow-500" }, null, _parent));
|
|
879
|
-
_push(`<div class="text-center" data-v-
|
|
908
|
+
_push(`<div class="text-center" data-v-a5da7e6e><p class="font-medium" data-v-a5da7e6e>Large file</p><p class="text-sm text-muted-foreground" data-v-a5da7e6e> This file has ${ssrInterpolate(unref(totalLines).toLocaleString())} lines (threshold: ${ssrInterpolate(LINE_LIMIT.toLocaleString())}) </p></div>`);
|
|
880
909
|
_push(ssrRenderComponent(unref(Button), {
|
|
881
910
|
variant: "outline",
|
|
882
911
|
size: "sm",
|
|
@@ -897,15 +926,15 @@ const _sfc_main$j = /* @__PURE__ */ defineComponent({
|
|
|
897
926
|
}, _parent));
|
|
898
927
|
_push(`</div></div>`);
|
|
899
928
|
} else if (__props.showFullFile && __props.fileContent) {
|
|
900
|
-
_push(`<div class="diff-container" data-v-
|
|
929
|
+
_push(`<div class="diff-container" data-v-a5da7e6e><div class="full-file-view" data-v-a5da7e6e><!--[-->`);
|
|
901
930
|
ssrRenderList(unref(fullFileLines), (line, index) => {
|
|
902
931
|
_push(`<div class="${ssrRenderClass([{
|
|
903
932
|
"diff-add": getFullFileLineType(index + 1) === "add"
|
|
904
|
-
}, "full-file-line"])}" data-v-
|
|
933
|
+
}, "full-file-line"])}" data-v-a5da7e6e><div class="diff-gutter" data-v-a5da7e6e><span class="line-number" data-v-a5da7e6e>${ssrInterpolate(index + 1)}</span></div><div class="diff-content" data-v-a5da7e6e><span class="diff-code" data-v-a5da7e6e>${(unref(highlightedFullFile)[index] || escapeHtml(line)) ?? ""}</span></div></div>`);
|
|
905
934
|
});
|
|
906
935
|
_push(`<!--]--></div></div>`);
|
|
907
936
|
} else {
|
|
908
|
-
_push(`<div class="diff-container" data-v-
|
|
937
|
+
_push(`<div class="diff-container" data-v-a5da7e6e><div class="diff-toolbar" data-v-a5da7e6e>`);
|
|
909
938
|
_push(ssrRenderComponent(unref(Button), {
|
|
910
939
|
variant: "ghost",
|
|
911
940
|
size: "sm",
|
|
@@ -925,25 +954,25 @@ const _sfc_main$j = /* @__PURE__ */ defineComponent({
|
|
|
925
954
|
}),
|
|
926
955
|
_: 1
|
|
927
956
|
}, _parent));
|
|
928
|
-
_push(`</div><div class="diff-split" data-v-
|
|
957
|
+
_push(`</div><div class="diff-split" data-v-a5da7e6e><div class="diff-column diff-column-left" data-v-a5da7e6e><div class="diff-column-content" data-v-a5da7e6e><!--[-->`);
|
|
929
958
|
ssrRenderList(unref(displayItems), (item) => {
|
|
930
959
|
_push(`<!--[-->`);
|
|
931
960
|
if (item.type === "separator") {
|
|
932
|
-
_push(`<div class="diff-separator-half" data-v-
|
|
961
|
+
_push(`<div class="diff-separator-half" data-v-a5da7e6e><div class="separator-line" data-v-a5da7e6e></div><span class="separator-text" data-v-a5da7e6e>···</span></div>`);
|
|
933
962
|
} else if (item.pair) {
|
|
934
963
|
_push(`<div class="${ssrRenderClass([{
|
|
935
964
|
"diff-remove": item.pair.left.type === "remove",
|
|
936
965
|
"diff-empty": item.pair.left.type === "empty",
|
|
937
966
|
"diff-context": item.pair.left.type === "context"
|
|
938
|
-
}, "diff-line"])}" data-v-
|
|
967
|
+
}, "diff-line"])}" data-v-a5da7e6e><div class="diff-gutter" data-v-a5da7e6e>`);
|
|
939
968
|
if (item.pair.left.lineNum) {
|
|
940
|
-
_push(`<span class="line-number" data-v-
|
|
969
|
+
_push(`<span class="line-number" data-v-a5da7e6e>${ssrInterpolate(item.pair.left.lineNum)}</span>`);
|
|
941
970
|
} else {
|
|
942
971
|
_push(`<!---->`);
|
|
943
972
|
}
|
|
944
|
-
_push(`</div><div class="diff-content" data-v-
|
|
973
|
+
_push(`</div><div class="diff-content" data-v-a5da7e6e>`);
|
|
945
974
|
if (item.pair.left.type !== "empty") {
|
|
946
|
-
_push(`<span class="diff-code" data-v-
|
|
975
|
+
_push(`<span class="diff-code" data-v-a5da7e6e>${(getHighlightedContent(item.pair.id, "old") || escapeHtml(item.pair.left.content)) ?? ""}</span>`);
|
|
947
976
|
} else {
|
|
948
977
|
_push(`<!---->`);
|
|
949
978
|
}
|
|
@@ -953,25 +982,25 @@ const _sfc_main$j = /* @__PURE__ */ defineComponent({
|
|
|
953
982
|
}
|
|
954
983
|
_push(`<!--]-->`);
|
|
955
984
|
});
|
|
956
|
-
_push(`<!--]--></div></div><div class="diff-column diff-column-right" data-v-
|
|
985
|
+
_push(`<!--]--></div></div><div class="diff-column diff-column-right" data-v-a5da7e6e><div class="diff-column-content" data-v-a5da7e6e><!--[-->`);
|
|
957
986
|
ssrRenderList(unref(displayItems), (item) => {
|
|
958
987
|
_push(`<!--[-->`);
|
|
959
988
|
if (item.type === "separator") {
|
|
960
|
-
_push(`<div class="diff-separator-half" data-v-
|
|
989
|
+
_push(`<div class="diff-separator-half" data-v-a5da7e6e><span class="separator-text" data-v-a5da7e6e>···</span><div class="separator-line" data-v-a5da7e6e></div></div>`);
|
|
961
990
|
} else if (item.pair) {
|
|
962
991
|
_push(`<div class="${ssrRenderClass([{
|
|
963
992
|
"diff-add": item.pair.right.type === "add",
|
|
964
993
|
"diff-empty": item.pair.right.type === "empty",
|
|
965
994
|
"diff-context": item.pair.right.type === "context"
|
|
966
|
-
}, "diff-line"])}" data-v-
|
|
995
|
+
}, "diff-line"])}" data-v-a5da7e6e><div class="diff-gutter" data-v-a5da7e6e>`);
|
|
967
996
|
if (item.pair.right.lineNum) {
|
|
968
|
-
_push(`<span class="line-number" data-v-
|
|
997
|
+
_push(`<span class="line-number" data-v-a5da7e6e>${ssrInterpolate(item.pair.right.lineNum)}</span>`);
|
|
969
998
|
} else {
|
|
970
999
|
_push(`<!---->`);
|
|
971
1000
|
}
|
|
972
|
-
_push(`</div><div class="diff-content" data-v-
|
|
1001
|
+
_push(`</div><div class="diff-content" data-v-a5da7e6e>`);
|
|
973
1002
|
if (item.pair.right.type !== "empty") {
|
|
974
|
-
_push(`<span class="diff-code" data-v-
|
|
1003
|
+
_push(`<span class="diff-code" data-v-a5da7e6e>${(getHighlightedContent(item.pair.id, "new") || escapeHtml(item.pair.right.content)) ?? ""}</span>`);
|
|
975
1004
|
} else {
|
|
976
1005
|
_push(`<!---->`);
|
|
977
1006
|
}
|
|
@@ -993,7 +1022,7 @@ _sfc_main$j.setup = (props, ctx) => {
|
|
|
993
1022
|
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/git/DiffViewer.vue");
|
|
994
1023
|
return _sfc_setup$j ? _sfc_setup$j(props, ctx) : void 0;
|
|
995
1024
|
};
|
|
996
|
-
const __nuxt_component_1$2 = /* @__PURE__ */ Object.assign(_export_sfc(_sfc_main$j, [["__scopeId", "data-v-
|
|
1025
|
+
const __nuxt_component_1$2 = /* @__PURE__ */ Object.assign(_export_sfc(_sfc_main$j, [["__scopeId", "data-v-a5da7e6e"]]), { __name: "GitDiffViewer" });
|
|
997
1026
|
const _sfc_main$i = /* @__PURE__ */ defineComponent({
|
|
998
1027
|
__name: "ScrollBar",
|
|
999
1028
|
__ssrInlineRender: true,
|
|
@@ -1350,7 +1379,7 @@ function useGit() {
|
|
|
1350
1379
|
return files;
|
|
1351
1380
|
} catch (error) {
|
|
1352
1381
|
showError("Failed to fetch diff", getErrorMessage(error));
|
|
1353
|
-
|
|
1382
|
+
throw error;
|
|
1354
1383
|
} finally {
|
|
1355
1384
|
isLoadingDiff.value = false;
|
|
1356
1385
|
}
|
|
@@ -1372,7 +1401,7 @@ function useGit() {
|
|
|
1372
1401
|
return hunks;
|
|
1373
1402
|
} catch (error) {
|
|
1374
1403
|
showError("Failed to fetch file diff", getErrorMessage(error));
|
|
1375
|
-
|
|
1404
|
+
throw error;
|
|
1376
1405
|
} finally {
|
|
1377
1406
|
isLoadingFileDiff.value = false;
|
|
1378
1407
|
}
|
|
@@ -1394,7 +1423,7 @@ function useGit() {
|
|
|
1394
1423
|
return result.content;
|
|
1395
1424
|
} catch (error) {
|
|
1396
1425
|
showError("Failed to fetch file content", getErrorMessage(error));
|
|
1397
|
-
|
|
1426
|
+
throw error;
|
|
1398
1427
|
} finally {
|
|
1399
1428
|
isLoadingFileContent.value = false;
|
|
1400
1429
|
}
|
|
@@ -1431,19 +1460,28 @@ const _sfc_main$c = /* @__PURE__ */ defineComponent({
|
|
|
1431
1460
|
const error = ref(null);
|
|
1432
1461
|
const fileDiffError = ref(null);
|
|
1433
1462
|
const viewMode = ref("changes");
|
|
1463
|
+
function getErrorMessage(error2, fallback) {
|
|
1464
|
+
if (error2 && typeof error2 === "object") {
|
|
1465
|
+
const fetchError = error2;
|
|
1466
|
+
return fetchError.data?.message || fetchError.data?.statusMessage || fetchError.statusMessage || fetchError.message || fallback;
|
|
1467
|
+
}
|
|
1468
|
+
return fallback;
|
|
1469
|
+
}
|
|
1434
1470
|
const selectedFileDiff = computed(() => files.value.find((f) => f.path === selectedFile.value));
|
|
1435
1471
|
async function loadDiff() {
|
|
1436
1472
|
error.value = null;
|
|
1437
1473
|
files.value = [];
|
|
1438
1474
|
selectedFile.value = void 0;
|
|
1439
1475
|
hunks.value = [];
|
|
1440
|
-
|
|
1441
|
-
|
|
1442
|
-
|
|
1443
|
-
|
|
1444
|
-
|
|
1445
|
-
|
|
1446
|
-
|
|
1476
|
+
fileContent.value = null;
|
|
1477
|
+
try {
|
|
1478
|
+
const result = await fetchDiff(props.repoId, props.commitSha, props.repoPath);
|
|
1479
|
+
files.value = result;
|
|
1480
|
+
if (result.length > 0) {
|
|
1481
|
+
selectedFile.value = result[0].path;
|
|
1482
|
+
}
|
|
1483
|
+
} catch (loadError) {
|
|
1484
|
+
error.value = getErrorMessage(loadError, "Could not load commit diff.");
|
|
1447
1485
|
}
|
|
1448
1486
|
}
|
|
1449
1487
|
async function loadFileDiff() {
|
|
@@ -1453,11 +1491,17 @@ const _sfc_main$c = /* @__PURE__ */ defineComponent({
|
|
|
1453
1491
|
return;
|
|
1454
1492
|
}
|
|
1455
1493
|
fileDiffError.value = null;
|
|
1456
|
-
|
|
1457
|
-
|
|
1458
|
-
|
|
1459
|
-
|
|
1460
|
-
|
|
1494
|
+
try {
|
|
1495
|
+
const result = await fetchFileDiff(props.repoId, props.commitSha, selectedFile.value, props.repoPath);
|
|
1496
|
+
hunks.value = result;
|
|
1497
|
+
if (viewMode.value === "full") {
|
|
1498
|
+
const content = await fetchFileContent(props.repoId, props.commitSha, selectedFile.value, props.repoPath);
|
|
1499
|
+
fileContent.value = content;
|
|
1500
|
+
} else {
|
|
1501
|
+
fileContent.value = null;
|
|
1502
|
+
}
|
|
1503
|
+
} catch (loadError) {
|
|
1504
|
+
fileDiffError.value = getErrorMessage(loadError, "Could not load file diff.");
|
|
1461
1505
|
}
|
|
1462
1506
|
}
|
|
1463
1507
|
function toggleViewMode() {
|
|
@@ -1465,8 +1509,13 @@ const _sfc_main$c = /* @__PURE__ */ defineComponent({
|
|
|
1465
1509
|
}
|
|
1466
1510
|
watch(viewMode, async (mode) => {
|
|
1467
1511
|
if (mode === "full" && selectedFile.value && !fileContent.value) {
|
|
1468
|
-
|
|
1469
|
-
|
|
1512
|
+
try {
|
|
1513
|
+
const content = await fetchFileContent(props.repoId, props.commitSha, selectedFile.value, props.repoPath);
|
|
1514
|
+
fileContent.value = content;
|
|
1515
|
+
fileDiffError.value = null;
|
|
1516
|
+
} catch (loadError) {
|
|
1517
|
+
fileDiffError.value = getErrorMessage(loadError, "Could not load file content.");
|
|
1518
|
+
}
|
|
1470
1519
|
}
|
|
1471
1520
|
});
|
|
1472
1521
|
function handleFileSelect(path) {
|
|
@@ -1905,6 +1954,21 @@ const _sfc_main$b = /* @__PURE__ */ defineComponent({
|
|
|
1905
1954
|
const { fetchCommits, isLoadingCommits } = useGit();
|
|
1906
1955
|
const commitDetails = ref(/* @__PURE__ */ new Map());
|
|
1907
1956
|
const failedCommits = ref(/* @__PURE__ */ new Set());
|
|
1957
|
+
function toShaLookupValue(sha) {
|
|
1958
|
+
return sha.trim().toLowerCase();
|
|
1959
|
+
}
|
|
1960
|
+
function toRepoLookupValue(repo) {
|
|
1961
|
+
return (repo || "").trim();
|
|
1962
|
+
}
|
|
1963
|
+
function createCommitKey(sha, repo) {
|
|
1964
|
+
return `${toRepoLookupValue(repo)}::${toShaLookupValue(sha)}`;
|
|
1965
|
+
}
|
|
1966
|
+
function matchesRequestedSha(requestedSha, commit) {
|
|
1967
|
+
const requested = toShaLookupValue(requestedSha);
|
|
1968
|
+
const fullSha = toShaLookupValue(commit.sha);
|
|
1969
|
+
const shortSha = toShaLookupValue(commit.shortSha);
|
|
1970
|
+
return fullSha === requested || shortSha === requested || fullSha.startsWith(requested) || requested.startsWith(fullSha) || shortSha.startsWith(requested) || requested.startsWith(shortSha);
|
|
1971
|
+
}
|
|
1908
1972
|
const hasMultipleRepos = computed(() => {
|
|
1909
1973
|
const repos = new Set(props.commits.map((c) => c.repo).filter(Boolean));
|
|
1910
1974
|
return repos.size > 1;
|
|
@@ -1929,19 +1993,34 @@ const _sfc_main$b = /* @__PURE__ */ defineComponent({
|
|
|
1929
1993
|
Array.from(commitsByRepo.entries()).map(async ([repoPath, shas]) => {
|
|
1930
1994
|
const result = await fetchCommits(repoId, shas, repoPath || void 0);
|
|
1931
1995
|
return {
|
|
1932
|
-
|
|
1996
|
+
repoPath,
|
|
1997
|
+
requestedShas: [...shas],
|
|
1998
|
+
commits: result.commits,
|
|
1933
1999
|
failedShas: result.failedShas
|
|
1934
2000
|
};
|
|
1935
2001
|
})
|
|
1936
2002
|
);
|
|
1937
2003
|
const detailsMap = /* @__PURE__ */ new Map();
|
|
1938
2004
|
const failed = /* @__PURE__ */ new Set();
|
|
1939
|
-
for (const { commits: repoCommits, failedShas } of results) {
|
|
1940
|
-
|
|
1941
|
-
|
|
2005
|
+
for (const { repoPath, requestedShas, commits: repoCommits, failedShas } of results) {
|
|
2006
|
+
const remainingCommits = [...repoCommits];
|
|
2007
|
+
for (const requestedSha of requestedShas) {
|
|
2008
|
+
const key = createCommitKey(requestedSha, repoPath);
|
|
2009
|
+
const matchIndex = remainingCommits.findIndex((commit) => matchesRequestedSha(requestedSha, commit));
|
|
2010
|
+
if (matchIndex >= 0) {
|
|
2011
|
+
const [matchedCommit] = remainingCommits.splice(matchIndex, 1);
|
|
2012
|
+
if (matchedCommit) {
|
|
2013
|
+
detailsMap.set(key, {
|
|
2014
|
+
...matchedCommit,
|
|
2015
|
+
repoPath
|
|
2016
|
+
});
|
|
2017
|
+
continue;
|
|
2018
|
+
}
|
|
2019
|
+
}
|
|
2020
|
+
failed.add(key);
|
|
1942
2021
|
}
|
|
1943
2022
|
for (const sha of failedShas) {
|
|
1944
|
-
failed.add(sha);
|
|
2023
|
+
failed.add(createCommitKey(sha, repoPath));
|
|
1945
2024
|
}
|
|
1946
2025
|
}
|
|
1947
2026
|
commitDetails.value = detailsMap;
|
|
@@ -1969,20 +2048,37 @@ const _sfc_main$b = /* @__PURE__ */ defineComponent({
|
|
|
1969
2048
|
return date.toLocaleDateString();
|
|
1970
2049
|
}
|
|
1971
2050
|
}
|
|
1972
|
-
function getDetails(
|
|
1973
|
-
const direct = commitDetails.value.get(sha);
|
|
1974
|
-
if (direct)
|
|
2051
|
+
function getDetails(commitRef) {
|
|
2052
|
+
const direct = commitDetails.value.get(createCommitKey(commitRef.sha, commitRef.repo));
|
|
2053
|
+
if (direct) {
|
|
2054
|
+
return direct;
|
|
2055
|
+
}
|
|
2056
|
+
const requestedSha = toShaLookupValue(commitRef.sha);
|
|
2057
|
+
const repoPrefix = `${toRepoLookupValue(commitRef.repo)}::`;
|
|
1975
2058
|
for (const [key, commit] of commitDetails.value) {
|
|
1976
|
-
if (key.startsWith(
|
|
2059
|
+
if (!key.startsWith(repoPrefix)) {
|
|
2060
|
+
continue;
|
|
2061
|
+
}
|
|
2062
|
+
const storedSha = key.slice(repoPrefix.length);
|
|
2063
|
+
if (storedSha.startsWith(requestedSha) || requestedSha.startsWith(storedSha)) {
|
|
1977
2064
|
return commit;
|
|
1978
2065
|
}
|
|
1979
2066
|
}
|
|
1980
2067
|
return void 0;
|
|
1981
2068
|
}
|
|
1982
|
-
function isFailed(
|
|
1983
|
-
|
|
1984
|
-
|
|
1985
|
-
|
|
2069
|
+
function isFailed(commitRef) {
|
|
2070
|
+
const directKey = createCommitKey(commitRef.sha, commitRef.repo);
|
|
2071
|
+
if (failedCommits.value.has(directKey)) {
|
|
2072
|
+
return true;
|
|
2073
|
+
}
|
|
2074
|
+
const requestedSha = toShaLookupValue(commitRef.sha);
|
|
2075
|
+
const repoPrefix = `${toRepoLookupValue(commitRef.repo)}::`;
|
|
2076
|
+
for (const failedKey of failedCommits.value) {
|
|
2077
|
+
if (!failedKey.startsWith(repoPrefix)) {
|
|
2078
|
+
continue;
|
|
2079
|
+
}
|
|
2080
|
+
const failedSha = failedKey.slice(repoPrefix.length);
|
|
2081
|
+
if (failedSha.startsWith(requestedSha) || requestedSha.startsWith(failedSha)) {
|
|
1986
2082
|
return true;
|
|
1987
2083
|
}
|
|
1988
2084
|
}
|
|
@@ -2003,15 +2099,15 @@ const _sfc_main$b = /* @__PURE__ */ defineComponent({
|
|
|
2003
2099
|
ssrRenderList(__props.commits, (commit) => {
|
|
2004
2100
|
_push(`<button class="w-full rounded-lg border bg-card p-3 text-left transition-colors hover:bg-muted/50 focus:outline-none focus:ring-2 focus:ring-ring"><div class="flex items-start gap-3">`);
|
|
2005
2101
|
_push(ssrRenderComponent(unref(GitCommit), { class: "mt-0.5 size-5 shrink-0 text-muted-foreground" }, null, _parent));
|
|
2006
|
-
_push(`<div class="min-w-0 flex-1"><div class="flex flex-wrap items-center gap-2"><code class="font-mono text-xs font-medium text-primary">${ssrInterpolate(getDetails(commit
|
|
2007
|
-
if (getDetails(commit
|
|
2102
|
+
_push(`<div class="min-w-0 flex-1"><div class="flex flex-wrap items-center gap-2"><code class="font-mono text-xs font-medium text-primary">${ssrInterpolate(getDetails(commit)?.shortSha || commit.sha.substring(0, 7))}</code>`);
|
|
2103
|
+
if (getDetails(commit)) {
|
|
2008
2104
|
_push(`<!--[--><span class="flex items-center gap-1 text-xs text-muted-foreground">`);
|
|
2009
2105
|
_push(ssrRenderComponent(unref(FileText), { class: "size-3" }, null, _parent));
|
|
2010
|
-
_push(` ${ssrInterpolate(getDetails(commit
|
|
2106
|
+
_push(` ${ssrInterpolate(getDetails(commit).filesChanged)}</span><span class="flex items-center gap-0.5 text-xs text-green-600 dark:text-green-400">`);
|
|
2011
2107
|
_push(ssrRenderComponent(unref(Plus), { class: "size-3" }, null, _parent));
|
|
2012
|
-
_push(`${ssrInterpolate(getDetails(commit
|
|
2108
|
+
_push(`${ssrInterpolate(getDetails(commit).additions)}</span><span class="flex items-center gap-0.5 text-xs text-red-600 dark:text-red-400">`);
|
|
2013
2109
|
_push(ssrRenderComponent(unref(Minus), { class: "size-3" }, null, _parent));
|
|
2014
|
-
_push(`${ssrInterpolate(getDetails(commit
|
|
2110
|
+
_push(`${ssrInterpolate(getDetails(commit).deletions)}</span><!--]-->`);
|
|
2015
2111
|
} else {
|
|
2016
2112
|
_push(`<!---->`);
|
|
2017
2113
|
}
|
|
@@ -2037,9 +2133,9 @@ const _sfc_main$b = /* @__PURE__ */ defineComponent({
|
|
|
2037
2133
|
_push(`<!---->`);
|
|
2038
2134
|
}
|
|
2039
2135
|
_push(`</div><p class="mt-1 truncate text-sm">`);
|
|
2040
|
-
if (getDetails(commit
|
|
2041
|
-
_push(`<!--[-->${ssrInterpolate(getDetails(commit
|
|
2042
|
-
} else if (isFailed(commit
|
|
2136
|
+
if (getDetails(commit)) {
|
|
2137
|
+
_push(`<!--[-->${ssrInterpolate(getDetails(commit).message)}<!--]-->`);
|
|
2138
|
+
} else if (isFailed(commit)) {
|
|
2043
2139
|
_push(`<span class="flex items-center gap-1 text-muted-foreground">`);
|
|
2044
2140
|
_push(ssrRenderComponent(unref(AlertCircle), { class: "size-3" }, null, _parent));
|
|
2045
2141
|
_push(` Commit unavailable </span>`);
|
|
@@ -2047,8 +2143,8 @@ const _sfc_main$b = /* @__PURE__ */ defineComponent({
|
|
|
2047
2143
|
_push(`<span class="text-muted-foreground">Loading...</span>`);
|
|
2048
2144
|
}
|
|
2049
2145
|
_push(`</p>`);
|
|
2050
|
-
if (getDetails(commit
|
|
2051
|
-
_push(`<p class="mt-1 text-xs text-muted-foreground">${ssrInterpolate(getDetails(commit
|
|
2146
|
+
if (getDetails(commit)) {
|
|
2147
|
+
_push(`<p class="mt-1 text-xs text-muted-foreground">${ssrInterpolate(getDetails(commit).author)} · ${ssrInterpolate(formatRelativeDate(getDetails(commit).date))}</p>`);
|
|
2052
2148
|
} else {
|
|
2053
2149
|
_push(`<!---->`);
|
|
2054
2150
|
}
|
|
@@ -3445,4 +3541,4 @@ _sfc_main.setup = (props, ctx) => {
|
|
|
3445
3541
|
const __nuxt_component_1 = Object.assign(_sfc_main, { __name: "TasksDetail" });
|
|
3446
3542
|
|
|
3447
3543
|
export { Badge as B, __nuxt_component_0$2 as _, __nuxt_component_1 as a };
|
|
3448
|
-
//# sourceMappingURL=Detail-
|
|
3544
|
+
//# sourceMappingURL=Detail-BQSkP9Zm.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Detail-BQSkP9Zm.mjs","sources":["../../../../node_modules/@dagrejs/dagre/dist/dagre.esm.js","../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/Detail-BQSkP9Zm.js"],"names":[],"mappings":"","x_google_ignoreList":[0,1]}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
const DiffViewer_vue_vue_type_style_index_0_scoped_a5da7e6e_lang = ".diff-viewer[data-v-a5da7e6e]{color:hsl(var(--foreground));font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Monaco,Consolas,monospace;font-size:.8125rem;line-height:1.5}.diff-container[data-v-a5da7e6e]{overflow-x:auto}.diff-toolbar[data-v-a5da7e6e]{background:hsl(var(--muted)/.3);border-bottom:1px solid hsl(var(--border));display:flex;justify-content:flex-end;padding:.25rem .5rem}.diff-split[data-v-a5da7e6e]{display:flex;min-width:100%}.diff-column[data-v-a5da7e6e]{flex:1;min-width:0;overflow-x:auto}.diff-column-left[data-v-a5da7e6e]{border-right:1px solid hsl(var(--border))}.diff-column-content[data-v-a5da7e6e]{min-width:-moz-fit-content;min-width:fit-content}.diff-line[data-v-a5da7e6e]{display:flex}.diff-gutter[data-v-a5da7e6e]{background:hsl(var(--muted)/.3);color:hsl(var(--muted-foreground));flex-shrink:0;padding:0 .5rem;text-align:right;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:3.5rem}.line-number[data-v-a5da7e6e]{display:inline-block;min-width:2rem;opacity:.7}.diff-content[data-v-a5da7e6e]{color:hsl(var(--foreground));flex:1;min-width:0;padding:0 .5rem;white-space:pre}.diff-code[data-v-a5da7e6e]{color:inherit;display:inline}.diff-add[data-v-a5da7e6e]{background:#16a24926}.diff-add .diff-gutter[data-v-a5da7e6e]{background:#16a24940}.diff-remove[data-v-a5da7e6e]{background:#ef434326}.diff-remove .diff-gutter[data-v-a5da7e6e]{background:#ef434340}.diff-empty[data-v-a5da7e6e]{background:hsl(var(--muted)/.2)}.diff-empty .diff-gutter[data-v-a5da7e6e]{background:hsl(var(--muted)/.3)}.diff-context[data-v-a5da7e6e]{background:transparent}.full-file-view[data-v-a5da7e6e]{min-width:100%}.full-file-line[data-v-a5da7e6e]{display:flex}.full-file-line .diff-gutter[data-v-a5da7e6e]{width:4rem}.full-file-line.diff-add[data-v-a5da7e6e]{background:#16a24926}.full-file-line.diff-add .diff-gutter[data-v-a5da7e6e]{background:#16a24940}.dark .full-file-line.diff-add[data-v-a5da7e6e]{background:#16a2491a}.dark .full-file-line.diff-add .diff-gutter[data-v-a5da7e6e]{background:#16a24933}.diff-separator[data-v-a5da7e6e],.diff-separator-half[data-v-a5da7e6e]{align-items:center;background:hsl(var(--muted)/.4);display:flex;padding:.25rem 0}.separator-line[data-v-a5da7e6e]{background:hsl(var(--border));flex:1;height:1px}.separator-text[data-v-a5da7e6e]{color:hsl(var(--muted-foreground));font-size:.75rem;padding:0 .75rem}.dark .diff-add[data-v-a5da7e6e]{background:#16a2491a}.dark .diff-add .diff-gutter[data-v-a5da7e6e]{background:#16a24933}.dark .diff-remove[data-v-a5da7e6e]{background:#ef43431a}.dark .diff-remove .diff-gutter[data-v-a5da7e6e]{background:#ef434333}[data-v-a5da7e6e] .shiki span,[data-v-a5da7e6e] .shiki{background:transparent!important}";
|
|
2
|
+
|
|
3
|
+
export { DiffViewer_vue_vue_type_style_index_0_scoped_a5da7e6e_lang as D };
|
|
4
|
+
//# sourceMappingURL=DiffViewer-styles-1.mjs-BFsE2PCW.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DiffViewer-styles-1.mjs-BFsE2PCW.mjs","sources":["../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/DiffViewer-styles-1.mjs-BFsE2PCW.js"],"names":[],"mappings":"","x_google_ignoreList":[0]}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { D as DiffViewer_vue_vue_type_style_index_0_scoped_a5da7e6e_lang } from './DiffViewer-styles-1.mjs-BFsE2PCW.mjs';
|
|
2
|
+
|
|
3
|
+
const DiffViewerStyles_D2bqX3nK = [
|
|
4
|
+
DiffViewer_vue_vue_type_style_index_0_scoped_a5da7e6e_lang
|
|
5
|
+
];
|
|
6
|
+
|
|
7
|
+
export { DiffViewerStyles_D2bqX3nK as default };
|
|
8
|
+
//# sourceMappingURL=DiffViewer-styles.D2bqX3nK.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DiffViewer-styles.D2bqX3nK.mjs","sources":["../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/DiffViewer-styles.D2bqX3nK.mjs"],"names":["style_0"],"mappings":"","x_google_ignoreList":[0]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { D as DiffViewer_vue_vue_type_style_index_0_scoped_a5da7e6e_lang } from './DiffViewer-styles-1.mjs-BFsE2PCW.mjs';
|
|
2
|
+
import { D as DiffViewer_vue_vue_type_style_index_1_lang } from './DiffViewer-styles-2.mjs-X6QKNjM0.mjs';
|
|
3
|
+
|
|
4
|
+
const DiffViewerStyles_FoV36wuV = [
|
|
5
|
+
DiffViewer_vue_vue_type_style_index_0_scoped_a5da7e6e_lang,
|
|
6
|
+
DiffViewer_vue_vue_type_style_index_1_lang
|
|
7
|
+
];
|
|
8
|
+
|
|
9
|
+
export { DiffViewerStyles_FoV36wuV as default };
|
|
10
|
+
//# sourceMappingURL=DiffViewer-styles.FoV36wuV.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DiffViewer-styles.FoV36wuV.mjs","sources":["../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/DiffViewer-styles.FoV36wuV.mjs"],"names":["style_0","style_1"],"mappings":"","x_google_ignoreList":[0]}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
const Viewer_vue_vue_type_style_index_0_lang = ".prd-viewer .prose{--tw-prose-body:var(--foreground);--tw-prose-headings:var(--foreground);--tw-prose-links:var(--primary);--tw-prose-code:var(--foreground);--tw-prose-pre-bg:var(--muted);--tw-prose-quotes:var(--muted-foreground);--tw-prose-hr:var(--border)}.prd-viewer .prose h1,.prd-viewer .prose h2,.prd-viewer .prose h3,.prd-viewer .prose h4{font-weight:600;margin-bottom:.5em;margin-top:1.5em}.prd-viewer .prose h1{border-bottom:1px solid var(--border);font-size:1.875rem;padding-bottom:.5rem}.prd-viewer .prose h2{border-bottom:1px solid var(--border);font-size:1.5rem;padding-bottom:.25rem}.prd-viewer .prose h3{font-size:1.25rem}.prd-viewer .prose p{line-height:1.7;margin-bottom:.75em;margin-top:.75em}.prd-viewer .prose a{color:var(--primary);text-decoration:underline;text-underline-offset:2px}.prd-viewer .prose a:hover{opacity:.8}.prd-viewer .prose code:not(pre code){background:var(--muted);border-radius:.25rem;font-size:.875em;font-weight:500;padding:.125rem .375rem}.prd-viewer .prose pre{background:var(--muted);border-radius:.5rem;margin:1rem 0;overflow-x:auto;padding:1rem}.prd-viewer .prose pre.shiki{background-color:var(--muted)!important}.prd-viewer .prose .shiki code{background:transparent;font-size:.875rem;line-height:1.5;padding:0}.dark .prd-viewer .prose .shiki,.dark .prd-viewer .prose pre.shiki{background-color:var(--muted)!important}.dark .prd-viewer .prose .shiki.github-light,.light .prd-viewer .prose .shiki.github-dark,:not(.dark) .prd-viewer .prose .shiki.github-dark{display:none!important}.prd-viewer .prose table{border-collapse:collapse;margin:1rem 0;width:100%}.prd-viewer .prose td,.prd-viewer .prose th{border:1px solid var(--border);padding:.5rem .75rem;text-align:left}.prd-viewer .prose th{background:var(--muted);font-weight:600}.prd-viewer .prose tr:nth-child(2n){background:color-mix(in oklch,var(--muted) 30%,transparent)}.prd-viewer .prose ol,.prd-viewer .prose ul{margin:.75em 0;padding-left:1.5rem}.prd-viewer .prose li{margin:.25em 0}.prd-viewer .prose ul{list-style-type:disc}.prd-viewer .prose ol{list-style-type:decimal}.prd-viewer .prose input[type=checkbox]{margin-right:.5rem;pointer-events:none}.prd-viewer .prose blockquote{border-left:4px solid var(--border);color:var(--muted-foreground);font-style:italic;margin:1rem 0;padding-left:1rem}.prd-viewer .prose hr{border:none;border-top:1px solid var(--border);margin:2rem 0}.prd-viewer .prose img{border-radius:.5rem;height:auto;margin:1rem 0;max-width:100%}";
|
|
2
|
+
|
|
3
|
+
const ViewerStyles_D6wYWFb1 = [
|
|
4
|
+
Viewer_vue_vue_type_style_index_0_lang
|
|
5
|
+
];
|
|
6
|
+
|
|
7
|
+
export { ViewerStyles_D6wYWFb1 as default };
|
|
8
|
+
//# sourceMappingURL=Viewer-styles.D6wYWFb1.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Viewer-styles.D6wYWFb1.mjs","sources":["../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/Viewer-styles-1.mjs-D92u4Pso.js","../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/Viewer-styles.D6wYWFb1.mjs"],"names":["style_0"],"mappings":"","x_google_ignoreList":[0,1]}
|