@jaydenfyi/diffx 0.0.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.
- package/LICENSE +21 -0
- package/README.md +226 -0
- package/dist/bin.d.mts +1 -0
- package/dist/bin.mjs +23 -0
- package/dist/bin.mjs.map +1 -0
- package/dist/command-5FPIcmTx.mjs +2434 -0
- package/dist/command-5FPIcmTx.mjs.map +1 -0
- package/dist/index.d.mts +261 -0
- package/dist/index.d.mts.map +1 -0
- package/dist/index.mjs +3 -0
- package/package.json +62 -0
package/dist/index.d.mts
ADDED
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
import * as gunshi0 from "gunshi";
|
|
2
|
+
|
|
3
|
+
//#region src/cli/command.d.ts
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Gunshi CLI command definition for diffx
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Main diffx command
|
|
10
|
+
*/
|
|
11
|
+
declare const diffxCommand: {
|
|
12
|
+
args: {
|
|
13
|
+
mode: {
|
|
14
|
+
type: "string";
|
|
15
|
+
description: string;
|
|
16
|
+
};
|
|
17
|
+
stat: {
|
|
18
|
+
type: "boolean";
|
|
19
|
+
description: string;
|
|
20
|
+
};
|
|
21
|
+
numstat: {
|
|
22
|
+
type: "boolean";
|
|
23
|
+
description: string;
|
|
24
|
+
};
|
|
25
|
+
summary: {
|
|
26
|
+
type: "boolean";
|
|
27
|
+
description: string;
|
|
28
|
+
};
|
|
29
|
+
shortstat: {
|
|
30
|
+
type: "boolean";
|
|
31
|
+
description: string;
|
|
32
|
+
};
|
|
33
|
+
"name-only": {
|
|
34
|
+
type: "boolean";
|
|
35
|
+
description: string;
|
|
36
|
+
};
|
|
37
|
+
"name-status": {
|
|
38
|
+
type: "boolean";
|
|
39
|
+
description: string;
|
|
40
|
+
};
|
|
41
|
+
overview: {
|
|
42
|
+
type: "boolean";
|
|
43
|
+
description: string;
|
|
44
|
+
};
|
|
45
|
+
pager: {
|
|
46
|
+
type: "boolean";
|
|
47
|
+
description: string;
|
|
48
|
+
};
|
|
49
|
+
"no-pager": {
|
|
50
|
+
type: "boolean";
|
|
51
|
+
description: string;
|
|
52
|
+
};
|
|
53
|
+
include: {
|
|
54
|
+
type: "string";
|
|
55
|
+
description: string;
|
|
56
|
+
short: string;
|
|
57
|
+
};
|
|
58
|
+
exclude: {
|
|
59
|
+
type: "string";
|
|
60
|
+
description: string;
|
|
61
|
+
short: string;
|
|
62
|
+
};
|
|
63
|
+
index: {
|
|
64
|
+
type: "boolean";
|
|
65
|
+
description: string;
|
|
66
|
+
};
|
|
67
|
+
};
|
|
68
|
+
run: (ctx: Readonly<gunshi0.CommandContext<{
|
|
69
|
+
args: {
|
|
70
|
+
mode: {
|
|
71
|
+
type: "string";
|
|
72
|
+
description: string;
|
|
73
|
+
};
|
|
74
|
+
stat: {
|
|
75
|
+
type: "boolean";
|
|
76
|
+
description: string;
|
|
77
|
+
};
|
|
78
|
+
numstat: {
|
|
79
|
+
type: "boolean";
|
|
80
|
+
description: string;
|
|
81
|
+
};
|
|
82
|
+
summary: {
|
|
83
|
+
type: "boolean";
|
|
84
|
+
description: string;
|
|
85
|
+
};
|
|
86
|
+
shortstat: {
|
|
87
|
+
type: "boolean";
|
|
88
|
+
description: string;
|
|
89
|
+
};
|
|
90
|
+
"name-only": {
|
|
91
|
+
type: "boolean";
|
|
92
|
+
description: string;
|
|
93
|
+
};
|
|
94
|
+
"name-status": {
|
|
95
|
+
type: "boolean";
|
|
96
|
+
description: string;
|
|
97
|
+
};
|
|
98
|
+
overview: {
|
|
99
|
+
type: "boolean";
|
|
100
|
+
description: string;
|
|
101
|
+
};
|
|
102
|
+
pager: {
|
|
103
|
+
type: "boolean";
|
|
104
|
+
description: string;
|
|
105
|
+
};
|
|
106
|
+
"no-pager": {
|
|
107
|
+
type: "boolean";
|
|
108
|
+
description: string;
|
|
109
|
+
};
|
|
110
|
+
include: {
|
|
111
|
+
type: "string";
|
|
112
|
+
description: string;
|
|
113
|
+
short: string;
|
|
114
|
+
};
|
|
115
|
+
exclude: {
|
|
116
|
+
type: "string";
|
|
117
|
+
description: string;
|
|
118
|
+
short: string;
|
|
119
|
+
};
|
|
120
|
+
index: {
|
|
121
|
+
type: "boolean";
|
|
122
|
+
description: string;
|
|
123
|
+
};
|
|
124
|
+
};
|
|
125
|
+
extensions: {};
|
|
126
|
+
}>>) => Promise<void>;
|
|
127
|
+
rendering: {
|
|
128
|
+
header: null;
|
|
129
|
+
};
|
|
130
|
+
name?: string | undefined;
|
|
131
|
+
description?: string | undefined;
|
|
132
|
+
examples?: string | gunshi0.CommandExamplesFetcher<gunshi0.DefaultGunshiParams> | undefined;
|
|
133
|
+
toKebab?: boolean | undefined;
|
|
134
|
+
internal?: boolean | undefined;
|
|
135
|
+
entry?: boolean | undefined;
|
|
136
|
+
};
|
|
137
|
+
//#endregion
|
|
138
|
+
//#region src/types.d.ts
|
|
139
|
+
/**
|
|
140
|
+
* Shared types for diffx
|
|
141
|
+
*/
|
|
142
|
+
/** Output mode for diff/patch generation */
|
|
143
|
+
type OutputMode = "diff" | "patch" | "stat" | "numstat" | "shortstat" | "name-only" | "name-status" | "summary";
|
|
144
|
+
/** Patch generation strategy */
|
|
145
|
+
type PatchStyle = "format-patch" | "diff";
|
|
146
|
+
/** Type of Git reference input */
|
|
147
|
+
type RefType = "local-range" | "remote-range" | "pr-ref" | "github-url" | "pr-range" | "git-url-range" | "github-commit-url" | "github-pr-changes-url" | "github-compare-url" | "gitlab-mr-ref";
|
|
148
|
+
/** Parsed reference range */
|
|
149
|
+
interface RefRange {
|
|
150
|
+
type: RefType;
|
|
151
|
+
left: string;
|
|
152
|
+
right: string;
|
|
153
|
+
/** Owner/repo for remote refs (e.g., "octocat/Hello-World") */
|
|
154
|
+
ownerRepo?: string;
|
|
155
|
+
/** PR/MR number for PR/MR refs */
|
|
156
|
+
prNumber?: number;
|
|
157
|
+
/** Left PR for PR range */
|
|
158
|
+
leftPr?: GitHubPRUrl;
|
|
159
|
+
/** Right PR for PR range */
|
|
160
|
+
rightPr?: GitHubPRUrl;
|
|
161
|
+
/** Left MR for GitLab MR range */
|
|
162
|
+
leftMr?: GitLabMRUrl;
|
|
163
|
+
/** Right MR for GitLab MR range */
|
|
164
|
+
rightMr?: GitLabMRUrl;
|
|
165
|
+
/** Left git URL for git-url-range */
|
|
166
|
+
leftGitUrl?: string;
|
|
167
|
+
/** Right git URL for git-url-range */
|
|
168
|
+
rightGitUrl?: string;
|
|
169
|
+
/** Commit SHA for github-commit-url */
|
|
170
|
+
commitSha?: string;
|
|
171
|
+
/** PR changes data for github-pr-changes-url */
|
|
172
|
+
leftCommitSha?: string;
|
|
173
|
+
rightCommitSha?: string;
|
|
174
|
+
/** Left ref for github-compare-url */
|
|
175
|
+
leftRef?: string;
|
|
176
|
+
/** Right ref for github-compare-url */
|
|
177
|
+
rightRef?: string;
|
|
178
|
+
/** Right owner for cross-fork compare */
|
|
179
|
+
rightOwner?: string;
|
|
180
|
+
/** Right repo for cross-fork compare */
|
|
181
|
+
rightRepo?: string;
|
|
182
|
+
}
|
|
183
|
+
/** Parsed GitHub PR URL */
|
|
184
|
+
interface GitHubPRUrl {
|
|
185
|
+
owner: string;
|
|
186
|
+
repo: string;
|
|
187
|
+
prNumber: number;
|
|
188
|
+
}
|
|
189
|
+
/** Parsed GitLab MR URL */
|
|
190
|
+
interface GitLabMRUrl {
|
|
191
|
+
owner: string;
|
|
192
|
+
repo: string;
|
|
193
|
+
mrNumber: number;
|
|
194
|
+
}
|
|
195
|
+
/** Parsed GitHub commit URL */
|
|
196
|
+
interface GitHubCommitUrl {
|
|
197
|
+
owner: string;
|
|
198
|
+
repo: string;
|
|
199
|
+
commitSha: string;
|
|
200
|
+
}
|
|
201
|
+
/** Parsed GitHub PR changes URL */
|
|
202
|
+
interface GitHubPRChangesUrl {
|
|
203
|
+
owner: string;
|
|
204
|
+
repo: string;
|
|
205
|
+
prNumber: number;
|
|
206
|
+
leftCommitSha: string;
|
|
207
|
+
rightCommitSha: string;
|
|
208
|
+
}
|
|
209
|
+
/** Parsed GitHub compare URL */
|
|
210
|
+
interface GitHubCompareUrl {
|
|
211
|
+
owner: string;
|
|
212
|
+
repo: string;
|
|
213
|
+
leftRef: string;
|
|
214
|
+
rightRef: string;
|
|
215
|
+
rightOwner?: string;
|
|
216
|
+
rightRepo?: string;
|
|
217
|
+
}
|
|
218
|
+
/** File filter options */
|
|
219
|
+
interface FilterOptions {
|
|
220
|
+
include?: string[];
|
|
221
|
+
exclude?: string[];
|
|
222
|
+
}
|
|
223
|
+
/** CLI options */
|
|
224
|
+
interface DiffxOptions {
|
|
225
|
+
mode: OutputMode;
|
|
226
|
+
include?: string | string[];
|
|
227
|
+
exclude?: string | string[];
|
|
228
|
+
}
|
|
229
|
+
/** Error types with exit codes */
|
|
230
|
+
declare const ExitCode: {
|
|
231
|
+
readonly SUCCESS: 0;
|
|
232
|
+
readonly NO_FILES_MATCHED: 1;
|
|
233
|
+
readonly INVALID_INPUT: 2;
|
|
234
|
+
readonly GIT_ERROR: 3;
|
|
235
|
+
};
|
|
236
|
+
type ExitCode = (typeof ExitCode)[keyof typeof ExitCode];
|
|
237
|
+
/** Custom error with exit code */
|
|
238
|
+
declare class DiffxError extends Error {
|
|
239
|
+
readonly exitCode: ExitCode;
|
|
240
|
+
_tag: "DiffxError";
|
|
241
|
+
constructor(message: string, exitCode: ExitCode);
|
|
242
|
+
}
|
|
243
|
+
//#endregion
|
|
244
|
+
//#region src/parsers/range-parser.d.ts
|
|
245
|
+
/**
|
|
246
|
+
* Parse a range input string into a RefRange
|
|
247
|
+
*/
|
|
248
|
+
declare function parseRangeInput(input: string): RefRange;
|
|
249
|
+
//#endregion
|
|
250
|
+
//#region src/resolvers/ref-resolver.d.ts
|
|
251
|
+
/**
|
|
252
|
+
* Resolve any ref range to concrete left/right refs
|
|
253
|
+
*/
|
|
254
|
+
declare function resolveRefs(range: RefRange): Promise<{
|
|
255
|
+
left: string;
|
|
256
|
+
right: string;
|
|
257
|
+
cleanup?: () => Promise<void>;
|
|
258
|
+
}>;
|
|
259
|
+
//#endregion
|
|
260
|
+
export { DiffxError, type DiffxOptions, ExitCode, type FilterOptions, type GitHubCommitUrl, type GitHubCompareUrl, type GitHubPRChangesUrl, type GitHubPRUrl, type OutputMode, type PatchStyle, type RefRange, type RefType, diffxCommand, parseRangeInput, resolveRefs };
|
|
261
|
+
//# sourceMappingURL=index.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/cli/command.ts","../src/types.ts","../src/parsers/range-parser.ts","../src/resolvers/ref-resolver.ts"],"sourcesContent":[],"mappings":";;;;;;;AAgGA;;;cAAa;;;;;;;MC3FD,IAAA,EAAU,SAAA;MAWV,WAAU,EAAA,MAAA;IAGV,CAAA;IAaK,OAAQ,EAAA;MAClB,IAAA,EAAA,SAAA;MAQG,WAAA,EAAA,MAAA;IAEC,CAAA;IAED,OAAA,EAAA;MAEC,IAAA,EAAA,SAAA;MAAW,WAAA,EAAA,MAAA;IAqBL,CAAA;IAOA,SAAA,EAAW;MAOX,IAAA,EAAA,SAAe;MAOf,WAAA,EAAkB,MAAA;IASlB,CAAA;IAUA,WAAA,EAAa;MAMb,IAAA,EAAA,SAAY;MAahB,WAKH,EAAA,MAAA;IAEE,CAAA;IAGC,aAAW,EAAA;MAKI,IAAA,EAAA,SAAA;MAAA,WAAA,EAAA,MAAA;IALI,CAAA;IAAK,QAAA,EAAA;;;;IClHrB,KAAA,EAAA;;;;ICiBM,UAAW,EAAA;MAAQ,IAAA,EAAA,SAAA;MAGxB,WAAA,EAAA,MAAA;IAHmC,CAAA;IAAO,OAAA,EAAA;;;;;;;;;;;;;;;sBHiPzD,OAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAzLF;AAyLE,KCpRU,UAAA,GDoRV,MAAA,GAAA,OAAA,GAAA,MAAA,GAAA,SAAA,GAAA,WAAA,GAAA,WAAA,GAAA,aAAA,GAAA,SAAA;;KCzQU,UAAA;;KAGA,OAAA;;UAaK,QAAA;QACV;;EA5BK,KAAA,EAAA,MAAU;EAWV;EAGA,SAAA,CAAO,EAAA,MAAA;EAaF;EACV,QAAA,CAAA,EAAA,MAAA;EAQG;EAEC,MAAA,CAAA,EAFD,WAEC;EAED;EAEC,OAAA,CAAA,EAJA,WAIA;EAAW;EAqBL,MAAA,CAAA,EAvBP,WAuBkB;EAOX;EAOA,OAAA,CAAA,EAnCN,WAmCqB;EAOf;EASA,UAAA,CAAA,EAAA,MAAgB;EAUhB;EAMA,WAAA,CAAA,EAAA,MAAY;EAahB;EAOD,SAAA,CAAA,EAAQ,MAAA;EAGP;EAKe,aAAA,CAAA,EAAA,MAAA;EAAA,cAAA,CAAA,EAAA,MAAA;EALI;EAAK,OAAA,CAAA,EAAA,MAAA;;;;EClHrB,UAAA,CAAA,EAAA,MAAe;;;;ACiB/B;AAAyC,UF4BxB,WAAA,CE5BwB;EAGxB,KAAA,EAAA,MAAA;EAHmC,IAAA,EAAA,MAAA;EAAO,QAAA,EAAA,MAAA;;;UFmC1C,WAAA;;;;;;UAOA,eAAA;;;;;;UAOA,kBAAA;;;;;;;;UASA,gBAAA;;;;;;;;;UAUA,aAAA;;;;;UAMA,YAAA;QACV;;;;;cAYM;;;;;;KAOD,QAAA,WAAmB,uBAAuB;;cAGzC,UAAA,SAAmB,KAAA;qBAKJ;;yCAAA;;;;;;;iBCvHZ,eAAA,iBAAgC;;;;;;iBCiB1B,WAAA,QAAmB,WAAW;;;kBAGnC"}
|
package/dist/index.mjs
ADDED
package/package.json
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@jaydenfyi/diffx",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"description": "A CLI tool for generating filtered Git diffs/patches with GitHub PR support",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"cli",
|
|
7
|
+
"diff",
|
|
8
|
+
"git",
|
|
9
|
+
"github",
|
|
10
|
+
"patch",
|
|
11
|
+
"pull-request"
|
|
12
|
+
],
|
|
13
|
+
"license": "MIT",
|
|
14
|
+
"author": "Jayden",
|
|
15
|
+
"bin": {
|
|
16
|
+
"diffx": "./dist/bin.mjs"
|
|
17
|
+
},
|
|
18
|
+
"files": [
|
|
19
|
+
"dist"
|
|
20
|
+
],
|
|
21
|
+
"type": "module",
|
|
22
|
+
"main": "./dist/index.mjs",
|
|
23
|
+
"module": "./dist/index.mjs",
|
|
24
|
+
"types": "./dist/index.d.mts",
|
|
25
|
+
"exports": {
|
|
26
|
+
".": "./dist/index.mjs",
|
|
27
|
+
"./bin": "./dist/bin.mjs",
|
|
28
|
+
"./package.json": "./package.json"
|
|
29
|
+
},
|
|
30
|
+
"scripts": {
|
|
31
|
+
"prepack": "bun run build",
|
|
32
|
+
"build": "tsdown",
|
|
33
|
+
"dev": "tsdown --watch",
|
|
34
|
+
"start": "node dist/bin.mjs",
|
|
35
|
+
"test": "vitest --exclude=\"**/e2e*.test.ts\"",
|
|
36
|
+
"test:e2e": "vitest tests/e2e/e2e.test.ts tests/e2e/e2e-git-parity.test.ts",
|
|
37
|
+
"test:all": "vitest",
|
|
38
|
+
"test:cov": "vitest --coverage --exclude=\"**/e2e*.test.ts\"",
|
|
39
|
+
"typecheck": "tsc --noEmit",
|
|
40
|
+
"lint": "oxlint",
|
|
41
|
+
"lint:fix": "oxlint --fix",
|
|
42
|
+
"fmt": "oxfmt",
|
|
43
|
+
"fmt:check": "oxfmt --check"
|
|
44
|
+
},
|
|
45
|
+
"dependencies": {
|
|
46
|
+
"gunshi": "^0.27.5",
|
|
47
|
+
"minimatch": "^10.1.1",
|
|
48
|
+
"simple-git": "^3.30.0"
|
|
49
|
+
},
|
|
50
|
+
"devDependencies": {
|
|
51
|
+
"@vitest/coverage-v8": "^4.0.18",
|
|
52
|
+
"oxfmt": "^0.28.0",
|
|
53
|
+
"oxlint": "^1.43.0",
|
|
54
|
+
"tsdown": "^0.18.1",
|
|
55
|
+
"typescript": "^5.9.3",
|
|
56
|
+
"vitest": "^4.0.18",
|
|
57
|
+
"vitest-mock-extended": "^3.1.0"
|
|
58
|
+
},
|
|
59
|
+
"engines": {
|
|
60
|
+
"node": ">=22.0.0"
|
|
61
|
+
}
|
|
62
|
+
}
|