cojson 0.8.36 → 0.8.37

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/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # cojson
2
2
 
3
+ ## 0.8.37
4
+
5
+ ### Patch Changes
6
+
7
+ - 3d9f12e: Optimize the atTime processing on CoMap
8
+
3
9
  ## 0.8.36
4
10
 
5
11
  ### Patch Changes
@@ -12,16 +12,33 @@ export class RawCoMapView {
12
12
  this.latest = {};
13
13
  this.latestTxMadeAt = 0;
14
14
  this.options = options;
15
+ this.cachedOps = options?.cachedOps;
16
+ this.validSortedTransactions = options?.validSortedTransactions;
15
17
  this.processLatestTransactions();
16
18
  }
19
+ /** @internal */
20
+ getValidSortedTransactions() {
21
+ if (this.validSortedTransactions) {
22
+ return this.validSortedTransactions;
23
+ }
24
+ const validSortedTransactions = this.core.getValidSortedTransactions({
25
+ ignorePrivateTransactions: this.options?.ignorePrivateTransactions ?? false,
26
+ });
27
+ this.validSortedTransactions = validSortedTransactions;
28
+ return validSortedTransactions;
29
+ }
30
+ resetCachedValues() {
31
+ this.validSortedTransactions = undefined;
32
+ this.cachedOps = undefined;
33
+ }
17
34
  processLatestTransactions() {
35
+ // Reset all internal state and cached values
18
36
  this.latest = {};
19
37
  this.latestTxMadeAt = 0;
20
- const { core, options, latest } = this;
21
- for (const { txID, changes, madeAt } of core.getValidSortedTransactions({
22
- ignorePrivateTransactions: options?.ignorePrivateTransactions ?? false,
23
- })) {
24
- if (options?.atTime && madeAt > options.atTime) {
38
+ const { latest } = this;
39
+ const atTimeFilter = this.options?.atTime;
40
+ for (const { txID, changes, madeAt } of this.getValidSortedTransactions()) {
41
+ if (atTimeFilter && madeAt > atTimeFilter) {
25
42
  continue;
26
43
  }
27
44
  if (madeAt > this.latestTxMadeAt) {
@@ -48,12 +65,16 @@ export class RawCoMapView {
48
65
  }
49
66
  }
50
67
  }
68
+ revalidateTransactions() {
69
+ this.resetCachedValues();
70
+ this.processLatestTransactions();
71
+ }
51
72
  getOps() {
52
73
  if (this.cachedOps) {
53
74
  return this.cachedOps;
54
75
  }
55
76
  const ops = {};
56
- for (const { txID, changes, madeAt, } of this.core.getValidSortedTransactions(this.options)) {
77
+ for (const { txID, changes, madeAt } of this.getValidSortedTransactions()) {
57
78
  for (let changeIdx = 0; changeIdx < changes.length; changeIdx++) {
58
79
  const change = changes[changeIdx];
59
80
  let entries = ops[change.key];
@@ -89,6 +110,8 @@ export class RawCoMapView {
89
110
  const clone = new RawCoMapView(this.core, {
90
111
  ignorePrivateTransactions: this.options?.ignorePrivateTransactions ?? false,
91
112
  atTime: time,
113
+ cachedOps: this.cachedOps,
114
+ validSortedTransactions: this.validSortedTransactions,
92
115
  });
93
116
  Object.setPrototypeOf(clone, this);
94
117
  return clone;
@@ -99,8 +122,9 @@ export class RawCoMapView {
99
122
  if (key === "constructor") {
100
123
  return undefined;
101
124
  }
102
- if (this.atTimeFilter) {
103
- return this.getOps()[key]?.filter((op) => op.madeAt <= this.atTimeFilter);
125
+ const atTimeFilter = this.options?.atTime;
126
+ if (atTimeFilter) {
127
+ return this.getOps()[key]?.filter((op) => op.madeAt <= atTimeFilter);
104
128
  }
105
129
  else {
106
130
  return this.getOps()[key];
@@ -112,15 +136,11 @@ export class RawCoMapView {
112
136
  * @category 1. Reading */
113
137
  keys() {
114
138
  return Object.keys(this.latest).filter((key) => {
115
- const latest = this.latest[key];
116
- if (!latest) {
117
- return undefined;
139
+ const latestChange = this.latest[key];
140
+ if (!latestChange) {
141
+ return false;
118
142
  }
119
- const includeUntil = this.atTimeFilter;
120
- const lastEntry = includeUntil
121
- ? this.getOps()[key]?.findLast((entry) => entry.madeAt <= includeUntil)
122
- : latest;
123
- if (lastEntry?.change.op === "del") {
143
+ if (latestChange.change.op === "del") {
124
144
  return false;
125
145
  }
126
146
  else {
@@ -134,25 +154,21 @@ export class RawCoMapView {
134
154
  * @category 1. Reading
135
155
  **/
136
156
  get(key) {
137
- const latest = this.latest[key];
138
- if (!latest) {
157
+ const latestChange = this.latest[key];
158
+ if (!latestChange) {
139
159
  return undefined;
140
160
  }
141
- const includeUntil = this.atTimeFilter;
142
- const lastEntry = includeUntil
143
- ? this.timeFilteredOps(key)?.findLast((entry) => entry.madeAt <= includeUntil)
144
- : latest;
145
- if (lastEntry?.change.op === "del") {
161
+ if (latestChange.change.op === "del") {
146
162
  return undefined;
147
163
  }
148
164
  else {
149
- return lastEntry?.change.value;
165
+ return latestChange.change.value;
150
166
  }
151
167
  }
152
168
  /** @category 1. Reading */
153
169
  asObject() {
154
170
  const object = {};
155
- for (const key of this.keys()) {
171
+ for (const key of Object.keys(this.latest)) {
156
172
  const value = this.get(key);
157
173
  if (value !== undefined) {
158
174
  object[key] = value;
@@ -166,28 +182,25 @@ export class RawCoMapView {
166
182
  }
167
183
  /** @category 5. Edit history */
168
184
  nthEditAt(key, n) {
169
- const ops = this.timeFilteredOps(key);
170
- if (!ops || ops.length <= n) {
185
+ const ops = this.getOps()[key];
186
+ const atTimeFilter = this.options?.atTime;
187
+ const entry = ops?.[n];
188
+ if (!entry) {
171
189
  return undefined;
172
190
  }
173
- const entry = ops[n];
174
- if (this.atTimeFilter && entry.madeAt > this.atTimeFilter) {
191
+ if (atTimeFilter && entry.madeAt > atTimeFilter) {
175
192
  return undefined;
176
193
  }
177
- return {
178
- by: accountOrAgentIDfromSessionID(entry.txID.sessionID),
179
- tx: entry.txID,
180
- at: new Date(entry.madeAt),
181
- value: entry.change.op === "del" ? undefined : entry.change.value,
182
- };
194
+ return operationToEditEntry(entry);
183
195
  }
184
196
  /** @category 5. Edit history */
185
197
  lastEditAt(key) {
186
198
  const ops = this.timeFilteredOps(key);
187
- if (!ops || ops.length === 0) {
199
+ const lastEntry = ops?.[ops.length - 1];
200
+ if (!lastEntry) {
188
201
  return undefined;
189
202
  }
190
- return this.nthEditAt(key, ops.length - 1);
203
+ return operationToEditEntry(lastEntry);
191
204
  }
192
205
  /** @category 5. Edit history */
193
206
  *editsAt(key) {
@@ -195,8 +208,8 @@ export class RawCoMapView {
195
208
  if (!ops) {
196
209
  return;
197
210
  }
198
- for (let i = 0; i < ops.length; i++) {
199
- yield this.nthEditAt(key, i);
211
+ for (const entry of ops) {
212
+ yield operationToEditEntry(entry);
200
213
  }
201
214
  }
202
215
  /** @category 3. Subscription */
@@ -224,8 +237,7 @@ export class RawCoMap extends RawCoMapView {
224
237
  value: isCoValue(value) ? value.id : value,
225
238
  },
226
239
  ], privacy);
227
- this.processLatestTransactions();
228
- this.cachedOps = undefined;
240
+ this.revalidateTransactions();
229
241
  }
230
242
  /** Delete the given key (setting it to undefined).
231
243
  *
@@ -242,8 +254,15 @@ export class RawCoMap extends RawCoMapView {
242
254
  key,
243
255
  },
244
256
  ], privacy);
245
- this.processLatestTransactions();
246
- this.cachedOps = undefined;
257
+ this.revalidateTransactions();
247
258
  }
248
259
  }
260
+ export function operationToEditEntry(op) {
261
+ return {
262
+ by: accountOrAgentIDfromSessionID(op.txID.sessionID),
263
+ tx: op.txID,
264
+ at: new Date(op.madeAt),
265
+ value: op.change.op === "del" ? undefined : op.change.value,
266
+ };
267
+ }
249
268
  //# sourceMappingURL=coMap.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"coMap.js","sourceRoot":"","sources":["../../../src/coValues/coMap.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,6BAA6B,EAAE,MAAM,+CAA+C,CAAC;AAC9F,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAuBtD,MAAM,OAAO,YAAY;IA8BvB,gBAAgB;IAChB,YACE,IAAiB,EACjB,OAAiE;QAxBnE,wBAAwB;QACxB,SAAI,GAAG,OAAgB,CAAC;QAexB,gBAAgB;QAChB,iBAAY,GAAY,SAAS,CAAC;QAShC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAgB,CAAC;QAChC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QACjB,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;QACxB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QAEvB,IAAI,CAAC,yBAAyB,EAAE,CAAC;IACnC,CAAC;IAED,yBAAyB;QACvB,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QACjB,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;QAExB,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QAEvC,KAAK,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,IAAI,CAAC,0BAA0B,CAAC;YACtE,yBAAyB,EAAE,OAAO,EAAE,yBAAyB,IAAI,KAAK;SACvE,CAAC,EAAE,CAAC;YACH,IAAI,OAAO,EAAE,MAAM,IAAI,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;gBAC/C,SAAS;YACX,CAAC;YAED,IAAI,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;gBACjC,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC;YAC/B,CAAC;YAED,KAAK,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,CAAC;gBAChE,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAG/B,CAAC;gBACF,IAAI,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC/B,IAAI,CAAC,KAAK,EAAE,CAAC;oBACX,KAAK,GAAG;wBACN,IAAI;wBACJ,MAAM;wBACN,SAAS;wBACT,MAAM;qBACP,CAAC;oBACF,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;gBAC7B,CAAC;qBAAM,IAAI,MAAM,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;oBAClC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;oBAClB,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;oBACtB,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;oBAC5B,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;gBACxB,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAEO,MAAM;QACZ,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,OAAO,IAAI,CAAC,SAAS,CAAC;QACxB,CAAC;QAED,MAAM,GAAG,GAEL,EAAE,CAAC;QAEP,KAAK,MAAM,EACT,IAAI,EACJ,OAAO,EACP,MAAM,GACP,IAAI,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YACxD,KAAK,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,CAAC;gBAChE,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAG/B,CAAC;gBACF,IAAI,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC9B,IAAI,CAAC,OAAO,EAAE,CAAC;oBACb,OAAO,GAAG,EAAE,CAAC;oBACb,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC;gBAC5B,CAAC;gBACD,OAAO,CAAC,IAAI,CAAC;oBACX,IAAI;oBACJ,MAAM;oBACN,SAAS;oBACT,MAAM;iBACP,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;QAErB,OAAO,GAAG,CAAC;IACb,CAAC;IAED,wBAAwB;IACxB,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAY,CAAC;IACvC,CAAC;IAED,wBAAwB;IACxB,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC9B,CAAC;IAED,+BAA+B;IAC/B,MAAM,CAAC,IAAY;QACjB,IAAI,IAAI,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YAChC,OAAO,IAAI,CAAC;QACd,CAAC;aAAM,CAAC;YACN,MAAM,KAAK,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE;gBACxC,yBAAyB,EACvB,IAAI,CAAC,OAAO,EAAE,yBAAyB,IAAI,KAAK;gBAClD,MAAM,EAAE,IAAI;aACb,CAAC,CAAC;YACH,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YACnC,OAAO,KAAa,CAAC;QACvB,CAAC;IACH,CAAC;IAED,gBAAgB;IAChB,eAAe,CACb,GAAM;QAEN,IAAI,GAAG,KAAK,aAAa,EAAE,CAAC;YAC1B,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,MAAM,CAC/B,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,IAAI,IAAI,CAAC,YAAa,CACxC,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IAED;;;8BAG0B;IAC1B,IAAI;QACF,OAAQ,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAS,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE;YACtD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAChC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,OAAO,SAAS,CAAC;YACnB,CAAC;YAED,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;YACvC,MAAM,SAAS,GAAG,YAAY;gBAC5B,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,IAAI,YAAY,CAAC;gBACvE,CAAC,CAAC,MAAO,CAAC;YAEZ,IAAI,SAAS,EAAE,MAAM,CAAC,EAAE,KAAK,KAAK,EAAE,CAAC;gBACnC,OAAO,KAAK,CAAC;YACf,CAAC;iBAAM,CAAC;gBACN,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;QAII;IACJ,GAAG,CAAiC,GAAM;QACxC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAChC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;QACvC,MAAM,SAAS,GAAG,YAAY;YAC5B,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,QAAQ,CACjC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,IAAI,YAAY,CACxC;YACH,CAAC,CAAC,MAAM,CAAC;QAEX,IAAI,SAAS,EAAE,MAAM,CAAC,EAAE,KAAK,KAAK,EAAE,CAAC;YACnC,OAAO,SAAS,CAAC;QACnB,CAAC;aAAM,CAAC;YACN,OAAO,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC;QACjC,CAAC;IACH,CAAC;IAED,2BAA2B;IAC3B,QAAQ;QAGN,MAAM,MAAM,GAEP,EAAE,CAAC;QAER,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;YAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC5B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YACtB,CAAC;QACH,CAAC;QAED,OAAO,MAEN,CAAC;IACJ,CAAC;IAED,2BAA2B;IAC3B,MAAM;QAGJ,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IACzB,CAAC;IAED,gCAAgC;IAChC,SAAS,CACP,GAAM,EACN,CAAS;QAST,MAAM,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;QACtC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YAC5B,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,KAAK,GAAG,GAAG,CAAC,CAAC,CAAE,CAAC;QAEtB,IAAI,IAAI,CAAC,YAAY,IAAI,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;YAC1D,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,OAAO;YACL,EAAE,EAAE,6BAA6B,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;YACvD,EAAE,EAAE,KAAK,CAAC,IAAI;YACd,EAAE,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;YAC1B,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK;SAClE,CAAC;IACJ,CAAC;IAED,gCAAgC;IAChC,UAAU,CACR,GAAM;QASN,MAAM,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;QACtC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7B,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC7C,CAAC;IAED,gCAAgC;IAChC,CAAC,OAAO,CAAiC,GAAM;QAC7C,MAAM,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;QACtC,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,OAAO;QACT,CAAC;QAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACpC,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,CAAE,CAAC;QAChC,CAAC;IACH,CAAC;IAED,gCAAgC;IAChC,SAAS,CAAC,QAA+B;QACvC,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,EAAE;YACrC,QAAQ,CAAC,OAAe,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AAED,yFAAyF;AACzF,MAAM,OAAO,QAMX,SAAQ,YAAyB;IAGjC;;;;;;;QAOI;IACJ,GAAG,CACD,GAAM,EACN,KAAe,EACf,UAAkC,SAAS;QAE3C,IAAI,CAAC,IAAI,CAAC,eAAe,CACvB;YACE;gBACE,EAAE,EAAE,KAAK;gBACT,GAAG;gBACH,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK;aAC3C;SACF,EACD,OAAO,CACR,CAAC;QAEF,IAAI,CAAC,yBAAyB,EAAE,CAAC;QACjC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAED;;;;;;;QAOI;IACJ,MAAM,CACJ,GAAyB,EACzB,UAAkC,SAAS;QAE3C,IAAI,CAAC,IAAI,CAAC,eAAe,CACvB;YACE;gBACE,EAAE,EAAE,KAAK;gBACT,GAAG;aACJ;SACF,EACD,OAAO,CACR,CAAC;QAEF,IAAI,CAAC,yBAAyB,EAAE,CAAC;QACjC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;CACF"}
1
+ {"version":3,"file":"coMap.js","sourceRoot":"","sources":["../../../src/coValues/coMap.ts"],"names":[],"mappings":"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"}
@@ -12,16 +12,33 @@ export class RawCoMapView {
12
12
  this.latest = {};
13
13
  this.latestTxMadeAt = 0;
14
14
  this.options = options;
15
+ this.cachedOps = options?.cachedOps;
16
+ this.validSortedTransactions = options?.validSortedTransactions;
15
17
  this.processLatestTransactions();
16
18
  }
19
+ /** @internal */
20
+ getValidSortedTransactions() {
21
+ if (this.validSortedTransactions) {
22
+ return this.validSortedTransactions;
23
+ }
24
+ const validSortedTransactions = this.core.getValidSortedTransactions({
25
+ ignorePrivateTransactions: this.options?.ignorePrivateTransactions ?? false,
26
+ });
27
+ this.validSortedTransactions = validSortedTransactions;
28
+ return validSortedTransactions;
29
+ }
30
+ resetCachedValues() {
31
+ this.validSortedTransactions = undefined;
32
+ this.cachedOps = undefined;
33
+ }
17
34
  processLatestTransactions() {
35
+ // Reset all internal state and cached values
18
36
  this.latest = {};
19
37
  this.latestTxMadeAt = 0;
20
- const { core, options, latest } = this;
21
- for (const { txID, changes, madeAt } of core.getValidSortedTransactions({
22
- ignorePrivateTransactions: options?.ignorePrivateTransactions ?? false,
23
- })) {
24
- if (options?.atTime && madeAt > options.atTime) {
38
+ const { latest } = this;
39
+ const atTimeFilter = this.options?.atTime;
40
+ for (const { txID, changes, madeAt } of this.getValidSortedTransactions()) {
41
+ if (atTimeFilter && madeAt > atTimeFilter) {
25
42
  continue;
26
43
  }
27
44
  if (madeAt > this.latestTxMadeAt) {
@@ -48,12 +65,16 @@ export class RawCoMapView {
48
65
  }
49
66
  }
50
67
  }
68
+ revalidateTransactions() {
69
+ this.resetCachedValues();
70
+ this.processLatestTransactions();
71
+ }
51
72
  getOps() {
52
73
  if (this.cachedOps) {
53
74
  return this.cachedOps;
54
75
  }
55
76
  const ops = {};
56
- for (const { txID, changes, madeAt, } of this.core.getValidSortedTransactions(this.options)) {
77
+ for (const { txID, changes, madeAt } of this.getValidSortedTransactions()) {
57
78
  for (let changeIdx = 0; changeIdx < changes.length; changeIdx++) {
58
79
  const change = changes[changeIdx];
59
80
  let entries = ops[change.key];
@@ -89,6 +110,8 @@ export class RawCoMapView {
89
110
  const clone = new RawCoMapView(this.core, {
90
111
  ignorePrivateTransactions: this.options?.ignorePrivateTransactions ?? false,
91
112
  atTime: time,
113
+ cachedOps: this.cachedOps,
114
+ validSortedTransactions: this.validSortedTransactions,
92
115
  });
93
116
  Object.setPrototypeOf(clone, this);
94
117
  return clone;
@@ -99,8 +122,9 @@ export class RawCoMapView {
99
122
  if (key === "constructor") {
100
123
  return undefined;
101
124
  }
102
- if (this.atTimeFilter) {
103
- return this.getOps()[key]?.filter((op) => op.madeAt <= this.atTimeFilter);
125
+ const atTimeFilter = this.options?.atTime;
126
+ if (atTimeFilter) {
127
+ return this.getOps()[key]?.filter((op) => op.madeAt <= atTimeFilter);
104
128
  }
105
129
  else {
106
130
  return this.getOps()[key];
@@ -112,15 +136,11 @@ export class RawCoMapView {
112
136
  * @category 1. Reading */
113
137
  keys() {
114
138
  return Object.keys(this.latest).filter((key) => {
115
- const latest = this.latest[key];
116
- if (!latest) {
117
- return undefined;
139
+ const latestChange = this.latest[key];
140
+ if (!latestChange) {
141
+ return false;
118
142
  }
119
- const includeUntil = this.atTimeFilter;
120
- const lastEntry = includeUntil
121
- ? this.getOps()[key]?.findLast((entry) => entry.madeAt <= includeUntil)
122
- : latest;
123
- if (lastEntry?.change.op === "del") {
143
+ if (latestChange.change.op === "del") {
124
144
  return false;
125
145
  }
126
146
  else {
@@ -134,25 +154,21 @@ export class RawCoMapView {
134
154
  * @category 1. Reading
135
155
  **/
136
156
  get(key) {
137
- const latest = this.latest[key];
138
- if (!latest) {
157
+ const latestChange = this.latest[key];
158
+ if (!latestChange) {
139
159
  return undefined;
140
160
  }
141
- const includeUntil = this.atTimeFilter;
142
- const lastEntry = includeUntil
143
- ? this.timeFilteredOps(key)?.findLast((entry) => entry.madeAt <= includeUntil)
144
- : latest;
145
- if (lastEntry?.change.op === "del") {
161
+ if (latestChange.change.op === "del") {
146
162
  return undefined;
147
163
  }
148
164
  else {
149
- return lastEntry?.change.value;
165
+ return latestChange.change.value;
150
166
  }
151
167
  }
152
168
  /** @category 1. Reading */
153
169
  asObject() {
154
170
  const object = {};
155
- for (const key of this.keys()) {
171
+ for (const key of Object.keys(this.latest)) {
156
172
  const value = this.get(key);
157
173
  if (value !== undefined) {
158
174
  object[key] = value;
@@ -166,28 +182,25 @@ export class RawCoMapView {
166
182
  }
167
183
  /** @category 5. Edit history */
168
184
  nthEditAt(key, n) {
169
- const ops = this.timeFilteredOps(key);
170
- if (!ops || ops.length <= n) {
185
+ const ops = this.getOps()[key];
186
+ const atTimeFilter = this.options?.atTime;
187
+ const entry = ops?.[n];
188
+ if (!entry) {
171
189
  return undefined;
172
190
  }
173
- const entry = ops[n];
174
- if (this.atTimeFilter && entry.madeAt > this.atTimeFilter) {
191
+ if (atTimeFilter && entry.madeAt > atTimeFilter) {
175
192
  return undefined;
176
193
  }
177
- return {
178
- by: accountOrAgentIDfromSessionID(entry.txID.sessionID),
179
- tx: entry.txID,
180
- at: new Date(entry.madeAt),
181
- value: entry.change.op === "del" ? undefined : entry.change.value,
182
- };
194
+ return operationToEditEntry(entry);
183
195
  }
184
196
  /** @category 5. Edit history */
185
197
  lastEditAt(key) {
186
198
  const ops = this.timeFilteredOps(key);
187
- if (!ops || ops.length === 0) {
199
+ const lastEntry = ops?.[ops.length - 1];
200
+ if (!lastEntry) {
188
201
  return undefined;
189
202
  }
190
- return this.nthEditAt(key, ops.length - 1);
203
+ return operationToEditEntry(lastEntry);
191
204
  }
192
205
  /** @category 5. Edit history */
193
206
  *editsAt(key) {
@@ -195,8 +208,8 @@ export class RawCoMapView {
195
208
  if (!ops) {
196
209
  return;
197
210
  }
198
- for (let i = 0; i < ops.length; i++) {
199
- yield this.nthEditAt(key, i);
211
+ for (const entry of ops) {
212
+ yield operationToEditEntry(entry);
200
213
  }
201
214
  }
202
215
  /** @category 3. Subscription */
@@ -224,8 +237,7 @@ export class RawCoMap extends RawCoMapView {
224
237
  value: isCoValue(value) ? value.id : value,
225
238
  },
226
239
  ], privacy);
227
- this.processLatestTransactions();
228
- this.cachedOps = undefined;
240
+ this.revalidateTransactions();
229
241
  }
230
242
  /** Delete the given key (setting it to undefined).
231
243
  *
@@ -242,8 +254,15 @@ export class RawCoMap extends RawCoMapView {
242
254
  key,
243
255
  },
244
256
  ], privacy);
245
- this.processLatestTransactions();
246
- this.cachedOps = undefined;
257
+ this.revalidateTransactions();
247
258
  }
248
259
  }
260
+ export function operationToEditEntry(op) {
261
+ return {
262
+ by: accountOrAgentIDfromSessionID(op.txID.sessionID),
263
+ tx: op.txID,
264
+ at: new Date(op.madeAt),
265
+ value: op.change.op === "del" ? undefined : op.change.value,
266
+ };
267
+ }
249
268
  //# sourceMappingURL=coMap.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"coMap.js","sourceRoot":"","sources":["../../../src/coValues/coMap.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,6BAA6B,EAAE,MAAM,+CAA+C,CAAC;AAC9F,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAuBtD,MAAM,OAAO,YAAY;IA8BvB,gBAAgB;IAChB,YACE,IAAiB,EACjB,OAAiE;QAxBnE,wBAAwB;QACxB,SAAI,GAAG,OAAgB,CAAC;QAexB,gBAAgB;QAChB,iBAAY,GAAY,SAAS,CAAC;QAShC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAgB,CAAC;QAChC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QACjB,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;QACxB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QAEvB,IAAI,CAAC,yBAAyB,EAAE,CAAC;IACnC,CAAC;IAED,yBAAyB;QACvB,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QACjB,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;QAExB,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QAEvC,KAAK,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,IAAI,CAAC,0BAA0B,CAAC;YACtE,yBAAyB,EAAE,OAAO,EAAE,yBAAyB,IAAI,KAAK;SACvE,CAAC,EAAE,CAAC;YACH,IAAI,OAAO,EAAE,MAAM,IAAI,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;gBAC/C,SAAS;YACX,CAAC;YAED,IAAI,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;gBACjC,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC;YAC/B,CAAC;YAED,KAAK,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,CAAC;gBAChE,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAG/B,CAAC;gBACF,IAAI,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC/B,IAAI,CAAC,KAAK,EAAE,CAAC;oBACX,KAAK,GAAG;wBACN,IAAI;wBACJ,MAAM;wBACN,SAAS;wBACT,MAAM;qBACP,CAAC;oBACF,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;gBAC7B,CAAC;qBAAM,IAAI,MAAM,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;oBAClC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;oBAClB,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;oBACtB,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;oBAC5B,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;gBACxB,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAEO,MAAM;QACZ,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,OAAO,IAAI,CAAC,SAAS,CAAC;QACxB,CAAC;QAED,MAAM,GAAG,GAEL,EAAE,CAAC;QAEP,KAAK,MAAM,EACT,IAAI,EACJ,OAAO,EACP,MAAM,GACP,IAAI,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YACxD,KAAK,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,CAAC;gBAChE,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAG/B,CAAC;gBACF,IAAI,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC9B,IAAI,CAAC,OAAO,EAAE,CAAC;oBACb,OAAO,GAAG,EAAE,CAAC;oBACb,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC;gBAC5B,CAAC;gBACD,OAAO,CAAC,IAAI,CAAC;oBACX,IAAI;oBACJ,MAAM;oBACN,SAAS;oBACT,MAAM;iBACP,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;QAErB,OAAO,GAAG,CAAC;IACb,CAAC;IAED,wBAAwB;IACxB,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAY,CAAC;IACvC,CAAC;IAED,wBAAwB;IACxB,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC9B,CAAC;IAED,+BAA+B;IAC/B,MAAM,CAAC,IAAY;QACjB,IAAI,IAAI,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YAChC,OAAO,IAAI,CAAC;QACd,CAAC;aAAM,CAAC;YACN,MAAM,KAAK,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE;gBACxC,yBAAyB,EACvB,IAAI,CAAC,OAAO,EAAE,yBAAyB,IAAI,KAAK;gBAClD,MAAM,EAAE,IAAI;aACb,CAAC,CAAC;YACH,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YACnC,OAAO,KAAa,CAAC;QACvB,CAAC;IACH,CAAC;IAED,gBAAgB;IAChB,eAAe,CACb,GAAM;QAEN,IAAI,GAAG,KAAK,aAAa,EAAE,CAAC;YAC1B,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,MAAM,CAC/B,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,IAAI,IAAI,CAAC,YAAa,CACxC,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IAED;;;8BAG0B;IAC1B,IAAI;QACF,OAAQ,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAS,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE;YACtD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAChC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,OAAO,SAAS,CAAC;YACnB,CAAC;YAED,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;YACvC,MAAM,SAAS,GAAG,YAAY;gBAC5B,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,IAAI,YAAY,CAAC;gBACvE,CAAC,CAAC,MAAO,CAAC;YAEZ,IAAI,SAAS,EAAE,MAAM,CAAC,EAAE,KAAK,KAAK,EAAE,CAAC;gBACnC,OAAO,KAAK,CAAC;YACf,CAAC;iBAAM,CAAC;gBACN,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;QAII;IACJ,GAAG,CAAiC,GAAM;QACxC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAChC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;QACvC,MAAM,SAAS,GAAG,YAAY;YAC5B,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,QAAQ,CACjC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,IAAI,YAAY,CACxC;YACH,CAAC,CAAC,MAAM,CAAC;QAEX,IAAI,SAAS,EAAE,MAAM,CAAC,EAAE,KAAK,KAAK,EAAE,CAAC;YACnC,OAAO,SAAS,CAAC;QACnB,CAAC;aAAM,CAAC;YACN,OAAO,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC;QACjC,CAAC;IACH,CAAC;IAED,2BAA2B;IAC3B,QAAQ;QAGN,MAAM,MAAM,GAEP,EAAE,CAAC;QAER,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;YAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC5B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YACtB,CAAC;QACH,CAAC;QAED,OAAO,MAEN,CAAC;IACJ,CAAC;IAED,2BAA2B;IAC3B,MAAM;QAGJ,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IACzB,CAAC;IAED,gCAAgC;IAChC,SAAS,CACP,GAAM,EACN,CAAS;QAST,MAAM,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;QACtC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YAC5B,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,KAAK,GAAG,GAAG,CAAC,CAAC,CAAE,CAAC;QAEtB,IAAI,IAAI,CAAC,YAAY,IAAI,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;YAC1D,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,OAAO;YACL,EAAE,EAAE,6BAA6B,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;YACvD,EAAE,EAAE,KAAK,CAAC,IAAI;YACd,EAAE,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;YAC1B,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK;SAClE,CAAC;IACJ,CAAC;IAED,gCAAgC;IAChC,UAAU,CACR,GAAM;QASN,MAAM,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;QACtC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7B,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC7C,CAAC;IAED,gCAAgC;IAChC,CAAC,OAAO,CAAiC,GAAM;QAC7C,MAAM,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;QACtC,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,OAAO;QACT,CAAC;QAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACpC,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,CAAE,CAAC;QAChC,CAAC;IACH,CAAC;IAED,gCAAgC;IAChC,SAAS,CAAC,QAA+B;QACvC,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,EAAE;YACrC,QAAQ,CAAC,OAAe,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AAED,yFAAyF;AACzF,MAAM,OAAO,QAMX,SAAQ,YAAyB;IAGjC;;;;;;;QAOI;IACJ,GAAG,CACD,GAAM,EACN,KAAe,EACf,UAAkC,SAAS;QAE3C,IAAI,CAAC,IAAI,CAAC,eAAe,CACvB;YACE;gBACE,EAAE,EAAE,KAAK;gBACT,GAAG;gBACH,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK;aAC3C;SACF,EACD,OAAO,CACR,CAAC;QAEF,IAAI,CAAC,yBAAyB,EAAE,CAAC;QACjC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAED;;;;;;;QAOI;IACJ,MAAM,CACJ,GAAyB,EACzB,UAAkC,SAAS;QAE3C,IAAI,CAAC,IAAI,CAAC,eAAe,CACvB;YACE;gBACE,EAAE,EAAE,KAAK;gBACT,GAAG;aACJ;SACF,EACD,OAAO,CACR,CAAC;QAEF,IAAI,CAAC,yBAAyB,EAAE,CAAC;QACjC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;CACF"}
1
+ {"version":3,"file":"coMap.js","sourceRoot":"","sources":["../../../src/coValues/coMap.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -19,7 +19,7 @@
19
19
  },
20
20
  "type": "module",
21
21
  "license": "MIT",
22
- "version": "0.8.36",
22
+ "version": "0.8.37",
23
23
  "devDependencies": {
24
24
  "@types/jest": "^29.5.3",
25
25
  "typescript": "^5.3.3",
@@ -1,5 +1,5 @@
1
1
  import { CoID, RawCoValue } from "../coValue.js";
2
- import { CoValueCore } from "../coValueCore.js";
2
+ import { CoValueCore, DecryptedTransaction } from "../coValueCore.js";
3
3
  import { AgentID, TransactionID } from "../ids.js";
4
4
  import { JsonObject, JsonValue } from "../jsonValue.js";
5
5
  import { accountOrAgentIDfromSessionID } from "../typeUtils/accountOrAgentIDfromSessionID.js";
@@ -49,6 +49,9 @@ export class RawCoMapView<
49
49
  cachedOps?: {
50
50
  [Key in keyof Shape & string]?: MapOp<Key, Shape[Key]>[];
51
51
  };
52
+ /** @internal */
53
+ validSortedTransactions?: DecryptedTransaction[];
54
+
52
55
  /** @internal */
53
56
  options?: { ignorePrivateTransactions: boolean; atTime?: number };
54
57
  /** @internal */
@@ -59,27 +62,58 @@ export class RawCoMapView<
59
62
  /** @internal */
60
63
  constructor(
61
64
  core: CoValueCore,
62
- options?: { ignorePrivateTransactions: boolean; atTime?: number },
65
+ options?: {
66
+ ignorePrivateTransactions: boolean;
67
+ atTime?: number;
68
+ validSortedTransactions?: DecryptedTransaction[];
69
+ cachedOps?: {
70
+ [Key in keyof Shape & string]?: MapOp<Key, Shape[Key]>[];
71
+ };
72
+ },
63
73
  ) {
64
74
  this.id = core.id as CoID<this>;
65
75
  this.core = core;
66
76
  this.latest = {};
67
77
  this.latestTxMadeAt = 0;
68
78
  this.options = options;
79
+ this.cachedOps = options?.cachedOps;
80
+ this.validSortedTransactions = options?.validSortedTransactions;
69
81
 
70
82
  this.processLatestTransactions();
71
83
  }
72
84
 
73
- processLatestTransactions() {
85
+ /** @internal */
86
+ private getValidSortedTransactions() {
87
+ if (this.validSortedTransactions) {
88
+ return this.validSortedTransactions;
89
+ }
90
+
91
+ const validSortedTransactions = this.core.getValidSortedTransactions({
92
+ ignorePrivateTransactions:
93
+ this.options?.ignorePrivateTransactions ?? false,
94
+ });
95
+
96
+ this.validSortedTransactions = validSortedTransactions;
97
+
98
+ return validSortedTransactions;
99
+ }
100
+
101
+ private resetCachedValues() {
102
+ this.validSortedTransactions = undefined;
103
+ this.cachedOps = undefined;
104
+ }
105
+
106
+ private processLatestTransactions() {
107
+ // Reset all internal state and cached values
74
108
  this.latest = {};
75
109
  this.latestTxMadeAt = 0;
76
110
 
77
- const { core, options, latest } = this;
111
+ const { latest } = this;
112
+
113
+ const atTimeFilter = this.options?.atTime;
78
114
 
79
- for (const { txID, changes, madeAt } of core.getValidSortedTransactions({
80
- ignorePrivateTransactions: options?.ignorePrivateTransactions ?? false,
81
- })) {
82
- if (options?.atTime && madeAt > options.atTime) {
115
+ for (const { txID, changes, madeAt } of this.getValidSortedTransactions()) {
116
+ if (atTimeFilter && madeAt > atTimeFilter) {
83
117
  continue;
84
118
  }
85
119
 
@@ -111,6 +145,11 @@ export class RawCoMapView<
111
145
  }
112
146
  }
113
147
 
148
+ revalidateTransactions() {
149
+ this.resetCachedValues();
150
+ this.processLatestTransactions();
151
+ }
152
+
114
153
  private getOps() {
115
154
  if (this.cachedOps) {
116
155
  return this.cachedOps;
@@ -120,11 +159,7 @@ export class RawCoMapView<
120
159
  [Key in keyof Shape & string]?: MapOp<Key, Shape[Key]>[];
121
160
  } = {};
122
161
 
123
- for (const {
124
- txID,
125
- changes,
126
- madeAt,
127
- } of this.core.getValidSortedTransactions(this.options)) {
162
+ for (const { txID, changes, madeAt } of this.getValidSortedTransactions()) {
128
163
  for (let changeIdx = 0; changeIdx < changes.length; changeIdx++) {
129
164
  const change = changes[changeIdx] as MapOpPayload<
130
165
  keyof Shape & string,
@@ -168,6 +203,8 @@ export class RawCoMapView<
168
203
  ignorePrivateTransactions:
169
204
  this.options?.ignorePrivateTransactions ?? false,
170
205
  atTime: time,
206
+ cachedOps: this.cachedOps,
207
+ validSortedTransactions: this.validSortedTransactions,
171
208
  });
172
209
  Object.setPrototypeOf(clone, this);
173
210
  return clone as this;
@@ -182,10 +219,10 @@ export class RawCoMapView<
182
219
  return undefined;
183
220
  }
184
221
 
185
- if (this.atTimeFilter) {
186
- return this.getOps()[key]?.filter(
187
- (op) => op.madeAt <= this.atTimeFilter!,
188
- );
222
+ const atTimeFilter = this.options?.atTime;
223
+
224
+ if (atTimeFilter) {
225
+ return this.getOps()[key]?.filter((op) => op.madeAt <= atTimeFilter);
189
226
  } else {
190
227
  return this.getOps()[key];
191
228
  }
@@ -197,17 +234,13 @@ export class RawCoMapView<
197
234
  * @category 1. Reading */
198
235
  keys<K extends keyof Shape & string = keyof Shape & string>(): K[] {
199
236
  return (Object.keys(this.latest) as K[]).filter((key) => {
200
- const latest = this.latest[key];
201
- if (!latest) {
202
- return undefined;
203
- }
237
+ const latestChange = this.latest[key];
204
238
 
205
- const includeUntil = this.atTimeFilter;
206
- const lastEntry = includeUntil
207
- ? this.getOps()[key]?.findLast((entry) => entry.madeAt <= includeUntil)
208
- : latest!;
239
+ if (!latestChange) {
240
+ return false;
241
+ }
209
242
 
210
- if (lastEntry?.change.op === "del") {
243
+ if (latestChange.change.op === "del") {
211
244
  return false;
212
245
  } else {
213
246
  return true;
@@ -221,22 +254,15 @@ export class RawCoMapView<
221
254
  * @category 1. Reading
222
255
  **/
223
256
  get<K extends keyof Shape & string>(key: K): Shape[K] | undefined {
224
- const latest = this.latest[key];
225
- if (!latest) {
257
+ const latestChange = this.latest[key];
258
+ if (!latestChange) {
226
259
  return undefined;
227
260
  }
228
261
 
229
- const includeUntil = this.atTimeFilter;
230
- const lastEntry = includeUntil
231
- ? this.timeFilteredOps(key)?.findLast(
232
- (entry) => entry.madeAt <= includeUntil,
233
- )
234
- : latest;
235
-
236
- if (lastEntry?.change.op === "del") {
262
+ if (latestChange.change.op === "del") {
237
263
  return undefined;
238
264
  } else {
239
- return lastEntry?.change.value;
265
+ return latestChange.change.value as Shape[K];
240
266
  }
241
267
  }
242
268
 
@@ -248,7 +274,7 @@ export class RawCoMapView<
248
274
  [K in keyof Shape & string]: Shape[K];
249
275
  }> = {};
250
276
 
251
- for (const key of this.keys()) {
277
+ for (const key of Object.keys(this.latest) as (keyof Shape & string)[]) {
252
278
  const value = this.get(key);
253
279
  if (value !== undefined) {
254
280
  object[key] = value;
@@ -268,34 +294,21 @@ export class RawCoMapView<
268
294
  }
269
295
 
270
296
  /** @category 5. Edit history */
271
- nthEditAt<K extends keyof Shape & string>(
272
- key: K,
273
- n: number,
274
- ):
275
- | {
276
- by: RawAccountID | AgentID;
277
- tx: TransactionID;
278
- at: Date;
279
- value?: Shape[K];
280
- }
281
- | undefined {
282
- const ops = this.timeFilteredOps(key);
283
- if (!ops || ops.length <= n) {
297
+ nthEditAt<K extends keyof Shape & string>(key: K, n: number) {
298
+ const ops = this.getOps()[key];
299
+
300
+ const atTimeFilter = this.options?.atTime;
301
+ const entry = ops?.[n];
302
+
303
+ if (!entry) {
284
304
  return undefined;
285
305
  }
286
306
 
287
- const entry = ops[n]!;
288
-
289
- if (this.atTimeFilter && entry.madeAt > this.atTimeFilter) {
307
+ if (atTimeFilter && entry.madeAt > atTimeFilter) {
290
308
  return undefined;
291
309
  }
292
310
 
293
- return {
294
- by: accountOrAgentIDfromSessionID(entry.txID.sessionID),
295
- tx: entry.txID,
296
- at: new Date(entry.madeAt),
297
- value: entry.change.op === "del" ? undefined : entry.change.value,
298
- };
311
+ return operationToEditEntry(entry);
299
312
  }
300
313
 
301
314
  /** @category 5. Edit history */
@@ -310,10 +323,13 @@ export class RawCoMapView<
310
323
  }
311
324
  | undefined {
312
325
  const ops = this.timeFilteredOps(key);
313
- if (!ops || ops.length === 0) {
326
+ const lastEntry = ops?.[ops.length - 1];
327
+
328
+ if (!lastEntry) {
314
329
  return undefined;
315
330
  }
316
- return this.nthEditAt(key, ops.length - 1);
331
+
332
+ return operationToEditEntry(lastEntry);
317
333
  }
318
334
 
319
335
  /** @category 5. Edit history */
@@ -323,8 +339,8 @@ export class RawCoMapView<
323
339
  return;
324
340
  }
325
341
 
326
- for (let i = 0; i < ops.length; i++) {
327
- yield this.nthEditAt(key, i)!;
342
+ for (const entry of ops) {
343
+ yield operationToEditEntry(entry);
328
344
  }
329
345
  }
330
346
 
@@ -370,8 +386,7 @@ export class RawCoMap<
370
386
  privacy,
371
387
  );
372
388
 
373
- this.processLatestTransactions();
374
- this.cachedOps = undefined;
389
+ this.revalidateTransactions();
375
390
  }
376
391
 
377
392
  /** Delete the given key (setting it to undefined).
@@ -396,7 +411,18 @@ export class RawCoMap<
396
411
  privacy,
397
412
  );
398
413
 
399
- this.processLatestTransactions();
400
- this.cachedOps = undefined;
414
+ this.revalidateTransactions();
401
415
  }
402
416
  }
417
+
418
+ export function operationToEditEntry<
419
+ K extends string,
420
+ V extends JsonValue | undefined,
421
+ >(op: MapOp<K, V>) {
422
+ return {
423
+ by: accountOrAgentIDfromSessionID(op.txID.sessionID),
424
+ tx: op.txID,
425
+ at: new Date(op.madeAt),
426
+ value: op.change.op === "del" ? undefined : op.change.value,
427
+ };
428
+ }
@@ -1,5 +1,6 @@
1
1
  import { expect, test } from "vitest";
2
2
  import { expectMap } from "../coValue.js";
3
+ import { operationToEditEntry } from "../coValues/coMap.js";
3
4
  import { WasmCrypto } from "../crypto/WasmCrypto.js";
4
5
  import { LocalNode } from "../localNode.js";
5
6
  import { accountOrAgentIDfromSessionID } from "../typeUtils/accountOrAgentIDfromSessionID.js";
@@ -82,6 +83,29 @@ test("Can get CoMap entry values at different points in time", () => {
82
83
  expect(content.atTime(beforeA).get("hello")).toEqual(undefined);
83
84
  expect(content.atTime(beforeB).get("hello")).toEqual("A");
84
85
  expect(content.atTime(beforeC).get("hello")).toEqual("B");
86
+
87
+ const ops = content.timeFilteredOps("hello");
88
+
89
+ expect(content.atTime(beforeC).lastEditAt("hello")).toEqual(
90
+ operationToEditEntry(ops![1]!),
91
+ );
92
+ expect(content.atTime(beforeC).nthEditAt("hello", 0)).toEqual(
93
+ operationToEditEntry(ops![0]!),
94
+ );
95
+ expect(content.atTime(beforeC).nthEditAt("hello", 2)).toEqual(undefined);
96
+
97
+ expect([...content.atTime(beforeC).editsAt("hello")]).toEqual([
98
+ operationToEditEntry(ops![0]!),
99
+ operationToEditEntry(ops![1]!),
100
+ ]);
101
+
102
+ expect(content.atTime(beforeB).asObject()).toEqual({
103
+ hello: "A",
104
+ });
105
+
106
+ expect(content.atTime(beforeC).asObject()).toEqual({
107
+ hello: "B",
108
+ });
85
109
  });
86
110
 
87
111
  test("Can get all historic values of key in CoMap", () => {