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,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,7 +110,7 @@ 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", {
117
116
  $and: [
@@ -120,19 +119,20 @@ function query2(qyDB) {
120
119
  { Day: (x) => x >= 5 && x <= 7 },
121
120
  ],
122
121
  })
123
- .map((x) => x.fileContent.FlightNum),
122
+ .map((x) => x.prop("FlightNum"))
123
+ .sort((x, y) => x - y),
124
124
  [
125
125
  6635, 646, 6541, 5651, 6541, 5648, 687, 309, 6678, 6678, 6636, 439, 1567, 6635, 5647, 6541, 5660, 6541,
126
126
  6553, 687, 6553, 309, 5649, 5650, 6636, 439, 6635, 574, 6541, 5651, 5648, 6541, 1705, 1535, 5649, 6678,
127
127
  5650, 6636, 6678, 1087,
128
- ],
128
+ ].sort((x, y) => x - y),
129
129
  );
130
130
  console.timeEnd("query2");
131
131
  }
132
132
 
133
133
  function query3(qyDB) {
134
134
  console.time("query3");
135
- assert.deepEqual(
135
+ deepEqual(
136
136
  qyDB
137
137
  .queryFiles("flights", {
138
138
  $or: [
@@ -142,7 +142,8 @@ function query3(qyDB) {
142
142
  Month: 1,
143
143
  Day: (x) => x >= 1 && x <= 7,
144
144
  })
145
- .map((x) => x.view(["_from", "_to", "ArrTimeUTC"])),
145
+ .map((x) => x.view(["_from", "_to", "ArrTimeUTC"]))
146
+ .sort((x, y) => (x.ArrTimeUTC > y.ArrTimeUTC ? 1 : x.ArrTimeUTC == y.ArrTimeUTC ? 0 : -1)),
146
147
  [
147
148
  {
148
149
  _from: "airports/BOI",
@@ -339,7 +340,7 @@ function query3(qyDB) {
339
340
  _to: "airports/BOI",
340
341
  ArrTimeUTC: "2008-01-08T06:29:00.000Z",
341
342
  },
342
- ],
343
+ ].sort((x, y) => (x.ArrTimeUTC > y.ArrTimeUTC ? 1 : x.ArrTimeUTC == y.ArrTimeUTC ? 0 : -1)),
343
344
  );
344
345
 
345
346
  console.timeEnd("query3");
@@ -356,24 +357,27 @@ function query3(qyDB) {
356
357
 
357
358
  function query4(qyDB) {
358
359
  console.time("query4");
359
- const result = qyDB
360
- .queryFiles("flights", { Month: 1, Day: 5, FlightNum: 860 })
361
- .map((x) => x.view(["_from", "_to"]));
362
- assert.deepEqual(result, [
363
- { _from: "airports/IAD", _to: "airports/BOS" },
364
- { _from: "airports/PBI", _to: "airports/JFK" },
365
- { _from: "airports/ORD", _to: "airports/DTW" },
366
- { _from: "airports/PHX", _to: "airports/DEN" },
367
- { _from: "airports/SEA", _to: "airports/ATL" },
368
- ]);
360
+ deepEqual(
361
+ qyDB.queryFiles("flights", { Month: 1, Day: 5, FlightNum: 860 }).map((x) => x.view(["_from", "_to"])),
362
+ [
363
+ { _from: "airports/IAD", _to: "airports/BOS" },
364
+ { _from: "airports/PBI", _to: "airports/JFK" },
365
+ { _from: "airports/ORD", _to: "airports/DTW" },
366
+ { _from: "airports/PHX", _to: "airports/DEN" },
367
+ { _from: "airports/SEA", _to: "airports/ATL" },
368
+ ],
369
+ );
369
370
  console.timeEnd("query4");
370
371
  }
371
372
 
372
373
  function query5(qyDB) {
373
374
  logger.info("Query begins");
374
375
  console.time("query5");
375
- assert.deepEqual(
376
- qyDB.queryFiles("airports", { vip: true }).map((x) => x.view(["name"]).name),
376
+ deepEqual(
377
+ qyDB
378
+ .queryFiles("airports", { vip: true })
379
+ .map((x) => x.prop("name"))
380
+ .sort(),
377
381
  [
378
382
  "Amarillo International",
379
383
  "William B Hartsfield-Atlanta Intl",
@@ -382,7 +386,7 @@ function query5(qyDB) {
382
386
  "Los Angeles International",
383
387
  "Chicago O'Hare International",
384
388
  "San Francisco International",
385
- ],
389
+ ].sort(),
386
390
  );
387
391
  console.timeEnd("query5");
388
392
  }
@@ -400,4 +404,4 @@ function runQueries(qyDB) {
400
404
  query5(qyDB);
401
405
  }
402
406
 
403
- Object.assign(module.exports, { runQueries });
407
+ export { runQueries };