datafolder 1.0.7 → 1.0.9
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/index.js +1 -1
- package/internal.md +5 -3
- package/package.json +7 -5
- 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 -49
- 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 +8 -6
- package/src/QyCache.d.ts +44 -0
- package/src/QyCache.js +65 -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 +2 -3
- 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 +11 -10
- 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 +7 -9
- 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 +2 -4
- 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 +17 -16
- package/src/QySnapshots.d.ts +27 -0
- package/src/QySnapshots.js +3 -3
- 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/simulate.d.ts +1 -0
- package/src/simulate2.d.ts +1 -0
- package/src/soc_pokec.d.ts +1 -0
- package/static/codemirror.bundle/editor.bundle.js +399 -184
- package/static/datafolderui/QyStyledElement.js +2 -2
- package/static/datafolderui/QyUIFolderViewer.js +97 -77
- package/static/datafolderui/QyUIUtils.js +4 -4
- package/static/datafolderui/code-mirror.js +7 -7
- package/static/datafolderui/display-tree.js +13 -10
- package/static/datafolderui/hscrpt.js +26 -7
- package/static/datafolderui/json-view.js +27 -0
- package/static/datafolderui/main-page.js +65 -37
- package/static/datafolderui/query-editor.js +8 -8
- package/static/datafolderui/rpc-editor.js +31 -0
- package/static/datafolderui/trigger-editor.js +9 -6
- package/static/datafolderui/QyUIFolderTree.js +0 -188
package/src/QyIndexPropTree.js
CHANGED
|
@@ -9,41 +9,41 @@ class i {
|
|
|
9
9
|
});
|
|
10
10
|
}
|
|
11
11
|
insert(e, t) {
|
|
12
|
-
var
|
|
12
|
+
var n = this.children;
|
|
13
13
|
if (t == e.length) return !this.indexPropPath && (this.indexPropPath = e,
|
|
14
14
|
!0);
|
|
15
|
-
var
|
|
15
|
+
var r = e[t];
|
|
16
16
|
let h;
|
|
17
|
-
return
|
|
17
|
+
return n ? (h = n[r]) || (h = n[r] = new i(r, this), ++this.childCount) : (h = new i(r, this),
|
|
18
18
|
this.children = {
|
|
19
|
-
[
|
|
19
|
+
[r]: h
|
|
20
20
|
}, ++this.childCount), h.insert(e, t + 1);
|
|
21
21
|
}
|
|
22
|
-
remove(e, t = 0,
|
|
22
|
+
remove(e, t = 0, n = {}) {
|
|
23
23
|
var {
|
|
24
|
-
parent:
|
|
24
|
+
parent: r,
|
|
25
25
|
name: h,
|
|
26
26
|
children: i
|
|
27
27
|
} = this;
|
|
28
|
-
if (t == e.length) return this.indexPropPath && (
|
|
29
|
-
|
|
28
|
+
if (t == e.length) return this.indexPropPath && (n.removed = !0, delete this.indexPropPath),
|
|
29
|
+
r && o(this) && function e(t, n) {
|
|
30
30
|
let {
|
|
31
|
-
children:
|
|
31
|
+
children: r,
|
|
32
32
|
parent: h,
|
|
33
33
|
name: i
|
|
34
34
|
} = t;
|
|
35
|
-
n
|
|
36
|
-
}(
|
|
37
|
-
this.indexPropPath && (
|
|
38
|
-
|
|
39
|
-
return
|
|
35
|
+
r[n] && (delete r[n], 0 == --t.childCount && delete t.children, h) && o(t) && e(h, i);
|
|
36
|
+
}(r, h), n;
|
|
37
|
+
this.indexPropPath && (n.hasPrefix = !0);
|
|
38
|
+
r = i && i[e[t]];
|
|
39
|
+
return r ? r.remove(e, t + 1, n) : n;
|
|
40
40
|
}
|
|
41
41
|
getAllIndexPropPaths(e) {
|
|
42
42
|
var {
|
|
43
43
|
children: t,
|
|
44
|
-
indexPropPath:
|
|
44
|
+
indexPropPath: n
|
|
45
45
|
} = this;
|
|
46
|
-
if (
|
|
46
|
+
if (n) e.push(n); else for (var r in t) t[r].getAllIndexPropPaths(e);
|
|
47
47
|
}
|
|
48
48
|
}
|
|
49
49
|
|
|
@@ -51,7 +51,7 @@ function o(e) {
|
|
|
51
51
|
return !e.indexPropPath && 0 == e.childCount;
|
|
52
52
|
}
|
|
53
53
|
|
|
54
|
-
class
|
|
54
|
+
class r {
|
|
55
55
|
constructor() {
|
|
56
56
|
Object.assign(this, {
|
|
57
57
|
rootNode: new i(),
|
|
@@ -71,22 +71,22 @@ class n {
|
|
|
71
71
|
var {
|
|
72
72
|
_cachedChangeCount: e,
|
|
73
73
|
allIndexPropPaths: t,
|
|
74
|
-
rootNode:
|
|
75
|
-
changeCount:
|
|
74
|
+
rootNode: n,
|
|
75
|
+
changeCount: r
|
|
76
76
|
} = this;
|
|
77
|
-
return e !=
|
|
77
|
+
return e != r && (t.length = 0, n.getAllIndexPropPaths(t), this._cachedChangeCount = r),
|
|
78
78
|
t;
|
|
79
79
|
}
|
|
80
80
|
}
|
|
81
81
|
|
|
82
82
|
function e(e) {
|
|
83
83
|
if (0 == e.length) return [];
|
|
84
|
-
var t,
|
|
85
|
-
for (t of e)
|
|
86
|
-
return
|
|
84
|
+
var t, n = new r();
|
|
85
|
+
for (t of e) n.insert(t);
|
|
86
|
+
return n.getAllIndexPropPaths();
|
|
87
87
|
}
|
|
88
88
|
|
|
89
89
|
export {
|
|
90
|
-
|
|
90
|
+
r as QyIndexPropTree,
|
|
91
91
|
e as getPrefixPropPaths
|
|
92
92
|
};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { QyQueryNode } from "./QyUnionNode.ts";
|
|
2
|
+
export declare class QyIntersectNode extends QyQueryNode {
|
|
3
|
+
constructor();
|
|
4
|
+
containsFile(fileName: any): any;
|
|
5
|
+
getFiles(queryCounter: any, resultMap?: {}): Generator<any, void, unknown>;
|
|
6
|
+
addNode(node: any): void;
|
|
7
|
+
}
|
package/src/QyIntersectNode.js
CHANGED
|
@@ -2,7 +2,7 @@ import {
|
|
|
2
2
|
QyQueryNode as t
|
|
3
3
|
} from "./QyUnionNode.js";
|
|
4
4
|
|
|
5
|
-
class
|
|
5
|
+
class n extends t {
|
|
6
6
|
constructor() {
|
|
7
7
|
super(), Object.assign(this, {
|
|
8
8
|
fileCount: void 0
|
|
@@ -11,28 +11,28 @@ class i extends t {
|
|
|
11
11
|
containsFile(t) {
|
|
12
12
|
var {
|
|
13
13
|
nodeList: e,
|
|
14
|
-
fileCount:
|
|
14
|
+
fileCount: i
|
|
15
15
|
} = this;
|
|
16
|
-
if (0 != e.length && 0 !=
|
|
16
|
+
if (0 != e.length && 0 != i) return s(this), e[0].containsFile(t) && l(e, t);
|
|
17
17
|
}
|
|
18
18
|
*getFiles(t, e = {}) {
|
|
19
19
|
var {
|
|
20
|
-
nodeList:
|
|
21
|
-
fileCount:
|
|
20
|
+
nodeList: i,
|
|
21
|
+
fileCount: n
|
|
22
22
|
} = this;
|
|
23
|
-
if (0 !=
|
|
23
|
+
if (0 != i.length && 0 != n) {
|
|
24
24
|
s(this);
|
|
25
|
-
for (var o of
|
|
25
|
+
for (var o of i[0].getFiles()) if (!(o in e) && l(i, o) && this.encounterOne(e, o, t) && (yield o,
|
|
26
26
|
t?.isFull)) return;
|
|
27
27
|
}
|
|
28
28
|
}
|
|
29
29
|
addNode(t) {
|
|
30
|
-
var e,
|
|
30
|
+
var e, i;
|
|
31
31
|
t && null != t.fileCount && ({
|
|
32
32
|
fileCount: e,
|
|
33
|
-
nodeList:
|
|
34
|
-
} = this, 0 <
|
|
35
|
-
this.sorted = !1) :
|
|
33
|
+
nodeList: i
|
|
34
|
+
} = this, 0 < i.length && 0 == e || (t instanceof n ? (i.push(...t.nodeList),
|
|
35
|
+
this.sorted = !1) : i.push(t), (null == e || e > t.fileCount) && (this.fileCount = t.fileCount)));
|
|
36
36
|
}
|
|
37
37
|
}
|
|
38
38
|
|
|
@@ -40,12 +40,12 @@ function s(t) {
|
|
|
40
40
|
t.sorted || (t.nodeList.sort((t, e) => t.fileCount - e.fileCount), t.sorted = !0);
|
|
41
41
|
}
|
|
42
42
|
|
|
43
|
-
function l(e,
|
|
44
|
-
var
|
|
45
|
-
for (let t = 1; t <
|
|
43
|
+
function l(e, i) {
|
|
44
|
+
var n = e.length;
|
|
45
|
+
for (let t = 1; t < n; ++t) if (!e[t].containsFile(i)) return !1;
|
|
46
46
|
return !0;
|
|
47
47
|
}
|
|
48
48
|
|
|
49
49
|
export {
|
|
50
|
-
|
|
50
|
+
n as QyIntersectNode
|
|
51
51
|
};
|
package/src/QyItem.d.ts
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { QyDir } from "./QyDir.ts";
|
|
2
|
+
import type { QyCache } from "./QyCache.ts";
|
|
3
|
+
export declare class QyItem {
|
|
4
|
+
name: string;
|
|
5
|
+
parentDir: QyDir | undefined;
|
|
6
|
+
flagInt: number;
|
|
7
|
+
constructor(name: string | number, created?: boolean, parentDir?: QyDir);
|
|
8
|
+
get qyCache(): QyCache | undefined;
|
|
9
|
+
get _created(): boolean;
|
|
10
|
+
set _created(val: boolean);
|
|
11
|
+
get subdirMapLoaded(): boolean;
|
|
12
|
+
set subdirMapLoaded(val: boolean);
|
|
13
|
+
get fileMapLoaded(): boolean;
|
|
14
|
+
set fileMapLoaded(val: boolean);
|
|
15
|
+
get fileContentLoaded(): boolean;
|
|
16
|
+
set fileContentLoaded(val: boolean);
|
|
17
|
+
get visited(): boolean;
|
|
18
|
+
set visited(val: boolean);
|
|
19
|
+
get nameNum(): number | string;
|
|
20
|
+
cmp({ nameNum: num2 }: {
|
|
21
|
+
nameNum: any;
|
|
22
|
+
}): 1 | 0 | -1;
|
|
23
|
+
get fullPath(): string;
|
|
24
|
+
get fullPathHash(): string;
|
|
25
|
+
get isItem(): boolean;
|
|
26
|
+
get underHiddenFolder(): boolean;
|
|
27
|
+
get parentList(): QyDir[];
|
|
28
|
+
get parentNamePath(): string[];
|
|
29
|
+
get namePath(): string[];
|
|
30
|
+
}
|
package/src/QyItem.js
CHANGED
|
@@ -3,59 +3,53 @@ import {
|
|
|
3
3
|
SpecialFilePaths as t
|
|
4
4
|
} from "./QyUtils.js";
|
|
5
5
|
|
|
6
|
-
let
|
|
6
|
+
let i = t.HiddenFolderName;
|
|
7
7
|
|
|
8
8
|
class e {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
}
|
|
16
|
-
_getFlag(t) {
|
|
17
|
-
return 0 != (this.flagInt & t);
|
|
18
|
-
}
|
|
19
|
-
_setFlag(t, e) {
|
|
20
|
-
e ? this.flagInt |= t : this.flagInt &= ~t;
|
|
9
|
+
name;
|
|
10
|
+
parentDir;
|
|
11
|
+
flagInt;
|
|
12
|
+
constructor(t, e = !1, a) {
|
|
13
|
+
this.name = t.toString(), this.parentDir = a, this.flagInt = 0, this._created = e,
|
|
14
|
+
a && (a.name == i || a.underHiddenFolder) && (this.flagInt |= 2);
|
|
21
15
|
}
|
|
22
16
|
get qyCache() {
|
|
23
17
|
var t = this.parentDir;
|
|
24
18
|
return t ? t.qyCache : this._qyCache;
|
|
25
19
|
}
|
|
26
20
|
get _created() {
|
|
27
|
-
return this
|
|
21
|
+
return r(this, 1);
|
|
28
22
|
}
|
|
29
23
|
set _created(t) {
|
|
30
|
-
this
|
|
24
|
+
n(this, 1, t);
|
|
31
25
|
}
|
|
32
26
|
get subdirMapLoaded() {
|
|
33
|
-
return this
|
|
27
|
+
return r(this, 4);
|
|
34
28
|
}
|
|
35
29
|
set subdirMapLoaded(t) {
|
|
36
|
-
|
|
30
|
+
n(this, 4, t);
|
|
37
31
|
}
|
|
38
32
|
get fileMapLoaded() {
|
|
39
|
-
return this
|
|
33
|
+
return r(this, 8);
|
|
40
34
|
}
|
|
41
35
|
set fileMapLoaded(t) {
|
|
42
|
-
this
|
|
36
|
+
n(this, 8, t);
|
|
43
37
|
}
|
|
44
38
|
get fileContentLoaded() {
|
|
45
|
-
return this
|
|
39
|
+
return r(this, 16);
|
|
46
40
|
}
|
|
47
41
|
set fileContentLoaded(t) {
|
|
48
|
-
this
|
|
42
|
+
n(this, 16, t);
|
|
49
43
|
}
|
|
50
44
|
get visited() {
|
|
51
|
-
return this
|
|
45
|
+
return r(this, 32);
|
|
52
46
|
}
|
|
53
47
|
set visited(t) {
|
|
54
|
-
this
|
|
48
|
+
n(this, 32, t);
|
|
55
49
|
}
|
|
56
50
|
get nameNum() {
|
|
57
|
-
var t;
|
|
58
|
-
return
|
|
51
|
+
var t = this._nameNum;
|
|
52
|
+
return null != t ? t : (t = +this.name, this._nameNum = isNaN(t) ? this.name : t);
|
|
59
53
|
}
|
|
60
54
|
cmp({
|
|
61
55
|
nameNum: t
|
|
@@ -81,14 +75,16 @@ class e {
|
|
|
81
75
|
return !0;
|
|
82
76
|
}
|
|
83
77
|
get underHiddenFolder() {
|
|
84
|
-
return 2
|
|
78
|
+
return r(this, 2);
|
|
85
79
|
}
|
|
86
80
|
get parentList() {
|
|
87
81
|
if (null == this._parentList) {
|
|
88
82
|
var e = this._parentList = [];
|
|
89
83
|
let t = this.parentDir;
|
|
90
|
-
|
|
91
|
-
|
|
84
|
+
if (null != t) {
|
|
85
|
+
for (;t.parentDir; ) e.push(t), t = t.parentDir;
|
|
86
|
+
e.reverse();
|
|
87
|
+
}
|
|
92
88
|
}
|
|
93
89
|
return this._parentList;
|
|
94
90
|
}
|
|
@@ -102,6 +98,14 @@ class e {
|
|
|
102
98
|
}
|
|
103
99
|
}
|
|
104
100
|
|
|
101
|
+
function r(t, e) {
|
|
102
|
+
return 0 != (t.flagInt & e);
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
function n(t, e, a) {
|
|
106
|
+
a ? t.flagInt |= e : t.flagInt &= ~e;
|
|
107
|
+
}
|
|
108
|
+
|
|
105
109
|
export {
|
|
106
110
|
e as QyItem
|
|
107
111
|
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export declare class QyKVData {
|
|
2
|
+
constructor(kvFolder: any, options: any, qyCache: any);
|
|
3
|
+
start(maxChangeId: any, loadedMaxAclNum: any, qySnapshots: any, aclKeyValueMap: any): this;
|
|
4
|
+
stop(): Promise<void>;
|
|
5
|
+
save(changeId: any, cmdArgAsListObj: any, syncList: any, needPromise: any): any;
|
|
6
|
+
increaseChangeId(): number;
|
|
7
|
+
decreaseChangeId(): void;
|
|
8
|
+
getValueSync(key: any): any;
|
|
9
|
+
removeKey(key: any): any;
|
|
10
|
+
onSnapshotSavedChangeId(snapshotSavedChangeId: any, pMOnlySnapshot: any): void;
|
|
11
|
+
onCompactUpdates(compactUpdates: any): void;
|
|
12
|
+
}
|
package/src/QyKVData.js
CHANGED
|
@@ -24,7 +24,7 @@ import {
|
|
|
24
24
|
|
|
25
25
|
import {
|
|
26
26
|
arrayLast as y,
|
|
27
|
-
readBufferAsync as
|
|
27
|
+
readBufferAsync as g,
|
|
28
28
|
sleep as c
|
|
29
29
|
} from "./QyUtils.js";
|
|
30
30
|
|
|
@@ -87,6 +87,7 @@ class a {
|
|
|
87
87
|
qySnapshots: o,
|
|
88
88
|
options: e
|
|
89
89
|
} = a;
|
|
90
|
+
console.time("bgLoadPosMaps");
|
|
90
91
|
for (t of Object.keys(o.numToSnapshotMap).sort((a, t) => t - a)) {
|
|
91
92
|
if (await async function s(p, i, r, h, c, l) {
|
|
92
93
|
if (p.isStopping) return void (l && l.close());
|
|
@@ -105,7 +106,7 @@ class a {
|
|
|
105
106
|
for (;0 < r.length; ) {
|
|
106
107
|
let e = y(r), n = f[e];
|
|
107
108
|
if (n) {
|
|
108
|
-
let [ a, t ] = n, o = await
|
|
109
|
+
let [ a, t ] = n, o = await g(c, l, a, t);
|
|
109
110
|
if (p.isStopping || !m[i]) return void l.close();
|
|
110
111
|
if (h != S.pMVersion) return l.close(), s(p, i, r);
|
|
111
112
|
e in f && d.loadPartialPosMapBuffer(u, e, o);
|
|
@@ -117,7 +118,7 @@ class a {
|
|
|
117
118
|
}(a, t), a.isStopping) break;
|
|
118
119
|
if (await c(0), a.isStopping) break;
|
|
119
120
|
}
|
|
120
|
-
!a.isStopping && e.compactAtStart && l(a);
|
|
121
|
+
console.timeEnd("bgLoadPosMaps"), !a.isStopping && e.compactAtStart && l(a);
|
|
121
122
|
})(this) : n.compactAtStart && l(this), this;
|
|
122
123
|
}
|
|
123
124
|
async stop() {
|
|
@@ -166,7 +167,7 @@ class a {
|
|
|
166
167
|
compactMaxChangeId: e,
|
|
167
168
|
qyKVDataSaver: n
|
|
168
169
|
} = this;
|
|
169
|
-
if (3 == o && e <= a && (
|
|
170
|
+
if (3 == o && e <= a && (x(this), this.compactState = 1), t) {
|
|
170
171
|
var s, o = t, p = this.qySnapshots, i = p.keyToSnapshotMap;
|
|
171
172
|
for (s in o.posMap) {
|
|
172
173
|
var r = i[s];
|
|
@@ -208,12 +209,12 @@ class a {
|
|
|
208
209
|
prefixPM: f
|
|
209
210
|
} = r[v], v = h[v], {
|
|
210
211
|
posMap: y,
|
|
211
|
-
prefixPM:
|
|
212
|
-
info:
|
|
212
|
+
prefixPM: g,
|
|
213
|
+
info: C
|
|
213
214
|
} = v;
|
|
214
215
|
for (c in y) y[c] = S[c];
|
|
215
|
-
for (u in
|
|
216
|
-
++
|
|
216
|
+
for (u in g) g[u] = f[u];
|
|
217
|
+
++C.pMVersion, ++C.vLVersion, V(v);
|
|
217
218
|
}
|
|
218
219
|
}
|
|
219
220
|
if (m) {
|
|
@@ -243,7 +244,7 @@ class a {
|
|
|
243
244
|
}
|
|
244
245
|
++o.pMVersion, ++o.vLVersion, o.totalCount = h, i.outdatedCount = c;
|
|
245
246
|
}
|
|
246
|
-
this.snapshotSavedChangeId >= this.compactMaxChangeId ? (
|
|
247
|
+
this.snapshotSavedChangeId >= this.compactMaxChangeId ? (x(this), this.compactState = 1) : this.compactState = 3;
|
|
247
248
|
}
|
|
248
249
|
}
|
|
249
250
|
}
|
|
@@ -299,7 +300,7 @@ function h(a) {
|
|
|
299
300
|
0 < t.length && (a.removeSnapshotsFiles(t), t.length = 0);
|
|
300
301
|
}
|
|
301
302
|
|
|
302
|
-
function
|
|
303
|
+
function x(a) {
|
|
303
304
|
a.qySnapshotCompactor.saveSnapshotInfos(), h(a);
|
|
304
305
|
}
|
|
305
306
|
|
package/src/QyKVDataCleaner.js
CHANGED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { QyMessageWorker } from "./QyMessageWorker.ts";
|
|
2
|
+
export default class QyKVDataCleaner_Worker extends QyMessageWorker {
|
|
3
|
+
constructor({ kvFolder, options }: {
|
|
4
|
+
kvFolder: any;
|
|
5
|
+
options: any;
|
|
6
|
+
});
|
|
7
|
+
_op_start(): void;
|
|
8
|
+
_op_stop(): void;
|
|
9
|
+
_op_cleanAclFiles(maxSnapshotNum: any): Promise<void>;
|
|
10
|
+
_op_cleanPMFiles(pMChangeList: any): Promise<void>;
|
|
11
|
+
_op_cleanVLFiles(snapshotNum: any, vLVersion: any): Promise<void>;
|
|
12
|
+
_op_removeSnapshotsFiles(snapshotNumList: any): Promise<void>;
|
|
13
|
+
}
|
|
@@ -26,7 +26,7 @@ import {
|
|
|
26
26
|
Zip_File_Extension as i
|
|
27
27
|
} from "./QyCompressor.js";
|
|
28
28
|
|
|
29
|
-
class
|
|
29
|
+
export default class extends e {
|
|
30
30
|
constructor({
|
|
31
31
|
kvFolder: e,
|
|
32
32
|
options: s
|
|
@@ -108,6 +108,4 @@ async function l(s, a, o, r) {
|
|
|
108
108
|
}
|
|
109
109
|
0 < n.length && await Promise.allSettled(n);
|
|
110
110
|
}
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
export default s;
|
|
111
|
+
}
|
package/src/QyKVDataLoader.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import {
|
|
2
|
-
readFile as
|
|
2
|
+
readFile as y,
|
|
3
3
|
readdir as x
|
|
4
4
|
} from "node:fs/promises";
|
|
5
5
|
|
|
@@ -20,13 +20,13 @@ import {
|
|
|
20
20
|
} from "./QySnapshots.js";
|
|
21
21
|
|
|
22
22
|
import {
|
|
23
|
-
getDefaultOptions as
|
|
23
|
+
getDefaultOptions as l
|
|
24
24
|
} from "./QyDefaultOptions.js";
|
|
25
25
|
|
|
26
26
|
class a {
|
|
27
27
|
constructor(a, s) {
|
|
28
28
|
s = {
|
|
29
|
-
...
|
|
29
|
+
...l("QyKVDataLoader"),
|
|
30
30
|
...s
|
|
31
31
|
};
|
|
32
32
|
var t = o(a, "snapshot");
|
|
@@ -49,15 +49,15 @@ class a {
|
|
|
49
49
|
snapshotMaxChangeId: o
|
|
50
50
|
} = a;
|
|
51
51
|
if (this.maxChangeId = o, s) {
|
|
52
|
-
var e = this,
|
|
53
|
-
aclKeyValueMap:
|
|
52
|
+
var e = this, l = s.filter(a => a > t), {
|
|
53
|
+
aclKeyValueMap: r,
|
|
54
54
|
qySnapshots: i,
|
|
55
55
|
options: s
|
|
56
|
-
} = (
|
|
57
|
-
for (let a = 0; a <
|
|
58
|
-
var d =
|
|
56
|
+
} = (l.sort((a, s) => a - s), e), n = s.autoRepairAclFile, p = await Promise.all(l.map(async a => y(F(e, a))));
|
|
57
|
+
for (let a = 0; a < l.length; ++a) {
|
|
58
|
+
var d = l[a], m = F(e, d), m = await M(m, p[a], n, e.maxChangeId);
|
|
59
59
|
if (0 < m.length) {
|
|
60
|
-
for (var [ h, c ] of m) i.applyCmdObj(c,
|
|
60
|
+
for (var [ h, c ] of m) i.applyCmdObj(c, r), e.maxChangeId = h;
|
|
61
61
|
e.loadedMaxAclNum = d;
|
|
62
62
|
}
|
|
63
63
|
}
|
|
@@ -66,13 +66,13 @@ class a {
|
|
|
66
66
|
var {
|
|
67
67
|
maxChangeId: s,
|
|
68
68
|
loadedMaxAclNum: f,
|
|
69
|
-
aclKeyValueMap:
|
|
69
|
+
aclKeyValueMap: u
|
|
70
70
|
} = this;
|
|
71
71
|
return {
|
|
72
72
|
maxChangeId: s,
|
|
73
73
|
loadedMaxAclNum: f,
|
|
74
74
|
qySnapshots: a,
|
|
75
|
-
aclKeyValueMap:
|
|
75
|
+
aclKeyValueMap: u
|
|
76
76
|
};
|
|
77
77
|
}
|
|
78
78
|
}
|
package/src/QyKVDataSaver.js
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import {
|
|
2
|
-
QyMessager as
|
|
2
|
+
QyMessager as e
|
|
3
3
|
} from "./QyMessager.js";
|
|
4
4
|
|
|
5
5
|
import {
|
|
6
6
|
getDefaultOptions as r
|
|
7
7
|
} from "./QyDefaultOptions.js";
|
|
8
8
|
|
|
9
|
-
class
|
|
10
|
-
constructor(
|
|
11
|
-
super(
|
|
12
|
-
kvFolder:
|
|
9
|
+
class a extends e {
|
|
10
|
+
constructor(e, a, s) {
|
|
11
|
+
super(e, "QyKVDataSaver_Worker", {
|
|
12
|
+
kvFolder: a,
|
|
13
13
|
options: s = {
|
|
14
14
|
...r("QyKVDataSaver"),
|
|
15
15
|
...s
|
|
@@ -19,5 +19,5 @@ class e extends a {
|
|
|
19
19
|
}
|
|
20
20
|
|
|
21
21
|
export {
|
|
22
|
-
|
|
22
|
+
a as QyKVDataSaver
|
|
23
23
|
};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { QyMessageWorker } from "./QyMessageWorker.ts";
|
|
2
|
+
export default class QyKVDataSaver_Worker extends QyMessageWorker {
|
|
3
|
+
constructor({ kvFolder, options }: {
|
|
4
|
+
kvFolder: any;
|
|
5
|
+
options: any;
|
|
6
|
+
});
|
|
7
|
+
_op_start(maxChangeId: any, maxSnapshotNum: any, loadedMaxAclNum: any, aclKeyValueMap: any): void;
|
|
8
|
+
_op_stop(): Promise<any>;
|
|
9
|
+
callSave(changeId: any, cmdArgAsListObj: any, syncList: any): any;
|
|
10
|
+
castSave(changeId: any, cmdArgAsListObj: any, syncList: any): any;
|
|
11
|
+
releaseSnapshot(snapshotNum: any): void;
|
|
12
|
+
onSnapshotSavedChangeId(snapshotSavedChangeId: any, pMOnlySnapshot: any): void;
|
|
13
|
+
}
|
|
@@ -22,7 +22,7 @@ import {
|
|
|
22
22
|
delCmdKey as u
|
|
23
23
|
} from "./QyAcl.js";
|
|
24
24
|
|
|
25
|
-
class
|
|
25
|
+
export default class extends a {
|
|
26
26
|
constructor({
|
|
27
27
|
kvFolder: a,
|
|
28
28
|
options: s
|
|
@@ -33,7 +33,7 @@ class s extends a {
|
|
|
33
33
|
}), Object.assign(this, {
|
|
34
34
|
kvFolder: a,
|
|
35
35
|
aclFolder: t(a, "acl"),
|
|
36
|
-
qyAclSaver: new o(this, s),
|
|
36
|
+
qyAclSaver: s.noAcl ? void 0 : new o(this, s),
|
|
37
37
|
qySnapshotSaver: new n(this, a, s)
|
|
38
38
|
});
|
|
39
39
|
}
|
|
@@ -46,7 +46,7 @@ class s extends a {
|
|
|
46
46
|
maxChangeId: a,
|
|
47
47
|
snapshotMaxChangeId: a,
|
|
48
48
|
currentAclNum: (t || s) + 1
|
|
49
|
-
}), o.start(m(this)), n.start(a, t, e);
|
|
49
|
+
}), o && o.start(m(this)), n.start(a, t, e);
|
|
50
50
|
}
|
|
51
51
|
async _op_stop() {
|
|
52
52
|
var {
|
|
@@ -57,7 +57,7 @@ class s extends a {
|
|
|
57
57
|
maxChangeId: o,
|
|
58
58
|
snapshotMaxChangeId: n
|
|
59
59
|
} = this;
|
|
60
|
-
return this.isStopping = !0, await a.stop(), s.saveSnapshotAtStop && n < o && (this.isSavingSnapshot && await new Promise(a => this.saveSnapshotResolve = a),
|
|
60
|
+
return this.isStopping = !0, a && await a.stop(), s.saveSnapshotAtStop && n < o && (this.isSavingSnapshot && await new Promise(a => this.saveSnapshotResolve = a),
|
|
61
61
|
logger.log(`Saving snapshot ${e} at stop.`), t.saveSnapshot(e)), t.stop();
|
|
62
62
|
}
|
|
63
63
|
callSave(a, s, t) {
|
|
@@ -84,14 +84,14 @@ function r(a, s, t, e, o) {
|
|
|
84
84
|
isSavingSnapshot: S
|
|
85
85
|
} = a;
|
|
86
86
|
let v;
|
|
87
|
-
o ? v = n.callSave(s, t) : n.castSave(s, t);
|
|
87
|
+
n && (o ? v = n.callSave(s, t) : n.castSave(s, t));
|
|
88
88
|
var l = t, c = e;
|
|
89
89
|
if (c) {
|
|
90
90
|
var g = c.length;
|
|
91
91
|
for (let a = 0; a < g; a += 2) u(l, c[a]);
|
|
92
92
|
}
|
|
93
93
|
return r.castSave(s, t, e), a.maxChangeId = s, !S && s - i >= h.snapshotMaxChangeCount && (++a.currentAclNum,
|
|
94
|
-
n.switch(m(a)), r.saveSnapshot(p), Object.assign(a, {
|
|
94
|
+
n && n.switch(m(a)), r.saveSnapshot(p), Object.assign(a, {
|
|
95
95
|
snapshotMaxChangeId: s,
|
|
96
96
|
isSavingSnapshot: !0
|
|
97
97
|
})), v;
|
|
@@ -99,6 +99,4 @@ function r(a, s, t, e, o) {
|
|
|
99
99
|
|
|
100
100
|
function m(a) {
|
|
101
101
|
return t(a.aclFolder, a.currentAclNum + "_acl.txt");
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
export default s;
|
|
102
|
+
}
|
package/src/QyLogFileSaver.js
CHANGED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { QyMessageWorker } from "./QyMessageWorker.ts";
|
|
2
|
+
export default class QyLogFileSaver_Worker extends QyMessageWorker {
|
|
3
|
+
constructor(options: any);
|
|
4
|
+
_op_start(logFilePath: any): Promise<void>;
|
|
5
|
+
_op_stop(): Promise<void>;
|
|
6
|
+
switch(logFilePath: any): Promise<void>;
|
|
7
|
+
save(changeId: any, data: any): void;
|
|
8
|
+
}
|