sync-worktrees 1.7.5 → 2.0.0
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 +10 -5
- package/dist/index.js +2862 -203
- package/dist/index.js.map +7 -1
- package/package.json +19 -11
- package/dist/constants.d.ts +0 -54
- package/dist/constants.d.ts.map +0 -1
- package/dist/constants.js +0 -66
- package/dist/constants.js.map +0 -1
- package/dist/errors/index.d.ts +0 -51
- package/dist/errors/index.d.ts.map +0 -1
- package/dist/errors/index.js +0 -119
- package/dist/errors/index.js.map +0 -1
- package/dist/index.d.ts +0 -3
- package/dist/index.d.ts.map +0 -1
- package/dist/services/config-loader.service.d.ts +0 -9
- package/dist/services/config-loader.service.d.ts.map +0 -1
- package/dist/services/config-loader.service.js +0 -193
- package/dist/services/config-loader.service.js.map +0 -1
- package/dist/services/git.service.d.ts +0 -49
- package/dist/services/git.service.d.ts.map +0 -1
- package/dist/services/git.service.js +0 -746
- package/dist/services/git.service.js.map +0 -1
- package/dist/services/path-resolution.service.d.ts +0 -7
- package/dist/services/path-resolution.service.d.ts.map +0 -1
- package/dist/services/path-resolution.service.js +0 -58
- package/dist/services/path-resolution.service.js.map +0 -1
- package/dist/services/worktree-metadata.service.d.ts +0 -22
- package/dist/services/worktree-metadata.service.d.ts.map +0 -1
- package/dist/services/worktree-metadata.service.js +0 -276
- package/dist/services/worktree-metadata.service.js.map +0 -1
- package/dist/services/worktree-status.service.d.ts +0 -28
- package/dist/services/worktree-status.service.d.ts.map +0 -1
- package/dist/services/worktree-status.service.js +0 -229
- package/dist/services/worktree-status.service.js.map +0 -1
- package/dist/services/worktree-sync.service.d.ts +0 -16
- package/dist/services/worktree-sync.service.d.ts.map +0 -1
- package/dist/services/worktree-sync.service.js +0 -434
- package/dist/services/worktree-sync.service.js.map +0 -1
- package/dist/types/index.d.ts +0 -32
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/index.js +0 -3
- package/dist/types/index.js.map +0 -1
- package/dist/types/sync-metadata.d.ts +0 -16
- package/dist/types/sync-metadata.d.ts.map +0 -1
- package/dist/types/sync-metadata.js +0 -3
- package/dist/types/sync-metadata.js.map +0 -1
- package/dist/utils/cli.d.ts +0 -14
- package/dist/utils/cli.d.ts.map +0 -1
- package/dist/utils/cli.js +0 -117
- package/dist/utils/cli.js.map +0 -1
- package/dist/utils/config-generator.d.ts +0 -4
- package/dist/utils/config-generator.d.ts.map +0 -1
- package/dist/utils/config-generator.js +0 -112
- package/dist/utils/config-generator.js.map +0 -1
- package/dist/utils/date-filter.d.ts +0 -10
- package/dist/utils/date-filter.d.ts.map +0 -1
- package/dist/utils/date-filter.js +0 -47
- package/dist/utils/date-filter.js.map +0 -1
- package/dist/utils/git-url.d.ts +0 -15
- package/dist/utils/git-url.d.ts.map +0 -1
- package/dist/utils/git-url.js +0 -46
- package/dist/utils/git-url.js.map +0 -1
- package/dist/utils/interactive.d.ts +0 -3
- package/dist/utils/interactive.d.ts.map +0 -1
- package/dist/utils/interactive.js +0 -195
- package/dist/utils/interactive.js.map +0 -1
- package/dist/utils/lfs-error.d.ts +0 -23
- package/dist/utils/lfs-error.d.ts.map +0 -1
- package/dist/utils/lfs-error.js +0 -45
- package/dist/utils/lfs-error.js.map +0 -1
- package/dist/utils/retry.d.ts +0 -15
- package/dist/utils/retry.d.ts.map +0 -1
- package/dist/utils/retry.js +0 -78
- package/dist/utils/retry.js.map +0 -1
package/dist/utils/lfs-error.js
DELETED
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.LFS_ERROR_PATTERNS = void 0;
|
|
4
|
-
exports.getErrorMessage = getErrorMessage;
|
|
5
|
-
exports.isLfsError = isLfsError;
|
|
6
|
-
exports.isLfsErrorFromError = isLfsErrorFromError;
|
|
7
|
-
/**
|
|
8
|
-
* Extracts error message from unknown error type
|
|
9
|
-
* @param error The error to extract message from
|
|
10
|
-
* @returns The error message string
|
|
11
|
-
*/
|
|
12
|
-
function getErrorMessage(error) {
|
|
13
|
-
if (error instanceof Error) {
|
|
14
|
-
return error.message;
|
|
15
|
-
}
|
|
16
|
-
if (error && typeof error === "object" && "message" in error) {
|
|
17
|
-
return String(error.message);
|
|
18
|
-
}
|
|
19
|
-
return String(error);
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* Common LFS error patterns that indicate Git LFS-related failures
|
|
23
|
-
*/
|
|
24
|
-
exports.LFS_ERROR_PATTERNS = Object.freeze([
|
|
25
|
-
"smudge filter lfs failed",
|
|
26
|
-
"Object does not exist on the server",
|
|
27
|
-
"external filter 'git-lfs filter-process' failed",
|
|
28
|
-
]);
|
|
29
|
-
/**
|
|
30
|
-
* Checks if an error message contains any known LFS error patterns
|
|
31
|
-
* @param errorMessage The error message to check
|
|
32
|
-
* @returns true if the error is related to Git LFS
|
|
33
|
-
*/
|
|
34
|
-
function isLfsError(errorMessage) {
|
|
35
|
-
return exports.LFS_ERROR_PATTERNS.some((pattern) => errorMessage.includes(pattern));
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* Checks if an error object contains any known LFS error patterns
|
|
39
|
-
* @param error The error object to check
|
|
40
|
-
* @returns true if the error is related to Git LFS
|
|
41
|
-
*/
|
|
42
|
-
function isLfsErrorFromError(error) {
|
|
43
|
-
return isLfsError(getErrorMessage(error));
|
|
44
|
-
}
|
|
45
|
-
//# sourceMappingURL=lfs-error.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"lfs-error.js","sourceRoot":"","sources":["../../src/utils/lfs-error.ts"],"names":[],"mappings":";;;AAKA,0CAQC;AAgBD,gCAEC;AAOD,kDAEC;AAxCD;;;;GAIG;AACH,SAAgB,eAAe,CAAC,KAAc;IAC5C,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAC,OAAO,CAAC;IACvB,CAAC;IACD,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,SAAS,IAAI,KAAK,EAAE,CAAC;QAC7D,OAAO,MAAM,CAAE,KAA8B,CAAC,OAAO,CAAC,CAAC;IACzD,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AAED;;GAEG;AACU,QAAA,kBAAkB,GAAG,MAAM,CAAC,MAAM,CAAC;IAC9C,0BAA0B;IAC1B,qCAAqC;IACrC,iDAAiD;CACzC,CAAC,CAAC;AAEZ;;;;GAIG;AACH,SAAgB,UAAU,CAAC,YAAoB;IAC7C,OAAO,0BAAkB,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;AAC9E,CAAC;AAED;;;;GAIG;AACH,SAAgB,mBAAmB,CAAC,KAAc;IAChD,OAAO,UAAU,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;AAC5C,CAAC"}
|
package/dist/utils/retry.d.ts
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
export interface LfsErrorContext {
|
|
2
|
-
isLfsError: boolean;
|
|
3
|
-
}
|
|
4
|
-
export interface RetryOptions {
|
|
5
|
-
maxAttempts?: number | "unlimited";
|
|
6
|
-
maxLfsRetries?: number;
|
|
7
|
-
initialDelayMs?: number;
|
|
8
|
-
maxDelayMs?: number;
|
|
9
|
-
backoffMultiplier?: number;
|
|
10
|
-
shouldRetry?: (error: unknown, context?: LfsErrorContext) => boolean;
|
|
11
|
-
onRetry?: (error: unknown, attempt: number, context?: LfsErrorContext) => void;
|
|
12
|
-
lfsRetryHandler?: (context: LfsErrorContext) => void;
|
|
13
|
-
}
|
|
14
|
-
export declare function retry<T>(fn: () => Promise<T>, options?: RetryOptions): Promise<T>;
|
|
15
|
-
//# sourceMappingURL=retry.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"retry.d.ts","sourceRoot":"","sources":["../../src/utils/retry.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,WAAW,CAAC,EAAE,MAAM,GAAG,WAAW,CAAC;IACnC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,eAAe,KAAK,OAAO,CAAC;IACrE,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,KAAK,IAAI,CAAC;IAC/E,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,IAAI,CAAC;CACtD;AAyCD,wBAAsB,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,CAAC,CAAC,CAmD3F"}
|
package/dist/utils/retry.js
DELETED
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.retry = retry;
|
|
4
|
-
const lfs_error_1 = require("./lfs-error");
|
|
5
|
-
const DEFAULT_OPTIONS = {
|
|
6
|
-
maxAttempts: "unlimited",
|
|
7
|
-
maxLfsRetries: 2,
|
|
8
|
-
initialDelayMs: 1000,
|
|
9
|
-
maxDelayMs: 600000, // 10 minutes
|
|
10
|
-
backoffMultiplier: 2,
|
|
11
|
-
shouldRetry: (error, context) => {
|
|
12
|
-
const err = error;
|
|
13
|
-
// Check for LFS errors
|
|
14
|
-
if ((0, lfs_error_1.isLfsErrorFromError)(error)) {
|
|
15
|
-
if (context) {
|
|
16
|
-
context.isLfsError = true;
|
|
17
|
-
}
|
|
18
|
-
return true;
|
|
19
|
-
}
|
|
20
|
-
if (err.code === "ENOTFOUND" || err.code === "ECONNREFUSED" || err.code === "ETIMEDOUT") {
|
|
21
|
-
return true;
|
|
22
|
-
}
|
|
23
|
-
if (err.code === "EBUSY" || err.code === "ENOENT" || err.code === "EACCES") {
|
|
24
|
-
return true;
|
|
25
|
-
}
|
|
26
|
-
if (err.message?.includes("Could not read from remote repository")) {
|
|
27
|
-
return true;
|
|
28
|
-
}
|
|
29
|
-
if (err.message?.includes("fatal: unable to access")) {
|
|
30
|
-
return true;
|
|
31
|
-
}
|
|
32
|
-
return false;
|
|
33
|
-
},
|
|
34
|
-
onRetry: () => { },
|
|
35
|
-
lfsRetryHandler: (_context) => { },
|
|
36
|
-
};
|
|
37
|
-
async function retry(fn, options = {}) {
|
|
38
|
-
const opts = { ...DEFAULT_OPTIONS, ...options };
|
|
39
|
-
let attempt = 1;
|
|
40
|
-
let lfsAttempt = 0;
|
|
41
|
-
const lfsContext = { isLfsError: false };
|
|
42
|
-
while (true) {
|
|
43
|
-
try {
|
|
44
|
-
return await fn();
|
|
45
|
-
}
|
|
46
|
-
catch (error) {
|
|
47
|
-
// Reset LFS error flag for each attempt
|
|
48
|
-
lfsContext.isLfsError = false;
|
|
49
|
-
// Check if we should retry
|
|
50
|
-
if (!opts.shouldRetry(error, lfsContext)) {
|
|
51
|
-
throw error;
|
|
52
|
-
}
|
|
53
|
-
// Track LFS attempts separately
|
|
54
|
-
if (lfsContext.isLfsError) {
|
|
55
|
-
lfsAttempt++;
|
|
56
|
-
// Check if we've exceeded LFS retry limit
|
|
57
|
-
if (lfsAttempt > opts.maxLfsRetries) {
|
|
58
|
-
const err = error;
|
|
59
|
-
throw new Error(`LFS error retry limit exceeded (${opts.maxLfsRetries} attempts). ` +
|
|
60
|
-
`Consider using --skip-lfs option to bypass LFS downloads.`, { cause: err });
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
const isLastAttempt = opts.maxAttempts !== "unlimited" && attempt >= opts.maxAttempts;
|
|
64
|
-
if (isLastAttempt) {
|
|
65
|
-
throw error;
|
|
66
|
-
}
|
|
67
|
-
// Handle LFS errors specifically
|
|
68
|
-
if (lfsContext.isLfsError && opts.lfsRetryHandler) {
|
|
69
|
-
opts.lfsRetryHandler(lfsContext);
|
|
70
|
-
}
|
|
71
|
-
const delay = Math.min(opts.initialDelayMs * Math.pow(opts.backoffMultiplier, attempt - 1), opts.maxDelayMs);
|
|
72
|
-
opts.onRetry(error, attempt, lfsContext);
|
|
73
|
-
await new Promise((resolve) => setTimeout(resolve, delay));
|
|
74
|
-
attempt++;
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
//# sourceMappingURL=retry.js.map
|
package/dist/utils/retry.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"retry.js","sourceRoot":"","sources":["../../src/utils/retry.ts"],"names":[],"mappings":"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"}
|