datafolder 1.0.6 → 1.0.8

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 (159) hide show
  1. package/README.md +7 -2
  2. package/index.js +1 -1
  3. package/internal.md +121 -0
  4. package/package.json +8 -6
  5. package/scripts/airbnb.js +77 -72
  6. package/scripts/airbnb2.js +78 -73
  7. package/scripts/airbnb2_queries.js +181 -229
  8. package/scripts/airbnb_queries.js +214 -265
  9. package/scripts/convertBinFiles.js +47 -0
  10. package/scripts/downloadFile.js +41 -40
  11. package/scripts/express.js +44 -48
  12. package/scripts/fastify.js +71 -80
  13. package/scripts/flights.js +71 -75
  14. package/scripts/flights2.js +78 -81
  15. package/scripts/flights2_queries.js +417 -455
  16. package/scripts/flights_queries.js +381 -407
  17. package/src/QyAcl.d.ts +17 -0
  18. package/src/QyAcl.js +113 -116
  19. package/src/QyAclSaver.d.ts +4 -0
  20. package/src/QyAclSaver.js +3 -3
  21. package/src/QyAclSaver_Worker.d.ts +9 -0
  22. package/src/QyAclSaver_Worker.js +2 -4
  23. package/src/QyAclWriter.d.ts +5 -0
  24. package/src/QyBatch.d.ts +42 -0
  25. package/src/QyBatch.js +8 -8
  26. package/src/QyBinWriter.d.ts +15 -0
  27. package/src/QyCD.d.ts +37 -0
  28. package/src/QyCD.js +27 -16
  29. package/src/QyCache.d.ts +44 -0
  30. package/src/QyCache.js +71 -59
  31. package/src/QyCompressor.d.ts +9 -0
  32. package/src/QyCompressor.js +29 -29
  33. package/src/QyCompressor_Worker.d.ts +1 -0
  34. package/src/QyDB.d.ts +42 -0
  35. package/src/QyDB.js +13 -11
  36. package/src/QyDefaultOptions.d.ts +1 -0
  37. package/src/QyDefaultOptions.js +3 -0
  38. package/src/QyDir.d.ts +48 -0
  39. package/src/QyDir.js +41 -41
  40. package/src/QyFetch.d.ts +7 -0
  41. package/src/QyFetch.js +3 -4
  42. package/src/QyFile.d.ts +19 -0
  43. package/src/QyFile.js +35 -34
  44. package/src/QyFileContentUtils.d.ts +13 -0
  45. package/src/QyFileContentUtils.js +126 -126
  46. package/src/QyFileLogger.d.ts +11 -0
  47. package/src/QyIndex.d.ts +6 -0
  48. package/src/QyIndex.js +73 -75
  49. package/src/QyIndexPropTree.d.ts +7 -0
  50. package/src/QyIndexPropTree.js +24 -24
  51. package/src/QyIntersectNode.d.ts +7 -0
  52. package/src/QyIntersectNode.js +15 -15
  53. package/src/QyItem.d.ts +30 -0
  54. package/src/QyItem.js +32 -28
  55. package/src/QyJsonSaver.d.ts +6 -0
  56. package/src/QyKVData.d.ts +12 -0
  57. package/src/QyKVData.js +30 -20
  58. package/src/QyKVDataCleaner.d.ts +4 -0
  59. package/src/QyKVDataCleaner.js +1 -1
  60. package/src/QyKVDataCleaner_Worker.d.ts +13 -0
  61. package/src/QyKVDataCleaner_Worker.js +2 -4
  62. package/src/QyKVDataLoader.d.ts +9 -0
  63. package/src/QyKVDataLoader.js +11 -11
  64. package/src/QyKVDataSaver.d.ts +4 -0
  65. package/src/QyKVDataSaver.js +6 -6
  66. package/src/QyKVDataSaver_Worker.d.ts +13 -0
  67. package/src/QyKVDataSaver_Worker.js +11 -13
  68. package/src/QyLogFileSaver.d.ts +4 -0
  69. package/src/QyLogFileSaver.js +1 -1
  70. package/src/QyLogFileSaver_Worker.d.ts +8 -0
  71. package/src/QyLogFileSaver_Worker.js +2 -4
  72. package/src/QyLogger.d.ts +10 -0
  73. package/src/QyLogger.js +40 -40
  74. package/src/QyMessageWorker.d.ts +5 -0
  75. package/src/QyMessageWorker.js +7 -7
  76. package/src/QyMessager.d.ts +7 -0
  77. package/src/QyMessager.js +30 -27
  78. package/src/QyMessager_Run.d.ts +1 -0
  79. package/src/QyMessager_Run.js +11 -6
  80. package/src/QyMod.d.ts +1 -0
  81. package/src/QyMod.js +6 -6
  82. package/src/QyOpRunner.d.ts +10 -0
  83. package/src/QyOpRunner.js +39 -39
  84. package/src/QyQueue.d.ts +11 -0
  85. package/src/QySaver.d.ts +10 -0
  86. package/src/QySnapshotCompactor.d.ts +4 -0
  87. package/src/QySnapshotCompactor.js +1 -1
  88. package/src/QySnapshotCompactor_Worker.d.ts +11 -0
  89. package/src/QySnapshotCompactor_Worker.js +21 -22
  90. package/src/QySnapshotSaver.d.ts +4 -0
  91. package/src/QySnapshotSaver.js +1 -1
  92. package/src/QySnapshotSaver_Worker.d.ts +16 -0
  93. package/src/QySnapshotSaver_Worker.js +56 -53
  94. package/src/QySnapshots.d.ts +27 -0
  95. package/src/QySnapshots.js +74 -66
  96. package/src/QyStructure.d.ts +1 -0
  97. package/src/QyStructure.js +18 -18
  98. package/src/QyTrigger.d.ts +9 -0
  99. package/src/QyTrigger.js +30 -30
  100. package/src/QyUnionNode.d.ts +17 -0
  101. package/src/QyUnionNode.js +2 -2
  102. package/src/QyUtils.d.ts +53 -0
  103. package/src/QyUtils.js +140 -117
  104. package/src/QyWorker.d.ts +5 -0
  105. package/src/QyWorker.js +18 -18
  106. package/src/hackernews.d.ts +1 -0
  107. package/src/hackernews.js +59 -47
  108. package/src/rpc/getRpcFiles.js +1 -0
  109. package/src/rpc/getTriggerFiles.js +1 -0
  110. package/src/simulate.d.ts +1 -0
  111. package/src/simulate2.d.ts +1 -0
  112. package/src/soc_pokec.d.ts +1 -0
  113. package/src/soc_pokec.js +7 -7
  114. package/static/codemirror.bundle/editor.bundle.js +370 -166
  115. package/static/datafolderui/QyStyledElement.js +8 -17
  116. package/static/datafolderui/QyUIFolderViewer.js +230 -0
  117. package/static/datafolderui/QyUIUtils.js +5 -5
  118. package/static/datafolderui/code-mirror.js +7 -7
  119. package/static/datafolderui/display-tree.js +22 -58
  120. package/static/datafolderui/explore-tree.js +10 -10
  121. package/static/datafolderui/folder-tree.js +71 -2
  122. package/static/datafolderui/hscrpt.js +26 -7
  123. package/static/datafolderui/json-view.js +34 -3
  124. package/static/datafolderui/main-page.js +67 -36
  125. package/static/datafolderui/query-editor.js +9 -9
  126. package/static/datafolderui/rpc-editor.js +31 -0
  127. package/static/datafolderui/trigger-editor.js +33 -0
  128. package/data/sampleDataFolder/qykv/history/acl/1_acl.txt +0 -1
  129. package/data/sampleDataFolder/qykv/history/acl/2_acl.txt +0 -1
  130. package/data/sampleDataFolder/qykv/history/acl/3_acl.txt +0 -1
  131. package/data/sampleDataFolder/qykv/history/acl/4_acl.txt +0 -1
  132. package/data/sampleDataFolder/qykv/history/acl/5_acl.txt +0 -1
  133. package/data/sampleDataFolder/qykv/snapshot/1/1_pM.txt +0 -0
  134. package/data/sampleDataFolder/qykv/snapshot/1/1_prefixPM.txt +0 -0
  135. package/data/sampleDataFolder/qykv/snapshot/1/1_vL.txt +0 -10
  136. package/data/sampleDataFolder/qykv/snapshot/2/1_pM.txt +0 -0
  137. package/data/sampleDataFolder/qykv/snapshot/2/1_prefixPM.txt +0 -0
  138. package/data/sampleDataFolder/qykv/snapshot/2/1_vL.txt +0 -1
  139. package/data/sampleDataFolder/qykv/snapshot/3/1_pM.txt +0 -0
  140. package/data/sampleDataFolder/qykv/snapshot/3/1_prefixPM.txt +0 -0
  141. package/data/sampleDataFolder/qykv/snapshot/3/1_vL.txt +0 -1
  142. package/data/sampleDataFolder/qykv/snapshot/4/1_pM.txt +0 -0
  143. package/data/sampleDataFolder/qykv/snapshot/4/1_prefixPM.txt +0 -0
  144. package/data/sampleDataFolder/qykv/snapshot/4/1_vL.txt +0 -1
  145. package/data/sampleDataFolder/qykv/snapshot/4/2_pM.txt +0 -0
  146. package/data/sampleDataFolder/qykv/snapshot/4/2_prefixPM.txt +0 -0
  147. package/data/sampleDataFolder/qykv/snapshot/4/2_vL.txt +0 -9
  148. package/data/sampleDataFolder/qykv/snapshot/5/1_pM.txt +0 -0
  149. package/data/sampleDataFolder/qykv/snapshot/5/1_prefixPM.txt +0 -0
  150. package/data/sampleDataFolder/qykv/snapshot/5/1_vL.txt +0 -55
  151. package/data/sampleDataFolder/qykv/snapshot/info/1.json +0 -1
  152. package/data/sampleDataFolder/qykv/snapshot/info/2.json +0 -1
  153. package/data/sampleDataFolder/qykv/snapshot/info/3.json +0 -1
  154. package/data/sampleDataFolder/qykv/snapshot/info/4.json +0 -1
  155. package/data/sampleDataFolder/qykv/snapshot/info/5.json +0 -1
  156. package/data/sampleDataFolder/qylog/2026/02/15/08/change.txt +0 -58
  157. package/data/sampleDataFolder/qylog/2026/02/15/08/stderr.txt +0 -11
  158. package/data/sampleDataFolder/qylog/2026/02/15/08/stdout.txt +0 -36
  159. package/static/datafolderui/QyUIFolderTree.js +0 -179
@@ -6,14 +6,14 @@ import {
6
6
 
7
7
  import {
8
8
  readdir as l,
9
- readFile as m
9
+ readFile as r
10
10
  } from "node:fs/promises";
11
11
 
12
12
  import {
13
13
  join as s
14
14
  } from "node:path";
15
15
 
16
- import d from "node:zlib";
16
+ import m from "node:zlib";
17
17
 
18
18
  import {
19
19
  getDefaultOptions as n
@@ -21,21 +21,21 @@ import {
21
21
 
22
22
  import {
23
23
  Hash_Key_Length as u,
24
- folderOrFileExists as v,
25
- listToMap as r,
26
- isEmptyObj as f,
27
- isString as M
24
+ folderOrFileExists as d,
25
+ listToMap as f,
26
+ isEmptyObj as h,
27
+ isString as v
28
28
  } from "./QyUtils.js";
29
29
 
30
30
  import {
31
- QyBinWriter as g
31
+ QyBinWriter as M
32
32
  } from "./QyBinWriter.js";
33
33
 
34
34
  import {
35
- bufferToNums as y,
36
- numsToBuffer as S,
37
- applyAclChange as h,
38
- iterCmdKeys as c
35
+ bufferToNums as g,
36
+ numsToBuffer as y,
37
+ applyAclChange as c,
38
+ iterCmdKeys as S
39
39
  } from "./QyAcl.js";
40
40
 
41
41
  import {
@@ -72,38 +72,34 @@ class t {
72
72
  async loadSnapshotInfos() {
73
73
  let {
74
74
  snapshotInfoFolder: t,
75
- qyJsonSaver: f,
76
- numToSnapshotMap: h
75
+ qyJsonSaver: n,
76
+ numToSnapshotMap: r
77
77
  } = this;
78
- if (await v(t)) {
78
+ if (await d(t)) {
79
79
  var a = (await l(t)).filter(t => /^[1-9]/.test(t)).map(t => parseInt(t)).sort((t, a) => t - a);
80
- let p = 0, u = 0;
80
+ let e = 0, s = 0;
81
81
  await Promise.all(a.map(async t => {
82
- var a = await f.loadFromFile(t + ".json"), o = h[t] = {
82
+ var a = await n.loadFromFile(t + ".json"), o = r[t] = {
83
83
  snapshotNum: t,
84
84
  info: a,
85
85
  posMap: {},
86
86
  outdatedCount: 0
87
- };
88
- ++this.snapshotCount, t > p && (p = t, u = a.maxChangeId);
89
- var t = o, a = V(a = this, t), e = (P.info("Loading " + a), await m(a)), s = e.length, n = t.prefixPM = {};
90
- for (let t = 0; t < s; ) {
91
- var r = t + k, i = e.toString("latin1", t, r), i = n[i] = [];
92
- t = y(e, r, i);
93
- }
87
+ }, t = (++this.snapshotCount, t > e && (e = t, s = a.maxChangeId),
88
+ this), a = o;
89
+ t = k(t, a), P.info("Loading " + t), a.prefixPM = await V(t);
94
90
  })), Object.assign(this, {
95
- maxSnapshotNum: p,
96
- snapshotMaxChangeId: u
91
+ maxSnapshotNum: e,
92
+ snapshotMaxChangeId: s
97
93
  });
98
94
  var {
99
95
  numToSnapshotMap: o,
100
- prefixMap: e
96
+ prefixMap: i
101
97
  } = this;
102
- for (r of a) {
103
- var s, n = o[r], r = n.prefixPM;
104
- for (s in r) {
105
- var i = e[s];
106
- i ? i.push(n) : e[s] = [ n ];
98
+ for (f of a) {
99
+ var p, u = o[f], f = u.prefixPM;
100
+ for (p in f) {
101
+ var h = i[p];
102
+ h ? h.push(u) : i[p] = [ u ];
107
103
  }
108
104
  }
109
105
  }
@@ -116,14 +112,14 @@ class t {
116
112
  var a, o = this.options.minLenToCompress, {
117
113
  keyValueMap: e,
118
114
  info: s
119
- } = t, n = (++s.vLVersion, new g()), r = (n.start(this.getVLFilePath(t)),
115
+ } = t, n = (++s.vLVersion, new M()), r = (n.start(this.getVLFilePath(t)),
120
116
  Object.keys(e).sort()), i = {};
121
117
  let p = 0, u = 0, f, h;
122
118
  for (a of r) {
123
119
  var l = e[a];
124
120
  let t;
125
- null == l ? t = T : (h = Buffer.isBuffer(l) ? (f = l, 0) : M(l) ? (f = l.length >= o ? (n.save(j),
126
- d.zstdCompressSync(l)) : (n.save(F), Buffer.from(l)), 1) : (f = Buffer.from(JSON.stringify(w(a) && !x(l) ? Object.keys(l) : l)),
121
+ null == l ? t = K : (h = Buffer.isBuffer(l) ? (f = l, 0) : v(l) ? (f = l.length >= o ? (n.save(j),
122
+ m.zstdCompressSync(l)) : (n.save(F), Buffer.from(l)), 1) : (f = Buffer.from(JSON.stringify(Q(a) && !x(l) ? Object.keys(l) : l)),
127
123
  0), n.save([ f, O ]), l = h + f.length, t = [ p, l ], p += l + 1), i[a] = t,
128
124
  ++u;
129
125
  }
@@ -160,12 +156,12 @@ class t {
160
156
  var e = o.length;
161
157
  for (let t = 0; t < e; t += 2) {
162
158
  var s = o[t], n = o[t + 1];
163
- a[s] = null != n && w(s) ? r(n) : n;
159
+ a[s] = null != n && Q(s) ? f(n) : n;
164
160
  }
165
161
  }
166
- c(t, t => {
162
+ S(t, t => {
167
163
  t in a || (a[t] = this.getValueSync(t)), this.removeKey(t);
168
- }), h(a, t);
164
+ }), c(a, t);
169
165
  }
170
166
  getValueSync(t) {
171
167
  var a = ((t, a) => {
@@ -182,7 +178,7 @@ class t {
182
178
  posMap: s,
183
179
  prefixPM: n
184
180
  } = a;
185
- if (n = n[o]) return [ n, e ] = n, n = B(t, t.getPMFilePath(a), n, e),
181
+ if (n = n[o]) return [ n, e ] = n, n = T(t, t.getPMFilePath(a), n, e),
186
182
  t.loadPartialPosMapBuffer(a, o, n), s;
187
183
  })(t, s, n);
188
184
  if (i && a in i) return s;
@@ -199,25 +195,18 @@ class t {
199
195
  var [ e, o ] = o;
200
196
  if (0 != o) {
201
197
  var s = this;
202
- if (a = s.getVLFilePath(a), s = B(s, a, e, o)) return (a = s[0]) == L ? s.toString("utf8", 1) : a == b ? d.zstdDecompressSync(s.subarray(1)).toString() : (e = JSON.parse(s),
203
- w(t) ? r(e) : e);
198
+ if (a = s.getVLFilePath(a), s = T(s, a, e, o)) return (a = s[0]) == L ? s.toString("utf8", 1) : a == b ? m.zstdDecompressSync(s.subarray(1)).toString() : (e = JSON.parse(s),
199
+ Q(t) ? f(e) : e);
204
200
  }
205
201
  }
206
202
  }
207
203
  }
208
- iterPMBuffer(a, o) {
209
- var e = a.length;
210
- for (let t = 0; t < e; ) {
211
- var s = t + u, n = a.toString("latin1", t, s), r = [];
212
- t = y(a, s, r), o(n, r);
213
- }
214
- }
215
204
  loadPartialPosMapBuffer(o, t, a) {
216
205
  let {
217
206
  posMap: e,
218
207
  prefixPM: s
219
208
  } = o, n = (delete s[t], this).keyToSnapshotMap;
220
- this.iterPMBuffer(a, (t, a) => {
209
+ N(a, (t, a) => {
221
210
  t in n ? ++o.outdatedCount : (e[t] = a, n[t] = o);
222
211
  });
223
212
  }
@@ -235,10 +224,10 @@ class t {
235
224
  } = n;
236
225
  for (t in r) {
237
226
  var u, f = r[t];
238
- f.isOut || (100 == (u = Q(f)) ? (this.delSnapshot(f), a.push(t)) : p < u ? (N(f) ? o : s).push(f) : Math.round(f.outdatedCount / f.info.totalCount * 100) > i ? e.push(f) : (u = this,
239
- f.info.totalCount < u.options.minSnapshotKeyCount && N(f) && o.push(f)));
227
+ f.isOut || (100 == (u = D(f)) ? (this.delSnapshot(f), a.push(t)) : p < u ? (B(f) ? o : s).push(f) : Math.floor(f.outdatedCount / f.info.totalCount * 100) > i ? e.push(f) : (u = this,
228
+ f.info.totalCount < u.options.minSnapshotKeyCount && B(f) && o.push(f)));
240
229
  }
241
- return 1 == o.length && Q(o[0]) < p && (o.length = 0), 0 < e.length && P.log("pMCompacts:" + e.map(t => t.snapshotNum)),
230
+ return 1 == o.length && D(o[0]) < p && (o.length = 0), 0 < e.length && P.log("pMCompacts:" + e.map(t => t.snapshotNum)),
242
231
  0 < s.length && P.log("vLCompacts:" + s.map(t => t.snapshotNum)), 0 < o.length && P.log("combiningSnapshots:" + o.map(t => t.snapshotNum)),
243
232
  {
244
233
  emptySnapshotNumList: a,
@@ -274,7 +263,7 @@ class t {
274
263
  outdatedCount: o,
275
264
  totalCount: e
276
265
  } = a;
277
- return a.outdated = Math.round(100 * o / e) + "%", P.log("Saving snapshotInfo:" + t),
266
+ return a.outdated = Math.floor(100 * o / e) + "%", P.log("Saving snapshotInfo:" + t),
278
267
  this.qyJsonSaver.saveToFile(a, t + ".json", !0);
279
268
  }
280
269
  savePosMap(t, a) {
@@ -282,18 +271,18 @@ class t {
282
271
  outdatedCount: e,
283
272
  info: s,
284
273
  posMap: n
285
- } = t, r = (s.outdatedCount += e, t.outdatedCount = 0, ++s.pMVersion, new g()), i = (r.start(this.getPMFilePath(t)),
274
+ } = t, r = (s.outdatedCount += e, t.outdatedCount = 0, ++s.pMVersion, new M()), i = (r.start(this.getPMFilePath(t)),
286
275
  t.prefixPM = {});
287
276
  let p = 0, u = 0, f;
288
277
  for (o of a = a || Object.keys(n).sort()) {
289
278
  null == f ? f = I(o) : o.startsWith(f) || (i[f] = [ p, u ], f = I(o),
290
279
  p += u, u = 0);
291
- var h = Buffer.from(o), l = S(n[o]);
280
+ var h = Buffer.from(o), l = y(n[o]);
292
281
  r.save([ h, l ]), u += h.length + l.length;
293
282
  }
294
283
  return null != f && (i[f] = [ p, u ]), Promise.all([ r.stop(), ((t, a) => {
295
- var o, e = new g(), s = (e.start(V(t, a)), a).prefixPM;
296
- for (o in s) e.save([ Buffer.from(o), S(s[o]) ]);
284
+ var o, e = new M(), s = (e.start(k(t, a)), a).prefixPM;
285
+ for (o in s) e.save([ Buffer.from(o), y(s[o]) ]);
297
286
  return e.stop();
298
287
  })(this, t) ]);
299
288
  }
@@ -313,7 +302,24 @@ class t {
313
302
  }
314
303
  }
315
304
 
316
- function B(t, a, o, e) {
305
+ function N(a, o) {
306
+ var e = a.length;
307
+ for (let t = 0; t < e; ) {
308
+ var s = t + u, n = a.toString("latin1", t, s), r = [];
309
+ t = g(a, s, r), o(n, r);
310
+ }
311
+ }
312
+
313
+ async function V(t) {
314
+ var a = await r(t), o = a.length, e = {};
315
+ for (let t = 0; t < o; ) {
316
+ var s = t + w, n = e[a.toString("latin1", t, s)] = [];
317
+ t = g(a, s, n);
318
+ }
319
+ return e;
320
+ }
321
+
322
+ function T(t, a, o, e) {
317
323
  var s = ((t, a) => {
318
324
  let o = t.fDMap, e = o[a];
319
325
  if (!e) {
@@ -334,15 +340,15 @@ function B(t, a, o, e) {
334
340
  return n;
335
341
  }
336
342
 
337
- function N(t) {
343
+ function B(t) {
338
344
  var {
339
345
  keyValueMap: a,
340
346
  prefixPM: o
341
347
  } = t;
342
- return a || null == o || f(t.prefixPM);
348
+ return a || null == o || h(t.prefixPM);
343
349
  }
344
350
 
345
- function V(t, a) {
351
+ function k(t, a) {
346
352
  var {
347
353
  snapshotNum: a,
348
354
  info: o
@@ -355,24 +361,26 @@ function a(t, a) {
355
361
  null != o && (e(o), delete t[a]);
356
362
  }
357
363
 
358
- let T = [ 0, 0 ], k = 3;
364
+ let K = [ 0, 0 ], w = 3;
359
365
 
360
366
  function I(t) {
361
- return t.substring(0, k);
367
+ return t.substring(0, w);
362
368
  }
363
369
 
364
- function w(t) {
370
+ function Q(t) {
365
371
  return !t.startsWith("c");
366
372
  }
367
373
 
368
- function Q(t) {
374
+ function D(t) {
369
375
  var {
370
376
  outdatedCount: t,
371
377
  info: a
372
378
  } = t, o = a.totalCount, t = t + a.outdatedCount;
373
- return t == o ? 100 : Math.round(t / o * 100);
379
+ return t == o ? 100 : Math.floor(t / o * 100);
374
380
  }
375
381
 
376
382
  export {
377
- t as QySnapshots
383
+ t as QySnapshots,
384
+ N as iterPMBuffer,
385
+ V as loadPrefixPMFile
378
386
  };
@@ -0,0 +1 @@
1
+ export declare function dumpStructure(parentFolderPath: any, dir: any): Promise<void>;
@@ -14,39 +14,39 @@ import {
14
14
  } from "./QyUtils.js";
15
15
 
16
16
  async function P(e, r) {
17
- let t = {};
18
- for (var i of r.subdirList) {
19
- let e = i.name;
17
+ let i = {};
18
+ for (var o of r.subdirList) {
19
+ let e = o.name;
20
20
  for (;r.getFile(e); ) e += "_d";
21
- e = _(e), t[e] = {
22
- x: i,
21
+ e = _(e), i[e] = {
22
+ x: o,
23
23
  count: 0
24
24
  };
25
25
  }
26
26
  await y(e);
27
- var o, a = [], s = [];
27
+ var t, a = [], s = [];
28
28
  let n = {};
29
- for (o of await w(e, {
29
+ for (t of await w(e, {
30
30
  withFileTypes: !0
31
31
  })) {
32
- var u = o.name;
33
- o.isFile() ? a.push(u) : (s.push(u), n[u] = 1);
32
+ var f = t.name;
33
+ t.isFile() ? a.push(f) : (s.push(f), n[f] = 1);
34
34
  }
35
- var f, l, p, m, c, h = [];
36
- for (f of s) t[f] || ((l = d((l = f) + "_d") || d(l.replace(/_d$/, ""))) ? (h.push(F(x(e, f), x(e, l))),
37
- t[l].count = 1) : h.push(v(x(e, f), {
35
+ var l, u, p, m, h, c = [];
36
+ for (l of s) i[l] || ((u = d((u = l) + "_d") || d(u.replace(/_d$/, ""))) ? (c.push(F(x(e, l), x(e, u))),
37
+ i[u].count = 1) : c.push(v(x(e, l), {
38
38
  recursive: !0
39
39
  })));
40
- for (p of a) r.getFile(p) || h.push(v(x(e, p)));
41
- await Promise.all(h), h.length = 0;
42
- for (m of r.fileList) h.push(g(x(e, _(m.name)), m.contentAsText, {
40
+ for (p of a) r.getFile(p) || c.push(v(x(e, p)));
41
+ await Promise.all(c), c.length = 0;
42
+ for (m of r.fileList) c.push(g(x(e, _(m.name)), m.contentAsText, {
43
43
  flush: !0
44
44
  }));
45
- for (c in await Promise.all(h), h.length = 0, t) h.push(P(x(e, c), t[c].x));
45
+ for (h in await Promise.all(c), c.length = 0, i) c.push(P(x(e, h), i[h].x));
46
46
  function d(e) {
47
- return e && 0 == t[e]?.count && !n[e] ? e : void 0;
47
+ return e && 0 == i[e]?.count && !n[e] ? e : void 0;
48
48
  }
49
- await Promise.all(h);
49
+ await Promise.all(c);
50
50
  }
51
51
 
52
52
  function _(e) {
@@ -0,0 +1,9 @@
1
+ export declare class QyTriggerNode {
2
+ constructor(name: any, parent: any);
3
+ insertTrigger(triggerName: any, fileNamePath: any, propNamePathList: any, fun: any): void;
4
+ removeTrigger(triggerName: any, fileNamePath: any): boolean;
5
+ get isEmpty(): boolean;
6
+ removeEmptyNodes(): void;
7
+ checkTrigger(file: any, delta: any): void;
8
+ }
9
+ export declare function updateTriggerNodes(rootDir: any, fileNamePath: any): void;
package/src/QyTrigger.js CHANGED
@@ -1,21 +1,21 @@
1
1
  import {
2
- isDeepStrictEqual as p
2
+ isDeepStrictEqual as c
3
3
  } from "node:util";
4
4
 
5
5
  import {
6
- getValByNamePath as c,
6
+ getValByNamePath as p,
7
7
  setValByNamePath as u
8
8
  } from "./QyFileContentUtils.js";
9
9
 
10
10
  import {
11
11
  isEmptyObj as e,
12
- isMatchName as l,
12
+ isMatchName as g,
13
13
  getMatchParam as d,
14
14
  arrayLast as f,
15
- propNameJoin as N
15
+ propNameJoin as v
16
16
  } from "./QyUtils.js";
17
17
 
18
- let v = Array.isArray;
18
+ let N = Array.isArray;
19
19
 
20
20
  class h {
21
21
  constructor(e, r) {
@@ -29,21 +29,21 @@ class h {
29
29
  insertTrigger(e, r, t, a) {
30
30
  let i = this;
31
31
  for (var s of r) {
32
- l(s) && (s = "*");
33
- var o = i.children;
34
- i = o[s] || (o[s] = new h(s, i));
32
+ g(s) && (s = "*");
33
+ var n = i.children;
34
+ i = n[s] || (n[s] = new h(s, i));
35
35
  }
36
- var n = i.triggerMap, g = n[e];
37
- g ? Object.assign(g, {
36
+ var o = i.triggerMap, l = o[e];
37
+ l ? Object.assign(l, {
38
38
  triggerName: e,
39
39
  fileNamePath: r,
40
40
  propNamePathList: t,
41
41
  fun: a
42
- }) : n[e] = new m(e, r, t, a);
42
+ }) : o[e] = new m(e, r, t, a);
43
43
  }
44
44
  removeTrigger(e, r) {
45
45
  let t = this;
46
- for (var a of r) if (l(a) && (a = "*"), !(t = t.children[a])) return !1;
46
+ for (var a of r) if (g(a) && (a = "*"), !(t = t.children[a])) return !1;
47
47
  r = t.triggerMap;
48
48
  return !!r[e] && (delete r[e], t.isEmpty && t.removeEmptyNodes(), !0);
49
49
  }
@@ -82,32 +82,32 @@ class m {
82
82
  triggerName: a,
83
83
  fileNamePath: i,
84
84
  propNamePathList: s,
85
- fun: o
86
- } = this, n = e.fileContent;
87
- let g;
85
+ fun: n
86
+ } = this, o = e.fileContent;
87
+ let l;
88
88
  for (t of s) {
89
- var l = c(r.oldValue, t), f = c(r.newValue, t);
90
- p(l, f) || (l = {
91
- oldValue: l,
89
+ var g = p(r.oldValue, t), f = p(r.newValue, t);
90
+ c(g, f) || (g = {
91
+ oldValue: g,
92
92
  newValue: f
93
- }, (v(f) || v(c(n, t))) && (l.isArrayDelta = !0), (g = g || {
93
+ }, (N(f) || N(p(o, t))) && (g.isArrayDelta = !0), (l = l || {
94
94
  _file: e,
95
- _fileContent: n
96
- })[N(t)] = l, u(g, t, l));
95
+ _fileContent: o
96
+ })[v(t)] = g, u(l, t, g));
97
97
  }
98
- if (g) {
98
+ if (l) {
99
99
  var {
100
100
  namePath: h,
101
101
  qyCache: s
102
102
  } = e;
103
103
  for (let e = 0; e < h.length; ++e) {
104
104
  var m = d(i[e]);
105
- m && (g[m] = h[e]);
105
+ m && (l[m] = h[e]);
106
106
  }
107
107
  try {
108
- o && o(g), s.emit(a, g);
108
+ n && n(l), s.emit(a, l);
109
109
  } catch (e) {
110
- logger.error(`Running trigger ${a} failed:`, g, e);
110
+ logger.error(`Running trigger ${a} failed:`, l, e);
111
111
  }
112
112
  }
113
113
  }
@@ -116,7 +116,7 @@ class m {
116
116
  let t = [];
117
117
 
118
118
  function y(e, r) {
119
- return e ? l(r) ? Object.values(e) : (e = e[r]) ? [ e ] : t : t;
119
+ return e ? g(r) ? Object.values(e) : (e = e[r]) ? [ e ] : t : t;
120
120
  }
121
121
 
122
122
  function r(e, a) {
@@ -124,13 +124,13 @@ function r(e, a) {
124
124
  let r = [ e ], t = [];
125
125
  for (let e = 0; e < a.length - 1; ++e) {
126
126
  var i, s = a[e];
127
- for (i of r) for (var o of y(i.subdirMap, s)) i.setChildTriggerNodes(o),
128
- t.push(o);
127
+ for (i of r) for (var n of y(i.subdirMap, s)) i.setChildTriggerNodes(n),
128
+ t.push(n);
129
129
  if (0 == t.length) return;
130
130
  [ r, t ] = [ t, r ], t.length = 0;
131
131
  }
132
- var n, g = f(a);
133
- for (n of r) for (var l of y(n.fileMap, g)) n.setChildTriggerNodes(l);
132
+ var o, l = f(a);
133
+ for (o of r) for (var g of y(o.fileMap, l)) o.setChildTriggerNodes(g);
134
134
  }
135
135
  }
136
136
 
@@ -0,0 +1,17 @@
1
+ export declare class QueryCounter {
2
+ constructor(limit: any, cursor?: number);
3
+ get isFull(): boolean;
4
+ encounterOne(fileName: any): true | undefined;
5
+ countOne(): true | undefined;
6
+ }
7
+ export declare class QyQueryNode {
8
+ constructor();
9
+ encounterOne(resultMap: any, fileName: any, queryCounter: any): true | undefined;
10
+ }
11
+ export declare class QyUnionNode extends QyQueryNode {
12
+ constructor(dir: any);
13
+ containsFile(fileName: any): boolean;
14
+ getFiles(queryCounter: any, resultMap?: {}): Generator<any, void, any>;
15
+ addNode(node: any): void;
16
+ addDir(dir: any): void;
17
+ }
@@ -97,7 +97,7 @@ class o extends e {
97
97
  }
98
98
 
99
99
  export {
100
- o as QyUnionNode,
100
+ i as QueryCounter,
101
101
  e as QyQueryNode,
102
- i as QueryCounter
102
+ o as QyUnionNode
103
103
  };
@@ -0,0 +1,53 @@
1
+ export declare const __dirname: string;
2
+ export declare const SpecialOperators: {
3
+ [k: string]: string;
4
+ };
5
+ export declare const SpecialFilePaths: {
6
+ HiddenFolderName: string;
7
+ TriggerDirPath: string[];
8
+ RpcDirPath: string[];
9
+ IndexDirPath: string[];
10
+ IndexPropPathsFileName: string;
11
+ };
12
+ export declare function isMatchName(name: any): any;
13
+ export declare function getMatchParam(name: any): any;
14
+ export declare function getSizeStr(size: number): string;
15
+ export declare function calHash(str: any, len?: number): string;
16
+ export declare const Hash_Key_Length: number;
17
+ export declare function getSubdirMapKey(fullPathHash: any): string;
18
+ export declare function getFileMapKey(fullPathHash: any): string;
19
+ export declare function getContentKey(fullPathHash: any): string;
20
+ export declare function getRandomStr(byteCount?: number): string;
21
+ export declare function arrayLast(array: any): any;
22
+ export declare function isEmptyObj(obj: any): boolean;
23
+ export declare function isNotNullObj(item: any): boolean;
24
+ export declare function isString(item: any): item is string;
25
+ export declare function isNumber(item: any): item is number;
26
+ export declare function isBoolean(item: any): item is boolean;
27
+ export declare function isFunction(item: any): boolean;
28
+ export declare function isSimpleType(item: any): boolean;
29
+ export declare function trimArrayTail(arr: any): any;
30
+ export declare function setPromise(operation: any): any;
31
+ export declare function toBuffer(data: any): Buffer<any>;
32
+ export declare function getSuffix(num: any): "s" | "";
33
+ export declare function ensureDir(dirPath: any): Promise<string | undefined>;
34
+ export declare function ensureParentDir(filePath: any): Promise<string | undefined>;
35
+ export declare function getSize(filePath: any): Promise<number | false>;
36
+ export declare function folderOrFileExists(folderPath: any): Promise<boolean>;
37
+ export declare function sleep(seconds: any, signal: any): Promise<boolean>;
38
+ export declare function lockExclusiveFilePath(exclusiveFilePath: any): Promise<void>;
39
+ export declare function unlockExclusiveFilePath(exclusiveFilePath: any): void;
40
+ export declare function fromSingleName(name: any): any;
41
+ export declare function toSingleName(list: any): any;
42
+ export declare function pathSplit(itemPath: any): any;
43
+ export declare function propNameSplit(propNameStr: any): any;
44
+ export declare function propNameJoin(propName: any): any;
45
+ export declare function randomInt(max: any, min?: number): number;
46
+ export declare function listToMap(list: any): {};
47
+ export declare function readBufferAsync(filePath: any, fileHandle: any, start: any, length: any): Promise<Buffer<ArrayBuffer> | undefined>;
48
+ export declare function memoryPercent(): number;
49
+ export declare function loadFileList(fileList: any, preloadCount?: number): AsyncGenerator<{
50
+ filePath: any;
51
+ bin: any;
52
+ }, void, unknown>;
53
+ export * as default from "./QyUtils.ts";