@anvil-works/anvil-cli 0.7.0-canary.13 → 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/cli.js CHANGED
@@ -17604,6 +17604,7 @@ Promise.resolve(executeGitCredentialOperation(process.argv[2] || "get", {
17604
17604
  class SaveProcessor extends Emitter {
17605
17605
  hasPendingChanges = false;
17606
17606
  debounceTimer = null;
17607
+ saveLoopPromise = null;
17607
17608
  saveSequence = 0;
17608
17609
  SAVE_DEBOUNCE_MS = 1000;
17609
17610
  MAX_RETRIES = 3;
@@ -17627,6 +17628,7 @@ Promise.resolve(executeGitCredentialOperation(process.argv[2] || "get", {
17627
17628
  if (this.debounceTimer) clearTimeout(this.debounceTimer);
17628
17629
  if (isFirstChange) logger_logger.progress("sync", "Change detected");
17629
17630
  this.debounceTimer = setTimeout(()=>{
17631
+ this.debounceTimer = null;
17630
17632
  this.processSaveBatchWithEvents().catch((error)=>{
17631
17633
  logger_logger.error(`Save failed: ${errors_getErrorMessage(error)}`);
17632
17634
  });
@@ -17651,6 +17653,18 @@ Promise.resolve(executeGitCredentialOperation(process.argv[2] || "get", {
17651
17653
  }
17652
17654
  }
17653
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() {
17654
17668
  if (this.config.isCleanedUp()) return;
17655
17669
  logger_logger.progressUpdate("sync", "Processing");
17656
17670
  if (!this.hasPendingChanges) return void logger_logger.progressEnd("sync");
@@ -18164,61 +18178,55 @@ Promise.resolve(executeGitCredentialOperation(process.argv[2] || "get", {
18164
18178
  }
18165
18179
  class SyncManager extends Emitter {
18166
18180
  config;
18167
- syncInProgress = false;
18181
+ syncQueue = Promise.resolve();
18168
18182
  constructor(config){
18169
18183
  super();
18170
18184
  this.config = config;
18171
18185
  }
18172
18186
  async syncRemoteChanges(knownLocalChanges) {
18173
- if (this.syncInProgress) {
18174
- logger_logger.debug("Sync already in progress, skipping");
18175
- return {
18176
- localOnlyChanges: [],
18177
- conflicts: []
18178
- };
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);
18179
18200
  }
18180
- this.syncInProgress = true;
18181
- try {
18182
- const oldCommitId = this.config.getCommitId();
18183
- let locallyChangedFiles;
18184
- let initialStatus;
18185
- if (knownLocalChanges) locallyChangedFiles = knownLocalChanges;
18186
- else {
18187
- initialStatus = await this.config.gitService.getStatus();
18188
- locallyChangedFiles = buildLocalChangesSet(initialStatus);
18189
- }
18190
- let syncMode;
18191
- if (!knownLocalChanges && initialStatus && this.isCleanForFastForward(initialStatus)) syncMode = await this.fetchAndMoveCleanTreeToAnvilHead(oldCommitId, locallyChangedFiles);
18192
- else {
18193
- await this.fetchAndResetFromAnvil(locallyChangedFiles);
18194
- syncMode = "preservation";
18195
- }
18196
- if ("clean-move" === syncMode) return {
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"));
18218
+ return {
18197
18219
  localOnlyChanges: [],
18198
18220
  conflicts: []
18199
18221
  };
18200
- const newCommitId = await this.config.gitService.getCommitId();
18201
- this.config.setCommitId(newCommitId);
18202
- const remoteChangedFiles = await detectRemoteChanges(this.config.gitService, oldCommitId, newCommitId);
18203
- const statusAfter = await this.config.gitService.getStatus();
18204
- const newChanges = extractChangesFromStatus(statusAfter);
18205
- if (0 === newChanges.length) {
18206
- logger_logger.verbose(external_chalk_default().gray(" No local changes - working directory is clean"));
18207
- return {
18208
- localOnlyChanges: [],
18209
- conflicts: []
18210
- };
18211
- }
18212
- const result = categorizeChanges(newChanges, locallyChangedFiles, remoteChangedFiles);
18213
- await acceptRemoteChanges(this.config.gitService, result.remoteOnlyChanges);
18214
- logConflictResolution(result);
18215
- return {
18216
- localOnlyChanges: result.localOnlyChanges,
18217
- conflicts: result.conflicts
18218
- };
18219
- } finally{
18220
- this.syncInProgress = false;
18221
18222
  }
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
+ };
18222
18230
  }
18223
18231
  async fetchAndResetFromAnvil(localChangesToPreserve = new Set()) {
18224
18232
  const oldCommitId = this.config.getCommitId();
package/dist/index.js CHANGED
@@ -17632,6 +17632,7 @@ Promise.resolve(executeGitCredentialOperation(process.argv[2] || "get", {
17632
17632
  class SaveProcessor extends Emitter {
17633
17633
  hasPendingChanges = false;
17634
17634
  debounceTimer = null;
17635
+ saveLoopPromise = null;
17635
17636
  saveSequence = 0;
17636
17637
  SAVE_DEBOUNCE_MS = 1000;
17637
17638
  MAX_RETRIES = 3;
@@ -17655,6 +17656,7 @@ Promise.resolve(executeGitCredentialOperation(process.argv[2] || "get", {
17655
17656
  if (this.debounceTimer) clearTimeout(this.debounceTimer);
17656
17657
  if (isFirstChange) logger_logger.progress("sync", "Change detected");
17657
17658
  this.debounceTimer = setTimeout(()=>{
17659
+ this.debounceTimer = null;
17658
17660
  this.processSaveBatchWithEvents().catch((error)=>{
17659
17661
  logger_logger.error(`Save failed: ${errors_getErrorMessage(error)}`);
17660
17662
  });
@@ -17679,6 +17681,18 @@ Promise.resolve(executeGitCredentialOperation(process.argv[2] || "get", {
17679
17681
  }
17680
17682
  }
17681
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() {
17682
17696
  if (this.config.isCleanedUp()) return;
17683
17697
  logger_logger.progressUpdate("sync", "Processing");
17684
17698
  if (!this.hasPendingChanges) return void logger_logger.progressEnd("sync");
@@ -18192,61 +18206,55 @@ Promise.resolve(executeGitCredentialOperation(process.argv[2] || "get", {
18192
18206
  }
18193
18207
  class SyncManager extends Emitter {
18194
18208
  config;
18195
- syncInProgress = false;
18209
+ syncQueue = Promise.resolve();
18196
18210
  constructor(config){
18197
18211
  super();
18198
18212
  this.config = config;
18199
18213
  }
18200
18214
  async syncRemoteChanges(knownLocalChanges) {
18201
- if (this.syncInProgress) {
18202
- logger_logger.debug("Sync already in progress, skipping");
18203
- return {
18204
- localOnlyChanges: [],
18205
- conflicts: []
18206
- };
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);
18207
18228
  }
18208
- this.syncInProgress = true;
18209
- try {
18210
- const oldCommitId = this.config.getCommitId();
18211
- let locallyChangedFiles;
18212
- let initialStatus;
18213
- if (knownLocalChanges) locallyChangedFiles = knownLocalChanges;
18214
- else {
18215
- initialStatus = await this.config.gitService.getStatus();
18216
- locallyChangedFiles = buildLocalChangesSet(initialStatus);
18217
- }
18218
- let syncMode;
18219
- if (!knownLocalChanges && initialStatus && this.isCleanForFastForward(initialStatus)) syncMode = await this.fetchAndMoveCleanTreeToAnvilHead(oldCommitId, locallyChangedFiles);
18220
- else {
18221
- await this.fetchAndResetFromAnvil(locallyChangedFiles);
18222
- syncMode = "preservation";
18223
- }
18224
- if ("clean-move" === syncMode) return {
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"));
18246
+ return {
18225
18247
  localOnlyChanges: [],
18226
18248
  conflicts: []
18227
18249
  };
18228
- const newCommitId = await this.config.gitService.getCommitId();
18229
- this.config.setCommitId(newCommitId);
18230
- const remoteChangedFiles = await detectRemoteChanges(this.config.gitService, oldCommitId, newCommitId);
18231
- const statusAfter = await this.config.gitService.getStatus();
18232
- const newChanges = extractChangesFromStatus(statusAfter);
18233
- if (0 === newChanges.length) {
18234
- logger_logger.verbose(external_chalk_default().gray(" No local changes - working directory is clean"));
18235
- return {
18236
- localOnlyChanges: [],
18237
- conflicts: []
18238
- };
18239
- }
18240
- const result = categorizeChanges(newChanges, locallyChangedFiles, remoteChangedFiles);
18241
- await acceptRemoteChanges(this.config.gitService, result.remoteOnlyChanges);
18242
- logConflictResolution(result);
18243
- return {
18244
- localOnlyChanges: result.localOnlyChanges,
18245
- conflicts: result.conflicts
18246
- };
18247
- } finally{
18248
- this.syncInProgress = false;
18249
18250
  }
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
+ };
18250
18258
  }
18251
18259
  async fetchAndResetFromAnvil(localChangesToPreserve = new Set()) {
18252
18260
  const oldCommitId = this.config.getCommitId();
@@ -66,6 +66,7 @@ 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":"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"}
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 syncInProgress;
28
+ private syncQueue;
29
29
  constructor(config: SyncManagerConfig);
30
30
  /**
31
31
  * Syncs remote changes while preserving local modifications.
@@ -39,6 +39,7 @@ 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
@@ -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,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,cAAc,CAAS;gBAEnB,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;IAsDvE;;;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"}
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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@anvil-works/anvil-cli",
3
- "version": "0.7.0-canary.13",
3
+ "version": "0.7.0-canary.14",
4
4
  "description": "CLI tool for developing Anvil apps locally",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/api.d.ts",