datafolder 1.0.6 → 1.0.8

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 (159) hide show
  1. package/README.md +7 -2
  2. package/index.js +1 -1
  3. package/internal.md +121 -0
  4. package/package.json +8 -6
  5. package/scripts/airbnb.js +77 -72
  6. package/scripts/airbnb2.js +78 -73
  7. package/scripts/airbnb2_queries.js +181 -229
  8. package/scripts/airbnb_queries.js +214 -265
  9. package/scripts/convertBinFiles.js +47 -0
  10. package/scripts/downloadFile.js +41 -40
  11. package/scripts/express.js +44 -48
  12. package/scripts/fastify.js +71 -80
  13. package/scripts/flights.js +71 -75
  14. package/scripts/flights2.js +78 -81
  15. package/scripts/flights2_queries.js +417 -455
  16. package/scripts/flights_queries.js +381 -407
  17. package/src/QyAcl.d.ts +17 -0
  18. package/src/QyAcl.js +113 -116
  19. package/src/QyAclSaver.d.ts +4 -0
  20. package/src/QyAclSaver.js +3 -3
  21. package/src/QyAclSaver_Worker.d.ts +9 -0
  22. package/src/QyAclSaver_Worker.js +2 -4
  23. package/src/QyAclWriter.d.ts +5 -0
  24. package/src/QyBatch.d.ts +42 -0
  25. package/src/QyBatch.js +8 -8
  26. package/src/QyBinWriter.d.ts +15 -0
  27. package/src/QyCD.d.ts +37 -0
  28. package/src/QyCD.js +27 -16
  29. package/src/QyCache.d.ts +44 -0
  30. package/src/QyCache.js +71 -59
  31. package/src/QyCompressor.d.ts +9 -0
  32. package/src/QyCompressor.js +29 -29
  33. package/src/QyCompressor_Worker.d.ts +1 -0
  34. package/src/QyDB.d.ts +42 -0
  35. package/src/QyDB.js +13 -11
  36. package/src/QyDefaultOptions.d.ts +1 -0
  37. package/src/QyDefaultOptions.js +3 -0
  38. package/src/QyDir.d.ts +48 -0
  39. package/src/QyDir.js +41 -41
  40. package/src/QyFetch.d.ts +7 -0
  41. package/src/QyFetch.js +3 -4
  42. package/src/QyFile.d.ts +19 -0
  43. package/src/QyFile.js +35 -34
  44. package/src/QyFileContentUtils.d.ts +13 -0
  45. package/src/QyFileContentUtils.js +126 -126
  46. package/src/QyFileLogger.d.ts +11 -0
  47. package/src/QyIndex.d.ts +6 -0
  48. package/src/QyIndex.js +73 -75
  49. package/src/QyIndexPropTree.d.ts +7 -0
  50. package/src/QyIndexPropTree.js +24 -24
  51. package/src/QyIntersectNode.d.ts +7 -0
  52. package/src/QyIntersectNode.js +15 -15
  53. package/src/QyItem.d.ts +30 -0
  54. package/src/QyItem.js +32 -28
  55. package/src/QyJsonSaver.d.ts +6 -0
  56. package/src/QyKVData.d.ts +12 -0
  57. package/src/QyKVData.js +30 -20
  58. package/src/QyKVDataCleaner.d.ts +4 -0
  59. package/src/QyKVDataCleaner.js +1 -1
  60. package/src/QyKVDataCleaner_Worker.d.ts +13 -0
  61. package/src/QyKVDataCleaner_Worker.js +2 -4
  62. package/src/QyKVDataLoader.d.ts +9 -0
  63. package/src/QyKVDataLoader.js +11 -11
  64. package/src/QyKVDataSaver.d.ts +4 -0
  65. package/src/QyKVDataSaver.js +6 -6
  66. package/src/QyKVDataSaver_Worker.d.ts +13 -0
  67. package/src/QyKVDataSaver_Worker.js +11 -13
  68. package/src/QyLogFileSaver.d.ts +4 -0
  69. package/src/QyLogFileSaver.js +1 -1
  70. package/src/QyLogFileSaver_Worker.d.ts +8 -0
  71. package/src/QyLogFileSaver_Worker.js +2 -4
  72. package/src/QyLogger.d.ts +10 -0
  73. package/src/QyLogger.js +40 -40
  74. package/src/QyMessageWorker.d.ts +5 -0
  75. package/src/QyMessageWorker.js +7 -7
  76. package/src/QyMessager.d.ts +7 -0
  77. package/src/QyMessager.js +30 -27
  78. package/src/QyMessager_Run.d.ts +1 -0
  79. package/src/QyMessager_Run.js +11 -6
  80. package/src/QyMod.d.ts +1 -0
  81. package/src/QyMod.js +6 -6
  82. package/src/QyOpRunner.d.ts +10 -0
  83. package/src/QyOpRunner.js +39 -39
  84. package/src/QyQueue.d.ts +11 -0
  85. package/src/QySaver.d.ts +10 -0
  86. package/src/QySnapshotCompactor.d.ts +4 -0
  87. package/src/QySnapshotCompactor.js +1 -1
  88. package/src/QySnapshotCompactor_Worker.d.ts +11 -0
  89. package/src/QySnapshotCompactor_Worker.js +21 -22
  90. package/src/QySnapshotSaver.d.ts +4 -0
  91. package/src/QySnapshotSaver.js +1 -1
  92. package/src/QySnapshotSaver_Worker.d.ts +16 -0
  93. package/src/QySnapshotSaver_Worker.js +56 -53
  94. package/src/QySnapshots.d.ts +27 -0
  95. package/src/QySnapshots.js +74 -66
  96. package/src/QyStructure.d.ts +1 -0
  97. package/src/QyStructure.js +18 -18
  98. package/src/QyTrigger.d.ts +9 -0
  99. package/src/QyTrigger.js +30 -30
  100. package/src/QyUnionNode.d.ts +17 -0
  101. package/src/QyUnionNode.js +2 -2
  102. package/src/QyUtils.d.ts +53 -0
  103. package/src/QyUtils.js +140 -117
  104. package/src/QyWorker.d.ts +5 -0
  105. package/src/QyWorker.js +18 -18
  106. package/src/hackernews.d.ts +1 -0
  107. package/src/hackernews.js +59 -47
  108. package/src/rpc/getRpcFiles.js +1 -0
  109. package/src/rpc/getTriggerFiles.js +1 -0
  110. package/src/simulate.d.ts +1 -0
  111. package/src/simulate2.d.ts +1 -0
  112. package/src/soc_pokec.d.ts +1 -0
  113. package/src/soc_pokec.js +7 -7
  114. package/static/codemirror.bundle/editor.bundle.js +370 -166
  115. package/static/datafolderui/QyStyledElement.js +8 -17
  116. package/static/datafolderui/QyUIFolderViewer.js +230 -0
  117. package/static/datafolderui/QyUIUtils.js +5 -5
  118. package/static/datafolderui/code-mirror.js +7 -7
  119. package/static/datafolderui/display-tree.js +22 -58
  120. package/static/datafolderui/explore-tree.js +10 -10
  121. package/static/datafolderui/folder-tree.js +71 -2
  122. package/static/datafolderui/hscrpt.js +26 -7
  123. package/static/datafolderui/json-view.js +34 -3
  124. package/static/datafolderui/main-page.js +67 -36
  125. package/static/datafolderui/query-editor.js +9 -9
  126. package/static/datafolderui/rpc-editor.js +31 -0
  127. package/static/datafolderui/trigger-editor.js +33 -0
  128. package/data/sampleDataFolder/qykv/history/acl/1_acl.txt +0 -1
  129. package/data/sampleDataFolder/qykv/history/acl/2_acl.txt +0 -1
  130. package/data/sampleDataFolder/qykv/history/acl/3_acl.txt +0 -1
  131. package/data/sampleDataFolder/qykv/history/acl/4_acl.txt +0 -1
  132. package/data/sampleDataFolder/qykv/history/acl/5_acl.txt +0 -1
  133. package/data/sampleDataFolder/qykv/snapshot/1/1_pM.txt +0 -0
  134. package/data/sampleDataFolder/qykv/snapshot/1/1_prefixPM.txt +0 -0
  135. package/data/sampleDataFolder/qykv/snapshot/1/1_vL.txt +0 -10
  136. package/data/sampleDataFolder/qykv/snapshot/2/1_pM.txt +0 -0
  137. package/data/sampleDataFolder/qykv/snapshot/2/1_prefixPM.txt +0 -0
  138. package/data/sampleDataFolder/qykv/snapshot/2/1_vL.txt +0 -1
  139. package/data/sampleDataFolder/qykv/snapshot/3/1_pM.txt +0 -0
  140. package/data/sampleDataFolder/qykv/snapshot/3/1_prefixPM.txt +0 -0
  141. package/data/sampleDataFolder/qykv/snapshot/3/1_vL.txt +0 -1
  142. package/data/sampleDataFolder/qykv/snapshot/4/1_pM.txt +0 -0
  143. package/data/sampleDataFolder/qykv/snapshot/4/1_prefixPM.txt +0 -0
  144. package/data/sampleDataFolder/qykv/snapshot/4/1_vL.txt +0 -1
  145. package/data/sampleDataFolder/qykv/snapshot/4/2_pM.txt +0 -0
  146. package/data/sampleDataFolder/qykv/snapshot/4/2_prefixPM.txt +0 -0
  147. package/data/sampleDataFolder/qykv/snapshot/4/2_vL.txt +0 -9
  148. package/data/sampleDataFolder/qykv/snapshot/5/1_pM.txt +0 -0
  149. package/data/sampleDataFolder/qykv/snapshot/5/1_prefixPM.txt +0 -0
  150. package/data/sampleDataFolder/qykv/snapshot/5/1_vL.txt +0 -55
  151. package/data/sampleDataFolder/qykv/snapshot/info/1.json +0 -1
  152. package/data/sampleDataFolder/qykv/snapshot/info/2.json +0 -1
  153. package/data/sampleDataFolder/qykv/snapshot/info/3.json +0 -1
  154. package/data/sampleDataFolder/qykv/snapshot/info/4.json +0 -1
  155. package/data/sampleDataFolder/qykv/snapshot/info/5.json +0 -1
  156. package/data/sampleDataFolder/qylog/2026/02/15/08/change.txt +0 -58
  157. package/data/sampleDataFolder/qylog/2026/02/15/08/stderr.txt +0 -11
  158. package/data/sampleDataFolder/qylog/2026/02/15/08/stdout.txt +0 -36
  159. package/static/datafolderui/QyUIFolderTree.js +0 -179
@@ -9,41 +9,41 @@ class i {
9
9
  });
10
10
  }
11
11
  insert(e, t) {
12
- var r = this.children;
12
+ var n = this.children;
13
13
  if (t == e.length) return !this.indexPropPath && (this.indexPropPath = e,
14
14
  !0);
15
- var n = e[t];
15
+ var r = e[t];
16
16
  let h;
17
- return r ? (h = r[n]) || (h = r[n] = new i(n, this), ++this.childCount) : (h = new i(n, this),
17
+ return n ? (h = n[r]) || (h = n[r] = new i(r, this), ++this.childCount) : (h = new i(r, this),
18
18
  this.children = {
19
- [n]: h
19
+ [r]: h
20
20
  }, ++this.childCount), h.insert(e, t + 1);
21
21
  }
22
- remove(e, t = 0, r = {}) {
22
+ remove(e, t = 0, n = {}) {
23
23
  var {
24
- parent: n,
24
+ parent: r,
25
25
  name: h,
26
26
  children: i
27
27
  } = this;
28
- if (t == e.length) return this.indexPropPath && (r.removed = !0, delete this.indexPropPath),
29
- n && o(this) && function e(t, r) {
28
+ if (t == e.length) return this.indexPropPath && (n.removed = !0, delete this.indexPropPath),
29
+ r && o(this) && function e(t, n) {
30
30
  let {
31
- children: n,
31
+ children: r,
32
32
  parent: h,
33
33
  name: i
34
34
  } = t;
35
- n[r] && (delete n[r], 0 == --t.childCount && delete t.children, h) && o(t) && e(h, i);
36
- }(n, h), r;
37
- this.indexPropPath && (r.hasPrefix = !0);
38
- n = i && i[e[t]];
39
- return n ? n.remove(e, t + 1, r) : r;
35
+ r[n] && (delete r[n], 0 == --t.childCount && delete t.children, h) && o(t) && e(h, i);
36
+ }(r, h), n;
37
+ this.indexPropPath && (n.hasPrefix = !0);
38
+ r = i && i[e[t]];
39
+ return r ? r.remove(e, t + 1, n) : n;
40
40
  }
41
41
  getAllIndexPropPaths(e) {
42
42
  var {
43
43
  children: t,
44
- indexPropPath: r
44
+ indexPropPath: n
45
45
  } = this;
46
- if (r) e.push(r); else for (var n in t) t[n].getAllIndexPropPaths(e);
46
+ if (n) e.push(n); else for (var r in t) t[r].getAllIndexPropPaths(e);
47
47
  }
48
48
  }
49
49
 
@@ -51,7 +51,7 @@ function o(e) {
51
51
  return !e.indexPropPath && 0 == e.childCount;
52
52
  }
53
53
 
54
- class n {
54
+ class r {
55
55
  constructor() {
56
56
  Object.assign(this, {
57
57
  rootNode: new i(),
@@ -71,22 +71,22 @@ class n {
71
71
  var {
72
72
  _cachedChangeCount: e,
73
73
  allIndexPropPaths: t,
74
- rootNode: r,
75
- changeCount: n
74
+ rootNode: n,
75
+ changeCount: r
76
76
  } = this;
77
- return e != n && (t.length = 0, r.getAllIndexPropPaths(t), this._cachedChangeCount = n),
77
+ return e != r && (t.length = 0, n.getAllIndexPropPaths(t), this._cachedChangeCount = r),
78
78
  t;
79
79
  }
80
80
  }
81
81
 
82
82
  function e(e) {
83
83
  if (0 == e.length) return [];
84
- var t, r = new n();
85
- for (t of e) r.insert(t);
86
- return r.getAllIndexPropPaths();
84
+ var t, n = new r();
85
+ for (t of e) n.insert(t);
86
+ return n.getAllIndexPropPaths();
87
87
  }
88
88
 
89
89
  export {
90
- n as QyIndexPropTree,
90
+ r as QyIndexPropTree,
91
91
  e as getPrefixPropPaths
92
92
  };
@@ -0,0 +1,7 @@
1
+ import { QyQueryNode } from "./QyUnionNode.ts";
2
+ export declare class QyIntersectNode extends QyQueryNode {
3
+ constructor();
4
+ containsFile(fileName: any): any;
5
+ getFiles(queryCounter: any, resultMap?: {}): Generator<any, void, unknown>;
6
+ addNode(node: any): void;
7
+ }
@@ -2,7 +2,7 @@ import {
2
2
  QyQueryNode as t
3
3
  } from "./QyUnionNode.js";
4
4
 
5
- class i extends t {
5
+ class n extends t {
6
6
  constructor() {
7
7
  super(), Object.assign(this, {
8
8
  fileCount: void 0
@@ -11,28 +11,28 @@ class i extends t {
11
11
  containsFile(t) {
12
12
  var {
13
13
  nodeList: e,
14
- fileCount: n
14
+ fileCount: i
15
15
  } = this;
16
- if (0 != e.length && 0 != n) return s(this), e[0].containsFile(t) && l(e, t);
16
+ if (0 != e.length && 0 != i) return s(this), e[0].containsFile(t) && l(e, t);
17
17
  }
18
18
  *getFiles(t, e = {}) {
19
19
  var {
20
- nodeList: n,
21
- fileCount: i
20
+ nodeList: i,
21
+ fileCount: n
22
22
  } = this;
23
- if (0 != n.length && 0 != i) {
23
+ if (0 != i.length && 0 != n) {
24
24
  s(this);
25
- for (var o of n[0].getFiles()) if (!(o in e) && l(n, o) && this.encounterOne(e, o, t) && (yield o,
25
+ for (var o of i[0].getFiles()) if (!(o in e) && l(i, o) && this.encounterOne(e, o, t) && (yield o,
26
26
  t?.isFull)) return;
27
27
  }
28
28
  }
29
29
  addNode(t) {
30
- var e, n;
30
+ var e, i;
31
31
  t && null != t.fileCount && ({
32
32
  fileCount: e,
33
- nodeList: n
34
- } = this, 0 < n.length && 0 == e || (t instanceof i ? (n.push(...t.nodeList),
35
- this.sorted = !1) : n.push(t), (null == e || e > t.fileCount) && (this.fileCount = t.fileCount)));
33
+ nodeList: i
34
+ } = this, 0 < i.length && 0 == e || (t instanceof n ? (i.push(...t.nodeList),
35
+ this.sorted = !1) : i.push(t), (null == e || e > t.fileCount) && (this.fileCount = t.fileCount)));
36
36
  }
37
37
  }
38
38
 
@@ -40,12 +40,12 @@ function s(t) {
40
40
  t.sorted || (t.nodeList.sort((t, e) => t.fileCount - e.fileCount), t.sorted = !0);
41
41
  }
42
42
 
43
- function l(e, n) {
44
- var i = e.length;
45
- for (let t = 1; t < i; ++t) if (!e[t].containsFile(n)) return !1;
43
+ function l(e, i) {
44
+ var n = e.length;
45
+ for (let t = 1; t < n; ++t) if (!e[t].containsFile(i)) return !1;
46
46
  return !0;
47
47
  }
48
48
 
49
49
  export {
50
- i as QyIntersectNode
50
+ n as QyIntersectNode
51
51
  };
@@ -0,0 +1,30 @@
1
+ import type { QyDir } from "./QyDir.ts";
2
+ import type { QyCache } from "./QyCache.ts";
3
+ export declare class QyItem {
4
+ name: string;
5
+ parentDir: QyDir | undefined;
6
+ flagInt: number;
7
+ constructor(name: string | number, created?: boolean, parentDir?: QyDir);
8
+ get qyCache(): QyCache | undefined;
9
+ get _created(): boolean;
10
+ set _created(val: boolean);
11
+ get subdirMapLoaded(): boolean;
12
+ set subdirMapLoaded(val: boolean);
13
+ get fileMapLoaded(): boolean;
14
+ set fileMapLoaded(val: boolean);
15
+ get fileContentLoaded(): boolean;
16
+ set fileContentLoaded(val: boolean);
17
+ get visited(): boolean;
18
+ set visited(val: boolean);
19
+ get nameNum(): number | string;
20
+ cmp({ nameNum: num2 }: {
21
+ nameNum: any;
22
+ }): 1 | 0 | -1;
23
+ get fullPath(): string;
24
+ get fullPathHash(): string;
25
+ get isItem(): boolean;
26
+ get underHiddenFolder(): boolean;
27
+ get parentList(): QyDir[];
28
+ get parentNamePath(): string[];
29
+ get namePath(): string[];
30
+ }
package/src/QyItem.js CHANGED
@@ -3,59 +3,53 @@ import {
3
3
  SpecialFilePaths as t
4
4
  } from "./QyUtils.js";
5
5
 
6
- let s = t.HiddenFolderName;
6
+ let i = t.HiddenFolderName;
7
7
 
8
8
  class e {
9
- constructor(t, e, a) {
10
- t = t.toString(), Object.assign(this, {
11
- name: t,
12
- parentDir: a,
13
- flagInt: 0
14
- }), this._created = e, a && (a.name == s || a.underHiddenFolder) && (this.flagInt |= 2);
15
- }
16
- _getFlag(t) {
17
- return 0 != (this.flagInt & t);
18
- }
19
- _setFlag(t, e) {
20
- e ? this.flagInt |= t : this.flagInt &= ~t;
9
+ name;
10
+ parentDir;
11
+ flagInt;
12
+ constructor(t, e = !1, a) {
13
+ this.name = t.toString(), this.parentDir = a, this.flagInt = 0, this._created = e,
14
+ a && (a.name == i || a.underHiddenFolder) && (this.flagInt |= 2);
21
15
  }
22
16
  get qyCache() {
23
17
  var t = this.parentDir;
24
18
  return t ? t.qyCache : this._qyCache;
25
19
  }
26
20
  get _created() {
27
- return this._getFlag(1);
21
+ return r(this, 1);
28
22
  }
29
23
  set _created(t) {
30
- this._setFlag(1, t);
24
+ n(this, 1, t);
31
25
  }
32
26
  get subdirMapLoaded() {
33
- return this._getFlag(4);
27
+ return r(this, 4);
34
28
  }
35
29
  set subdirMapLoaded(t) {
36
- return this._setFlag(4, t);
30
+ n(this, 4, t);
37
31
  }
38
32
  get fileMapLoaded() {
39
- return this._getFlag(8);
33
+ return r(this, 8);
40
34
  }
41
35
  set fileMapLoaded(t) {
42
- this._setFlag(8, t);
36
+ n(this, 8, t);
43
37
  }
44
38
  get fileContentLoaded() {
45
- return this._getFlag(16);
39
+ return r(this, 16);
46
40
  }
47
41
  set fileContentLoaded(t) {
48
- this._setFlag(16, t);
42
+ n(this, 16, t);
49
43
  }
50
44
  get visited() {
51
- return this._getFlag(32);
45
+ return r(this, 32);
52
46
  }
53
47
  set visited(t) {
54
- this._setFlag(32, t);
48
+ n(this, 32, t);
55
49
  }
56
50
  get nameNum() {
57
- var t;
58
- return this._nameNum || (t = +this.name, this._nameNum = isNaN(t) ? this.name : t);
51
+ var t = this._nameNum;
52
+ return null != t ? t : (t = +this.name, this._nameNum = isNaN(t) ? this.name : t);
59
53
  }
60
54
  cmp({
61
55
  nameNum: t
@@ -81,14 +75,16 @@ class e {
81
75
  return !0;
82
76
  }
83
77
  get underHiddenFolder() {
84
- return 2 & this.flagInt;
78
+ return r(this, 2);
85
79
  }
86
80
  get parentList() {
87
81
  if (null == this._parentList) {
88
82
  var e = this._parentList = [];
89
83
  let t = this.parentDir;
90
- for (;t.parentDir; ) e.push(t), t = t.parentDir;
91
- e.reverse();
84
+ if (null != t) {
85
+ for (;t.parentDir; ) e.push(t), t = t.parentDir;
86
+ e.reverse();
87
+ }
92
88
  }
93
89
  return this._parentList;
94
90
  }
@@ -102,6 +98,14 @@ class e {
102
98
  }
103
99
  }
104
100
 
101
+ function r(t, e) {
102
+ return 0 != (t.flagInt & e);
103
+ }
104
+
105
+ function n(t, e, a) {
106
+ a ? t.flagInt |= e : t.flagInt &= ~e;
107
+ }
108
+
105
109
  export {
106
110
  e as QyItem
107
111
  };
@@ -0,0 +1,6 @@
1
+ import { QySaver } from "./QySaver.ts";
2
+ export declare class QyJsonSaver extends QySaver {
3
+ constructor(dataFolder: any, options: any);
4
+ processAfterLoad(binData: any, fileName: any): any;
5
+ processBeforeSave(json: any, fileName: any): Buffer<any>;
6
+ }
@@ -0,0 +1,12 @@
1
+ export declare class QyKVData {
2
+ constructor(kvFolder: any, options: any, qyCache: any);
3
+ start(maxChangeId: any, loadedMaxAclNum: any, qySnapshots: any, aclKeyValueMap: any): this;
4
+ stop(): Promise<void>;
5
+ save(changeId: any, cmdArgAsListObj: any, syncList: any, needPromise: any): any;
6
+ increaseChangeId(): number;
7
+ decreaseChangeId(): void;
8
+ getValueSync(key: any): any;
9
+ removeKey(key: any): any;
10
+ onSnapshotSavedChangeId(snapshotSavedChangeId: any, pMOnlySnapshot: any): void;
11
+ onCompactUpdates(compactUpdates: any): void;
12
+ }
package/src/QyKVData.js CHANGED
@@ -24,7 +24,7 @@ import {
24
24
 
25
25
  import {
26
26
  arrayLast as y,
27
- readBufferAsync as C,
27
+ readBufferAsync as g,
28
28
  sleep as c
29
29
  } from "./QyUtils.js";
30
30
 
@@ -83,7 +83,12 @@ class a {
83
83
  compactInterval: s,
84
84
  unloadInterval: r
85
85
  }), n.bgLoadPosMaps ? (async a => {
86
- for (var t of Object.keys(a.qySnapshots.numToSnapshotMap).sort((a, t) => t - a)) {
86
+ var t, {
87
+ qySnapshots: o,
88
+ options: e
89
+ } = a;
90
+ console.time("bgLoadPosMaps");
91
+ for (t of Object.keys(o.numToSnapshotMap).sort((a, t) => t - a)) {
87
92
  if (await async function s(p, i, r, h, c, l) {
88
93
  if (p.isStopping) return void (l && l.close());
89
94
  let d = p.qySnapshots;
@@ -101,7 +106,7 @@ class a {
101
106
  for (;0 < r.length; ) {
102
107
  let e = y(r), n = f[e];
103
108
  if (n) {
104
- let [ a, t ] = n, o = await C(c, l, a, t);
109
+ let [ a, t ] = n, o = await g(c, l, a, t);
105
110
  if (p.isStopping || !m[i]) return void l.close();
106
111
  if (h != S.pMVersion) return l.close(), s(p, i, r);
107
112
  e in f && d.loadPartialPosMapBuffer(u, e, o);
@@ -113,7 +118,7 @@ class a {
113
118
  }(a, t), a.isStopping) break;
114
119
  if (await c(0), a.isStopping) break;
115
120
  }
116
- !a.isStopping && a.options.compactAtStart && l(a);
121
+ console.timeEnd("bgLoadPosMaps"), !a.isStopping && e.compactAtStart && l(a);
117
122
  })(this) : n.compactAtStart && l(this), this;
118
123
  }
119
124
  async stop() {
@@ -126,8 +131,8 @@ class a {
126
131
  unloadInterval: n,
127
132
  qyKVDataCleaner: s
128
133
  } = this;
129
- clearInterval(e), clearInterval(n), await a.stop(), o && o.closeAllFDs(),
130
- await t.stop(), await s.stop();
134
+ clearInterval(e), clearInterval(n), this.onSnapshotSavedChangeId(await a.stop()),
135
+ o && o.closeAllFDs(), await t.stop(), await s.stop();
131
136
  }
132
137
  save(a, t, o, e) {
133
138
  var n = this.qyKVDataSaver;
@@ -156,15 +161,20 @@ class a {
156
161
  o[a] = void 0;
157
162
  }
158
163
  onSnapshotSavedChangeId(a, t) {
159
- if (this.snapshotSavedChangeId = a, 3 == this.compactState && a >= this.compactMaxChangeId && (K(this),
160
- this.compactState = 1), t) {
161
- var o, a = t, e = this.qySnapshots, n = e.keyToSnapshotMap;
162
- for (o in a.posMap) {
163
- var s = n[o];
164
- s && e.removeKeyFromSnapshot(s, o);
164
+ this.snapshotSavedChangeId = a;
165
+ var {
166
+ compactState: o,
167
+ compactMaxChangeId: e,
168
+ qyKVDataSaver: n
169
+ } = this;
170
+ if (3 == o && e <= a && (x(this), this.compactState = 1), t) {
171
+ var s, o = t, p = this.qySnapshots, i = p.keyToSnapshotMap;
172
+ for (s in o.posMap) {
173
+ var r = i[s];
174
+ r && p.removeKeyFromSnapshot(r, s);
165
175
  }
166
- e.addMaxSnapshot(a), logger.info("addPMOnlySnapshot: " + e.snapshotMaxChangeId),
167
- this.qyKVDataSaver.releaseSnapshot(t.snapshotNum);
176
+ p.addMaxSnapshot(o), logger.info("addPMOnlySnapshot: " + p.snapshotMaxChangeId),
177
+ n.releaseSnapshot(t.snapshotNum);
168
178
  }
169
179
  }
170
180
  onCompactUpdates(a) {
@@ -199,12 +209,12 @@ class a {
199
209
  prefixPM: f
200
210
  } = r[v], v = h[v], {
201
211
  posMap: y,
202
- prefixPM: C,
203
- info: g
212
+ prefixPM: g,
213
+ info: C
204
214
  } = v;
205
215
  for (c in y) y[c] = S[c];
206
- for (u in C) C[u] = f[u];
207
- ++g.pMVersion, ++g.vLVersion, V(v);
216
+ for (u in g) g[u] = f[u];
217
+ ++C.pMVersion, ++C.vLVersion, V(v);
208
218
  }
209
219
  }
210
220
  if (m) {
@@ -234,7 +244,7 @@ class a {
234
244
  }
235
245
  ++o.pMVersion, ++o.vLVersion, o.totalCount = h, i.outdatedCount = c;
236
246
  }
237
- this.snapshotSavedChangeId >= this.compactMaxChangeId ? (K(this), this.compactState = 1) : this.compactState = 3;
247
+ this.snapshotSavedChangeId >= this.compactMaxChangeId ? (x(this), this.compactState = 1) : this.compactState = 3;
238
248
  }
239
249
  }
240
250
  }
@@ -290,7 +300,7 @@ function h(a) {
290
300
  0 < t.length && (a.removeSnapshotsFiles(t), t.length = 0);
291
301
  }
292
302
 
293
- function K(a) {
303
+ function x(a) {
294
304
  a.qySnapshotCompactor.saveSnapshotInfos(), h(a);
295
305
  }
296
306
 
@@ -0,0 +1,4 @@
1
+ import { QyMessager } from "./QyMessager.ts";
2
+ export declare class QyKVDataCleaner extends QyMessager {
3
+ constructor(parent: any, kvFolder: any, options: any);
4
+ }
@@ -8,7 +8,7 @@ import {
8
8
 
9
9
  class s extends e {
10
10
  constructor(e, s, a) {
11
- super(e, "QyKVDataCleaner_Worker.js", {
11
+ super(e, "QyKVDataCleaner_Worker", {
12
12
  kvFolder: s,
13
13
  options: a = {
14
14
  ...r("QyKVDataCleaner"),
@@ -0,0 +1,13 @@
1
+ import { QyMessageWorker } from "./QyMessageWorker.ts";
2
+ export default class QyKVDataCleaner_Worker extends QyMessageWorker {
3
+ constructor({ kvFolder, options }: {
4
+ kvFolder: any;
5
+ options: any;
6
+ });
7
+ _op_start(): void;
8
+ _op_stop(): void;
9
+ _op_cleanAclFiles(maxSnapshotNum: any): Promise<void>;
10
+ _op_cleanPMFiles(pMChangeList: any): Promise<void>;
11
+ _op_cleanVLFiles(snapshotNum: any, vLVersion: any): Promise<void>;
12
+ _op_removeSnapshotsFiles(snapshotNumList: any): Promise<void>;
13
+ }
@@ -26,7 +26,7 @@ import {
26
26
  Zip_File_Extension as i
27
27
  } from "./QyCompressor.js";
28
28
 
29
- class s extends e {
29
+ export default class extends e {
30
30
  constructor({
31
31
  kvFolder: e,
32
32
  options: s
@@ -108,6 +108,4 @@ async function l(s, a, o, r) {
108
108
  }
109
109
  0 < n.length && await Promise.allSettled(n);
110
110
  }
111
- }
112
-
113
- export default s;
111
+ }
@@ -0,0 +1,9 @@
1
+ export declare class QyKVDataLoader {
2
+ constructor(kvFolder: any, options: any);
3
+ load(): Promise<{
4
+ maxChangeId: any;
5
+ loadedMaxAclNum: any;
6
+ qySnapshots: any;
7
+ aclKeyValueMap: any;
8
+ }>;
9
+ }
@@ -1,5 +1,5 @@
1
1
  import {
2
- readFile as u,
2
+ readFile as y,
3
3
  readdir as x
4
4
  } from "node:fs/promises";
5
5
 
@@ -20,13 +20,13 @@ import {
20
20
  } from "./QySnapshots.js";
21
21
 
22
22
  import {
23
- getDefaultOptions as r
23
+ getDefaultOptions as l
24
24
  } from "./QyDefaultOptions.js";
25
25
 
26
26
  class a {
27
27
  constructor(a, s) {
28
28
  s = {
29
- ...r("QyKVDataLoader"),
29
+ ...l("QyKVDataLoader"),
30
30
  ...s
31
31
  };
32
32
  var t = o(a, "snapshot");
@@ -49,15 +49,15 @@ class a {
49
49
  snapshotMaxChangeId: o
50
50
  } = a;
51
51
  if (this.maxChangeId = o, s) {
52
- var e = this, r = s.filter(a => a > t), {
53
- aclKeyValueMap: l,
52
+ var e = this, l = s.filter(a => a > t), {
53
+ aclKeyValueMap: r,
54
54
  qySnapshots: i,
55
55
  options: s
56
- } = (r.sort((a, s) => a - s), e), n = s.autoRepairAclFile, p = await Promise.all(r.map(async a => u(F(e, a))));
57
- for (let a = 0; a < r.length; ++a) {
58
- var d = r[a], m = F(e, d), m = await M(m, p[a], n, e.maxChangeId);
56
+ } = (l.sort((a, s) => a - s), e), n = s.autoRepairAclFile, p = await Promise.all(l.map(async a => y(F(e, a))));
57
+ for (let a = 0; a < l.length; ++a) {
58
+ var d = l[a], m = F(e, d), m = await M(m, p[a], n, e.maxChangeId);
59
59
  if (0 < m.length) {
60
- for (var [ h, c ] of m) i.applyCmdObj(c, l), e.maxChangeId = h;
60
+ for (var [ h, c ] of m) i.applyCmdObj(c, r), e.maxChangeId = h;
61
61
  e.loadedMaxAclNum = d;
62
62
  }
63
63
  }
@@ -66,13 +66,13 @@ class a {
66
66
  var {
67
67
  maxChangeId: s,
68
68
  loadedMaxAclNum: f,
69
- aclKeyValueMap: y
69
+ aclKeyValueMap: u
70
70
  } = this;
71
71
  return {
72
72
  maxChangeId: s,
73
73
  loadedMaxAclNum: f,
74
74
  qySnapshots: a,
75
- aclKeyValueMap: y
75
+ aclKeyValueMap: u
76
76
  };
77
77
  }
78
78
  }
@@ -0,0 +1,4 @@
1
+ import { QyMessager } from "./QyMessager.ts";
2
+ export declare class QyKVDataSaver extends QyMessager {
3
+ constructor(parent: any, kvFolder: any, options: any);
4
+ }
@@ -1,15 +1,15 @@
1
1
  import {
2
- QyMessager as a
2
+ QyMessager as e
3
3
  } from "./QyMessager.js";
4
4
 
5
5
  import {
6
6
  getDefaultOptions as r
7
7
  } from "./QyDefaultOptions.js";
8
8
 
9
- class e extends a {
10
- constructor(a, e, s) {
11
- super(a, "QyKVDataSaver_Worker.js", {
12
- kvFolder: e,
9
+ class a extends e {
10
+ constructor(e, a, s) {
11
+ super(e, "QyKVDataSaver_Worker", {
12
+ kvFolder: a,
13
13
  options: s = {
14
14
  ...r("QyKVDataSaver"),
15
15
  ...s
@@ -19,5 +19,5 @@ class e extends a {
19
19
  }
20
20
 
21
21
  export {
22
- e as QyKVDataSaver
22
+ a as QyKVDataSaver
23
23
  };
@@ -0,0 +1,13 @@
1
+ import { QyMessageWorker } from "./QyMessageWorker.ts";
2
+ export default class QyKVDataSaver_Worker extends QyMessageWorker {
3
+ constructor({ kvFolder, options }: {
4
+ kvFolder: any;
5
+ options: any;
6
+ });
7
+ _op_start(maxChangeId: any, maxSnapshotNum: any, loadedMaxAclNum: any, aclKeyValueMap: any): void;
8
+ _op_stop(): Promise<any>;
9
+ callSave(changeId: any, cmdArgAsListObj: any, syncList: any): any;
10
+ castSave(changeId: any, cmdArgAsListObj: any, syncList: any): any;
11
+ releaseSnapshot(snapshotNum: any): void;
12
+ onSnapshotSavedChangeId(snapshotSavedChangeId: any, pMOnlySnapshot: any): void;
13
+ }