git-chopstick-core 0.1.3 → 0.1.5
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/README.md +50 -14
- package/dist/git/apply.d.ts +1 -1
- package/dist/git/apply.js +1 -1
- package/dist/git/apply.js.map +1 -1
- package/dist/git/environment.d.ts +1 -1
- package/dist/git/environment.js +1 -1
- package/dist/git/environment.js.map +1 -1
- package/dist/git/gitignore.js +1 -1
- package/dist/git/gitignore.js.map +1 -1
- package/dist/git/index.d.ts +1 -0
- package/dist/git/index.js +3 -0
- package/dist/git/index.js.map +1 -1
- package/dist/git/rev-parse.d.ts +7 -0
- package/dist/git/rev-parse.js +13 -0
- package/dist/git/rev-parse.js.map +1 -1
- package/dist/lib/progress/from-process.d.ts +19 -1
- package/dist/lib/progress/from-process.js +43 -2
- package/dist/lib/progress/from-process.js.map +1 -1
- package/dist/lib/progress/index.d.ts +16 -5
- package/dist/lib/progress/index.js +116 -15
- package/dist/lib/progress/index.js.map +1 -1
- package/dist/lib/progress/revert.d.ts +6 -1
- package/dist/lib/progress/revert.js +5 -1
- package/dist/lib/progress/revert.js.map +1 -1
- package/dist/models/repository.d.ts +1 -1
- package/dist/models/repository.js +1 -1
- package/dist/models/repository.js.map +1 -1
- package/package.json +5 -3
package/README.md
CHANGED
|
@@ -233,7 +233,7 @@ try {
|
|
|
233
233
|
| `reset` | `reset`, `resetPaths`, `unstageAll` | Reset operations |
|
|
234
234
|
| `revert` | `revertCommit` | Revert a commit |
|
|
235
235
|
| `rev-list` | `getAheadBehind`, `getBranchAheadBehind`, `revRange`, `revSymmetricDifference` | Commit range queries |
|
|
236
|
-
| `rev-parse` | `getRepositoryType`, `getUpstreamRefForRef`, `getCurrentUpstreamRef` | Rev parsing |
|
|
236
|
+
| `rev-parse` | `getRepositoryType`, `getCurrentBranch`, `getUpstreamRefForRef`, `getCurrentUpstreamRef` | Rev parsing / branch detection |
|
|
237
237
|
| `rm` | `removeConflictedFile` | Remove files |
|
|
238
238
|
| `squash` | `squash` | Interactive rebase squashing |
|
|
239
239
|
| `stage` | `stageManualConflictResolution`, `stageResolvedConflictFiles` | Stage conflict resolutions |
|
|
@@ -279,12 +279,11 @@ try {
|
|
|
279
279
|
|
|
280
280
|
This library is extracted directly from [GitHub Desktop](https://github.com/desktop/desktop), a mature Electron application. Some subsystems that depend on GitHub Desktop's specific runtime environment have been extracted as **stubs** — they compile and type-check correctly but don't provide real functionality:
|
|
281
281
|
|
|
282
|
-
###
|
|
282
|
+
### 🟢 Progress Reporting (`src/lib/progress/`)
|
|
283
283
|
|
|
284
|
-
The progress parsers (`CheckoutProgressParser`, `FetchProgressParser`, `PullProgressParser`, `PushProgressParser`, `CloneProgressParser`, `RevertProgressParser`)
|
|
284
|
+
The progress parsers (`CheckoutProgressParser`, `FetchProgressParser`, `PullProgressParser`, `PushProgressParser`, `CloneProgressParser`, `RevertProgressParser`) now have real `parse()` methods that extract percentage and description from git's stderr output. Progress callbacks receive updates for clone, fetch, push, pull, and checkout operations.
|
|
285
285
|
|
|
286
|
-
|
|
287
|
-
- Long-running operations will complete correctly but without intermediate progress reporting
|
|
286
|
+
Note: `git revert` does not produce progress output, so `RevertProgressParser` still returns `null` from its `parse()` method — this is correct behavior.
|
|
288
287
|
|
|
289
288
|
### 🟡 Git Hook Interception (`src/lib/hooks/`)
|
|
290
289
|
|
|
@@ -294,13 +293,9 @@ The progress parsers (`CheckoutProgressParser`, `FetchProgressParser`, `PullProg
|
|
|
294
293
|
|
|
295
294
|
`withTrampolineEnv` is a **stub** that calls through without setting up the Git LFS trampoline environment. Git LFS operations may not work correctly as a result.
|
|
296
295
|
|
|
297
|
-
###
|
|
296
|
+
### 🟢 Integration Tests
|
|
298
297
|
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
### 🟡 Not Published on npm
|
|
302
|
-
|
|
303
|
-
The library is currently available only via git URL or `file:` dependency. No npm release has been published.
|
|
298
|
+
Integration tests are available in `src/__tests__/integration.test.ts` and run against real git repositories in temp directories. Run `npm test` to execute them.
|
|
304
299
|
|
|
305
300
|
---
|
|
306
301
|
|
|
@@ -322,9 +317,9 @@ src/
|
|
|
322
317
|
└── lib/ ← Utilities: parsers, progress reporting, hooks, fs helpers
|
|
323
318
|
├── diff-parser.ts ← Full diff parser (text/binary/image)
|
|
324
319
|
├── status-parser.ts ← Porcelain v2 status parser
|
|
325
|
-
├── progress/ ←
|
|
326
|
-
├── hooks/ ← 🟡 Git hook env (stubbed — see Limitations)
|
|
327
|
-
└── trampoline/ ← 🟡 Git LFS trampoline (stubbed — see Limitations)
|
|
320
|
+
├── progress/ ← 🟢 Progress parsers (real — see Known Limitations)
|
|
321
|
+
├── hooks/ ← 🟡 Git hook env (stubbed — see Known Limitations)
|
|
322
|
+
└── trampoline/ ← 🟡 Git LFS trampoline (stubbed — see Known Limitations)
|
|
328
323
|
```
|
|
329
324
|
|
|
330
325
|
## Development
|
|
@@ -345,6 +340,47 @@ npx tsx examples/branch-operations.ts /path/to/repo
|
|
|
345
340
|
npx tsx examples/create-commit.ts /path/to/repo
|
|
346
341
|
```
|
|
347
342
|
|
|
343
|
+
## Status
|
|
344
|
+
|
|
345
|
+
> **Pre-1.0** — The public API (`exports` map, barrel exports, error types) is stabilizing but may see minor breaking changes before 1.0. See [CHANGELOG.md](./CHANGELOG.md) for version history. Tested with TypeScript 5.7+.
|
|
346
|
+
|
|
347
|
+
## Consumption Patterns
|
|
348
|
+
|
|
349
|
+
> Upgrading from v0.1.4? See the [exec → git() migration guide](./docs/exec-to-git-migration.md) if you were using `exec()` from the public API.
|
|
350
|
+
|
|
351
|
+
### Root barrel (recommended for most use cases)
|
|
352
|
+
|
|
353
|
+
```typescript
|
|
354
|
+
// All 45+ git operations, domain models, error types
|
|
355
|
+
import { Repository, getStatus, createCommit, getBranches, merge, GitError, GitErrorCodes } from 'git-chopstick-core'
|
|
356
|
+
```
|
|
357
|
+
|
|
358
|
+
### Git subpath (low-level access)
|
|
359
|
+
|
|
360
|
+
```typescript
|
|
361
|
+
// Low-level helpers (parse git errors, spawn streaming git processes)
|
|
362
|
+
import { parseError, spawnGit } from 'git-chopstick-core/git'
|
|
363
|
+
|
|
364
|
+
// Use git() from the root barrel for most operations
|
|
365
|
+
import { git } from 'git-chopstick-core'
|
|
366
|
+
|
|
367
|
+
const result = await git(['rev-parse', '--show-toplevel'], '/path/to/repo', 'my-op')
|
|
368
|
+
console.log(result.stdout)
|
|
369
|
+
```
|
|
370
|
+
|
|
371
|
+
### Models only
|
|
372
|
+
|
|
373
|
+
```typescript
|
|
374
|
+
import { Commit, Branch, BranchType, AppFileStatusKind } from 'git-chopstick-core'
|
|
375
|
+
```
|
|
376
|
+
|
|
377
|
+
### Granular (for bundle size)
|
|
378
|
+
|
|
379
|
+
```typescript
|
|
380
|
+
import { getCommits } from 'git-chopstick-core/git/log'
|
|
381
|
+
import { getBranches } from 'git-chopstick-core/git/for-each-ref'
|
|
382
|
+
```
|
|
383
|
+
|
|
348
384
|
### Consumption Notes
|
|
349
385
|
|
|
350
386
|
- **Compiled consumption** (recommended): Import from `'git-chopstick-core'` — the `exports` field in `package.json` points to the compiled output in `dist/`. Works with Node.js ESM and bundlers alike.
|
package/dist/git/apply.d.ts
CHANGED
|
@@ -30,4 +30,4 @@ export declare function checkPatch(workTree: {
|
|
|
30
30
|
*
|
|
31
31
|
* @param selection The selection of changes from the diff to discard
|
|
32
32
|
*/
|
|
33
|
-
export declare function discardChangesFromSelection(repository: Repository, filePath: string,
|
|
33
|
+
export declare function discardChangesFromSelection(repository: Repository, filePath: string, _diff: ITextDiff, selection: DiffSelection): Promise<void>;
|
package/dist/git/apply.js
CHANGED
|
@@ -88,7 +88,7 @@ export async function checkPatch(workTree, patch) {
|
|
|
88
88
|
*
|
|
89
89
|
* @param selection The selection of changes from the diff to discard
|
|
90
90
|
*/
|
|
91
|
-
export async function discardChangesFromSelection(repository, filePath,
|
|
91
|
+
export async function discardChangesFromSelection(repository, filePath, _diff, selection) {
|
|
92
92
|
const file = new WorkingDirectoryFileChange(filePath, { kind: AppFileStatusKind.Modified }, selection);
|
|
93
93
|
const patch = await formatPatchToDiscardChanges(repository, file);
|
|
94
94
|
if (patch === null || patch === '') {
|
package/dist/git/apply.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apply.js","sourceRoot":"","sources":["../../src/git/apply.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"apply.js","sourceRoot":"","sources":["../../src/git/apply.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,WAAW,EAAE,MAAM,WAAW,CAAA;AACnD,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAA;AAC/B,OAAO,EACL,0BAA0B,EAC1B,iBAAiB,GAClB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,QAAQ,EAA4B,MAAM,yBAAyB,CAAA;AAE5E,OAAO,EAAE,uBAAuB,EAAE,MAAM,WAAW,CAAA;AACnD,OAAO,EAAE,WAAW,EAAE,2BAA2B,EAAE,MAAM,2BAA2B,CAAA;AACpF,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AAEnD,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,UAAsB,EACtB,IAAgC;IAEhC,uEAAuE;IACvE,2EAA2E;IAC3E,uBAAuB;IACvB,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,iBAAiB,CAAC,OAAO,EAAE,CAAC;QACnD,8DAA8D;QAC9D,4DAA4D;QAC5D,+DAA+D;QAC/D,oEAAoE;QACpE,kEAAkE;QAClE,oEAAoE;QACpE,kBAAkB;QAClB,MAAM,GAAG,CACP,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAC9C,UAAU,CAAC,IAAI,EACf,mBAAmB,CACpB,CAAA;QAED,8CAA8C;QAC9C,0CAA0C;QAC1C,MAAM,OAAO,GAAG,MAAM,GAAG,CACvB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAC9C,UAAU,CAAC,IAAI,EACf,mBAAmB,CACpB,CAAA;QAED,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;QAC5C,MAAM,CAAC,IAAI,EAAE,AAAD,EAAG,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;QAExC,wDAAwD;QACxD,MAAM,GAAG,CACP,CAAC,cAAc,EAAE,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,EAC9D,UAAU,CAAC,IAAI,EACf,mBAAmB,CACpB,CAAA;IACH,CAAC;IAED,MAAM,SAAS,GAAa;QAC1B,OAAO;QACP,UAAU;QACV,gBAAgB;QAChB,qBAAqB;QACrB,GAAG;KACJ,CAAA;IAED,MAAM,IAAI,GAAG,MAAM,uBAAuB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAA;IAE5D,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,SAAS,EAAE,CAAC;QACpE,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAA;QACrB,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;YAClB,KAAK,QAAQ,CAAC,MAAM,CAAC;YACrB,KAAK,QAAQ,CAAC,SAAS,CAAC;YACxB,KAAK,QAAQ,CAAC,KAAK;gBACjB,MAAM,IAAI,KAAK,CACb,+CAA+C,IAAI,CAAC,IAAI,EAAE,CAC3D,CAAA;YACH,KAAK,QAAQ,CAAC,YAAY;gBACxB,MAAM,IAAI,KAAK,CACb,wDAAwD,IAAI,CAAC,IAAI,EAAE,CACpE,CAAA;YACH;gBACE,WAAW,CAAC,IAAI,EAAE,sBAAsB,IAAI,EAAE,CAAC,CAAA;QACnD,CAAC;IACH,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAA;IACjE,MAAM,GAAG,CAAC,SAAS,EAAE,UAAU,CAAC,IAAI,EAAE,mBAAmB,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAA;IAE5E,OAAO,OAAO,CAAC,OAAO,EAAE,CAAA;AAC1B,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,QAA0B,EAC1B,KAAa;IAEb,MAAM,MAAM,GAAG,MAAM,GAAG,CACtB,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG,CAAC,EACzB,QAAQ,CAAC,IAAI,EACb,YAAY,EACZ;QACE,KAAK,EAAE,KAAK;QACZ,QAAQ,EAAE,MAAa;QACvB,cAAc,EAAE,IAAI,GAAG,CAAc,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC;KACtE,CACF,CAAA;IAED,IAAI,MAAM,CAAC,QAAQ,KAAK,WAAW,CAAC,iBAAiB,EAAE,CAAC;QACtD,sEAAsE;QACtE,OAAO,KAAK,CAAA;IACd,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,UAAsB,EACtB,QAAgB,EAChB,KAAgB,EAChB,SAAwB;IAExB,MAAM,IAAI,GAAG,IAAI,0BAA0B,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,iBAAiB,CAAC,QAAQ,EAAE,EAAE,SAAS,CAAC,CAAA;IACtG,MAAM,KAAK,GAAG,MAAM,2BAA2B,CAAC,UAAU,EAAE,IAAI,CAAC,CAAA;IAEjE,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;QACnC,4EAA4E;QAC5E,OAAM;IACR,CAAC;IAED,MAAM,IAAI,GAAG,CAAC,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,GAAG,CAAC,CAAA;IAEpE,MAAM,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,6BAA6B,EAAE;QAC9D,KAAK,EAAE,KAAK;KACb,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -48,4 +48,4 @@ export declare function envForRemoteOperation(remoteUrl: string | null): Promise
|
|
|
48
48
|
* @param resolve The method to use when resolving the proxy url,
|
|
49
49
|
* defaults to `resolveGitProxy`
|
|
50
50
|
*/
|
|
51
|
-
export declare function envForProxy(remoteUrl: string, env?: NodeJS.ProcessEnv, resolve?: (
|
|
51
|
+
export declare function envForProxy(remoteUrl: string, env?: NodeJS.ProcessEnv, resolve?: (_url: string) => Promise<string | undefined>): Promise<Record<string, string | undefined> | undefined>;
|
package/dist/git/environment.js
CHANGED
|
@@ -58,7 +58,7 @@ export async function envForRemoteOperation(remoteUrl) {
|
|
|
58
58
|
* @param resolve The method to use when resolving the proxy url,
|
|
59
59
|
* defaults to `resolveGitProxy`
|
|
60
60
|
*/
|
|
61
|
-
export async function envForProxy(remoteUrl, env = process.env, resolve = async (
|
|
61
|
+
export async function envForProxy(remoteUrl, env = process.env, resolve = async (_url) => resolveGitProxyFn() ?? undefined) {
|
|
62
62
|
const protocolMatch = /^(https?):\/\//i.exec(remoteUrl);
|
|
63
63
|
// We can only resolve and use a proxy for the protocols where cURL
|
|
64
64
|
// would be involved (i.e http and https). git:// relies on ssh.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"environment.js","sourceRoot":"","sources":["../../src/git/environment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAC1D,OAAO,EAAE,eAAe,IAAI,iBAAiB,EAAE,MAAM,6BAA6B,CAAA;
|
|
1
|
+
{"version":3,"file":"environment.js","sourceRoot":"","sources":["../../src/git/environment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAC1D,OAAO,EAAE,eAAe,IAAI,iBAAiB,EAAE,MAAM,6BAA6B,CAAA;AAIlF;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,6BAA6B,CAC3C,WAAuB,EACvB,aAA6B;IAE7B,IAAI,aAAa,EAAE,CAAC;QAClB,OAAO,aAAa,CAAC,GAAG,CAAA;IAC1B,CAAC;IACD,OAAO,oBAAoB,CAAA;AAC7B,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,SAAwB;IAClE,OAAO;QACL,GAAG,oBAAoB,EAAE;QACzB,GAAG,CAAC,MAAM,WAAW,CAAC,SAAS,IAAI,oBAAoB,CAAC,CAAC;KAC1D,CAAA;AACH,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,SAAiB,EACjB,MAAyB,OAAO,CAAC,GAAG,EACpC,UAAyD,KAAK,EAAE,IAAY,EAAE,EAAE,CAAC,iBAAiB,EAAE,IAAI,SAAS;IAEjH,MAAM,aAAa,GAAG,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IAEvD,mEAAmE;IACnE,gEAAgE;IAChE,IAAI,aAAa,KAAK,IAAI,EAAE,CAAC;QAC3B,OAAM;IACR,CAAC;IAED,kEAAkE;IAClE,8DAA8D;IAC9D,oEAAoE;IACpE,MAAM,KAAK,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAA,CAAC,gBAAgB;IAE7D,6DAA6D;IAC7D,6DAA6D;IAC7D,2DAA2D;IAC3D,8DAA8D;IAC9D,aAAa;IACb,oEAAoE;IACpE,IAAI,WAAW,IAAI,GAAG,IAAI,WAAW,IAAI,GAAG,EAAE,CAAC;QAC7C,OAAO,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAA;QAC7D,OAAM;IACR,CAAC;IAED,0CAA0C;IAC1C,+EAA+E;IAC/E,MAAM,MAAM,GAAG,GAAG,KAAK,QAAQ,CAAA,CAAC,4BAA4B;IAE5D,gEAAgE;IAChE,gDAAgD;IAChD,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,KAAK,OAAO,IAAI,aAAa,IAAI,GAAG,CAAC,EAAE,CAAC;QACjE,OAAO,CAAC,IAAI,CAAC,2BAA2B,MAAM,cAAc,CAAC,CAAA;QAC7D,OAAM;IACR,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;QACpD,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,GAAG,CAAC,CAAA;QAChD,OAAO,SAAS,CAAA;IAClB,CAAC,CAAC,CAAA;IAEF,OAAO,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAA;AACpE,CAAC"}
|
package/dist/git/gitignore.js
CHANGED
|
@@ -95,7 +95,7 @@ export function escapeGitSpecialCharacters(pattern) {
|
|
|
95
95
|
async function formatGitIgnoreContents(text, repository) {
|
|
96
96
|
const autocrlf = await getConfigValue(repository, 'core.autocrlf');
|
|
97
97
|
const safecrlf = await getConfigValue(repository, 'core.safecrlf');
|
|
98
|
-
return new Promise((resolve,
|
|
98
|
+
return new Promise((resolve, _reject) => {
|
|
99
99
|
if (autocrlf === 'true' && safecrlf === 'true') {
|
|
100
100
|
// based off https://stackoverflow.com/a/141069/1363815
|
|
101
101
|
const normalizedText = text.replace(/\r\n|\n\r|\n|\r/g, '\r\n');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gitignore.js","sourceRoot":"","sources":["../../src/git/gitignore.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"gitignore.js","sourceRoot":"","sources":["../../src/git/gitignore.ts"],"names":[],"mappings":"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"}
|
package/dist/git/index.d.ts
CHANGED
package/dist/git/index.js
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
// ── Low-level execution API (exec is internal — use git() from core.js instead) ──
|
|
2
|
+
export { spawnGit, parseError, parseBadConfigValueErrorInfo, ExecError } from './exec.js';
|
|
3
|
+
// ── Git operations ──
|
|
1
4
|
export * from './add.js';
|
|
2
5
|
export * from './apply.js';
|
|
3
6
|
export * from './branch.js';
|
package/dist/git/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/git/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA;AACxB,cAAc,YAAY,CAAA;AAC1B,cAAc,aAAa,CAAA;AAC3B,cAAc,eAAe,CAAA;AAC7B,cAAc,qBAAqB,CAAA;AACnC,cAAc,kBAAkB,CAAA;AAChC,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,WAAW,CAAA;AACzB,cAAc,kBAAkB,CAAA;AAChC,cAAc,WAAW,CAAA;AACzB,cAAc,iBAAiB,CAAA;AAC/B,cAAc,YAAY,CAAA;AAC1B,cAAc,mBAAmB,CAAA;AACjC,cAAc,mBAAmB,CAAA;AACjC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,WAAW,CAAA;AACzB,cAAc,yBAAyB,CAAA;AACvC,cAAc,UAAU,CAAA;AACxB,cAAc,UAAU,CAAA;AACxB,cAAc,YAAY,CAAA;AAC1B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,WAAW,CAAA;AACzB,cAAc,WAAW,CAAA;AACzB,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,WAAW,CAAA;AACzB,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA;AAC5B,cAAc,YAAY,CAAA;AAC1B,cAAc,eAAe,CAAA;AAC7B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,SAAS,CAAA;AACvB,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,aAAa,CAAA;AAC3B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,UAAU,CAAA;AACxB,cAAc,mBAAmB,CAAA;AACjC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,UAAU,CAAA;AACxB,cAAc,eAAe,CAAA;AAC7B,cAAc,uBAAuB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/git/index.ts"],"names":[],"mappings":"AAAA,oFAAoF;AACpF,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,4BAA4B,EAAE,SAAS,EAAyB,MAAM,WAAW,CAAC;AAEjH,uBAAuB;AACvB,cAAc,UAAU,CAAA;AACxB,cAAc,YAAY,CAAA;AAC1B,cAAc,aAAa,CAAA;AAC3B,cAAc,eAAe,CAAA;AAC7B,cAAc,qBAAqB,CAAA;AACnC,cAAc,kBAAkB,CAAA;AAChC,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,WAAW,CAAA;AACzB,cAAc,kBAAkB,CAAA;AAChC,cAAc,WAAW,CAAA;AACzB,cAAc,iBAAiB,CAAA;AAC/B,cAAc,YAAY,CAAA;AAC1B,cAAc,mBAAmB,CAAA;AACjC,cAAc,mBAAmB,CAAA;AACjC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,WAAW,CAAA;AACzB,cAAc,yBAAyB,CAAA;AACvC,cAAc,UAAU,CAAA;AACxB,cAAc,UAAU,CAAA;AACxB,cAAc,YAAY,CAAA;AAC1B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,WAAW,CAAA;AACzB,cAAc,WAAW,CAAA;AACzB,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,WAAW,CAAA;AACzB,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA;AAC5B,cAAc,YAAY,CAAA;AAC1B,cAAc,eAAe,CAAA;AAC7B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,SAAS,CAAA;AACvB,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,aAAa,CAAA;AAC3B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,UAAU,CAAA;AACxB,cAAc,mBAAmB,CAAA;AACjC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,UAAU,CAAA;AACxB,cAAc,eAAe,CAAA;AAC7B,cAAc,uBAAuB,CAAA"}
|
package/dist/git/rev-parse.d.ts
CHANGED
|
@@ -22,3 +22,10 @@ export declare function getUpstreamRefForRef(path: string, ref?: string): Promis
|
|
|
22
22
|
export declare function getUpstreamRemoteNameForRef(path: string, ref?: string): Promise<string | null>;
|
|
23
23
|
export declare const getCurrentUpstreamRef: (path: string) => Promise<string | null>;
|
|
24
24
|
export declare const getCurrentUpstreamRemoteName: (path: string) => Promise<string | null>;
|
|
25
|
+
/**
|
|
26
|
+
* Get the current branch name for the repository at the given path.
|
|
27
|
+
*
|
|
28
|
+
* Returns the branch name (e.g. `"main"`) if on a named branch,
|
|
29
|
+
* or `undefined` if HEAD is detached.
|
|
30
|
+
*/
|
|
31
|
+
export declare function getCurrentBranch(path: string): Promise<string | undefined>;
|
package/dist/git/rev-parse.js
CHANGED
|
@@ -62,4 +62,17 @@ export async function getUpstreamRemoteNameForRef(path, ref) {
|
|
|
62
62
|
}
|
|
63
63
|
export const getCurrentUpstreamRef = (path) => getUpstreamRefForRef(path);
|
|
64
64
|
export const getCurrentUpstreamRemoteName = (path) => getUpstreamRemoteNameForRef(path);
|
|
65
|
+
/**
|
|
66
|
+
* Get the current branch name for the repository at the given path.
|
|
67
|
+
*
|
|
68
|
+
* Returns the branch name (e.g. `"main"`) if on a named branch,
|
|
69
|
+
* or `undefined` if HEAD is detached.
|
|
70
|
+
*/
|
|
71
|
+
export async function getCurrentBranch(path) {
|
|
72
|
+
const result = await git(['symbolic-ref', '--short', 'HEAD'], path, 'getCurrentBranch', { successExitCodes: new Set([0, 128]) });
|
|
73
|
+
if (result.exitCode === 128) {
|
|
74
|
+
return undefined;
|
|
75
|
+
}
|
|
76
|
+
return result.stdout.trim();
|
|
77
|
+
}
|
|
65
78
|
//# sourceMappingURL=rev-parse.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rev-parse.js","sourceRoot":"","sources":["../../src/git/rev-parse.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"rev-parse.js","sourceRoot":"","sources":["../../src/git/rev-parse.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,2 +1,20 @@
|
|
|
1
1
|
import { IGitExecutionOptions } from '../../git/core.js';
|
|
2
|
-
|
|
2
|
+
import type { IGitOutput } from './index.js';
|
|
3
|
+
/**
|
|
4
|
+
* Wraps git execution options with a `processCallback` that intercepts
|
|
5
|
+
* stderr output and feeds progress lines to the provided parser.
|
|
6
|
+
*
|
|
7
|
+
* Git writes progress updates to stderr using carriage return (`\r`) to
|
|
8
|
+
* overwrite the current line, producing output like:
|
|
9
|
+
* Receiving objects: 15% (150/1000)
|
|
10
|
+
* Resolving deltas: 100% (2145/2145), done.
|
|
11
|
+
*
|
|
12
|
+
* This function:
|
|
13
|
+
* 1. Buffers stderr chunks split on `\r` to extract individual progress lines
|
|
14
|
+
* 2. Feeds each line to the parser, which extracts percentage + description
|
|
15
|
+
* 3. Calls the progress callback with the parsed result
|
|
16
|
+
* 4. Chains to any existing processCallback set on the options
|
|
17
|
+
*/
|
|
18
|
+
export declare function executionOptionsWithProgress(options: IGitExecutionOptions, parser: {
|
|
19
|
+
parse: (line: string) => IGitOutput | null;
|
|
20
|
+
}, progressCallback: (progress: any) => void): Promise<IGitExecutionOptions>;
|
|
@@ -1,4 +1,45 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Wraps git execution options with a `processCallback` that intercepts
|
|
3
|
+
* stderr output and feeds progress lines to the provided parser.
|
|
4
|
+
*
|
|
5
|
+
* Git writes progress updates to stderr using carriage return (`\r`) to
|
|
6
|
+
* overwrite the current line, producing output like:
|
|
7
|
+
* Receiving objects: 15% (150/1000)
|
|
8
|
+
* Resolving deltas: 100% (2145/2145), done.
|
|
9
|
+
*
|
|
10
|
+
* This function:
|
|
11
|
+
* 1. Buffers stderr chunks split on `\r` to extract individual progress lines
|
|
12
|
+
* 2. Feeds each line to the parser, which extracts percentage + description
|
|
13
|
+
* 3. Calls the progress callback with the parsed result
|
|
14
|
+
* 4. Chains to any existing processCallback set on the options
|
|
15
|
+
*/
|
|
16
|
+
export async function executionOptionsWithProgress(options, parser,
|
|
17
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
18
|
+
progressCallback) {
|
|
19
|
+
return {
|
|
20
|
+
...options,
|
|
21
|
+
processCallback: (process) => {
|
|
22
|
+
// Chain to any existing processCallback (e.g. from core.ts)
|
|
23
|
+
options.processCallback?.(process);
|
|
24
|
+
// Buffer for stderr chunks — git progress lines are terminated by \r
|
|
25
|
+
let buffer = '';
|
|
26
|
+
process.stderr?.on('data', (chunk) => {
|
|
27
|
+
buffer += chunk.toString();
|
|
28
|
+
// Split on \r to get individual progress lines
|
|
29
|
+
const lines = buffer.split('\r');
|
|
30
|
+
// Keep any incomplete trailing data in the buffer for the next chunk
|
|
31
|
+
buffer = lines.pop() ?? '';
|
|
32
|
+
for (const line of lines) {
|
|
33
|
+
const trimmed = line.trim();
|
|
34
|
+
if (!trimmed)
|
|
35
|
+
continue;
|
|
36
|
+
const output = parser.parse(trimmed);
|
|
37
|
+
if (output !== null) {
|
|
38
|
+
progressCallback(output);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
},
|
|
43
|
+
};
|
|
3
44
|
}
|
|
4
45
|
//# sourceMappingURL=from-process.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"from-process.js","sourceRoot":"","sources":["../../../src/lib/progress/from-process.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"from-process.js","sourceRoot":"","sources":["../../../src/lib/progress/from-process.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAChD,OAA6B,EAC7B,MAAsD;AACtD,8DAA8D;AAC9D,gBAAyC;IAEzC,OAAO;QACL,GAAG,OAAO;QACV,eAAe,EAAE,CAAC,OAAY,EAAE,EAAE;YAChC,4DAA4D;YAC5D,OAAO,CAAC,eAAe,EAAE,CAAC,OAAO,CAAC,CAAA;YAElC,qEAAqE;YACrE,IAAI,MAAM,GAAG,EAAE,CAAA;YAEf,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;gBAC3C,MAAM,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAA;gBAE1B,+CAA+C;gBAC/C,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;gBAChC,qEAAqE;gBACrE,MAAM,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,CAAA;gBAE1B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;oBACzB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAA;oBAC3B,IAAI,CAAC,OAAO;wBAAE,SAAQ;oBAEtB,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;oBACpC,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;wBACpB,gBAAgB,CAAC,MAAM,CAAC,CAAA;oBAC1B,CAAC;gBACH,CAAC;YACH,CAAC,CAAC,CAAA;QACJ,CAAC;KACF,CAAA;AACH,CAAC"}
|
|
@@ -5,10 +5,13 @@ export interface IGitOutput {
|
|
|
5
5
|
percent: number;
|
|
6
6
|
details?: {
|
|
7
7
|
text: string;
|
|
8
|
+
title?: string;
|
|
8
9
|
};
|
|
9
10
|
}
|
|
10
11
|
export declare class CheckoutProgressParser {
|
|
11
|
-
|
|
12
|
+
private _percent;
|
|
13
|
+
private _details;
|
|
14
|
+
parse(line: string): IGitOutput | null;
|
|
12
15
|
get percent(): number;
|
|
13
16
|
get details(): {
|
|
14
17
|
text: string;
|
|
@@ -16,7 +19,9 @@ export declare class CheckoutProgressParser {
|
|
|
16
19
|
get kind(): string;
|
|
17
20
|
}
|
|
18
21
|
export declare class FetchProgressParser {
|
|
19
|
-
|
|
22
|
+
private _percent;
|
|
23
|
+
private _details;
|
|
24
|
+
parse(line: string): IGitOutput | null;
|
|
20
25
|
get percent(): number;
|
|
21
26
|
get details(): {
|
|
22
27
|
text: string;
|
|
@@ -24,7 +29,9 @@ export declare class FetchProgressParser {
|
|
|
24
29
|
get kind(): string;
|
|
25
30
|
}
|
|
26
31
|
export declare class PullProgressParser {
|
|
27
|
-
|
|
32
|
+
private _percent;
|
|
33
|
+
private _details;
|
|
34
|
+
parse(line: string): IGitOutput | null;
|
|
28
35
|
get percent(): number;
|
|
29
36
|
get details(): {
|
|
30
37
|
text: string;
|
|
@@ -32,7 +39,9 @@ export declare class PullProgressParser {
|
|
|
32
39
|
get kind(): string;
|
|
33
40
|
}
|
|
34
41
|
export declare class PushProgressParser {
|
|
35
|
-
|
|
42
|
+
private _percent;
|
|
43
|
+
private _details;
|
|
44
|
+
parse(line: string): IGitOutput | null;
|
|
36
45
|
get percent(): number;
|
|
37
46
|
get details(): {
|
|
38
47
|
text: string;
|
|
@@ -40,7 +49,9 @@ export declare class PushProgressParser {
|
|
|
40
49
|
get kind(): string;
|
|
41
50
|
}
|
|
42
51
|
export declare class CloneProgressParser {
|
|
43
|
-
|
|
52
|
+
private _percent;
|
|
53
|
+
private _details;
|
|
54
|
+
parse(line: string): IGitOutput | null;
|
|
44
55
|
get percent(): number;
|
|
45
56
|
get details(): {
|
|
46
57
|
text: string;
|
|
@@ -1,32 +1,133 @@
|
|
|
1
1
|
export { executionOptionsWithProgress } from './from-process.js';
|
|
2
|
+
/**
|
|
3
|
+
* Extract progress percentage from common git progress lines.
|
|
4
|
+
* Matches patterns like:
|
|
5
|
+
* Receiving objects: 15% (150/1000)
|
|
6
|
+
* Resolving deltas: 0% (0/2145)
|
|
7
|
+
* Checking out files: 45% (230/512)
|
|
8
|
+
* Writing objects: 10% (5/50)
|
|
9
|
+
* remote: Counting objects: 100% (15/15)
|
|
10
|
+
*/
|
|
11
|
+
function parseProgressLine(line) {
|
|
12
|
+
const match = line.match(/(\d+)%\s*\([\d/]+\)/);
|
|
13
|
+
if (match) {
|
|
14
|
+
return { percent: parseInt(match[1], 10), text: line };
|
|
15
|
+
}
|
|
16
|
+
return null;
|
|
17
|
+
}
|
|
2
18
|
export class CheckoutProgressParser {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
19
|
+
_percent = 0;
|
|
20
|
+
_details = { text: '' };
|
|
21
|
+
parse(line) {
|
|
22
|
+
// Checking out files: 45% (230/512)
|
|
23
|
+
const progress = parseProgressLine(line);
|
|
24
|
+
if (progress && line.includes('Checking out files')) {
|
|
25
|
+
this._percent = progress.percent;
|
|
26
|
+
this._details = { text: line };
|
|
27
|
+
return { kind: 'progress', percent: this._percent, details: this._details };
|
|
28
|
+
}
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
31
|
+
get percent() { return this._percent; }
|
|
32
|
+
get details() { return this._details; }
|
|
6
33
|
get kind() { return 'progress'; }
|
|
7
34
|
}
|
|
8
35
|
export class FetchProgressParser {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
36
|
+
_percent = 0;
|
|
37
|
+
_details = { text: '' };
|
|
38
|
+
parse(line) {
|
|
39
|
+
// Receiving objects: 15% (150/1000)
|
|
40
|
+
// Resolving deltas: 0% (0/2145)
|
|
41
|
+
const progress = parseProgressLine(line);
|
|
42
|
+
if (progress && (line.includes('Receiving objects') || line.includes('Resolving deltas'))) {
|
|
43
|
+
this._percent = progress.percent;
|
|
44
|
+
this._details = { text: line };
|
|
45
|
+
return { kind: 'progress', percent: this._percent, details: this._details };
|
|
46
|
+
}
|
|
47
|
+
// remote: Counting objects, remote: Compressing objects, etc.
|
|
48
|
+
if (line.startsWith('remote:')) {
|
|
49
|
+
return { kind: 'context', text: line, percent: this._percent };
|
|
50
|
+
}
|
|
51
|
+
return null;
|
|
52
|
+
}
|
|
53
|
+
get percent() { return this._percent; }
|
|
54
|
+
get details() { return this._details; }
|
|
12
55
|
get kind() { return 'progress'; }
|
|
13
56
|
}
|
|
14
57
|
export class PullProgressParser {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
58
|
+
_percent = 0;
|
|
59
|
+
_details = { text: '' };
|
|
60
|
+
parse(line) {
|
|
61
|
+
// Pull combines fetch + merge, so it can have receiving/resolving deltas
|
|
62
|
+
const progress = parseProgressLine(line);
|
|
63
|
+
if (progress && (line.includes('Receiving objects') || line.includes('Resolving deltas'))) {
|
|
64
|
+
this._percent = progress.percent;
|
|
65
|
+
this._details = { text: line };
|
|
66
|
+
return { kind: 'progress', percent: this._percent, details: this._details };
|
|
67
|
+
}
|
|
68
|
+
// remote: Counting objects, etc.
|
|
69
|
+
if (line.startsWith('remote:')) {
|
|
70
|
+
return { kind: 'context', text: line, percent: this._percent };
|
|
71
|
+
}
|
|
72
|
+
return null;
|
|
73
|
+
}
|
|
74
|
+
get percent() { return this._percent; }
|
|
75
|
+
get details() { return this._details; }
|
|
18
76
|
get kind() { return 'progress'; }
|
|
19
77
|
}
|
|
20
78
|
export class PushProgressParser {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
79
|
+
_percent = 0;
|
|
80
|
+
_details = { text: '' };
|
|
81
|
+
parse(line) {
|
|
82
|
+
// Writing objects: 10% (5/50)
|
|
83
|
+
const progress = parseProgressLine(line);
|
|
84
|
+
if (progress && line.includes('Writing objects')) {
|
|
85
|
+
this._percent = progress.percent;
|
|
86
|
+
this._details = { text: line };
|
|
87
|
+
return { kind: 'progress', percent: this._percent, details: this._details };
|
|
88
|
+
}
|
|
89
|
+
// remote: Resolving deltas: 100%, remote: Processing references, etc.
|
|
90
|
+
if (line.startsWith('remote:')) {
|
|
91
|
+
const remoteProgress = parseProgressLine(line);
|
|
92
|
+
if (remoteProgress) {
|
|
93
|
+
// remote lines that contain progress (e.g. remote: Resolving deltas: 100% (12/12))
|
|
94
|
+
this._percent = remoteProgress.percent;
|
|
95
|
+
this._details = { text: line };
|
|
96
|
+
return { kind: 'progress', percent: this._percent, details: this._details };
|
|
97
|
+
}
|
|
98
|
+
return { kind: 'context', text: line, percent: this._percent };
|
|
99
|
+
}
|
|
100
|
+
return null;
|
|
101
|
+
}
|
|
102
|
+
get percent() { return this._percent; }
|
|
103
|
+
get details() { return this._details; }
|
|
24
104
|
get kind() { return 'progress'; }
|
|
25
105
|
}
|
|
26
106
|
export class CloneProgressParser {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
107
|
+
_percent = 0;
|
|
108
|
+
_details = { text: '' };
|
|
109
|
+
parse(line) {
|
|
110
|
+
// Cloning into 'repo-name'...
|
|
111
|
+
if (line.startsWith('Cloning into')) {
|
|
112
|
+
return { kind: 'context', text: line, percent: 0 };
|
|
113
|
+
}
|
|
114
|
+
// Receiving objects: 15% (150/1000) — clone downloads objects
|
|
115
|
+
// Resolving deltas: 0% (0/2145) — clone resolves deltas
|
|
116
|
+
// Checking out files: 45% (230/512) — clone checks out working tree
|
|
117
|
+
const progress = parseProgressLine(line);
|
|
118
|
+
if (progress && (line.includes('Receiving objects') || line.includes('Resolving deltas') || line.includes('Checking out files'))) {
|
|
119
|
+
this._percent = progress.percent;
|
|
120
|
+
this._details = { text: line };
|
|
121
|
+
return { kind: 'progress', percent: this._percent, details: this._details };
|
|
122
|
+
}
|
|
123
|
+
// remote: Enumerating objects, remote: Counting objects, etc.
|
|
124
|
+
if (line.startsWith('remote:')) {
|
|
125
|
+
return { kind: 'context', text: line, percent: this._percent };
|
|
126
|
+
}
|
|
127
|
+
return null;
|
|
128
|
+
}
|
|
129
|
+
get percent() { return this._percent; }
|
|
130
|
+
get details() { return this._details; }
|
|
30
131
|
get kind() { return 'progress'; }
|
|
31
132
|
}
|
|
32
133
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/progress/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,4BAA4B,EAAE,MAAM,mBAAmB,CAAA;AAShE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/progress/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,10 @@
|
|
|
1
|
+
import { IGitOutput } from './index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Git revert does not produce progress output on stderr,
|
|
4
|
+
* so this parser remains effectively a stub for the interface.
|
|
5
|
+
*/
|
|
1
6
|
export declare class RevertProgressParser {
|
|
2
|
-
parse(
|
|
7
|
+
parse(_line: string): IGitOutput | null;
|
|
3
8
|
get percent(): number;
|
|
4
9
|
get details(): {
|
|
5
10
|
text: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"revert.js","sourceRoot":"","sources":["../../../src/lib/progress/revert.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"revert.js","sourceRoot":"","sources":["../../../src/lib/progress/revert.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,OAAO,oBAAoB;IACxB,KAAK,CAAC,KAAa;QACxB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,IAAW,OAAO;QAChB,OAAO,CAAC,CAAA;IACV,CAAC;IAED,IAAW,OAAO;QAChB,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,CAAA;IACrB,CAAC;IAED,IAAW,IAAI;QACb,OAAO,UAAU,CAAA;IACnB,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repository.js","sourceRoot":"","sources":["../../src/models/repository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;AAE5B,MAAM,OAAO,UAAU;IAIH;IACA;IAJF,IAAI,CAAQ;IAE5B,YACkB,IAAY,EACZ,
|
|
1
|
+
{"version":3,"file":"repository.js","sourceRoot":"","sources":["../../src/models/repository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;AAE5B,MAAM,OAAO,UAAU;IAIH;IACA;IAJF,IAAI,CAAQ;IAE5B,YACkB,IAAY,EACZ,KAAa,CAAC;QADd,SAAI,GAAJ,IAAI,CAAQ;QACZ,OAAE,GAAF,EAAE,CAAY;QAE9B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;IACjC,CAAC;IAED,IAAW,cAAc;QACvB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;IACrC,CAAC;CACF"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "git-chopstick-core",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.5",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -38,7 +38,8 @@
|
|
|
38
38
|
"clean": "rm -rf dist",
|
|
39
39
|
"build": "npm run clean && tsc",
|
|
40
40
|
"typecheck": "tsc --noEmit",
|
|
41
|
-
"
|
|
41
|
+
"test": "vitest run",
|
|
42
|
+
"prepublishOnly": "npm run typecheck && npm run build"
|
|
42
43
|
},
|
|
43
44
|
"dependencies": {
|
|
44
45
|
"byline": "^5.0.0",
|
|
@@ -60,6 +61,7 @@
|
|
|
60
61
|
"devDependencies": {
|
|
61
62
|
"@types/byline": "^4.2.36",
|
|
62
63
|
"@types/node": "^22.19.20",
|
|
63
|
-
"typescript": "^5.9.3"
|
|
64
|
+
"typescript": "^5.9.3",
|
|
65
|
+
"vitest": "^4.1.8"
|
|
64
66
|
}
|
|
65
67
|
}
|