@verdant-web/store 3.0.0-next.0 → 3.0.0

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 (129) hide show
  1. package/dist/bundle/index.js +1 -1
  2. package/dist/bundle/index.js.map +4 -4
  3. package/dist/cjs/DocumentManager.d.ts +5 -6
  4. package/dist/cjs/DocumentManager.js +2 -2
  5. package/dist/cjs/DocumentManager.js.map +1 -1
  6. package/dist/cjs/client/Client.d.ts +3 -2
  7. package/dist/cjs/client/Client.js +1 -1
  8. package/dist/cjs/client/Client.js.map +1 -1
  9. package/dist/cjs/entities/Entity.d.ts +106 -171
  10. package/dist/cjs/entities/Entity.js +558 -383
  11. package/dist/cjs/entities/Entity.js.map +1 -1
  12. package/dist/cjs/entities/Entity.test.js.map +1 -0
  13. package/dist/cjs/entities/{2/EntityCache.d.ts → EntityCache.d.ts} +1 -1
  14. package/dist/cjs/entities/{2/EntityCache.js → EntityCache.js} +1 -1
  15. package/dist/cjs/entities/EntityCache.js.map +1 -0
  16. package/dist/{esm/entities/2 → cjs/entities}/EntityMetadata.d.ts +1 -1
  17. package/dist/cjs/entities/EntityMetadata.js.map +1 -0
  18. package/dist/cjs/entities/EntityStore.d.ts +63 -68
  19. package/dist/cjs/entities/EntityStore.js +296 -424
  20. package/dist/cjs/entities/EntityStore.js.map +1 -1
  21. package/dist/{esm/entities/2 → cjs/entities}/OperationBatcher.d.ts +2 -2
  22. package/dist/cjs/entities/OperationBatcher.js.map +1 -0
  23. package/dist/cjs/entities/{2/types.js.map → types.js.map} +1 -1
  24. package/dist/cjs/index.d.ts +2 -2
  25. package/dist/cjs/index.js +1 -1
  26. package/dist/cjs/index.js.map +1 -1
  27. package/dist/cjs/queries/BaseQuery.js +1 -1
  28. package/dist/cjs/queries/BaseQuery.js.map +1 -1
  29. package/dist/cjs/queries/CollectionQueries.d.ts +4 -2
  30. package/dist/cjs/queries/utils.js +1 -1
  31. package/dist/cjs/queries/utils.js.map +1 -1
  32. package/dist/esm/DocumentManager.d.ts +5 -6
  33. package/dist/esm/DocumentManager.js +2 -2
  34. package/dist/esm/DocumentManager.js.map +1 -1
  35. package/dist/esm/client/Client.d.ts +3 -2
  36. package/dist/esm/client/Client.js +1 -1
  37. package/dist/esm/client/Client.js.map +1 -1
  38. package/dist/esm/entities/Entity.d.ts +106 -171
  39. package/dist/esm/entities/Entity.js +559 -383
  40. package/dist/esm/entities/Entity.js.map +1 -1
  41. package/dist/esm/entities/Entity.test.js.map +1 -0
  42. package/dist/esm/entities/{2/EntityCache.d.ts → EntityCache.d.ts} +1 -1
  43. package/dist/esm/entities/{2/EntityCache.js → EntityCache.js} +1 -1
  44. package/dist/esm/entities/EntityCache.js.map +1 -0
  45. package/dist/{cjs/entities/2 → esm/entities}/EntityMetadata.d.ts +1 -1
  46. package/dist/esm/entities/EntityMetadata.js.map +1 -0
  47. package/dist/esm/entities/EntityStore.d.ts +63 -68
  48. package/dist/esm/entities/EntityStore.js +297 -425
  49. package/dist/esm/entities/EntityStore.js.map +1 -1
  50. package/dist/{cjs/entities/2 → esm/entities}/OperationBatcher.d.ts +2 -2
  51. package/dist/esm/entities/OperationBatcher.js.map +1 -0
  52. package/dist/esm/entities/{2/types.js.map → types.js.map} +1 -1
  53. package/dist/esm/index.d.ts +2 -2
  54. package/dist/esm/index.js +1 -1
  55. package/dist/esm/index.js.map +1 -1
  56. package/dist/esm/queries/BaseQuery.js +1 -1
  57. package/dist/esm/queries/BaseQuery.js.map +1 -1
  58. package/dist/esm/queries/CollectionQueries.d.ts +4 -2
  59. package/dist/esm/queries/utils.js +1 -1
  60. package/dist/esm/queries/utils.js.map +1 -1
  61. package/dist/tsconfig-cjs.tsbuildinfo +1 -1
  62. package/dist/tsconfig.tsbuildinfo +1 -1
  63. package/package.json +2 -2
  64. package/src/DocumentManager.ts +7 -3
  65. package/src/__tests__/batching.test.ts +1 -1
  66. package/src/client/Client.ts +1 -1
  67. package/src/entities/{2/Entity.test.ts → Entity.test.ts} +2 -2
  68. package/src/entities/{2/Entity.ts → Entity.ts} +4 -4
  69. package/src/entities/{2/EntityCache.ts → EntityCache.ts} +1 -1
  70. package/src/entities/{2/EntityMetadata.ts → EntityMetadata.ts} +1 -1
  71. package/src/entities/{2/EntityStore.ts → EntityStore.ts} +12 -8
  72. package/src/entities/{2/OperationBatcher.ts → OperationBatcher.ts} +2 -2
  73. package/src/index.ts +2 -2
  74. package/src/queries/BaseQuery.ts +1 -1
  75. package/src/queries/CollectionQueries.ts +2 -2
  76. package/src/queries/utils.ts +1 -1
  77. package/dist/cjs/entities/2/Entity.d.ts +0 -148
  78. package/dist/cjs/entities/2/Entity.js +0 -711
  79. package/dist/cjs/entities/2/Entity.js.map +0 -1
  80. package/dist/cjs/entities/2/Entity.test.js.map +0 -1
  81. package/dist/cjs/entities/2/EntityCache.js.map +0 -1
  82. package/dist/cjs/entities/2/EntityMetadata.js.map +0 -1
  83. package/dist/cjs/entities/2/EntityStore.d.ts +0 -78
  84. package/dist/cjs/entities/2/EntityStore.js +0 -352
  85. package/dist/cjs/entities/2/EntityStore.js.map +0 -1
  86. package/dist/cjs/entities/2/OperationBatcher.js.map +0 -1
  87. package/dist/cjs/entities/DocumentFamiliyCache.d.ts +0 -96
  88. package/dist/cjs/entities/DocumentFamiliyCache.js +0 -287
  89. package/dist/cjs/entities/DocumentFamiliyCache.js.map +0 -1
  90. package/dist/cjs/entities/FakeWeakRef.d.ts +0 -11
  91. package/dist/cjs/entities/FakeWeakRef.js +0 -19
  92. package/dist/cjs/entities/FakeWeakRef.js.map +0 -1
  93. package/dist/cjs/indexes.d.ts +0 -3
  94. package/dist/cjs/indexes.js +0 -20
  95. package/dist/cjs/indexes.js.map +0 -1
  96. package/dist/esm/entities/2/Entity.d.ts +0 -148
  97. package/dist/esm/entities/2/Entity.js +0 -707
  98. package/dist/esm/entities/2/Entity.js.map +0 -1
  99. package/dist/esm/entities/2/Entity.test.js.map +0 -1
  100. package/dist/esm/entities/2/EntityCache.js.map +0 -1
  101. package/dist/esm/entities/2/EntityMetadata.js.map +0 -1
  102. package/dist/esm/entities/2/EntityStore.d.ts +0 -78
  103. package/dist/esm/entities/2/EntityStore.js +0 -348
  104. package/dist/esm/entities/2/EntityStore.js.map +0 -1
  105. package/dist/esm/entities/2/OperationBatcher.js.map +0 -1
  106. package/dist/esm/entities/DocumentFamiliyCache.d.ts +0 -96
  107. package/dist/esm/entities/DocumentFamiliyCache.js +0 -283
  108. package/dist/esm/entities/DocumentFamiliyCache.js.map +0 -1
  109. package/dist/esm/entities/FakeWeakRef.d.ts +0 -11
  110. package/dist/esm/entities/FakeWeakRef.js +0 -15
  111. package/dist/esm/entities/FakeWeakRef.js.map +0 -1
  112. package/dist/esm/indexes.d.ts +0 -3
  113. package/dist/esm/indexes.js +0 -15
  114. package/dist/esm/indexes.js.map +0 -1
  115. package/src/entities/2/NOTES.md +0 -22
  116. package/src/entities/design.tldr +0 -808
  117. /package/dist/cjs/entities/{2/Entity.test.d.ts → Entity.test.d.ts} +0 -0
  118. /package/dist/cjs/entities/{2/Entity.test.js → Entity.test.js} +0 -0
  119. /package/dist/cjs/entities/{2/EntityMetadata.js → EntityMetadata.js} +0 -0
  120. /package/dist/cjs/entities/{2/OperationBatcher.js → OperationBatcher.js} +0 -0
  121. /package/dist/cjs/entities/{2/types.d.ts → types.d.ts} +0 -0
  122. /package/dist/cjs/entities/{2/types.js → types.js} +0 -0
  123. /package/dist/esm/entities/{2/Entity.test.d.ts → Entity.test.d.ts} +0 -0
  124. /package/dist/esm/entities/{2/Entity.test.js → Entity.test.js} +0 -0
  125. /package/dist/esm/entities/{2/EntityMetadata.js → EntityMetadata.js} +0 -0
  126. /package/dist/esm/entities/{2/OperationBatcher.js → OperationBatcher.js} +0 -0
  127. /package/dist/esm/entities/{2/types.d.ts → types.d.ts} +0 -0
  128. /package/dist/esm/entities/{2/types.js → types.js} +0 -0
  129. /package/src/entities/{2/types.ts → types.ts} +0 -0
@@ -1,283 +0,0 @@
1
- import { applyPatch, assignOid, cloneDeep, compareTimestampSchemaVersions, EventSubscriber, } from '@verdant-web/common';
2
- import { Entity, refreshEntity } from './Entity.js';
3
- import { Resolvable } from '../utils/Resolvable.js';
4
- /**
5
- * Local operations: operations on this client that haven't
6
- * yet been synced and are only applied in-memory. These are
7
- * always applied after all other operations, they are conceptually
8
- * 'in the future' as they are not yet synced or stored.
9
- *
10
- * Confirmed operations: operations that have been synced and
11
- * stored in the database.
12
- *
13
- * Unconfirmed operations: operations received from sync which
14
- * have not been stored yet and are only in memory. These exist
15
- * because new incoming operations are synchronously applied to
16
- * cached entities while storage goes on async.
17
- */
18
- export class DocumentFamilyCache extends EventSubscriber {
19
- get initializedPromise() {
20
- return this._initialized.promise;
21
- }
22
- constructor({ oid, store, context, }) {
23
- super();
24
- this.entities = new Map();
25
- this._initialized = new Resolvable();
26
- this.setInitialized = () => {
27
- this._initialized.resolve(true);
28
- };
29
- this.insertLocalOperations = (operations) => {
30
- const oidSet = new Set();
31
- for (const operation of operations) {
32
- const { oid } = operation;
33
- oidSet.add(oid);
34
- const existingOperations = this.localOperationsMap.get(oid) || [];
35
- existingOperations.push(operation);
36
- this.localOperationsMap.set(oid, existingOperations);
37
- }
38
- for (const oid of oidSet) {
39
- const entityRef = this.entities.get(oid);
40
- const entity = entityRef === null || entityRef === void 0 ? void 0 : entityRef.deref();
41
- if (entity) {
42
- refreshEntity(entity, { isLocal: true });
43
- this.emit(`change:${oid}`);
44
- this.emit('change:*', oid);
45
- }
46
- }
47
- };
48
- this.insertOperations = (operations, info) => {
49
- var _a;
50
- for (const operation of operations) {
51
- const { oid } = operation;
52
- (_a = info.affectedOids) === null || _a === void 0 ? void 0 : _a.add(oid);
53
- const existingOperations = this.operationsMap.get(oid) || [];
54
- // insert in order of timestamp
55
- const index = existingOperations.findIndex((op) => op.timestamp >= operation.timestamp);
56
- // ensure the operation doesn't already exist in this position
57
- if (index !== -1) {
58
- if (existingOperations[index].timestamp === operation.timestamp) {
59
- continue;
60
- }
61
- existingOperations.splice(index, 0, operation);
62
- }
63
- else {
64
- existingOperations.push(operation);
65
- }
66
- this.operationsMap.set(oid, existingOperations);
67
- // FIXME: seems inefficient
68
- const unconfirmedOperations = this.localOperationsMap.get(oid);
69
- if (unconfirmedOperations) {
70
- this.localOperationsMap.set(oid, unconfirmedOperations.filter((op) => op.timestamp !== operation.timestamp));
71
- }
72
- }
73
- };
74
- /**
75
- * Insert new baselines for objects in this family.
76
- * Automatically drops operations before the new baseline.
77
- */
78
- this.insertBaselines = (baselines, { affectedOids, }) => {
79
- var _a;
80
- for (const baseline of baselines) {
81
- const { oid } = baseline;
82
- // opt out if our baseline is newer.
83
- const existing = this.baselinesMap.get(oid);
84
- if ((existing === null || existing === void 0 ? void 0 : existing.timestamp) && existing.timestamp >= baseline.timestamp) {
85
- continue;
86
- }
87
- affectedOids === null || affectedOids === void 0 ? void 0 : affectedOids.add(oid);
88
- this.baselinesMap.set(oid, baseline);
89
- // drop operations before the baseline
90
- const ops = this.operationsMap.get(oid) || [];
91
- while (((_a = ops[0]) === null || _a === void 0 ? void 0 : _a.timestamp) < baseline.timestamp) {
92
- ops.shift();
93
- }
94
- }
95
- };
96
- this.addData = ({ operations, baselines, reset, isLocal, }) => {
97
- if (reset) {
98
- this.operationsMap.clear();
99
- this.baselinesMap.clear();
100
- }
101
- const info = {
102
- isLocal: isLocal || false,
103
- affectedOids: new Set(),
104
- };
105
- this.insertBaselines(baselines, info);
106
- // for reset scenario, don't immediately update entities;
107
- // we will update all of them in one go.
108
- this.insertOperations(operations, info);
109
- if (reset) {
110
- for (const entityRef of this.entities.values()) {
111
- const entity = entityRef.deref();
112
- if (entity) {
113
- refreshEntity(entity, info);
114
- }
115
- }
116
- }
117
- else {
118
- for (const oid of info.affectedOids) {
119
- const entityRef = this.entities.get(oid);
120
- const entity = entityRef === null || entityRef === void 0 ? void 0 : entityRef.deref();
121
- if (entity) {
122
- refreshEntity(entity, info);
123
- this.emit(`change:${oid}`);
124
- this.emit('change:*', oid);
125
- }
126
- }
127
- }
128
- };
129
- this.applyOperations = (view, deleted, operations, after) => {
130
- let futureSeen = undefined;
131
- const now = this.storeTools.now;
132
- for (const operation of operations) {
133
- if (after && operation.timestamp <= after) {
134
- continue;
135
- }
136
- if (compareTimestampSchemaVersions(operation.timestamp, now) > 0) {
137
- // we don't apply patches from future versions
138
- futureSeen = operation.timestamp;
139
- continue;
140
- }
141
- if (operation.data.op === 'delete') {
142
- deleted = true;
143
- }
144
- else {
145
- view = applyPatch(view, operation.data);
146
- if (operation.data.op === 'initialize') {
147
- deleted = false;
148
- }
149
- }
150
- }
151
- if (futureSeen) {
152
- this.context.globalEvents.emit('futureSeen', futureSeen);
153
- }
154
- return { view, deleted, empty: !view && !operations.length };
155
- };
156
- this.computeView = (oid) => {
157
- if (this.baselinesMap.size === 0 &&
158
- this.operationsMap.size === 0 &&
159
- this.localOperationsMap.size === 0) {
160
- this.context.log('debug', `Entity ${oid} accessed with no data at all`);
161
- return { view: null, deleted: true, lastTimestamp: null };
162
- }
163
- const confirmed = this.computeConfirmedView(oid);
164
- const unconfirmedOperations = this.localOperationsMap.get(oid) || [];
165
- if (confirmed.empty && !unconfirmedOperations.length) {
166
- this.context.log('debug', `Entity ${oid} accessed with no local data at all`);
167
- return { view: null, deleted: true, lastTimestamp: null };
168
- }
169
- let { view, deleted } = this.applyOperations(confirmed.view, confirmed.deleted, unconfirmedOperations);
170
- if (view) {
171
- assignOid(view, oid);
172
- }
173
- return { view, deleted, lastTimestamp: this.getLastTimestamp(oid) };
174
- };
175
- this.computeConfirmedView = (oid) => {
176
- const baseline = this.baselinesMap.get(oid);
177
- const operations = this.operationsMap.get(oid) || [];
178
- const snapshot = cloneDeep((baseline === null || baseline === void 0 ? void 0 : baseline.snapshot) || undefined);
179
- const result = this.applyOperations(snapshot, !snapshot, operations, baseline === null || baseline === void 0 ? void 0 : baseline.timestamp);
180
- if (result.view) {
181
- assignOid(result.view, oid);
182
- }
183
- if (result.empty) {
184
- this.context.log('debug', `Entity ${oid} accessed with no confirmed data`);
185
- }
186
- return result;
187
- };
188
- this.getLastTimestamp = (oid) => {
189
- var _a, _b, _c;
190
- let operations = this.localOperationsMap.get(oid);
191
- if (!(operations === null || operations === void 0 ? void 0 : operations.length)) {
192
- operations = this.operationsMap.get(oid) || [];
193
- }
194
- let logicalTimestamp = null;
195
- if (operations.length) {
196
- logicalTimestamp = (_a = operations[operations.length - 1]) === null || _a === void 0 ? void 0 : _a.timestamp;
197
- }
198
- else {
199
- logicalTimestamp = (_c = (_b = this.baselinesMap.get(oid)) === null || _b === void 0 ? void 0 : _b.timestamp) !== null && _c !== void 0 ? _c : null;
200
- }
201
- if (!logicalTimestamp)
202
- return null;
203
- return this.storeTools.time.getWallClockTime(logicalTimestamp);
204
- };
205
- this.getEntity = ({ oid, fieldSchema: schema, parent, readonlyKeys, fieldKey, }) => {
206
- var _a;
207
- let entityRef = this.entities.get(oid);
208
- let entity = entityRef === null || entityRef === void 0 ? void 0 : entityRef.deref();
209
- if (!entity) {
210
- entity = new Entity({
211
- oid,
212
- cache: this,
213
- fieldSchema: schema,
214
- store: this.storeTools,
215
- parent,
216
- readonlyKeys,
217
- fieldPath: fieldKey
218
- ? [...((_a = parent === null || parent === void 0 ? void 0 : parent.fieldPath) !== null && _a !== void 0 ? _a : []), fieldKey]
219
- : undefined,
220
- });
221
- // immediately add to cache and queue a removal if nobody subscribed
222
- this.entities.set(oid, this.context.weakRef(entity));
223
- }
224
- return entity;
225
- };
226
- this.hasOid = (oid) => {
227
- return this.operationsMap.has(oid) || this.baselinesMap.has(oid);
228
- };
229
- this.dispose = () => {
230
- this.entities.forEach((entity) => { var _a; return (_a = entity.deref()) === null || _a === void 0 ? void 0 : _a.dispose(); });
231
- this.entities.clear();
232
- };
233
- this.reset = ({ operations, baselines, dropExistingUnconfirmed: dropUnconfirmed = false, unconfirmedOperations, dropAll, }) => {
234
- this.context.log('debug', `Resetting cache for ${this.oid} with ${operations.length} ops and ${baselines.length} baselines, dropUnconfirmed=${dropUnconfirmed}`);
235
- const info = { isLocal: false, affectedOids: new Set() };
236
- // NOTE: not clearing these maps... there are even more
237
- // race conditions where we begin opening a cache, queue up a
238
- // reset, then receive incoming operations before the reset
239
- // actually hits this function, so those incoming ops are
240
- // dropped.
241
- // FIXME: include this in a future refactor of this
242
- // whole system.
243
- if (dropAll)
244
- this.baselinesMap.clear();
245
- this.insertBaselines(baselines, info);
246
- if (dropAll)
247
- this.operationsMap.clear();
248
- this.insertOperations(operations, info);
249
- if (unconfirmedOperations || dropUnconfirmed) {
250
- this.localOperationsMap.clear();
251
- if (unconfirmedOperations) {
252
- this.insertLocalOperations(unconfirmedOperations);
253
- }
254
- }
255
- for (const oid of this.entities.keys()) {
256
- const entityRef = this.entities.get(oid);
257
- const entity = entityRef === null || entityRef === void 0 ? void 0 : entityRef.deref();
258
- if (entity) {
259
- refreshEntity(entity, info);
260
- this.emit(`change:${oid}`);
261
- this.emit('change:*', oid);
262
- }
263
- }
264
- };
265
- this.oid = oid;
266
- this.operationsMap = new Map();
267
- this.localOperationsMap = new Map();
268
- this.baselinesMap = new Map();
269
- this.storeTools = {
270
- addLocalOperations: store.addLocalOperations,
271
- patchCreator: store.meta.patchCreator,
272
- addFile: store.files.add,
273
- getFile: store.files.get,
274
- time: store.meta.time,
275
- now: store.meta.now,
276
- };
277
- this.context = context;
278
- }
279
- get weakRef() {
280
- return this.context.weakRef;
281
- }
282
- }
283
- //# sourceMappingURL=DocumentFamiliyCache.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DocumentFamiliyCache.js","sourceRoot":"","sources":["../../../src/entities/DocumentFamiliyCache.ts"],"names":[],"mappings":"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"}
@@ -1,11 +0,0 @@
1
- /**
2
- * This module exists since I'm a little anxious about using WeakRef in production
3
- * and want to be able to roll it back quickly to debug issues. Basically by adding
4
- * import { WeakRef } from 'FakeWeakRef' to the top of the file, we can switch back
5
- * to using a simple object reference.
6
- */
7
- export declare class WeakRef<T> {
8
- constructor(value: T);
9
- value: T;
10
- deref(): T | undefined;
11
- }
@@ -1,15 +0,0 @@
1
- /**
2
- * This module exists since I'm a little anxious about using WeakRef in production
3
- * and want to be able to roll it back quickly to debug issues. Basically by adding
4
- * import { WeakRef } from 'FakeWeakRef' to the top of the file, we can switch back
5
- * to using a simple object reference.
6
- */
7
- export class WeakRef {
8
- constructor(value) {
9
- this.value = value;
10
- }
11
- deref() {
12
- return this.value;
13
- }
14
- }
15
- //# sourceMappingURL=FakeWeakRef.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"FakeWeakRef.js","sourceRoot":"","sources":["../../../src/entities/FakeWeakRef.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,OAAO,OAAO;IACnB,YAAY,KAAQ;QACnB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACpB,CAAC;IAID,KAAK;QACJ,OAAO,IAAI,CAAC,KAAK,CAAC;IACnB,CAAC;CACD"}
@@ -1,3 +0,0 @@
1
- import { StorageCollectionSchema } from '@verdant-web/common';
2
- export declare function computeSynthetics(schema: StorageCollectionSchema, obj: any): Record<string, any>;
3
- export declare function computeCompoundIndices(schema: StorageCollectionSchema<any, any, any>, doc: any): any;
@@ -1,15 +0,0 @@
1
- import { createCompoundIndexValue, } from '@verdant-web/common';
2
- export function computeSynthetics(schema, obj) {
3
- const result = {};
4
- for (const [name, property] of Object.entries(schema.synthetics || {})) {
5
- result[name] = property.compute(obj);
6
- }
7
- return result;
8
- }
9
- export function computeCompoundIndices(schema, doc) {
10
- return Object.entries(schema.compounds || {}).reduce((acc, [indexKey, index]) => {
11
- acc[indexKey] = createCompoundIndexValue(...index.of.map((key) => doc[key]));
12
- return acc;
13
- }, {});
14
- }
15
- //# sourceMappingURL=indexes.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"indexes.js","sourceRoot":"","sources":["../../src/indexes.ts"],"names":[],"mappings":"AAAA,OAAO,EAGN,wBAAwB,GAGxB,MAAM,qBAAqB,CAAC;AAE7B,MAAM,UAAU,iBAAiB,CAAC,MAA+B,EAAE,GAAQ;IAC1E,MAAM,MAAM,GAAwB,EAAE,CAAC;IACvC,KAAK,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC,EAAE;QACvE,MAAM,CAAC,IAAI,CAAC,GAAI,QAA6C,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;KAC3E;IACD,OAAO,MAAM,CAAC;AACf,CAAC;AAED,MAAM,UAAU,sBAAsB,CACrC,MAA8C,EAC9C,GAAQ;IAER,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,CAElD,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,EAAE;QAC5B,GAAG,CAAC,QAAQ,CAAC,GAAG,wBAAwB,CACvC,GAAI,KAA2C,CAAC,EAAE,CAAC,GAAG,CACrD,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAoB,CACpC,CACD,CAAC;QACF,OAAO,GAAG,CAAC;IACZ,CAAC,EAAE,EAAwC,CAAC,CAAC;AAC9C,CAAC"}
@@ -1,22 +0,0 @@
1
- Starting with a snapshot, a root Entity is created
2
-
3
- The root snapshot is maintained and updated as things change
4
-
5
- All child entities keep a reference to their portion of the root snapshot
6
-
7
- Child entities are cached in their parent
8
- A child is only ever a child of one parent - no reparenting
9
-
10
- On change, an event is forwarded to the appropriate entity in the tree
11
- how?
12
-
13
- Migration stuff...
14
-
15
- During migration, create a 'touched' empty op for every single root OID.
16
-
17
- When loading a document, if there isn't an op for this version, we know the doc is not migrated. The range for migration is from the version of its current op/baseline.
18
-
19
- # Lifecycle of an Entity
20
-
21
- At first, we've come from the queryable storage, so we have a plain object
22
- representing the entity's snapshot. But without associated OIDs, we can't do much besides read the data. For now, this initial snapshot isn't used.