datafolder 1.0.0

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 (182) hide show
  1. package/README.md +169 -0
  2. package/index.js +3 -0
  3. package/package.json +27 -0
  4. package/sample.js +37 -0
  5. package/scripts/airbnb.js +73 -0
  6. package/scripts/airbnb2.js +74 -0
  7. package/scripts/airbnb2_queries.js +231 -0
  8. package/scripts/airbnb_queries.js +264 -0
  9. package/scripts/downloadFile.js +42 -0
  10. package/scripts/express.js +46 -0
  11. package/scripts/fastify.js +79 -0
  12. package/scripts/flights.js +75 -0
  13. package/scripts/flights2.js +81 -0
  14. package/scripts/flights2_queries.js +453 -0
  15. package/scripts/flights_queries.js +403 -0
  16. package/src/QyAcl.js +252 -0
  17. package/src/QyAclSaver.js +14 -0
  18. package/src/QyAclSaver_Worker.js +29 -0
  19. package/src/QyAclWriter.js +19 -0
  20. package/src/QyBatch.js +501 -0
  21. package/src/QyBinWriter.js +140 -0
  22. package/src/QyCD.js +61 -0
  23. package/src/QyCache.js +212 -0
  24. package/src/QyCompressor.js +60 -0
  25. package/src/QyCompressor_Worker.js +13 -0
  26. package/src/QyDB.js +122 -0
  27. package/src/QyDefaultOptions.js +59 -0
  28. package/src/QyDir.js +192 -0
  29. package/src/QyFetch.js +38 -0
  30. package/src/QyFile.js +124 -0
  31. package/src/QyFileContentUtils.js +175 -0
  32. package/src/QyFileLogger.js +58 -0
  33. package/src/QyIndex.js +237 -0
  34. package/src/QyIndexPropTree.js +92 -0
  35. package/src/QyIntersectNode.js +48 -0
  36. package/src/QyItem.js +105 -0
  37. package/src/QyJsonSaver.js +20 -0
  38. package/src/QyKVData.js +289 -0
  39. package/src/QyKVDataCleaner.js +17 -0
  40. package/src/QyKVDataCleaner_Worker.js +94 -0
  41. package/src/QyKVDataLoader.js +65 -0
  42. package/src/QyKVDataSaver.js +17 -0
  43. package/src/QyKVDataSaver_Worker.js +81 -0
  44. package/src/QyLogFileSaver.js +14 -0
  45. package/src/QyLogFileSaver_Worker.js +26 -0
  46. package/src/QyLogger.js +76 -0
  47. package/src/QyMessageWorker.js +41 -0
  48. package/src/QyMessager.js +84 -0
  49. package/src/QyMessager_Run.js +13 -0
  50. package/src/QyMod.js +15 -0
  51. package/src/QyOpRunner.js +73 -0
  52. package/src/QyQueue.js +60 -0
  53. package/src/QySaver.js +83 -0
  54. package/src/QySnapshotCompactor.js +17 -0
  55. package/src/QySnapshotCompactor_Worker.js +151 -0
  56. package/src/QySnapshotSaver.js +17 -0
  57. package/src/QySnapshotSaver_Worker.js +164 -0
  58. package/src/QySnapshots.js +354 -0
  59. package/src/QyStructure.js +50 -0
  60. package/src/QyTrigger.js +133 -0
  61. package/src/QyUnionNode.js +105 -0
  62. package/src/QyUtils.js +250 -0
  63. package/src/QyWorker.js +33 -0
  64. package/src/hackernews.js +93 -0
  65. package/src/rpc/evalCode.js +9 -0
  66. package/src/rpc/getFileContent.js +16 -0
  67. package/src/rpc/getSubItems.js +32 -0
  68. package/src/rpc/queryFiles.js +33 -0
  69. package/src/rpc/reloadRpc.js +1 -0
  70. package/src/simulate.js +114 -0
  71. package/src/simulate2.js +110 -0
  72. package/src/soc_pokec.js +43 -0
  73. package/static/bootstrap-5.3.8-dist/css/bootstrap.min.css +6 -0
  74. package/static/bootstrap-5.3.8-dist/js/bootstrap.bundle.js +6312 -0
  75. package/static/datafolderui/QyStyledElement.js +30 -0
  76. package/static/datafolderui/QyUIFolderTree.js +203 -0
  77. package/static/datafolderui/QyUIUtils.js +42 -0
  78. package/static/datafolderui/display-tree.js +108 -0
  79. package/static/datafolderui/explore-tree.js +122 -0
  80. package/static/datafolderui/folder-tree.js +5 -0
  81. package/static/datafolderui/hscrpt.js +25 -0
  82. package/static/datafolderui/index.css +6 -0
  83. package/static/datafolderui/index.html +20 -0
  84. package/static/datafolderui/json-view.js +74 -0
  85. package/static/datafolderui/kv-input.js +66 -0
  86. package/static/datafolderui/list-input.js +52 -0
  87. package/static/datafolderui/main-page.js +98 -0
  88. package/static/datafolderui/num-input.js +27 -0
  89. package/static/datafolderui/query-editor.js +229 -0
  90. package/static/datafolderui/querySelectorShadowRoot.js +24 -0
  91. package/static/datafolderui/resizable-input.js +67 -0
  92. package/static/favicon.ico +0 -0
  93. package/static/icons-1.13.1/font/bootstrap-icons.min.css +5 -0
  94. package/static/icons-1.13.1/font/fonts/bootstrap-icons.woff +0 -0
  95. package/static/icons-1.13.1/font/fonts/bootstrap-icons.woff2 +0 -0
  96. package/static/json-view/dist/jsonview.js +433 -0
  97. package/static/tree.js/tree.css +106 -0
  98. package/static/tree.js/tree.js +374 -0
  99. package/static/w2ui/dist/w2ui.min.css +2 -0
  100. package/static/w2ui/src/less/icons/icons.json +1 -0
  101. package/static/w2ui/src/less/icons/preview.html +33 -0
  102. package/static/w2ui/src/less/icons/readme.md +15 -0
  103. package/static/w2ui/src/less/icons/svg/box.svg +3 -0
  104. package/static/w2ui/src/less/icons/svg/check.svg +3 -0
  105. package/static/w2ui/src/less/icons/svg/colors.svg +3 -0
  106. package/static/w2ui/src/less/icons/svg/columns.svg +5 -0
  107. package/static/w2ui/src/less/icons/svg/cross.svg +4 -0
  108. package/static/w2ui/src/less/icons/svg/drop.svg +6 -0
  109. package/static/w2ui/src/less/icons/svg/empty.svg +3 -0
  110. package/static/w2ui/src/less/icons/svg/eye-dropper.svg +4 -0
  111. package/static/w2ui/src/less/icons/svg/info.svg +8 -0
  112. package/static/w2ui/src/less/icons/svg/paste.svg +4 -0
  113. package/static/w2ui/src/less/icons/svg/pencil.svg +5 -0
  114. package/static/w2ui/src/less/icons/svg/plus.svg +3 -0
  115. package/static/w2ui/src/less/icons/svg/reload.svg +5 -0
  116. package/static/w2ui/src/less/icons/svg/search.svg +3 -0
  117. package/static/w2ui/src/less/icons/svg/settings.svg +8 -0
  118. package/static/w2ui/src/less/icons/w2ui-font.css +36 -0
  119. package/static/w2ui/src/less/icons/w2ui-font.woff +0 -0
  120. package/static/w2ui/src/less/src/buttons.less +184 -0
  121. package/static/w2ui/src/less/src/common.less +541 -0
  122. package/static/w2ui/src/less/src/fields.less +302 -0
  123. package/static/w2ui/src/less/src/form.less +319 -0
  124. package/static/w2ui/src/less/src/grid.less +1057 -0
  125. package/static/w2ui/src/less/src/icons.less +37 -0
  126. package/static/w2ui/src/less/src/layout.less +86 -0
  127. package/static/w2ui/src/less/src/mixins.less +87 -0
  128. package/static/w2ui/src/less/src/popup.less +277 -0
  129. package/static/w2ui/src/less/src/sidebar.less +343 -0
  130. package/static/w2ui/src/less/src/tabs.less +145 -0
  131. package/static/w2ui/src/less/src/toolbar.less +219 -0
  132. package/static/w2ui/src/less/src/tooltip.less +948 -0
  133. package/static/w2ui/src/less/w2ui.less +196 -0
  134. package/static/w2ui/src/locale/az-az.json +114 -0
  135. package/static/w2ui/src/locale/ba-ba.json +114 -0
  136. package/static/w2ui/src/locale/bg-bg.json +114 -0
  137. package/static/w2ui/src/locale/ca-es.json +114 -0
  138. package/static/w2ui/src/locale/da-dk.json +114 -0
  139. package/static/w2ui/src/locale/de-de.json +114 -0
  140. package/static/w2ui/src/locale/en-gb.json +17 -0
  141. package/static/w2ui/src/locale/en-us.json +17 -0
  142. package/static/w2ui/src/locale/es-ar.json +115 -0
  143. package/static/w2ui/src/locale/es-cr.json +119 -0
  144. package/static/w2ui/src/locale/es-es.json +114 -0
  145. package/static/w2ui/src/locale/es-mx.json +114 -0
  146. package/static/w2ui/src/locale/fr-fr.json +114 -0
  147. package/static/w2ui/src/locale/gl-es.json +114 -0
  148. package/static/w2ui/src/locale/hr-hr.json +114 -0
  149. package/static/w2ui/src/locale/hu-hu.json +114 -0
  150. package/static/w2ui/src/locale/id-id.json +114 -0
  151. package/static/w2ui/src/locale/it-it.json +114 -0
  152. package/static/w2ui/src/locale/ja-jp.json +114 -0
  153. package/static/w2ui/src/locale/kk-kz.json +116 -0
  154. package/static/w2ui/src/locale/ko-kr.json +114 -0
  155. package/static/w2ui/src/locale/lt-lt.json +114 -0
  156. package/static/w2ui/src/locale/nl-nl.json +114 -0
  157. package/static/w2ui/src/locale/no-no.json +114 -0
  158. package/static/w2ui/src/locale/pl-pl.json +114 -0
  159. package/static/w2ui/src/locale/pt-br.json +114 -0
  160. package/static/w2ui/src/locale/ru-ru.json +116 -0
  161. package/static/w2ui/src/locale/sk-sk.json +114 -0
  162. package/static/w2ui/src/locale/sl-si.json +116 -0
  163. package/static/w2ui/src/locale/sr-rs.json +114 -0
  164. package/static/w2ui/src/locale/tr-tr.json +114 -0
  165. package/static/w2ui/src/locale/uk-ua.json +114 -0
  166. package/static/w2ui/src/locale/zh-cn.json +114 -0
  167. package/static/w2ui/src/locale/zh-tw.json +114 -0
  168. package/static/w2ui/src/query.js +583 -0
  169. package/static/w2ui/src/readme.md +11 -0
  170. package/static/w2ui/src/w2base.js +311 -0
  171. package/static/w2ui/src/w2compat.js +207 -0
  172. package/static/w2ui/src/w2field.js +1854 -0
  173. package/static/w2ui/src/w2form.js +2411 -0
  174. package/static/w2ui/src/w2grid.js +8916 -0
  175. package/static/w2ui/src/w2layout.js +1194 -0
  176. package/static/w2ui/src/w2locale.js +129 -0
  177. package/static/w2ui/src/w2popup.js +909 -0
  178. package/static/w2ui/src/w2sidebar.js +1769 -0
  179. package/static/w2ui/src/w2tabs.js +669 -0
  180. package/static/w2ui/src/w2toolbar.js +1180 -0
  181. package/static/w2ui/src/w2tooltip.js +3134 -0
  182. package/static/w2ui/src/w2utils.js +2457 -0
@@ -0,0 +1,453 @@
1
+ const assert = require("node:assert/strict");
2
+
3
+ // Return the names of all airports one can reach
4
+ // directly (1 step) from Los Angeles International
5
+ // (LAX) following the flights edges:
6
+
7
+ function query1(qyDB) {
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
+ ]);
97
+ console.timeEnd("query1");
98
+ }
99
+
100
+ // Find all connections which depart from or
101
+ // land at BIS on January 5th and 7th and
102
+ // return the destination city and the arrival
103
+ // time in universal time (UTC):
104
+ // FOR airport, flight IN ANY
105
+ // 'airports/BIS' flights
106
+ // FILTER flight.Month == 1
107
+ // AND flight.Day >= 5
108
+ // AND flight.Day <= 7
109
+ // RETURN { city: airport.city,
110
+ // time: flight.ArrTimeUTC }
111
+
112
+ function query2(qyDB) {
113
+ console.time("query2");
114
+ assert.deepEqual(
115
+ qyDB
116
+ .queryFiles(["flights", "*", 1, (x) => x >= 5 && x <= 7], {
117
+ $or: [{ _from: "airports/BIS" }, { _to: "airports/BIS" }],
118
+ })
119
+ .map((x) => x.fileContent.FlightNum),
120
+ [
121
+ 6635, 646, 6541, 5651, 6541, 5648, 687, 309, 6678, 6678, 6636, 439, 1567, 6635, 5647, 6541, 5660, 6541,
122
+ 6553, 687, 6553, 309, 5649, 5650, 6636, 439, 6635, 574, 6541, 5651, 5648, 6541, 1705, 1535, 5649, 6678,
123
+ 5650, 6636, 6678, 1087,
124
+ ],
125
+ );
126
+ console.timeEnd("query2");
127
+ }
128
+
129
+ function query3(qyDB) {
130
+ console.time("query3");
131
+ assert.deepEqual(
132
+ qyDB
133
+ .queryFiles(["flights", "*", 1, (x) => x >= 1 && x <= 7], {
134
+ $or: [
135
+ { _from: "airports/BOI", _to: "airports/MSP" },
136
+ { _from: "airports/MSP", _to: "airports/BOI" },
137
+ ],
138
+ })
139
+ .map((x) => x.view(["_from", "_to", "ArrTimeUTC"])),
140
+ [
141
+ {
142
+ _from: "airports/BOI",
143
+ _to: "airports/MSP",
144
+ ArrTimeUTC: "2008-01-01T15:46:00.000Z",
145
+ },
146
+ {
147
+ _from: "airports/BOI",
148
+ _to: "airports/MSP",
149
+ ArrTimeUTC: "2008-01-01T17:28:00.000Z",
150
+ },
151
+ {
152
+ _from: "airports/MSP",
153
+ _to: "airports/BOI",
154
+ ArrTimeUTC: "2008-01-01T19:59:00.000Z",
155
+ },
156
+ {
157
+ _from: "airports/BOI",
158
+ _to: "airports/MSP",
159
+ ArrTimeUTC: "2008-01-01T23:34:00.000Z",
160
+ },
161
+ {
162
+ _from: "airports/MSP",
163
+ _to: "airports/BOI",
164
+ ArrTimeUTC: "2008-01-02T02:37:00.000Z",
165
+ },
166
+ {
167
+ _from: "airports/MSP",
168
+ _to: "airports/BOI",
169
+ ArrTimeUTC: "2008-01-02T06:55:00.000Z",
170
+ },
171
+ {
172
+ _from: "airports/BOI",
173
+ _to: "airports/MSP",
174
+ ArrTimeUTC: "2008-01-02T15:25:00.000Z",
175
+ },
176
+ {
177
+ _from: "airports/BOI",
178
+ _to: "airports/MSP",
179
+ ArrTimeUTC: "2008-01-02T18:31:00.000Z",
180
+ },
181
+ {
182
+ _from: "airports/MSP",
183
+ _to: "airports/BOI",
184
+ ArrTimeUTC: "2008-01-02T18:25:00.000Z",
185
+ },
186
+ {
187
+ _from: "airports/BOI",
188
+ _to: "airports/MSP",
189
+ ArrTimeUTC: "2008-01-02T23:28:00.000Z",
190
+ },
191
+ {
192
+ _from: "airports/MSP",
193
+ _to: "airports/BOI",
194
+ ArrTimeUTC: "2008-01-03T02:42:00.000Z",
195
+ },
196
+ {
197
+ _from: "airports/MSP",
198
+ _to: "airports/BOI",
199
+ ArrTimeUTC: "2008-01-03T06:58:00.000Z",
200
+ },
201
+ {
202
+ _from: "airports/BOI",
203
+ _to: "airports/MSP",
204
+ ArrTimeUTC: "2008-01-03T15:36:00.000Z",
205
+ },
206
+ {
207
+ _from: "airports/BOI",
208
+ _to: "airports/MSP",
209
+ ArrTimeUTC: "2008-01-03T17:54:00.000Z",
210
+ },
211
+ {
212
+ _from: "airports/MSP",
213
+ _to: "airports/BOI",
214
+ ArrTimeUTC: "2008-01-03T19:46:00.000Z",
215
+ },
216
+ {
217
+ _from: "airports/BOI",
218
+ _to: "airports/MSP",
219
+ ArrTimeUTC: "2008-01-03T23:22:00.000Z",
220
+ },
221
+ {
222
+ _from: "airports/MSP",
223
+ _to: "airports/BOI",
224
+ ArrTimeUTC: "2008-01-04T02:26:00.000Z",
225
+ },
226
+ {
227
+ _from: "airports/MSP",
228
+ _to: "airports/BOI",
229
+ ArrTimeUTC: "2008-01-04T07:20:00.000Z",
230
+ },
231
+ {
232
+ _from: "airports/BOI",
233
+ _to: "airports/MSP",
234
+ ArrTimeUTC: "2008-01-04T15:23:00.000Z",
235
+ },
236
+ {
237
+ _from: "airports/BOI",
238
+ _to: "airports/MSP",
239
+ ArrTimeUTC: "2008-01-04T17:26:00.000Z",
240
+ },
241
+ {
242
+ _from: "airports/MSP",
243
+ _to: "airports/BOI",
244
+ ArrTimeUTC: "2008-01-04T18:37:00.000Z",
245
+ },
246
+ {
247
+ _from: "airports/BOI",
248
+ _to: "airports/MSP",
249
+ ArrTimeUTC: "2008-01-04T23:29:00.000Z",
250
+ },
251
+ {
252
+ _from: "airports/MSP",
253
+ _to: "airports/BOI",
254
+ ArrTimeUTC: "2008-01-05T03:52:00.000Z",
255
+ },
256
+ {
257
+ _from: "airports/MSP",
258
+ _to: "airports/BOI",
259
+ ArrTimeUTC: "2008-01-05T07:01:00.000Z",
260
+ },
261
+ {
262
+ _from: "airports/BOI",
263
+ _to: "airports/MSP",
264
+ ArrTimeUTC: "2008-01-05T15:31:00.000Z",
265
+ },
266
+ {
267
+ _from: "airports/BOI",
268
+ _to: "airports/MSP",
269
+ ArrTimeUTC: "2008-01-05T17:15:00.000Z",
270
+ },
271
+ {
272
+ _from: "airports/MSP",
273
+ _to: "airports/BOI",
274
+ ArrTimeUTC: "2008-01-05T18:36:00.000Z",
275
+ },
276
+ {
277
+ _from: "airports/BOI",
278
+ _to: "airports/MSP",
279
+ ArrTimeUTC: "2008-01-05T23:17:00.000Z",
280
+ },
281
+ {
282
+ _from: "airports/MSP",
283
+ _to: "airports/BOI",
284
+ ArrTimeUTC: "2008-01-06T02:38:00.000Z",
285
+ },
286
+ {
287
+ _from: "airports/MSP",
288
+ _to: "airports/BOI",
289
+ ArrTimeUTC: "2008-01-06T06:56:00.000Z",
290
+ },
291
+ {
292
+ _from: "airports/BOI",
293
+ _to: "airports/MSP",
294
+ ArrTimeUTC: "2008-01-06T15:15:00.000Z",
295
+ },
296
+ {
297
+ _from: "airports/BOI",
298
+ _to: "airports/MSP",
299
+ ArrTimeUTC: "2008-01-06T18:18:00.000Z",
300
+ },
301
+ {
302
+ _from: "airports/MSP",
303
+ _to: "airports/BOI",
304
+ ArrTimeUTC: "2008-01-06T18:48:00.000Z",
305
+ },
306
+ {
307
+ _from: "airports/BOI",
308
+ _to: "airports/MSP",
309
+ ArrTimeUTC: "2008-01-06T23:22:00.000Z",
310
+ },
311
+ {
312
+ _from: "airports/MSP",
313
+ _to: "airports/BOI",
314
+ ArrTimeUTC: "2008-01-07T06:49:00.000Z",
315
+ },
316
+ {
317
+ _from: "airports/BOI",
318
+ _to: "airports/MSP",
319
+ ArrTimeUTC: "2008-01-07T18:15:00.000Z",
320
+ },
321
+ {
322
+ _from: "airports/MSP",
323
+ _to: "airports/BOI",
324
+ ArrTimeUTC: "2008-01-07T18:33:00.000Z",
325
+ },
326
+ {
327
+ _from: "airports/BOI",
328
+ _to: "airports/MSP",
329
+ ArrTimeUTC: "2008-01-08T00:35:00.000Z",
330
+ },
331
+ {
332
+ _from: "airports/MSP",
333
+ _to: "airports/BOI",
334
+ ArrTimeUTC: "2008-01-08T06:29:00.000Z",
335
+ },
336
+ ],
337
+ );
338
+
339
+ console.timeEnd("query3");
340
+ }
341
+
342
+ // Find all flights with FlightNum 860 (number) on
343
+ // January 5th and return the _from and _to
344
+ // attributes only (you may use KEEP() for this).
345
+ // FOR f IN flights
346
+ // FILTER f.FlightNum == 860
347
+ // AND f.Month == 1
348
+ // AND f.Day == 5
349
+ // RETURN KEEP(f, "_from", "_to")
350
+
351
+ function query4(qyDB) {
352
+ console.time("query4");
353
+ assert.deepEqual(
354
+ qyDB.queryFiles(["flights", "*", 1, 5], { FlightNum: 860 }).map((x) => x.view(["_from", "_to"])),
355
+ [
356
+ { _from: "airports/IAD", _to: "airports/BOS" },
357
+ { _from: "airports/PBI", _to: "airports/JFK" },
358
+ { _from: "airports/ORD", _to: "airports/DTW" },
359
+ { _from: "airports/PHX", _to: "airports/DEN" },
360
+ { _from: "airports/SEA", _to: "airports/ATL" },
361
+ ],
362
+ );
363
+ console.timeEnd("query4");
364
+ }
365
+
366
+ function query5(qyDB) {
367
+ console.time("query5");
368
+ assert.deepEqual(
369
+ qyDB
370
+ .queryFiles("**", { vip: true })
371
+ .map((x) => x.fileContent.name)
372
+ .sort(),
373
+ [
374
+ "Amarillo International",
375
+ "William B Hartsfield-Atlanta Intl",
376
+ "Dallas-Fort Worth International",
377
+ "John F Kennedy Intl",
378
+ "Los Angeles International",
379
+ "Chicago O'Hare International",
380
+ "San Francisco International",
381
+ ].sort(),
382
+ );
383
+ console.timeEnd("query5");
384
+ }
385
+ // Find all flights departing or arriving at JFK with FlightNum 859 or 860 and return objects with flight numbers and airport names where the flights go to or come from respectively.
386
+ // FOR a, f IN ANY
387
+ // "airports/JFK" flights
388
+ // FILTER f.FlightNum IN [859,860]
389
+ // RETURN { airport: a.name, flight: f.FlightNum }
390
+
391
+ function query6(qyDB) {
392
+ console.time("query6");
393
+ assert.deepEqual(
394
+ qyDB
395
+ .queryFiles("flights/**", {
396
+ FlightNum: { $or: [859, 860] },
397
+ $or: [{ _from: "airports/JFK" }, { _to: "airports/JFK" }],
398
+ })
399
+ .map((x) => x.view(["_from", "_to", "FlightNum"])),
400
+ [
401
+ { _from: "airports/JFK", _to: "airports/PBI", FlightNum: 859 },
402
+ { _from: "airports/PBI", _to: "airports/JFK", FlightNum: 860 },
403
+ ],
404
+ );
405
+ console.timeEnd("query6");
406
+ }
407
+
408
+ function query7(qyDB) {
409
+ console.time("query7");
410
+ assert.deepEqual(
411
+ qyDB
412
+ .queryFiles(["flights", "*", { $or: [1] }, [5, 6, 7]], {
413
+ $or: [{ _from: "airports/BIS" }, { _to: "airports/BIS" }],
414
+ })
415
+ .map((x) => x.fileContent.FlightNum),
416
+ [
417
+ 6635, 646, 6541, 5651, 6541, 5648, 687, 309, 6678, 6678, 6636, 439, 1567, 6635, 5647, 6541, 5660, 6541,
418
+ 6553, 687, 6553, 309, 5649, 5650, 6636, 439, 6635, 574, 6541, 5651, 5648, 6541, 1705, 1535, 5649, 6678,
419
+ 5650, 6636, 6678, 1087,
420
+ ],
421
+ );
422
+ console.timeEnd("query7");
423
+ }
424
+
425
+ function query8(qyDB) {
426
+ console.time("query8");
427
+ assert.deepEqual(
428
+ qyDB.queryFiles("**", { name: "Thigpen " }).map((x) => x.fileContent.name),
429
+ ["Thigpen "],
430
+ );
431
+ console.timeEnd("query8");
432
+ }
433
+
434
+ function runQueries(qyDB) {
435
+ query1(qyDB);
436
+ query1(qyDB);
437
+ query2(qyDB);
438
+ query2(qyDB);
439
+ query3(qyDB);
440
+ query3(qyDB);
441
+ query4(qyDB);
442
+ query4(qyDB);
443
+ query5(qyDB);
444
+ query5(qyDB);
445
+ query6(qyDB);
446
+ query6(qyDB);
447
+ query7(qyDB);
448
+ query7(qyDB);
449
+ query8(qyDB);
450
+ query8(qyDB);
451
+ }
452
+
453
+ Object.assign(module.exports, { runQueries });