datafolder 1.0.4 → 1.0.6

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 (70) hide show
  1. package/README.md +13 -1
  2. package/data/sampleDataFolder/qykv/history/acl/1_acl.txt +1 -0
  3. package/data/sampleDataFolder/qykv/history/acl/2_acl.txt +1 -0
  4. package/data/sampleDataFolder/qykv/history/acl/3_acl.txt +1 -0
  5. package/data/sampleDataFolder/qykv/history/acl/4_acl.txt +1 -0
  6. package/data/sampleDataFolder/qykv/history/acl/5_acl.txt +1 -0
  7. package/data/sampleDataFolder/qykv/snapshot/1/1_pM.txt +0 -0
  8. package/data/sampleDataFolder/qykv/snapshot/1/1_prefixPM.txt +0 -0
  9. package/data/sampleDataFolder/qykv/snapshot/1/1_vL.txt +10 -0
  10. package/data/sampleDataFolder/qykv/snapshot/2/1_pM.txt +0 -0
  11. package/data/sampleDataFolder/qykv/snapshot/2/1_prefixPM.txt +0 -0
  12. package/data/sampleDataFolder/qykv/snapshot/2/1_vL.txt +1 -0
  13. package/data/sampleDataFolder/qykv/snapshot/3/1_pM.txt +0 -0
  14. package/data/sampleDataFolder/qykv/snapshot/3/1_prefixPM.txt +0 -0
  15. package/data/sampleDataFolder/qykv/snapshot/3/1_vL.txt +1 -0
  16. package/data/sampleDataFolder/qykv/snapshot/4/1_pM.txt +0 -0
  17. package/data/sampleDataFolder/qykv/snapshot/4/1_prefixPM.txt +0 -0
  18. package/data/sampleDataFolder/qykv/snapshot/4/1_vL.txt +1 -0
  19. package/data/sampleDataFolder/qykv/snapshot/4/2_pM.txt +0 -0
  20. package/data/sampleDataFolder/qykv/snapshot/4/2_prefixPM.txt +0 -0
  21. package/data/sampleDataFolder/qykv/snapshot/4/2_vL.txt +9 -0
  22. package/data/sampleDataFolder/qykv/snapshot/5/1_pM.txt +0 -0
  23. package/data/sampleDataFolder/qykv/snapshot/5/1_prefixPM.txt +0 -0
  24. package/data/sampleDataFolder/qykv/snapshot/5/1_vL.txt +55 -0
  25. package/data/sampleDataFolder/qykv/snapshot/info/1.json +1 -0
  26. package/data/sampleDataFolder/qykv/snapshot/info/2.json +1 -0
  27. package/data/sampleDataFolder/qykv/snapshot/info/3.json +1 -0
  28. package/data/sampleDataFolder/qykv/snapshot/info/4.json +1 -0
  29. package/data/sampleDataFolder/qykv/snapshot/info/5.json +1 -0
  30. package/data/sampleDataFolder/qylog/2026/02/15/08/change.txt +58 -0
  31. package/data/sampleDataFolder/qylog/2026/02/15/08/stderr.txt +11 -0
  32. package/data/sampleDataFolder/qylog/2026/02/15/08/stdout.txt +36 -0
  33. package/package.json +1 -1
  34. package/sample.js +19 -19
  35. package/src/QyAcl.js +44 -44
  36. package/src/QyAclSaver_Worker.js +2 -2
  37. package/src/QyAclWriter.js +1 -1
  38. package/src/QyBatch.js +1 -3
  39. package/src/QyBinWriter.js +65 -66
  40. package/src/QyCD.js +63 -27
  41. package/src/QyCache.js +33 -33
  42. package/src/QyDB.js +4 -30
  43. package/src/QyDefaultOptions.js +2 -1
  44. package/src/QyFetch.js +4 -22
  45. package/src/QyFileLogger.js +2 -2
  46. package/src/QyKVData.js +159 -183
  47. package/src/QyKVDataCleaner_Worker.js +15 -14
  48. package/src/QyKVDataSaver_Worker.js +16 -16
  49. package/src/QyLogFileSaver.js +1 -1
  50. package/src/QyLogFileSaver_Worker.js +2 -2
  51. package/src/QyMod.js +7 -7
  52. package/src/QyOpRunner.js +19 -16
  53. package/src/QySnapshotCompactor_Worker.js +37 -36
  54. package/src/QySnapshotSaver_Worker.js +2 -2
  55. package/src/QySnapshots.js +141 -139
  56. package/src/QyUnionNode.js +2 -2
  57. package/src/rpc/evalCode.js +4 -4
  58. package/src/rpc/getFileContent.js +4 -4
  59. package/src/rpc/getSubItems.js +12 -12
  60. package/src/rpc/queryFiles.js +1 -1
  61. package/static/codemirror.bundle/editor.bundle.js +27906 -0
  62. package/static/datafolderui/QyUIFolderTree.js +121 -145
  63. package/static/datafolderui/QyUIUtils.js +9 -4
  64. package/static/datafolderui/code-mirror.js +35 -0
  65. package/static/datafolderui/display-tree.js +52 -86
  66. package/static/datafolderui/explore-tree.js +66 -81
  67. package/static/datafolderui/index.css +7 -0
  68. package/static/datafolderui/index.html +1 -0
  69. package/static/datafolderui/main-page.js +34 -55
  70. package/static/datafolderui/query-editor.js +178 -198
@@ -7,24 +7,26 @@ import {
7
7
  } from "./QyOpRunner.js";
8
8
 
9
9
  import {
10
- ensureParentDir as r,
11
- getSize as n,
12
- getSizeStr as d,
13
- sleep as _,
14
- setPromise as o,
15
- toBuffer as v
10
+ ensureParentDir as n,
11
+ getSize as o,
12
+ getSizeStr as g,
13
+ sleep as v,
14
+ setPromise as l,
15
+ toBuffer as _
16
16
  } from "./QyUtils.js";
17
17
 
18
18
  import {
19
19
  getDefaultOptions as a
20
20
  } from "./QyDefaultOptions.js";
21
21
 
22
+ let h = Array.isArray;
23
+
22
24
  class t extends e {
23
25
  constructor(e, t) {
24
26
  super({
25
27
  ...a("QyBinWriter"),
26
28
  ...e
27
- }, [ "start", "stop" ]), this.filePath = t, this._resetParams();
29
+ }), this.filePath = t, p(this);
28
30
  }
29
31
  getFilePath() {
30
32
  return this.filePath;
@@ -34,11 +36,11 @@ class t extends e {
34
36
  }
35
37
  save(e, t, a) {
36
38
  null == t && (t = e, e = 0);
37
- var i, s = this.lastOp;
38
- return "_op_save" === s?.opFunName ? (i = s.args, i[0] = e, i[1].push(t),
39
- a && o(s), s.promise) : (i = {
39
+ var i, r = this.lastOp;
40
+ return "_op_save" === r?.opFunName ? (i = r.args, i[0] = e, i = i[1], h(t) ? i.push(...t) : i.push(t),
41
+ a && l(r), r.promise) : (i = {
40
42
  opFunName: "_op_save",
41
- args: [ e, [ t ] ]
43
+ args: [ e, h(t) ? t : [ t ] ]
42
44
  }, a ? this.pushAndRunWithPromise(i) : this.pushAndRun(i));
43
45
  }
44
46
  truncate() {
@@ -54,41 +56,12 @@ class t extends e {
54
56
  args: [ e ]
55
57
  });
56
58
  }
57
- supressMaxFileSizeEvent() {
58
- this.maxFileSizeEmitted = !0;
59
- }
60
- _getBinData(e) {
59
+ getBinData(e) {
61
60
  var t = e.length;
62
61
  return 0 == t ? "" : 1 == t ? e[0] : Buffer.isBuffer(e[0]) ? Buffer.concat(e) : Buffer.concat(e.map(e => Buffer.from(e)));
63
62
  }
64
- async _saveBinData(e, t) {
65
- var {
66
- fileHandle: a,
67
- totalSavedSize: i,
68
- filePath: s,
69
- options: r
70
- } = this, {
71
- emitSaveEvent: n,
72
- maxFileSize: o,
73
- maxRetryInterval: l,
74
- retryIntervalFactor: h
75
- } = r, p = v(t), u = p.length, f = `size ${d(u)} (MaxId:${e}) to ` + s;
76
- let m;
77
- for (;"_op_truncate" !== this.firstOp?.opFunName; ) try {
78
- await a.appendFile(p, {
79
- flush: !0
80
- });
81
- var c = this.totalSavedSize = i + u;
82
- return n && this.emit("save", e), void (o && o < c && !this.maxFileSizeEmitted && (this.supressMaxFileSizeEvent(),
83
- this.emit("maxFileSize", c)));
84
- } catch (e) {
85
- logger.error(`Saving ${f} failed:`, e, "Truncated back to " + i), await a.truncate(i),
86
- m = m ? Math.min(l, m * h) : 1, logger.log(`Retry in ${m} seconds`),
87
- await _(m);
88
- }
89
- }
90
63
  async _op_start(e) {
91
- return e = e || this.filePath, await this._openFile(e), this;
64
+ return await i(this, e = e || this.filePath), this;
92
65
  }
93
66
  async _op_stop() {
94
67
  var {
@@ -100,11 +73,35 @@ class t extends e {
100
73
  } catch (e) {
101
74
  logger.error(`Close ${t} failed:`, e);
102
75
  }
103
- this._resetParams();
76
+ p(this);
104
77
  }
105
78
  _op_save(e, t) {
106
- t = this._getBinData(t, e);
107
- if (t) return this._saveBinData(e, t);
79
+ t = this.getBinData(t, e);
80
+ if (t) return (async (e, t, a) => {
81
+ let {
82
+ fileHandle: i,
83
+ totalSavedSize: r,
84
+ filePath: s,
85
+ options: n
86
+ } = e, {
87
+ emitSaveEvent: o,
88
+ maxFileSize: l,
89
+ maxRetryInterval: h,
90
+ retryIntervalFactor: p
91
+ } = n, u = _(a), f = u.length, c = `size ${g(f)} (MaxId:${t}) to ` + s, m;
92
+ for (;"_op_truncate" !== e.firstOp?.opFunName; ) try {
93
+ await i.appendFile(u, {
94
+ flush: !0
95
+ });
96
+ var d = e.totalSavedSize = r + f;
97
+ return o && 0 < t && e.emit("save", t), void (!e.maxFileSizeEmitted && l && d > l && (e.maxFileSizeEmitted = !0,
98
+ e.emit("maxFileSize", d)));
99
+ } catch (e) {
100
+ logger.error(`Saving ${c} failed:`, e, "Truncated back to " + r),
101
+ await i.truncate(r), m = m ? Math.min(h, m * p) : 1, logger.log(`Retry in ${m} seconds`),
102
+ await v(m);
103
+ }
104
+ })(this, e, t);
108
105
  }
109
106
  async _op_truncate() {
110
107
  var {
@@ -116,37 +113,39 @@ class t extends e {
116
113
  } catch (e) {
117
114
  logger.error(`Truncate ${t} failed:`, e);
118
115
  }
119
- this._resetParams();
116
+ p(this);
120
117
  }
121
118
  async _op_switch(e) {
122
119
  var {
123
120
  fileHandle: t,
124
121
  filePath: a
125
122
  } = this;
126
- t && a == e || (await this._openFile(e), logger.info(`Switched from ${a} to ` + e));
123
+ t && a == e || (await i(this, e), logger.info(`Switched from ${a} to ` + e));
127
124
  }
128
- async _openFile(t) {
129
- var {
130
- fileHandle: e,
131
- options: a
132
- } = this;
133
- this._resetParams();
134
- try {
135
- e && (e.close(), this.fileHandle = void 0), await r(t);
136
- var i = a.append;
137
- this.fileHandle = await s(t, i ? "a" : "w"), this.filePath = t, i && (this.totalSavedSize = await n(t));
138
- } catch (e) {
139
- logger.error(`Open ${t} failed:`, e);
140
- }
141
- }
142
- _resetParams() {
143
- Object.assign(this, {
144
- totalSavedSize: 0,
145
- maxFileSizeEmitted: !1
146
- });
125
+ }
126
+
127
+ async function i(e, t) {
128
+ var {
129
+ fileHandle: a,
130
+ options: i
131
+ } = e;
132
+ p(e);
133
+ try {
134
+ a && (a.close(), e.fileHandle = void 0), await n(t);
135
+ var r = i.append;
136
+ e.fileHandle = await s(t, r ? "a" : "w"), e.filePath = t, r && (e.totalSavedSize = await o(t));
137
+ } catch (e) {
138
+ logger.error(`Open ${t} failed:`, e);
147
139
  }
148
140
  }
149
141
 
142
+ function p(e) {
143
+ Object.assign(e, {
144
+ totalSavedSize: 0,
145
+ maxFileSizeEmitted: !1
146
+ });
147
+ }
148
+
150
149
  export {
151
150
  t as QyBinWriter
152
151
  };
package/src/QyCD.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import {
2
- isString as e,
2
+ isString as i,
3
3
  pathSplit as s
4
4
  } from "./QyUtils.js";
5
5
 
@@ -7,52 +7,88 @@ class r {
7
7
  constructor(r) {
8
8
  this.qyCache = r;
9
9
  }
10
- cd(r, i = this.currentDir) {
11
- return e(r) && (r = s(r)), this.cdP(r, i);
10
+ cd(r, e = this.currentDir) {
11
+ return i(r) && (r = s(r)), this.cdP(r, e);
12
12
  }
13
- cdP(r, i = this.currentDir) {
14
- return this.currentDir = this.qyCache.getOrCreateDir(r, i), this;
13
+ cdP(r, e = this.currentDir) {
14
+ return this.currentDir = this.qyCache.getOrCreateDir(r, e), this;
15
15
  }
16
- dir(r, i = this.currentDir) {
17
- return e(r) && (r = s(r)), this.dirP(r, i);
16
+ dir(r, e = this.currentDir) {
17
+ return i(r) && (r = s(r)), this.dirP(r, e);
18
18
  }
19
- dirP(r, i = this.currentDir) {
20
- return this.qyCache.getDir(r, i);
19
+ dirP(r, e = this.currentDir) {
20
+ return this.qyCache.getDir(r, e);
21
21
  }
22
- indexDir(r, i, t = this.currentDir) {
23
- return e(r) && (r = s(r)), e(i) && (i = s(i)), this.indexDirP(r, i, t);
22
+ indexDir(r, e, t = this.currentDir) {
23
+ return i(r) && (r = s(r)), i(e) && (e = s(e)), this.indexDirP(r, e, t);
24
24
  }
25
- indexDirP(r, i, t = this.currentDir) {
26
- var e = this.qyCache, r = e.getDir(r, t);
25
+ indexDirP(r, e, t = this.currentDir) {
26
+ var i = this.qyCache, r = i.getDir(r, t);
27
27
  if (r) {
28
- t = e.getIndexDir(r);
29
- if (t) return i && 0 != i.length ? e.getDir(i, t) : t;
28
+ t = i.getIndexDir(r);
29
+ if (t) return e && 0 != e.length ? i.getDir(e, t) : t;
30
30
  }
31
31
  }
32
- file(r, i = this.currentDir) {
33
- return e(r) && (r = s(r)), this.fileP(r, i);
32
+ file(r, e = this.currentDir) {
33
+ return i(r) && (r = s(r)), this.fileP(r, e);
34
34
  }
35
- fileP(r, i = this.currentDir) {
36
- return this.qyCache.getFile(r, i);
35
+ fileP(r, e = this.currentDir) {
36
+ return this.qyCache.getFile(r, e);
37
37
  }
38
38
  triggerFile(r) {
39
39
  return this.qyCache.getTriggerFile(r);
40
40
  }
41
- view(r, i, t = this.currentDir) {
42
- return e(r) && (r = s(r)), this.viewP(r, i, t);
41
+ view(r, e, t = this.currentDir) {
42
+ return i(r) && (r = s(r)), this.viewP(r, e, t);
43
43
  }
44
- viewP(r, i, t = this.currentDir) {
45
- return this.qyCache.getFile(r, t)?.view(i);
44
+ viewP(r, e, t = this.currentDir) {
45
+ return this.qyCache.getFile(r, t)?.view(e);
46
46
  }
47
- queryFiles(r, i, t, e, s = this.currentDir) {
48
- return this.qyCache.queryFiles(r, i, t, e, s);
47
+ queryFiles(r, e, t, i, s = this.currentDir) {
48
+ return this.qyCache.queryFiles(r, e, t, i, s);
49
49
  }
50
- queryFilesMulti(r, i, t, e = this.currentDir) {
51
- return this.qyCache.queryFilesMulti(r, i, t, e);
50
+ queryFilesMulti(r, e, t, i = this.currentDir) {
51
+ return this.qyCache.queryFilesMulti(r, e, t, i);
52
+ }
53
+ queryTree(r, e, t, i, s, n = this.currentDir) {
54
+ return u(this.qyCache.queryFiles(r, e, i, s, n), t);
55
+ }
56
+ queryTreeMulti(r, e, t, i, s = this.currentDir) {
57
+ return u(this.qyCache.queryFilesMulti(r, t, i, s), e);
52
58
  }
53
59
  resetCurrentDir() {
54
60
  this.currentDir = void 0;
55
61
  }
62
+ fileListToTree(r, e) {
63
+ return u(r, e);
64
+ }
65
+ }
66
+
67
+ function u(r, t) {
68
+ var i, s = {};
69
+ for (i of r) {
70
+ var n, u = i.parentList;
71
+ let e = s;
72
+ for (n of u) {
73
+ var {
74
+ name: h,
75
+ fullPathHash: c
76
+ } = n;
77
+ let r = e.subdirMap;
78
+ r = r || (e.subdirMap = {}), e = (e = r[h]) || (r[h] = {
79
+ fullPathHash: c
80
+ });
81
+ }
82
+ let r = e.fileMap;
83
+ (r = r || (e.fileMap = {}))[i.name] = {
84
+ fileContent: i.view(t, !0),
85
+ fileContentKey: i.fileContentKey
86
+ };
87
+ }
88
+ return {
89
+ tree: s,
90
+ count: r.length
91
+ };
56
92
  }
57
93
 
58
94
  export {
package/src/QyCache.js CHANGED
@@ -22,51 +22,51 @@ import {
22
22
  } from "./QyTrigger.js";
23
23
 
24
24
  import {
25
- isString as n,
26
- lockExclusiveFilePath as C,
25
+ isString as C,
26
+ lockExclusiveFilePath as q,
27
27
  unlockExclusiveFilePath as i
28
28
  } from "./QyUtils.js";
29
29
 
30
30
  import {
31
- dumpStructure as q
31
+ dumpStructure as R
32
32
  } from "./QyStructure.js";
33
33
 
34
34
  import {
35
- getIndexPropPaths as l,
36
- parseNamePathAndQuery as d
35
+ getIndexPropPaths as n,
36
+ parseNamePathAndQuery as l
37
37
  } from "./QyIndex.js";
38
38
 
39
39
  import {
40
- getDefaultOptions as u
40
+ getDefaultOptions as d
41
41
  } from "./QyDefaultOptions.js";
42
42
 
43
43
  import {
44
- ensureDir as R,
44
+ ensureDir as Q,
45
45
  SpecialFilePaths as e
46
46
  } from "./QyUtils.js";
47
47
 
48
48
  import {
49
- QueryCounter as p
49
+ QueryCounter as u
50
50
  } from "./QyUnionNode.js";
51
51
 
52
52
  import {
53
- QyKVDataLoader as Q
53
+ QyKVDataLoader as S
54
54
  } from "./QyKVDataLoader.js";
55
55
 
56
56
  import {
57
- requireFromModCode as h
57
+ requireFromModCode as p
58
58
  } from "./QyMod.js";
59
59
 
60
60
  let {
61
- IndexDirPath: S,
62
- TriggerDirPath: x,
63
- RpcDirPath: O
61
+ IndexDirPath: x,
62
+ TriggerDirPath: O,
63
+ RpcDirPath: P
64
64
  } = e;
65
65
 
66
66
  class t extends r {
67
67
  constructor(r, e, t) {
68
68
  super(), e = {
69
- ...u("QyCache"),
69
+ ...d("QyCache"),
70
70
  ...e
71
71
  };
72
72
  var i = v(r, "qykv");
@@ -95,13 +95,13 @@ class t extends r {
95
95
  } = this;
96
96
  logger.log(`Starting at ${r}...`);
97
97
  try {
98
- await R(e), o.start();
98
+ await Q(e), o.start();
99
99
  var [ {
100
100
  maxChangeId: g,
101
101
  loadedMaxAclNum: n,
102
102
  qySnapshots: l,
103
103
  aclKeyValueMap: d
104
- } ] = await Promise.all([ ((r, e) => (r = new Q(r, e)).load())(e, t), C(a) ]);
104
+ } ] = await Promise.all([ ((r, e) => (r = new S(r, e)).load())(e, t), q(a) ]);
105
105
  await i.start(g, n, l, d);
106
106
  } catch (r) {
107
107
  throw o.stop(), r;
@@ -112,9 +112,9 @@ class t extends r {
112
112
  fileMap: i
113
113
  } = e;
114
114
  for (var o of t) r(o);
115
- }(s), this.indexRootDir = s.searchOrCreateSubdir(S);
115
+ }(s), this.indexRootDir = s.searchOrCreateSubdir(x);
116
116
  var u = this, e = u.rootDir;
117
- e.triggerNodes = [ new f() ], u.triggerRootDir = e.searchOrCreateSubdir(x);
117
+ e.triggerNodes = [ new f() ], u.triggerRootDir = e.searchOrCreateSubdir(O);
118
118
  for (p of u.triggerRootDir.fileList) {
119
119
  var {
120
120
  name: p,
@@ -127,15 +127,15 @@ class t extends r {
127
127
  u.insertTriggerToTree(p, h, c, D);
128
128
  }
129
129
  var y = this;
130
- y.rpcRootDir = y.rootDir.searchOrCreateSubdir(O);
130
+ y.rpcRootDir = y.rootDir.searchOrCreateSubdir(P);
131
131
  for (m of y.rpcRootDir.fileList) {
132
132
  var {
133
133
  name: m,
134
134
  fileContent: F
135
135
  } = m;
136
- F && (F = F.modCode, F) && y.insertRpc(m, F);
136
+ C(F) && y.insertRpc(m, F);
137
137
  }
138
- return t.dumpStructureAtStart && await q(v(r, "qystruct"), s), logger.log("Started."),
138
+ return t.dumpStructureAtStart && await R(v(r, "qystruct"), s), logger.log("Started."),
139
139
  this;
140
140
  }
141
141
  async stop() {
@@ -170,16 +170,16 @@ class t extends r {
170
170
  return t && s.save(r, t), a.save(r, e, i, o);
171
171
  }
172
172
  getFile(r, e = this.rootDir) {
173
- return r.isFile ? r : n(r) ? e.getFile(r) : e.searchFile(r);
173
+ return r.isFile ? r : C(r) ? e.getFile(r) : e.searchFile(r);
174
174
  }
175
175
  getDir(r, e = this.rootDir) {
176
- return r.isDir ? r : n(r) ? e.getSubdir(r) : e.searchSubdir(r);
176
+ return r.isDir ? r : C(r) ? e.getSubdir(r) : e.searchSubdir(r);
177
177
  }
178
178
  getOrCreateFile(r, e = this.rootDir) {
179
- return r.isFile ? r : n(r) ? e.getOrCreateFile(r) : e.searchOrCreateFile(r);
179
+ return r.isFile ? r : C(r) ? e.getOrCreateFile(r) : e.searchOrCreateFile(r);
180
180
  }
181
181
  getOrCreateDir(r, e = this.rootDir) {
182
- return r.isDir ? r : n(r) ? e.getOrCreateSubdir(r) : e.searchOrCreateSubdir(r);
182
+ return r.isDir ? r : C(r) ? e.getOrCreateSubdir(r) : e.searchOrCreateSubdir(r);
183
183
  }
184
184
  getIndexDir(r) {
185
185
  return this.indexRootDir.getSubdir(r.fullPathHash);
@@ -203,7 +203,7 @@ class t extends r {
203
203
  var {
204
204
  rootDir: o,
205
205
  qyDB: a
206
- } = this, i = h("trigger", r, i, a);
206
+ } = this, i = p("trigger", r, i, a);
207
207
  o.triggerNodes[0].insertTrigger(r, e, t, i), g(o, e);
208
208
  }
209
209
  removeTriggerFromTree(r, e) {
@@ -214,19 +214,19 @@ class t extends r {
214
214
  var {
215
215
  rpcFunMap: t,
216
216
  qyDB: i
217
- } = this, e = h("rpc", r, e, i);
217
+ } = this, e = p("rpc", r, e, i);
218
218
  e && (t[r] = e);
219
219
  }
220
220
  removeRpc(r) {
221
221
  delete this.rpcFunMap[r];
222
222
  }
223
223
  queryFiles(r, e, t, i, o = this.rootDir) {
224
- var a = [], t = (n(e) && null == t && (t = 1), new p(t, i)), i = this.options.queryAutoCreateIndex;
225
- return c(r, e, a, t, o, i), a;
224
+ var a = [], t = (C(e) && !t && (t = 1), new u(t, i)), i = this.options.queryAutoCreateIndex;
225
+ return h(r, e, a, t, o, i), a;
226
226
  }
227
227
  queryFilesMulti(r, e, t, i = this.rootDir) {
228
- var o, a, s = [], g = new p(e, t), n = this.options.queryAutoCreateIndex;
229
- for ([ o, a ] of r) c(o, a, s, g, i, n);
228
+ var o, a, s = [], g = new u(e, t), n = this.options.queryAutoCreateIndex;
229
+ for ([ o, a ] of r) h(o, a, s, g, i, n);
230
230
  return s;
231
231
  }
232
232
  async callRpc(e, r, t) {
@@ -240,8 +240,8 @@ class t extends r {
240
240
  }
241
241
  }
242
242
 
243
- function c(r, e, t, i, o, a) {
244
- e && (a = a ? l(e) : void 0, d(r, o, a, e, t, i));
243
+ function h(r, e, t, i, o, a) {
244
+ e && (a = a ? n(e) : void 0, l(r, o, a, e, t, i));
245
245
  }
246
246
 
247
247
  export {
package/src/QyDB.js CHANGED
@@ -11,11 +11,11 @@ import {
11
11
  } from "./QyBatch.js";
12
12
 
13
13
  import {
14
- QyCache as a
14
+ QyCache as n
15
15
  } from "./QyCache.js";
16
16
 
17
17
  import {
18
- getDefaultOptions as n
18
+ getDefaultOptions as a
19
19
  } from "./QyDefaultOptions.js";
20
20
 
21
21
  import {
@@ -34,7 +34,7 @@ class h extends t {
34
34
  s(e) && (t = e, e = d), super(), Object.assign(this, {
35
35
  rootFolder: e,
36
36
  options: {
37
- ...n("QyDB"),
37
+ ...a("QyDB"),
38
38
  ...t
39
39
  }
40
40
  });
@@ -44,7 +44,7 @@ class h extends t {
44
44
  return this.qyCache || (e = {
45
45
  ...this.options,
46
46
  ...e
47
- }, t = new a(this.rootFolder, e, this), Object.assign(this, {
47
+ }, t = new n(this.rootFolder, e, this), Object.assign(this, {
48
48
  qyCache: t,
49
49
  fetch: new r(t),
50
50
  batch: new i(t, e),
@@ -144,32 +144,6 @@ class h extends t {
144
144
  callRpc(e, t, r) {
145
145
  return this.qyCache.callRpc(e, t, r);
146
146
  }
147
- fileListToTree(e, t) {
148
- var r, i = t, a = {};
149
- for (r of e) {
150
- var n, s = r.parentList;
151
- let t = a;
152
- for (n of s) {
153
- var {
154
- name: m,
155
- fullPathHash: d
156
- } = n;
157
- let e = t.subdirMap;
158
- e = e || (t.subdirMap = {}), t = (t = e[m]) || (e[m] = {
159
- fullPathHash: d
160
- });
161
- }
162
- let e = t.fileMap;
163
- (e = e || (t.fileMap = {}))[r.name] = {
164
- fileContent: r.view(i, !0),
165
- fileContentKey: r.fileContentKey
166
- };
167
- }
168
- return {
169
- tree: a,
170
- count: e.length
171
- };
172
- }
173
147
  }
174
148
 
175
149
  export {
@@ -43,7 +43,8 @@ let t = {
43
43
  },
44
44
  QySnapshots: {
45
45
  pMOutdatedPercent: 30,
46
- minSnapshotKeyCount: 3e3
46
+ minSnapshotKeyCount: 3e3,
47
+ minLenToCompress: 4e3
47
48
  },
48
49
  QyKVDataCleaner_Worker: {
49
50
  compressRedundantFile: !1
package/src/QyFetch.js CHANGED
@@ -7,24 +7,10 @@ class e extends r {
7
7
  super(r), Object.assign(this, {
8
8
  stack: []
9
9
  });
10
- }
11
- dir(r, e) {
12
- return u(this, super.dir(r, e));
13
- }
14
- indexDir(r, e, s) {
15
- return u(this, super.indexDir(r, e, s));
16
- }
17
- file(r, e) {
18
- return u(this, super.file(r, e));
19
- }
20
- view(r, e, s) {
21
- return u(this, super.view(r, e, s));
22
- }
23
- queryFiles(r, e, s, t, i) {
24
- return u(this, super.queryFiles(r, e, s, t, i));
25
- }
26
- queryFilesMulti(r, e, s, t) {
27
- return u(this, super.queryFilesMulti(r, e, s, t));
10
+ for (let s of [ "dir", "indexDir", "file", "view", "queryFiles", "queryFilesMulti", "queryTree", "queryTreeMulti" ]) this[s] = (...r) => {
11
+ return e = this, r = super[s].apply(this, r), e.stack.push(r), e;
12
+ var e;
13
+ };
28
14
  }
29
15
  run() {
30
16
  var r = this.stack;
@@ -32,10 +18,6 @@ class e extends r {
32
18
  }
33
19
  }
34
20
 
35
- function u(r, e) {
36
- return r.stack.push(e), r;
37
- }
38
-
39
21
  export {
40
22
  e as QyFetch
41
23
  };
@@ -28,7 +28,7 @@ class n extends o {
28
28
  (e = {
29
29
  ...s("QyFileLogger"),
30
30
  ...e
31
- }).append = !e.clearLogAtStart, super(e, [ "stop" ], [ "startFileConsole", "switchFileConsole" ]),
31
+ }).append = !e.clearLogAtStart, super(e, [], [ "startFileConsole", "switchFileConsole" ]),
32
32
  Object.assign(this, {
33
33
  logFileFolder: t,
34
34
  qyLogFileSaver: new r(this, e)
@@ -40,7 +40,7 @@ class n extends o {
40
40
  getDateDirPath() {
41
41
  return this.dateDirPath;
42
42
  }
43
- async start() {
43
+ async _op_start() {
44
44
  var t = new Date(), t = (this.timeoutRef = setTimeout(this.switch.bind(this), g(t)),
45
45
  this.dateDirPath = h(this, t));
46
46
  this.qyLogFileSaver.start(a(t, "change.txt")), await this.startFileConsole(t);