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.
Files changed (74) hide show
  1. package/README.md +10 -5
  2. package/dist/index.js +2862 -203
  3. package/dist/index.js.map +7 -1
  4. package/package.json +19 -11
  5. package/dist/constants.d.ts +0 -54
  6. package/dist/constants.d.ts.map +0 -1
  7. package/dist/constants.js +0 -66
  8. package/dist/constants.js.map +0 -1
  9. package/dist/errors/index.d.ts +0 -51
  10. package/dist/errors/index.d.ts.map +0 -1
  11. package/dist/errors/index.js +0 -119
  12. package/dist/errors/index.js.map +0 -1
  13. package/dist/index.d.ts +0 -3
  14. package/dist/index.d.ts.map +0 -1
  15. package/dist/services/config-loader.service.d.ts +0 -9
  16. package/dist/services/config-loader.service.d.ts.map +0 -1
  17. package/dist/services/config-loader.service.js +0 -193
  18. package/dist/services/config-loader.service.js.map +0 -1
  19. package/dist/services/git.service.d.ts +0 -49
  20. package/dist/services/git.service.d.ts.map +0 -1
  21. package/dist/services/git.service.js +0 -746
  22. package/dist/services/git.service.js.map +0 -1
  23. package/dist/services/path-resolution.service.d.ts +0 -7
  24. package/dist/services/path-resolution.service.d.ts.map +0 -1
  25. package/dist/services/path-resolution.service.js +0 -58
  26. package/dist/services/path-resolution.service.js.map +0 -1
  27. package/dist/services/worktree-metadata.service.d.ts +0 -22
  28. package/dist/services/worktree-metadata.service.d.ts.map +0 -1
  29. package/dist/services/worktree-metadata.service.js +0 -276
  30. package/dist/services/worktree-metadata.service.js.map +0 -1
  31. package/dist/services/worktree-status.service.d.ts +0 -28
  32. package/dist/services/worktree-status.service.d.ts.map +0 -1
  33. package/dist/services/worktree-status.service.js +0 -229
  34. package/dist/services/worktree-status.service.js.map +0 -1
  35. package/dist/services/worktree-sync.service.d.ts +0 -16
  36. package/dist/services/worktree-sync.service.d.ts.map +0 -1
  37. package/dist/services/worktree-sync.service.js +0 -434
  38. package/dist/services/worktree-sync.service.js.map +0 -1
  39. package/dist/types/index.d.ts +0 -32
  40. package/dist/types/index.d.ts.map +0 -1
  41. package/dist/types/index.js +0 -3
  42. package/dist/types/index.js.map +0 -1
  43. package/dist/types/sync-metadata.d.ts +0 -16
  44. package/dist/types/sync-metadata.d.ts.map +0 -1
  45. package/dist/types/sync-metadata.js +0 -3
  46. package/dist/types/sync-metadata.js.map +0 -1
  47. package/dist/utils/cli.d.ts +0 -14
  48. package/dist/utils/cli.d.ts.map +0 -1
  49. package/dist/utils/cli.js +0 -117
  50. package/dist/utils/cli.js.map +0 -1
  51. package/dist/utils/config-generator.d.ts +0 -4
  52. package/dist/utils/config-generator.d.ts.map +0 -1
  53. package/dist/utils/config-generator.js +0 -112
  54. package/dist/utils/config-generator.js.map +0 -1
  55. package/dist/utils/date-filter.d.ts +0 -10
  56. package/dist/utils/date-filter.d.ts.map +0 -1
  57. package/dist/utils/date-filter.js +0 -47
  58. package/dist/utils/date-filter.js.map +0 -1
  59. package/dist/utils/git-url.d.ts +0 -15
  60. package/dist/utils/git-url.d.ts.map +0 -1
  61. package/dist/utils/git-url.js +0 -46
  62. package/dist/utils/git-url.js.map +0 -1
  63. package/dist/utils/interactive.d.ts +0 -3
  64. package/dist/utils/interactive.d.ts.map +0 -1
  65. package/dist/utils/interactive.js +0 -195
  66. package/dist/utils/interactive.js.map +0 -1
  67. package/dist/utils/lfs-error.d.ts +0 -23
  68. package/dist/utils/lfs-error.d.ts.map +0 -1
  69. package/dist/utils/lfs-error.js +0 -45
  70. package/dist/utils/lfs-error.js.map +0 -1
  71. package/dist/utils/retry.d.ts +0 -15
  72. package/dist/utils/retry.d.ts.map +0 -1
  73. package/dist/utils/retry.js +0 -78
  74. package/dist/utils/retry.js.map +0 -1
@@ -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"}
@@ -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"}
@@ -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
@@ -1 +0,0 @@
1
- {"version":3,"file":"retry.js","sourceRoot":"","sources":["../../src/utils/retry.ts"],"names":[],"mappings":"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"}