datafolder 1.0.2 → 1.0.4

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 (84) hide show
  1. package/README.md +34 -31
  2. package/index.js +1 -3
  3. package/package.json +5 -3
  4. package/sample.js +37 -37
  5. package/scripts/airbnb.js +10 -11
  6. package/scripts/airbnb2.js +10 -11
  7. package/scripts/airbnb2_queries.js +20 -22
  8. package/scripts/airbnb_queries.js +23 -22
  9. package/scripts/downloadFile.js +29 -31
  10. package/scripts/express.js +7 -5
  11. package/scripts/fastify.js +12 -11
  12. package/scripts/flights.js +9 -9
  13. package/scripts/flights2.js +9 -9
  14. package/scripts/flights2_queries.js +107 -105
  15. package/scripts/flights_queries.js +113 -109
  16. package/src/QyAcl.js +153 -152
  17. package/src/QyAclSaver.js +16 -10
  18. package/src/QyAclSaver_Worker.js +21 -15
  19. package/src/QyAclWriter.js +23 -13
  20. package/src/QyBatch.js +298 -263
  21. package/src/QyBinWriter.js +49 -37
  22. package/src/QyCD.js +13 -14
  23. package/src/QyCache.js +177 -140
  24. package/src/QyCompressor.js +71 -45
  25. package/src/QyCompressor_Worker.js +17 -9
  26. package/src/QyDB.js +67 -12
  27. package/src/QyDefaultOptions.js +13 -10
  28. package/src/QyDir.js +89 -53
  29. package/src/QyFetch.js +27 -24
  30. package/src/QyFile.js +89 -77
  31. package/src/QyFileContentUtils.js +129 -132
  32. package/src/QyFileLogger.js +63 -41
  33. package/src/QyIndex.js +175 -197
  34. package/src/QyIndexPropTree.js +25 -25
  35. package/src/QyIntersectNode.js +34 -31
  36. package/src/QyItem.js +54 -52
  37. package/src/QyJsonSaver.js +12 -6
  38. package/src/QyKVData.js +279 -245
  39. package/src/QyKVDataCleaner.js +12 -6
  40. package/src/QyKVDataCleaner_Worker.js +77 -59
  41. package/src/QyKVDataLoader.js +67 -46
  42. package/src/QyKVDataSaver.js +15 -9
  43. package/src/QyKVDataSaver_Worker.js +83 -60
  44. package/src/QyLogFileSaver.js +12 -6
  45. package/src/QyLogFileSaver_Worker.js +24 -14
  46. package/src/QyLogger.js +51 -40
  47. package/src/QyMessageWorker.js +43 -29
  48. package/src/QyMessager.js +74 -54
  49. package/src/QyMessager_Run.js +20 -7
  50. package/src/QyMod.js +15 -11
  51. package/src/QyOpRunner.js +58 -41
  52. package/src/QyQueue.js +35 -30
  53. package/src/QySaver.js +52 -29
  54. package/src/QySnapshotCompactor.js +15 -9
  55. package/src/QySnapshotCompactor_Worker.js +131 -110
  56. package/src/QySnapshotSaver.js +15 -9
  57. package/src/QySnapshotSaver_Worker.js +125 -110
  58. package/src/QySnapshots.js +264 -242
  59. package/src/QyStructure.js +35 -27
  60. package/src/QyTrigger.js +62 -55
  61. package/src/QyUnionNode.js +54 -56
  62. package/src/QyUtils.js +170 -158
  63. package/src/QyWorker.js +34 -20
  64. package/src/hackernews.js +63 -71
  65. package/src/rpc/getFileContent.js +7 -7
  66. package/src/rpc/getSubItems.js +12 -28
  67. package/src/rpc/queryFiles.js +2 -25
  68. package/src/simulate.js +85 -80
  69. package/src/simulate2.js +77 -78
  70. package/src/soc_pokec.js +44 -32
  71. package/static/datafolderui/QyStyledElement.js +12 -12
  72. package/static/datafolderui/QyUIFolderTree.js +20 -20
  73. package/static/datafolderui/QyUIUtils.js +8 -8
  74. package/static/datafolderui/explore-tree.js +31 -31
  75. package/static/datafolderui/folder-tree.js +2 -2
  76. package/static/datafolderui/hscrpt.js +9 -17
  77. package/static/datafolderui/json-view.js +3 -5
  78. package/static/datafolderui/kv-input.js +15 -15
  79. package/static/datafolderui/list-input.js +17 -17
  80. package/static/datafolderui/main-page.js +18 -18
  81. package/static/datafolderui/num-input.js +5 -5
  82. package/static/datafolderui/query-editor.js +6 -1
  83. package/static/datafolderui/querySelectorShadowRoot.js +15 -19
  84. package/static/datafolderui/resizable-input.js +18 -18
@@ -1,16 +1,16 @@
1
- let Error_No_Such_File = new Error("No such file");
1
+ let o = new Error("No such file");
2
2
 
3
3
  module.exports = ({
4
4
  filePath: e,
5
5
  cChangeId: n
6
6
  }) => {
7
- var l, r, t, e = qyDB.fileP(e);
7
+ var t, l, i, e = qyDB.fileP(e);
8
8
  return e ? ({
9
9
  fileContent: e,
10
- cChangeId: l,
11
- fileContentKey: r
12
- } = e, t = {}, n != l && (Object.assign(t, {
10
+ cChangeId: t,
11
+ fileContentKey: l
12
+ } = e, i = {}, n != t && (Object.assign(i, {
13
13
  fileContent: e,
14
- cChangeId: l
15
- }), null == n) && (t.fileContentKey = r), t) : Error_No_Such_File;
14
+ cChangeId: t
15
+ }), null == n) && (i.fileContentKey = l), i) : o;
16
16
  };
@@ -1,32 +1,16 @@
1
- let Error_no_Such_Dir = new Error("No such dir");
1
+ let h = new Error("No such dir");
2
2
 
3
3
  module.exports = ({
4
- dirPath: r,
5
- dChangeId: e,
6
- fChangeId: a
4
+ dirPath: e,
5
+ dChangeId: a,
6
+ fChangeId: d
7
7
  }) => {
8
- r = qyDB.dirP(r);
9
- if (!r) return Error_no_Such_Dir;
10
- var d = {};
11
- if (e || a || (d.fullPathHash = r.fullPathHash), e != r.dChangeId) {
12
- var h, e = r.sortedSubdirList, i = [];
13
- for ({
14
- name: h
15
- } of e) i.push(h);
16
- Object.assign(d, {
17
- subdirList: i,
18
- dChangeId: r.dChangeId
19
- });
20
- }
21
- if (a != r.fChangeId) {
22
- var n, e = r.sortedFileList, s = [];
23
- for ({
24
- name: n
25
- } of e) s.push(n);
26
- Object.assign(d, {
27
- fileList: s,
28
- fChangeId: r.fChangeId
29
- });
30
- }
31
- return d;
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;
32
16
  };
@@ -5,29 +5,6 @@ module.exports = queryText => {
5
5
  view,
6
6
  limit,
7
7
  cursor
8
- } = eval("((x)=>x)(" + queryText + ")"), fileList = qyDB.queryFiles(folder, value, limit, cursor), tree = {};
9
- for (var file of fileList) {
10
- let {
11
- parentList
12
- } = file, node = tree;
13
- for (var dir of parentList) {
14
- let {
15
- name,
16
- fullPathHash
17
- } = dir, subdirMap = node.subdirMap;
18
- subdirMap = subdirMap || (node.subdirMap = {}), node = subdirMap[name],
19
- node = node || (subdirMap[name] = {
20
- fullPathHash: fullPathHash
21
- });
22
- }
23
- let fileMap = node.fileMap;
24
- fileMap = fileMap || (node.fileMap = {}), fileMap[file.name] = {
25
- fileContent: file.view(view, !0),
26
- fileContentKey: file.fileContentKey
27
- };
28
- }
29
- return {
30
- tree: tree,
31
- count: fileList.length
32
- };
8
+ } = eval("((x)=>x)(" + queryText + ")");
9
+ return qyDB.fileListToTree(qyDB.queryFiles(folder, value, limit, cursor), view);
33
10
  };
package/src/simulate.js CHANGED
@@ -1,114 +1,119 @@
1
- let path = require("node:path"), fsPromises = require("node:fs/promises"), QyDB = require("./QyDB.js").QyDB, {
2
- folderOrFileExists,
3
- randomInt,
4
- sleep
5
- } = require("./QyUtils.js"), runQueries = require("../scripts/airbnb2_queries.js").runQueries, airbnbDataFolder = (logger.level = "info",
6
- "../airbnb"), dataFolder = "./tmp/simulate", hosts, listings, reviews, hostIdList, listingIdList, reviewIdList;
1
+ import {
2
+ join as t
3
+ } from "node:path";
7
4
 
8
- async function loadJsonFile(t) {
9
- return JSON.parse(await fsPromises.readFile(path.join(airbnbDataFolder, t)));
10
- }
5
+ import {
6
+ readFile as s,
7
+ rm as i
8
+ } from "node:fs/promises";
9
+
10
+ import {
11
+ QyDB as a
12
+ } from "./QyDB.js";
13
+
14
+ import {
15
+ folderOrFileExists as n,
16
+ randomInt as u,
17
+ sleep as w
18
+ } from "./QyUtils.js";
19
+
20
+ import {
21
+ runQueries as l
22
+ } from "../scripts/airbnb2_queries.js";
11
23
 
12
- async function loadData() {
13
- console.time("loadData"), [ hosts, listings, reviews ] = await Promise.all([ loadJsonFile("hosts.json"), loadJsonFile("listings.json"), loadJsonFile("reviews.json") ]),
14
- hostIdList = Object.keys(hosts), listingIdList = Object.keys(listings), reviewIdList = Object.keys(reviews),
15
- console.timeEnd("loadData");
24
+ logger.level = "info";
25
+
26
+ let r = "../airbnb", c = "./tmp/simulate", m, p, f, v, d, g;
27
+
28
+ async function y(e) {
29
+ return JSON.parse(await s(t(r, e)));
16
30
  }
17
31
 
18
- function insertData(t) {
32
+ function b(e) {
19
33
  console.time("insertData");
20
- var e, s, i, o = t.batch;
21
- for (e of hostIdList) o.insert([ "hosts", e ], hosts[e]);
22
- for (s of listingIdList) {
23
- var n = listings[s], {
24
- property_type: r,
25
- room_type: a,
34
+ 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], {
38
+ property_type: a,
39
+ room_type: n,
26
40
  bed_type: l
27
- } = n;
28
- o.insert([ "airbnb", r, a, l, s ], n);
41
+ } = i;
42
+ o.insert([ "airbnb", a, n, l, s ], i);
29
43
  }
30
- for (i of reviewIdList) {
31
- var d = reviews[i];
32
- o.insert([ "reviews", d.listing_id, i ], d);
44
+ for (r of g) {
45
+ var c = f[r];
46
+ o.insert([ "reviews", c.listing_id, r ], c);
33
47
  }
34
48
  o.run(), console.timeEnd("insertData");
35
49
  }
36
50
 
37
- function getRandomHost() {
38
- return hosts[hostIdList[randomInt(hostIdList.length)]];
39
- }
40
-
41
- function getRandomListing() {
42
- return listings[listingIdList[randomInt(listingIdList.length)]];
43
- }
44
-
45
- function getRandomReview() {
46
- return reviews[reviewIdList[randomInt(reviewIdList.length)]];
51
+ function h() {
52
+ return m[v[u(v.length)]];
47
53
  }
48
54
 
49
- function modifyHost(t) {
50
- var e, s = getRandomHost(), i = getRandomHost(), o = {};
51
- for (e in i) 1 == randomInt(2) && (o[e] = i[e]);
52
- t.insert([ "hosts", s.host_id ], o);
55
+ function _() {
56
+ return p[d[u(d.length)]];
53
57
  }
54
58
 
55
- function modifyListing(t) {
56
- var e, s = getRandomListing(), i = getRandomListing(), o = {};
57
- for (e in i) 1 == randomInt(2) && (o[e] = i[e]);
58
- var {
59
- property_type: s,
60
- room_type: n,
61
- bed_type: r,
62
- _id: a
63
- } = s;
64
- t.insert([ "airbnb", s, n, r, a ], o);
59
+ function j() {
60
+ return f[g[u(g.length)]];
65
61
  }
66
62
 
67
- function modifyReview(t) {
68
- var e, s = getRandomReview(), i = getRandomReview(), o = {};
69
- for (e in i) 1 == randomInt(2) && (o[e] = i[e]);
70
- t.insert([ "reviews", s.listing_id, s._id ], o);
71
- }
72
-
73
- async function simulateOne(t, e) {
74
- for (;0 < e--; ) {
75
- switch (randomInt(3)) {
63
+ async function D(e, t) {
64
+ for (;0 < t--; ) {
65
+ switch (u(3)) {
76
66
  case 0:
77
- modifyHost(t);
67
+ s = a = i = o = r = void 0;
68
+ var s, r = e, o = h(), i = h(), a = {};
69
+ for (s in i) 1 == u(2) && (a[s] = i[s]);
70
+ r.insert([ "hosts", o.host_id ], a);
78
71
  break;
79
72
 
80
73
  case 1:
81
- modifyListing(t);
74
+ n = f = p = m = c = l = o = r = void 0;
75
+ var n, r = e, o = _(), l = _(), c = {};
76
+ for (n in l) 1 == u(2) && (c[n] = l[n]);
77
+ var {
78
+ property_type: o,
79
+ room_type: m,
80
+ bed_type: p,
81
+ _id: f
82
+ } = o;
83
+ r.insert([ "airbnb", o, m, p, f ], c);
82
84
  break;
83
85
 
84
86
  case 2:
85
- modifyReview(t);
87
+ v = g = d = p = m = void 0;
88
+ var v, m = e, p = j(), d = j(), g = {};
89
+ for (v in d) 1 == u(2) && (g[v] = d[v]);
90
+ m.insert([ "reviews", p.listing_id, p._id ], g);
86
91
  }
87
- await sleep(randomInt(1e3) / 1e3);
92
+ await w(u(1e3) / 1e3);
88
93
  }
89
94
  }
90
95
 
91
- async function run() {
96
+ (async () => {
92
97
  console.time("total");
93
- var e = process.argv[2] || 1e3, s = process.argv[3] || 100;
94
- let t;
98
+ let t = process.argv[2] || 1e3, s = process.argv[3] || 100, e;
95
99
  if ("true" == process.argv[4]) {
96
100
  try {
97
- await fsPromises.rm(dataFolder, {
101
+ await i(c, {
98
102
  recursive: !0
99
103
  });
100
- } catch (t) {}
101
- t = !0;
102
- } else await folderOrFileExists(dataFolder) || (t = !0);
103
- process.argv[5] && (logger.level = process.argv[5]), await loadData(), console.log(`hosts:${hostIdList.length}, listings:${listingIdList.length}, reviews:` + reviewIdList.length);
104
- var i = new QyDB(dataFolder, {
104
+ } catch (e) {}
105
+ 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, {
105
112
  fileLogLevel: "basic"
106
- }), o = (t && (await i.start(), insertData(i), await i.stop()), console.time("simulate " + s),
107
- await i.start(), runQueries(i), []);
108
- for (let t = 0; t < e; ++t) o.push(simulateOne(i, s));
109
- await Promise.all(o), insertData(i), await i.stop(), console.timeEnd("simulate " + s),
110
- console.time("start"), await i.start(), console.timeEnd("start"), runQueries(i),
111
- await i.stop(), console.timeEnd("total");
112
- }
113
-
114
- run();
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(),
118
+ console.timeEnd("total");
119
+ })();
package/src/simulate2.js CHANGED
@@ -1,110 +1,109 @@
1
- let path = require("node:path"), fsPromises = require("node:fs/promises"), QyDB = require("./QyDB.js").QyDB, {
2
- folderOrFileExists,
3
- randomInt,
4
- sleep,
5
- memoryPercent
6
- } = require("./QyUtils.js"), runQueries = require("../scripts/flights2_queries.js").runQueries, arangoJsonFolderPath = (logger.level = "info",
7
- "../GraphCourse_DemoData_ArangoDB-2"), dataFolder = "./tmp/simulate2", airportList, flightList;
1
+ import {
2
+ join as t
3
+ } from "node:path";
8
4
 
9
- async function loadFile(t) {
10
- return JSON.parse(await fsPromises.readFile(path.join(arangoJsonFolderPath, t)));
11
- }
5
+ import {
6
+ readFile as o,
7
+ rm as a
8
+ } from "node:fs/promises";
12
9
 
13
- async function loadData() {
14
- console.time("loadData"), [ airportList, flightList ] = await Promise.all([ loadFile("airports.json"), loadFile("flights.json") ]),
15
- console.timeEnd("loadData");
16
- }
10
+ import {
11
+ QyDB as n
12
+ } from "./QyDB.js";
17
13
 
18
- function getRandomAirport() {
19
- return airportList[randomInt(airportList.length)];
20
- }
14
+ import {
15
+ folderOrFileExists as l,
16
+ randomInt as c,
17
+ sleep as g
18
+ } from "./QyUtils.js";
19
+
20
+ import {
21
+ runQueries as m
22
+ } from "../scripts/flights2_queries.js";
23
+
24
+ logger.level = "info";
25
+
26
+ let s = "../GraphCourse_DemoData_ArangoDB-2", f = "./tmp/simulate2", d, p;
21
27
 
22
- function getRandomFlight() {
23
- return flightList[randomInt(flightList.length)];
28
+ async function h(e) {
29
+ return JSON.parse(await o(t(s, e)));
24
30
  }
25
31
 
26
- function modifyAirport(t) {
27
- var e, i = getRandomAirport()._key, r = getRandomAirport(), o = {};
28
- for (e in r) 1 == randomInt(2) && (o[e] = r[e]);
29
- t.insert([ "airports", i ], o);
32
+ function u() {
33
+ return d[c(d.length)];
30
34
  }
31
35
 
32
- function modifyFlight(t) {
33
- var e, i = randomInt(flightList.length), {
34
- Year: r,
35
- Month: o,
36
- Day: s
37
- } = flightList[i], a = getRandomFlight(), n = {};
38
- for (e in a) 1 == randomInt(2) && (n[e] = a[e]);
39
- t.insert([ "flights", r, o, s, i ], n);
36
+ function v(e) {
37
+ var t, o = c(p.length), {
38
+ Year: s,
39
+ Month: r,
40
+ 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);
40
44
  }
41
45
 
42
- async function simulateOne(t, e) {
43
- for (;0 < e--; ) {
44
- switch (randomInt(2)) {
46
+ async function w(e, t) {
47
+ for (;0 < t--; ) {
48
+ switch (c(2)) {
45
49
  case 0:
46
- modifyAirport(t);
50
+ o = a = i = r = s = void 0;
51
+ var o, s = e, r = u()._key, i = u(), a = {};
52
+ for (o in i) 1 == c(2) && (a[o] = i[o]);
53
+ s.insert([ "airports", r ], a);
47
54
  break;
48
55
 
49
56
  case 1:
50
- modifyFlight(t);
57
+ v(e);
51
58
  }
52
- await sleep(1);
59
+ await g(1);
53
60
  }
54
61
  }
55
62
 
56
- function insertAirports(t) {
63
+ function y(e) {
64
+ var t = e;
57
65
  console.time("insertAirports");
58
- var e, i = t.batch;
59
- for (e of airportList) i.insert("airports/" + e._key, e);
60
- i.run(), console.timeEnd("insertAirports");
61
- }
62
-
63
- function insertFlights(t) {
66
+ var o, s = t.batch;
67
+ for (o of d) s.insert("airports/" + o._key, o);
68
+ s.run(), console.timeEnd("insertAirports");
69
+ t = e;
64
70
  logger.log("insertFlights begin"), console.time("insertFlights");
65
- var e, i = t.batch;
66
- for (let t = 0; t < flightList.length; ++t) {
67
- var r = flightList[t], {
68
- Year: o,
69
- Month: s,
70
- Day: a
71
- } = r;
72
- i.insert(`flights/${o}/${s}/${a}/` + t, r);
71
+ var r, i = t.batch;
72
+ for (let e = 0; e < p.length; ++e) {
73
+ var a = p[e], {
74
+ Year: n,
75
+ Month: l,
76
+ Day: c
77
+ } = a;
78
+ i.insert(`flights/${n}/${l}/${c}/` + e, a);
73
79
  }
74
80
  i.run(), logger.log("insertFlights end"), console.timeEnd("insertFlights"),
75
81
  console.time("createFlightsIndex");
76
- for (e of t.dir("flights").subdirList) for (var n of e.subdirList) for (var l of n.subdirList) i.createIndex(l, [ "_from", "_to" ]);
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" ]);
77
83
  i.run(), console.timeEnd("createFlightsIndex");
78
84
  }
79
85
 
80
- function insertData(t) {
81
- insertAirports(t), insertFlights(t);
82
- }
83
-
84
- async function run() {
86
+ (async () => {
85
87
  console.time("total");
86
- var e = process.argv[2] || 1e3, i = process.argv[3] || 100;
87
- let t;
88
+ let t = process.argv[2] || 1e3, o = process.argv[3] || 100, e;
88
89
  if ("true" == process.argv[4]) {
89
90
  try {
90
- await fsPromises.rm(dataFolder, {
91
+ await a(f, {
91
92
  recursive: !0
92
93
  });
93
- } catch (t) {}
94
- t = !0;
95
- } else await folderOrFileExists(dataFolder) || (t = !0);
96
- process.argv[5] && (logger.level = process.argv[5]), await loadData(), console.log(`airports:${airportList.length}, flights:` + flightList.length);
97
- var r = new QyDB(dataFolder, {
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, {
98
101
  fileLogLevel: "basic"
99
- }), o = (t && (await r.start(), insertData(r), await r.stop()), await r.start(),
100
- runQueries(r), `simulate ${e} ` + i), s = (console.time(o), console.time("simulateStop"),
101
- []);
102
- for (let t = 0; t < e; ++t) s.push(simulateOne(r, i));
103
- await Promise.all(s), console.timeEnd(o), logger.log(`Simulate ${e} for ${i} ended.`),
104
- console.time("del%"), r.delDir("%"), console.timeEnd("del%"), insertData(r),
105
- await r.stop(), console.timeEnd("simulateStop"), console.time("start"), await r.start(),
106
- console.timeEnd("start"), runQueries(r), await r.stop(), console.timeEnd("total"),
107
- global.gc && global.gc();
108
- }
109
-
110
- run();
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(),
107
+ 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();
109
+ })();
package/src/soc_pokec.js CHANGED
@@ -1,43 +1,55 @@
1
- let {
2
- open,
3
- rm
4
- } = require("node:fs/promises"), assert = require("node:assert/strict"), QyDB = require("../src/QyDB.js").QyDB, folderOrFileExists = require("../src/QyUtils.js").folderOrFileExists, socPokecRelationshipsFilePath = (logger.level = "info",
5
- "D:/SampleData/soc_pokec/soc-pokec-relationships.txt"), socPokecProfileFilePath = "D:/SampleData/soc_pokec/soc-pokec-profiles.txt", dataFolder = "./tmp/soc_pokec", qyDB = new QyDB(dataFolder);
1
+ import {
2
+ open as c,
3
+ rm as t
4
+ } from "node:fs/promises";
6
5
 
7
- async function insertProfiles() {}
6
+ import "node:assert/strict";
8
7
 
9
- async function insertData() {
10
- console.time("readData");
11
- var e, a = {};
12
- for await (e of (await open(socPokecRelationshipsFilePath, "r")).readLines()) {
13
- var [ t, r ] = e.split("\t"), s = a[t];
14
- s ? s[r] = 1 : a[t] = {
15
- [r]: 1
16
- };
17
- }
18
- console.timeEnd("readData"), console.time("insertData");
19
- var o, i = qyDB.batch;
20
- let n = 0;
21
- for (o in a) {
22
- var l = a[o];
23
- i.insertP([ "relationships", o ], l), 3e4 < ++n && (await i.run(!0), n = 0);
24
- }
25
- await i.run(!0), console.timeEnd("insertData");
26
- }
8
+ import {
9
+ QyDB as e
10
+ } from "../src/QyDB.js";
11
+
12
+ import {
13
+ folderOrFileExists as p
14
+ } from "../src/QyUtils.js";
15
+
16
+ logger.level = "info";
27
17
 
28
- async function run() {
18
+ let m = "D:/SampleData/soc_pokec/soc-pokec-relationships.txt";
19
+
20
+ let f = "./tmp/soc_pokec", w = new e(f);
21
+
22
+ (async () => {
29
23
  process.argv[3] && (logger.level = process.argv[3]);
30
24
  let e;
31
25
  if ("true" == process.argv[2]) {
32
26
  try {
33
- await rm(dataFolder, {
27
+ await t(f, {
34
28
  recursive: !0
35
29
  });
36
30
  } catch (e) {}
37
31
  e = !0;
38
- } else await folderOrFileExists(dataFolder) || (e = !0);
39
- console.time("run"), await qyDB.start(), e && await insertData(), await qyDB.stop(),
40
- console.timeEnd("run");
41
- }
42
-
43
- run();
32
+ } else await p(f) || (e = !0);
33
+ if (console.time("run"), await w.start(), e) {
34
+ {
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] = {
40
+ [i]: 1
41
+ };
42
+ }
43
+ console.timeEnd("readData"), console.time("insertData");
44
+ let e = w.batch, t = 0;
45
+ for (a in s) {
46
+ var l = s[a];
47
+ e.insertP([ "relationships", a ], l), 3e4 < ++t && (await e.run(!0),
48
+ t = 0);
49
+ }
50
+ await e.run(!0), console.timeEnd("insertData");
51
+ }
52
+ await 0;
53
+ }
54
+ await w.stop(), console.timeEnd("run");
55
+ })();
@@ -1,30 +1,30 @@
1
1
  import {
2
- appendStyle
2
+ appendStyle as n
3
3
  } from "./QyUIUtils.js";
4
4
 
5
- class QyStyledElement extends HTMLElement {
5
+ class s extends HTMLElement {
6
6
  constructor(e, t) {
7
7
  super(), Array.isArray(e) && (t = e, e = void 0);
8
- var n = this.attachShadow({
8
+ var r = this.attachShadow({
9
9
  mode: "open"
10
10
  });
11
- if (t) for (var l of t) {
12
- var r = document.createElement("link");
13
- r.setAttribute("rel", "stylesheet"), r.setAttribute("href", l), n.appendChild(r);
11
+ if (t) for (var s of t) {
12
+ var o = document.createElement("link");
13
+ o.setAttribute("rel", "stylesheet"), o.setAttribute("href", s), r.appendChild(o);
14
14
  }
15
- e && appendStyle(n, e);
15
+ e && n(r, e);
16
16
  }
17
17
  }
18
18
 
19
- function defineStyledElement(e, t, n) {
20
- customElements.define(e, class extends QyStyledElement {
19
+ function e(e, t, r) {
20
+ customElements.define(e, class extends s {
21
21
  constructor() {
22
- super(t, n);
22
+ super(t, r);
23
23
  }
24
24
  });
25
25
  }
26
26
 
27
27
  export {
28
- QyStyledElement,
29
- defineStyledElement
28
+ s as QyStyledElement,
29
+ e as defineStyledElement
30
30
  };