@verdant-web/store 2.5.8 → 2.7.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 (145) hide show
  1. package/dist/bundle/index.js +15 -10
  2. package/dist/bundle/index.js.map +4 -4
  3. package/dist/cjs/{entities/FakeWeakRef.d.ts → FakeWeakRef.d.ts} +2 -2
  4. package/dist/cjs/{entities/FakeWeakRef.js → FakeWeakRef.js} +4 -4
  5. package/dist/cjs/FakeWeakRef.js.map +1 -0
  6. package/dist/cjs/IDBService.d.ts +1 -1
  7. package/dist/cjs/IDBService.js +18 -1
  8. package/dist/cjs/IDBService.js.map +1 -1
  9. package/dist/cjs/__tests__/documents.test.js +17 -0
  10. package/dist/cjs/__tests__/documents.test.js.map +1 -1
  11. package/dist/cjs/__tests__/fixtures/testStorage.d.ts +1 -1
  12. package/dist/cjs/__tests__/fixtures/testStorage.js +3 -2
  13. package/dist/cjs/__tests__/fixtures/testStorage.js.map +1 -1
  14. package/dist/cjs/__tests__/mutations.test.d.ts +1 -0
  15. package/dist/cjs/__tests__/mutations.test.js +42 -0
  16. package/dist/cjs/__tests__/mutations.test.js.map +1 -0
  17. package/dist/cjs/__tests__/queries.test.js +2 -0
  18. package/dist/cjs/__tests__/queries.test.js.map +1 -1
  19. package/dist/cjs/client/Client.d.ts +6 -4
  20. package/dist/cjs/client/Client.js +24 -16
  21. package/dist/cjs/client/Client.js.map +1 -1
  22. package/dist/cjs/client/ClientDescriptor.d.ts +15 -4
  23. package/dist/cjs/client/ClientDescriptor.js +117 -36
  24. package/dist/cjs/client/ClientDescriptor.js.map +1 -1
  25. package/dist/cjs/context.d.ts +1 -0
  26. package/dist/cjs/entities/DocumentFamiliyCache.d.ts +22 -2
  27. package/dist/cjs/entities/DocumentFamiliyCache.js +39 -21
  28. package/dist/cjs/entities/DocumentFamiliyCache.js.map +1 -1
  29. package/dist/cjs/entities/Entity.d.ts +7 -2
  30. package/dist/cjs/entities/Entity.js +33 -3
  31. package/dist/cjs/entities/Entity.js.map +1 -1
  32. package/dist/cjs/entities/EntityStore.d.ts +2 -1
  33. package/dist/cjs/entities/EntityStore.js +50 -20
  34. package/dist/cjs/entities/EntityStore.js.map +1 -1
  35. package/dist/cjs/idb.d.ts +2 -0
  36. package/dist/cjs/idb.js +9 -1
  37. package/dist/cjs/idb.js.map +1 -1
  38. package/dist/cjs/index.d.ts +1 -1
  39. package/dist/cjs/index.js +2 -1
  40. package/dist/cjs/index.js.map +1 -1
  41. package/dist/cjs/metadata/BaselinesStore.js +15 -5
  42. package/dist/cjs/metadata/BaselinesStore.js.map +1 -1
  43. package/dist/cjs/metadata/openMetadataDatabase.d.ts +11 -2
  44. package/dist/cjs/metadata/openMetadataDatabase.js +56 -3
  45. package/dist/cjs/metadata/openMetadataDatabase.js.map +1 -1
  46. package/dist/cjs/migration/db.d.ts +1 -1
  47. package/dist/cjs/migration/db.js +5 -2
  48. package/dist/cjs/migration/db.js.map +1 -1
  49. package/dist/cjs/migration/openDatabase.d.ts +8 -0
  50. package/dist/cjs/migration/openDatabase.js +217 -165
  51. package/dist/cjs/migration/openDatabase.js.map +1 -1
  52. package/dist/cjs/queries/BaseQuery.js +12 -1
  53. package/dist/cjs/queries/BaseQuery.js.map +1 -1
  54. package/dist/cjs/sync/Sync.d.ts +6 -5
  55. package/dist/cjs/sync/Sync.js.map +1 -1
  56. package/dist/cjs/sync/WebSocketSync.js +4 -3
  57. package/dist/cjs/sync/WebSocketSync.js.map +1 -1
  58. package/dist/esm/{entities/FakeWeakRef.d.ts → FakeWeakRef.d.ts} +2 -2
  59. package/dist/esm/{entities/FakeWeakRef.js → FakeWeakRef.js} +2 -2
  60. package/dist/esm/FakeWeakRef.js.map +1 -0
  61. package/dist/esm/IDBService.d.ts +1 -1
  62. package/dist/esm/IDBService.js +18 -1
  63. package/dist/esm/IDBService.js.map +1 -1
  64. package/dist/esm/__tests__/documents.test.js +17 -0
  65. package/dist/esm/__tests__/documents.test.js.map +1 -1
  66. package/dist/esm/__tests__/fixtures/testStorage.d.ts +1 -1
  67. package/dist/esm/__tests__/fixtures/testStorage.js +4 -3
  68. package/dist/esm/__tests__/fixtures/testStorage.js.map +1 -1
  69. package/dist/esm/__tests__/mutations.test.d.ts +1 -0
  70. package/dist/esm/__tests__/mutations.test.js +40 -0
  71. package/dist/esm/__tests__/mutations.test.js.map +1 -0
  72. package/dist/esm/__tests__/queries.test.js +2 -0
  73. package/dist/esm/__tests__/queries.test.js.map +1 -1
  74. package/dist/esm/client/Client.d.ts +6 -4
  75. package/dist/esm/client/Client.js +25 -17
  76. package/dist/esm/client/Client.js.map +1 -1
  77. package/dist/esm/client/ClientDescriptor.d.ts +15 -4
  78. package/dist/esm/client/ClientDescriptor.js +121 -40
  79. package/dist/esm/client/ClientDescriptor.js.map +1 -1
  80. package/dist/esm/context.d.ts +1 -0
  81. package/dist/esm/entities/DocumentFamiliyCache.d.ts +22 -2
  82. package/dist/esm/entities/DocumentFamiliyCache.js +39 -21
  83. package/dist/esm/entities/DocumentFamiliyCache.js.map +1 -1
  84. package/dist/esm/entities/Entity.d.ts +7 -2
  85. package/dist/esm/entities/Entity.js +33 -3
  86. package/dist/esm/entities/Entity.js.map +1 -1
  87. package/dist/esm/entities/EntityStore.d.ts +2 -1
  88. package/dist/esm/entities/EntityStore.js +51 -21
  89. package/dist/esm/entities/EntityStore.js.map +1 -1
  90. package/dist/esm/idb.d.ts +2 -0
  91. package/dist/esm/idb.js +6 -0
  92. package/dist/esm/idb.js.map +1 -1
  93. package/dist/esm/index.d.ts +1 -1
  94. package/dist/esm/index.js +1 -1
  95. package/dist/esm/index.js.map +1 -1
  96. package/dist/esm/metadata/BaselinesStore.js +16 -6
  97. package/dist/esm/metadata/BaselinesStore.js.map +1 -1
  98. package/dist/esm/metadata/openMetadataDatabase.d.ts +11 -2
  99. package/dist/esm/metadata/openMetadataDatabase.js +54 -2
  100. package/dist/esm/metadata/openMetadataDatabase.js.map +1 -1
  101. package/dist/esm/migration/db.d.ts +1 -1
  102. package/dist/esm/migration/db.js +5 -2
  103. package/dist/esm/migration/db.js.map +1 -1
  104. package/dist/esm/migration/openDatabase.d.ts +8 -0
  105. package/dist/esm/migration/openDatabase.js +215 -164
  106. package/dist/esm/migration/openDatabase.js.map +1 -1
  107. package/dist/esm/queries/BaseQuery.js +12 -1
  108. package/dist/esm/queries/BaseQuery.js.map +1 -1
  109. package/dist/esm/sync/Sync.d.ts +6 -5
  110. package/dist/esm/sync/Sync.js.map +1 -1
  111. package/dist/esm/sync/WebSocketSync.js +4 -3
  112. package/dist/esm/sync/WebSocketSync.js.map +1 -1
  113. package/dist/tsconfig-cjs.tsbuildinfo +1 -1
  114. package/dist/tsconfig.tsbuildinfo +1 -1
  115. package/package.json +9 -4
  116. package/src/{entities/FakeWeakRef.ts → FakeWeakRef.ts} +2 -2
  117. package/src/IDBService.ts +20 -2
  118. package/src/__tests__/documents.test.ts +19 -0
  119. package/src/__tests__/fixtures/testStorage.ts +4 -7
  120. package/src/__tests__/mutations.test.ts +51 -0
  121. package/src/__tests__/queries.test.ts +3 -0
  122. package/src/client/Client.ts +29 -21
  123. package/src/client/ClientDescriptor.ts +176 -53
  124. package/src/context.ts +1 -0
  125. package/src/entities/DocumentFamiliyCache.ts +66 -21
  126. package/src/entities/Entity.ts +41 -6
  127. package/src/entities/EntityStore.ts +68 -21
  128. package/src/idb.ts +10 -0
  129. package/src/index.ts +1 -0
  130. package/src/metadata/BaselinesStore.ts +17 -6
  131. package/src/metadata/openMetadataDatabase.ts +96 -13
  132. package/src/migration/db.ts +14 -1
  133. package/src/migration/openDatabase.ts +350 -219
  134. package/src/queries/BaseQuery.ts +14 -1
  135. package/src/sync/Sync.ts +13 -9
  136. package/src/sync/WebSocketSync.ts +1 -0
  137. package/dist/cjs/entities/FakeWeakRef.js.map +0 -1
  138. package/dist/cjs/indexes.d.ts +0 -3
  139. package/dist/cjs/indexes.js +0 -20
  140. package/dist/cjs/indexes.js.map +0 -1
  141. package/dist/esm/entities/FakeWeakRef.js.map +0 -1
  142. package/dist/esm/indexes.d.ts +0 -3
  143. package/dist/esm/indexes.js +0 -15
  144. package/dist/esm/indexes.js.map +0 -1
  145. package/src/indexes.ts +0 -31
@@ -8,6 +8,7 @@ const openDatabase_js_1 = require("../migration/openDatabase.js");
8
8
  const UndoHistory_js_1 = require("../UndoHistory.js");
9
9
  const Client_js_1 = require("./Client.js");
10
10
  const idb_js_1 = require("../idb.js");
11
+ const FakeWeakRef_js_1 = require("../FakeWeakRef.js");
11
12
  /**
12
13
  * Since storage initialization is async, this class wraps the core
13
14
  * Storage creation promise and exposes some metadata which can
@@ -31,42 +32,14 @@ class ClientDescriptor {
31
32
  }
32
33
  this._initializing = true;
33
34
  try {
34
- const metaDbName = [init.namespace, 'meta'].join('_');
35
- const { db: metaDb } = await (0, openMetadataDatabase_js_1.openMetadataDatabase)(this._namespace, {
36
- indexedDB: init.indexedDb,
37
- log: init.log,
38
- databaseName: metaDbName,
39
- });
40
- const context = {
41
- namespace: this._namespace,
42
- metaDb,
43
- schema: init.schema,
44
- log: init.log || (() => { }),
45
- undoHistory: init.undoHistory || new UndoHistory_js_1.UndoHistory(),
46
- entityEvents: new common_1.EventSubscriber(),
47
- globalEvents: new common_1.EventSubscriber(),
48
- };
49
- const meta = new Metadata_js_1.Metadata({
50
- context,
51
- disableRebasing: init.disableRebasing,
52
- });
53
- // verify schema integrity
54
- await meta.updateSchema(init.schema, init.overrideSchemaConflict);
55
- const documentDb = await (0, openDatabase_js_1.openDocumentDatabase)({
56
- context,
57
- version: init.schema.version,
58
- meta,
59
- migrations: init.migrations,
60
- indexedDB: init.indexedDb,
61
- });
62
- const fullContext = Object.assign(context, { documentDb });
63
- const storage = new Client_js_1.Client({
64
- syncConfig: init.sync,
65
- migrations: init.migrations,
66
- files: init.files,
67
- }, fullContext, {
68
- meta,
69
- });
35
+ let storage;
36
+ if (init.schema.wip) {
37
+ storage = await this.initializeWIPDatabases(init);
38
+ }
39
+ else {
40
+ storage = await this.initializeDatabases(init);
41
+ this.cleanupWIPDatabases(init);
42
+ }
70
43
  this.resolveReady(storage);
71
44
  this._resolvedValue = storage;
72
45
  return storage;
@@ -79,6 +52,114 @@ class ClientDescriptor {
79
52
  this._initializing = false;
80
53
  }
81
54
  };
55
+ this.initializeDatabases = async (init) => {
56
+ const { db: metaDb } = await (0, openMetadataDatabase_js_1.openMetadataDatabase)({
57
+ indexedDB: init.indexedDb,
58
+ log: init.log,
59
+ namespace: init.namespace,
60
+ });
61
+ const context = {
62
+ namespace: this._namespace,
63
+ metaDb,
64
+ schema: init.schema,
65
+ log: init.log || (() => { }),
66
+ undoHistory: init.undoHistory || new UndoHistory_js_1.UndoHistory(),
67
+ entityEvents: new common_1.EventSubscriber(),
68
+ globalEvents: new common_1.EventSubscriber(),
69
+ weakRef: (value) => {
70
+ if (init.EXPERIMENTAL_weakRefs) {
71
+ return new WeakRef(value);
72
+ }
73
+ else {
74
+ return new FakeWeakRef_js_1.FakeWeakRef(value);
75
+ }
76
+ },
77
+ };
78
+ const meta = new Metadata_js_1.Metadata({
79
+ context,
80
+ disableRebasing: init.disableRebasing,
81
+ });
82
+ // verify schema integrity
83
+ await meta.updateSchema(init.schema, init.overrideSchemaConflict);
84
+ const documentDb = await (0, openDatabase_js_1.openDocumentDatabase)({
85
+ context,
86
+ version: init.schema.version,
87
+ meta,
88
+ migrations: init.migrations,
89
+ indexedDB: init.indexedDb,
90
+ });
91
+ const fullContext = Object.assign(context, { documentDb });
92
+ const storage = new Client_js_1.Client({
93
+ syncConfig: init.sync,
94
+ migrations: init.migrations,
95
+ files: init.files,
96
+ }, fullContext, {
97
+ meta,
98
+ });
99
+ return storage;
100
+ };
101
+ this.initializeWIPDatabases = async (init) => {
102
+ const schemaHash = (0, common_1.hashObject)(init.schema);
103
+ console.info(`WIP schema in use. Opening database with hash ${schemaHash}`);
104
+ const wipNamespace = `@@wip_${init.namespace}_${schemaHash}`;
105
+ const { db: metaDb } = await (0, openMetadataDatabase_js_1.openWIPMetadataDatabase)({
106
+ indexedDB: init.indexedDb,
107
+ log: init.log,
108
+ namespace: init.namespace,
109
+ wipNamespace: wipNamespace,
110
+ });
111
+ const context = {
112
+ namespace: this._namespace,
113
+ metaDb,
114
+ schema: init.schema,
115
+ log: init.log || (() => { }),
116
+ undoHistory: init.undoHistory || new UndoHistory_js_1.UndoHistory(),
117
+ entityEvents: new common_1.EventSubscriber(),
118
+ globalEvents: new common_1.EventSubscriber(),
119
+ weakRef: (value) => {
120
+ if (init.EXPERIMENTAL_weakRefs) {
121
+ return new WeakRef(value);
122
+ }
123
+ else {
124
+ return new FakeWeakRef_js_1.FakeWeakRef(value);
125
+ }
126
+ },
127
+ };
128
+ const meta = new Metadata_js_1.Metadata({
129
+ context,
130
+ disableRebasing: init.disableRebasing,
131
+ });
132
+ // verify schema integrity
133
+ await meta.updateSchema(init.schema, init.overrideSchemaConflict);
134
+ const documentDb = await (0, openDatabase_js_1.openWIPDocumentDatabase)({
135
+ context,
136
+ version: init.schema.version,
137
+ meta,
138
+ migrations: init.migrations,
139
+ indexedDB: init.indexedDb,
140
+ wipNamespace,
141
+ });
142
+ const fullContext = Object.assign(context, { documentDb });
143
+ const storage = new Client_js_1.Client({
144
+ syncConfig: init.sync,
145
+ migrations: init.migrations,
146
+ files: init.files,
147
+ }, fullContext, {
148
+ meta,
149
+ });
150
+ return storage;
151
+ };
152
+ this.cleanupWIPDatabases = async (init) => {
153
+ const databaseInfo = await (0, idb_js_1.getAllDatabaseNamesAndVersions)(init.indexedDb);
154
+ const wipDatabases = databaseInfo
155
+ .filter((db) => { var _a; return (_a = db.name) === null || _a === void 0 ? void 0 : _a.startsWith('@@wip_'); })
156
+ .map((db) => db.name);
157
+ // don't clear a current WIP database.
158
+ const wipDatabasesToDelete = wipDatabases.filter((db) => !db.startsWith(`@@wip_${init.namespace}_${(0, common_1.hashObject)(init.schema)}`));
159
+ for (const db of wipDatabasesToDelete) {
160
+ await (0, idb_js_1.deleteDatabase)(db, init.indexedDb);
161
+ }
162
+ };
82
163
  this.open = () => this.initialize(this.init);
83
164
  this.close = async () => {
84
165
  if (this._resolvedValue) {
@@ -1 +1 @@
1
- {"version":3,"file":"ClientDescriptor.js","sourceRoot":"","sources":["../../../src/client/ClientDescriptor.ts"],"names":[],"mappings":";;;AAAA,gDAAgF;AAGhF,yDAAmD;AACnD,iFAA2E;AAC3E,kEAAoE;AAEpE,sDAAgD;AAChD,2CAAqC;AACrC,sCAA+C;AAsC/C;;;;GAIG;AACH,MAAa,gBAAgB;IAU5B,IAAI,SAAS;QACZ,OAAO,IAAI,CAAC,UAAU,CAAC;IACxB,CAAC;IAED,YACkB,IAAgD;QAAhD,SAAI,GAAJ,IAAI,CAA4C;QAR1D,kBAAa,GAAG,KAAK,CAAC;QAiBtB,eAAU,GAAG,KAAK,EAAE,IAA6B,EAAE,EAAE;YAC5D,2EAA2E;YAC3E,kCAAkC;YAClC,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;gBACrD,MAAM,IAAI,KAAK,CACd,6RAA6R,CAC7R,CAAC;aACF;YAED,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,cAAc,EAAE;gBAC9C,OAAO,IAAI,CAAC,aAAa,CAAC;aAC1B;YACD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;YAC1B,IAAI;gBACH,MAAM,UAAU,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACtD,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,MAAM,IAAA,8CAAoB,EAAC,IAAI,CAAC,UAAU,EAAE;oBAClE,SAAS,EAAE,IAAI,CAAC,SAAS;oBACzB,GAAG,EAAE,IAAI,CAAC,GAAG;oBACb,YAAY,EAAE,UAAU;iBACxB,CAAC,CAAC;gBAEH,MAAM,OAAO,GAAgC;oBAC5C,SAAS,EAAE,IAAI,CAAC,UAAU;oBAC1B,MAAM;oBACN,MAAM,EAAE,IAAI,CAAC,MAAM;oBACnB,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC;oBAC3B,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,IAAI,4BAAW,EAAE;oBAClD,YAAY,EAAE,IAAI,wBAAe,EAAE;oBACnC,YAAY,EAAE,IAAI,wBAAe,EAAE;iBACnC,CAAC;gBACF,MAAM,IAAI,GAAG,IAAI,sBAAQ,CAAC;oBACzB,OAAO;oBACP,eAAe,EAAE,IAAI,CAAC,eAAe;iBACrC,CAAC,CAAC;gBAEH,0BAA0B;gBAC1B,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,sBAAsB,CAAC,CAAC;gBAElE,MAAM,UAAU,GAAG,MAAM,IAAA,sCAAoB,EAAC;oBAC7C,OAAO;oBACP,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;oBAC5B,IAAI;oBACJ,UAAU,EAAE,IAAI,CAAC,UAAU;oBAC3B,SAAS,EAAE,IAAI,CAAC,SAAS;iBACzB,CAAC,CAAC;gBAEH,MAAM,WAAW,GAAY,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC;gBAEpE,MAAM,OAAO,GAAG,IAAI,kBAAM,CACzB;oBACC,UAAU,EAAE,IAAI,CAAC,IAAI;oBACrB,UAAU,EAAE,IAAI,CAAC,UAAU;oBAC3B,KAAK,EAAE,IAAI,CAAC,KAAK;iBACjB,EACD,WAAW,EACX;oBACC,IAAI;iBACJ,CACD,CAAC;gBAEF,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;gBAC3B,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC;gBAC9B,OAAO,OAAO,CAAC;aACf;YAAC,OAAO,GAAG,EAAE;gBACb,IAAI,CAAC,WAAW,CAAC,GAAY,CAAC,CAAC;gBAC/B,MAAM,GAAG,CAAC;aACV;oBAAS;gBACT,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;aAC3B;QACF,CAAC,CAAC;QAiBF,SAAI,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAExC,UAAK,GAAG,KAAK,IAAI,EAAE;YAClB,IAAI,IAAI,CAAC,cAAc,EAAE;gBACxB,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;aAC5B;YACD,IAAI,IAAI,CAAC,aAAa,EAAE;gBACvB,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,CAAC,KAAK,EAAE,CAAC;aACnC;QACF,CAAC,CAAC;QAEF,4BAAuB,GAAG,KAAK,IAAI,EAAE;YACpC,MAAM,IAAA,2BAAkB,EAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC1C,CAAC,CAAC;QA1GD,IAAI,CAAC,aAAa,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACpD,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC;YAC5B,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC;QAC3B,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC;IAClC,CAAC;IAyED,IAAI,OAAO;QACV,0DAA0D;QAC1D,+DAA+D;QAC/D,yCAAyC;QACzC,OAAO,IAAI,CAAC,cAAc,CAAC;IAC5B,CAAC;IAED,IAAI,YAAY;QACf,OAAO,IAAI,CAAC,aAAa,CAAC;IAC3B,CAAC;IAED,IAAI,MAAM;QACT,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;IACzB,CAAC;CAgBD;AA5HD,4CA4HC"}
1
+ {"version":3,"file":"ClientDescriptor.js","sourceRoot":"","sources":["../../../src/client/ClientDescriptor.ts"],"names":[],"mappings":"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"}
@@ -25,4 +25,5 @@ export interface Context {
25
25
  */
26
26
  futureSeen: (timestamp: string) => void;
27
27
  }>;
28
+ weakRef<T extends object>(value: T): WeakRef<T>;
28
29
  }
@@ -27,11 +27,15 @@ export declare class DocumentFamilyCache extends EventSubscriber<Record<`change:
27
27
  private entities;
28
28
  private context;
29
29
  private storeTools;
30
+ private _initialized;
31
+ get initializedPromise(): Promise<boolean>;
32
+ setInitialized: () => void;
30
33
  constructor({ oid, store, context, }: {
31
34
  oid: ObjectIdentifier;
32
35
  store: EntityStore;
33
36
  context: Context;
34
37
  });
38
+ get weakRef(): <T extends object>(value: T) => WeakRef<T>;
35
39
  insertLocalOperations: (operations: Operation[]) => void;
36
40
  insertOperations: (operations: TaggedOperation[], info: {
37
41
  isLocal: boolean;
@@ -63,8 +67,24 @@ export declare class DocumentFamilyCache extends EventSubscriber<Record<`change:
63
67
  empty: boolean;
64
68
  };
65
69
  getLastTimestamp: (oid: ObjectIdentifier) => number | null;
66
- getEntity: (oid: ObjectIdentifier, schema: StorageFieldSchema, parent?: Entity) => Entity;
70
+ getEntity: (oid: ObjectIdentifier, schema: StorageFieldSchema, parent?: Entity, readonlyKeys?: string[]) => Entity;
67
71
  hasOid: (oid: ObjectIdentifier) => boolean;
68
72
  dispose: () => void;
69
- reset: (operations: TaggedOperation[], baselines: DocumentBaseline[], dropUnconfirmed?: boolean) => void;
73
+ reset: ({ operations, baselines, dropExistingUnconfirmed: dropUnconfirmed, unconfirmedOperations, dropAll, }: {
74
+ operations: TaggedOperation[];
75
+ unconfirmedOperations?: Operation[] | undefined;
76
+ baselines: DocumentBaseline[];
77
+ /**
78
+ * Whether to drop operations which are only in-memory. Unconfirmed operations
79
+ * will not be restored from storage until they are persisted, so it's not advisable
80
+ * to use this unless the intention is to completely clear the entities.
81
+ */
82
+ dropExistingUnconfirmed?: boolean | undefined;
83
+ /**
84
+ * Drop unconfirmed and confirmed data before resetting to incoming data.
85
+ * This is dangerous due to race conditions. Only use when a full reset is
86
+ * required.
87
+ */
88
+ dropAll?: boolean | undefined;
89
+ }) => void;
70
90
  }
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.DocumentFamilyCache = void 0;
4
4
  const common_1 = require("@verdant-web/common");
5
5
  const Entity_js_1 = require("./Entity.js");
6
- const FakeWeakRef_js_1 = require("./FakeWeakRef.js");
6
+ const Resolvable_js_1 = require("../utils/Resolvable.js");
7
7
  /**
8
8
  * Local operations: operations on this client that haven't
9
9
  * yet been synced and are only applied in-memory. These are
@@ -19,9 +19,16 @@ const FakeWeakRef_js_1 = require("./FakeWeakRef.js");
19
19
  * cached entities while storage goes on async.
20
20
  */
21
21
  class DocumentFamilyCache extends common_1.EventSubscriber {
22
+ get initializedPromise() {
23
+ return this._initialized.promise;
24
+ }
22
25
  constructor({ oid, store, context, }) {
23
26
  super();
24
27
  this.entities = new Map();
28
+ this._initialized = new Resolvable_js_1.Resolvable();
29
+ this.setInitialized = () => {
30
+ this._initialized.resolve(true);
31
+ };
25
32
  this.insertLocalOperations = (operations) => {
26
33
  const oidSet = new Set();
27
34
  for (const operation of operations) {
@@ -150,6 +157,12 @@ class DocumentFamilyCache extends common_1.EventSubscriber {
150
157
  return { view, deleted, empty: !view && !operations.length };
151
158
  };
152
159
  this.computeView = (oid) => {
160
+ if (this.baselinesMap.size === 0 &&
161
+ this.operationsMap.size === 0 &&
162
+ this.localOperationsMap.size === 0) {
163
+ this.context.log('debug', `Entity ${oid} accessed with no data at all`);
164
+ return { view: null, deleted: true, lastTimestamp: null };
165
+ }
153
166
  const confirmed = this.computeConfirmedView(oid);
154
167
  const unconfirmedOperations = this.localOperationsMap.get(oid) || [];
155
168
  if (confirmed.empty && !unconfirmedOperations.length) {
@@ -192,7 +205,7 @@ class DocumentFamilyCache extends common_1.EventSubscriber {
192
205
  return null;
193
206
  return this.storeTools.time.getWallClockTime(logicalTimestamp);
194
207
  };
195
- this.getEntity = (oid, schema, parent) => {
208
+ this.getEntity = (oid, schema, parent, readonlyKeys) => {
196
209
  let entityRef = this.entities.get(oid);
197
210
  let entity = entityRef === null || entityRef === void 0 ? void 0 : entityRef.deref();
198
211
  if (!entity) {
@@ -202,9 +215,10 @@ class DocumentFamilyCache extends common_1.EventSubscriber {
202
215
  fieldSchema: schema,
203
216
  store: this.storeTools,
204
217
  parent,
218
+ readonlyKeys,
205
219
  });
206
220
  // immediately add to cache and queue a removal if nobody subscribed
207
- this.entities.set(oid, new FakeWeakRef_js_1.WeakRef(entity));
221
+ this.entities.set(oid, this.context.weakRef(entity));
208
222
  }
209
223
  return entity;
210
224
  };
@@ -215,27 +229,28 @@ class DocumentFamilyCache extends common_1.EventSubscriber {
215
229
  this.entities.forEach((entity) => { var _a; return (_a = entity.deref()) === null || _a === void 0 ? void 0 : _a.dispose(); });
216
230
  this.entities.clear();
217
231
  };
218
- this.reset = (operations, baselines,
219
- /**
220
- * Whether to drop operations which are only in-memory. Unconfirmed operations
221
- * will not be restored from storage until they are persisted, so it's not advisable
222
- * to use this unless the intention is to completely clear the entities.
223
- */
224
- dropUnconfirmed = false) => {
225
- var _a, _b;
232
+ this.reset = ({ operations, baselines, dropExistingUnconfirmed: dropUnconfirmed = false, unconfirmedOperations, dropAll, }) => {
233
+ this.context.log('debug', `Resetting cache for ${this.oid} with ${operations.length} ops and ${baselines.length} baselines, dropUnconfirmed=${dropUnconfirmed}`);
226
234
  const info = { isLocal: false, affectedOids: new Set() };
227
- this.baselinesMap = new Map(baselines.map((baseline) => [baseline.oid, baseline]));
228
- if (dropUnconfirmed) {
229
- this.operationsMap = new Map();
230
- }
231
- else {
232
- // clear out all confirmed operations, leaving only unconfirmed
233
- // which have been added in memory but not yet persisted in storage
234
- for (const oid of this.operationsMap.keys()) {
235
- this.operationsMap.set(oid, (_b = (_a = this.operationsMap.get(oid)) === null || _a === void 0 ? void 0 : _a.filter((op) => !op.confirmed)) !== null && _b !== void 0 ? _b : []);
235
+ // NOTE: not clearing these maps... there are even more
236
+ // race conditions where we begin opening a cache, queue up a
237
+ // reset, then receive incoming operations before the reset
238
+ // actually hits this function, so those incoming ops are
239
+ // dropped.
240
+ // FIXME: include this in a future refactor of this
241
+ // whole system.
242
+ if (dropAll)
243
+ this.baselinesMap.clear();
244
+ this.insertBaselines(baselines, info);
245
+ if (dropAll)
246
+ this.operationsMap.clear();
247
+ this.insertOperations(operations, info);
248
+ if (unconfirmedOperations || dropUnconfirmed) {
249
+ this.localOperationsMap.clear();
250
+ if (unconfirmedOperations) {
251
+ this.insertLocalOperations(unconfirmedOperations);
236
252
  }
237
253
  }
238
- this.insertOperations(operations, info);
239
254
  for (const oid of this.entities.keys()) {
240
255
  const entityRef = this.entities.get(oid);
241
256
  const entity = entityRef === null || entityRef === void 0 ? void 0 : entityRef.deref();
@@ -260,6 +275,9 @@ class DocumentFamilyCache extends common_1.EventSubscriber {
260
275
  };
261
276
  this.context = context;
262
277
  }
278
+ get weakRef() {
279
+ return this.context.weakRef;
280
+ }
263
281
  }
264
282
  exports.DocumentFamilyCache = DocumentFamilyCache;
265
283
  //# sourceMappingURL=DocumentFamiliyCache.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DocumentFamiliyCache.js","sourceRoot":"","sources":["../../../src/entities/DocumentFamiliyCache.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DocumentFamiliyCache.js","sourceRoot":"","sources":["../../../src/entities/DocumentFamiliyCache.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,5 @@
1
1
  import { EventSubscriber, FileData, ObjectIdentifier, Operation, PatchCreator, StorageFieldSchema, StorageFieldsSchema, TimestampProvider } from '@verdant-web/common';
2
2
  import { EntityFile } from '../files/EntityFile.js';
3
- import { WeakRef } from './FakeWeakRef.js';
4
3
  export declare const ADD_OPERATIONS = "@@addOperations";
5
4
  export declare const DELETE = "@@delete";
6
5
  export declare const REBASE = "@@rebase";
@@ -14,6 +13,7 @@ export interface CacheTools {
14
13
  };
15
14
  getEntity(oid: ObjectIdentifier, schema: StorageFieldSchema, parent?: Entity): Entity;
16
15
  hasOid(oid: ObjectIdentifier): boolean;
16
+ weakRef<T extends object>(value: T): WeakRef<T>;
17
17
  }
18
18
  export interface StoreTools {
19
19
  addLocalOperations(operations: Operation[]): void;
@@ -56,6 +56,7 @@ export declare class Entity<Init = any, KeyValue extends BaseEntityValue = any,
56
56
  protected readonly cache: CacheTools;
57
57
  protected _deleted: boolean;
58
58
  protected parent: WeakRef<Entity<any, any>> | undefined;
59
+ protected readonly readonlyKeys: (keyof Init)[];
59
60
  private cachedSnapshot;
60
61
  private cachedDestructure;
61
62
  private cachedDeepUpdatedAt;
@@ -69,13 +70,14 @@ export declare class Entity<Init = any, KeyValue extends BaseEntityValue = any,
69
70
  get updatedAt(): number | null;
70
71
  get deepUpdatedAt(): number | null;
71
72
  get uid(): string;
72
- constructor({ oid, store, fieldSchema, cache, parent, onAllUnsubscribed, }: {
73
+ constructor({ oid, store, fieldSchema, cache, parent, onAllUnsubscribed, readonlyKeys, }: {
73
74
  oid: ObjectIdentifier;
74
75
  store: StoreTools;
75
76
  fieldSchema: StorageFieldSchema | StorageFieldsSchema;
76
77
  cache: CacheTools;
77
78
  parent?: Entity<any, any>;
78
79
  onAllUnsubscribed?: () => void;
80
+ readonlyKeys?: (keyof Init)[];
79
81
  });
80
82
  private [REFRESH];
81
83
  private [DEEP_CHANGE];
@@ -89,6 +91,7 @@ export declare class Entity<Init = any, KeyValue extends BaseEntityValue = any,
89
91
  protected processInputValue: (value: any, key: any) => any;
90
92
  get: <Key extends keyof KeyValue>(key: Key) => KeyValue[Key];
91
93
  getAll: () => KeyValue;
94
+ private getFileSnapshot;
92
95
  /**
93
96
  * Returns a copy of the entity and all sub-objects as
94
97
  * a plain object or array.
@@ -145,6 +148,7 @@ export declare class Entity<Init = any, KeyValue extends BaseEntityValue = any,
145
148
  some: (predicate: (value: ListItemValue<KeyValue>) => boolean) => boolean;
146
149
  every: (predicate: (value: ListItemValue<KeyValue>) => boolean) => boolean;
147
150
  find: (predicate: (value: ListItemValue<KeyValue>) => boolean) => ListItemValue<KeyValue> | undefined;
151
+ includes: (item: ListItemValue<KeyValue>) => any;
148
152
  }
149
153
  export interface BaseEntity<Init, Value extends BaseEntityValue, Snapshot = DataFromInit<Init>> {
150
154
  dispose: () => void;
@@ -190,6 +194,7 @@ export interface ListEntity<Init, Value extends BaseEntityValue, Snapshot = Data
190
194
  some(predicate: (value: ListItemValue<Value>) => boolean): boolean;
191
195
  every(predicate: (value: ListItemValue<Value>) => boolean): boolean;
192
196
  find(predicate: (value: ListItemValue<Value>) => boolean): ListItemValue<Value> | undefined;
197
+ includes(value: ListItemValue<Value>): boolean;
193
198
  }
194
199
  export type AnyEntity<Init, KeyValue extends BaseEntityValue, Snapshot extends any> = ListEntity<Init, KeyValue, Snapshot> | ObjectEntity<Init, KeyValue, Snapshot>;
195
200
  type ListItemValue<KeyValue> = KeyValue extends Array<infer T> ? T : never;
@@ -4,7 +4,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
4
4
  exports.Entity = exports.refreshEntity = exports.DEEP_CHANGE = exports.REBASE = exports.DELETE = exports.ADD_OPERATIONS = void 0;
5
5
  const common_1 = require("@verdant-web/common");
6
6
  const utils_js_1 = require("../files/utils.js");
7
- const FakeWeakRef_js_1 = require("./FakeWeakRef.js");
8
7
  exports.ADD_OPERATIONS = '@@addOperations';
9
8
  exports.DELETE = '@@delete';
10
9
  exports.REBASE = '@@rebase';
@@ -77,7 +76,7 @@ class Entity {
77
76
  get uid() {
78
77
  return this.oid;
79
78
  }
80
- constructor({ oid, store, fieldSchema, cache, parent, onAllUnsubscribed, }) {
79
+ constructor({ oid, store, fieldSchema, cache, parent, onAllUnsubscribed, readonlyKeys = [], }) {
81
80
  // if current is null, the entity was deleted.
82
81
  this._current = null;
83
82
  this._deleted = false;
@@ -247,6 +246,9 @@ class Entity {
247
246
  if ((0, common_1.isObjectRef)(item)) {
248
247
  return (_c = this.getSubObject(item.id, idx)) === null || _c === void 0 ? void 0 : _c.getSnapshot();
249
248
  }
249
+ else if ((0, common_1.isFileRef)(item)) {
250
+ return this.getFileSnapshot(item);
251
+ }
250
252
  return item;
251
253
  });
252
254
  }
@@ -256,6 +258,9 @@ class Entity {
256
258
  if ((0, common_1.isObjectRef)(value)) {
257
259
  snapshot[key] = (_c = this.getSubObject(value.id, key)) === null || _c === void 0 ? void 0 : _c.getSnapshot();
258
260
  }
261
+ else if ((0, common_1.isFileRef)(value)) {
262
+ snapshot[key] = this.getFileSnapshot(value);
263
+ }
259
264
  }
260
265
  }
261
266
  (0, common_1.assignOid)(snapshot, this.oid);
@@ -275,6 +280,9 @@ class Entity {
275
280
  return Object.values(this.getAll());
276
281
  };
277
282
  this.set = (key, value) => {
283
+ if (this.readonlyKeys.includes(key)) {
284
+ throw new Error(`Cannot set readonly key ${key.toString()}`);
285
+ }
278
286
  this.addPatches(this.store.patchCreator.createSet(this.oid, key, this.processInputValue(value, key)));
279
287
  };
280
288
  this.delete = (key) => {
@@ -296,6 +304,9 @@ class Entity {
296
304
  }
297
305
  };
298
306
  this.getDeleteMode = (key) => {
307
+ if (this.readonlyKeys.includes(key)) {
308
+ return false;
309
+ }
299
310
  // 'any' is always deletable, and map values can be removed completely
300
311
  if (this.fieldSchema.type === 'any' || this.fieldSchema.type === 'map') {
301
312
  return 'delete';
@@ -339,6 +350,9 @@ class Entity {
339
350
  throw new Error('Cannot use .update without merge if the field has a strict schema type. merge: false is only available on "any" or "map" types.');
340
351
  }
341
352
  for (const [key, field] of Object.entries(value)) {
353
+ if (this.readonlyKeys.includes(key)) {
354
+ throw new Error(`Cannot set readonly key ${key.toString()}`);
355
+ }
342
356
  const fieldSchema = this.getChildFieldSchema(key);
343
357
  if (fieldSchema) {
344
358
  (0, common_1.traverseCollectionFieldsAndApplyDefaults)(field, fieldSchema);
@@ -442,13 +456,17 @@ class Entity {
442
456
  this.find = (predicate) => {
443
457
  return this.getAsWrapped().find(predicate);
444
458
  };
459
+ this.includes = (item) => {
460
+ return this.has(item);
461
+ };
445
462
  this.oid = oid;
446
463
  const { collection } = (0, common_1.decomposeOid)(oid);
447
464
  this.collection = collection;
448
- this.parent = parent && new FakeWeakRef_js_1.WeakRef(parent);
449
465
  this.store = store;
450
466
  this.fieldSchema = fieldSchema;
467
+ this.readonlyKeys = readonlyKeys;
451
468
  this.cache = cache;
469
+ this.parent = parent && this.cache.weakRef(parent);
452
470
  const { view, deleted, lastTimestamp } = this.cache.computeView(oid);
453
471
  this._current = view;
454
472
  this._deleted = deleted;
@@ -464,6 +482,18 @@ class Entity {
464
482
  }
465
483
  (0, common_1.assert)(!!fieldSchema, 'Field schema must be provided');
466
484
  }
485
+ getFileSnapshot(item) {
486
+ const file = this.store.getFile(item.id);
487
+ if (file.url) {
488
+ return { id: item.id, url: file.url };
489
+ }
490
+ else if (file.loading || file.failed) {
491
+ return { id: item.id, url: undefined };
492
+ }
493
+ else {
494
+ return { id: item.id, url: null };
495
+ }
496
+ }
467
497
  get length() {
468
498
  return this.value.length;
469
499
  }