datafolder 1.0.6 → 1.0.8
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 +7 -2
- package/index.js +1 -1
- package/internal.md +121 -0
- package/package.json +8 -6
- package/scripts/airbnb.js +77 -72
- package/scripts/airbnb2.js +78 -73
- package/scripts/airbnb2_queries.js +181 -229
- package/scripts/airbnb_queries.js +214 -265
- package/scripts/convertBinFiles.js +47 -0
- package/scripts/downloadFile.js +41 -40
- package/scripts/express.js +44 -48
- package/scripts/fastify.js +71 -80
- package/scripts/flights.js +71 -75
- package/scripts/flights2.js +78 -81
- package/scripts/flights2_queries.js +417 -455
- package/scripts/flights_queries.js +381 -407
- package/src/QyAcl.d.ts +17 -0
- package/src/QyAcl.js +113 -116
- package/src/QyAclSaver.d.ts +4 -0
- package/src/QyAclSaver.js +3 -3
- package/src/QyAclSaver_Worker.d.ts +9 -0
- package/src/QyAclSaver_Worker.js +2 -4
- package/src/QyAclWriter.d.ts +5 -0
- package/src/QyBatch.d.ts +42 -0
- package/src/QyBatch.js +8 -8
- package/src/QyBinWriter.d.ts +15 -0
- package/src/QyCD.d.ts +37 -0
- package/src/QyCD.js +27 -16
- package/src/QyCache.d.ts +44 -0
- package/src/QyCache.js +71 -59
- package/src/QyCompressor.d.ts +9 -0
- package/src/QyCompressor.js +29 -29
- package/src/QyCompressor_Worker.d.ts +1 -0
- package/src/QyDB.d.ts +42 -0
- package/src/QyDB.js +13 -11
- package/src/QyDefaultOptions.d.ts +1 -0
- package/src/QyDefaultOptions.js +3 -0
- package/src/QyDir.d.ts +48 -0
- package/src/QyDir.js +41 -41
- package/src/QyFetch.d.ts +7 -0
- package/src/QyFetch.js +3 -4
- package/src/QyFile.d.ts +19 -0
- package/src/QyFile.js +35 -34
- package/src/QyFileContentUtils.d.ts +13 -0
- package/src/QyFileContentUtils.js +126 -126
- package/src/QyFileLogger.d.ts +11 -0
- package/src/QyIndex.d.ts +6 -0
- package/src/QyIndex.js +73 -75
- package/src/QyIndexPropTree.d.ts +7 -0
- package/src/QyIndexPropTree.js +24 -24
- package/src/QyIntersectNode.d.ts +7 -0
- package/src/QyIntersectNode.js +15 -15
- package/src/QyItem.d.ts +30 -0
- package/src/QyItem.js +32 -28
- package/src/QyJsonSaver.d.ts +6 -0
- package/src/QyKVData.d.ts +12 -0
- package/src/QyKVData.js +30 -20
- package/src/QyKVDataCleaner.d.ts +4 -0
- package/src/QyKVDataCleaner.js +1 -1
- package/src/QyKVDataCleaner_Worker.d.ts +13 -0
- package/src/QyKVDataCleaner_Worker.js +2 -4
- package/src/QyKVDataLoader.d.ts +9 -0
- package/src/QyKVDataLoader.js +11 -11
- package/src/QyKVDataSaver.d.ts +4 -0
- package/src/QyKVDataSaver.js +6 -6
- package/src/QyKVDataSaver_Worker.d.ts +13 -0
- package/src/QyKVDataSaver_Worker.js +11 -13
- package/src/QyLogFileSaver.d.ts +4 -0
- package/src/QyLogFileSaver.js +1 -1
- package/src/QyLogFileSaver_Worker.d.ts +8 -0
- package/src/QyLogFileSaver_Worker.js +2 -4
- package/src/QyLogger.d.ts +10 -0
- package/src/QyLogger.js +40 -40
- package/src/QyMessageWorker.d.ts +5 -0
- package/src/QyMessageWorker.js +7 -7
- package/src/QyMessager.d.ts +7 -0
- package/src/QyMessager.js +30 -27
- package/src/QyMessager_Run.d.ts +1 -0
- package/src/QyMessager_Run.js +11 -6
- package/src/QyMod.d.ts +1 -0
- package/src/QyMod.js +6 -6
- package/src/QyOpRunner.d.ts +10 -0
- package/src/QyOpRunner.js +39 -39
- package/src/QyQueue.d.ts +11 -0
- package/src/QySaver.d.ts +10 -0
- package/src/QySnapshotCompactor.d.ts +4 -0
- package/src/QySnapshotCompactor.js +1 -1
- package/src/QySnapshotCompactor_Worker.d.ts +11 -0
- package/src/QySnapshotCompactor_Worker.js +21 -22
- package/src/QySnapshotSaver.d.ts +4 -0
- package/src/QySnapshotSaver.js +1 -1
- package/src/QySnapshotSaver_Worker.d.ts +16 -0
- package/src/QySnapshotSaver_Worker.js +56 -53
- package/src/QySnapshots.d.ts +27 -0
- package/src/QySnapshots.js +74 -66
- package/src/QyStructure.d.ts +1 -0
- package/src/QyStructure.js +18 -18
- package/src/QyTrigger.d.ts +9 -0
- package/src/QyTrigger.js +30 -30
- package/src/QyUnionNode.d.ts +17 -0
- package/src/QyUnionNode.js +2 -2
- package/src/QyUtils.d.ts +53 -0
- package/src/QyUtils.js +140 -117
- package/src/QyWorker.d.ts +5 -0
- package/src/QyWorker.js +18 -18
- package/src/hackernews.d.ts +1 -0
- package/src/hackernews.js +59 -47
- package/src/rpc/getRpcFiles.js +1 -0
- package/src/rpc/getTriggerFiles.js +1 -0
- package/src/simulate.d.ts +1 -0
- package/src/simulate2.d.ts +1 -0
- package/src/soc_pokec.d.ts +1 -0
- package/src/soc_pokec.js +7 -7
- package/static/codemirror.bundle/editor.bundle.js +370 -166
- package/static/datafolderui/QyStyledElement.js +8 -17
- package/static/datafolderui/QyUIFolderViewer.js +230 -0
- package/static/datafolderui/QyUIUtils.js +5 -5
- package/static/datafolderui/code-mirror.js +7 -7
- package/static/datafolderui/display-tree.js +22 -58
- package/static/datafolderui/explore-tree.js +10 -10
- package/static/datafolderui/folder-tree.js +71 -2
- package/static/datafolderui/hscrpt.js +26 -7
- package/static/datafolderui/json-view.js +34 -3
- package/static/datafolderui/main-page.js +67 -36
- package/static/datafolderui/query-editor.js +9 -9
- package/static/datafolderui/rpc-editor.js +31 -0
- package/static/datafolderui/trigger-editor.js +33 -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
- package/static/datafolderui/QyUIFolderTree.js +0 -179
package/src/QyAcl.d.ts
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export declare function delCmdKey(cmdArgAsListObj: any, key: string): void;
|
|
2
|
+
export declare function applyAclChange(aclKeyValueMap: any, cmdArgAsListObj: any): void;
|
|
3
|
+
export declare function iterCmdKeys(cmdArgAsListObj: any, fun: any): void;
|
|
4
|
+
export declare class QyAclCmdGenerator {
|
|
5
|
+
cmdArgAsMapObj: {};
|
|
6
|
+
cmdCount: number;
|
|
7
|
+
batchSize: number;
|
|
8
|
+
constructor();
|
|
9
|
+
pushCmd(cmdName: string, cmdHashKey: string, cmdArg: any): void;
|
|
10
|
+
pushCmdArgAsListObj(cmdArgAsListObj: any): this;
|
|
11
|
+
takeCmdArgAsListObj(): {};
|
|
12
|
+
toAclBuffer(changeId: any): Buffer<ArrayBuffer> | undefined;
|
|
13
|
+
}
|
|
14
|
+
export declare function readAclFile(aclFilePath: any, autoRepairAclFile?: boolean, currentChangeId?: number): Promise<never[]>;
|
|
15
|
+
export declare function numsToBuffer(nums: any): Buffer<ArrayBuffer>;
|
|
16
|
+
export declare function bufferToNums(buffer: any, offset: any, nums: any): any;
|
|
17
|
+
export declare function readAclBuffer(aclFilePath: any, contentBuffer: any, autoRepairAclFile: any, currentChangeId: any): Promise<never[]>;
|
package/src/QyAcl.js
CHANGED
|
@@ -1,181 +1,178 @@
|
|
|
1
1
|
import u from "node:fs/promises";
|
|
2
2
|
|
|
3
3
|
import {
|
|
4
|
-
mergeContent as
|
|
5
|
-
mergeContentChanges as
|
|
4
|
+
mergeContent as g,
|
|
5
|
+
mergeContentChanges as i,
|
|
6
6
|
setValByNamePath as a
|
|
7
7
|
} from "./QyFileContentUtils.js";
|
|
8
8
|
|
|
9
9
|
import {
|
|
10
|
-
isEmptyObj as
|
|
11
|
-
arrayLast as
|
|
10
|
+
isEmptyObj as m,
|
|
11
|
+
arrayLast as n
|
|
12
12
|
} from "./QyUtils.js";
|
|
13
13
|
|
|
14
14
|
import {
|
|
15
15
|
logger as d
|
|
16
16
|
} from "./QyLogger.js";
|
|
17
17
|
|
|
18
|
-
function r(r,
|
|
18
|
+
function r(r, t) {
|
|
19
19
|
var {
|
|
20
20
|
A: r,
|
|
21
|
-
R:
|
|
21
|
+
R: e,
|
|
22
22
|
M: a,
|
|
23
|
-
D:
|
|
23
|
+
D: n
|
|
24
24
|
} = r;
|
|
25
|
-
|
|
26
|
-
|
|
25
|
+
n && delete n[t], t.startsWith("c") ? a && delete a[t] : (r && delete r[t],
|
|
26
|
+
e && delete e[t]);
|
|
27
27
|
}
|
|
28
28
|
|
|
29
|
-
function
|
|
30
|
-
var
|
|
31
|
-
D:
|
|
32
|
-
A:
|
|
29
|
+
function t(r, t) {
|
|
30
|
+
var e, a, n, i, {
|
|
31
|
+
D: t,
|
|
32
|
+
A: s,
|
|
33
33
|
R: o,
|
|
34
34
|
M: f
|
|
35
|
-
} =
|
|
36
|
-
for (
|
|
37
|
-
for (a in
|
|
35
|
+
} = t;
|
|
36
|
+
for (e in t) null != r[e] && (r[e] = void 0);
|
|
37
|
+
for (a in s) {
|
|
38
38
|
var c, l = r[a] || (r[a] = {});
|
|
39
|
-
for (c of
|
|
39
|
+
for (c of s[a]) l[c] = 1;
|
|
40
40
|
}
|
|
41
|
-
for (
|
|
42
|
-
var u = r[
|
|
41
|
+
for (n in o) {
|
|
42
|
+
var u = r[n];
|
|
43
43
|
if (u) {
|
|
44
|
-
var d = o[
|
|
44
|
+
var d = o[n];
|
|
45
45
|
if (d) {
|
|
46
46
|
for (var h of d) delete u[h];
|
|
47
|
-
|
|
47
|
+
m(u) && (r[n] = void 0);
|
|
48
48
|
}
|
|
49
49
|
}
|
|
50
50
|
}
|
|
51
|
-
for (
|
|
51
|
+
for (i in f) r[i] = g(r[i], f[i]);
|
|
52
52
|
}
|
|
53
53
|
|
|
54
|
-
function
|
|
55
|
-
var
|
|
54
|
+
function e(r, t) {
|
|
55
|
+
var e, {
|
|
56
56
|
D: r,
|
|
57
57
|
A: a,
|
|
58
|
-
R:
|
|
59
|
-
M:
|
|
58
|
+
R: n,
|
|
59
|
+
M: i
|
|
60
60
|
} = r;
|
|
61
|
-
for (
|
|
61
|
+
for (e of [ r, a, n, i ]) for (var s in e) t(s);
|
|
62
62
|
}
|
|
63
63
|
|
|
64
|
-
class
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
});
|
|
71
|
-
}
|
|
72
|
-
pushCmd(r, e, t) {
|
|
64
|
+
class s {
|
|
65
|
+
cmdArgAsMapObj = {};
|
|
66
|
+
cmdCount = 0;
|
|
67
|
+
batchSize = 0;
|
|
68
|
+
constructor() {}
|
|
69
|
+
pushCmd(r, t, e) {
|
|
73
70
|
switch (++this.cmdCount, r) {
|
|
74
71
|
case "A":
|
|
75
|
-
o(this, [ "A",
|
|
72
|
+
o(this, [ "A", t, e ]), f(this, [ "R", t, e ]);
|
|
76
73
|
break;
|
|
77
74
|
|
|
78
75
|
case "R":
|
|
79
|
-
o(this, [ "R",
|
|
76
|
+
o(this, [ "R", t, e ]), f(this, [ "A", t, e ]);
|
|
80
77
|
break;
|
|
81
78
|
|
|
82
79
|
case "D":
|
|
83
|
-
if (o(this, [ "D",
|
|
80
|
+
if (o(this, [ "D", t ]), t.startsWith("c")) f(this, [ "M", t ]); else for (var a of [ "A", "R" ]) f(this, [ a, t ]);
|
|
84
81
|
break;
|
|
85
82
|
|
|
86
83
|
case "M":
|
|
87
84
|
{
|
|
88
|
-
var
|
|
89
|
-
let r =
|
|
90
|
-
|
|
91
|
-
r[
|
|
85
|
+
var n = this.cmdArgAsMapObj;
|
|
86
|
+
let r = n.M;
|
|
87
|
+
n = (r = null == r ? n.M = {} : r)[t];
|
|
88
|
+
r[t] = null != n ? i(n, e) : e;
|
|
92
89
|
break;
|
|
93
90
|
}
|
|
94
91
|
|
|
95
92
|
default:
|
|
96
|
-
d.error(`unsupported cmdName:${r}, called with ${
|
|
93
|
+
d.error(`unsupported cmdName:${r}, called with ${t} ` + e), --this.cmdCount;
|
|
97
94
|
}
|
|
98
95
|
}
|
|
99
96
|
pushCmdArgAsListObj(r) {
|
|
100
97
|
if (r) {
|
|
101
98
|
++this.batchSize;
|
|
102
|
-
var
|
|
103
|
-
D:
|
|
104
|
-
M:
|
|
99
|
+
var t, e, a, {
|
|
100
|
+
D: n,
|
|
101
|
+
M: i
|
|
105
102
|
} = r;
|
|
106
|
-
for (
|
|
107
|
-
for (
|
|
108
|
-
var
|
|
109
|
-
for (
|
|
103
|
+
for (t in n) this.pushCmd("D", t);
|
|
104
|
+
for (e of [ "A", "R" ]) {
|
|
105
|
+
var s, o = r[e];
|
|
106
|
+
for (s in o) for (var f of o[s]) this.pushCmd(e, s, f);
|
|
110
107
|
}
|
|
111
|
-
for (a in
|
|
108
|
+
for (a in i) this.pushCmd("M", a, i[a]);
|
|
112
109
|
}
|
|
113
110
|
return this;
|
|
114
111
|
}
|
|
115
112
|
takeCmdArgAsListObj() {
|
|
116
|
-
var r,
|
|
113
|
+
var r, t = this.cmdArgAsMapObj;
|
|
117
114
|
Object.assign(this, {
|
|
118
115
|
cmdArgAsMapObj: {},
|
|
119
116
|
cmdCount: 0,
|
|
120
117
|
batchSize: 0
|
|
121
118
|
});
|
|
122
119
|
for (r of [ "A", "R" ]) {
|
|
123
|
-
var
|
|
124
|
-
for (
|
|
125
|
-
var
|
|
126
|
-
0 <
|
|
120
|
+
var e, a = t[r];
|
|
121
|
+
for (e in a) {
|
|
122
|
+
var n = Object.keys(a[e]);
|
|
123
|
+
0 < n.length ? a[e] = n : delete a[e];
|
|
127
124
|
}
|
|
128
|
-
|
|
125
|
+
m(a) && delete t[r];
|
|
129
126
|
}
|
|
130
127
|
var {
|
|
131
|
-
D:
|
|
132
|
-
M:
|
|
133
|
-
} =
|
|
134
|
-
return
|
|
128
|
+
D: i,
|
|
129
|
+
M: s
|
|
130
|
+
} = t;
|
|
131
|
+
return i && m(i) && delete t.D, s && m(s) && delete t.M, t;
|
|
135
132
|
}
|
|
136
133
|
toAclBuffer(r) {
|
|
137
|
-
var
|
|
138
|
-
if (0 <
|
|
139
|
-
Buffer.concat([ l([ r,
|
|
134
|
+
var t, e = this.batchSize;
|
|
135
|
+
if (0 < e) return r = r, e = e, t = this.takeCmdArgAsListObj(), t = Buffer.from(JSON.stringify(t)),
|
|
136
|
+
Buffer.concat([ l([ r, e, t.length ]), t ]);
|
|
140
137
|
}
|
|
141
138
|
}
|
|
142
139
|
|
|
143
|
-
function o(r,
|
|
144
|
-
a(r.cmdArgAsMapObj,
|
|
140
|
+
function o(r, t, e = 1) {
|
|
141
|
+
a(r.cmdArgAsMapObj, t, e);
|
|
145
142
|
}
|
|
146
143
|
|
|
147
|
-
function f(r,
|
|
148
|
-
let
|
|
149
|
-
if (
|
|
150
|
-
for (let r = 0; r <
|
|
151
|
-
delete
|
|
144
|
+
function f(r, t) {
|
|
145
|
+
let e = r.cmdArgAsMapObj;
|
|
146
|
+
if (e && t && !(t.length <= 1)) {
|
|
147
|
+
for (let r = 0; r < t.length - 1; ++r) if (null == (e = e[t[r]])) return;
|
|
148
|
+
delete e[n(t)];
|
|
152
149
|
}
|
|
153
150
|
}
|
|
154
151
|
|
|
155
|
-
async function c(
|
|
152
|
+
async function c(t, r = !1, e = 0) {
|
|
156
153
|
try {
|
|
157
|
-
return await v(
|
|
154
|
+
return await v(t, await u.readFile(t), r, e);
|
|
158
155
|
} catch (r) {
|
|
159
|
-
throw d.error(`Reading ${
|
|
156
|
+
throw d.error(`Reading ${t} failed:`, r), r;
|
|
160
157
|
}
|
|
161
158
|
}
|
|
162
159
|
|
|
163
160
|
let A = [ 1, 2, 4, 8 ];
|
|
164
161
|
|
|
165
|
-
function l(
|
|
166
|
-
var
|
|
167
|
-
let
|
|
168
|
-
for (let r = 0; r <
|
|
169
|
-
var o = a[r] = (o =
|
|
170
|
-
|
|
171
|
-
|
|
162
|
+
function l(t) {
|
|
163
|
+
var e = t.length, a = new Array(e), n = new Array(e);
|
|
164
|
+
let i = e << 6, s = 1;
|
|
165
|
+
for (let r = 0; r < e; ++r) {
|
|
166
|
+
var o = a[r] = (o = t[r]) <= 255 ? 0 : o <= 65535 ? 1 : o <= 4294967295 ? 2 : 3, o = (i |= o << (r << 1),
|
|
167
|
+
n[r] = A[o]);
|
|
168
|
+
s += o;
|
|
172
169
|
}
|
|
173
|
-
var f = Buffer.allocUnsafe(
|
|
174
|
-
f.writeUInt8(
|
|
170
|
+
var f = Buffer.allocUnsafe(s);
|
|
171
|
+
f.writeUInt8(i);
|
|
175
172
|
let c = 1;
|
|
176
|
-
for (let r = 0; r <
|
|
173
|
+
for (let r = 0; r < e; ++r) {
|
|
177
174
|
h = d = u = l = void 0;
|
|
178
|
-
var [ l, u, d, h = 0 ] = [ f,
|
|
175
|
+
var [ l, u, d, h = 0 ] = [ f, t[r], n[r], c ];
|
|
179
176
|
switch (d) {
|
|
180
177
|
case 1:
|
|
181
178
|
l.writeUInt8(u, h);
|
|
@@ -192,62 +189,62 @@ function l(e) {
|
|
|
192
189
|
default:
|
|
193
190
|
l.writeBigUInt64BE(BigInt(u), h);
|
|
194
191
|
}
|
|
195
|
-
c +=
|
|
192
|
+
c += n[r];
|
|
196
193
|
}
|
|
197
194
|
return f;
|
|
198
195
|
}
|
|
199
196
|
|
|
200
|
-
function h(
|
|
201
|
-
var
|
|
202
|
-
for (let r = 0; r <
|
|
203
|
-
var
|
|
204
|
-
a[r] = ((r,
|
|
205
|
-
switch (
|
|
197
|
+
function h(t, e, a) {
|
|
198
|
+
var n = t.readUInt8(e), i = (++e, n >> 6 & 3);
|
|
199
|
+
for (let r = 0; r < i; ++r) {
|
|
200
|
+
var s = A[n >> (r << 1) & 3];
|
|
201
|
+
a[r] = ((r, t, e = 0) => {
|
|
202
|
+
switch (t) {
|
|
206
203
|
case 1:
|
|
207
|
-
return r.readUInt8(
|
|
204
|
+
return r.readUInt8(e);
|
|
208
205
|
|
|
209
206
|
case 2:
|
|
210
|
-
return r.readUInt16BE(
|
|
207
|
+
return r.readUInt16BE(e);
|
|
211
208
|
|
|
212
209
|
case 4:
|
|
213
|
-
return r.readUInt32BE(
|
|
210
|
+
return r.readUInt32BE(e);
|
|
214
211
|
|
|
215
212
|
default:
|
|
216
|
-
return Number(r.readBigUInt64BE(
|
|
213
|
+
return Number(r.readBigUInt64BE(e));
|
|
217
214
|
}
|
|
218
|
-
})(
|
|
215
|
+
})(t, s, e), e += s;
|
|
219
216
|
}
|
|
220
|
-
return
|
|
217
|
+
return e;
|
|
221
218
|
}
|
|
222
219
|
|
|
223
|
-
async function v(
|
|
224
|
-
var
|
|
225
|
-
for (let
|
|
226
|
-
var
|
|
227
|
-
if (
|
|
228
|
-
|
|
229
|
-
|
|
220
|
+
async function v(e, r, a, n) {
|
|
221
|
+
var i = [];
|
|
222
|
+
for (let t = 0; t < r.length; ) {
|
|
223
|
+
var s = [], o = h(r, t, s), [ s, f, c ] = s;
|
|
224
|
+
if (s <= n) d.warn(`changeId ${s} <= currentChangeId ${n} at ${e}:${t}. Ignored.`),
|
|
225
|
+
t = o + c; else {
|
|
226
|
+
n + f != s && d.warn(`currentChangeId ${n} + batchSize ${f} != changeId ` + s);
|
|
230
227
|
try {
|
|
231
228
|
var l = JSON.parse(r.subarray(o, o + c));
|
|
232
|
-
|
|
229
|
+
i.push([ s, l ]), n = s, t = o + c;
|
|
233
230
|
} catch (r) {
|
|
234
|
-
if (d.error(`Parse ${
|
|
235
|
-
null == (f = await u.truncate(
|
|
236
|
-
|
|
231
|
+
if (d.error(`Parse ${e} failed at ${t}:`, r), a) return d.warn(`Autorepair by truncating ${e} to ` + t),
|
|
232
|
+
null == (f = await u.truncate(e, t)) ? d.log("truncate success") : d.error("truncate failed:", f),
|
|
233
|
+
i;
|
|
237
234
|
throw r;
|
|
238
235
|
}
|
|
239
236
|
}
|
|
240
237
|
}
|
|
241
|
-
return
|
|
238
|
+
return i;
|
|
242
239
|
}
|
|
243
240
|
|
|
244
241
|
export {
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
242
|
+
r as delCmdKey,
|
|
243
|
+
t as applyAclChange,
|
|
244
|
+
e as iterCmdKeys,
|
|
245
|
+
s as QyAclCmdGenerator,
|
|
248
246
|
c as readAclFile,
|
|
249
|
-
v as readAclBuffer,
|
|
250
247
|
l as numsToBuffer,
|
|
251
248
|
h as bufferToNums,
|
|
252
|
-
|
|
249
|
+
v as readAclBuffer
|
|
253
250
|
};
|
package/src/QyAclSaver.js
CHANGED
|
@@ -3,13 +3,13 @@ import {
|
|
|
3
3
|
} from "./QyMessager.js";
|
|
4
4
|
|
|
5
5
|
import {
|
|
6
|
-
getDefaultOptions as
|
|
6
|
+
getDefaultOptions as r
|
|
7
7
|
} from "./QyDefaultOptions.js";
|
|
8
8
|
|
|
9
9
|
class e extends s {
|
|
10
10
|
constructor(s, e) {
|
|
11
|
-
super(s, "QyAclSaver_Worker
|
|
12
|
-
...
|
|
11
|
+
super(s, "QyAclSaver_Worker", e = {
|
|
12
|
+
...r("QyAclSaver"),
|
|
13
13
|
...e
|
|
14
14
|
}, e, [ "callSave" ], [ "switch", "castSave" ]);
|
|
15
15
|
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { QyMessageWorker } from "./QyMessageWorker.ts";
|
|
2
|
+
export default class QyAclSaver_Worker extends QyMessageWorker {
|
|
3
|
+
constructor(options: any);
|
|
4
|
+
_op_start(aclFilePath: any): Promise<void>;
|
|
5
|
+
_op_stop(): Promise<void>;
|
|
6
|
+
switch(aclFilePath: any): void;
|
|
7
|
+
callSave(changeId: any, cmdArgAsListObj: any): Promise<void>;
|
|
8
|
+
castSave(changeId: any, cmdArgAsListObj: any): void;
|
|
9
|
+
}
|
package/src/QyAclSaver_Worker.js
CHANGED
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
QyAclWriter as s
|
|
7
7
|
} from "./QyAclWriter.js";
|
|
8
8
|
|
|
9
|
-
class
|
|
9
|
+
export default class extends t {
|
|
10
10
|
constructor(t) {
|
|
11
11
|
super(t), Object.assign(this, {
|
|
12
12
|
options: t,
|
|
@@ -30,6 +30,4 @@ class r extends t {
|
|
|
30
30
|
castSave(t, s) {
|
|
31
31
|
this.qyAclWriter.save(t, s);
|
|
32
32
|
}
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
export default r;
|
|
33
|
+
}
|
package/src/QyBatch.d.ts
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { QyCD } from "./QyCD.ts";
|
|
2
|
+
export declare class QyBatch extends QyCD {
|
|
3
|
+
constructor(qyCache?: any, options?: any);
|
|
4
|
+
createDir(namePath: any, parentDir?: import("./QyDir.ts").QyDir | undefined): any;
|
|
5
|
+
createDirP(namePath: any, parentDir?: import("./QyDir.ts").QyDir | undefined): any;
|
|
6
|
+
delDir(namePath: any, parentDir?: import("./QyDir.ts").QyDir | undefined): any;
|
|
7
|
+
delDirP(namePath: any, parentDir?: import("./QyDir.ts").QyDir | undefined): any;
|
|
8
|
+
createFile(namePath: any, parentDir?: import("./QyDir.ts").QyDir | undefined): any;
|
|
9
|
+
createFileP(namePath: any, parentDir?: import("./QyDir.ts").QyDir | undefined): any;
|
|
10
|
+
delFile(namePath: any, parentDir?: import("./QyDir.ts").QyDir | undefined): any;
|
|
11
|
+
delFileP(namePath: any, parentDir?: import("./QyDir.ts").QyDir | undefined): any;
|
|
12
|
+
createIndex(indexHostDirNamePath: any, indexPropPathList: any, parentDir?: import("./QyDir.ts").QyDir | undefined): any;
|
|
13
|
+
createIndexP(indexHostDirNamePath: any, indexPropPathList: any, parentDir?: import("./QyDir.ts").QyDir | undefined): any;
|
|
14
|
+
delIndex(indexHostDirNamePath: any, indexPropPath: any, parentDir?: import("./QyDir.ts").QyDir | undefined): any;
|
|
15
|
+
delIndexP(indexHostDirNamePath: any, indexPropPath: any, parentDir?: import("./QyDir.ts").QyDir | undefined): any;
|
|
16
|
+
insert(namePath: any, content: any, parentDir?: import("./QyDir.ts").QyDir | undefined): any;
|
|
17
|
+
insertP(namePath: any, content: any, parentDir?: import("./QyDir.ts").QyDir | undefined): any;
|
|
18
|
+
remove(namePath: any, content: any, parentDir?: import("./QyDir.ts").QyDir | undefined): any;
|
|
19
|
+
removeP(namePath: any, content: any, parentDir?: import("./QyDir.ts").QyDir | undefined): any;
|
|
20
|
+
replace(namePath: any, content: any, parentDir?: import("./QyDir.ts").QyDir | undefined): any;
|
|
21
|
+
replaceP(namePath: any, content: any, parentDir?: import("./QyDir.ts").QyDir | undefined): any;
|
|
22
|
+
delContent(namePath: any, parentDir?: import("./QyDir.ts").QyDir | undefined): any;
|
|
23
|
+
delContentP(namePath: any, parentDir?: import("./QyDir.ts").QyDir | undefined): any;
|
|
24
|
+
insertTrigger(triggerName: any, fileNamePath: any, propNamePathList: any, modCode: any): any;
|
|
25
|
+
removeTrigger(triggerName: any): any;
|
|
26
|
+
insertRpc(rpcFunName: any, modCode: any): any;
|
|
27
|
+
removeRpc(rpcFunName: any): any;
|
|
28
|
+
run(needPromise: any): any;
|
|
29
|
+
getTopHistoryCmdObj(): any;
|
|
30
|
+
_action_insertTrigger(action: any): boolean;
|
|
31
|
+
_action_removeTrigger(action: any): boolean;
|
|
32
|
+
_action_insertRpc(action: any): boolean;
|
|
33
|
+
_action_removeRpc(action: any): boolean;
|
|
34
|
+
_action_createIndex(action: any): void;
|
|
35
|
+
_action_delIndex(action: any): void;
|
|
36
|
+
_action_delFile(action: any, deletingParentDir: any): boolean;
|
|
37
|
+
_action_delDir(action: any): boolean;
|
|
38
|
+
_action_delContent(action: any): boolean;
|
|
39
|
+
_action_insert(action: any): boolean;
|
|
40
|
+
_action_createFile(action: any): boolean;
|
|
41
|
+
_action_createDir(action: any): boolean;
|
|
42
|
+
}
|
package/src/QyBatch.js
CHANGED
|
@@ -35,10 +35,10 @@ import {
|
|
|
35
35
|
} from "./QyCD.js";
|
|
36
36
|
|
|
37
37
|
import {
|
|
38
|
-
getPrefixPropPaths as
|
|
38
|
+
getPrefixPropPaths as D
|
|
39
39
|
} from "./QyIndexPropTree.js";
|
|
40
40
|
|
|
41
|
-
let u = Array.isArray, f = e.$del,
|
|
41
|
+
let u = Array.isArray, f = e.$del, y = t.IndexPropPathsFileName, p = {
|
|
42
42
|
none: 0,
|
|
43
43
|
basic: 1,
|
|
44
44
|
delta: 2,
|
|
@@ -66,7 +66,7 @@ class v extends m {
|
|
|
66
66
|
return s(e) && (e = n(e)), this.createDirP(e, t);
|
|
67
67
|
}
|
|
68
68
|
createDirP(e, t = this.currentDir) {
|
|
69
|
-
return _(this, "createDir", this.qyCache
|
|
69
|
+
return _(this, "createDir", this.qyCache?.getOrCreateDir(e, t));
|
|
70
70
|
}
|
|
71
71
|
delDir(e, t = this.currentDir) {
|
|
72
72
|
return s(e) && (e = n(e)), this.delDirP(e, t);
|
|
@@ -90,7 +90,7 @@ class v extends m {
|
|
|
90
90
|
return s(e) && (e = n(e)), this.createIndexP(e, t, r);
|
|
91
91
|
}
|
|
92
92
|
createIndexP(e, t, r = this.currentDir) {
|
|
93
|
-
return u(t) || (t = [ t ]), _(this, "createIndex", this.qyCache
|
|
93
|
+
return u(t) || (t = [ t ]), _(this, "createIndex", this.qyCache?.getOrCreateDir(e, r), {
|
|
94
94
|
indexPropPathList: t
|
|
95
95
|
});
|
|
96
96
|
}
|
|
@@ -251,7 +251,7 @@ ${r}
|
|
|
251
251
|
var e, {
|
|
252
252
|
item: t,
|
|
253
253
|
indexPropPathList: r
|
|
254
|
-
} = t, i = this.qyCache.getOrCreateIndexDir(t), n = i.getOrCreateFile(
|
|
254
|
+
} = t, i = this.qyCache.getOrCreateIndexDir(t), n = i.getOrCreateFile(y), {
|
|
255
255
|
fileContent: a,
|
|
256
256
|
qyIndexPropTree: s
|
|
257
257
|
} = (n.created || this._action_createFile({
|
|
@@ -268,7 +268,7 @@ ${r}
|
|
|
268
268
|
content: l
|
|
269
269
|
});
|
|
270
270
|
{
|
|
271
|
-
var h, d = this, m = t, u = i, r =
|
|
271
|
+
var h, d = this, m = t, u = i, r = D(o);
|
|
272
272
|
let e;
|
|
273
273
|
for (h of r) {
|
|
274
274
|
var f = u.searchOrCreateSubdir(h);
|
|
@@ -294,7 +294,7 @@ ${r}
|
|
|
294
294
|
item: e,
|
|
295
295
|
indexPropPath: i
|
|
296
296
|
} = e, e = this.qyCache.getIndexDir(e);
|
|
297
|
-
e && ((r = e.getFile(
|
|
297
|
+
e && ((r = e.getFile(y)) ? (t = r.qyIndexPropTree, this._action_insert({
|
|
298
298
|
item: r,
|
|
299
299
|
content: {
|
|
300
300
|
[C(i)]: f
|
|
@@ -476,7 +476,7 @@ function F(e, t, r, i, n) {
|
|
|
476
476
|
if (!t) {
|
|
477
477
|
var o = e.qyCache.getIndexDir(s);
|
|
478
478
|
if (o) {
|
|
479
|
-
t = o.getFile(
|
|
479
|
+
t = o.getFile(y);
|
|
480
480
|
if (t) for (var l of t.qyIndexPropTree.getAllIndexPropPaths()) N(e, o.searchOrCreateSubdir(l), l, a, r, i, n);
|
|
481
481
|
}
|
|
482
482
|
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { QyOpRunner } from "./QyOpRunner.ts";
|
|
2
|
+
export declare class QyBinWriter extends QyOpRunner {
|
|
3
|
+
constructor(options: any, filePath: any);
|
|
4
|
+
getFilePath(): any;
|
|
5
|
+
getTotalSavedSize(): any;
|
|
6
|
+
save(changeId: any, data: any, needPromise: any): any;
|
|
7
|
+
truncate(): any;
|
|
8
|
+
switch(newFilePath: any): any;
|
|
9
|
+
getBinData(dataQueue: any): any;
|
|
10
|
+
_op_start(filePath: any): Promise<this>;
|
|
11
|
+
_op_stop(): Promise<void>;
|
|
12
|
+
_op_save(changeId: any, dataQueue: any): Promise<void> | undefined;
|
|
13
|
+
_op_truncate(): Promise<void>;
|
|
14
|
+
_op_switch(newFilePath: any): Promise<void>;
|
|
15
|
+
}
|
package/src/QyCD.d.ts
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { QyCache } from "./QyCache.ts";
|
|
2
|
+
import type { QyDir } from "./QyDir.ts";
|
|
3
|
+
import type { QyFile } from "./QyFile.ts";
|
|
4
|
+
export declare class QyCD {
|
|
5
|
+
qyCache: QyCache | undefined;
|
|
6
|
+
currentDir: QyDir | undefined;
|
|
7
|
+
constructor(qyCache?: QyCache);
|
|
8
|
+
cd(namePath: string | string[] | QyDir, parentDir?: QyDir | undefined): this;
|
|
9
|
+
cdP(namePath: string | string[] | QyDir, parentDir?: QyDir | undefined): this;
|
|
10
|
+
dir(namePath: string | string[], parentDir?: QyDir | undefined): QyDir | undefined;
|
|
11
|
+
dirP(namePath: string | string[], parentDir?: QyDir | undefined): QyDir | undefined;
|
|
12
|
+
indexDir(indexHostDirNamePath: string | string[] | QyDir, namePath: string | string[], parentDir?: QyDir | undefined): QyDir | undefined;
|
|
13
|
+
indexDirP(indexHostDirNamePath: string | string[] | QyDir, namePath: string | string[], parentDir?: QyDir | undefined): QyDir | undefined;
|
|
14
|
+
file(namePath: string | string[], parentDir?: QyDir | undefined): QyFile | undefined;
|
|
15
|
+
fileP(namePath: string | string[], parentDir?: QyDir | undefined): QyFile | undefined;
|
|
16
|
+
triggerFile(triggerName: any): any;
|
|
17
|
+
get triggerFileList(): any;
|
|
18
|
+
rpcFile(rpcName: any): any;
|
|
19
|
+
get rpcFileList(): any;
|
|
20
|
+
view(namePath: any, spec: any, parentDir?: QyDir | undefined): any;
|
|
21
|
+
viewP(namePath: any, spec: any, parentDir?: QyDir | undefined): any;
|
|
22
|
+
queryFiles(indexHostDirNamePath: any, queryObj: any, limit: any, cursor: any, parentDir?: QyDir | undefined): never[];
|
|
23
|
+
queryFilesMulti(indexHostDirNamePathMulti: any, limit: any, cursor: any, parentDir?: QyDir | undefined): never[];
|
|
24
|
+
queryTree(indexHostDirNamePath: any, queryObj: any, view: any, limit: any, cursor: any, parentDir?: QyDir | undefined): {
|
|
25
|
+
tree: {};
|
|
26
|
+
count: any;
|
|
27
|
+
};
|
|
28
|
+
queryTreeMulti(indexHostDirNamePathMulti: any, view: any, limit: any, cursor: any, parentDir?: QyDir | undefined): {
|
|
29
|
+
tree: {};
|
|
30
|
+
count: any;
|
|
31
|
+
};
|
|
32
|
+
resetCurrentDir(): void;
|
|
33
|
+
fileListToTree(fileList: any, view: any): {
|
|
34
|
+
tree: {};
|
|
35
|
+
count: any;
|
|
36
|
+
};
|
|
37
|
+
}
|