topazcube 0.1.20 → 0.1.21

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/server.d.cts CHANGED
@@ -34,9 +34,11 @@ declare class TopazCubeServer {
34
34
  documents: Record<string, any>;
35
35
  isLoading: Record<string, boolean>;
36
36
  _documentChanges: Record<string, any[]>;
37
+ _documentChanged: Record<string, boolean>;
37
38
  _documentState: Record<string, any>;
38
39
  update: number;
39
40
  lastUpdate: number;
41
+ _saveiv: any;
40
42
  _loopiv: any;
41
43
  _statsiv: any;
42
44
  _stillUpdating: boolean;
@@ -104,6 +106,7 @@ declare class TopazCubeServer {
104
106
  _loadDocument(name: string): Promise<void>;
105
107
  _saveDocument(name: string): Promise<void>;
106
108
  _saveAllDocuments(): Promise<void>;
109
+ _saveChanges(): Promise<void>;
107
110
  _initServerDocument(): void;
108
111
  _exitSignal(signal: string): void;
109
112
  onBeforeExit(): void;
package/dist/server.d.ts CHANGED
@@ -34,9 +34,11 @@ declare class TopazCubeServer {
34
34
  documents: Record<string, any>;
35
35
  isLoading: Record<string, boolean>;
36
36
  _documentChanges: Record<string, any[]>;
37
+ _documentChanged: Record<string, boolean>;
37
38
  _documentState: Record<string, any>;
38
39
  update: number;
39
40
  lastUpdate: number;
41
+ _saveiv: any;
40
42
  _loopiv: any;
41
43
  _statsiv: any;
42
44
  _stillUpdating: boolean;
@@ -104,6 +106,7 @@ declare class TopazCubeServer {
104
106
  _loadDocument(name: string): Promise<void>;
105
107
  _saveDocument(name: string): Promise<void>;
106
108
  _saveAllDocuments(): Promise<void>;
109
+ _saveChanges(): Promise<void>;
107
110
  _initServerDocument(): void;
108
111
  _exitSignal(signal: string): void;
109
112
  onBeforeExit(): void;
package/dist/server.js CHANGED
@@ -1745,9 +1745,11 @@ var TopazCubeServer = class {
1745
1745
  documents = {};
1746
1746
  isLoading = {};
1747
1747
  _documentChanges = {};
1748
+ _documentChanged = {};
1748
1749
  _documentState = {};
1749
1750
  update = 0;
1750
1751
  lastUpdate = 0;
1752
+ _saveiv = null;
1751
1753
  _loopiv = null;
1752
1754
  _statsiv = null;
1753
1755
  _stillUpdating = false;
@@ -1891,6 +1893,7 @@ var TopazCubeServer = class {
1891
1893
  );
1892
1894
  if (!this._documentChanges[name]) {
1893
1895
  this._documentChanges[name] = [];
1896
+ this._documentChanged[name] = false;
1894
1897
  }
1895
1898
  }
1896
1899
  _createEmptyDocument(name) {
@@ -1949,6 +1952,9 @@ var TopazCubeServer = class {
1949
1952
  this._statsiv = setInterval(() => {
1950
1953
  this._doStats();
1951
1954
  }, 1e3);
1955
+ this._saveiv = setInterval(() => {
1956
+ this._saveChanges();
1957
+ }, 6e4);
1952
1958
  }
1953
1959
  _loop() {
1954
1960
  let now = Date.now();
@@ -2038,12 +2044,14 @@ var TopazCubeServer = class {
2038
2044
  let name = message.n;
2039
2045
  if (!this._documentChanges[name]) {
2040
2046
  this._documentChanges[name] = [];
2047
+ this._documentChanged[name] = false;
2041
2048
  }
2042
2049
  for (let op of message.p) {
2043
2050
  if (!this.canSync(client, name, op)) {
2044
2051
  continue;
2045
2052
  }
2046
2053
  this._documentChanges[name].push(op);
2054
+ this._documentChanged[name] = true;
2047
2055
  let dop = msgop(op);
2048
2056
  applyOperation(this.documents[name], dop);
2049
2057
  }
@@ -2339,6 +2347,7 @@ var TopazCubeServer = class {
2339
2347
  }
2340
2348
  _onDocumentChange(name, op, target, path, value) {
2341
2349
  this._documentChanges[name]?.push(opmsg(op, target, path, value));
2350
+ this._documentChanged[name] = true;
2342
2351
  }
2343
2352
  propertyChange(name, id, property) {
2344
2353
  let doc = this.documents[name];
@@ -2644,6 +2653,17 @@ var TopazCubeServer = class {
2644
2653
  await this._saveDocument(name);
2645
2654
  }
2646
2655
  }
2656
+ async _saveChanges() {
2657
+ if (!this.allowSave) {
2658
+ return;
2659
+ }
2660
+ for (let name in this._documentChanged) {
2661
+ if (this._documentChanged[name]) {
2662
+ await this._saveDocument(name);
2663
+ this._documentChanged[name] = false;
2664
+ }
2665
+ }
2666
+ }
2647
2667
  _initServerDocument() {
2648
2668
  this.documents["_server"] = {
2649
2669
  nextUID: 100
@@ -2655,6 +2675,8 @@ var TopazCubeServer = class {
2655
2675
  this.log("\nEXIT: Caught interrupt signal " + signal);
2656
2676
  this._exited = true;
2657
2677
  clearInterval(this._loopiv);
2678
+ clearInterval(this._statsiv);
2679
+ clearInterval(this._saveiv);
2658
2680
  this.onBeforeExit();
2659
2681
  this.broadcast({ server: "Going down" });
2660
2682
  this._saveAllDocuments();