datafolder 1.0.14 → 1.0.15
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 +2 -0
- package/package.json +1 -1
- package/src/QyAcl.d.ts +4 -4
- package/src/QyAcl.js +92 -93
- package/src/QyAclSaver_Worker.d.ts +2 -2
- package/src/QyAclWriter.d.ts +3 -2
- package/src/QyAclWriter.js +14 -5
- package/src/QyBatch.js +0 -2
- package/src/QyBinWriter.js +0 -2
- package/src/QyCD.d.ts +1 -1
- package/src/QyCache.d.ts +1 -1
- package/src/QyCache.js +25 -23
- package/src/QyDefaultOptions.js +3 -2
- package/src/QyFileLogger.js +6 -7
- package/src/QyItem.js +1 -1
- package/src/QyKVData.d.ts +2 -2
- package/src/QyKVData.js +2 -2
- package/src/QyKVDataCleaner_Worker.js +49 -49
- package/src/QyKVDataLoader.d.ts +1 -1
- package/src/QyKVDataLoader.js +18 -18
- package/src/QyKVDataSaver_Worker.d.ts +2 -2
- package/src/QyKVDataSaver_Worker.js +5 -14
- package/src/QyMessageWorker.js +24 -25
- package/src/QyMessager.d.ts +3 -3
- package/src/QyMessager.js +29 -29
- package/src/QyMod.d.ts +1 -1
- package/src/QyMod.js +6 -6
- package/src/QyOpRunner.d.ts +1 -1
- package/src/QyOpRunner.js +3 -2
- package/src/QyQueue.d.ts +1 -1
- package/src/QyQueue.js +5 -5
- package/src/QySaver.d.ts +1 -1
- package/src/QySaver.js +1 -1
- package/src/QySnapshotCompactor_Worker.js +5 -5
- package/src/QySnapshotSaver_Worker.d.ts +1 -1
- package/src/QySnapshotSaver_Worker.js +2 -2
- package/src/QySnapshots.d.ts +1 -1
- package/src/QySnapshots.js +6 -6
- package/src/QyUnionNode.d.ts +1 -1
- package/src/QyUnionNode.js +1 -1
- package/static/codemirror.bundle/editor.bundle.js +62 -49
package/src/QyKVData.js
CHANGED
|
@@ -54,7 +54,7 @@ class t {
|
|
|
54
54
|
compactInterval;
|
|
55
55
|
unloadInterval;
|
|
56
56
|
qyExpire;
|
|
57
|
-
constructor(t, a, o) {
|
|
57
|
+
constructor(t, a = void 0, o = void 0) {
|
|
58
58
|
a = {
|
|
59
59
|
...s("QyKVData"),
|
|
60
60
|
...a
|
|
@@ -159,7 +159,7 @@ class t {
|
|
|
159
159
|
o && o.closeAllFDs(), await a.stop(), await s.stop();
|
|
160
160
|
}
|
|
161
161
|
save(t, a, o, e) {
|
|
162
|
-
var n = this.qyKVDataSaver;
|
|
162
|
+
var n = this.qyKVDataSaver, a = JSON.stringify(a), o = JSON.stringify(o);
|
|
163
163
|
if (e) return n.callSave(t, a, o);
|
|
164
164
|
n.castSave(t, a, o);
|
|
165
165
|
}
|
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
import {
|
|
6
6
|
rm as c,
|
|
7
7
|
rename as r,
|
|
8
|
-
readdir as
|
|
8
|
+
readdir as d
|
|
9
9
|
} from "node:fs/promises";
|
|
10
10
|
|
|
11
11
|
import {
|
|
@@ -13,12 +13,12 @@ import {
|
|
|
13
13
|
} from "./QyDefaultOptions.js";
|
|
14
14
|
|
|
15
15
|
import {
|
|
16
|
-
QyMessageWorker as
|
|
16
|
+
QyMessageWorker as s
|
|
17
17
|
} from "./QyMessageWorker.js";
|
|
18
18
|
|
|
19
19
|
import {
|
|
20
|
-
folderOrFileExists as
|
|
21
|
-
ensureDir as
|
|
20
|
+
folderOrFileExists as h,
|
|
21
|
+
ensureDir as f
|
|
22
22
|
} from "./QyUtils.js";
|
|
23
23
|
|
|
24
24
|
import {
|
|
@@ -27,14 +27,14 @@ import {
|
|
|
27
27
|
} from "./QyCompressor.js";
|
|
28
28
|
|
|
29
29
|
import {
|
|
30
|
-
logger as
|
|
30
|
+
logger as F
|
|
31
31
|
} from "./QyLogger.js";
|
|
32
32
|
|
|
33
33
|
import {
|
|
34
34
|
getInfoFileName as l
|
|
35
35
|
} from "./QySnapshots.js";
|
|
36
36
|
|
|
37
|
-
export default class extends
|
|
37
|
+
export default class extends s {
|
|
38
38
|
kvFolder;
|
|
39
39
|
snapshotFolder;
|
|
40
40
|
snapshotInfoFolder;
|
|
@@ -42,82 +42,82 @@ export default class extends e {
|
|
|
42
42
|
historyAclFolder;
|
|
43
43
|
historySnapshotFolder;
|
|
44
44
|
constructor({
|
|
45
|
-
kvFolder:
|
|
46
|
-
options:
|
|
45
|
+
kvFolder: s,
|
|
46
|
+
options: o
|
|
47
47
|
}) {
|
|
48
|
-
super(
|
|
48
|
+
super(o = {
|
|
49
49
|
...a("QyKVDataCleaner_Worker"),
|
|
50
|
-
...
|
|
51
|
-
}
|
|
52
|
-
var
|
|
50
|
+
...o
|
|
51
|
+
});
|
|
52
|
+
var o = m(s, "history"), e = m(s, "snapshot");
|
|
53
53
|
Object.assign(this, {
|
|
54
|
-
kvFolder:
|
|
55
|
-
snapshotFolder:
|
|
56
|
-
snapshotInfoFolder: m(
|
|
57
|
-
aclFolder: m(
|
|
58
|
-
historyAclFolder: m(
|
|
59
|
-
historySnapshotFolder: m(
|
|
54
|
+
kvFolder: s,
|
|
55
|
+
snapshotFolder: e,
|
|
56
|
+
snapshotInfoFolder: m(e, "info"),
|
|
57
|
+
aclFolder: m(s, "acl"),
|
|
58
|
+
historyAclFolder: m(o, "acl"),
|
|
59
|
+
historySnapshotFolder: m(o, "snapshot")
|
|
60
60
|
});
|
|
61
61
|
}
|
|
62
62
|
_op_start() {}
|
|
63
63
|
_op_stop() {}
|
|
64
|
-
async _op_cleanAclFiles(
|
|
65
|
-
var
|
|
66
|
-
if (await
|
|
64
|
+
async _op_cleanAclFiles(s) {
|
|
65
|
+
var o = this, e = s, s = o.aclFolder;
|
|
66
|
+
if (await h(s)) {
|
|
67
67
|
var a, r = [];
|
|
68
|
-
for (a of (await
|
|
68
|
+
for (a of (await d(s)).filter(s => /^[1-9]/.test(s))) parseInt(a) <= e && r.push((async (s, o) => {
|
|
69
69
|
var {
|
|
70
|
-
aclFolder:
|
|
70
|
+
aclFolder: e,
|
|
71
71
|
historyAclFolder: a
|
|
72
|
-
} =
|
|
73
|
-
return await
|
|
74
|
-
})(
|
|
72
|
+
} = s;
|
|
73
|
+
return await f(a), y(s, o, e, a);
|
|
74
|
+
})(o, a));
|
|
75
75
|
0 < r.length && await Promise.allSettled(r);
|
|
76
76
|
}
|
|
77
77
|
}
|
|
78
|
-
async _op_cleanPMFiles(
|
|
79
|
-
await Promise.allSettled(
|
|
80
|
-
return
|
|
81
|
-
var
|
|
78
|
+
async _op_cleanPMFiles(s) {
|
|
79
|
+
await Promise.allSettled(s.map(([ s, o ]) => {
|
|
80
|
+
return e = this, a = s, r = o, Promise.all([ "pM", "prefixPM" ].map(s => n(e, a, r, s)));
|
|
81
|
+
var e, a, r;
|
|
82
82
|
}));
|
|
83
83
|
}
|
|
84
|
-
async _op_cleanVLFiles(
|
|
85
|
-
await n(this,
|
|
84
|
+
async _op_cleanVLFiles(s, o) {
|
|
85
|
+
await n(this, s, o, "vL");
|
|
86
86
|
}
|
|
87
|
-
async _op_removeSnapshotsFiles(
|
|
87
|
+
async _op_removeSnapshotsFiles(s) {
|
|
88
88
|
let {
|
|
89
|
-
snapshotFolder:
|
|
89
|
+
snapshotFolder: e,
|
|
90
90
|
snapshotInfoFolder: a
|
|
91
91
|
} = this;
|
|
92
|
-
await Promise.all(
|
|
93
|
-
await c(m(a, l(
|
|
94
|
-
await c(m(
|
|
92
|
+
await Promise.all(s.map(async ([ o, s ]) => {
|
|
93
|
+
await c(m(a, l(o, s))), await Promise.all([ "pM", "prefixPM", "vL" ].map(s => n(this, o, 1 / 0, s))),
|
|
94
|
+
await c(m(e, "" + o), {
|
|
95
95
|
recursive: !0
|
|
96
96
|
});
|
|
97
97
|
}));
|
|
98
98
|
}
|
|
99
99
|
}
|
|
100
100
|
|
|
101
|
-
function y(
|
|
102
|
-
|
|
103
|
-
return
|
|
101
|
+
function y(s, o, e, a) {
|
|
102
|
+
e = m(e, o), a = m(a, o);
|
|
103
|
+
return s.options.compressRedundantFile ? t(e, a + i, {
|
|
104
104
|
override: !0,
|
|
105
105
|
removeSrcAfterSuccess: !0
|
|
106
|
-
}) : (
|
|
106
|
+
}) : (F.info(`rename ${e} to ` + a), r(e, a));
|
|
107
107
|
}
|
|
108
108
|
|
|
109
|
-
async function n(
|
|
109
|
+
async function n(o, e, a, r) {
|
|
110
110
|
var {
|
|
111
|
-
snapshotFolder:
|
|
111
|
+
snapshotFolder: s,
|
|
112
112
|
historySnapshotFolder: t
|
|
113
|
-
} =
|
|
114
|
-
if (await
|
|
115
|
-
let
|
|
113
|
+
} = o, i = m(s, "" + e);
|
|
114
|
+
if (await h(i)) {
|
|
115
|
+
let s;
|
|
116
116
|
var l, n = [];
|
|
117
|
-
for (l of await
|
|
117
|
+
for (l of await d(i)) {
|
|
118
118
|
var p = new RegExp("^([0-9]+)_" + r).exec(l);
|
|
119
|
-
p && (p = parseInt(p[1])) < a && (1 == p ? (
|
|
120
|
-
await
|
|
119
|
+
p && (p = parseInt(p[1])) < a && (1 == p ? (s || (s = m(t, "" + e),
|
|
120
|
+
await f(s)), n.push(y(o, l, i, s))) : (p = m(i, l), F.info("Removing " + p),
|
|
121
121
|
n.push(c(p))));
|
|
122
122
|
}
|
|
123
123
|
0 < n.length && await Promise.allSettled(n);
|
package/src/QyKVDataLoader.d.ts
CHANGED
|
@@ -7,7 +7,7 @@ export declare class QyKVDataLoader {
|
|
|
7
7
|
loadedMaxAclNum: number;
|
|
8
8
|
aclKeyValueMap: any;
|
|
9
9
|
maxChangeId: number;
|
|
10
|
-
constructor(kvFolder: any, options
|
|
10
|
+
constructor(kvFolder: any, options?: any);
|
|
11
11
|
load(): Promise<{
|
|
12
12
|
maxChangeId: number;
|
|
13
13
|
loadedMaxAclNum: number;
|
package/src/QyKVDataLoader.js
CHANGED
|
@@ -32,36 +32,36 @@ class a {
|
|
|
32
32
|
loadedMaxAclNum = 0;
|
|
33
33
|
aclKeyValueMap = {};
|
|
34
34
|
maxChangeId = 0;
|
|
35
|
-
constructor(a,
|
|
36
|
-
|
|
35
|
+
constructor(a, o = void 0) {
|
|
36
|
+
o = {
|
|
37
37
|
...l("QyKVDataLoader"),
|
|
38
|
-
...
|
|
38
|
+
...o
|
|
39
39
|
};
|
|
40
|
-
var
|
|
40
|
+
var s = t(a, "snapshot");
|
|
41
41
|
Object.assign(this, {
|
|
42
42
|
kvFolder: a,
|
|
43
|
-
options:
|
|
43
|
+
options: o,
|
|
44
44
|
aclFolder: t(a, "acl"),
|
|
45
|
-
snapshotFolder:
|
|
46
|
-
qySnapshots: new e(
|
|
45
|
+
snapshotFolder: s,
|
|
46
|
+
qySnapshots: new e(s, o)
|
|
47
47
|
});
|
|
48
48
|
}
|
|
49
49
|
async load() {
|
|
50
|
-
var a = this.qySnapshots, [
|
|
50
|
+
var a = this.qySnapshots, [ o ] = await Promise.all([ (async a => {
|
|
51
51
|
if (a = a.aclFolder, await g(a)) return (await x(a)).filter(a => /^[1-9]/.test(a)).map(a => parseInt(a));
|
|
52
52
|
})(this), a.loadSnapshotInfos() ]);
|
|
53
53
|
let {
|
|
54
|
-
maxSnapshotNum:
|
|
54
|
+
maxSnapshotNum: s,
|
|
55
55
|
snapshotMaxChangeId: t
|
|
56
56
|
} = a;
|
|
57
|
-
if (this.maxChangeId = t,
|
|
58
|
-
var e = this, l =
|
|
57
|
+
if (this.maxChangeId = t, o) {
|
|
58
|
+
var e = this, l = o.filter(a => a > s), {
|
|
59
59
|
aclKeyValueMap: r,
|
|
60
60
|
qySnapshots: n,
|
|
61
|
-
options:
|
|
62
|
-
} = (l.sort((a,
|
|
61
|
+
options: o
|
|
62
|
+
} = (l.sort((a, o) => a - o), e), i = o.autoRepairAclFile, p = await Promise.all(l.map(async a => u(v(e, a))));
|
|
63
63
|
for (let a = 0; a < l.length; ++a) {
|
|
64
|
-
var d = l[a], m =
|
|
64
|
+
var d = l[a], m = v(e, d), m = await F(m, p[a], i, e.maxChangeId);
|
|
65
65
|
if (0 < m.length) {
|
|
66
66
|
for (var [ h, c ] of m) n.applyCmdObj(c, r), e.maxChangeId = h;
|
|
67
67
|
e.loadedMaxAclNum = d;
|
|
@@ -70,12 +70,12 @@ class a {
|
|
|
70
70
|
await 0;
|
|
71
71
|
}
|
|
72
72
|
var {
|
|
73
|
-
maxChangeId:
|
|
73
|
+
maxChangeId: o,
|
|
74
74
|
loadedMaxAclNum: f,
|
|
75
75
|
aclKeyValueMap: y
|
|
76
76
|
} = this;
|
|
77
77
|
return {
|
|
78
|
-
maxChangeId:
|
|
78
|
+
maxChangeId: o,
|
|
79
79
|
loadedMaxAclNum: f,
|
|
80
80
|
qySnapshots: a,
|
|
81
81
|
aclKeyValueMap: y
|
|
@@ -83,8 +83,8 @@ class a {
|
|
|
83
83
|
}
|
|
84
84
|
}
|
|
85
85
|
|
|
86
|
-
function
|
|
87
|
-
return t(a.aclFolder,
|
|
86
|
+
function v(a, o) {
|
|
87
|
+
return t(a.aclFolder, o + "_acl.txt");
|
|
88
88
|
}
|
|
89
89
|
|
|
90
90
|
export {
|
|
@@ -16,8 +16,8 @@ export default class QyKVDataSaver_Worker extends QyMessageWorker {
|
|
|
16
16
|
});
|
|
17
17
|
_op_start(maxChangeId: any, maxSnapshotNum: any, loadedMaxAclNum: any, aclKeyValueMap: any): void;
|
|
18
18
|
_op_stop(): Promise<any>;
|
|
19
|
-
callSave(changeId: any,
|
|
20
|
-
castSave(changeId: any,
|
|
19
|
+
callSave(changeId: any, cmdArgAsListObj: any, syncList: any): any;
|
|
20
|
+
castSave(changeId: any, cmdArgAsListObj: any, syncList: any): any;
|
|
21
21
|
releaseSnapshot(snapshotNum: any): void;
|
|
22
22
|
onSnapshotSavedChangeId(snapshotSavedChangeId: any, pMOnlySnapshot: any): void;
|
|
23
23
|
}
|
|
@@ -18,10 +18,6 @@ import {
|
|
|
18
18
|
QySnapshotSaver as n
|
|
19
19
|
} from "./QySnapshotSaver.js";
|
|
20
20
|
|
|
21
|
-
import {
|
|
22
|
-
delCmdKey as m
|
|
23
|
-
} from "./QyAcl.js";
|
|
24
|
-
|
|
25
21
|
import {
|
|
26
22
|
logger as r
|
|
27
23
|
} from "./QyLogger.js";
|
|
@@ -60,7 +56,7 @@ export default class extends a {
|
|
|
60
56
|
maxChangeId: a,
|
|
61
57
|
snapshotMaxChangeId: a,
|
|
62
58
|
currentAclNum: (t || s) + 1
|
|
63
|
-
}), o && o.start(
|
|
59
|
+
}), o && o.start(l(this)), n.start(a, t, e);
|
|
64
60
|
}
|
|
65
61
|
async _op_stop() {
|
|
66
62
|
var {
|
|
@@ -98,19 +94,14 @@ function h(a, s, t, e, o = !1) {
|
|
|
98
94
|
isSavingSnapshot: S
|
|
99
95
|
} = a;
|
|
100
96
|
let v;
|
|
101
|
-
n && (o ? v = n.callSave(s, t) : n.castSave(s, t))
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
var g = c.length;
|
|
105
|
-
for (let a = 0; a < g; a += 2) m(l, c[a]);
|
|
106
|
-
}
|
|
107
|
-
return r.castSave(s, t, e), a.maxChangeId = s, !S && s - p >= h.snapshotMaxChangeCount && (++a.currentAclNum,
|
|
108
|
-
n && n.switch(d(a)), r.saveSnapshot(i), Object.assign(a, {
|
|
97
|
+
return n && (o ? v = n.callSave(s, t) : n.castSave(s, t)), r.castSave(s, t, e),
|
|
98
|
+
a.maxChangeId = s, !S && s - p >= h.snapshotMaxChangeCount && (++a.currentAclNum,
|
|
99
|
+
n && n.switch(l(a)), r.saveSnapshot(i), Object.assign(a, {
|
|
109
100
|
snapshotMaxChangeId: s,
|
|
110
101
|
isSavingSnapshot: !0
|
|
111
102
|
})), v;
|
|
112
103
|
}
|
|
113
104
|
|
|
114
|
-
function
|
|
105
|
+
function l(a) {
|
|
115
106
|
return t(a.aclFolder, a.currentAclNum + "_acl.txt");
|
|
116
107
|
}
|
package/src/QyMessageWorker.js
CHANGED
|
@@ -11,45 +11,44 @@ import {
|
|
|
11
11
|
} from "./QyLogger.js";
|
|
12
12
|
|
|
13
13
|
import {
|
|
14
|
-
QyOpRunner as
|
|
14
|
+
QyOpRunner as e
|
|
15
15
|
} from "./QyOpRunner.js";
|
|
16
16
|
|
|
17
|
-
class
|
|
18
|
-
constructor(
|
|
19
|
-
super(
|
|
17
|
+
class s extends e {
|
|
18
|
+
constructor(e, s = [], r = []) {
|
|
19
|
+
super(e = {
|
|
20
20
|
...a("QyMessageWorker"),
|
|
21
|
-
...
|
|
22
|
-
},
|
|
21
|
+
...e
|
|
22
|
+
}, s, r), t?.on("message", async e => {
|
|
23
23
|
var {
|
|
24
|
-
opName:
|
|
25
|
-
|
|
26
|
-
} =
|
|
27
|
-
if (
|
|
28
|
-
var a =
|
|
24
|
+
opName: s,
|
|
25
|
+
_call: r
|
|
26
|
+
} = e;
|
|
27
|
+
if (s) {
|
|
28
|
+
var a = e.args || [];
|
|
29
29
|
try {
|
|
30
|
-
var o = await this[
|
|
31
|
-
r
|
|
32
|
-
ack:
|
|
30
|
+
var o = await this[s](...a);
|
|
31
|
+
r && t?.postMessage({
|
|
32
|
+
ack: s,
|
|
33
33
|
result: o
|
|
34
|
-
}), "stop" ==
|
|
35
|
-
} catch (
|
|
36
|
-
p.error(`Running ${
|
|
37
|
-
ack:
|
|
38
|
-
exception:
|
|
34
|
+
}), "stop" == s && process.exit();
|
|
35
|
+
} catch (e) {
|
|
36
|
+
p.error(`Running ${s} failed:`, e), r && t?.postMessage({
|
|
37
|
+
ack: s,
|
|
38
|
+
exception: e
|
|
39
39
|
});
|
|
40
40
|
}
|
|
41
|
-
} else p.warn("Msg ignored:",
|
|
41
|
+
} else p.warn("Msg ignored:", e);
|
|
42
42
|
});
|
|
43
43
|
}
|
|
44
|
-
postParent(
|
|
44
|
+
postParent(e, ...s) {
|
|
45
45
|
t?.postMessage({
|
|
46
|
-
opName:
|
|
47
|
-
args:
|
|
48
|
-
_cast: !0
|
|
46
|
+
opName: e,
|
|
47
|
+
args: s
|
|
49
48
|
});
|
|
50
49
|
}
|
|
51
50
|
}
|
|
52
51
|
|
|
53
52
|
export {
|
|
54
|
-
|
|
53
|
+
s as QyMessageWorker
|
|
55
54
|
};
|
package/src/QyMessager.d.ts
CHANGED
|
@@ -3,9 +3,9 @@ export declare class QyMessager {
|
|
|
3
3
|
worker: any;
|
|
4
4
|
receiverQueueMap: any;
|
|
5
5
|
options: any;
|
|
6
|
-
constructor(workerTypeFileName: any, initArgMap: any, options: any, callOpNameList
|
|
6
|
+
constructor(workerTypeFileName: any, initArgMap: any, options: any, callOpNameList: any, castOpNameList: any, workerMsgProcessor?: this);
|
|
7
7
|
start(...args: any[]): any;
|
|
8
8
|
stop(...args: any[]): any;
|
|
9
|
-
castWorker(opName: any, args: any): void;
|
|
10
|
-
callWorker(opName: any, args: any): any;
|
|
9
|
+
castWorker(opName: any, args: any, transferList?: any): void;
|
|
10
|
+
callWorker(opName: any, args: any, transferList?: any): any;
|
|
11
11
|
}
|
package/src/QyMessager.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import {
|
|
2
|
-
join as
|
|
2
|
+
join as o,
|
|
3
3
|
extname as e
|
|
4
4
|
} from "node:path";
|
|
5
5
|
|
|
6
6
|
import {
|
|
7
7
|
Worker as l,
|
|
8
|
-
setEnvironmentData as
|
|
8
|
+
setEnvironmentData as s
|
|
9
9
|
} from "node:worker_threads";
|
|
10
10
|
|
|
11
11
|
import {
|
|
@@ -32,50 +32,50 @@ class r {
|
|
|
32
32
|
worker;
|
|
33
33
|
receiverQueueMap;
|
|
34
34
|
options;
|
|
35
|
-
constructor(e, r,
|
|
36
|
-
|
|
35
|
+
constructor(e, r, o, s, t, a = this) {
|
|
36
|
+
o = {
|
|
37
37
|
...i("QyMessager"),
|
|
38
|
-
...
|
|
38
|
+
...o
|
|
39
39
|
}, Object.assign(this, {
|
|
40
40
|
workerMsgProcessor: a,
|
|
41
41
|
workerTypeFileName: e,
|
|
42
42
|
initArgMap: r,
|
|
43
|
-
options:
|
|
43
|
+
options: o,
|
|
44
44
|
receiverQueueMap: {}
|
|
45
45
|
});
|
|
46
|
-
for (let r of
|
|
46
|
+
for (let r of s) this[r] || (this[r] = (...e) => this.callWorker(r, e));
|
|
47
47
|
for (let r of t) this[r] || (this[r] = (...e) => this.castWorker(r, e));
|
|
48
48
|
}
|
|
49
49
|
start(...e) {
|
|
50
|
-
this.started = !0,
|
|
50
|
+
this.started = !0, s("logLevel", n.level);
|
|
51
51
|
var p = this;
|
|
52
52
|
if (!p.worker) {
|
|
53
53
|
let {
|
|
54
54
|
workerMsgProcessor: t,
|
|
55
|
-
workerTypeFileName:
|
|
55
|
+
workerTypeFileName: s,
|
|
56
56
|
initArgMap: e,
|
|
57
57
|
receiverQueueMap: a
|
|
58
58
|
} = p;
|
|
59
59
|
var r = {
|
|
60
|
-
workerTypeFileName:
|
|
60
|
+
workerTypeFileName: s,
|
|
61
61
|
initArgMap: e
|
|
62
62
|
};
|
|
63
|
-
let i = p.worker = new l(
|
|
63
|
+
let i = p.worker = new l(o(m, "QyMessager_Run" + k), {
|
|
64
64
|
workerData: r
|
|
65
65
|
});
|
|
66
66
|
i.on("error", e => {
|
|
67
|
-
n.error(`Worker ${
|
|
67
|
+
n.error(`Worker ${s} error:`, e);
|
|
68
68
|
}), i.on("message", e => {
|
|
69
69
|
var {
|
|
70
70
|
opName: r,
|
|
71
|
-
ack:
|
|
72
|
-
result:
|
|
71
|
+
ack: o,
|
|
72
|
+
result: s
|
|
73
73
|
} = e;
|
|
74
74
|
r ? "%o_" == r ? n.handleOutMsg(e) : "%e_" == r ? n.handleErrMsg(e) : (e = e.args || [],
|
|
75
|
-
t[r](...e)) : a[
|
|
75
|
+
t[r](...e)) : a[o]?.shift().resolve(s);
|
|
76
76
|
}), i.on("exit", e => {
|
|
77
|
-
for (var r in i.removeAllListeners(), 0 != e ? n.warn(`Worker ${
|
|
78
|
-
a) for (var
|
|
77
|
+
for (var r in i.removeAllListeners(), 0 != e ? n.warn(`Worker ${s} stopped with exitCode ` + e) : n.info(`Worker ${s} stopped.`),
|
|
78
|
+
a) for (var o = a[r]; !o.isEmpty; ) o.shift()?.resolve();
|
|
79
79
|
p.worker = void 0;
|
|
80
80
|
});
|
|
81
81
|
}
|
|
@@ -84,27 +84,27 @@ class r {
|
|
|
84
84
|
stop(...e) {
|
|
85
85
|
if (this.started) return this.started = !1, this.callWorker("stop", e);
|
|
86
86
|
}
|
|
87
|
-
castWorker(e, r) {
|
|
87
|
+
castWorker(e, r, o = void 0) {
|
|
88
88
|
this.worker.postMessage({
|
|
89
89
|
opName: e,
|
|
90
|
-
args: r
|
|
91
|
-
|
|
92
|
-
});
|
|
90
|
+
args: r
|
|
91
|
+
}, o);
|
|
93
92
|
}
|
|
94
|
-
callWorker(e, r) {
|
|
93
|
+
callWorker(e, r, o = void 0) {
|
|
95
94
|
var {
|
|
96
95
|
worker: s,
|
|
97
|
-
receiverQueueMap:
|
|
98
|
-
options:
|
|
96
|
+
receiverQueueMap: t,
|
|
97
|
+
options: a
|
|
99
98
|
} = this;
|
|
100
99
|
s.postMessage({
|
|
101
100
|
opName: e,
|
|
102
|
-
args: r
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
101
|
+
args: r,
|
|
102
|
+
_call: !0
|
|
103
|
+
}, o);
|
|
104
|
+
let i = t[e];
|
|
105
|
+
i = i || (t[e] = new h(a));
|
|
106
106
|
s = p({});
|
|
107
|
-
return
|
|
107
|
+
return i.push(s), s.promise;
|
|
108
108
|
}
|
|
109
109
|
}
|
|
110
110
|
|
package/src/QyMod.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare function requireFromModCode(modFolder: any, modName: any, modCode: any, qyDB
|
|
1
|
+
export declare function requireFromModCode(modFolder: any, modName: any, modCode: any, qyDB?: any): any;
|
package/src/QyMod.js
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import
|
|
1
|
+
import a from "node:module";
|
|
2
2
|
|
|
3
3
|
import {
|
|
4
4
|
logger as s
|
|
5
5
|
} from "./QyLogger.js";
|
|
6
6
|
|
|
7
|
-
function o(e, r, l, o) {
|
|
7
|
+
function o(e, r, l, o = void 0) {
|
|
8
8
|
if (l) try {
|
|
9
|
-
var
|
|
10
|
-
globalThis[
|
|
11
|
-
return
|
|
12
|
-
delete globalThis[
|
|
9
|
+
var i = e + "_" + r, t = `_${i}_qydb`, g = `_${i}_logger`, d = (globalThis[t] = o,
|
|
10
|
+
globalThis[g] = s, new a(r));
|
|
11
|
+
return d._compile(`(function(dataFolder, logger){${l}})(${t},${g});`, i + ".ts"),
|
|
12
|
+
delete globalThis[t], delete globalThis[g], d.exports;
|
|
13
13
|
} catch (o) {
|
|
14
14
|
s.error("requireFromModCode failed:", e, r, l, o);
|
|
15
15
|
}
|
package/src/QyOpRunner.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ export declare class QyOpRunner extends EventEmitter {
|
|
|
4
4
|
opQueue: any;
|
|
5
5
|
options: any;
|
|
6
6
|
runningOp: any;
|
|
7
|
-
constructor(options: any, callOpNameList?: any
|
|
7
|
+
constructor(options: any, callOpNameList?: any, castOpNameList?: any);
|
|
8
8
|
get firstOp(): any;
|
|
9
9
|
get lastOp(): any;
|
|
10
10
|
finish(): any;
|
package/src/QyOpRunner.js
CHANGED
|
@@ -21,11 +21,12 @@ class e extends t {
|
|
|
21
21
|
opQueue;
|
|
22
22
|
options;
|
|
23
23
|
runningOp;
|
|
24
|
-
constructor(t, s =
|
|
24
|
+
constructor(t, s = void 0, e = void 0) {
|
|
25
25
|
super(), t = this.options = {
|
|
26
26
|
...i("QyOpRunner"),
|
|
27
27
|
...t
|
|
28
|
-
}, this.opQueue = new r(t), n(this, s, !0), n(this,
|
|
28
|
+
}, this.opQueue = new r(t), s && n(this, s, !0), n(this, [ "start", "stop" ], !0),
|
|
29
|
+
e && n(this, e), n(this, Object.getOwnPropertyNames(Object.getPrototypeOf(this)).filter(t => t.startsWith("_op_")).map(t => t.substring(4)));
|
|
29
30
|
}
|
|
30
31
|
get firstOp() {
|
|
31
32
|
return this.opQueue.first;
|
package/src/QyQueue.d.ts
CHANGED
package/src/QyQueue.js
CHANGED
|
@@ -7,7 +7,7 @@ class t {
|
|
|
7
7
|
queue = [];
|
|
8
8
|
firstIdx = 0;
|
|
9
9
|
_waterMark = 0;
|
|
10
|
-
constructor(t) {
|
|
10
|
+
constructor(t = void 0) {
|
|
11
11
|
this.options = {
|
|
12
12
|
...e("QyQueue"),
|
|
13
13
|
...t
|
|
@@ -44,10 +44,10 @@ class t {
|
|
|
44
44
|
options: r
|
|
45
45
|
} = e, u = s.length, h = i + 1;
|
|
46
46
|
if (u <= h) e.reset(); else {
|
|
47
|
-
var
|
|
48
|
-
if (h > r.maxLenBeforeRecycle ||
|
|
49
|
-
for (let t = 0; t <
|
|
50
|
-
e.firstIdx = 0, s.length =
|
|
47
|
+
var o = u - h;
|
|
48
|
+
if (h > r.maxLenBeforeRecycle || o <= h) {
|
|
49
|
+
for (let t = 0; t < o; ++t) s[t] = s[t + h];
|
|
50
|
+
e.firstIdx = 0, s.length = o;
|
|
51
51
|
} else e.firstIdx = h, s[i] = void 0;
|
|
52
52
|
}
|
|
53
53
|
return t;
|
package/src/QySaver.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export declare class QySaver {
|
|
2
2
|
dataFolder: any;
|
|
3
3
|
options: any;
|
|
4
|
-
constructor(dataFolder
|
|
4
|
+
constructor(dataFolder?: any, options?: any);
|
|
5
5
|
setDataFolder(dataFolder: any): this;
|
|
6
6
|
processAfterLoad(data: any): any;
|
|
7
7
|
processBeforeSave(data: any): Buffer<any>;
|