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
@@ -1,12 +1,16 @@
1
1
  import {
2
- h as o
2
+ h as u
3
3
  } from "./hscrpt.js";
4
4
 
5
5
  import "./explore-tree.js";
6
6
 
7
7
  import "./query-editor.js";
8
8
 
9
- let l = {
9
+ import "./trigger-editor.js";
10
+
11
+ import "./rpc-editor.js";
12
+
13
+ let h = {
10
14
  brandName: "datafolder UI",
11
15
  tabNames: [ "Explore", "Query", "RPC", "Triggers" ]
12
16
  };
@@ -16,62 +20,89 @@ customElements.define("main-page", class extends HTMLElement {
16
20
  super();
17
21
  }
18
22
  connectedCallback() {
19
- var {
20
- brandName: e,
21
- tabNames: t
22
- } = l;
23
- this.append(o("nav", {
23
+ var t, e, {
24
+ brandName: s,
25
+ tabNames: i
26
+ } = h;
27
+ this.append((e = i, (t = this).upperDiv = u("div", {
28
+ classList: "bg-body-tertiary",
29
+ style: {
30
+ display: "flex",
31
+ "align-items": "center"
32
+ }
33
+ }, [ u("nav", {
24
34
  classList: "navbar bg-body-tertiary"
25
- }, [ ((e, t, a) => o("div", {
35
+ }, [ u("div", {
26
36
  classList: "container-fluid"
27
- }, [ (e => o("a", {
37
+ }, [ (t => u("a", {
28
38
  classList: "navbar-brand"
29
- }, [ e ]))(t), ((e, t) => o("ul", {
39
+ }, [ t ]))(s), ((t, e) => u("ul", {
30
40
  classList: "nav nav-pills me-auto mb-2 mb-lg-0"
31
- }, e.tabButtons = t.map(e => o("button", {
41
+ }, t.tabButtons = e.map(t => u("button", {
32
42
  classList: "nav-link",
33
- id: `pills-${e}-tab`,
43
+ id: `pills-${t}-tab`,
34
44
  "data-bs-toggle": "pill",
35
- "data-bs-target": "#pills-" + e,
45
+ "data-bs-target": "#pills-" + t,
36
46
  type: "button",
37
47
  role: "tab"
38
- }, [ e ]))))(e, a) ]))(this, e, t) ]), o("div", {
48
+ }, [ t ]))))(t, e) ]) ]), u("div", {
49
+ classList: "btn-toolbar",
50
+ role: "toolbar",
51
+ style: {
52
+ "margin-left": "20px"
53
+ }
54
+ }, [ u("button", {
55
+ classList: "btn btn-outline-success",
56
+ type: "submit",
57
+ style: {
58
+ "margin-right": "0px"
59
+ }
60
+ }, [ u("i", {
61
+ classList: "bi bi-arrow-clockwise"
62
+ }) ]), u("button", {
63
+ classList: "btn btn-outline-success",
64
+ type: "submit"
65
+ }, [ u("i", {
66
+ classList: "bi bi-file-earmark-plus"
67
+ }) ]) ]) ])), u("div", {
39
68
  classList: "tab-content",
40
69
  id: "pills-tabContent"
41
- }, this.tabDivs = t.map(e => o("div", {
70
+ }, this.tabDivs = i.map(t => u("div", {
42
71
  classList: "tab-pane",
43
- id: "pills-" + e,
72
+ id: "pills-" + t,
44
73
  role: "tabpanel"
45
74
  }))));
46
75
  let {
47
- tabButtons: [ a, s ],
48
- tabDivs: [ n, i ]
76
+ tabButtons: [ a, r, n, o ],
77
+ tabDivs: [ l, d, b, p ]
49
78
  } = this;
50
79
  bootstrap.Tab.getOrCreateInstance(a).show();
51
- e = o("explore-tree");
52
- n.appendChild(e);
53
- let r = o("query-editor");
54
- i.appendChild(r), Object.assign(this, {
55
- exploreTree: e,
56
- queryEditor: r
57
- }), r.addEventListener("run", () => s.click());
58
- t = () => this.onSizeChange();
59
- document.addEventListener("DOMContentLoaded", t), window.addEventListener("resize", t),
60
- s.addEventListener("shown.bs.tab", () => {
61
- r.onSizeChange();
62
- });
80
+ s = u("explore-tree");
81
+ l.appendChild(s);
82
+ let c = u("query-editor"), g = (d.appendChild(c), u("rpc-editor")), m = (b.appendChild(g),
83
+ u("trigger-editor"));
84
+ p.append(m), Object.assign(this, {
85
+ explore_tree: s,
86
+ query_editor: c,
87
+ rpc_editor: g,
88
+ trigger_editor: m
89
+ }), c.addEventListener("run", () => r.click()), window.addEventListener("resize", () => this.onSizeChange()),
90
+ r.addEventListener("shown.bs.tab", () => c.onSizeChange()), n.addEventListener("show.bs.tab", () => g.show()),
91
+ o.addEventListener("show.bs.tab", () => m.show());
63
92
  }
64
93
  onSizeChange() {
65
94
  var {
66
- exploreTree: e,
67
- queryEditor: t
95
+ explore_tree: t,
96
+ query_editor: e,
97
+ rpc_editor: s,
98
+ trigger_editor: i
68
99
  } = this;
69
- e.onSizeChange(), t.onSizeChange();
100
+ t.onSizeChange(), e.onSizeChange(), s.onSizeChange(), i.onSizeChange();
70
101
  }
71
- }), document.body.append(o("main-page"));
102
+ }), document.body.append(u("main-page"));
72
103
 
73
104
  import {
74
- rpc as e
105
+ rpc as t
75
106
  } from "./QyUIUtils.js";
76
107
 
77
- window.rpc = e;
108
+ window.rpc = t;
@@ -21,7 +21,7 @@ let a = "localStorage_queryFun_map", u = new Event("run");
21
21
  async function l(t, e) {
22
22
  var {
23
23
  queryId: r,
24
- displayTree: o
24
+ display_tree: o
25
25
  } = t, {
26
26
  tree: e,
27
27
  count: n,
@@ -34,7 +34,7 @@ function c(s) {
34
34
  return s.body = n("div", {
35
35
  classList: "container-fluid",
36
36
  style: "margin-top:1px;"
37
- }, [ s.codemirror = n("code-mirror", {
37
+ }, [ s.code_mirror = n("code-mirror", {
38
38
  changeCallback: t => {
39
39
  var e = s, {
40
40
  titleSet: r,
@@ -50,7 +50,7 @@ function c(s) {
50
50
  function d(t, e) {
51
51
  var {
52
52
  queryInput: r,
53
- codemirror: o,
53
+ code_mirror: o,
54
54
  queryFunctions: n
55
55
  } = t, n = n[t.funName = e] ?? "";
56
56
  r.value = n, t.titleSet = !1, o.text = n, p(e), o.clearHistory(), Object.assign(t, {
@@ -83,7 +83,7 @@ function g(t) {
83
83
  function y(t) {
84
84
  var {
85
85
  queryFunctions: e,
86
- codemirror: r,
86
+ code_mirror: r,
87
87
  textChanged: o
88
88
  } = t;
89
89
  o && (o = r.text, o) && (m(t, r = b(o)), e[r] = o, g(e), d(t, r));
@@ -92,7 +92,7 @@ function y(t) {
92
92
  function f(t) {
93
93
  var e, r, o, {
94
94
  queryFunctions: n,
95
- codemirror: s
95
+ code_mirror: s
96
96
  } = t, s = s.text;
97
97
  s && (s = b(s), r = s, (o = (e = (e = t).dropdownItemMap)[r]) && (o.remove(),
98
98
  delete e[r]), delete n[s], g(n), d(t, Object.keys(n)[0]));
@@ -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: "getFlightsByDate",
142
+ funName: "getHotels",
143
143
  dropdownItemMap: {}
144
144
  }), this.append(n("div", {
145
145
  classList: "btn-toolbar",
@@ -175,7 +175,7 @@ customElements.define("query-editor", class extends HTMLElement {
175
175
  var t, e = r;
176
176
  "closed" == o.status ? (t = {
177
177
  Run: () => {
178
- e.dispatchEvent(u), l(e, e.codemirror.text);
178
+ e.dispatchEvent(u), l(e, e.code_mirror.text);
179
179
  },
180
180
  Save: () => y(e),
181
181
  Delete: () => f(e)
@@ -200,14 +200,14 @@ customElements.define("query-editor", class extends HTMLElement {
200
200
  classList: "btn-group btn-group-sm me-2",
201
201
  role: "group"
202
202
  }, [ t ]));
203
- })(r) ]), n("div", [ this.displayTree = n("display-tree") ])), c(this),
203
+ })(r) ]), n("div", [ this.display_tree = n("display-tree") ])), c(this),
204
204
  d(this, this.funName);
205
205
  }
206
206
  onSizeChange() {
207
207
  var {
208
208
  queryInput: t,
209
209
  firstButton: e,
210
- displayTree: r
210
+ display_tree: r
211
211
  } = this;
212
212
  s(t, e.parentElement.offsetLeft - t.parentElement.offsetLeft), r.onSizeChange();
213
213
  }
@@ -0,0 +1,31 @@
1
+ import {
2
+ h as e
3
+ } from "./hscrpt.js";
4
+
5
+ import {
6
+ rpc as r
7
+ } from "./QyUIUtils.js";
8
+
9
+ import "./display-tree.js";
10
+
11
+ customElements.define("rpc-editor", class extends HTMLElement {
12
+ constructor() {
13
+ super();
14
+ }
15
+ compose() {
16
+ this.append(e("div", [ this.display_tree = e("display-tree") ]));
17
+ }
18
+ onSizeChange() {
19
+ this.display_tree.onSizeChange();
20
+ }
21
+ show() {
22
+ (async e => {
23
+ var s, t, i;
24
+ e.isShowing || (e.isShowing = !0, {
25
+ tree: s,
26
+ count: t,
27
+ error: i
28
+ } = await r("getRpcFiles"), e = e.display_tree, i ? e.showMsg(i) : e.showTree(s, t));
29
+ })(this);
30
+ }
31
+ });
@@ -0,0 +1,33 @@
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.display_tree = e("display-tree", {
17
+ isTriggerEditor: !0
18
+ }) ]));
19
+ }
20
+ onSizeChange() {
21
+ this.display_tree.onSizeChange();
22
+ }
23
+ show() {
24
+ (async e => {
25
+ var s, i, r;
26
+ e.isShowing || (e.isShowing = !0, {
27
+ tree: s,
28
+ count: i,
29
+ error: r
30
+ } = await t("getTriggerFiles"), e = e.display_tree, r ? e.showMsg(r) : e.showTree(s, i));
31
+ })(this);
32
+ }
33
+ });
@@ -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,10 +0,0 @@
1
- {"userid":"user_0001","email":"a@b.com","feedbackScore":6,"address":{"city":"a","zipcode":678}}
2
- 'What is async/await?
3
- 'async/await is ...
4
- ["traindata"]
5
- ["chat_0001"]
6
- ["20"]
7
- ["2026"]
8
- ["1"]
9
- ["chat_0001"]
10
- ["prompt","answer"]
@@ -1 +0,0 @@
1
- {"userid":"user_0001","email":"a@b.com","feedbackScore":7,"address":{"city":"a","zipcode":678}}
@@ -1 +0,0 @@
1
- {"userid":"user_0001","email":"a@b.com","feedbackScore":6,"address":{"city":"a","zipcode":678}}
@@ -1 +0,0 @@
1
- {"userid":"user_0001","email":"a@b.com","feedbackScore":7,"address":{"city":"a","zipcode":678}}
@@ -1,9 +0,0 @@
1
- {"userid":"user_0001","email":"a@b.com","feedbackScore":7,"address":{"city":"a","zipcode":678}}
2
- 'What is async/await?
3
- 'async/await is ...
4
- ["chat_0001"]
5
- ["20"]
6
- ["2026"]
7
- ["1"]
8
- ["chat_0001"]
9
- ["prompt","answer"]
@@ -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...