datafolder 1.0.5 → 1.0.7

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 (49) hide show
  1. package/README.md +5 -0
  2. package/internal.md +119 -0
  3. package/package.json +2 -2
  4. package/sample.js +19 -19
  5. package/scripts/convertBinFiles.js +49 -0
  6. package/scripts/fastify.js +2 -2
  7. package/src/QyAcl.js +44 -44
  8. package/src/QyAclSaver_Worker.js +2 -2
  9. package/src/QyAclWriter.js +1 -1
  10. package/src/QyBatch.js +1 -3
  11. package/src/QyBinWriter.js +65 -66
  12. package/src/QyCD.js +72 -27
  13. package/src/QyCache.js +39 -33
  14. package/src/QyDB.js +4 -30
  15. package/src/QyDefaultOptions.js +2 -1
  16. package/src/QyFetch.js +4 -22
  17. package/src/QyFileLogger.js +2 -2
  18. package/src/QyKVData.js +168 -183
  19. package/src/QyKVDataCleaner_Worker.js +15 -14
  20. package/src/QyKVDataSaver_Worker.js +20 -20
  21. package/src/QyLogFileSaver.js +1 -1
  22. package/src/QyLogFileSaver_Worker.js +2 -2
  23. package/src/QyMod.js +7 -7
  24. package/src/QyOpRunner.js +19 -16
  25. package/src/QySnapshotCompactor_Worker.js +54 -52
  26. package/src/QySnapshotSaver_Worker.js +55 -53
  27. package/src/QySnapshots.js +157 -147
  28. package/src/QyUnionNode.js +2 -2
  29. package/src/rpc/evalCode.js +4 -4
  30. package/src/rpc/getFileContent.js +4 -4
  31. package/src/rpc/getSubItems.js +12 -12
  32. package/src/rpc/getTriggerFiles.js +1 -0
  33. package/src/rpc/queryFiles.js +1 -1
  34. package/src/soc_pokec.js +7 -7
  35. package/static/codemirror.bundle/editor.bundle.js +27906 -0
  36. package/static/datafolderui/QyStyledElement.js +6 -15
  37. package/static/datafolderui/QyUIFolderTree.js +130 -145
  38. package/static/datafolderui/QyUIFolderViewer.js +210 -0
  39. package/static/datafolderui/QyUIUtils.js +10 -5
  40. package/static/datafolderui/code-mirror.js +35 -0
  41. package/static/datafolderui/display-tree.js +21 -94
  42. package/static/datafolderui/explore-tree.js +66 -81
  43. package/static/datafolderui/folder-tree.js +71 -2
  44. package/static/datafolderui/index.css +7 -0
  45. package/static/datafolderui/index.html +1 -0
  46. package/static/datafolderui/json-view.js +7 -3
  47. package/static/datafolderui/main-page.js +42 -60
  48. package/static/datafolderui/query-editor.js +178 -198
  49. package/static/datafolderui/trigger-editor.js +30 -0
@@ -1,26 +1,28 @@
1
1
  import {
2
- close as o,
2
+ close as e,
3
3
  readSync as i,
4
4
  openSync as p
5
5
  } from "node:fs";
6
6
 
7
7
  import {
8
8
  readdir as l,
9
- readFile as d
9
+ readFile as r
10
10
  } from "node:fs/promises";
11
11
 
12
12
  import {
13
13
  join as s
14
14
  } from "node:path";
15
15
 
16
+ import m from "node:zlib";
17
+
16
18
  import {
17
19
  getDefaultOptions as n
18
20
  } from "./QyDefaultOptions.js";
19
21
 
20
22
  import {
21
23
  Hash_Key_Length as u,
22
- folderOrFileExists as m,
23
- listToMap as r,
24
+ folderOrFileExists as d,
25
+ listToMap as f,
24
26
  isEmptyObj as h,
25
27
  isString as v
26
28
  } from "./QyUtils.js";
@@ -32,19 +34,19 @@ import {
32
34
  import {
33
35
  bufferToNums as g,
34
36
  numsToBuffer as y,
35
- applyAclChange as f,
37
+ applyAclChange as c,
36
38
  iterCmdKeys as S
37
39
  } from "./QyAcl.js";
38
40
 
39
41
  import {
40
- QyJsonSaver as c
42
+ QyJsonSaver as C
41
43
  } from "./QyJsonSaver.js";
42
44
 
43
45
  import {
44
- logger as C
46
+ logger as P
45
47
  } from "./QyLogger.js";
46
48
 
47
- let P = Array.isArray, x = Buffer.from("\n"), O = Buffer.from("'");
49
+ let x = Array.isArray, O = Buffer.from("\n"), F = Buffer.from("'"), j = Buffer.from("z"), L = F[0], b = j[0];
48
50
 
49
51
  class t {
50
52
  constructor(t, a) {
@@ -52,12 +54,12 @@ class t {
52
54
  ...n("QySnapshots"),
53
55
  ...a
54
56
  }).vLOutdatedPercent = 2 * a.pMOutdatedPercent;
55
- var e = s(t, "info");
57
+ var o = s(t, "info");
56
58
  Object.assign(this, {
57
59
  snapshotFolder: t,
58
- snapshotInfoFolder: e,
60
+ snapshotInfoFolder: o,
59
61
  options: a,
60
- qyJsonSaver: new c(e, a),
62
+ qyJsonSaver: new C(o, a),
61
63
  numToSnapshotMap: {},
62
64
  keyToSnapshotMap: {},
63
65
  fDMap: {},
@@ -70,73 +72,69 @@ class t {
70
72
  async loadSnapshotInfos() {
71
73
  let {
72
74
  snapshotInfoFolder: t,
73
- qyJsonSaver: h,
74
- numToSnapshotMap: f
75
+ qyJsonSaver: n,
76
+ numToSnapshotMap: r
75
77
  } = this;
76
- if (await m(t)) {
78
+ if (await d(t)) {
77
79
  var a = (await l(t)).filter(t => /^[1-9]/.test(t)).map(t => parseInt(t)).sort((t, a) => t - a);
78
- let p = 0, u = 0;
80
+ let e = 0, s = 0;
79
81
  await Promise.all(a.map(async t => {
80
- var a = await h.loadFromFile(t + ".json"), e = f[t] = {
82
+ var a = await n.loadFromFile(t + ".json"), o = r[t] = {
81
83
  snapshotNum: t,
82
84
  info: a,
83
85
  posMap: {},
84
86
  outdatedCount: 0
85
- };
86
- ++this.snapshotCount, t > p && (p = t, u = a.maxChangeId);
87
- var t = e, a = L(a = this, t), o = (C.info("Loading " + a), await d(a)), s = o.length, n = t.prefixPM = {};
88
- for (let t = 0; t < s; ) {
89
- var r = t + V, i = o.toString("latin1", t, r), i = n[i] = [];
90
- t = g(o, r, i);
91
- }
87
+ }, t = (++this.snapshotCount, t > e && (e = t, s = a.maxChangeId),
88
+ this), a = o;
89
+ t = k(t, a), P.info("Loading " + t), a.prefixPM = await V(t);
92
90
  })), Object.assign(this, {
93
- maxSnapshotNum: p,
94
- snapshotMaxChangeId: u
91
+ maxSnapshotNum: e,
92
+ snapshotMaxChangeId: s
95
93
  });
96
94
  var {
97
- numToSnapshotMap: e,
98
- prefixMap: o
95
+ numToSnapshotMap: o,
96
+ prefixMap: i
99
97
  } = this;
100
- for (r of a) {
101
- var s, n = e[r], r = n.prefixPM;
102
- for (s in r) {
103
- var i = o[s];
104
- i ? i.push(n) : o[s] = [ n ];
98
+ for (f of a) {
99
+ var p, u = o[f], f = u.prefixPM;
100
+ for (p in f) {
101
+ var h = i[p];
102
+ h ? h.push(u) : i[p] = [ u ];
105
103
  }
106
104
  }
107
105
  }
108
106
  }
109
107
  closeAllFDs() {
110
108
  var t, a = this.fDMap;
111
- for (t in a) o(a[t]), delete a[t];
109
+ for (t in a) e(a[t]), delete a[t];
112
110
  }
113
111
  saveKeyValueMap(t) {
114
- var a, {
112
+ var a, o = this.options.minLenToCompress, {
115
113
  keyValueMap: e,
116
- info: o
117
- } = t, s = (++o.vLVersion, new M()), n = (s.start(this.getVLFilePath(t)),
118
- Object.keys(e).sort()), r = {};
119
- let i = 0, p = 0, u;
120
- for (a of n) {
121
- var h, f = e[a];
114
+ info: s
115
+ } = t, n = (++s.vLVersion, new M()), r = (n.start(this.getVLFilePath(t)),
116
+ Object.keys(e).sort()), i = {};
117
+ let p = 0, u = 0, f, h;
118
+ for (a of r) {
119
+ var l = e[a];
122
120
  let t;
123
- null == f ? t = N : (u = Buffer.isBuffer(f) ? (s.save(f), f.length) : v(f) ? (h = Buffer.from(f),
124
- s.save(O), s.save(h), s.save(x), h.length + 2) : (h = Buffer.from(JSON.stringify(B(a) && !P(f) ? Object.keys(f) : f)),
125
- s.save(h), s.save(x), h.length + 1), t = [ i, u ], i += u), r[a] = t,
126
- ++p;
121
+ null == l ? t = K : (h = Buffer.isBuffer(l) ? (f = l, 0) : v(l) ? (f = l.length >= o ? (n.save(j),
122
+ m.zstdCompressSync(l)) : (n.save(F), Buffer.from(l)), 1) : (f = Buffer.from(JSON.stringify(Q(a) && !x(l) ? Object.keys(l) : l)),
123
+ 0), n.save([ f, O ]), l = h + f.length, t = [ p, l ], p += l + 1), i[a] = t,
124
+ ++u;
127
125
  }
128
126
  return Object.assign(t, {
129
- posMap: r,
127
+ posMap: i,
130
128
  outdatedCount: 0
131
- }), Object.assign(o, {
132
- totalCount: p,
129
+ }), Object.assign(s, {
130
+ totalCount: u,
133
131
  outdatedCount: 0
134
- }), Promise.all([ this.savePosMap(t, n), s.stop() ]);
132
+ }), Promise.all([ this.savePosMap(t, r), n.stop() ]);
135
133
  }
136
134
  addMaxSnapshot(t) {
137
135
  var a, {
138
- numToSnapshotMap: e,
139
- keyToSnapshotMap: o
136
+ numToSnapshotMap: o,
137
+ keyToSnapshotMap: e
140
138
  } = this, {
141
139
  posMap: s,
142
140
  keyValueMap: n,
@@ -146,77 +144,70 @@ class t {
146
144
  maxSnapshotNum: r,
147
145
  snapshotMaxChangeId: i
148
146
  }), n || s);
149
- for (a in i) o[a] = t;
150
- e[r] = t, ++this.snapshotCount;
147
+ for (a in i) e[a] = t;
148
+ o[r] = t, ++this.snapshotCount;
151
149
  }
152
150
  removeKey(t) {
153
- var a = this.keyToSnapshotMap, e = a[t];
154
- if (e) return this.removeKeyFromSnapshot(e, t), delete a[t], !0;
151
+ var a = this.keyToSnapshotMap, o = a[t];
152
+ if (o) return this.removeKeyFromSnapshot(o, t), delete a[t], !0;
155
153
  }
156
- applyCmdObj(t, a, e) {
157
- if (null != e) {
158
- var o = e.length;
159
- for (let t = 0; t < o; t += 2) {
160
- var s = e[t], n = e[t + 1];
161
- a[s] = null != n && B(s) ? r(n) : n;
154
+ applyCmdObj(t, a, o) {
155
+ if (null != o) {
156
+ var e = o.length;
157
+ for (let t = 0; t < e; t += 2) {
158
+ var s = o[t], n = o[t + 1];
159
+ a[s] = null != n && Q(s) ? f(n) : n;
162
160
  }
163
161
  }
164
162
  S(t, t => {
165
163
  t in a || (a[t] = this.getValueSync(t)), this.removeKey(t);
166
- }), f(a, t);
164
+ }), c(a, t);
167
165
  }
168
166
  getValueSync(t) {
169
167
  var a = ((t, a) => {
170
168
  let {
171
- keyToSnapshotMap: e,
172
- prefixMap: o
173
- } = t, s = e[a];
169
+ keyToSnapshotMap: o,
170
+ prefixMap: e
171
+ } = t, s = o[a];
174
172
  if (s) return s;
175
- var n = b(a), r = o[n];
173
+ var n = I(a), r = e[n];
176
174
  if (r) for (;0 < r.length; ) {
177
175
  s = r.pop();
178
- var i = ((t, a, e) => {
179
- var o, {
176
+ var i = ((t, a, o) => {
177
+ var e, {
180
178
  posMap: s,
181
179
  prefixPM: n
182
180
  } = a;
183
- if (n = n[e]) return [ n, o ] = n, n = F(t, t.getPMFilePath(a), n, o),
184
- t.loadPartialPosMapBuffer(a, e, n), s;
181
+ if (n = n[o]) return [ n, e ] = n, n = T(t, t.getPMFilePath(a), n, e),
182
+ t.loadPartialPosMapBuffer(a, o, n), s;
185
183
  })(t, s, n);
186
184
  if (i && a in i) return s;
187
185
  }
188
186
  })(this, t);
189
187
  if (a) {
190
188
  var {
191
- keyValueMap: e,
192
- posMap: o
189
+ keyValueMap: o,
190
+ posMap: e
193
191
  } = a;
194
- if (e) return e[t];
195
- e = o[t];
196
- if (e) {
197
- var [ o, e ] = e;
198
- if (0 != e) {
192
+ if (o) return o[t];
193
+ o = e[t];
194
+ if (o) {
195
+ var [ e, o ] = o;
196
+ if (0 != o) {
199
197
  var s = this;
200
- if (a = s.getVLFilePath(a), s = F(s, a, o, e)) return s[0] == O[0] ? s.toString("utf8", 1, s.length - 1) : (a = JSON.parse(s),
201
- B(t) ? r(a) : a);
198
+ if (a = s.getVLFilePath(a), s = T(s, a, e, o)) return (a = s[0]) == L ? s.toString("utf8", 1) : a == b ? m.zstdDecompressSync(s.subarray(1)).toString() : (e = JSON.parse(s),
199
+ Q(t) ? f(e) : e);
202
200
  }
203
201
  }
204
202
  }
205
203
  }
206
- iterPMBuffer(a, e) {
207
- var o = a.length;
208
- for (let t = 0; t < o; ) {
209
- var s = t + u, n = a.toString("latin1", t, s), r = [];
210
- t = g(a, s, r), e(n, r);
211
- }
212
- }
213
- loadPartialPosMapBuffer(e, t, a) {
204
+ loadPartialPosMapBuffer(o, t, a) {
214
205
  let {
215
- posMap: o,
206
+ posMap: e,
216
207
  prefixPM: s
217
- } = e, n = (delete s[t], this).keyToSnapshotMap;
218
- this.iterPMBuffer(a, (t, a) => {
219
- t in n ? ++e.outdatedCount : (o[t] = a, n[t] = e);
208
+ } = o, n = (delete s[t], this).keyToSnapshotMap;
209
+ N(a, (t, a) => {
210
+ t in n ? ++o.outdatedCount : (e[t] = a, n[t] = o);
220
211
  });
221
212
  }
222
213
  delSnapshot(t) {
@@ -224,7 +215,7 @@ class t {
224
215
  a(this, this.getPMFilePath(t));
225
216
  }
226
217
  calOutdates() {
227
- var t, a = [], e = [], o = [], s = [], {
218
+ var t, a = [], o = [], e = [], s = [], {
228
219
  options: n,
229
220
  numToSnapshotMap: r
230
221
  } = this, {
@@ -232,24 +223,24 @@ class t {
232
223
  vLOutdatedPercent: p
233
224
  } = n;
234
225
  for (t in r) {
235
- var u, h = r[t];
236
- h.isOut || (100 == (u = T(h)) ? (this.delSnapshot(h), a.push(t)) : p < u ? (j(h) ? e : s).push(h) : Math.round(h.outdatedCount / h.info.totalCount * 100) > i ? o.push(h) : (u = this,
237
- h.info.totalCount < u.options.minSnapshotKeyCount && j(h) && e.push(h)));
226
+ var u, f = r[t];
227
+ f.isOut || (100 == (u = D(f)) ? (this.delSnapshot(f), a.push(t)) : p < u ? (B(f) ? o : s).push(f) : Math.round(f.outdatedCount / f.info.totalCount * 100) > i ? e.push(f) : (u = this,
228
+ f.info.totalCount < u.options.minSnapshotKeyCount && B(f) && o.push(f)));
238
229
  }
239
- return 1 == e.length && T(e[0]) < p && (e.length = 0), 0 < o.length && C.log("pMCompacts:" + o.map(t => t.snapshotNum)),
240
- 0 < s.length && C.log("vLCompacts:" + s.map(t => t.snapshotNum)), 0 < e.length && C.log("combiningSnapshots:" + e.map(t => t.snapshotNum)),
230
+ return 1 == o.length && D(o[0]) < p && (o.length = 0), 0 < e.length && P.log("pMCompacts:" + e.map(t => t.snapshotNum)),
231
+ 0 < s.length && P.log("vLCompacts:" + s.map(t => t.snapshotNum)), 0 < o.length && P.log("combiningSnapshots:" + o.map(t => t.snapshotNum)),
241
232
  {
242
233
  emptySnapshotNumList: a,
243
- combiningSnapshotList: e,
244
- pMCompactSnapshotList: o,
234
+ combiningSnapshotList: o,
235
+ pMCompactSnapshotList: e,
245
236
  vLCompactSnapshotList: s
246
237
  };
247
238
  }
248
239
  getMaxCombinedSnapshot(t) {
249
- let a, e;
250
- for (var o of t) {
251
- var s = o.snapshotNum;
252
- (!e || e < s) && (a = o, e = s);
240
+ let a, o;
241
+ for (var e of t) {
242
+ var s = e.snapshotNum;
243
+ (!o || o < s) && (a = e, o = s);
253
244
  }
254
245
  return a;
255
246
  }
@@ -269,30 +260,30 @@ class t {
269
260
  }
270
261
  saveSnapshotInfo(t, a) {
271
262
  var {
272
- outdatedCount: e,
273
- totalCount: o
263
+ outdatedCount: o,
264
+ totalCount: e
274
265
  } = a;
275
- return a.outdated = Math.round(100 * e / o) + "%", C.log("Saving snapshotInfo:" + t),
266
+ return a.outdated = Math.round(100 * o / e) + "%", P.log("Saving snapshotInfo:" + t),
276
267
  this.qyJsonSaver.saveToFile(a, t + ".json", !0);
277
268
  }
278
269
  savePosMap(t, a) {
279
- var e, {
280
- outdatedCount: o,
270
+ var o, {
271
+ outdatedCount: e,
281
272
  info: s,
282
273
  posMap: n
283
- } = t, r = (s.outdatedCount += o, t.outdatedCount = 0, ++s.pMVersion, new M()), i = (r.start(this.getPMFilePath(t)),
274
+ } = t, r = (s.outdatedCount += e, t.outdatedCount = 0, ++s.pMVersion, new M()), i = (r.start(this.getPMFilePath(t)),
284
275
  t.prefixPM = {});
285
- let p = 0, u = 0, h;
286
- for (e of a = a || Object.keys(n).sort()) {
287
- null == h ? h = b(e) : e.startsWith(h) || (i[h] = [ p, u ], h = b(e),
276
+ let p = 0, u = 0, f;
277
+ for (o of a = a || Object.keys(n).sort()) {
278
+ null == f ? f = I(o) : o.startsWith(f) || (i[f] = [ p, u ], f = I(o),
288
279
  p += u, u = 0);
289
- var f = Buffer.from(e), l = y(n[e]);
290
- r.save(f), r.save(l), u += f.length + l.length;
280
+ var h = Buffer.from(o), l = y(n[o]);
281
+ r.save([ h, l ]), u += h.length + l.length;
291
282
  }
292
- return null != h && (i[h] = [ p, u ]), Promise.all([ r.stop(), ((t, a) => {
293
- var e, o = new M(), s = (o.start(L(t, a)), a).prefixPM;
294
- for (e in s) o.save(Buffer.from(e)), o.save(y(s[e]));
295
- return o.stop();
283
+ return null != f && (i[f] = [ p, u ]), Promise.all([ r.stop(), ((t, a) => {
284
+ var o, e = new M(), s = (e.start(k(t, a)), a).prefixPM;
285
+ for (o in s) e.save([ Buffer.from(o), y(s[o]) ]);
286
+ return e.stop();
296
287
  })(this, t) ]);
297
288
  }
298
289
  isEmptySnapshot(t) {
@@ -304,73 +295,92 @@ class t {
304
295
  }
305
296
  removeKeyFromSnapshot(t, a) {
306
297
  var {
307
- posMap: e,
308
- keyValueMap: o
298
+ posMap: o,
299
+ keyValueMap: e
309
300
  } = t;
310
- o && delete o[a], e && delete e[a], ++t.outdatedCount;
301
+ e && delete e[a], o && delete o[a], ++t.outdatedCount;
302
+ }
303
+ }
304
+
305
+ function N(a, o) {
306
+ var e = a.length;
307
+ for (let t = 0; t < e; ) {
308
+ var s = t + u, n = a.toString("latin1", t, s), r = [];
309
+ t = g(a, s, r), o(n, r);
310
+ }
311
+ }
312
+
313
+ async function V(t) {
314
+ var a = await r(t), o = a.length, e = {};
315
+ for (let t = 0; t < o; ) {
316
+ var s = t + w, n = e[a.toString("latin1", t, s)] = [];
317
+ t = g(a, s, n);
311
318
  }
319
+ return e;
312
320
  }
313
321
 
314
- function F(t, a, e, o) {
322
+ function T(t, a, o, e) {
315
323
  var s = ((t, a) => {
316
- let e = t.fDMap, o = e[a];
317
- if (!o) {
318
- C.info("Opening " + a);
324
+ let o = t.fDMap, e = o[a];
325
+ if (!e) {
326
+ P.info("Opening " + a);
319
327
  try {
320
- o = e[a] = p(a, "r");
328
+ e = o[a] = p(a, "r");
321
329
  } catch (t) {
322
- throw C.error(`Opening ${a} failed:`, t), t;
330
+ throw P.error(`Opening ${a} failed:`, t), t;
323
331
  }
324
332
  }
325
- return o;
326
- })(t, a), n = Buffer.allocUnsafe(o);
327
- for (let t = 0; t < o; ) {
328
- var r = i(s, n, t, o - t, e + t);
329
- if (0 == r) return void C.error(`readSync ${a} at ${e + t} returning 0 byte`);
333
+ return e;
334
+ })(t, a), n = Buffer.allocUnsafe(e);
335
+ for (let t = 0; t < e; ) {
336
+ var r = i(s, n, t, e - t, o + t);
337
+ if (0 == r) return void P.error(`readSync ${a} at ${o + t} returning 0 byte`);
330
338
  t += r;
331
339
  }
332
340
  return n;
333
341
  }
334
342
 
335
- function j(t) {
343
+ function B(t) {
336
344
  var {
337
345
  keyValueMap: a,
338
- prefixPM: e
346
+ prefixPM: o
339
347
  } = t;
340
- return a || null == e || h(t.prefixPM);
348
+ return a || null == o || h(t.prefixPM);
341
349
  }
342
350
 
343
- function L(t, a) {
351
+ function k(t, a) {
344
352
  var {
345
353
  snapshotNum: a,
346
- info: e
354
+ info: o
347
355
  } = a;
348
- return s(t.snapshotFolder, "" + a, e.pMVersion + "_prefixPM.txt");
356
+ return s(t.snapshotFolder, "" + a, o.pMVersion + "_prefixPM.txt");
349
357
  }
350
358
 
351
359
  function a(t, a) {
352
- var t = t.fDMap, e = t[a];
353
- null != e && (o(e), delete t[a]);
360
+ var t = t.fDMap, o = t[a];
361
+ null != o && (e(o), delete t[a]);
354
362
  }
355
363
 
356
- let N = [ 0, 0 ], V = 3;
364
+ let K = [ 0, 0 ], w = 3;
357
365
 
358
- function b(t) {
359
- return t.substring(0, V);
366
+ function I(t) {
367
+ return t.substring(0, w);
360
368
  }
361
369
 
362
- function B(t) {
370
+ function Q(t) {
363
371
  return !t.startsWith("c");
364
372
  }
365
373
 
366
- function T(t) {
374
+ function D(t) {
367
375
  var {
368
376
  outdatedCount: t,
369
377
  info: a
370
- } = t, e = a.totalCount, t = t + a.outdatedCount;
371
- return t == e ? 100 : Math.round(t / e * 100);
378
+ } = t, o = a.totalCount, t = t + a.outdatedCount;
379
+ return t == o ? 100 : Math.round(t / o * 100);
372
380
  }
373
381
 
374
382
  export {
375
- t as QySnapshots
383
+ t as QySnapshots,
384
+ N as iterPMBuffer,
385
+ V as loadPrefixPMFile
376
386
  };
@@ -1,6 +1,6 @@
1
1
  class i {
2
- constructor(i = 1 / 0, e = 0) {
3
- Object.assign(this, {
2
+ constructor(i, e = 0) {
3
+ i = i || 1 / 0, Object.assign(this, {
4
4
  limit: i,
5
5
  cursor: e,
6
6
  added: 0,
@@ -1,9 +1,9 @@
1
- module.exports = code => {
1
+ module.exports = r => {
2
2
  try {
3
- return eval(code);
4
- } catch (exception) {
3
+ return new Function("dataFolder", `return (${r})();`)(dataFolder);
4
+ } catch (r) {
5
5
  return {
6
- error: exception.message
6
+ error: r.message
7
7
  };
8
8
  }
9
9
  };
@@ -1,16 +1,16 @@
1
- let o = new Error("No such file");
1
+ let a = new Error("No such file");
2
2
 
3
3
  module.exports = ({
4
4
  filePath: e,
5
5
  cChangeId: n
6
6
  }) => {
7
- var t, l, i, e = qyDB.fileP(e);
7
+ var t, l, o, e = dataFolder.fileP(e);
8
8
  return e ? ({
9
9
  fileContent: e,
10
10
  cChangeId: t,
11
11
  fileContentKey: l
12
- } = e, i = {}, n != t && (Object.assign(i, {
12
+ } = e, o = {}, n != t && (Object.assign(o, {
13
13
  fileContent: e,
14
14
  cChangeId: t
15
- }), null == n) && (i.fileContentKey = l), i) : o;
15
+ }), null == n) && (o.fileContentKey = l), o) : a;
16
16
  };
@@ -1,16 +1,16 @@
1
- let h = new Error("No such dir");
1
+ let s = new Error("No such dir");
2
2
 
3
3
  module.exports = ({
4
- dirPath: e,
5
- dChangeId: a,
6
- fChangeId: d
4
+ dirPath: a,
5
+ dChangeId: d,
6
+ fChangeId: e
7
7
  }) => {
8
- var s, e = qyDB.dirP(e);
9
- return e ? (s = {}, a || d || (s.fullPathHash = e.fullPathHash), a != e.dChangeId && Object.assign(s, {
10
- subdirList: e.sortedSubdirList.map(e => e.name),
11
- dChangeId: e.dChangeId
12
- }), d != e.fChangeId && Object.assign(s, {
13
- fileList: e.sortedFileList.map(e => e.name),
14
- fChangeId: e.fChangeId
15
- }), s) : h;
8
+ var r, a = dataFolder.dirP(a);
9
+ return a ? (r = {}, d || e || (r.fullPathHash = a.fullPathHash), d != a.dChangeId && Object.assign(r, {
10
+ subdirList: a.sortedSubdirList.map(a => a.name),
11
+ dChangeId: a.dChangeId
12
+ }), e != a.fChangeId && Object.assign(r, {
13
+ fileList: a.sortedFileList.map(a => a.name),
14
+ fChangeId: a.fChangeId
15
+ }), r) : s;
16
16
  };
@@ -0,0 +1 @@
1
+ module.exports = () => dataFolder.fileListToTree(dataFolder.triggerFileList);
@@ -6,5 +6,5 @@ module.exports = queryText => {
6
6
  limit,
7
7
  cursor
8
8
  } = eval("((x)=>x)(" + queryText + ")");
9
- return qyDB.fileListToTree(qyDB.queryFiles(folder, value, limit, cursor), view);
9
+ return dataFolder.queryTree(folder, value, view, limit, cursor);
10
10
  };
package/src/soc_pokec.js CHANGED
@@ -33,21 +33,21 @@ let f = "./tmp/soc_pokec", w = new e(f);
33
33
  if (console.time("run"), await w.start(), e) {
34
34
  {
35
35
  console.time("readData");
36
- var a, r = await c(m, "r"), s = {};
37
- for await (o of r.readLines()) {
38
- var [ o, i ] = o.split("\t"), n = s[o];
39
- n ? n[i] = 1 : s[o] = {
36
+ var a, s = await c(m, "r"), r = {};
37
+ for await (o of s.readLines()) {
38
+ var [ o, i ] = o.split("\t"), n = r[o];
39
+ n ? n[i] = 1 : r[o] = {
40
40
  [i]: 1
41
41
  };
42
42
  }
43
43
  console.timeEnd("readData"), console.time("insertData");
44
44
  let e = w.batch, t = 0;
45
- for (a in s) {
46
- var l = s[a];
45
+ for (a in r) {
46
+ var l = r[a];
47
47
  e.insertP([ "relationships", a ], l), 3e4 < ++t && (await e.run(!0),
48
48
  t = 0);
49
49
  }
50
- await e.run(!0), console.timeEnd("insertData");
50
+ await e.run(!0), console.timeEnd("insertData"), s.close();
51
51
  }
52
52
  await 0;
53
53
  }