datafolder 1.0.11 → 1.0.12

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 (62) hide show
  1. package/README.md +12 -0
  2. package/package.json +1 -1
  3. package/scripts/flights2.js +2 -0
  4. package/src/QyAcl.d.ts +13 -7
  5. package/src/QyAcl.js +122 -138
  6. package/src/QyAclSaver.js +2 -2
  7. package/src/QyAclSaver_Worker.d.ts +2 -2
  8. package/src/QyBatch.d.ts +8 -11
  9. package/src/QyBatch.js +239 -211
  10. package/src/QyBinWriter.d.ts +1 -1
  11. package/src/QyBinWriter.js +15 -15
  12. package/src/QyCD.d.ts +2 -2
  13. package/src/QyCD.js +29 -29
  14. package/src/QyCache.d.ts +6 -1
  15. package/src/QyCache.js +72 -53
  16. package/src/QyCompressor.d.ts +2 -2
  17. package/src/QyCompressor.js +13 -13
  18. package/src/QyDB.d.ts +1 -22
  19. package/src/QyDB.js +23 -78
  20. package/src/QyDefaultOptions.js +5 -0
  21. package/src/QyDir.js +26 -27
  22. package/src/QyExpire.d.ts +21 -0
  23. package/src/QyExpire.js +113 -0
  24. package/src/QyExpireClock.d.ts +15 -0
  25. package/src/QyExpireClock.js +53 -0
  26. package/src/QyExpire_Worker.d.ts +20 -0
  27. package/src/QyExpire_Worker.js +127 -0
  28. package/src/QyFile.js +36 -25
  29. package/src/QyFileContentUtils.js +21 -21
  30. package/src/QyItem.d.ts +1 -0
  31. package/src/QyItem.js +15 -9
  32. package/src/QyJsonSaver.d.ts +1 -1
  33. package/src/QyJsonSaver.js +1 -1
  34. package/src/QyKVData.d.ts +4 -1
  35. package/src/QyKVData.js +148 -136
  36. package/src/QyKVDataCleaner.js +2 -2
  37. package/src/QyKVDataSaver.js +2 -2
  38. package/src/QyKVDataSaver_Worker.d.ts +2 -2
  39. package/src/QyKVDataSaver_Worker.js +5 -5
  40. package/src/QyLogFileSaver.js +2 -2
  41. package/src/QyMessageWorker.d.ts +1 -1
  42. package/src/QyMessageWorker.js +10 -10
  43. package/src/QyMessager.d.ts +1 -1
  44. package/src/QyMessager.js +37 -36
  45. package/src/QyMessager_Run.js +9 -6
  46. package/src/QyQueue.js +8 -12
  47. package/src/QySaver.d.ts +1 -1
  48. package/src/QySaver.js +1 -1
  49. package/src/QySnapshotCompactor.js +2 -2
  50. package/src/QySnapshotCompactor_Worker.js +1 -1
  51. package/src/QySnapshotSaver.js +2 -2
  52. package/src/QySnapshotSaver_Worker.js +1 -1
  53. package/src/QyTrigger.d.ts +1 -1
  54. package/src/QyTrigger.js +20 -21
  55. package/src/QyUtils.d.ts +3 -2
  56. package/src/QyUtils.js +93 -86
  57. package/src/hackernews.js +1 -1
  58. package/src/simulate.js +6 -6
  59. package/src/simulate2.js +4 -4
  60. package/src/soc_pokec.js +1 -1
  61. package/static/codemirror.bundle/editor.bundle.js +43 -9
  62. package/static/datafolderui/QyUIFolderViewer.js +1 -5
package/src/QyFile.js CHANGED
@@ -7,8 +7,9 @@ import {
7
7
  SpecialFilePaths as n,
8
8
  getContentKey as i,
9
9
  isNotNullObj as a,
10
- isSimpleType as C,
11
- fromSingleName as o
10
+ isSimpleType as d,
11
+ fromSingleName as o,
12
+ isEmptyObj as l
12
13
  } from "./QyUtils.js";
13
14
 
14
15
  import {
@@ -19,13 +20,18 @@ import {
19
20
  QyIndexPropTree as s
20
21
  } from "./QyIndexPropTree.js";
21
22
 
22
- let d = Array.isArray, f = n.IndexPropPathsFileName, {
23
- $spec: h,
23
+ import {
24
+ analyzeExpireInfo as f,
25
+ handleExpiredProps as u
26
+ } from "./QyExpire.js";
27
+
28
+ let C = Array.isArray, h = n.IndexPropPathsFileName, {
29
+ $spec: p,
24
30
  $raw: c,
25
- $clone: l
31
+ $clone: y
26
32
  } = t;
27
33
 
28
- class u extends e {
34
+ class m extends e {
29
35
  _fileContentKey;
30
36
  _fileContent;
31
37
  cChangeId = 0;
@@ -44,9 +50,14 @@ class u extends e {
44
50
  return this._fileContentKey || (this._fileContentKey = i(this.fullPathHash));
45
51
  }
46
52
  get fileContent() {
47
- var e, t = this;
48
- return t.created && null == t._fileContent && !t.fileContentLoaded && (t.fileContentLoaded = !0,
49
- e = t.qyCache) && (t._fileContent = e.qyKVData.getValueSync(t.fileContentKey)),
53
+ var e, t, n, i, r = this;
54
+ return r.created && null == r._fileContent && !r.fileContentLoaded && (r.fileContentLoaded = !0,
55
+ e = r.qyCache) && (r._fileContent = e.qyKVData.getValueSync(r.fileContentKey),
56
+ !r.underHiddenFolder && (r = r, i = (e = e).getExpireInfoFile(r.fullPathHash)) && ({
57
+ expiredProps: i,
58
+ remainingExpireInfoObj: t,
59
+ toDeleteFile: n
60
+ } = f(i.fileContent), u(e.qyDB, r, i, n), l(t) || e.monitorContentExpire(r, t))),
50
61
  this.visited = !0, this._fileContent;
51
62
  }
52
63
  set fileContent(e) {
@@ -59,7 +70,7 @@ class u extends e {
59
70
  fileContent: n,
60
71
  underHiddenFolder: i
61
72
  } = this;
62
- if (e && i && t == f) {
73
+ if (e && i && t == h) {
63
74
  e = this._qyIndexPropTree;
64
75
  if (e) return e;
65
76
  var r, l = this._qyIndexPropTree = new s();
@@ -80,17 +91,17 @@ class u extends e {
80
91
  setContent(e) {
81
92
  this.fileContent = e;
82
93
  }
83
- view(e = l, t) {
94
+ view(e = y, t) {
84
95
  var n = this.fileContent;
85
- return null == n || C(n) ? n : function t(n, i, r, l) {
96
+ return null == n || d(n) ? n : function t(n, i, r, l) {
86
97
  if (r === c) return i;
87
98
  if (null == r) return;
88
- if (C(r)) return r ? l ? i : structuredClone(i) : void 0;
99
+ if (d(r)) return r ? l ? i : structuredClone(i) : void 0;
89
100
  let e = r.$link;
90
- if (null != e) return y(n, i, e, r[h]);
91
- if (C(i)) return i;
92
- d(r) && (r = Object.fromEntries(r.filter(e => e).map(e => [ e, 1 ])));
93
- let o = d(i) ? [] : {};
101
+ if (null != e) return _(n, i, e, r[p]);
102
+ if (d(i)) return i;
103
+ C(r) && (r = Object.fromEntries(r.filter(e => e).map(e => [ e, 1 ])));
104
+ let o = C(i) ? [] : {};
94
105
  let {
95
106
  $all: s,
96
107
  "**": a
@@ -105,9 +116,9 @@ class u extends e {
105
116
  return o;
106
117
  }(this, n, e, t);
107
118
  }
108
- prop(e, t = l, n) {
119
+ prop(e, t = y, n) {
109
120
  var i;
110
- if (t) return e = r(this.fileContent, d(e) ? e : [ e ]), i = t.$link, null != i ? y(this, e, i, t[h], n) : n || t === c ? e : structuredClone(e);
121
+ if (t) return e = r(this.fileContent, C(e) ? e : [ e ]), i = t.$link, null != i ? _(this, e, i, t[p], n) : n || t === c ? e : structuredClone(e);
111
122
  }
112
123
  unloadFileContent() {
113
124
  this.created && this.fileContentLoaded && null != this._fileContent && (this._fileContent = void 0,
@@ -115,7 +126,7 @@ class u extends e {
115
126
  }
116
127
  }
117
128
 
118
- function p(e, t, n, i) {
129
+ function g(e, t, n, i) {
119
130
  if (e) {
120
131
  e = e.getFile(t);
121
132
  if (e) return e.view(n, i);
@@ -123,17 +134,17 @@ function p(e, t, n, i) {
123
134
  return t;
124
135
  }
125
136
 
126
- function y(e, t, n, i, r = !1) {
137
+ function _(e, t, n, i, r = !1) {
127
138
  let l = e.qyCache.getDir(n);
128
- if (d(t)) return t.map(e => p(l, e, i, r));
139
+ if (C(t)) return t.map(e => g(l, e, i, r));
129
140
  if (a(t)) {
130
141
  var o, s = {};
131
- for (o in t) s[o] = p(l, o, i, r);
142
+ for (o in t) s[o] = g(l, o, i, r);
132
143
  return s;
133
144
  }
134
- return p(l, t, i, r);
145
+ return g(l, t, i, r);
135
146
  }
136
147
 
137
148
  export {
138
- u as QyFile
149
+ m as QyFile
139
150
  };
@@ -1,6 +1,5 @@
1
1
  import {
2
2
  isNotNullObj as a,
3
- arrayLast as t,
4
3
  trimArrayTail as g,
5
4
  isSimpleType as h,
6
5
  SpecialOperators as r
@@ -8,15 +7,15 @@ import {
8
7
 
9
8
  let p = Array.isArray, {
10
9
  $del: w,
11
- $rpl: y,
12
- $ext: m
10
+ $rpl: m,
11
+ $ext: y
13
12
  } = r;
14
13
 
15
14
  function i(r, n) {
16
15
  if (null == n) return r;
17
16
  if (n !== w) {
18
17
  if (h(n)) return n;
19
- var l = n[y];
18
+ var l = n[m];
20
19
  if (null != l) return l;
21
20
  if (null == r || h(r)) return n;
22
21
  if (r != n) {
@@ -32,11 +31,11 @@ function i(r, n) {
32
31
 
33
32
  function f(r, n) {
34
33
  if (n == w) return w;
35
- if (null != n[y]) return n;
36
- var l = r[y];
37
- if (null != l) r[y] = i(l, n); else {
34
+ if (null != n[m]) return n;
35
+ var l = r[m];
36
+ if (null != l) r[m] = i(l, n); else {
38
37
  if (r == w) return {
39
- [y]: S(n)
38
+ [m]: S(n)
40
39
  };
41
40
  if (h(r) || h(n)) return n;
42
41
  for (var e in n) {
@@ -67,13 +66,14 @@ function u(r, n, l) {
67
66
  var u = n[r];
68
67
  a(e[u]) || (e[u] = {}), e = e[u];
69
68
  }
70
- return e[t(n)] = l, r;
69
+ var t = n.at(-1);
70
+ return void 0 === l ? delete e[t] : e[t] = l, r;
71
71
  }
72
72
 
73
73
  function l(r, n) {
74
- if (null != n && null != (r = o(r))) {
75
- if (!p(n)) return "" == n ? r : o(r[n]);
76
- if (0 != n.length && (1 != n.length || "" != n[0])) for (var l of n) if (null == (r = o(r[l]))) return;
74
+ if (null != n && null != (r = t(r))) {
75
+ if (!p(n)) return "" == n ? r : t(r[n]);
76
+ if (0 != n.length && (1 != n.length || "" != n[0])) for (var l of n) if (null == (r = t(r[l]))) return;
77
77
  return r;
78
78
  }
79
79
  }
@@ -83,9 +83,9 @@ function S(r, n = !0, l = !1) {
83
83
  if (e instanceof Date) return e.toISOString();
84
84
  if (!a(e)) return (t ? void 0 === e : null == e) || u && e === w ? void 0 : e;
85
85
  if (u) {
86
- let r = e[y];
86
+ let r = e[m];
87
87
  if (null != r) return l(r, u, t);
88
- let n = e[m];
88
+ let n = e[y];
89
89
  if (null != n) return l(p(n) ? n : [ n ], u, t);
90
90
  }
91
91
  let n = p(e);
@@ -112,16 +112,16 @@ function A(n, l, e, u, t) {
112
112
  if (null == l) return n;
113
113
  if (l !== w) {
114
114
  if (null == n || h(n) || h(l)) return O(n, l, e, t);
115
- var i = l[y];
115
+ var i = l[m];
116
116
  if (null != i) return O(n, i, e, t);
117
- let r = l[m];
117
+ let r = l[y];
118
118
  if (null != r) return p(r) || (r = [ r ]), (p(n) ? (n, l, r, e) => {
119
119
  l = S(l);
120
120
  var u = {};
121
121
  for (let r = 0; r < l.length; ++r) {
122
122
  var t = l[r];
123
123
  null != t && (u[r + n.length] = h(t) ? t : {
124
- [y]: t
124
+ [m]: t
125
125
  });
126
126
  }
127
127
  return $(e, r, n, u), n.concat(l);
@@ -144,9 +144,9 @@ function A(n, l, e, u, t) {
144
144
  function O(r, n, l, e) {
145
145
  n = S(n);
146
146
  return r === n ? r : null != n ? (null == r ? $(e, l, 0 == l.length ? void 0 : null, h(n) ? n : {
147
- [y]: n
147
+ [m]: n
148
148
  }) : $(e, l, r, h(r) ? n : {
149
- [y]: n
149
+ [m]: n
150
150
  }), n) : void $(e, l, r, w);
151
151
  }
152
152
 
@@ -154,9 +154,9 @@ function $(r, n, l, e) {
154
154
  r.oldValue = u(r.oldValue, n, l), r.newValue = u(r.newValue, n, e);
155
155
  }
156
156
 
157
- function o(r) {
157
+ function t(r) {
158
158
  if (null != r && r != w) {
159
- for (;null != r[y]; ) if ((r = r[y]) == w) return;
159
+ for (;null != r[m]; ) if ((r = r[m]) == w) return;
160
160
  return r;
161
161
  }
162
162
  }
package/src/QyItem.d.ts CHANGED
@@ -27,4 +27,5 @@ export declare class QyItem {
27
27
  get parentList(): QyDir[];
28
28
  get parentNamePath(): string[];
29
29
  get namePath(): string[];
30
+ relativeNamePath(parent: any): any[] | undefined;
30
31
  }
package/src/QyItem.js CHANGED
@@ -3,7 +3,7 @@ import {
3
3
  SpecialFilePaths as t
4
4
  } from "./QyUtils.js";
5
5
 
6
- let i = t.HiddenFolderName;
6
+ let r = t.HiddenFolderName;
7
7
 
8
8
  class e {
9
9
  name;
@@ -11,38 +11,38 @@ class e {
11
11
  flagInt;
12
12
  constructor(t, e = !1, a) {
13
13
  this.name = t.toString(), this.parentDir = a, this.flagInt = 0, this._created = e,
14
- a && (a.name == i || a.underHiddenFolder) && (this.flagInt |= 2);
14
+ a && (a.name == r || a.underHiddenFolder) && (this.flagInt |= 2);
15
15
  }
16
16
  get qyCache() {
17
17
  var t = this.parentDir;
18
18
  return t ? t.qyCache : this._qyCache;
19
19
  }
20
20
  get _created() {
21
- return r(this, 1);
21
+ return i(this, 1);
22
22
  }
23
23
  set _created(t) {
24
24
  n(this, 1, t);
25
25
  }
26
26
  get subdirMapLoaded() {
27
- return r(this, 4);
27
+ return i(this, 4);
28
28
  }
29
29
  set subdirMapLoaded(t) {
30
30
  n(this, 4, t);
31
31
  }
32
32
  get fileMapLoaded() {
33
- return r(this, 8);
33
+ return i(this, 8);
34
34
  }
35
35
  set fileMapLoaded(t) {
36
36
  n(this, 8, t);
37
37
  }
38
38
  get fileContentLoaded() {
39
- return r(this, 16);
39
+ return i(this, 16);
40
40
  }
41
41
  set fileContentLoaded(t) {
42
42
  n(this, 16, t);
43
43
  }
44
44
  get visited() {
45
- return r(this, 32);
45
+ return i(this, 32);
46
46
  }
47
47
  set visited(t) {
48
48
  n(this, 32, t);
@@ -75,7 +75,7 @@ class e {
75
75
  return !0;
76
76
  }
77
77
  get underHiddenFolder() {
78
- return r(this, 2);
78
+ return i(this, 2);
79
79
  }
80
80
  get parentList() {
81
81
  if (null == this._parentList) {
@@ -96,9 +96,15 @@ class e {
96
96
  return null == this._namePath && (this._namePath = [ ...this.parentNamePath, this.name ]),
97
97
  this._namePath;
98
98
  }
99
+ relativeNamePath(t) {
100
+ var e = [ this.name ];
101
+ let a = this.parentDir;
102
+ for (;a && a != t; ) e.push(a.name), a = a.parentDir;
103
+ if (a == t) return e.reverse();
104
+ }
99
105
  }
100
106
 
101
- function r(t, e) {
107
+ function i(t, e) {
102
108
  return 0 != (t.flagInt & e);
103
109
  }
104
110
 
@@ -1,6 +1,6 @@
1
1
  import { QySaver } from "./QySaver.ts";
2
2
  export declare class QyJsonSaver extends QySaver {
3
- constructor(dataFolder: any, options: any);
3
+ constructor(dataFolder: any, options?: any);
4
4
  processAfterLoad(binData: any): any;
5
5
  processBeforeSave(json: any): Buffer<any>;
6
6
  }
@@ -7,7 +7,7 @@ import {
7
7
  } from "./QySaver.js";
8
8
 
9
9
  class r extends e {
10
- constructor(e, r) {
10
+ constructor(e, r = void 0) {
11
11
  super(e, {
12
12
  ...s("QyJsonSaver"),
13
13
  ...r
package/src/QyKVData.d.ts CHANGED
@@ -16,14 +16,17 @@ export declare class QyKVData {
16
16
  aclKeyValueMap: any;
17
17
  compactInterval: any;
18
18
  unloadInterval: any;
19
+ qyExpire: any;
19
20
  constructor(kvFolder: any, options: any, qyCache: any);
20
21
  start(maxChangeId: any, loadedMaxAclNum: any, qySnapshots: any, aclKeyValueMap: any): this;
21
22
  stop(): Promise<void>;
22
- save(changeId: any, cmdArgAsListObj: any, syncList: any, needPromise: any): any;
23
+ save(changeId: any, cmdArgAsListChanges: any, syncList: any, needPromise: any): any;
23
24
  increaseChangeId(): number;
24
25
  decreaseChangeId(): void;
25
26
  getValueSync(key: any): any;
26
27
  removeKey(key: any): any;
27
28
  onSnapshotSavedChangeId(snapshotSavedChangeId: any, pMOnlySnapshot?: any): void;
28
29
  onCompactUpdates(compactUpdates: any): void;
30
+ monitorContentExpire(file: any, flattedAbsSecondObj: any): void;
31
+ unmonitorContentExpire(file: any, flattedDelObj: any): void;
29
32
  }