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.cjs +22 -0
- package/dist/server.cjs.map +1 -1
- package/dist/server.d.cts +3 -0
- package/dist/server.d.ts +3 -0
- package/dist/server.js +22 -0
- package/dist/server.js.map +1 -1
- package/package.json +1 -1
- package/src/server.ts +23 -0
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();
|