datafolder 1.0.17 → 1.0.19

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.
@@ -1,7 +1,6 @@
1
1
  import {
2
2
  close as e,
3
- readSync as i,
4
- openSync as p
3
+ openSync as s
5
4
  } from "node:fs";
6
5
 
7
6
  import {
@@ -13,40 +12,43 @@ import {
13
12
  join as n
14
13
  } from "node:path";
15
14
 
16
- import d from "node:zlib";
15
+ import m from "node:zlib";
17
16
 
18
17
  import {
19
- getDefaultOptions as s
18
+ getDefaultOptions as i
20
19
  } from "./QyDefaultOptions.js";
21
20
 
22
21
  import {
23
- Hash_Key_Length as u,
24
- folderOrFileExists as m,
22
+ Hash_Key_Length as p,
23
+ folderOrFileExists as d,
25
24
  listToMap as f,
26
- isEmptyObj as h,
27
- isString as v
25
+ isEmptyObj as u,
26
+ isString as v,
27
+ isArray as M,
28
+ isUint8Array as y,
29
+ readBufferFromFD as h
28
30
  } from "./QyUtils.js";
29
31
 
30
32
  import {
31
- QyBinWriter as M
33
+ QyBinWriter as g
32
34
  } from "./QyBinWriter.js";
33
35
 
34
36
  import {
35
- bufferToNums as y,
36
- numsToBuffer as c,
37
- applyAclChange as g,
38
- iterCmdKeys as S
37
+ bufferToNums as c,
38
+ numsToBuffer as S,
39
+ applyAclChange as C,
40
+ iterCmdKeys as P
39
41
  } from "./QyAcl.js";
40
42
 
41
43
  import {
42
- QyJsonSaver as C
44
+ QyJsonSaver as x
43
45
  } from "./QyJsonSaver.js";
44
46
 
45
47
  import {
46
- logger as P
48
+ logger as F
47
49
  } from "./QyLogger.js";
48
50
 
49
- let x = Array.isArray, F = Buffer.from("\n"), L = Buffer.from("'"), O = Buffer.from("z"), j = L[0], J = O[0];
51
+ let J = Buffer.from("\n"), L = Buffer.from("'"), O = Buffer.from("z"), b = Buffer.from("vect"), K = L[0], _ = O[0], A = b[0];
50
52
 
51
53
  class t {
52
54
  snapshotFolder;
@@ -62,7 +64,7 @@ class t {
62
64
  snapshotCount = 0;
63
65
  constructor(t, o = void 0) {
64
66
  (o = {
65
- ...s("QySnapshots"),
67
+ ...i("QySnapshots"),
66
68
  ...o
67
69
  }).vLOutdatedPercent = 2 * o.pMOutdatedPercent;
68
70
  var a = n(t, "info");
@@ -70,48 +72,48 @@ class t {
70
72
  snapshotFolder: t,
71
73
  snapshotInfoFolder: a,
72
74
  options: o,
73
- qyJsonSaver: new C(a, o)
75
+ qyJsonSaver: new x(a, o)
74
76
  });
75
77
  }
76
78
  async loadSnapshotInfos() {
77
79
  let {
78
80
  snapshotInfoFolder: t,
79
- qyJsonSaver: s,
81
+ qyJsonSaver: n,
80
82
  numToSnapshotMap: r
81
83
  } = this;
82
- if (await m(t)) {
84
+ if (await d(t)) {
83
85
  var o = await (async (t, o) => {
84
86
  var a = {};
85
- for (s of await l(o)) {
86
- var e, n, s = /^([1-9][0-9]*)(_([0-9]+))*\.json/.exec(s);
87
- s && (e = +s[1], s = s[3], s = s ? +s : 2, null == (n = a[e]) ? a[e] = s : (t.removeFile(D(e, Math.min(n, s))),
88
- a[e] = Math.max(n, s)));
87
+ for (n of await l(o)) {
88
+ var e, s, n = /^([1-9][0-9]*)(_([0-9]+))*\.json/.exec(n);
89
+ n && (e = +n[1], n = n[3], n = n ? +n : 2, null == (s = a[e]) ? a[e] = n : (t.removeFile(Q(e, Math.min(s, n))),
90
+ a[e] = Math.max(s, n)));
89
91
  }
90
92
  return Object.entries(a).map(([ t, o ]) => [ +t, o ]).sort((t, o) => t[0] - o[0]);
91
- })(s, t);
92
- let e = 0, n = 0;
93
+ })(n, t);
94
+ let e = 0, s = 0;
93
95
  await Promise.all(o.map(async ([ t, o ]) => {
94
- var a = await s.loadFromFile(D(t, o)), o = (a.verList = [ o ], r[t] = {
96
+ var a = await n.loadFromFile(Q(t, o)), o = (a.verList = [ o ], r[t] = {
95
97
  snapshotNum: t,
96
98
  info: a,
97
99
  posMap: {},
98
100
  outdatedCount: 0
99
- }), t = (++this.snapshotCount, t > e && (e = t, n = a.maxChangeId),
101
+ }), t = (++this.snapshotCount, t > e && (e = t, s = a.maxChangeId),
100
102
  this), a = o;
101
- t = N(t, a), P.info("Loading " + t), a.prefixPM = await b(t);
103
+ t = T(t, a), F.info("Loading " + t), a.prefixPM = await V(t);
102
104
  })), Object.assign(this, {
103
105
  maxSnapshotNum: e,
104
- snapshotMaxChangeId: n
106
+ snapshotMaxChangeId: s
105
107
  });
106
108
  var {
107
109
  numToSnapshotMap: a,
108
110
  prefixMap: i
109
111
  } = this;
110
- for ([ f ] of o) {
111
- var p, u = a[f], f = u.prefixPM;
112
- for (p in f) {
112
+ for ([ u ] of o) {
113
+ var p, f = a[u], u = f.prefixPM;
114
+ for (p in u) {
113
115
  var h = i[p];
114
- h ? h.push(u) : i[p] = [ u ];
116
+ h ? h.push(f) : i[p] = [ f ];
115
117
  }
116
118
  }
117
119
  }
@@ -123,39 +125,40 @@ class t {
123
125
  saveKeyValueMap(t) {
124
126
  var o, a = this.options.minLenToCompress, {
125
127
  keyValueMap: e,
126
- info: n
127
- } = t, s = (++n.vLVersion, new M()), r = (s.start(this.getVLFilePath(t)),
128
+ info: s
129
+ } = t, n = (++s.vLVersion, new g()), r = (n.start(this.getVLFilePath(t)),
128
130
  Object.keys(e).sort()), i = {};
129
- let p = 0, u = 0, f, h;
131
+ let p = 0, f = 0, u, h;
130
132
  for (o of r) {
131
133
  var l = e[o];
132
134
  let t;
133
- null == l ? t = K : (h = Buffer.isBuffer(l) ? (f = l, 0) : v(l) ? (f = l.length >= a ? (s.save(O),
134
- d.zstdCompressSync(l)) : (s.save(L), Buffer.from(l)), 1) : (f = Buffer.from(JSON.stringify(I(o) && !x(l) ? Object.keys(l) : l)),
135
- 0), s.save([ f, F ]), l = h + f.length, t = [ p, l ], p += l + 1), i[o] = t,
136
- ++u;
135
+ null == l ? t = q : (h = Buffer.isBuffer(l) ? (u = l, 0) : v(l) ? (u = l.length >= a ? (n.save(O),
136
+ m.zstdCompressSync(l)) : (n.save(L), Buffer.from(l)), 1) : y(l) ? (n.save(b),
137
+ u = Buffer.from(l.buffer, l.byteOffset, l.byteLength), 4) : (u = Buffer.from(JSON.stringify(I(o) && !M(l) ? Object.keys(l) : l)),
138
+ 0), n.save([ u, J ]), l = h + u.length, t = [ p, l ], p += l + 1), i[o] = t,
139
+ ++f;
137
140
  }
138
141
  return Object.assign(t, {
139
142
  posMap: i,
140
143
  outdatedCount: 0
141
- }), Object.assign(n, {
142
- totalCount: u,
144
+ }), Object.assign(s, {
145
+ totalCount: f,
143
146
  outdatedCount: 0
144
- }), Promise.all([ this.savePosMap(t, r), s.stop() ]);
147
+ }), Promise.all([ this.savePosMap(t, r), n.stop() ]);
145
148
  }
146
149
  addMaxSnapshot(t) {
147
150
  var o, {
148
151
  numToSnapshotMap: a,
149
152
  keyToSnapshotMap: e
150
153
  } = this, {
151
- posMap: n,
152
- keyValueMap: s,
154
+ posMap: s,
155
+ keyValueMap: n,
153
156
  snapshotNum: r,
154
157
  info: i
155
158
  } = t, i = i.maxChangeId, i = (Object.assign(this, {
156
159
  maxSnapshotNum: r,
157
160
  snapshotMaxChangeId: i
158
- }), s || n);
161
+ }), n || s);
159
162
  for (o in i) e[o] = t;
160
163
  a[r] = t, ++this.snapshotCount;
161
164
  }
@@ -167,33 +170,33 @@ class t {
167
170
  if (null != a) {
168
171
  var e = a.length;
169
172
  for (let t = 0; t < e; t += 2) {
170
- var n = a[t], s = a[t + 1];
171
- o[n] = null != s && I(n) ? f(s) : s;
173
+ var s = a[t], n = a[t + 1];
174
+ o[s] = null != n && I(s) ? f(n) : n;
172
175
  }
173
176
  }
174
- S(t, t => {
177
+ P(t, t => {
175
178
  t in o || (o[t] = this.getValueSync(t)), this.removeKey(t);
176
- }), g(o, t);
179
+ }), C(o, t);
177
180
  }
178
181
  getValueSync(t) {
179
182
  var o = ((t, o) => {
180
183
  let {
181
184
  keyToSnapshotMap: a,
182
185
  prefixMap: e
183
- } = t, n = a[o];
184
- if (n) return n;
185
- var s = w(o), r = e[s];
186
+ } = t, s = a[o];
187
+ if (s) return s;
188
+ var n = k(o), r = e[n];
186
189
  if (r) for (;0 < r.length; ) {
187
- n = r.pop();
190
+ s = r.pop();
188
191
  var i = ((t, o, a) => {
189
- var e, {
192
+ var e, s, {
190
193
  posMap: n,
191
- prefixPM: s
194
+ prefixPM: r
192
195
  } = o;
193
- if (s = s[a]) return [ s, e ] = s, s = T(t, t.getPMFilePath(o), s, e),
196
+ if (r = r[a]) return [ r, e ] = r, s = t.getPMFilePath(o), s = h(N(t, s), s, r, e),
194
197
  t.loadPartialPosMapBuffer(o, a, s), n;
195
- })(t, n, s);
196
- if (i && o in i) return n;
198
+ })(t, s, n);
199
+ if (i && o in i) return s;
197
200
  }
198
201
  })(this, t);
199
202
  if (o) {
@@ -206,8 +209,8 @@ class t {
206
209
  if (a) {
207
210
  var [ e, a ] = a;
208
211
  if (0 != a) {
209
- var n = this;
210
- if (o = n.getVLFilePath(o), n = T(n, o, e, a)) return (o = n[0]) == j ? n.toString("utf8", 1) : o == J ? d.zstdDecompressSync(n.subarray(1)).toString() : (e = JSON.parse(n),
212
+ var s = this;
213
+ if (o = s.getVLFilePath(o), s = h(N(s, o), o, e, a)) return (o = s[0]) == K ? s.toString("utf8", 1) : o == _ ? m.zstdDecompressSync(s.subarray(1)).toString() : o == A ? new Uint8Array(s.buffer, s.byteOffset + 4, s.byteLength - 4) : (e = JSON.parse(s),
211
214
  I(t) ? f(e) : e);
212
215
  }
213
216
  }
@@ -216,10 +219,10 @@ class t {
216
219
  loadPartialPosMapBuffer(a, t, o) {
217
220
  let {
218
221
  posMap: e,
219
- prefixPM: n
220
- } = a, s = (delete n[t], this).keyToSnapshotMap;
221
- V(o, (t, o) => {
222
- t in s ? ++a.outdatedCount : (e[t] = o, s[t] = a);
222
+ prefixPM: s
223
+ } = a, n = (delete s[t], this).keyToSnapshotMap;
224
+ j(o, (t, o) => {
225
+ t in n ? ++a.outdatedCount : (e[t] = o, n[t] = a);
223
226
  });
224
227
  }
225
228
  delSnapshot(t) {
@@ -227,32 +230,32 @@ class t {
227
230
  o(this, this.getPMFilePath(t));
228
231
  }
229
232
  calOutdates() {
230
- var t, o, a, e = [], n = [], s = [], r = [], {
233
+ var t, o, a, e = [], s = [], n = [], r = [], {
231
234
  options: i,
232
235
  numToSnapshotMap: p
233
236
  } = this, {
234
- pMOutdatedPercent: u,
235
- vLOutdatedPercent: f
237
+ pMOutdatedPercent: f,
238
+ vLOutdatedPercent: u
236
239
  } = i;
237
240
  for (t in p) {
238
241
  var h, l = p[t];
239
- l.isOut || (100 == (h = Q(l)) ? (this.delSnapshot(l), e.push([ t, l.info.verList[0] ])) : f < h ? (B(l) ? n : r).push(l) : Math.floor(l.outdatedCount / l.info.totalCount * 100) > u ? s.push(l) : (h = this,
240
- l.info.totalCount < h.options.minSnapshotKeyCount && B(l) && n.push(l)));
242
+ l.isOut || (100 == (h = D(l)) ? (this.delSnapshot(l), e.push([ t, l.info.verList[0] ])) : u < h ? (B(l) ? s : r).push(l) : Math.floor(l.outdatedCount / l.info.totalCount * 100) > f ? n.push(l) : (h = this,
243
+ l.info.totalCount < h.options.minSnapshotKeyCount && B(l) && s.push(l)));
241
244
  }
242
- 1 == n.length && Q(n[0]) < f && (n.length = 0);
243
- for ([ o, a ] of [ [ "pMCompacts", s ], [ "vLCompacts", r ], [ "combiningSnapshots", n ] ]) 0 < a.length && P.log(o + ":" + a.map(t => t.snapshotNum + "." + t.info.verList[0]));
245
+ 1 == s.length && D(s[0]) < u && (s.length = 0);
246
+ for ([ o, a ] of [ [ "pMCompacts", n ], [ "vLCompacts", r ], [ "combiningSnapshots", s ] ]) 0 < a.length && F.log(o + ":" + a.map(t => t.snapshotNum + "." + t.info.verList[0]));
244
247
  return {
245
248
  emptySnapshotNumVerList: e,
246
- combiningSnapshotList: n,
247
- pMCompactSnapshotList: s,
249
+ combiningSnapshotList: s,
250
+ pMCompactSnapshotList: n,
248
251
  vLCompactSnapshotList: r
249
252
  };
250
253
  }
251
254
  getMaxCombinedSnapshot(t) {
252
255
  let o, a;
253
256
  for (var e of t) {
254
- var n = e.snapshotNum;
255
- (!a || a < n) && (o = e, a = n);
257
+ var s = e.snapshotNum;
258
+ (!a || a < s) && (o = e, a = s);
256
259
  }
257
260
  return o;
258
261
  }
@@ -273,34 +276,34 @@ class t {
273
276
  async saveSnapshotInfo(t, o) {
274
277
  var a = this.qyJsonSaver, {
275
278
  pMVersion: e,
276
- vLVersion: n,
277
- verList: s,
279
+ vLVersion: s,
280
+ verList: n,
278
281
  outdatedCount: r,
279
282
  totalCount: i
280
- } = o, p = s[0], s = s[0] = e + n;
281
- return o.outdated = Math.floor(100 * r / i) + "%", P.log(`Saving snapshotInfo:${p ? t + `.${p}->` : ""}${t}.` + s),
283
+ } = o, p = n[0], n = n[0] = e + s;
284
+ return o.outdated = Math.floor(100 * r / i) + "%", F.log(`Saving snapshotInfo:${p ? t + `.${p}->` : ""}${t}.` + n),
282
285
  !!await a.saveToFile({
283
286
  ...o,
284
287
  verList: void 0
285
- }, D(t, s), !0) && (null != p && a.removeFile(D(t, p)), !0);
288
+ }, Q(t, n), !0) && (null != p && a.removeFile(Q(t, p)), !0);
286
289
  }
287
290
  savePosMap(t, o) {
288
291
  var a, {
289
292
  outdatedCount: e,
290
- info: n,
291
- posMap: s
292
- } = t, r = (n.outdatedCount += e, t.outdatedCount = 0, ++n.pMVersion, new M()), i = (r.start(this.getPMFilePath(t)),
293
+ info: s,
294
+ posMap: n
295
+ } = t, r = (s.outdatedCount += e, t.outdatedCount = 0, ++s.pMVersion, new g()), i = (r.start(this.getPMFilePath(t)),
293
296
  t.prefixPM = {});
294
- let p = 0, u = 0, f;
295
- for (a of o = o || Object.keys(s).sort()) {
296
- null == f ? f = w(a) : a.startsWith(f) || (i[f] = [ p, u ], f = w(a),
297
- p += u, u = 0);
298
- var h = Buffer.from(a), l = c(s[a]);
299
- r.save([ h, l ]), u += h.length + l.length;
297
+ let p = 0, f = 0, u;
298
+ for (a of o = o || Object.keys(n).sort()) {
299
+ null == u ? u = k(a) : a.startsWith(u) || (i[u] = [ p, f ], u = k(a),
300
+ p += f, f = 0);
301
+ var h = Buffer.from(a), l = S(n[a]);
302
+ r.save([ h, l ]), f += h.length + l.length;
300
303
  }
301
- return null != f && (i[f] = [ p, u ]), Promise.all([ r.stop(), ((t, o) => {
302
- var a, e = new M(), n = (e.start(N(t, o)), o).prefixPM;
303
- for (a in n) e.save([ Buffer.from(a), c(n[a]) ]);
304
+ return null != u && (i[u] = [ p, f ]), Promise.all([ r.stop(), ((t, o) => {
305
+ var a, e = new g(), s = (e.start(T(t, o)), o).prefixPM;
306
+ for (a in s) e.save([ Buffer.from(a), S(s[a]) ]);
304
307
  return e.stop();
305
308
  })(this, t) ]);
306
309
  }
@@ -320,53 +323,32 @@ class t {
320
323
  }
321
324
  }
322
325
 
323
- function V(o, a) {
326
+ function j(o, a) {
324
327
  var e = o.length;
325
328
  for (let t = 0; t < e; ) {
326
- var n = t + u, s = o.toString("latin1", t, n), r = [];
327
- t = y(o, n, r), a(s, r);
329
+ var s = t + p, n = o.toString("latin1", t, s), r = [];
330
+ t = c(o, s, r), a(n, r);
328
331
  }
329
332
  }
330
333
 
331
- async function b(t) {
334
+ async function V(t) {
332
335
  var o = await r(t), a = o.length, e = {};
333
336
  for (let t = 0; t < a; ) {
334
- var n = t + k, s = e[o.toString("latin1", t, n)] = [];
335
- t = y(o, n, s);
337
+ var s = t + w, n = e[o.toString("latin1", t, s)] = [];
338
+ t = c(o, s, n);
336
339
  }
337
340
  return e;
338
341
  }
339
342
 
340
- function T(t, o, a, e) {
341
- var n = ((t, o) => {
342
- let a = t.fDMap, e = a[o];
343
- if (!e) {
344
- P.info("Opening " + o);
345
- try {
346
- e = a[o] = p(o, "r");
347
- } catch (t) {
348
- throw P.error(`Opening ${o} failed:`, t), t;
349
- }
350
- }
351
- return e;
352
- })(t, o), s = Buffer.allocUnsafe(e);
353
- for (let t = 0; t < e; ) {
354
- var r = i(n, s, t, e - t, a + t);
355
- if (0 == r) return void P.error(`readSync ${o} at ${a + t} returning 0 byte`);
356
- t += r;
357
- }
358
- return s;
359
- }
360
-
361
343
  function B(t) {
362
344
  var {
363
345
  keyValueMap: o,
364
346
  prefixPM: a
365
347
  } = t;
366
- return o || null == a || h(t.prefixPM);
348
+ return o || null == a || u(t.prefixPM);
367
349
  }
368
350
 
369
- function N(t, o) {
351
+ function T(t, o) {
370
352
  var {
371
353
  snapshotNum: o,
372
354
  info: a
@@ -374,22 +356,36 @@ function N(t, o) {
374
356
  return n(t.snapshotFolder, "" + o, a.pMVersion + "_prefixPM.txt");
375
357
  }
376
358
 
359
+ function N(t, o) {
360
+ t = t.fDMap;
361
+ let a = t[o];
362
+ if (!a) {
363
+ F.info("Opening " + o);
364
+ try {
365
+ a = t[o] = s(o, "r");
366
+ } catch (t) {
367
+ throw F.error(`Opening ${o} failed:`, t), t;
368
+ }
369
+ }
370
+ return a;
371
+ }
372
+
377
373
  function o(t, o) {
378
374
  var t = t.fDMap, a = t[o];
379
375
  null != a && (e(a), delete t[o]);
380
376
  }
381
377
 
382
- let K = [ 0, 0 ], k = 3;
378
+ let q = [ 0, 0 ], w = 3;
383
379
 
384
- function w(t) {
385
- return t.substring(0, k);
380
+ function k(t) {
381
+ return t.substring(0, w);
386
382
  }
387
383
 
388
384
  function I(t) {
389
385
  return !t.startsWith("c");
390
386
  }
391
387
 
392
- function Q(t) {
388
+ function D(t) {
393
389
  var {
394
390
  outdatedCount: t,
395
391
  info: o
@@ -397,13 +393,13 @@ function Q(t) {
397
393
  return t == a ? 100 : Math.floor(t / a * 100);
398
394
  }
399
395
 
400
- function D(t, o) {
396
+ function Q(t, o) {
401
397
  return t + (2 < o ? "_" + o : "") + ".json";
402
398
  }
403
399
 
404
400
  export {
405
401
  t as QySnapshots,
406
- V as iterPMBuffer,
407
- b as loadPrefixPMFile,
408
- D as getInfoFileName
402
+ j as iterPMBuffer,
403
+ V as loadPrefixPMFile,
404
+ Q as getInfoFileName
409
405
  };
package/src/QyTrigger.js CHANGED
@@ -11,15 +11,14 @@ import {
11
11
  isEmptyObj as e,
12
12
  isMatchName as l,
13
13
  getMatchParam as d,
14
- propNameJoin as v
14
+ propNameJoin as v,
15
+ isArray as N
15
16
  } from "./QyUtils.js";
16
17
 
17
18
  import {
18
- logger as N
19
+ logger as y
19
20
  } from "./QyLogger.js";
20
21
 
21
- let y = Array.isArray;
22
-
23
22
  class f {
24
23
  name;
25
24
  parent;
@@ -99,7 +98,7 @@ class h {
99
98
  p(l, f) || (l = {
100
99
  oldValue: l,
101
100
  newValue: f
102
- }, (y(f) || y(c(n, t))) && (l.isArrayDelta = !0), (g = g || {
101
+ }, (N(f) || N(c(n, t))) && (l.isArrayDelta = !0), (g = g || {
103
102
  _file: e,
104
103
  _fileContent: n
105
104
  })[v(t)] = l, u(g, t, l));
@@ -116,7 +115,7 @@ class h {
116
115
  try {
117
116
  s && s(g), o.emit(a, g);
118
117
  } catch (e) {
119
- N.error(`Running trigger ${a} failed:`, g, e);
118
+ y.error(`Running trigger ${a} failed:`, g, e);
120
119
  }
121
120
  }
122
121
  }
package/src/QyUtils.d.ts CHANGED
@@ -1,3 +1,6 @@
1
+ import util from "node:util";
2
+ export declare const isArray: (arg: any) => arg is any[];
3
+ export declare const isDate: typeof util.types.isDate, isFloat32Array: typeof util.types.isFloat32Array, isUint8Array: typeof util.types.isUint8Array;
1
4
  export declare const __dirname: string;
2
5
  export declare const SpecialOperators: {
3
6
  [k: string]: string;
@@ -8,6 +11,9 @@ export declare const SpecialFilePaths: {
8
11
  RpcDirPath: string[];
9
12
  IndexDirPath: string[];
10
13
  ExpireDirPath: string[];
14
+ HNSWDirPath: string[];
15
+ InfoDirPath: string[];
16
+ RecycleDirPath: string[];
11
17
  MetaFilePath: string[];
12
18
  IndexPropPathsFileName: string;
13
19
  };
@@ -53,4 +59,5 @@ export declare function loadFileList(fileList: any, preloadCount?: number): Asyn
53
59
  }, void, unknown>;
54
60
  export declare function getNowTime(now?: Date): number;
55
61
  export declare function getNowRounded(now?: Date): number;
62
+ export declare function readBufferFromFD(fd: any, filePath: any, start: any, length: any): Buffer<ArrayBuffer> | undefined;
56
63
  export * as default from "./QyUtils.ts";