datafolder 1.0.9 → 1.0.11
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/{internal.md → Internal.md} +8 -1
- package/README.md +6 -2
- package/SKILL.md +191 -0
- package/SSD.md +60 -0
- package/index.js +1 -0
- package/package.json +2 -2
- package/sample.js +4 -4
- package/scripts/airbnb.js +1 -0
- package/scripts/airbnb2.js +1 -0
- package/scripts/convertBinFiles.js +1 -0
- package/scripts/express.js +2 -1
- package/scripts/fastify.js +1 -0
- package/scripts/flights.js +1 -0
- package/scripts/flights2.js +1 -0
- package/scripts/flights_queries.js +1 -0
- package/src/QyAcl.d.ts +3 -3
- package/src/QyAcl.js +7 -7
- package/src/QyAclSaver_Worker.d.ts +1 -0
- package/src/QyAclSaver_Worker.js +1 -0
- package/src/QyAclWriter.d.ts +2 -1
- package/src/QyAclWriter.js +7 -6
- package/src/QyBatch.d.ts +29 -22
- package/src/QyBatch.js +85 -72
- package/src/QyBinWriter.d.ts +9 -4
- package/src/QyBinWriter.js +83 -70
- package/src/QyCD.d.ts +19 -19
- package/src/QyCD.js +2 -2
- package/src/QyCache.d.ts +22 -23
- package/src/QyCache.js +47 -36
- package/src/QyCompressor_Worker.js +2 -2
- package/src/QyDB.d.ts +6 -9
- package/src/QyDB.js +1 -1
- package/src/QyFile.d.ts +2 -0
- package/src/QyFile.js +42 -40
- package/src/QyFileContentUtils.d.ts +1 -4
- package/src/QyFileLogger.d.ts +4 -0
- package/src/QyFileLogger.js +30 -26
- package/src/QyIndex.d.ts +2 -2
- package/src/QyIndex.js +84 -80
- package/src/QyIndexPropTree.d.ts +4 -0
- package/src/QyIndexPropTree.js +19 -10
- package/src/QyIntersectNode.d.ts +1 -0
- package/src/QyIntersectNode.js +1 -0
- package/src/QyJsonSaver.d.ts +2 -2
- package/src/QyJsonSaver.js +4 -4
- package/src/QyKVData.d.ts +18 -1
- package/src/QyKVData.js +73 -53
- package/src/QyKVDataCleaner_Worker.d.ts +7 -1
- package/src/QyKVDataCleaner_Worker.js +54 -40
- package/src/QyKVDataLoader.d.ts +10 -2
- package/src/QyKVDataLoader.js +27 -21
- package/src/QyKVDataSaver_Worker.d.ts +10 -0
- package/src/QyKVDataSaver_Worker.js +23 -9
- package/src/QyLogFileSaver_Worker.d.ts +1 -0
- package/src/QyLogFileSaver_Worker.js +7 -6
- package/src/QyLogger.d.ts +21 -10
- package/src/QyLogger.js +111 -67
- package/src/QyMessageWorker.d.ts +1 -1
- package/src/QyMessageWorker.js +5 -5
- package/src/QyMessager.d.ts +5 -1
- package/src/QyMessager.js +6 -1
- package/src/QyMessager_Run.js +4 -3
- package/src/QyMod.js +9 -8
- package/src/QyOpRunner.d.ts +5 -1
- package/src/QyOpRunner.js +7 -7
- package/src/QyQueue.d.ts +5 -1
- package/src/QyQueue.js +6 -7
- package/src/QySaver.d.ts +3 -0
- package/src/QySaver.js +26 -15
- package/src/QySnapshotCompactor_Worker.d.ts +7 -0
- package/src/QySnapshotCompactor_Worker.js +37 -26
- package/src/QySnapshotSaver_Worker.d.ts +8 -1
- package/src/QySnapshotSaver_Worker.js +21 -14
- package/src/QySnapshots.d.ts +19 -7
- package/src/QySnapshots.js +204 -181
- package/src/QyTrigger.d.ts +5 -1
- package/src/QyTrigger.js +44 -34
- package/src/QyUnionNode.d.ts +10 -1
- package/src/QyUnionNode.js +34 -36
- package/src/QyUtils.d.ts +2 -2
- package/src/QyUtils.js +116 -111
- package/src/simulate.js +34 -31
- package/src/simulate2.js +49 -46
- package/src/soc_pokec.js +17 -11
- package/static/codemirror.bundle/editor.bundle.js +2 -0
package/src/QyTrigger.js
CHANGED
|
@@ -1,49 +1,55 @@
|
|
|
1
1
|
import {
|
|
2
|
-
isDeepStrictEqual as
|
|
2
|
+
isDeepStrictEqual as p
|
|
3
3
|
} from "node:util";
|
|
4
4
|
|
|
5
5
|
import {
|
|
6
|
-
getValByNamePath as
|
|
6
|
+
getValByNamePath as c,
|
|
7
7
|
setValByNamePath as u
|
|
8
8
|
} from "./QyFileContentUtils.js";
|
|
9
9
|
|
|
10
10
|
import {
|
|
11
11
|
isEmptyObj as e,
|
|
12
|
-
isMatchName as
|
|
12
|
+
isMatchName as l,
|
|
13
13
|
getMatchParam as d,
|
|
14
14
|
arrayLast as f,
|
|
15
15
|
propNameJoin as v
|
|
16
16
|
} from "./QyUtils.js";
|
|
17
17
|
|
|
18
|
-
|
|
18
|
+
import {
|
|
19
|
+
logger as N
|
|
20
|
+
} from "./QyLogger.js";
|
|
21
|
+
|
|
22
|
+
let y = Array.isArray;
|
|
19
23
|
|
|
20
24
|
class h {
|
|
21
|
-
|
|
25
|
+
name;
|
|
26
|
+
parent;
|
|
27
|
+
children = {};
|
|
28
|
+
triggerMap = {};
|
|
29
|
+
constructor(e = void 0, r = void 0) {
|
|
22
30
|
Object.assign(this, {
|
|
23
31
|
name: e,
|
|
24
|
-
parent: r
|
|
25
|
-
children: {},
|
|
26
|
-
triggerMap: {}
|
|
32
|
+
parent: r
|
|
27
33
|
});
|
|
28
34
|
}
|
|
29
35
|
insertTrigger(e, r, t, a) {
|
|
30
36
|
let i = this;
|
|
31
37
|
for (var s of r) {
|
|
32
|
-
|
|
33
|
-
var
|
|
34
|
-
i =
|
|
38
|
+
l(s) && (s = "*");
|
|
39
|
+
var o = i.children;
|
|
40
|
+
i = o[s] || (o[s] = new h(s, i));
|
|
35
41
|
}
|
|
36
|
-
var
|
|
37
|
-
|
|
42
|
+
var n = i.triggerMap, g = n[e];
|
|
43
|
+
g ? Object.assign(g, {
|
|
38
44
|
triggerName: e,
|
|
39
45
|
fileNamePath: r,
|
|
40
46
|
propNamePathList: t,
|
|
41
47
|
fun: a
|
|
42
|
-
}) :
|
|
48
|
+
}) : n[e] = new m(e, r, t, a);
|
|
43
49
|
}
|
|
44
50
|
removeTrigger(e, r) {
|
|
45
51
|
let t = this;
|
|
46
|
-
for (var a of r) if (
|
|
52
|
+
for (var a of r) if (l(a) && (a = "*"), !(t = t.children[a])) return !1;
|
|
47
53
|
r = t.triggerMap;
|
|
48
54
|
return !!r[e] && (delete r[e], t.isEmpty && t.removeEmptyNodes(), !0);
|
|
49
55
|
}
|
|
@@ -69,6 +75,10 @@ class h {
|
|
|
69
75
|
}
|
|
70
76
|
|
|
71
77
|
class m {
|
|
78
|
+
triggerName;
|
|
79
|
+
fileNamePath;
|
|
80
|
+
propNamePathList;
|
|
81
|
+
fun;
|
|
72
82
|
constructor(e, r, t, a) {
|
|
73
83
|
Object.assign(this, {
|
|
74
84
|
triggerName: e,
|
|
@@ -82,32 +92,32 @@ class m {
|
|
|
82
92
|
triggerName: a,
|
|
83
93
|
fileNamePath: i,
|
|
84
94
|
propNamePathList: s,
|
|
85
|
-
fun:
|
|
86
|
-
} = this,
|
|
87
|
-
let
|
|
95
|
+
fun: o
|
|
96
|
+
} = this, n = e.fileContent;
|
|
97
|
+
let g;
|
|
88
98
|
for (t of s) {
|
|
89
|
-
var
|
|
90
|
-
|
|
91
|
-
oldValue:
|
|
99
|
+
var l = c(r.oldValue, t), f = c(r.newValue, t);
|
|
100
|
+
p(l, f) || (l = {
|
|
101
|
+
oldValue: l,
|
|
92
102
|
newValue: f
|
|
93
|
-
}, (
|
|
103
|
+
}, (y(f) || y(c(n, t))) && (l.isArrayDelta = !0), (g = g || {
|
|
94
104
|
_file: e,
|
|
95
|
-
_fileContent:
|
|
96
|
-
})[v(t)] =
|
|
105
|
+
_fileContent: n
|
|
106
|
+
})[v(t)] = l, u(g, t, l));
|
|
97
107
|
}
|
|
98
|
-
if (
|
|
108
|
+
if (g) {
|
|
99
109
|
var {
|
|
100
110
|
namePath: h,
|
|
101
111
|
qyCache: s
|
|
102
112
|
} = e;
|
|
103
113
|
for (let e = 0; e < h.length; ++e) {
|
|
104
114
|
var m = d(i[e]);
|
|
105
|
-
m && (
|
|
115
|
+
m && (g[m] = h[e]);
|
|
106
116
|
}
|
|
107
117
|
try {
|
|
108
|
-
|
|
118
|
+
o && o(g), s.emit(a, g);
|
|
109
119
|
} catch (e) {
|
|
110
|
-
|
|
120
|
+
N.error(`Running trigger ${a} failed:`, g, e);
|
|
111
121
|
}
|
|
112
122
|
}
|
|
113
123
|
}
|
|
@@ -115,8 +125,8 @@ class m {
|
|
|
115
125
|
|
|
116
126
|
let t = [];
|
|
117
127
|
|
|
118
|
-
function
|
|
119
|
-
return e ?
|
|
128
|
+
function P(e, r) {
|
|
129
|
+
return e ? l(r) ? Object.values(e) : (e = e[r]) ? [ e ] : t : t;
|
|
120
130
|
}
|
|
121
131
|
|
|
122
132
|
function r(e, a) {
|
|
@@ -124,13 +134,13 @@ function r(e, a) {
|
|
|
124
134
|
let r = [ e ], t = [];
|
|
125
135
|
for (let e = 0; e < a.length - 1; ++e) {
|
|
126
136
|
var i, s = a[e];
|
|
127
|
-
for (i of r) for (var
|
|
128
|
-
t.push(
|
|
137
|
+
for (i of r) for (var o of P(i.subdirMap, s)) i.setChildTriggerNodes(o),
|
|
138
|
+
t.push(o);
|
|
129
139
|
if (0 == t.length) return;
|
|
130
140
|
[ r, t ] = [ t, r ], t.length = 0;
|
|
131
141
|
}
|
|
132
|
-
var
|
|
133
|
-
for (
|
|
142
|
+
var n, g = f(a);
|
|
143
|
+
for (n of r) for (var l of P(n.fileMap, g)) n.setChildTriggerNodes(l);
|
|
134
144
|
}
|
|
135
145
|
}
|
|
136
146
|
|
package/src/QyUnionNode.d.ts
CHANGED
|
@@ -1,15 +1,24 @@
|
|
|
1
1
|
export declare class QueryCounter {
|
|
2
|
+
limit: any;
|
|
3
|
+
cursor: any;
|
|
4
|
+
added: number;
|
|
5
|
+
count: number;
|
|
6
|
+
encounteredMap: any;
|
|
2
7
|
constructor(limit: any, cursor?: number);
|
|
3
8
|
get isFull(): boolean;
|
|
4
9
|
encounterOne(fileName: any): true | undefined;
|
|
5
10
|
countOne(): true | undefined;
|
|
6
11
|
}
|
|
7
12
|
export declare class QyQueryNode {
|
|
13
|
+
fileCount: number;
|
|
14
|
+
nodeList: any;
|
|
8
15
|
constructor();
|
|
9
16
|
encounterOne(resultMap: any, fileName: any, queryCounter: any): true | undefined;
|
|
10
17
|
}
|
|
11
18
|
export declare class QyUnionNode extends QyQueryNode {
|
|
12
|
-
|
|
19
|
+
dirMap: any;
|
|
20
|
+
checkedDirMap: any;
|
|
21
|
+
constructor(dir?: undefined);
|
|
13
22
|
containsFile(fileName: any): boolean;
|
|
14
23
|
getFiles(queryCounter: any, resultMap?: {}): Generator<any, void, any>;
|
|
15
24
|
addNode(node: any): void;
|
package/src/QyUnionNode.js
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
class i {
|
|
2
|
+
limit;
|
|
3
|
+
cursor;
|
|
4
|
+
added = 0;
|
|
5
|
+
count = 0;
|
|
6
|
+
encounteredMap = {};
|
|
2
7
|
constructor(i, e = 0) {
|
|
3
8
|
i = i || 1 / 0, Object.assign(this, {
|
|
4
9
|
limit: i,
|
|
5
|
-
cursor: e
|
|
6
|
-
added: 0,
|
|
7
|
-
count: 0,
|
|
8
|
-
encounteredMap: {}
|
|
10
|
+
cursor: e
|
|
9
11
|
});
|
|
10
12
|
}
|
|
11
13
|
get isFull() {
|
|
@@ -14,9 +16,9 @@ class i {
|
|
|
14
16
|
encounterOne(i) {
|
|
15
17
|
var {
|
|
16
18
|
encounteredMap: e,
|
|
17
|
-
isFull:
|
|
19
|
+
isFull: r
|
|
18
20
|
} = this;
|
|
19
|
-
if (!(
|
|
21
|
+
if (!(r || i in e)) return e[i] = 1, this.countOne();
|
|
20
22
|
}
|
|
21
23
|
countOne() {
|
|
22
24
|
if (this.count++ >= this.cursor) return ++this.added, !0;
|
|
@@ -24,74 +26,70 @@ class i {
|
|
|
24
26
|
}
|
|
25
27
|
|
|
26
28
|
class e {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
}
|
|
33
|
-
encounterOne(i, e, t) {
|
|
34
|
-
if (!t || t.encounterOne(e)) return i[e] = 1, !0;
|
|
29
|
+
fileCount = 0;
|
|
30
|
+
nodeList = [];
|
|
31
|
+
constructor() {}
|
|
32
|
+
encounterOne(i, e, r) {
|
|
33
|
+
if (!r || r.encounterOne(e)) return i[e] = 1, !0;
|
|
35
34
|
}
|
|
36
35
|
}
|
|
37
36
|
|
|
38
37
|
class o extends e {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
}), i && this.addDir(i);
|
|
38
|
+
dirMap = {};
|
|
39
|
+
checkedDirMap = {};
|
|
40
|
+
constructor(i = void 0) {
|
|
41
|
+
super(), i && this.addDir(i);
|
|
44
42
|
}
|
|
45
43
|
containsFile(e) {
|
|
46
44
|
var {
|
|
47
45
|
fileCount: i,
|
|
48
|
-
dirMap:
|
|
49
|
-
nodeList:
|
|
46
|
+
dirMap: r,
|
|
47
|
+
nodeList: t
|
|
50
48
|
} = this;
|
|
51
49
|
if (0 < i) {
|
|
52
|
-
for (var n in
|
|
53
|
-
for (let i = 0; i <
|
|
50
|
+
for (var n in r) if (null != r[n].getFile(e)) return !0;
|
|
51
|
+
for (let i = 0; i < t.length; ++i) if (t[i].containsFile(e)) return !0;
|
|
54
52
|
}
|
|
55
53
|
return !1;
|
|
56
54
|
}
|
|
57
55
|
*getFiles(i, e = {}) {
|
|
58
|
-
var
|
|
56
|
+
var r, t, {
|
|
59
57
|
dirMap: n,
|
|
60
58
|
nodeList: s
|
|
61
59
|
} = this;
|
|
62
|
-
for (
|
|
63
|
-
var o = n[
|
|
64
|
-
if (0 != o.fileCount) for (var
|
|
60
|
+
for (r in n) {
|
|
61
|
+
var o = n[r];
|
|
62
|
+
if (0 != o.fileCount) for (var u of o.fileNameList) if (!(u in e) && this.encounterOne(e, u, i) && (yield u,
|
|
65
63
|
i?.isFull)) return;
|
|
66
64
|
}
|
|
67
|
-
for (
|
|
65
|
+
for (t of s) if (yield* t.getFiles(i, e), i?.isFull) return;
|
|
68
66
|
}
|
|
69
67
|
addNode(i) {
|
|
70
68
|
if (i) {
|
|
71
69
|
var {
|
|
72
70
|
dirMap: e,
|
|
73
|
-
checkedDirMap:
|
|
74
|
-
nodeList:
|
|
71
|
+
checkedDirMap: r,
|
|
72
|
+
nodeList: t
|
|
75
73
|
} = this;
|
|
76
74
|
if (i instanceof o) {
|
|
77
75
|
for (var n in i.dirMap) e[n] = i.dirMap[n];
|
|
78
|
-
for (var s in
|
|
79
|
-
} else
|
|
76
|
+
for (var s in t.push(...i.nodeList), i.checkedDirMap) r[s] = 1;
|
|
77
|
+
} else t.push(i);
|
|
80
78
|
this.fileCount += i.fileCount;
|
|
81
79
|
}
|
|
82
80
|
}
|
|
83
81
|
addDir(i) {
|
|
84
82
|
var {
|
|
85
83
|
dirMap: e,
|
|
86
|
-
checkedDirMap:
|
|
84
|
+
checkedDirMap: r
|
|
87
85
|
} = this, {
|
|
88
|
-
fileCount:
|
|
86
|
+
fileCount: t,
|
|
89
87
|
subdirCount: n,
|
|
90
88
|
fullPathHash: s
|
|
91
89
|
} = i;
|
|
92
|
-
if (!(s in e || s in
|
|
90
|
+
if (!(s in e || s in r)) {
|
|
93
91
|
if (0 < n) for (var o of i.subdirList) this.addDir(o);
|
|
94
|
-
0 <
|
|
92
|
+
0 < t ? (e[s] = i, this.fileCount += t) : r[s] = 1;
|
|
95
93
|
}
|
|
96
94
|
}
|
|
97
95
|
}
|
package/src/QyUtils.d.ts
CHANGED
|
@@ -29,12 +29,12 @@ export declare function isSimpleType(item: any): boolean;
|
|
|
29
29
|
export declare function trimArrayTail(arr: any): any;
|
|
30
30
|
export declare function setPromise(operation: any): any;
|
|
31
31
|
export declare function toBuffer(data: any): Buffer<any>;
|
|
32
|
-
export declare function getSuffix(num: any): "
|
|
32
|
+
export declare function getSuffix(num: any): "" | "s";
|
|
33
33
|
export declare function ensureDir(dirPath: any): Promise<string | undefined>;
|
|
34
34
|
export declare function ensureParentDir(filePath: any): Promise<string | undefined>;
|
|
35
35
|
export declare function getSize(filePath: any): Promise<number | false>;
|
|
36
36
|
export declare function folderOrFileExists(folderPath: any): Promise<boolean>;
|
|
37
|
-
export declare function sleep(seconds:
|
|
37
|
+
export declare function sleep(seconds: number, signal?: undefined): Promise<boolean> | Promise<void>;
|
|
38
38
|
export declare function lockExclusiveFilePath(exclusiveFilePath: any): Promise<void>;
|
|
39
39
|
export declare function unlockExclusiveFilePath(exclusiveFilePath: any): void;
|
|
40
40
|
export declare function fromSingleName(name: any): any;
|