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