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.
- package/README.md +9 -0
- package/package.json +17 -17
- package/sample.js +12 -0
- package/scripts/fastify.js +1 -0
- package/scripts/hnsw.js +39 -0
- package/src/QyAcl.js +109 -87
- package/src/QyBatch.d.ts +5 -0
- package/src/QyBatch.js +213 -129
- package/src/QyBinWriter.d.ts +5 -9
- package/src/QyBinWriter.js +36 -45
- package/src/QyBinaryHeap.d.ts +10 -0
- package/src/QyBinaryHeap.js +55 -0
- package/src/QyCD.d.ts +3 -0
- package/src/QyCD.js +51 -38
- package/src/QyCache.d.ts +11 -1
- package/src/QyCache.js +132 -90
- package/src/QyDB.js +4 -7
- package/src/QyDefaultOptions.js +8 -0
- package/src/QyEmbeddingWriter.d.ts +12 -0
- package/src/QyEmbeddingWriter.js +55 -0
- package/src/QyEmbeddings.d.ts +15 -0
- package/src/QyEmbeddings.js +128 -0
- package/src/QyFile.js +8 -7
- package/src/QyFileContentUtils.d.ts +0 -1
- package/src/QyFileContentUtils.js +138 -127
- package/src/QyHNSW.d.ts +7 -0
- package/src/QyHNSW.js +49 -0
- package/src/QyIndex.js +28 -27
- package/src/QyIndexPropTree.js +3 -1
- package/src/QySnapshots.js +127 -131
- package/src/QyTrigger.js +5 -6
- package/src/QyUtils.d.ts +7 -0
- package/src/QyUtils.js +130 -104
- package/static/codemirror.bundle/editor.bundle.js +33 -12
- package/test/testQyDocumentDB.js +38 -0
package/src/QySnapshots.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
close as e,
|
|
3
|
-
|
|
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
|
|
15
|
+
import m from "node:zlib";
|
|
17
16
|
|
|
18
17
|
import {
|
|
19
|
-
getDefaultOptions as
|
|
18
|
+
getDefaultOptions as i
|
|
20
19
|
} from "./QyDefaultOptions.js";
|
|
21
20
|
|
|
22
21
|
import {
|
|
23
|
-
Hash_Key_Length as
|
|
24
|
-
folderOrFileExists as
|
|
22
|
+
Hash_Key_Length as p,
|
|
23
|
+
folderOrFileExists as d,
|
|
25
24
|
listToMap as f,
|
|
26
|
-
isEmptyObj as
|
|
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
|
|
33
|
+
QyBinWriter as g
|
|
32
34
|
} from "./QyBinWriter.js";
|
|
33
35
|
|
|
34
36
|
import {
|
|
35
|
-
bufferToNums as
|
|
36
|
-
numsToBuffer as
|
|
37
|
-
applyAclChange as
|
|
38
|
-
iterCmdKeys as
|
|
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
|
|
44
|
+
QyJsonSaver as x
|
|
43
45
|
} from "./QyJsonSaver.js";
|
|
44
46
|
|
|
45
47
|
import {
|
|
46
|
-
logger as
|
|
48
|
+
logger as F
|
|
47
49
|
} from "./QyLogger.js";
|
|
48
50
|
|
|
49
|
-
let
|
|
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
|
-
...
|
|
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
|
|
75
|
+
qyJsonSaver: new x(a, o)
|
|
74
76
|
});
|
|
75
77
|
}
|
|
76
78
|
async loadSnapshotInfos() {
|
|
77
79
|
let {
|
|
78
80
|
snapshotInfoFolder: t,
|
|
79
|
-
qyJsonSaver:
|
|
81
|
+
qyJsonSaver: n,
|
|
80
82
|
numToSnapshotMap: r
|
|
81
83
|
} = this;
|
|
82
|
-
if (await
|
|
84
|
+
if (await d(t)) {
|
|
83
85
|
var o = await (async (t, o) => {
|
|
84
86
|
var a = {};
|
|
85
|
-
for (
|
|
86
|
-
var e,
|
|
87
|
-
|
|
88
|
-
a[e] = Math.max(
|
|
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
|
-
})(
|
|
92
|
-
let e = 0,
|
|
93
|
+
})(n, t);
|
|
94
|
+
let e = 0, s = 0;
|
|
93
95
|
await Promise.all(o.map(async ([ t, o ]) => {
|
|
94
|
-
var a = await
|
|
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,
|
|
101
|
+
}), t = (++this.snapshotCount, t > e && (e = t, s = a.maxChangeId),
|
|
100
102
|
this), a = o;
|
|
101
|
-
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:
|
|
106
|
+
snapshotMaxChangeId: s
|
|
105
107
|
});
|
|
106
108
|
var {
|
|
107
109
|
numToSnapshotMap: a,
|
|
108
110
|
prefixMap: i
|
|
109
111
|
} = this;
|
|
110
|
-
for ([
|
|
111
|
-
var p,
|
|
112
|
-
for (p in
|
|
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(
|
|
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:
|
|
127
|
-
} = 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,
|
|
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 =
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
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(
|
|
142
|
-
totalCount:
|
|
144
|
+
}), Object.assign(s, {
|
|
145
|
+
totalCount: f,
|
|
143
146
|
outdatedCount: 0
|
|
144
|
-
}), Promise.all([ this.savePosMap(t, r),
|
|
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:
|
|
152
|
-
keyValueMap:
|
|
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
|
-
}),
|
|
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
|
|
171
|
-
o[
|
|
173
|
+
var s = a[t], n = a[t + 1];
|
|
174
|
+
o[s] = null != n && I(s) ? f(n) : n;
|
|
172
175
|
}
|
|
173
176
|
}
|
|
174
|
-
|
|
177
|
+
P(t, t => {
|
|
175
178
|
t in o || (o[t] = this.getValueSync(t)), this.removeKey(t);
|
|
176
|
-
}),
|
|
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,
|
|
184
|
-
if (
|
|
185
|
-
var
|
|
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
|
-
|
|
190
|
+
s = r.pop();
|
|
188
191
|
var i = ((t, o, a) => {
|
|
189
|
-
var e, {
|
|
192
|
+
var e, s, {
|
|
190
193
|
posMap: n,
|
|
191
|
-
prefixPM:
|
|
194
|
+
prefixPM: r
|
|
192
195
|
} = o;
|
|
193
|
-
if (
|
|
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,
|
|
196
|
-
if (i && o in i) return
|
|
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
|
|
210
|
-
if (o =
|
|
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:
|
|
220
|
-
} = a,
|
|
221
|
-
|
|
222
|
-
t in
|
|
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 = [],
|
|
233
|
+
var t, o, a, e = [], s = [], n = [], r = [], {
|
|
231
234
|
options: i,
|
|
232
235
|
numToSnapshotMap: p
|
|
233
236
|
} = this, {
|
|
234
|
-
pMOutdatedPercent:
|
|
235
|
-
vLOutdatedPercent:
|
|
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 =
|
|
240
|
-
l.info.totalCount < h.options.minSnapshotKeyCount && B(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 ==
|
|
243
|
-
for ([ o, a ] of [ [ "pMCompacts",
|
|
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:
|
|
247
|
-
pMCompactSnapshotList:
|
|
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
|
|
255
|
-
(!a || a <
|
|
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:
|
|
277
|
-
verList:
|
|
279
|
+
vLVersion: s,
|
|
280
|
+
verList: n,
|
|
278
281
|
outdatedCount: r,
|
|
279
282
|
totalCount: i
|
|
280
|
-
} = o, p =
|
|
281
|
-
return o.outdated = Math.floor(100 * r / i) + "%",
|
|
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
|
-
},
|
|
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:
|
|
291
|
-
posMap:
|
|
292
|
-
} = t, r = (
|
|
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,
|
|
295
|
-
for (a of o = o || Object.keys(
|
|
296
|
-
null ==
|
|
297
|
-
p +=
|
|
298
|
-
var h = Buffer.from(a), l =
|
|
299
|
-
r.save([ h, l ]),
|
|
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 !=
|
|
302
|
-
var a, e = new
|
|
303
|
-
for (a in
|
|
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
|
|
326
|
+
function j(o, a) {
|
|
324
327
|
var e = o.length;
|
|
325
328
|
for (let t = 0; t < e; ) {
|
|
326
|
-
var
|
|
327
|
-
t =
|
|
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
|
|
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
|
|
335
|
-
t =
|
|
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 ||
|
|
348
|
+
return o || null == a || u(t.prefixPM);
|
|
367
349
|
}
|
|
368
350
|
|
|
369
|
-
function
|
|
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
|
|
378
|
+
let q = [ 0, 0 ], w = 3;
|
|
383
379
|
|
|
384
|
-
function
|
|
385
|
-
return t.substring(0,
|
|
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
|
|
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
|
|
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
|
-
|
|
407
|
-
|
|
408
|
-
|
|
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
|
|
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
|
-
}, (
|
|
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
|
-
|
|
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";
|