datafolder 1.0.9 → 1.0.11

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 (85) hide show
  1. package/{internal.md → Internal.md} +8 -1
  2. package/README.md +6 -2
  3. package/SKILL.md +191 -0
  4. package/SSD.md +60 -0
  5. package/index.js +1 -0
  6. package/package.json +2 -2
  7. package/sample.js +4 -4
  8. package/scripts/airbnb.js +1 -0
  9. package/scripts/airbnb2.js +1 -0
  10. package/scripts/convertBinFiles.js +1 -0
  11. package/scripts/express.js +2 -1
  12. package/scripts/fastify.js +1 -0
  13. package/scripts/flights.js +1 -0
  14. package/scripts/flights2.js +1 -0
  15. package/scripts/flights_queries.js +1 -0
  16. package/src/QyAcl.d.ts +3 -3
  17. package/src/QyAcl.js +7 -7
  18. package/src/QyAclSaver_Worker.d.ts +1 -0
  19. package/src/QyAclSaver_Worker.js +1 -0
  20. package/src/QyAclWriter.d.ts +2 -1
  21. package/src/QyAclWriter.js +7 -6
  22. package/src/QyBatch.d.ts +29 -22
  23. package/src/QyBatch.js +85 -72
  24. package/src/QyBinWriter.d.ts +9 -4
  25. package/src/QyBinWriter.js +83 -70
  26. package/src/QyCD.d.ts +19 -19
  27. package/src/QyCD.js +2 -2
  28. package/src/QyCache.d.ts +22 -23
  29. package/src/QyCache.js +47 -36
  30. package/src/QyCompressor_Worker.js +2 -2
  31. package/src/QyDB.d.ts +6 -9
  32. package/src/QyDB.js +1 -1
  33. package/src/QyFile.d.ts +2 -0
  34. package/src/QyFile.js +42 -40
  35. package/src/QyFileContentUtils.d.ts +1 -4
  36. package/src/QyFileLogger.d.ts +4 -0
  37. package/src/QyFileLogger.js +30 -26
  38. package/src/QyIndex.d.ts +2 -2
  39. package/src/QyIndex.js +84 -80
  40. package/src/QyIndexPropTree.d.ts +4 -0
  41. package/src/QyIndexPropTree.js +19 -10
  42. package/src/QyIntersectNode.d.ts +1 -0
  43. package/src/QyIntersectNode.js +1 -0
  44. package/src/QyJsonSaver.d.ts +2 -2
  45. package/src/QyJsonSaver.js +4 -4
  46. package/src/QyKVData.d.ts +18 -1
  47. package/src/QyKVData.js +73 -53
  48. package/src/QyKVDataCleaner_Worker.d.ts +7 -1
  49. package/src/QyKVDataCleaner_Worker.js +54 -40
  50. package/src/QyKVDataLoader.d.ts +10 -2
  51. package/src/QyKVDataLoader.js +27 -21
  52. package/src/QyKVDataSaver_Worker.d.ts +10 -0
  53. package/src/QyKVDataSaver_Worker.js +23 -9
  54. package/src/QyLogFileSaver_Worker.d.ts +1 -0
  55. package/src/QyLogFileSaver_Worker.js +7 -6
  56. package/src/QyLogger.d.ts +21 -10
  57. package/src/QyLogger.js +111 -67
  58. package/src/QyMessageWorker.d.ts +1 -1
  59. package/src/QyMessageWorker.js +5 -5
  60. package/src/QyMessager.d.ts +5 -1
  61. package/src/QyMessager.js +6 -1
  62. package/src/QyMessager_Run.js +4 -3
  63. package/src/QyMod.js +9 -8
  64. package/src/QyOpRunner.d.ts +5 -1
  65. package/src/QyOpRunner.js +7 -7
  66. package/src/QyQueue.d.ts +5 -1
  67. package/src/QyQueue.js +6 -7
  68. package/src/QySaver.d.ts +3 -0
  69. package/src/QySaver.js +26 -15
  70. package/src/QySnapshotCompactor_Worker.d.ts +7 -0
  71. package/src/QySnapshotCompactor_Worker.js +37 -26
  72. package/src/QySnapshotSaver_Worker.d.ts +8 -1
  73. package/src/QySnapshotSaver_Worker.js +21 -14
  74. package/src/QySnapshots.d.ts +19 -7
  75. package/src/QySnapshots.js +204 -181
  76. package/src/QyTrigger.d.ts +5 -1
  77. package/src/QyTrigger.js +44 -34
  78. package/src/QyUnionNode.d.ts +10 -1
  79. package/src/QyUnionNode.js +34 -36
  80. package/src/QyUtils.d.ts +2 -2
  81. package/src/QyUtils.js +116 -111
  82. package/src/simulate.js +34 -31
  83. package/src/simulate2.js +49 -46
  84. package/src/soc_pokec.js +17 -11
  85. package/static/codemirror.bundle/editor.bundle.js +2 -0
package/src/QyKVData.js CHANGED
@@ -3,7 +3,7 @@ import {
3
3
  } from "node:path";
4
4
 
5
5
  import {
6
- open as v
6
+ open as f
7
7
  } from "node:fs/promises";
8
8
 
9
9
  import {
@@ -24,11 +24,32 @@ import {
24
24
 
25
25
  import {
26
26
  arrayLast as y,
27
- readBufferAsync as g,
27
+ readBufferAsync as C,
28
28
  sleep as c
29
29
  } from "./QyUtils.js";
30
30
 
31
+ import {
32
+ logger as g
33
+ } from "./QyLogger.js";
34
+
31
35
  class a {
36
+ kvFolder;
37
+ snapshotFolder;
38
+ qyCache;
39
+ options;
40
+ qyKVDataSaver;
41
+ qySnapshotCompactor;
42
+ qyKVDataCleaner;
43
+ compactState = 1;
44
+ compactMaxChangeId = 0;
45
+ snapshotSavedChangeId = 0;
46
+ maxChangeId = 0;
47
+ emptySnapshotNumVerList = [];
48
+ isStopping = !1;
49
+ qySnapshots;
50
+ aclKeyValueMap;
51
+ compactInterval;
52
+ unloadInterval;
32
53
  constructor(a, t, o) {
33
54
  t = {
34
55
  ...s("QyKVData"),
@@ -42,11 +63,7 @@ class a {
42
63
  snapshotFolder: e,
43
64
  qyKVDataSaver: new p(this, a, t),
44
65
  qySnapshotCompactor: new i(this, a, t),
45
- qyKVDataCleaner: new r(this, a, t),
46
- compactState: 1,
47
- compactMaxChangeId: 0,
48
- snapshotSavedChangeId: 0,
49
- emptySnapshotNumList: []
66
+ qyKVDataCleaner: new r(this, a, t)
50
67
  });
51
68
  }
52
69
  start(a, t, o, e) {
@@ -89,32 +106,32 @@ class a {
89
106
  } = a;
90
107
  console.time("bgLoadPosMaps");
91
108
  for (t of Object.keys(o.numToSnapshotMap).sort((a, t) => t - a)) {
92
- if (await async function s(p, i, r, h, c, l) {
109
+ if (await async function s(p, i, r = void 0, h = void 0, c = void 0, l = void 0) {
93
110
  if (p.isStopping) return void (l && l.close());
94
111
  let d = p.qySnapshots;
95
112
  let m = d.numToSnapshotMap;
96
- let u = m[i];
97
- if (!u) return void (l && l.close());
113
+ let S = m[i];
114
+ if (!S) return void (l && l.close());
98
115
  let {
99
- info: S,
100
- prefixPM: f
101
- } = u;
102
- r = r || Object.keys(f).sort().reverse();
116
+ info: u,
117
+ prefixPM: v
118
+ } = S;
119
+ r = r || Object.keys(v).sort().reverse();
103
120
  if (0 == r.length) return void (l && l.close());
104
- if (null == h || h != S.pMVersion) return l && l.close(), c = d.getPMFilePath(u),
105
- s(p, i, r, S.pMVersion, c, await v(c));
121
+ if (null == h || h != u.pMVersion) return l && l.close(), c = d.getPMFilePath(S),
122
+ s(p, i, r, u.pMVersion, c, await f(c));
106
123
  for (;0 < r.length; ) {
107
- let e = y(r), n = f[e];
124
+ let e = y(r), n = v[e];
108
125
  if (n) {
109
- let [ a, t ] = n, o = await g(c, l, a, t);
126
+ let [ a, t ] = n, o = await C(c, l, a, t);
110
127
  if (p.isStopping || !m[i]) return void l.close();
111
- if (h != S.pMVersion) return l.close(), s(p, i, r);
112
- e in f && d.loadPartialPosMapBuffer(u, e, o);
128
+ if (h != u.pMVersion) return l.close(), s(p, i, r);
129
+ e in v && d.loadPartialPosMapBuffer(S, e, o);
113
130
  }
114
131
  r.pop();
115
132
  }
116
133
  l.close();
117
- logger.info("bgLoadPosMap:" + i);
134
+ g.info("bgLoadPosMap:" + i);
118
135
  }(a, t), a.isStopping) break;
119
136
  if (await c(0), a.isStopping) break;
120
137
  }
@@ -160,20 +177,20 @@ class a {
160
177
  if (!(a in o)) return t.removeKey(a);
161
178
  o[a] = void 0;
162
179
  }
163
- onSnapshotSavedChangeId(a, t) {
180
+ onSnapshotSavedChangeId(a, t = void 0) {
164
181
  this.snapshotSavedChangeId = a;
165
182
  var {
166
183
  compactState: o,
167
184
  compactMaxChangeId: e,
168
185
  qyKVDataSaver: n
169
186
  } = this;
170
- if (3 == o && e <= a && (x(this), this.compactState = 1), t) {
187
+ if (3 == o && e <= a && (L(this), this.compactState = 1), t) {
171
188
  var s, o = t, p = this.qySnapshots, i = p.keyToSnapshotMap;
172
189
  for (s in o.posMap) {
173
190
  var r = i[s];
174
191
  r && p.removeKeyFromSnapshot(r, s);
175
192
  }
176
- p.addMaxSnapshot(o), logger.info("addPMOnlySnapshot: " + p.snapshotMaxChangeId),
193
+ p.addMaxSnapshot(o), g.info("addPMOnlySnapshot: " + p.snapshotMaxChangeId),
177
194
  n.releaseSnapshot(t.snapshotNum);
178
195
  }
179
196
  }
@@ -182,7 +199,7 @@ class a {
182
199
  var l = this, {
183
200
  pMUpdates: a,
184
201
  vLUpdates: d,
185
- combineUpdate: m
202
+ combinationUpdate: m
186
203
  } = a = a;
187
204
  if (a) {
188
205
  var t = a, o = l.qySnapshots.numToSnapshotMap;
@@ -191,8 +208,9 @@ class a {
191
208
  prefixPM: p,
192
209
  info: i
193
210
  } = s;
194
- for (e in p) p[e] = n[e];
195
- ++i.pMVersion, (a => {
211
+ for (e in ++i.pMVersion, i.verList[0] = i.pMVersion + i.vLVersion,
212
+ p) p[e] = n[e];
213
+ (a => {
196
214
  var {
197
215
  info: t,
198
216
  compactOutedCount: o
@@ -203,18 +221,19 @@ class a {
203
221
  }
204
222
  if (d) {
205
223
  var r = d, h = (a = l).qySnapshots.numToSnapshotMap;
206
- for (v in r) {
207
- var c, u, {
208
- posMap: S,
209
- prefixPM: f
210
- } = r[v], v = h[v], {
224
+ for (f in r) {
225
+ var c, S, {
226
+ posMap: u,
227
+ prefixPM: v
228
+ } = r[f], f = h[f], {
211
229
  posMap: y,
212
- prefixPM: g,
213
- info: C
214
- } = v;
215
- for (c in y) y[c] = S[c];
216
- for (u in g) g[u] = f[u];
217
- ++C.pMVersion, ++C.vLVersion, V(v);
230
+ prefixPM: C,
231
+ info: g
232
+ } = f;
233
+ for (c in ++g.pMVersion, ++g.vLVersion, g.verList[0] = g.pMVersion + g.vLVersion,
234
+ y) y[c] = u[c];
235
+ for (S in C) C[S] = v[S];
236
+ q(f);
218
237
  }
219
238
  }
220
239
  if (m) {
@@ -224,32 +243,33 @@ class a {
224
243
  keyToSnapshotMap: s
225
244
  } = e, {
226
245
  snapshotNum: a,
227
- combinedSnapshotNumList: t,
246
+ combinedSnapshotNumVerList: t,
228
247
  posMap: p
229
248
  } = d, i = n[a], {
230
249
  posMap: r,
231
250
  info: o
232
251
  } = i;
233
- for (M in r) r[M] = p[M];
234
- V(i);
252
+ for (M in ++o.pMVersion, ++o.vLVersion, o.verList[0] = o.pMVersion + o.vLVersion,
253
+ r) r[M] = p[M];
254
+ q(i);
235
255
  let h = o.totalCount, c = i.outdatedCount;
236
- for (let o of t) {
237
- var I, q = n[o];
256
+ for (let [ o ] of t) {
257
+ var V, I = n[o];
238
258
  let {
239
259
  posMap: a,
240
260
  info: t
241
- } = q;
242
- for (I in a) r[I] = p[I], s[I] = i;
243
- V(q), h += t.totalCount, c += q.outdatedCount, e.delSnapshot(q);
261
+ } = I;
262
+ for (V in a) r[V] = p[V], s[V] = i;
263
+ q(I), h += t.totalCount, c += I.outdatedCount, e.delSnapshot(I);
244
264
  }
245
- ++o.pMVersion, ++o.vLVersion, o.totalCount = h, i.outdatedCount = c;
265
+ o.totalCount = h, i.outdatedCount = c;
246
266
  }
247
- this.snapshotSavedChangeId >= this.compactMaxChangeId ? (x(this), this.compactState = 1) : this.compactState = 3;
267
+ this.snapshotSavedChangeId >= this.compactMaxChangeId ? (L(this), this.compactState = 1) : this.compactState = 3;
248
268
  }
249
269
  }
250
270
  }
251
271
 
252
- function V(a) {
272
+ function q(a) {
253
273
  var {
254
274
  info: t,
255
275
  compactOutedCount: o
@@ -265,7 +285,7 @@ function l(a) {
265
285
  qySnapshots: o,
266
286
  qySnapshotCompactor: e
267
287
  } = a, {
268
- emptySnapshotNumList: o,
288
+ emptySnapshotNumVerList: o,
269
289
  pMCompactSnapshotList: n,
270
290
  vLCompactSnapshotList: s,
271
291
  combiningSnapshotList: p
@@ -278,7 +298,7 @@ function l(a) {
278
298
  for (var i of [ n, s, p ]) for (var r of i) r.compactOutedCount = r.outdatedCount;
279
299
  e.compactSnapshots(n, s, p);
280
300
  }
281
- 0 < o.length && (a.emptySnapshotNumList.push(...o), a.snapshotSavedChangeId >= t ? h(a) : 1 == a.compactState && Object.assign(a, {
301
+ 0 < o.length && (a.emptySnapshotNumVerList.push(...o), a.snapshotSavedChangeId >= t ? h(a) : 1 == a.compactState && Object.assign(a, {
282
302
  compactState: 3,
283
303
  compactMaxChangeId: t
284
304
  }));
@@ -295,12 +315,12 @@ function d(a, t) {
295
315
  function h(a) {
296
316
  var {
297
317
  qyKVDataCleaner: a,
298
- emptySnapshotNumList: t
318
+ emptySnapshotNumVerList: t
299
319
  } = a;
300
320
  0 < t.length && (a.removeSnapshotsFiles(t), t.length = 0);
301
321
  }
302
322
 
303
- function x(a) {
323
+ function L(a) {
304
324
  a.qySnapshotCompactor.saveSnapshotInfos(), h(a);
305
325
  }
306
326
 
@@ -1,5 +1,11 @@
1
1
  import { QyMessageWorker } from "./QyMessageWorker.ts";
2
2
  export default class QyKVDataCleaner_Worker extends QyMessageWorker {
3
+ kvFolder: any;
4
+ snapshotFolder: any;
5
+ snapshotInfoFolder: any;
6
+ aclFolder: any;
7
+ historyAclFolder: any;
8
+ historySnapshotFolder: any;
3
9
  constructor({ kvFolder, options }: {
4
10
  kvFolder: any;
5
11
  options: any;
@@ -9,5 +15,5 @@ export default class QyKVDataCleaner_Worker extends QyMessageWorker {
9
15
  _op_cleanAclFiles(maxSnapshotNum: any): Promise<void>;
10
16
  _op_cleanPMFiles(pMChangeList: any): Promise<void>;
11
17
  _op_cleanVLFiles(snapshotNum: any, vLVersion: any): Promise<void>;
12
- _op_removeSnapshotsFiles(snapshotNumList: any): Promise<void>;
18
+ _op_removeSnapshotsFiles(snapshotNumVersionList: any): Promise<void>;
13
19
  }
@@ -1,15 +1,15 @@
1
1
  import {
2
- join as c
2
+ join as m
3
3
  } from "node:path";
4
4
 
5
5
  import {
6
- rm as m,
6
+ rm as c,
7
7
  rename as r,
8
- readdir as f
8
+ readdir as h
9
9
  } from "node:fs/promises";
10
10
 
11
11
  import {
12
- getDefaultOptions as o
12
+ getDefaultOptions as a
13
13
  } from "./QyDefaultOptions.js";
14
14
 
15
15
  import {
@@ -17,8 +17,8 @@ import {
17
17
  } from "./QyMessageWorker.js";
18
18
 
19
19
  import {
20
- folderOrFileExists as h,
21
- ensureDir as d
20
+ folderOrFileExists as d,
21
+ ensureDir as F
22
22
  } from "./QyUtils.js";
23
23
 
24
24
  import {
@@ -26,85 +26,99 @@ import {
26
26
  Zip_File_Extension as i
27
27
  } from "./QyCompressor.js";
28
28
 
29
+ import {
30
+ logger as f
31
+ } from "./QyLogger.js";
32
+
33
+ import {
34
+ getInfoFileName as l
35
+ } from "./QySnapshots.js";
36
+
29
37
  export default class extends e {
38
+ kvFolder;
39
+ snapshotFolder;
40
+ snapshotInfoFolder;
41
+ aclFolder;
42
+ historyAclFolder;
43
+ historySnapshotFolder;
30
44
  constructor({
31
45
  kvFolder: e,
32
46
  options: s
33
47
  }) {
34
48
  super(s = {
35
- ...o("QyKVDataCleaner_Worker"),
49
+ ...a("QyKVDataCleaner_Worker"),
36
50
  ...s
37
51
  }, [], [ "cleanAclFiles", "cleanPMFiles", "cleanVLFiles", "removeSnapshotsFiles" ]);
38
- var s = c(e, "history"), a = c(e, "snapshot");
52
+ var s = m(e, "history"), o = m(e, "snapshot");
39
53
  Object.assign(this, {
40
54
  kvFolder: e,
41
- snapshotFolder: a,
42
- snapshotInfoFolder: c(a, "info"),
43
- aclFolder: c(e, "acl"),
44
- historyAclFolder: c(s, "acl"),
45
- historySnapshotFolder: c(s, "snapshot")
55
+ snapshotFolder: o,
56
+ snapshotInfoFolder: m(o, "info"),
57
+ aclFolder: m(e, "acl"),
58
+ historyAclFolder: m(s, "acl"),
59
+ historySnapshotFolder: m(s, "snapshot")
46
60
  });
47
61
  }
48
62
  _op_start() {}
49
63
  _op_stop() {}
50
64
  async _op_cleanAclFiles(e) {
51
- var s = this, a = e, e = s.aclFolder;
52
- if (await h(e)) {
53
- var o, r = [];
54
- for (o of (await f(e)).filter(e => /^[1-9]/.test(e))) parseInt(o) <= a && r.push((async (e, s) => {
65
+ var s = this, o = e, e = s.aclFolder;
66
+ if (await d(e)) {
67
+ var a, r = [];
68
+ for (a of (await h(e)).filter(e => /^[1-9]/.test(e))) parseInt(a) <= o && r.push((async (e, s) => {
55
69
  var {
56
- aclFolder: a,
57
- historyAclFolder: o
70
+ aclFolder: o,
71
+ historyAclFolder: a
58
72
  } = e;
59
- return await d(o), F(e, s, a, o);
60
- })(s, o));
73
+ return await F(a), y(e, s, o, a);
74
+ })(s, a));
61
75
  0 < r.length && await Promise.allSettled(r);
62
76
  }
63
77
  }
64
78
  async _op_cleanPMFiles(e) {
65
79
  await Promise.allSettled(e.map(([ e, s ]) => {
66
- return a = this, o = e, r = s, Promise.all([ "pM", "prefixPM" ].map(e => l(a, o, r, e)));
67
- var a, o, r;
80
+ return o = this, a = e, r = s, Promise.all([ "pM", "prefixPM" ].map(e => n(o, a, r, e)));
81
+ var o, a, r;
68
82
  }));
69
83
  }
70
84
  async _op_cleanVLFiles(e, s) {
71
- await l(this, e, s, "vL");
85
+ await n(this, e, s, "vL");
72
86
  }
73
87
  async _op_removeSnapshotsFiles(e) {
74
88
  let {
75
- snapshotFolder: a,
76
- snapshotInfoFolder: o
89
+ snapshotFolder: o,
90
+ snapshotInfoFolder: a
77
91
  } = this;
78
- await Promise.all(e.map(async s => {
79
- await m(c(o, s + ".json")), await Promise.all([ "pM", "prefixPM", "vL" ].map(e => l(this, s, 1 / 0, e))),
80
- await m(c(a, "" + s), {
92
+ await Promise.all(e.map(async ([ s, e ]) => {
93
+ await c(m(a, l(s, e))), await Promise.all([ "pM", "prefixPM", "vL" ].map(e => n(this, s, 1 / 0, e))),
94
+ await c(m(o, "" + s), {
81
95
  recursive: !0
82
96
  });
83
97
  }));
84
98
  }
85
99
  }
86
100
 
87
- function F(e, s, a, o) {
88
- a = c(a, s), o = c(o, s);
89
- return e.options.compressRedundantFile ? t(a, o + i, {
101
+ function y(e, s, o, a) {
102
+ o = m(o, s), a = m(a, s);
103
+ return e.options.compressRedundantFile ? t(o, a + i, {
90
104
  override: !0,
91
105
  removeSrcAfterSuccess: !0
92
- }) : (logger.info(`rename ${a} to ` + o), r(a, o));
106
+ }) : (f.info(`rename ${o} to ` + a), r(o, a));
93
107
  }
94
108
 
95
- async function l(s, a, o, r) {
109
+ async function n(s, o, a, r) {
96
110
  var {
97
111
  snapshotFolder: e,
98
112
  historySnapshotFolder: t
99
- } = s, i = c(e, "" + a);
100
- if (await h(i)) {
113
+ } = s, i = m(e, "" + o);
114
+ if (await d(i)) {
101
115
  let e;
102
116
  var l, n = [];
103
- for (l of await f(i)) {
117
+ for (l of await h(i)) {
104
118
  var p = new RegExp("^([0-9]+)_" + r).exec(l);
105
- p && (p = parseInt(p[1])) < o && (1 == p ? (e || (e = c(t, "" + a),
106
- await d(e)), n.push(F(s, l, i, e))) : (p = c(i, l), logger.info("Removing " + p),
107
- n.push(m(p))));
119
+ p && (p = parseInt(p[1])) < a && (1 == p ? (e || (e = m(t, "" + o),
120
+ await F(e)), n.push(y(s, l, i, e))) : (p = m(i, l), f.info("Removing " + p),
121
+ n.push(c(p))));
108
122
  }
109
123
  0 < n.length && await Promise.allSettled(n);
110
124
  }
@@ -1,8 +1,16 @@
1
1
  export declare class QyKVDataLoader {
2
+ options: any;
3
+ kvFolder: any;
4
+ aclFolder: any;
5
+ snapshotFolder: any;
6
+ qySnapshots: any;
7
+ loadedMaxAclNum: number;
8
+ aclKeyValueMap: any;
9
+ maxChangeId: number;
2
10
  constructor(kvFolder: any, options: any);
3
11
  load(): Promise<{
4
- maxChangeId: any;
5
- loadedMaxAclNum: any;
12
+ maxChangeId: number;
13
+ loadedMaxAclNum: number;
6
14
  qySnapshots: any;
7
15
  aclKeyValueMap: any;
8
16
  }>;
@@ -1,10 +1,10 @@
1
1
  import {
2
- readFile as y,
2
+ readFile as u,
3
3
  readdir as x
4
4
  } from "node:fs/promises";
5
5
 
6
6
  import {
7
- join as o
7
+ join as t
8
8
  } from "node:path";
9
9
 
10
10
  import {
@@ -12,7 +12,7 @@ import {
12
12
  } from "./QyUtils.js";
13
13
 
14
14
  import {
15
- readAclBuffer as M
15
+ readAclBuffer as F
16
16
  } from "./QyAcl.js";
17
17
 
18
18
  import {
@@ -24,20 +24,26 @@ import {
24
24
  } from "./QyDefaultOptions.js";
25
25
 
26
26
  class a {
27
+ options;
28
+ kvFolder;
29
+ aclFolder;
30
+ snapshotFolder;
31
+ qySnapshots;
32
+ loadedMaxAclNum = 0;
33
+ aclKeyValueMap = {};
34
+ maxChangeId = 0;
27
35
  constructor(a, s) {
28
36
  s = {
29
37
  ...l("QyKVDataLoader"),
30
38
  ...s
31
39
  };
32
- var t = o(a, "snapshot");
40
+ var o = t(a, "snapshot");
33
41
  Object.assign(this, {
34
42
  kvFolder: a,
35
43
  options: s,
36
- aclFolder: o(a, "acl"),
37
- snapshotFolder: t,
38
- loadedMaxAclNum: 0,
39
- aclKeyValueMap: {},
40
- qySnapshots: new e(t, s)
44
+ aclFolder: t(a, "acl"),
45
+ snapshotFolder: o,
46
+ qySnapshots: new e(o, s)
41
47
  });
42
48
  }
43
49
  async load() {
@@ -45,19 +51,19 @@ class a {
45
51
  if (a = a.aclFolder, await g(a)) return (await x(a)).filter(a => /^[1-9]/.test(a)).map(a => parseInt(a));
46
52
  })(this), a.loadSnapshotInfos() ]);
47
53
  let {
48
- maxSnapshotNum: t,
49
- snapshotMaxChangeId: o
54
+ maxSnapshotNum: o,
55
+ snapshotMaxChangeId: t
50
56
  } = a;
51
- if (this.maxChangeId = o, s) {
52
- var e = this, l = s.filter(a => a > t), {
57
+ if (this.maxChangeId = t, s) {
58
+ var e = this, l = s.filter(a => a > o), {
53
59
  aclKeyValueMap: r,
54
- qySnapshots: i,
60
+ qySnapshots: n,
55
61
  options: s
56
- } = (l.sort((a, s) => a - s), e), n = s.autoRepairAclFile, p = await Promise.all(l.map(async a => y(F(e, a))));
62
+ } = (l.sort((a, s) => a - s), e), i = s.autoRepairAclFile, p = await Promise.all(l.map(async a => u(I(e, a))));
57
63
  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);
64
+ var d = l[a], m = I(e, d), m = await F(m, p[a], i, e.maxChangeId);
59
65
  if (0 < m.length) {
60
- for (var [ h, c ] of m) i.applyCmdObj(c, r), e.maxChangeId = h;
66
+ for (var [ h, c ] of m) n.applyCmdObj(c, r), e.maxChangeId = h;
61
67
  e.loadedMaxAclNum = d;
62
68
  }
63
69
  }
@@ -66,19 +72,19 @@ class a {
66
72
  var {
67
73
  maxChangeId: s,
68
74
  loadedMaxAclNum: f,
69
- aclKeyValueMap: u
75
+ aclKeyValueMap: y
70
76
  } = this;
71
77
  return {
72
78
  maxChangeId: s,
73
79
  loadedMaxAclNum: f,
74
80
  qySnapshots: a,
75
- aclKeyValueMap: u
81
+ aclKeyValueMap: y
76
82
  };
77
83
  }
78
84
  }
79
85
 
80
- function F(a, s) {
81
- return o(a.aclFolder, s + "_acl.txt");
86
+ function I(a, s) {
87
+ return t(a.aclFolder, s + "_acl.txt");
82
88
  }
83
89
 
84
90
  export {
@@ -1,5 +1,15 @@
1
1
  import { QyMessageWorker } from "./QyMessageWorker.ts";
2
2
  export default class QyKVDataSaver_Worker extends QyMessageWorker {
3
+ kvFolder: any;
4
+ aclFolder: any;
5
+ qyAclSaver: any;
6
+ qySnapshotSaver: any;
7
+ isStopping: any;
8
+ currentAclNum: any;
9
+ maxChangeId: any;
10
+ snapshotMaxChangeId: any;
11
+ isSavingSnapshot: any;
12
+ saveSnapshotResolve: any;
3
13
  constructor({ kvFolder, options }: {
4
14
  kvFolder: any;
5
15
  options: any;
@@ -19,10 +19,24 @@ import {
19
19
  } from "./QySnapshotSaver.js";
20
20
 
21
21
  import {
22
- delCmdKey as u
22
+ delCmdKey as m
23
23
  } from "./QyAcl.js";
24
24
 
25
+ import {
26
+ logger as r
27
+ } from "./QyLogger.js";
28
+
25
29
  export default class extends a {
30
+ kvFolder;
31
+ aclFolder;
32
+ qyAclSaver;
33
+ qySnapshotSaver;
34
+ isStopping;
35
+ currentAclNum;
36
+ maxChangeId;
37
+ snapshotMaxChangeId;
38
+ isSavingSnapshot;
39
+ saveSnapshotResolve;
26
40
  constructor({
27
41
  kvFolder: a,
28
42
  options: s
@@ -46,7 +60,7 @@ export default class extends a {
46
60
  maxChangeId: a,
47
61
  snapshotMaxChangeId: a,
48
62
  currentAclNum: (t || s) + 1
49
- }), o && o.start(m(this)), n.start(a, t, e);
63
+ }), o && o.start(d(this)), n.start(a, t, e);
50
64
  }
51
65
  async _op_stop() {
52
66
  var {
@@ -58,13 +72,13 @@ export default class extends a {
58
72
  snapshotMaxChangeId: n
59
73
  } = this;
60
74
  return this.isStopping = !0, a && await a.stop(), s.saveSnapshotAtStop && n < o && (this.isSavingSnapshot && await new Promise(a => this.saveSnapshotResolve = a),
61
- logger.log(`Saving snapshot ${e} at stop.`), t.saveSnapshot(e)), t.stop();
75
+ r.log(`Saving snapshot ${e} at stop.`), t.saveSnapshot(e)), t.stop();
62
76
  }
63
77
  callSave(a, s, t) {
64
- return r(this, a, s, t, !0);
78
+ return h(this, a, s, t, !0);
65
79
  }
66
80
  castSave(a, s, t) {
67
- return r(this, a, s, t);
81
+ return h(this, a, s, t);
68
82
  }
69
83
  releaseSnapshot(a) {
70
84
  this.qySnapshotSaver.releaseSnapshot(a);
@@ -74,7 +88,7 @@ export default class extends a {
74
88
  }
75
89
  }
76
90
 
77
- function r(a, s, t, e, o) {
91
+ function h(a, s, t, e, o = !1) {
78
92
  var {
79
93
  qyAclSaver: n,
80
94
  qySnapshotSaver: r,
@@ -88,15 +102,15 @@ function r(a, s, t, e, o) {
88
102
  var l = t, c = e;
89
103
  if (c) {
90
104
  var g = c.length;
91
- for (let a = 0; a < g; a += 2) u(l, c[a]);
105
+ for (let a = 0; a < g; a += 2) m(l, c[a]);
92
106
  }
93
107
  return r.castSave(s, t, e), a.maxChangeId = s, !S && s - i >= h.snapshotMaxChangeCount && (++a.currentAclNum,
94
- n && n.switch(m(a)), r.saveSnapshot(p), Object.assign(a, {
108
+ n && n.switch(d(a)), r.saveSnapshot(p), Object.assign(a, {
95
109
  snapshotMaxChangeId: s,
96
110
  isSavingSnapshot: !0
97
111
  })), v;
98
112
  }
99
113
 
100
- function m(a) {
114
+ function d(a) {
101
115
  return t(a.aclFolder, a.currentAclNum + "_acl.txt");
102
116
  }
@@ -1,5 +1,6 @@
1
1
  import { QyMessageWorker } from "./QyMessageWorker.ts";
2
2
  export default class QyLogFileSaver_Worker extends QyMessageWorker {
3
+ qyBinWriter: any;
3
4
  constructor(options: any);
4
5
  _op_start(logFilePath: any): Promise<void>;
5
6
  _op_stop(): Promise<void>;