@powersync/common 1.53.2 → 1.54.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 (213) hide show
  1. package/dist/bundle.cjs +548 -345
  2. package/dist/bundle.cjs.map +1 -1
  3. package/dist/bundle.mjs +548 -345
  4. package/dist/bundle.mjs.map +1 -1
  5. package/dist/bundle.node.cjs +548 -345
  6. package/dist/bundle.node.cjs.map +1 -1
  7. package/dist/bundle.node.mjs +548 -345
  8. package/dist/bundle.node.mjs.map +1 -1
  9. package/dist/index.d.cts +727 -189
  10. package/lib/attachments/AttachmentContext.d.ts +7 -6
  11. package/lib/attachments/AttachmentContext.js +2 -1
  12. package/lib/attachments/AttachmentContext.js.map +1 -1
  13. package/lib/attachments/AttachmentErrorHandler.d.ts +6 -6
  14. package/lib/attachments/AttachmentQueue.d.ts +61 -20
  15. package/lib/attachments/AttachmentQueue.js +16 -18
  16. package/lib/attachments/AttachmentQueue.js.map +1 -1
  17. package/lib/attachments/LocalStorageAdapter.d.ts +14 -8
  18. package/lib/attachments/LocalStorageAdapter.js +3 -0
  19. package/lib/attachments/LocalStorageAdapter.js.map +1 -1
  20. package/lib/attachments/RemoteStorageAdapter.d.ts +4 -4
  21. package/lib/attachments/Schema.d.ts +12 -4
  22. package/lib/attachments/Schema.js +8 -3
  23. package/lib/attachments/Schema.js.map +1 -1
  24. package/lib/attachments/WatchedAttachmentItem.d.ts +3 -1
  25. package/lib/client/AbstractPowerSyncDatabase.d.ts +110 -58
  26. package/lib/client/AbstractPowerSyncDatabase.js +59 -48
  27. package/lib/client/AbstractPowerSyncDatabase.js.map +1 -1
  28. package/lib/client/AbstractPowerSyncOpenFactory.d.ts +6 -0
  29. package/lib/client/AbstractPowerSyncOpenFactory.js +3 -0
  30. package/lib/client/AbstractPowerSyncOpenFactory.js.map +1 -1
  31. package/lib/client/ConnectionManager.d.ts +4 -1
  32. package/lib/client/ConnectionManager.js +1 -1
  33. package/lib/client/ConnectionManager.js.map +1 -1
  34. package/lib/client/Query.d.ts +9 -0
  35. package/lib/client/SQLOpenFactory.d.ts +12 -0
  36. package/lib/client/SQLOpenFactory.js +6 -0
  37. package/lib/client/SQLOpenFactory.js.map +1 -1
  38. package/lib/client/compilableQueryWatch.d.ts +6 -0
  39. package/lib/client/compilableQueryWatch.js +3 -0
  40. package/lib/client/compilableQueryWatch.js.map +1 -1
  41. package/lib/client/connection/PowerSyncBackendConnector.d.ts +3 -0
  42. package/lib/client/connection/PowerSyncCredentials.d.ts +3 -0
  43. package/lib/client/constants.d.ts +3 -0
  44. package/lib/client/constants.js +3 -0
  45. package/lib/client/constants.js.map +1 -1
  46. package/lib/client/runOnSchemaChange.d.ts +3 -0
  47. package/lib/client/runOnSchemaChange.js +3 -0
  48. package/lib/client/runOnSchemaChange.js.map +1 -1
  49. package/lib/client/sync/bucket/BucketStorageAdapter.d.ts +12 -0
  50. package/lib/client/sync/bucket/BucketStorageAdapter.js +6 -0
  51. package/lib/client/sync/bucket/BucketStorageAdapter.js.map +1 -1
  52. package/lib/client/sync/bucket/CrudBatch.d.ts +2 -0
  53. package/lib/client/sync/bucket/CrudBatch.js +2 -0
  54. package/lib/client/sync/bucket/CrudBatch.js.map +1 -1
  55. package/lib/client/sync/bucket/CrudEntry.d.ts +9 -0
  56. package/lib/client/sync/bucket/CrudEntry.js +4 -0
  57. package/lib/client/sync/bucket/CrudEntry.js.map +1 -1
  58. package/lib/client/sync/bucket/CrudTransaction.d.ts +3 -0
  59. package/lib/client/sync/bucket/CrudTransaction.js +3 -0
  60. package/lib/client/sync/bucket/CrudTransaction.js.map +1 -1
  61. package/lib/client/sync/bucket/SqliteBucketStorage.d.ts +3 -0
  62. package/lib/client/sync/bucket/SqliteBucketStorage.js +3 -0
  63. package/lib/client/sync/bucket/SqliteBucketStorage.js.map +1 -1
  64. package/lib/client/sync/stream/AbstractRemote.d.ts +30 -1
  65. package/lib/client/sync/stream/AbstractRemote.js +15 -1
  66. package/lib/client/sync/stream/AbstractRemote.js.map +1 -1
  67. package/lib/client/sync/stream/AbstractStreamingSyncImplementation.d.ts +55 -5
  68. package/lib/client/sync/stream/AbstractStreamingSyncImplementation.js +32 -4
  69. package/lib/client/sync/stream/AbstractStreamingSyncImplementation.js.map +1 -1
  70. package/lib/client/sync/stream/JsonValue.d.ts +3 -0
  71. package/lib/client/sync/stream/WebsocketClientTransport.js +2 -1
  72. package/lib/client/sync/stream/WebsocketClientTransport.js.map +1 -1
  73. package/lib/client/sync/sync-streams.d.ts +22 -7
  74. package/lib/client/triggers/TriggerManager.d.ts +19 -18
  75. package/lib/client/triggers/TriggerManager.js +2 -1
  76. package/lib/client/triggers/TriggerManager.js.map +1 -1
  77. package/lib/client/triggers/TriggerManagerImpl.d.ts +1 -1
  78. package/lib/client/triggers/TriggerManagerImpl.js +3 -3
  79. package/lib/client/triggers/TriggerManagerImpl.js.map +1 -1
  80. package/lib/client/triggers/sanitizeSQL.d.ts +4 -0
  81. package/lib/client/triggers/sanitizeSQL.js +4 -0
  82. package/lib/client/triggers/sanitizeSQL.js.map +1 -1
  83. package/lib/client/watched/GetAllQuery.d.ts +4 -0
  84. package/lib/client/watched/GetAllQuery.js +2 -0
  85. package/lib/client/watched/GetAllQuery.js.map +1 -1
  86. package/lib/client/watched/WatchedQuery.d.ts +24 -2
  87. package/lib/client/watched/WatchedQuery.js +9 -0
  88. package/lib/client/watched/WatchedQuery.js.map +1 -1
  89. package/lib/client/watched/processors/AbstractQueryProcessor.d.ts +1 -1
  90. package/lib/client/watched/processors/AbstractQueryProcessor.js.map +1 -1
  91. package/lib/client/watched/processors/DifferentialQueryProcessor.d.ts +20 -0
  92. package/lib/client/watched/processors/DifferentialQueryProcessor.js +4 -0
  93. package/lib/client/watched/processors/DifferentialQueryProcessor.js.map +1 -1
  94. package/lib/client/watched/processors/OnChangeQueryProcessor.d.ts +4 -0
  95. package/lib/client/watched/processors/OnChangeQueryProcessor.js.map +1 -1
  96. package/lib/client/watched/processors/comparators.d.ts +8 -0
  97. package/lib/client/watched/processors/comparators.js +4 -0
  98. package/lib/client/watched/processors/comparators.js.map +1 -1
  99. package/lib/db/ConnectionClosedError.d.ts +2 -0
  100. package/lib/db/ConnectionClosedError.js +2 -0
  101. package/lib/db/ConnectionClosedError.js.map +1 -1
  102. package/lib/db/DBAdapter.d.ts +56 -6
  103. package/lib/db/DBAdapter.js +15 -3
  104. package/lib/db/DBAdapter.js.map +1 -1
  105. package/lib/db/crud/SyncProgress.d.ts +6 -1
  106. package/lib/db/crud/SyncProgress.js +2 -0
  107. package/lib/db/crud/SyncProgress.js.map +1 -1
  108. package/lib/db/crud/SyncStatus.d.ts +36 -38
  109. package/lib/db/crud/SyncStatus.js +19 -14
  110. package/lib/db/crud/SyncStatus.js.map +1 -1
  111. package/lib/db/crud/UploadQueueStatus.d.ts +3 -0
  112. package/lib/db/crud/UploadQueueStatus.js +3 -0
  113. package/lib/db/crud/UploadQueueStatus.js.map +1 -1
  114. package/lib/db/schema/Column.d.ts +28 -0
  115. package/lib/db/schema/Column.js +16 -3
  116. package/lib/db/schema/Column.js.map +1 -1
  117. package/lib/db/schema/Index.d.ts +9 -0
  118. package/lib/db/schema/Index.js +6 -0
  119. package/lib/db/schema/Index.js.map +1 -1
  120. package/lib/db/schema/IndexedColumn.d.ts +9 -0
  121. package/lib/db/schema/IndexedColumn.js +6 -0
  122. package/lib/db/schema/IndexedColumn.js.map +1 -1
  123. package/lib/db/schema/RawTable.d.ts +7 -1
  124. package/lib/db/schema/Schema.d.ts +6 -1
  125. package/lib/db/schema/Schema.js +3 -1
  126. package/lib/db/schema/Schema.js.map +1 -1
  127. package/lib/db/schema/Table.d.ts +27 -3
  128. package/lib/db/schema/Table.js +9 -0
  129. package/lib/db/schema/Table.js.map +1 -1
  130. package/lib/db/schema/TableV2.d.ts +2 -0
  131. package/lib/db/schema/TableV2.js +2 -0
  132. package/lib/db/schema/TableV2.js.map +1 -1
  133. package/lib/index.d.ts +1 -1
  134. package/lib/types/types.d.ts +6 -0
  135. package/lib/utils/AbortOperation.d.ts +2 -0
  136. package/lib/utils/AbortOperation.js +2 -0
  137. package/lib/utils/AbortOperation.js.map +1 -1
  138. package/lib/utils/BaseObserver.d.ts +12 -0
  139. package/lib/utils/BaseObserver.js +3 -0
  140. package/lib/utils/BaseObserver.js.map +1 -1
  141. package/lib/utils/ControlledExecutor.d.ts +6 -0
  142. package/lib/utils/ControlledExecutor.js +3 -0
  143. package/lib/utils/ControlledExecutor.js.map +1 -1
  144. package/lib/utils/Logger.d.ts +9 -0
  145. package/lib/utils/Logger.js +6 -0
  146. package/lib/utils/Logger.js.map +1 -1
  147. package/lib/utils/mutex.d.ts +8 -0
  148. package/lib/utils/mutex.js +3 -0
  149. package/lib/utils/mutex.js.map +1 -1
  150. package/lib/utils/parseQuery.d.ts +6 -0
  151. package/lib/utils/parseQuery.js +3 -0
  152. package/lib/utils/parseQuery.js.map +1 -1
  153. package/lib/utils/stream_transform.d.ts +3 -1
  154. package/lib/utils/stream_transform.js.map +1 -1
  155. package/package.json +3 -2
  156. package/src/attachments/AttachmentContext.ts +7 -6
  157. package/src/attachments/AttachmentErrorHandler.ts +6 -6
  158. package/src/attachments/AttachmentQueue.ts +71 -23
  159. package/src/attachments/LocalStorageAdapter.ts +14 -8
  160. package/src/attachments/README.md +2 -0
  161. package/src/attachments/RemoteStorageAdapter.ts +4 -4
  162. package/src/attachments/Schema.ts +12 -4
  163. package/src/attachments/WatchedAttachmentItem.ts +3 -1
  164. package/src/client/AbstractPowerSyncDatabase.ts +117 -62
  165. package/src/client/AbstractPowerSyncOpenFactory.ts +6 -0
  166. package/src/client/ConnectionManager.ts +4 -1
  167. package/src/client/Query.ts +9 -0
  168. package/src/client/SQLOpenFactory.ts +12 -0
  169. package/src/client/compilableQueryWatch.ts +6 -0
  170. package/src/client/connection/PowerSyncBackendConnector.ts +3 -0
  171. package/src/client/connection/PowerSyncCredentials.ts +3 -0
  172. package/src/client/constants.ts +3 -0
  173. package/src/client/runOnSchemaChange.ts +3 -0
  174. package/src/client/sync/bucket/BucketStorageAdapter.ts +12 -0
  175. package/src/client/sync/bucket/CrudBatch.ts +2 -0
  176. package/src/client/sync/bucket/CrudEntry.ts +9 -0
  177. package/src/client/sync/bucket/CrudTransaction.ts +3 -0
  178. package/src/client/sync/bucket/SqliteBucketStorage.ts +3 -0
  179. package/src/client/sync/stream/AbstractRemote.ts +30 -1
  180. package/src/client/sync/stream/AbstractStreamingSyncImplementation.ts +55 -5
  181. package/src/client/sync/stream/JsonValue.ts +3 -0
  182. package/src/client/sync/stream/WebsocketClientTransport.ts +3 -1
  183. package/src/client/sync/sync-streams.ts +22 -9
  184. package/src/client/triggers/TriggerManager.ts +19 -18
  185. package/src/client/triggers/TriggerManagerImpl.ts +5 -5
  186. package/src/client/triggers/sanitizeSQL.ts +5 -0
  187. package/src/client/watched/GetAllQuery.ts +5 -1
  188. package/src/client/watched/WatchedQuery.ts +24 -2
  189. package/src/client/watched/processors/AbstractQueryProcessor.ts +6 -6
  190. package/src/client/watched/processors/DifferentialQueryProcessor.ts +28 -5
  191. package/src/client/watched/processors/OnChangeQueryProcessor.ts +9 -3
  192. package/src/client/watched/processors/comparators.ts +8 -0
  193. package/src/db/ConnectionClosedError.ts +2 -0
  194. package/src/db/DBAdapter.ts +58 -6
  195. package/src/db/crud/SyncProgress.ts +6 -1
  196. package/src/db/crud/SyncStatus.ts +40 -21
  197. package/src/db/crud/UploadQueueStatus.ts +3 -0
  198. package/src/db/schema/Column.ts +28 -3
  199. package/src/db/schema/Index.ts +9 -0
  200. package/src/db/schema/IndexedColumn.ts +9 -0
  201. package/src/db/schema/RawTable.ts +7 -1
  202. package/src/db/schema/Schema.ts +8 -3
  203. package/src/db/schema/Table.ts +30 -5
  204. package/src/db/schema/TableV2.ts +2 -0
  205. package/src/index.ts +1 -1
  206. package/src/types/types.ts +6 -0
  207. package/src/utils/AbortOperation.ts +2 -0
  208. package/src/utils/BaseObserver.ts +12 -0
  209. package/src/utils/ControlledExecutor.ts +6 -0
  210. package/src/utils/Logger.ts +9 -0
  211. package/src/utils/mutex.ts +12 -0
  212. package/src/utils/parseQuery.ts +6 -0
  213. package/src/utils/stream_transform.ts +3 -1
@@ -3,6 +3,9 @@ import { CoreStreamSubscription } from '../../client/sync/stream/core-instructio
3
3
  import { SyncStreamDescription, SyncSubscriptionDescription } from '../../client/sync/sync-streams.js';
4
4
  import { InternalProgressInformation, ProgressWithOperations, SyncProgress } from './SyncProgress.js';
5
5
 
6
+ /**
7
+ * @public
8
+ */
6
9
  export type SyncDataFlowStatus = Partial<{
7
10
  downloading: boolean;
8
11
  uploading: boolean;
@@ -20,18 +23,27 @@ export type SyncDataFlowStatus = Partial<{
20
23
  /**
21
24
  * Internal information about how far we are downloading operations in buckets.
22
25
  *
23
- * Please use the {@link SyncStatus#downloadProgress} property to track sync progress.
26
+ * @internal Please use the {@link SyncStatus#downloadProgress} property to track sync progress.
24
27
  */
25
28
  downloadProgress: InternalProgressInformation | null;
29
+ /**
30
+ * @internal
31
+ */
26
32
  internalStreamSubscriptions: CoreStreamSubscription[] | null;
27
33
  }>;
28
34
 
35
+ /**
36
+ * @public
37
+ */
29
38
  export interface SyncPriorityStatus {
30
39
  priority: number;
31
40
  lastSyncedAt?: Date;
32
41
  hasSynced?: boolean;
33
42
  }
34
43
 
44
+ /**
45
+ * @internal
46
+ */
35
47
  export type SyncStatusOptions = {
36
48
  connected?: boolean;
37
49
  connecting?: boolean;
@@ -45,6 +57,9 @@ export type SyncStatusOptions = {
45
57
  clientImplementation?: SyncClientImplementation;
46
58
  };
47
59
 
60
+ /**
61
+ * @public
62
+ */
48
63
  export class SyncStatus {
49
64
  constructor(protected options: SyncStatusOptions) {}
50
65
 
@@ -53,6 +68,8 @@ export class SyncStatus {
53
68
  * implementation).
54
69
  *
55
70
  * This information is only available after a connection has been requested.
71
+ *
72
+ * @deprecated This always returns the Rust client (the only option).
56
73
  */
57
74
  get clientImplementation() {
58
75
  return this.options.clientImplementation;
@@ -61,18 +78,18 @@ export class SyncStatus {
61
78
  /**
62
79
  * Indicates if the client is currently connected to the PowerSync service.
63
80
  *
64
- * @returns {boolean} True if connected, false otherwise. Defaults to false if not specified.
81
+ * @returns True if connected, false otherwise. Defaults to false if not specified.
65
82
  */
66
- get connected() {
83
+ get connected(): boolean {
67
84
  return this.options.connected ?? false;
68
85
  }
69
86
 
70
87
  /**
71
88
  * Indicates if the client is in the process of establishing a connection to the PowerSync service.
72
89
  *
73
- * @returns {boolean} True if connecting, false otherwise. Defaults to false if not specified.
90
+ * @returns True if connecting, false otherwise. Defaults to false if not specified.
74
91
  */
75
- get connecting() {
92
+ get connecting(): boolean {
76
93
  return this.options.connecting ?? false;
77
94
  }
78
95
 
@@ -80,31 +97,31 @@ export class SyncStatus {
80
97
  * Time that a last sync has fully completed, if any.
81
98
  * This timestamp is reset to null after a restart of the PowerSync service.
82
99
  *
83
- * @returns {Date | undefined} The timestamp of the last successful sync, or undefined if no sync has completed.
100
+ * @returns The timestamp of the last successful sync, or undefined if no sync has completed.
84
101
  */
85
- get lastSyncedAt() {
102
+ get lastSyncedAt(): Date | undefined {
86
103
  return this.options.lastSyncedAt;
87
104
  }
88
105
 
89
106
  /**
90
107
  * Indicates whether there has been at least one full sync completed since initialization.
91
108
  *
92
- * @returns {boolean | undefined} True if at least one sync has completed, false if no sync has completed,
109
+ * @returns True if at least one sync has completed, false if no sync has completed,
93
110
  * or undefined when the state is still being loaded from the database.
94
111
  */
95
- get hasSynced() {
112
+ get hasSynced(): boolean | undefined {
96
113
  return this.options.hasSynced;
97
114
  }
98
115
 
99
116
  /**
100
117
  * Provides the current data flow status regarding uploads and downloads.
101
118
  *
102
- * @returns {SyncDataFlowStatus} An object containing:
119
+ * @returns An object containing:
103
120
  * - downloading: True if actively downloading changes (only when connected is also true)
104
121
  * - uploading: True if actively uploading changes
105
- * Defaults to {downloading: false, uploading: false} if not specified.
122
+ * Defaults to `{downloading: false, uploading: false}` if not specified.
106
123
  */
107
- get dataFlowStatus() {
124
+ get dataFlowStatus(): SyncDataFlowStatus {
108
125
  return (
109
126
  this.options.dataFlow ?? {
110
127
  /**
@@ -131,7 +148,7 @@ export class SyncStatus {
131
148
  }
132
149
 
133
150
  /**
134
- * If the `stream` appears in {@link syncStreams}, returns the current status for that stream.
151
+ * If the `stream` appears in {@link SyncStatus.syncStreams}, returns the current status for that stream.
135
152
  */
136
153
  forStream(stream: SyncStreamDescription): SyncStreamStatus | undefined {
137
154
  const asJson = JSON.stringify(stream.parameters);
@@ -145,10 +162,10 @@ export class SyncStatus {
145
162
  /**
146
163
  * Provides sync status information for all bucket priorities, sorted by priority (highest first).
147
164
  *
148
- * @returns {SyncPriorityStatus[]} An array of status entries for different sync priority levels,
165
+ * @returns An array of status entries for different sync priority levels,
149
166
  * sorted with highest priorities (lower numbers) first.
150
167
  */
151
- get priorityStatusEntries() {
168
+ get priorityStatusEntries(): SyncPriorityStatus[] {
152
169
  return (this.options.priorityStatusEntries ?? []).slice().sort(SyncStatus.comparePriorities);
153
170
  }
154
171
 
@@ -183,8 +200,8 @@ export class SyncStatus {
183
200
  * For example, if PowerSync just finished synchronizing buckets in priority level 3, calling this method
184
201
  * with a priority of 1 may return information for priority level 3.
185
202
  *
186
- * @param {number} priority The bucket priority for which the status should be reported
187
- * @returns {SyncPriorityStatus} Status information for the requested priority level or the next higher level with available status
203
+ * @param priority - The bucket priority for which the status should be reported
204
+ * @returns Status information for the requested priority level or the next higher level with available status
188
205
  */
189
206
  statusForPriority(priority: number): SyncPriorityStatus {
190
207
  // priorityStatusEntries are sorted by ascending priorities (so higher numbers to lower numbers).
@@ -207,8 +224,8 @@ export class SyncStatus {
207
224
  * Compares this SyncStatus instance with another to determine if they are equal.
208
225
  * Equality is determined by comparing the serialized JSON representation of both instances.
209
226
  *
210
- * @param {SyncStatus} status The SyncStatus instance to compare against
211
- * @returns {boolean} True if the instances are considered equal, false otherwise
227
+ * @param status - The SyncStatus instance to compare against
228
+ * @returns True if the instances are considered equal, false otherwise
212
229
  */
213
230
  isEqual(status: SyncStatus) {
214
231
  /**
@@ -233,7 +250,7 @@ export class SyncStatus {
233
250
  * Creates a human-readable string representation of the current sync status.
234
251
  * Includes information about connection state, sync completion, and data flow.
235
252
  *
236
- * @returns {string} A string representation of the sync status
253
+ * @returns A string representation of the sync status
237
254
  */
238
255
  getMessage() {
239
256
  const dataFlow = this.dataFlowStatus;
@@ -243,7 +260,7 @@ export class SyncStatus {
243
260
  /**
244
261
  * Serializes the SyncStatus instance to a plain object.
245
262
  *
246
- * @returns {SyncStatusOptions} A plain object representation of the sync status
263
+ * @returns A plain object representation of the sync status
247
264
  */
248
265
  toJSON(): SyncStatusOptions {
249
266
  return {
@@ -282,6 +299,8 @@ export class SyncStatus {
282
299
 
283
300
  /**
284
301
  * Information about a sync stream subscription.
302
+ *
303
+ * @public
285
304
  */
286
305
  export interface SyncStreamStatus {
287
306
  progress: ProgressWithOperations | null;
@@ -1,3 +1,6 @@
1
+ /**
2
+ * @public
3
+ */
1
4
  export class UploadQueueStats {
2
5
  constructor(
3
6
  /**
@@ -1,21 +1,36 @@
1
- // https://www.sqlite.org/lang_expr.html#castexpr
1
+ /**
2
+ * @see https://www.sqlite.org/lang_expr.html#castexpr
3
+ * @public
4
+ */
2
5
  export enum ColumnType {
3
6
  TEXT = 'TEXT',
4
7
  INTEGER = 'INTEGER',
5
8
  REAL = 'REAL'
6
9
  }
7
10
 
11
+ /**
12
+ * @public
13
+ */
8
14
  export interface ColumnOptions {
9
15
  name: string;
10
16
  type?: ColumnType;
11
17
  }
12
18
 
19
+ /**
20
+ * @public
21
+ */
13
22
  export type BaseColumnType<T extends number | string | null> = {
14
23
  type: ColumnType;
15
24
  };
16
25
 
26
+ /**
27
+ * @public
28
+ */
17
29
  export type ColumnsType = Record<string, BaseColumnType<any>>;
18
30
 
31
+ /**
32
+ * @public
33
+ */
19
34
  export type ExtractColumnValueType<T extends BaseColumnType<any>> = T extends BaseColumnType<infer R> ? R : unknown;
20
35
 
21
36
  const text: BaseColumnType<string | null> = {
@@ -30,16 +45,26 @@ const real: BaseColumnType<number | null> = {
30
45
  type: ColumnType.REAL
31
46
  };
32
47
 
33
- // powersync-sqlite-core limits the number of column per table to 1999, due to internal SQLite limits.
34
- // In earlier versions this was limited to 63.
48
+ /**
49
+ * powersync-sqlite-core limits the number of column per table to 1999, due to internal SQLite limits.
50
+ * In earlier versions this was limited to 63.
51
+ *
52
+ * @internal
53
+ */
35
54
  export const MAX_AMOUNT_OF_COLUMNS = 1999;
36
55
 
56
+ /**
57
+ * @public
58
+ */
37
59
  export const column = {
38
60
  text,
39
61
  integer,
40
62
  real
41
63
  };
42
64
 
65
+ /**
66
+ * @public
67
+ */
43
68
  export class Column {
44
69
  constructor(protected options: ColumnOptions) {}
45
70
 
@@ -1,15 +1,24 @@
1
1
  import { IndexedColumn } from './IndexedColumn.js';
2
2
  import { Table } from './Table.js';
3
3
 
4
+ /**
5
+ * @public
6
+ */
4
7
  export interface IndexOptions {
5
8
  name: string;
6
9
  columns?: IndexedColumn[];
7
10
  }
8
11
 
12
+ /**
13
+ * @internal
14
+ */
9
15
  export const DEFAULT_INDEX_OPTIONS: Partial<IndexOptions> = {
10
16
  columns: []
11
17
  };
12
18
 
19
+ /**
20
+ * @public
21
+ */
13
22
  export class Index {
14
23
  static createAscending(options: IndexOptions, columnNames: string[]) {
15
24
  return new Index({
@@ -1,15 +1,24 @@
1
1
  import { ColumnType } from './Column.js';
2
2
  import { Table } from './Table.js';
3
3
 
4
+ /**
5
+ * @public
6
+ */
4
7
  export interface IndexColumnOptions {
5
8
  name: string;
6
9
  ascending?: boolean;
7
10
  }
8
11
 
12
+ /**
13
+ * @internal
14
+ */
9
15
  export const DEFAULT_INDEX_COLUMN_OPTIONS: Partial<IndexColumnOptions> = {
10
16
  ascending: true
11
17
  };
12
18
 
19
+ /**
20
+ * @public
21
+ */
13
22
  export class IndexedColumn {
14
23
  protected options: IndexColumnOptions;
15
24
 
@@ -7,8 +7,10 @@ import { TableOrRawTableOptions } from './Table.js';
7
7
  * using client-side table and column constraints.
8
8
  *
9
9
  * To collect local writes to raw tables with PowerSync, custom triggers are required. See
10
- * {@link https://docs.powersync.com/usage/use-case-examples/raw-tables the documentation} for details and an example on
10
+ * {@link https://docs.powersync.com/usage/use-case-examples/raw-tables} for details and an example on
11
11
  * using raw tables.
12
+ *
13
+ * @public
12
14
  */
13
15
  export type RawTableType = RawTableTypeWithStatements | InferredRawTableType;
14
16
 
@@ -70,11 +72,15 @@ interface InferredRawTableType extends Partial<RawTableTypeWithStatements> {
70
72
  * `{Column: 'name'}`.
71
73
  * The `"Rest"` parameter gets resolved to a JSON object covering all values from the synced row that haven't been
72
74
  * covered by a `Column` parameter.
75
+ *
76
+ * @public
73
77
  */
74
78
  export type PendingStatementParameter = 'Id' | { Column: string } | 'Rest';
75
79
 
76
80
  /**
77
81
  * A statement that the PowerSync client should use to insert or delete data into a table managed by the user.
82
+ *
83
+ * @public
78
84
  */
79
85
  export type PendingStatement = {
80
86
  sql: string;
@@ -4,19 +4,24 @@ import { RowType, Table } from './Table.js';
4
4
 
5
5
  type SchemaType = Record<string, Table<any>>;
6
6
 
7
+ /**
8
+ * @public
9
+ */
7
10
  export type SchemaTableType<S extends SchemaType> = {
8
11
  [K in keyof S]: RowType<S[K]>;
9
12
  };
10
13
 
11
14
  /**
12
15
  * A schema is a collection of tables. It is used to define the structure of a database.
16
+ *
17
+ * @public
13
18
  */
14
19
  export class Schema<S extends SchemaType = SchemaType> {
15
20
  /*
16
21
  Only available when constructing with mapped typed definition columns
17
22
  */
18
- readonly types: SchemaTableType<S>;
19
- readonly props: S;
23
+ readonly types!: SchemaTableType<S>;
24
+ readonly props!: S;
20
25
  readonly tables: Table[];
21
26
  readonly rawTables: RawTable[];
22
27
 
@@ -52,7 +57,7 @@ export class Schema<S extends SchemaType = SchemaType> {
52
57
  * Since raw tables are not backed by JSON, running complex queries on them may be more efficient. Further, they allow
53
58
  * using client-side table and column constraints.
54
59
  *
55
- * @param tables An object of (table name, raw table definition) entries.
60
+ * @param tables - An object of (table name, raw table definition) entries.
56
61
  */
57
62
  withRawTables(tables: Record<string, RawTableType>) {
58
63
  for (const [name, rawTableDefinition] of Object.entries(tables)) {
@@ -13,6 +13,8 @@ import { TableV2 } from './TableV2.js';
13
13
 
14
14
  /**
15
15
  * Options that apply both to JSON-based tables and raw tables.
16
+ *
17
+ * @public
16
18
  */
17
19
  export interface TableOrRawTableOptions {
18
20
  localOnly?: boolean;
@@ -30,6 +32,8 @@ interface SharedTableOptions extends TableOrRawTableOptions {
30
32
  *
31
33
  * Including old values may be helpful for some backend connector implementations, which is
32
34
  * why it can be enabled on per-table or per-columm basis.
35
+ *
36
+ * @public
33
37
  */
34
38
  export interface TrackPreviousOptions {
35
39
  /** When defined, a list of column names for which old values should be tracked. */
@@ -38,6 +42,9 @@ export interface TrackPreviousOptions {
38
42
  onlyWhenChanged?: boolean;
39
43
  }
40
44
 
45
+ /**
46
+ * @public
47
+ */
41
48
  export interface TableOptions extends SharedTableOptions {
42
49
  /**
43
50
  * The synced table name, matching sync rules
@@ -47,18 +54,31 @@ export interface TableOptions extends SharedTableOptions {
47
54
  indexes?: Index[];
48
55
  }
49
56
 
57
+ /**
58
+ * @public
59
+ */
50
60
  export type RowType<T extends TableV2<any>> = {
51
61
  [K in keyof T['columnMap']]: ExtractColumnValueType<T['columnMap'][K]>;
52
62
  } & {
53
63
  id: string;
54
64
  };
55
65
 
66
+ /**
67
+ * @public
68
+ */
56
69
  export type IndexShorthand = Record<string, string[]>;
57
70
 
71
+ /**
72
+ * @public
73
+ */
74
+
58
75
  export interface TableV2Options extends SharedTableOptions {
59
76
  indexes?: IndexShorthand;
60
77
  }
61
78
 
79
+ /**
80
+ * @internal
81
+ */
62
82
  export const DEFAULT_TABLE_OPTIONS = {
63
83
  indexes: [],
64
84
  insertOnly: false,
@@ -68,12 +88,18 @@ export const DEFAULT_TABLE_OPTIONS = {
68
88
  ignoreEmptyUpdates: false
69
89
  };
70
90
 
91
+ /**
92
+ * @internal
93
+ */
71
94
  export const InvalidSQLCharacters = /["'%,.#\s[\]]/;
72
95
 
96
+ /**
97
+ * @public
98
+ */
73
99
  export class Table<Columns extends ColumnsType = ColumnsType> {
74
- protected options: TableOptions;
100
+ protected options!: TableOptions;
75
101
 
76
- protected _mappedColumns: Columns;
102
+ protected _mappedColumns!: Columns;
77
103
 
78
104
  static createLocalOnly(options: TableOptions) {
79
105
  return new Table({ ...options, localOnly: true, insertOnly: false });
@@ -108,9 +134,8 @@ export class Table<Columns extends ColumnsType = ColumnsType> {
108
134
  * 1. New constructor: Using a Columns object and an optional TableV2Options object
109
135
  * 2. Deprecated constructor: Using a TableOptions object (will be removed in the next major release)
110
136
  *
111
- * @constructor
112
- * @param {Columns | TableOptions} optionsOrColumns - Either a Columns object (for V2 syntax) or a TableOptions object (for V1 syntax)
113
- * @param {TableV2Options} [v2Options] - Optional configuration options for V2 syntax
137
+ * @param columns - Either a Columns object (for V2 syntax) or a TableOptions object (for V1 syntax)
138
+ * @param options - Optional configuration options for V2 syntax
114
139
  *
115
140
  * @example
116
141
  * ```javascript
@@ -5,5 +5,7 @@ import { Table } from './Table.js';
5
5
  Generate a new table from the columns and indexes
6
6
  @deprecated You should use {@link Table} instead as it now allows TableV2 syntax.
7
7
  This will be removed in the next major release.
8
+
9
+ @public
8
10
  */
9
11
  export class TableV2<Columns extends ColumnsType = ColumnsType> extends Table<Columns> {}
package/src/index.ts CHANGED
@@ -35,7 +35,7 @@ export * from './db/DBAdapter.js';
35
35
  export * from './db/schema/Column.js';
36
36
  export * from './db/schema/Index.js';
37
37
  export * from './db/schema/IndexedColumn.js';
38
- export { RawTableType, PendingStatementParameter, PendingStatement } from './db/schema/RawTable.js';
38
+ export { PendingStatement, PendingStatementParameter, RawTableType } from './db/schema/RawTable.js';
39
39
  export * from './db/schema/Schema.js';
40
40
  export * from './db/schema/Table.js';
41
41
  export * from './db/schema/TableV2.js';
@@ -1,8 +1,14 @@
1
+ /**
2
+ * @public
3
+ */
1
4
  export interface CompilableQuery<T> {
2
5
  execute(): Promise<T[]>;
3
6
  compile(): CompiledQuery;
4
7
  }
5
8
 
9
+ /**
10
+ * @public
11
+ */
6
12
  export interface CompiledQuery {
7
13
  readonly sql: string;
8
14
  readonly parameters: ReadonlyArray<unknown>;
@@ -2,6 +2,8 @@
2
2
  * Calls to Abortcontroller.abort(reason: any) will result in the
3
3
  * `reason` being thrown. This is not necessarily an error,
4
4
  * but extends error for better logging purposes.
5
+ *
6
+ * @internal
5
7
  */
6
8
  export class AbortOperation extends Error {
7
9
  constructor(protected reason: string) {
@@ -1,13 +1,25 @@
1
+ /**
2
+ * @public
3
+ */
1
4
  export interface Disposable {
2
5
  dispose: () => Promise<void> | void;
3
6
  }
4
7
 
8
+ /**
9
+ * @public
10
+ */
5
11
  export type BaseListener = Record<string, ((...event: any) => any) | undefined>;
6
12
 
13
+ /**
14
+ * @public
15
+ */
7
16
  export interface BaseObserverInterface<T extends BaseListener> {
8
17
  registerListener(listener: Partial<T>): () => void;
9
18
  }
10
19
 
20
+ /**
21
+ * @internal
22
+ */
11
23
  export class BaseObserver<T extends BaseListener = BaseListener> implements BaseObserverInterface<T> {
12
24
  protected listeners = new Set<Partial<T>>();
13
25
 
@@ -1,3 +1,6 @@
1
+ /**
2
+ * @internal
3
+ */
1
4
  export interface ControlledExecutorOptions {
2
5
  /**
3
6
  * If throttling is enabled, it ensures only one task runs at a time,
@@ -7,6 +10,9 @@ export interface ControlledExecutorOptions {
7
10
  throttleEnabled?: boolean;
8
11
  }
9
12
 
13
+ /**
14
+ * @internal
15
+ */
10
16
  export class ControlledExecutor<T> {
11
17
  private task: (param: T) => Promise<void> | void;
12
18
 
@@ -4,6 +4,9 @@ export { GlobalLogger, ILogger, ILoggerOpts, ILogHandler, ILogLevel } from 'js-l
4
4
 
5
5
  const TypedLogger: ILogger = Logger as any;
6
6
 
7
+ /**
8
+ * @public
9
+ */
7
10
  export const LogLevel = {
8
11
  TRACE: TypedLogger.TRACE,
9
12
  DEBUG: TypedLogger.DEBUG,
@@ -14,6 +17,9 @@ export const LogLevel = {
14
17
  OFF: TypedLogger.OFF
15
18
  };
16
19
 
20
+ /**
21
+ * @public
22
+ */
17
23
  export interface CreateLoggerOptions {
18
24
  logLevel?: ILogLevel;
19
25
  }
@@ -25,6 +31,7 @@ export interface CreateLoggerOptions {
25
31
  * across all loggers created with `createLogger`. Adjusting settings on this
26
32
  * base logger affects all loggers derived from it unless explicitly overridden.
27
33
  *
34
+ * @public
28
35
  */
29
36
  export function createBaseLogger() {
30
37
  return Logger;
@@ -36,6 +43,8 @@ export function createBaseLogger() {
36
43
  * Named loggers allow specific modules or areas of your application to have
37
44
  * their own logging levels and behaviors. These loggers inherit configuration
38
45
  * from the base logger by default but can override settings independently.
46
+ *
47
+ * @public
39
48
  */
40
49
  export function createLogger(name: string, options: CreateLoggerOptions = {}): ILogger {
41
50
  const logger = Logger.get(name);
@@ -1,5 +1,8 @@
1
1
  import { Queue } from './queue.js';
2
2
 
3
+ /**
4
+ * @internal
5
+ */
3
6
  export type UnlockFn = () => void;
4
7
 
5
8
  /**
@@ -178,10 +181,19 @@ export class Mutex {
178
181
 
179
182
  /**
180
183
  * Creates a signal aborting after the set timeout.
184
+ *
185
+ * @internal
181
186
  */
182
187
  export function timeoutSignal(timeout: number): AbortSignal;
188
+
189
+ /**
190
+ * @internal
191
+ */
183
192
  export function timeoutSignal(timeout?: number): AbortSignal | undefined;
184
193
 
194
+ /**
195
+ * @internal
196
+ */
185
197
  export function timeoutSignal(timeout?: number): AbortSignal | undefined {
186
198
  if (timeout == null) return;
187
199
  if ('timeout' in AbortSignal) return AbortSignal.timeout(timeout);
@@ -1,10 +1,16 @@
1
1
  import type { CompilableQuery } from '../types/types.js';
2
2
 
3
+ /**
4
+ * @internal
5
+ */
3
6
  export interface ParsedQuery {
4
7
  sqlStatement: string;
5
8
  parameters: any[];
6
9
  }
7
10
 
11
+ /**
12
+ * @internal
13
+ */
8
14
  export const parseQuery = <T>(query: string | CompilableQuery<T>, parameters: any[]): ParsedQuery => {
9
15
  let sqlStatement: string;
10
16
 
@@ -2,9 +2,11 @@
2
2
  * An async iterator that can't be cancelled.
3
3
  *
4
4
  * To keep data flow simple, we always pass an explicit cancellation token when subscribing to async streams. Once the
5
- * {@link AbortSignal} aborts, iterators are supposed to clean up and then emit a final `{done: true}` event. This means
5
+ * `AbortSignal` aborts, iterators are supposed to clean up and then emit a final `{done: true}` event. This means
6
6
  * that there's no way to distinguish between streams that have completed normally and streams that have been cancelled,
7
7
  * but that is acceptable for our uses of this.
8
+ *
9
+ * @internal
8
10
  */
9
11
  export type SimpleAsyncIterator<T> = Pick<AsyncIterator<T>, 'next'>;
10
12