datafolder 1.0.6 → 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 +3 -1
- package/internal.md +119 -0
- package/package.json +2 -2
- package/scripts/convertBinFiles.js +49 -0
- package/scripts/fastify.js +2 -2
- package/src/QyCD.js +19 -10
- package/src/QyCache.js +6 -0
- package/src/QyFetch.js +1 -1
- package/src/QyKVData.js +21 -12
- package/src/QyKVDataSaver_Worker.js +7 -7
- package/src/QySnapshotCompactor_Worker.js +19 -18
- package/src/QySnapshotSaver_Worker.js +54 -52
- package/src/QySnapshots.js +72 -64
- package/src/rpc/getTriggerFiles.js +1 -0
- package/src/soc_pokec.js +7 -7
- package/static/datafolderui/QyStyledElement.js +6 -15
- package/static/datafolderui/QyUIFolderTree.js +71 -62
- package/static/datafolderui/QyUIFolderViewer.js +210 -0
- package/static/datafolderui/QyUIUtils.js +1 -1
- package/static/datafolderui/display-tree.js +18 -57
- package/static/datafolderui/explore-tree.js +10 -10
- package/static/datafolderui/folder-tree.js +71 -2
- package/static/datafolderui/json-view.js +7 -3
- package/static/datafolderui/main-page.js +22 -19
- package/static/datafolderui/query-editor.js +1 -1
- package/static/datafolderui/trigger-editor.js +30 -0
- package/data/sampleDataFolder/qykv/history/acl/1_acl.txt +0 -1
- package/data/sampleDataFolder/qykv/history/acl/2_acl.txt +0 -1
- package/data/sampleDataFolder/qykv/history/acl/3_acl.txt +0 -1
- package/data/sampleDataFolder/qykv/history/acl/4_acl.txt +0 -1
- package/data/sampleDataFolder/qykv/history/acl/5_acl.txt +0 -1
- package/data/sampleDataFolder/qykv/snapshot/1/1_pM.txt +0 -0
- package/data/sampleDataFolder/qykv/snapshot/1/1_prefixPM.txt +0 -0
- package/data/sampleDataFolder/qykv/snapshot/1/1_vL.txt +0 -10
- package/data/sampleDataFolder/qykv/snapshot/2/1_pM.txt +0 -0
- package/data/sampleDataFolder/qykv/snapshot/2/1_prefixPM.txt +0 -0
- package/data/sampleDataFolder/qykv/snapshot/2/1_vL.txt +0 -1
- package/data/sampleDataFolder/qykv/snapshot/3/1_pM.txt +0 -0
- package/data/sampleDataFolder/qykv/snapshot/3/1_prefixPM.txt +0 -0
- package/data/sampleDataFolder/qykv/snapshot/3/1_vL.txt +0 -1
- package/data/sampleDataFolder/qykv/snapshot/4/1_pM.txt +0 -0
- package/data/sampleDataFolder/qykv/snapshot/4/1_prefixPM.txt +0 -0
- package/data/sampleDataFolder/qykv/snapshot/4/1_vL.txt +0 -1
- package/data/sampleDataFolder/qykv/snapshot/4/2_pM.txt +0 -0
- package/data/sampleDataFolder/qykv/snapshot/4/2_prefixPM.txt +0 -0
- package/data/sampleDataFolder/qykv/snapshot/4/2_vL.txt +0 -9
- package/data/sampleDataFolder/qykv/snapshot/5/1_pM.txt +0 -0
- package/data/sampleDataFolder/qykv/snapshot/5/1_prefixPM.txt +0 -0
- package/data/sampleDataFolder/qykv/snapshot/5/1_vL.txt +0 -55
- package/data/sampleDataFolder/qykv/snapshot/info/1.json +0 -1
- package/data/sampleDataFolder/qykv/snapshot/info/2.json +0 -1
- package/data/sampleDataFolder/qykv/snapshot/info/3.json +0 -1
- package/data/sampleDataFolder/qykv/snapshot/info/4.json +0 -1
- package/data/sampleDataFolder/qykv/snapshot/info/5.json +0 -1
- package/data/sampleDataFolder/qylog/2026/02/15/08/change.txt +0 -58
- package/data/sampleDataFolder/qylog/2026/02/15/08/stderr.txt +0 -11
- package/data/sampleDataFolder/qylog/2026/02/15/08/stdout.txt +0 -36
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import {
|
|
2
|
-
join as
|
|
2
|
+
join as t
|
|
3
3
|
} from "node:path";
|
|
4
4
|
|
|
5
5
|
import {
|
|
@@ -27,123 +27,125 @@ class s extends a {
|
|
|
27
27
|
...o("QySnapshotSaver_Worker"),
|
|
28
28
|
...s
|
|
29
29
|
}, [], [ "waitForSnapshotSaved" ]);
|
|
30
|
-
var
|
|
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
|
-
_op_start(a, s,
|
|
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
|
}
|
package/src/QySnapshots.js
CHANGED
|
@@ -6,14 +6,14 @@ import {
|
|
|
6
6
|
|
|
7
7
|
import {
|
|
8
8
|
readdir as l,
|
|
9
|
-
readFile as
|
|
9
|
+
readFile as r
|
|
10
10
|
} from "node:fs/promises";
|
|
11
11
|
|
|
12
12
|
import {
|
|
13
13
|
join as s
|
|
14
14
|
} from "node:path";
|
|
15
15
|
|
|
16
|
-
import
|
|
16
|
+
import m from "node:zlib";
|
|
17
17
|
|
|
18
18
|
import {
|
|
19
19
|
getDefaultOptions as n
|
|
@@ -21,21 +21,21 @@ import {
|
|
|
21
21
|
|
|
22
22
|
import {
|
|
23
23
|
Hash_Key_Length as u,
|
|
24
|
-
folderOrFileExists as
|
|
25
|
-
listToMap as
|
|
26
|
-
isEmptyObj as
|
|
27
|
-
isString as
|
|
24
|
+
folderOrFileExists as d,
|
|
25
|
+
listToMap as f,
|
|
26
|
+
isEmptyObj as h,
|
|
27
|
+
isString as v
|
|
28
28
|
} from "./QyUtils.js";
|
|
29
29
|
|
|
30
30
|
import {
|
|
31
|
-
QyBinWriter as
|
|
31
|
+
QyBinWriter as M
|
|
32
32
|
} from "./QyBinWriter.js";
|
|
33
33
|
|
|
34
34
|
import {
|
|
35
|
-
bufferToNums as
|
|
36
|
-
numsToBuffer as
|
|
37
|
-
applyAclChange as
|
|
38
|
-
iterCmdKeys as
|
|
35
|
+
bufferToNums as g,
|
|
36
|
+
numsToBuffer as y,
|
|
37
|
+
applyAclChange as c,
|
|
38
|
+
iterCmdKeys as S
|
|
39
39
|
} from "./QyAcl.js";
|
|
40
40
|
|
|
41
41
|
import {
|
|
@@ -72,38 +72,34 @@ class t {
|
|
|
72
72
|
async loadSnapshotInfos() {
|
|
73
73
|
let {
|
|
74
74
|
snapshotInfoFolder: t,
|
|
75
|
-
qyJsonSaver:
|
|
76
|
-
numToSnapshotMap:
|
|
75
|
+
qyJsonSaver: n,
|
|
76
|
+
numToSnapshotMap: r
|
|
77
77
|
} = this;
|
|
78
|
-
if (await
|
|
78
|
+
if (await d(t)) {
|
|
79
79
|
var a = (await l(t)).filter(t => /^[1-9]/.test(t)).map(t => parseInt(t)).sort((t, a) => t - a);
|
|
80
|
-
let
|
|
80
|
+
let e = 0, s = 0;
|
|
81
81
|
await Promise.all(a.map(async t => {
|
|
82
|
-
var a = await
|
|
82
|
+
var a = await n.loadFromFile(t + ".json"), o = r[t] = {
|
|
83
83
|
snapshotNum: t,
|
|
84
84
|
info: a,
|
|
85
85
|
posMap: {},
|
|
86
86
|
outdatedCount: 0
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
for (let t = 0; t < s; ) {
|
|
91
|
-
var r = t + k, i = e.toString("latin1", t, r), i = n[i] = [];
|
|
92
|
-
t = y(e, r, i);
|
|
93
|
-
}
|
|
87
|
+
}, t = (++this.snapshotCount, t > e && (e = t, s = a.maxChangeId),
|
|
88
|
+
this), a = o;
|
|
89
|
+
t = k(t, a), P.info("Loading " + t), a.prefixPM = await V(t);
|
|
94
90
|
})), Object.assign(this, {
|
|
95
|
-
maxSnapshotNum:
|
|
96
|
-
snapshotMaxChangeId:
|
|
91
|
+
maxSnapshotNum: e,
|
|
92
|
+
snapshotMaxChangeId: s
|
|
97
93
|
});
|
|
98
94
|
var {
|
|
99
95
|
numToSnapshotMap: o,
|
|
100
|
-
prefixMap:
|
|
96
|
+
prefixMap: i
|
|
101
97
|
} = this;
|
|
102
|
-
for (
|
|
103
|
-
var
|
|
104
|
-
for (
|
|
105
|
-
var
|
|
106
|
-
|
|
98
|
+
for (f of a) {
|
|
99
|
+
var p, u = o[f], f = u.prefixPM;
|
|
100
|
+
for (p in f) {
|
|
101
|
+
var h = i[p];
|
|
102
|
+
h ? h.push(u) : i[p] = [ u ];
|
|
107
103
|
}
|
|
108
104
|
}
|
|
109
105
|
}
|
|
@@ -116,14 +112,14 @@ class t {
|
|
|
116
112
|
var a, o = this.options.minLenToCompress, {
|
|
117
113
|
keyValueMap: e,
|
|
118
114
|
info: s
|
|
119
|
-
} = t, n = (++s.vLVersion, new
|
|
115
|
+
} = t, n = (++s.vLVersion, new M()), r = (n.start(this.getVLFilePath(t)),
|
|
120
116
|
Object.keys(e).sort()), i = {};
|
|
121
117
|
let p = 0, u = 0, f, h;
|
|
122
118
|
for (a of r) {
|
|
123
119
|
var l = e[a];
|
|
124
120
|
let t;
|
|
125
|
-
null == l ? t =
|
|
126
|
-
|
|
121
|
+
null == l ? t = K : (h = Buffer.isBuffer(l) ? (f = l, 0) : v(l) ? (f = l.length >= o ? (n.save(j),
|
|
122
|
+
m.zstdCompressSync(l)) : (n.save(F), Buffer.from(l)), 1) : (f = Buffer.from(JSON.stringify(Q(a) && !x(l) ? Object.keys(l) : l)),
|
|
127
123
|
0), n.save([ f, O ]), l = h + f.length, t = [ p, l ], p += l + 1), i[a] = t,
|
|
128
124
|
++u;
|
|
129
125
|
}
|
|
@@ -160,12 +156,12 @@ class t {
|
|
|
160
156
|
var e = o.length;
|
|
161
157
|
for (let t = 0; t < e; t += 2) {
|
|
162
158
|
var s = o[t], n = o[t + 1];
|
|
163
|
-
a[s] = null != n &&
|
|
159
|
+
a[s] = null != n && Q(s) ? f(n) : n;
|
|
164
160
|
}
|
|
165
161
|
}
|
|
166
|
-
|
|
162
|
+
S(t, t => {
|
|
167
163
|
t in a || (a[t] = this.getValueSync(t)), this.removeKey(t);
|
|
168
|
-
}),
|
|
164
|
+
}), c(a, t);
|
|
169
165
|
}
|
|
170
166
|
getValueSync(t) {
|
|
171
167
|
var a = ((t, a) => {
|
|
@@ -182,7 +178,7 @@ class t {
|
|
|
182
178
|
posMap: s,
|
|
183
179
|
prefixPM: n
|
|
184
180
|
} = a;
|
|
185
|
-
if (n = n[o]) return [ n, e ] = n, n =
|
|
181
|
+
if (n = n[o]) return [ n, e ] = n, n = T(t, t.getPMFilePath(a), n, e),
|
|
186
182
|
t.loadPartialPosMapBuffer(a, o, n), s;
|
|
187
183
|
})(t, s, n);
|
|
188
184
|
if (i && a in i) return s;
|
|
@@ -199,25 +195,18 @@ class t {
|
|
|
199
195
|
var [ e, o ] = o;
|
|
200
196
|
if (0 != o) {
|
|
201
197
|
var s = this;
|
|
202
|
-
if (a = s.getVLFilePath(a), s =
|
|
203
|
-
|
|
198
|
+
if (a = s.getVLFilePath(a), s = T(s, a, e, o)) return (a = s[0]) == L ? s.toString("utf8", 1) : a == b ? m.zstdDecompressSync(s.subarray(1)).toString() : (e = JSON.parse(s),
|
|
199
|
+
Q(t) ? f(e) : e);
|
|
204
200
|
}
|
|
205
201
|
}
|
|
206
202
|
}
|
|
207
203
|
}
|
|
208
|
-
iterPMBuffer(a, o) {
|
|
209
|
-
var e = a.length;
|
|
210
|
-
for (let t = 0; t < e; ) {
|
|
211
|
-
var s = t + u, n = a.toString("latin1", t, s), r = [];
|
|
212
|
-
t = y(a, s, r), o(n, r);
|
|
213
|
-
}
|
|
214
|
-
}
|
|
215
204
|
loadPartialPosMapBuffer(o, t, a) {
|
|
216
205
|
let {
|
|
217
206
|
posMap: e,
|
|
218
207
|
prefixPM: s
|
|
219
208
|
} = o, n = (delete s[t], this).keyToSnapshotMap;
|
|
220
|
-
|
|
209
|
+
N(a, (t, a) => {
|
|
221
210
|
t in n ? ++o.outdatedCount : (e[t] = a, n[t] = o);
|
|
222
211
|
});
|
|
223
212
|
}
|
|
@@ -235,10 +224,10 @@ class t {
|
|
|
235
224
|
} = n;
|
|
236
225
|
for (t in r) {
|
|
237
226
|
var u, f = r[t];
|
|
238
|
-
f.isOut || (100 == (u =
|
|
239
|
-
f.info.totalCount < u.options.minSnapshotKeyCount &&
|
|
227
|
+
f.isOut || (100 == (u = D(f)) ? (this.delSnapshot(f), a.push(t)) : p < u ? (B(f) ? o : s).push(f) : Math.round(f.outdatedCount / f.info.totalCount * 100) > i ? e.push(f) : (u = this,
|
|
228
|
+
f.info.totalCount < u.options.minSnapshotKeyCount && B(f) && o.push(f)));
|
|
240
229
|
}
|
|
241
|
-
return 1 == o.length &&
|
|
230
|
+
return 1 == o.length && D(o[0]) < p && (o.length = 0), 0 < e.length && P.log("pMCompacts:" + e.map(t => t.snapshotNum)),
|
|
242
231
|
0 < s.length && P.log("vLCompacts:" + s.map(t => t.snapshotNum)), 0 < o.length && P.log("combiningSnapshots:" + o.map(t => t.snapshotNum)),
|
|
243
232
|
{
|
|
244
233
|
emptySnapshotNumList: a,
|
|
@@ -282,18 +271,18 @@ class t {
|
|
|
282
271
|
outdatedCount: e,
|
|
283
272
|
info: s,
|
|
284
273
|
posMap: n
|
|
285
|
-
} = t, r = (s.outdatedCount += e, t.outdatedCount = 0, ++s.pMVersion, new
|
|
274
|
+
} = t, r = (s.outdatedCount += e, t.outdatedCount = 0, ++s.pMVersion, new M()), i = (r.start(this.getPMFilePath(t)),
|
|
286
275
|
t.prefixPM = {});
|
|
287
276
|
let p = 0, u = 0, f;
|
|
288
277
|
for (o of a = a || Object.keys(n).sort()) {
|
|
289
278
|
null == f ? f = I(o) : o.startsWith(f) || (i[f] = [ p, u ], f = I(o),
|
|
290
279
|
p += u, u = 0);
|
|
291
|
-
var h = Buffer.from(o), l =
|
|
280
|
+
var h = Buffer.from(o), l = y(n[o]);
|
|
292
281
|
r.save([ h, l ]), u += h.length + l.length;
|
|
293
282
|
}
|
|
294
283
|
return null != f && (i[f] = [ p, u ]), Promise.all([ r.stop(), ((t, a) => {
|
|
295
|
-
var o, e = new
|
|
296
|
-
for (o in s) e.save([ Buffer.from(o),
|
|
284
|
+
var o, e = new M(), s = (e.start(k(t, a)), a).prefixPM;
|
|
285
|
+
for (o in s) e.save([ Buffer.from(o), y(s[o]) ]);
|
|
297
286
|
return e.stop();
|
|
298
287
|
})(this, t) ]);
|
|
299
288
|
}
|
|
@@ -313,7 +302,24 @@ class t {
|
|
|
313
302
|
}
|
|
314
303
|
}
|
|
315
304
|
|
|
316
|
-
function
|
|
305
|
+
function N(a, o) {
|
|
306
|
+
var e = a.length;
|
|
307
|
+
for (let t = 0; t < e; ) {
|
|
308
|
+
var s = t + u, n = a.toString("latin1", t, s), r = [];
|
|
309
|
+
t = g(a, s, r), o(n, r);
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
async function V(t) {
|
|
314
|
+
var a = await r(t), o = a.length, e = {};
|
|
315
|
+
for (let t = 0; t < o; ) {
|
|
316
|
+
var s = t + w, n = e[a.toString("latin1", t, s)] = [];
|
|
317
|
+
t = g(a, s, n);
|
|
318
|
+
}
|
|
319
|
+
return e;
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
function T(t, a, o, e) {
|
|
317
323
|
var s = ((t, a) => {
|
|
318
324
|
let o = t.fDMap, e = o[a];
|
|
319
325
|
if (!e) {
|
|
@@ -334,15 +340,15 @@ function B(t, a, o, e) {
|
|
|
334
340
|
return n;
|
|
335
341
|
}
|
|
336
342
|
|
|
337
|
-
function
|
|
343
|
+
function B(t) {
|
|
338
344
|
var {
|
|
339
345
|
keyValueMap: a,
|
|
340
346
|
prefixPM: o
|
|
341
347
|
} = t;
|
|
342
|
-
return a || null == o ||
|
|
348
|
+
return a || null == o || h(t.prefixPM);
|
|
343
349
|
}
|
|
344
350
|
|
|
345
|
-
function
|
|
351
|
+
function k(t, a) {
|
|
346
352
|
var {
|
|
347
353
|
snapshotNum: a,
|
|
348
354
|
info: o
|
|
@@ -355,17 +361,17 @@ function a(t, a) {
|
|
|
355
361
|
null != o && (e(o), delete t[a]);
|
|
356
362
|
}
|
|
357
363
|
|
|
358
|
-
let
|
|
364
|
+
let K = [ 0, 0 ], w = 3;
|
|
359
365
|
|
|
360
366
|
function I(t) {
|
|
361
|
-
return t.substring(0,
|
|
367
|
+
return t.substring(0, w);
|
|
362
368
|
}
|
|
363
369
|
|
|
364
|
-
function
|
|
370
|
+
function Q(t) {
|
|
365
371
|
return !t.startsWith("c");
|
|
366
372
|
}
|
|
367
373
|
|
|
368
|
-
function
|
|
374
|
+
function D(t) {
|
|
369
375
|
var {
|
|
370
376
|
outdatedCount: t,
|
|
371
377
|
info: a
|
|
@@ -374,5 +380,7 @@ function Q(t) {
|
|
|
374
380
|
}
|
|
375
381
|
|
|
376
382
|
export {
|
|
377
|
-
t as QySnapshots
|
|
383
|
+
t as QySnapshots,
|
|
384
|
+
N as iterPMBuffer,
|
|
385
|
+
V as loadPrefixPMFile
|
|
378
386
|
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
module.exports = () => dataFolder.fileListToTree(dataFolder.triggerFileList);
|
package/src/soc_pokec.js
CHANGED
|
@@ -33,21 +33,21 @@ let f = "./tmp/soc_pokec", w = new e(f);
|
|
|
33
33
|
if (console.time("run"), await w.start(), e) {
|
|
34
34
|
{
|
|
35
35
|
console.time("readData");
|
|
36
|
-
var a,
|
|
37
|
-
for await (o of
|
|
38
|
-
var [ o, i ] = o.split("\t"), n =
|
|
39
|
-
n ? n[i] = 1 :
|
|
36
|
+
var a, s = await c(m, "r"), r = {};
|
|
37
|
+
for await (o of s.readLines()) {
|
|
38
|
+
var [ o, i ] = o.split("\t"), n = r[o];
|
|
39
|
+
n ? n[i] = 1 : r[o] = {
|
|
40
40
|
[i]: 1
|
|
41
41
|
};
|
|
42
42
|
}
|
|
43
43
|
console.timeEnd("readData"), console.time("insertData");
|
|
44
44
|
let e = w.batch, t = 0;
|
|
45
|
-
for (a in
|
|
46
|
-
var l =
|
|
45
|
+
for (a in r) {
|
|
46
|
+
var l = r[a];
|
|
47
47
|
e.insertP([ "relationships", a ], l), 3e4 < ++t && (await e.run(!0),
|
|
48
48
|
t = 0);
|
|
49
49
|
}
|
|
50
|
-
await e.run(!0), console.timeEnd("insertData");
|
|
50
|
+
await e.run(!0), console.timeEnd("insertData"), s.close();
|
|
51
51
|
}
|
|
52
52
|
await 0;
|
|
53
53
|
}
|
|
@@ -1,30 +1,21 @@
|
|
|
1
1
|
import {
|
|
2
|
-
appendStyle as
|
|
2
|
+
appendStyle as o
|
|
3
3
|
} from "./QyUIUtils.js";
|
|
4
4
|
|
|
5
|
-
class
|
|
5
|
+
class e extends HTMLElement {
|
|
6
6
|
constructor(e, t) {
|
|
7
7
|
super(), Array.isArray(e) && (t = e, e = void 0);
|
|
8
8
|
var r = this.attachShadow({
|
|
9
9
|
mode: "open"
|
|
10
10
|
});
|
|
11
11
|
if (t) for (var s of t) {
|
|
12
|
-
var
|
|
13
|
-
|
|
12
|
+
var a = document.createElement("link");
|
|
13
|
+
a.setAttribute("rel", "stylesheet"), a.setAttribute("href", s), r.appendChild(a);
|
|
14
14
|
}
|
|
15
|
-
e &&
|
|
15
|
+
e && o(r, e);
|
|
16
16
|
}
|
|
17
17
|
}
|
|
18
18
|
|
|
19
|
-
function e(e, t, r) {
|
|
20
|
-
customElements.define(e, class extends s {
|
|
21
|
-
constructor() {
|
|
22
|
-
super(t, r);
|
|
23
|
-
}
|
|
24
|
-
});
|
|
25
|
-
}
|
|
26
|
-
|
|
27
19
|
export {
|
|
28
|
-
|
|
29
|
-
e as defineStyledElement
|
|
20
|
+
e as QyStyledElement
|
|
30
21
|
};
|