@anvil-works/anvil-cli 0.7.0-canary.12 → 0.7.0-canary.14
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 +1 -0
- package/dist/WatchSession.d.ts.map +1 -1
- package/dist/cli.js +122 -40
- package/dist/index.js +122 -40
- package/dist/services/git.d.ts +10 -0
- package/dist/services/git.d.ts.map +1 -1
- package/dist/watch/SaveProcessor.d.ts +4 -1
- package/dist/watch/SaveProcessor.d.ts.map +1 -1
- package/dist/watch/SyncManager.d.ts +6 -1
- package/dist/watch/SyncManager.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/WatchSession.d.ts
CHANGED
|
@@ -136,6 +136,7 @@ export declare class WatchSession extends Emitter<WatchSessionEvents> {
|
|
|
136
136
|
resumeAfterUserInput(): void;
|
|
137
137
|
initialize(): Promise<void>;
|
|
138
138
|
private initializeProcessors;
|
|
139
|
+
private syncAfterSave;
|
|
139
140
|
private connectWebSocket;
|
|
140
141
|
private handleDependencyRepoUpdate;
|
|
141
142
|
private queueDependencyRefresh;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WatchSession.d.ts","sourceRoot":"","sources":["../src/WatchSession.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EACH,uBAAuB,EACvB,mBAAmB,EAOtB,MAAM,eAAe,CAAC;AAcvB,OAAO,
|
|
1
|
+
{"version":3,"file":"WatchSession.d.ts","sourceRoot":"","sources":["../src/WatchSession.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.js
CHANGED
|
@@ -14899,6 +14899,32 @@ Promise.resolve(executeGitCredentialOperation(process.argv[2] || "get", {
|
|
|
14899
14899
|
throw errors_createGitError.commandFailed("rebase --abort", e.message);
|
|
14900
14900
|
}
|
|
14901
14901
|
}
|
|
14902
|
+
async isAncestor(ancestorRef, descendantRef) {
|
|
14903
|
+
try {
|
|
14904
|
+
const mergeBase = (await this.git.raw([
|
|
14905
|
+
"merge-base",
|
|
14906
|
+
ancestorRef,
|
|
14907
|
+
descendantRef
|
|
14908
|
+
])).trim();
|
|
14909
|
+
const ancestorCommit = (await this.git.revparse([
|
|
14910
|
+
ancestorRef
|
|
14911
|
+
])).trim();
|
|
14912
|
+
return mergeBase === ancestorCommit;
|
|
14913
|
+
} catch {
|
|
14914
|
+
return false;
|
|
14915
|
+
}
|
|
14916
|
+
}
|
|
14917
|
+
async mergeFastForward(ref) {
|
|
14918
|
+
try {
|
|
14919
|
+
await this.git.raw([
|
|
14920
|
+
"merge",
|
|
14921
|
+
"--ff-only",
|
|
14922
|
+
ref
|
|
14923
|
+
]);
|
|
14924
|
+
} catch (e) {
|
|
14925
|
+
throw errors_createGitError.commandFailed("merge --ff-only", e.message);
|
|
14926
|
+
}
|
|
14927
|
+
}
|
|
14902
14928
|
async deleteRef(ref) {
|
|
14903
14929
|
try {
|
|
14904
14930
|
await this.git.raw([
|
|
@@ -17578,6 +17604,7 @@ Promise.resolve(executeGitCredentialOperation(process.argv[2] || "get", {
|
|
|
17578
17604
|
class SaveProcessor extends Emitter {
|
|
17579
17605
|
hasPendingChanges = false;
|
|
17580
17606
|
debounceTimer = null;
|
|
17607
|
+
saveLoopPromise = null;
|
|
17581
17608
|
saveSequence = 0;
|
|
17582
17609
|
SAVE_DEBOUNCE_MS = 1000;
|
|
17583
17610
|
MAX_RETRIES = 3;
|
|
@@ -17601,6 +17628,7 @@ Promise.resolve(executeGitCredentialOperation(process.argv[2] || "get", {
|
|
|
17601
17628
|
if (this.debounceTimer) clearTimeout(this.debounceTimer);
|
|
17602
17629
|
if (isFirstChange) logger_logger.progress("sync", "Change detected");
|
|
17603
17630
|
this.debounceTimer = setTimeout(()=>{
|
|
17631
|
+
this.debounceTimer = null;
|
|
17604
17632
|
this.processSaveBatchWithEvents().catch((error)=>{
|
|
17605
17633
|
logger_logger.error(`Save failed: ${errors_getErrorMessage(error)}`);
|
|
17606
17634
|
});
|
|
@@ -17625,6 +17653,18 @@ Promise.resolve(executeGitCredentialOperation(process.argv[2] || "get", {
|
|
|
17625
17653
|
}
|
|
17626
17654
|
}
|
|
17627
17655
|
async processSaveBatchWithEvents() {
|
|
17656
|
+
if (this.saveLoopPromise) return this.saveLoopPromise;
|
|
17657
|
+
this.saveLoopPromise = this.drainSaveQueue();
|
|
17658
|
+
try {
|
|
17659
|
+
await this.saveLoopPromise;
|
|
17660
|
+
} finally{
|
|
17661
|
+
this.saveLoopPromise = null;
|
|
17662
|
+
}
|
|
17663
|
+
}
|
|
17664
|
+
async drainSaveQueue() {
|
|
17665
|
+
while(this.hasPendingChanges && !this.config.isCleanedUp() && !this.config.isPaused())await this.processOneSaveBatchWithEvents();
|
|
17666
|
+
}
|
|
17667
|
+
async processOneSaveBatchWithEvents() {
|
|
17628
17668
|
if (this.config.isCleanedUp()) return;
|
|
17629
17669
|
logger_logger.progressUpdate("sync", "Processing");
|
|
17630
17670
|
if (!this.hasPendingChanges) return void logger_logger.progressEnd("sync");
|
|
@@ -17968,7 +18008,7 @@ Promise.resolve(executeGitCredentialOperation(process.argv[2] || "get", {
|
|
|
17968
18008
|
await this.handleConflict(json_resp, originalFilePaths, retryCount);
|
|
17969
18009
|
return;
|
|
17970
18010
|
}
|
|
17971
|
-
if (200 === resp.status) return void await this.handleSuccess(json_resp);
|
|
18011
|
+
if (200 === resp.status) return void await this.handleSuccess(json_resp, originalFilePaths);
|
|
17972
18012
|
logger_logger.error(`Unexpected response status: ${resp.status}`);
|
|
17973
18013
|
throw {
|
|
17974
18014
|
type: "server_error",
|
|
@@ -18071,10 +18111,10 @@ Promise.resolve(executeGitCredentialOperation(process.argv[2] || "get", {
|
|
|
18071
18111
|
reason: "Unknown conflict"
|
|
18072
18112
|
};
|
|
18073
18113
|
}
|
|
18074
|
-
async handleSuccess(json_resp) {
|
|
18114
|
+
async handleSuccess(json_resp, originalFilePaths) {
|
|
18075
18115
|
const version = json_resp.version;
|
|
18076
18116
|
const oldCommitId = json_resp.previous_commit ?? null;
|
|
18077
|
-
this.config.
|
|
18117
|
+
const commitIdBeforePostSaveSync = this.config.getCommitId();
|
|
18078
18118
|
this.emit("saved", {
|
|
18079
18119
|
oldCommitId,
|
|
18080
18120
|
newCommitId: version,
|
|
@@ -18082,8 +18122,9 @@ Promise.resolve(executeGitCredentialOperation(process.argv[2] || "get", {
|
|
|
18082
18122
|
});
|
|
18083
18123
|
if (this.postSaveCallback) {
|
|
18084
18124
|
logger_logger.progressUpdate("sync", "Syncing back");
|
|
18085
|
-
await this.postSaveCallback();
|
|
18125
|
+
await this.postSaveCallback(new Set(originalFilePaths));
|
|
18086
18126
|
}
|
|
18127
|
+
if (this.config.getCommitId() === commitIdBeforePostSaveSync) this.config.setCommitId(version);
|
|
18087
18128
|
}
|
|
18088
18129
|
async rerouteChanges(changes) {
|
|
18089
18130
|
logger_logger.verbose(external_chalk_default().blue(`Re-routing ${changes.length} local change(s)...`));
|
|
@@ -18137,62 +18178,94 @@ Promise.resolve(executeGitCredentialOperation(process.argv[2] || "get", {
|
|
|
18137
18178
|
}
|
|
18138
18179
|
class SyncManager extends Emitter {
|
|
18139
18180
|
config;
|
|
18140
|
-
|
|
18181
|
+
syncQueue = Promise.resolve();
|
|
18141
18182
|
constructor(config){
|
|
18142
18183
|
super();
|
|
18143
18184
|
this.config = config;
|
|
18144
18185
|
}
|
|
18145
18186
|
async syncRemoteChanges(knownLocalChanges) {
|
|
18146
|
-
|
|
18147
|
-
|
|
18187
|
+
const runSync = ()=>this.performSyncRemoteChanges(knownLocalChanges);
|
|
18188
|
+
const queuedSync = this.syncQueue.then(runSync, runSync);
|
|
18189
|
+
this.syncQueue = queuedSync.catch(()=>{});
|
|
18190
|
+
return queuedSync;
|
|
18191
|
+
}
|
|
18192
|
+
async performSyncRemoteChanges(knownLocalChanges) {
|
|
18193
|
+
const oldCommitId = this.config.getCommitId();
|
|
18194
|
+
let locallyChangedFiles;
|
|
18195
|
+
let initialStatus;
|
|
18196
|
+
if (knownLocalChanges) locallyChangedFiles = knownLocalChanges;
|
|
18197
|
+
else {
|
|
18198
|
+
initialStatus = await this.config.gitService.getStatus();
|
|
18199
|
+
locallyChangedFiles = buildLocalChangesSet(initialStatus);
|
|
18200
|
+
}
|
|
18201
|
+
let syncMode;
|
|
18202
|
+
if (!knownLocalChanges && initialStatus && this.isCleanForFastForward(initialStatus)) syncMode = await this.fetchAndMoveCleanTreeToAnvilHead(oldCommitId, locallyChangedFiles);
|
|
18203
|
+
else {
|
|
18204
|
+
await this.fetchAndResetFromAnvil(locallyChangedFiles);
|
|
18205
|
+
syncMode = "preservation";
|
|
18206
|
+
}
|
|
18207
|
+
if ("clean-move" === syncMode) return {
|
|
18208
|
+
localOnlyChanges: [],
|
|
18209
|
+
conflicts: []
|
|
18210
|
+
};
|
|
18211
|
+
const newCommitId = await this.config.gitService.getCommitId();
|
|
18212
|
+
this.config.setCommitId(newCommitId);
|
|
18213
|
+
const remoteChangedFiles = await detectRemoteChanges(this.config.gitService, oldCommitId, newCommitId);
|
|
18214
|
+
const statusAfter = await this.config.gitService.getStatus();
|
|
18215
|
+
const newChanges = extractChangesFromStatus(statusAfter);
|
|
18216
|
+
if (0 === newChanges.length) {
|
|
18217
|
+
logger_logger.verbose(external_chalk_default().gray(" No local changes - working directory is clean"));
|
|
18148
18218
|
return {
|
|
18149
18219
|
localOnlyChanges: [],
|
|
18150
18220
|
conflicts: []
|
|
18151
18221
|
};
|
|
18152
18222
|
}
|
|
18153
|
-
|
|
18154
|
-
|
|
18155
|
-
|
|
18156
|
-
|
|
18157
|
-
|
|
18223
|
+
const result = categorizeChanges(newChanges, locallyChangedFiles, remoteChangedFiles);
|
|
18224
|
+
await acceptRemoteChanges(this.config.gitService, result.remoteOnlyChanges);
|
|
18225
|
+
logConflictResolution(result);
|
|
18226
|
+
return {
|
|
18227
|
+
localOnlyChanges: result.localOnlyChanges,
|
|
18228
|
+
conflicts: result.conflicts
|
|
18229
|
+
};
|
|
18230
|
+
}
|
|
18231
|
+
async fetchAndResetFromAnvil(localChangesToPreserve = new Set()) {
|
|
18232
|
+
const oldCommitId = this.config.getCommitId();
|
|
18233
|
+
await this.withFetchedAnvilRef((tempRef)=>this.resetToFetchedAnvilRef(tempRef, oldCommitId, localChangesToPreserve));
|
|
18234
|
+
}
|
|
18235
|
+
async fetchAndMoveCleanTreeToAnvilHead(oldCommitId, locallyChangedFiles) {
|
|
18236
|
+
return this.withFetchedAnvilRef(async (tempRef)=>{
|
|
18237
|
+
const localHead = await this.config.gitService.getCommitId();
|
|
18238
|
+
if (await this.config.gitService.isAncestor(localHead, tempRef)) await this.config.gitService.mergeFastForward(tempRef);
|
|
18158
18239
|
else {
|
|
18159
|
-
const
|
|
18160
|
-
|
|
18240
|
+
const statusBeforeHardReset = await this.config.gitService.getStatus();
|
|
18241
|
+
if (!this.isCleanForFastForward(statusBeforeHardReset)) {
|
|
18242
|
+
for (const filePath of buildLocalChangesSet(statusBeforeHardReset))locallyChangedFiles.add(filePath);
|
|
18243
|
+
await this.resetToFetchedAnvilRef(tempRef, oldCommitId, locallyChangedFiles);
|
|
18244
|
+
return "preservation";
|
|
18245
|
+
}
|
|
18246
|
+
await this.config.gitService.reset(tempRef, "hard");
|
|
18161
18247
|
}
|
|
18162
|
-
await this.fetchAndResetFromAnvil(locallyChangedFiles);
|
|
18163
18248
|
const newCommitId = await this.config.gitService.getCommitId();
|
|
18164
18249
|
this.config.setCommitId(newCommitId);
|
|
18165
|
-
|
|
18166
|
-
|
|
18167
|
-
|
|
18168
|
-
if (0 === newChanges.length) {
|
|
18169
|
-
logger_logger.verbose(external_chalk_default().gray(" No local changes - working directory is clean"));
|
|
18170
|
-
return {
|
|
18171
|
-
localOnlyChanges: [],
|
|
18172
|
-
conflicts: []
|
|
18173
|
-
};
|
|
18174
|
-
}
|
|
18175
|
-
const result = categorizeChanges(newChanges, locallyChangedFiles, remoteChangedFiles);
|
|
18176
|
-
await acceptRemoteChanges(this.config.gitService, result.remoteOnlyChanges);
|
|
18177
|
-
logConflictResolution(result);
|
|
18178
|
-
return {
|
|
18179
|
-
localOnlyChanges: result.localOnlyChanges,
|
|
18180
|
-
conflicts: result.conflicts
|
|
18181
|
-
};
|
|
18182
|
-
} finally{
|
|
18183
|
-
this.syncInProgress = false;
|
|
18184
|
-
}
|
|
18250
|
+
await this.config.editorYaml.reload();
|
|
18251
|
+
return "clean-move";
|
|
18252
|
+
});
|
|
18185
18253
|
}
|
|
18186
|
-
async
|
|
18254
|
+
async withFetchedAnvilRef(callback) {
|
|
18187
18255
|
const validToken = await auth_getValidAuthToken(this.config.anvilUrl, this.config.username);
|
|
18188
18256
|
this.config.setAuthToken(validToken);
|
|
18189
18257
|
const httpUrl = getGitFetchUrl(this.config.appId, this.config.getAuthToken(), this.config.anvilUrl);
|
|
18190
18258
|
const currentBranch = this.config.getCurrentBranch();
|
|
18191
18259
|
const tempRef = `anvil-sync-temp-${Date.now()}`;
|
|
18192
|
-
|
|
18193
|
-
|
|
18260
|
+
try {
|
|
18261
|
+
await this.config.gitService.fetch(httpUrl, `+${currentBranch}:${tempRef}`);
|
|
18262
|
+
return await callback(tempRef);
|
|
18263
|
+
} finally{
|
|
18264
|
+
await this.config.gitService.deleteRef(`refs/heads/${tempRef}`);
|
|
18265
|
+
}
|
|
18266
|
+
}
|
|
18267
|
+
async resetToFetchedAnvilRef(tempRef, oldCommitId, localChangesToPreserve) {
|
|
18194
18268
|
await this.config.gitService.reset(tempRef, "mixed");
|
|
18195
|
-
await this.config.gitService.deleteRef(`refs/heads/${tempRef}`);
|
|
18196
18269
|
const newCommitId = await this.config.gitService.getCommitId();
|
|
18197
18270
|
await this.config.gitService.checkout([
|
|
18198
18271
|
".anvil_editor.yaml",
|
|
@@ -18202,6 +18275,9 @@ Promise.resolve(executeGitCredentialOperation(process.argv[2] || "get", {
|
|
|
18202
18275
|
await this.deleteFilesRemovedOnAnvilLocally(oldCommitId, newCommitId, localChangesToPreserve);
|
|
18203
18276
|
await this.discardFormattingOnlyYamlChanges();
|
|
18204
18277
|
}
|
|
18278
|
+
isCleanForFastForward(status) {
|
|
18279
|
+
return status.isClean && 0 === status.modified.length && 0 === status.notAdded.length && 0 === status.created.length && 0 === status.deleted.length && 0 === status.staged.length && 0 === status.renamed.length;
|
|
18280
|
+
}
|
|
18205
18281
|
async deleteFilesRemovedOnAnvilLocally(oldCommitId, newCommitId, localChangesToPreserve) {
|
|
18206
18282
|
try {
|
|
18207
18283
|
const status = await this.config.gitService.getStatus();
|
|
@@ -18415,7 +18491,7 @@ Promise.resolve(executeGitCredentialOperation(process.argv[2] || "get", {
|
|
|
18415
18491
|
isPaused: ()=>this.isPausedForUserInput
|
|
18416
18492
|
});
|
|
18417
18493
|
this.saveProcessor.setSyncCallback((filePaths)=>this.syncManager.syncRemoteChanges(filePaths));
|
|
18418
|
-
this.saveProcessor.setPostSaveCallback(()=>this.
|
|
18494
|
+
this.saveProcessor.setPostSaveCallback((filePaths)=>this.syncAfterSave(filePaths));
|
|
18419
18495
|
this.saveProcessor.on("save-started", (data)=>this.emit("save-started", data));
|
|
18420
18496
|
this.saveProcessor.on("save-succeeded", (data)=>this.emit("save-succeeded", data));
|
|
18421
18497
|
this.saveProcessor.on("save-failed", (data)=>this.emit("save-failed", data));
|
|
@@ -18428,6 +18504,12 @@ Promise.resolve(executeGitCredentialOperation(process.argv[2] || "get", {
|
|
|
18428
18504
|
this.saveProcessor.on("sync-conflict", (data)=>this.emit("sync-conflict", data));
|
|
18429
18505
|
this.saveProcessor.on("max-retries-exceeded", (data)=>this.emit("max-retries-exceeded", data));
|
|
18430
18506
|
}
|
|
18507
|
+
async syncAfterSave(savedFilePaths) {
|
|
18508
|
+
const status = await this.gitService.getStatus();
|
|
18509
|
+
const locallyChangedFiles = buildLocalChangesSet(status);
|
|
18510
|
+
if (!this.stagedOnly) for (const filePath of savedFilePaths)locallyChangedFiles.add(filePath);
|
|
18511
|
+
return this.syncManager.syncRemoteChanges(locallyChangedFiles);
|
|
18512
|
+
}
|
|
18431
18513
|
async connectWebSocket() {
|
|
18432
18514
|
this.wsClient = new WebSocketClient({
|
|
18433
18515
|
appId: this.appId,
|
package/dist/index.js
CHANGED
|
@@ -14927,6 +14927,32 @@ Promise.resolve(executeGitCredentialOperation(process.argv[2] || "get", {
|
|
|
14927
14927
|
throw errors_createGitError.commandFailed("rebase --abort", e.message);
|
|
14928
14928
|
}
|
|
14929
14929
|
}
|
|
14930
|
+
async isAncestor(ancestorRef, descendantRef) {
|
|
14931
|
+
try {
|
|
14932
|
+
const mergeBase = (await this.git.raw([
|
|
14933
|
+
"merge-base",
|
|
14934
|
+
ancestorRef,
|
|
14935
|
+
descendantRef
|
|
14936
|
+
])).trim();
|
|
14937
|
+
const ancestorCommit = (await this.git.revparse([
|
|
14938
|
+
ancestorRef
|
|
14939
|
+
])).trim();
|
|
14940
|
+
return mergeBase === ancestorCommit;
|
|
14941
|
+
} catch {
|
|
14942
|
+
return false;
|
|
14943
|
+
}
|
|
14944
|
+
}
|
|
14945
|
+
async mergeFastForward(ref) {
|
|
14946
|
+
try {
|
|
14947
|
+
await this.git.raw([
|
|
14948
|
+
"merge",
|
|
14949
|
+
"--ff-only",
|
|
14950
|
+
ref
|
|
14951
|
+
]);
|
|
14952
|
+
} catch (e) {
|
|
14953
|
+
throw errors_createGitError.commandFailed("merge --ff-only", e.message);
|
|
14954
|
+
}
|
|
14955
|
+
}
|
|
14930
14956
|
async deleteRef(ref) {
|
|
14931
14957
|
try {
|
|
14932
14958
|
await this.git.raw([
|
|
@@ -17606,6 +17632,7 @@ Promise.resolve(executeGitCredentialOperation(process.argv[2] || "get", {
|
|
|
17606
17632
|
class SaveProcessor extends Emitter {
|
|
17607
17633
|
hasPendingChanges = false;
|
|
17608
17634
|
debounceTimer = null;
|
|
17635
|
+
saveLoopPromise = null;
|
|
17609
17636
|
saveSequence = 0;
|
|
17610
17637
|
SAVE_DEBOUNCE_MS = 1000;
|
|
17611
17638
|
MAX_RETRIES = 3;
|
|
@@ -17629,6 +17656,7 @@ Promise.resolve(executeGitCredentialOperation(process.argv[2] || "get", {
|
|
|
17629
17656
|
if (this.debounceTimer) clearTimeout(this.debounceTimer);
|
|
17630
17657
|
if (isFirstChange) logger_logger.progress("sync", "Change detected");
|
|
17631
17658
|
this.debounceTimer = setTimeout(()=>{
|
|
17659
|
+
this.debounceTimer = null;
|
|
17632
17660
|
this.processSaveBatchWithEvents().catch((error)=>{
|
|
17633
17661
|
logger_logger.error(`Save failed: ${errors_getErrorMessage(error)}`);
|
|
17634
17662
|
});
|
|
@@ -17653,6 +17681,18 @@ Promise.resolve(executeGitCredentialOperation(process.argv[2] || "get", {
|
|
|
17653
17681
|
}
|
|
17654
17682
|
}
|
|
17655
17683
|
async processSaveBatchWithEvents() {
|
|
17684
|
+
if (this.saveLoopPromise) return this.saveLoopPromise;
|
|
17685
|
+
this.saveLoopPromise = this.drainSaveQueue();
|
|
17686
|
+
try {
|
|
17687
|
+
await this.saveLoopPromise;
|
|
17688
|
+
} finally{
|
|
17689
|
+
this.saveLoopPromise = null;
|
|
17690
|
+
}
|
|
17691
|
+
}
|
|
17692
|
+
async drainSaveQueue() {
|
|
17693
|
+
while(this.hasPendingChanges && !this.config.isCleanedUp() && !this.config.isPaused())await this.processOneSaveBatchWithEvents();
|
|
17694
|
+
}
|
|
17695
|
+
async processOneSaveBatchWithEvents() {
|
|
17656
17696
|
if (this.config.isCleanedUp()) return;
|
|
17657
17697
|
logger_logger.progressUpdate("sync", "Processing");
|
|
17658
17698
|
if (!this.hasPendingChanges) return void logger_logger.progressEnd("sync");
|
|
@@ -17996,7 +18036,7 @@ Promise.resolve(executeGitCredentialOperation(process.argv[2] || "get", {
|
|
|
17996
18036
|
await this.handleConflict(json_resp, originalFilePaths, retryCount);
|
|
17997
18037
|
return;
|
|
17998
18038
|
}
|
|
17999
|
-
if (200 === resp.status) return void await this.handleSuccess(json_resp);
|
|
18039
|
+
if (200 === resp.status) return void await this.handleSuccess(json_resp, originalFilePaths);
|
|
18000
18040
|
logger_logger.error(`Unexpected response status: ${resp.status}`);
|
|
18001
18041
|
throw {
|
|
18002
18042
|
type: "server_error",
|
|
@@ -18099,10 +18139,10 @@ Promise.resolve(executeGitCredentialOperation(process.argv[2] || "get", {
|
|
|
18099
18139
|
reason: "Unknown conflict"
|
|
18100
18140
|
};
|
|
18101
18141
|
}
|
|
18102
|
-
async handleSuccess(json_resp) {
|
|
18142
|
+
async handleSuccess(json_resp, originalFilePaths) {
|
|
18103
18143
|
const version = json_resp.version;
|
|
18104
18144
|
const oldCommitId = json_resp.previous_commit ?? null;
|
|
18105
|
-
this.config.
|
|
18145
|
+
const commitIdBeforePostSaveSync = this.config.getCommitId();
|
|
18106
18146
|
this.emit("saved", {
|
|
18107
18147
|
oldCommitId,
|
|
18108
18148
|
newCommitId: version,
|
|
@@ -18110,8 +18150,9 @@ Promise.resolve(executeGitCredentialOperation(process.argv[2] || "get", {
|
|
|
18110
18150
|
});
|
|
18111
18151
|
if (this.postSaveCallback) {
|
|
18112
18152
|
logger_logger.progressUpdate("sync", "Syncing back");
|
|
18113
|
-
await this.postSaveCallback();
|
|
18153
|
+
await this.postSaveCallback(new Set(originalFilePaths));
|
|
18114
18154
|
}
|
|
18155
|
+
if (this.config.getCommitId() === commitIdBeforePostSaveSync) this.config.setCommitId(version);
|
|
18115
18156
|
}
|
|
18116
18157
|
async rerouteChanges(changes) {
|
|
18117
18158
|
logger_logger.verbose(external_chalk_default().blue(`Re-routing ${changes.length} local change(s)...`));
|
|
@@ -18165,62 +18206,94 @@ Promise.resolve(executeGitCredentialOperation(process.argv[2] || "get", {
|
|
|
18165
18206
|
}
|
|
18166
18207
|
class SyncManager extends Emitter {
|
|
18167
18208
|
config;
|
|
18168
|
-
|
|
18209
|
+
syncQueue = Promise.resolve();
|
|
18169
18210
|
constructor(config){
|
|
18170
18211
|
super();
|
|
18171
18212
|
this.config = config;
|
|
18172
18213
|
}
|
|
18173
18214
|
async syncRemoteChanges(knownLocalChanges) {
|
|
18174
|
-
|
|
18175
|
-
|
|
18215
|
+
const runSync = ()=>this.performSyncRemoteChanges(knownLocalChanges);
|
|
18216
|
+
const queuedSync = this.syncQueue.then(runSync, runSync);
|
|
18217
|
+
this.syncQueue = queuedSync.catch(()=>{});
|
|
18218
|
+
return queuedSync;
|
|
18219
|
+
}
|
|
18220
|
+
async performSyncRemoteChanges(knownLocalChanges) {
|
|
18221
|
+
const oldCommitId = this.config.getCommitId();
|
|
18222
|
+
let locallyChangedFiles;
|
|
18223
|
+
let initialStatus;
|
|
18224
|
+
if (knownLocalChanges) locallyChangedFiles = knownLocalChanges;
|
|
18225
|
+
else {
|
|
18226
|
+
initialStatus = await this.config.gitService.getStatus();
|
|
18227
|
+
locallyChangedFiles = buildLocalChangesSet(initialStatus);
|
|
18228
|
+
}
|
|
18229
|
+
let syncMode;
|
|
18230
|
+
if (!knownLocalChanges && initialStatus && this.isCleanForFastForward(initialStatus)) syncMode = await this.fetchAndMoveCleanTreeToAnvilHead(oldCommitId, locallyChangedFiles);
|
|
18231
|
+
else {
|
|
18232
|
+
await this.fetchAndResetFromAnvil(locallyChangedFiles);
|
|
18233
|
+
syncMode = "preservation";
|
|
18234
|
+
}
|
|
18235
|
+
if ("clean-move" === syncMode) return {
|
|
18236
|
+
localOnlyChanges: [],
|
|
18237
|
+
conflicts: []
|
|
18238
|
+
};
|
|
18239
|
+
const newCommitId = await this.config.gitService.getCommitId();
|
|
18240
|
+
this.config.setCommitId(newCommitId);
|
|
18241
|
+
const remoteChangedFiles = await detectRemoteChanges(this.config.gitService, oldCommitId, newCommitId);
|
|
18242
|
+
const statusAfter = await this.config.gitService.getStatus();
|
|
18243
|
+
const newChanges = extractChangesFromStatus(statusAfter);
|
|
18244
|
+
if (0 === newChanges.length) {
|
|
18245
|
+
logger_logger.verbose(external_chalk_default().gray(" No local changes - working directory is clean"));
|
|
18176
18246
|
return {
|
|
18177
18247
|
localOnlyChanges: [],
|
|
18178
18248
|
conflicts: []
|
|
18179
18249
|
};
|
|
18180
18250
|
}
|
|
18181
|
-
|
|
18182
|
-
|
|
18183
|
-
|
|
18184
|
-
|
|
18185
|
-
|
|
18251
|
+
const result = categorizeChanges(newChanges, locallyChangedFiles, remoteChangedFiles);
|
|
18252
|
+
await acceptRemoteChanges(this.config.gitService, result.remoteOnlyChanges);
|
|
18253
|
+
logConflictResolution(result);
|
|
18254
|
+
return {
|
|
18255
|
+
localOnlyChanges: result.localOnlyChanges,
|
|
18256
|
+
conflicts: result.conflicts
|
|
18257
|
+
};
|
|
18258
|
+
}
|
|
18259
|
+
async fetchAndResetFromAnvil(localChangesToPreserve = new Set()) {
|
|
18260
|
+
const oldCommitId = this.config.getCommitId();
|
|
18261
|
+
await this.withFetchedAnvilRef((tempRef)=>this.resetToFetchedAnvilRef(tempRef, oldCommitId, localChangesToPreserve));
|
|
18262
|
+
}
|
|
18263
|
+
async fetchAndMoveCleanTreeToAnvilHead(oldCommitId, locallyChangedFiles) {
|
|
18264
|
+
return this.withFetchedAnvilRef(async (tempRef)=>{
|
|
18265
|
+
const localHead = await this.config.gitService.getCommitId();
|
|
18266
|
+
if (await this.config.gitService.isAncestor(localHead, tempRef)) await this.config.gitService.mergeFastForward(tempRef);
|
|
18186
18267
|
else {
|
|
18187
|
-
const
|
|
18188
|
-
|
|
18268
|
+
const statusBeforeHardReset = await this.config.gitService.getStatus();
|
|
18269
|
+
if (!this.isCleanForFastForward(statusBeforeHardReset)) {
|
|
18270
|
+
for (const filePath of buildLocalChangesSet(statusBeforeHardReset))locallyChangedFiles.add(filePath);
|
|
18271
|
+
await this.resetToFetchedAnvilRef(tempRef, oldCommitId, locallyChangedFiles);
|
|
18272
|
+
return "preservation";
|
|
18273
|
+
}
|
|
18274
|
+
await this.config.gitService.reset(tempRef, "hard");
|
|
18189
18275
|
}
|
|
18190
|
-
await this.fetchAndResetFromAnvil(locallyChangedFiles);
|
|
18191
18276
|
const newCommitId = await this.config.gitService.getCommitId();
|
|
18192
18277
|
this.config.setCommitId(newCommitId);
|
|
18193
|
-
|
|
18194
|
-
|
|
18195
|
-
|
|
18196
|
-
if (0 === newChanges.length) {
|
|
18197
|
-
logger_logger.verbose(external_chalk_default().gray(" No local changes - working directory is clean"));
|
|
18198
|
-
return {
|
|
18199
|
-
localOnlyChanges: [],
|
|
18200
|
-
conflicts: []
|
|
18201
|
-
};
|
|
18202
|
-
}
|
|
18203
|
-
const result = categorizeChanges(newChanges, locallyChangedFiles, remoteChangedFiles);
|
|
18204
|
-
await acceptRemoteChanges(this.config.gitService, result.remoteOnlyChanges);
|
|
18205
|
-
logConflictResolution(result);
|
|
18206
|
-
return {
|
|
18207
|
-
localOnlyChanges: result.localOnlyChanges,
|
|
18208
|
-
conflicts: result.conflicts
|
|
18209
|
-
};
|
|
18210
|
-
} finally{
|
|
18211
|
-
this.syncInProgress = false;
|
|
18212
|
-
}
|
|
18278
|
+
await this.config.editorYaml.reload();
|
|
18279
|
+
return "clean-move";
|
|
18280
|
+
});
|
|
18213
18281
|
}
|
|
18214
|
-
async
|
|
18282
|
+
async withFetchedAnvilRef(callback) {
|
|
18215
18283
|
const validToken = await auth_getValidAuthToken(this.config.anvilUrl, this.config.username);
|
|
18216
18284
|
this.config.setAuthToken(validToken);
|
|
18217
18285
|
const httpUrl = anvil_api_getGitFetchUrl(this.config.appId, this.config.getAuthToken(), this.config.anvilUrl);
|
|
18218
18286
|
const currentBranch = this.config.getCurrentBranch();
|
|
18219
18287
|
const tempRef = `anvil-sync-temp-${Date.now()}`;
|
|
18220
|
-
|
|
18221
|
-
|
|
18288
|
+
try {
|
|
18289
|
+
await this.config.gitService.fetch(httpUrl, `+${currentBranch}:${tempRef}`);
|
|
18290
|
+
return await callback(tempRef);
|
|
18291
|
+
} finally{
|
|
18292
|
+
await this.config.gitService.deleteRef(`refs/heads/${tempRef}`);
|
|
18293
|
+
}
|
|
18294
|
+
}
|
|
18295
|
+
async resetToFetchedAnvilRef(tempRef, oldCommitId, localChangesToPreserve) {
|
|
18222
18296
|
await this.config.gitService.reset(tempRef, "mixed");
|
|
18223
|
-
await this.config.gitService.deleteRef(`refs/heads/${tempRef}`);
|
|
18224
18297
|
const newCommitId = await this.config.gitService.getCommitId();
|
|
18225
18298
|
await this.config.gitService.checkout([
|
|
18226
18299
|
".anvil_editor.yaml",
|
|
@@ -18230,6 +18303,9 @@ Promise.resolve(executeGitCredentialOperation(process.argv[2] || "get", {
|
|
|
18230
18303
|
await this.deleteFilesRemovedOnAnvilLocally(oldCommitId, newCommitId, localChangesToPreserve);
|
|
18231
18304
|
await this.discardFormattingOnlyYamlChanges();
|
|
18232
18305
|
}
|
|
18306
|
+
isCleanForFastForward(status) {
|
|
18307
|
+
return status.isClean && 0 === status.modified.length && 0 === status.notAdded.length && 0 === status.created.length && 0 === status.deleted.length && 0 === status.staged.length && 0 === status.renamed.length;
|
|
18308
|
+
}
|
|
18233
18309
|
async deleteFilesRemovedOnAnvilLocally(oldCommitId, newCommitId, localChangesToPreserve) {
|
|
18234
18310
|
try {
|
|
18235
18311
|
const status = await this.config.gitService.getStatus();
|
|
@@ -18443,7 +18519,7 @@ Promise.resolve(executeGitCredentialOperation(process.argv[2] || "get", {
|
|
|
18443
18519
|
isPaused: ()=>this.isPausedForUserInput
|
|
18444
18520
|
});
|
|
18445
18521
|
this.saveProcessor.setSyncCallback((filePaths)=>this.syncManager.syncRemoteChanges(filePaths));
|
|
18446
|
-
this.saveProcessor.setPostSaveCallback(()=>this.
|
|
18522
|
+
this.saveProcessor.setPostSaveCallback((filePaths)=>this.syncAfterSave(filePaths));
|
|
18447
18523
|
this.saveProcessor.on("save-started", (data)=>this.emit("save-started", data));
|
|
18448
18524
|
this.saveProcessor.on("save-succeeded", (data)=>this.emit("save-succeeded", data));
|
|
18449
18525
|
this.saveProcessor.on("save-failed", (data)=>this.emit("save-failed", data));
|
|
@@ -18456,6 +18532,12 @@ Promise.resolve(executeGitCredentialOperation(process.argv[2] || "get", {
|
|
|
18456
18532
|
this.saveProcessor.on("sync-conflict", (data)=>this.emit("sync-conflict", data));
|
|
18457
18533
|
this.saveProcessor.on("max-retries-exceeded", (data)=>this.emit("max-retries-exceeded", data));
|
|
18458
18534
|
}
|
|
18535
|
+
async syncAfterSave(savedFilePaths) {
|
|
18536
|
+
const status = await this.gitService.getStatus();
|
|
18537
|
+
const locallyChangedFiles = buildLocalChangesSet(status);
|
|
18538
|
+
if (!this.stagedOnly) for (const filePath of savedFilePaths)locallyChangedFiles.add(filePath);
|
|
18539
|
+
return this.syncManager.syncRemoteChanges(locallyChangedFiles);
|
|
18540
|
+
}
|
|
18459
18541
|
async connectWebSocket() {
|
|
18460
18542
|
this.wsClient = new WebSocketClient({
|
|
18461
18543
|
appId: this.appId,
|
package/dist/services/git.d.ts
CHANGED
|
@@ -146,6 +146,16 @@ export declare class GitService {
|
|
|
146
146
|
* @throws {GitError} if abort fails
|
|
147
147
|
*/
|
|
148
148
|
rebaseAbort(): Promise<void>;
|
|
149
|
+
/**
|
|
150
|
+
* Check whether ancestorRef is an ancestor of descendantRef.
|
|
151
|
+
* Returns false when Git cannot prove the ancestor relationship.
|
|
152
|
+
*/
|
|
153
|
+
isAncestor(ancestorRef: string, descendantRef: string): Promise<boolean>;
|
|
154
|
+
/**
|
|
155
|
+
* Fast-forward the current branch to a ref.
|
|
156
|
+
* @throws {GitError} if the merge cannot be completed as a fast-forward
|
|
157
|
+
*/
|
|
158
|
+
mergeFastForward(ref: string): Promise<void>;
|
|
149
159
|
/**
|
|
150
160
|
* Delete a local ref.
|
|
151
161
|
* Does not throw if ref doesn't exist.
|
|
@@ -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;AAGhE,MAAM,WAAW,SAAS;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAChD;AAED,MAAM,WAAW,gBAAgB;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,OAAO,CAAC;IAClB,aAAa,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,UAAU;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,qBAAa,UAAU;IACnB,OAAO,CAAC,GAAG,CAAY;IACvB,OAAO,CAAC,QAAQ,CAAS;gBAEb,QAAQ,EAAE,MAAM;IAK5B;;OAEG;IACH,MAAM,IAAI,SAAS;IAInB;;OAEG;IACH,WAAW,IAAI,MAAM;IAIrB;;;OAGG;IACG,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC;IAalC;;;OAGG;IACG,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC;IAezC;;;OAGG;IACG,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC;IASpC;;;OAGG;IACG,aAAa,IAAI,OAAO,CAAC,UAAU,CAAC;IAc1C;;;OAGG;IACG,SAAS,IAAI,OAAO,CAAC,SAAS,CAAC;IAwBrC;;;OAGG;IACG,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAyBhE;;;OAGG;IACG,4BAA4B,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;YA0BxD,eAAe;YAMf,oBAAoB;YAMpB,yBAAyB;YAMzB,oBAAoB;IASlC;;;OAGG;IACG,qBAAqB,IAAI,OAAO,CAAC,OAAO,CAAC;IAK/C;;;OAGG;IACG,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQxD;;;OAGG;IACG,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,GAAE,MAAM,GAAG,OAAO,GAAG,MAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAQlF;;;OAGG;IACG,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ9C;;;;OAIG;IACG,KAAK,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAc/C;;;OAGG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ/B;;;OAGG;IACG,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ3C;;;OAGG;IACG,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAUxE;;;OAGG;IACG,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAUrG;;;OAGG;IACG,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAS5C;;;OAGG;IACG,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,UAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAStE;;;OAGG;IACG,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQzC;;;OAGG;IACG,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAQlC;;;OAGG;IACG,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ3C;;;OAGG;IACG,UAAU,IAAI,OAAO,CAAC,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAYvE;;OAEG;IACG,gBAAgB,IAAI,OAAO,CAAC,OAAO,CAAC;IAK1C;;OAEG;IACG,sBAAsB,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CA+BtE;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,QAAQ,GAAG,KAAK,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAC7C,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CAAC,GAAG,EAAE,SAAS,EAAE,UAAU,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAoD/G;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,CAE7D"}
|
|
1
|
+
{"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../src/services/git.ts"],"names":[],"mappings":"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"}
|
|
@@ -62,10 +62,11 @@ type SyncCallback = (filePaths: Set<string>) => Promise<{
|
|
|
62
62
|
localOnlyChanges: FileChange[];
|
|
63
63
|
conflicts: FileChange[];
|
|
64
64
|
}>;
|
|
65
|
-
type PostSaveCallback =
|
|
65
|
+
type PostSaveCallback = SyncCallback;
|
|
66
66
|
export declare class SaveProcessor extends Emitter<SaveProcessorEvents> {
|
|
67
67
|
private hasPendingChanges;
|
|
68
68
|
private debounceTimer;
|
|
69
|
+
private saveLoopPromise;
|
|
69
70
|
private saveSequence;
|
|
70
71
|
private readonly SAVE_DEBOUNCE_MS;
|
|
71
72
|
private readonly MAX_RETRIES;
|
|
@@ -83,6 +84,8 @@ export declare class SaveProcessor extends Emitter<SaveProcessorEvents> {
|
|
|
83
84
|
forceSave(): Promise<void>;
|
|
84
85
|
cleanup(): void;
|
|
85
86
|
private processSaveBatchWithEvents;
|
|
87
|
+
private drainSaveQueue;
|
|
88
|
+
private processOneSaveBatchWithEvents;
|
|
86
89
|
private getSuccessMessage;
|
|
87
90
|
private processSaveBatch;
|
|
88
91
|
private getStagedChanges;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SaveProcessor.d.ts","sourceRoot":"","sources":["../../src/watch/SaveProcessor.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAkBrC,OAAO,EAAE,UAAU,EAAwB,MAAM,iBAAiB,CAAC;AACnE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAyB,KAAK,eAAe,EAAE,MAAM,eAAe,CAAC;AAqB5E,MAAM,WAAW,mBAAmB;IAChC,cAAc,EAAE;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IACtC,gBAAgB,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7D,aAAa,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,GAAG,eAAe,CAAC;IACtE,eAAe,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5D,OAAO,EAAE;QAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7E,iCAAiC,EAAE,IAAI,CAAC;IACxC,mBAAmB,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,GAAG,eAAe,CAAC;IACjF,eAAe,EAAE;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,eAAe,CAAC;IAChG,sBAAsB,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,eAAe,CAAC;CACjF;AAED,MAAM,WAAW,mBAAmB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,UAAU,CAAC;IACvB,UAAU,EAAE,iBAAiB,CAAC;IAC9B,YAAY,EAAE,MAAM,MAAM,CAAC;IAC3B,YAAY,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,gBAAgB,EAAE,MAAM,MAAM,CAAC;IAC/B,WAAW,EAAE,MAAM,MAAM,CAAC;IAC1B,WAAW,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,kBAAkB,EAAE,MAAM,OAAO,CAAC;IAClC,sBAAsB,EAAE,MAAM,MAAM,CAAC;IACrC,WAAW,EAAE,MAAM,OAAO,CAAC;IAC3B,QAAQ,EAAE,MAAM,OAAO,CAAC;CAC3B;AAED,KAAK,YAAY,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,OAAO,CAAC;IAAE,gBAAgB,EAAE,UAAU,EAAE,CAAC;IAAC,SAAS,EAAE,UAAU,EAAE,CAAA;CAAE,CAAC,CAAC;AAErH,KAAK,gBAAgB,GAAG,
|
|
1
|
+
{"version":3,"file":"SaveProcessor.d.ts","sourceRoot":"","sources":["../../src/watch/SaveProcessor.ts"],"names":[],"mappings":"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"}
|
|
@@ -25,7 +25,7 @@ export interface SyncManagerConfig {
|
|
|
25
25
|
export declare function stripNonSemanticYamlFields(yamlFile: string, parsed: Record<string, unknown> | undefined): Record<string, unknown>;
|
|
26
26
|
export declare class SyncManager extends Emitter<SyncManagerEvents> {
|
|
27
27
|
private config;
|
|
28
|
-
private
|
|
28
|
+
private syncQueue;
|
|
29
29
|
constructor(config: SyncManagerConfig);
|
|
30
30
|
/**
|
|
31
31
|
* Syncs remote changes while preserving local modifications.
|
|
@@ -39,11 +39,16 @@ export declare class SyncManager extends Emitter<SyncManagerEvents> {
|
|
|
39
39
|
localOnlyChanges: FileChange[];
|
|
40
40
|
conflicts: FileChange[];
|
|
41
41
|
}>;
|
|
42
|
+
private performSyncRemoteChanges;
|
|
42
43
|
/**
|
|
43
44
|
* Fetch latest from Anvil and reset the working directory.
|
|
44
45
|
* @throws {AuthError | GitError} on failure
|
|
45
46
|
*/
|
|
46
47
|
fetchAndResetFromAnvil(localChangesToPreserve?: Set<string>): Promise<void>;
|
|
48
|
+
private fetchAndMoveCleanTreeToAnvilHead;
|
|
49
|
+
private withFetchedAnvilRef;
|
|
50
|
+
private resetToFetchedAnvilRef;
|
|
51
|
+
private isCleanForFastForward;
|
|
47
52
|
private deleteFilesRemovedOnAnvilLocally;
|
|
48
53
|
private discardFormattingOnlyYamlChanges;
|
|
49
54
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SyncManager.d.ts","sourceRoot":"","sources":["../../src/watch/SyncManager.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAKrC,OAAO,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"SyncManager.d.ts","sourceRoot":"","sources":["../../src/watch/SyncManager.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAKrC,OAAO,EAAE,UAAU,EAAkB,MAAM,iBAAiB,CAAC;AAE7D,OAAO,EAQH,KAAK,UAAU,EAClB,MAAM,oBAAoB,CAAC;AAE5B,MAAM,WAAW,iBAAiB;IAC9B,cAAc,EAAE,EAAE,CAAC;IACnB,gBAAgB,EAAE;QAAE,gBAAgB,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;CACrE;AAED,MAAM,WAAW,iBAAiB;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,UAAU,CAAC;IACvB,UAAU,EAAE,iBAAiB,CAAC;IAC9B,YAAY,EAAE,MAAM,MAAM,CAAC;IAC3B,YAAY,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,gBAAgB,EAAE,MAAM,MAAM,CAAC;IAC/B,WAAW,EAAE,MAAM,MAAM,CAAC;IAC1B,WAAW,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;CAC3C;AAED,wBAAgB,0BAA0B,CACtC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAC5C,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAgBzB;AAED,qBAAa,WAAY,SAAQ,OAAO,CAAC,iBAAiB,CAAC;IACvD,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,SAAS,CAAuC;gBAE5C,MAAM,EAAE,iBAAiB;IAKrC;;;;;;;OAOG;IACG,iBAAiB,CACnB,iBAAiB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,GAChC,OAAO,CAAC;QAAE,gBAAgB,EAAE,UAAU,EAAE,CAAC;QAAC,SAAS,EAAE,UAAU,EAAE,CAAA;KAAE,CAAC;YAOzD,wBAAwB;IA8CtC;;;OAGG;IACG,sBAAsB,CAAC,sBAAsB,GAAE,GAAG,CAAC,MAAM,CAAa,GAAG,OAAO,CAAC,IAAI,CAAC;YAO9E,gCAAgC;YA2BhC,mBAAmB;YAgBnB,sBAAsB;IAapC,OAAO,CAAC,qBAAqB;YAYf,gCAAgC;YAiBhC,gCAAgC;CAkGjD"}
|