@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
@@ -22,51 +22,51 @@ class SQLDataSource {
22
22
  this.schema = schema;
23
23
  this.tableName = (0, utils_1.getFullTableName)(metaData);
24
24
  this.primaryKeyName = metaData.primaryKeyName;
25
- const primaryKeyIsValid = metaData.fields.find(f => f.name === metaData.primaryKeyName);
25
+ const primaryKeyIsValid = metaData.fields.find((f) => f.name === metaData.primaryKeyName);
26
26
  if (!primaryKeyIsValid) {
27
27
  throw new Error(`Table "${this.tableName}", primary key "${metaData.primaryKeyName}" is not a valid field name`);
28
28
  }
29
29
  }
30
30
  buildTableSql() {
31
- let fieldsSql = [];
31
+ const fieldsSql = [];
32
32
  for (const field of this.metaData.fields) {
33
33
  let sqlType = "";
34
34
  switch (field.type) {
35
- case 'id':
35
+ case "id":
36
36
  // consider using: `id TEXT NOT NULL CHECK (length(id) = 25)
37
- sqlType = 'TEXT';
37
+ sqlType = "TEXT";
38
38
  break;
39
- case 'string':
40
- sqlType = 'TEXT';
39
+ case "string":
40
+ sqlType = "TEXT";
41
41
  break;
42
- case 'number':
43
- sqlType = 'REAL';
42
+ case "number":
43
+ sqlType = "REAL";
44
44
  break;
45
- case 'boolean':
46
- sqlType = 'INTEGER';
45
+ case "boolean":
46
+ sqlType = "INTEGER";
47
47
  break;
48
- case 'Date':
49
- sqlType = 'TEXT';
48
+ case "Date":
49
+ sqlType = "TEXT";
50
50
  break;
51
- case 'object':
52
- sqlType = 'TEXT';
51
+ case "object":
52
+ sqlType = "TEXT";
53
53
  break;
54
54
  default:
55
- sqlType = 'TEXT';
55
+ sqlType = "TEXT";
56
56
  }
57
- let options = field.optional ? 'NULL' : 'NOT NULL';
57
+ let options = field.optional ? "NULL" : "NOT NULL";
58
58
  if (field.name === this.metaData.primaryKeyName) {
59
- options += ' PRIMARY KEY';
59
+ options += " PRIMARY KEY";
60
60
  }
61
61
  fieldsSql.push(`"${field.name}" ${sqlType} ${options}`);
62
62
  }
63
63
  // const fields = this.dataType.fields.map(f => `${f.name} ${f.type}`).join(', ');
64
- const fields = fieldsSql.join(',\n');
64
+ const fields = fieldsSql.join(",\n");
65
65
  const sql = [
66
66
  `CREATE TABLE IF NOT EXISTS "${this.tableName}" (`,
67
67
  ` ${fields}`,
68
68
  `) WITHOUT ROWID`,
69
- ].join('\n');
69
+ ].join("\n");
70
70
  return sql;
71
71
  }
72
72
  async ensureTableAndIndexesExist() {
@@ -77,19 +77,21 @@ class SQLDataSource {
77
77
  // create indexes if they don't exist
78
78
  if (this.metaData.indexes) {
79
79
  for (const index of this.metaData.indexes) {
80
- let fieldNames = '';
81
- const fields = index.fields.map(f => {
82
- if (typeof f === 'string') {
83
- fieldNames += '_' + f;
80
+ let fieldNames = "";
81
+ const fields = index.fields
82
+ .map((f) => {
83
+ if (typeof f === "string") {
84
+ fieldNames += `_${f}`;
84
85
  return f;
85
86
  }
86
87
  else {
87
- fieldNames += '_' + f.name;
88
+ fieldNames += `_${f.name}`;
88
89
  return `${f.name} ${f.order}`;
89
90
  }
90
- }).join(', ');
91
+ })
92
+ .join(", ");
91
93
  const hash = (0, utils_1.simpleHash)(JSON.stringify(index));
92
- const unique = index.unique ? 'UNIQUE' : '';
94
+ const unique = index.unique ? "UNIQUE" : "";
93
95
  const indexName = `${this.tableName}_${fieldNames}_${hash}`;
94
96
  indexNames.push(indexName);
95
97
  const sql = `CREATE ${unique} INDEX IF NOT EXISTS "${indexName}" ON "${this.tableName}"(${fields});`;
@@ -105,7 +107,7 @@ class SQLDataSource {
105
107
  const existingIndexes = (await this.db.all(`PRAGMA index_list("${this.tableName}")`, [])) || [];
106
108
  for (const existingIndex of existingIndexes) {
107
109
  const indexName = existingIndex.name;
108
- if (!indexNames.includes(indexName) && !indexName.startsWith('sqlite_autoindex_')) {
110
+ if (!indexNames.includes(indexName) && !indexName.startsWith("sqlite_autoindex_")) {
109
111
  console.log(`Dropping index "${indexName}" because it's no longer in the schema.`);
110
112
  const sql = `DROP INDEX IF EXISTS "${indexName}"`;
111
113
  await this.db.exec(sql, []);
@@ -116,22 +118,23 @@ class SQLDataSource {
116
118
  const now = new Date();
117
119
  await this.ensureTableAndIndexesExist();
118
120
  let newestTableDef = this.buildTableSql();
119
- newestTableDef = newestTableDef.replace(/CREATE TABLE IF NOT EXISTS/, 'CREATE TABLE');
121
+ newestTableDef = newestTableDef.replace(/CREATE TABLE IF NOT EXISTS/, "CREATE TABLE");
120
122
  const sqlGetTableRecord = `SELECT * FROM sqlite_master WHERE type = 'table' AND name = '${this.tableName}'`;
121
123
  const table = await this.db.get(sqlGetTableRecord, []);
122
- const existingTableDef = table?.sql || '';
124
+ const existingTableDef = table?.sql || "";
123
125
  if (newestTableDef !== existingTableDef) {
124
126
  console.log(`Table "${this.tableName}" is out of date, updating...`);
125
127
  // rename table
126
- const tempTableName = this.tableName + `_old_${now.getTime()}`;
128
+ const tempTableName = `${this.tableName}_old_${now.getTime()}`;
127
129
  const renameSql = `ALTER TABLE "${this.tableName}" RENAME TO "${tempTableName}"`;
128
130
  await this.db.exec(renameSql, []);
129
131
  // create new table
130
132
  await this.ensureTableAndIndexesExist();
131
133
  // sql query to copy existing data and set new required fields to default values
132
134
  const defaults = this.initRecord();
133
- const fieldsInsert = this.metaData.fields.map(f => `"${f.name}"`).join(', ');
134
- const fieldsSelect = this.metaData.fields.map(f => {
135
+ const fieldsInsert = this.metaData.fields.map((f) => `"${f.name}"`).join(", ");
136
+ const fieldsSelect = this.metaData.fields
137
+ .map((f) => {
135
138
  const existingField = existingTableDef.includes(`"${f.name}"`);
136
139
  if (existingField && f.optional) {
137
140
  return `"${f.name}"`;
@@ -148,7 +151,8 @@ class SQLDataSource {
148
151
  return `'${defaultValue}' as "${f.name}"`;
149
152
  }
150
153
  return `NULL as "${f.name}"`;
151
- }).join(', ');
154
+ })
155
+ .join(", ");
152
156
  const insertSql = `INSERT INTO "${this.tableName}"(${fieldsInsert}) SELECT ${fieldsSelect} FROM "${tempTableName}"`;
153
157
  await this.db.exec(insertSql, []);
154
158
  // drop old table
@@ -173,7 +177,7 @@ class SQLDataSource {
173
177
  return record;
174
178
  }
175
179
  async list(filter = {}, opts = {}) {
176
- let dataQuery = new data_query_1.DataQuery(this, {
180
+ const dataQuery = new data_query_1.DataQuery(this, {
177
181
  filter: filter,
178
182
  ...opts,
179
183
  });
@@ -182,18 +186,16 @@ class SQLDataSource {
182
186
  const records = await this.db.all(sqlQuery, []);
183
187
  return records.map((r) => this.sqlRecordToJsRecord(r));
184
188
  }
185
- ;
186
189
  async count(filter = {}) {
187
- let dataQuery = new data_query_1.DataQuery(this, {
190
+ const dataQuery = new data_query_1.DataQuery(this, {
188
191
  filter: filter,
189
192
  });
190
193
  await this.initTable();
191
194
  let sqlQuery = (0, data_query_sqlite_1.dataQueryToSqliteQuery)(dataQuery);
192
- sqlQuery = sqlQuery.replace('SELECT\n *\n', 'SELECT COUNT(*) as cnt\n');
195
+ sqlQuery = sqlQuery.replace("SELECT\n *\n", "SELECT COUNT(*) as cnt\n");
193
196
  const cnt = await this.db.get(sqlQuery, []);
194
- return cnt['cnt'];
197
+ return cnt.cnt;
195
198
  }
196
- ;
197
199
  cursor(filter = {}, opts = {}) {
198
200
  return (0, data_query_1.dataSourceCursor)(this, filter, opts);
199
201
  }
@@ -231,8 +233,7 @@ class SQLDataSource {
231
233
  delete record[field.name];
232
234
  }
233
235
  else {
234
- record[field.name] =
235
- sqlValueToJsValue(record[field.name], field.type, field.isArray ?? false);
236
+ record[field.name] = sqlValueToJsValue(record[field.name], field.type, field.isArray ?? false);
236
237
  }
237
238
  }
238
239
  }
@@ -251,9 +252,9 @@ class SQLDataSource {
251
252
  catch (e) {
252
253
  throw new Error(`Validation on insert failed for ${this.tableName}: ${e}`);
253
254
  }
254
- const fields = this.metaData.fields.map(field => `"${field.name}"`).join(', ');
255
- const values = this.metaData.fields.map(field => jsValueToSqlValue(record[field.name]));
256
- const placeholders = values.map(v => '?').join(', ');
255
+ const fields = this.metaData.fields.map((field) => `"${field.name}"`).join(", ");
256
+ const values = this.metaData.fields.map((field) => jsValueToSqlValue(record[field.name]));
257
+ const placeholders = values.map((_v) => "?").join(", ");
257
258
  const sql = `INSERT INTO "${this.tableName}"(${fields}) VALUES(${placeholders})`;
258
259
  await this.db.exec(sql, values);
259
260
  return record;
@@ -267,27 +268,24 @@ class SQLDataSource {
267
268
  // validate data
268
269
  this.schema.parse(record);
269
270
  const primaryKey = record[this.metaData.primaryKeyName];
270
- const fields = this.metaData.fields.map(field => {
271
- if (field.name === this.metaData.primaryKeyName)
272
- return;
273
- return `"${field.name}" = ?`;
274
- }).filter(v => v !== undefined).join(',\n');
275
- const values = this.metaData.fields.map(field => {
276
- if (field.name === this.metaData.primaryKeyName)
277
- return;
278
- return jsValueToSqlValue(record[field.name]);
279
- }).filter(v => v !== undefined);
271
+ const fields = this.metaData.fields
272
+ .filter((field) => field.name !== this.metaData.primaryKeyName)
273
+ .map((field) => `"${field.name}" = ?`)
274
+ .join(",\n");
275
+ const values = this.metaData.fields
276
+ .filter((field) => field.name !== this.metaData.primaryKeyName)
277
+ .map((field) => jsValueToSqlValue(record[field.name]));
280
278
  const sql = [
281
279
  `UPDATE "${this.tableName}"`,
282
280
  `SET ${fields}`,
283
281
  `WHERE "${this.metaData.primaryKeyName}" = ?`,
284
- ].join('\n');
282
+ ].join("\n");
285
283
  await this.db.exec(sql, [...values, primaryKey]);
286
284
  return record;
287
285
  }
288
286
  async delete(idOrRecord) {
289
287
  await this.initTable();
290
- const primaryKey = typeof idOrRecord === 'string' ? idOrRecord : idOrRecord[this.metaData.primaryKeyName];
288
+ const primaryKey = typeof idOrRecord === "string" ? idOrRecord : idOrRecord[this.metaData.primaryKeyName];
291
289
  const sql = `DELETE FROM "${this.tableName}" WHERE "${this.metaData.primaryKeyName}" = ?`;
292
290
  await this.db.exec(sql, [primaryKey]);
293
291
  }
@@ -307,7 +305,7 @@ class SQLDataSource {
307
305
  const zodField = this.schema.shape[field.name];
308
306
  const value = zodField.safeParse(data[field.name]);
309
307
  if (value.success) {
310
- // @ts-ignore
308
+ // @ts-expect-error
311
309
  defaults[field.name] = value.data;
312
310
  }
313
311
  }
@@ -332,11 +330,11 @@ class SQLDataSource {
332
330
  catch (e) {
333
331
  throw new Error(`Validation on insert failed for ${this.tableName}: ${e}`);
334
332
  }
335
- const fields = this.metaData.fields.map(field => `"${field.name}"`).join(', ');
336
- const values = this.metaData.fields.map(field => jsValueToSqlValue(record[field.name]));
337
- const placeholders = values.map(v => '?').join(', ');
333
+ const fields = this.metaData.fields.map((field) => `"${field.name}"`).join(", ");
334
+ const values = this.metaData.fields.map((field) => jsValueToSqlValue(record[field.name]));
335
+ const placeholders = values.map((_v) => "?").join(", ");
338
336
  const sql = `INSERT INTO "${this.tableName}"(${fields}) VALUES(${placeholders})`;
339
- this.db.execSync(sql, values);
337
+ this.db.execSync?.(sql, values);
340
338
  return record;
341
339
  }
342
340
  /**
@@ -351,22 +349,19 @@ class SQLDataSource {
351
349
  // validate data
352
350
  this.schema.parse(record);
353
351
  const primaryKey = record[this.metaData.primaryKeyName];
354
- const fields = this.metaData.fields.map(field => {
355
- if (field.name === this.metaData.primaryKeyName)
356
- return;
357
- return `"${field.name}" = ?`;
358
- }).filter(v => v !== undefined).join(',\n');
359
- const values = this.metaData.fields.map(field => {
360
- if (field.name === this.metaData.primaryKeyName)
361
- return;
362
- return jsValueToSqlValue(record[field.name]);
363
- }).filter(v => v !== undefined);
352
+ const fields = this.metaData.fields
353
+ .filter((field) => field.name !== this.metaData.primaryKeyName)
354
+ .map((field) => `"${field.name}" = ?`)
355
+ .join(",\n");
356
+ const values = this.metaData.fields
357
+ .filter((field) => field.name !== this.metaData.primaryKeyName)
358
+ .map((field) => jsValueToSqlValue(record[field.name]));
364
359
  const sql = [
365
360
  `UPDATE "${this.tableName}"`,
366
361
  `SET ${fields}`,
367
362
  `WHERE "${this.metaData.primaryKeyName}" = ?`,
368
- ].join('\n');
369
- this.db.execSync(sql, [...values, primaryKey]);
363
+ ].join("\n");
364
+ this.db.execSync?.(sql, [...values, primaryKey]);
370
365
  return record;
371
366
  }
372
367
  /**
@@ -374,9 +369,9 @@ class SQLDataSource {
374
369
  * Table must be initialized before calling this method.
375
370
  */
376
371
  deleteSync(idOrRecord) {
377
- const primaryKey = typeof idOrRecord === 'string' ? idOrRecord : idOrRecord[this.metaData.primaryKeyName];
372
+ const primaryKey = typeof idOrRecord === "string" ? idOrRecord : idOrRecord[this.metaData.primaryKeyName];
378
373
  const sql = `DELETE FROM "${this.tableName}" WHERE "${this.metaData.primaryKeyName}" = ?`;
379
- this.db.execSync(sql, [primaryKey]);
374
+ this.db.execSync?.(sql, [primaryKey]);
380
375
  }
381
376
  /**
382
377
  * Synchronous save (insert or update) for use within transactions.
@@ -385,7 +380,7 @@ class SQLDataSource {
385
380
  saveSync(record) {
386
381
  const primaryKey = record[this.metaData.primaryKeyName];
387
382
  if (primaryKey) {
388
- const existingRecord = this.db.getSync(`SELECT "${this.metaData.primaryKeyName}" FROM "${this.tableName}" WHERE ${this.metaData.primaryKeyName} = ?`, [primaryKey]);
383
+ const existingRecord = this.db.getSync?.(`SELECT "${this.metaData.primaryKeyName}" FROM "${this.tableName}" WHERE ${this.metaData.primaryKeyName} = ?`, [primaryKey]);
389
384
  if (existingRecord) {
390
385
  return this.updateSync(record);
391
386
  }
@@ -413,7 +408,7 @@ class SQLDataSource {
413
408
  return results;
414
409
  }
415
410
  return this.db.runInTransaction(() => {
416
- return records.map(record => this.insertSync(record));
411
+ return records.map((record) => this.insertSync(record));
417
412
  });
418
413
  }
419
414
  /**
@@ -456,7 +451,7 @@ class SQLDataSource {
456
451
  return results;
457
452
  }
458
453
  return this.db.runInTransaction(() => {
459
- return records.map(record => this.saveSync(record));
454
+ return records.map((record) => this.saveSync(record));
460
455
  });
461
456
  }
462
457
  }
@@ -467,13 +462,13 @@ function jsValueToSqlValue(value, escapeQuote = false) {
467
462
  if (value instanceof Date) {
468
463
  return value.toISOString();
469
464
  }
470
- if (typeof value === 'object') {
465
+ if (typeof value === "object") {
471
466
  return (0, serial_json_1.toJSONString)(value);
472
467
  }
473
- if (typeof value === 'boolean') {
468
+ if (typeof value === "boolean") {
474
469
  return value ? 1 : 0;
475
470
  }
476
- if (typeof value === 'string' && escapeQuote) {
471
+ if (typeof value === "string" && escapeQuote) {
477
472
  return value.replace(/'/g, "''");
478
473
  }
479
474
  return value;
@@ -486,19 +481,19 @@ function sqlValueToJsValue(value, fieldType, isArray) {
486
481
  if (isArray) {
487
482
  return (0, serial_json_1.fromJSONString)(value);
488
483
  }
489
- if (fieldType === 'Date') {
484
+ if (fieldType === "Date") {
490
485
  return new Date(value);
491
486
  }
492
- if (fieldType === 'object') {
487
+ if (fieldType === "object") {
493
488
  return (0, serial_json_1.fromJSONString)(value);
494
489
  }
495
- if (fieldType === 'boolean') {
490
+ if (fieldType === "boolean") {
496
491
  return value === 1;
497
492
  }
498
- if (fieldType === 'string') {
493
+ if (fieldType === "string") {
499
494
  return String(value);
500
495
  }
501
- if (fieldType === 'number') {
496
+ if (fieldType === "number") {
502
497
  return Number(value);
503
498
  }
504
499
  return value;
@@ -510,17 +505,17 @@ function globalDefaultValues(field) {
510
505
  return [];
511
506
  }
512
507
  switch (fieldType) {
513
- case 'Date':
508
+ case "Date":
514
509
  return new Date(0);
515
- case 'object':
510
+ case "object":
516
511
  return {};
517
- case 'boolean':
512
+ case "boolean":
518
513
  return false;
519
- case 'string':
520
- return '';
521
- case 'number':
514
+ case "string":
515
+ return "";
516
+ case "number":
522
517
  return 0;
523
518
  default:
524
- return '';
519
+ return "";
525
520
  }
526
521
  }