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,7 +1,7 @@
1
- const fs = require("fs");
2
- const https = require("https");
3
- const { ensureParentDir, folderOrFileExists } = require("../src/QyUtils.js");
4
- const { logger } = require("../src/QyLogger.js");
1
+ import { createWriteStream } from "fs";
2
+ import { get } from "https";
3
+ import { ensureParentDir, folderOrFileExists } from "../src/QyUtils.js";
4
+ import { logger } from "../src/QyLogger.js";
5
5
 
6
6
  async function downloadFile(fileUrl, filePath) {
7
7
  if (await folderOrFileExists(filePath)) return;
@@ -11,32 +11,30 @@ async function downloadFile(fileUrl, filePath) {
11
11
  resolve = res;
12
12
  reject = rej;
13
13
  });
14
- https
15
- .get(fileUrl, (response) => {
16
- if (response.statusCode !== 200) {
17
- logger.error(`Download failed: Status Code ${response.statusCode}`);
18
- reject(response.statusCode);
19
- } else {
20
- const fileStream = fs.createWriteStream(filePath);
21
- let accu = 0;
22
- response.on("data", (chunk) => {
23
- fileStream.write(chunk);
24
- accu += chunk.length;
25
- if (accu >= 1000_000) {
26
- process.stdout.write(".");
27
- accu = 0;
28
- }
29
- });
30
- response.on("end", () => {
31
- fileStream.close();
32
- resolve();
33
- });
34
- }
35
- })
36
- .on("error", (err) => {
37
- logger.error(`Request error: ${err.message}`);
38
- reject(err.message);
39
- });
14
+ get(fileUrl, (response) => {
15
+ if (response.statusCode !== 200) {
16
+ logger.error(`Download failed: Status Code ${response.statusCode}`);
17
+ reject(response.statusCode);
18
+ } else {
19
+ const fileStream = createWriteStream(filePath);
20
+ let accu = 0;
21
+ response.on("data", (chunk) => {
22
+ fileStream.write(chunk);
23
+ accu += chunk.length;
24
+ if (accu >= 1000_000) {
25
+ process.stdout.write(".");
26
+ accu = 0;
27
+ }
28
+ });
29
+ response.on("end", () => {
30
+ fileStream.close();
31
+ resolve();
32
+ });
33
+ }
34
+ }).on("error", (err) => {
35
+ logger.error(`Request error: ${err.message}`);
36
+ reject(err.message);
37
+ });
40
38
  return promise;
41
39
  }
42
- Object.assign(module.exports, { downloadFile });
40
+ export { downloadFile };
@@ -1,15 +1,17 @@
1
- const path = require("node:path");
2
- const { QyDB } = require("./QyDB.js");
1
+ import { join } from "node:path";
2
+ import { QyDB } from "../src/QyDB.js";
3
+ import Express from "express";
4
+ import { __dirname } from "../src/QyUtils.js";
3
5
 
4
6
  const config = {
5
7
  port: 3629,
6
8
  qyDBDataFolder: "./tmp/QyExpress",
7
- staticRoot: path.join(__dirname, "../static/"),
8
- rpcFolder: path.join(__dirname, "rpc"),
9
+ staticRoot: join(__dirname, "../static/"),
10
+ rpcFolder: join(__dirname, "rpc"),
9
11
  };
10
12
 
11
13
  const { port, qyDBDataFolder } = config;
12
- const app = require("express")();
14
+ const app = Express();
13
15
  const qyDB = new QyDB(qyDBDataFolder);
14
16
 
15
17
  let server;
@@ -1,19 +1,20 @@
1
1
  "use strict";
2
- const path = require("node:path");
3
- const fsPromises = require("node:fs/promises");
4
- const fastifyStatic = require("@fastify/static");
5
- const fastifyCompress = require("@fastify/compress");
6
- const { QyDB } = require("../src/QyDB.js");
7
- const { folderOrFileExists } = require("../src/QyUtils.js");
2
+ import { join, basename } from "node:path";
3
+ import { readdir, readFile } from "node:fs/promises";
4
+ import fastifyStatic from "@fastify/static";
5
+ import fastifyCompress from "@fastify/compress";
6
+ import { QyDB } from "../src/QyDB.js";
7
+ import { folderOrFileExists, __dirname } from "../src/QyUtils.js";
8
+ import Fastify from "fastify";
8
9
 
9
10
  const config = {
10
11
  port: 3628,
11
- staticRoot: path.join(__dirname, "../static/"),
12
- rpcFolder: path.join(__dirname, "../src/rpc"),
12
+ staticRoot: join(__dirname, "../static/"),
13
+ rpcFolder: join(__dirname, "../src/rpc"),
13
14
  };
14
15
  const { port, staticRoot } = config;
15
16
 
16
- const fastify = require("fastify")({ logger: false, forceCloseConnections: true });
17
+ const fastify = Fastify({ logger: false, forceCloseConnections: true });
17
18
 
18
19
  const qyDB = new QyDB();
19
20
 
@@ -35,8 +36,8 @@ async function insertRpcs() {
35
36
  const { rpcFolder } = config;
36
37
  if (await folderOrFileExists(rpcFolder)) {
37
38
  await Promise.all(
38
- (await fsPromises.readdir(rpcFolder)).map(async (x) => {
39
- qyDB.insertRpc(path.basename(x, ".js"), (await fsPromises.readFile(path.join(rpcFolder, x))).toString());
39
+ (await readdir(rpcFolder)).map(async (x) => {
40
+ qyDB.insertRpc(basename(x, ".js"), (await readFile(join(rpcFolder, x))).toString());
40
41
  }),
41
42
  );
42
43
  }
@@ -1,15 +1,15 @@
1
1
  // node --prof profile.js
2
2
  // node --prof-process isolate-0xnnnnnnnnnnnn-v8.log > processed.txt
3
- const path = require("node:path");
4
- const fs = require("node:fs");
5
- const { rm } = require("node:fs/promises");
6
- const { QyDB } = require("../src/QyDB.js");
7
- const { folderOrFileExists } = require("../src/QyUtils.js");
8
- const { runQueries } = require("./flights_queries.js");
3
+ import { join } from "node:path";
4
+ import { readFileSync } from "node:fs";
5
+ import { rm } from "node:fs/promises";
6
+ import { QyDB } from "../src/QyDB.js";
7
+ import { folderOrFileExists } from "../src/QyUtils.js";
8
+ import { runQueries } from "./flights_queries.js";
9
9
 
10
10
  logger.level = "info";
11
11
 
12
- const arangoJsonFolderPath = "../GraphCourse_DemoData_ArangoDB-2";
12
+ const arangoJsonFolderPath = "D:\\scripts\\GraphCourse_DemoData_ArangoDB-2";
13
13
  const dataFolder = "./tmp/flights";
14
14
 
15
15
  const qyDB = new QyDB(dataFolder, { preloadFoldersAtStart: false });
@@ -17,7 +17,7 @@ const qyDB = new QyDB(dataFolder, { preloadFoldersAtStart: false });
17
17
  run();
18
18
 
19
19
  function insertAirports() {
20
- const data = JSON.parse(fs.readFileSync(path.join(arangoJsonFolderPath, "airports.json")));
20
+ const data = JSON.parse(readFileSync(join(arangoJsonFolderPath, "airports.json")));
21
21
  console.time("insertAirports");
22
22
  const { batch } = qyDB;
23
23
  for (const record of data) {
@@ -28,7 +28,7 @@ function insertAirports() {
28
28
  }
29
29
 
30
30
  function insertFlights() {
31
- const data = JSON.parse(fs.readFileSync(path.join(arangoJsonFolderPath, "flights.json")));
31
+ const data = JSON.parse(readFileSync(join(arangoJsonFolderPath, "flights.json")));
32
32
  console.time("insertFlights");
33
33
  const { batch } = qyDB;
34
34
  for (let i = 0; i < data.length; ++i) {
@@ -1,22 +1,22 @@
1
1
  // node --prof profile.js
2
2
  // node --prof-process isolate-0xnnnnnnnnnnnn-v8.log > processed.txt
3
- const path = require("node:path");
4
- const fs = require("node:fs");
5
- const { rm } = require("node:fs/promises");
6
- const { QyDB } = require("../src/QyDB.js");
7
- const { folderOrFileExists } = require("../src/QyUtils.js");
8
- const { runQueries } = require("./flights2_queries.js");
3
+ import { join } from "node:path";
4
+ import { readFileSync } from "node:fs";
5
+ import { rm } from "node:fs/promises";
6
+ import { QyDB } from "../src/QyDB.js";
7
+ import { folderOrFileExists } from "../src/QyUtils.js";
8
+ import { runQueries } from "./flights2_queries.js";
9
9
 
10
10
  logger.level = "info";
11
11
 
12
- const arangoJsonFolderPath = "../GraphCourse_DemoData_ArangoDB-2";
12
+ const arangoJsonFolderPath = "D:\\scripts\\GraphCourse_DemoData_ArangoDB-2";
13
13
  const dataFolder = "./tmp/flights2";
14
14
  const qyDB = new QyDB(dataFolder, { preloadFoldersAtStart: false });
15
15
 
16
16
  run();
17
17
 
18
18
  function insertAirports() {
19
- const data = JSON.parse(fs.readFileSync(path.join(arangoJsonFolderPath, "airports.json")));
19
+ const data = JSON.parse(readFileSync(join(arangoJsonFolderPath, "airports.json")));
20
20
  console.time("insertAirports");
21
21
  const { batch } = qyDB;
22
22
  for (const record of data) {
@@ -28,7 +28,7 @@ function insertAirports() {
28
28
  }
29
29
 
30
30
  function insertFlights() {
31
- const data = JSON.parse(fs.readFileSync(path.join(arangoJsonFolderPath, "flights.json")));
31
+ const data = JSON.parse(readFileSync(join(arangoJsonFolderPath, "flights.json")));
32
32
  console.time("insertFlights");
33
33
  const { batch } = qyDB;
34
34
  for (let i = 0; i < data.length; ++i) {
@@ -1,4 +1,4 @@
1
- const assert = require("node:assert/strict");
1
+ import { deepEqual } from "node:assert/strict";
2
2
 
3
3
  // Return the names of all airports one can reach
4
4
  // directly (1 step) from Los Angeles International
@@ -6,94 +6,93 @@ const assert = require("node:assert/strict");
6
6
 
7
7
  function query1(qyDB) {
8
8
  console.time("query1");
9
- const resultMap = {};
10
- for (const x of qyDB.queryFiles("flights/**", { _from: "airports/LAX" })) {
11
- resultMap[x.fileContent._to] = 1;
12
- }
13
- assert.deepEqual(Object.keys(resultMap), [
14
- "airports/CVG",
15
- "airports/SMF",
16
- "airports/ATL",
17
- "airports/MSP",
18
- "airports/DFW",
19
- "airports/PHL",
20
- "airports/IAH",
21
- "airports/TUS",
22
- "airports/ORD",
23
- "airports/PDX",
24
- "airports/MIA",
25
- "airports/SFO",
26
- "airports/DEN",
27
- "airports/IAD",
28
- "airports/SJC",
29
- "airports/PHX",
30
- "airports/SEA",
31
- "airports/SLC",
32
- "airports/JFK",
33
- "airports/SAN",
34
- "airports/ONT",
35
- "airports/LAS",
36
- "airports/MCI",
37
- "airports/MDW",
38
- "airports/FLL",
39
- "airports/AUS",
40
- "airports/EWR",
41
- "airports/CLE",
42
- "airports/SBP",
43
- "airports/MEM",
44
- "airports/SBA",
45
- "airports/CLT",
46
- "airports/COS",
47
- "airports/ASE",
48
- "airports/ICT",
49
- "airports/HOU",
50
- "airports/YUM",
51
- "airports/STL",
52
- "airports/FAT",
53
- "airports/ABQ",
54
- "airports/BOI",
55
- "airports/BOS",
56
- "airports/LIH",
57
- "airports/HNL",
58
- "airports/SMX",
59
- "airports/MRY",
60
- "airports/DTW",
61
- "airports/RNO",
62
- "airports/MCO",
63
- "airports/OXR",
64
- "airports/OAK",
65
- "airports/OGG",
66
- "airports/KOA",
67
- "airports/BWI",
68
- "airports/CLD",
69
- "airports/IND",
70
- "airports/PSP",
71
- "airports/ELP",
72
- "airports/TPA",
73
- "airports/OKC",
74
- "airports/MSY",
75
- "airports/SNA",
76
- "airports/IYK",
77
- "airports/IPL",
78
- "airports/SAT",
79
- "airports/MOD",
80
- "airports/BNA",
81
- "airports/DCA",
82
- "airports/SGU",
83
- "airports/BFL",
84
- "airports/EUG",
85
- "airports/EGE",
86
- "airports/GEG",
87
- "airports/BDL",
88
- "airports/JAX",
89
- "airports/CMH",
90
- "airports/PIT",
91
- "airports/RDU",
92
- "airports/SJU",
93
- "airports/XNA",
94
- "airports/MTJ",
95
- "airports/JAC",
96
- ]);
9
+ deepEqual(
10
+ [...new Set(qyDB.queryFiles("flights/**", { _from: "airports/LAX" }).map((x) => x.prop("_to"))).values()],
11
+ [
12
+ "airports/CVG",
13
+ "airports/SMF",
14
+ "airports/ATL",
15
+ "airports/MSP",
16
+ "airports/DFW",
17
+ "airports/PHL",
18
+ "airports/IAH",
19
+ "airports/TUS",
20
+ "airports/ORD",
21
+ "airports/PDX",
22
+ "airports/MIA",
23
+ "airports/SFO",
24
+ "airports/DEN",
25
+ "airports/IAD",
26
+ "airports/SJC",
27
+ "airports/PHX",
28
+ "airports/SEA",
29
+ "airports/SLC",
30
+ "airports/JFK",
31
+ "airports/SAN",
32
+ "airports/ONT",
33
+ "airports/LAS",
34
+ "airports/MCI",
35
+ "airports/MDW",
36
+ "airports/FLL",
37
+ "airports/AUS",
38
+ "airports/EWR",
39
+ "airports/CLE",
40
+ "airports/SBP",
41
+ "airports/MEM",
42
+ "airports/SBA",
43
+ "airports/CLT",
44
+ "airports/COS",
45
+ "airports/ASE",
46
+ "airports/ICT",
47
+ "airports/HOU",
48
+ "airports/YUM",
49
+ "airports/STL",
50
+ "airports/FAT",
51
+ "airports/ABQ",
52
+ "airports/BOI",
53
+ "airports/BOS",
54
+ "airports/LIH",
55
+ "airports/HNL",
56
+ "airports/SMX",
57
+ "airports/MRY",
58
+ "airports/DTW",
59
+ "airports/RNO",
60
+ "airports/MCO",
61
+ "airports/OXR",
62
+ "airports/OAK",
63
+ "airports/OGG",
64
+ "airports/KOA",
65
+ "airports/BWI",
66
+ "airports/CLD",
67
+ "airports/IND",
68
+ "airports/PSP",
69
+ "airports/ELP",
70
+ "airports/TPA",
71
+ "airports/OKC",
72
+ "airports/MSY",
73
+ "airports/SNA",
74
+ "airports/IYK",
75
+ "airports/IPL",
76
+ "airports/SAT",
77
+ "airports/MOD",
78
+ "airports/BNA",
79
+ "airports/DCA",
80
+ "airports/SGU",
81
+ "airports/BFL",
82
+ "airports/EUG",
83
+ "airports/EGE",
84
+ "airports/GEG",
85
+ "airports/BDL",
86
+ "airports/JAX",
87
+ "airports/CMH",
88
+ "airports/PIT",
89
+ "airports/RDU",
90
+ "airports/SJU",
91
+ "airports/XNA",
92
+ "airports/MTJ",
93
+ "airports/JAC",
94
+ ],
95
+ );
97
96
  console.timeEnd("query1");
98
97
  }
99
98
 
@@ -111,24 +110,25 @@ function query1(qyDB) {
111
110
 
112
111
  function query2(qyDB) {
113
112
  console.time("query2");
114
- assert.deepEqual(
113
+ deepEqual(
115
114
  qyDB
116
115
  .queryFiles(["flights", "*", 1, (x) => x >= 5 && x <= 7], {
117
116
  $or: [{ _from: "airports/BIS" }, { _to: "airports/BIS" }],
118
117
  })
119
- .map((x) => x.fileContent.FlightNum),
118
+ .map((x) => x.prop("FlightNum"))
119
+ .sort((x, y) => x - y),
120
120
  [
121
121
  6635, 646, 6541, 5651, 6541, 5648, 687, 309, 6678, 6678, 6636, 439, 1567, 6635, 5647, 6541, 5660, 6541,
122
122
  6553, 687, 6553, 309, 5649, 5650, 6636, 439, 6635, 574, 6541, 5651, 5648, 6541, 1705, 1535, 5649, 6678,
123
123
  5650, 6636, 6678, 1087,
124
- ],
124
+ ].sort((x, y) => x - y),
125
125
  );
126
126
  console.timeEnd("query2");
127
127
  }
128
128
 
129
129
  function query3(qyDB) {
130
130
  console.time("query3");
131
- assert.deepEqual(
131
+ deepEqual(
132
132
  qyDB
133
133
  .queryFiles(["flights", "*", 1, (x) => x >= 1 && x <= 7], {
134
134
  $or: [
@@ -136,7 +136,8 @@ function query3(qyDB) {
136
136
  { _from: "airports/MSP", _to: "airports/BOI" },
137
137
  ],
138
138
  })
139
- .map((x) => x.view(["_from", "_to", "ArrTimeUTC"])),
139
+ .map((x) => x.view(["_from", "_to", "ArrTimeUTC"]))
140
+ .sort((x, y) => (x.ArrTimeUTC > y.ArrTimeUTC ? 1 : x.ArrTimeUTC == y.ArrTimeUTC ? 0 : -1)),
140
141
  [
141
142
  {
142
143
  _from: "airports/BOI",
@@ -333,7 +334,7 @@ function query3(qyDB) {
333
334
  _to: "airports/BOI",
334
335
  ArrTimeUTC: "2008-01-08T06:29:00.000Z",
335
336
  },
336
- ],
337
+ ].sort((x, y) => (x.ArrTimeUTC > y.ArrTimeUTC ? 1 : x.ArrTimeUTC == y.ArrTimeUTC ? 0 : -1)),
337
338
  );
338
339
 
339
340
  console.timeEnd("query3");
@@ -350,7 +351,7 @@ function query3(qyDB) {
350
351
 
351
352
  function query4(qyDB) {
352
353
  console.time("query4");
353
- assert.deepEqual(
354
+ deepEqual(
354
355
  qyDB.queryFiles(["flights", "*", 1, 5], { FlightNum: 860 }).map((x) => x.view(["_from", "_to"])),
355
356
  [
356
357
  { _from: "airports/IAD", _to: "airports/BOS" },
@@ -365,10 +366,10 @@ function query4(qyDB) {
365
366
 
366
367
  function query5(qyDB) {
367
368
  console.time("query5");
368
- assert.deepEqual(
369
+ deepEqual(
369
370
  qyDB
370
371
  .queryFiles("**", { vip: true })
371
- .map((x) => x.fileContent.name)
372
+ .map((x) => x.prop("name"))
372
373
  .sort(),
373
374
  [
374
375
  "Amarillo International",
@@ -390,7 +391,7 @@ function query5(qyDB) {
390
391
 
391
392
  function query6(qyDB) {
392
393
  console.time("query6");
393
- assert.deepEqual(
394
+ deepEqual(
394
395
  qyDB
395
396
  .queryFiles("flights/**", {
396
397
  FlightNum: { $or: [859, 860] },
@@ -407,25 +408,26 @@ function query6(qyDB) {
407
408
 
408
409
  function query7(qyDB) {
409
410
  console.time("query7");
410
- assert.deepEqual(
411
+ deepEqual(
411
412
  qyDB
412
413
  .queryFiles(["flights", "*", { $or: [1] }, [5, 6, 7]], {
413
414
  $or: [{ _from: "airports/BIS" }, { _to: "airports/BIS" }],
414
415
  })
415
- .map((x) => x.fileContent.FlightNum),
416
+ .map((x) => x.prop("FlightNum"))
417
+ .sort((x, y) => x - y),
416
418
  [
417
419
  6635, 646, 6541, 5651, 6541, 5648, 687, 309, 6678, 6678, 6636, 439, 1567, 6635, 5647, 6541, 5660, 6541,
418
420
  6553, 687, 6553, 309, 5649, 5650, 6636, 439, 6635, 574, 6541, 5651, 5648, 6541, 1705, 1535, 5649, 6678,
419
421
  5650, 6636, 6678, 1087,
420
- ],
422
+ ].sort((x, y) => x - y),
421
423
  );
422
424
  console.timeEnd("query7");
423
425
  }
424
426
 
425
427
  function query8(qyDB) {
426
428
  console.time("query8");
427
- assert.deepEqual(
428
- qyDB.queryFiles("**", { name: "Thigpen " }).map((x) => x.fileContent.name),
429
+ deepEqual(
430
+ qyDB.queryFiles("**", { name: "Thigpen " }).map((x) => x.prop("name")),
429
431
  ["Thigpen "],
430
432
  );
431
433
  console.timeEnd("query8");
@@ -450,4 +452,4 @@ function runQueries(qyDB) {
450
452
  query8(qyDB);
451
453
  }
452
454
 
453
- Object.assign(module.exports, { runQueries });
455
+ export { runQueries };