datafolder 1.0.5 → 1.0.6
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 +4 -1
- package/data/sampleDataFolder/qykv/history/acl/1_acl.txt +1 -0
- package/data/sampleDataFolder/qykv/history/acl/2_acl.txt +1 -0
- package/data/sampleDataFolder/qykv/history/acl/3_acl.txt +1 -0
- package/data/sampleDataFolder/qykv/history/acl/4_acl.txt +1 -0
- package/data/sampleDataFolder/qykv/history/acl/5_acl.txt +1 -0
- 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 +10 -0
- 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 +1 -0
- 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 +1 -0
- 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 +1 -0
- 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 +9 -0
- 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 +55 -0
- package/data/sampleDataFolder/qykv/snapshot/info/1.json +1 -0
- package/data/sampleDataFolder/qykv/snapshot/info/2.json +1 -0
- package/data/sampleDataFolder/qykv/snapshot/info/3.json +1 -0
- package/data/sampleDataFolder/qykv/snapshot/info/4.json +1 -0
- package/data/sampleDataFolder/qykv/snapshot/info/5.json +1 -0
- package/data/sampleDataFolder/qylog/2026/02/15/08/change.txt +58 -0
- package/data/sampleDataFolder/qylog/2026/02/15/08/stderr.txt +11 -0
- package/data/sampleDataFolder/qylog/2026/02/15/08/stdout.txt +36 -0
- package/package.json +1 -1
- package/sample.js +19 -19
- 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 +63 -27
- package/src/QyCache.js +33 -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 +159 -183
- package/src/QyKVDataCleaner_Worker.js +15 -14
- package/src/QyKVDataSaver_Worker.js +16 -16
- 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 +37 -36
- package/src/QySnapshotSaver_Worker.js +2 -2
- package/src/QySnapshots.js +141 -139
- 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/queryFiles.js +1 -1
- package/static/codemirror.bundle/editor.bundle.js +27906 -0
- package/static/datafolderui/QyUIFolderTree.js +121 -145
- package/static/datafolderui/QyUIUtils.js +9 -4
- package/static/datafolderui/code-mirror.js +35 -0
- package/static/datafolderui/display-tree.js +52 -86
- package/static/datafolderui/explore-tree.js +66 -81
- package/static/datafolderui/index.css +7 -0
- package/static/datafolderui/index.html +1 -0
- package/static/datafolderui/main-page.js +34 -55
- package/static/datafolderui/query-editor.js +178 -198
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
|
|
|
@@ -24,7 +24,6 @@ import {
|
|
|
24
24
|
|
|
25
25
|
import {
|
|
26
26
|
isEmptyObj as r,
|
|
27
|
-
listToMap as y,
|
|
28
27
|
readBufferAsync as l
|
|
29
28
|
} from "./QyUtils.js";
|
|
30
29
|
|
|
@@ -44,13 +43,14 @@ class s extends a {
|
|
|
44
43
|
qySnapshots: new n(o, s),
|
|
45
44
|
qyKVDataCleaner: new p(this, a, s),
|
|
46
45
|
pMInfoMap: {},
|
|
47
|
-
vLInfoMap: {}
|
|
46
|
+
vLInfoMap: {},
|
|
47
|
+
combinedSnapshotNumList: []
|
|
48
48
|
});
|
|
49
49
|
}
|
|
50
|
-
|
|
50
|
+
_op_start() {
|
|
51
51
|
this.qyKVDataCleaner.start();
|
|
52
52
|
}
|
|
53
|
-
async
|
|
53
|
+
async _op_stop() {
|
|
54
54
|
await this.qyKVDataCleaner.stop();
|
|
55
55
|
}
|
|
56
56
|
async _op_compactSnapshots(a, o, s) {
|
|
@@ -91,53 +91,54 @@ class s extends a {
|
|
|
91
91
|
0 < s.length && e.push((async (a, s, o) => {
|
|
92
92
|
var t, {
|
|
93
93
|
qySnapshots: e,
|
|
94
|
-
vLInfoMap: p
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
94
|
+
vLInfoMap: p,
|
|
95
|
+
combinedSnapshotNumList: n
|
|
96
|
+
} = a, i = e.getMaxCombinedSnapshot(s), {
|
|
97
|
+
snapshotNum: r,
|
|
98
|
+
info: f,
|
|
99
|
+
keyValueMap: h
|
|
100
|
+
} = (await M(a, i), i);
|
|
101
|
+
Object.assign(i, {
|
|
100
102
|
posMap: void 0,
|
|
101
103
|
prefixPM: void 0
|
|
102
|
-
})
|
|
103
|
-
for (t of s) t !=
|
|
104
|
+
});
|
|
105
|
+
for (t of s) t != i && (n.push(t.snapshotNum), await M(a, t), Object.assign(h, t.keyValueMap),
|
|
104
106
|
Object.assign(t, {
|
|
105
107
|
keyValueMap: void 0,
|
|
106
108
|
posMap: void 0,
|
|
107
109
|
prefixPM: void 0
|
|
108
110
|
}));
|
|
109
|
-
await e.saveKeyValueMap(
|
|
110
|
-
snapshotNum:
|
|
111
|
-
combinedSnapshotNumList:
|
|
112
|
-
posMap:
|
|
111
|
+
await e.saveKeyValueMap(i), p[r] = f, o.combineUpdate = {
|
|
112
|
+
snapshotNum: r,
|
|
113
|
+
combinedSnapshotNumList: n,
|
|
114
|
+
posMap: i.posMap
|
|
113
115
|
};
|
|
114
116
|
})(this, s, t)), await Promise.all(e), this.castParent("onCompactUpdates", t);
|
|
115
117
|
}
|
|
116
|
-
async _op_saveSnapshotInfos(
|
|
117
|
-
var
|
|
118
|
-
qySnapshots:
|
|
119
|
-
pMInfoMap:
|
|
120
|
-
vLInfoMap:
|
|
118
|
+
async _op_saveSnapshotInfos() {
|
|
119
|
+
var a, s, {
|
|
120
|
+
qySnapshots: o,
|
|
121
|
+
pMInfoMap: t,
|
|
122
|
+
vLInfoMap: e,
|
|
123
|
+
combinedSnapshotNumList: p,
|
|
121
124
|
qyKVDataCleaner: n
|
|
122
125
|
} = this, i = (Object.assign(this, {
|
|
123
126
|
pMInfoMap: {},
|
|
124
127
|
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);
|
|
128
|
+
}), []);
|
|
129
|
+
for (a in t) i.push(o.saveSnapshotInfo(a, t[a]));
|
|
130
|
+
for (s in e) i.push(o.saveSnapshotInfo(s, e[s]));
|
|
131
|
+
await Promise.all(i);
|
|
132
|
+
var r, f, h = [];
|
|
133
|
+
for (r in t) {
|
|
134
|
+
var l = t[r];
|
|
135
|
+
h.push([ r, l.pMVersion ]);
|
|
136
|
+
}
|
|
137
|
+
for (f in e) {
|
|
138
|
+
var M = e[f];
|
|
139
|
+
h.push([ f, M.pMVersion ]), n.cleanVLFiles(f, M.vLVersion);
|
|
140
140
|
}
|
|
141
|
+
n.cleanPMFiles(h), 0 < p.length && (n.removeSnapshotsFiles(p), p.length = 0);
|
|
141
142
|
}
|
|
142
143
|
}
|
|
143
144
|
|
|
@@ -26,7 +26,7 @@ class s extends a {
|
|
|
26
26
|
super(s = {
|
|
27
27
|
...o("QySnapshotSaver_Worker"),
|
|
28
28
|
...s
|
|
29
|
-
}, [
|
|
29
|
+
}, [], [ "waitForSnapshotSaved" ]);
|
|
30
30
|
var t = e(a, "snapshot");
|
|
31
31
|
Object.assign(this, {
|
|
32
32
|
kvFolder: a,
|
|
@@ -36,7 +36,7 @@ class s extends a {
|
|
|
36
36
|
aclKeyValueMap: {}
|
|
37
37
|
});
|
|
38
38
|
}
|
|
39
|
-
|
|
39
|
+
_op_start(a, s, t) {
|
|
40
40
|
this.maxChangeId = a, this.qyKVDataCleaner.start(), s && this.waitForSnapshotSaved(h(this, s, a, t));
|
|
41
41
|
}
|
|
42
42
|
castSave(a, s, t) {
|