datafolder 1.0.6 → 1.0.7
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 +3 -1
- package/internal.md +119 -0
- package/package.json +2 -2
- package/scripts/convertBinFiles.js +49 -0
- package/scripts/fastify.js +2 -2
- package/src/QyCD.js +19 -10
- package/src/QyCache.js +6 -0
- package/src/QyFetch.js +1 -1
- package/src/QyKVData.js +21 -12
- package/src/QyKVDataSaver_Worker.js +7 -7
- package/src/QySnapshotCompactor_Worker.js +19 -18
- package/src/QySnapshotSaver_Worker.js +54 -52
- package/src/QySnapshots.js +72 -64
- package/src/rpc/getTriggerFiles.js +1 -0
- package/src/soc_pokec.js +7 -7
- package/static/datafolderui/QyStyledElement.js +6 -15
- package/static/datafolderui/QyUIFolderTree.js +71 -62
- package/static/datafolderui/QyUIFolderViewer.js +210 -0
- package/static/datafolderui/QyUIUtils.js +1 -1
- package/static/datafolderui/display-tree.js +18 -57
- package/static/datafolderui/explore-tree.js +10 -10
- package/static/datafolderui/folder-tree.js +71 -2
- package/static/datafolderui/json-view.js +7 -3
- package/static/datafolderui/main-page.js +22 -19
- package/static/datafolderui/query-editor.js +1 -1
- package/static/datafolderui/trigger-editor.js +30 -0
- package/data/sampleDataFolder/qykv/history/acl/1_acl.txt +0 -1
- package/data/sampleDataFolder/qykv/history/acl/2_acl.txt +0 -1
- package/data/sampleDataFolder/qykv/history/acl/3_acl.txt +0 -1
- package/data/sampleDataFolder/qykv/history/acl/4_acl.txt +0 -1
- package/data/sampleDataFolder/qykv/history/acl/5_acl.txt +0 -1
- package/data/sampleDataFolder/qykv/snapshot/1/1_pM.txt +0 -0
- package/data/sampleDataFolder/qykv/snapshot/1/1_prefixPM.txt +0 -0
- package/data/sampleDataFolder/qykv/snapshot/1/1_vL.txt +0 -10
- package/data/sampleDataFolder/qykv/snapshot/2/1_pM.txt +0 -0
- package/data/sampleDataFolder/qykv/snapshot/2/1_prefixPM.txt +0 -0
- package/data/sampleDataFolder/qykv/snapshot/2/1_vL.txt +0 -1
- package/data/sampleDataFolder/qykv/snapshot/3/1_pM.txt +0 -0
- package/data/sampleDataFolder/qykv/snapshot/3/1_prefixPM.txt +0 -0
- package/data/sampleDataFolder/qykv/snapshot/3/1_vL.txt +0 -1
- package/data/sampleDataFolder/qykv/snapshot/4/1_pM.txt +0 -0
- package/data/sampleDataFolder/qykv/snapshot/4/1_prefixPM.txt +0 -0
- package/data/sampleDataFolder/qykv/snapshot/4/1_vL.txt +0 -1
- package/data/sampleDataFolder/qykv/snapshot/4/2_pM.txt +0 -0
- package/data/sampleDataFolder/qykv/snapshot/4/2_prefixPM.txt +0 -0
- package/data/sampleDataFolder/qykv/snapshot/4/2_vL.txt +0 -9
- package/data/sampleDataFolder/qykv/snapshot/5/1_pM.txt +0 -0
- package/data/sampleDataFolder/qykv/snapshot/5/1_prefixPM.txt +0 -0
- package/data/sampleDataFolder/qykv/snapshot/5/1_vL.txt +0 -55
- package/data/sampleDataFolder/qykv/snapshot/info/1.json +0 -1
- package/data/sampleDataFolder/qykv/snapshot/info/2.json +0 -1
- package/data/sampleDataFolder/qykv/snapshot/info/3.json +0 -1
- package/data/sampleDataFolder/qykv/snapshot/info/4.json +0 -1
- package/data/sampleDataFolder/qykv/snapshot/info/5.json +0 -1
- package/data/sampleDataFolder/qylog/2026/02/15/08/change.txt +0 -58
- package/data/sampleDataFolder/qylog/2026/02/15/08/stderr.txt +0 -11
- package/data/sampleDataFolder/qylog/2026/02/15/08/stdout.txt +0 -36
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import {
|
|
2
|
-
h as
|
|
2
|
+
h as d
|
|
3
3
|
} from "./hscrpt.js";
|
|
4
4
|
|
|
5
5
|
import "./explore-tree.js";
|
|
6
6
|
|
|
7
7
|
import "./query-editor.js";
|
|
8
8
|
|
|
9
|
+
import "./trigger-editor.js";
|
|
10
|
+
|
|
9
11
|
let l = {
|
|
10
12
|
brandName: "datafolder UI",
|
|
11
13
|
tabNames: [ "Explore", "Query", "RPC", "Triggers" ]
|
|
@@ -20,45 +22,46 @@ customElements.define("main-page", class extends HTMLElement {
|
|
|
20
22
|
brandName: e,
|
|
21
23
|
tabNames: t
|
|
22
24
|
} = l;
|
|
23
|
-
this.append(
|
|
25
|
+
this.append(d("nav", {
|
|
24
26
|
classList: "navbar bg-body-tertiary"
|
|
25
|
-
}, [ ((e, t, a) =>
|
|
27
|
+
}, [ ((e, t, a) => d("div", {
|
|
26
28
|
classList: "container-fluid"
|
|
27
|
-
}, [ (e =>
|
|
29
|
+
}, [ (e => d("a", {
|
|
28
30
|
classList: "navbar-brand"
|
|
29
|
-
}, [ e ]))(t), ((e, t) =>
|
|
31
|
+
}, [ e ]))(t), ((e, t) => d("ul", {
|
|
30
32
|
classList: "nav nav-pills me-auto mb-2 mb-lg-0"
|
|
31
|
-
}, e.tabButtons = t.map(e =>
|
|
33
|
+
}, e.tabButtons = t.map(e => d("button", {
|
|
32
34
|
classList: "nav-link",
|
|
33
35
|
id: `pills-${e}-tab`,
|
|
34
36
|
"data-bs-toggle": "pill",
|
|
35
37
|
"data-bs-target": "#pills-" + e,
|
|
36
38
|
type: "button",
|
|
37
39
|
role: "tab"
|
|
38
|
-
}, [ e ]))))(e, a) ]))(this, e, t) ]),
|
|
40
|
+
}, [ e ]))))(e, a) ]))(this, e, t) ]), d("div", {
|
|
39
41
|
classList: "tab-content",
|
|
40
42
|
id: "pills-tabContent"
|
|
41
|
-
}, this.tabDivs = t.map(e =>
|
|
43
|
+
}, this.tabDivs = t.map(e => d("div", {
|
|
42
44
|
classList: "tab-pane",
|
|
43
45
|
id: "pills-" + e,
|
|
44
46
|
role: "tabpanel"
|
|
45
47
|
}))));
|
|
46
48
|
let {
|
|
47
49
|
tabButtons: [ a, s ],
|
|
48
|
-
tabDivs: [ n,
|
|
50
|
+
tabDivs: [ i, n, , r ]
|
|
49
51
|
} = this;
|
|
50
52
|
bootstrap.Tab.getOrCreateInstance(a).show();
|
|
51
|
-
e =
|
|
52
|
-
|
|
53
|
-
let
|
|
54
|
-
|
|
53
|
+
e = d("explore-tree");
|
|
54
|
+
i.appendChild(e);
|
|
55
|
+
let o = d("query-editor");
|
|
56
|
+
n.appendChild(o);
|
|
57
|
+
t = d("trigger-editor"), r.append(t), Object.assign(this, {
|
|
55
58
|
exploreTree: e,
|
|
56
|
-
queryEditor:
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
document.addEventListener("DOMContentLoaded",
|
|
59
|
+
queryEditor: o,
|
|
60
|
+
triggerEditor: t
|
|
61
|
+
}), o.addEventListener("run", () => s.click()), e = () => this.onSizeChange();
|
|
62
|
+
document.addEventListener("DOMContentLoaded", e), window.addEventListener("resize", e),
|
|
60
63
|
s.addEventListener("shown.bs.tab", () => {
|
|
61
|
-
|
|
64
|
+
o.onSizeChange();
|
|
62
65
|
});
|
|
63
66
|
}
|
|
64
67
|
onSizeChange() {
|
|
@@ -68,7 +71,7 @@ customElements.define("main-page", class extends HTMLElement {
|
|
|
68
71
|
} = this;
|
|
69
72
|
e.onSizeChange(), t.onSizeChange();
|
|
70
73
|
}
|
|
71
|
-
}), document.body.append(
|
|
74
|
+
}), document.body.append(d("main-page"));
|
|
72
75
|
|
|
73
76
|
import {
|
|
74
77
|
rpc as e
|
|
@@ -139,7 +139,7 @@ customElements.define("query-editor", class extends HTMLElement {
|
|
|
139
139
|
r && Object.assign(e, JSON.parse(r)), Object.assign(t, {
|
|
140
140
|
queryFunctions: e,
|
|
141
141
|
queryId: 0,
|
|
142
|
-
funName: "
|
|
142
|
+
funName: "getHotels",
|
|
143
143
|
dropdownItemMap: {}
|
|
144
144
|
}), this.append(n("div", {
|
|
145
145
|
classList: "btn-toolbar",
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import {
|
|
2
|
+
h as e
|
|
3
|
+
} from "./hscrpt.js";
|
|
4
|
+
|
|
5
|
+
import {
|
|
6
|
+
rpc as t
|
|
7
|
+
} from "./QyUIUtils.js";
|
|
8
|
+
|
|
9
|
+
import "./display-tree.js";
|
|
10
|
+
|
|
11
|
+
customElements.define("trigger-editor", class extends HTMLElement {
|
|
12
|
+
constructor() {
|
|
13
|
+
super();
|
|
14
|
+
}
|
|
15
|
+
compose() {
|
|
16
|
+
this.append(e("div", [ this.displayTree = e("display-tree", {
|
|
17
|
+
isTriggerEditor: !0
|
|
18
|
+
}) ])), (async e => {
|
|
19
|
+
var s, i, r;
|
|
20
|
+
e.isShowing || (e.isShowing = !0, {
|
|
21
|
+
tree: s,
|
|
22
|
+
count: i,
|
|
23
|
+
error: r
|
|
24
|
+
} = await t("getTriggerFiles"), e = e.displayTree, r ? e.showMsg(r) : e.showTree(s, i));
|
|
25
|
+
})(this);
|
|
26
|
+
}
|
|
27
|
+
onSizeChange() {
|
|
28
|
+
this.displayTree.onSizeChange();
|
|
29
|
+
}
|
|
30
|
+
});
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
��{"A":{"d47DEQpj8HB":["traindata"],"dtUlkQZgl7o":["2026"],"dyIV17-jlAm":["1"],"dgtwaon715h":["20"],"f4c29u8q2PJ":["chat_0001"],"d4c29u8q2PJ":["chat_0001"],"f7_c5SOWlEi":["prompt","answer"]},"M":{"c7_c5SOWlEi":{"$rpl":{"userid":"user_0001","email":"a@b.com","feedbackScore":6,"address":{"city":"a","zipcode":678}}},"cHZTLuixYD7":"What is async/await?","cbjx7gmgpjt":"async/await is ..."}}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
�){"M":{"c7_c5SOWlEi":{"feedbackScore":7}}}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
�C{"M":{"c7_c5SOWlEi":{"feedbackScore":6,"address":{"zipcode":678}}}}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
�){"M":{"c7_c5SOWlEi":{"feedbackScore":7}}}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
�
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"userid":"user_0001","email":"a@b.com","feedbackScore":7,"address":{"city":"a","zipcode":678}}
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"userid":"user_0001","email":"a@b.com","feedbackScore":6,"address":{"city":"a","zipcode":678}}
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"userid":"user_0001","email":"a@b.com","feedbackScore":7,"address":{"city":"a","zipcode":678}}
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
'let a = new Error("No such file");
|
|
2
|
-
|
|
3
|
-
module.exports = ({
|
|
4
|
-
filePath: e,
|
|
5
|
-
cChangeId: n
|
|
6
|
-
}) => {
|
|
7
|
-
var t, l, o, e = dataFolder.fileP(e);
|
|
8
|
-
return e ? ({
|
|
9
|
-
fileContent: e,
|
|
10
|
-
cChangeId: t,
|
|
11
|
-
fileContentKey: l
|
|
12
|
-
} = e, o = {}, n != t && (Object.assign(o, {
|
|
13
|
-
fileContent: e,
|
|
14
|
-
cChangeId: t
|
|
15
|
-
}), null == n) && (o.fileContentKey = l), o) : a;
|
|
16
|
-
};
|
|
17
|
-
'module.exports = queryText => {
|
|
18
|
-
let {
|
|
19
|
-
folder,
|
|
20
|
-
value,
|
|
21
|
-
view,
|
|
22
|
-
limit,
|
|
23
|
-
cursor
|
|
24
|
-
} = eval("((x)=>x)(" + queryText + ")");
|
|
25
|
-
return dataFolder.queryTree(folder, value, view, limit, cursor);
|
|
26
|
-
};
|
|
27
|
-
'module.exports = () => {};
|
|
28
|
-
'let s = new Error("No such dir");
|
|
29
|
-
|
|
30
|
-
module.exports = ({
|
|
31
|
-
dirPath: a,
|
|
32
|
-
dChangeId: d,
|
|
33
|
-
fChangeId: e
|
|
34
|
-
}) => {
|
|
35
|
-
var r, a = dataFolder.dirP(a);
|
|
36
|
-
return a ? (r = {}, d || e || (r.fullPathHash = a.fullPathHash), d != a.dChangeId && Object.assign(r, {
|
|
37
|
-
subdirList: a.sortedSubdirList.map(a => a.name),
|
|
38
|
-
dChangeId: a.dChangeId
|
|
39
|
-
}), e != a.fChangeId && Object.assign(r, {
|
|
40
|
-
fileList: a.sortedFileList.map(a => a.name),
|
|
41
|
-
fChangeId: a.fChangeId
|
|
42
|
-
}), r) : s;
|
|
43
|
-
};
|
|
44
|
-
'module.exports = r => {
|
|
45
|
-
try {
|
|
46
|
-
return new Function("dataFolder", `return (${r})();`)(dataFolder);
|
|
47
|
-
} catch (r) {
|
|
48
|
-
return {
|
|
49
|
-
error: r.message
|
|
50
|
-
};
|
|
51
|
-
}
|
|
52
|
-
};
|
|
53
|
-
["traindata","%"]
|
|
54
|
-
["rpc"]
|
|
55
|
-
["evalCode","getSubItems","queryFiles","getFileContent","reloadRpc"]
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"maxChangeId":4,"pMVersion":1,"vLVersion":1,"totalCount":10,"outdatedCount":0,"outdated":"0%"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"maxChangeId":5,"pMVersion":1,"vLVersion":1,"totalCount":1,"outdatedCount":0,"outdated":"0%"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"maxChangeId":7,"pMVersion":1,"vLVersion":1,"totalCount":1,"outdatedCount":0,"outdated":"0%"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"maxChangeId":8,"pMVersion":1,"vLVersion":1,"totalCount":1,"outdatedCount":0,"outdated":"0%"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"maxChangeId":13,"pMVersion":1,"vLVersion":1,"totalCount":8,"outdatedCount":0,"outdated":"0%"}
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
2026-02-15T08:50:18.312Z: 6 changes:
|
|
2
|
-
createDir "/traindata"
|
|
3
|
-
createDir "/traindata/2026"
|
|
4
|
-
createDir "/traindata/2026/1"
|
|
5
|
-
createDir "/traindata/2026/1/20"
|
|
6
|
-
createFile "/traindata/2026/1/20/chat_0001"
|
|
7
|
-
insert "/traindata/2026/1/20/chat_0001" undefined -> {"$rpl":{"userid":"user_0001","email":"a@b.com","feedbackScore":5,"address":{"city":"a","zipcode":123}}}
|
|
8
|
-
2026-02-15T08:50:18.313Z: 3 changes:
|
|
9
|
-
createDir "/traindata/2026/1/20/chat_0001"
|
|
10
|
-
createFile "/traindata/2026/1/20/chat_0001/prompt"
|
|
11
|
-
insert "/traindata/2026/1/20/chat_0001/prompt" undefined -> "What is async/await?"
|
|
12
|
-
2026-02-15T08:50:18.313Z: 2 changes:
|
|
13
|
-
createFile "/traindata/2026/1/20/chat_0001/answer"
|
|
14
|
-
insert "/traindata/2026/1/20/chat_0001/answer" undefined -> "async/await is ..."
|
|
15
|
-
2026-02-15T08:50:18.317Z: 1 change:
|
|
16
|
-
insert "/traindata/2026/1/20/chat_0001" delta: {"feedbackScore":5,"address":{"zipcode":123}} -> {"feedbackScore":6,"address":{"zipcode":678}}
|
|
17
|
-
2026-02-15T08:50:18.548Z: 1 change:
|
|
18
|
-
insert "/traindata/2026/1/20/chat_0001" delta: {"feedbackScore":6} -> {"feedbackScore":7}
|
|
19
|
-
2026-02-15T08:50:23.921Z: 1 change:
|
|
20
|
-
insert "/traindata/2026/1/20/chat_0001" delta: {"feedbackScore":7,"address":{"zipcode":678}} -> {"feedbackScore":5,"address":{"zipcode":123}}
|
|
21
|
-
2026-02-15T08:50:23.927Z: 1 change:
|
|
22
|
-
insert "/traindata/2026/1/20/chat_0001" delta: {"feedbackScore":5,"address":{"zipcode":123}} -> {"feedbackScore":6,"address":{"zipcode":678}}
|
|
23
|
-
2026-02-15T08:50:24.106Z: 1 change:
|
|
24
|
-
insert "/traindata/2026/1/20/chat_0001" delta: {"feedbackScore":6} -> {"feedbackScore":7}
|
|
25
|
-
2026-02-15T08:50:56.784Z: 4 changes:
|
|
26
|
-
createDir "/%"
|
|
27
|
-
createDir "/%/rpc"
|
|
28
|
-
createFile "/%/rpc/evalCode"
|
|
29
|
-
insert "/%/rpc/evalCode" undefined -> "module.exports = r => {\n try {\n return new Function(\"dataFolder\", `return (${r})();`)(dataFolder);\n } catch (r) {\n return {\n error: r.message\n };\n }\n};"
|
|
30
|
-
2026-02-15T08:50:56.785Z: 2 changes:
|
|
31
|
-
createFile "/%/rpc/getFileContent"
|
|
32
|
-
insert "/%/rpc/getFileContent" undefined -> "let a = new Error(\"No such file\");\n\nmodule.exports = ({\n filePath: e,\n cChangeId: n\n}) => {\n var t, l, o, e = dataFolder.fileP(e);\n return e ? ({\n fileContent: e,\n cChangeId: t,\n fileContentKey: l\n } = e, o = {}, n != t && (Object.assign(o, {\n fileContent: e,\n cChangeId: t\n }), null == n) && (o.fileContentKey = l), o) : a;\n};"
|
|
33
|
-
2026-02-15T08:50:56.786Z: 2 changes:
|
|
34
|
-
createFile "/%/rpc/getSubItems"
|
|
35
|
-
insert "/%/rpc/getSubItems" undefined -> "let s = new Error(\"No such dir\");\n\nmodule.exports = ({\n dirPath: a,\n dChangeId: d,\n fChangeId: e\n}) => {\n var r, a = dataFolder.dirP(a);\n return a ? (r = {}, d || e || (r.fullPathHash = a.fullPathHash), d != a.dChangeId && Object.assign(r, {\n subdirList: a.sortedSubdirList.map(a => a.name),\n dChangeId: a.dChangeId\n }), e != a.fChangeId && Object.assign(r, {\n fileList: a.sortedFileList.map(a => a.name),\n fChangeId: a.fChangeId\n }), r) : s;\n};"
|
|
36
|
-
2026-02-15T08:50:56.787Z: 2 changes:
|
|
37
|
-
createFile "/%/rpc/queryFiles"
|
|
38
|
-
insert "/%/rpc/queryFiles" undefined -> "module.exports = queryText => {\n let {\n folder,\n value,\n view,\n limit,\n cursor\n } = eval(\"((x)=>x)(\" + queryText + \")\");\n return dataFolder.queryTree(folder, value, view, limit, cursor);\n};"
|
|
39
|
-
2026-02-15T08:50:56.788Z: 2 changes:
|
|
40
|
-
createFile "/%/rpc/reloadRpc"
|
|
41
|
-
insert "/%/rpc/reloadRpc" undefined -> "module.exports = () => {};"
|
|
42
|
-
2026-02-15T08:51:14.589Z: 4 changes:
|
|
43
|
-
createDir "/%"
|
|
44
|
-
createDir "/%/rpc"
|
|
45
|
-
createFile "/%/rpc/evalCode"
|
|
46
|
-
insert "/%/rpc/evalCode" undefined -> "module.exports = r => {\n try {\n return new Function(\"dataFolder\", `return (${r})();`)(dataFolder);\n } catch (r) {\n return {\n error: r.message\n };\n }\n};"
|
|
47
|
-
2026-02-15T08:51:14.590Z: 2 changes:
|
|
48
|
-
createFile "/%/rpc/getSubItems"
|
|
49
|
-
insert "/%/rpc/getSubItems" undefined -> "let s = new Error(\"No such dir\");\n\nmodule.exports = ({\n dirPath: a,\n dChangeId: d,\n fChangeId: e\n}) => {\n var r, a = dataFolder.dirP(a);\n return a ? (r = {}, d || e || (r.fullPathHash = a.fullPathHash), d != a.dChangeId && Object.assign(r, {\n subdirList: a.sortedSubdirList.map(a => a.name),\n dChangeId: a.dChangeId\n }), e != a.fChangeId && Object.assign(r, {\n fileList: a.sortedFileList.map(a => a.name),\n fChangeId: a.fChangeId\n }), r) : s;\n};"
|
|
50
|
-
2026-02-15T08:51:14.590Z: 2 changes:
|
|
51
|
-
createFile "/%/rpc/queryFiles"
|
|
52
|
-
insert "/%/rpc/queryFiles" undefined -> "module.exports = queryText => {\n let {\n folder,\n value,\n view,\n limit,\n cursor\n } = eval(\"((x)=>x)(\" + queryText + \")\");\n return dataFolder.queryTree(folder, value, view, limit, cursor);\n};"
|
|
53
|
-
2026-02-15T08:51:14.591Z: 2 changes:
|
|
54
|
-
createFile "/%/rpc/getFileContent"
|
|
55
|
-
insert "/%/rpc/getFileContent" undefined -> "let a = new Error(\"No such file\");\n\nmodule.exports = ({\n filePath: e,\n cChangeId: n\n}) => {\n var t, l, o, e = dataFolder.fileP(e);\n return e ? ({\n fileContent: e,\n cChangeId: t,\n fileContentKey: l\n } = e, o = {}, n != t && (Object.assign(o, {\n fileContent: e,\n cChangeId: t\n }), null == n) && (o.fileContentKey = l), o) : a;\n};"
|
|
56
|
-
2026-02-15T08:51:14.591Z: 2 changes:
|
|
57
|
-
createFile "/%/rpc/reloadRpc"
|
|
58
|
-
insert "/%/rpc/reloadRpc" undefined -> "module.exports = () => {};"
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
2026-02-15T08:50:56.813Z fastify.js:70:16:error: Error: listen EADDRINUSE: address already in use ::1:3628
|
|
2
|
-
at Server.setupListenHandle [as _listen2] (node:net:2016:16)
|
|
3
|
-
at listenInCluster (node:net:2073:12)
|
|
4
|
-
at GetAddrInfoReqWrap.callback (node:net:2282:7)
|
|
5
|
-
at GetAddrInfoReqWrap.onlookupall [as oncomplete] (node:dns:133:8) {
|
|
6
|
-
code: 'EADDRINUSE',
|
|
7
|
-
errno: -4091,
|
|
8
|
-
syscall: 'listen',
|
|
9
|
-
address: '::1',
|
|
10
|
-
port: 3628
|
|
11
|
-
}
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
2026-02-15T08:50:18.307Z QyCache.js:138:79:log: Started.
|
|
2
|
-
2026-02-15T08:50:18.314Z sample.js:17:9:log: user_0001 a@b.com 5 { city: 'a', zipcode: 123 }
|
|
3
|
-
2026-02-15T08:50:18.317Z sample.js:20:9:log: { feedbackScore: 6, address: { city: 'a', zipcode: 678 } }
|
|
4
|
-
2026-02-15T08:50:18.318Z sample.js:21:9:log: What is async/await?
|
|
5
|
-
2026-02-15T08:50:18.319Z sample.js:22:9:log: async/await is ...
|
|
6
|
-
2026-02-15T08:50:18.320Z QyCache.js:142:16:log: Stopping...
|
|
7
|
-
2026-02-15T08:50:18.542Z QyCache.js:138:79:log: Started.
|
|
8
|
-
2026-02-15T08:50:18.547Z sample.js:28:10:log: a@b.com 6
|
|
9
|
-
2026-02-15T08:50:18.549Z sample.js:30:10:log: {
|
|
10
|
-
userid: 'user_0001',
|
|
11
|
-
email: 'a@b.com',
|
|
12
|
-
feedbackScore: 7,
|
|
13
|
-
address: { city: 'a', zipcode: 678 }
|
|
14
|
-
} What is async/await? async/await is ...
|
|
15
|
-
2026-02-15T08:50:18.549Z QyCache.js:142:16:log: Stopping...
|
|
16
|
-
2026-02-15T08:50:23.914Z QyCache.js:138:79:log: Started.
|
|
17
|
-
2026-02-15T08:50:23.926Z sample.js:17:9:log: user_0001 a@b.com 5 { city: 'a', zipcode: 123 }
|
|
18
|
-
2026-02-15T08:50:23.928Z sample.js:20:9:log: { feedbackScore: 6, address: { city: 'a', zipcode: 678 } }
|
|
19
|
-
2026-02-15T08:50:23.929Z sample.js:21:9:log: What is async/await?
|
|
20
|
-
2026-02-15T08:50:23.930Z sample.js:22:9:log: async/await is ...
|
|
21
|
-
2026-02-15T08:50:23.930Z QyCache.js:142:16:log: Stopping...
|
|
22
|
-
2026-02-15T08:50:24.104Z QyCache.js:138:79:log: Started.
|
|
23
|
-
2026-02-15T08:50:24.106Z sample.js:28:10:log: a@b.com 6
|
|
24
|
-
2026-02-15T08:50:24.107Z sample.js:30:10:log: {
|
|
25
|
-
userid: 'user_0001',
|
|
26
|
-
email: 'a@b.com',
|
|
27
|
-
feedbackScore: 7,
|
|
28
|
-
address: { city: 'a', zipcode: 678 }
|
|
29
|
-
} What is async/await? async/await is ...
|
|
30
|
-
2026-02-15T08:50:24.107Z QyCache.js:142:16:log: Stopping...
|
|
31
|
-
2026-02-15T08:50:56.776Z QyCache.js:138:79:log: Started.
|
|
32
|
-
2026-02-15T08:51:14.579Z QyCache.js:138:79:log: Started.
|
|
33
|
-
2026-02-15T08:51:14.612Z fastify.js:73:16:log: Example app listening on port 3628
|
|
34
|
-
2026-02-15T08:51:14.617Z QySnapshots.js:242:93:log: combiningSnapshots:1,4
|
|
35
|
-
2026-02-15T08:51:39.471Z fastify.js:24:10:log: SIGINT signal received: closing HTTP server
|
|
36
|
-
2026-02-15T08:51:39.475Z QyCache.js:142:16:log: Stopping...
|