@powersync/common 0.0.0-dev-20260202160933 → 0.0.0-dev-20260202163643

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 (214) hide show
  1. package/dist/bundle.cjs +14470 -0
  2. package/dist/bundle.cjs.map +1 -0
  3. package/dist/bundle.mjs +14379 -0
  4. package/dist/bundle.mjs.map +1 -0
  5. package/dist/bundle.node.cjs +11948 -0
  6. package/dist/bundle.node.cjs.map +1 -0
  7. package/dist/bundle.node.mjs +11857 -0
  8. package/dist/bundle.node.mjs.map +1 -0
  9. package/dist/index.d.cts +4272 -0
  10. package/lib/attachments/AttachmentContext.d.ts +86 -0
  11. package/lib/attachments/AttachmentContext.js +229 -0
  12. package/lib/attachments/AttachmentContext.js.map +1 -0
  13. package/lib/attachments/AttachmentErrorHandler.d.ts +31 -0
  14. package/lib/attachments/AttachmentErrorHandler.js +2 -0
  15. package/lib/attachments/AttachmentErrorHandler.js.map +1 -0
  16. package/lib/attachments/AttachmentQueue.d.ts +149 -0
  17. package/lib/attachments/AttachmentQueue.js +362 -0
  18. package/lib/attachments/AttachmentQueue.js.map +1 -0
  19. package/lib/attachments/AttachmentService.d.ts +29 -0
  20. package/lib/attachments/AttachmentService.js +56 -0
  21. package/lib/attachments/AttachmentService.js.map +1 -0
  22. package/lib/attachments/LocalStorageAdapter.d.ts +62 -0
  23. package/lib/attachments/LocalStorageAdapter.js +6 -0
  24. package/lib/attachments/LocalStorageAdapter.js.map +1 -0
  25. package/lib/attachments/RemoteStorageAdapter.d.ts +27 -0
  26. package/lib/attachments/RemoteStorageAdapter.js +2 -0
  27. package/lib/attachments/RemoteStorageAdapter.js.map +1 -0
  28. package/lib/attachments/Schema.d.ts +50 -0
  29. package/lib/attachments/Schema.js +62 -0
  30. package/lib/attachments/Schema.js.map +1 -0
  31. package/lib/attachments/SyncingService.d.ts +62 -0
  32. package/lib/attachments/SyncingService.js +168 -0
  33. package/lib/attachments/SyncingService.js.map +1 -0
  34. package/lib/attachments/WatchedAttachmentItem.d.ts +17 -0
  35. package/lib/attachments/WatchedAttachmentItem.js +2 -0
  36. package/lib/attachments/WatchedAttachmentItem.js.map +1 -0
  37. package/lib/client/AbstractPowerSyncDatabase.d.ts +615 -0
  38. package/lib/client/AbstractPowerSyncDatabase.js +983 -0
  39. package/lib/client/AbstractPowerSyncDatabase.js.map +1 -0
  40. package/lib/client/AbstractPowerSyncOpenFactory.d.ts +22 -0
  41. package/lib/client/AbstractPowerSyncOpenFactory.js +25 -0
  42. package/lib/client/AbstractPowerSyncOpenFactory.js.map +1 -0
  43. package/lib/client/ConnectionManager.d.ts +112 -0
  44. package/lib/client/ConnectionManager.js +294 -0
  45. package/lib/client/ConnectionManager.js.map +1 -0
  46. package/lib/client/CustomQuery.d.ts +22 -0
  47. package/lib/client/CustomQuery.js +43 -0
  48. package/lib/client/CustomQuery.js.map +1 -0
  49. package/lib/client/Query.d.ts +97 -0
  50. package/lib/client/Query.js +2 -0
  51. package/lib/client/Query.js.map +1 -0
  52. package/lib/client/SQLOpenFactory.d.ts +42 -0
  53. package/lib/client/SQLOpenFactory.js +20 -0
  54. package/lib/client/SQLOpenFactory.js.map +1 -0
  55. package/lib/client/compilableQueryWatch.d.ts +7 -0
  56. package/lib/client/compilableQueryWatch.js +38 -0
  57. package/lib/client/compilableQueryWatch.js.map +1 -0
  58. package/lib/client/connection/PowerSyncBackendConnector.d.ts +23 -0
  59. package/lib/client/connection/PowerSyncBackendConnector.js +2 -0
  60. package/lib/client/connection/PowerSyncBackendConnector.js.map +1 -0
  61. package/lib/client/connection/PowerSyncCredentials.d.ts +5 -0
  62. package/lib/client/connection/PowerSyncCredentials.js +2 -0
  63. package/lib/client/connection/PowerSyncCredentials.js.map +1 -0
  64. package/lib/client/constants.d.ts +1 -0
  65. package/lib/client/constants.js +2 -0
  66. package/lib/client/constants.js.map +1 -0
  67. package/lib/client/runOnSchemaChange.d.ts +2 -0
  68. package/lib/client/runOnSchemaChange.js +24 -0
  69. package/lib/client/runOnSchemaChange.js.map +1 -0
  70. package/lib/client/sync/bucket/BucketStorageAdapter.d.ts +102 -0
  71. package/lib/client/sync/bucket/BucketStorageAdapter.js +19 -0
  72. package/lib/client/sync/bucket/BucketStorageAdapter.js.map +1 -0
  73. package/lib/client/sync/bucket/CrudBatch.d.ts +31 -0
  74. package/lib/client/sync/bucket/CrudBatch.js +26 -0
  75. package/lib/client/sync/bucket/CrudBatch.js.map +1 -0
  76. package/lib/client/sync/bucket/CrudEntry.d.ts +95 -0
  77. package/lib/client/sync/bucket/CrudEntry.js +110 -0
  78. package/lib/client/sync/bucket/CrudEntry.js.map +1 -0
  79. package/lib/client/sync/bucket/CrudTransaction.d.ts +29 -0
  80. package/lib/client/sync/bucket/CrudTransaction.js +25 -0
  81. package/lib/client/sync/bucket/CrudTransaction.js.map +1 -0
  82. package/lib/client/sync/bucket/OpType.d.ts +16 -0
  83. package/lib/client/sync/bucket/OpType.js +23 -0
  84. package/lib/client/sync/bucket/OpType.js.map +1 -0
  85. package/lib/client/sync/bucket/OplogEntry.d.ts +23 -0
  86. package/lib/client/sync/bucket/OplogEntry.js +36 -0
  87. package/lib/client/sync/bucket/OplogEntry.js.map +1 -0
  88. package/lib/client/sync/bucket/SqliteBucketStorage.d.ts +61 -0
  89. package/lib/client/sync/bucket/SqliteBucketStorage.js +324 -0
  90. package/lib/client/sync/bucket/SqliteBucketStorage.js.map +1 -0
  91. package/lib/client/sync/bucket/SyncDataBatch.d.ts +6 -0
  92. package/lib/client/sync/bucket/SyncDataBatch.js +12 -0
  93. package/lib/client/sync/bucket/SyncDataBatch.js.map +1 -0
  94. package/lib/client/sync/bucket/SyncDataBucket.d.ts +40 -0
  95. package/lib/client/sync/bucket/SyncDataBucket.js +40 -0
  96. package/lib/client/sync/bucket/SyncDataBucket.js.map +1 -0
  97. package/lib/client/sync/stream/AbstractRemote.d.ts +140 -0
  98. package/lib/client/sync/stream/AbstractRemote.js +506 -0
  99. package/lib/client/sync/stream/AbstractRemote.js.map +1 -0
  100. package/lib/client/sync/stream/AbstractStreamingSyncImplementation.d.ts +240 -0
  101. package/lib/client/sync/stream/AbstractStreamingSyncImplementation.js +990 -0
  102. package/lib/client/sync/stream/AbstractStreamingSyncImplementation.js.map +1 -0
  103. package/lib/client/sync/stream/WebsocketClientTransport.d.ts +15 -0
  104. package/lib/client/sync/stream/WebsocketClientTransport.js +61 -0
  105. package/lib/client/sync/stream/WebsocketClientTransport.js.map +1 -0
  106. package/lib/client/sync/stream/core-instruction.d.ts +72 -0
  107. package/lib/client/sync/stream/core-instruction.js +27 -0
  108. package/lib/client/sync/stream/core-instruction.js.map +1 -0
  109. package/lib/client/sync/stream/streaming-sync-types.d.ts +143 -0
  110. package/lib/client/sync/stream/streaming-sync-types.js +26 -0
  111. package/lib/client/sync/stream/streaming-sync-types.js.map +1 -0
  112. package/lib/client/sync/sync-streams.d.ts +98 -0
  113. package/lib/client/sync/sync-streams.js +2 -0
  114. package/lib/client/sync/sync-streams.js.map +1 -0
  115. package/lib/client/triggers/MemoryTriggerClaimManager.d.ts +6 -0
  116. package/lib/client/triggers/MemoryTriggerClaimManager.js +21 -0
  117. package/lib/client/triggers/MemoryTriggerClaimManager.js.map +1 -0
  118. package/lib/client/triggers/TriggerManager.d.ts +459 -0
  119. package/lib/client/triggers/TriggerManager.js +11 -0
  120. package/lib/client/triggers/TriggerManager.js.map +1 -0
  121. package/lib/client/triggers/TriggerManagerImpl.d.ts +39 -0
  122. package/lib/client/triggers/TriggerManagerImpl.js +393 -0
  123. package/lib/client/triggers/TriggerManagerImpl.js.map +1 -0
  124. package/lib/client/triggers/sanitizeSQL.d.ts +34 -0
  125. package/lib/client/triggers/sanitizeSQL.js +69 -0
  126. package/lib/client/triggers/sanitizeSQL.js.map +1 -0
  127. package/lib/client/watched/GetAllQuery.d.ts +32 -0
  128. package/lib/client/watched/GetAllQuery.js +25 -0
  129. package/lib/client/watched/GetAllQuery.js.map +1 -0
  130. package/lib/client/watched/WatchedQuery.d.ts +100 -0
  131. package/lib/client/watched/WatchedQuery.js +14 -0
  132. package/lib/client/watched/WatchedQuery.js.map +1 -0
  133. package/lib/client/watched/processors/AbstractQueryProcessor.d.ts +68 -0
  134. package/lib/client/watched/processors/AbstractQueryProcessor.js +151 -0
  135. package/lib/client/watched/processors/AbstractQueryProcessor.js.map +1 -0
  136. package/lib/client/watched/processors/DifferentialQueryProcessor.d.ts +121 -0
  137. package/lib/client/watched/processors/DifferentialQueryProcessor.js +173 -0
  138. package/lib/client/watched/processors/DifferentialQueryProcessor.js.map +1 -0
  139. package/lib/client/watched/processors/OnChangeQueryProcessor.d.ts +33 -0
  140. package/lib/client/watched/processors/OnChangeQueryProcessor.js +83 -0
  141. package/lib/client/watched/processors/OnChangeQueryProcessor.js.map +1 -0
  142. package/lib/client/watched/processors/comparators.d.ts +30 -0
  143. package/lib/client/watched/processors/comparators.js +35 -0
  144. package/lib/client/watched/processors/comparators.js.map +1 -0
  145. package/lib/db/ConnectionClosedError.d.ts +10 -0
  146. package/lib/db/ConnectionClosedError.js +21 -0
  147. package/lib/db/ConnectionClosedError.js.map +1 -0
  148. package/lib/db/DBAdapter.d.ts +115 -0
  149. package/lib/db/DBAdapter.js +20 -0
  150. package/lib/db/DBAdapter.js.map +1 -0
  151. package/lib/db/crud/SyncProgress.d.ts +68 -0
  152. package/lib/db/crud/SyncProgress.js +61 -0
  153. package/lib/db/crud/SyncProgress.js.map +1 -0
  154. package/lib/db/crud/SyncStatus.d.ts +195 -0
  155. package/lib/db/crud/SyncStatus.js +250 -0
  156. package/lib/db/crud/SyncStatus.js.map +1 -0
  157. package/lib/db/crud/UploadQueueStatus.d.ts +20 -0
  158. package/lib/db/crud/UploadQueueStatus.js +25 -0
  159. package/lib/db/crud/UploadQueueStatus.js.map +1 -0
  160. package/lib/db/schema/Column.d.ts +30 -0
  161. package/lib/db/schema/Column.js +43 -0
  162. package/lib/db/schema/Column.js.map +1 -0
  163. package/lib/db/schema/Index.d.ts +22 -0
  164. package/lib/db/schema/Index.js +30 -0
  165. package/lib/db/schema/Index.js.map +1 -0
  166. package/lib/db/schema/IndexedColumn.d.ts +19 -0
  167. package/lib/db/schema/IndexedColumn.js +30 -0
  168. package/lib/db/schema/IndexedColumn.js.map +1 -0
  169. package/lib/db/schema/RawTable.d.ts +61 -0
  170. package/lib/db/schema/RawTable.js +33 -0
  171. package/lib/db/schema/RawTable.js.map +1 -0
  172. package/lib/db/schema/Schema.d.ts +54 -0
  173. package/lib/db/schema/Schema.js +61 -0
  174. package/lib/db/schema/Schema.js.map +1 -0
  175. package/lib/db/schema/Table.d.ts +157 -0
  176. package/lib/db/schema/Table.js +208 -0
  177. package/lib/db/schema/Table.js.map +1 -0
  178. package/lib/db/schema/TableV2.d.ts +9 -0
  179. package/lib/db/schema/TableV2.js +9 -0
  180. package/lib/db/schema/TableV2.js.map +1 -0
  181. package/lib/index.d.ts +62 -0
  182. package/lib/index.js +63 -0
  183. package/lib/index.js.map +1 -0
  184. package/lib/types/types.d.ts +8 -0
  185. package/lib/types/types.js +2 -0
  186. package/lib/types/types.js.map +1 -0
  187. package/lib/utils/AbortOperation.d.ts +9 -0
  188. package/lib/utils/AbortOperation.js +19 -0
  189. package/lib/utils/AbortOperation.js.map +1 -0
  190. package/lib/utils/BaseObserver.d.ts +18 -0
  191. package/lib/utils/BaseObserver.js +27 -0
  192. package/lib/utils/BaseObserver.js.map +1 -0
  193. package/lib/utils/ControlledExecutor.d.ts +25 -0
  194. package/lib/utils/ControlledExecutor.js +51 -0
  195. package/lib/utils/ControlledExecutor.js.map +1 -0
  196. package/lib/utils/DataStream.d.ts +62 -0
  197. package/lib/utils/DataStream.js +169 -0
  198. package/lib/utils/DataStream.js.map +1 -0
  199. package/lib/utils/Logger.d.ts +31 -0
  200. package/lib/utils/Logger.js +37 -0
  201. package/lib/utils/Logger.js.map +1 -0
  202. package/lib/utils/MetaBaseObserver.d.ts +29 -0
  203. package/lib/utils/MetaBaseObserver.js +51 -0
  204. package/lib/utils/MetaBaseObserver.js.map +1 -0
  205. package/lib/utils/async.d.ts +23 -0
  206. package/lib/utils/async.js +55 -0
  207. package/lib/utils/async.js.map +1 -0
  208. package/lib/utils/mutex.d.ts +7 -0
  209. package/lib/utils/mutex.js +29 -0
  210. package/lib/utils/mutex.js.map +1 -0
  211. package/lib/utils/parseQuery.d.ts +6 -0
  212. package/lib/utils/parseQuery.js +17 -0
  213. package/lib/utils/parseQuery.js.map +1 -0
  214. package/package.json +1 -1
@@ -0,0 +1,30 @@
1
+ import { ColumnType } from './Column.js';
2
+ export const DEFAULT_INDEX_COLUMN_OPTIONS = {
3
+ ascending: true
4
+ };
5
+ export class IndexedColumn {
6
+ options;
7
+ static createAscending(column) {
8
+ return new IndexedColumn({
9
+ name: column,
10
+ ascending: true
11
+ });
12
+ }
13
+ constructor(options) {
14
+ this.options = { ...DEFAULT_INDEX_COLUMN_OPTIONS, ...options };
15
+ }
16
+ get name() {
17
+ return this.options.name;
18
+ }
19
+ get ascending() {
20
+ return this.options.ascending;
21
+ }
22
+ toJSON(table) {
23
+ return {
24
+ name: this.name,
25
+ ascending: this.ascending,
26
+ type: table.columns.find((column) => column.name === this.name)?.type ?? ColumnType.TEXT
27
+ };
28
+ }
29
+ }
30
+ //# sourceMappingURL=IndexedColumn.js.map
@@ -0,0 +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"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * A pending variant of a {@link RawTable} that doesn't have a name (because it would be inferred when creating the
3
+ * schema).
4
+ */
5
+ export type RawTableType = {
6
+ /**
7
+ * The statement to run when PowerSync detects that a row needs to be inserted or updated.
8
+ */
9
+ put: PendingStatement;
10
+ /**
11
+ * The statement to run when PowerSync detects that a row needs to be deleted.
12
+ */
13
+ delete: PendingStatement;
14
+ };
15
+ /**
16
+ * A parameter to use as part of {@link PendingStatement}.
17
+ *
18
+ * For delete statements, only the `"Id"` value is supported - the sync client will replace it with the id of the row to
19
+ * be synced.
20
+ *
21
+ * For insert and replace operations, the values of columns in the table are available as parameters through
22
+ * `{Column: 'name'}`.
23
+ */
24
+ export type PendingStatementParameter = 'Id' | {
25
+ Column: string;
26
+ };
27
+ /**
28
+ * A statement that the PowerSync client should use to insert or delete data into a table managed by the user.
29
+ */
30
+ export type PendingStatement = {
31
+ sql: string;
32
+ params: PendingStatementParameter[];
33
+ };
34
+ /**
35
+ * Instructs PowerSync to sync data into a "raw" table.
36
+ *
37
+ * Since raw tables are not backed by JSON, running complex queries on them may be more efficient. Further, they allow
38
+ * using client-side table and column constraints.
39
+ *
40
+ * To collect local writes to raw tables with PowerSync, custom triggers are required. See
41
+ * {@link https://docs.powersync.com/usage/use-case-examples/raw-tables the documentation} for details and an example on
42
+ * using raw tables.
43
+ *
44
+ * Note that raw tables are only supported when using the new `SyncClientImplementation.rust` sync client.
45
+ *
46
+ * @experimental Please note that this feature is experimental at the moment, and not covered by PowerSync semver or
47
+ * stability guarantees.
48
+ */
49
+ export declare class RawTable implements RawTableType {
50
+ /**
51
+ * The name of the table.
52
+ *
53
+ * This does not have to match the actual table name in the schema - {@link put} and {@link delete} are free to use
54
+ * another table. Instead, this name is used by the sync client to recognize that operations on this table (as it
55
+ * appears in the source / backend database) are to be handled specially.
56
+ */
57
+ name: string;
58
+ put: PendingStatement;
59
+ delete: PendingStatement;
60
+ constructor(name: string, type: RawTableType);
61
+ }
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Instructs PowerSync to sync data into a "raw" table.
3
+ *
4
+ * Since raw tables are not backed by JSON, running complex queries on them may be more efficient. Further, they allow
5
+ * using client-side table and column constraints.
6
+ *
7
+ * To collect local writes to raw tables with PowerSync, custom triggers are required. See
8
+ * {@link https://docs.powersync.com/usage/use-case-examples/raw-tables the documentation} for details and an example on
9
+ * using raw tables.
10
+ *
11
+ * Note that raw tables are only supported when using the new `SyncClientImplementation.rust` sync client.
12
+ *
13
+ * @experimental Please note that this feature is experimental at the moment, and not covered by PowerSync semver or
14
+ * stability guarantees.
15
+ */
16
+ export class RawTable {
17
+ /**
18
+ * The name of the table.
19
+ *
20
+ * This does not have to match the actual table name in the schema - {@link put} and {@link delete} are free to use
21
+ * another table. Instead, this name is used by the sync client to recognize that operations on this table (as it
22
+ * appears in the source / backend database) are to be handled specially.
23
+ */
24
+ name;
25
+ put;
26
+ delete;
27
+ constructor(name, type) {
28
+ this.name = name;
29
+ this.put = type.put;
30
+ this.delete = type.delete;
31
+ }
32
+ }
33
+ //# sourceMappingURL=RawTable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RawTable.js","sourceRoot":"","sources":["../../../src/db/schema/RawTable.ts"],"names":[],"mappings":"AAkCA;;;;;;;;;;;;;;GAcG;AACH,MAAM,OAAO,QAAQ;IACnB;;;;;;OAMG;IACH,IAAI,CAAS;IACb,GAAG,CAAmB;IACtB,MAAM,CAAmB;IAEzB,YAAY,IAAY,EAAE,IAAkB;QAC1C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QACpB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IAC5B,CAAC;CACF"}
@@ -0,0 +1,54 @@
1
+ import { RawTable, RawTableType } from './RawTable.js';
2
+ import { RowType, Table } from './Table.js';
3
+ type SchemaType = Record<string, Table<any>>;
4
+ export type SchemaTableType<S extends SchemaType> = {
5
+ [K in keyof S]: RowType<S[K]>;
6
+ };
7
+ /**
8
+ * A schema is a collection of tables. It is used to define the structure of a database.
9
+ */
10
+ export declare class Schema<S extends SchemaType = SchemaType> {
11
+ readonly types: SchemaTableType<S>;
12
+ readonly props: S;
13
+ readonly tables: Table[];
14
+ readonly rawTables: RawTable[];
15
+ constructor(tables: Table[] | S);
16
+ /**
17
+ * Adds raw tables to this schema. Raw tables are identified by their name, but entirely managed by the application
18
+ * developer instead of automatically by PowerSync.
19
+ * Since raw tables are not backed by JSON, running complex queries on them may be more efficient. Further, they allow
20
+ * using client-side table and column constraints.
21
+ * Note that raw tables are only supported when using the new `SyncClientImplementation.rust` sync client.
22
+ *
23
+ * @param tables An object of (table name, raw table definition) entries.
24
+ * @experimental Note that the raw tables API is still experimental and may change in the future.
25
+ */
26
+ withRawTables(tables: Record<string, RawTableType>): void;
27
+ validate(): void;
28
+ toJSON(): {
29
+ tables: {
30
+ name: string;
31
+ view_name: string;
32
+ local_only: boolean;
33
+ insert_only: boolean;
34
+ include_old: any;
35
+ include_old_only_when_changed: boolean;
36
+ include_metadata: boolean;
37
+ ignore_empty_update: boolean;
38
+ columns: {
39
+ name: string;
40
+ type: import("./Column.js").ColumnType | undefined;
41
+ }[];
42
+ indexes: {
43
+ name: string;
44
+ columns: {
45
+ name: string;
46
+ ascending: boolean | undefined;
47
+ type: import("./Column.js").ColumnType;
48
+ }[];
49
+ }[];
50
+ }[];
51
+ raw_tables: RawTable[];
52
+ };
53
+ }
54
+ export {};
@@ -0,0 +1,61 @@
1
+ import { RawTable } from './RawTable.js';
2
+ /**
3
+ * A schema is a collection of tables. It is used to define the structure of a database.
4
+ */
5
+ export class Schema {
6
+ /*
7
+ Only available when constructing with mapped typed definition columns
8
+ */
9
+ types;
10
+ props;
11
+ tables;
12
+ rawTables;
13
+ constructor(tables) {
14
+ if (Array.isArray(tables)) {
15
+ /*
16
+ We need to validate that the tables have a name here because a user could pass in an array
17
+ of Tables that don't have a name because they are using the V2 syntax.
18
+ Therefore, 'convertToClassicTables' won't be called on the tables resulting in a runtime error.
19
+ */
20
+ for (const table of tables) {
21
+ if (table.name === '') {
22
+ throw new Error("It appears you are trying to create a new Schema with an array instead of an object. Passing in an object instead of an array into 'new Schema()' may resolve your issue.");
23
+ }
24
+ }
25
+ this.tables = tables;
26
+ }
27
+ else {
28
+ // Update the table entries with the provided table name key
29
+ this.props = Object.fromEntries(Object.entries(tables).map(([tableName, table]) => [tableName, table.copyWithName(tableName)]));
30
+ this.tables = Object.values(this.props);
31
+ }
32
+ this.rawTables = [];
33
+ }
34
+ /**
35
+ * Adds raw tables to this schema. Raw tables are identified by their name, but entirely managed by the application
36
+ * developer instead of automatically by PowerSync.
37
+ * Since raw tables are not backed by JSON, running complex queries on them may be more efficient. Further, they allow
38
+ * using client-side table and column constraints.
39
+ * Note that raw tables are only supported when using the new `SyncClientImplementation.rust` sync client.
40
+ *
41
+ * @param tables An object of (table name, raw table definition) entries.
42
+ * @experimental Note that the raw tables API is still experimental and may change in the future.
43
+ */
44
+ withRawTables(tables) {
45
+ for (const [name, rawTableDefinition] of Object.entries(tables)) {
46
+ this.rawTables.push(new RawTable(name, rawTableDefinition));
47
+ }
48
+ }
49
+ validate() {
50
+ for (const table of this.tables) {
51
+ table.validate();
52
+ }
53
+ }
54
+ toJSON() {
55
+ return {
56
+ tables: this.tables.map((t) => t.toJSON()),
57
+ raw_tables: this.rawTables
58
+ };
59
+ }
60
+ }
61
+ //# sourceMappingURL=Schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Schema.js","sourceRoot":"","sources":["../../../src/db/schema/Schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAgB,MAAM,eAAe,CAAC;AASvD;;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;;;;;;;;;OASG;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,IAAI,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC,CAAC;QAC9D,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;SAC3B,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,157 @@
1
+ import { Column, ColumnsType, ColumnType, ExtractColumnValueType } from './Column.js';
2
+ import { Index } from './Index.js';
3
+ import { TableV2 } from './TableV2.js';
4
+ interface SharedTableOptions {
5
+ localOnly?: boolean;
6
+ insertOnly?: boolean;
7
+ viewName?: string;
8
+ trackPrevious?: boolean | TrackPreviousOptions;
9
+ trackMetadata?: boolean;
10
+ ignoreEmptyUpdates?: boolean;
11
+ }
12
+ /** Whether to include previous column values when PowerSync tracks local changes.
13
+ *
14
+ * Including old values may be helpful for some backend connector implementations, which is
15
+ * why it can be enabled on per-table or per-columm basis.
16
+ */
17
+ export interface TrackPreviousOptions {
18
+ /** When defined, a list of column names for which old values should be tracked. */
19
+ columns?: string[];
20
+ /** When enabled, only include values that have actually been changed by an update. */
21
+ onlyWhenChanged?: boolean;
22
+ }
23
+ export interface TableOptions extends SharedTableOptions {
24
+ /**
25
+ * The synced table name, matching sync rules
26
+ */
27
+ name: string;
28
+ columns: Column[];
29
+ indexes?: Index[];
30
+ }
31
+ export type RowType<T extends TableV2<any>> = {
32
+ [K in keyof T['columnMap']]: ExtractColumnValueType<T['columnMap'][K]>;
33
+ } & {
34
+ id: string;
35
+ };
36
+ export type IndexShorthand = Record<string, string[]>;
37
+ export interface TableV2Options extends SharedTableOptions {
38
+ indexes?: IndexShorthand;
39
+ }
40
+ export declare const DEFAULT_TABLE_OPTIONS: {
41
+ indexes: never[];
42
+ insertOnly: boolean;
43
+ localOnly: boolean;
44
+ trackPrevious: boolean;
45
+ trackMetadata: boolean;
46
+ ignoreEmptyUpdates: boolean;
47
+ };
48
+ export declare const InvalidSQLCharacters: RegExp;
49
+ export declare class Table<Columns extends ColumnsType = ColumnsType> {
50
+ protected options: TableOptions;
51
+ protected _mappedColumns: Columns;
52
+ static createLocalOnly(options: TableOptions): Table<ColumnsType>;
53
+ static createInsertOnly(options: TableOptions): Table<ColumnsType>;
54
+ /**
55
+ * Create a table.
56
+ * @deprecated This was only only included for TableV2 and is no longer necessary.
57
+ * Prefer to use new Table() directly.
58
+ *
59
+ * TODO remove in the next major release.
60
+ */
61
+ static createTable(name: string, table: Table): Table<ColumnsType>;
62
+ /**
63
+ * Creates a new Table instance.
64
+ *
65
+ * This constructor supports two different versions:
66
+ * 1. New constructor: Using a Columns object and an optional TableV2Options object
67
+ * 2. Deprecated constructor: Using a TableOptions object (will be removed in the next major release)
68
+ *
69
+ * @constructor
70
+ * @param {Columns | TableOptions} optionsOrColumns - Either a Columns object (for V2 syntax) or a TableOptions object (for V1 syntax)
71
+ * @param {TableV2Options} [v2Options] - Optional configuration options for V2 syntax
72
+ *
73
+ * @example
74
+ * ```javascript
75
+ * // New Constructor
76
+ * const table = new Table(
77
+ * {
78
+ * name: column.text,
79
+ * age: column.integer
80
+ * },
81
+ * { indexes: { nameIndex: ['name'] } }
82
+ * );
83
+ *```
84
+ *
85
+ *
86
+ * @example
87
+ * ```javascript
88
+ * // Deprecated Constructor
89
+ * const table = new Table({
90
+ * name: 'users',
91
+ * columns: [
92
+ * new Column({ name: 'name', type: ColumnType.TEXT }),
93
+ * new Column({ name: 'age', type: ColumnType.INTEGER })
94
+ * ]
95
+ * });
96
+ *```
97
+ */
98
+ constructor(columns: Columns, options?: TableV2Options);
99
+ /**
100
+ * @deprecated This constructor will be removed in the next major release.
101
+ * Use the new constructor shown below instead as this does not show types.
102
+ * @example
103
+ * <caption>Use this instead</caption>
104
+ * ```javascript
105
+ * const table = new Table(
106
+ * {
107
+ * name: column.text,
108
+ * age: column.integer
109
+ * },
110
+ * { indexes: { nameIndex: ['name'] } }
111
+ * );
112
+ *```
113
+ */
114
+ constructor(options: TableOptions);
115
+ copyWithName(name: string): Table;
116
+ private isTableV1;
117
+ private initTableV1;
118
+ private initTableV2;
119
+ private applyDefaultOptions;
120
+ get name(): string;
121
+ get viewNameOverride(): string | undefined;
122
+ get viewName(): string;
123
+ get columns(): Column[];
124
+ get columnMap(): Columns;
125
+ get indexes(): Index[];
126
+ get localOnly(): boolean;
127
+ get insertOnly(): boolean;
128
+ get trackPrevious(): boolean | TrackPreviousOptions;
129
+ get trackMetadata(): boolean;
130
+ get ignoreEmptyUpdates(): boolean;
131
+ get internalName(): string;
132
+ get validName(): boolean;
133
+ validate(): void;
134
+ toJSON(): {
135
+ name: string;
136
+ view_name: string;
137
+ local_only: boolean;
138
+ insert_only: boolean;
139
+ include_old: any;
140
+ include_old_only_when_changed: boolean;
141
+ include_metadata: boolean;
142
+ ignore_empty_update: boolean;
143
+ columns: {
144
+ name: string;
145
+ type: ColumnType | undefined;
146
+ }[];
147
+ indexes: {
148
+ name: string;
149
+ columns: {
150
+ name: string;
151
+ ascending: boolean | undefined;
152
+ type: ColumnType;
153
+ }[];
154
+ }[];
155
+ };
156
+ }
157
+ export {};
@@ -0,0 +1,208 @@
1
+ import { Column, ColumnType, MAX_AMOUNT_OF_COLUMNS } from './Column.js';
2
+ import { Index } from './Index.js';
3
+ import { IndexedColumn } from './IndexedColumn.js';
4
+ export const DEFAULT_TABLE_OPTIONS = {
5
+ indexes: [],
6
+ insertOnly: false,
7
+ localOnly: false,
8
+ trackPrevious: false,
9
+ trackMetadata: false,
10
+ ignoreEmptyUpdates: false
11
+ };
12
+ export const InvalidSQLCharacters = /["'%,.#\s[\]]/;
13
+ export class Table {
14
+ options;
15
+ _mappedColumns;
16
+ static createLocalOnly(options) {
17
+ return new Table({ ...options, localOnly: true, insertOnly: false });
18
+ }
19
+ static createInsertOnly(options) {
20
+ return new Table({ ...options, localOnly: false, insertOnly: true });
21
+ }
22
+ /**
23
+ * Create a table.
24
+ * @deprecated This was only only included for TableV2 and is no longer necessary.
25
+ * Prefer to use new Table() directly.
26
+ *
27
+ * TODO remove in the next major release.
28
+ */
29
+ static createTable(name, table) {
30
+ return new Table({
31
+ name,
32
+ columns: table.columns,
33
+ indexes: table.indexes,
34
+ localOnly: table.options.localOnly,
35
+ insertOnly: table.options.insertOnly,
36
+ viewName: table.options.viewName
37
+ });
38
+ }
39
+ constructor(optionsOrColumns, v2Options) {
40
+ if (this.isTableV1(optionsOrColumns)) {
41
+ this.initTableV1(optionsOrColumns);
42
+ }
43
+ else {
44
+ this.initTableV2(optionsOrColumns, v2Options);
45
+ }
46
+ }
47
+ copyWithName(name) {
48
+ return new Table({
49
+ ...this.options,
50
+ name
51
+ });
52
+ }
53
+ isTableV1(arg) {
54
+ return 'columns' in arg && Array.isArray(arg.columns);
55
+ }
56
+ initTableV1(options) {
57
+ this.options = {
58
+ ...options,
59
+ indexes: options.indexes || []
60
+ };
61
+ this.applyDefaultOptions();
62
+ }
63
+ initTableV2(columns, options) {
64
+ const convertedColumns = Object.entries(columns).map(([name, columnInfo]) => new Column({ name, type: columnInfo.type }));
65
+ const convertedIndexes = Object.entries(options?.indexes ?? {}).map(([name, columnNames]) => new Index({
66
+ name,
67
+ columns: columnNames.map((name) => new IndexedColumn({
68
+ name: name.replace(/^-/, ''),
69
+ ascending: !name.startsWith('-')
70
+ }))
71
+ }));
72
+ this.options = {
73
+ name: '',
74
+ columns: convertedColumns,
75
+ indexes: convertedIndexes,
76
+ viewName: options?.viewName,
77
+ insertOnly: options?.insertOnly,
78
+ localOnly: options?.localOnly,
79
+ trackPrevious: options?.trackPrevious,
80
+ trackMetadata: options?.trackMetadata,
81
+ ignoreEmptyUpdates: options?.ignoreEmptyUpdates
82
+ };
83
+ this.applyDefaultOptions();
84
+ this._mappedColumns = columns;
85
+ }
86
+ applyDefaultOptions() {
87
+ this.options.insertOnly ??= DEFAULT_TABLE_OPTIONS.insertOnly;
88
+ this.options.localOnly ??= DEFAULT_TABLE_OPTIONS.localOnly;
89
+ this.options.trackPrevious ??= DEFAULT_TABLE_OPTIONS.trackPrevious;
90
+ this.options.trackMetadata ??= DEFAULT_TABLE_OPTIONS.trackMetadata;
91
+ this.options.ignoreEmptyUpdates ??= DEFAULT_TABLE_OPTIONS.ignoreEmptyUpdates;
92
+ }
93
+ get name() {
94
+ return this.options.name;
95
+ }
96
+ get viewNameOverride() {
97
+ return this.options.viewName;
98
+ }
99
+ get viewName() {
100
+ return this.viewNameOverride ?? this.name;
101
+ }
102
+ get columns() {
103
+ return this.options.columns;
104
+ }
105
+ get columnMap() {
106
+ return (this._mappedColumns ??
107
+ this.columns.reduce((hash, column) => {
108
+ hash[column.name] = { type: column.type ?? ColumnType.TEXT };
109
+ return hash;
110
+ }, {}));
111
+ }
112
+ get indexes() {
113
+ return this.options.indexes ?? [];
114
+ }
115
+ get localOnly() {
116
+ return this.options.localOnly;
117
+ }
118
+ get insertOnly() {
119
+ return this.options.insertOnly;
120
+ }
121
+ get trackPrevious() {
122
+ return this.options.trackPrevious;
123
+ }
124
+ get trackMetadata() {
125
+ return this.options.trackMetadata;
126
+ }
127
+ get ignoreEmptyUpdates() {
128
+ return this.options.ignoreEmptyUpdates;
129
+ }
130
+ get internalName() {
131
+ if (this.options.localOnly) {
132
+ return `ps_data_local__${this.name}`;
133
+ }
134
+ return `ps_data__${this.name}`;
135
+ }
136
+ get validName() {
137
+ if (InvalidSQLCharacters.test(this.name)) {
138
+ return false;
139
+ }
140
+ if (this.viewNameOverride != null && InvalidSQLCharacters.test(this.viewNameOverride)) {
141
+ return false;
142
+ }
143
+ return true;
144
+ }
145
+ validate() {
146
+ if (InvalidSQLCharacters.test(this.name)) {
147
+ throw new Error(`Invalid characters in table name: ${this.name}`);
148
+ }
149
+ if (this.viewNameOverride && InvalidSQLCharacters.test(this.viewNameOverride)) {
150
+ throw new Error(`Invalid characters in view name: ${this.viewNameOverride}`);
151
+ }
152
+ if (this.columns.length > MAX_AMOUNT_OF_COLUMNS) {
153
+ throw new Error(`Table has too many columns. The maximum number of columns is ${MAX_AMOUNT_OF_COLUMNS}.`);
154
+ }
155
+ if (this.trackMetadata && this.localOnly) {
156
+ throw new Error(`Can't include metadata for local-only tables.`);
157
+ }
158
+ if (this.trackPrevious != false && this.localOnly) {
159
+ throw new Error(`Can't include old values for local-only tables.`);
160
+ }
161
+ const columnNames = new Set();
162
+ columnNames.add('id');
163
+ for (const column of this.columns) {
164
+ const { name: columnName } = column;
165
+ if (column.name === 'id') {
166
+ throw new Error(`An id column is automatically added, custom id columns are not supported`);
167
+ }
168
+ if (columnNames.has(columnName)) {
169
+ throw new Error(`Duplicate column ${columnName}`);
170
+ }
171
+ if (InvalidSQLCharacters.test(columnName)) {
172
+ throw new Error(`Invalid characters in column name: ${column.name}`);
173
+ }
174
+ columnNames.add(columnName);
175
+ }
176
+ const indexNames = new Set();
177
+ for (const index of this.indexes) {
178
+ if (indexNames.has(index.name)) {
179
+ throw new Error(`Duplicate index ${index.name}`);
180
+ }
181
+ if (InvalidSQLCharacters.test(index.name)) {
182
+ throw new Error(`Invalid characters in index name: ${index.name}`);
183
+ }
184
+ for (const column of index.columns) {
185
+ if (!columnNames.has(column.name)) {
186
+ throw new Error(`Column ${column.name} not found for index ${index.name}`);
187
+ }
188
+ }
189
+ indexNames.add(index.name);
190
+ }
191
+ }
192
+ toJSON() {
193
+ const trackPrevious = this.trackPrevious;
194
+ return {
195
+ name: this.name,
196
+ view_name: this.viewName,
197
+ local_only: this.localOnly,
198
+ insert_only: this.insertOnly,
199
+ include_old: trackPrevious && (trackPrevious.columns ?? true),
200
+ include_old_only_when_changed: typeof trackPrevious == 'object' && trackPrevious.onlyWhenChanged == true,
201
+ include_metadata: this.trackMetadata,
202
+ ignore_empty_update: this.ignoreEmptyUpdates,
203
+ columns: this.columns.map((c) => c.toJSON()),
204
+ indexes: this.indexes.map((e) => e.toJSON(this))
205
+ };
206
+ }
207
+ }
208
+ //# sourceMappingURL=Table.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Table.js","sourceRoot":"","sources":["../../../src/db/schema/Table.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { ColumnsType } from './Column.js';
2
+ import { Table } from './Table.js';
3
+ /**
4
+ Generate a new table from the columns and indexes
5
+ @deprecated You should use {@link Table} instead as it now allows TableV2 syntax.
6
+ This will be removed in the next major release.
7
+ */
8
+ export declare class TableV2<Columns extends ColumnsType = ColumnsType> extends Table<Columns> {
9
+ }
@@ -0,0 +1,9 @@
1
+ import { Table } from './Table.js';
2
+ /**
3
+ Generate a new table from the columns and indexes
4
+ @deprecated You should use {@link Table} instead as it now allows TableV2 syntax.
5
+ This will be removed in the next major release.
6
+ */
7
+ export class TableV2 extends Table {
8
+ }
9
+ //# sourceMappingURL=TableV2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TableV2.js","sourceRoot":"","sources":["../../../src/db/schema/TableV2.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC;;;;EAIE;AACF,MAAM,OAAO,OAAmD,SAAQ,KAAc;CAAG"}