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/QyUtils.js CHANGED
@@ -1,6 +1,6 @@
1
- import t from "node:crypto";
1
+ import n from "node:crypto";
2
2
 
3
- import n from "node:path";
3
+ import t from "node:path";
4
4
 
5
5
  import e from "node:process";
6
6
 
@@ -14,114 +14,118 @@ import {
14
14
  fileURLToPath as r
15
15
  } from "node:url";
16
16
 
17
- var a = n.dirname(r(import.meta.url)), u = Object.fromEntries([ "$del", "$link", "$rpl", "$spec", "$raw", "$all", "$clone", "$ext", "$or", "$and", "$gt", "$lt", "$gte", "$lte" ].map(r => [ r, r ])), f = "%", f = {
18
- HiddenFolderName: f,
19
- TriggerDirPath: [ f, "trigger" ],
20
- RpcDirPath: [ f, "rpc" ],
21
- IndexDirPath: [ f, "index" ],
17
+ import {
18
+ logger as u
19
+ } from "../src/QyLogger.js";
20
+
21
+ var a = t.dirname(r(import.meta.url)), f = Object.fromEntries([ "$del", "$link", "$rpl", "$spec", "$raw", "$all", "$clone", "$ext", "$or", "$and", "$gt", "$lt", "$gte", "$lte" ].map(r => [ r, r ])), c = "%", c = {
22
+ HiddenFolderName: c,
23
+ TriggerDirPath: [ c, "trigger" ],
24
+ RpcDirPath: [ c, "rpc" ],
25
+ IndexDirPath: [ c, "index" ],
22
26
  IndexPropPathsFileName: "propPaths"
23
27
  };
24
28
 
25
- function c(r) {
29
+ function s(r) {
26
30
  return r.startsWith("{") && r.endsWith("}");
27
31
  }
28
32
 
29
- function s(r) {
30
- return c(r) && r.substring(1, r.length - 1);
33
+ function d(r) {
34
+ return s(r) && r.substring(1, r.length - 1);
31
35
  }
32
36
 
33
- function d(r) {
37
+ function m(r) {
34
38
  return 1e12 < r ? Math.round(100 * r / 1e12) / 100 + "TB" : 1e9 < r ? Math.round(100 * r / 1e9) / 100 + "GB" : 1e6 < r ? Math.round(100 * r / 1e6) / 100 + "MB" : 1e3 < r ? Math.round(100 * r / 1e3) / 100 + "KB" : r.toString();
35
39
  }
36
40
 
37
- function m(r, n = 10) {
38
- return t.createHash("sha256").update(r, "utf8").digest("base64url").slice(0, n);
41
+ function p(r, t = 10) {
42
+ return n.createHash("sha256").update(r, "utf8").digest("base64url").slice(0, t);
39
43
  }
40
44
 
41
- var p = 11;
45
+ var h = 11;
42
46
 
43
47
  function g(r) {
44
48
  return "d" + r;
45
49
  }
46
50
 
47
- function h(r) {
51
+ function y(r) {
48
52
  return "f" + r;
49
53
  }
50
54
 
51
- function y(r) {
55
+ function v(r) {
52
56
  return "c" + r;
53
57
  }
54
58
 
55
- function v(r = 8) {
56
- return t.randomBytes(r).toString("hex");
59
+ function b(r = 8) {
60
+ return n.randomBytes(r).toString("hex");
57
61
  }
58
62
 
59
- function b(r) {
63
+ function $(r) {
60
64
  return r[r.length - 1];
61
65
  }
62
66
 
63
- function $(r) {
64
- if (null != r) for (var n in r) if (null != r[n]) return !1;
67
+ function w(r) {
68
+ if (null != r) for (var t in r) if (null != r[t]) return !1;
65
69
  return !0;
66
70
  }
67
71
 
68
- function w(r) {
72
+ function P(r) {
69
73
  return null != r && "object" == typeof r && !(r instanceof Date);
70
74
  }
71
75
 
72
- function P(r) {
76
+ function S(r) {
73
77
  return "string" == typeof r;
74
78
  }
75
79
 
76
- function S(r) {
80
+ function j(r) {
77
81
  return "number" == typeof r;
78
82
  }
79
83
 
80
- function j(r) {
84
+ function x(r) {
81
85
  return "boolean" == typeof r;
82
86
  }
83
87
 
84
- function x(r) {
88
+ function B(r) {
85
89
  return "function" == typeof r;
86
90
  }
87
91
 
88
- function B(r) {
89
- var n = typeof r;
90
- return "string" == n || "number" == n || "boolean" == n || r instanceof Date;
92
+ function M(r) {
93
+ var t = typeof r;
94
+ return "string" == t || "number" == t || "boolean" == t || r instanceof Date;
91
95
  }
92
96
 
93
- function M(r) {
94
- let n = r.length;
95
- for (;null == r[n - 1] && 0 < n; ) --n;
96
- return r.length = n, r;
97
+ function O(r) {
98
+ let t = r.length;
99
+ for (;null == r[t - 1] && 0 < t; ) --t;
100
+ return r.length = t, r;
97
101
  }
98
102
 
99
- function O(t) {
100
- return t.promise || (t.promise = new Promise((r, n) => Object.assign(t, {
103
+ function T(n) {
104
+ return n.promise || (n.promise = new Promise((r, t) => Object.assign(n, {
101
105
  resolve: r,
102
- reject: n
103
- }))), t;
106
+ reject: t
107
+ }))), n;
104
108
  }
105
109
 
106
110
  function k(r) {
107
111
  return Buffer.isBuffer(r) ? r : Buffer.from(r);
108
112
  }
109
113
 
110
- function D(r) {
114
+ function A(r) {
111
115
  return 1 < r ? "s" : "";
112
116
  }
113
117
 
114
- function F(r) {
118
+ function D(r) {
115
119
  return l.mkdir(r, {
116
120
  recursive: !0
117
121
  });
118
122
  }
119
123
 
120
- function I(r) {
121
- return F(n.dirname(r));
124
+ function F(r) {
125
+ return D(t.dirname(r));
122
126
  }
123
127
 
124
- async function T(r) {
128
+ async function I(r) {
125
129
  try {
126
130
  return (await l.stat(r)).size;
127
131
  } catch (r) {
@@ -129,40 +133,41 @@ async function T(r) {
129
133
  }
130
134
  }
131
135
 
132
- async function A(r) {
133
- return !1 !== await T(r);
136
+ async function W(r) {
137
+ return !1 !== await I(r);
134
138
  }
135
139
 
136
- function W(r, n) {
137
- return i.setTimeout(1e3 * r, !0, {
138
- signal: n
139
- });
140
+ function E(r, t = void 0) {
141
+ r *= 1e3;
142
+ return t ? i.setTimeout(r, !0, {
143
+ signal: t
144
+ }) : i.setTimeout(r);
140
145
  }
141
146
 
142
- let N = void 0;
147
+ let N;
143
148
 
144
- async function E(n) {
149
+ async function L(t) {
145
150
  try {
146
- await I(n);
151
+ await F(t);
147
152
  var r = new Date().toISOString() + ": " + e.argv.join(" ");
148
- function t() {
153
+ function n() {
149
154
  for (var r of Object.keys(N)) U(r);
150
155
  }
151
- await l.writeFile(n, r, {
156
+ await l.writeFile(t, r, {
152
157
  flag: "wx",
153
158
  flush: !0
154
- }), logger.info("Locked " + n), N ? N[n] = 1 : (N = {
155
- [n]: 1
156
- }, e.on("exit", t), e.on("SIGINT", t));
159
+ }), u.info("Locked " + t), N ? N[t] = 1 : (N = {
160
+ [t]: 1
161
+ }, e.on("exit", n), e.on("SIGINT", n));
157
162
  } catch (r) {
158
- throw "EEXIST" == r.code && logger.error(`Already started by ${(await l.readFile(n)).toString()}:`, r),
163
+ throw "EEXIST" == r.code && u.error(`Already started by ${(await l.readFile(t)).toString()}:`, r),
159
164
  r;
160
165
  }
161
166
  }
162
167
 
163
168
  function U(r) {
164
169
  try {
165
- o.unlinkSync(r), logger.info("Unlocked " + r);
170
+ o.unlinkSync(r), u.info("Unlocked " + r);
166
171
  } catch (r) {}
167
172
  }
168
173
 
@@ -183,58 +188,58 @@ function J(r) {
183
188
  return r.split(".");
184
189
  }
185
190
 
186
- function L(r) {
191
+ function Q(r) {
187
192
  return r.join(".");
188
193
  }
189
194
 
190
- function z(r, n = 0) {
191
- return Math.floor(Math.random() * (r - n)) + n;
195
+ function z(r, t = 0) {
196
+ return Math.floor(Math.random() * (r - t)) + t;
192
197
  }
193
198
 
194
199
  function K(r) {
195
- var n, t = {};
196
- for (n of r) t[n] = 1;
197
- return t;
200
+ var t, n = {};
201
+ for (t of r) n[t] = 1;
202
+ return n;
198
203
  }
199
204
 
200
- async function Q(n, t, e, o) {
205
+ async function X(t, n, e, o) {
201
206
  var i = Buffer.allocUnsafe(o);
202
207
  for (let r = 0; r < o; ) {
203
- var a = (await t.read(i, r, o - r, e + r)).bytesRead;
204
- if (0 == a) return void logger.error(`read ${n} at ${e + r} returning 0 byte`);
208
+ var a = (await n.read(i, r, o - r, e + r)).bytesRead;
209
+ if (0 == a) return void u.error(`read ${t} at ${e + r} returning 0 byte`);
205
210
  r += a;
206
211
  }
207
212
  return i;
208
213
  }
209
214
 
210
- function X() {
215
+ function q() {
211
216
  var r = e.availableMemory();
212
217
  return Math.round(r / (e.memoryUsage.rss() + r) * 100);
213
218
  }
214
219
 
215
- async function* q(e, n = 3) {
216
- var t = e.length, o = (t < n && (n = t), new Array(t));
217
- for (let r = 0; r < n; ++r) {
220
+ async function* C(e, t = 3) {
221
+ var n = e.length, o = (n < t && (t = n), new Array(n));
222
+ for (let r = 0; r < t; ++r) {
218
223
  var i = o[r] = {};
219
224
  s(r, i);
220
225
  }
221
- for (let r = 0; r < t; ++r) {
222
- var a = o[r % n], {
226
+ for (let r = 0; r < n; ++r) {
227
+ var a = o[r % t], {
223
228
  filePath: u,
224
229
  bin: f
225
- } = (a.bin || await a.promise, a), c = r + n;
226
- c < t && s(c, a), yield {
230
+ } = (a.bin || await a.promise, a), c = r + t;
231
+ c < n && s(c, a), yield {
227
232
  filePath: u,
228
233
  bin: f
229
234
  };
230
235
  }
231
- async function s(r, n) {
232
- var r = e[r], t = l.readFile(r);
233
- Object.assign(n, {
236
+ async function s(r, t) {
237
+ var r = e[r], n = l.readFile(r);
238
+ Object.assign(t, {
234
239
  filePath: r,
235
- promise: t,
240
+ promise: n,
236
241
  bin: void 0
237
- }), n.bin = await t;
242
+ }), t.bin = await n;
238
243
  }
239
244
  }
240
245
 
@@ -242,44 +247,44 @@ export * as default from "./QyUtils.js";
242
247
 
243
248
  export {
244
249
  a as __dirname,
245
- u as SpecialOperators,
246
- f as SpecialFilePaths,
247
- c as isMatchName,
248
- s as getMatchParam,
249
- d as getSizeStr,
250
- m as calHash,
251
- p as Hash_Key_Length,
250
+ f as SpecialOperators,
251
+ c as SpecialFilePaths,
252
+ s as isMatchName,
253
+ d as getMatchParam,
254
+ m as getSizeStr,
255
+ p as calHash,
256
+ h as Hash_Key_Length,
252
257
  g as getSubdirMapKey,
253
- h as getFileMapKey,
254
- y as getContentKey,
255
- v as getRandomStr,
256
- b as arrayLast,
257
- $ as isEmptyObj,
258
- w as isNotNullObj,
259
- P as isString,
260
- S as isNumber,
261
- j as isBoolean,
262
- x as isFunction,
263
- B as isSimpleType,
264
- M as trimArrayTail,
265
- O as setPromise,
258
+ y as getFileMapKey,
259
+ v as getContentKey,
260
+ b as getRandomStr,
261
+ $ as arrayLast,
262
+ w as isEmptyObj,
263
+ P as isNotNullObj,
264
+ S as isString,
265
+ j as isNumber,
266
+ x as isBoolean,
267
+ B as isFunction,
268
+ M as isSimpleType,
269
+ O as trimArrayTail,
270
+ T as setPromise,
266
271
  k as toBuffer,
267
- D as getSuffix,
268
- F as ensureDir,
269
- I as ensureParentDir,
270
- T as getSize,
271
- A as folderOrFileExists,
272
- W as sleep,
273
- E as lockExclusiveFilePath,
272
+ A as getSuffix,
273
+ D as ensureDir,
274
+ F as ensureParentDir,
275
+ I as getSize,
276
+ W as folderOrFileExists,
277
+ E as sleep,
278
+ L as lockExclusiveFilePath,
274
279
  U as unlockExclusiveFilePath,
275
280
  R as fromSingleName,
276
281
  G as toSingleName,
277
282
  H as pathSplit,
278
283
  J as propNameSplit,
279
- L as propNameJoin,
284
+ Q as propNameJoin,
280
285
  z as randomInt,
281
286
  K as listToMap,
282
- Q as readBufferAsync,
283
- X as memoryPercent,
284
- q as loadFileList
287
+ X as readBufferAsync,
288
+ q as memoryPercent,
289
+ C as loadFileList
285
290
  };
package/src/simulate.js CHANGED
@@ -18,40 +18,40 @@ import {
18
18
  } from "./QyUtils.js";
19
19
 
20
20
  import {
21
- runQueries as l
21
+ logger as l
22
+ } from "./QyLogger.js";
23
+
24
+ import {
25
+ runQueries as c
22
26
  } from "../scripts/airbnb2_queries.js";
23
27
 
24
- logger.level = "info";
28
+ l.level = "info";
25
29
 
26
- let r = "../airbnb", c = "./tmp/simulate", m, p, f, v, d, g;
30
+ let r = "../airbnb", m = "./tmp/simulate", p, f, v, d, g, y;
27
31
 
28
- async function y(e) {
32
+ async function b(e) {
29
33
  return JSON.parse(await s(t(r, e)));
30
34
  }
31
35
 
32
- function b(e) {
36
+ function h(e) {
33
37
  console.time("insertData");
34
38
  var t, s, r, o = e.batch;
35
- for (t of v) o.insert([ "hosts", t ], m[t]);
36
- for (s of d) {
37
- var i = p[s], {
39
+ for (t of d) o.insert([ "hosts", t ], p[t]);
40
+ for (s of g) {
41
+ var i = f[s], {
38
42
  property_type: a,
39
43
  room_type: n,
40
44
  bed_type: l
41
45
  } = i;
42
46
  o.insert([ "airbnb", a, n, l, s ], i);
43
47
  }
44
- for (r of g) {
45
- var c = f[r];
48
+ for (r of y) {
49
+ var c = v[r];
46
50
  o.insert([ "reviews", c.listing_id, r ], c);
47
51
  }
48
52
  o.run(), console.timeEnd("insertData");
49
53
  }
50
54
 
51
- function h() {
52
- return m[v[u(v.length)]];
53
- }
54
-
55
55
  function _() {
56
56
  return p[d[u(d.length)]];
57
57
  }
@@ -60,19 +60,23 @@ function j() {
60
60
  return f[g[u(g.length)]];
61
61
  }
62
62
 
63
- async function D(e, t) {
63
+ function D() {
64
+ return v[y[u(y.length)]];
65
+ }
66
+
67
+ async function E(e, t) {
64
68
  for (;0 < t--; ) {
65
69
  switch (u(3)) {
66
70
  case 0:
67
71
  s = a = i = o = r = void 0;
68
- var s, r = e, o = h(), i = h(), a = {};
72
+ var s, r = e, o = _(), i = _(), a = {};
69
73
  for (s in i) 1 == u(2) && (a[s] = i[s]);
70
74
  r.insert([ "hosts", o.host_id ], a);
71
75
  break;
72
76
 
73
77
  case 1:
74
78
  n = f = p = m = c = l = o = r = void 0;
75
- var n, r = e, o = _(), l = _(), c = {};
79
+ var n, r = e, o = j(), l = j(), c = {};
76
80
  for (n in l) 1 == u(2) && (c[n] = l[n]);
77
81
  var {
78
82
  property_type: o,
@@ -85,7 +89,7 @@ async function D(e, t) {
85
89
 
86
90
  case 2:
87
91
  v = g = d = p = m = void 0;
88
- var v, m = e, p = j(), d = j(), g = {};
92
+ var v, m = e, p = D(), d = D(), g = {};
89
93
  for (v in d) 1 == u(2) && (g[v] = d[v]);
90
94
  m.insert([ "reviews", p.listing_id, p._id ], g);
91
95
  }
@@ -95,25 +99,24 @@ async function D(e, t) {
95
99
 
96
100
  (async () => {
97
101
  console.time("total");
98
- let t = process.argv[2] || 1e3, s = process.argv[3] || 100, e;
102
+ let t = +(process.argv[2] || 1e3), s = +(process.argv[3] || 100), e;
99
103
  if ("true" == process.argv[4]) {
100
104
  try {
101
- await i(c, {
105
+ await i(m, {
102
106
  recursive: !0
103
107
  });
104
108
  } catch (e) {}
105
109
  e = !0;
106
- } else await n(c) || (e = !0);
107
- process.argv[5] && (logger.level = process.argv[5]), console.time("loadData"),
108
- [ m, p, f ] = await Promise.all([ y("hosts.json"), y("listings.json"), y("reviews.json") ]),
109
- v = Object.keys(m), d = Object.keys(p), g = Object.keys(f), await !console.timeEnd("loadData"),
110
- console.log(`hosts:${v.length}, listings:${d.length}, reviews:` + g.length);
111
- var r = new a(c, {
110
+ } else await n(m) || (e = !0);
111
+ process.argv[5] && (l.level = process.argv[5]), console.time("loadData"), [ p, f, v ] = await Promise.all([ b("hosts.json"), b("listings.json"), b("reviews.json") ]),
112
+ d = Object.keys(p), g = Object.keys(f), y = Object.keys(v), await !console.timeEnd("loadData"),
113
+ console.log(`hosts:${d.length}, listings:${g.length}, reviews:` + y.length);
114
+ var r = new a(m, {
112
115
  fileLogLevel: "basic"
113
- }), o = (e && (await r.start(), b(r), await r.stop()), console.time("simulate " + s),
114
- await r.start(), l(r), []);
115
- for (let e = 0; e < t; ++e) o.push(D(r, s));
116
- await Promise.all(o), b(r), await r.stop(), console.timeEnd("simulate " + s),
117
- console.time("start"), await r.start(), console.timeEnd("start"), l(r), await r.stop(),
116
+ }), o = (e && (await r.start(), h(r), await r.stop()), console.time("simulate " + s),
117
+ await r.start(), c(r), []);
118
+ for (let e = 0; e < t; ++e) o.push(E(r, s));
119
+ await Promise.all(o), h(r), await r.stop(), console.timeEnd("simulate " + s),
120
+ console.time("start"), await r.start(), console.timeEnd("start"), c(r), await r.stop(),
118
121
  console.timeEnd("total");
119
122
  })();
package/src/simulate2.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import {
2
- join as t
2
+ join as e
3
3
  } from "node:path";
4
4
 
5
5
  import {
@@ -14,96 +14,99 @@ import {
14
14
  import {
15
15
  folderOrFileExists as l,
16
16
  randomInt as c,
17
- sleep as g
17
+ sleep as m
18
18
  } from "./QyUtils.js";
19
19
 
20
20
  import {
21
- runQueries as m
21
+ logger as f
22
+ } from "./QyLogger.js";
23
+
24
+ import {
25
+ runQueries as g
22
26
  } from "../scripts/flights2_queries.js";
23
27
 
24
- logger.level = "info";
28
+ f.level = "info";
25
29
 
26
- let s = "../GraphCourse_DemoData_ArangoDB-2", f = "./tmp/simulate2", d, p;
30
+ let s = "../GraphCourse_DemoData_ArangoDB-2", p = "C:\\tmp\\simulate2", d, h;
27
31
 
28
- async function h(e) {
29
- return JSON.parse(await o(t(s, e)));
32
+ async function u(t) {
33
+ return JSON.parse(await o(e(s, t)));
30
34
  }
31
35
 
32
- function u() {
36
+ function v() {
33
37
  return d[c(d.length)];
34
38
  }
35
39
 
36
- function v(e) {
37
- var t, o = c(p.length), {
40
+ function w(t) {
41
+ var e, o = c(h.length), {
38
42
  Year: s,
39
43
  Month: r,
40
44
  Day: i
41
- } = p[o], a = p[c(p.length)], n = {};
42
- for (t in a) 1 == c(2) && (n[t] = a[t]);
43
- e.insert([ "flights", s, r, i, o ], n);
45
+ } = h[o], a = h[c(h.length)], n = {};
46
+ for (e in a) 1 == c(2) && (n[e] = a[e]);
47
+ t.insert([ "flights", s, r, i, o ], n);
44
48
  }
45
49
 
46
- async function w(e, t) {
47
- for (;0 < t--; ) {
50
+ async function y(t, e) {
51
+ for (;0 < e--; ) {
48
52
  switch (c(2)) {
49
53
  case 0:
50
54
  o = a = i = r = s = void 0;
51
- var o, s = e, r = u()._key, i = u(), a = {};
55
+ var o, s = t, r = v()._key, i = v(), a = {};
52
56
  for (o in i) 1 == c(2) && (a[o] = i[o]);
53
57
  s.insert([ "airports", r ], a);
54
58
  break;
55
59
 
56
60
  case 1:
57
- v(e);
61
+ w(t);
58
62
  }
59
- await g(1);
63
+ await m(1);
60
64
  }
61
65
  }
62
66
 
63
- function y(e) {
64
- var t = e;
67
+ function b(t) {
68
+ var e = t;
65
69
  console.time("insertAirports");
66
- var o, s = t.batch;
70
+ var o, s = e.batch;
67
71
  for (o of d) s.insert("airports/" + o._key, o);
68
72
  s.run(), console.timeEnd("insertAirports");
69
- t = e;
70
- logger.log("insertFlights begin"), console.time("insertFlights");
71
- var r, i = t.batch;
72
- for (let e = 0; e < p.length; ++e) {
73
- var a = p[e], {
73
+ e = t;
74
+ f.log("insertFlights begin"), console.time("insertFlights");
75
+ var r, i = e.batch;
76
+ for (let t = 0; t < h.length; ++t) {
77
+ var a = h[t], {
74
78
  Year: n,
75
79
  Month: l,
76
80
  Day: c
77
81
  } = a;
78
- i.insert(`flights/${n}/${l}/${c}/` + e, a);
82
+ i.insert(`flights/${n}/${l}/${c}/` + t, a);
79
83
  }
80
- i.run(), logger.log("insertFlights end"), console.timeEnd("insertFlights"),
81
- console.time("createFlightsIndex");
82
- for (r of t.dir("flights").subdirList) for (var g of r.subdirList) for (var m of g.subdirList) i.createIndex(m, [ "_from", "_to" ]);
84
+ i.run(), f.log("insertFlights end"), console.timeEnd("insertFlights"), console.time("createFlightsIndex");
85
+ for (r of e.dir("flights").subdirList) for (var m of r.subdirList) for (var g of m.subdirList) i.createIndex(g, [ "_from", "_to" ]);
83
86
  i.run(), console.timeEnd("createFlightsIndex");
84
87
  }
85
88
 
86
89
  (async () => {
87
90
  console.time("total");
88
- let t = process.argv[2] || 1e3, o = process.argv[3] || 100, e;
91
+ let e = +(process.argv[2] || 1e3), o = +(process.argv[3] || 100), t;
89
92
  if ("true" == process.argv[4]) {
90
93
  try {
91
- await a(f, {
94
+ await a(p, {
92
95
  recursive: !0
93
96
  });
94
- } catch (e) {}
95
- e = !0;
96
- } else await l(f) || (e = !0);
97
- process.argv[5] && (logger.level = process.argv[5]), console.time("loadData"),
98
- [ d, p ] = await Promise.all([ h("airports.json"), h("flights.json") ]), await !console.timeEnd("loadData"),
99
- console.log(`airports:${d.length}, flights:` + p.length);
100
- var s = new n(f, {
101
- fileLogLevel: "basic"
102
- }), r = (e && (await s.start(), y(s), await s.stop()), await s.start(), m(s),
103
- `simulate ${t} ` + o), i = (console.time(r), console.time("simulateStop"), []);
104
- for (let e = 0; e < t; ++e) i.push(w(s, o));
105
- await Promise.all(i), console.timeEnd(r), logger.log(`Simulate ${t} for ${o} ended.`),
106
- console.time("del%"), s.delDir("%"), console.timeEnd("del%"), y(s), await s.stop(),
97
+ } catch (t) {}
98
+ t = !0;
99
+ } else await l(p) || (t = !0);
100
+ process.argv[5] && (f.level = process.argv[5]), console.time("loadData"), [ d, h ] = await Promise.all([ u("airports.json"), u("flights.json") ]),
101
+ await !console.timeEnd("loadData"), console.log(`airports:${d.length}, flights:` + h.length);
102
+ var s = new n(p, {
103
+ fileLogLevel: "basic",
104
+ maxInMemSnapshotCount: 3
105
+ }), r = (t && (await s.start(), b(s), await s.stop()), await s.start(), g(s),
106
+ `simulate ${e} ` + o), i = (console.time(r), console.time("simulateStop"), []);
107
+ for (let t = 0; t < e; ++t) i.push(y(s, o));
108
+ await Promise.all(i), console.timeEnd(r), f.log(`Simulate ${e} for ${o} ended.`),
109
+ console.time("del%"), s.delDir("%"), console.timeEnd("del%"), b(s), await s.stop(),
107
110
  console.timeEnd("simulateStop"), console.time("start"), await s.start(), console.timeEnd("start"),
108
- m(s), await s.stop(), console.timeEnd("total"), global.gc && global.gc();
111
+ g(s), await s.stop(), console.timeEnd("total"), global.gc && global.gc();
109
112
  })();