@powersync/common 0.0.0-dev-20260504100448 → 0.0.0-dev-20260630144038

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 (263) hide show
  1. package/lib/attachments/AttachmentContext.d.ts +9 -8
  2. package/lib/attachments/AttachmentContext.js +8 -3
  3. package/lib/attachments/AttachmentContext.js.map +1 -1
  4. package/lib/attachments/AttachmentErrorHandler.d.ts +6 -6
  5. package/lib/attachments/AttachmentQueue.d.ts +85 -36
  6. package/lib/attachments/AttachmentQueue.js +19 -21
  7. package/lib/attachments/AttachmentQueue.js.map +1 -1
  8. package/lib/attachments/AttachmentService.d.ts +3 -3
  9. package/lib/attachments/AttachmentService.js +4 -3
  10. package/lib/attachments/AttachmentService.js.map +1 -1
  11. package/lib/attachments/LocalStorageAdapter.d.ts +14 -8
  12. package/lib/attachments/LocalStorageAdapter.js +3 -0
  13. package/lib/attachments/LocalStorageAdapter.js.map +1 -1
  14. package/lib/attachments/RemoteStorageAdapter.d.ts +4 -4
  15. package/lib/attachments/Schema.d.ts +14 -6
  16. package/lib/attachments/Schema.js +8 -3
  17. package/lib/attachments/Schema.js.map +1 -1
  18. package/lib/attachments/SyncingService.d.ts +2 -2
  19. package/lib/attachments/SyncingService.js +8 -3
  20. package/lib/attachments/SyncingService.js.map +1 -1
  21. package/lib/attachments/WatchedAttachmentItem.d.ts +3 -1
  22. package/lib/client/{AbstractPowerSyncDatabase.d.ts → CommonPowerSyncDatabase.d.ts} +112 -238
  23. package/lib/client/CommonPowerSyncDatabase.js +2 -0
  24. package/lib/client/CommonPowerSyncDatabase.js.map +1 -0
  25. package/lib/client/Query.d.ts +9 -0
  26. package/lib/client/SQLOpenFactory.d.ts +44 -10
  27. package/lib/client/SQLOpenFactory.js +1 -19
  28. package/lib/client/SQLOpenFactory.js.map +1 -1
  29. package/lib/client/compilableQueryWatch.d.ts +8 -2
  30. package/lib/client/compilableQueryWatch.js +4 -2
  31. package/lib/client/compilableQueryWatch.js.map +1 -1
  32. package/lib/client/connection/PowerSyncBackendConnector.d.ts +6 -3
  33. package/lib/client/connection/PowerSyncCredentials.d.ts +3 -0
  34. package/lib/client/runOnSchemaChange.d.ts +5 -2
  35. package/lib/client/runOnSchemaChange.js +3 -0
  36. package/lib/client/runOnSchemaChange.js.map +1 -1
  37. package/lib/client/sync/bucket/CrudBatch.d.ts +2 -0
  38. package/lib/client/sync/bucket/CrudBatch.js +2 -0
  39. package/lib/client/sync/bucket/CrudBatch.js.map +1 -1
  40. package/lib/client/sync/bucket/CrudEntry.d.ts +9 -31
  41. package/lib/client/sync/bucket/CrudEntry.js +2 -97
  42. package/lib/client/sync/bucket/CrudEntry.js.map +1 -1
  43. package/lib/client/sync/bucket/CrudTransaction.d.ts +3 -0
  44. package/lib/client/sync/bucket/CrudTransaction.js +3 -0
  45. package/lib/client/sync/bucket/CrudTransaction.js.map +1 -1
  46. package/lib/client/sync/options.d.ts +65 -0
  47. package/lib/client/sync/options.js +25 -0
  48. package/lib/client/sync/options.js.map +1 -0
  49. package/lib/client/sync/stream/JsonValue.d.ts +3 -0
  50. package/lib/client/sync/sync-streams.d.ts +23 -8
  51. package/lib/client/triggers/TriggerManager.d.ts +28 -56
  52. package/lib/client/triggers/TriggerManager.js +2 -1
  53. package/lib/client/triggers/TriggerManager.js.map +1 -1
  54. package/lib/client/triggers/sanitizeSQL.d.ts +4 -0
  55. package/lib/client/triggers/sanitizeSQL.js +4 -0
  56. package/lib/client/triggers/sanitizeSQL.js.map +1 -1
  57. package/lib/client/watched/GetAllQuery.d.ts +7 -3
  58. package/lib/client/watched/GetAllQuery.js +3 -1
  59. package/lib/client/watched/GetAllQuery.js.map +1 -1
  60. package/lib/client/watched/WatchedQuery.d.ts +20 -6
  61. package/lib/client/watched/WatchedQuery.js +3 -5
  62. package/lib/client/watched/WatchedQuery.js.map +1 -1
  63. package/lib/client/watched/processors/DifferentialQueryProcessor.d.ts +15 -45
  64. package/lib/client/watched/processors/DifferentialQueryProcessor.js +1 -172
  65. package/lib/client/watched/processors/DifferentialQueryProcessor.js.map +1 -1
  66. package/lib/client/watched/processors/OnChangeQueryProcessor.d.ts +4 -22
  67. package/lib/client/watched/processors/OnChangeQueryProcessor.js +1 -82
  68. package/lib/client/watched/processors/OnChangeQueryProcessor.js.map +1 -1
  69. package/lib/client/watched/processors/comparators.d.ts +8 -0
  70. package/lib/client/watched/processors/comparators.js +4 -0
  71. package/lib/client/watched/processors/comparators.js.map +1 -1
  72. package/lib/db/DBAdapter.d.ts +90 -113
  73. package/lib/db/DBAdapter.js +70 -89
  74. package/lib/db/DBAdapter.js.map +1 -1
  75. package/lib/db/QueryResult.d.ts +104 -0
  76. package/lib/db/QueryResult.js +96 -0
  77. package/lib/db/QueryResult.js.map +1 -0
  78. package/lib/db/crud/SyncProgress.d.ts +7 -14
  79. package/lib/db/crud/SyncProgress.js +1 -60
  80. package/lib/db/crud/SyncProgress.js.map +1 -1
  81. package/lib/db/crud/SyncStatus.d.ts +54 -91
  82. package/lib/db/crud/SyncStatus.js +1 -245
  83. package/lib/db/crud/SyncStatus.js.map +1 -1
  84. package/lib/db/crud/UploadQueueStatus.d.ts +3 -0
  85. package/lib/db/crud/UploadQueueStatus.js +3 -0
  86. package/lib/db/crud/UploadQueueStatus.js.map +1 -1
  87. package/lib/db/schema/Column.d.ts +22 -1
  88. package/lib/db/schema/Column.js +10 -4
  89. package/lib/db/schema/Column.js.map +1 -1
  90. package/lib/db/schema/Index.d.ts +8 -3
  91. package/lib/db/schema/Index.js +4 -1
  92. package/lib/db/schema/Index.js.map +1 -1
  93. package/lib/db/schema/IndexedColumn.d.ts +8 -3
  94. package/lib/db/schema/IndexedColumn.js +4 -1
  95. package/lib/db/schema/IndexedColumn.js.map +1 -1
  96. package/lib/db/schema/RawTable.d.ts +7 -1
  97. package/lib/db/schema/Schema.d.ts +10 -29
  98. package/lib/db/schema/Schema.js +3 -1
  99. package/lib/db/schema/Schema.js.map +1 -1
  100. package/lib/db/schema/Table.d.ts +69 -91
  101. package/lib/db/schema/Table.js +88 -87
  102. package/lib/db/schema/Table.js.map +1 -1
  103. package/lib/index.d.ts +6 -22
  104. package/lib/index.js +5 -22
  105. package/lib/index.js.map +1 -1
  106. package/lib/types/types.d.ts +6 -0
  107. package/lib/utils/BaseObserver.d.ts +12 -0
  108. package/lib/utils/BaseObserver.js +3 -0
  109. package/lib/utils/BaseObserver.js.map +1 -1
  110. package/lib/utils/Logger.d.ts +60 -22
  111. package/lib/utils/Logger.js +38 -30
  112. package/lib/utils/Logger.js.map +1 -1
  113. package/lib/utils/MetaBaseObserver.d.ts +11 -11
  114. package/lib/utils/MetaBaseObserver.js +1 -50
  115. package/lib/utils/MetaBaseObserver.js.map +1 -1
  116. package/lib/utils/mutex.d.ts +3 -45
  117. package/lib/utils/mutex.js +1 -153
  118. package/lib/utils/mutex.js.map +1 -1
  119. package/package.json +9 -46
  120. package/src/attachments/AttachmentContext.ts +15 -13
  121. package/src/attachments/AttachmentErrorHandler.ts +6 -6
  122. package/src/attachments/AttachmentQueue.ts +99 -42
  123. package/src/attachments/AttachmentService.ts +7 -6
  124. package/src/attachments/LocalStorageAdapter.ts +14 -8
  125. package/src/attachments/README.md +2 -0
  126. package/src/attachments/RemoteStorageAdapter.ts +4 -4
  127. package/src/attachments/Schema.ts +14 -6
  128. package/src/attachments/SyncingService.ts +10 -6
  129. package/src/attachments/WatchedAttachmentItem.ts +3 -1
  130. package/src/client/CommonPowerSyncDatabase.ts +540 -0
  131. package/src/client/Query.ts +9 -0
  132. package/src/client/SQLOpenFactory.ts +47 -19
  133. package/src/client/compilableQueryWatch.ts +9 -4
  134. package/src/client/connection/PowerSyncBackendConnector.ts +6 -3
  135. package/src/client/connection/PowerSyncCredentials.ts +3 -0
  136. package/src/client/runOnSchemaChange.ts +5 -2
  137. package/src/client/sync/bucket/CrudBatch.ts +2 -0
  138. package/src/client/sync/bucket/CrudEntry.ts +10 -101
  139. package/src/client/sync/bucket/CrudTransaction.ts +3 -0
  140. package/src/client/sync/options.ts +77 -0
  141. package/src/client/sync/stream/JsonValue.ts +3 -0
  142. package/src/client/sync/sync-streams.ts +23 -10
  143. package/src/client/triggers/TriggerManager.ts +29 -59
  144. package/src/client/triggers/sanitizeSQL.ts +5 -0
  145. package/src/client/watched/GetAllQuery.ts +8 -4
  146. package/src/client/watched/WatchedQuery.ts +20 -11
  147. package/src/client/watched/processors/DifferentialQueryProcessor.ts +19 -219
  148. package/src/client/watched/processors/OnChangeQueryProcessor.ts +4 -109
  149. package/src/client/watched/processors/comparators.ts +8 -0
  150. package/src/db/DBAdapter.ts +160 -175
  151. package/src/db/QueryResult.ts +195 -0
  152. package/src/db/crud/SyncProgress.ts +8 -43
  153. package/src/db/crud/SyncStatus.ts +66 -216
  154. package/src/db/crud/UploadQueueStatus.ts +3 -0
  155. package/src/db/schema/Column.ts +22 -5
  156. package/src/db/schema/Index.ts +9 -3
  157. package/src/db/schema/IndexedColumn.ts +9 -3
  158. package/src/db/schema/RawTable.ts +7 -1
  159. package/src/db/schema/Schema.ts +12 -7
  160. package/src/db/schema/Table.ts +130 -180
  161. package/src/index.ts +6 -22
  162. package/src/types/types.ts +6 -0
  163. package/src/utils/BaseObserver.ts +12 -0
  164. package/src/utils/Logger.ts +86 -31
  165. package/src/utils/MetaBaseObserver.ts +14 -60
  166. package/src/utils/mutex.ts +4 -189
  167. package/dist/bundle.cjs +0 -14136
  168. package/dist/bundle.cjs.map +0 -1
  169. package/dist/bundle.mjs +0 -14056
  170. package/dist/bundle.mjs.map +0 -1
  171. package/dist/bundle.node.cjs +0 -11613
  172. package/dist/bundle.node.cjs.map +0 -1
  173. package/dist/bundle.node.mjs +0 -11533
  174. package/dist/bundle.node.mjs.map +0 -1
  175. package/dist/index.d.cts +0 -4052
  176. package/legacy/sync_protocol.d.ts +0 -103
  177. package/lib/client/AbstractPowerSyncDatabase.js +0 -987
  178. package/lib/client/AbstractPowerSyncDatabase.js.map +0 -1
  179. package/lib/client/AbstractPowerSyncOpenFactory.d.ts +0 -22
  180. package/lib/client/AbstractPowerSyncOpenFactory.js +0 -25
  181. package/lib/client/AbstractPowerSyncOpenFactory.js.map +0 -1
  182. package/lib/client/ConnectionManager.d.ts +0 -112
  183. package/lib/client/ConnectionManager.js +0 -294
  184. package/lib/client/ConnectionManager.js.map +0 -1
  185. package/lib/client/CustomQuery.d.ts +0 -22
  186. package/lib/client/CustomQuery.js +0 -43
  187. package/lib/client/CustomQuery.js.map +0 -1
  188. package/lib/client/constants.d.ts +0 -1
  189. package/lib/client/constants.js +0 -2
  190. package/lib/client/constants.js.map +0 -1
  191. package/lib/client/sync/bucket/BucketStorageAdapter.d.ts +0 -40
  192. package/lib/client/sync/bucket/BucketStorageAdapter.js +0 -19
  193. package/lib/client/sync/bucket/BucketStorageAdapter.js.map +0 -1
  194. package/lib/client/sync/bucket/SqliteBucketStorage.d.ts +0 -34
  195. package/lib/client/sync/bucket/SqliteBucketStorage.js +0 -162
  196. package/lib/client/sync/bucket/SqliteBucketStorage.js.map +0 -1
  197. package/lib/client/sync/stream/AbstractRemote.d.ts +0 -151
  198. package/lib/client/sync/stream/AbstractRemote.js +0 -473
  199. package/lib/client/sync/stream/AbstractRemote.js.map +0 -1
  200. package/lib/client/sync/stream/AbstractStreamingSyncImplementation.d.ts +0 -218
  201. package/lib/client/sync/stream/AbstractStreamingSyncImplementation.js +0 -663
  202. package/lib/client/sync/stream/AbstractStreamingSyncImplementation.js.map +0 -1
  203. package/lib/client/sync/stream/WebsocketClientTransport.d.ts +0 -15
  204. package/lib/client/sync/stream/WebsocketClientTransport.js +0 -61
  205. package/lib/client/sync/stream/WebsocketClientTransport.js.map +0 -1
  206. package/lib/client/sync/stream/core-instruction.d.ts +0 -71
  207. package/lib/client/sync/stream/core-instruction.js +0 -27
  208. package/lib/client/sync/stream/core-instruction.js.map +0 -1
  209. package/lib/client/triggers/MemoryTriggerClaimManager.d.ts +0 -6
  210. package/lib/client/triggers/MemoryTriggerClaimManager.js +0 -21
  211. package/lib/client/triggers/MemoryTriggerClaimManager.js.map +0 -1
  212. package/lib/client/triggers/TriggerManagerImpl.d.ts +0 -39
  213. package/lib/client/triggers/TriggerManagerImpl.js +0 -405
  214. package/lib/client/triggers/TriggerManagerImpl.js.map +0 -1
  215. package/lib/client/watched/processors/AbstractQueryProcessor.d.ts +0 -68
  216. package/lib/client/watched/processors/AbstractQueryProcessor.js +0 -151
  217. package/lib/client/watched/processors/AbstractQueryProcessor.js.map +0 -1
  218. package/lib/db/ConnectionClosedError.d.ts +0 -10
  219. package/lib/db/ConnectionClosedError.js +0 -21
  220. package/lib/db/ConnectionClosedError.js.map +0 -1
  221. package/lib/db/schema/TableV2.d.ts +0 -9
  222. package/lib/db/schema/TableV2.js +0 -9
  223. package/lib/db/schema/TableV2.js.map +0 -1
  224. package/lib/utils/AbortOperation.d.ts +0 -9
  225. package/lib/utils/AbortOperation.js +0 -19
  226. package/lib/utils/AbortOperation.js.map +0 -1
  227. package/lib/utils/ControlledExecutor.d.ts +0 -25
  228. package/lib/utils/ControlledExecutor.js +0 -51
  229. package/lib/utils/ControlledExecutor.js.map +0 -1
  230. package/lib/utils/async.d.ts +0 -14
  231. package/lib/utils/async.js +0 -46
  232. package/lib/utils/async.js.map +0 -1
  233. package/lib/utils/parseQuery.d.ts +0 -6
  234. package/lib/utils/parseQuery.js +0 -17
  235. package/lib/utils/parseQuery.js.map +0 -1
  236. package/lib/utils/queue.d.ts +0 -16
  237. package/lib/utils/queue.js +0 -42
  238. package/lib/utils/queue.js.map +0 -1
  239. package/lib/utils/stream_transform.d.ts +0 -39
  240. package/lib/utils/stream_transform.js +0 -206
  241. package/lib/utils/stream_transform.js.map +0 -1
  242. package/src/client/AbstractPowerSyncDatabase.ts +0 -1362
  243. package/src/client/AbstractPowerSyncOpenFactory.ts +0 -39
  244. package/src/client/ConnectionManager.ts +0 -402
  245. package/src/client/CustomQuery.ts +0 -56
  246. package/src/client/constants.ts +0 -1
  247. package/src/client/sync/bucket/BucketStorageAdapter.ts +0 -49
  248. package/src/client/sync/bucket/SqliteBucketStorage.ts +0 -199
  249. package/src/client/sync/stream/AbstractRemote.ts +0 -602
  250. package/src/client/sync/stream/AbstractStreamingSyncImplementation.ts +0 -905
  251. package/src/client/sync/stream/WebsocketClientTransport.ts +0 -80
  252. package/src/client/sync/stream/core-instruction.ts +0 -98
  253. package/src/client/triggers/MemoryTriggerClaimManager.ts +0 -25
  254. package/src/client/triggers/TriggerManagerImpl.ts +0 -496
  255. package/src/client/watched/processors/AbstractQueryProcessor.ts +0 -226
  256. package/src/db/ConnectionClosedError.ts +0 -23
  257. package/src/db/schema/TableV2.ts +0 -9
  258. package/src/utils/AbortOperation.ts +0 -17
  259. package/src/utils/ControlledExecutor.ts +0 -72
  260. package/src/utils/async.ts +0 -50
  261. package/src/utils/parseQuery.ts +0 -25
  262. package/src/utils/queue.ts +0 -48
  263. package/src/utils/stream_transform.ts +0 -252
@@ -1,7 +1,10 @@
1
1
  import { ColumnType } from './Column.js';
2
- export const DEFAULT_INDEX_COLUMN_OPTIONS = {
2
+ const DEFAULT_INDEX_COLUMN_OPTIONS = {
3
3
  ascending: true
4
4
  };
5
+ /**
6
+ * @public
7
+ */
5
8
  export class IndexedColumn {
6
9
  options;
7
10
  static createAscending(column) {
@@ -1 +1 @@
1
- {"version":3,"file":"IndexedColumn.js","sourceRoot":"","sources":["../../../src/db/schema/IndexedColumn.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAQzC,MAAM,CAAC,MAAM,4BAA4B,GAAgC;IACvE,SAAS,EAAE,IAAI;CAChB,CAAC;AAEF,MAAM,OAAO,aAAa;IACd,OAAO,CAAqB;IAEtC,MAAM,CAAC,eAAe,CAAC,MAAc;QACnC,OAAO,IAAI,aAAa,CAAC;YACvB,IAAI,EAAE,MAAM;YACZ,SAAS,EAAE,IAAI;SAChB,CAAC,CAAC;IACL,CAAC;IAED,YAAY,OAA2B;QACrC,IAAI,CAAC,OAAO,GAAG,EAAE,GAAG,4BAA4B,EAAE,GAAG,OAAO,EAAE,CAAC;IACjE,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;IAC3B,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;IAChC,CAAC;IAED,MAAM,CAAC,KAAY;QACjB,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,IAAI,UAAU,CAAC,IAAI;SACzF,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"IndexedColumn.js","sourceRoot":"","sources":["../../../src/db/schema/IndexedColumn.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAWzC,MAAM,4BAA4B,GAAgC;IAChE,SAAS,EAAE,IAAI;CAChB,CAAC;AAEF;;GAEG;AACH,MAAM,OAAO,aAAa;IACd,OAAO,CAAqB;IAEtC,MAAM,CAAC,eAAe,CAAC,MAAc;QACnC,OAAO,IAAI,aAAa,CAAC;YACvB,IAAI,EAAE,MAAM;YACZ,SAAS,EAAE,IAAI;SAChB,CAAC,CAAC;IACL,CAAC;IAED,YAAY,OAA2B;QACrC,IAAI,CAAC,OAAO,GAAG,EAAE,GAAG,4BAA4B,EAAE,GAAG,OAAO,EAAE,CAAC;IACjE,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;IAC3B,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;IAChC,CAAC;IAED,MAAM,CAAC,KAAoB;QACzB,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,IAAI,UAAU,CAAC,IAAI;SACzF,CAAC;IACJ,CAAC;CACF"}
@@ -6,8 +6,10 @@ import { TableOrRawTableOptions } from './Table.js';
6
6
  * using client-side table and column constraints.
7
7
  *
8
8
  * To collect local writes to raw tables with PowerSync, custom triggers are required. See
9
- * {@link https://docs.powersync.com/usage/use-case-examples/raw-tables the documentation} for details and an example on
9
+ * {@link https://docs.powersync.com/usage/use-case-examples/raw-tables} for details and an example on
10
10
  * using raw tables.
11
+ *
12
+ * @public
11
13
  */
12
14
  export type RawTableType = RawTableTypeWithStatements | InferredRawTableType;
13
15
  interface RawTableTypeWithStatements {
@@ -63,12 +65,16 @@ interface InferredRawTableType extends Partial<RawTableTypeWithStatements> {
63
65
  * `{Column: 'name'}`.
64
66
  * The `"Rest"` parameter gets resolved to a JSON object covering all values from the synced row that haven't been
65
67
  * covered by a `Column` parameter.
68
+ *
69
+ * @public
66
70
  */
67
71
  export type PendingStatementParameter = 'Id' | {
68
72
  Column: string;
69
73
  } | 'Rest';
70
74
  /**
71
75
  * A statement that the PowerSync client should use to insert or delete data into a table managed by the user.
76
+ *
77
+ * @public
72
78
  */
73
79
  export type PendingStatement = {
74
80
  sql: string;
@@ -1,53 +1,34 @@
1
1
  import { RawTable, RawTableType } from './RawTable.js';
2
- import { RowType, Table } from './Table.js';
2
+ import { ResolvedTable, RowType, Table } from './Table.js';
3
3
  type SchemaType = Record<string, Table<any>>;
4
+ /**
5
+ * @public
6
+ */
4
7
  export type SchemaTableType<S extends SchemaType> = {
5
8
  [K in keyof S]: RowType<S[K]>;
6
9
  };
7
10
  /**
8
11
  * A schema is a collection of tables. It is used to define the structure of a database.
12
+ *
13
+ * @public
9
14
  */
10
15
  export declare class Schema<S extends SchemaType = SchemaType> {
11
16
  readonly types: SchemaTableType<S>;
12
17
  readonly props: S;
13
- readonly tables: Table[];
18
+ readonly tables: ResolvedTable[];
14
19
  readonly rawTables: RawTable[];
15
- constructor(tables: Table[] | S);
20
+ constructor(tables: ResolvedTable[] | S);
16
21
  /**
17
22
  * Adds raw tables to this schema. Raw tables are identified by their name, but entirely managed by the application
18
23
  * developer instead of automatically by PowerSync.
19
24
  * Since raw tables are not backed by JSON, running complex queries on them may be more efficient. Further, they allow
20
25
  * using client-side table and column constraints.
21
26
  *
22
- * @param tables An object of (table name, raw table definition) entries.
27
+ * @param tables - An object of (table name, raw table definition) entries.
23
28
  */
24
29
  withRawTables(tables: Record<string, RawTableType>): void;
25
30
  validate(): void;
26
- toJSON(): {
27
- tables: {
28
- local_only: boolean | undefined;
29
- insert_only: boolean | undefined;
30
- include_old: any;
31
- include_old_only_when_changed: boolean;
32
- include_metadata: boolean | undefined;
33
- ignore_empty_update: boolean | undefined;
34
- name: string;
35
- view_name: string;
36
- columns: {
37
- name: string;
38
- type: import("./Column.js").ColumnType | undefined;
39
- }[];
40
- indexes: {
41
- name: string;
42
- columns: {
43
- name: string;
44
- ascending: boolean | undefined;
45
- type: import("./Column.js").ColumnType;
46
- }[];
47
- }[];
48
- }[];
49
- raw_tables: unknown[];
50
- };
31
+ toJSON(): unknown;
51
32
  /**
52
33
  * Returns a representation of the raw table that is understood by the PowerSync SQLite core extension.
53
34
  *
@@ -1,6 +1,8 @@
1
1
  import { encodeTableOptions } from './internal.js';
2
2
  /**
3
3
  * A schema is a collection of tables. It is used to define the structure of a database.
4
+ *
5
+ * @public
4
6
  */
5
7
  export class Schema {
6
8
  /*
@@ -37,7 +39,7 @@ export class Schema {
37
39
  * Since raw tables are not backed by JSON, running complex queries on them may be more efficient. Further, they allow
38
40
  * using client-side table and column constraints.
39
41
  *
40
- * @param tables An object of (table name, raw table definition) entries.
42
+ * @param tables - An object of (table name, raw table definition) entries.
41
43
  */
42
44
  withRawTables(tables) {
43
45
  for (const [name, rawTableDefinition] of Object.entries(tables)) {
@@ -1 +1 @@
1
- {"version":3,"file":"Schema.js","sourceRoot":"","sources":["../../../src/db/schema/Schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAUnD;;GAEG;AACH,MAAM,OAAO,MAAM;IACjB;;MAEE;IACO,KAAK,CAAqB;IAC1B,KAAK,CAAI;IACT,MAAM,CAAU;IAChB,SAAS,CAAa;IAE/B,YAAY,MAAmB;QAC7B,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1B;;;;cAIE;YACF,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC3B,IAAI,KAAK,CAAC,IAAI,KAAK,EAAE,EAAE,CAAC;oBACtB,MAAM,IAAI,KAAK,CACb,2KAA2K,CAC5K,CAAC;gBACJ,CAAC;YACH,CAAC;YACD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACvB,CAAC;aAAM,CAAC;YACN,4DAA4D;YAC5D,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,WAAW,CAC7B,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,EAAE,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CAC1F,CAAC;YACP,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1C,CAAC;QAED,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;IACtB,CAAC;IAED;;;;;;;OAOG;IACH,aAAa,CAAC,MAAoC;QAChD,KAAK,MAAM,CAAC,IAAI,EAAE,kBAAkB,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAChE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,kBAAkB,EAAE,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;IAED,QAAQ;QACN,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChC,KAAK,CAAC,QAAQ,EAAE,CAAC;QACnB,CAAC;IACH,CAAC;IAED,MAAM;QACJ,OAAO;YACL,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;YAC1C,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,cAAc,CAAC;SACtD,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,cAAc,CAAC,KAAe;QACnC,MAAM,UAAU,GAAQ;YACtB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,GAAG,EAAE,KAAK,CAAC,GAAG;YACd,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,KAAK,EAAE,KAAK,CAAC,KAAK;SACnB,CAAC;QACF,IAAI,QAAQ,IAAI,KAAK,EAAE,CAAC;YACtB,iGAAiG;YACjG,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;YAC5B,UAAU,CAAC,UAAU,GAAG,MAAM,CAAC,SAAS,IAAI,KAAK,CAAC,IAAI,CAAC;YACvD,UAAU,CAAC,cAAc,GAAG,MAAM,CAAC,aAAa,CAAC;YACjD,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,kBAAkB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;QAC9D,CAAC;QAED,OAAO,UAAU,CAAC;IACpB,CAAC;CACF"}
1
+ {"version":3,"file":"Schema.js","sourceRoot":"","sources":["../../../src/db/schema/Schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAanD;;;;GAIG;AACH,MAAM,OAAO,MAAM;IACjB;;MAEE;IACO,KAAK,CAAsB;IAC3B,KAAK,CAAK;IACV,MAAM,CAAkB;IACxB,SAAS,CAAa;IAE/B,YAAY,MAA2B;QACrC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1B;;;;cAIE;YACF,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC3B,IAAI,KAAK,CAAC,IAAI,KAAK,EAAE,EAAE,CAAC;oBACtB,MAAM,IAAI,KAAK,CACb,2KAA2K,CAC5K,CAAC;gBACJ,CAAC;YACH,CAAC;YACD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACvB,CAAC;aAAM,CAAC;YACN,4DAA4D;YAC5D,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,WAAW,CAC7B,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,EAAE,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CAC1F,CAAC;YACP,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1C,CAAC;QAED,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;IACtB,CAAC;IAED;;;;;;;OAOG;IACH,aAAa,CAAC,MAAoC;QAChD,KAAK,MAAM,CAAC,IAAI,EAAE,kBAAkB,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAChE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,kBAAkB,EAAE,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;IAED,QAAQ;QACN,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChC,KAAK,CAAC,QAAQ,EAAE,CAAC;QACnB,CAAC;IACH,CAAC;IAED,MAAM;QACJ,OAAO;YACL,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;YAC1C,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,cAAc,CAAC;SACtD,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,cAAc,CAAC,KAAe;QACnC,MAAM,UAAU,GAAQ;YACtB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,GAAG,EAAE,KAAK,CAAC,GAAG;YACd,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,KAAK,EAAE,KAAK,CAAC,KAAK;SACnB,CAAC;QACF,IAAI,QAAQ,IAAI,KAAK,EAAE,CAAC;YACtB,iGAAiG;YACjG,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;YAC5B,UAAU,CAAC,UAAU,GAAG,MAAM,CAAC,SAAS,IAAI,KAAK,CAAC,IAAI,CAAC;YACvD,UAAU,CAAC,cAAc,GAAG,MAAM,CAAC,aAAa,CAAC;YACjD,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,kBAAkB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;QAC9D,CAAC;QAED,OAAO,UAAU,CAAC;IACpB,CAAC;CACF"}
@@ -1,8 +1,10 @@
1
- import { Column, ColumnsType, ColumnType, ExtractColumnValueType } from './Column.js';
1
+ import { Column, ColumnsType, ExtractColumnValueType } from './Column.js';
2
2
  import { Index } from './Index.js';
3
- import { TableV2 } from './TableV2.js';
3
+ import { IndexedColumn } from './IndexedColumn.js';
4
4
  /**
5
5
  * Options that apply both to JSON-based tables and raw tables.
6
+ *
7
+ * @public
6
8
  */
7
9
  export interface TableOrRawTableOptions {
8
10
  localOnly?: boolean;
@@ -18,6 +20,8 @@ interface SharedTableOptions extends TableOrRawTableOptions {
18
20
  *
19
21
  * Including old values may be helpful for some backend connector implementations, which is
20
22
  * why it can be enabled on per-table or per-columm basis.
23
+ *
24
+ * @public
21
25
  */
22
26
  export interface TrackPreviousOptions {
23
27
  /** When defined, a list of column names for which old values should be tracked. */
@@ -25,7 +29,10 @@ export interface TrackPreviousOptions {
25
29
  /** When enabled, only include values that have actually been changed by an update. */
26
30
  onlyWhenChanged?: boolean;
27
31
  }
28
- export interface TableOptions extends SharedTableOptions {
32
+ /**
33
+ * @public
34
+ */
35
+ export interface ResolvedTableOptions extends SharedTableOptions {
29
36
  /**
30
37
  * The synced table name, matching sync rules
31
38
  */
@@ -33,100 +40,38 @@ export interface TableOptions extends SharedTableOptions {
33
40
  columns: Column[];
34
41
  indexes?: Index[];
35
42
  }
36
- export type RowType<T extends TableV2<any>> = {
37
- [K in keyof T['columnMap']]: ExtractColumnValueType<T['columnMap'][K]>;
43
+ /**
44
+ * @public
45
+ */
46
+ export type RowType<T extends Table<any>> = T extends Table<infer Columns> ? {
47
+ [K in keyof Columns]: ExtractColumnValueType<Columns[K]>;
38
48
  } & {
39
49
  id: string;
40
- };
41
- export type IndexShorthand = Record<string, string[]>;
42
- export interface TableV2Options extends SharedTableOptions {
50
+ } : never;
51
+ /**
52
+ * @public
53
+ */
54
+ export type IndexShorthand = Record<string, (string | IndexedColumn)[]>;
55
+ /**
56
+ * @public
57
+ */
58
+ export interface TableOptions extends SharedTableOptions {
43
59
  indexes?: IndexShorthand;
44
60
  }
45
- export declare const DEFAULT_TABLE_OPTIONS: {
46
- indexes: never[];
47
- insertOnly: boolean;
48
- localOnly: boolean;
49
- trackPrevious: boolean;
50
- trackMetadata: boolean;
51
- ignoreEmptyUpdates: boolean;
52
- };
53
- export declare const InvalidSQLCharacters: RegExp;
54
- export declare class Table<Columns extends ColumnsType = ColumnsType> {
55
- protected options: TableOptions;
56
- protected _mappedColumns: Columns;
57
- static createLocalOnly(options: TableOptions): Table<ColumnsType>;
58
- static createInsertOnly(options: TableOptions): Table<ColumnsType>;
59
- /**
60
- * Create a table.
61
- * @deprecated This was only only included for TableV2 and is no longer necessary.
62
- * Prefer to use new Table() directly.
63
- *
64
- * TODO remove in the next major release.
65
- */
66
- static createTable(name: string, table: Table): Table<ColumnsType>;
67
- /**
68
- * Creates a new Table instance.
69
- *
70
- * This constructor supports two different versions:
71
- * 1. New constructor: Using a Columns object and an optional TableV2Options object
72
- * 2. Deprecated constructor: Using a TableOptions object (will be removed in the next major release)
73
- *
74
- * @constructor
75
- * @param {Columns | TableOptions} optionsOrColumns - Either a Columns object (for V2 syntax) or a TableOptions object (for V1 syntax)
76
- * @param {TableV2Options} [v2Options] - Optional configuration options for V2 syntax
77
- *
78
- * @example
79
- * ```javascript
80
- * // New Constructor
81
- * const table = new Table(
82
- * {
83
- * name: column.text,
84
- * age: column.integer
85
- * },
86
- * { indexes: { nameIndex: ['name'] } }
87
- * );
88
- *```
89
- *
90
- *
91
- * @example
92
- * ```javascript
93
- * // Deprecated Constructor
94
- * const table = new Table({
95
- * name: 'users',
96
- * columns: [
97
- * new Column({ name: 'name', type: ColumnType.TEXT }),
98
- * new Column({ name: 'age', type: ColumnType.INTEGER })
99
- * ]
100
- * });
101
- *```
102
- */
103
- constructor(columns: Columns, options?: TableV2Options);
104
- /**
105
- * @deprecated This constructor will be removed in the next major release.
106
- * Use the new constructor shown below instead as this does not show types.
107
- * @example
108
- * <caption>Use this instead</caption>
109
- * ```javascript
110
- * const table = new Table(
111
- * {
112
- * name: column.text,
113
- * age: column.integer
114
- * },
115
- * { indexes: { nameIndex: ['name'] } }
116
- * );
117
- *```
118
- */
119
- constructor(options: TableOptions);
120
- copyWithName(name: string): Table;
121
- private isTableV1;
122
- private initTableV1;
123
- private initTableV2;
124
- private applyDefaultOptions;
61
+ /**
62
+ * A resolved table in the PowerSync schema, with all columns, index definitions and options.
63
+ *
64
+ * When constructing tables for your schema, consider using {@link Table} instead.
65
+ *
66
+ * @public
67
+ */
68
+ export declare class ResolvedTable {
69
+ readonly options: ResolvedTableOptions;
70
+ constructor(options: ResolvedTableOptions);
125
71
  get name(): string;
126
72
  get viewNameOverride(): string | undefined;
127
73
  get viewName(): string;
128
74
  get columns(): Column[];
129
- get columnMap(): Columns;
130
75
  get indexes(): Index[];
131
76
  get localOnly(): boolean;
132
77
  get insertOnly(): boolean;
@@ -147,16 +92,49 @@ export declare class Table<Columns extends ColumnsType = ColumnsType> {
147
92
  view_name: string;
148
93
  columns: {
149
94
  name: string;
150
- type: ColumnType | undefined;
95
+ type: import("./Column.js").ColumnType | undefined;
151
96
  }[];
152
97
  indexes: {
153
98
  name: string;
154
99
  columns: {
155
100
  name: string;
156
101
  ascending: boolean | undefined;
157
- type: ColumnType;
102
+ type: import("./Column.js").ColumnType;
158
103
  }[];
159
104
  }[];
160
105
  };
106
+ private applyDefaultOptions;
107
+ }
108
+ /**
109
+ * A table with a statically-typed `Columns` record structure.
110
+ *
111
+ * This is the recommended way to declare tables in PowerSync schemas.
112
+ *
113
+ * @public
114
+ */
115
+ export declare class Table<Columns extends ColumnsType = ColumnsType> extends ResolvedTable {
116
+ protected _mappedColumns: Columns;
117
+ static createLocalOnly<Columns extends ColumnsType = ColumnsType>(columns: Columns, options?: TableOptions): Table<Columns>;
118
+ static createInsertOnly<Columns extends ColumnsType = ColumnsType>(columns: Columns, options?: TableOptions): Table<Columns>;
119
+ /**
120
+ * Creates a new Table instance.
121
+ *
122
+ * @param columns - A Columns object (a record of column names to column types).
123
+ * @param options - Optional configuration options for the table.
124
+ *
125
+ * @example
126
+ * ```javascript
127
+ * const table = new Table(
128
+ * {
129
+ * name: column.text,
130
+ * age: column.integer
131
+ * },
132
+ * { indexes: { nameIndex: ['name'] } }
133
+ * );
134
+ *```
135
+ */
136
+ constructor(columns: Columns, options?: TableOptions);
137
+ copyWithName(name: string): ResolvedTable;
138
+ private static optionsFromColumns;
161
139
  }
162
140
  export {};
@@ -1,8 +1,13 @@
1
- import { Column, ColumnType, MAX_AMOUNT_OF_COLUMNS } from './Column.js';
1
+ import { Column } from './Column.js';
2
2
  import { Index } from './Index.js';
3
3
  import { IndexedColumn } from './IndexedColumn.js';
4
4
  import { encodeTableOptions } from './internal.js';
5
- export const DEFAULT_TABLE_OPTIONS = {
5
+ /**
6
+ * powersync-sqlite-core limits the number of column per table to 1999, due to internal SQLite limits.
7
+ * In earlier versions this was limited to 63.
8
+ */
9
+ const MAX_AMOUNT_OF_COLUMNS = 1999;
10
+ const DEFAULT_TABLE_OPTIONS = {
6
11
  indexes: [],
7
12
  insertOnly: false,
8
13
  localOnly: false,
@@ -10,86 +15,19 @@ export const DEFAULT_TABLE_OPTIONS = {
10
15
  trackMetadata: false,
11
16
  ignoreEmptyUpdates: false
12
17
  };
13
- export const InvalidSQLCharacters = /["'%,.#\s[\]]/;
14
- export class Table {
18
+ const InvalidSQLCharacters = /["'%,.#\s[\]]/;
19
+ /**
20
+ * A resolved table in the PowerSync schema, with all columns, index definitions and options.
21
+ *
22
+ * When constructing tables for your schema, consider using {@link Table} instead.
23
+ *
24
+ * @public
25
+ */
26
+ export class ResolvedTable {
15
27
  options;
16
- _mappedColumns;
17
- static createLocalOnly(options) {
18
- return new Table({ ...options, localOnly: true, insertOnly: false });
19
- }
20
- static createInsertOnly(options) {
21
- return new Table({ ...options, localOnly: false, insertOnly: true });
22
- }
23
- /**
24
- * Create a table.
25
- * @deprecated This was only only included for TableV2 and is no longer necessary.
26
- * Prefer to use new Table() directly.
27
- *
28
- * TODO remove in the next major release.
29
- */
30
- static createTable(name, table) {
31
- return new Table({
32
- name,
33
- columns: table.columns,
34
- indexes: table.indexes,
35
- localOnly: table.options.localOnly,
36
- insertOnly: table.options.insertOnly,
37
- viewName: table.options.viewName
38
- });
39
- }
40
- constructor(optionsOrColumns, v2Options) {
41
- if (this.isTableV1(optionsOrColumns)) {
42
- this.initTableV1(optionsOrColumns);
43
- }
44
- else {
45
- this.initTableV2(optionsOrColumns, v2Options);
46
- }
47
- }
48
- copyWithName(name) {
49
- return new Table({
50
- ...this.options,
51
- name
52
- });
53
- }
54
- isTableV1(arg) {
55
- return 'columns' in arg && Array.isArray(arg.columns);
56
- }
57
- initTableV1(options) {
58
- this.options = {
59
- ...options,
60
- indexes: options.indexes || []
61
- };
62
- this.applyDefaultOptions();
63
- }
64
- initTableV2(columns, options) {
65
- const convertedColumns = Object.entries(columns).map(([name, columnInfo]) => new Column({ name, type: columnInfo.type }));
66
- const convertedIndexes = Object.entries(options?.indexes ?? {}).map(([name, columnNames]) => new Index({
67
- name,
68
- columns: columnNames.map((name) => new IndexedColumn({
69
- name: name.replace(/^-/, ''),
70
- ascending: !name.startsWith('-')
71
- }))
72
- }));
73
- this.options = {
74
- name: '',
75
- columns: convertedColumns,
76
- indexes: convertedIndexes,
77
- viewName: options?.viewName,
78
- insertOnly: options?.insertOnly,
79
- localOnly: options?.localOnly,
80
- trackPrevious: options?.trackPrevious,
81
- trackMetadata: options?.trackMetadata,
82
- ignoreEmptyUpdates: options?.ignoreEmptyUpdates
83
- };
28
+ constructor(options) {
29
+ this.options = options;
84
30
  this.applyDefaultOptions();
85
- this._mappedColumns = columns;
86
- }
87
- applyDefaultOptions() {
88
- this.options.insertOnly ??= DEFAULT_TABLE_OPTIONS.insertOnly;
89
- this.options.localOnly ??= DEFAULT_TABLE_OPTIONS.localOnly;
90
- this.options.trackPrevious ??= DEFAULT_TABLE_OPTIONS.trackPrevious;
91
- this.options.trackMetadata ??= DEFAULT_TABLE_OPTIONS.trackMetadata;
92
- this.options.ignoreEmptyUpdates ??= DEFAULT_TABLE_OPTIONS.ignoreEmptyUpdates;
93
31
  }
94
32
  get name() {
95
33
  return this.options.name;
@@ -103,13 +41,6 @@ export class Table {
103
41
  get columns() {
104
42
  return this.options.columns;
105
43
  }
106
- get columnMap() {
107
- return (this._mappedColumns ??
108
- this.columns.reduce((hash, column) => {
109
- hash[column.name] = { type: column.type ?? ColumnType.TEXT };
110
- return hash;
111
- }, {}));
112
- }
113
44
  get indexes() {
114
45
  return this.options.indexes ?? [];
115
46
  }
@@ -199,5 +130,75 @@ export class Table {
199
130
  ...encodeTableOptions(this)
200
131
  };
201
132
  }
133
+ applyDefaultOptions() {
134
+ this.options.insertOnly ??= DEFAULT_TABLE_OPTIONS.insertOnly;
135
+ this.options.localOnly ??= DEFAULT_TABLE_OPTIONS.localOnly;
136
+ this.options.trackPrevious ??= DEFAULT_TABLE_OPTIONS.trackPrevious;
137
+ this.options.trackMetadata ??= DEFAULT_TABLE_OPTIONS.trackMetadata;
138
+ this.options.ignoreEmptyUpdates ??= DEFAULT_TABLE_OPTIONS.ignoreEmptyUpdates;
139
+ }
140
+ }
141
+ /**
142
+ * A table with a statically-typed `Columns` record structure.
143
+ *
144
+ * This is the recommended way to declare tables in PowerSync schemas.
145
+ *
146
+ * @public
147
+ */
148
+ export class Table extends ResolvedTable {
149
+ _mappedColumns;
150
+ static createLocalOnly(columns, options) {
151
+ return new Table(columns, { localOnly: true, insertOnly: false, ...options });
152
+ }
153
+ static createInsertOnly(columns, options) {
154
+ return new Table(columns, { localOnly: false, insertOnly: true, ...options });
155
+ }
156
+ /**
157
+ * Creates a new Table instance.
158
+ *
159
+ * @param columns - A Columns object (a record of column names to column types).
160
+ * @param options - Optional configuration options for the table.
161
+ *
162
+ * @example
163
+ * ```javascript
164
+ * const table = new Table(
165
+ * {
166
+ * name: column.text,
167
+ * age: column.integer
168
+ * },
169
+ * { indexes: { nameIndex: ['name'] } }
170
+ * );
171
+ *```
172
+ */
173
+ constructor(columns, options) {
174
+ super(Table.optionsFromColumns(columns, options));
175
+ this._mappedColumns = columns;
176
+ }
177
+ copyWithName(name) {
178
+ return new ResolvedTable({ ...this.options, name });
179
+ }
180
+ static optionsFromColumns(columns, options) {
181
+ const convertedColumns = Object.entries(columns).map(([name, columnInfo]) => new Column({ name, type: columnInfo.type }));
182
+ const convertedIndexes = Object.entries(options?.indexes ?? {}).map(([name, columnNames]) => new Index({
183
+ name,
184
+ columns: columnNames.map((nameOrIndexedColumn) => typeof nameOrIndexedColumn === 'string'
185
+ ? new IndexedColumn({
186
+ name: nameOrIndexedColumn.replace(/^-/, ''),
187
+ ascending: !nameOrIndexedColumn.startsWith('-')
188
+ })
189
+ : nameOrIndexedColumn)
190
+ }));
191
+ return {
192
+ name: '',
193
+ columns: convertedColumns,
194
+ indexes: convertedIndexes,
195
+ viewName: options?.viewName,
196
+ insertOnly: options?.insertOnly,
197
+ localOnly: options?.localOnly,
198
+ trackPrevious: options?.trackPrevious,
199
+ trackMetadata: options?.trackMetadata,
200
+ ignoreEmptyUpdates: options?.ignoreEmptyUpdates
201
+ };
202
+ }
202
203
  }
203
204
  //# sourceMappingURL=Table.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Table.js","sourceRoot":"","sources":["../../../src/db/schema/Table.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,MAAM,EAEN,UAAU,EAEV,qBAAqB,EACtB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAmDnD,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,OAAO,EAAE,EAAE;IACX,UAAU,EAAE,KAAK;IACjB,SAAS,EAAE,KAAK;IAChB,aAAa,EAAE,KAAK;IACpB,aAAa,EAAE,KAAK;IACpB,kBAAkB,EAAE,KAAK;CAC1B,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,eAAe,CAAC;AAEpD,MAAM,OAAO,KAAK;IACN,OAAO,CAAe;IAEtB,cAAc,CAAU;IAElC,MAAM,CAAC,eAAe,CAAC,OAAqB;QAC1C,OAAO,IAAI,KAAK,CAAC,EAAE,GAAG,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;IACvE,CAAC;IAED,MAAM,CAAC,gBAAgB,CAAC,OAAqB;QAC3C,OAAO,IAAI,KAAK,CAAC,EAAE,GAAG,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;IACvE,CAAC;IAED;;;;;;OAMG;IACH,MAAM,CAAC,WAAW,CAAC,IAAY,EAAE,KAAY;QAC3C,OAAO,IAAI,KAAK,CAAC;YACf,IAAI;YACJ,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,SAAS;YAClC,UAAU,EAAE,KAAK,CAAC,OAAO,CAAC,UAAU;YACpC,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,QAAQ;SACjC,CAAC,CAAC;IACL,CAAC;IAuDD,YAAY,gBAAwC,EAAE,SAA0B;QAC9E,IAAI,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,EAAE,CAAC;YACrC,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;QACrC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,WAAW,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;IAED,YAAY,CAAC,IAAY;QACvB,OAAO,IAAI,KAAK,CAAC;YACf,GAAG,IAAI,CAAC,OAAO;YACf,IAAI;SACL,CAAC,CAAC;IACL,CAAC;IAEO,SAAS,CAAC,GAA2B;QAC3C,OAAO,SAAS,IAAI,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACxD,CAAC;IAEO,WAAW,CAAC,OAAqB;QACvC,IAAI,CAAC,OAAO,GAAG;YACb,GAAG,OAAO;YACV,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,EAAE;SAC/B,CAAC;QACF,IAAI,CAAC,mBAAmB,EAAE,CAAC;IAC7B,CAAC;IAEO,WAAW,CAAC,OAAgB,EAAE,OAAwB;QAC5D,MAAM,gBAAgB,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,CAClD,CAAC,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,CAAC,CACpE,CAAC;QAEF,MAAM,gBAAgB,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,GAAG,CACjE,CAAC,CAAC,IAAI,EAAE,WAAW,CAAC,EAAE,EAAE,CACtB,IAAI,KAAK,CAAC;YACR,IAAI;YACJ,OAAO,EAAE,WAAW,CAAC,GAAG,CACtB,CAAC,IAAI,EAAE,EAAE,CACP,IAAI,aAAa,CAAC;gBAChB,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;gBAC5B,SAAS,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;aACjC,CAAC,CACL;SACF,CAAC,CACL,CAAC;QAEF,IAAI,CAAC,OAAO,GAAG;YACb,IAAI,EAAE,EAAE;YACR,OAAO,EAAE,gBAAgB;YACzB,OAAO,EAAE,gBAAgB;YACzB,QAAQ,EAAE,OAAO,EAAE,QAAQ;YAC3B,UAAU,EAAE,OAAO,EAAE,UAAU;YAC/B,SAAS,EAAE,OAAO,EAAE,SAAS;YAC7B,aAAa,EAAE,OAAO,EAAE,aAAa;YACrC,aAAa,EAAE,OAAO,EAAE,aAAa;YACrC,kBAAkB,EAAE,OAAO,EAAE,kBAAkB;SAChD,CAAC;QACF,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAE3B,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC;IAChC,CAAC;IAEO,mBAAmB;QACzB,IAAI,CAAC,OAAO,CAAC,UAAU,KAAK,qBAAqB,CAAC,UAAU,CAAC;QAC7D,IAAI,CAAC,OAAO,CAAC,SAAS,KAAK,qBAAqB,CAAC,SAAS,CAAC;QAC3D,IAAI,CAAC,OAAO,CAAC,aAAa,KAAK,qBAAqB,CAAC,aAAa,CAAC;QACnE,IAAI,CAAC,OAAO,CAAC,aAAa,KAAK,qBAAqB,CAAC,aAAa,CAAC;QACnE,IAAI,CAAC,OAAO,CAAC,kBAAkB,KAAK,qBAAqB,CAAC,kBAAkB,CAAC;IAC/E,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;IAC3B,CAAC;IAED,IAAI,gBAAgB;QAClB,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;IAC/B,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,IAAI,CAAC;IAC5C,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;IAC9B,CAAC;IAED,IAAI,SAAS;QACX,OAAO,CACL,IAAI,CAAC,cAAc;YACnB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAyC,EAAE,MAAM,EAAE,EAAE;gBACxE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC;gBAC7D,OAAO,IAAI,CAAC;YACd,CAAC,EAAE,EAAa,CAAC,CAClB,CAAC;IACJ,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;IACpC,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,OAAO,CAAC,SAAU,CAAC;IACjC,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,OAAO,CAAC,UAAW,CAAC;IAClC,CAAC;IAED,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,OAAO,CAAC,aAAc,CAAC;IACrC,CAAC;IAED,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,OAAO,CAAC,aAAc,CAAC;IACrC,CAAC;IAED,IAAI,kBAAkB;QACpB,OAAO,IAAI,CAAC,OAAO,CAAC,kBAAmB,CAAC;IAC1C,CAAC;IAED,IAAI,YAAY;QACd,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;YAC3B,OAAO,kBAAkB,IAAI,CAAC,IAAI,EAAE,CAAC;QACvC,CAAC;QAED,OAAO,YAAY,IAAI,CAAC,IAAI,EAAE,CAAC;IACjC,CAAC;IAED,IAAI,SAAS;QACX,IAAI,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACzC,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,IAAI,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC;YACtF,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,QAAQ;QACN,IAAI,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACzC,MAAM,IAAI,KAAK,CAAC,qCAAqC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACpE,CAAC;QAED,IAAI,IAAI,CAAC,gBAAgB,IAAI,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAiB,CAAC,EAAE,CAAC;YAC/E,MAAM,IAAI,KAAK,CAAC,oCAAoC,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;QAC/E,CAAC;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,qBAAqB,EAAE,CAAC;YAChD,MAAM,IAAI,KAAK,CAAC,gEAAgE,qBAAqB,GAAG,CAAC,CAAC;QAC5G,CAAC;QAED,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACzC,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;QACnE,CAAC;QACD,IAAI,IAAI,CAAC,aAAa,IAAI,KAAK,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YAClD,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;QACrE,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,GAAG,EAAU,CAAC;QACtC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACtB,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAClC,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;YACpC,IAAI,MAAM,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;gBACzB,MAAM,IAAI,KAAK,CAAC,0EAA0E,CAAC,CAAC;YAC9F,CAAC;YACD,IAAI,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;gBAChC,MAAM,IAAI,KAAK,CAAC,oBAAoB,UAAU,EAAE,CAAC,CAAC;YACpD,CAAC;YACD,IAAI,oBAAoB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC1C,MAAM,IAAI,KAAK,CAAC,sCAAsC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;YACvE,CAAC;YACD,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC9B,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;QACrC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjC,IAAI,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC/B,MAAM,IAAI,KAAK,CAAC,mBAAmB,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;YACnD,CAAC;YACD,IAAI,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC1C,MAAM,IAAI,KAAK,CAAC,qCAAqC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;YACrE,CAAC;YAED,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;gBACnC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;oBAClC,MAAM,IAAI,KAAK,CAAC,UAAU,MAAM,CAAC,IAAI,wBAAwB,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC7E,CAAC;YACH,CAAC;YAED,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;IAED,MAAM;QACJ,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,SAAS,EAAE,IAAI,CAAC,QAAQ;YACxB,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;YAC5C,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAChD,GAAG,kBAAkB,CAAC,IAAI,CAAC;SAC5B,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"Table.js","sourceRoot":"","sources":["../../../src/db/schema/Table.ts"],"names":[],"mappings":"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"}
package/lib/index.d.ts CHANGED
@@ -1,58 +1,42 @@
1
1
  export * from './attachments/AttachmentContext.js';
2
2
  export * from './attachments/AttachmentErrorHandler.js';
3
3
  export * from './attachments/AttachmentQueue.js';
4
- export * from './attachments/AttachmentService.js';
5
4
  export * from './attachments/LocalStorageAdapter.js';
6
5
  export * from './attachments/RemoteStorageAdapter.js';
7
6
  export * from './attachments/Schema.js';
8
- export * from './attachments/SyncingService.js';
9
7
  export * from './attachments/WatchedAttachmentItem.js';
10
- export * from './client/AbstractPowerSyncDatabase.js';
11
- export * from './client/AbstractPowerSyncOpenFactory.js';
8
+ export * from './client/CommonPowerSyncDatabase.js';
12
9
  export { compilableQueryWatch, CompilableQueryWatchHandler } from './client/compilableQueryWatch.js';
13
10
  export * from './client/connection/PowerSyncBackendConnector.js';
14
11
  export * from './client/connection/PowerSyncCredentials.js';
15
- export { MAX_OP_ID } from './client/constants.js';
16
- export { runOnSchemaChange } from './client/runOnSchemaChange.js';
17
12
  export * from './client/SQLOpenFactory.js';
18
- export * from './client/sync/bucket/BucketStorageAdapter.js';
19
13
  export * from './client/sync/bucket/CrudBatch.js';
20
14
  export { CrudEntry, OpId, UpdateType } from './client/sync/bucket/CrudEntry.js';
21
15
  export * from './client/sync/bucket/CrudTransaction.js';
22
- export * from './client/sync/bucket/SqliteBucketStorage.js';
23
- export * from './client/sync/stream/AbstractRemote.js';
24
- export * from './client/sync/stream/AbstractStreamingSyncImplementation.js';
25
16
  export * from './client/sync/stream/JsonValue.js';
26
17
  export * from './client/sync/sync-streams.js';
27
- export * from './client/ConnectionManager.js';
28
- export * from './db/ConnectionClosedError.js';
18
+ export { SyncOptions, SyncStreamConnectionMethod, FetchStrategy } from './client/sync/options.js';
29
19
  export { ProgressWithOperations, SyncProgress } from './db/crud/SyncProgress.js';
30
20
  export * from './db/crud/SyncStatus.js';
31
21
  export * from './db/crud/UploadQueueStatus.js';
32
22
  export * from './db/DBAdapter.js';
23
+ export * from './db/QueryResult.js';
33
24
  export * from './db/schema/Column.js';
34
25
  export * from './db/schema/Index.js';
35
26
  export * from './db/schema/IndexedColumn.js';
36
- export { RawTableType, PendingStatementParameter, PendingStatement } from './db/schema/RawTable.js';
27
+ export { PendingStatement, PendingStatementParameter, RawTableType } from './db/schema/RawTable.js';
37
28
  export * from './db/schema/Schema.js';
38
29
  export * from './db/schema/Table.js';
39
- export * from './db/schema/TableV2.js';
40
30
  export * from './client/Query.js';
41
- export { MEMORY_TRIGGER_CLAIM_MANAGER } from './client/triggers/MemoryTriggerClaimManager.js';
42
31
  export * from './client/triggers/sanitizeSQL.js';
43
32
  export * from './client/triggers/TriggerManager.js';
44
- export { TriggerManagerImpl } from './client/triggers/TriggerManagerImpl.js';
45
33
  export * from './client/watched/GetAllQuery.js';
46
- export * from './client/watched/processors/AbstractQueryProcessor.js';
47
34
  export * from './client/watched/processors/comparators.js';
48
35
  export * from './client/watched/processors/DifferentialQueryProcessor.js';
49
36
  export * from './client/watched/processors/OnChangeQueryProcessor.js';
50
37
  export * from './client/watched/WatchedQuery.js';
51
- export * from './utils/AbortOperation.js';
38
+ export { type Mutex } from './utils/mutex.js';
52
39
  export * from './utils/BaseObserver.js';
53
- export * from './utils/ControlledExecutor.js';
40
+ export * from './utils/MetaBaseObserver.js';
54
41
  export * from './utils/Logger.js';
55
- export * from './utils/mutex.js';
56
- export * from './utils/parseQuery.js';
57
- export type { SimpleAsyncIterator } from './utils/stream_transform.js';
58
42
  export * from './types/types.js';