@termaxjs/web-source-control 0.1.1

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.
@@ -0,0 +1,72 @@
1
+ const SUPPORTED_HOSTS = {
2
+ "github.com": "github",
3
+ "www.github.com": "github",
4
+ "gitlab.com": "gitlab",
5
+ "www.gitlab.com": "gitlab",
6
+ "bitbucket.org": "bitbucket",
7
+ "www.bitbucket.org": "bitbucket",
8
+ };
9
+ export function parseRemoteWebUrl(raw) {
10
+ if (!raw)
11
+ return null;
12
+ const trimmed = raw.trim();
13
+ if (!trimmed)
14
+ return null;
15
+ let hostname;
16
+ let pathname;
17
+ const scpMatch = trimmed.match(/^([^@]+@)?([^:]+):(.+)$/);
18
+ if (scpMatch && !/^https?:\/\//i.test(trimmed) && !trimmed.startsWith("/")) {
19
+ hostname = scpMatch[2];
20
+ pathname = scpMatch[3];
21
+ }
22
+ else {
23
+ try {
24
+ const url = new URL(trimmed);
25
+ hostname = url.hostname;
26
+ pathname = url.pathname;
27
+ }
28
+ catch {
29
+ return null;
30
+ }
31
+ }
32
+ const host = SUPPORTED_HOSTS[hostname.toLowerCase()];
33
+ if (!host)
34
+ return null;
35
+ const parts = pathname
36
+ .replace(/^\//, "")
37
+ .replace(/\.git$/i, "")
38
+ .split("/")
39
+ .filter(Boolean);
40
+ if (parts.length < 2)
41
+ return null;
42
+ const owner = parts[0];
43
+ const repo = parts[1];
44
+ return {
45
+ host,
46
+ hostname: hostname.toLowerCase(),
47
+ owner,
48
+ repo,
49
+ baseUrl: `https://${hostname.toLowerCase()}/${owner}/${repo}`,
50
+ };
51
+ }
52
+ export function commitWebUrl(info, sha) {
53
+ switch (info.host) {
54
+ case "github":
55
+ return `${info.baseUrl}/commit/${sha}`;
56
+ case "gitlab":
57
+ return `${info.baseUrl}/-/commit/${sha}`;
58
+ case "bitbucket":
59
+ return `${info.baseUrl}/commits/${sha}`;
60
+ }
61
+ }
62
+ export function hostLabel(info) {
63
+ switch (info.host) {
64
+ case "github":
65
+ return "View on GitHub";
66
+ case "gitlab":
67
+ return "View on GitLab";
68
+ case "bitbucket":
69
+ return "View on Bitbucket";
70
+ }
71
+ }
72
+ //# sourceMappingURL=remoteWebUrl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remoteWebUrl.js","sourceRoot":"","sources":["../../src/history/remoteWebUrl.ts"],"names":[],"mappings":"AAUA,MAAM,eAAe,GAAkC;IACrD,YAAY,EAAE,QAAQ;IACtB,gBAAgB,EAAE,QAAQ;IAC1B,YAAY,EAAE,QAAQ;IACtB,gBAAgB,EAAE,QAAQ;IAC1B,eAAe,EAAE,WAAW;IAC5B,mBAAmB,EAAE,WAAW;CACjC,CAAC;AAEF,MAAM,UAAU,iBAAiB,CAC/B,GAA8B;IAE9B,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IACtB,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IAC3B,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAE1B,IAAI,QAAgB,CAAC;IACrB,IAAI,QAAgB,CAAC;IAErB,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC1D,IAAI,QAAQ,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC3E,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QACvB,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IACzB,CAAC;SAAM,CAAC;QACN,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;YAC7B,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;YACxB,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;QAC1B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,MAAM,IAAI,GAAG,eAAe,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;IACrD,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IAEvB,MAAM,KAAK,GAAG,QAAQ;SACnB,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;SAClB,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;SACtB,KAAK,CAAC,GAAG,CAAC;SACV,MAAM,CAAC,OAAO,CAAC,CAAC;IACnB,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAClC,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACvB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACtB,OAAO;QACL,IAAI;QACJ,QAAQ,EAAE,QAAQ,CAAC,WAAW,EAAE;QAChC,KAAK;QACL,IAAI;QACJ,OAAO,EAAE,WAAW,QAAQ,CAAC,WAAW,EAAE,IAAI,KAAK,IAAI,IAAI,EAAE;KAC9D,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAmB,EAAE,GAAW;IAC3D,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,QAAQ;YACX,OAAO,GAAG,IAAI,CAAC,OAAO,WAAW,GAAG,EAAE,CAAC;QACzC,KAAK,QAAQ;YACX,OAAO,GAAG,IAAI,CAAC,OAAO,aAAa,GAAG,EAAE,CAAC;QAC3C,KAAK,WAAW;YACd,OAAO,GAAG,IAAI,CAAC,OAAO,YAAY,GAAG,EAAE,CAAC;IAC5C,CAAC;AACH,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,IAAmB;IAC3C,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,QAAQ;YACX,OAAO,gBAAgB,CAAC;QAC1B,KAAK,QAAQ;YACX,OAAO,gBAAgB,CAAC;QAC1B,KAAK,WAAW;YACd,OAAO,mBAAmB,CAAC;IAC/B,CAAC;AACH,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from "./useSourceControlPanel.js";
2
+ export * from "./history/index.js";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oBAAoB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,3 @@
1
+ export * from "./useSourceControlPanel.js";
2
+ export * from "./history/index.js";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oBAAoB,CAAC"}
@@ -0,0 +1,61 @@
1
+ export type GitChangedFile = {
2
+ path: string;
3
+ originalPath: string | null;
4
+ indexStatus: string;
5
+ worktreeStatus: string;
6
+ staged: boolean;
7
+ unstaged: boolean;
8
+ untracked: boolean;
9
+ statusLabel: string;
10
+ };
11
+ export type GitStatusSnapshot = {
12
+ repoRoot: string;
13
+ branch: string;
14
+ upstream: string | null;
15
+ ahead: number;
16
+ behind: number;
17
+ isDetached: boolean;
18
+ truncated: boolean;
19
+ changedFiles: GitChangedFile[];
20
+ };
21
+ export type GitDiffResult = {
22
+ diffText: string;
23
+ truncated: boolean;
24
+ };
25
+ export type GitDiffContentResult = {
26
+ originalContent: string;
27
+ modifiedContent: string;
28
+ isBinary: boolean;
29
+ fallbackPatch: string;
30
+ truncated: boolean;
31
+ };
32
+ export type GitCommitResult = {
33
+ commitSha: string;
34
+ summary: string;
35
+ };
36
+ export type GitPushResult = {
37
+ remote: string | null;
38
+ branch: string | null;
39
+ pushed: boolean;
40
+ };
41
+ export type GitStashEntry = {
42
+ stashId: string;
43
+ message: string;
44
+ timestampSecs: number;
45
+ };
46
+ export type GitDiscardEntry = {
47
+ path: string;
48
+ mode?: string;
49
+ untracked?: boolean;
50
+ };
51
+ export type GitRepoInfo = {
52
+ repoRoot: string;
53
+ branch: string;
54
+ remote: string | null;
55
+ };
56
+ export type SourceControlSummary = any;
57
+ export type CheckState = "none" | "some" | "all";
58
+ export type SourceControlFileEntry = GitChangedFile & {
59
+ checked: boolean;
60
+ };
61
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AACA,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,EAAE,cAAc,EAAE,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,OAAO,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AACnF,MAAM,MAAM,WAAW,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC;AAEtF,MAAM,MAAM,oBAAoB,GAAG,GAAG,CAAC;AACvC,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC;AACjD,MAAM,MAAM,sBAAsB,GAAG,cAAc,GAAG;IACpD,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC"}
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,117 @@
1
+ import type { GitDiscardEntry, GitDiffResult, GitRepoInfo, GitStashEntry, GitStatusSnapshot } from "./types.js";
2
+ type PanelState = "closed" | "loading" | "no-repo" | "ready" | "error";
3
+ type DiffMode = "+" | "-";
4
+ type SelectionTransition = "none" | "moved-group" | "reset";
5
+ export type DiffSelection = {
6
+ path: string;
7
+ mode: DiffMode;
8
+ };
9
+ export type SourceControlEntry = {
10
+ key: string;
11
+ path: string;
12
+ mode: DiffMode;
13
+ indexStatus: string;
14
+ worktreeStatus: string;
15
+ statusLabel: string;
16
+ statusCode: string;
17
+ originalPath: any;
18
+ untracked: boolean;
19
+ };
20
+ export type CheckState = "checked" | "indeterminate" | "unchecked";
21
+ /** One row per changed file (flat list) — merges the staged/unstaged split. */
22
+ export type SourceControlFileEntry = {
23
+ key: string;
24
+ path: string;
25
+ originalPath: any;
26
+ statusCode: string;
27
+ statusLabel: string;
28
+ checkState: CheckState;
29
+ staged: boolean;
30
+ unstaged: boolean;
31
+ untracked: boolean;
32
+ };
33
+ export type PendingDiscard = {
34
+ scope: "single" | "all";
35
+ count: number;
36
+ label: string;
37
+ };
38
+ type SourceControlPanelState = {
39
+ panelState: PanelState;
40
+ repo: GitRepoInfo | null;
41
+ status: GitStatusSnapshot | null;
42
+ stashes: GitStashEntry[] | null;
43
+ selected: DiffSelection | null;
44
+ commitMessage: string;
45
+ actionBusy: any;
46
+ statusError: any;
47
+ actionError: any;
48
+ remoteError: any;
49
+ actionMessage: any;
50
+ stagedEntries: SourceControlEntry[];
51
+ unstagedEntries: SourceControlEntry[];
52
+ fileEntries: SourceControlFileEntry[];
53
+ headerCheckState: CheckState;
54
+ allClean: boolean;
55
+ canPush: boolean;
56
+ pushHint: any;
57
+ canGenerateCommitMessage: boolean;
58
+ generateCommitMessageHint: string;
59
+ selectionTransition: SelectionTransition;
60
+ stagedEmptyText: string;
61
+ unstagedEmptyText: string;
62
+ pendingDiscard: PendingDiscard | null;
63
+ setCommitMessage: (value: string) => void;
64
+ refresh: () => Promise<void>;
65
+ selectEntry: (entry: SourceControlEntry) => Promise<void>;
66
+ selectFile: (entry: SourceControlFileEntry) => Promise<void>;
67
+ stageEntry: (entry: SourceControlEntry) => Promise<void>;
68
+ unstageEntry: (entry: SourceControlEntry) => Promise<void>;
69
+ toggleStageFile: (entry: SourceControlFileEntry) => Promise<void>;
70
+ toggleAll: () => Promise<void>;
71
+ requestDiscardEntry: (entry: SourceControlEntry) => void;
72
+ requestDiscardFile: (entry: SourceControlFileEntry) => void;
73
+ requestDiscardAll: () => void;
74
+ stageHunk: (entry: SourceControlFileEntry, patch: string, reverse: boolean) => Promise<void>;
75
+ discardHunk: (entry: SourceControlFileEntry, patch: string) => Promise<void>;
76
+ confirmPendingDiscard: () => Promise<void>;
77
+ cancelPendingDiscard: () => void;
78
+ stageAllEntries: () => Promise<void>;
79
+ unstageAllEntries: () => Promise<void>;
80
+ generateCommitMessage: () => Promise<void>;
81
+ commit: () => Promise<void>;
82
+ push: () => Promise<void>;
83
+ stashPush: (message?: string) => Promise<void>;
84
+ stashPop: (stashId: string) => Promise<void>;
85
+ stashApply: (stashId: string) => Promise<void>;
86
+ stashDrop: (stashId: string) => Promise<void>;
87
+ };
88
+ export interface GitAdapter {
89
+ gitStage: (repoRoot: string, paths: string[]) => Promise<void>;
90
+ gitUnstage: (repoRoot: string, paths: string[]) => Promise<void>;
91
+ gitDiscard: (repoRoot: string, entries: GitDiscardEntry[]) => Promise<void>;
92
+ gitApplyPatch: (repoRoot: string, patch: string, reverse: boolean, staged: boolean) => Promise<void>;
93
+ gitDiff: (repoRoot: string, file: string | null, staged: boolean) => Promise<GitDiffResult>;
94
+ gitCommit: (repoRoot: string, message: string) => Promise<any>;
95
+ gitStashPush: (repoRoot: string, message?: string) => Promise<void>;
96
+ gitStashPop: (repoRoot: string, stashId: string) => Promise<void>;
97
+ gitStashApply: (repoRoot: string, stashId: string) => Promise<void>;
98
+ gitStashDrop: (repoRoot: string, stashId: string) => Promise<void>;
99
+ gitGetRepoInfo: () => Promise<GitRepoInfo | null>;
100
+ gitGetStatus: (repoRoot: string) => Promise<GitStatusSnapshot>;
101
+ gitGetStashes: (repoRoot: string) => Promise<GitStashEntry[]>;
102
+ gitPush: (repoRoot: string) => Promise<void>;
103
+ invalidateDiff?: (repoRoot: string, path: string) => void;
104
+ invalidateRepoDiffs?: (repoRoot: string) => void;
105
+ generateCommitMessage?: (diff: string) => Promise<string>;
106
+ canGenerateCommitMessage?: boolean;
107
+ generateCommitMessageHint?: string;
108
+ }
109
+ export declare function useSourceControlPanel(adapter: GitAdapter, isOpen: boolean, summary: any, onOpenDiff: ((input: {
110
+ path: string;
111
+ repoRoot: string;
112
+ mode: DiffMode;
113
+ originalPath: any;
114
+ title?: string;
115
+ }) => void) | null): SourceControlPanelState;
116
+ export {};
117
+ //# sourceMappingURL=useSourceControlPanel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSourceControlPanel.d.ts","sourceRoot":"","sources":["../src/useSourceControlPanel.ts"],"names":[],"mappings":"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"}