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
@@ -1,5 +1,5 @@
1
1
  import {
2
- getDefaultOptions as s
2
+ getDefaultOptions as r
3
3
  } from "./QyDefaultOptions.js";
4
4
 
5
5
  import {
@@ -7,16 +7,17 @@ import {
7
7
  } from "./QyMessageWorker.js";
8
8
 
9
9
  import {
10
- QyBinWriter as r
10
+ QyBinWriter as s
11
11
  } from "./QyBinWriter.js";
12
12
 
13
13
  export default class extends t {
14
+ qyBinWriter;
14
15
  constructor(t) {
15
16
  super(t = {
16
- ...s("QyLogFileSaver_Worker"),
17
+ ...r("QyLogFileSaver_Worker"),
17
18
  ...t
18
19
  }), Object.assign(this, {
19
- qyBinWriter: new r(t)
20
+ qyBinWriter: new s(t)
20
21
  });
21
22
  }
22
23
  async _op_start(t) {
@@ -28,7 +29,7 @@ export default class extends t {
28
29
  async switch(t) {
29
30
  await this.qyBinWriter.switch(t);
30
31
  }
31
- save(t, s) {
32
- this.qyBinWriter.save(t, s);
32
+ save(t, r) {
33
+ this.qyBinWriter.save(t, r);
33
34
  }
34
35
  }
package/src/QyLogger.d.ts CHANGED
@@ -1,10 +1,21 @@
1
- export declare const logger: {
2
- currentLogLevel: number;
3
- info: (...args: any[]) => void;
4
- log: (...args: any[]) => void;
5
- debug: (...args: any[]) => void;
6
- warn: (...args: any[]) => void;
7
- error: (...args: any[]) => void;
8
- };
9
- export declare function closeFileConsole(): void;
10
- export declare function setFileConsoleDateDirPath(dateDirPath: any, clearLogAtStart: any): void;
1
+ export declare const ThreadMark: string;
2
+ declare class QyLogger {
3
+ _level: number;
4
+ fileConsole: any;
5
+ stdout: any;
6
+ stderr: any;
7
+ constructor();
8
+ get level(): string;
9
+ set level(val: string);
10
+ info(...args: any[]): void;
11
+ log(...args: any[]): void;
12
+ debug(...args: any[]): void;
13
+ warn(...args: any[]): void;
14
+ error(...args: any[]): void;
15
+ handleOutMsg(msg: any): void;
16
+ handleErrMsg(msg: any): void;
17
+ closeFileConsole(): void;
18
+ setFileConsoleDateDirPath(dateDirPath: string, clearLogAtStart?: boolean): void;
19
+ }
20
+ export declare const logger: QyLogger;
21
+ export {};
package/src/QyLogger.js CHANGED
@@ -1,87 +1,131 @@
1
1
  import o from "node:fs";
2
2
 
3
- import n from "node:path";
3
+ import r from "node:path";
4
4
 
5
5
  import {
6
- Console as t
6
+ Console as i
7
7
  } from "node:console";
8
8
 
9
9
  import {
10
- isMainThread as e,
11
- threadId as r
10
+ parentPort as n,
11
+ isMainThread as l,
12
+ threadId as e
12
13
  } from "node:worker_threads";
13
14
 
14
- let i = e ? "" : `W${r}:`, u = {
15
- Info: 0,
16
- Debug: 1,
17
- Warn: 2,
18
- Error: 3,
19
- None: 4
20
- }, c = {
21
- verbose: u.Info,
22
- info: u.Info,
23
- log: u.Debug,
24
- debug: u.Debug,
25
- warn: u.Warn,
26
- error: u.Error,
27
- none: u.None
28
- }, s = Object.fromEntries(Object.entries(c).map(([ e, r ]) => [ r, e ])), l = {
29
- currentLogLevel: u.Debug,
30
- info: function(...e) {
31
- l.currentLogLevel == u.Info && b("info", e);
32
- },
33
- log: function(...e) {
34
- l.currentLogLevel <= u.Debug && b("log", e);
35
- },
36
- debug: function(...e) {
37
- l.currentLogLevel <= u.Debug && b("debug", e);
38
- },
39
- warn: function(...e) {
40
- l.currentLogLevel <= u.Warn && b("warn", e);
41
- },
42
- error: function(...e) {
43
- l.currentLogLevel <= u.Error && b("error", e);
15
+ import {
16
+ Writable as t
17
+ } from "node:stream";
18
+
19
+ let a = l ? "" : `W${e}:`, d = {
20
+ info: 1,
21
+ debug: 2,
22
+ log: 3,
23
+ warn: 4,
24
+ error: 5,
25
+ none: 6
26
+ }, s = Object.fromEntries(Object.entries(d).map(([ e, t ]) => [ t, e ]));
27
+
28
+ class h {
29
+ _level = d.debug;
30
+ fileConsole;
31
+ stdout;
32
+ stderr;
33
+ constructor() {
34
+ var e, t;
35
+ l || (e = this.stdout = p("%o_"), t = this.stderr = p("%e_"), this.fileConsole = new i({
36
+ stdout: e,
37
+ stderr: t,
38
+ inspectOptions: {
39
+ depth: 3,
40
+ colors: !1
41
+ }
42
+ }));
43
+ }
44
+ get level() {
45
+ return s[this._level];
46
+ }
47
+ set level(e) {
48
+ this._level = d[e];
49
+ }
50
+ info(...e) {
51
+ c(this, "info", e);
52
+ }
53
+ log(...e) {
54
+ c(this, "log", e);
55
+ }
56
+ debug(...e) {
57
+ c(this, "debug", e);
58
+ }
59
+ warn(...e) {
60
+ c(this, "warn", e);
61
+ }
62
+ error(...e) {
63
+ c(this, "error", e);
44
64
  }
45
- }, a, g, f;
65
+ handleOutMsg(e) {
66
+ l ? u(this.stdout, e) : n?.postMessage(e);
67
+ }
68
+ handleErrMsg(e) {
69
+ l ? u(this.stderr, e) : n?.postMessage(e);
70
+ }
71
+ closeFileConsole() {
72
+ l && (this.fileConsole = void 0, this.stdout && (this.stdout.close(), this.stdout = void 0),
73
+ this.stderr) && (this.stderr.close(), this.stderr = void 0);
74
+ }
75
+ setFileConsoleDateDirPath(e, t = !1) {
76
+ var s;
77
+ l && (this.closeFileConsole(), t = {
78
+ flags: t ? "w" : "a",
79
+ flush: !0,
80
+ autoClose: !1
81
+ }, s = this.stdout = o.createWriteStream(r.join(e, "stdout.txt"), t), e = this.stderr = o.createWriteStream(r.join(e, "stderr.txt"), t),
82
+ this.fileConsole = new i({
83
+ stdout: s,
84
+ stderr: e,
85
+ inspectOptions: {
86
+ depth: 3,
87
+ colors: !1
88
+ }
89
+ }));
90
+ }
91
+ }
46
92
 
47
- function d() {
48
- a = void 0, g && (g.close(), g = void 0), f && (f.close(), f = void 0);
93
+ function u(e, t) {
94
+ var s, o;
95
+ e && ({
96
+ chunks: t,
97
+ chunk: s,
98
+ encoding: o
99
+ } = t, t ? e.writev(t) : e.write(s, o));
49
100
  }
50
101
 
51
- function L(e, r) {
52
- d();
53
- r = {
54
- flags: r ? "w" : "a",
55
- flush: !0,
56
- autoClose: !1
57
- };
58
- g = o.createWriteStream(n.join(e, "stdout.txt"), r), f = o.createWriteStream(n.join(e, "stderr.txt"), r),
59
- a = new t({
60
- stdout: g,
61
- stderr: f,
62
- inspectOptions: {
63
- depth: 3,
64
- colors: !1
65
- }
66
- });
102
+ function c(e, t, s) {
103
+ var o;
104
+ e._level <= d[t] && (o = ((o = (o = new Error().stack?.split("\n")) && /([^/\\()]+)\)?$/.exec(o[3] ?? "")) && o[1]) ?? "",
105
+ o = `${new Date().toISOString()} ${a}${o}:${t}:`, console[t](o, ...s), e.fileConsole) && e.fileConsole[t](o, ...s);
67
106
  }
68
107
 
69
- function b(e, r) {
70
- var o = new Error().stack?.split("\n"), o = o && /([^/\\()]+)\)?$/.exec(o[3] ?? ""), o = (o && o[1]) ?? "", o = `${new Date().toISOString()} ${i}${o}:${e}:`;
71
- console[e](o, ...r), a && a[e](o, ...r);
108
+ function p(o) {
109
+ return new t({
110
+ write(e, t, s) {
111
+ return n?.postMessage({
112
+ opName: o,
113
+ chunk: e,
114
+ encoding: t
115
+ }), s && s(), !0;
116
+ },
117
+ writev(e, t) {
118
+ return n?.postMessage({
119
+ opName: o,
120
+ chunks: e
121
+ }), t && t(), !0;
122
+ }
123
+ });
72
124
  }
73
125
 
74
- Object.defineProperty(l, "level", {
75
- get() {
76
- return s[l.currentLogLevel];
77
- },
78
- set(e) {
79
- l.currentLogLevel = c[e];
80
- }
81
- }), globalThis.logger = l;
126
+ var f = new h();
82
127
 
83
128
  export {
84
- l as logger,
85
- d as closeFileConsole,
86
- L as setFileConsoleDateDirPath
129
+ a as ThreadMark,
130
+ f as logger
87
131
  };
@@ -1,5 +1,5 @@
1
1
  import { QyOpRunner } from "./QyOpRunner.ts";
2
2
  export declare class QyMessageWorker extends QyOpRunner {
3
- constructor(options: any, callOpNameList: any, castOpNameList: any);
3
+ constructor(options: any, callOpNameList?: any[], castOpNameList?: any[]);
4
4
  castParent(opName: any, ...args: any[]): void;
5
5
  }
@@ -15,11 +15,11 @@ import {
15
15
  } from "./QyOpRunner.js";
16
16
 
17
17
  class e extends s {
18
- constructor(s, e, r) {
18
+ constructor(s, e = [], r = []) {
19
19
  super(s = {
20
20
  ...a("QyMessageWorker"),
21
21
  ...s
22
- }, e, r), o.on("message", async s => {
22
+ }, e, r), o?.on("message", async s => {
23
23
  var {
24
24
  opName: e,
25
25
  _cast: r
@@ -28,12 +28,12 @@ class e extends s {
28
28
  var a = s.args || [];
29
29
  try {
30
30
  var t = await this[e](...a);
31
- r || o.postMessage({
31
+ r || o?.postMessage({
32
32
  ack: e,
33
33
  result: t
34
34
  }), "stop" == e && process.exit();
35
35
  } catch (s) {
36
- n.error(`Running ${e} failed:`, s), r || o.postMessage({
36
+ n.error(`Running ${e} failed:`, s), r || o?.postMessage({
37
37
  ack: e,
38
38
  exception: s
39
39
  });
@@ -42,7 +42,7 @@ class e extends s {
42
42
  });
43
43
  }
44
44
  castParent(s, ...e) {
45
- o.postMessage({
45
+ o?.postMessage({
46
46
  opName: s,
47
47
  args: e,
48
48
  _cast: !0
@@ -1,5 +1,9 @@
1
1
  export declare class QyMessager {
2
- constructor(parent: any, workerTypeFileName: any, initArgMap: any, options: any, callOpNameList?: never[], castOpNameList?: never[]);
2
+ started: any;
3
+ worker: any;
4
+ receiverQueueMap: any;
5
+ options: any;
6
+ constructor(parent: any, workerTypeFileName: any, initArgMap: any, options: any, callOpNameList?: any[], castOpNameList?: any[]);
3
7
  start(...args: any[]): any;
4
8
  stop(...args: any[]): any;
5
9
  castWorker(opName: any, args: any): void;
package/src/QyMessager.js CHANGED
@@ -28,6 +28,10 @@ import {
28
28
  let k = e(import.meta.filename);
29
29
 
30
30
  class r {
31
+ started;
32
+ worker;
33
+ receiverQueueMap;
34
+ options;
31
35
  constructor(e, r, t, s, o = [], a = []) {
32
36
  s = {
33
37
  ...i("QyMessager"),
@@ -66,7 +70,8 @@ class r {
66
70
  ack: t,
67
71
  result: s
68
72
  } = e;
69
- r ? (e = e.args || [], (i.parent || i)[r](...e)) : o[t]?.shift().resolve(s);
73
+ r ? "%o_" == r ? n.handleOutMsg(e) : "%e_" == r ? n.handleErrMsg(e) : (e = e.args || [],
74
+ (i.parent || i)[r](...e)) : o[t]?.shift().resolve(s);
70
75
  }), a.on("exit", e => {
71
76
  for (var r in a.removeAllListeners(), 0 != e ? n.warn(`Worker ${s} stopped with exitCode ` + e) : n.info(`Worker ${s} stopped.`),
72
77
  o) for (var t = o[r]; !t.isEmpty; ) t.shift()?.resolve();
@@ -14,11 +14,12 @@ import {
14
14
  } from "node:worker_threads";
15
15
 
16
16
  import {
17
- logger as s
17
+ logger as s,
18
+ ThreadMark as n
18
19
  } from "./QyLogger.js";
19
20
 
20
21
  import {
21
- __dirname as n
22
+ __dirname as m
22
23
  } from "./QyUtils.js";
23
24
 
24
25
  (async () => {
@@ -27,5 +28,5 @@ import {
27
28
  workerTypeFileName: e,
28
29
  initArgMap: r
29
30
  } = i;
30
- new (await import(t("file://" + o(n, e)))).default(r);
31
+ new (await import(t("file://" + o(m, e)))).default(r), s.log("" + n + e);
31
32
  })();
package/src/QyMod.js CHANGED
@@ -1,16 +1,17 @@
1
- import a from "node:module";
1
+ import d from "node:module";
2
2
 
3
3
  import {
4
- logger as m
4
+ logger as s
5
5
  } from "./QyLogger.js";
6
6
 
7
- function o(r, e, t, o) {
8
- if (t) try {
9
- var i = r + "_" + e, l = `_${i}_qydb`, d = (globalThis[l] = o, new a(e));
10
- return d._compile(`(function(dataFolder){${t}})(${l});`, i + ".ts"), delete globalThis[l],
11
- d.exports;
7
+ function o(e, r, l, o) {
8
+ if (l) try {
9
+ var t = e + "_" + r, g = `_${t}_qydb`, i = `_${t}_logger`, a = (globalThis[g] = o,
10
+ globalThis[i] = s, new d(r));
11
+ return a._compile(`(function(dataFolder, logger){${l}})(${g},${i});`, t + ".ts"),
12
+ delete globalThis[g], delete globalThis[i], a.exports;
12
13
  } catch (o) {
13
- m.error("requireFromModCode failed:", r, e, t, o);
14
+ s.error("requireFromModCode failed:", e, r, l, o);
14
15
  }
15
16
  }
16
17
 
@@ -1,6 +1,10 @@
1
1
  import EventEmitter from "node:events";
2
2
  export declare class QyOpRunner extends EventEmitter {
3
- constructor(options: any, callOpNameList?: never[], castOpNameList?: never[]);
3
+ running: boolean;
4
+ opQueue: any;
5
+ options: any;
6
+ runningOp: any;
7
+ constructor(options: any, callOpNameList?: any[], castOpNameList?: any[]);
4
8
  get firstOp(): any;
5
9
  get lastOp(): any;
6
10
  finish(): any;
package/src/QyOpRunner.js CHANGED
@@ -17,15 +17,15 @@ import {
17
17
  } from "./QyQueue.js";
18
18
 
19
19
  class e extends t {
20
+ running = !1;
21
+ opQueue;
22
+ options;
23
+ runningOp;
20
24
  constructor(t, s = [], e = []) {
21
- super(), t = {
25
+ super(), t = this.options = {
22
26
  ...i("QyOpRunner"),
23
27
  ...t
24
- }, Object.assign(this, {
25
- options: t,
26
- running: !1,
27
- opQueue: new r(t)
28
- }), n(this, s, !0), n(this, e), n(this, [ "start", "stop" ], !0);
28
+ }, this.opQueue = new r(t), n(this, s, !0), n(this, e), n(this, [ "start", "stop" ], !0);
29
29
  }
30
30
  get firstOp() {
31
31
  return this.opQueue.first;
@@ -70,7 +70,7 @@ class e extends t {
70
70
  }
71
71
  }
72
72
 
73
- function n(i, t, r) {
73
+ function n(i, t, r = !1) {
74
74
  for (let e of t) {
75
75
  let s = "_op_" + e;
76
76
  if (i[e] || (i[e] = r ? (...t) => i.pushAndRunWithPromise({
package/src/QyQueue.d.ts CHANGED
@@ -1,9 +1,13 @@
1
1
  export declare class QyQueue {
2
+ options: any;
3
+ queue: any[];
4
+ firstIdx: number;
5
+ _waterMark: number;
2
6
  constructor(options: any);
3
7
  get first(): any;
4
8
  get last(): any;
5
9
  get isEmpty(): boolean;
6
- get waterMark(): any;
10
+ get waterMark(): number;
7
11
  pop(): any;
8
12
  reset(): void;
9
13
  push(...args: any[]): void;
package/src/QyQueue.js CHANGED
@@ -7,16 +7,15 @@ import {
7
7
  } from "./QyDefaultOptions.js";
8
8
 
9
9
  class s {
10
+ options;
11
+ queue = [];
12
+ firstIdx = 0;
13
+ _waterMark = 0;
10
14
  constructor(t) {
11
- t = {
15
+ this.options = {
12
16
  ...e("QyQueue"),
13
17
  ...t
14
- }, Object.assign(this, {
15
- options: t,
16
- queue: [],
17
- firstIdx: 0,
18
- _waterMark: 0
19
- });
18
+ };
20
19
  }
21
20
  get first() {
22
21
  return this.queue[this.firstIdx];
package/src/QySaver.d.ts CHANGED
@@ -1,8 +1,11 @@
1
1
  export declare class QySaver {
2
+ dataFolder: any;
3
+ options: any;
2
4
  constructor(dataFolder: any, options: any);
3
5
  setDataFolder(dataFolder: any): this;
4
6
  processAfterLoad(data: any): any;
5
7
  processBeforeSave(data: any): Buffer<any>;
8
+ removeFile(fileName: any): Promise<void>;
6
9
  loadFromFile(fileName: any, defaultValue: any): Promise<any>;
7
10
  saveToFile(data: any, fileName: any, override?: boolean): Promise<boolean>;
8
11
  _saveTmpFileAndRename(contentBuffer: any, tmpFilePath: any, targetFilePath: any): Promise<boolean>;
package/src/QySaver.js CHANGED
@@ -1,9 +1,10 @@
1
1
  import s, {
2
- readFile as i
2
+ readFile as a,
3
+ rm as e
3
4
  } from "node:fs/promises";
4
5
 
5
6
  import {
6
- join as c
7
+ join as f
7
8
  } from "node:path";
8
9
 
9
10
  import {
@@ -23,7 +24,9 @@ import {
23
24
  getDefaultOptions as t
24
25
  } from "./QyDefaultOptions.js";
25
26
 
26
- class e {
27
+ class i {
28
+ dataFolder;
29
+ options;
27
30
  constructor(e, r) {
28
31
  Object.assign(this, {
29
32
  dataFolder: e,
@@ -42,32 +45,40 @@ class e {
42
45
  processBeforeSave(e) {
43
46
  return r(e);
44
47
  }
45
- async loadFromFile(e, r) {
46
- var t = c(this.dataFolder, e);
47
- if (null != r && !await u(t)) return r;
48
+ async removeFile(r) {
49
+ r = f(this.dataFolder, r);
48
50
  try {
49
- var a = await i(t);
50
- return m.info(`Loading "${t}" succeeded. Total size:${o(a.length)}.`),
51
- this.processAfterLoad(a, e);
51
+ await e(r);
52
52
  } catch (e) {
53
- if (null != r) return r;
54
- m.error(`Loading "${t}" failed:`, e);
53
+ m.warn(`Deleting ${r} failed:`, e);
54
+ }
55
+ }
56
+ async loadFromFile(r, t) {
57
+ r = f(this.dataFolder, r);
58
+ if (null != t && !await u(r)) return t;
59
+ try {
60
+ var e = await a(r);
61
+ return m.info(`Loading "${r}" succeeded. Total size:${o(e.length)}.`),
62
+ this.processAfterLoad(e);
63
+ } catch (e) {
64
+ if (null != t) return t;
65
+ m.error(`Loading "${r}" failed:`, e);
55
66
  }
56
67
  }
57
68
  async saveToFile(e, t, r = !1) {
58
69
  var {
59
70
  dataFolder: a,
60
71
  options: i
61
- } = this, s = c(a, t);
72
+ } = this, s = f(a, t);
62
73
  if (!r && await u(s)) m.error(s + " already exists."); else {
63
74
  var {
64
75
  retryTimes: o,
65
76
  retryIntervalFactor: n,
66
77
  maxRetryInterval: l
67
- } = i, d = c(a, ".tmp", t), f = this.processBeforeSave(e, t);
78
+ } = i, d = f(a, ".tmp", t), c = this.processBeforeSave(e);
68
79
  let r;
69
80
  for (let e = 0; e < o; ++e) {
70
- if (await this._saveTmpFileAndRename(f, d, s)) return !0;
81
+ if (await this._saveTmpFileAndRename(c, d, s)) return !0;
71
82
  r = r ? Math.min(l, r * n) : 1, m.warn(`Retrying to create ${s} in ${r} seconds.`),
72
83
  await g(r);
73
84
  }
@@ -102,5 +113,5 @@ class e {
102
113
  }
103
114
 
104
115
  export {
105
- e as QySaver
116
+ i as QySaver
106
117
  };
@@ -1,5 +1,12 @@
1
1
  import { QyMessageWorker } from "./QyMessageWorker.ts";
2
2
  export default class QySnapshotCompactor_Worker extends QyMessageWorker {
3
+ kvFolder: any;
4
+ snapshotFolder: any;
5
+ qySnapshots: any;
6
+ qyKVDataCleaner: any;
7
+ pMInfoMap: any;
8
+ vLInfoMap: any;
9
+ combinedSnapshotNumVerList: any[];
3
10
  constructor({ kvFolder, options }: {
4
11
  kvFolder: any;
5
12
  options: any;