@anvil-works/anvil-cli 0.7.2 → 0.7.3-canary.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/dist/WatchSession.d.ts +9 -0
- package/dist/WatchSession.d.ts.map +1 -1
- package/dist/cli.js +56 -12
- package/dist/index.js +56 -12
- package/dist/services/git.d.ts +24 -2
- package/dist/services/git.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/WatchSession.d.ts
CHANGED
|
@@ -81,6 +81,15 @@ export interface WatchSessionEvents {
|
|
|
81
81
|
retries: number;
|
|
82
82
|
reason: string;
|
|
83
83
|
} & WatchDiagnostic;
|
|
84
|
+
"fetch-retry": {
|
|
85
|
+
attempt: number;
|
|
86
|
+
delayMs: number;
|
|
87
|
+
error: string;
|
|
88
|
+
};
|
|
89
|
+
"fetch-retry-resolved": {
|
|
90
|
+
attempts: number;
|
|
91
|
+
outcome: "succeeded" | "failed";
|
|
92
|
+
};
|
|
84
93
|
}
|
|
85
94
|
export type WatchDiagnosticEventName = "save-failed" | "validation-failed" | "max-retries-exceeded" | "remote-sync-failed" | "sync-conflict" | "env-branch-change-required" | "env-branch-switch-failed";
|
|
86
95
|
export type WatchDiagnosticEventPayload = WatchSessionEvents[WatchDiagnosticEventName];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WatchSession.d.ts","sourceRoot":"","sources":["../src/WatchSession.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"WatchSession.d.ts","sourceRoot":"","sources":["../src/WatchSession.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.js
CHANGED
|
@@ -14642,10 +14642,23 @@ Promise.resolve(executeGitCredentialOperation(process.argv[2] || "get", {
|
|
|
14642
14642
|
return [];
|
|
14643
14643
|
}
|
|
14644
14644
|
}
|
|
14645
|
-
|
|
14645
|
+
const external_timers_promises_namespaceObject = require("timers/promises");
|
|
14646
|
+
const WANT_NOT_VALID_RE = /\bwant\s+[0-9a-f]{7,40}\s+not valid\b/i;
|
|
14647
|
+
const FETCH_RETRY_DELAY_MS = 200;
|
|
14648
|
+
function isWantNotValidError(error) {
|
|
14649
|
+
return WANT_NOT_VALID_RE.test(error.message || "");
|
|
14650
|
+
}
|
|
14651
|
+
class GitService extends Emitter {
|
|
14646
14652
|
git;
|
|
14647
14653
|
repoPath;
|
|
14654
|
+
static INDEX_LOCK_RETRY_DELAYS_MS = [
|
|
14655
|
+
25,
|
|
14656
|
+
50,
|
|
14657
|
+
100,
|
|
14658
|
+
200
|
|
14659
|
+
];
|
|
14648
14660
|
constructor(repoPath){
|
|
14661
|
+
super();
|
|
14649
14662
|
this.repoPath = external_path_default().resolve(repoPath);
|
|
14650
14663
|
this.git = esm_default(this.repoPath);
|
|
14651
14664
|
}
|
|
@@ -14804,31 +14817,60 @@ Promise.resolve(executeGitCredentialOperation(process.argv[2] || "get", {
|
|
|
14804
14817
|
return !status.isClean;
|
|
14805
14818
|
}
|
|
14806
14819
|
async fetch(url, refSpec) {
|
|
14807
|
-
|
|
14820
|
+
let attempt = 0;
|
|
14821
|
+
while(true)try {
|
|
14808
14822
|
await this.git.fetch([
|
|
14809
14823
|
url,
|
|
14810
14824
|
refSpec
|
|
14811
14825
|
]);
|
|
14826
|
+
if (attempt > 0) this.emit("fetch-retry-resolved", {
|
|
14827
|
+
attempts: attempt,
|
|
14828
|
+
outcome: "succeeded"
|
|
14829
|
+
});
|
|
14830
|
+
return;
|
|
14812
14831
|
} catch (e) {
|
|
14813
|
-
|
|
14832
|
+
const err = e;
|
|
14833
|
+
if (!isWantNotValidError(err)) {
|
|
14834
|
+
if (attempt > 0) this.emit("fetch-retry-resolved", {
|
|
14835
|
+
attempts: attempt,
|
|
14836
|
+
outcome: "failed"
|
|
14837
|
+
});
|
|
14838
|
+
throw errors_createGitError.fetchFailed(err.message);
|
|
14839
|
+
}
|
|
14840
|
+
attempt++;
|
|
14841
|
+
this.emit("fetch-retry", {
|
|
14842
|
+
attempt,
|
|
14843
|
+
delayMs: FETCH_RETRY_DELAY_MS,
|
|
14844
|
+
error: err.message
|
|
14845
|
+
});
|
|
14846
|
+
logger_logger.verbose(`git fetch race (attempt ${attempt}, sleeping ${FETCH_RETRY_DELAY_MS}ms): ${err.message}`);
|
|
14847
|
+
await (0, external_timers_promises_namespaceObject.setTimeout)(FETCH_RETRY_DELAY_MS);
|
|
14814
14848
|
}
|
|
14815
14849
|
}
|
|
14816
14850
|
async reset(ref, mode = "mixed") {
|
|
14817
|
-
|
|
14818
|
-
await this.git.reset([
|
|
14851
|
+
await this.runGitCommandWithIndexLockRetry("reset", ()=>this.git.reset([
|
|
14819
14852
|
`--${mode}`,
|
|
14820
14853
|
ref
|
|
14821
|
-
]);
|
|
14822
|
-
} catch (e) {
|
|
14823
|
-
throw errors_createGitError.commandFailed("reset", e.message);
|
|
14824
|
-
}
|
|
14854
|
+
]));
|
|
14825
14855
|
}
|
|
14826
14856
|
async checkout(paths) {
|
|
14827
|
-
|
|
14828
|
-
|
|
14857
|
+
await this.runGitCommandWithIndexLockRetry("checkout", ()=>this.git.checkout(paths));
|
|
14858
|
+
}
|
|
14859
|
+
async runGitCommandWithIndexLockRetry(command, operation) {
|
|
14860
|
+
let lastError;
|
|
14861
|
+
for(let attempt = 0; attempt <= GitService.INDEX_LOCK_RETRY_DELAYS_MS.length; attempt += 1)try {
|
|
14862
|
+
await operation();
|
|
14863
|
+
return;
|
|
14829
14864
|
} catch (e) {
|
|
14830
|
-
|
|
14865
|
+
lastError = e;
|
|
14866
|
+
if (!this.isIndexLockError(e) || attempt === GitService.INDEX_LOCK_RETRY_DELAYS_MS.length) throw errors_createGitError.commandFailed(command, e.message);
|
|
14867
|
+
await (0, external_timers_promises_namespaceObject.setTimeout)(GitService.INDEX_LOCK_RETRY_DELAYS_MS[attempt]);
|
|
14831
14868
|
}
|
|
14869
|
+
throw errors_createGitError.commandFailed(command, lastError.message);
|
|
14870
|
+
}
|
|
14871
|
+
isIndexLockError(error) {
|
|
14872
|
+
const message = error.message ?? "";
|
|
14873
|
+
return message.includes("Unable to create") && message.includes("index.lock") && message.includes("File exists");
|
|
14832
14874
|
}
|
|
14833
14875
|
async stash(message) {
|
|
14834
14876
|
try {
|
|
@@ -18989,6 +19031,8 @@ print(json.dumps({"issues": issues}))
|
|
|
18989
19031
|
this.dependencyWatchEnabled = options.dependencyWatch ?? true;
|
|
18990
19032
|
this.editSession = "anvil-sync-" + Math.random().toString(36).substring(2, 15);
|
|
18991
19033
|
this.gitService = new GitService(this.repoPath);
|
|
19034
|
+
this.gitService.on("fetch-retry", (data)=>this.emit("fetch-retry", data));
|
|
19035
|
+
this.gitService.on("fetch-retry-resolved", (data)=>this.emit("fetch-retry-resolved", data));
|
|
18992
19036
|
this.editorYaml = new EditorYamlManager(this.repoPath);
|
|
18993
19037
|
logger_logger.debug(`[Session ${this.sessionId}]`, `Created for app ${appId} on branch ${options.currentBranch}`);
|
|
18994
19038
|
}
|
package/dist/index.js
CHANGED
|
@@ -14671,10 +14671,23 @@ Promise.resolve(executeGitCredentialOperation(process.argv[2] || "get", {
|
|
|
14671
14671
|
force: true
|
|
14672
14672
|
});
|
|
14673
14673
|
}
|
|
14674
|
-
|
|
14674
|
+
const external_timers_promises_namespaceObject = require("timers/promises");
|
|
14675
|
+
const WANT_NOT_VALID_RE = /\bwant\s+[0-9a-f]{7,40}\s+not valid\b/i;
|
|
14676
|
+
const FETCH_RETRY_DELAY_MS = 200;
|
|
14677
|
+
function isWantNotValidError(error) {
|
|
14678
|
+
return WANT_NOT_VALID_RE.test(error.message || "");
|
|
14679
|
+
}
|
|
14680
|
+
class git_GitService extends Emitter {
|
|
14675
14681
|
git;
|
|
14676
14682
|
repoPath;
|
|
14683
|
+
static INDEX_LOCK_RETRY_DELAYS_MS = [
|
|
14684
|
+
25,
|
|
14685
|
+
50,
|
|
14686
|
+
100,
|
|
14687
|
+
200
|
|
14688
|
+
];
|
|
14677
14689
|
constructor(repoPath){
|
|
14690
|
+
super();
|
|
14678
14691
|
this.repoPath = external_path_default().resolve(repoPath);
|
|
14679
14692
|
this.git = esm_default(this.repoPath);
|
|
14680
14693
|
}
|
|
@@ -14833,31 +14846,60 @@ Promise.resolve(executeGitCredentialOperation(process.argv[2] || "get", {
|
|
|
14833
14846
|
return !status.isClean;
|
|
14834
14847
|
}
|
|
14835
14848
|
async fetch(url, refSpec) {
|
|
14836
|
-
|
|
14849
|
+
let attempt = 0;
|
|
14850
|
+
while(true)try {
|
|
14837
14851
|
await this.git.fetch([
|
|
14838
14852
|
url,
|
|
14839
14853
|
refSpec
|
|
14840
14854
|
]);
|
|
14855
|
+
if (attempt > 0) this.emit("fetch-retry-resolved", {
|
|
14856
|
+
attempts: attempt,
|
|
14857
|
+
outcome: "succeeded"
|
|
14858
|
+
});
|
|
14859
|
+
return;
|
|
14841
14860
|
} catch (e) {
|
|
14842
|
-
|
|
14861
|
+
const err = e;
|
|
14862
|
+
if (!isWantNotValidError(err)) {
|
|
14863
|
+
if (attempt > 0) this.emit("fetch-retry-resolved", {
|
|
14864
|
+
attempts: attempt,
|
|
14865
|
+
outcome: "failed"
|
|
14866
|
+
});
|
|
14867
|
+
throw errors_createGitError.fetchFailed(err.message);
|
|
14868
|
+
}
|
|
14869
|
+
attempt++;
|
|
14870
|
+
this.emit("fetch-retry", {
|
|
14871
|
+
attempt,
|
|
14872
|
+
delayMs: FETCH_RETRY_DELAY_MS,
|
|
14873
|
+
error: err.message
|
|
14874
|
+
});
|
|
14875
|
+
logger_logger.verbose(`git fetch race (attempt ${attempt}, sleeping ${FETCH_RETRY_DELAY_MS}ms): ${err.message}`);
|
|
14876
|
+
await (0, external_timers_promises_namespaceObject.setTimeout)(FETCH_RETRY_DELAY_MS);
|
|
14843
14877
|
}
|
|
14844
14878
|
}
|
|
14845
14879
|
async reset(ref, mode = "mixed") {
|
|
14846
|
-
|
|
14847
|
-
await this.git.reset([
|
|
14880
|
+
await this.runGitCommandWithIndexLockRetry("reset", ()=>this.git.reset([
|
|
14848
14881
|
`--${mode}`,
|
|
14849
14882
|
ref
|
|
14850
|
-
]);
|
|
14851
|
-
} catch (e) {
|
|
14852
|
-
throw errors_createGitError.commandFailed("reset", e.message);
|
|
14853
|
-
}
|
|
14883
|
+
]));
|
|
14854
14884
|
}
|
|
14855
14885
|
async checkout(paths) {
|
|
14856
|
-
|
|
14857
|
-
|
|
14886
|
+
await this.runGitCommandWithIndexLockRetry("checkout", ()=>this.git.checkout(paths));
|
|
14887
|
+
}
|
|
14888
|
+
async runGitCommandWithIndexLockRetry(command, operation) {
|
|
14889
|
+
let lastError;
|
|
14890
|
+
for(let attempt = 0; attempt <= git_GitService.INDEX_LOCK_RETRY_DELAYS_MS.length; attempt += 1)try {
|
|
14891
|
+
await operation();
|
|
14892
|
+
return;
|
|
14858
14893
|
} catch (e) {
|
|
14859
|
-
|
|
14894
|
+
lastError = e;
|
|
14895
|
+
if (!this.isIndexLockError(e) || attempt === git_GitService.INDEX_LOCK_RETRY_DELAYS_MS.length) throw errors_createGitError.commandFailed(command, e.message);
|
|
14896
|
+
await (0, external_timers_promises_namespaceObject.setTimeout)(git_GitService.INDEX_LOCK_RETRY_DELAYS_MS[attempt]);
|
|
14860
14897
|
}
|
|
14898
|
+
throw errors_createGitError.commandFailed(command, lastError.message);
|
|
14899
|
+
}
|
|
14900
|
+
isIndexLockError(error) {
|
|
14901
|
+
const message = error.message ?? "";
|
|
14902
|
+
return message.includes("Unable to create") && message.includes("index.lock") && message.includes("File exists");
|
|
14861
14903
|
}
|
|
14862
14904
|
async stash(message) {
|
|
14863
14905
|
try {
|
|
@@ -19018,6 +19060,8 @@ print(json.dumps({"issues": issues}))
|
|
|
19018
19060
|
this.dependencyWatchEnabled = options.dependencyWatch ?? true;
|
|
19019
19061
|
this.editSession = "anvil-sync-" + Math.random().toString(36).substring(2, 15);
|
|
19020
19062
|
this.gitService = new git_GitService(this.repoPath);
|
|
19063
|
+
this.gitService.on("fetch-retry", (data)=>this.emit("fetch-retry", data));
|
|
19064
|
+
this.gitService.on("fetch-retry-resolved", (data)=>this.emit("fetch-retry-resolved", data));
|
|
19021
19065
|
this.editorYaml = new EditorYamlManager(this.repoPath);
|
|
19022
19066
|
logger_logger.debug(`[Session ${this.sessionId}]`, `Created for app ${appId} on branch ${options.currentBranch}`);
|
|
19023
19067
|
}
|
package/dist/services/git.d.ts
CHANGED
|
@@ -1,4 +1,18 @@
|
|
|
1
1
|
import { SimpleGit } from "simple-git";
|
|
2
|
+
import { Emitter } from "../Emitter";
|
|
3
|
+
export interface GitServiceEvents {
|
|
4
|
+
/** Emitted before each retry sleep when the server replies `want ... not valid`. */
|
|
5
|
+
"fetch-retry": {
|
|
6
|
+
attempt: number;
|
|
7
|
+
delayMs: number;
|
|
8
|
+
error: string;
|
|
9
|
+
};
|
|
10
|
+
/** Emitted once at the end of a retry cycle (only after at least one retry). */
|
|
11
|
+
"fetch-retry-resolved": {
|
|
12
|
+
attempts: number;
|
|
13
|
+
outcome: "succeeded" | "failed";
|
|
14
|
+
};
|
|
15
|
+
}
|
|
2
16
|
export interface GitStatus {
|
|
3
17
|
isClean: boolean;
|
|
4
18
|
modified: string[];
|
|
@@ -26,9 +40,10 @@ export interface CommitInfo {
|
|
|
26
40
|
/**
|
|
27
41
|
* Git service class wrapping simple-git with typed methods.
|
|
28
42
|
*/
|
|
29
|
-
export declare class GitService {
|
|
43
|
+
export declare class GitService extends Emitter<GitServiceEvents> {
|
|
30
44
|
private git;
|
|
31
45
|
private repoPath;
|
|
46
|
+
private static readonly INDEX_LOCK_RETRY_DELAYS_MS;
|
|
32
47
|
constructor(repoPath: string);
|
|
33
48
|
/**
|
|
34
49
|
* Get the underlying SimpleGit instance for advanced operations.
|
|
@@ -84,7 +99,12 @@ export declare class GitService {
|
|
|
84
99
|
hasUncommittedChanges(): Promise<boolean>;
|
|
85
100
|
/**
|
|
86
101
|
* Fetch from a remote URL to a local ref.
|
|
87
|
-
*
|
|
102
|
+
*
|
|
103
|
+
* Retries indefinitely on `want <sha> not valid` from the server; every
|
|
104
|
+
* other failure throws immediately. See the note next to WANT_NOT_VALID_RE.
|
|
105
|
+
* Emits `fetch-retry` before each sleep and `fetch-retry-resolved` once at
|
|
106
|
+
* the end of a retry cycle.
|
|
107
|
+
* @throws {GitError} if fetch fails with anything other than the race
|
|
88
108
|
*/
|
|
89
109
|
fetch(url: string, refSpec: string): Promise<void>;
|
|
90
110
|
/**
|
|
@@ -97,6 +117,8 @@ export declare class GitService {
|
|
|
97
117
|
* @throws {GitError} if git command fails
|
|
98
118
|
*/
|
|
99
119
|
checkout(paths: string[]): Promise<void>;
|
|
120
|
+
private runGitCommandWithIndexLockRetry;
|
|
121
|
+
private isIndexLockError;
|
|
100
122
|
/**
|
|
101
123
|
* Stash uncommitted changes (including untracked files).
|
|
102
124
|
* Returns true if anything was stashed, false if working tree was clean.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../src/services/git.ts"],"names":[],"mappings":"AAOA,OAAkB,EAAgB,SAAS,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../src/services/git.ts"],"names":[],"mappings":"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"}
|