@peers-app/peers-sdk 0.14.0 → 0.15.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 (210) hide show
  1. package/dist/context/data-context.d.ts +4 -4
  2. package/dist/context/data-context.js +1 -1
  3. package/dist/context/index.d.ts +3 -3
  4. package/dist/context/index.js +4 -0
  5. package/dist/context/user-context-singleton.js +13 -14
  6. package/dist/context/user-context.d.ts +4 -4
  7. package/dist/context/user-context.js +48 -31
  8. package/dist/data/assistants.d.ts +1 -1
  9. package/dist/data/assistants.js +35 -24
  10. package/dist/data/change-tracking.d.ts +8 -8
  11. package/dist/data/change-tracking.js +45 -39
  12. package/dist/data/channels.js +5 -5
  13. package/dist/data/data-locks.d.ts +2 -2
  14. package/dist/data/data-locks.js +21 -23
  15. package/dist/data/data-locks.test.js +73 -75
  16. package/dist/data/device-sync-info.d.ts +1 -1
  17. package/dist/data/device-sync-info.js +4 -4
  18. package/dist/data/devices.d.ts +1 -1
  19. package/dist/data/devices.js +9 -12
  20. package/dist/data/embeddings.js +14 -11
  21. package/dist/data/files/file-read-stream.d.ts +2 -2
  22. package/dist/data/files/file-read-stream.js +23 -14
  23. package/dist/data/files/file-write-stream.d.ts +2 -2
  24. package/dist/data/files/file-write-stream.js +8 -8
  25. package/dist/data/files/file.types.d.ts +2 -2
  26. package/dist/data/files/file.types.js +17 -11
  27. package/dist/data/files/files.d.ts +6 -6
  28. package/dist/data/files/files.js +17 -19
  29. package/dist/data/files/files.test.js +213 -214
  30. package/dist/data/files/index.d.ts +4 -4
  31. package/dist/data/files/index.js +4 -4
  32. package/dist/data/group-member-roles.js +2 -2
  33. package/dist/data/group-members.d.ts +5 -5
  34. package/dist/data/group-members.js +27 -18
  35. package/dist/data/group-members.test.js +73 -73
  36. package/dist/data/group-permissions.d.ts +3 -3
  37. package/dist/data/group-permissions.js +13 -11
  38. package/dist/data/group-share.d.ts +2 -2
  39. package/dist/data/group-share.js +29 -24
  40. package/dist/data/groups.d.ts +4 -4
  41. package/dist/data/groups.js +27 -19
  42. package/dist/data/groups.test.js +44 -44
  43. package/dist/data/index.d.ts +6 -6
  44. package/dist/data/index.js +6 -6
  45. package/dist/data/knowledge/peer-types.js +9 -9
  46. package/dist/data/messages.d.ts +5 -5
  47. package/dist/data/messages.js +43 -30
  48. package/dist/data/orm/client-proxy.data-source.d.ts +4 -4
  49. package/dist/data/orm/client-proxy.data-source.js +10 -12
  50. package/dist/data/orm/cursor.d.ts +1 -1
  51. package/dist/data/orm/cursor.js +2 -2
  52. package/dist/data/orm/cursor.test.js +92 -93
  53. package/dist/data/orm/data-query.d.ts +3 -3
  54. package/dist/data/orm/data-query.js +24 -18
  55. package/dist/data/orm/data-query.mongo.d.ts +1 -1
  56. package/dist/data/orm/data-query.mongo.js +49 -51
  57. package/dist/data/orm/data-query.mongo.test.js +173 -204
  58. package/dist/data/orm/data-query.sqlite.d.ts +1 -1
  59. package/dist/data/orm/data-query.sqlite.js +84 -73
  60. package/dist/data/orm/data-query.sqlite.test.js +164 -176
  61. package/dist/data/orm/data-query.test.js +216 -224
  62. package/dist/data/orm/decorators.js +3 -3
  63. package/dist/data/orm/dependency-injection.test.js +53 -56
  64. package/dist/data/orm/doc.d.ts +4 -4
  65. package/dist/data/orm/doc.js +17 -21
  66. package/dist/data/orm/event-registry.d.ts +1 -1
  67. package/dist/data/orm/event-registry.test.js +16 -16
  68. package/dist/data/orm/factory.d.ts +2 -2
  69. package/dist/data/orm/factory.js +33 -33
  70. package/dist/data/orm/index.d.ts +10 -10
  71. package/dist/data/orm/index.js +10 -10
  72. package/dist/data/orm/multi-cursors.d.ts +1 -1
  73. package/dist/data/orm/multi-cursors.js +6 -6
  74. package/dist/data/orm/multi-cursors.test.js +152 -144
  75. package/dist/data/orm/sql.data-source.d.ts +7 -7
  76. package/dist/data/orm/sql.data-source.js +88 -93
  77. package/dist/data/orm/sql.data-source.test.js +109 -101
  78. package/dist/data/orm/subscribable.data-source.d.ts +4 -4
  79. package/dist/data/orm/subscribable.data-source.js +5 -5
  80. package/dist/data/orm/table-container-events.test.js +34 -26
  81. package/dist/data/orm/table-container.d.ts +6 -6
  82. package/dist/data/orm/table-container.js +33 -21
  83. package/dist/data/orm/table-container.test.js +64 -53
  84. package/dist/data/orm/table-definitions.system.d.ts +3 -3
  85. package/dist/data/orm/table-definitions.system.js +3 -3
  86. package/dist/data/orm/table-definitions.type.d.ts +5 -5
  87. package/dist/data/orm/table-dependencies.d.ts +2 -2
  88. package/dist/data/orm/table.d.ts +5 -5
  89. package/dist/data/orm/table.event-source.test.js +105 -115
  90. package/dist/data/orm/table.js +35 -34
  91. package/dist/data/orm/types.d.ts +3 -3
  92. package/dist/data/orm/types.js +26 -25
  93. package/dist/data/orm/types.test.js +166 -92
  94. package/dist/data/package-permissions.d.ts +1 -1
  95. package/dist/data/package-permissions.js +2 -2
  96. package/dist/data/package-version-permissions.d.ts +1 -1
  97. package/dist/data/package-version-permissions.js +2 -2
  98. package/dist/data/package-versions.d.ts +9 -9
  99. package/dist/data/package-versions.js +47 -33
  100. package/dist/data/packages.d.ts +2 -2
  101. package/dist/data/packages.js +36 -18
  102. package/dist/data/packages.utils.d.ts +2 -2
  103. package/dist/data/packages.utils.js +4 -4
  104. package/dist/data/persistent-vars.d.ts +15 -15
  105. package/dist/data/persistent-vars.js +165 -154
  106. package/dist/data/table-definitions-table.d.ts +5 -5
  107. package/dist/data/table-definitions-table.js +13 -12
  108. package/dist/data/tool-tests.js +6 -6
  109. package/dist/data/tools.js +29 -19
  110. package/dist/data/user-permissions.d.ts +1 -1
  111. package/dist/data/user-permissions.js +5 -5
  112. package/dist/data/user-permissions.test.js +90 -88
  113. package/dist/data/user-trust-levels.js +10 -10
  114. package/dist/data/users.d.ts +4 -4
  115. package/dist/data/users.js +16 -15
  116. package/dist/data/voice-messages.d.ts +2 -2
  117. package/dist/data/voice-messages.js +13 -13
  118. package/dist/data/welcome-modal.pvar.js +3 -1
  119. package/dist/data/workflow-logs.js +26 -18
  120. package/dist/data/workflow-runs.d.ts +6 -6
  121. package/dist/data/workflow-runs.js +70 -44
  122. package/dist/data/workflows.d.ts +2 -2
  123. package/dist/data/workflows.js +7 -9
  124. package/dist/device/binary-peer-connection-v2.d.ts +7 -7
  125. package/dist/device/binary-peer-connection-v2.js +32 -28
  126. package/dist/device/binary-peer-connection-v2.test.js +80 -67
  127. package/dist/device/binary-peer-connection.d.ts +7 -7
  128. package/dist/device/binary-peer-connection.js +29 -28
  129. package/dist/device/binary-peer-connection.test.js +35 -31
  130. package/dist/device/connection.d.ts +5 -5
  131. package/dist/device/connection.js +59 -48
  132. package/dist/device/connection.test.js +74 -68
  133. package/dist/device/device-election.d.ts +2 -2
  134. package/dist/device/device-election.js +25 -20
  135. package/dist/device/device-election.test.js +35 -36
  136. package/dist/device/device.d.ts +2 -2
  137. package/dist/device/device.js +10 -4
  138. package/dist/device/device.test.js +16 -17
  139. package/dist/device/get-trust-level-fn.d.ts +2 -2
  140. package/dist/device/get-trust-level-fn.js +22 -11
  141. package/dist/device/get-trust-level-fn.test.js +58 -58
  142. package/dist/device/socket-io-binary-peer.d.ts +1 -1
  143. package/dist/device/socket-io-binary-peer.js +16 -13
  144. package/dist/device/socket.type.d.ts +2 -2
  145. package/dist/device/streamed-socket.d.ts +2 -2
  146. package/dist/device/streamed-socket.js +8 -8
  147. package/dist/device/streamed-socket.test.js +40 -40
  148. package/dist/device/tx-encoding.test.js +77 -77
  149. package/dist/events.d.ts +1 -1
  150. package/dist/events.js +5 -2
  151. package/dist/group-invite/group-invite.js +110 -19
  152. package/dist/group-invite/group-invite.pvars.d.ts +2 -2
  153. package/dist/group-invite/group-invite.pvars.js +21 -13
  154. package/dist/group-invite/group-invite.types.d.ts +1 -1
  155. package/dist/group-invite/index.d.ts +3 -3
  156. package/dist/group-invite/index.js +1 -1
  157. package/dist/index.d.ts +25 -24
  158. package/dist/index.js +30 -25
  159. package/dist/keys.d.ts +3 -3
  160. package/dist/keys.js +31 -30
  161. package/dist/keys.test.js +69 -61
  162. package/dist/logging/console-logger.d.ts +1 -1
  163. package/dist/logging/console-logger.js +35 -40
  164. package/dist/logging/console-logger.test.js +115 -115
  165. package/dist/logging/console-logs.table.d.ts +3 -3
  166. package/dist/logging/console-logs.table.js +28 -23
  167. package/dist/mentions.js +16 -12
  168. package/dist/observable.d.ts +2 -2
  169. package/dist/observable.js +15 -9
  170. package/dist/observable.test.js +47 -47
  171. package/dist/package-loader/get-require.js +3 -4
  172. package/dist/package-loader/package-loader.d.ts +2 -2
  173. package/dist/package-loader/package-loader.js +52 -34
  174. package/dist/peers-ui/peers-ui.d.ts +2 -2
  175. package/dist/peers-ui/peers-ui.js +2 -4
  176. package/dist/peers-ui/peers-ui.types.d.ts +3 -3
  177. package/dist/peers-ui/peers-ui.types.js +0 -1
  178. package/dist/rpc-types.d.ts +61 -59
  179. package/dist/rpc-types.js +61 -55
  180. package/dist/serial-json.d.ts +1 -1
  181. package/dist/serial-json.js +50 -43
  182. package/dist/serial-json.test.js +22 -22
  183. package/dist/system-ids.js +8 -8
  184. package/dist/tools/index.d.ts +1 -1
  185. package/dist/tools/tools-factory.d.ts +1 -1
  186. package/dist/tools/tools-factory.js +2 -2
  187. package/dist/types/assistant-runner-args.d.ts +3 -3
  188. package/dist/types/peer-device.d.ts +1 -1
  189. package/dist/types/peers-package.d.ts +3 -3
  190. package/dist/types/workflow-logger.d.ts +1 -1
  191. package/dist/types/workflow-run-context.d.ts +4 -4
  192. package/dist/types/workflow.d.ts +4 -4
  193. package/dist/types/workflow.js +27 -14
  194. package/dist/types/zod-types.d.ts +2 -1
  195. package/dist/types/zod-types.js +9 -3
  196. package/dist/user-connect/connection-code.d.ts +1 -1
  197. package/dist/user-connect/connection-code.js +7 -7
  198. package/dist/user-connect/connection-code.test.js +106 -106
  199. package/dist/user-connect/index.d.ts +3 -3
  200. package/dist/user-connect/index.js +1 -1
  201. package/dist/user-connect/user-connect.pvars.js +13 -11
  202. package/dist/user-connect/user-connect.types.d.ts +3 -3
  203. package/dist/users.query.d.ts +2 -2
  204. package/dist/users.query.js +40 -30
  205. package/dist/utils.d.ts +2 -2
  206. package/dist/utils.js +34 -32
  207. package/dist/utils.test.js +12 -8
  208. package/dist/workflow-log-formatter.d.ts +1 -1
  209. package/dist/workflow-log-formatter.js +17 -18
  210. package/package.json +14 -8
@@ -2,11 +2,11 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.TableContainer = void 0;
4
4
  exports.checkVersionedUpdate = checkVersionedUpdate;
5
- const types_1 = require("./types");
5
+ const rpc_types_1 = require("../../rpc-types");
6
+ const utils_1 = require("../../utils");
6
7
  const table_1 = require("./table");
7
8
  const table_definitions_system_1 = require("./table-definitions.system");
8
- const utils_1 = require("../../utils");
9
- const rpc_types_1 = require("../../rpc-types");
9
+ const types_1 = require("./types");
10
10
  /**
11
11
  * Normalize metaData for structural comparison by stripping fields that can differ
12
12
  * between in-memory and DB-serialized representations without representing a real schema change.
@@ -27,16 +27,17 @@ function normalizeMetaDataForComparison(metaData) {
27
27
  */
28
28
  function checkVersionedUpdate(existingVersion, incomingVersion, existingMetaData, incomingMetaData) {
29
29
  if (existingVersion < incomingVersion) {
30
- return 'update';
30
+ return "update";
31
31
  }
32
32
  if (existingVersion === incomingVersion) {
33
- const sameDefinition = (0, utils_1.simpleObjectHash)(normalizeMetaDataForComparison(existingMetaData)) === (0, utils_1.simpleObjectHash)(normalizeMetaDataForComparison(incomingMetaData));
33
+ const sameDefinition = (0, utils_1.simpleObjectHash)(normalizeMetaDataForComparison(existingMetaData)) ===
34
+ (0, utils_1.simpleObjectHash)(normalizeMetaDataForComparison(incomingMetaData));
34
35
  if (!sameDefinition) {
35
36
  const tableName = (0, utils_1.getFullTableName)(existingMetaData);
36
37
  console.error(`Table "${tableName}" has two different definitions with the same versionNumber (${existingMetaData.versionNumber}). Skipping update. Increment versionNumber when changing table definitions.`);
37
38
  }
38
39
  }
39
- return 'skip';
40
+ return "skip";
40
41
  // commenting this out for now, it's too likely to end up in an infinite loop
41
42
  // if (existingVersion > incomingVersion) {
42
43
  // return 'skip';
@@ -81,7 +82,8 @@ class TableContainer {
81
82
  }
82
83
  if (existing && opts?.overwrite) {
83
84
  const existingDef = this.tableDefinitions[tableName];
84
- if (existingDef && (0, utils_1.simpleObjectHash)(existingDef.metaData) === (0, utils_1.simpleObjectHash)(tableDefinition.metaData)) {
85
+ if (existingDef &&
86
+ (0, utils_1.simpleObjectHash)(existingDef.metaData) === (0, utils_1.simpleObjectHash)(tableDefinition.metaData)) {
85
87
  return; // definition hasn't changed, no need to overwrite
86
88
  }
87
89
  console.warn(`Overwriting table definition for ${tableName}.`);
@@ -95,7 +97,7 @@ class TableContainer {
95
97
  */
96
98
  setTable(table, opts) {
97
99
  if (!(0, utils_1.isid)(table.metaData.tableId)) {
98
- throw new Error('Table must have a valid tableId in its metadata. Only system tables are allowed to have an empty tableId.');
100
+ throw new Error("Table must have a valid tableId in its metadata. Only system tables are allowed to have an empty tableId.");
99
101
  }
100
102
  const tableName = (0, utils_1.getFullTableName)(table.metaData);
101
103
  if (this.tableInstances[tableName]) {
@@ -109,7 +111,7 @@ class TableContainer {
109
111
  this.tableInstances[tableName] = table;
110
112
  }
111
113
  getTable(metaDataOrTableName, schema, tableConstructor) {
112
- if (typeof metaDataOrTableName === 'string') {
114
+ if (typeof metaDataOrTableName === "string") {
113
115
  return this.getTableByName(metaDataOrTableName);
114
116
  }
115
117
  const metaData = metaDataOrTableName;
@@ -135,7 +137,7 @@ class TableContainer {
135
137
  return;
136
138
  if (!metaData.tableId)
137
139
  return; // system tables don't need to be saved
138
- if (metaData.name === 'TableDefinitions')
140
+ if (metaData.name === "TableDefinitions")
139
141
  return; // avoid recursion
140
142
  if (this.savingDefinitions)
141
143
  return; // guard against re-entrant calls
@@ -143,7 +145,7 @@ class TableContainer {
143
145
  const tableName = (0, utils_1.getFullTableName)(metaData);
144
146
  try {
145
147
  // Lazy import to avoid circular dependency at module load time
146
- const { TableDefinitions } = require('../table-definitions-table');
148
+ const { TableDefinitions } = require("../table-definitions-table");
147
149
  const tableDefsTable = TableDefinitions();
148
150
  const record = {
149
151
  tableId: metaData.tableId,
@@ -152,17 +154,21 @@ class TableContainer {
152
154
  versionNumber: metaData.versionNumber ?? 0,
153
155
  };
154
156
  // Fire-and-forget: check if existing record has a newer versionNumber
155
- tableDefsTable.get(metaData.tableId).then(existing => {
157
+ tableDefsTable
158
+ .get(metaData.tableId)
159
+ .then((existing) => {
156
160
  if (existing) {
157
161
  const result = checkVersionedUpdate(existing.versionNumber, record.versionNumber, existing.metaData, record.metaData);
158
- if (result === 'skip') {
162
+ if (result === "skip") {
159
163
  return;
160
164
  }
161
165
  }
162
166
  return tableDefsTable.save(record, { restoreIfDeleted: true, saveAsSnapshot: true });
163
- }).catch(err => {
167
+ })
168
+ .catch((err) => {
164
169
  console.warn(`Failed to save table definition for ${tableName}:`, err);
165
- }).finally(() => {
170
+ })
171
+ .finally(() => {
166
172
  this.savingDefinitions = false;
167
173
  });
168
174
  }
@@ -212,14 +218,14 @@ class TableContainer {
212
218
  this.fallbackInstances[tableName] = table;
213
219
  return table;
214
220
  }
215
- const tableDefsTable = this.tableInstances['TableDefinitions'];
221
+ const tableDefsTable = this.tableInstances.TableDefinitions;
216
222
  if (!tableDefsTable)
217
223
  return null;
218
224
  // Subscribe once so future changes are picked up automatically
219
225
  if (!this.fallbackSubscribed) {
220
226
  this.fallbackSubscribed = true;
221
227
  tableDefsTable.dataChanged.subscribe((event) => {
222
- if (event.op === 'delete') {
228
+ if (event.op === "delete") {
223
229
  const md = event.dataObject?.metaData;
224
230
  if (md) {
225
231
  const name = (0, utils_1.getFullTableName)(md);
@@ -264,7 +270,7 @@ class TableContainer {
264
270
  const existingVersion = existing.metaData.versionNumber ?? 0;
265
271
  const incomingVersion = record.versionNumber ?? 0;
266
272
  const result = checkVersionedUpdate(existingVersion, incomingVersion, existing.metaData, metaData);
267
- if (result === 'skip') {
273
+ if (result === "skip") {
268
274
  return;
269
275
  }
270
276
  // Remove old fallback instance so it gets re-created with the new schema
@@ -279,10 +285,13 @@ class TableContainer {
279
285
  *
280
286
  * This is primarily intended to be used by the peer-device sync operation which needs all
281
287
  * tables to be able to apply changes correctly.
282
- */
288
+ */
283
289
  getAllTables() {
284
290
  // 1. Instantiate all full definitions (system + code-registered)
285
- const fullDefinitions = [...Object.values(table_definitions_system_1.systemTableDefinitions), ...Object.values(this.tableDefinitions)];
291
+ const fullDefinitions = [
292
+ ...Object.values(table_definitions_system_1.systemTableDefinitions),
293
+ ...Object.values(this.tableDefinitions),
294
+ ];
286
295
  for (const tableDefinition of fullDefinitions) {
287
296
  const { metaData, schema, tableConstructor } = tableDefinition;
288
297
  this.getTable(metaData, schema, tableConstructor);
@@ -296,7 +305,10 @@ class TableContainer {
296
305
  }
297
306
  }
298
307
  // 3. Merge: full instances take precedence, then add fallbacks for tables not in full
299
- const result = { ...this.fallbackInstances, ...this.tableInstances };
308
+ const result = {
309
+ ...this.fallbackInstances,
310
+ ...this.tableInstances,
311
+ };
300
312
  return Object.values(result);
301
313
  }
302
314
  }
@@ -1,62 +1,73 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const zod_1 = require("zod");
4
- const table_container_1 = require("./table-container");
5
- const event_registry_1 = require("./event-registry");
6
- const client_proxy_data_source_1 = require("./client-proxy.data-source");
7
- const table_1 = require("./table");
8
4
  const field_type_1 = require("../../types/field-type");
9
5
  const utils_1 = require("../../utils");
10
- describe('checkVersionedUpdate', () => {
11
- const metaA = { name: 'TestTable', fields: [{ name: 'id', type: 'string' }] };
12
- const metaAReordered = { fields: [{ name: 'id', type: 'string' }], name: 'TestTable' };
13
- const metaB = { name: 'TestTable', fields: [{ name: 'id', type: 'number' }] };
14
- it('should skip when existing version is strictly newer', () => {
15
- expect((0, table_container_1.checkVersionedUpdate)(200, 100, metaA, metaB)).toBe('skip');
6
+ const client_proxy_data_source_1 = require("./client-proxy.data-source");
7
+ const event_registry_1 = require("./event-registry");
8
+ const table_1 = require("./table");
9
+ const table_container_1 = require("./table-container");
10
+ describe("checkVersionedUpdate", () => {
11
+ const metaA = {
12
+ name: "TestTable",
13
+ fields: [{ name: "id", type: "string" }],
14
+ };
15
+ const metaAReordered = {
16
+ fields: [{ name: "id", type: "string" }],
17
+ name: "TestTable",
18
+ };
19
+ const metaB = {
20
+ name: "TestTable",
21
+ fields: [{ name: "id", type: "number" }],
22
+ };
23
+ it("should skip when existing version is strictly newer", () => {
24
+ expect((0, table_container_1.checkVersionedUpdate)(200, 100, metaA, metaB)).toBe("skip");
16
25
  });
17
- it('should update when incoming version is strictly newer', () => {
18
- expect((0, table_container_1.checkVersionedUpdate)(100, 200, metaA, metaB)).toBe('update');
26
+ it("should update when incoming version is strictly newer", () => {
27
+ expect((0, table_container_1.checkVersionedUpdate)(100, 200, metaA, metaB)).toBe("update");
19
28
  });
20
- it('should skip when same non-zero version and same definition', () => {
21
- expect((0, table_container_1.checkVersionedUpdate)(100, 100, metaA, metaA)).toBe('skip');
29
+ it("should skip when same non-zero version and same definition", () => {
30
+ expect((0, table_container_1.checkVersionedUpdate)(100, 100, metaA, metaA)).toBe("skip");
22
31
  });
23
- it('should skip when same non-zero version and same definition with different key order', () => {
24
- expect((0, table_container_1.checkVersionedUpdate)(100, 100, metaA, metaAReordered)).toBe('skip');
32
+ it("should skip when same non-zero version and same definition with different key order", () => {
33
+ expect((0, table_container_1.checkVersionedUpdate)(100, 100, metaA, metaAReordered)).toBe("skip");
25
34
  });
26
- it('should skip when same non-zero version but different definitions', () => {
27
- expect((0, table_container_1.checkVersionedUpdate)(100, 100, metaA, metaB)).toBe('skip');
35
+ it("should skip when same non-zero version but different definitions", () => {
36
+ expect((0, table_container_1.checkVersionedUpdate)(100, 100, metaA, metaB)).toBe("skip");
28
37
  });
29
- it('should skip when both versions are 0 and definitions are the same', () => {
30
- expect((0, table_container_1.checkVersionedUpdate)(0, 0, metaA, metaA)).toBe('skip');
38
+ it("should skip when both versions are 0 and definitions are the same", () => {
39
+ expect((0, table_container_1.checkVersionedUpdate)(0, 0, metaA, metaA)).toBe("skip");
31
40
  });
32
- it('should skip when both versions are 0 and definitions are the same with different key order', () => {
33
- expect((0, table_container_1.checkVersionedUpdate)(0, 0, metaA, metaAReordered)).toBe('skip');
41
+ it("should skip when both versions are 0 and definitions are the same with different key order", () => {
42
+ expect((0, table_container_1.checkVersionedUpdate)(0, 0, metaA, metaAReordered)).toBe("skip");
34
43
  });
35
- it('should skip when both versions are 0 and definitions differ', () => {
36
- expect((0, table_container_1.checkVersionedUpdate)(0, 0, metaA, metaB)).toBe('skip');
44
+ it("should skip when both versions are 0 and definitions differ", () => {
45
+ expect((0, table_container_1.checkVersionedUpdate)(0, 0, metaA, metaB)).toBe("skip");
37
46
  });
38
- it('should update when incoming is newer regardless of definition content', () => {
39
- expect((0, table_container_1.checkVersionedUpdate)(50, 100, metaA, metaA)).toBe('update');
40
- expect((0, table_container_1.checkVersionedUpdate)(50, 100, metaA, metaB)).toBe('update');
47
+ it("should update when incoming is newer regardless of definition content", () => {
48
+ expect((0, table_container_1.checkVersionedUpdate)(50, 100, metaA, metaA)).toBe("update");
49
+ expect((0, table_container_1.checkVersionedUpdate)(50, 100, metaA, metaB)).toBe("update");
41
50
  });
42
- it('should skip when existing is newer regardless of definition content', () => {
43
- expect((0, table_container_1.checkVersionedUpdate)(100, 50, metaA, metaA)).toBe('skip');
44
- expect((0, table_container_1.checkVersionedUpdate)(100, 50, metaA, metaB)).toBe('skip');
51
+ it("should skip when existing is newer regardless of definition content", () => {
52
+ expect((0, table_container_1.checkVersionedUpdate)(100, 50, metaA, metaA)).toBe("skip");
53
+ expect((0, table_container_1.checkVersionedUpdate)(100, 50, metaA, metaB)).toBe("skip");
45
54
  });
46
55
  });
47
56
  // --- Tiered table instance tests ---
48
57
  // Custom Table subclass for testing
49
58
  class CustomTestTable extends table_1.Table {
50
59
  customMethod() {
51
- return 'custom';
60
+ return "custom";
52
61
  }
53
62
  }
54
63
  function createTestHarness() {
55
- const mockDataContext = { dataContextId: 'test-context' };
64
+ const mockDataContext = { dataContextId: "test-context" };
56
65
  const eventRegistry = new event_registry_1.EventRegistry(mockDataContext);
57
- const tableFactory = jest.fn().mockImplementation((metaData, schema, TableClass) => {
66
+ const tableFactory = jest
67
+ .fn()
68
+ .mockImplementation((metaData, schema, TableClass) => {
58
69
  const deps = {
59
- dataSource: new client_proxy_data_source_1.ClientProxyDataSource(metaData, schema, 'test-context'),
70
+ dataSource: new client_proxy_data_source_1.ClientProxyDataSource(metaData, schema, "test-context"),
60
71
  eventRegistry,
61
72
  };
62
73
  return new (TableClass || table_1.Table)(metaData, deps);
@@ -65,12 +76,12 @@ function createTestHarness() {
65
76
  const tableId = (0, utils_1.newid)();
66
77
  const testMetaData = {
67
78
  tableId,
68
- name: 'TestPkgTable',
69
- description: 'A package-defined table',
70
- primaryKeyName: 'id',
79
+ name: "TestPkgTable",
80
+ description: "A package-defined table",
81
+ primaryKeyName: "id",
71
82
  fields: [
72
- { name: 'id', type: field_type_1.FieldType.id },
73
- { name: 'title', type: field_type_1.FieldType.string },
83
+ { name: "id", type: field_type_1.FieldType.id },
84
+ { name: "title", type: field_type_1.FieldType.string },
74
85
  ],
75
86
  };
76
87
  const testSchema = zod_1.z.object({
@@ -85,8 +96,8 @@ function createTestHarness() {
85
96
  };
86
97
  return { container, testMetaData, testSchema, defRecord, tableFactory };
87
98
  }
88
- describe('Tiered table instances', () => {
89
- it('bare-bones fallback instance should NOT block full instance with custom constructor', () => {
99
+ describe("Tiered table instances", () => {
100
+ it("bare-bones fallback instance should NOT block full instance with custom constructor", () => {
90
101
  const { container, testMetaData, testSchema, defRecord } = createTestHarness();
91
102
  // Simulate sync: register from a TableDefinitionRecord (no custom constructor)
92
103
  // (method is private — normally auto-called via dataChanged subscription)
@@ -99,9 +110,9 @@ describe('Tiered table instances', () => {
99
110
  const fullTable = container.getTable(testMetaData, testSchema, CustomTestTable);
100
111
  // The full instance should be a CustomTestTable, NOT the bare-bones Table
101
112
  expect(fullTable).toBeInstanceOf(CustomTestTable);
102
- expect(fullTable.customMethod()).toBe('custom');
113
+ expect(fullTable.customMethod()).toBe("custom");
103
114
  });
104
- it('getTableByName should return full instance when one exists', () => {
115
+ it("getTableByName should return full instance when one exists", () => {
105
116
  const { container, testMetaData, testSchema, defRecord } = createTestHarness();
106
117
  // Register fallback definition (private — normally auto-called)
107
118
  container.registerFromTableDefinitionRecord(defRecord);
@@ -113,7 +124,7 @@ describe('Tiered table instances', () => {
113
124
  expect(byName).toBe(fullTable);
114
125
  expect(byName).toBeInstanceOf(CustomTestTable);
115
126
  });
116
- it('getTableByName should return fallback instance when no full instance exists', () => {
127
+ it("getTableByName should return fallback instance when no full instance exists", () => {
117
128
  const { container, defRecord } = createTestHarness();
118
129
  // Only register from definition record -- no full definition available (private — normally auto-called)
119
130
  container.registerFromTableDefinitionRecord(defRecord);
@@ -122,18 +133,18 @@ describe('Tiered table instances', () => {
122
133
  expect(table).toBeInstanceOf(table_1.Table);
123
134
  expect(table).not.toBeInstanceOf(CustomTestTable);
124
135
  });
125
- it('getAllTables should prefer full instances over fallback instances', () => {
136
+ it("getAllTables should prefer full instances over fallback instances", () => {
126
137
  const { container, testMetaData, testSchema, defRecord, tableFactory } = createTestHarness();
127
138
  // Create a second table that will only have a fallback definition
128
139
  const tableId2 = (0, utils_1.newid)();
129
140
  const metaData2 = {
130
141
  tableId: tableId2,
131
- name: 'OtherTable',
132
- description: 'Another table',
133
- primaryKeyName: 'id',
142
+ name: "OtherTable",
143
+ description: "Another table",
144
+ primaryKeyName: "id",
134
145
  fields: [
135
- { name: 'id', type: field_type_1.FieldType.id },
136
- { name: 'value', type: field_type_1.FieldType.string },
146
+ { name: "id", type: field_type_1.FieldType.id },
147
+ { name: "value", type: field_type_1.FieldType.string },
137
148
  ],
138
149
  };
139
150
  const defRecord2 = {
@@ -149,14 +160,14 @@ describe('Tiered table instances', () => {
149
160
  container.getTable(testMetaData, testSchema, CustomTestTable);
150
161
  // getAllTables should include both tables
151
162
  const allTables = container.getAllTables();
152
- const tableNames = allTables.map(t => t.tableName);
163
+ const tableNames = allTables.map((t) => t.tableName);
153
164
  expect(tableNames).toContain(defRecord.name);
154
165
  expect(tableNames).toContain(defRecord2.name);
155
166
  // The first table should be the full CustomTestTable instance
156
- const firstTable = allTables.find(t => t.tableName === defRecord.name);
167
+ const firstTable = allTables.find((t) => t.tableName === defRecord.name);
157
168
  expect(firstTable).toBeInstanceOf(CustomTestTable);
158
169
  // The second table should be a bare-bones Table (fallback)
159
- const secondTable = allTables.find(t => t.tableName === defRecord2.name);
170
+ const secondTable = allTables.find((t) => t.tableName === defRecord2.name);
160
171
  expect(secondTable).toBeInstanceOf(table_1.Table);
161
172
  expect(secondTable).not.toBeInstanceOf(CustomTestTable);
162
173
  });
@@ -1,6 +1,6 @@
1
- import { z } from 'zod';
2
- import { ITableDefinition, TableConstructor } from './table-definitions.type';
3
- import { ITableMetaData } from './types';
1
+ import type { z } from "zod";
2
+ import type { ITableDefinition, TableConstructor } from "./table-definitions.type";
3
+ import { type ITableMetaData } from "./types";
4
4
  export declare const systemTableDefinitions: {
5
5
  [tableName: string]: ITableDefinition<any>;
6
6
  };
@@ -3,15 +3,15 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.systemTableDefinitions = void 0;
4
4
  exports.registerSystemTableDefinition = registerSystemTableDefinition;
5
5
  const keys_1 = require("../../keys");
6
- const types_1 = require("./types");
7
6
  const utils_1 = require("../../utils");
7
+ const types_1 = require("./types");
8
8
  exports.systemTableDefinitions = {};
9
9
  function registerSystemTableDefinition(metaData, schema, tableConstructor) {
10
10
  const tableName = (0, utils_1.getFullTableName)(metaData);
11
11
  const def = {
12
12
  metaData,
13
13
  schema,
14
- tableConstructor
14
+ tableConstructor,
15
15
  };
16
16
  if (exports.systemTableDefinitions[tableName]) {
17
17
  const s1 = (0, keys_1.stableStringify)(exports.systemTableDefinitions[tableName].metaData);
@@ -19,7 +19,7 @@ function registerSystemTableDefinition(metaData, schema, tableConstructor) {
19
19
  if (s1 !== s2) {
20
20
  console.warn(`Attempt to register new metadata for system table ${tableName}, it will be ignored`, {
21
21
  registered: exports.systemTableDefinitions[tableName].metaData,
22
- incoming: metaData
22
+ incoming: metaData,
23
23
  });
24
24
  }
25
25
  return;
@@ -1,8 +1,8 @@
1
- import type { IDataSource } from './data-query';
2
- import type { Table } from './table';
3
- import type { ITableMetaData } from './types';
4
- import type { ITableDependencies } from './table-dependencies';
5
- import { z } from 'zod';
1
+ import type { z } from "zod";
2
+ import type { IDataSource } from "./data-query";
3
+ import type { Table } from "./table";
4
+ import type { ITableDependencies } from "./table-dependencies";
5
+ import type { ITableMetaData } from "./types";
6
6
  export type DataSourceFactory = (metaData: ITableMetaData, schema?: z.AnyZodObject, groupId?: string) => IDataSource<any>;
7
7
  export type TableConstructor<T extends {
8
8
  [key: string]: any;
@@ -1,7 +1,7 @@
1
- import { z } from "zod";
1
+ import type { z } from "zod";
2
+ import type { UserContext } from "../../context/user-context";
2
3
  import type { IDataSource } from "./data-query";
3
4
  import type { EventRegistry } from "./event-registry";
4
- import type { UserContext } from "../../context/user-context";
5
5
  import type { DataSourceFactory } from "./table-definitions.type";
6
6
  /**
7
7
  * Dependencies required by Table instances.
@@ -1,9 +1,9 @@
1
- import { z } from "zod";
2
- import { Emitter, Event } from "../../events";
3
- import { DataFilter, ICursorIterable, IDataQueryParams, IDataSource, ISaveOptions } from "./data-query";
4
- import { IDataChangedEvent } from "./subscribable.data-source";
5
- import { ITableMetaData } from "./types";
1
+ import type { z } from "zod";
2
+ import type { Emitter, Event } from "../../events";
3
+ import { type DataFilter, type ICursorIterable, type IDataQueryParams, type IDataSource, type ISaveOptions } from "./data-query";
4
+ import { type IDataChangedEvent } from "./subscribable.data-source";
6
5
  import type { ITableDependencies } from "./table-dependencies";
6
+ import { type ITableMetaData } from "./types";
7
7
  export declare class Table<T extends {
8
8
  [key: string]: any;
9
9
  }> implements IDataSource<T> {