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/QyKVData.js CHANGED
@@ -1,64 +1,139 @@
1
- let path = require("node:path"), fsPromises = require("node:fs/promises"), getDefaultOptions = require("./QyDefaultOptions.js").getDefaultOptions, QyKVDataSaver = require("./QyKVDataSaver.js").QyKVDataSaver, QySnapshotCompactor = require("./QySnapshotCompactor.js").QySnapshotCompactor, QyKVDataCleaner = require("./QyKVDataCleaner.js").QyKVDataCleaner, {
2
- arrayLast,
3
- readBufferAsync,
4
- sleep
5
- } = require("./QyUtils.js"), Idle = 1, WaitForCompactUpdates = 2, WaitForSnapshotSaved = 3;
1
+ import {
2
+ join as n
3
+ } from "node:path";
6
4
 
7
- class QyKVData {
8
- constructor(a, t, s) {
9
- t = {
10
- ...getDefaultOptions("QyKVData"),
11
- ...t
5
+ import {
6
+ open as v
7
+ } from "node:fs/promises";
8
+
9
+ import {
10
+ getDefaultOptions as e
11
+ } from "./QyDefaultOptions.js";
12
+
13
+ import {
14
+ QyKVDataSaver as p
15
+ } from "./QyKVDataSaver.js";
16
+
17
+ import {
18
+ QySnapshotCompactor as i
19
+ } from "./QySnapshotCompactor.js";
20
+
21
+ import {
22
+ QyKVDataCleaner as r
23
+ } from "./QyKVDataCleaner.js";
24
+
25
+ import {
26
+ arrayLast as y,
27
+ readBufferAsync as g,
28
+ sleep as c
29
+ } from "./QyUtils.js";
30
+
31
+ class t {
32
+ constructor(t, a, o) {
33
+ a = {
34
+ ...e("QyKVData"),
35
+ ...a
12
36
  };
13
- var o = path.join(a, "snapshot");
37
+ var s = n(t, "snapshot");
14
38
  Object.assign(this, {
15
- qyCache: s,
16
- options: t,
17
- kvFolder: a,
18
- snapshotFolder: o,
19
- qyKVDataSaver: new QyKVDataSaver(this, a, t),
20
- qySnapshotCompactor: new QySnapshotCompactor(this, a, t),
21
- qyKVDataCleaner: new QyKVDataCleaner(this, a, t),
22
- compactState: Idle,
39
+ qyCache: o,
40
+ options: a,
41
+ kvFolder: t,
42
+ snapshotFolder: s,
43
+ qyKVDataSaver: new p(this, t, a),
44
+ qySnapshotCompactor: new i(this, t, a),
45
+ qyKVDataCleaner: new r(this, t, a),
46
+ compactState: 1,
23
47
  compactMaxChangeId: 0,
24
48
  snapshotSavedChangeId: 0,
25
49
  snapshotInfoNumList: [],
26
50
  emptySnapshotNumList: []
27
51
  });
28
52
  }
29
- start(a, t, s, o) {
53
+ start(t, a, o, s) {
30
54
  var {
31
- options: e,
32
- qyKVDataSaver: n,
55
+ options: n,
56
+ qyKVDataSaver: e,
33
57
  qySnapshotCompactor: p,
34
58
  qyKVDataCleaner: i
35
- } = this, n = (n.start(a, s.maxSnapshotNum, t, o), p.start(), i.start(),
36
- setInterval(() => this._compactSnapshots(), e.compactSnapshotsInterval)), t = setInterval(() => this._unloadMemory(), e.unloadMemInterval);
59
+ } = this, {
60
+ maxSnapshotNum: r,
61
+ snapshotMaxChangeId: h
62
+ } = o, e = (e.start(t, r, a, s), p.start(), i.start(), setInterval(() => l(this), n.compactSnapshotsInterval)), r = setInterval(() => (async o => {
63
+ if (!o.unloadingMemory) {
64
+ o.unloadingMemory = !0;
65
+ var {
66
+ qyCache: s,
67
+ options: n
68
+ } = o;
69
+ let t = 0, a = 0;
70
+ if (s) {
71
+ var e, p = n.maxFileCountToUnload, n = s.rootDir;
72
+ a = m(o, n), t = a;
73
+ for (e of n.allLoadedSubdirs()) if ((a += m(o, e)) > p && (t += a,
74
+ a = 0, await c(0), o.isStopping)) break;
75
+ }
76
+ t += a, global.gc && global.gc(), o.unloadingMemory = !1;
77
+ }
78
+ })(this), n.unloadMemInterval);
37
79
  return Object.assign(this, {
38
- maxChangeId: a,
39
- qySnapshots: s,
40
- aclKeyValueMap: o,
41
- compactInterval: n,
42
- unloadInterval: t
43
- }), e.bgLoadPosMaps && this._bgLoadPosMaps(), this;
80
+ maxChangeId: t,
81
+ snapshotSavedChangeId: h,
82
+ qySnapshots: o,
83
+ aclKeyValueMap: s,
84
+ compactInterval: e,
85
+ unloadInterval: r
86
+ }), n.bgLoadPosMaps ? (async t => {
87
+ for (var a of Object.keys(t.qySnapshots.numToSnapshotMap).sort((t, a) => a - t)) {
88
+ if (await async function e(p, i, r, h, c, l) {
89
+ if (p.isStopping) return void (l && l.close());
90
+ let m = p.qySnapshots;
91
+ let u = m.numToSnapshotMap;
92
+ let d = u[i];
93
+ if (!d) return void (l && l.close());
94
+ let {
95
+ info: S,
96
+ prefixPM: f
97
+ } = d;
98
+ r = r || Object.keys(f).sort().reverse();
99
+ if (0 == r.length) return void (l && l.close());
100
+ if (null == h || h != S.pMVersion) return l && l.close(), c = m.getPMFilePath(d),
101
+ e(p, i, r, S.pMVersion, c, await v(c));
102
+ for (;0 < r.length; ) {
103
+ let s = y(r), n = f[s];
104
+ if (n) {
105
+ let [ t, a ] = n, o = await g(c, l, t, a);
106
+ if (p.isStopping || !u[i]) return void l.close();
107
+ if (h != S.pMVersion) return l.close(), e(p, i, r);
108
+ s in f && m.loadPartialPosMapBuffer(d, s, o);
109
+ }
110
+ r.pop();
111
+ }
112
+ l.close();
113
+ logger.info("bgLoadPosMap:" + i);
114
+ }(t, a), t.isStopping) break;
115
+ if (await c(0), t.isStopping) break;
116
+ }
117
+ !t.isStopping && t.options.compactAtStart && l(t);
118
+ })(this) : n.compactAtStart && l(this), this;
44
119
  }
45
120
  async stop() {
46
121
  this.isStopping = !0;
47
122
  var {
48
- qyKVDataSaver: a,
49
- qySnapshotCompactor: t,
50
- qySnapshots: s,
51
- compactInterval: o,
52
- unloadInterval: e,
53
- qyKVDataCleaner: n
123
+ qyKVDataSaver: t,
124
+ qySnapshotCompactor: a,
125
+ qySnapshots: o,
126
+ compactInterval: s,
127
+ unloadInterval: n,
128
+ qyKVDataCleaner: e
54
129
  } = this;
55
- clearInterval(o), clearInterval(e), await a.stop(), s && s.closeAllFDs(),
56
- await t.stop(), await n.stop();
130
+ clearInterval(s), clearInterval(n), await t.stop(), o && o.closeAllFDs(),
131
+ await a.stop(), await e.stop();
57
132
  }
58
- save(a, t, s, o) {
59
- var e = this.qyKVDataSaver;
60
- if (o) return e.callSave(a, t, s);
61
- e.castSave(a, t, s);
133
+ save(t, a, o, s) {
134
+ var n = this.qyKVDataSaver;
135
+ if (s) return n.callSave(t, a, o);
136
+ n.castSave(t, a, o);
62
137
  }
63
138
  increaseChangeId() {
64
139
  return ++this.maxChangeId;
@@ -66,224 +141,183 @@ class QyKVData {
66
141
  decreaseChangeId() {
67
142
  --this.maxChangeId;
68
143
  }
69
- getValueSync(a) {
144
+ getValueSync(t) {
70
145
  var {
71
- qySnapshots: t,
72
- aclKeyValueMap: s
146
+ qySnapshots: a,
147
+ aclKeyValueMap: o
73
148
  } = this;
74
- return a in s ? s[a] : t.getValueSync(a);
149
+ return t in o ? o[t] : a.getValueSync(t);
75
150
  }
76
- removeKey(a) {
151
+ removeKey(t) {
77
152
  var {
78
- qySnapshots: t,
79
- aclKeyValueMap: s
153
+ qySnapshots: a,
154
+ aclKeyValueMap: o
80
155
  } = this;
81
- if (!(a in s)) return t.removeKey(a);
82
- s[a] = void 0;
83
- }
84
- onSnapshotSavedChangeId(a, t) {
85
- this.snapshotSavedChangeId = a, this.compactState == WaitForSnapshotSaved && a >= this.compactMaxChangeId && this._finishCompactUpdates(),
86
- t && (this._addPMOnlySnapshot(t), this.qyKVDataSaver.releaseSnapshot(t.snapshotNum));
156
+ if (!(t in o)) return a.removeKey(t);
157
+ o[t] = void 0;
87
158
  }
88
- onCompactUpdates(a) {
89
- this.compactState == WaitForCompactUpdates && (this._processCompactUpdates(a),
90
- this.snapshotSavedChangeId >= this.compactMaxChangeId ? this._finishCompactUpdates() : this.compactState = WaitForSnapshotSaved);
91
- }
92
- _addPMOnlySnapshot(a) {
93
- var t, s = this.qySnapshots, o = s.keyToSnapshotMap;
94
- for (t in a.posMap) {
95
- var e = o[t];
96
- e && s.removeKeyFromSnapshot(e, t);
97
- }
98
- s.addMaxSnapshot(a), logger.info("addPMOnlySnapshot: " + s.snapshotMaxChangeId);
99
- }
100
- _finishCompactUpdates() {
101
- var {
102
- qySnapshotCompactor: a,
103
- qyKVDataCleaner: t,
104
- snapshotInfoNumList: s,
105
- emptySnapshotNumList: o
106
- } = this;
107
- a.saveSnapshotInfos(s), (s.length = 0) < o.length && (t.removeSnapshotsFiles(o),
108
- o.length = 0), this.compactState = Idle;
109
- }
110
- _processCompactUpdates(a) {
111
- var {
112
- pMUpdates: a,
113
- vLUpdates: t,
114
- combineUpdate: s
115
- } = a;
116
- a && this._processPMUpdates(a), t && this._processVLUpdates(t), s && this._processCombineUpdate(s);
117
- }
118
- _processCombineUpdate(a) {
119
- var {
120
- qySnapshots: o,
121
- snapshotInfoNumList: t,
122
- emptySnapshotNumList: s
123
- } = this, {
124
- numToSnapshotMap: e,
125
- keyToSnapshotMap: n
126
- } = o;
127
- let {
128
- snapshotNum: p,
129
- combinedSnapshotNumList: i,
130
- posMap: r
131
- } = a;
132
- var h, c = e[p];
133
- let {
134
- posMap: l,
135
- info: d
136
- } = c;
137
- for (h in l) l[h] = r[h];
138
- this._countLVCompact(c);
139
- let u = d.totalCount, m = c.outdatedCount;
140
- for (let s of i) {
141
- var S, y = e[s];
142
- let {
143
- posMap: a,
144
- info: t
145
- } = y;
146
- for (S in a) l[S] = r[S], n[S] = c;
147
- this._countLVCompact(y), u += t.totalCount, m += y.outdatedCount, o.delSnapshot(y);
148
- }
149
- s.push(...i), (u == m ? s : (++d.pMVersion, ++d.vLVersion, d.totalCount = u,
150
- c.outdatedCount = m, t)).push(p);
151
- }
152
- _processVLUpdates(a) {
153
- var t, {
154
- qySnapshots: s,
155
- snapshotInfoNumList: o,
156
- emptySnapshotNumList: e
157
- } = this, n = s.numToSnapshotMap;
158
- for (t in a) {
159
- var p = n[t];
160
- if (s.isEmptySnapshot(p)) s.delSnapshot(p), e.push(t); else {
161
- var i, r, {
162
- posMap: h,
163
- prefixPM: c
164
- } = a[t], {
165
- posMap: l,
166
- prefixPM: d,
167
- info: u
168
- } = p;
169
- for (i in l) l[i] = h[i];
170
- for (r in d) d[r] = c[r];
171
- ++u.pMVersion, ++u.vLVersion, this._countLVCompact(p), o.push(t);
159
+ onSnapshotSavedChangeId(t, a) {
160
+ if (this.snapshotSavedChangeId = t, 3 == this.compactState && t >= this.compactMaxChangeId && (w(this),
161
+ this.compactState = 1), a) {
162
+ var o, t = a, s = this.qySnapshots, n = s.keyToSnapshotMap;
163
+ for (o in t.posMap) {
164
+ var e = n[o];
165
+ e && s.removeKeyFromSnapshot(e, o);
172
166
  }
167
+ s.addMaxSnapshot(t), logger.info("addPMOnlySnapshot: " + s.snapshotMaxChangeId),
168
+ this.qyKVDataSaver.releaseSnapshot(a.snapshotNum);
173
169
  }
174
170
  }
175
- _countLVCompact(a) {
176
- var {
177
- info: t,
178
- compactOutedCount: s
179
- } = a;
180
- t.totalCount -= t.outdatedCount + s, t.outdatedCount = 0, a.outdatedCount -= s,
181
- a.compactOutedCount = 0;
182
- }
183
- _countPMCompact(a) {
184
- var {
185
- info: t,
186
- compactOutedCount: s
187
- } = a;
188
- t.outdatedCount += s, a.outdatedCount -= s, a.compactOutedCount = 0;
189
- }
190
- _processPMUpdates(a) {
191
- var t, {
192
- qySnapshots: s,
193
- snapshotInfoNumList: o,
194
- emptySnapshotNumList: e
195
- } = this, n = s.numToSnapshotMap;
196
- for (t in a) {
197
- var p = n[t];
198
- if (s.isEmptySnapshot(p)) s.delSnapshot(p), e.push(t); else {
199
- var i, r = a[t], {
200
- prefixPM: h,
201
- info: c
202
- } = p;
203
- for (i in h) h[i] = r[i];
204
- ++c.pMVersion, this._countPMCompact(p), o.push(t);
205
- }
206
- }
207
- }
208
- _compactSnapshots() {
209
- if (this.compactState == Idle) {
210
- var {
211
- maxChangeId: a,
212
- qySnapshots: t,
213
- qySnapshotCompactor: s
214
- } = this, {
215
- emptySnapshotNumList: t,
216
- pMCompactSnapshotList: o,
217
- vLCompactSnapshotList: e,
218
- combiningSnapshotList: n
219
- } = t.calOutdates();
220
- if (0 < t.length && this.emptySnapshotNumList.push(...t), 0 < n.length || 0 < o.length || 0 < e.length) {
221
- Object.assign(this, {
222
- compactState: WaitForCompactUpdates,
223
- compactMaxChangeId: a
224
- });
225
- for (var p of [ o, e, n ]) for (var i of p) i.compactOutedCount = i.outdatedCount;
226
- s.compactSnapshots(o, e, n);
171
+ onCompactUpdates(t) {
172
+ if (2 == this.compactState) {
173
+ var u = this, {
174
+ pMUpdates: t,
175
+ vLUpdates: d,
176
+ combineUpdate: S
177
+ } = t = t;
178
+ if (t) {
179
+ var a, o = t, {
180
+ qySnapshots: s,
181
+ snapshotInfoNumList: n,
182
+ emptySnapshotNumList: e
183
+ } = u, p = s.numToSnapshotMap;
184
+ for (a in o) {
185
+ var i = p[a];
186
+ if (s.isEmptySnapshot(i)) s.delSnapshot(i), e.push(a); else {
187
+ var r, h = o[a], {
188
+ prefixPM: c,
189
+ info: l
190
+ } = i;
191
+ for (r in c) c[r] = h[r];
192
+ ++l.pMVersion, (t => {
193
+ var {
194
+ info: a,
195
+ compactOutedCount: o
196
+ } = t;
197
+ a.outdatedCount += o, t.outdatedCount -= o, t.compactOutedCount = 0;
198
+ })(i), n.push(a);
199
+ }
200
+ }
227
201
  }
228
- }
229
- }
230
- async _bgLoadPosMaps() {
231
- for (var a of Object.keys(this.qySnapshots.numToSnapshotMap).sort((a, t) => t - a)) {
232
- if (await this._bgLoadPosMap(a), this.isStopping) break;
233
- if (await sleep(0), this.isStopping) break;
234
- }
235
- }
236
- async _bgLoadPosMap(a, t, s, o, e) {
237
- if (this.isStopping) e && e.close(); else {
238
- var n = this.qySnapshots, p = n.numToSnapshotMap, i = p[a];
239
- if (i) {
240
- var {
241
- info: r,
242
- prefixPM: h
243
- } = i;
244
- if (0 == (t = t || Object.keys(h).sort().reverse()).length) e && e.close(); else {
245
- if (null == s || s != r.pMVersion) return e && e.close(), o = n.getPMFilePath(i),
246
- this._bgLoadPosMap(a, t, r.pMVersion, o, await fsPromises.open(o));
247
- for (;0 < t.length; ) {
248
- var c = arrayLast(t), l = h[c];
249
- if (l) {
250
- var [ l, d ] = l, l = await readBufferAsync(o, e, l, d);
251
- if (this.isStopping || !p[a]) return void e.close();
252
- if (s != r.pMVersion) return e.close(), this._bgLoadPosMap(a, t);
253
- c in h && n.loadPartialPosMapBuffer(i, c, l);
254
- }
255
- t.pop();
202
+ if (d) {
203
+ var m, f = d, {
204
+ qySnapshots: v,
205
+ snapshotInfoNumList: y,
206
+ emptySnapshotNumList: g
207
+ } = t = u, C = v.numToSnapshotMap;
208
+ for (m in f) {
209
+ var M = C[m];
210
+ if (v.isEmptySnapshot(M)) v.delSnapshot(M), g.push(m); else {
211
+ var I, q, {
212
+ posMap: V,
213
+ prefixPM: L
214
+ } = f[m], {
215
+ posMap: K,
216
+ prefixPM: x,
217
+ info: D
218
+ } = M;
219
+ for (I in K) K[I] = V[I];
220
+ for (q in x) x[q] = L[q];
221
+ ++D.pMVersion, ++D.vLVersion, j(M), y.push(m);
256
222
  }
257
- e.close(), logger.info("bgLoadPosMap:" + a);
258
223
  }
259
- } else e && e.close();
260
- }
261
- }
262
- async _unloadMemory() {
263
- if (!this.unloadingMemory) {
264
- this.unloadingMemory = !0;
265
- var {
266
- qyCache: s,
267
- options: o
268
- } = this;
269
- let a = 0, t = 0;
270
- if (s) {
271
- var e, n = o.maxFileCountToUnload, o = s.rootDir;
272
- t = this._unloadDirFilesMem(o), a = t;
273
- for (e of o.allLoadedSubdirs()) if ((t += this._unloadDirFilesMem(e)) > n && (a += t,
274
- t = 0, await sleep(0), this.isStopping)) break;
275
224
  }
276
- a += t, global.gc && global.gc(), this.unloadingMemory = !1;
225
+ if (S) {
226
+ var b, d = S;
227
+ let {
228
+ qySnapshots: s,
229
+ snapshotInfoNumList: t,
230
+ emptySnapshotNumList: a
231
+ } = u, {
232
+ numToSnapshotMap: n,
233
+ keyToSnapshotMap: e
234
+ } = s, {
235
+ snapshotNum: o,
236
+ combinedSnapshotNumList: p,
237
+ posMap: i
238
+ } = d, r = n[o], {
239
+ posMap: h,
240
+ info: c
241
+ } = r;
242
+ for (b in h) h[b] = i[b];
243
+ j(r);
244
+ let l = c.totalCount, m = r.outdatedCount;
245
+ for (let o of p) {
246
+ var N, O = n[o];
247
+ let {
248
+ posMap: t,
249
+ info: a
250
+ } = O;
251
+ for (N in t) h[N] = i[N], e[N] = r;
252
+ j(O), l += a.totalCount, m += O.outdatedCount, s.delSnapshot(O);
253
+ }
254
+ a.push(...p), (l == m ? a : (++c.pMVersion, ++c.vLVersion, c.totalCount = l,
255
+ r.outdatedCount = m, t)).push(o);
256
+ }
257
+ this.snapshotSavedChangeId >= this.compactMaxChangeId ? (w(this), this.compactState = 1) : this.compactState = 3;
277
258
  }
278
259
  }
279
- _unloadDirFilesMem(a) {
280
- var t = this.qySnapshots.snapshotMaxChangeId;
281
- let s = 0;
282
- if (a.fileMapLoaded) for (var o of a.fileList) ++s, o.cChangeId <= t && (o.visited ? o.visited = !1 : o.unloadFileContent());
283
- return s;
260
+ }
261
+
262
+ function j(t) {
263
+ var {
264
+ info: a,
265
+ compactOutedCount: o
266
+ } = t;
267
+ a.totalCount -= a.outdatedCount + o, a.outdatedCount = 0, t.outdatedCount -= o,
268
+ t.compactOutedCount = 0;
269
+ }
270
+
271
+ function l(t) {
272
+ if (1 == t.compactState) {
273
+ var {
274
+ maxChangeId: a,
275
+ qySnapshots: o,
276
+ qySnapshotCompactor: s
277
+ } = t, {
278
+ emptySnapshotNumList: o,
279
+ pMCompactSnapshotList: n,
280
+ vLCompactSnapshotList: e,
281
+ combiningSnapshotList: p
282
+ } = o.calOutdates();
283
+ if (0 < p.length || 0 < n.length || 0 < e.length) {
284
+ Object.assign(t, {
285
+ compactState: 2,
286
+ compactMaxChangeId: a
287
+ });
288
+ for (var i of [ n, e, p ]) for (var r of i) r.compactOutedCount = r.outdatedCount;
289
+ s.compactSnapshots(n, e, p);
290
+ }
291
+ 0 < o.length && (t.emptySnapshotNumList.push(...o), t.snapshotSavedChangeId >= a ? h(t) : 1 == t.compactState && Object.assign(t, {
292
+ compactState: 3,
293
+ compactMaxChangeId: a
294
+ }));
284
295
  }
285
296
  }
286
297
 
287
- Object.assign(module.exports, {
288
- QyKVData: QyKVData
289
- });
298
+ function m(t, a) {
299
+ var o = t.qySnapshots.snapshotMaxChangeId;
300
+ let s = 0;
301
+ if (a.fileMapLoaded) for (var n of a.fileList) ++s, n.cChangeId <= o && (n.visited ? n.visited = !1 : n.unloadFileContent());
302
+ return s;
303
+ }
304
+
305
+ function h(t) {
306
+ var {
307
+ qyKVDataCleaner: t,
308
+ emptySnapshotNumList: a
309
+ } = t;
310
+ 0 < a.length && (t.removeSnapshotsFiles(a), a.length = 0);
311
+ }
312
+
313
+ function w(t) {
314
+ var {
315
+ qySnapshotCompactor: a,
316
+ snapshotInfoNumList: o
317
+ } = t;
318
+ 0 < o.length && (a.saveSnapshotInfos(o), o.length = 0), h(t);
319
+ }
320
+
321
+ export {
322
+ t as QyKVData
323
+ };
@@ -1,17 +1,23 @@
1
- let QyMessager = require("./QyMessager.js").QyMessager, getDefaultOptions = require("./QyDefaultOptions.js").getDefaultOptions;
1
+ import {
2
+ QyMessager as e
3
+ } from "./QyMessager.js";
2
4
 
3
- class QyKVDataCleaner extends QyMessager {
5
+ import {
6
+ getDefaultOptions as r
7
+ } from "./QyDefaultOptions.js";
8
+
9
+ class s extends e {
4
10
  constructor(e, s, a) {
5
11
  super(e, "QyKVDataCleaner_Worker.js", {
6
12
  kvFolder: s,
7
13
  options: a = {
8
- ...getDefaultOptions("QyKVDataCleaner"),
14
+ ...r("QyKVDataCleaner"),
9
15
  ...a
10
16
  }
11
17
  }, a, [], [ "cleanAclFiles", "cleanPMFiles", "cleanVLFiles", "removeSnapshotsFiles" ]);
12
18
  }
13
19
  }
14
20
 
15
- Object.assign(module.exports, {
16
- QyKVDataCleaner: QyKVDataCleaner
17
- });
21
+ export {
22
+ s as QyKVDataCleaner
23
+ };