datafolder 1.0.2 → 1.0.4
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 +34 -31
- package/index.js +1 -3
- package/package.json +5 -3
- package/sample.js +37 -37
- package/scripts/airbnb.js +10 -11
- package/scripts/airbnb2.js +10 -11
- package/scripts/airbnb2_queries.js +20 -22
- package/scripts/airbnb_queries.js +23 -22
- package/scripts/downloadFile.js +29 -31
- package/scripts/express.js +7 -5
- package/scripts/fastify.js +12 -11
- package/scripts/flights.js +9 -9
- package/scripts/flights2.js +9 -9
- package/scripts/flights2_queries.js +107 -105
- package/scripts/flights_queries.js +113 -109
- package/src/QyAcl.js +153 -152
- package/src/QyAclSaver.js +16 -10
- package/src/QyAclSaver_Worker.js +21 -15
- package/src/QyAclWriter.js +23 -13
- package/src/QyBatch.js +298 -263
- package/src/QyBinWriter.js +49 -37
- package/src/QyCD.js +13 -14
- package/src/QyCache.js +177 -140
- package/src/QyCompressor.js +71 -45
- package/src/QyCompressor_Worker.js +17 -9
- package/src/QyDB.js +67 -12
- package/src/QyDefaultOptions.js +13 -10
- package/src/QyDir.js +89 -53
- package/src/QyFetch.js +27 -24
- package/src/QyFile.js +89 -77
- package/src/QyFileContentUtils.js +129 -132
- package/src/QyFileLogger.js +63 -41
- package/src/QyIndex.js +175 -197
- package/src/QyIndexPropTree.js +25 -25
- package/src/QyIntersectNode.js +34 -31
- package/src/QyItem.js +54 -52
- package/src/QyJsonSaver.js +12 -6
- package/src/QyKVData.js +279 -245
- package/src/QyKVDataCleaner.js +12 -6
- package/src/QyKVDataCleaner_Worker.js +77 -59
- package/src/QyKVDataLoader.js +67 -46
- package/src/QyKVDataSaver.js +15 -9
- package/src/QyKVDataSaver_Worker.js +83 -60
- package/src/QyLogFileSaver.js +12 -6
- package/src/QyLogFileSaver_Worker.js +24 -14
- package/src/QyLogger.js +51 -40
- package/src/QyMessageWorker.js +43 -29
- package/src/QyMessager.js +74 -54
- package/src/QyMessager_Run.js +20 -7
- package/src/QyMod.js +15 -11
- package/src/QyOpRunner.js +58 -41
- package/src/QyQueue.js +35 -30
- package/src/QySaver.js +52 -29
- package/src/QySnapshotCompactor.js +15 -9
- package/src/QySnapshotCompactor_Worker.js +131 -110
- package/src/QySnapshotSaver.js +15 -9
- package/src/QySnapshotSaver_Worker.js +125 -110
- package/src/QySnapshots.js +264 -242
- package/src/QyStructure.js +35 -27
- package/src/QyTrigger.js +62 -55
- package/src/QyUnionNode.js +54 -56
- package/src/QyUtils.js +170 -158
- package/src/QyWorker.js +34 -20
- package/src/hackernews.js +63 -71
- package/src/rpc/getFileContent.js +7 -7
- package/src/rpc/getSubItems.js +12 -28
- package/src/rpc/queryFiles.js +2 -25
- package/src/simulate.js +85 -80
- package/src/simulate2.js +77 -78
- package/src/soc_pokec.js +44 -32
- package/static/datafolderui/QyStyledElement.js +12 -12
- package/static/datafolderui/QyUIFolderTree.js +20 -20
- package/static/datafolderui/QyUIUtils.js +8 -8
- package/static/datafolderui/explore-tree.js +31 -31
- package/static/datafolderui/folder-tree.js +2 -2
- package/static/datafolderui/hscrpt.js +9 -17
- package/static/datafolderui/json-view.js +3 -5
- package/static/datafolderui/kv-input.js +15 -15
- package/static/datafolderui/list-input.js +17 -17
- package/static/datafolderui/main-page.js +18 -18
- package/static/datafolderui/num-input.js +5 -5
- package/static/datafolderui/query-editor.js +6 -1
- package/static/datafolderui/querySelectorShadowRoot.js +15 -19
- package/static/datafolderui/resizable-input.js +18 -18
package/src/QyFile.js
CHANGED
|
@@ -1,19 +1,33 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
getContentKey,
|
|
5
|
-
isNotNullObj,
|
|
6
|
-
isSimpleType,
|
|
7
|
-
fromSingleName
|
|
8
|
-
} = require("./QyUtils.js"), getValByNamePath = require("./QyFileContentUtils.js").getValByNamePath, QyIndexPropTree = require("./QyIndexPropTree.js").QyIndexPropTree, isArray = Array.isArray, IndexPropPathsFileName = SpecialFilePaths.IndexPropPathsFileName, {
|
|
9
|
-
$spec,
|
|
10
|
-
$raw,
|
|
11
|
-
$clone
|
|
12
|
-
} = SpecialOperators;
|
|
1
|
+
import {
|
|
2
|
+
QyItem as e
|
|
3
|
+
} from "./QyItem.js";
|
|
13
4
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
5
|
+
import {
|
|
6
|
+
SpecialOperators as t,
|
|
7
|
+
SpecialFilePaths as n,
|
|
8
|
+
getContentKey as i,
|
|
9
|
+
isNotNullObj as a,
|
|
10
|
+
isSimpleType as C,
|
|
11
|
+
fromSingleName as s
|
|
12
|
+
} from "./QyUtils.js";
|
|
13
|
+
|
|
14
|
+
import {
|
|
15
|
+
getValByNamePath as r
|
|
16
|
+
} from "./QyFileContentUtils.js";
|
|
17
|
+
|
|
18
|
+
import {
|
|
19
|
+
QyIndexPropTree as f
|
|
20
|
+
} from "./QyIndexPropTree.js";
|
|
21
|
+
|
|
22
|
+
let d = Array.isArray, u = n.IndexPropPathsFileName, {
|
|
23
|
+
$spec: h,
|
|
24
|
+
$raw: c,
|
|
25
|
+
$clone: l
|
|
26
|
+
} = t;
|
|
27
|
+
|
|
28
|
+
class o extends e {
|
|
29
|
+
constructor(e, t, n) {
|
|
30
|
+
super(e, t, n), t && (++n._fileCount, ++n.fileMapChangeCount), this.cChangeId = 0;
|
|
17
31
|
}
|
|
18
32
|
get created() {
|
|
19
33
|
return this._created;
|
|
@@ -24,10 +38,13 @@ class QyFile extends QyItem {
|
|
|
24
38
|
++t.fileMapChangeCount);
|
|
25
39
|
}
|
|
26
40
|
get fileContentKey() {
|
|
27
|
-
return this._fileContentKey || (this._fileContentKey =
|
|
41
|
+
return this._fileContentKey || (this._fileContentKey = i(this.fullPathHash));
|
|
28
42
|
}
|
|
29
43
|
get fileContent() {
|
|
30
|
-
|
|
44
|
+
var e, t = this;
|
|
45
|
+
return t.created && null == t._fileContent && !t.fileContentLoaded && (t.fileContentLoaded = !0,
|
|
46
|
+
e = t.qyCache) && (t._fileContent = e.qyKVData.getValueSync(t.fileContentKey)),
|
|
47
|
+
this.visited = !0, this._fileContent;
|
|
31
48
|
}
|
|
32
49
|
set fileContent(e) {
|
|
33
50
|
this.visited = !0, this._fileContent = e;
|
|
@@ -36,15 +53,15 @@ class QyFile extends QyItem {
|
|
|
36
53
|
var {
|
|
37
54
|
created: e,
|
|
38
55
|
_qyIndexPropTree: t,
|
|
39
|
-
name:
|
|
40
|
-
fileContent:
|
|
56
|
+
name: n,
|
|
57
|
+
fileContent: i,
|
|
41
58
|
underHiddenFolder: r
|
|
42
59
|
} = this;
|
|
43
|
-
if (e && r &&
|
|
60
|
+
if (e && r && n == u) {
|
|
44
61
|
if (t) return t;
|
|
45
|
-
var l,
|
|
46
|
-
for (l in
|
|
47
|
-
return
|
|
62
|
+
var l, o = this._qyIndexPropTree = new f();
|
|
63
|
+
for (l in i) o.insert(s(l));
|
|
64
|
+
return o;
|
|
48
65
|
}
|
|
49
66
|
}
|
|
50
67
|
get isFile() {
|
|
@@ -52,7 +69,7 @@ class QyFile extends QyItem {
|
|
|
52
69
|
}
|
|
53
70
|
get contentAsText() {
|
|
54
71
|
var e = this.fileContent;
|
|
55
|
-
return null == e ? "" :
|
|
72
|
+
return null == e ? "" : a(e) ? JSON.stringify(e) : e.toString();
|
|
56
73
|
}
|
|
57
74
|
get clonedContent() {
|
|
58
75
|
return structuredClone(this.fileContent);
|
|
@@ -60,65 +77,60 @@ class QyFile extends QyItem {
|
|
|
60
77
|
setContent(e) {
|
|
61
78
|
this.fileContent = e;
|
|
62
79
|
}
|
|
63
|
-
view(e =
|
|
64
|
-
var
|
|
65
|
-
return null ==
|
|
80
|
+
view(e = l, t) {
|
|
81
|
+
var n = this.fileContent;
|
|
82
|
+
return null == n || C(n) ? n : function t(n, i, r, l) {
|
|
83
|
+
if (r === c) return i;
|
|
84
|
+
if (null == r) return;
|
|
85
|
+
if (C(r)) return r ? l ? i : structuredClone(i) : void 0;
|
|
86
|
+
let e = r.$link;
|
|
87
|
+
if (null != e) return y(n, i, e, r[h]);
|
|
88
|
+
if (C(i)) return i;
|
|
89
|
+
d(r) && (r = Object.fromEntries(r.filter(e => e).map(e => [ e, 1 ])));
|
|
90
|
+
let o = d(i) ? [] : {};
|
|
91
|
+
let {
|
|
92
|
+
$all: s,
|
|
93
|
+
"**": a
|
|
94
|
+
} = r;
|
|
95
|
+
if (s || a) for (var f in i) {
|
|
96
|
+
let e = r[f] ?? s ?? a;
|
|
97
|
+
e && (o[f] = t(n, i[f], e, l));
|
|
98
|
+
} else for (var u in r) {
|
|
99
|
+
let e = r[u];
|
|
100
|
+
e && (o[u] = t(n, i[u], e, l));
|
|
101
|
+
}
|
|
102
|
+
return o;
|
|
103
|
+
}(this, n, e, t);
|
|
66
104
|
}
|
|
67
|
-
|
|
68
|
-
var
|
|
69
|
-
if (t) return e =
|
|
70
|
-
n = t.$link, null != n ? this._link(e, n, t[$spec], i) : i || t === $raw ? e : structuredClone(e);
|
|
105
|
+
prop(e, t = l, n) {
|
|
106
|
+
var i;
|
|
107
|
+
if (t) return e = r(this.fileContent, d(e) ? e : [ e ]), i = t.$link, null != i ? y(this, e, i, t[h], n) : n || t === c ? e : structuredClone(e);
|
|
71
108
|
}
|
|
72
109
|
unloadFileContent() {
|
|
73
110
|
this.created && this.fileContentLoaded && null != this._fileContent && (this._fileContent = void 0,
|
|
74
111
|
this.fileContentLoaded = !1);
|
|
75
112
|
}
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
let r = this.qyCache.getDir(t);
|
|
83
|
-
if (isArray(e)) return e.map(e => this._getLinkedFileContent(r, e, i, n));
|
|
84
|
-
if (isNotNullObj(e)) {
|
|
85
|
-
var l, s = {};
|
|
86
|
-
for (l in e) s[l] = this._getLinkedFileContent(r, l, i, n);
|
|
87
|
-
return s;
|
|
88
|
-
}
|
|
89
|
-
return this._getLinkedFileContent(r, e, i, n);
|
|
90
|
-
}
|
|
91
|
-
_getLinkedFileContent(e, t, i, n) {
|
|
92
|
-
if (e) {
|
|
93
|
-
e = e.getFile(t);
|
|
94
|
-
if (e) return e.view(i, n);
|
|
95
|
-
}
|
|
96
|
-
return t;
|
|
97
|
-
}
|
|
98
|
-
_viewBySpec(e, t, i) {
|
|
99
|
-
if (t === $raw) return e;
|
|
100
|
-
if (null != t) {
|
|
101
|
-
if (isSimpleType(t)) return t ? i ? e : structuredClone(e) : void 0;
|
|
102
|
-
var n = t.$link;
|
|
103
|
-
if (null != n) return this._link(e, n, t[$spec]);
|
|
104
|
-
if (isSimpleType(e)) return e;
|
|
105
|
-
isArray(t) && (t = Object.fromEntries(t.filter(e => e).map(e => [ e, 1 ])));
|
|
106
|
-
var r = isArray(e) ? [] : {}, {
|
|
107
|
-
$all: l,
|
|
108
|
-
"**": s
|
|
109
|
-
} = t;
|
|
110
|
-
if (l || s) for (var o in e) {
|
|
111
|
-
var a = t[o] ?? l ?? s;
|
|
112
|
-
a && (r[o] = this._viewBySpec(e[o], a, i));
|
|
113
|
-
} else for (var h in t) {
|
|
114
|
-
var u = t[h];
|
|
115
|
-
u && (r[h] = this._viewBySpec(e[h], u, i));
|
|
116
|
-
}
|
|
117
|
-
return r;
|
|
118
|
-
}
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
function p(e, t, n, i) {
|
|
116
|
+
if (e) {
|
|
117
|
+
e = e.getFile(t);
|
|
118
|
+
if (e) return e.view(n, i);
|
|
119
119
|
}
|
|
120
|
+
return t;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
function y(e, t, n, i, r) {
|
|
124
|
+
let l = e.qyCache.getDir(n);
|
|
125
|
+
if (d(t)) return t.map(e => p(l, e, i, r));
|
|
126
|
+
if (a(t)) {
|
|
127
|
+
var o, s = {};
|
|
128
|
+
for (o in t) s[o] = p(l, o, i, r);
|
|
129
|
+
return s;
|
|
130
|
+
}
|
|
131
|
+
return p(l, t, i, r);
|
|
120
132
|
}
|
|
121
133
|
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
}
|
|
134
|
+
export {
|
|
135
|
+
o as QyFile
|
|
136
|
+
};
|
|
@@ -1,175 +1,172 @@
|
|
|
1
|
-
|
|
2
|
-
isNotNullObj,
|
|
3
|
-
arrayLast,
|
|
4
|
-
trimArrayTail,
|
|
5
|
-
isSimpleType,
|
|
6
|
-
SpecialOperators
|
|
7
|
-
}
|
|
8
|
-
$del,
|
|
9
|
-
$rpl,
|
|
10
|
-
$ext
|
|
11
|
-
} = SpecialOperators;
|
|
1
|
+
import {
|
|
2
|
+
isNotNullObj as f,
|
|
3
|
+
arrayLast as u,
|
|
4
|
+
trimArrayTail as V,
|
|
5
|
+
isSimpleType as h,
|
|
6
|
+
SpecialOperators as n
|
|
7
|
+
} from "./QyUtils.js";
|
|
12
8
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
9
|
+
let m = Array.isArray, {
|
|
10
|
+
$del: y,
|
|
11
|
+
$rpl: p,
|
|
12
|
+
$ext: w
|
|
13
|
+
} = n;
|
|
14
|
+
|
|
15
|
+
function i(n, e) {
|
|
16
|
+
if (null == e) return n;
|
|
17
|
+
if (e !== y) {
|
|
18
|
+
if (h(e)) return e;
|
|
19
|
+
var r = e[p];
|
|
18
20
|
if (null != r) return r;
|
|
19
|
-
if (null ==
|
|
20
|
-
if (
|
|
21
|
-
var l, t =
|
|
22
|
-
for (l in
|
|
23
|
-
var
|
|
24
|
-
null ==
|
|
21
|
+
if (null == n || h(n)) return e;
|
|
22
|
+
if (n != e) {
|
|
23
|
+
var l, t = m(n);
|
|
24
|
+
for (l in e) {
|
|
25
|
+
var u = i(n[l], e[l]);
|
|
26
|
+
null == u ? (delete n[l], t && V(n)) : n[l] = u;
|
|
25
27
|
}
|
|
26
28
|
}
|
|
27
|
-
return
|
|
29
|
+
return n;
|
|
28
30
|
}
|
|
29
31
|
}
|
|
30
32
|
|
|
31
|
-
function
|
|
32
|
-
if (
|
|
33
|
-
if (null !=
|
|
34
|
-
var r =
|
|
35
|
-
if (null != r)
|
|
36
|
-
if (
|
|
37
|
-
[
|
|
33
|
+
function a(n, e) {
|
|
34
|
+
if (e == y) return y;
|
|
35
|
+
if (null != e[p]) return e;
|
|
36
|
+
var r = n[p];
|
|
37
|
+
if (null != r) n[p] = i(r, e); else {
|
|
38
|
+
if (n == y) return {
|
|
39
|
+
[p]: S(e)
|
|
38
40
|
};
|
|
39
|
-
if (
|
|
40
|
-
for (var l in
|
|
41
|
-
var t =
|
|
42
|
-
|
|
41
|
+
if (h(n) || h(e)) return e;
|
|
42
|
+
for (var l in e) {
|
|
43
|
+
var t = e[l], u = n[l];
|
|
44
|
+
n[l] = null == u ? t : a(u, t);
|
|
43
45
|
}
|
|
44
46
|
}
|
|
45
|
-
return
|
|
47
|
+
return n;
|
|
46
48
|
}
|
|
47
49
|
|
|
48
|
-
function
|
|
50
|
+
function e(n, e) {
|
|
49
51
|
let r = {
|
|
50
52
|
oldValue: {},
|
|
51
53
|
newValue: {}
|
|
52
54
|
};
|
|
53
|
-
|
|
54
|
-
return r.oldValue =
|
|
55
|
+
n = C(n, e, [], 0, r);
|
|
56
|
+
return r.oldValue = S(r.oldValue, !0, !0), r.newValue = S(r.newValue, !1, !1),
|
|
55
57
|
{
|
|
56
|
-
merged:
|
|
58
|
+
merged: n,
|
|
57
59
|
delta: r = r.oldValue || r.newValue ? r : void 0
|
|
58
60
|
};
|
|
59
61
|
}
|
|
60
62
|
|
|
61
|
-
function
|
|
62
|
-
if (
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
63
|
+
function C(e, r, l, t, u) {
|
|
64
|
+
if (null == r) return e;
|
|
65
|
+
if (r !== y) {
|
|
66
|
+
if (null == e || h(e) || h(r)) return A(e, r, l, u);
|
|
67
|
+
var i = r[p];
|
|
68
|
+
if (null != i) return A(e, i, l, u);
|
|
69
|
+
let n = r[w];
|
|
70
|
+
if (null != n) return m(n) || (n = [ n ]), (m(e) ? (e, r, n, l) => {
|
|
71
|
+
r = S(r);
|
|
72
|
+
var t = {};
|
|
73
|
+
for (let n = 0; n < r.length; ++n) {
|
|
74
|
+
var u = r[n];
|
|
75
|
+
null != u && (t[n + e.length] = h(u) ? u : {
|
|
76
|
+
[p]: u
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
return N(l, n, e, t), e.concat(r);
|
|
80
|
+
} : A)(e, n, l, u);
|
|
81
|
+
if (m(e) && !m(r) || !m(e) && m(r)) return A(e, r, l, u);
|
|
82
|
+
var a = e, f = r, o = l, v = t, s = u;
|
|
83
|
+
if (a != f) {
|
|
84
|
+
var d, c = m(a);
|
|
85
|
+
for (d in f) {
|
|
86
|
+
o[v] = d, o.length = v + 1;
|
|
87
|
+
var g = C(a[d], f[d], o, v + 1, s);
|
|
88
|
+
null == g ? (delete a[d], c && V(a)) : a[d] = g;
|
|
89
|
+
}
|
|
68
90
|
}
|
|
91
|
+
return a;
|
|
69
92
|
}
|
|
70
|
-
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
function _mergeContentAndGenDelta_rec(n, r, l, t, a) {
|
|
74
|
-
if (null == r) return n;
|
|
75
|
-
if (r !== $del) {
|
|
76
|
-
if (null == n || isSimpleType(n) || isSimpleType(r)) return _genRpl(n, r, l, a);
|
|
77
|
-
var i = r[$rpl];
|
|
78
|
-
if (null != i) return _genRpl(n, i, l, a);
|
|
79
|
-
let e = r[$ext];
|
|
80
|
-
return null != e ? (isArray(e) || (e = [ e ]), (isArray(n) ? _genExt : _genRpl)(n, e, l, a)) : isArray(n) && !isArray(r) || !isArray(n) && isArray(r) ? _genRpl(n, r, l, a) : _mergeArrayOrObj(n, r, l, t, a);
|
|
81
|
-
}
|
|
82
|
-
null != n && setDeltaValues(a, l, n, $del);
|
|
93
|
+
null != e && N(u, l, e, y);
|
|
83
94
|
}
|
|
84
95
|
|
|
85
|
-
function
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
});
|
|
93
|
-
}
|
|
94
|
-
return setDeltaValues(l, e, n, t), n.concat(r);
|
|
96
|
+
function A(n, e, r, l) {
|
|
97
|
+
e = S(e);
|
|
98
|
+
return n === e ? n : null != e ? (null == n ? N(l, r, 0 == r.length ? void 0 : null, h(e) ? e : {
|
|
99
|
+
[p]: e
|
|
100
|
+
}) : N(l, r, n, h(n) ? e : {
|
|
101
|
+
[p]: e
|
|
102
|
+
}), e) : void N(l, r, n, y);
|
|
95
103
|
}
|
|
96
104
|
|
|
97
|
-
function
|
|
98
|
-
n =
|
|
99
|
-
return e === n ? e : null != n ? (null == e ? setDeltaValues(l, r, 0 == r.length ? void 0 : null, isSimpleType(n) ? n : {
|
|
100
|
-
[$rpl]: n
|
|
101
|
-
}) : setDeltaValues(l, r, e, isSimpleType(e) ? n : {
|
|
102
|
-
[$rpl]: n
|
|
103
|
-
}), n) : void setDeltaValues(l, r, e, $del);
|
|
105
|
+
function N(n, e, r, l) {
|
|
106
|
+
n.oldValue = t(n.oldValue, e, r), n.newValue = t(n.newValue, e, l);
|
|
104
107
|
}
|
|
105
108
|
|
|
106
|
-
function
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
let l = e;
|
|
113
|
-
for (let e = 0; e < n.length - 1; ++e) {
|
|
114
|
-
var t = n[e];
|
|
115
|
-
isNotNullObj(l[t]) || (l[t] = {}), l = l[t];
|
|
109
|
+
function t(n, e, r) {
|
|
110
|
+
if (!e || 0 == e.length) return r;
|
|
111
|
+
let l = n;
|
|
112
|
+
for (let n = 0; n < e.length - 1; ++n) {
|
|
113
|
+
var t = e[n];
|
|
114
|
+
f(l[t]) || (l[t] = {}), l = l[t];
|
|
116
115
|
}
|
|
117
|
-
return l[
|
|
116
|
+
return l[u(e)] = r, n;
|
|
118
117
|
}
|
|
119
118
|
|
|
120
|
-
function
|
|
121
|
-
if (null !=
|
|
122
|
-
if (!
|
|
123
|
-
if (0 !=
|
|
124
|
-
return
|
|
119
|
+
function r(n, e) {
|
|
120
|
+
if (null != e && null != (n = l(n))) {
|
|
121
|
+
if (!m(e)) return "" == e ? n : l(n[e]);
|
|
122
|
+
if (0 != e.length && (1 != e.length || "" != e[0])) for (var r of e) if (null == (n = l(n[r]))) return;
|
|
123
|
+
return n;
|
|
125
124
|
}
|
|
126
125
|
}
|
|
127
126
|
|
|
128
|
-
function
|
|
129
|
-
if (null !=
|
|
130
|
-
for (;null !=
|
|
131
|
-
return
|
|
127
|
+
function l(n) {
|
|
128
|
+
if (null != n && n != y) {
|
|
129
|
+
for (;null != n[p]; ) if ((n = n[p]) == y) return;
|
|
130
|
+
return n;
|
|
132
131
|
}
|
|
133
132
|
}
|
|
134
133
|
|
|
135
|
-
function
|
|
136
|
-
return
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
}
|
|
155
|
-
return i ? void 0 : e;
|
|
134
|
+
function S(n, e = !0, r = !1) {
|
|
135
|
+
return function r(l, t, u) {
|
|
136
|
+
if (l instanceof Date) return l.toISOString();
|
|
137
|
+
if (!f(l)) return (u ? void 0 === l : null == l) || t && l === y ? void 0 : l;
|
|
138
|
+
if (t) {
|
|
139
|
+
let n = l[p];
|
|
140
|
+
if (null != n) return r(n, t, u);
|
|
141
|
+
let e = l[w];
|
|
142
|
+
if (null != e) return r(m(e) ? e : [ e ], t, u);
|
|
143
|
+
}
|
|
144
|
+
let e = m(l);
|
|
145
|
+
let i = !0;
|
|
146
|
+
for (var a in l) {
|
|
147
|
+
let n = r(l[a], t, u);
|
|
148
|
+
(u ? void 0 === n : null == n) ? (delete l[a], e && V(l)) : (l[a] = n,
|
|
149
|
+
i = !1);
|
|
150
|
+
}
|
|
151
|
+
return i ? void 0 : l;
|
|
152
|
+
}(n, e, r);
|
|
156
153
|
}
|
|
157
154
|
|
|
158
|
-
function
|
|
159
|
-
if (
|
|
160
|
-
for (var
|
|
161
|
-
var r =
|
|
162
|
-
r ? e
|
|
155
|
+
function o(n) {
|
|
156
|
+
if (h(n)) return n ? y : void 0;
|
|
157
|
+
for (var e in n) {
|
|
158
|
+
var r = o(n[e]);
|
|
159
|
+
r ? n[e] = r : delete n[e];
|
|
163
160
|
}
|
|
164
|
-
return
|
|
161
|
+
return m(n) && V(n), n;
|
|
165
162
|
}
|
|
166
163
|
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
}
|
|
164
|
+
export {
|
|
165
|
+
i as mergeContent,
|
|
166
|
+
e as mergeContentAndGenDelta,
|
|
167
|
+
a as mergeContentChanges,
|
|
168
|
+
t as setValByNamePath,
|
|
169
|
+
r as getValByNamePath,
|
|
170
|
+
S as cleanContent,
|
|
171
|
+
o as objToDelMarks
|
|
172
|
+
};
|
package/src/QyFileLogger.js
CHANGED
|
@@ -1,58 +1,80 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
1
|
+
import {
|
|
2
|
+
join as a
|
|
3
|
+
} from "node:path";
|
|
4
|
+
|
|
5
|
+
import {
|
|
6
|
+
setFileConsoleDateDirPath as e,
|
|
7
|
+
closeFileConsole as t
|
|
8
|
+
} from "./QyLogger.js";
|
|
9
|
+
|
|
10
|
+
import {
|
|
11
|
+
ensureDir as i
|
|
12
|
+
} from "./QyUtils.js";
|
|
13
|
+
|
|
14
|
+
import {
|
|
15
|
+
getDefaultOptions as s
|
|
16
|
+
} from "./QyDefaultOptions.js";
|
|
17
|
+
|
|
18
|
+
import {
|
|
19
|
+
QyOpRunner as o
|
|
20
|
+
} from "./QyOpRunner.js";
|
|
21
|
+
|
|
22
|
+
import {
|
|
23
|
+
QyLogFileSaver as r
|
|
24
|
+
} from "./QyLogFileSaver.js";
|
|
25
|
+
|
|
26
|
+
class n extends o {
|
|
27
|
+
constructor(t, e) {
|
|
28
|
+
(e = {
|
|
29
|
+
...s("QyFileLogger"),
|
|
30
|
+
...e
|
|
31
|
+
}).append = !e.clearLogAtStart, super(e, [ "stop" ], [ "startFileConsole", "switchFileConsole" ]),
|
|
12
32
|
Object.assign(this, {
|
|
13
|
-
logFileFolder:
|
|
14
|
-
qyLogFileSaver: new
|
|
33
|
+
logFileFolder: t,
|
|
34
|
+
qyLogFileSaver: new r(this, e)
|
|
15
35
|
});
|
|
16
36
|
}
|
|
17
|
-
save(
|
|
18
|
-
return this.qyLogFileSaver.save(
|
|
37
|
+
save(t, e) {
|
|
38
|
+
return this.qyLogFileSaver.save(t, e);
|
|
19
39
|
}
|
|
20
40
|
getDateDirPath() {
|
|
21
41
|
return this.dateDirPath;
|
|
22
42
|
}
|
|
23
43
|
async start() {
|
|
24
|
-
var
|
|
25
|
-
this.dateDirPath = this
|
|
26
|
-
this.qyLogFileSaver.start(
|
|
44
|
+
var t = new Date(), t = (this.timeoutRef = setTimeout(this.switch.bind(this), g(t)),
|
|
45
|
+
this.dateDirPath = h(this, t));
|
|
46
|
+
this.qyLogFileSaver.start(a(t, "change.txt")), await this.startFileConsole(t);
|
|
27
47
|
}
|
|
28
48
|
switch() {
|
|
29
|
-
var
|
|
30
|
-
this
|
|
31
|
-
return this.dateDirPath !=
|
|
32
|
-
this.switchFileConsole(
|
|
49
|
+
var t = new Date(), t = (this.timeoutRef = setTimeout(this.switch.bind(this), g(t)),
|
|
50
|
+
h(this, t));
|
|
51
|
+
return this.dateDirPath != t && (this.dateDirPath = t, this.qyLogFileSaver.switch(a(t, "change.txt")),
|
|
52
|
+
this.switchFileConsole(t)), this;
|
|
33
53
|
}
|
|
34
|
-
async _op_startFileConsole(
|
|
35
|
-
await
|
|
54
|
+
async _op_startFileConsole(t) {
|
|
55
|
+
await i(t), e(t, this.options.clearLogAtStart);
|
|
36
56
|
}
|
|
37
57
|
async _op_stop() {
|
|
38
|
-
clearTimeout(this.timeoutRef), this.timeoutRef = void 0,
|
|
39
|
-
await this.qyLogFileSaver.stop();
|
|
40
|
-
}
|
|
41
|
-
async _op_switchFileConsole(e) {
|
|
42
|
-
await ensureDir(e), setFileConsoleDateDirPath(e, this.options.clearLogAtStart);
|
|
43
|
-
}
|
|
44
|
-
_genDateDirPath(e) {
|
|
45
|
-
var t = e.getUTCFullYear(), i = e.getUTCMonth() + 1, s = e.getUTCDate(), e = e.getUTCHours();
|
|
46
|
-
return path.join(this.logFileFolder, t.toString(), this._patch(i), this._patch(s), this._patch(e));
|
|
58
|
+
clearTimeout(this.timeoutRef), this.timeoutRef = void 0, t(), await this.qyLogFileSaver.stop();
|
|
47
59
|
}
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
}
|
|
51
|
-
_getRemainingMilliSeconds(e) {
|
|
52
|
-
return 1e3 * (60 * (60 - e.getUTCMinutes()) - e.getUTCSeconds());
|
|
60
|
+
async _op_switchFileConsole(t) {
|
|
61
|
+
await i(t), e(t, this.options.clearLogAtStart);
|
|
53
62
|
}
|
|
54
63
|
}
|
|
55
64
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
65
|
+
function h(t, e) {
|
|
66
|
+
var i = e.getUTCFullYear(), s = e.getUTCMonth() + 1, o = e.getUTCDate(), e = e.getUTCHours();
|
|
67
|
+
return a(t.logFileFolder, i.toString(), l(s), l(o), l(e));
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
function l(t) {
|
|
71
|
+
return t.toString().padStart(2, "0");
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
function g(t) {
|
|
75
|
+
return 1e3 * (60 * (60 - t.getUTCMinutes()) - t.getUTCSeconds());
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
export {
|
|
79
|
+
n as QyFileLogger
|
|
80
|
+
};
|