datafolder 1.0.5 → 1.0.7
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/README.md +5 -0
- package/internal.md +119 -0
- package/package.json +2 -2
- package/sample.js +19 -19
- package/scripts/convertBinFiles.js +49 -0
- package/scripts/fastify.js +2 -2
- package/src/QyAcl.js +44 -44
- package/src/QyAclSaver_Worker.js +2 -2
- package/src/QyAclWriter.js +1 -1
- package/src/QyBatch.js +1 -3
- package/src/QyBinWriter.js +65 -66
- package/src/QyCD.js +72 -27
- package/src/QyCache.js +39 -33
- package/src/QyDB.js +4 -30
- package/src/QyDefaultOptions.js +2 -1
- package/src/QyFetch.js +4 -22
- package/src/QyFileLogger.js +2 -2
- package/src/QyKVData.js +168 -183
- package/src/QyKVDataCleaner_Worker.js +15 -14
- package/src/QyKVDataSaver_Worker.js +20 -20
- package/src/QyLogFileSaver.js +1 -1
- package/src/QyLogFileSaver_Worker.js +2 -2
- package/src/QyMod.js +7 -7
- package/src/QyOpRunner.js +19 -16
- package/src/QySnapshotCompactor_Worker.js +54 -52
- package/src/QySnapshotSaver_Worker.js +55 -53
- package/src/QySnapshots.js +157 -147
- package/src/QyUnionNode.js +2 -2
- package/src/rpc/evalCode.js +4 -4
- package/src/rpc/getFileContent.js +4 -4
- package/src/rpc/getSubItems.js +12 -12
- package/src/rpc/getTriggerFiles.js +1 -0
- package/src/rpc/queryFiles.js +1 -1
- package/src/soc_pokec.js +7 -7
- package/static/codemirror.bundle/editor.bundle.js +27906 -0
- package/static/datafolderui/QyStyledElement.js +6 -15
- package/static/datafolderui/QyUIFolderTree.js +130 -145
- package/static/datafolderui/QyUIFolderViewer.js +210 -0
- package/static/datafolderui/QyUIUtils.js +10 -5
- package/static/datafolderui/code-mirror.js +35 -0
- package/static/datafolderui/display-tree.js +21 -94
- package/static/datafolderui/explore-tree.js +66 -81
- package/static/datafolderui/folder-tree.js +71 -2
- package/static/datafolderui/index.css +7 -0
- package/static/datafolderui/index.html +1 -0
- package/static/datafolderui/json-view.js +7 -3
- package/static/datafolderui/main-page.js +42 -60
- package/static/datafolderui/query-editor.js +178 -198
- package/static/datafolderui/trigger-editor.js +30 -0
package/src/QyLogFileSaver.js
CHANGED
package/src/QyMod.js
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
import
|
|
1
|
+
import a from "node:module";
|
|
2
2
|
|
|
3
3
|
import {
|
|
4
|
-
logger as
|
|
4
|
+
logger as m
|
|
5
5
|
} from "./QyLogger.js";
|
|
6
6
|
|
|
7
|
-
function o(r, e,
|
|
8
|
-
if (
|
|
9
|
-
var
|
|
10
|
-
return l._compile(`(function(
|
|
7
|
+
function o(r, e, d, o) {
|
|
8
|
+
if (d) try {
|
|
9
|
+
var i = r + "_" + e, t = `_${i}_qydb`, l = (globalThis[t] = o, new a(e));
|
|
10
|
+
return l._compile(`(function(dataFolder){${d}})(${t});`, i + ".js"), delete globalThis[t],
|
|
11
11
|
l.exports;
|
|
12
12
|
} catch (o) {
|
|
13
|
-
|
|
13
|
+
m.error("requireFromModCode failed:", r, e, d, o);
|
|
14
14
|
}
|
|
15
15
|
}
|
|
16
16
|
|
package/src/QyOpRunner.js
CHANGED
|
@@ -9,23 +9,23 @@ import {
|
|
|
9
9
|
} from "./QyLogger.js";
|
|
10
10
|
|
|
11
11
|
import {
|
|
12
|
-
getDefaultOptions as
|
|
12
|
+
getDefaultOptions as r
|
|
13
13
|
} from "./QyDefaultOptions.js";
|
|
14
14
|
|
|
15
15
|
import {
|
|
16
|
-
QyQueue as
|
|
16
|
+
QyQueue as i
|
|
17
17
|
} from "./QyQueue.js";
|
|
18
18
|
|
|
19
19
|
class e extends s {
|
|
20
20
|
constructor(s, t = [], e = []) {
|
|
21
21
|
super(), s = {
|
|
22
|
-
...
|
|
22
|
+
...r("QyOpRunner"),
|
|
23
23
|
...s
|
|
24
24
|
}, Object.assign(this, {
|
|
25
25
|
options: s,
|
|
26
26
|
running: !1,
|
|
27
|
-
opQueue: new
|
|
28
|
-
}),
|
|
27
|
+
opQueue: new i(s)
|
|
28
|
+
}), n(this, t, !0), n(this, e), n(this, [ "start", "stop" ], !0);
|
|
29
29
|
}
|
|
30
30
|
get firstOp() {
|
|
31
31
|
return this.opQueue.first;
|
|
@@ -50,38 +50,41 @@ class e extends s {
|
|
|
50
50
|
for (var s = this.opQueue; !s.isEmpty; ) {
|
|
51
51
|
var t = s.shift(), {
|
|
52
52
|
opFunName: e,
|
|
53
|
-
eventName:
|
|
54
|
-
resolve:
|
|
55
|
-
args:
|
|
53
|
+
eventName: r,
|
|
54
|
+
resolve: i,
|
|
55
|
+
args: n
|
|
56
56
|
} = t;
|
|
57
57
|
if (e) {
|
|
58
58
|
this.runningOp = t;
|
|
59
59
|
try {
|
|
60
|
-
var o = await (
|
|
61
|
-
|
|
60
|
+
var o = await (n ? this[e](...n) : this[e]());
|
|
61
|
+
i && i(o), r && this.emit(r, o);
|
|
62
62
|
} catch (s) {
|
|
63
|
-
u.error(`Run ${e} failed:`, s),
|
|
63
|
+
u.error(`Run ${e} failed:`, s), r && this.emit(r, s);
|
|
64
64
|
}
|
|
65
65
|
this.runningOp = void 0;
|
|
66
|
-
} else
|
|
66
|
+
} else i && i(), r && this.emit(r);
|
|
67
67
|
}
|
|
68
68
|
this.running = !1;
|
|
69
69
|
}
|
|
70
70
|
}
|
|
71
71
|
}
|
|
72
72
|
|
|
73
|
-
function r
|
|
73
|
+
function n(r, s, i) {
|
|
74
74
|
for (let e of s) {
|
|
75
75
|
let t = "_op_" + e;
|
|
76
|
-
|
|
76
|
+
if (r[e] || (r[e] = i ? (...s) => r.pushAndRunWithPromise({
|
|
77
77
|
opName: e,
|
|
78
78
|
opFunName: t,
|
|
79
79
|
args: s
|
|
80
|
-
}) : (...s) =>
|
|
80
|
+
}) : (...s) => r.pushAndRun({
|
|
81
81
|
opName: e,
|
|
82
82
|
opFunName: t,
|
|
83
83
|
args: s
|
|
84
|
-
})),
|
|
84
|
+
})), !r[t]) {
|
|
85
|
+
let s = r.constructor.name + " not implemented " + t;
|
|
86
|
+
r[t] = () => u.error(s), u.error(s);
|
|
87
|
+
}
|
|
85
88
|
}
|
|
86
89
|
}
|
|
87
90
|
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
} from "node:path";
|
|
4
4
|
|
|
5
5
|
import {
|
|
6
|
-
open as
|
|
6
|
+
open as f
|
|
7
7
|
} from "node:fs/promises";
|
|
8
8
|
|
|
9
9
|
import {
|
|
@@ -19,12 +19,12 @@ import {
|
|
|
19
19
|
} from "./QyKVDataCleaner.js";
|
|
20
20
|
|
|
21
21
|
import {
|
|
22
|
-
QySnapshots as n
|
|
22
|
+
QySnapshots as n,
|
|
23
|
+
iterPMBuffer as h
|
|
23
24
|
} from "./QySnapshots.js";
|
|
24
25
|
|
|
25
26
|
import {
|
|
26
27
|
isEmptyObj as r,
|
|
27
|
-
listToMap as y,
|
|
28
28
|
readBufferAsync as l
|
|
29
29
|
} from "./QyUtils.js";
|
|
30
30
|
|
|
@@ -44,13 +44,14 @@ class s extends a {
|
|
|
44
44
|
qySnapshots: new n(o, s),
|
|
45
45
|
qyKVDataCleaner: new p(this, a, s),
|
|
46
46
|
pMInfoMap: {},
|
|
47
|
-
vLInfoMap: {}
|
|
47
|
+
vLInfoMap: {},
|
|
48
|
+
combinedSnapshotNumList: []
|
|
48
49
|
});
|
|
49
50
|
}
|
|
50
|
-
|
|
51
|
+
_op_start() {
|
|
51
52
|
this.qyKVDataCleaner.start();
|
|
52
53
|
}
|
|
53
|
-
async
|
|
54
|
+
async _op_stop() {
|
|
54
55
|
await this.qyKVDataCleaner.stop();
|
|
55
56
|
}
|
|
56
57
|
async _op_compactSnapshots(a, o, s) {
|
|
@@ -66,7 +67,7 @@ class s extends a {
|
|
|
66
67
|
info: n,
|
|
67
68
|
prefixPM: i
|
|
68
69
|
} = s;
|
|
69
|
-
(null == i || r(i) || await
|
|
70
|
+
(null == i || r(i) || await M(a, s)) && (await t.savePosMap(s),
|
|
70
71
|
e[p] = n, o[p] = s.prefixPM);
|
|
71
72
|
})(this, a, s)));
|
|
72
73
|
}
|
|
@@ -77,7 +78,7 @@ class s extends a {
|
|
|
77
78
|
qySnapshots: e,
|
|
78
79
|
vLInfoMap: p
|
|
79
80
|
} = a;
|
|
80
|
-
await
|
|
81
|
+
await M(a, s) && (await m(a, s), await e.saveKeyValueMap(s), {
|
|
81
82
|
snapshotNum: a,
|
|
82
83
|
info: e,
|
|
83
84
|
posMap: s,
|
|
@@ -91,73 +92,74 @@ class s extends a {
|
|
|
91
92
|
0 < s.length && e.push((async (a, s, o) => {
|
|
92
93
|
var t, {
|
|
93
94
|
qySnapshots: e,
|
|
94
|
-
vLInfoMap: p
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
95
|
+
vLInfoMap: p,
|
|
96
|
+
combinedSnapshotNumList: n
|
|
97
|
+
} = a, i = e.getMaxCombinedSnapshot(s), {
|
|
98
|
+
snapshotNum: r,
|
|
99
|
+
info: f,
|
|
100
|
+
keyValueMap: h
|
|
101
|
+
} = (await m(a, i), i);
|
|
102
|
+
Object.assign(i, {
|
|
100
103
|
posMap: void 0,
|
|
101
104
|
prefixPM: void 0
|
|
102
|
-
})
|
|
103
|
-
for (t of s) t !=
|
|
105
|
+
});
|
|
106
|
+
for (t of s) t != i && (n.push(t.snapshotNum), await m(a, t), Object.assign(h, t.keyValueMap),
|
|
104
107
|
Object.assign(t, {
|
|
105
108
|
keyValueMap: void 0,
|
|
106
109
|
posMap: void 0,
|
|
107
110
|
prefixPM: void 0
|
|
108
111
|
}));
|
|
109
|
-
await e.saveKeyValueMap(
|
|
110
|
-
snapshotNum:
|
|
111
|
-
combinedSnapshotNumList:
|
|
112
|
-
posMap:
|
|
112
|
+
await e.saveKeyValueMap(i), p[r] = f, o.combineUpdate = {
|
|
113
|
+
snapshotNum: r,
|
|
114
|
+
combinedSnapshotNumList: n,
|
|
115
|
+
posMap: i.posMap
|
|
113
116
|
};
|
|
114
117
|
})(this, s, t)), await Promise.all(e), this.castParent("onCompactUpdates", t);
|
|
115
118
|
}
|
|
116
|
-
async _op_saveSnapshotInfos(
|
|
117
|
-
var
|
|
118
|
-
qySnapshots:
|
|
119
|
-
pMInfoMap:
|
|
120
|
-
vLInfoMap:
|
|
119
|
+
async _op_saveSnapshotInfos() {
|
|
120
|
+
var a, s, {
|
|
121
|
+
qySnapshots: o,
|
|
122
|
+
pMInfoMap: t,
|
|
123
|
+
vLInfoMap: e,
|
|
124
|
+
combinedSnapshotNumList: p,
|
|
121
125
|
qyKVDataCleaner: n
|
|
122
126
|
} = this, i = (Object.assign(this, {
|
|
123
127
|
pMInfoMap: {},
|
|
124
128
|
vLInfoMap: {}
|
|
125
|
-
}),
|
|
126
|
-
for (
|
|
127
|
-
for (
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
l.push([ h, v.pMVersion ]), n.cleanVLFiles(h, v.vLVersion);
|
|
138
|
-
}
|
|
139
|
-
n.cleanPMFiles(l);
|
|
129
|
+
}), []);
|
|
130
|
+
for (a in t) i.push(o.saveSnapshotInfo(a, t[a]));
|
|
131
|
+
for (s in e) i.push(o.saveSnapshotInfo(s, e[s]));
|
|
132
|
+
await Promise.all(i);
|
|
133
|
+
var r, f, h = [];
|
|
134
|
+
for (r in t) {
|
|
135
|
+
var l = t[r];
|
|
136
|
+
h.push([ r, l.pMVersion ]);
|
|
137
|
+
}
|
|
138
|
+
for (f in e) {
|
|
139
|
+
var M = e[f];
|
|
140
|
+
h.push([ f, M.pMVersion ]), n.cleanVLFiles(f, M.vLVersion);
|
|
140
141
|
}
|
|
142
|
+
n.cleanPMFiles(h), 0 < p.length && (n.removeSnapshotsFiles(p), p.length = 0);
|
|
141
143
|
}
|
|
142
144
|
}
|
|
143
145
|
|
|
144
|
-
async function
|
|
145
|
-
|
|
146
|
+
async function M(a, s) {
|
|
147
|
+
a = a.qySnapshots;
|
|
146
148
|
let {
|
|
147
|
-
prefixPM:
|
|
148
|
-
posMap:
|
|
149
|
+
prefixPM: o,
|
|
150
|
+
posMap: t
|
|
149
151
|
} = s;
|
|
150
|
-
var
|
|
151
|
-
for (
|
|
152
|
-
var [
|
|
153
|
-
if (!
|
|
154
|
-
|
|
152
|
+
var e, p = a.getPMFilePath(s), n = await f(p);
|
|
153
|
+
for (e of Object.keys(o).sort()) {
|
|
154
|
+
var [ i, r ] = o[e], i = await l(p, n, i, r);
|
|
155
|
+
if (!i) return n.close(), !1;
|
|
156
|
+
h(i, (a, s) => t[a] = s);
|
|
155
157
|
}
|
|
156
|
-
return
|
|
158
|
+
return n.close(), !0;
|
|
157
159
|
}
|
|
158
160
|
|
|
159
|
-
async function
|
|
160
|
-
var o, a = a.qySnapshots, t = s.posMap, e = s.keyValueMap = {}, p = a.getVLFilePath(s), n = await
|
|
161
|
+
async function m(a, s) {
|
|
162
|
+
var o, a = a.qySnapshots, t = s.posMap, e = s.keyValueMap = {}, p = a.getVLFilePath(s), n = await f(p);
|
|
161
163
|
for (o of Object.keys(t).sort()) {
|
|
162
164
|
var [ i, r ] = t[o];
|
|
163
165
|
if (0 < r) {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import {
|
|
2
|
-
join as
|
|
2
|
+
join as t
|
|
3
3
|
} from "node:path";
|
|
4
4
|
|
|
5
5
|
import {
|
|
@@ -26,124 +26,126 @@ class s extends a {
|
|
|
26
26
|
super(s = {
|
|
27
27
|
...o("QySnapshotSaver_Worker"),
|
|
28
28
|
...s
|
|
29
|
-
}, [
|
|
30
|
-
var
|
|
29
|
+
}, [], [ "waitForSnapshotSaved" ]);
|
|
30
|
+
var e = t(a, "snapshot");
|
|
31
31
|
Object.assign(this, {
|
|
32
32
|
kvFolder: a,
|
|
33
|
-
snapshotFolder:
|
|
34
|
-
qySnapshots: new n(
|
|
33
|
+
snapshotFolder: e,
|
|
34
|
+
qySnapshots: new n(e, s),
|
|
35
35
|
qyKVDataCleaner: new p(this, a, s),
|
|
36
|
-
aclKeyValueMap: {}
|
|
36
|
+
aclKeyValueMap: {},
|
|
37
|
+
snapshotSavedChangeId: 0
|
|
37
38
|
});
|
|
38
39
|
}
|
|
39
|
-
|
|
40
|
-
this.maxChangeId = a, this.qyKVDataCleaner.start(), s && this.waitForSnapshotSaved(h(this, s, a,
|
|
40
|
+
_op_start(a, s, e) {
|
|
41
|
+
this.maxChangeId = a, this.qyKVDataCleaner.start(), s && this.waitForSnapshotSaved(h(this, s, a, e));
|
|
41
42
|
}
|
|
42
|
-
castSave(a, s,
|
|
43
|
+
castSave(a, s, e) {
|
|
43
44
|
var {
|
|
44
|
-
aclKeyValueMap:
|
|
45
|
+
aclKeyValueMap: t,
|
|
45
46
|
qySnapshots: o
|
|
46
47
|
} = this;
|
|
47
|
-
o.applyCmdObj(s,
|
|
48
|
+
o.applyCmdObj(s, t, e), this.maxChangeId = a;
|
|
48
49
|
}
|
|
49
50
|
async saveSnapshot(a) {
|
|
50
51
|
var {
|
|
51
52
|
maxChangeId: s,
|
|
52
|
-
aclKeyValueMap:
|
|
53
|
+
aclKeyValueMap: e
|
|
53
54
|
} = this;
|
|
54
|
-
this.aclKeyValueMap = {}, this.waitForSnapshotSaved(h(this, a, s,
|
|
55
|
+
this.aclKeyValueMap = {}, this.waitForSnapshotSaved(h(this, a, s, e));
|
|
55
56
|
}
|
|
56
57
|
releaseSnapshot(a) {
|
|
57
|
-
var s,
|
|
58
|
-
numToSnapshotMap:
|
|
58
|
+
var s, e = this.qySnapshots, {
|
|
59
|
+
numToSnapshotMap: t,
|
|
59
60
|
keyToSnapshotMap: o
|
|
60
|
-
} =
|
|
61
|
-
for (s in delete
|
|
62
|
-
|
|
61
|
+
} = e, t = t[a], a = t.keyValueMap;
|
|
62
|
+
for (s in delete t.keyValueMap, a) delete o[s];
|
|
63
|
+
e.delSnapshot(t), global.gc && global.gc();
|
|
63
64
|
}
|
|
64
65
|
async _op_stop() {
|
|
65
66
|
var {
|
|
66
67
|
qySnapshots: a,
|
|
67
|
-
qyKVDataCleaner: s
|
|
68
|
+
qyKVDataCleaner: s,
|
|
69
|
+
snapshotSavedChangeId: e
|
|
68
70
|
} = this;
|
|
69
|
-
a.closeAllFDs(), await s.stop();
|
|
71
|
+
return a.closeAllFDs(), await s.stop(), e;
|
|
70
72
|
}
|
|
71
73
|
async _op_waitForSnapshotSaved({
|
|
72
74
|
saveMaxSnapshotInfoPromise: a,
|
|
73
75
|
outdates: s
|
|
74
76
|
}) {
|
|
75
|
-
var
|
|
77
|
+
var e, {
|
|
76
78
|
snapshotNum: a,
|
|
77
|
-
maxChangeId:
|
|
79
|
+
maxChangeId: t
|
|
78
80
|
} = await a, {
|
|
79
81
|
emptySnapshotNumList: s,
|
|
80
82
|
pMChangeList: o,
|
|
81
83
|
vLChange: n,
|
|
82
84
|
snapshotInfoMap: p,
|
|
83
85
|
promises: h
|
|
84
|
-
} = s, {
|
|
86
|
+
} = (this.snapshotSavedChangeId = t, s), {
|
|
85
87
|
qyKVDataCleaner: r,
|
|
86
88
|
qySnapshots: i,
|
|
87
89
|
options: l
|
|
88
90
|
} = this;
|
|
89
|
-
for (
|
|
90
|
-
p) h.push(i.saveSnapshotInfo(
|
|
91
|
+
for (e in r.cleanAclFiles(a), 0 < h.length && await Promise.all(h), h.length = 0,
|
|
92
|
+
p) h.push(i.saveSnapshotInfo(e, p[e]));
|
|
91
93
|
0 < h.length && await Promise.all(h), 0 < s.length && r.removeSnapshotsFiles(s),
|
|
92
94
|
0 < o.length && r.cleanPMFiles(o), 0 < n.length && r.cleanVLFiles(n[0], n[1]);
|
|
93
95
|
let u;
|
|
94
96
|
a = i.snapshotCount;
|
|
95
97
|
0 < a && a >= l.maxInMemSnapshotCount && (delete (s = (a => {
|
|
96
|
-
let s = a.qySnapshots.numToSnapshotMap,
|
|
97
|
-
for (var
|
|
98
|
-
var o = s[
|
|
99
|
-
(!
|
|
98
|
+
let s = a.qySnapshots.numToSnapshotMap, e;
|
|
99
|
+
for (var t in s) {
|
|
100
|
+
var o = s[t];
|
|
101
|
+
(!e || e.snapshotNum > t) && (e = o);
|
|
100
102
|
}
|
|
101
|
-
return
|
|
103
|
+
return e;
|
|
102
104
|
})(this)).prefixPM, delete (u = {
|
|
103
105
|
...s
|
|
104
106
|
}).keyValueMap, delete s.posMap, s.isOut = !0, logger.info("Sending snapshot " + s.snapshotNum)),
|
|
105
|
-
this.castParent("onSnapshotSavedChangeId",
|
|
107
|
+
this.castParent("onSnapshotSavedChangeId", t, u);
|
|
106
108
|
}
|
|
107
109
|
}
|
|
108
110
|
|
|
109
|
-
function h(a, s,
|
|
111
|
+
function h(a, s, e, t) {
|
|
110
112
|
var o = (a => {
|
|
111
|
-
var s,
|
|
112
|
-
emptySnapshotNumList:
|
|
113
|
+
var s, e = a.qySnapshots, {
|
|
114
|
+
emptySnapshotNumList: t,
|
|
113
115
|
combiningSnapshotList: a,
|
|
114
116
|
pMCompactSnapshotList: o
|
|
115
|
-
} =
|
|
117
|
+
} = e.calOutdates(), n = {}, p = [], h = [], r = [];
|
|
116
118
|
for (s of o) {
|
|
117
119
|
var {
|
|
118
120
|
snapshotNum: i,
|
|
119
121
|
info: l
|
|
120
122
|
} = s;
|
|
121
|
-
p.push(
|
|
123
|
+
p.push(e.savePosMap(s)), h.push([ i, l.pMVersion ]), n[i] = {
|
|
122
124
|
...l
|
|
123
125
|
};
|
|
124
126
|
}
|
|
125
|
-
let u = a.length,
|
|
127
|
+
let u = a.length, S;
|
|
126
128
|
if (0 < u) {
|
|
127
|
-
var
|
|
128
|
-
keyValueMap:
|
|
129
|
+
var m, d = e.keyToSnapshotMap, {
|
|
130
|
+
keyValueMap: y,
|
|
129
131
|
info: o,
|
|
130
132
|
snapshotNum: v
|
|
131
|
-
} =
|
|
132
|
-
for (
|
|
133
|
+
} = S = e.getMaxCombinedSnapshot(a);
|
|
134
|
+
for (m of a) if (S != m) {
|
|
133
135
|
var g, {
|
|
134
136
|
keyValueMap: M,
|
|
135
137
|
snapshotNum: f
|
|
136
|
-
} =
|
|
137
|
-
for (g in M)
|
|
138
|
-
|
|
138
|
+
} = m;
|
|
139
|
+
for (g in M) y[g] = M[g], d[g] = S;
|
|
140
|
+
e.delSnapshot(m), t.push(f);
|
|
139
141
|
}
|
|
140
|
-
p.push(
|
|
142
|
+
p.push(e.saveKeyValueMap(S)), h.push([ v, o.pMVersion ]), r.push(v, o.vLVersion),
|
|
141
143
|
n[v] = {
|
|
142
144
|
...o
|
|
143
145
|
};
|
|
144
146
|
}
|
|
145
147
|
return {
|
|
146
|
-
emptySnapshotNumList:
|
|
148
|
+
emptySnapshotNumList: t,
|
|
147
149
|
pMChangeList: h,
|
|
148
150
|
vLChange: r,
|
|
149
151
|
snapshotInfoMap: n,
|
|
@@ -151,27 +153,27 @@ function h(a, s, t, e) {
|
|
|
151
153
|
};
|
|
152
154
|
})(a), s = {
|
|
153
155
|
snapshotNum: s,
|
|
154
|
-
keyValueMap:
|
|
156
|
+
keyValueMap: t,
|
|
155
157
|
outdatedCount: 0,
|
|
156
158
|
info: {
|
|
157
|
-
maxChangeId:
|
|
159
|
+
maxChangeId: e,
|
|
158
160
|
pMVersion: 0,
|
|
159
161
|
vLVersion: 0
|
|
160
162
|
}
|
|
161
|
-
},
|
|
163
|
+
}, t = (a.qySnapshots.addMaxSnapshot(s), (async (a, s) => {
|
|
162
164
|
await (a = a.qySnapshots).saveKeyValueMap(s);
|
|
163
165
|
var {
|
|
164
166
|
snapshotNum: s,
|
|
165
|
-
info:
|
|
167
|
+
info: e
|
|
166
168
|
} = s;
|
|
167
|
-
return await a.saveSnapshotInfo(s,
|
|
169
|
+
return await a.saveSnapshotInfo(s, e), logger.log("Created snapshot " + s),
|
|
168
170
|
{
|
|
169
171
|
snapshotNum: s,
|
|
170
|
-
maxChangeId:
|
|
172
|
+
maxChangeId: e.maxChangeId
|
|
171
173
|
};
|
|
172
174
|
})(a, s));
|
|
173
175
|
return {
|
|
174
|
-
saveMaxSnapshotInfoPromise:
|
|
176
|
+
saveMaxSnapshotInfoPromise: t,
|
|
175
177
|
outdates: o
|
|
176
178
|
};
|
|
177
179
|
}
|