datafolder 1.0.10 → 1.0.12
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 +15 -1
- package/SKILL.md +191 -0
- package/SSD.md +3 -3
- package/package.json +2 -2
- package/scripts/flights2.js +2 -0
- package/src/QyAcl.d.ts +13 -7
- package/src/QyAcl.js +122 -138
- package/src/QyAclSaver.js +2 -2
- package/src/QyAclSaver_Worker.d.ts +2 -2
- package/src/QyAclWriter.d.ts +1 -1
- package/src/QyBatch.d.ts +8 -11
- package/src/QyBatch.js +239 -211
- package/src/QyBinWriter.d.ts +2 -2
- package/src/QyBinWriter.js +15 -15
- package/src/QyCD.d.ts +2 -2
- package/src/QyCD.js +29 -29
- package/src/QyCache.d.ts +6 -1
- package/src/QyCache.js +72 -53
- package/src/QyCompressor.d.ts +2 -2
- package/src/QyCompressor.js +13 -13
- package/src/QyDB.d.ts +1 -22
- package/src/QyDB.js +23 -78
- package/src/QyDefaultOptions.js +5 -0
- package/src/QyDir.js +26 -27
- package/src/QyExpire.d.ts +21 -0
- package/src/QyExpire.js +113 -0
- package/src/QyExpireClock.d.ts +15 -0
- package/src/QyExpireClock.js +53 -0
- package/src/QyExpire_Worker.d.ts +20 -0
- package/src/QyExpire_Worker.js +127 -0
- package/src/QyFile.js +36 -25
- package/src/QyFileContentUtils.js +21 -21
- package/src/QyItem.d.ts +1 -0
- package/src/QyItem.js +15 -9
- package/src/QyJsonSaver.d.ts +1 -1
- package/src/QyJsonSaver.js +1 -1
- package/src/QyKVData.d.ts +5 -2
- package/src/QyKVData.js +126 -114
- package/src/QyKVDataCleaner.js +2 -2
- package/src/QyKVDataCleaner_Worker.js +37 -37
- package/src/QyKVDataSaver.js +2 -2
- package/src/QyKVDataSaver_Worker.d.ts +2 -2
- package/src/QyKVDataSaver_Worker.js +5 -5
- package/src/QyLogFileSaver.js +2 -2
- package/src/QyLogger.d.ts +1 -0
- package/src/QyLogger.js +1 -0
- package/src/QyMessageWorker.d.ts +1 -1
- package/src/QyMessageWorker.js +10 -10
- package/src/QyMessager.d.ts +1 -1
- package/src/QyMessager.js +37 -36
- package/src/QyMessager_Run.js +12 -8
- package/src/QyQueue.js +8 -12
- package/src/QySaver.d.ts +1 -1
- package/src/QySaver.js +1 -1
- package/src/QySnapshotCompactor.js +2 -2
- package/src/QySnapshotCompactor_Worker.d.ts +1 -1
- package/src/QySnapshotCompactor_Worker.js +5 -5
- package/src/QySnapshotSaver.js +2 -2
- package/src/QySnapshotSaver_Worker.js +4 -4
- package/src/QySnapshots.d.ts +2 -2
- package/src/QySnapshots.js +38 -38
- package/src/QyTrigger.d.ts +1 -1
- package/src/QyTrigger.js +20 -21
- package/src/QyUtils.d.ts +3 -2
- package/src/QyUtils.js +93 -86
- package/src/hackernews.js +1 -1
- package/src/simulate.js +6 -6
- package/src/simulate2.js +5 -5
- package/src/soc_pokec.js +1 -1
- package/static/codemirror.bundle/editor.bundle.js +43 -9
- package/static/datafolderui/QyUIFolderViewer.js +1 -5
package/src/QyFile.js
CHANGED
|
@@ -7,8 +7,9 @@ import {
|
|
|
7
7
|
SpecialFilePaths as n,
|
|
8
8
|
getContentKey as i,
|
|
9
9
|
isNotNullObj as a,
|
|
10
|
-
isSimpleType as
|
|
11
|
-
fromSingleName as o
|
|
10
|
+
isSimpleType as d,
|
|
11
|
+
fromSingleName as o,
|
|
12
|
+
isEmptyObj as l
|
|
12
13
|
} from "./QyUtils.js";
|
|
13
14
|
|
|
14
15
|
import {
|
|
@@ -19,13 +20,18 @@ import {
|
|
|
19
20
|
QyIndexPropTree as s
|
|
20
21
|
} from "./QyIndexPropTree.js";
|
|
21
22
|
|
|
22
|
-
|
|
23
|
-
|
|
23
|
+
import {
|
|
24
|
+
analyzeExpireInfo as f,
|
|
25
|
+
handleExpiredProps as u
|
|
26
|
+
} from "./QyExpire.js";
|
|
27
|
+
|
|
28
|
+
let C = Array.isArray, h = n.IndexPropPathsFileName, {
|
|
29
|
+
$spec: p,
|
|
24
30
|
$raw: c,
|
|
25
|
-
$clone:
|
|
31
|
+
$clone: y
|
|
26
32
|
} = t;
|
|
27
33
|
|
|
28
|
-
class
|
|
34
|
+
class m extends e {
|
|
29
35
|
_fileContentKey;
|
|
30
36
|
_fileContent;
|
|
31
37
|
cChangeId = 0;
|
|
@@ -44,9 +50,14 @@ class u extends e {
|
|
|
44
50
|
return this._fileContentKey || (this._fileContentKey = i(this.fullPathHash));
|
|
45
51
|
}
|
|
46
52
|
get fileContent() {
|
|
47
|
-
var e, t = this;
|
|
48
|
-
return
|
|
49
|
-
e =
|
|
53
|
+
var e, t, n, i, r = this;
|
|
54
|
+
return r.created && null == r._fileContent && !r.fileContentLoaded && (r.fileContentLoaded = !0,
|
|
55
|
+
e = r.qyCache) && (r._fileContent = e.qyKVData.getValueSync(r.fileContentKey),
|
|
56
|
+
!r.underHiddenFolder && (r = r, i = (e = e).getExpireInfoFile(r.fullPathHash)) && ({
|
|
57
|
+
expiredProps: i,
|
|
58
|
+
remainingExpireInfoObj: t,
|
|
59
|
+
toDeleteFile: n
|
|
60
|
+
} = f(i.fileContent), u(e.qyDB, r, i, n), l(t) || e.monitorContentExpire(r, t))),
|
|
50
61
|
this.visited = !0, this._fileContent;
|
|
51
62
|
}
|
|
52
63
|
set fileContent(e) {
|
|
@@ -59,7 +70,7 @@ class u extends e {
|
|
|
59
70
|
fileContent: n,
|
|
60
71
|
underHiddenFolder: i
|
|
61
72
|
} = this;
|
|
62
|
-
if (e && i && t ==
|
|
73
|
+
if (e && i && t == h) {
|
|
63
74
|
e = this._qyIndexPropTree;
|
|
64
75
|
if (e) return e;
|
|
65
76
|
var r, l = this._qyIndexPropTree = new s();
|
|
@@ -80,17 +91,17 @@ class u extends e {
|
|
|
80
91
|
setContent(e) {
|
|
81
92
|
this.fileContent = e;
|
|
82
93
|
}
|
|
83
|
-
view(e =
|
|
94
|
+
view(e = y, t) {
|
|
84
95
|
var n = this.fileContent;
|
|
85
|
-
return null == n ||
|
|
96
|
+
return null == n || d(n) ? n : function t(n, i, r, l) {
|
|
86
97
|
if (r === c) return i;
|
|
87
98
|
if (null == r) return;
|
|
88
|
-
if (
|
|
99
|
+
if (d(r)) return r ? l ? i : structuredClone(i) : void 0;
|
|
89
100
|
let e = r.$link;
|
|
90
|
-
if (null != e) return
|
|
91
|
-
if (
|
|
92
|
-
|
|
93
|
-
let o =
|
|
101
|
+
if (null != e) return _(n, i, e, r[p]);
|
|
102
|
+
if (d(i)) return i;
|
|
103
|
+
C(r) && (r = Object.fromEntries(r.filter(e => e).map(e => [ e, 1 ])));
|
|
104
|
+
let o = C(i) ? [] : {};
|
|
94
105
|
let {
|
|
95
106
|
$all: s,
|
|
96
107
|
"**": a
|
|
@@ -105,9 +116,9 @@ class u extends e {
|
|
|
105
116
|
return o;
|
|
106
117
|
}(this, n, e, t);
|
|
107
118
|
}
|
|
108
|
-
prop(e, t =
|
|
119
|
+
prop(e, t = y, n) {
|
|
109
120
|
var i;
|
|
110
|
-
if (t) return e = r(this.fileContent,
|
|
121
|
+
if (t) return e = r(this.fileContent, C(e) ? e : [ e ]), i = t.$link, null != i ? _(this, e, i, t[p], n) : n || t === c ? e : structuredClone(e);
|
|
111
122
|
}
|
|
112
123
|
unloadFileContent() {
|
|
113
124
|
this.created && this.fileContentLoaded && null != this._fileContent && (this._fileContent = void 0,
|
|
@@ -115,7 +126,7 @@ class u extends e {
|
|
|
115
126
|
}
|
|
116
127
|
}
|
|
117
128
|
|
|
118
|
-
function
|
|
129
|
+
function g(e, t, n, i) {
|
|
119
130
|
if (e) {
|
|
120
131
|
e = e.getFile(t);
|
|
121
132
|
if (e) return e.view(n, i);
|
|
@@ -123,17 +134,17 @@ function p(e, t, n, i) {
|
|
|
123
134
|
return t;
|
|
124
135
|
}
|
|
125
136
|
|
|
126
|
-
function
|
|
137
|
+
function _(e, t, n, i, r = !1) {
|
|
127
138
|
let l = e.qyCache.getDir(n);
|
|
128
|
-
if (
|
|
139
|
+
if (C(t)) return t.map(e => g(l, e, i, r));
|
|
129
140
|
if (a(t)) {
|
|
130
141
|
var o, s = {};
|
|
131
|
-
for (o in t) s[o] =
|
|
142
|
+
for (o in t) s[o] = g(l, o, i, r);
|
|
132
143
|
return s;
|
|
133
144
|
}
|
|
134
|
-
return
|
|
145
|
+
return g(l, t, i, r);
|
|
135
146
|
}
|
|
136
147
|
|
|
137
148
|
export {
|
|
138
|
-
|
|
149
|
+
m as QyFile
|
|
139
150
|
};
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import {
|
|
2
2
|
isNotNullObj as a,
|
|
3
|
-
arrayLast as t,
|
|
4
3
|
trimArrayTail as g,
|
|
5
4
|
isSimpleType as h,
|
|
6
5
|
SpecialOperators as r
|
|
@@ -8,15 +7,15 @@ import {
|
|
|
8
7
|
|
|
9
8
|
let p = Array.isArray, {
|
|
10
9
|
$del: w,
|
|
11
|
-
$rpl:
|
|
12
|
-
$ext:
|
|
10
|
+
$rpl: m,
|
|
11
|
+
$ext: y
|
|
13
12
|
} = r;
|
|
14
13
|
|
|
15
14
|
function i(r, n) {
|
|
16
15
|
if (null == n) return r;
|
|
17
16
|
if (n !== w) {
|
|
18
17
|
if (h(n)) return n;
|
|
19
|
-
var l = n[
|
|
18
|
+
var l = n[m];
|
|
20
19
|
if (null != l) return l;
|
|
21
20
|
if (null == r || h(r)) return n;
|
|
22
21
|
if (r != n) {
|
|
@@ -32,11 +31,11 @@ function i(r, n) {
|
|
|
32
31
|
|
|
33
32
|
function f(r, n) {
|
|
34
33
|
if (n == w) return w;
|
|
35
|
-
if (null != n[
|
|
36
|
-
var l = r[
|
|
37
|
-
if (null != l) r[
|
|
34
|
+
if (null != n[m]) return n;
|
|
35
|
+
var l = r[m];
|
|
36
|
+
if (null != l) r[m] = i(l, n); else {
|
|
38
37
|
if (r == w) return {
|
|
39
|
-
[
|
|
38
|
+
[m]: S(n)
|
|
40
39
|
};
|
|
41
40
|
if (h(r) || h(n)) return n;
|
|
42
41
|
for (var e in n) {
|
|
@@ -67,13 +66,14 @@ function u(r, n, l) {
|
|
|
67
66
|
var u = n[r];
|
|
68
67
|
a(e[u]) || (e[u] = {}), e = e[u];
|
|
69
68
|
}
|
|
70
|
-
|
|
69
|
+
var t = n.at(-1);
|
|
70
|
+
return void 0 === l ? delete e[t] : e[t] = l, r;
|
|
71
71
|
}
|
|
72
72
|
|
|
73
73
|
function l(r, n) {
|
|
74
|
-
if (null != n && null != (r =
|
|
75
|
-
if (!p(n)) return "" == n ? r :
|
|
76
|
-
if (0 != n.length && (1 != n.length || "" != n[0])) for (var l of n) if (null == (r =
|
|
74
|
+
if (null != n && null != (r = t(r))) {
|
|
75
|
+
if (!p(n)) return "" == n ? r : t(r[n]);
|
|
76
|
+
if (0 != n.length && (1 != n.length || "" != n[0])) for (var l of n) if (null == (r = t(r[l]))) return;
|
|
77
77
|
return r;
|
|
78
78
|
}
|
|
79
79
|
}
|
|
@@ -83,9 +83,9 @@ function S(r, n = !0, l = !1) {
|
|
|
83
83
|
if (e instanceof Date) return e.toISOString();
|
|
84
84
|
if (!a(e)) return (t ? void 0 === e : null == e) || u && e === w ? void 0 : e;
|
|
85
85
|
if (u) {
|
|
86
|
-
let r = e[
|
|
86
|
+
let r = e[m];
|
|
87
87
|
if (null != r) return l(r, u, t);
|
|
88
|
-
let n = e[
|
|
88
|
+
let n = e[y];
|
|
89
89
|
if (null != n) return l(p(n) ? n : [ n ], u, t);
|
|
90
90
|
}
|
|
91
91
|
let n = p(e);
|
|
@@ -112,16 +112,16 @@ function A(n, l, e, u, t) {
|
|
|
112
112
|
if (null == l) return n;
|
|
113
113
|
if (l !== w) {
|
|
114
114
|
if (null == n || h(n) || h(l)) return O(n, l, e, t);
|
|
115
|
-
var i = l[
|
|
115
|
+
var i = l[m];
|
|
116
116
|
if (null != i) return O(n, i, e, t);
|
|
117
|
-
let r = l[
|
|
117
|
+
let r = l[y];
|
|
118
118
|
if (null != r) return p(r) || (r = [ r ]), (p(n) ? (n, l, r, e) => {
|
|
119
119
|
l = S(l);
|
|
120
120
|
var u = {};
|
|
121
121
|
for (let r = 0; r < l.length; ++r) {
|
|
122
122
|
var t = l[r];
|
|
123
123
|
null != t && (u[r + n.length] = h(t) ? t : {
|
|
124
|
-
[
|
|
124
|
+
[m]: t
|
|
125
125
|
});
|
|
126
126
|
}
|
|
127
127
|
return $(e, r, n, u), n.concat(l);
|
|
@@ -144,9 +144,9 @@ function A(n, l, e, u, t) {
|
|
|
144
144
|
function O(r, n, l, e) {
|
|
145
145
|
n = S(n);
|
|
146
146
|
return r === n ? r : null != n ? (null == r ? $(e, l, 0 == l.length ? void 0 : null, h(n) ? n : {
|
|
147
|
-
[
|
|
147
|
+
[m]: n
|
|
148
148
|
}) : $(e, l, r, h(r) ? n : {
|
|
149
|
-
[
|
|
149
|
+
[m]: n
|
|
150
150
|
}), n) : void $(e, l, r, w);
|
|
151
151
|
}
|
|
152
152
|
|
|
@@ -154,9 +154,9 @@ function $(r, n, l, e) {
|
|
|
154
154
|
r.oldValue = u(r.oldValue, n, l), r.newValue = u(r.newValue, n, e);
|
|
155
155
|
}
|
|
156
156
|
|
|
157
|
-
function
|
|
157
|
+
function t(r) {
|
|
158
158
|
if (null != r && r != w) {
|
|
159
|
-
for (;null != r[
|
|
159
|
+
for (;null != r[m]; ) if ((r = r[m]) == w) return;
|
|
160
160
|
return r;
|
|
161
161
|
}
|
|
162
162
|
}
|
package/src/QyItem.d.ts
CHANGED
package/src/QyItem.js
CHANGED
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
SpecialFilePaths as t
|
|
4
4
|
} from "./QyUtils.js";
|
|
5
5
|
|
|
6
|
-
let
|
|
6
|
+
let r = t.HiddenFolderName;
|
|
7
7
|
|
|
8
8
|
class e {
|
|
9
9
|
name;
|
|
@@ -11,38 +11,38 @@ class e {
|
|
|
11
11
|
flagInt;
|
|
12
12
|
constructor(t, e = !1, a) {
|
|
13
13
|
this.name = t.toString(), this.parentDir = a, this.flagInt = 0, this._created = e,
|
|
14
|
-
a && (a.name ==
|
|
14
|
+
a && (a.name == r || a.underHiddenFolder) && (this.flagInt |= 2);
|
|
15
15
|
}
|
|
16
16
|
get qyCache() {
|
|
17
17
|
var t = this.parentDir;
|
|
18
18
|
return t ? t.qyCache : this._qyCache;
|
|
19
19
|
}
|
|
20
20
|
get _created() {
|
|
21
|
-
return
|
|
21
|
+
return i(this, 1);
|
|
22
22
|
}
|
|
23
23
|
set _created(t) {
|
|
24
24
|
n(this, 1, t);
|
|
25
25
|
}
|
|
26
26
|
get subdirMapLoaded() {
|
|
27
|
-
return
|
|
27
|
+
return i(this, 4);
|
|
28
28
|
}
|
|
29
29
|
set subdirMapLoaded(t) {
|
|
30
30
|
n(this, 4, t);
|
|
31
31
|
}
|
|
32
32
|
get fileMapLoaded() {
|
|
33
|
-
return
|
|
33
|
+
return i(this, 8);
|
|
34
34
|
}
|
|
35
35
|
set fileMapLoaded(t) {
|
|
36
36
|
n(this, 8, t);
|
|
37
37
|
}
|
|
38
38
|
get fileContentLoaded() {
|
|
39
|
-
return
|
|
39
|
+
return i(this, 16);
|
|
40
40
|
}
|
|
41
41
|
set fileContentLoaded(t) {
|
|
42
42
|
n(this, 16, t);
|
|
43
43
|
}
|
|
44
44
|
get visited() {
|
|
45
|
-
return
|
|
45
|
+
return i(this, 32);
|
|
46
46
|
}
|
|
47
47
|
set visited(t) {
|
|
48
48
|
n(this, 32, t);
|
|
@@ -75,7 +75,7 @@ class e {
|
|
|
75
75
|
return !0;
|
|
76
76
|
}
|
|
77
77
|
get underHiddenFolder() {
|
|
78
|
-
return
|
|
78
|
+
return i(this, 2);
|
|
79
79
|
}
|
|
80
80
|
get parentList() {
|
|
81
81
|
if (null == this._parentList) {
|
|
@@ -96,9 +96,15 @@ class e {
|
|
|
96
96
|
return null == this._namePath && (this._namePath = [ ...this.parentNamePath, this.name ]),
|
|
97
97
|
this._namePath;
|
|
98
98
|
}
|
|
99
|
+
relativeNamePath(t) {
|
|
100
|
+
var e = [ this.name ];
|
|
101
|
+
let a = this.parentDir;
|
|
102
|
+
for (;a && a != t; ) e.push(a.name), a = a.parentDir;
|
|
103
|
+
if (a == t) return e.reverse();
|
|
104
|
+
}
|
|
99
105
|
}
|
|
100
106
|
|
|
101
|
-
function
|
|
107
|
+
function i(t, e) {
|
|
102
108
|
return 0 != (t.flagInt & e);
|
|
103
109
|
}
|
|
104
110
|
|
package/src/QyJsonSaver.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { QySaver } from "./QySaver.ts";
|
|
2
2
|
export declare class QyJsonSaver extends QySaver {
|
|
3
|
-
constructor(dataFolder: any, options
|
|
3
|
+
constructor(dataFolder: any, options?: any);
|
|
4
4
|
processAfterLoad(binData: any): any;
|
|
5
5
|
processBeforeSave(json: any): Buffer<any>;
|
|
6
6
|
}
|
package/src/QyJsonSaver.js
CHANGED
package/src/QyKVData.d.ts
CHANGED
|
@@ -10,20 +10,23 @@ export declare class QyKVData {
|
|
|
10
10
|
compactMaxChangeId: number;
|
|
11
11
|
snapshotSavedChangeId: number;
|
|
12
12
|
maxChangeId: number;
|
|
13
|
-
|
|
13
|
+
emptySnapshotNumVerList: any[];
|
|
14
14
|
isStopping: boolean;
|
|
15
15
|
qySnapshots: any;
|
|
16
16
|
aclKeyValueMap: any;
|
|
17
17
|
compactInterval: any;
|
|
18
18
|
unloadInterval: any;
|
|
19
|
+
qyExpire: any;
|
|
19
20
|
constructor(kvFolder: any, options: any, qyCache: any);
|
|
20
21
|
start(maxChangeId: any, loadedMaxAclNum: any, qySnapshots: any, aclKeyValueMap: any): this;
|
|
21
22
|
stop(): Promise<void>;
|
|
22
|
-
save(changeId: any,
|
|
23
|
+
save(changeId: any, cmdArgAsListChanges: any, syncList: any, needPromise: any): any;
|
|
23
24
|
increaseChangeId(): number;
|
|
24
25
|
decreaseChangeId(): void;
|
|
25
26
|
getValueSync(key: any): any;
|
|
26
27
|
removeKey(key: any): any;
|
|
27
28
|
onSnapshotSavedChangeId(snapshotSavedChangeId: any, pMOnlySnapshot?: any): void;
|
|
28
29
|
onCompactUpdates(compactUpdates: any): void;
|
|
30
|
+
monitorContentExpire(file: any, flattedAbsSecondObj: any): void;
|
|
31
|
+
unmonitorContentExpire(file: any, flattedDelObj: any): void;
|
|
29
32
|
}
|