@powersync/common 1.47.0 → 1.49.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.
- package/dist/bundle.cjs +189 -52
- package/dist/bundle.cjs.map +1 -1
- package/dist/bundle.mjs +188 -52
- package/dist/bundle.mjs.map +1 -1
- package/dist/bundle.node.cjs +189 -52
- package/dist/bundle.node.cjs.map +1 -1
- package/dist/bundle.node.mjs +188 -52
- package/dist/bundle.node.mjs.map +1 -1
- package/dist/index.d.cts +186 -89
- package/lib/client/triggers/TriggerManager.d.ts +13 -1
- package/lib/client/triggers/TriggerManagerImpl.d.ts +2 -2
- package/lib/client/triggers/TriggerManagerImpl.js +19 -7
- package/lib/client/triggers/TriggerManagerImpl.js.map +1 -1
- package/lib/db/DBAdapter.d.ts +48 -8
- package/lib/db/DBAdapter.js +126 -0
- package/lib/db/DBAdapter.js.map +1 -1
- package/lib/db/schema/RawTable.d.ts +61 -26
- package/lib/db/schema/RawTable.js +1 -32
- package/lib/db/schema/RawTable.js.map +1 -1
- package/lib/db/schema/Schema.d.ts +14 -7
- package/lib/db/schema/Schema.js +25 -3
- package/lib/db/schema/Schema.js.map +1 -1
- package/lib/db/schema/Table.d.ts +13 -8
- package/lib/db/schema/Table.js +3 -8
- package/lib/db/schema/Table.js.map +1 -1
- package/lib/db/schema/internal.d.ts +12 -0
- package/lib/db/schema/internal.js +15 -0
- package/lib/db/schema/internal.js.map +1 -0
- package/lib/index.d.ts +1 -1
- package/lib/index.js +0 -1
- package/lib/index.js.map +1 -1
- package/package.json +1 -1
- package/src/client/triggers/TriggerManager.ts +15 -2
- package/src/client/triggers/TriggerManagerImpl.ts +18 -6
- package/src/db/DBAdapter.ts +160 -8
- package/src/db/schema/RawTable.ts +66 -31
- package/src/db/schema/Schema.ts +27 -2
- package/src/db/schema/Table.ts +11 -11
- package/src/db/schema/internal.ts +17 -0
- package/src/index.ts +1 -1
package/lib/db/DBAdapter.js
CHANGED
|
@@ -2,6 +2,49 @@
|
|
|
2
2
|
* Set of generic interfaces to allow PowerSync compatibility with
|
|
3
3
|
* different SQLite DB implementations.
|
|
4
4
|
*/
|
|
5
|
+
/**
|
|
6
|
+
* Implements {@link DBGetUtils} on a {@link SqlRunner}.
|
|
7
|
+
*/
|
|
8
|
+
export function DBGetUtilsDefaultMixin(Base) {
|
|
9
|
+
return class extends Base {
|
|
10
|
+
async getAll(sql, parameters) {
|
|
11
|
+
const res = await this.execute(sql, parameters);
|
|
12
|
+
return res.rows?._array ?? [];
|
|
13
|
+
}
|
|
14
|
+
async getOptional(sql, parameters) {
|
|
15
|
+
const res = await this.execute(sql, parameters);
|
|
16
|
+
return res.rows?.item(0) ?? null;
|
|
17
|
+
}
|
|
18
|
+
async get(sql, parameters) {
|
|
19
|
+
const res = await this.execute(sql, parameters);
|
|
20
|
+
const first = res.rows?.item(0);
|
|
21
|
+
if (!first) {
|
|
22
|
+
throw new Error('Result set is empty');
|
|
23
|
+
}
|
|
24
|
+
return first;
|
|
25
|
+
}
|
|
26
|
+
async executeBatch(query, params = []) {
|
|
27
|
+
// If this context can run batch statements natively, use that.
|
|
28
|
+
// @ts-ignore
|
|
29
|
+
if (super.executeBatch) {
|
|
30
|
+
// @ts-ignore
|
|
31
|
+
return super.executeBatch(query, params);
|
|
32
|
+
}
|
|
33
|
+
// Emulate executeBatch by running statements individually.
|
|
34
|
+
let lastInsertId;
|
|
35
|
+
let rowsAffected = 0;
|
|
36
|
+
for (const set of params) {
|
|
37
|
+
const result = await this.execute(query, set);
|
|
38
|
+
lastInsertId = result.insertId;
|
|
39
|
+
rowsAffected += result.rowsAffected;
|
|
40
|
+
}
|
|
41
|
+
return {
|
|
42
|
+
rowsAffected,
|
|
43
|
+
insertId: lastInsertId
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
}
|
|
5
48
|
/**
|
|
6
49
|
* Update table operation numbers from SQLite
|
|
7
50
|
*/
|
|
@@ -11,6 +54,89 @@ export var RowUpdateType;
|
|
|
11
54
|
RowUpdateType[RowUpdateType["SQLITE_DELETE"] = 9] = "SQLITE_DELETE";
|
|
12
55
|
RowUpdateType[RowUpdateType["SQLITE_UPDATE"] = 23] = "SQLITE_UPDATE";
|
|
13
56
|
})(RowUpdateType || (RowUpdateType = {}));
|
|
57
|
+
/**
|
|
58
|
+
* A mixin to implement {@link DBAdapter} by delegating to {@link ConnectionPool.readLock} and
|
|
59
|
+
* {@link ConnectionPool.writeLock}.
|
|
60
|
+
*/
|
|
61
|
+
export function DBAdapterDefaultMixin(Base) {
|
|
62
|
+
return class extends Base {
|
|
63
|
+
readTransaction(fn, options) {
|
|
64
|
+
return this.readLock((ctx) => TransactionImplementation.runWith(ctx, fn), options);
|
|
65
|
+
}
|
|
66
|
+
writeTransaction(fn, options) {
|
|
67
|
+
return this.writeLock((ctx) => TransactionImplementation.runWith(ctx, fn), options);
|
|
68
|
+
}
|
|
69
|
+
getAll(sql, parameters) {
|
|
70
|
+
return this.readLock((ctx) => ctx.getAll(sql, parameters));
|
|
71
|
+
}
|
|
72
|
+
getOptional(sql, parameters) {
|
|
73
|
+
return this.readLock((ctx) => ctx.getOptional(sql, parameters));
|
|
74
|
+
}
|
|
75
|
+
get(sql, parameters) {
|
|
76
|
+
return this.readLock((ctx) => ctx.get(sql, parameters));
|
|
77
|
+
}
|
|
78
|
+
execute(query, params) {
|
|
79
|
+
return this.writeLock((ctx) => ctx.execute(query, params));
|
|
80
|
+
}
|
|
81
|
+
executeRaw(query, params) {
|
|
82
|
+
return this.writeLock((ctx) => ctx.executeRaw(query, params));
|
|
83
|
+
}
|
|
84
|
+
executeBatch(query, params) {
|
|
85
|
+
return this.writeTransaction((tx) => tx.executeBatch(query, params));
|
|
86
|
+
}
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
class BaseTransaction {
|
|
90
|
+
inner;
|
|
91
|
+
finalized = false;
|
|
92
|
+
constructor(inner) {
|
|
93
|
+
this.inner = inner;
|
|
94
|
+
}
|
|
95
|
+
async commit() {
|
|
96
|
+
if (this.finalized) {
|
|
97
|
+
return { rowsAffected: 0 };
|
|
98
|
+
}
|
|
99
|
+
this.finalized = true;
|
|
100
|
+
return this.inner.execute('COMMIT');
|
|
101
|
+
}
|
|
102
|
+
async rollback() {
|
|
103
|
+
if (this.finalized) {
|
|
104
|
+
return { rowsAffected: 0 };
|
|
105
|
+
}
|
|
106
|
+
this.finalized = true;
|
|
107
|
+
return this.inner.execute('ROLLBACK');
|
|
108
|
+
}
|
|
109
|
+
execute(query, params) {
|
|
110
|
+
return this.inner.execute(query, params);
|
|
111
|
+
}
|
|
112
|
+
executeRaw(query, params) {
|
|
113
|
+
return this.inner.executeRaw(query, params);
|
|
114
|
+
}
|
|
115
|
+
executeBatch(query, params) {
|
|
116
|
+
return this.inner.executeBatch(query, params);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
class TransactionImplementation extends DBGetUtilsDefaultMixin(BaseTransaction) {
|
|
120
|
+
static async runWith(ctx, fn) {
|
|
121
|
+
let tx = new TransactionImplementation(ctx);
|
|
122
|
+
try {
|
|
123
|
+
await ctx.execute('BEGIN IMMEDIATE');
|
|
124
|
+
const result = await fn(tx);
|
|
125
|
+
await tx.commit();
|
|
126
|
+
return result;
|
|
127
|
+
}
|
|
128
|
+
catch (ex) {
|
|
129
|
+
try {
|
|
130
|
+
await tx.rollback();
|
|
131
|
+
}
|
|
132
|
+
catch (ex2) {
|
|
133
|
+
// In rare cases, a rollback may fail.
|
|
134
|
+
// Safe to ignore.
|
|
135
|
+
}
|
|
136
|
+
throw ex;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
}
|
|
14
140
|
export function isBatchedUpdateNotification(update) {
|
|
15
141
|
return 'tables' in update;
|
|
16
142
|
}
|
package/lib/db/DBAdapter.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DBAdapter.js","sourceRoot":"","sources":["../../src/db/DBAdapter.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"DBAdapter.js","sourceRoot":"","sources":["../../src/db/DBAdapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,21 @@
|
|
|
1
|
+
import { TableOrRawTableOptions } from './Table.js';
|
|
1
2
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
3
|
+
* Instructs PowerSync to sync data into a "raw" table.
|
|
4
|
+
*
|
|
5
|
+
* Since raw tables are not backed by JSON, running complex queries on them may be more efficient. Further, they allow
|
|
6
|
+
* using client-side table and column constraints.
|
|
7
|
+
*
|
|
8
|
+
* To collect local writes to raw tables with PowerSync, custom triggers are required. See
|
|
9
|
+
* {@link https://docs.powersync.com/usage/use-case-examples/raw-tables the documentation} for details and an example on
|
|
10
|
+
* using raw tables.
|
|
11
|
+
*
|
|
12
|
+
* Note that raw tables are only supported when using the new `SyncClientImplementation.rust` sync client.
|
|
13
|
+
*
|
|
14
|
+
* @experimental Please note that this feature is experimental at the moment, and not covered by PowerSync semver or
|
|
15
|
+
* stability guarantees.
|
|
4
16
|
*/
|
|
5
|
-
export type RawTableType =
|
|
17
|
+
export type RawTableType = RawTableTypeWithStatements | InferredRawTableType;
|
|
18
|
+
interface RawTableTypeWithStatements {
|
|
6
19
|
/**
|
|
7
20
|
* The statement to run when PowerSync detects that a row needs to be inserted or updated.
|
|
8
21
|
*/
|
|
@@ -11,7 +24,40 @@ export type RawTableType = {
|
|
|
11
24
|
* The statement to run when PowerSync detects that a row needs to be deleted.
|
|
12
25
|
*/
|
|
13
26
|
delete: PendingStatement;
|
|
14
|
-
|
|
27
|
+
/**
|
|
28
|
+
* An optional statement to run when `disconnectAndClear()` is called on a PowerSync database.
|
|
29
|
+
*/
|
|
30
|
+
clear?: string;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* The schema of a {@link RawTableType} in the local database.
|
|
34
|
+
*
|
|
35
|
+
* This information is optional when declaring raw tables. However, providing it allows the sync client to infer `put`
|
|
36
|
+
* and `delete` statements automatically.
|
|
37
|
+
*/
|
|
38
|
+
interface RawTableSchema extends TableOrRawTableOptions {
|
|
39
|
+
/**
|
|
40
|
+
* The actual name of the raw table in the local schema.
|
|
41
|
+
*
|
|
42
|
+
* Unlike {@link RawTable.name}, which describes the name of synced tables to match, this reflects the SQLite table
|
|
43
|
+
* name. This is used to infer {@link RawTableType.put} and {@link RawTableType.delete} statements for the sync
|
|
44
|
+
* client. It can also be used to auto-generate triggers forwarding writes on raw tables into the CRUD upload queue
|
|
45
|
+
* (using the `powersync_create_raw_table_crud_trigger` SQL function).
|
|
46
|
+
*
|
|
47
|
+
* When absent, defaults to {@link RawTable.name}.
|
|
48
|
+
*/
|
|
49
|
+
tableName?: string;
|
|
50
|
+
/**
|
|
51
|
+
* An optional filter of columns that should be synced.
|
|
52
|
+
*
|
|
53
|
+
* By default, all columns in a raw table are considered for sync. If a filter is specified, PowerSync treats
|
|
54
|
+
* unmatched columns as local-only and will not attempt to sync them.
|
|
55
|
+
*/
|
|
56
|
+
syncedColumns?: string[];
|
|
57
|
+
}
|
|
58
|
+
interface InferredRawTableType extends Partial<RawTableTypeWithStatements> {
|
|
59
|
+
schema: RawTableSchema;
|
|
60
|
+
}
|
|
15
61
|
/**
|
|
16
62
|
* A parameter to use as part of {@link PendingStatement}.
|
|
17
63
|
*
|
|
@@ -20,10 +66,12 @@ export type RawTableType = {
|
|
|
20
66
|
*
|
|
21
67
|
* For insert and replace operations, the values of columns in the table are available as parameters through
|
|
22
68
|
* `{Column: 'name'}`.
|
|
69
|
+
* The `"Rest"` parameter gets resolved to a JSON object covering all values from the synced row that haven't been
|
|
70
|
+
* covered by a `Column` parameter.
|
|
23
71
|
*/
|
|
24
72
|
export type PendingStatementParameter = 'Id' | {
|
|
25
73
|
Column: string;
|
|
26
|
-
};
|
|
74
|
+
} | 'Rest';
|
|
27
75
|
/**
|
|
28
76
|
* A statement that the PowerSync client should use to insert or delete data into a table managed by the user.
|
|
29
77
|
*/
|
|
@@ -32,30 +80,17 @@ export type PendingStatement = {
|
|
|
32
80
|
params: PendingStatementParameter[];
|
|
33
81
|
};
|
|
34
82
|
/**
|
|
35
|
-
*
|
|
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.
|
|
83
|
+
* @internal
|
|
48
84
|
*/
|
|
49
|
-
export
|
|
85
|
+
export type RawTable<T extends RawTableType = RawTableType> = T & {
|
|
50
86
|
/**
|
|
51
87
|
* The name of the table.
|
|
52
88
|
*
|
|
53
|
-
* This does not have to match the actual table name in the schema - {@link put} and
|
|
54
|
-
* another table. Instead, this name is used by the sync client to
|
|
55
|
-
* appears in the source / backend database) are to be handled
|
|
89
|
+
* This does not have to match the actual table name in the schema - {@link RawTableType.put} and
|
|
90
|
+
* {@link RawTableType.delete} are free to use another table. Instead, this name is used by the sync client to
|
|
91
|
+
* recognize that operations on this table (as it appears in the source / backend database) are to be handled
|
|
92
|
+
* specially.
|
|
56
93
|
*/
|
|
57
94
|
name: string;
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
constructor(name: string, type: RawTableType);
|
|
61
|
-
}
|
|
95
|
+
};
|
|
96
|
+
export {};
|
|
@@ -1,33 +1,2 @@
|
|
|
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
|
-
}
|
|
1
|
+
export {};
|
|
33
2
|
//# sourceMappingURL=RawTable.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RawTable.js","sourceRoot":"","sources":["../../../src/db/schema/RawTable.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"RawTable.js","sourceRoot":"","sources":["../../../src/db/schema/RawTable.ts"],"names":[],"mappings":""}
|
|
@@ -27,14 +27,14 @@ export declare class Schema<S extends SchemaType = SchemaType> {
|
|
|
27
27
|
validate(): void;
|
|
28
28
|
toJSON(): {
|
|
29
29
|
tables: {
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
local_only: boolean;
|
|
33
|
-
insert_only: boolean;
|
|
30
|
+
local_only: boolean | undefined;
|
|
31
|
+
insert_only: boolean | undefined;
|
|
34
32
|
include_old: any;
|
|
35
33
|
include_old_only_when_changed: boolean;
|
|
36
|
-
include_metadata: boolean;
|
|
37
|
-
ignore_empty_update: boolean;
|
|
34
|
+
include_metadata: boolean | undefined;
|
|
35
|
+
ignore_empty_update: boolean | undefined;
|
|
36
|
+
name: string;
|
|
37
|
+
view_name: string;
|
|
38
38
|
columns: {
|
|
39
39
|
name: string;
|
|
40
40
|
type: import("./Column.js").ColumnType | undefined;
|
|
@@ -48,7 +48,14 @@ export declare class Schema<S extends SchemaType = SchemaType> {
|
|
|
48
48
|
}[];
|
|
49
49
|
}[];
|
|
50
50
|
}[];
|
|
51
|
-
raw_tables:
|
|
51
|
+
raw_tables: unknown[];
|
|
52
52
|
};
|
|
53
|
+
/**
|
|
54
|
+
* Returns a representation of the raw table that is understood by the PowerSync SQLite core extension.
|
|
55
|
+
*
|
|
56
|
+
* The output of this can be passed through `JSON.serialize` and then used in `powersync_create_raw_table_crud_trigger`
|
|
57
|
+
* to define triggers for this table.
|
|
58
|
+
*/
|
|
59
|
+
static rawTableToJson(table: RawTable): unknown;
|
|
53
60
|
}
|
|
54
61
|
export {};
|
package/lib/db/schema/Schema.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
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
4
|
*/
|
|
@@ -43,7 +43,7 @@ export class Schema {
|
|
|
43
43
|
*/
|
|
44
44
|
withRawTables(tables) {
|
|
45
45
|
for (const [name, rawTableDefinition] of Object.entries(tables)) {
|
|
46
|
-
this.rawTables.push(
|
|
46
|
+
this.rawTables.push({ name, ...rawTableDefinition });
|
|
47
47
|
}
|
|
48
48
|
}
|
|
49
49
|
validate() {
|
|
@@ -54,8 +54,30 @@ export class Schema {
|
|
|
54
54
|
toJSON() {
|
|
55
55
|
return {
|
|
56
56
|
tables: this.tables.map((t) => t.toJSON()),
|
|
57
|
-
raw_tables: this.rawTables
|
|
57
|
+
raw_tables: this.rawTables.map(Schema.rawTableToJson)
|
|
58
58
|
};
|
|
59
59
|
}
|
|
60
|
+
/**
|
|
61
|
+
* Returns a representation of the raw table that is understood by the PowerSync SQLite core extension.
|
|
62
|
+
*
|
|
63
|
+
* The output of this can be passed through `JSON.serialize` and then used in `powersync_create_raw_table_crud_trigger`
|
|
64
|
+
* to define triggers for this table.
|
|
65
|
+
*/
|
|
66
|
+
static rawTableToJson(table) {
|
|
67
|
+
const serialized = {
|
|
68
|
+
name: table.name,
|
|
69
|
+
put: table.put,
|
|
70
|
+
delete: table.delete,
|
|
71
|
+
clear: table.clear
|
|
72
|
+
};
|
|
73
|
+
if ('schema' in table) {
|
|
74
|
+
// We have schema options, those are flattened into the outer JSON object for the core extension.
|
|
75
|
+
const schema = table.schema;
|
|
76
|
+
serialized.table_name = schema.tableName ?? table.name;
|
|
77
|
+
serialized.synced_columns = schema.syncedColumns;
|
|
78
|
+
Object.assign(serialized, encodeTableOptions(table.schema));
|
|
79
|
+
}
|
|
80
|
+
return serialized;
|
|
81
|
+
}
|
|
60
82
|
}
|
|
61
83
|
//# sourceMappingURL=Schema.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Schema.js","sourceRoot":"","sources":["../../../src/db/schema/Schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"Schema.js","sourceRoot":"","sources":["../../../src/db/schema/Schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAUnD;;GAEG;AACH,MAAM,OAAO,MAAM;IACjB;;MAEE;IACO,KAAK,CAAqB;IAC1B,KAAK,CAAI;IACT,MAAM,CAAU;IAChB,SAAS,CAAa;IAE/B,YAAY,MAAmB;QAC7B,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1B;;;;cAIE;YACF,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC3B,IAAI,KAAK,CAAC,IAAI,KAAK,EAAE,EAAE,CAAC;oBACtB,MAAM,IAAI,KAAK,CACb,2KAA2K,CAC5K,CAAC;gBACJ,CAAC;YACH,CAAC;YACD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACvB,CAAC;aAAM,CAAC;YACN,4DAA4D;YAC5D,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,WAAW,CAC7B,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,EAAE,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CAC1F,CAAC;YACP,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1C,CAAC;QAED,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;IACtB,CAAC;IAED;;;;;;;;;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,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,14 +1,19 @@
|
|
|
1
1
|
import { Column, ColumnsType, ColumnType, ExtractColumnValueType } from './Column.js';
|
|
2
2
|
import { Index } from './Index.js';
|
|
3
3
|
import { TableV2 } from './TableV2.js';
|
|
4
|
-
|
|
4
|
+
/**
|
|
5
|
+
* Options that apply both to JSON-based tables and raw tables.
|
|
6
|
+
*/
|
|
7
|
+
export interface TableOrRawTableOptions {
|
|
5
8
|
localOnly?: boolean;
|
|
6
9
|
insertOnly?: boolean;
|
|
7
|
-
viewName?: string;
|
|
8
10
|
trackPrevious?: boolean | TrackPreviousOptions;
|
|
9
11
|
trackMetadata?: boolean;
|
|
10
12
|
ignoreEmptyUpdates?: boolean;
|
|
11
13
|
}
|
|
14
|
+
interface SharedTableOptions extends TableOrRawTableOptions {
|
|
15
|
+
viewName?: string;
|
|
16
|
+
}
|
|
12
17
|
/** Whether to include previous column values when PowerSync tracks local changes.
|
|
13
18
|
*
|
|
14
19
|
* Including old values may be helpful for some backend connector implementations, which is
|
|
@@ -132,14 +137,14 @@ export declare class Table<Columns extends ColumnsType = ColumnsType> {
|
|
|
132
137
|
get validName(): boolean;
|
|
133
138
|
validate(): void;
|
|
134
139
|
toJSON(): {
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
local_only: boolean;
|
|
138
|
-
insert_only: boolean;
|
|
140
|
+
local_only: boolean | undefined;
|
|
141
|
+
insert_only: boolean | undefined;
|
|
139
142
|
include_old: any;
|
|
140
143
|
include_old_only_when_changed: boolean;
|
|
141
|
-
include_metadata: boolean;
|
|
142
|
-
ignore_empty_update: boolean;
|
|
144
|
+
include_metadata: boolean | undefined;
|
|
145
|
+
ignore_empty_update: boolean | undefined;
|
|
146
|
+
name: string;
|
|
147
|
+
view_name: string;
|
|
143
148
|
columns: {
|
|
144
149
|
name: string;
|
|
145
150
|
type: ColumnType | undefined;
|
package/lib/db/schema/Table.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Column, ColumnType, MAX_AMOUNT_OF_COLUMNS } from './Column.js';
|
|
2
2
|
import { Index } from './Index.js';
|
|
3
3
|
import { IndexedColumn } from './IndexedColumn.js';
|
|
4
|
+
import { encodeTableOptions } from './internal.js';
|
|
4
5
|
export const DEFAULT_TABLE_OPTIONS = {
|
|
5
6
|
indexes: [],
|
|
6
7
|
insertOnly: false,
|
|
@@ -190,18 +191,12 @@ export class Table {
|
|
|
190
191
|
}
|
|
191
192
|
}
|
|
192
193
|
toJSON() {
|
|
193
|
-
const trackPrevious = this.trackPrevious;
|
|
194
194
|
return {
|
|
195
195
|
name: this.name,
|
|
196
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
197
|
columns: this.columns.map((c) => c.toJSON()),
|
|
204
|
-
indexes: this.indexes.map((e) => e.toJSON(this))
|
|
198
|
+
indexes: this.indexes.map((e) => e.toJSON(this)),
|
|
199
|
+
...encodeTableOptions(this)
|
|
205
200
|
};
|
|
206
201
|
}
|
|
207
202
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Table.js","sourceRoot":"","sources":["../../../src/db/schema/Table.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,MAAM,EAEN,UAAU,EAEV,qBAAqB,EACtB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"Table.js","sourceRoot":"","sources":["../../../src/db/schema/Table.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { TableOrRawTableOptions } from './Table.js';
|
|
2
|
+
/**
|
|
3
|
+
* @internal Not exported from `index.ts`.
|
|
4
|
+
*/
|
|
5
|
+
export declare function encodeTableOptions(options: TableOrRawTableOptions): {
|
|
6
|
+
local_only: boolean | undefined;
|
|
7
|
+
insert_only: boolean | undefined;
|
|
8
|
+
include_old: any;
|
|
9
|
+
include_old_only_when_changed: boolean;
|
|
10
|
+
include_metadata: boolean | undefined;
|
|
11
|
+
ignore_empty_update: boolean | undefined;
|
|
12
|
+
};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @internal Not exported from `index.ts`.
|
|
3
|
+
*/
|
|
4
|
+
export function encodeTableOptions(options) {
|
|
5
|
+
const trackPrevious = options.trackPrevious;
|
|
6
|
+
return {
|
|
7
|
+
local_only: options.localOnly,
|
|
8
|
+
insert_only: options.insertOnly,
|
|
9
|
+
include_old: trackPrevious && (trackPrevious.columns ?? true),
|
|
10
|
+
include_old_only_when_changed: typeof trackPrevious == 'object' && trackPrevious.onlyWhenChanged == true,
|
|
11
|
+
include_metadata: options.trackMetadata,
|
|
12
|
+
ignore_empty_update: options.ignoreEmptyUpdates
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=internal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"internal.js","sourceRoot":"","sources":["../../../src/db/schema/internal.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAA+B;IAChE,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;IAE5C,OAAO;QACL,UAAU,EAAE,OAAO,CAAC,SAAS;QAC7B,WAAW,EAAE,OAAO,CAAC,UAAU;QAC/B,WAAW,EAAE,aAAa,IAAI,CAAE,aAAqB,CAAC,OAAO,IAAI,IAAI,CAAC;QACtE,6BAA6B,EAAE,OAAO,aAAa,IAAI,QAAQ,IAAI,aAAa,CAAC,eAAe,IAAI,IAAI;QACxG,gBAAgB,EAAE,OAAO,CAAC,aAAa;QACvC,mBAAmB,EAAE,OAAO,CAAC,kBAAkB;KAChD,CAAC;AACJ,CAAC"}
|
package/lib/index.d.ts
CHANGED
|
@@ -37,7 +37,7 @@ export * from './db/DBAdapter.js';
|
|
|
37
37
|
export * from './db/schema/Column.js';
|
|
38
38
|
export * from './db/schema/Index.js';
|
|
39
39
|
export * from './db/schema/IndexedColumn.js';
|
|
40
|
-
export
|
|
40
|
+
export { RawTableType, PendingStatementParameter, PendingStatement } from './db/schema/RawTable.js';
|
|
41
41
|
export * from './db/schema/Schema.js';
|
|
42
42
|
export * from './db/schema/Table.js';
|
|
43
43
|
export * from './db/schema/TableV2.js';
|
package/lib/index.js
CHANGED
|
@@ -37,7 +37,6 @@ export * from './db/DBAdapter.js';
|
|
|
37
37
|
export * from './db/schema/Column.js';
|
|
38
38
|
export * from './db/schema/Index.js';
|
|
39
39
|
export * from './db/schema/IndexedColumn.js';
|
|
40
|
-
export * from './db/schema/RawTable.js';
|
|
41
40
|
export * from './db/schema/Schema.js';
|
|
42
41
|
export * from './db/schema/Table.js';
|
|
43
42
|
export * from './db/schema/TableV2.js';
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oCAAoC,CAAC;AACnD,cAAc,yCAAyC,CAAC;AACxD,cAAc,kCAAkC,CAAC;AACjD,cAAc,oCAAoC,CAAC;AACnD,cAAc,sCAAsC,CAAC;AACrD,cAAc,uCAAuC,CAAC;AACtD,cAAc,yBAAyB,CAAC;AACxC,cAAc,iCAAiC,CAAC;AAChD,cAAc,wCAAwC,CAAC;AAEvD,cAAc,uCAAuC,CAAC;AACtD,cAAc,0CAA0C,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAA+B,MAAM,kCAAkC,CAAC;AACrG,cAAc,kDAAkD,CAAC;AACjE,cAAc,6CAA6C,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8CAA8C,CAAC;AAC7D,cAAc,mCAAmC,CAAC;AAClD,OAAO,EAAE,SAAS,EAAQ,UAAU,EAAE,MAAM,mCAAmC,CAAC;AAChF,cAAc,yCAAyC,CAAC;AACxD,cAAc,oCAAoC,CAAC;AACnD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,6CAA6C,CAAC;AAC5D,cAAc,uCAAuC,CAAC;AACtD,cAAc,wCAAwC,CAAC;AACvD,cAAc,wCAAwC,CAAC;AACvD,cAAc,6DAA6D,CAAC;AAC5E,cAAc,8CAA8C,CAAC;AAC7D,cAAc,+BAA+B,CAAC;AAE9C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,+BAA+B,CAAC;AAC9C,OAAO,EAA0B,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACjF,cAAc,yBAAyB,CAAC;AACxC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oCAAoC,CAAC;AACnD,cAAc,yCAAyC,CAAC;AACxD,cAAc,kCAAkC,CAAC;AACjD,cAAc,oCAAoC,CAAC;AACnD,cAAc,sCAAsC,CAAC;AACrD,cAAc,uCAAuC,CAAC;AACtD,cAAc,yBAAyB,CAAC;AACxC,cAAc,iCAAiC,CAAC;AAChD,cAAc,wCAAwC,CAAC;AAEvD,cAAc,uCAAuC,CAAC;AACtD,cAAc,0CAA0C,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAA+B,MAAM,kCAAkC,CAAC;AACrG,cAAc,kDAAkD,CAAC;AACjE,cAAc,6CAA6C,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8CAA8C,CAAC;AAC7D,cAAc,mCAAmC,CAAC;AAClD,OAAO,EAAE,SAAS,EAAQ,UAAU,EAAE,MAAM,mCAAmC,CAAC;AAChF,cAAc,yCAAyC,CAAC;AACxD,cAAc,oCAAoC,CAAC;AACnD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,6CAA6C,CAAC;AAC5D,cAAc,uCAAuC,CAAC;AACtD,cAAc,wCAAwC,CAAC;AACvD,cAAc,wCAAwC,CAAC;AACvD,cAAc,6DAA6D,CAAC;AAC5E,cAAc,8CAA8C,CAAC;AAC7D,cAAc,+BAA+B,CAAC;AAE9C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,+BAA+B,CAAC;AAC9C,OAAO,EAA0B,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACjF,cAAc,yBAAyB,CAAC;AACxC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,8BAA8B,CAAC;AAE7C,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AAEvC,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,4BAA4B,EAAE,MAAM,gDAAgD,CAAC;AAC9F,cAAc,kCAAkC,CAAC;AACjD,cAAc,qCAAqC,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAC7E,cAAc,iCAAiC,CAAC;AAChD,cAAc,uDAAuD,CAAC;AACtE,cAAc,4CAA4C,CAAC;AAC3D,cAAc,2DAA2D,CAAC;AAC1E,cAAc,uDAAuD,CAAC;AACtE,cAAc,kCAAkC,CAAC;AAEjD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AACxC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AAEtC,cAAc,kBAAkB,CAAC"}
|
package/package.json
CHANGED
|
@@ -223,14 +223,27 @@ export interface CreateDiffTriggerOptions extends BaseCreateDiffTriggerOptions {
|
|
|
223
223
|
* This table will be dropped once the trigger is removed.
|
|
224
224
|
*/
|
|
225
225
|
destination: string;
|
|
226
|
+
|
|
227
|
+
/**
|
|
228
|
+
* Context to use for the setup operation.
|
|
229
|
+
* This is useful for when the setup operation needs to be executed in a specific context.
|
|
230
|
+
*/
|
|
231
|
+
setupContext?: LockContext;
|
|
226
232
|
}
|
|
227
233
|
|
|
228
234
|
/**
|
|
229
235
|
* @experimental
|
|
230
|
-
*
|
|
236
|
+
* Options for {@link TriggerRemoveCallback}.
|
|
231
237
|
*/
|
|
232
|
-
export
|
|
238
|
+
export interface TriggerRemoveCallbackOptions {
|
|
239
|
+
context?: LockContext;
|
|
240
|
+
}
|
|
233
241
|
|
|
242
|
+
/**
|
|
243
|
+
* @experimental
|
|
244
|
+
* Callback to drop a trigger after it has been created.
|
|
245
|
+
*/
|
|
246
|
+
export type TriggerRemoveCallback = (options?: TriggerRemoveCallbackOptions) => Promise<void>;
|
|
234
247
|
/**
|
|
235
248
|
* @experimental
|
|
236
249
|
* Options for {@link TriggerDiffHandlerContext#withDiff}.
|