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/QyBatch.js CHANGED
@@ -3,7 +3,7 @@ import {
3
3
  } from "node:util";
4
4
 
5
5
  import {
6
- mergeContentAndGenDelta as l,
6
+ mergeContentAndGenDelta as c,
7
7
  objToDelMarks as i
8
8
  } from "./QyFileContentUtils.js";
9
9
 
@@ -15,7 +15,7 @@ import {
15
15
  getSuffix as g,
16
16
  SpecialFilePaths as t,
17
17
  toSingleName as C,
18
- isSimpleType as c
18
+ isSimpleType as l
19
19
  } from "./QyUtils.js";
20
20
 
21
21
  import {
@@ -35,17 +35,28 @@ import {
35
35
  } from "./QyCD.js";
36
36
 
37
37
  import {
38
- getPrefixPropPaths as D
38
+ getPrefixPropPaths as y
39
39
  } from "./QyIndexPropTree.js";
40
40
 
41
- let u = Array.isArray, f = e.$del, y = t.IndexPropPathsFileName, p = {
41
+ import {
42
+ logger as D
43
+ } from "./QyLogger.js";
44
+
45
+ let u = Array.isArray, f = e.$del, v = t.IndexPropPathsFileName, p = {
42
46
  none: 0,
43
47
  basic: 1,
44
48
  delta: 2,
45
49
  all: 3
46
50
  };
47
51
 
48
- class v extends m {
52
+ class _ extends m {
53
+ fileLogLevel;
54
+ actionQueue;
55
+ changeId;
56
+ changeList;
57
+ syncList;
58
+ qyAclCmdGenerator;
59
+ qyCmdObjHistory;
49
60
  constructor(e, t) {
50
61
  super(e), t = {
51
62
  ...d("QyBatch"),
@@ -66,31 +77,31 @@ class v extends m {
66
77
  return s(e) && (e = n(e)), this.createDirP(e, t);
67
78
  }
68
79
  createDirP(e, t = this.currentDir) {
69
- return _(this, "createDir", this.qyCache?.getOrCreateDir(e, t));
80
+ return P(this, "createDir", this.qyCache?.getOrCreateDir(e, t));
70
81
  }
71
82
  delDir(e, t = this.currentDir) {
72
83
  return s(e) && (e = n(e)), this.delDirP(e, t);
73
84
  }
74
85
  delDirP(e, t = this.currentDir) {
75
- return _(this, "delDir", this.qyCache.getOrCreateDir(e, t));
86
+ return P(this, "delDir", this.qyCache.getOrCreateDir(e, t));
76
87
  }
77
88
  createFile(e, t = this.currentDir) {
78
89
  return s(e) && (e = n(e)), this.createFileP(e, t);
79
90
  }
80
91
  createFileP(e, t = this.currentDir) {
81
- return _(this, "createFile", this.qyCache.getOrCreateFile(e, t));
92
+ return P(this, "createFile", this.qyCache.getOrCreateFile(e, t));
82
93
  }
83
94
  delFile(e, t = this.currentDir) {
84
95
  return s(e) && (e = n(e)), this.delFileP(e, t);
85
96
  }
86
97
  delFileP(e, t = this.currentDir) {
87
- return _(this, "delFile", this.qyCache.getOrCreateFile(e, t));
98
+ return P(this, "delFile", this.qyCache.getOrCreateFile(e, t));
88
99
  }
89
100
  createIndex(e, t, r = this.currentDir) {
90
101
  return s(e) && (e = n(e)), this.createIndexP(e, t, r);
91
102
  }
92
103
  createIndexP(e, t, r = this.currentDir) {
93
- return u(t) || (t = [ t ]), _(this, "createIndex", this.qyCache?.getOrCreateDir(e, r), {
104
+ return u(t) || (t = [ t ]), P(this, "createIndex", this.qyCache?.getOrCreateDir(e, r), {
94
105
  indexPropPathList: t
95
106
  });
96
107
  }
@@ -98,7 +109,7 @@ class v extends m {
98
109
  return s(e) && (e = n(e)), this.delIndexP(e, t, r);
99
110
  }
100
111
  delIndexP(e, t, r = this.currentDir) {
101
- return _(this, "delIndex", this.qyCache.getOrCreateDir(e, r), {
112
+ return P(this, "delIndex", this.qyCache.getOrCreateDir(e, r), {
102
113
  indexPropPath: t
103
114
  });
104
115
  }
@@ -106,8 +117,8 @@ class v extends m {
106
117
  return s(e) && (e = n(e)), this.insertP(e, t, r);
107
118
  }
108
119
  insertP(e, t, r = this.currentDir) {
109
- return _(this, "insert", this.qyCache.getOrCreateFile(e, r), {
110
- content: c(t) ? t : structuredClone(t)
120
+ return P(this, "insert", this.qyCache.getOrCreateFile(e, r), {
121
+ content: l(t) ? t : structuredClone(t)
111
122
  });
112
123
  }
113
124
  remove(e, t, r = this.currentDir) {
@@ -130,28 +141,28 @@ class v extends m {
130
141
  return s(e) && (e = n(e)), this.delContentP(e, t);
131
142
  }
132
143
  delContentP(e, t = this.currentDir) {
133
- return _(this, "delContent", this.qyCache.getOrCreateFile(e, t));
144
+ return P(this, "delContent", this.qyCache.getOrCreateFile(e, t));
134
145
  }
135
146
  insertTrigger(e, t, r, i) {
136
147
  return s(t) && (t = n(t)), r = (r = s(r) ? [ r ] : r).map(e => s(e) ? a(e) : e),
137
- _(this, "insertTrigger", this.qyCache.getOrCreateTriggerFile(e), {
148
+ P(this, "insertTrigger", this.qyCache.getOrCreateTriggerFile(e), {
138
149
  fileNamePath: t,
139
150
  propNamePathList: r,
140
151
  modCode: i
141
152
  });
142
153
  }
143
154
  removeTrigger(e) {
144
- return _(this, "removeTrigger", this.qyCache.getOrCreateTriggerFile(e));
155
+ return P(this, "removeTrigger", this.qyCache.getOrCreateTriggerFile(e));
145
156
  }
146
157
  insertRpc(e, t) {
147
- return _(this, "insertRpc", this.qyCache.getOrCreateRpcFile(e), {
158
+ return P(this, "insertRpc", this.qyCache.getOrCreateRpcFile(e), {
148
159
  modCode: t
149
160
  });
150
161
  }
151
162
  removeRpc(e) {
152
- return _(this, "removeRpc", this.qyCache.getOrCreateRpcFile(e));
163
+ return P(this, "removeRpc", this.qyCache.getOrCreateRpcFile(e));
153
164
  }
154
- run(e) {
165
+ run(e = !1) {
155
166
  var {
156
167
  actionQueue: t,
157
168
  fileLogLevel: r,
@@ -165,17 +176,17 @@ class v extends m {
165
176
  changeList: t,
166
177
  qyAclCmdGenerator: s,
167
178
  qyCmdObjHistory: o,
168
- syncList: l
169
- } = this, c = t.length;
170
- if (0 == c) return i.decreaseChangeId(), 0;
171
- var h = g(c), s = s.takeCmdArgAsListObj();
179
+ syncList: c
180
+ } = this, l = t.length;
181
+ if (0 == l) return i.decreaseChangeId(), 0;
182
+ var h = g(l), s = s.takeCmdArgAsListObj();
172
183
  let d;
173
184
  0 < r && (r = t.map(({
174
185
  logStr: e
175
- }) => e).join("\n"), d = new Date().toISOString() + `: ${c} change${h}:
186
+ }) => e).join("\n"), d = new Date().toISOString() + `: ${l} change${h}:
176
187
  ${r}
177
188
  `);
178
- var m, u, c = i.save(a, s, d, (e => {
189
+ var m, u, l = i.save(a, s, d, (e => {
179
190
  var t = e.syncList, r = t.length;
180
191
  for (let e = 0; e < r; e += 2) {
181
192
  var i, n = e + 1, a = t[e], s = t[n];
@@ -183,7 +194,7 @@ ${r}
183
194
  t[n] = 0 < i.length ? i : void 0) : t[n] = s.fileContent;
184
195
  }
185
196
  if (0 < r) return t;
186
- })(this), e), h = (l.length = 0, o.push(s), t.filter(({
197
+ })(this), e), h = (c.length = 0, o.push(s), t.filter(({
187
198
  item: e,
188
199
  delta: t
189
200
  }) => t && 0 < e.triggerNodes?.length));
@@ -192,7 +203,7 @@ ${r}
192
203
  item: m,
193
204
  delta: u
194
205
  } of h) for (var f of m.triggerNodes) f.checkTrigger(m, u);
195
- return e ? c : a;
206
+ return e ? l : a;
196
207
  }
197
208
  getTopHistoryCmdObj() {
198
209
  return this.qyCmdObjHistory.top();
@@ -251,24 +262,23 @@ ${r}
251
262
  var e, {
252
263
  item: t,
253
264
  indexPropPathList: r
254
- } = t, i = this.qyCache.getOrCreateIndexDir(t), n = i.getOrCreateFile(y), {
265
+ } = t, i = this.qyCache.getOrCreateIndexDir(t), n = i.getOrCreateFile(v), {
255
266
  fileContent: a,
256
267
  qyIndexPropTree: s
257
268
  } = (n.created || this._action_createFile({
258
269
  item: n
259
- }), n), o = [], l = {};
270
+ }), n), o = [], c = {};
260
271
  for (e of r) {
261
- var c = C(e);
262
- a && a[c] || (o.push(e), l[c] = 1, s.insert(e));
272
+ var l = C(e);
273
+ a && a[l] || (o.push(e), c[l] = 1, s.insert(e));
263
274
  }
264
275
  if (0 != o.length) {
265
- logger.log(`Creating index ${JSON.stringify(o)} for ` + t.fullPath),
266
- this._action_insert({
276
+ D.log(`Creating index ${JSON.stringify(o)} for ` + t.fullPath), this._action_insert({
267
277
  item: n,
268
- content: l
278
+ content: c
269
279
  });
270
280
  {
271
- var h, d = this, m = t, u = i, r = D(o);
281
+ var h, d = this, m = t, u = i, r = y(o);
272
282
  let e;
273
283
  for (h of r) {
274
284
  var f = u.searchOrCreateSubdir(h);
@@ -294,7 +304,7 @@ ${r}
294
304
  item: e,
295
305
  indexPropPath: i
296
306
  } = e, e = this.qyCache.getIndexDir(e);
297
- e && ((r = e.getFile(y)) ? (t = r.qyIndexPropTree, this._action_insert({
307
+ e && ((r = e.getFile(v)) ? (t = r.qyIndexPropTree, this._action_insert({
298
308
  item: r,
299
309
  content: {
300
310
  [C(i)]: f
@@ -305,7 +315,7 @@ ${r}
305
315
  item: e
306
316
  }));
307
317
  }
308
- _action_delFile(e, t) {
318
+ _action_delFile(e, t = !1) {
309
319
  e.actionName = "delFile";
310
320
  var r = e.item;
311
321
  if (!r.created) return !1;
@@ -316,7 +326,7 @@ ${r}
316
326
  parentDir: i,
317
327
  name: n
318
328
  } = r;
319
- return r.created = !1, P(this, e), t || x(this, i, "R", i.fileMapKey, n),
329
+ return r.created = !1, x(this, e), t || L(this, i, "R", i.fileMapKey, n),
320
330
  !0;
321
331
  }
322
332
  _action_delDir(e) {
@@ -332,33 +342,33 @@ ${r}
332
342
  fileMapKey: o
333
343
  } = t;
334
344
  if (a) {
335
- x(this, t, "D", o);
336
- for (var l of t.fileList) this._action_delFile({
337
- item: l
345
+ L(this, t, "D", o);
346
+ for (var c of t.fileList) this._action_delFile({
347
+ item: c
338
348
  }, !0);
339
349
  }
340
350
  if (n) {
341
- x(this, t, "D", s);
342
- for (var c of t.allSubdirs()) {
351
+ L(this, t, "D", s);
352
+ for (var l of t.allSubdirs()) {
343
353
  let {
344
354
  subdirMap: e,
345
355
  fileMap: t,
346
356
  subdirMapKey: r,
347
357
  fileMapKey: i
348
- } = c;
349
- if (e && x(this, c, "D", r), t) {
350
- x(this, c, "D", i);
351
- for (var h of c.fileList) this._action_delFile({
358
+ } = l;
359
+ if (e && L(this, l, "D", r), t) {
360
+ L(this, l, "D", i);
361
+ for (var h of l.fileList) this._action_delFile({
352
362
  item: h
353
363
  }, !0);
354
364
  }
355
- P(this, {
365
+ x(this, {
356
366
  actionName: "delDir",
357
- item: c
358
- }), c.created = !1;
367
+ item: l
368
+ }), l.created = !1;
359
369
  }
360
370
  }
361
- return !!r && (t.created = !1, P(this, e), x(this, r, "R", r.subdirMapKey, i),
371
+ return !!r && (t.created = !1, x(this, e), L(this, r, "R", r.subdirMapKey, i),
362
372
  !0);
363
373
  }
364
374
  _action_delContent(e) {
@@ -370,7 +380,7 @@ ${r}
370
380
  oldValue: r,
371
381
  newValue: f
372
382
  }
373
- }), P(this, e), x(this, t, "D", t.fileContentKey), F(this, t, r), !0);
383
+ }), x(this, e), L(this, t, "D", t.fileContentKey), F(this, t, r), !0);
374
384
  }
375
385
  _action_insert(e) {
376
386
  e.actionName = "insert";
@@ -378,20 +388,20 @@ ${r}
378
388
  item: t,
379
389
  content: r
380
390
  } = e;
381
- if (null == r) return logger.warn(`Saving undefined to ${t.fullPath}. Not making any change.`),
391
+ if (null == r) return D.warn(`Saving undefined to ${t.fullPath}. Not making any change.`),
382
392
  !1;
383
393
  t.created || this._action_createFile({
384
394
  item: t
385
395
  });
386
- var i, n, r = l(t.fileContent, r), {
396
+ var i, n, r = c(t.fileContent, r), {
387
397
  merged: a,
388
398
  delta: s
389
399
  } = r;
390
400
  return !!s && ({
391
401
  oldValue: s,
392
402
  newValue: i
393
- } = s, !!i) && (n = t.fileContentKey, null == a ? x(this, t, "D", n) : x(this, t, "M", n, i),
394
- Object.assign(e, r), P(this, e), t.setContent(a), F(this, t, s, i, a), !0);
403
+ } = s, !!i) && (n = t.fileContentKey, null == a ? L(this, t, "D", n) : L(this, t, "M", n, i),
404
+ Object.assign(e, r), x(this, e), t.setContent(a), F(this, t, s, i, a), !0);
395
405
  }
396
406
  _action_createFile(e) {
397
407
  e.actionName = "createFile";
@@ -401,7 +411,7 @@ ${r}
401
411
  }), Object.assign(r, {
402
412
  created: !0,
403
413
  fileContentLoaded: !0
404
- }), P(this, e), x(this, t, "A", t.fileMapKey, r.name), !0);
414
+ }), x(this, e), L(this, t, "A", t.fileMapKey, r.name), !0);
405
415
  }
406
416
  _action_createDir(e) {
407
417
  e.actionName = "createDir";
@@ -413,18 +423,18 @@ ${r}
413
423
  created: !0,
414
424
  subdirMapLoaded: !0,
415
425
  fileMapLoaded: !0
416
- }), P(this, {
426
+ }), x(this, {
417
427
  actionName: "createDir",
418
428
  item: e
419
429
  });
420
430
  var i = e.parentDir;
421
- x(this, i, "A", i.subdirMapKey, e.name);
431
+ L(this, i, "A", i.subdirMapKey, e.name);
422
432
  }
423
433
  return !0;
424
434
  }
425
435
  }
426
436
 
427
- function _(e, t, r, i) {
437
+ function P(e, t, r, i) {
428
438
  return e.actionQueue.push({
429
439
  actionName: t,
430
440
  item: r,
@@ -432,7 +442,7 @@ function _(e, t, r, i) {
432
442
  }), e;
433
443
  }
434
444
 
435
- function P(e, t) {
445
+ function x(e, t) {
436
446
  var {
437
447
  changeList: e,
438
448
  fileLogLevel: r
@@ -456,7 +466,7 @@ function P(e, t) {
456
466
  })(t, r)), e.push(t);
457
467
  }
458
468
 
459
- function x(e, t, r, i, n) {
469
+ function L(e, t, r, i, n = void 0) {
460
470
  var {
461
471
  qyAclCmdGenerator: e,
462
472
  qyCache: a,
@@ -467,7 +477,7 @@ function x(e, t, r, i, n) {
467
477
  a && a.qyKVData.removeKey(i) && s.push(i, t);
468
478
  }
469
479
 
470
- function F(e, t, r, i, n) {
480
+ function F(e, t, r, i = void 0, n = void 0) {
471
481
  var {
472
482
  underHiddenFolder: t,
473
483
  name: a,
@@ -476,27 +486,27 @@ function F(e, t, r, i, n) {
476
486
  if (!t) {
477
487
  var o = e.qyCache.getIndexDir(s);
478
488
  if (o) {
479
- t = o.getFile(y);
480
- if (t) for (var l of t.qyIndexPropTree.getAllIndexPropPaths()) N(e, o.searchOrCreateSubdir(l), l, a, r, i, n);
489
+ t = o.getFile(v);
490
+ if (t) for (var c of t.qyIndexPropTree.getAllIndexPropPaths()) N(e, o.searchOrCreateSubdir(c), c, a, r, i, n);
481
491
  }
482
492
  }
483
493
  }
484
494
 
485
- function N(t, e, r, i, n, a, s) {
495
+ function N(t, e, r, i, n, a, s = void 0) {
486
496
  e = h(e, r, i, n, a, s);
487
497
  if (e) {
488
- var o, l, c, {
498
+ var o, c, l, {
489
499
  toAddFileList: r,
490
500
  toDelFileList: i
491
501
  } = e;
492
502
  for (o of r) t._action_createFile({
493
503
  item: o
494
504
  });
495
- for (l of i) t._action_delFile({
496
- item: l
505
+ for (c of i) t._action_delFile({
506
+ item: c
497
507
  });
498
- for (c of i) {
499
- let e = c.parentDir;
508
+ for (l of i) {
509
+ let e = l.parentDir;
500
510
  for (;e.created && !e.isHiddenFolder && e.isEmpty; ) t._action_delDir({
501
511
  item: e
502
512
  }), e = e.parentDir;
@@ -505,6 +515,9 @@ function N(t, e, r, i, n, a, s) {
505
515
  }
506
516
 
507
517
  class O {
518
+ maxLength;
519
+ actionQueue;
520
+ nextPos;
508
521
  constructor(e) {
509
522
  Object.assign(this, {
510
523
  maxLength: e,
@@ -530,5 +543,5 @@ class O {
530
543
  }
531
544
 
532
545
  export {
533
- v as QyBatch
546
+ _ as QyBatch
534
547
  };
@@ -1,12 +1,17 @@
1
1
  import { QyOpRunner } from "./QyOpRunner.ts";
2
2
  export declare class QyBinWriter extends QyOpRunner {
3
- constructor(options: any, filePath: any);
4
- getFilePath(): any;
5
- getTotalSavedSize(): any;
3
+ _filePath: any;
4
+ _totalSavedSize: number;
5
+ fileHandle: any;
6
+ constructor(options?: any, filePath?: any);
7
+ get filePath(): any;
8
+ set filePath(val: any);
9
+ get totalSavedSize(): number;
10
+ set totalSavedSize(val: number);
6
11
  save(changeId: any, data: any, needPromise: any): any;
7
12
  truncate(): any;
8
13
  switch(newFilePath: any): any;
9
- getBinData(dataQueue: any): any;
14
+ getBinData(dataQueue: any, changeId?: undefined): any;
10
15
  _op_start(filePath: any): Promise<this>;
11
16
  _op_stop(): Promise<void>;
12
17
  _op_save(changeId: any, dataQueue: any): Promise<void> | undefined;
@@ -3,149 +3,162 @@ import {
3
3
  } from "node:fs/promises";
4
4
 
5
5
  import {
6
- QyOpRunner as e
6
+ QyOpRunner as t
7
7
  } from "./QyOpRunner.js";
8
8
 
9
9
  import {
10
10
  ensureParentDir as n,
11
11
  getSize as o,
12
- getSizeStr as g,
13
- sleep as v,
12
+ getSizeStr as v,
13
+ sleep as _,
14
14
  setPromise as l,
15
- toBuffer as _
15
+ toBuffer as S
16
16
  } from "./QyUtils.js";
17
17
 
18
18
  import {
19
19
  getDefaultOptions as a
20
20
  } from "./QyDefaultOptions.js";
21
21
 
22
+ import {
23
+ logger as y
24
+ } from "./QyLogger.js";
25
+
22
26
  let h = Array.isArray;
23
27
 
24
- class t extends e {
25
- constructor(e, t) {
28
+ class e extends t {
29
+ _filePath;
30
+ _totalSavedSize = 0;
31
+ fileHandle;
32
+ constructor(t = void 0, e = void 0) {
26
33
  super({
27
34
  ...a("QyBinWriter"),
28
- ...e
29
- }), this.filePath = t, p(this);
35
+ ...t
36
+ }), this.filePath = e, f(this);
37
+ }
38
+ get filePath() {
39
+ return this._filePath;
40
+ }
41
+ set filePath(t) {
42
+ this._filePath = t;
30
43
  }
31
- getFilePath() {
32
- return this.filePath;
44
+ get totalSavedSize() {
45
+ return this._totalSavedSize;
33
46
  }
34
- getTotalSavedSize() {
35
- return this.totalSavedSize;
47
+ set totalSavedSize(t) {
48
+ this._totalSavedSize = t;
36
49
  }
37
- save(e, t, a) {
38
- null == t && (t = e, e = 0);
50
+ save(t, e, a) {
51
+ null == e && (e = t, t = 0);
39
52
  var i, r = this.lastOp;
40
- return "_op_save" === r?.opFunName ? (i = r.args, i[0] = e, i = i[1], h(t) ? i.push(...t) : i.push(t),
53
+ return "_op_save" === r?.opFunName ? (i = r.args, i[0] = t, i = i[1], h(e) ? i.push(...e) : i.push(e),
41
54
  a && l(r), r.promise) : (i = {
42
55
  opFunName: "_op_save",
43
- args: [ e, h(t) ? t : [ t ] ]
56
+ args: [ t, h(e) ? e : [ e ] ]
44
57
  }, a ? this.pushAndRunWithPromise(i) : this.pushAndRun(i));
45
58
  }
46
59
  truncate() {
47
- var e = this.lastOp;
48
- return "_op_truncate" === e?.opFunName ? e.promise : this.pushAndRunWithPromise({
60
+ var t = this.lastOp;
61
+ return "_op_truncate" === t?.opFunName ? t.promise : this.pushAndRunWithPromise({
49
62
  opFunName: "_op_truncate"
50
63
  });
51
64
  }
52
- switch(e) {
53
- var t = this.lastOp;
54
- return "_op_switch" === t?.opFunName ? (t.args[0] = e, t.promise) : this.pushAndRunWithPromise({
65
+ switch(t) {
66
+ var e = this.lastOp;
67
+ return "_op_switch" === e?.opFunName ? (e.args[0] = t, e.promise) : this.pushAndRunWithPromise({
55
68
  opFunName: "_op_switch",
56
- args: [ e ]
69
+ args: [ t ]
57
70
  });
58
71
  }
59
- getBinData(e) {
60
- var t = e.length;
61
- return 0 == t ? "" : 1 == t ? e[0] : Buffer.isBuffer(e[0]) ? Buffer.concat(e) : Buffer.concat(e.map(e => Buffer.from(e)));
72
+ getBinData(t, e = 0) {
73
+ var a = t.length;
74
+ return 0 == a ? "" : 1 == a ? t[0] : Buffer.isBuffer(t[0]) ? Buffer.concat(t) : Buffer.concat(t.map(t => Buffer.from(t)));
62
75
  }
63
- async _op_start(e) {
64
- return await i(this, e = e || this.filePath), this;
76
+ async _op_start(t) {
77
+ return await i(this, t = t || this.filePath), this;
65
78
  }
66
79
  async _op_stop() {
67
80
  var {
68
- fileHandle: e,
69
- filePath: t
81
+ fileHandle: t,
82
+ filePath: e
70
83
  } = this;
71
- if (e) try {
72
- await e.close(), this.fileHandle = void 0;
73
- } catch (e) {
74
- logger.error(`Close ${t} failed:`, e);
84
+ if (t) try {
85
+ await t.close(), this.fileHandle = void 0;
86
+ } catch (t) {
87
+ y.error(`Close ${e} failed:`, t);
75
88
  }
76
- p(this);
89
+ f(this);
77
90
  }
78
- _op_save(e, t) {
79
- t = this.getBinData(t, e);
80
- if (t) return (async (e, t, a) => {
91
+ _op_save(t, e) {
92
+ e = this.getBinData(e, t);
93
+ if (e) return (async (t, e, a) => {
81
94
  let {
82
95
  fileHandle: i,
83
96
  totalSavedSize: r,
84
97
  filePath: s,
85
98
  options: n
86
- } = e, {
99
+ } = t, {
87
100
  emitSaveEvent: o,
88
101
  maxFileSize: l,
89
102
  maxRetryInterval: h,
90
- retryIntervalFactor: p
91
- } = n, u = _(a), f = u.length, c = `size ${g(f)} (MaxId:${t}) to ` + s, m;
92
- for (;"_op_truncate" !== e.firstOp?.opFunName; ) try {
93
- await i.appendFile(u, {
103
+ retryIntervalFactor: f
104
+ } = n, p = S(a), u = p.length, c = `size ${v(u)} (MaxId:${e}) to ` + s, d;
105
+ for (;"_op_truncate" !== t.firstOp?.opFunName; ) try {
106
+ await i.appendFile(p, {
94
107
  flush: !0
95
108
  });
96
- var d = e.totalSavedSize = r + f;
97
- return o && 0 < t && e.emit("save", t), void (!e.maxFileSizeEmitted && l && d > l && (e.maxFileSizeEmitted = !0,
98
- e.emit("maxFileSize", d)));
99
- } catch (e) {
100
- logger.error(`Saving ${c} failed:`, e, "Truncated back to " + r),
101
- await i.truncate(r), m = m ? Math.min(h, m * p) : 1, logger.log(`Retry in ${m} seconds`),
102
- await v(m);
109
+ var m = t.totalSavedSize = r + u;
110
+ return o && 0 < e && t.emit("save", e), void (!t.maxFileSizeEmitted && l && m > l && (t.maxFileSizeEmitted = !0,
111
+ t.emit("maxFileSize", m)));
112
+ } catch (t) {
113
+ y.error(`Saving ${c} failed:`, t, "Truncated back to " + r), await i.truncate(r),
114
+ d = d ? Math.min(h, d * f) : 1, y.log(`Retry in ${d} seconds`),
115
+ await _(d);
103
116
  }
104
- })(this, e, t);
117
+ })(this, t, e);
105
118
  }
106
119
  async _op_truncate() {
107
120
  var {
108
- fileHandle: e,
109
- filePath: t
121
+ fileHandle: t,
122
+ filePath: e
110
123
  } = this;
111
- if (e) try {
112
- await e.truncate(0), logger.info("Truncated " + t);
113
- } catch (e) {
114
- logger.error(`Truncate ${t} failed:`, e);
124
+ if (t) try {
125
+ await t.truncate(0), y.info("Truncated " + e);
126
+ } catch (t) {
127
+ y.error(`Truncate ${e} failed:`, t);
115
128
  }
116
- p(this);
129
+ f(this);
117
130
  }
118
- async _op_switch(e) {
131
+ async _op_switch(t) {
119
132
  var {
120
- fileHandle: t,
133
+ fileHandle: e,
121
134
  filePath: a
122
135
  } = this;
123
- t && a == e || (await i(this, e), logger.info(`Switched from ${a} to ` + e));
136
+ e && a == t || (await i(this, t), y.info(`Switched from ${a} to ` + t));
124
137
  }
125
138
  }
126
139
 
127
- async function i(e, t) {
140
+ async function i(t, e) {
128
141
  var {
129
142
  fileHandle: a,
130
143
  options: i
131
- } = e;
132
- p(e);
144
+ } = t;
145
+ f(t);
133
146
  try {
134
- a && (a.close(), e.fileHandle = void 0), await n(t);
147
+ a && (a.close(), t.fileHandle = void 0), await n(e);
135
148
  var r = i.append;
136
- e.fileHandle = await s(t, r ? "a" : "w"), e.filePath = t, r && (e.totalSavedSize = await o(t));
137
- } catch (e) {
138
- logger.error(`Open ${t} failed:`, e);
149
+ t.fileHandle = await s(e, r ? "a" : "w"), t.filePath = e, r && (t.totalSavedSize = await o(e));
150
+ } catch (t) {
151
+ y.error(`Open ${e} failed:`, t);
139
152
  }
140
153
  }
141
154
 
142
- function p(e) {
143
- Object.assign(e, {
155
+ function f(t) {
156
+ Object.assign(t, {
144
157
  totalSavedSize: 0,
145
158
  maxFileSizeEmitted: !1
146
159
  });
147
160
  }
148
161
 
149
162
  export {
150
- t as QyBinWriter
163
+ e as QyBinWriter
151
164
  };