@powersync/common 0.0.0-dev-20260504100448 → 0.0.0-dev-20260630141119
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.
- package/lib/attachments/AttachmentContext.d.ts +9 -8
- package/lib/attachments/AttachmentContext.js +8 -3
- package/lib/attachments/AttachmentContext.js.map +1 -1
- package/lib/attachments/AttachmentErrorHandler.d.ts +6 -6
- package/lib/attachments/AttachmentQueue.d.ts +85 -36
- package/lib/attachments/AttachmentQueue.js +19 -21
- package/lib/attachments/AttachmentQueue.js.map +1 -1
- package/lib/attachments/AttachmentService.d.ts +3 -3
- package/lib/attachments/AttachmentService.js +4 -3
- package/lib/attachments/AttachmentService.js.map +1 -1
- package/lib/attachments/LocalStorageAdapter.d.ts +14 -8
- package/lib/attachments/LocalStorageAdapter.js +3 -0
- package/lib/attachments/LocalStorageAdapter.js.map +1 -1
- package/lib/attachments/RemoteStorageAdapter.d.ts +4 -4
- package/lib/attachments/Schema.d.ts +14 -6
- package/lib/attachments/Schema.js +8 -3
- package/lib/attachments/Schema.js.map +1 -1
- package/lib/attachments/SyncingService.d.ts +2 -2
- package/lib/attachments/SyncingService.js +8 -3
- package/lib/attachments/SyncingService.js.map +1 -1
- package/lib/attachments/WatchedAttachmentItem.d.ts +3 -1
- package/lib/client/{AbstractPowerSyncDatabase.d.ts → CommonPowerSyncDatabase.d.ts} +112 -238
- package/lib/client/CommonPowerSyncDatabase.js +2 -0
- package/lib/client/CommonPowerSyncDatabase.js.map +1 -0
- package/lib/client/Query.d.ts +9 -0
- package/lib/client/SQLOpenFactory.d.ts +44 -10
- package/lib/client/SQLOpenFactory.js +1 -19
- package/lib/client/SQLOpenFactory.js.map +1 -1
- package/lib/client/compilableQueryWatch.d.ts +8 -2
- package/lib/client/compilableQueryWatch.js +4 -2
- package/lib/client/compilableQueryWatch.js.map +1 -1
- package/lib/client/connection/PowerSyncBackendConnector.d.ts +6 -3
- package/lib/client/connection/PowerSyncCredentials.d.ts +3 -0
- package/lib/client/runOnSchemaChange.d.ts +5 -2
- package/lib/client/runOnSchemaChange.js +3 -0
- package/lib/client/runOnSchemaChange.js.map +1 -1
- package/lib/client/sync/bucket/CrudBatch.d.ts +2 -0
- package/lib/client/sync/bucket/CrudBatch.js +2 -0
- package/lib/client/sync/bucket/CrudBatch.js.map +1 -1
- package/lib/client/sync/bucket/CrudEntry.d.ts +9 -31
- package/lib/client/sync/bucket/CrudEntry.js +2 -97
- package/lib/client/sync/bucket/CrudEntry.js.map +1 -1
- package/lib/client/sync/bucket/CrudTransaction.d.ts +3 -0
- package/lib/client/sync/bucket/CrudTransaction.js +3 -0
- package/lib/client/sync/bucket/CrudTransaction.js.map +1 -1
- package/lib/client/sync/options.d.ts +65 -0
- package/lib/client/sync/options.js +25 -0
- package/lib/client/sync/options.js.map +1 -0
- package/lib/client/sync/stream/JsonValue.d.ts +3 -0
- package/lib/client/sync/sync-streams.d.ts +23 -8
- package/lib/client/triggers/TriggerManager.d.ts +28 -56
- package/lib/client/triggers/TriggerManager.js +2 -1
- package/lib/client/triggers/TriggerManager.js.map +1 -1
- package/lib/client/triggers/sanitizeSQL.d.ts +4 -0
- package/lib/client/triggers/sanitizeSQL.js +4 -0
- package/lib/client/triggers/sanitizeSQL.js.map +1 -1
- package/lib/client/watched/GetAllQuery.d.ts +7 -3
- package/lib/client/watched/GetAllQuery.js +3 -1
- package/lib/client/watched/GetAllQuery.js.map +1 -1
- package/lib/client/watched/WatchedQuery.d.ts +20 -6
- package/lib/client/watched/WatchedQuery.js +3 -5
- package/lib/client/watched/WatchedQuery.js.map +1 -1
- package/lib/client/watched/processors/DifferentialQueryProcessor.d.ts +15 -45
- package/lib/client/watched/processors/DifferentialQueryProcessor.js +1 -172
- package/lib/client/watched/processors/DifferentialQueryProcessor.js.map +1 -1
- package/lib/client/watched/processors/OnChangeQueryProcessor.d.ts +4 -22
- package/lib/client/watched/processors/OnChangeQueryProcessor.js +1 -82
- package/lib/client/watched/processors/OnChangeQueryProcessor.js.map +1 -1
- package/lib/client/watched/processors/comparators.d.ts +8 -0
- package/lib/client/watched/processors/comparators.js +4 -0
- package/lib/client/watched/processors/comparators.js.map +1 -1
- package/lib/db/DBAdapter.d.ts +90 -113
- package/lib/db/DBAdapter.js +70 -89
- package/lib/db/DBAdapter.js.map +1 -1
- package/lib/db/QueryResult.d.ts +104 -0
- package/lib/db/QueryResult.js +96 -0
- package/lib/db/QueryResult.js.map +1 -0
- package/lib/db/crud/SyncProgress.d.ts +7 -14
- package/lib/db/crud/SyncProgress.js +1 -60
- package/lib/db/crud/SyncProgress.js.map +1 -1
- package/lib/db/crud/SyncStatus.d.ts +54 -91
- package/lib/db/crud/SyncStatus.js +1 -245
- package/lib/db/crud/SyncStatus.js.map +1 -1
- package/lib/db/crud/UploadQueueStatus.d.ts +3 -0
- package/lib/db/crud/UploadQueueStatus.js +3 -0
- package/lib/db/crud/UploadQueueStatus.js.map +1 -1
- package/lib/db/schema/Column.d.ts +22 -1
- package/lib/db/schema/Column.js +10 -4
- package/lib/db/schema/Column.js.map +1 -1
- package/lib/db/schema/Index.d.ts +8 -3
- package/lib/db/schema/Index.js +4 -1
- package/lib/db/schema/Index.js.map +1 -1
- package/lib/db/schema/IndexedColumn.d.ts +8 -3
- package/lib/db/schema/IndexedColumn.js +4 -1
- package/lib/db/schema/IndexedColumn.js.map +1 -1
- package/lib/db/schema/RawTable.d.ts +7 -1
- package/lib/db/schema/Schema.d.ts +10 -29
- package/lib/db/schema/Schema.js +3 -1
- package/lib/db/schema/Schema.js.map +1 -1
- package/lib/db/schema/Table.d.ts +69 -91
- package/lib/db/schema/Table.js +88 -87
- package/lib/db/schema/Table.js.map +1 -1
- package/lib/index.d.ts +6 -22
- package/lib/index.js +5 -22
- package/lib/index.js.map +1 -1
- package/lib/types/types.d.ts +6 -0
- package/lib/utils/BaseObserver.d.ts +12 -0
- package/lib/utils/BaseObserver.js +3 -0
- package/lib/utils/BaseObserver.js.map +1 -1
- package/lib/utils/Logger.d.ts +60 -22
- package/lib/utils/Logger.js +38 -30
- package/lib/utils/Logger.js.map +1 -1
- package/lib/utils/MetaBaseObserver.d.ts +11 -11
- package/lib/utils/MetaBaseObserver.js +1 -50
- package/lib/utils/MetaBaseObserver.js.map +1 -1
- package/lib/utils/mutex.d.ts +3 -45
- package/lib/utils/mutex.js +1 -153
- package/lib/utils/mutex.js.map +1 -1
- package/package.json +9 -46
- package/src/attachments/AttachmentContext.ts +15 -13
- package/src/attachments/AttachmentErrorHandler.ts +6 -6
- package/src/attachments/AttachmentQueue.ts +99 -42
- package/src/attachments/AttachmentService.ts +7 -6
- package/src/attachments/LocalStorageAdapter.ts +14 -8
- package/src/attachments/README.md +2 -0
- package/src/attachments/RemoteStorageAdapter.ts +4 -4
- package/src/attachments/Schema.ts +14 -6
- package/src/attachments/SyncingService.ts +10 -6
- package/src/attachments/WatchedAttachmentItem.ts +3 -1
- package/src/client/CommonPowerSyncDatabase.ts +540 -0
- package/src/client/Query.ts +9 -0
- package/src/client/SQLOpenFactory.ts +47 -19
- package/src/client/compilableQueryWatch.ts +9 -4
- package/src/client/connection/PowerSyncBackendConnector.ts +6 -3
- package/src/client/connection/PowerSyncCredentials.ts +3 -0
- package/src/client/runOnSchemaChange.ts +5 -2
- package/src/client/sync/bucket/CrudBatch.ts +2 -0
- package/src/client/sync/bucket/CrudEntry.ts +10 -101
- package/src/client/sync/bucket/CrudTransaction.ts +3 -0
- package/src/client/sync/options.ts +77 -0
- package/src/client/sync/stream/JsonValue.ts +3 -0
- package/src/client/sync/sync-streams.ts +23 -10
- package/src/client/triggers/TriggerManager.ts +29 -59
- package/src/client/triggers/sanitizeSQL.ts +5 -0
- package/src/client/watched/GetAllQuery.ts +8 -4
- package/src/client/watched/WatchedQuery.ts +20 -11
- package/src/client/watched/processors/DifferentialQueryProcessor.ts +19 -219
- package/src/client/watched/processors/OnChangeQueryProcessor.ts +4 -109
- package/src/client/watched/processors/comparators.ts +8 -0
- package/src/db/DBAdapter.ts +160 -175
- package/src/db/QueryResult.ts +195 -0
- package/src/db/crud/SyncProgress.ts +8 -43
- package/src/db/crud/SyncStatus.ts +66 -216
- package/src/db/crud/UploadQueueStatus.ts +3 -0
- package/src/db/schema/Column.ts +22 -5
- package/src/db/schema/Index.ts +9 -3
- package/src/db/schema/IndexedColumn.ts +9 -3
- package/src/db/schema/RawTable.ts +7 -1
- package/src/db/schema/Schema.ts +12 -7
- package/src/db/schema/Table.ts +130 -180
- package/src/index.ts +6 -22
- package/src/types/types.ts +6 -0
- package/src/utils/BaseObserver.ts +12 -0
- package/src/utils/Logger.ts +86 -31
- package/src/utils/MetaBaseObserver.ts +14 -60
- package/src/utils/mutex.ts +4 -189
- package/dist/bundle.cjs +0 -14136
- package/dist/bundle.cjs.map +0 -1
- package/dist/bundle.mjs +0 -14056
- package/dist/bundle.mjs.map +0 -1
- package/dist/bundle.node.cjs +0 -11613
- package/dist/bundle.node.cjs.map +0 -1
- package/dist/bundle.node.mjs +0 -11533
- package/dist/bundle.node.mjs.map +0 -1
- package/dist/index.d.cts +0 -4052
- package/legacy/sync_protocol.d.ts +0 -103
- package/lib/client/AbstractPowerSyncDatabase.js +0 -987
- package/lib/client/AbstractPowerSyncDatabase.js.map +0 -1
- package/lib/client/AbstractPowerSyncOpenFactory.d.ts +0 -22
- package/lib/client/AbstractPowerSyncOpenFactory.js +0 -25
- package/lib/client/AbstractPowerSyncOpenFactory.js.map +0 -1
- package/lib/client/ConnectionManager.d.ts +0 -112
- package/lib/client/ConnectionManager.js +0 -294
- package/lib/client/ConnectionManager.js.map +0 -1
- package/lib/client/CustomQuery.d.ts +0 -22
- package/lib/client/CustomQuery.js +0 -43
- package/lib/client/CustomQuery.js.map +0 -1
- package/lib/client/constants.d.ts +0 -1
- package/lib/client/constants.js +0 -2
- package/lib/client/constants.js.map +0 -1
- package/lib/client/sync/bucket/BucketStorageAdapter.d.ts +0 -40
- package/lib/client/sync/bucket/BucketStorageAdapter.js +0 -19
- package/lib/client/sync/bucket/BucketStorageAdapter.js.map +0 -1
- package/lib/client/sync/bucket/SqliteBucketStorage.d.ts +0 -34
- package/lib/client/sync/bucket/SqliteBucketStorage.js +0 -162
- package/lib/client/sync/bucket/SqliteBucketStorage.js.map +0 -1
- package/lib/client/sync/stream/AbstractRemote.d.ts +0 -151
- package/lib/client/sync/stream/AbstractRemote.js +0 -473
- package/lib/client/sync/stream/AbstractRemote.js.map +0 -1
- package/lib/client/sync/stream/AbstractStreamingSyncImplementation.d.ts +0 -218
- package/lib/client/sync/stream/AbstractStreamingSyncImplementation.js +0 -663
- package/lib/client/sync/stream/AbstractStreamingSyncImplementation.js.map +0 -1
- package/lib/client/sync/stream/WebsocketClientTransport.d.ts +0 -15
- package/lib/client/sync/stream/WebsocketClientTransport.js +0 -61
- package/lib/client/sync/stream/WebsocketClientTransport.js.map +0 -1
- package/lib/client/sync/stream/core-instruction.d.ts +0 -71
- package/lib/client/sync/stream/core-instruction.js +0 -27
- package/lib/client/sync/stream/core-instruction.js.map +0 -1
- package/lib/client/triggers/MemoryTriggerClaimManager.d.ts +0 -6
- package/lib/client/triggers/MemoryTriggerClaimManager.js +0 -21
- package/lib/client/triggers/MemoryTriggerClaimManager.js.map +0 -1
- package/lib/client/triggers/TriggerManagerImpl.d.ts +0 -39
- package/lib/client/triggers/TriggerManagerImpl.js +0 -405
- package/lib/client/triggers/TriggerManagerImpl.js.map +0 -1
- package/lib/client/watched/processors/AbstractQueryProcessor.d.ts +0 -68
- package/lib/client/watched/processors/AbstractQueryProcessor.js +0 -151
- package/lib/client/watched/processors/AbstractQueryProcessor.js.map +0 -1
- package/lib/db/ConnectionClosedError.d.ts +0 -10
- package/lib/db/ConnectionClosedError.js +0 -21
- package/lib/db/ConnectionClosedError.js.map +0 -1
- package/lib/db/schema/TableV2.d.ts +0 -9
- package/lib/db/schema/TableV2.js +0 -9
- package/lib/db/schema/TableV2.js.map +0 -1
- package/lib/utils/AbortOperation.d.ts +0 -9
- package/lib/utils/AbortOperation.js +0 -19
- package/lib/utils/AbortOperation.js.map +0 -1
- package/lib/utils/ControlledExecutor.d.ts +0 -25
- package/lib/utils/ControlledExecutor.js +0 -51
- package/lib/utils/ControlledExecutor.js.map +0 -1
- package/lib/utils/async.d.ts +0 -14
- package/lib/utils/async.js +0 -46
- package/lib/utils/async.js.map +0 -1
- package/lib/utils/parseQuery.d.ts +0 -6
- package/lib/utils/parseQuery.js +0 -17
- package/lib/utils/parseQuery.js.map +0 -1
- package/lib/utils/queue.d.ts +0 -16
- package/lib/utils/queue.js +0 -42
- package/lib/utils/queue.js.map +0 -1
- package/lib/utils/stream_transform.d.ts +0 -39
- package/lib/utils/stream_transform.js +0 -206
- package/lib/utils/stream_transform.js.map +0 -1
- package/src/client/AbstractPowerSyncDatabase.ts +0 -1362
- package/src/client/AbstractPowerSyncOpenFactory.ts +0 -39
- package/src/client/ConnectionManager.ts +0 -402
- package/src/client/CustomQuery.ts +0 -56
- package/src/client/constants.ts +0 -1
- package/src/client/sync/bucket/BucketStorageAdapter.ts +0 -49
- package/src/client/sync/bucket/SqliteBucketStorage.ts +0 -199
- package/src/client/sync/stream/AbstractRemote.ts +0 -602
- package/src/client/sync/stream/AbstractStreamingSyncImplementation.ts +0 -905
- package/src/client/sync/stream/WebsocketClientTransport.ts +0 -80
- package/src/client/sync/stream/core-instruction.ts +0 -98
- package/src/client/triggers/MemoryTriggerClaimManager.ts +0 -25
- package/src/client/triggers/TriggerManagerImpl.ts +0 -496
- package/src/client/watched/processors/AbstractQueryProcessor.ts +0 -226
- package/src/db/ConnectionClosedError.ts +0 -23
- package/src/db/schema/TableV2.ts +0 -9
- package/src/utils/AbortOperation.ts +0 -17
- package/src/utils/ControlledExecutor.ts +0 -72
- package/src/utils/async.ts +0 -50
- package/src/utils/parseQuery.ts +0 -25
- package/src/utils/queue.ts +0 -48
- package/src/utils/stream_transform.ts +0 -252
|
@@ -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;
|
|
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
|
|
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:
|
|
18
|
+
readonly tables: ResolvedTable[];
|
|
14
19
|
readonly rawTables: RawTable[];
|
|
15
|
-
constructor(tables:
|
|
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
|
*
|
package/lib/db/schema/Schema.js
CHANGED
|
@@ -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;
|
|
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"}
|
package/lib/db/schema/Table.d.ts
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
import { Column, ColumnsType,
|
|
1
|
+
import { Column, ColumnsType, ExtractColumnValueType } from './Column.js';
|
|
2
2
|
import { Index } from './Index.js';
|
|
3
|
-
import {
|
|
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
|
-
|
|
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
|
-
|
|
37
|
-
|
|
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
|
-
|
|
42
|
-
|
|
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
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
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 {};
|
package/lib/db/schema/Table.js
CHANGED
|
@@ -1,8 +1,13 @@
|
|
|
1
|
-
import { Column
|
|
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
|
-
|
|
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
|
-
|
|
14
|
-
|
|
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
|
-
|
|
17
|
-
|
|
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,
|
|
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/
|
|
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
|
|
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 {
|
|
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
|
|
38
|
+
export { type Mutex } from './utils/mutex.js';
|
|
52
39
|
export * from './utils/BaseObserver.js';
|
|
53
|
-
export * from './utils/
|
|
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';
|